linux-stable/Documentation/device-mapper
Milan Broz ed04d98169 dm crypt: add TCW IV mode for old CBC TCRYPT containers
dm-crypt can already activate TCRYPT (TrueCrypt compatible) containers
in LRW or XTS block encryption mode.

TCRYPT containers prior to version 4.1 use CBC mode with some additional
tweaks, this patch adds support for these containers.

This new mode is implemented using special IV generator named TCW
(TrueCrypt IV with whitening).  TCW IV only supports containers that are
encrypted with one cipher (Tested with AES, Twofish, Serpent, CAST5 and
TripleDES).

While this mode is legacy and is known to be vulnerable to some
watermarking attacks (e.g. revealing of hidden disk existence) it can
still be useful to activate old containers without using 3rd party
software or for independent forensic analysis of such containers.

(Both the userspace and kernel code is an independent implementation
based on the format documentation and it completely avoids use of
original source code.)

The TCW IV generator uses two additional keys: Kw (whitening seed, size
is always 16 bytes - TCW_WHITENING_SIZE) and Kiv (IV seed, size is
always the IV size of the selected cipher).  These keys are concatenated
at the end of the main encryption key provided in mapping table.

While whitening is completely independent from IV, it is implemented
inside IV generator for simplification.

The whitening value is always 16 bytes long and is calculated per sector
from provided Kw as initial seed, xored with sector number and mixed
with CRC32 algorithm.  Resulting value is xored with ciphertext sector
content.

IV is calculated from the provided Kiv as initial IV seed and xored with
sector number.

Detailed calculation can be found in the Truecrypt documentation for
version < 4.1 and will also be described on dm-crypt site, see:
http://code.google.com/p/cryptsetup/wiki/DMCrypt

The experimental support for activation of these containers is already
present in git devel brach of cryptsetup.

Signed-off-by: Milan Broz <gmazyland@gmail.com>
Signed-off-by: Mike Snitzer <snitzer@redhat.com>
2013-11-09 18:20:20 -05:00
..
cache-policies.txt dm cache: add cleaner policy 2013-03-01 22:45:52 +00:00
cache.txt dm cache: add data block size limits to code and Documentation 2013-08-23 09:02:13 -04:00
delay.txt
dm-crypt.txt dm crypt: add TCW IV mode for old CBC TCRYPT containers 2013-11-09 18:20:20 -05:00
dm-flakey.txt dm flakey: add corrupt_bio_byte feature 2011-08-02 12:32:06 +01:00
dm-io.txt
dm-log.txt dm log userspace: fix comment hyphens 2011-10-31 20:21:22 +00:00
dm-queue-length.txt dm mpath: add queue length load balancer 2009-06-22 10:12:27 +01:00
dm-raid.txt MD: Remember the last sync operation that was performed 2013-06-26 12:38:24 +10:00
dm-service-time.txt Fix common misspellings 2011-03-31 11:26:23 -03:00
dm-uevent.txt
kcopyd.txt
linear.txt
persistent-data.txt Documentation: Fix multiple typo in Documentation 2012-03-07 16:08:24 +01:00
snapshot.txt dm: document when snapshot has finished merging 2010-03-06 02:29:56 +00:00
statistics.txt dm: add statistics support 2013-09-05 20:46:06 -04:00
striped.txt dm stripe: support for non power of 2 chunksize 2012-07-27 15:08:01 +01:00
switch.txt dm: add switch target 2013-07-10 23:41:19 +01:00
thin-provisioning.txt dm thin: add data block size limits to Documentation 2013-08-23 09:02:14 -04:00
verity.txt dm: verity fix documentation 2012-07-03 12:55:41 +01:00
zero.txt