added explanation about the difference between plain and LUKS
[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. Issues with Specific Versions of cryptsetup
10 A. Contributors
11
12
13 1. General Questions 
14
15
16  * What is this?
17
18   This is the FAQ (Frequently Asked Questions) for cryptsetup. It
19   covers Linux disk encryption with plain dm-crypt (one passphrase,
20   no management, no descriptor on disk) and LUKS (multiple user keys
21   with one master key, anti-forensics, descriptor block at start of
22   device, ...). The latest version should usually be available at
23   http://code.google.com/p/cryptsetup/wiki/FrequentlyAskedQuestions
24
25   ATTENTION: If you are going to read just one thing, make it the
26   section on Backup and Data Recovery. By far the most questions on
27   the cryptsetup mailing list are from people that just managed to
28   somehow format or overwrite the start of their LUKS partitions. In
29   most cases, there is nothing that can be done to help these poor
30   souls recover their data. Make sure you understand the problem and
31   limitations imposed by the LUKS security model BEFORE you face such
32   a disaster!
33
34
35  * Who wrote this?
36
37   Current FAQ maintainer is Arno Wagner <arno@wagner.name>. Other
38   contributors are listed at the end. If you want to contribute, send
39   your article, including a descriptive headline, to the maintainer,
40   or the dm-crypt mailing list with something like "FAQ ..." in the
41   subject. Please note that by contributing to this FAQ, you accept
42   the license described below.
43
44   This work is under the "Attribution-Share Alike 3.0 Unported"
45   license, which means distribution is unlimited, you may create
46   derived works, but attributions to original authors and this
47   license statement must be retained and the derived work must be
48   under the same license. See
49   http://creativecommons.org/licenses/by-sa/3.0/ for more details of
50   the license.
51
52   Side note: I did text license research some time ago and I think
53   this license is best suited for the purpose at hand and creates the
54   least problems.
55
56
57  * Where is the project website?
58
59   There is the project website at http://code.google.com/p/cryptsetup/
60   Please do not post questions there, nobody will read them. Use
61   the mailing-list instead.
62
63
64  * Is there a mailing-list?
65
66   Instructions on how to subscribe to the mailing-list are at on the
67   project website. People are generally helpful and friendly on the
68   list.
69
70   The question of how to unsubscribe from the list does crop up
71   sometimes. For this you need your list management URL, which is
72   sent to you initially and once at the start of each month. Go to
73   the URL mentioned in the email and select "unsubscribe". This page
74   also allows you to request a password reminder.
75
76   Alternatively, you can send an Email to dm-crypt-request@saout.de
77   with just the word "help" in the subject or message body. Make sure
78   to send it from your list address.
79
80   The mailing list archive is here:
81   http://dir.gmane.org/gmane.linux.kernel.device-mapper.dm-crypt
82
83
84 2. Setup 
85
86
87  * What is the difference between "plain" and LUKS format?
88
89   Plain format is just that: It has no metadata on disk, reads all
90   paramters from the commandline (or the defaults), derives a
91   master-key from the passphrase and then uses that to de-/encrypt
92   the sectors of the device, with a direct 1:1 mapping between
93   encrypted and decrypted sectors.
94
95   Primary advantage is high resilience to damage, as one damaged
96   encrypted sector results in exactly one damaged decrypted sector.
97   Also, it is not readily apparent that there even is encrypted data
98   on the device, as an overwrite with crypto-grade randomness (e.g.
99   from /dev/urandom) looks exactly the same on disk.
100
101   Side-note: That has limited value against the authorities. In
102   civilized countries, they cannot force you to give up a crypto-key
103   anyways. In the US, the UK and dictatorships around the world,
104   they can force you to give up the keys (using imprisonment or worse
105   to pressure you), and in the worst case, they only need a
106   nebulous "suspicion" about the presence of encrypted data. My
107   advice is to either be ready to give up the keys or to not have
108   encrypted data when traveling to those countries, especially when
109   crossing the borders.
110
111   Disadvantages are that you do not have all the nice features that
112   the LUKS metadata offers, like multiple passphrases that can be
113   changed, the cipher being stored in the metadata, anti-forensic
114   properties like key-slot diffusion and salts, etc..
115
116   LUKS format uses a metadata header and 8 key-slot areas that are
117   being placed ath the begining of the disk, see below under "What
118   does the LUKS on-disk format looks like?". The passphrases are used
119   to decryt a single master key that is stored in the anti-forensic
120   stripes.
121
122   Advantages are a higher usability, automatic configuration of
123   non-default crypto parameters, defenses against low-entropy
124   passphrases like salting and iterated PBKDF2 passphrase hashing,
125   the ability to change passhrases, and others.
126
127   Disadvantages are that it is readily obvious there is encrypted
128   data on disk (but see side note above) and that damage to the
129   header or key-slots usually results in permanent data-loss. See
130   below under "6. Backup and Data Recovery" on how to reduce that
131   risk. Also the sector numbers get shifted by the length of the
132   header and key-slots and there is a loss of that size in capacity
133   (1MB+4096B for defaults and 2MB for the most commonly used
134   non-default XTS mode).
135
136
137  * Can I encrypt an already existing, non-empty partition to use LUKS?
138
139   There is no converter, and it is not really needed. The way to do
140   this is to make a backup of the device in question, securely wipe
141   the device (as LUKS device initialization does not clear away old
142   data), do a luksFormat, optionally overwrite the encrypted device,
143   create a new filesystem and restore your backup on the now
144   encrypted device. Also refer to sections "Security Aspects" and
145   "Backup and Data Recovery".
146
147   For backup, plain GNU tar works well and backs up anything likely
148   to be in a filesystem.
149
150
151  * How do I use LUKS with a loop-device?
152
153   Just the same as with any block device. If you want, for example,
154   to use a 100MiB file as LUKS container, do something like this:
155
156       head -c 100M /dev/zero > luksfile  # create empty file
157       losetup /dev/loop0 luksfile        # map luksfile to /dev/loop0
158       cryptsetup luksFormat /dev/loop0   # create LUKS on loop device
159  
160   Afterwards just use /dev/loop0 as a you would use a LUKS partition.
161   To unmap the file when done, use "losetup -d /dev/loop0".
162
163
164  * When I add a new key-slot to LUKS, it asks for a passphrase but
165    then complains about there not being a key-slot with that
166    passphrase?
167
168   That is as intended. You are asked a passphrase of an existing
169   key-slot first, before you can enter the passphrase for the new
170   key-slot. Otherwise you could break the encryption by just adding a
171   new key-slot. This way, you have to know the passphrase of one of
172   the already configured key-slots in order to be able to configure a
173   new key-slot.
174
175
176  * How do I read a dm-crypt key from file?
177
178   Note that the file will still be hashed first, just like keyboard
179   input. Use the --key-file option, like this:
180
181       cryptsetup create --key-file keyfile e1 /dev/loop0
182  
183
184  * How do I read a LUKS slot key from file?
185
186   What you really do here is to read a passphrase from file, just as
187   you would with manual entry of a passphrase for a key-slot. You can
188   add a new passphrase to a free key-slot, set the passphrase of an
189   specific key-slot or put an already configured passphrase into a
190   file. In the last case make sure no trailing newline (0x0a) is
191   contained in the key file, or the passphrase will not work because
192   the whole file is used as input.
193
194   To add a new passphrase to a free key slot from file, use something
195   like this:
196
197       cryptsetup luksAddKey /dev/loop0 keyfile
198  
199   To add a new passphrase to a specific key-slot, use something like
200   this:
201
202       cryptsetup luksAddKey --key-slot 7 /dev/loop0 keyfile
203  
204   To supply a key from file to any LUKS command, use the --key-file
205   option, e.g. like this:
206
207       cryptsetup luksOpen --key-file keyfile /dev/loop0 e1
208  
209
210  * How do I read the LUKS master key from file?
211
212   The question you should ask yourself first is why you would want to
213   do this. The only legitimate reason I can think of is if you want
214   to have two LUKS devices with the same master key. Even then, I
215   think it would be preferable to just use key-slots with the same
216   passphrase, or to use plain dm-crypt instead. If you really have a
217   good reason, please tell me. If I am convinced, I will add how to
218   do this here.
219
220
221  * What are the security requirements for a key read from file?
222
223   A file-stored key or passphrase has the same security requirements
224   as one entered interactively, however you can use random bytes and
225   thereby use bytes you cannot type on the keyboard. You can use any
226   file you like as key file, for example a plain text file with a
227   human readable passphrase. To generate a file with random bytes,
228   use something like this:
229
230       head -c 256 /dev/random > keyfile
231  
232
233  * If I map a journaled file system using dm-crypt/LUKS, does it still
234    provide its usual transactional guarantees?
235
236   As far as I know it does (but I may be wrong), but please note that
237   these "guarantees" are far weaker than they appear to be. For
238   example, you may not get a hard flush to disk surface even on a
239   call to fsync. In addition, the HDD itself may do independent
240   write reordering. Some other things can go wrong as well. The
241   filesystem developers are aware of these problems and typically
242   can make it work anyways. That said, dm-crypt/LUKS should not make
243   things worse.
244
245   Personally, I have several instances of ext3 on dm-crypt and have
246   not noticed any specific problems.
247
248   Update: I did run into frequent small freezes (1-2 sec) when putting
249   a vmware image on ext3 over dm-crypt. This does indicate that the
250   transactional guarantees are in place, but at a cost. When I went
251   back to ext2, the problem went away. This also seems to have gotten
252   better with kernel 2.6.36 and the reworking of filesystem flush
253   locking. Kernel 2.6.38 is expected to have more improvements here.
254
255
256  * Can I use LUKS or cryptsetup with a more secure (external) medium
257    for key storage, e.g. TPM or a smartcard?
258
259   Yes, see the answers on using a file-supplied key. You do have to
260   write the glue-logic yourself though. Basically you can have
261   cryptsetup read the key from STDIN and write it there with your
262   own tool that in turn gets the key from the more secure key
263   storage.
264
265
266  * Can I resize a dm-crypt or LUKS partition?
267
268   Yes, you can, as neither dm-crypt nor LUKS stores partition size.
269   Whether you should is a different question. Personally I recommend
270   backup, recreation of the encrypted partition with new size,
271   recreation of the filesystem and restore. This gets around the
272   tricky business of resizing the filesystem. Resizing a dm-crypt or
273   LUKS container does not resize the filesystem in it. The backup is
274   really non-optional here, as a lot can go wrong, resulting in
275   partial or complete data loss. Using something like gparted to
276   resize an encrypted partition is slow, but typicaly works. This
277   will not change the size of the filesystem hidden under the
278   encryption though.
279
280   You also need to be aware of size-based limitations. The one
281   currently relevant is that aes-xts-plain should not be used for
282   encrypted container sizes larger than 2TiB. Use aes-xts-plain64
283   for that.
284
285
286 3. Common Problems 
287
288
289  * My dm-crypt/LUKS mapping does not work! What general steps are
290    there to investigate the problem?
291
292   If you get a specific error message, investigate what it claims
293   first. If not, you may want to check the following things.
294
295   - Check that "/dev", including "/dev/mapper/control" is there. If it
296   is missing, you may have a problem with the "/dev" tree itself or
297   you may have broken udev rules.
298
299   - Check that you have the device mapper and the crypt target in your
300   kernel. The output of "dmsetup targets" should list a "crypt"
301   target. If it is not there or the command fails, add device mapper
302   and crypt-target to the kernel.
303
304   - Check that the hash-functions and ciphers you want to use are in
305   the kernel. The output of "cat /proc/crypto" needs to list them.
306
307
308  * My dm-crypt mapping suddenly stopped when upgrading cryptsetup.
309
310   The default cipher, hash or mode may have changed (the mode changed
311   from 1.0.x to 1.1.x). See under "Issues With Specific Versions of
312   cryptsetup".
313
314
315  * When I call cryptsetup from cron/CGI, I get errors about unknown
316    features?
317
318   If you get errors about unknown parameters or the like that are not
319   present when cryptsetup is called from the shell, make sure you
320   have no older version of cryptsetup on your system that then gets
321   called by cron/CGI. For example some distributions install
322   cryptsetup into /usr/sbin, while a manual install could go to
323   /usr/local/sbin. As a debugging aid, call "cryptsetup --version"
324   from cron/CGI or the non-shell mechanism to be sure the right
325   version gets called.
326
327
328  * Unlocking a LUKS device takes very long. Why?
329
330   The iteration time for a key-slot (see Section 5 for an explanation
331   what iteration does) is calculated when setting a passphrase. By
332   default it is 1 second on the machine where the passphrase is set.
333   If you set a passphrase on a fast machine and then unlock it on a
334   slow machine, the unlocking time can be much longer. Also take into
335   account that up to 8 key-slots have to be tried in order to find the
336   right one.
337
338   If this is problem, you can add another key-slot using the slow
339   machine with the same passphrase and then remove the old key-slot.
340   The new key-slot will have an iteration count adjusted to 1 second
341   on the slow machine. Use luksKeyAdd and then luksKillSlot or
342   luksRemoveKey.
343
344   However, this operation will not change volume key iteration count
345   (MK iterations in output of "cryptsetup luksDump"). In order to
346   change that, you will have to backup the data in the LUKS
347   container, luksFormat on the slow machine and restore the data.
348   Note that in the original LUKS specification this value was fixed
349   to 10, but it is now derived from the PBKDF2 benchmark as well and
350   set to iterations in 0.125 sec or 1000, whichever is larger.
351
352
353  * "blkid" sees a LUKS UUID and an ext2/swap UUID on the same device.
354    What is wrong?
355
356   Some old versions of cryptsetup have a bug where the header does
357   not get completely wiped during LUKS format and an older ext2/swap
358   signature remains on the device. This confuses blkid.
359
360   Fix: Wipe the unused header areas by doing a backup and restore of
361   the header with cryptsetup 1.1.x:
362
363       cryptsetup luksHeaderBackup --header-backup-file <file> <device>
364       cryptsetup luksHeaderRestore --header-backup-file <file> <device>
365  
366
367  * cryptsetup segfaults on Gentoo amd64 hardened ...
368
369   There seems to be some inteference between the hardening and and
370   the way cryptsetup benchmarks PBKDF2. The solution to this is
371   currently not quite clear for an encrypted root filesystem.     For
372   other uses, you can apparently specify USE="dynamic" as compile
373   flag, see http://bugs.gentoo.org/show_bug.cgi?id=283470
374
375
376 4. Troubleshooting 
377
378
379  * Can a bad RAM module cause problems?
380
381   LUKS and dm-crypt can give the RAM quite a workout, especially when
382   combined with software RAID. In particular the combination RAID5 +
383   LUKS + XFS seems to uncover RAM problems that never caused obvious
384   problems before. Symptoms vary, but often the problem manifest
385   itself when copying large amounts of data, typically several times
386   larger than your main memory.
387
388   Side note: One thing you should always do on large data
389   copy/movements is to run a verify, for example with the "-d"
390   option of "tar" or by doing a set of MD5 checksums on the source
391   or target with
392
393       find . -type f -exec md5sum \{\} \; > checksum-file
394  
395   and then a "md5sum -c checksum-file" on the other side. If you get
396   mismatches here, RAM is the primary suspect. A lesser suspect is
397   an overclocked CPU. I have found countless hardware problems in
398   verify runs after copying or making backups. Bit errors are much
399   more common than most people think.
400
401   Some RAM issues are even worse and corrupt structures in one of the
402   layers. This typically results in lockups, CPU state dumps in the
403   system logs, kernel panic or other things. It is quite possible to
404   have the problem with an encrypted device, but not with an
405   otherwise the same unencrypted device. The reason for that is that
406   encryption has an error amplification property: You flip one bit
407   in an encrypted data block, and the decrypted version has half of
408   its bits flipped. This is an important security property for modern
409   ciphers. With the usual modes in cryptsetup (CBC, ESSIV, XTS), you
410   get up to a completely changed 512 byte block per bit error. A
411   corrupt block causes a lot more havoc than the occasionally
412   flipped single bit and can result various obscure errors.
413
414   Note however that a verify run on copying between encrypted or
415   unencrypted devices can also show you corruption when the copying
416   itself did not report any problems. If you find defect RAM, assume
417   all backups and copied data to be suspect, unless you did a verify.
418
419
420  * How do I test RAM?
421
422   First you should know that overclocking often makes memory
423   problems worse. So if you overclock (which I strongly recommend
424   against in a system holding data that has some worth), run the
425   tests with the overclocking active.
426
427   There are two good options. One is Memtest86+ and the other is
428   "memtester" by Charles Cazabon. Memtest86+ requires a reboot and
429   then takes over the machine, while memtester runs from a
430   root-shell. Both use different testing methods and I have found
431   problems fast with each one that the other needed long to find. I
432   recommend running the following procedure until the first error is
433   found:
434
435   - Run Memtest86+ for one cycle
436
437   - Run memterster for one cycle (shut down as many other applications
438   as possible)
439
440   - Run Memtest86+ for 24h or more
441
442   - Run memtester for 24h or more
443
444   If all that does not produce error messages, your RAM may be sound,
445   but I have had one weak bit that Memtest86+ needed around 60 hours
446   to find. If you can reproduce the original problem reliably, a good
447   additional test may be to remove half of the RAM (if you have more
448   than one module) and try whether the problem is still there and if
449   so, try with the other half. If you just have one module, get a
450   different one and try with that. If you do overclocking, reduce
451   the settings to the most conservative ones available and try with
452   that.
453
454
455 5. Security Aspects 
456
457
458  * Should I initialize (overwrite) a new LUKS/dm-crypt partition?
459
460   If you just create a filesystem on it, most of the old data will
461   still be there. If the old data is sensitive, you should overwrite
462   it before encrypting. In any case, not initializing will leave the
463   old data there until the specific sector gets written. That may
464   enable an attacker to determine how much and where on the
465   partition data was written. If you think this is a risk, you can
466   prevent this by overwriting the encrypted device (here assumed to
467   be named "e1") with zeros like this:
468
469       dd_rescue -w /dev/zero /dev/mapper/e1
470  
471   or alternatively with one of the following more standard commands:
472
473       cat /dev/zero > /dev/mapper/e1
474       dd if=/dev/zero of=/dev/mapper/e1
475        
476
477  * How do I securely erase a LUKS (or other) partition?
478
479   For LUKS, if you are in a desperate hurry, overwrite the LUKS
480   header and key-slot area. This means overwriting the first
481   (keyslots x stripes x keysize) + offset bytes. For the default
482   parameters, this is the 1'052'672 bytes, i.e. 1MiB + 4096 of the
483   LUKS partition. For 512 bit key length (e.g. for aes-xts-plain with
484   512 bit key) this is 2MiB. (The diferent offset stems from
485   differences in the sector alignment of the key-slots.) If in doubt,
486   just be generous and overwrite the first 10MB or so, it will likely
487   still be fast enough. A single overwrite with zeros should be
488   enough. If you anticipate being in a desperate hurry, prepare the
489   command beforehand. Example with /dev/sde1 as the LUKS partition
490   and default parameters:
491
492       head -c 1052672 /dev/zero > /dev/sde1; sync
493  
494   A LUKS header backup or full backup will still grant access to
495   most or all data, so make sure that an attacker does not have
496   access to backups or destroy them as well.
497
498   If you have time, overwrite the whole LUKS partition with a single
499   pass of zeros. This is enough for current HDDs. For SSDs or FLASH
500   (USB sticks) you may want to overwrite the whole drive several
501   times to be sure data is not retained by wear leveling. This is
502   possibly still insecure as SSD technology is not fully understood
503   in this regard. Still, due to the anti-forensic properties of the
504   LUKS key-slots, a single overwrite of an SSD or FLASH drive could
505   be enough. If in doubt, use physical destruction in addition. Here
506   is a link to some current reseach results on erasing SSDs and FLASH
507   drives:
508   http://www.usenix.org/events/fast11/tech/full_papers/Wei.pdf
509
510   Keep in mind to also erase all backups.
511
512   Example for a zero-overwrite erase of partition sde1 done with
513   dd_rescue:
514
515       dd_rescue -w /dev/zero /dev/sde1   
516  
517
518  * How do I securely erase a backup of a LUKS partition or header?
519
520   That depends on the medium it is stored on. For HDD and SSD, use
521   overwrite with zeros. For an SSD or FLASH drive (USB stick), you
522   may want to overwrite the complete SSD several times and use
523   physical destruction in addition, see last item. For re-writable
524   CD/DVD, a single overwrite should also be enough, due to the
525   anti-forensic properties of the LUKS keyslots. For write-once
526   media, use physical destruction. For low security requirements,
527   just cut the CD/DVD into several parts. For high security needs,
528   shred or burn the medium. If your backup is on magnetic tape, I
529   advise physical destruction by shredding or burning, after
530   overwriting . The problem with magnetic tape is that it has a
531   higher dynamic range than HDDs and older data may well be
532   recoverable after overwrites. Also write-head alignment issues can
533   lead to data not actually being deleted at all during overwrites.
534
535
536  * What about backup? Does it compromise security?
537
538   That depends. See next section.
539
540
541  * Why is all my data permanently gone if I overwrite the LUKS header?
542
543   Overwriting the LUKS header in part or in full is the most common
544   reason why access to LUKS containers is lost permanently.
545   Overwriting can be done in a number of fashions, like creating a
546   new filesystem on the raw LUKS partition, making the raw partition
547   part of a raid array and just writing to the raw partition.
548
549   The LUKS header contains a 256 bit "salt" value and without that no
550   decryption is possible. While the salt is not secret, it is
551   key-grade material and cannot be reconstructed. This is a
552   cryptographically strong "cannot". From observations on the
553   cryptsetup mailing-list, people typically go though the usual
554   stages of grief (Denial, Anger, Bargaining, Depression, Acceptance)
555   when this happens to them. Observed times vary between 1 day and 2
556   weeks to complete the cycle. Seeking help on the mailing-list is
557   fine. Even if we usually cannot help with getting back your data,
558   most people found the feedback comforting.
559
560   If your header does not contain an intact salt, best go directly
561   to the last stage ("Acceptance") and think about what to do now.
562   There is one exception that I know of: If your LUKS container is
563   still open, then it may be possible to extract the master key from
564   the running system. Ask on the mailing-list on how to do that and
565   make sure nobody switches off the machine.
566
567
568  * What is a "salt"?
569
570   A salt is a random key-grade value added to the passphrase before
571   it is processed. It is not kept secret. The reason for using salts
572   is as follows: If an attacker wants to crack the password for a
573   single LUKS container, then every possible passphrase has to be
574   tried. Typically an attacker will not try every binary value, but
575   will try words and sentences from a dictionary.
576
577   If an attacker wants to attack several LUKS containers with the
578   same dictionary, then a different approach makes sense: Compute the
579   resulting slot-key for each dictionary element and store it on
580   disk. Then the test for each entry is just the slow unlocking with
581   the slot key (say 0.00001 sec) instead of calculating the slot-key
582   first (1 sec). For a single attack, this does not help. But if you
583   have more than one container to attack, this helps tremendously,
584   also because you can prepare your table before you even have the
585   container to attack! The calculation is also very simple to
586   parallelize. You could, for example, use the night-time unused CPU
587   power of your desktop PCs for this.
588
589   This is where the salt comes in. If the salt is combined with the
590   passphrase (in the simplest form, just appended to it), you
591   suddenly need a separate table for each salt value. With a
592   reasonably-sized salt value (256 bit, e.g.) this is quite
593   infeasible.
594
595
596  * Is LUKS secure with a low-entropy (bad) passphrase?
597
598   This needs a bit of theory. The quality of your passphrase is
599   directly related to its entropy (information theoretic, not
600   thermodynamic). The entropy says how many bits of "uncertainty" or
601   "randomness" are in you passphrase. In other words, that is how
602   difficult guessing the passphrase is.
603
604   Example: A random English sentence has about 1 bit of entropy per
605   character. A random lowercase (or uppercase) character has about
606   4.7 bit of entropy.
607
608   Now, if n is the number of bits of entropy in your passphrase and t
609   is the time it takes to process a passphrase in order to open the
610   LUKS container, then an attacker has to spend at maximum
611
612       attack_time_max = 2^n * t 
613  
614   time for a successful attack and on average half that. There is no
615   way getting around that relationship. However, there is one thing
616   that does help, namely increasing t, the time it takes to use a
617   passphrase, see next FAQ item.
618
619   Still, if you want good security, a high-entropy passphrase is the
620   only option. Use at least 64 bits for secret stuff. That is 64
621   characters of English text (but only if randomly chosen) or a
622   combination of 12 truly random letters and digits.
623
624   For passphrase generation, do not use lines from very well-known
625   texts (religious texts, Harry potter, etc.) as they are to easy to
626   guess. For example, the total Harry Potter has about 1'500'000
627   words (my estimation). Trying every 64 character sequence starting
628   and ending at a word boundary would take only something like 20
629   days on a single CPU and is entirely feasible. To put that into
630   perspective, using a number of Amazon EC2 High-CPU Extra Large
631   instances (each gives about 8 real cores), this tests costs
632   currently about $48, but can be made to run arbitrarily fast.
633
634   On the other hand, choosing 1.5 lines from, say, the Wheel of Time
635   is in itself not more secure, but the book selection adds quite a
636   bit of entropy. (Now that I have mentioned it here, don't use tWoT
637   either!) If you add 2 or 3 typos or switch some words around, then
638   this is good passphrase material.
639
640
641  * What is "iteration count" and why is decreasing it a bad idea?
642
643   Iteration count is the number of PBKDF2 iterations a passphrase is
644   put through before it is used to unlock a key-slot. Iterations are
645   done with the explicit purpose to increase the time that it takes
646   to unlock a key-slot. This provides some protection against use of
647   low-entropy passphrases.
648
649   The idea is that an attacker has to try all possible passphrases.
650   Even if the attacker knows the passphrase is low-entropy (see last
651   item), it is possible to make each individual try take longer. The
652   way to do this is to repeatedly hash the passphrase for a certain
653   time. The attacker then has to spend the same time (given the same
654   computing power) as the user per try. With LUKS, the default is 1
655   second of PBKDF2 hashing.
656
657   Example 1: Lets assume we have a really bad passphrase (e.g. a
658   girlfriends name) with 10 bits of entropy. With the same CPU, an
659   attacker would need to spend around 500 seconds on average to
660   break that passphrase. Without iteration, it would be more like
661   0.0001 seconds on a modern CPU.
662
663   Example 2: The user did a bit better and has 32 chars of English
664   text. That would give use about 32 bits of entropy. With 1 second
665   iteration, that means an attacker on the same CPU needs around 136
666   years. That is pretty impressive for such a weak passphrase.
667   Without the iterations, it would be more like 50 days on a modern
668   CPU, and possibly far less.
669
670   In addition, the attacker can both parallelize and use special
671   hardware like GPUs to speed up the attack. The attack can also
672   happen quite some time after the luksFormat operation and CPUs can
673   have become faster and cheaper. For that reason you want a bit
674   of extra security. Anyways, in Example 1 your are screwed. In
675   example 2, not necessarily. Even if the attack is faster, it still
676   has a certain cost associated with it, say 10000 EUR/USD with
677   iteration and 1 EUR/USD without iteration. The first can be
678   prohibitively expensive, while the second is something you try
679   even without solid proof that the decryption will yield   something
680   useful.
681
682   The numbers above are mostly made up, but show the idea. Of course
683   the best thing is to have a high-entropy passphrase.
684
685   Would a 100 sec iteration time be even better? Yes and no.
686   Cryptographically it would be a lot better, namely 100 times better.
687   However, usability is a very important factor for security
688   technology and one that gets overlooked surprisingly often. For
689   LUKS, if you have to wait 2 minutes to unlock the LUKS container,
690   most people will not bother and use less secure storage instead. It
691   is better to have less protection against low-entropy passphrases
692   and people actually use LUKS, than having them do without
693   encryption altogether.
694
695   Now, what about decreasing the iteration time? This is generally a
696   very bad idea, unless you know and can enforce that the users only
697   use high-entropy passphrases. If you decrease the iteration time
698   without ensuring that, then you put your users at increased risk,
699   and considering how rarely LUKS containers are unlocked in a
700   typical work-flow, you do so without a good reason. Don't do it.
701   The iteration time is already low enough that users with entropy
702   low passphrases are vulnerable. Lowering it even further increases
703   this danger significantly.
704
705
706  * Is LUKS with default parameters less secure on a slow CPU?
707
708   Unfortunately, yes. However the only aspect affected is the
709   protection for low-entropy passphrase or master-key. All other
710   security aspects are independent of CPU speed.
711
712   The master key is less critical, as you really have to work at it
713   to give it low entropy. One possibility is to supply the master key
714   yourself. If that key is low-entropy, then you get what you
715   deserve. The other known possibility is to use /dev/urandom for
716   key generation in an entropy-startved situation (e.g. automatic
717   installation on an embedded device without network and other entropy
718   sources).
719
720   For the passphrase, don't use a low-entropy passphrase. If your
721   passphrase is good, then a slow CPU will not matter. If you insist
722   on a low-entropy passphrase on a slow CPU, use something like
723   "--iter-time=10" or higher and wait a long time on each LUKS unlock
724   and pray that the attacker does not find out in which way exactly
725   your passphrase is low entropy. This also applies to low-entropy
726   passphrases on fast CPUs. Technology can do only so much to
727   compensate for problems in front of the keyboard.
728
729
730  * Why was the default aes-cbc-plain replaced with aes-cbc-essiv?
731
732   The problem is that cbc-plain has a fingerprint vulnerability, where
733   a specially crafted file placed into the crypto-container can be
734   recognized from the outside. The issue here is that for cbc-plain
735   the initialization vector (IV) is the sector number. The IV gets
736   XORed to the first data chunk of the sector to be encrypted. If you
737   make sure that the first data block to be stored in a sector
738   contains the sector number as well, the first data block to be
739   encrypted is all zeros and always encrypted to the same ciphertext.
740   This also works if the first data chunk just has a constant XOR
741   with the sector number. By having several shifted patterns you can
742   take care of the case of a non-power-of-two start sector number of
743   the file.
744
745   This mechanism allows you to create a pattern of sectors that have
746   the same first ciphertext block and signal one bit per sector to the
747   outside, allowing you to e.g. mark media files that way for
748   recognition without decryption. For large files this is a
749   practical attack. For small ones, you do not have enough blocks to
750   signal and take care of different file starting offsets.
751
752   In order to prevent this attack, the default was changed to
753   cbc-essiv. ESSIV uses a keyed hash of the sector number, with the
754   encryption key as key. This makes the IV unpredictable without
755   knowing the encryption key and the watermarking attack fails.
756
757
758  * Are there any problems with "plain" IV? What is "plain64"?
759
760   First, "plain" and "plain64" are both not secure to use with CBC,
761   see previous FAQ item.
762
763   However there are modes, like XTS, that are secure with "plain" IV.
764   The next limit is that "plain" is 64 bit, with the upper 32 bit set
765   to zero. This means that on volumes larger than 2TiB, the IV
766   repeats, creating a vulnerability that potentially leaks some
767   data. To avoid this, use "plain64", which uses the full sector
768   number up to 64 bit. Note that "plain64" requires a kernel >=
769   2.6.33. Also note that "plain64" is backwards compatible for
770   volume sizes <= 2TiB, but not for those > 2TiB. Finally, "plain64"
771   does not cause any performance penalty compared to "plain".
772
773
774  * What about XTS mode?
775
776   XTS mode is potentially even more secure than cbc-essiv (but only if
777   cbc-essiv is insecure in your scenario). It is a NIST standard and
778   used, e.g. in Truecrypt. At the moment, if you want to use it, you
779   have to specify it manually as "aes-xts-plain", i.e.
780
781       cryptsetup -c aes-xts-plain luksFormat <device>
782  
783   For volumes >2TiB and kernels >= 2.6.33 use "plain64" (see FAQ
784   item on "plain" and "plain64"):
785
786       cryptsetup -c aes-xts-plain64 luksFormat <device>
787  
788   There is a potential security issue with XTS mode and large blocks.
789   LUKS and dm-crypt always use 512B blocks and the issue does not
790   apply.
791
792
793 6. Backup and Data Recovery 
794
795
796  * Does a backup compromise security?
797
798   Depends on how you do it. First, a backup is non-optional with
799   encrypted data just the same way it is with non-encrypted data.
800   Disks do break and they do not care whether they make plain or
801   encrypted data inaccessible. As a gideline, a well-treated HDD (!)
802   breaks with about 5% probability per year. This means everybody
803   will be hit sooner or later.
804
805   However there are risks introduced by backups. For example if you
806   change/disable a key-slot in LUKS, a binary backup of the partition
807   will still have the old key-slot. To deal with this, you have to
808   be able to change the key-slot on the backup as well, or use a
809   different set-up. One option is to have a different passphrase on
810   the backup and to make the backup with both containers open.
811   Another one is to make a backup of the original, opened container
812   to a single file, e.g. with tar, and to encrypt that file with
813   public-key-cryptography, e.g. with GnuPG. You can then keep the
814   secret key in a safe place, because it is only used to decrypt a
815   backup. The key the backup is encrypted with can be stored without
816   special security measures, as long as an attacker cannot replace
817   it with his own key.
818
819   If you use dm-crypt, backup is simpler: As there is no key
820   management, the main risk is that you cannot wipe the backup when
821   wiping the original. However wiping the original for dm-crypt
822   should consist of forgetting the passphrase and that you can do
823   without actual access to the backup.
824
825   In both cases, there is an additional (usually small) risk: An
826   attacker can see how many sectors and which ones have been changed
827   since the backup. This is not possible with the public-key method
828   though.
829
830   My personal advice is to use one USB disk (low value date) or
831   three disks (high value data) in rotating order for backups, and
832   either use different passphrases or keep them easily accessible
833   in case you need to disable a key-slot. If you do network-backup
834   or tape-backup, I strongly recommend to go the public-key path,
835   especially as you typically cannot reliably delete data in these
836   scenarios. (Well, you can burn the tape if it is under your
837   control...)
838
839
840  * What happens if I overwrite the start of a LUKS partition or damage
841    the LUKS header or key-slots?
842
843   There are two critical components for decryption: The salt values
844   in the header itself and the key-slots. If the salt values are
845   overwritten or changed, nothing (in the cryptographically strong
846   sense) can be done to access the data, unless there is a backup
847   of the LUKS header. If a key-slot is damaged, the data can still
848   be read with a different key-slot, if there is a remaining
849   undamaged and used key-slot. Note that in order to make a key-slot
850   unrecoverable in a cryptographically strong sense, changing about
851   4-6 bits in random locations of its 128kiB size is quite enough.
852
853
854  * What happens if I (quick) format a LUKS partition?
855
856   I have not tried the different ways to do this, but very likely you
857   will have written a new boot-sector, which in turn overwrites the
858   LUKS header, including the salts, making your data permanently
859   irretrivable, unless you have a LUKS header backup. You may also
860   damage the key-slots in part or in full. See also last item.
861
862
863  * What does the on-disk structure of dm-crypt look like?
864
865   There is none. dm-crypt takes a block device and gives encrypted
866   access to each of its blocks with a key derived from the passphrase
867   given. If you use a cipher different than the default, you have to
868   specify that as a parameter to cryptsetup too. If you want to
869   change the password, you basically have to create a second
870   encrypted device with the new passphrase and copy your data over.
871   On the plus side, if you accidentally overwrite any part of a
872   dm-crypt device, the damage will be limited to the are you
873   overwrote.
874
875
876  * What does the on-disk structure of LUKS look like?
877
878   A LUKS partition consists of a header, followed by 8 key-slot
879   descriptors, followed by 8 key slots, followed by the encrypted
880   data area.
881
882   Header and key-slot descriptors fill the first 592 bytes. The
883   key-slot size depends on the creation parameters, namely on the
884   number of anti-forensic stripes, key material offset and master
885   key size.
886
887   With the default parameters, each key-slot is a bit less than
888   128kiB in size. Due to sector alignment of the key-slot start,
889   that means the key block 0 is at offset 0x1000-0x20400, key
890   block 1 at offset 0x21000-0x40400, and key block 7 at offset
891   0xc1000-0xe0400. The space to the next full sector address is
892   padded with zeros. Never used key-slots are filled with what the
893   disk originally contained there, a key-slot removed with
894   "luksRemoveKey" or "luksKillSlot" gets filled with 0xff. Start of
895   bulk data is at 0x101000, i.e. at 1'052'672 bytes, i.e. at 1MiB
896   + 4096 bytes from the start of   the partition. This is also the
897   value given by command "luksDump" with   "Payload offset: 2056",
898   just multiply by the sector size (512 bytes). Incidentally,
899   "luksHeaderBackup" for a LUKS container created with default
900   parameters dumps exactly the first 1'052'672 bytes to file and
901   "luksHeaderRestore"   restores them.
902
903   For non-default parameters, you have to figure out placement
904   yourself. "luksDump" helps. For the most common non-default
905   settings, namely aes-xts-plain with 512 bit key, the offsets are:
906   1st keyslot 0x1000-0x3f800, 2nd keyslot 0x40000-0x7e000, 3rd
907   keyslot 0x7e000-0xbd800, ..., and start of bulk data at 0x200000.
908
909   The exact specification of the format is here:
910   http://code.google.com/p/cryptsetup/wiki/Specification
911
912
913  * How do I backup a LUKS header?
914
915   While you could just copy the appropriate number of bytes from the
916   start of the LUKS partition, the best way is to use command option
917   "luksHeaderBackup" of cryptsetup. This protects also against
918   errors when non-standard parameters have been used in LUKS
919   partition creation. Example:
920
921  
922      cryptsetup luksHeaderBackup --header-backup-file h /dev/mapper/c1
923  
924   To restore, use the inverse command, i.e.
925
926      cryptsetup luksHeaderRestore --header-backup-file h /dev/mapper/c1
927  
928
929  * How do I backup a LUKS partition?
930
931   You do a sector-image of the whole partition. This will contain
932   the LUKS header, the keys-slots and the data ares. It can be done
933   under Linux e.g. with dd_rescue (for a direct image copy) and with
934   "cat" or "dd". Example:
935
936       cat /dev/sda10 > sda10.img
937       dd_rescue /dev/sda10 sda10.img 
938  
939   You can also use any other backup software that is capable of making
940   a sector image of a partition. Note that compression is
941   ineffective for encrypted data, hence it does not make sense to
942   use it.
943
944
945  * Do I need a backup of the full partition? Would the header and
946    key-slots not be enough?
947
948   Backup protects you against two things: Disk loss or corruption
949   and user error. By far the most questions on the dm-crypt mailing
950   list about how to recover a damaged LUKS partition are related
951   to user error. For example, if you create a new filesystem on a
952   LUKS partition, chances are good that all data is lost
953   permanently.
954
955   For this case, a header+key-slot backup would often be enough. But
956   keep in mind that a well-treated (!) HDD has roughly a failure
957   risk of 5% per year. It is highly advisable to have a complete
958   backup to protect against this case.
959
960
961  * Are there security risks from a backup of the LUKS header or a
962    whole LUKS partition?
963
964   Yes. One risk is that if you remove access rights for specific
965   key-slots by deleting their contents, the data can still be
966   accessed with invalidated passphrase and the backup. The other
967   risk is that if you erase a LUKS partition, a backup could still
968   grant access, especially if you only erased the LUKS header and
969   not the whole partition.
970
971
972  * I think this is overly complicated. Is there an alternative?
973
974   Yes, you can use plain dm-crypt. It does not allow multiple
975   passphrases, but on the plus side, it has zero on disk description
976   and if you overwrite some part of a plain dm-crypt partition,
977   exactly the overwritten parts are lost (rounded up to sector
978   borders).
979
980
981 7. Issues with Specific Versions of cryptsetup 
982
983
984  * When using the create command for plain dm-crypt with cryptsetup
985    1.1.x, the mapping is incompatible and my data is not accessible
986    anymore!
987
988   With cryptsetup 1.1.x, the distro maintainer can define different
989   default encryption modes for LUKS and plain devices. You can check
990   these compiled-in defaults using "cryptsetup --help". Moreover, the
991   plain device default changed because the old IV mode was
992   vulnerable to a watermarking attack.
993
994   If you are using a plain device and you need a compatible mode, just
995   specify cipher, key size and hash algorithm explicitly. For
996   compatibility with cryptsetup 1.0.x defaults, simple use the
997   following:
998
999     cryptsetup create -c aes-cbc-plain -s 256 -h ripemd160 <name> <dev>
1000  
1001   LUKS stores cipher and mode in the metadata on disk, avoiding this
1002   problem.
1003
1004
1005  * cryptsetup on SLED 10 has problems...
1006
1007   SLED 10 is missing an essential kernel patch for dm-crypt, which
1008   is broken in its kernel as a result. There may be a very old
1009   version of cryptsetup (1.0.x) provided by SLED, which should also
1010   not be used anymore as well. My advice would be to drop SLED 10.
1011
1012  A. Contributors In no particular order:
1013
1014   - Arno Wagner
1015
1016   - Milan Broz
1017