This section gives a series of examples of how to create Linux dm-crypt volumes, and then mount them using FreeOTFE Explorer.
These examples have been tested using Fedora Core 3, with a v2.6.11.7 kernel installed; though they should work for all compatible Linux distributions.
To begin using dm-crypt under Linux, ensure that the various kernel modules are installed:
modprobe cryptoloop
modprobe deflate
modprobe zlib_deflate
modprobe twofish
modprobe serpent
modprobe aes_i586
modprobe blowfish
modprobe des
modprobe sha256
modprobe sha512
modprobe crypto_null
modprobe md5
modprobe md4
modprobe cast5
modprobe cast6
modprobe arc4
modprobe khazad
modprobe anubis
modprobe dm_mod (this should give you dm_snapshot, dm_zero and dm_mirror?)
modprobe dm_crypt
At this point, typing "dmsetup targets" should give you something along the lines of:
crypt v1.0.0 striped v1.0.1 linear v1.0.1 error v1.0.1Typing "lsmod" will show you which modules are currently installed.
If not overridden by the user, dm-crypt defaults to encrypting with:
Cypher: | AES |
---|---|
Cypher keysize: | 256 bit |
User key processed with: | RIPEMD-160 (not "RIPEMD-160 (Linux; Twice, with A)"). "Hash with "A"s, if hash output is too short" option - selected |
IV generation: | 32 bit sector ID |
Creating the volume file under Linux:
Mounting the volume under FreeOTFE Explorer:dd if=/dev/zero of=./volumes/vol_default.vol bs=1K count=100 losetup /dev/loop0 ./volumes/vol_default.vol echo password1234567890ABC | cryptsetup create myMapper /dev/loop0 dmsetup ls dmsetup table dmsetup status losetup /dev/loop1 /dev/mapper/myMapper mkdosfs /dev/loop1 mkdir ./test_mountpoint mount /dev/loop1 ./test_mountpoint cp ./test_files/SHORT_TEXT.txt ./test_mountpoint cp ./test_files/BINARY_ZEROS.dat ./test_mountpoint cp ./test_files/BINARY_ABC_RPTD.dat ./test_mountpoint cp ./test_files/BINARY_00_FF_RPTD.dat ./test_mountpoint umount ./test_mountpoint losetup -d /dev/loop1 cryptsetup remove myMapper losetup -d /dev/loop0 rm -rf ./test_mountpoint
Creating the volume file under Linux:
Mounting the volume under FreeOTFE Explorer:dd if=/dev/zero of=./volumes/vol_aes128.vol bs=1K count=100 losetup /dev/loop0 ./volumes/vol_aes128.vol echo password1234567890ABC | cryptsetup -c aes -s 128 create myMapper /dev/loop0 dmsetup ls dmsetup table dmsetup status losetup /dev/loop1 /dev/mapper/myMapper mkdosfs /dev/loop1 mkdir ./test_mountpoint mount /dev/loop1 ./test_mountpoint cp ./test_files/SHORT_TEXT.txt ./test_mountpoint cp ./test_files/BINARY_ZEROS.dat ./test_mountpoint cp ./test_files/BINARY_ABC_RPTD.dat ./test_mountpoint cp ./test_files/BINARY_00_FF_RPTD.dat ./test_mountpoint umount ./test_mountpoint losetup -d /dev/loop1 cryptsetup remove myMapper losetup -d /dev/loop0 rm -rf ./test_mountpoint
Creating the volume file under Linux:
Mounting the volume under FreeOTFE Explorer:dd if=/dev/zero of=./volumes/vol_aes_essiv_sha256.vol bs=1K count=100 losetup /dev/loop0 ./volumes/vol_aes_essiv_sha256.vol echo password1234567890ABC | cryptsetup -c aes-cbc-essiv:sha256 create myMapper /dev/loop0 dmsetup ls dmsetup table dmsetup status losetup /dev/loop1 /dev/mapper/myMapper mkdosfs /dev/loop1 mkdir ./test_mountpoint mount /dev/loop1 ./test_mountpoint cp ./test_files/SHORT_TEXT.txt ./test_mountpoint cp ./test_files/BINARY_ZEROS.dat ./test_mountpoint cp ./test_files/BINARY_ABC_RPTD.dat ./test_mountpoint cp ./test_files/BINARY_00_FF_RPTD.dat ./test_mountpoint umount ./test_mountpoint losetup -d /dev/loop1 cryptsetup remove myMapper losetup -d /dev/loop0 rm -rf ./test_mountpoint
Creating the volume file under Linux:
Mounting the volume under FreeOTFE Explorer:dd if=/dev/zero of=./volumes/vol_blowfish_448.vol bs=1K count=100 losetup /dev/loop0 ./volumes/vol_blowfish_448.vol echo password1234567890ABC | cryptsetup -c blowfish -s 448 create myMapper /dev/loop0 dmsetup ls dmsetup table dmsetup status losetup /dev/loop1 /dev/mapper/myMapper mkdosfs /dev/loop1 mkdir ./test_mountpoint mount /dev/loop1 ./test_mountpoint cp ./test_files/SHORT_TEXT.txt ./test_mountpoint cp ./test_files/BINARY_ZEROS.dat ./test_mountpoint cp ./test_files/BINARY_ABC_RPTD.dat ./test_mountpoint cp ./test_files/BINARY_00_FF_RPTD.dat ./test_mountpoint umount ./test_mountpoint losetup -d /dev/loop1 cryptsetup remove myMapper losetup -d /dev/loop0 rm -rf ./test_mountpoint
Creating the volume file under Linux:
Mounting the volume under FreeOTFE Explorer:dd if=/dev/zero of=./volumes/vol_twofish_o3.vol bs=1K count=100 losetup /dev/loop0 ./volumes/vol_twofish_o3.vol echo password1234567890ABC | cryptsetup -c twofish -o 3 create myMapper /dev/loop0 dmsetup ls dmsetup table dmsetup status losetup /dev/loop1 /dev/mapper/myMapper mkdosfs /dev/loop1 mkdir ./test_mountpoint mount /dev/loop1 ./test_mountpoint cp ./test_files/SHORT_TEXT.txt ./test_mountpoint cp ./test_files/BINARY_ZEROS.dat ./test_mountpoint cp ./test_files/BINARY_ABC_RPTD.dat ./test_mountpoint cp ./test_files/BINARY_00_FF_RPTD.dat ./test_mountpoint umount ./test_mountpoint losetup -d /dev/loop1 cryptsetup remove myMapper losetup -d /dev/loop0 rm -rf ./test_mountpoint
Creating the volume file under Linux:
Mounting the volume under FreeOTFE Explorer:dd if=/dev/zero of=./volumes/vol_aes_md5.vol bs=1K count=100 losetup /dev/loop0 ./volumes/vol_aes_md5.vol echo password1234567890ABC | cryptsetup -c aes -h md5 create myMapper /dev/loop0 dmsetup ls dmsetup table dmsetup status losetup /dev/loop1 /dev/mapper/myMapper mkdosfs /dev/loop1 mkdir ./test_mountpoint mount /dev/loop1 ./test_mountpoint cp ./test_files/SHORT_TEXT.txt ./test_mountpoint cp ./test_files/BINARY_ZEROS.dat ./test_mountpoint cp ./test_files/BINARY_ABC_RPTD.dat ./test_mountpoint cp ./test_files/BINARY_00_FF_RPTD.dat ./test_mountpoint umount ./test_mountpoint losetup -d /dev/loop1 cryptsetup remove myMapper losetup -d /dev/loop0 rm -rf ./test_mountpoint
Note that although the main cypher is Blowfish 448, Blowfish 256 is used as the IV cypher as the IV hash outputs 256 bytes
Creating the volume file under Linux:
Mounting the volume under FreeOTFE Explorer:dd if=/dev/zero of=./volumes/vol_blowfish_448_essivsha256_md5.vol bs=1K count=100 losetup /dev/loop0 ./volumes/vol_blowfish_448_essivsha256_md5.vol echo password1234567890ABC | cryptsetup -c blowfish-cbc-essiv:sha256 -s 448 -h md5 create myMapper /dev/loop0 dmsetup ls dmsetup table dmsetup status losetup /dev/loop1 /dev/mapper/myMapper mkdosfs /dev/loop1 mkdir ./test_mountpoint mount /dev/loop1 ./test_mountpoint cp ./test_files/SHORT_TEXT.txt ./test_mountpoint cp ./test_files/BINARY_ZEROS.dat ./test_mountpoint cp ./test_files/BINARY_ABC_RPTD.dat ./test_mountpoint cp ./test_files/BINARY_00_FF_RPTD.dat ./test_mountpoint umount ./test_mountpoint losetup -d /dev/loop1 cryptsetup remove myMapper losetup -d /dev/loop0 rm -rf ./test_mountpoint
Creating the volume file under Linux:
Mounting the volume under FreeOTFE Explorer:dd if=/dev/zero of=./volumes/vol_aes_xts.vol bs=1K count=100 losetup /dev/loop0 ./volumes/vol_aes_xts.vol echo password1234567890ABC | cryptsetup -h sha512 -c aes-xts-plain --key-size 512 create myMapper /dev/loop0 dmsetup ls dmsetup table dmsetup status losetup /dev/loop1 /dev/mapper/myMapper mkdosfs /dev/loop1 mkdir ./test_mountpoint mount /dev/loop1 ./test_mountpoint cp ./test_files/SHORT_TEXT.txt ./test_mountpoint cp ./test_files/BINARY_ZEROS.dat ./test_mountpoint cp ./test_files/BINARY_ABC_RPTD.dat ./test_mountpoint cp ./test_files/BINARY_00_FF_RPTD.dat ./test_mountpoint umount ./test_mountpoint losetup -d /dev/loop1 cryptsetup remove myMapper losetup -d /dev/loop0 rm -rf ./test_mountpoint