330e01f5c8965bf40c8d4930c77bfb2b43811d66
[platform/upstream/cryptsetup.git] / FAQ
1 Sections 
2
3 1. General Questions
4 2. Setup
5 3. Common Problems
6 4. Troubleshooting
7 5. Security Aspects
8 6. Backup and Data Recovery
9 7. Interoperability with other Disk Encryption Tools
10 8. Issues with Specific Versions of cryptsetup
11 A. Contributors
12
13
14 1. General Questions 
15
16
17  * 1.1 What is this?
18
19   This is the FAQ (Frequently Asked Questions) for cryptsetup. It
20   covers Linux disk encryption with plain dm-crypt (one passphrase,
21   no management, no metadata on disk) and LUKS (multiple user keys
22   with one master key, anti-forensic features, metadata block at
23   start of device, ...). The latest version of this FAQ should
24   usually be available at
25   http://code.google.com/p/cryptsetup/wiki/FrequentlyAskedQuestions
26
27
28  * 1.2 WARNINGS
29
30   ATTENTION: If you are going to read just one thing, make it the
31   section on Backup and Data Recovery. By far the most questions on
32   the cryptsetup mailing list are from people that managed to damage
33   the start of their LUKS partitions, i.e. the LUKS header. In
34   most cases, there is nothing that can be done to help these poor
35   souls recover their data. Make sure you understand the problem and
36   limitations imposed by the LUKS security model BEFORE you face
37   such a disaster! In particular, make sure you have a current header
38   backup before doing any potentially dangerous operations.
39
40   BACKUP: Yes, encrypted disks die, just as normal ones do. A full
41   backup is mandatory, see Section "6. Backup and Data Recovery" on
42   options for doing encrypted backup.
43
44   DISTRIBUTION INSTALLERS: Some distribution installers offer to
45   create LUKS containers in a way that can be mistaken as activation
46   of an existing container. Creating a new LUKS container on top of
47   an existing one leads to permanent, complete and irreversible data
48   loss. It is strongly recommended to only use distribution
49   installers after a complete backup of all LUKS containers has been
50   made.
51
52   NO WARNING ON NON-INERACTIVE FORMAT: If you feed cryptsetup from
53   STDIN (e.g. via GnuPG) on LUKS format, it does not give you the
54   warning that you are about to format (and e.g. will lose any
55   pre-existing LUKS container on the target), as it assumes it is
56   used from a script. In this scenario, the responsibility for
57   warning the user and possibly checking for an existing LUKS header
58   is shifted to the script. This is a more general form of the
59   previous item.
60
61   LUKS PASSPHRASE IS NOT THE MASTER KEY: The LUKS passphrase is not
62   used in deriving the master key. It is used in decrypting a master
63   key that is randomly selected on header creation. This means that
64   if you create a new LUKS header on top of an old one with
65   exactly the same parameters and exactly the same passphrase as the
66   old one, it will still have a different master key and your data
67   will be permanently lost.
68
69   PASSPHRASE CHARACTER SET: Some people have had difficulties with
70   this when upgrading distributions. It is highly advisable to only
71   use the 94 printable characters from the first 128 characters of
72   the ASCII table, as they will always have the same binary
73   representation. Other characters may have different encoding
74   depending on system configuration and your passphrase will not
75   work with a different encoding. A table of the standardized first
76   128 ASCII caracters can, e.g. be found on
77   http://en.wikipedia.org/wiki/ASCII
78
79
80  * 1.3 System Specific warnings
81
82   - Ubuntu as of 4/2011: It seems the installer offers to create
83   LUKS partitions in a way that several people mistook for an offer
84   to activate their existing LUKS partition. The installer gives no
85   or an inadequate warning and will destroy your old LUKS header,
86   causing permanent data loss. See also the section on Backup and
87   Data Recovery.
88
89   This issue has been acknowledged by the Ubuntu dev team, see here:
90   http://launchpad.net/bugs/420080
91
92
93  * 1.4 Who wrote this?
94
95   Current FAQ maintainer is Arno Wagner <arno@wagner.name>. Other
96   contributors are listed at the end. If you want to contribute, send
97   your article, including a descriptive headline, to the maintainer,
98   or the dm-crypt mailing list with something like "FAQ ..." in the
99   subject. You can also send more raw information and have me write
100   the section. Please note that by contributing to this FAQ, you
101   accept the license described below.
102
103   This work is under the "Attribution-Share Alike 3.0 Unported"
104   license, which means distribution is unlimited, you may create
105   derived works, but attributions to original authors and this
106   license statement must be retained and the derived work must be
107   under the same license. See
108   http://creativecommons.org/licenses/by-sa/3.0/ for more details of
109   the license.
110
111   Side note: I did text license research some time ago and I think
112   this license is best suited for the purpose at hand and creates the
113   least problems.
114
115
116  * 1.5 Where is the project website?
117
118   There is the project website at http://code.google.com/p/cryptsetup/
119   Please do not post questions there, nobody will read them. Use
120   the mailing-list instead.
121
122
123  * 1.6 Is there a mailing-list?
124
125   Instructions on how to subscribe to the mailing-list are at on the
126   project website. People are generally helpful and friendly on the
127   list.
128
129   The question of how to unsubscribe from the list does crop up
130   sometimes. For this you need your list management URL, which is
131   sent to you initially and once at the start of each month. Go to
132   the URL mentioned in the email and select "unsubscribe". This page
133   also allows you to request a password reminder.
134
135   Alternatively, you can send an Email to dm-crypt-request@saout.de
136   with just the word "help" in the subject or message body. Make sure
137   to send it from your list address.
138
139   The mailing list archive is here:
140   http://dir.gmane.org/gmane.linux.kernel.device-mapper.dm-crypt
141
142
143 2. Setup 
144
145
146  * 2.1 What is the difference between "plain" and LUKS format?
147
148   Plain format is just that: It has no metadata on disk, reads all
149   paramters from the commandline (or the defaults), derives a
150   master-key from the passphrase and then uses that to de-/encrypt
151   the sectors of the device, with a direct 1:1 mapping between
152   encrypted and decrypted sectors.
153
154   Primary advantage is high resilience to damage, as one damaged
155   encrypted sector results in exactly one damaged decrypted sector.
156   Also, it is not readily apparent that there even is encrypted data
157   on the device, as an overwrite with crypto-grade randomness (e.g.
158   from /dev/urandom) looks exactly the same on disk.
159
160   Side-note: That has limited value against the authorities. In
161   civilized countries, they cannot force you to give up a crypto-key
162   anyways. In the US, the UK and dictatorships around the world,
163   they can force you to give up the keys (using imprisonment or worse
164   to pressure you), and in the worst case, they only need a
165   nebulous "suspicion" about the presence of encrypted data. My
166   advice is to either be ready to give up the keys or to not have
167   encrypted data when traveling to those countries, especially when
168   crossing the borders.
169
170   Disadvantages are that you do not have all the nice features that
171   the LUKS metadata offers, like multiple passphrases that can be
172   changed, the cipher being stored in the metadata, anti-forensic
173   properties like key-slot diffusion and salts, etc..
174
175   LUKS format uses a metadata header and 8 key-slot areas that are
176   being placed ath the begining of the disk, see below under "What
177   does the LUKS on-disk format looks like?". The passphrases are used
178   to decryt a single master key that is stored in the anti-forensic
179   stripes.
180
181   Advantages are a higher usability, automatic configuration of
182   non-default crypto parameters, defenses against low-entropy
183   passphrases like salting and iterated PBKDF2 passphrase hashing,
184   the ability to change passhrases, and others.
185
186   Disadvantages are that it is readily obvious there is encrypted
187   data on disk (but see side note above) and that damage to the
188   header or key-slots usually results in permanent data-loss. See
189   below under "6. Backup and Data Recovery" on how to reduce that
190   risk. Also the sector numbers get shifted by the length of the
191   header and key-slots and there is a loss of that size in capacity
192   (1MB+4096B for defaults and 2MB for the most commonly used
193   non-default XTS mode).
194
195
196  * 2.2 Can I encrypt an already existing, non-empty partition to use
197    LUKS?
198
199   There is no converter, and it is not really needed. The way to do
200   this is to make a backup of the device in question, securely wipe
201   the device (as LUKS device initialization does not clear away old
202   data), do a luksFormat, optionally overwrite the encrypted device,
203   create a new filesystem and restore your backup on the now
204   encrypted device. Also refer to sections "Security Aspects" and
205   "Backup and Data Recovery".
206
207   For backup, plain GNU tar works well and backs up anything likely
208   to be in a filesystem.
209
210
211  * 2.3 How do I use LUKS with a loop-device?
212
213   This can be very handy for experiments. Setup is just the same as
214   with any block device. If you want, for example, to use a 100MiB
215   file as LUKS container, do something like this:
216
217       head -c 100M /dev/zero > luksfile  # create empty file
218       losetup /dev/loop0 luksfile        # map luksfile to /dev/loop0
219       cryptsetup luksFormat /dev/loop0   # create LUKS on loop device
220  
221   Afterwards just use /dev/loop0 as a you would use a LUKS partition.
222   To unmap the file when done, use "losetup -d /dev/loop0".
223
224
225  * 2.4 When I add a new key-slot to LUKS, it asks for a passphrase but
226    then complains about there not being a key-slot with that
227    passphrase?
228
229   That is as intended. You are asked a passphrase of an existing
230   key-slot first, before you can enter the passphrase for the new
231   key-slot. Otherwise you could break the encryption by just adding a
232   new key-slot. This way, you have to know the passphrase of one of
233   the already configured key-slots in order to be able to configure a
234   new key-slot.
235
236
237  * 2.5 Encrytion on top of RAID or the other way round?
238
239   Unless you have special needs, place encryption between RAID and
240   filesystem, i.e. encryption on top of RAID. You can do it the other
241   way round, but you have to be aware that you then need to give the
242   pasphrase for each individual disk and RAID autotetection will not
243   work anymore. Therefore it is better to encrypt the RAID device,
244   e.g. /dev/dm0 .
245
246
247  * 2.6 How do I read a dm-crypt key from file?
248
249   Note that the file will still be hashed first, just like keyboard
250   input. Use the --key-file option, like this:
251
252       cryptsetup create --key-file keyfile e1 /dev/loop0
253  
254
255  * 2.7 How do I read a LUKS slot key from file?
256
257   What you really do here is to read a passphrase from file, just as
258   you would with manual entry of a passphrase for a key-slot. You can
259   add a new passphrase to a free key-slot, set the passphrase of an
260   specific key-slot or put an already configured passphrase into a
261   file. In the last case make sure no trailing newline (0x0a) is
262   contained in the key file, or the passphrase will not work because
263   the whole file is used as input.
264
265   To add a new passphrase to a free key slot from file, use something
266   like this:
267
268       cryptsetup luksAddKey /dev/loop0 keyfile
269  
270   To add a new passphrase to a specific key-slot, use something like
271   this:
272
273       cryptsetup luksAddKey --key-slot 7 /dev/loop0 keyfile
274  
275   To supply a key from file to any LUKS command, use the --key-file
276   option, e.g. like this:
277
278       cryptsetup luksOpen --key-file keyfile /dev/loop0 e1
279  
280
281  * 2.8 How do I read the LUKS master key from file?
282
283   The question you should ask yourself first is why you would want to
284   do this. The only legitimate reason I can think of is if you want
285   to have two LUKS devices with the same master key. Even then, I
286   think it would be preferable to just use key-slots with the same
287   passphrase, or to use plain dm-crypt instead. If you really have a
288   good reason, please tell me. If I am convinced, I will add how to
289   do this here.
290
291
292  * 2.9 What are the security requirements for a key read from file?
293
294   A file-stored key or passphrase has the same security requirements
295   as one entered interactively, however you can use random bytes and
296   thereby use bytes you cannot type on the keyboard. You can use any
297   file you like as key file, for example a plain text file with a
298   human readable passphrase. To generate a file with random bytes,
299   use something like this:
300
301       head -c 256 /dev/random > keyfile
302  
303
304  * 2.10 If I map a journaled file system using dm-crypt/LUKS, does it
305    still provide its usual transactional guarantees?
306
307   As far as I know it does (but I may be wrong), but please note that
308   these "guarantees" are far weaker than they appear to be. For
309   example, you may not get a hard flush to disk surface even on a
310   call to fsync. In addition, the HDD itself may do independent
311   write reordering. Some other things can go wrong as well. The
312   filesystem developers are aware of these problems and typically
313   can make it work anyways. That said, dm-crypt/LUKS should not make
314   things worse.
315
316   Personally, I have several instances of ext3 on dm-crypt and have
317   not noticed any specific problems.
318
319   Update: I did run into frequent small freezes (1-2 sec) when putting
320   a vmware image on ext3 over dm-crypt. This does indicate that the
321   transactional guarantees are in place, but at a cost. When I went
322   back to ext2, the problem went away. This also seems to have gotten
323   better with kernel 2.6.36 and the reworking of filesystem flush
324   locking. Kernel 2.6.38 is expected to have more improvements here.
325
326
327  * 2.11 Can I use LUKS or cryptsetup with a more secure (external)
328    medium for key storage, e.g. TPM or a smartcard?
329
330   Yes, see the answers on using a file-supplied key. You do have to
331   write the glue-logic yourself though. Basically you can have
332   cryptsetup read the key from STDIN and write it there with your
333   own tool that in turn gets the key from the more secure key
334   storage.
335
336
337  * 2.12 Can I resize a dm-crypt or LUKS partition?
338
339   Yes, you can, as neither dm-crypt nor LUKS stores partition size.
340   Whether you should is a different question. Personally I recommend
341   backup, recreation of the encrypted partition with new size,
342   recreation of the filesystem and restore. This gets around the
343   tricky business of resizing the filesystem. Resizing a dm-crypt or
344   LUKS container does not resize the filesystem in it. The backup is
345   really non-optional here, as a lot can go wrong, resulting in
346   partial or complete data loss. Using something like gparted to
347   resize an encrypted partition is slow, but typicaly works. This
348   will not change the size of the filesystem hidden under the
349   encryption though.
350
351   You also need to be aware of size-based limitations. The one
352   currently relevant is that aes-xts-plain should not be used for
353   encrypted container sizes larger than 2TiB. Use aes-xts-plain64
354   for that.
355
356
357 3. Common Problems 
358
359
360  * 3.1 My dm-crypt/LUKS mapping does not work! What general steps are
361    there to investigate the problem?
362
363   If you get a specific error message, investigate what it claims
364   first. If not, you may want to check the following things.
365
366   - Check that "/dev", including "/dev/mapper/control" is there. If it
367   is missing, you may have a problem with the "/dev" tree itself or
368   you may have broken udev rules.
369
370   - Check that you have the device mapper and the crypt target in your
371   kernel. The output of "dmsetup targets" should list a "crypt"
372   target. If it is not there or the command fails, add device mapper
373   and crypt-target to the kernel.
374
375   - Check that the hash-functions and ciphers you want to use are in
376   the kernel. The output of "cat /proc/crypto" needs to list them.
377
378
379  * 3.2 My dm-crypt mapping suddenly stopped when upgrading cryptsetup.
380
381   The default cipher, hash or mode may have changed (the mode changed
382   from 1.0.x to 1.1.x). See under "Issues With Specific Versions of
383   cryptsetup".
384
385
386  * 3.3 When I call cryptsetup from cron/CGI, I get errors about
387    unknown features?
388
389   If you get errors about unknown parameters or the like that are not
390   present when cryptsetup is called from the shell, make sure you
391   have no older version of cryptsetup on your system that then gets
392   called by cron/CGI. For example some distributions install
393   cryptsetup into /usr/sbin, while a manual install could go to
394   /usr/local/sbin. As a debugging aid, call "cryptsetup --version"
395   from cron/CGI or the non-shell mechanism to be sure the right
396   version gets called.
397
398
399  * 3.4 Unlocking a LUKS device takes very long. Why?
400
401   The iteration time for a key-slot (see Section 5 for an explanation
402   what iteration does) is calculated when setting a passphrase. By
403   default it is 1 second on the machine where the passphrase is set.
404   If you set a passphrase on a fast machine and then unlock it on a
405   slow machine, the unlocking time can be much longer. Also take into
406   account that up to 8 key-slots have to be tried in order to find the
407   right one.
408
409   If this is problem, you can add another key-slot using the slow
410   machine with the same passphrase and then remove the old key-slot.
411   The new key-slot will have an iteration count adjusted to 1 second
412   on the slow machine. Use luksKeyAdd and then luksKillSlot or
413   luksRemoveKey.
414
415   However, this operation will not change volume key iteration count
416   (MK iterations in output of "cryptsetup luksDump"). In order to
417   change that, you will have to backup the data in the LUKS
418   container (i.e. your encrypted data), luksFormat on the slow
419   machine and restore the data. Note that in the original LUKS
420   specification this value was fixed to 10, but it is now derived
421   from the PBKDF2 benchmark as well and set to iterations in 0.125
422   sec or 1000, whichever is larger. Also note that MK iterations
423   are not very security relevant. But as each key-slot already takes
424   1 second, spending the additional 0.125 seconds really does not
425   matter.
426
427
428  * 3.5 "blkid" sees a LUKS UUID and an ext2/swap UUID on the same
429    device. What is wrong?
430
431   Some old versions of cryptsetup have a bug where the header does
432   not get completely wiped during LUKS format and an older ext2/swap
433   signature remains on the device. This confuses blkid.
434
435   Fix: Wipe the unused header areas by doing a backup and restore of
436   the header with cryptsetup 1.1.x:
437
438       cryptsetup luksHeaderBackup --header-backup-file <file> <device>
439       cryptsetup luksHeaderRestore --header-backup-file <file> <device>
440  
441
442  * 3.6 cryptsetup segfaults on Gentoo amd64 hardened ...
443
444   There seems to be some inteference between the hardening and and
445   the way cryptsetup benchmarks PBKDF2. The solution to this is
446   currently not quite clear for an encrypted root filesystem.     For
447   other uses, you can apparently specify USE="dynamic" as compile
448   flag, see http://bugs.gentoo.org/show_bug.cgi?id=283470
449
450
451 4. Troubleshooting 
452
453
454  * 4.1 I get the error "LUKS keyslot x is invalid." What does that
455    mean?
456
457   This means that the given keyslot has an offset that points
458   outside the valid keyslot area. Typically, the reason is a
459   corrupted LUKS header because something was written to the start of
460   the device the LUKS contaner is on. Refer to Section "Backup and
461   Data Recovery" and ask on the mailing list if you have trouble
462   diagnosing and (if still possible) repairing this.
463
464
465  * 4.2 Can a bad RAM module cause problems?
466
467   LUKS and dm-crypt can give the RAM quite a workout, especially when
468   combined with software RAID. In particular the combination RAID5 +
469   LUKS + XFS seems to uncover RAM problems that never caused obvious
470   problems before. Symptoms vary, but often the problem manifest
471   itself when copying large amounts of data, typically several times
472   larger than your main memory.
473
474   Side note: One thing you should always do on large data
475   copy/movements is to run a verify, for example with the "-d"
476   option of "tar" or by doing a set of MD5 checksums on the source
477   or target with
478
479       find . -type f -exec md5sum \{\} \; > checksum-file
480  
481   and then a "md5sum -c checksum-file" on the other side. If you get
482   mismatches here, RAM is the primary suspect. A lesser suspect is
483   an overclocked CPU. I have found countless hardware problems in
484   verify runs after copying or making backups. Bit errors are much
485   more common than most people think.
486
487   Some RAM issues are even worse and corrupt structures in one of the
488   layers. This typically results in lockups, CPU state dumps in the
489   system logs, kernel panic or other things. It is quite possible to
490   have the problem with an encrypted device, but not with an
491   otherwise the same unencrypted device. The reason for that is that
492   encryption has an error amplification property: You flip one bit
493   in an encrypted data block, and the decrypted version has half of
494   its bits flipped. This is an important security property for modern
495   ciphers. With the usual modes in cryptsetup (CBC, ESSIV, XTS), you
496   get up to a completely changed 512 byte block per bit error. A
497   corrupt block causes a lot more havoc than the occasionally
498   flipped single bit and can result in various obscure errors.
499
500   Note, that a verify run on copying between encrypted or
501   unencrypted devices will reliably detect corruption, even when the
502   copying itself did not report any problems. If you find defect
503   RAM, assume all backups and copied data to be suspect, unless you
504   did a verify.
505
506
507  * 4.3 How do I test RAM?
508
509   First you should know that overclocking often makes memory
510   problems worse. So if you overclock (which I strongly recommend
511   against in a system holding data that has some worth), run the
512   tests with the overclocking active.
513
514   There are two good options. One is Memtest86+ and the other is
515   "memtester" by Charles Cazabon. Memtest86+ requires a reboot and
516   then takes over the machine, while memtester runs from a
517   root-shell. Both use different testing methods and I have found
518   problems fast with each one that the other needed long to find. I
519   recommend running the following procedure until the first error is
520   found:
521
522   - Run Memtest86+ for one cycle
523
524   - Run memterster for one cycle (shut down as many other applications
525   as possible)
526
527   - Run Memtest86+ for 24h or more
528
529   - Run memtester for 24h or more
530
531   If all that does not produce error messages, your RAM may be sound,
532   but I have had one weak bit that Memtest86+ needed around 60 hours
533   to find. If you can reproduce the original problem reliably, a good
534   additional test may be to remove half of the RAM (if you have more
535   than one module) and try whether the problem is still there and if
536   so, try with the other half. If you just have one module, get a
537   different one and try with that. If you do overclocking, reduce
538   the settings to the most conservative ones available and try with
539   that.
540
541
542 5. Security Aspects 
543
544
545  * 5.1 Is LUKS insecure? Everybody can see I have encrypted data!
546
547   In practice it does not really matter. In most civilized countries
548   you can just refuse to hand over the keys, no harm done. In some
549   countries they can force you to hand over the keys, if they suspect
550   encryption. However the suspicion is enough, they do not have to
551   prove anything. This is for practical reasons, as even the presence
552   of a header (like the LUKS header) is not enough to prove that you
553   have any keys. It might have been an experiment, for example. Or it
554   was used as encrypted swap with a key from /dev/random. So they
555   make you prove you do not have encrypted data. Of course that is
556   just as impossible as the other way round.
557
558   This means that if you have a large set of random-looking data,
559   they can already lock you up. Hidden containers (encryption hidden
560   within encryption), as possible with Truecrypt, do not help
561   either. They will just assume the hidden container is there and
562   unless you hand over the key, you will stay locked up. Don't have
563   a hidden container? Though luck. Anybody could claim that.
564
565   Still, if you are concerned about the LUKS header, use plain
566   dm-crypt with a good passphrase. See also Section 2, "What is the
567   difference between "plain" and LUKS format?"
568
569
570  * 5.2 Should I initialize (overwrite) a new LUKS/dm-crypt partition?
571
572   If you just create a filesystem on it, most of the old data will
573   still be there. If the old data is sensitive, you should overwrite
574   it before encrypting. In any case, not initializing will leave the
575   old data there until the specific sector gets written. That may
576   enable an attacker to determine how much and where on the
577   partition data was written. If you think this is a risk, you can
578   prevent this by overwriting the encrypted device (here assumed to
579   be named "e1") with zeros like this:
580
581       dd_rescue -w /dev/zero /dev/mapper/e1
582  
583   or alternatively with one of the following more standard commands:
584
585       cat /dev/zero > /dev/mapper/e1
586       dd if=/dev/zero of=/dev/mapper/e1
587        
588
589  * 5.3 How do I securely erase a LUKS (or other) partition?
590
591   For LUKS, if you are in a desperate hurry, overwrite the LUKS
592   header and key-slot area. This means overwriting the first
593   (keyslots x stripes x keysize) + offset bytes. For the default
594   parameters, this is the 1'052'672 bytes, i.e. 1MiB + 4096 of the
595   LUKS partition. For 512 bit key length (e.g. for aes-xts-plain with
596   512 bit key) this is 2MiB. (The diferent offset stems from
597   differences in the sector alignment of the key-slots.) If in doubt,
598   just be generous and overwrite the first 10MB or so, it will likely
599   still be fast enough. A single overwrite with zeros should be
600   enough. If you anticipate being in a desperate hurry, prepare the
601   command beforehand. Example with /dev/sde1 as the LUKS partition
602   and default parameters:
603
604       head -c 1052672 /dev/zero > /dev/sde1; sync
605  
606   A LUKS header backup or full backup will still grant access to
607   most or all data, so make sure that an attacker does not have
608   access to backups or destroy them as well.
609
610   If you have time, overwrite the whole LUKS partition with a single
611   pass of zeros. This is enough for current HDDs. For SSDs or FLASH
612   (USB sticks) you may want to overwrite the whole drive several
613   times to be sure data is not retained by wear leveling. This is
614   possibly still insecure as SSD technology is not fully understood
615   in this regard. Still, due to the anti-forensic properties of the
616   LUKS key-slots, a single overwrite of an SSD or FLASH drive could
617   be enough. If in doubt, use physical destruction in addition. Here
618   is a link to some current reseach results on erasing SSDs and FLASH
619   drives:
620   http://www.usenix.org/events/fast11/tech/full_papers/Wei.pdf
621
622   Keep in mind to also erase all backups.
623
624   Example for a zero-overwrite erase of partition sde1 done with
625   dd_rescue:
626
627       dd_rescue -w /dev/zero /dev/sde1   
628  
629
630  * 5.4 How do I securely erase a backup of a LUKS partition or header?
631
632   That depends on the medium it is stored on. For HDD and SSD, use
633   overwrite with zeros. For an SSD or FLASH drive (USB stick), you
634   may want to overwrite the complete SSD several times and use
635   physical destruction in addition, see last item. For re-writable
636   CD/DVD, a single overwrite should also be enough, due to the
637   anti-forensic properties of the LUKS keyslots. For write-once
638   media, use physical destruction. For low security requirements,
639   just cut the CD/DVD into several parts. For high security needs,
640   shred or burn the medium. If your backup is on magnetic tape, I
641   advise physical destruction by shredding or burning, after
642   overwriting . The problem with magnetic tape is that it has a
643   higher dynamic range than HDDs and older data may well be
644   recoverable after overwrites. Also write-head alignment issues can
645   lead to data not actually being deleted at all during overwrites.
646
647
648  * 5.5 What about backup? Does it compromise security?
649
650   That depends. See item 6.7.
651
652
653  * 5.6 Why is all my data permanently gone if I overwrite the LUKS
654    header?
655
656   Overwriting the LUKS header in part or in full is the most common
657   reason why access to LUKS containers is lost permanently.
658   Overwriting can be done in a number of fashions, like creating a
659   new filesystem on the raw LUKS partition, making the raw partition
660   part of a raid array and just writing to the raw partition.
661
662   The LUKS header contains a 256 bit "salt" value and without that no
663   decryption is possible. While the salt is not secret, it is
664   key-grade material and cannot be reconstructed. This is a
665   cryptographically strong "cannot". From observations on the
666   cryptsetup mailing-list, people typically go though the usual
667   stages of grief (Denial, Anger, Bargaining, Depression, Acceptance)
668   when this happens to them. Observed times vary between 1 day and 2
669   weeks to complete the cycle. Seeking help on the mailing-list is
670   fine. Even if we usually cannot help with getting back your data,
671   most people found the feedback comforting.
672
673   If your header does not contain an intact salt, best go directly
674   to the last stage ("Acceptance") and think about what to do now.
675   There is one exception that I know of: If your LUKS container is
676   still open, then it may be possible to extract the master key from
677   the running system. See Item "How do I recover the master key from
678   a mapped LUKS container?" in Section "Backup and Data Recovery".
679
680
681  * 5.7 What is a "salt"?
682
683   A salt is a random key-grade value added to the passphrase before
684   it is processed. It is not kept secret. The reason for using salts
685   is as follows: If an attacker wants to crack the password for a
686   single LUKS container, then every possible passphrase has to be
687   tried. Typically an attacker will not try every binary value, but
688   will try words and sentences from a dictionary.
689
690   If an attacker wants to attack several LUKS containers with the
691   same dictionary, then a different approach makes sense: Compute the
692   resulting slot-key for each dictionary element and store it on
693   disk. Then the test for each entry is just the slow unlocking with
694   the slot key (say 0.00001 sec) instead of calculating the slot-key
695   first (1 sec). For a single attack, this does not help. But if you
696   have more than one container to attack, this helps tremendously,
697   also because you can prepare your table before you even have the
698   container to attack! The calculation is also very simple to
699   parallelize. You could, for example, use the night-time unused CPU
700   power of your desktop PCs for this.
701
702   This is where the salt comes in. If the salt is combined with the
703   passphrase (in the simplest form, just appended to it), you
704   suddenly need a separate table for each salt value. With a
705   reasonably-sized salt value (256 bit, e.g.) this is quite
706   infeasible.
707
708
709  * 5.8 Is LUKS secure with a low-entropy (bad) passphrase?
710
711   Note: You should only use the 94 printable characters from 7 bit
712   ASCII code to prevent your passphrase from failing when the
713   character encoding changes, e.g. because of a system upgrade, see
714   also the note at the very start of this FAQ under "WARNINGS".
715
716   This needs a bit of theory. The quality of your passphrase is
717   directly related to its entropy (information theoretic, not
718   thermodynamic). The entropy says how many bits of "uncertainty" or
719   "randomness" are in you passphrase. In other words, that is how
720   difficult guessing the passphrase is.
721
722   Example: A random English sentence has about 1 bit of entropy per
723   character. A random lowercase (or uppercase) character has about
724   4.7 bit of entropy.
725
726   Now, if n is the number of bits of entropy in your passphrase and t
727   is the time it takes to process a passphrase in order to open the
728   LUKS container, then an attacker has to spend at maximum
729
730       attack_time_max = 2^n * t 
731  
732   time for a successful attack and on average half that. There is no
733   way getting around that relationship. However, there is one thing
734   that does help, namely increasing t, the time it takes to use a
735   passphrase, see next FAQ item.
736
737   Still, if you want good security, a high-entropy passphrase is the
738   only option. For example, a low-entropy passphrase can never be
739   considered secure against a TLA-level (Three Letter Agency level,
740   i.e. government-level) attacker, no matter what tricks are used in
741   the key-derivation function. Use at least 64 bits for secret stuff.
742   That is 64 characters of English text (but only if randomly chosen)
743   or a combination of 12 truly random letters and digits.
744
745   For passphrase generation, do not use lines from very well-known
746   texts (religious texts, Harry potter, etc.) as they are to easy to
747   guess. For example, the total Harry Potter has about 1'500'000
748   words (my estimation). Trying every 64 character sequence starting
749   and ending at a word boundary would take only something like 20
750   days on a single CPU and is entirely feasible. To put that into
751   perspective, using a number of Amazon EC2 High-CPU Extra Large
752   instances (each gives about 8 real cores), this test costs
753   currently about 50USD/EUR, but can be made to run arbitrarily fast.
754
755   On the other hand, choosing 1.5 lines from, say, the Wheel of Time
756   is in itself not more secure, but the book selection adds quite a
757   bit of entropy. (Now that I have mentioned it here, don't use tWoT
758   either!) If you add 2 or 3 typos or switch some words around, then
759   this is good passphrase material.
760
761
762  * 5.9 What is "iteration count" and why is decreasing it a bad idea?
763
764   Iteration count is the number of PBKDF2 iterations a passphrase is
765   put through before it is used to unlock a key-slot. Iterations are
766   done with the explicit purpose to increase the time that it takes
767   to unlock a key-slot. This provides some protection against use of
768   low-entropy passphrases.
769
770   The idea is that an attacker has to try all possible passphrases.
771   Even if the attacker knows the passphrase is low-entropy (see last
772   item), it is possible to make each individual try take longer. The
773   way to do this is to repeatedly hash the passphrase for a certain
774   time. The attacker then has to spend the same time (given the same
775   computing power) as the user per try. With LUKS, the default is 1
776   second of PBKDF2 hashing.
777
778   Example 1: Lets assume we have a really bad passphrase (e.g. a
779   girlfriends name) with 10 bits of entropy. With the same CPU, an
780   attacker would need to spend around 500 seconds on average to
781   break that passphrase. Without iteration, it would be more like
782   0.0001 seconds on a modern CPU.
783
784   Example 2: The user did a bit better and has 32 chars of English
785   text. That would be about 32 bits of entropy. With 1 second
786   iteration, that means an attacker on the same CPU needs around 136
787   years. That is pretty impressive for such a weak passphrase.
788   Without the iterations, it would be more like 50 days on a modern
789   CPU, and possibly far less.
790
791   In addition, the attacker can both parallelize and use special
792   hardware like GPUs or FPGAs to speed up the attack. The attack can
793   also happen quite some time after the luksFormat operation and CPUs
794   can have become faster and cheaper. For that reason you want a
795   bit of extra security. Anyways, in Example 1 your are screwed.
796   In example 2, not necessarily. Even if the attack is faster, it
797   still has a certain cost associated with it, say 10000 EUR/USD
798   with iteration and 1 EUR/USD without iteration. The first can be
799   prohibitively expensive, while the second is something you try
800   even without solid proof that the decryption will yield something
801   useful.
802
803   The numbers above are mostly made up, but show the idea. Of course
804   the best thing is to have a high-entropy passphrase.
805
806   Would a 100 sec iteration time be even better? Yes and no.
807   Cryptographically it would be a lot better, namely 100 times better.
808   However, usability is a very important factor for security
809   technology and one that gets overlooked surprisingly often. For
810   LUKS, if you have to wait 2 minutes to unlock the LUKS container,
811   most people will not bother and use less secure storage instead. It
812   is better to have less protection against low-entropy passphrases
813   and people actually use LUKS, than having them do without
814   encryption altogether.
815
816   Now, what about decreasing the iteration time? This is generally a
817   very bad idea, unless you know and can enforce that the users only
818   use high-entropy passphrases. If you decrease the iteration time
819   without ensuring that, then you put your users at increased risk,
820   and considering how rarely LUKS containers are unlocked in a
821   typical work-flow, you do so without a good reason. Don't do it.
822   The iteration time is already low enough that users with entropy
823   low passphrases are vulnerable. Lowering it even further increases
824   this danger significantly.
825
826
827  * 5.10 Some people say PBKDF2 is insecure?
828
829   There is some discussion that a hash-function should have a "large
830   memory" property, i.e. that it should require a lot of memory to be
831   computed. This serves to prevent attacks using special programmable
832   circuits, like FPGAs, and attacks using graphics cards. PBKDF2
833   does not need a lot of memory and is vulnerable to these attacks.
834   However, the publication usually refered in these discussions is
835   not very convincing in proving that the presented hash really is
836   "large memory" (that may change, email the FAQ maintainer when it
837   does) and it is of limited usefulness anyways. Attackers that use
838   clusters of normal PCs will not be affected at all by a "large
839   memory" property. For example the US Secret Service is known to
840   use the off-hour time of all the office PCs of the Treasury for
841   password breaking. The Treasury has about 110'000 employees.
842   Asuming every one has an office PC, that is significant computing
843   power, all of it with plenty of memory for computing "large
844   memory" hashes. Bot-net operators also have all the memory they
845   want. The only protection against a resouceful attacker is a
846   high-entropy passphrase, see items 5.8 and 5.9.
847
848
849  * 5.11 What about iteration count with plain dm-crypt?
850
851   Simple: There is none. There is also no salting. If you use plain
852   dm-crypt, the only way to be secure is to use a high entropy
853   passphrase. If in doubt, use LUKS instead.
854
855
856  * 5.12 Is LUKS with default parameters less secure on a slow CPU?
857
858   Unfortunately, yes. However the only aspect affected is the
859   protection for low-entropy passphrase or master-key. All other
860   security aspects are independent of CPU speed.
861
862   The master key is less critical, as you really have to work at it
863   to give it low entropy. One possibility is to supply the master key
864   yourself. If that key is low-entropy, then you get what you
865   deserve. The other known possibility is to use /dev/urandom for
866   key generation in an entropy-startved situation (e.g. automatic
867   installation on an embedded device without network and other entropy
868   sources).
869
870   For the passphrase, don't use a low-entropy passphrase. If your
871   passphrase is good, then a slow CPU will not matter. If you insist
872   on a low-entropy passphrase on a slow CPU, use something like
873   "--iter-time=10" or higher and wait a long time on each LUKS unlock
874   and pray that the attacker does not find out in which way exactly
875   your passphrase is low entropy. This also applies to low-entropy
876   passphrases on fast CPUs. Technology can do only so much to
877   compensate for problems in front of the keyboard.
878
879
880  * 5.13 Why was the default aes-cbc-plain replaced with aes-cbc-essiv?
881
882   The problem is that cbc-plain has a fingerprint vulnerability, where
883   a specially crafted file placed into the crypto-container can be
884   recognized from the outside. The issue here is that for cbc-plain
885   the initialization vector (IV) is the sector number. The IV gets
886   XORed to the first data chunk of the sector to be encrypted. If you
887   make sure that the first data block to be stored in a sector
888   contains the sector number as well, the first data block to be
889   encrypted is all zeros and always encrypted to the same ciphertext.
890   This also works if the first data chunk just has a constant XOR
891   with the sector number. By having several shifted patterns you can
892   take care of the case of a non-power-of-two start sector number of
893   the file.
894
895   This mechanism allows you to create a pattern of sectors that have
896   the same first ciphertext block and signal one bit per sector to the
897   outside, allowing you to e.g. mark media files that way for
898   recognition without decryption. For large files this is a
899   practical attack. For small ones, you do not have enough blocks to
900   signal and take care of different file starting offsets.
901
902   In order to prevent this attack, the default was changed to
903   cbc-essiv. ESSIV uses a keyed hash of the sector number, with the
904   encryption key as key. This makes the IV unpredictable without
905   knowing the encryption key and the watermarking attack fails.
906
907
908  * 5.14 Are there any problems with "plain" IV? What is "plain64"?
909
910   First, "plain" and "plain64" are both not secure to use with CBC,
911   see previous FAQ item.
912
913   However there are modes, like XTS, that are secure with "plain" IV.
914   The next limit is that "plain" is 64 bit, with the upper 32 bit set
915   to zero. This means that on volumes larger than 2TiB, the IV
916   repeats, creating a vulnerability that potentially leaks some
917   data. To avoid this, use "plain64", which uses the full sector
918   number up to 64 bit. Note that "plain64" requires a kernel >=
919   2.6.33. Also note that "plain64" is backwards compatible for
920   volume sizes <= 2TiB, but not for those > 2TiB. Finally, "plain64"
921   does not cause any performance penalty compared to "plain".
922
923
924  * 5.15 What about XTS mode?
925
926   XTS mode is potentially even more secure than cbc-essiv (but only if
927   cbc-essiv is insecure in your scenario). It is a NIST standard and
928   used, e.g. in Truecrypt. At the moment, if you want to use it, you
929   have to specify it manually as "aes-xts-plain", i.e.
930
931       cryptsetup -c aes-xts-plain luksFormat <device>
932  
933   For volumes >2TiB and kernels >= 2.6.33 use "plain64" (see FAQ
934   item on "plain" and "plain64"):
935
936       cryptsetup -c aes-xts-plain64 luksFormat <device>
937  
938   There is a potential security issue with XTS mode and large blocks.
939   LUKS and dm-crypt always use 512B blocks and the issue does not
940   apply.
941
942
943 6. Backup and Data Recovery 
944
945
946  * 6.1 Why do I need Backup?
947
948   First, disks die. The rate for well-treated (!) disk is about 5%
949   per year, which is high enough to worry about. There is some
950   indication that this may be even worse for some SSDs. This applies
951   both to LUKS and plain dm-crypt partitions.
952
953   Second, for LUKS, if anything damages the LUKS header or the
954   key-stripe area then decrypting the LUKS device can become
955   impossible. This is a frequent occuurence. For example an
956   accidental format as FAT or some software overwriting the first
957   sector where it suspects a partition boot sector typically makes a
958   LUKS partition permanently inacessible. See more below on LUKS
959   header damage.
960
961   So, data-backup in some form is non-optional. For LUKS, you may
962   also want to store a header backup in some secure location. This
963   only needs an update if you change passphrases.
964
965
966  * 6.2 How do I backup a LUKS header?
967
968   While you could just copy the appropriate number of bytes from the
969   start of the LUKS partition, the best way is to use command option
970   "luksHeaderBackup" of cryptsetup. This protects also against
971   errors when non-standard parameters have been used in LUKS
972   partition creation. Example:
973
974  
975      cryptsetup luksHeaderBackup --header-backup-file h <device>
976  
977   To restore, use the inverse command, i.e.
978
979      cryptsetup luksHeaderRestore --header-backup-file h <device>
980  
981
982  * 6.3 How do I test a LUKS header?
983
984   Use
985
986      cryptsetup -v isLuks <device>
987  
988   on the device. Without the "-v" it just signals its result via
989   exit-status. You can alos use the more general test
990
991       blkid -p <device>
992  
993   which will also detect other types and give some more info. Omit
994   "-p" for old versions of blkid that do not support it.
995
996
997  * 6.4 How do I backup a LUKS or dm-crypt partition?
998
999   There are two options, a sector-image and a plain file or
1000   filesystem backup of the contents of the partition. The sector
1001   image is already encrypted, but cannot be compressed and contains
1002   all empty space. The filesystem backup can be compressed, can
1003   contain only part of the encrypted device, but needs to be
1004   encrypted separately if so desired.
1005
1006   A sector-image will contain the whole partition in encrypted form,
1007   for LUKS the LUKS header, the keys-slots and the data area. It can
1008   be done under Linux e.g. with dd_rescue (for a direct image copy)
1009   and with "cat" or "dd". Example:
1010
1011       cat /dev/sda10 > sda10.img
1012       dd_rescue /dev/sda10 sda10.img 
1013  
1014   You can also use any other backup software that is capable of making
1015   a sector image of a partition. Note that compression is
1016   ineffective for encrypted data, hence it does not make sense to
1017   use it.
1018
1019   For a filesystem backup, you decrypt and mount the encrypted
1020   partition and back it up as you would a normal filesystem. In this
1021   case the backup is not encrypted, unless your encryption method
1022   does that. For example you can encrypt a backup with "tar" as
1023   follows with GnuPG:
1024
1025       tar cjf - <path> | gpg --cipher-algo AES -c - > backup.tbz2.gpg
1026  
1027   And verify the backup like this if you are at "path":
1028
1029       cat backup.tbz2.gpg | gpg - | tar djf - 
1030  
1031   Note: Allways verify backups, especially encrypted ones.
1032
1033   In both cases GnuPG will ask you interactively for your symmetric
1034   key. The verify will only output errors. Use "tar dvjf -" to get
1035   all comparison results. To make sure no data is written to disk
1036   unencrypted, turn off swap if it is not encrypted before doing the
1037   backup.
1038
1039   You can of course use different or no compression and you can use
1040   an asymmetric key if you have one and have a backup of the secret
1041   key that belongs to it.
1042
1043   A second option for a filestem-level backup that can be used when
1044   the backup is also on local disk (e.g. an external USB drive) is
1045   to use a LUKS container there and copy the files to be backed up
1046   between both mounted containers. Also see next item.
1047
1048
1049  * 6.5 Do I need a backup of the full partition? Would the header and
1050    key-slots not be enough?
1051
1052   Backup protects you against two things: Disk loss or corruption
1053   and user error. By far the most questions on the dm-crypt mailing
1054   list about how to recover a damaged LUKS partition are related
1055   to user error. For example, if you create a new filesystem on a
1056   LUKS partition, chances are good that all data is lost
1057   permanently.
1058
1059   For this case, a header+key-slot backup would often be enough. But
1060   keep in mind that a well-treated (!) HDD has roughly a failure
1061   risk of 5% per year. It is highly advisable to have a complete
1062   backup to protect against this case.
1063
1064
1065   * *6.6 What do I need to backup if I use "decrypt_derived"?
1066
1067   This is a script in Debian, intended for mounting /tmp or swap with
1068   a key derived from the master key of an already decrypted device.
1069   If you use this for an device with data that should be persistent,
1070   you need to make sure you either do not lose access to that master
1071   key or have a backup of the data. If you derive from a LUKS
1072   device, a header backup of that device would cover backing up the
1073   master key. Keep in mind that this does not protect against disk
1074   loss.
1075
1076   Note: If you recreate the LUKS header of the device you derive from
1077   (using luksFormat), the master key changes even if you use the same
1078   passphrase(s) and you will not be able to decrypt the derived
1079   device with the new LUKS header.
1080
1081
1082  * 6.7 Does a backup compromise security?
1083
1084   Depends on how you do it. However if you do not have one, you are
1085   going to eventually lose your encrypted data.
1086
1087   There are risks introduced by backups. For example if you
1088   change/disable a key-slot in LUKS, a binary backup of the partition
1089   will still have the old key-slot. To deal with this, you have to
1090   be able to change the key-slot on the backup as well, securely
1091   erase the backup or do a filesystem-level backup instead of a binary
1092   one.
1093
1094   If you use dm-crypt, backup is simpler: As there is no key
1095   management, the main risk is that you cannot wipe the backup when
1096   wiping the original. However wiping the original for dm-crypt
1097   should consist of forgetting the passphrase and that you can do
1098   without actual access to the backup.
1099
1100   In both cases, there is an additional (usually small) risk with
1101   binary backups: An attacker can see how many sectors and which
1102   ones have been changed since the backup. To prevent this, use a
1103   filesystem level backup methid that encrypts the whole backup in
1104   one go, e.g. as described above with tar and GnuPG.
1105
1106   My personal advice is to use one USB disk (low value data) or
1107   three disks (high value data) in rotating order for backups, and
1108   either use independent LUKS partitions on them, or use encrypted
1109   backup with tar and GnuPG.
1110
1111   If you do network-backup or tape-backup, I strongly recommend to
1112   go the filesystem backup path with independent encryption, as you
1113   typically cannot reliably delete data in these scenarios,
1114   especially in a cloud setting. (Well, you can burn the tape if it
1115   is under your control...)
1116
1117
1118  * 6.8 What happens if I overwrite the start of a LUKS partition or
1119    damage the LUKS header or key-slots?
1120
1121   There are two critical components for decryption: The salt values
1122   in the header itself and the key-slots. If the salt values are
1123   overwritten or changed, nothing (in the cryptographically strong
1124   sense) can be done to access the data, unless there is a backup
1125   of the LUKS header. If a key-slot is damaged, the data can still
1126   be read with a different key-slot, if there is a remaining
1127   undamaged and used key-slot. Note that in order to make a key-slot
1128   unrecoverable in a cryptographically strong sense, changing about
1129   4-6 bits in random locations of its 128kiB size is quite enough.
1130
1131
1132  * 6.9 What happens if I (quick) format a LUKS partition?
1133
1134   I have not tried the different ways to do this, but very likely you
1135   will have written a new boot-sector, which in turn overwrites the
1136   LUKS header, including the salts, making your data permanently
1137   irretrivable, unless you have a LUKS header backup. You may also
1138   damage the key-slots in part or in full. See also last item.
1139
1140
1141  * 6.10 How do I recover the master key from a mapped LUKS container?
1142
1143   This is typically only needed if you managed to damage your LUKS
1144   header, but the container is still mapped, i.e. "luksOpen"ed. It
1145   also helps if you have a mapped container that you forgot or do not
1146   know a passphrase for (e.g. on a long running server.)
1147
1148   WARNING: Things go wrong, do a full backup before trying this!
1149
1150   WARNING: This exposes the master key of the LUKS container. Note
1151   that both ways to recreate a LUKS header with the old master key
1152   described below will write the master key to disk. Unless you are
1153   sure you have securely erased it afterwards, e.g. by writing it to
1154   an encrypted partition, RAM disk or by erasing the filesystem you
1155   wrote it to by a complete overwrite, you should change the master
1156   key afterwards.    Changing the master key requires a full data
1157   backup, luksFormat and then restore of the backup.
1158
1159   First, there is a script by Milan that automatizes    the whole
1160   process, except generating a new LUKS header with the old master
1161   key (it prints the command for that though):
1162
1163 http://code.google.com/p/cryptsetup/source/browse/trunk/misc/luks-header-from-active
1164
1165   You can also do this manually. Here is how:
1166
1167   - Get the master key from the device mapper. This is done by the
1168   following command. Substitute c5 for whatever you mapped to:
1169
1170       # dmsetup table --target crypt --showkey /dev/mapper/c5
1171       Result:
1172       0 200704 crypt aes-cbc-essiv:sha256 
1173       a1704d9715f73a1bb4db581dcacadaf405e700d591e93e2eaade13ba653d0d09 
1174       0 7:0 4096
1175  
1176   The result is actually one line, wrapped here for clarity. The long
1177   hex string is the master key.
1178
1179   - Convert the master key to a binary file representation. You can
1180   do this manually, e.g. with hexedit. You can also use the tool
1181   "xxd" from vim like this:
1182
1183       echo "a1704d9....53d0d09" | xxd -r -p > <master-key-file>
1184  
1185   - Do a luksFormat to create a new LUKS header.
1186
1187     NOTE: If your header is intact and you just forgot the
1188   passphrase, you can just set a new passphrase, see next     subitem.
1189
1190   Unmap the device before you do that (luksClose). Then do
1191
1192       cryptsetup luksFormat --master-key-file=<master-key-file> <luks device>
1193  
1194   Note that if the container was created with other than the default
1195   settings of the cryptsetup version you are using, you need to give
1196   additional parameters specifying the deviations. If in doubt, try
1197   the script by Milan. It does recover the other parameters as well.
1198
1199   Side note: This is the way the decrypt_derived script gets at the
1200   master key. It just omits the conversion and hashes the master key
1201   string.
1202
1203   - If the header is intact and you just forgot the passphrase, just
1204   set a new passphrase like this:
1205
1206       cryptsetup luksAddKey --master-key-file=<master-key-file> <luks device>
1207  
1208   You may want to disable the old one afterwards.
1209
1210
1211  * 6.11 What does the on-disk structure of dm-crypt look like?
1212
1213   There is none. dm-crypt takes a block device and gives encrypted
1214   access to each of its blocks with a key derived from the passphrase
1215   given. If you use a cipher different than the default, you have to
1216   specify that as a parameter to cryptsetup too. If you want to
1217   change the password, you basically have to create a second
1218   encrypted device with the new passphrase and copy your data over.
1219   On the plus side, if you accidentally overwrite any part of a
1220   dm-crypt device, the damage will be limited to the are you
1221   overwrote.
1222
1223
1224  * 6.12 What does the on-disk structure of LUKS look like?
1225
1226   A LUKS partition consists of a header, followed by 8 key-slot
1227   descriptors, followed by 8 key slots, followed by the encrypted
1228   data area.
1229
1230   Header and key-slot descriptors fill the first 592 bytes. The
1231   key-slot size depends on the creation parameters, namely on the
1232   number of anti-forensic stripes, key material offset and master
1233   key size.
1234
1235   With the default parameters, each key-slot is a bit less than
1236   128kiB in size. Due to sector alignment of the key-slot start,
1237   that means the key block 0 is at offset 0x1000-0x20400, key
1238   block 1 at offset 0x21000-0x40400, and key block 7 at offset
1239   0xc1000-0xe0400. The space to the next full sector address is
1240   padded with zeros. Never used key-slots are filled with what the
1241   disk originally contained there, a key-slot removed with
1242   "luksRemoveKey" or "luksKillSlot" gets filled with 0xff. Due to
1243   2MiB default alignment, start of the data area for cryptsetup 1.3
1244   and later is at 2MiB, i.e. at 0x200000. For older versions, it is
1245   at 0x101000, i.e. at 1'052'672 bytes, i.e. at 1MiB + 4096 bytes
1246   from the start of the partition. Incidentally, "luksHeaderBackup"
1247   for a LUKS container created with default parameters dumps exactly
1248   the first 2MiB (or 1'052'672 bytes for   headers created with
1249   cryptsetup versions < 1.3) to file and "luksHeaderRestore" restores
1250   them.
1251
1252   For non-default parameters, you have to figure out placement
1253   yourself. "luksDump" helps. See also next item. For the most common
1254   non-default settings, namely aes-xts-plain with 512 bit key, the
1255   offsets are: 1st keyslot 0x1000-0x3f800, 2nd keyslot
1256   0x40000-0x7e000, 3rd keyslot 0x7e000-0xbd800, ..., and start of
1257   bulk data at 0x200000.
1258
1259   The exact specification of the format is here:
1260   http://code.google.com/p/cryptsetup/wiki/Specification
1261
1262
1263  * 6.13 What is the smallest possible LUKS container?
1264
1265   Note: From cryptsetup 1.3 onwards, alignment is set to 1MB. With
1266   modern Linux partitioning tools that also align to 1MB, this will
1267   result in aligmnet to 2k secors and typical Flash/SSD sectors,
1268   which is highly desirable for a number of reasons. Changing the
1269   alignment is not recomended.
1270
1271   That said, with default parameters, the data area starts at
1272   exactly 2MB offset (at 0x101000 for cryptsetup versions before
1273   1.3). The smallest data area you can have is one sector of 512
1274   bytes. Data areas of 0 bytes can be created, but fail on mapping.
1275
1276   While you cannot put a filesystem into something this small, it may
1277   still be used to contain, for example, key. Note that with current
1278   formatting tools, a partition for a container this size will be
1279   3MiB anyways. If you put the LUKS container into a file (via
1280   losetup and a loopback device), the file needs to be 2097664 bytes
1281   in size, i.e. 2MiB + 512B.
1282
1283   There two ways to influence the start of the data area are key-size
1284   and alignment.
1285
1286   For alignment, you can go down to 1 on the parameter. This will
1287   still leave you with a data-area starting at 0x101000, i.e.
1288   1MiB+4096B (default parameters) as alignment will be rounded up to
1289   the next multiple of 8 (i.e. 4096 bytes) If in doubt, do a dry-run
1290   on a larger file and dump the LUKS header to get actual
1291   information.
1292
1293   For key-size, you can use 128 bit (e.g. AES-128 with CBC), 256 bit
1294   (e.g. AES-256 with CBC) or 512 bit (e.g. AES-256 with XTS mode).
1295   You can do 64 bit (e.g. blowfish-64 with CBC), but anything below
1296   128 bit has to be considered insecure today.
1297
1298   Example 1 - AES 128 bit with CBC:
1299
1300       cryptsetup luksFormat -s 128 --align-payload=8 <device>
1301  
1302   This results in a data offset of 0x81000, i.e. 516KiB or 528384
1303   bytes. Add one 512 byte sector and the smallest LUKS container size
1304   with these parameters is 516KiB + 512B or 528896 bytes.
1305
1306   Example 2 - Blowfish 64 bit with CBC (WARNING: insecure):
1307
1308       cryptsetup luksFormat -c blowfish -s 64 --align-payload=8 /dev/loop0
1309  
1310   This results in a data offset of 0x41000, i.e. 260kiB or 266240
1311   bytes, with a minimal LUKS conatiner size of 260kiB + 512B or
1312   266752 bytes.
1313
1314
1315  * 6.14 I think this is overly complicated. Is there an alternative?
1316
1317   Not really. Encryption comes at a price. You can use plain
1318   dm-crypt to simplify things a bit. It does not allow multiple
1319   passphrases, but on the plus side, it has zero on disk description
1320   and if you overwrite some part of a plain dm-crypt partition,
1321   exactly the overwritten parts are lost (rounded up to sector
1322   borders).
1323
1324
1325 7. Interoperability with other Disk Encryption Tools  
1326
1327
1328  * 7.1 What is this section about?
1329
1330   Cryptsetup for plain dm-crypt can be used to access a number of
1331   on-disk formats created by tools like loop-aes patched into
1332   losetup. This somtimes works and sometimes does not.    This section
1333   collects insights into what works, what does not and where more
1334   information is required.
1335
1336   Additional information may be found in the mailing-list archives,
1337   mentioned at the start of this FAQ document. If you have a
1338   solution working that is not yet documented here and think a wider
1339   audience may be intertested, please email the FAQ maintainer.
1340
1341
1342  * 7.2 loop-aes: General observations.
1343
1344   One problem is that there are different versions of losetup around.
1345   loop-aes is a patch for losetup. Possible problems and deviations
1346   from cryptsetup option syntax include:
1347
1348   - Offsets specifed in bytes (cryptsetup: 512 byte sectors)
1349
1350   - The need to specify an IV offset
1351
1352   - Encryption mode needs specifying (e.g. "-c twofish-cbc-plain")
1353
1354   - Key size needs specifying (e.g. "-s 128" for 128 bit keys)
1355
1356   - Passphrase hash algorithm needs specifying
1357
1358   Also note that because plain dm-crypt and loop-aes format does not
1359   have metadata, autodetection, while feasible in most cases, would
1360   be a lot of work that nobody really wants to do. If you still have
1361   the old set-up, using a verbosity option (-v) on mapping with the
1362   old tool or having a look into the system logs after setup could
1363   give you the information you need.
1364
1365
1366  * 7.3 loop-aes patched into losetup on debian 5.x, kernel 2.6.32
1367
1368   In this case, the main problem seems to be that this variant of
1369   losetup takes the offset (-o option) in bytes, while cryptsetup
1370   takes it in sectors of 512 bytes each. Example: The losetupp
1371   command
1372
1373   losetup -e twofish -o 2560 /dev/loop0 /dev/sdb1 
1374   mount /dev/loop0 mountpoint
1375  
1376   translates to
1377
1378   cryptsetup create -c twofish -o 5 --skip 5 e1 /dev/sdb1
1379   mount /dev/mapper/e1 mountpoint
1380  
1381
1382  * 7.4 loop-aes with 160 bit key
1383
1384   This seems to be sometimes used with twofish and blowfish and
1385   represents a 160 bit ripemed160 hash output padded to 196 bit key
1386   length. It seems the corresponding options for cryptsetup are
1387
1388   --cipher twofish-cbc-null -s 192 -h ripemd160:20
1389  
1390
1391 8. Issues with Specific Versions of cryptsetup 
1392
1393
1394  * 8.1 When using the create command for plain dm-crypt with
1395    cryptsetup 1.1.x, the mapping is incompatible and my data is not
1396    accessible anymore!
1397
1398   With cryptsetup 1.1.x, the distro maintainer can define different
1399   default encryption modes for LUKS and plain devices. You can check
1400   these compiled-in defaults using "cryptsetup --help". Moreover, the
1401   plain device default changed because the old IV mode was
1402   vulnerable to a watermarking attack.
1403
1404   If you are using a plain device and you need a compatible mode, just
1405   specify cipher, key size and hash algorithm explicitly. For
1406   compatibility with cryptsetup 1.0.x defaults, simple use the
1407   following:
1408
1409     cryptsetup create -c aes-cbc-plain -s 256 -h ripemd160 <name> <dev>
1410  
1411   LUKS stores cipher and mode in the metadata on disk, avoiding this
1412   problem.
1413
1414
1415  * 8.2 cryptsetup on SLED 10 has problems...
1416
1417   SLED 10 is missing an essential kernel patch for dm-crypt, which
1418   is broken in its kernel as a result. There may be a very old
1419   version of cryptsetup (1.0.x) provided by SLED, which should also
1420   not be used anymore as well. My advice would be to drop SLED 10.
1421
1422  A. Contributors In no particular order:
1423
1424   - Arno Wagner
1425
1426   - Milan Broz
1427