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