1 Cryptsetup 2.0.3 Release Notes
2 ==============================
3 Stable bug-fix release with new features.
5 Cryptsetup 2.x version introduces a new on-disk LUKS2 format.
7 The legacy LUKS (referenced as LUKS1) will be fully supported
8 forever as well as a traditional and fully backward compatible format.
10 Please note that authenticated disk encryption, non-cryptographic
11 data integrity protection (dm-integrity), use of Argon2 Password-Based
12 Key Derivation Function and the LUKS2 on-disk format itself are new
13 features and can contain some bugs.
15 To provide all security features of authenticated encryption, we need
16 a better nonce-reuse resistant algorithm in the kernel (see note below).
17 For now, please use authenticated encryption as an experimental feature.
19 Please do not use LUKS2 without properly configured backup or in
20 production systems that need to be compatible with older systems.
22 Changes since version 2.0.2
23 ~~~~~~~~~~~~~~~~~~~~~~~~~~~
25 * Expose interface to unbound LUKS2 keyslots.
26 Unbound LUKS2 keyslot allows storing a key material that is independent
27 of master volume key (it is not bound to encrypted data segment).
29 * New API extensions for unbound keyslots (LUKS2 only)
30 crypt_keyslot_get_key_size() and crypt_volume_key_get()
31 These functions allow to get key and key size for unbound keyslots.
33 * New enum value CRYPT_SLOT_UNBOUND for keyslot status (LUKS2 only).
35 * Add --unbound keyslot option to the cryptsetup luksAddKey command.
37 * Add crypt_get_active_integrity_failures() call to get integrity
38 failure count for dm-integrity devices.
40 * Add crypt_get_pbkdf_default() function to get per-type PBKDF default
43 * Add new flag to crypt_keyslot_add_by_key() to force update device
44 volume key. This call is mainly intended for a wrapped key change.
46 * Allow volume key store in a file with cryptsetup.
47 The --dump-master-key together with --master-key-file allows cryptsetup
48 to store the binary volume key to a file instead of standard output.
50 * Add support detached header for cryptsetup-reencrypt command.
52 * Fix VeraCrypt PIM handling - use proper iterations count formula
53 for PBKDF2-SHA512 and PBKDF2-Whirlpool used in system volumes.
55 * Fix cryptsetup tcryptDump for VeraCrypt PIM (support --veracrypt-pim).
57 * Add --with-default-luks-format configure time option.
58 (Option to override default LUKS format version.)
60 * Fix LUKS version conversion for detached (and trimmed) LUKS headers.
62 * Add luksConvertKey cryptsetup command that converts specific keyslot
63 from one PBKDF to another.
65 * Do not allow conversion to LUKS2 if LUKSMETA (external tool metadata)
68 * More cleanup and hardening of LUKS2 keyslot specific validation options.
69 Add more checks for cipher validity before writing metadata on-disk.
71 * Do not allow LUKS1 version downconversion if the header contains tokens.
73 * Add "paes" family ciphers (AES wrapped key scheme for mainframes)
75 Specific wrapped ley configuration logic must be done by 3rd party tool,
76 LUKS2 stores only keyslot material and allow activation of the device.
78 * Add support for --check-at-most-once option (kernel 4.17) to veritysetup.
79 This flag can be dangerous; if you can control underlying device
80 (you can change its content after it was verified) it will no longer
81 prevent reading tampered data and also it does not prevent silent
82 data corruptions that appear after the block was once read.
84 * Fix return code (EPERM instead of EINVAL) and retry count for bad
85 passphrase on non-tty input.
87 * Enable support for FEC decoding in veritysetup to check dm-verity devices
88 with additional Reed-Solomon code in userspace (verify command).
90 Unfinished things & TODO for next releases
91 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
92 * There will be better documentation and examples (planned for 2.0.4).
94 * There will be some more formal definition of the threat model for integrity
95 protection. (And a link to some papers discussing integrity protection,
96 once it is, hopefully, accepted and published.)
98 * Authenticated encryption will use new algorithms from CAESAR competition
99 https://competitions.cr.yp.to/caesar-submissions.html.
100 We plan to use AEGIS and MORUS, as CAESAR finalists.
102 NOTE: Currently available authenticated modes (GCM, Chacha20-poly1305)
103 in the kernel have too small 96-bit nonces that are problematic with
104 randomly generated IVs (the collision probability is not negligible).
106 * Authenticated encryption do not set encryption for a dm-integrity journal.
108 While it does not influence data confidentiality or integrity protection,
109 an attacker can get some more information from data journal or cause that
110 system will corrupt sectors after journal replay. (That corruption will be
113 * There are examples of user-defined tokens inside misc/luks2_keyslot_example
114 directory (like a simple external program that uses libssh to unlock LUKS2
115 using remote keyfile).
117 * The python binding (pycryptsetup) contains only basic functionality for LUKS1
118 (it is not updated for new features) and will be REMOVED in version 2.1
119 in favor of python bindings to the libblockdev library.
120 See https://github.com/storaged-project/libblockdev/releases/tag/2.17-1 that
121 already supports LUKS2 and VeraCrypt devices handling through libcryptsetup.