[dm-devel] ABL-{32,*}-AES

Rik Snel rsnel at cube.dyndns.org
Sun Dec 3 12:48:20 UTC 2006


Hello list,

I'm working on an ABL-32-AES (and a more general ABL-*-AES) implementation
for the Linux kernel as proposed by John Viega and David McGrew in
http://grouper.ieee.org/groups/1619/email/rtf00000.rtf (October 28, 2004) and
http://grouper.ieee.org/groups/1619/email/pdf00005.pdf (April 15, 2004).
The spec is not sufficiently reviewed and the two documents seem to 
contradict eachother in a few places. Therefore the implementation
of the ABL blockcipher mode itself is preliminary.

ABL allows to turn a blockcipher with a blocksize of 16 bytes into a 
blockcipher of arbitrary block size (for example 512 (dm sector size) 
and 4k (x86 page size)). The mode is (according to it's creators)
unencumbered by patents (other well known modes, CMC, EME, EME* and
XCB, are).

To get ABL-32-AES to work, a new IV is needed: 'bewbi' ('big-endian' wide 
block count'). It counts the number of wide blocks in bigendian format
starting at 1. The first patch adds this IV mode.

For 4k blocks (cipherblocksize equal to PAGE_SIZE and ext3fs max blocksize
on x86) another change is needed to dm-crypt, it adds an optional argument
to dm-crypt (the extra shift, eg extra_shift=1 gives cipherblocks of 1k).
It works for me, but I don't know if my implementation is correct.

For completeness I include the patch that introduces the ABL blockcipher 
mode itself.

The patches are against the current cryptodev-2.6 tree, and if no-one objects
the dm-crypt patches will probably go there. 

Greetings,

Rik.




More information about the dm-devel mailing list