From: Jean-Luc Cooke <jlcooke@certainkey.com>
To: dean gaudet <dean-list-linux-kernel@arctic.org>
Cc: James Morris <jmorris@redhat.com>,
Christophe Saout <christophe@saout.de>,
Carl-Daniel Hailfinger <c-d.hailfinger.kernel.2004@gmx.net>,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
Andrew Morton <akpm@osdl.org>
Subject: Re: dm-crypt, new IV and standards
Date: Wed, 3 Mar 2004 10:06:47 -0500 [thread overview]
Message-ID: <20040303150647.GC1586@certainkey.com> (raw)
In-Reply-To: <Pine.LNX.4.58.0403022352080.12846@twinlark.arctic.org>
On Wed, Mar 03, 2004 at 12:35:07AM -0800, dean gaudet wrote:
> On Sat, 21 Feb 2004, Jean-Luc Cooke wrote:
>
> > Well, CTR mode is not recommended for encrypted file systems because it is very
> > easy to corrupt single bits, bytes, blocks, etc without an integrity check.
> > If we add a MAC, then any mode of operation except ECB can be used for
> > encrypted file systems.
>
> what does "easy to corrupt" mean? i haven't really seen disks generate
> bit errors ever. this MAC means you'll need to write integrity data for
> every real write. that really doesn't seem worth it...
The difference between "$1,000,000" and "$8,000,000" is 1 bit. If an
attacker knew enough about the layout of the filesystem (modify times on blocks,
etc) they could flip a single bit and change your $1Mil purchase order
approved by your boss to a $8Mil order.
Extraneous example to be sure. But this is why you want MACs. CBC mode is
more difficult to tamper with, but not immune.
> it seems like a block is either right, or it isn't -- the only thing the
> MAC is telling you is that the block isn't right... it doesn't tell you
> how to fix it. that's a total waste of write bandwidth -- you might as
> well return the bogus decrypted block.
A block cipher can be viewed as a huge lookup table. Converting a 128 bit
block of data (in the case of AES) into another using a single key as the
rule-set for this transformation. This alone is not secure (think of the
attacks on ECB which does exactly this for all your data). That's why we
have 6 modes of operation in common use in the industry.
ECB, CBC : block-mode
CFB, OFB : stream-moe
CTR : block- and/mode stream-mode
OMAC : 128bit keyed Message Authentication Code
CCM : CTR + CBC-MAC defined by IEEE 802.11i
> > [3] Why not use IV == block number or IV == firstIV + block number?
> > Certain modes of operation (like CTR) begin to leak information about the
> > plaintext if you ever use the same Key-IV pair for your data.
> > The IV will need to be updated every time you update the block.
> > The IV generation does need not be from a cryptographicly strong PRNG,
> > it need only be different from the previous IV.
> > So incrementing the IV by 1 mod 2^128 every time you write to the block will
> > suffice.
>
> is CTR the only mode which is weak with simple IV / block number
> relationships?
CTR, ECB, and CFB are vulnerable.
> if you absolutely need this IV update for every write then you should
> consider a disk layout which mixes IV (or IV+MAC) blocks so that they are
> grouped near their data blocks, to reduce seek overhead.
>
> i.e. 1 block containing 15 IV+MAC, followed by 15 data blocks, followed by
> IV+MAC, followed by 15 data...
CBC mode doesn't absolutely need macs. But the IV changes *are* required for
all modes of operation. Christophe and I's scheme of IV = firstIV + blockNum
for initial setup and IV = IV + 2^64 for IV updates will work fine as long as
there are less then 2^(128-64) block in the file system and less then 2^64
updates to any one block. This scheme will keep CBC, OFB, CTR, and CCM modes
secure from eavesdropping but not Necessarily^[[1~^[[1~ from tampering.
JLC
--
http://www.certainkey.com
Suite 4560 CTTC
1125 Colonel By Dr.
Ottawa ON, K1S 5B6
next prev parent reply other threads:[~2004-03-03 15:18 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-02-19 22:06 dm-crypt, new IV and standards Carl-Daniel Hailfinger
2004-02-19 22:20 ` Christophe Saout
2004-02-20 17:22 ` Jean-Luc Cooke
2004-02-20 21:26 ` James Morris
2004-02-20 21:52 ` 2.6.3 adaptec I2O will not compile David Lang
2004-02-25 16:25 ` Adrian Bunk
2004-02-26 8:02 ` Jaco Kroon
2004-02-26 8:08 ` David Lang
2004-02-26 9:28 ` Jaco Kroon
2004-02-26 10:24 ` David Lang
2004-02-21 0:31 ` dm-crypt, new IV and standards Carl-Daniel Hailfinger
2004-02-21 16:48 ` Jean-Luc Cooke
2004-02-21 17:36 ` Jean-Luc Cooke
2004-02-21 19:01 ` Andreas Jellinghaus
2004-03-03 8:35 ` dean gaudet
2004-03-03 15:06 ` Jean-Luc Cooke [this message]
2004-03-03 21:40 ` David Wagner
2004-03-08 19:58 ` Jean-Luc Cooke
2004-03-04 1:48 ` dean gaudet
2004-03-04 13:24 ` Jean-Luc Cooke
2004-03-04 17:44 ` David Wagner
2004-03-05 1:19 ` dean gaudet
2004-03-05 2:14 ` Jean-Luc Cooke
2004-03-04 15:08 ` Pavel Machek
2004-03-07 4:14 ` DM for detecting bad disks was: " Mike Fedyk
-- strict thread matches above, loose matches on Subject: below --
2004-02-22 19:20 Adam J. Richter
2004-02-22 20:53 ` Christophe Saout
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20040303150647.GC1586@certainkey.com \
--to=jlcooke@certainkey.com \
--cc=akpm@osdl.org \
--cc=c-d.hailfinger.kernel.2004@gmx.net \
--cc=christophe@saout.de \
--cc=dean-list-linux-kernel@arctic.org \
--cc=jmorris@redhat.com \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.