Fix typos in changelog.
[platform/upstream/cryptsetup.git] / docs / v1.6.0-ReleaseNotes
1 Cryptsetup 1.6.0 Release Notes (RC1)
2 ====================================
3
4 Changes since version 1.5.1
5 ~~~~~~~~~~~~~~~~~~~~~~~~~~~
6
7 Important changes
8 ~~~~~~~~~~~~~~~~~
9
10  * Cryptsetup and libcryptsetup is now released under GPLv2+
11    (GPL version 2 or any later).
12    Some internal code handling files (loopaes, verity, tcrypt
13    and crypto backend wrapper) are LGPLv2+.
14
15    Previously code was GPL version 2 only.
16
17
18  * Introducing new unified command open and close.
19
20    Example:
21       cryptsetup open --type plain|luks|loopaes|tcrypt <device> <name>
22       (type defaults to luks)
23
24    with backward-compatible aliases plainOpen, luksOpen, loopaesOpen,
25    tcryptOpen. Basically "open --type xyz" has alias "xyzOpen".
26
27    The "create" command (plain device create) is DEPRECATED but will
28    be still supported.
29    (This command is confusing because of switched arguments order.)
30
31    The close command is generic command to remove mapping and have
32    backward compatible aliases (remove, luksClose, ...) which behaves
33    exactly the same.
34
35    While all old syntax is still supported, I strongly suggest to use
36    new command syntax which is common for all device types (and possible
37    new formats added in future).
38
39
40  * cryptsetup now support directly TCRYPT (TrueCrypt and compatible tc-play)
41    on-disk format
42    (Code is independent implementation not related to original project).
43
44    Only dump (tcryptDump command) and activation (open --type tcrypt or tcryptOpen)
45    of TCRYPT device are supported. No header changes are supported.
46
47    It is intended to easily access containers shared with other operating systems
48    without need to install 3rd party software. For native Linux installations LUKS
49    is the preferred format.
50
51    WARNING: TCRYPT  extension  requires kernel userspace crypto API to be available
52    (kernel af_alg and algif_skcipher modules, introduced in Linux kernel 2.6.38).
53
54    Because  TCRYPT  header  is encrypted, you have to always provide valid
55    passphrase and keyfiles. Keyfiles are handled exactly the same as in original
56    format (basically, first 1MB of every keyfile is mixed using CRC32 into pool).
57
58    Cryptsetup should recognize all TCRYPT header variants ever released, except 
59    legacy  cipher chains  using LRW encryption mode with 64 bits encryption block
60    (namely Blowfish in LRW mode is not recognized, this is limitation of kernel
61    crypto API).
62
63    Device activation is supported only for LRW/XTS modes (again, limitation
64    of kernel dmcrypt which do not implements TCRYPT extensions to CBC mode).
65    (So old containers cannot be activated, but you can use libcryptsetup
66    for lost password search, example of such code is included in misc directory.)
67
68    Hidden header are supported using --tcrypt-hidden option, system encryption
69    using --tcrypt-system option.
70
71    For detailed description see man page.
72
73    EXAMPLE:
74      * Dump device parameters of container in file:
75
76      # cryptsetup tcryptDump tst
77        Enter passphrase: 
78
79      TCRYPT header information for tst
80      Version:        5
81      Driver req.:    7
82      Sector size:    512
83      MK offset:      131072
84      PBKDF2 hash:    sha512
85      Cipher chain:   serpent-twofish-aes
86      Cipher mode:    xts-plain64
87      MK bits:        1536
88
89      You can also dump master key using --dump-master-key.
90      Dump does not require superuser privilege.
91
92      * Activation of this container
93
94      # cryptsetup tcryptOpen tst tcrypt_dev       
95        Enter passphrase: 
96       (Chain of dmcrypt devices is activated as /dev/mapper/tcrypt_dev.)
97    
98      * See status of active TCRYPT device
99
100      # cryptsetup status tcrypt_dev
101
102      /dev/mapper/tcrypt_dev is active.
103      type:    TCRYPT
104      cipher:  serpent-twofish-aes-xts-plain64
105      keysize: 1536 bits
106      device:  /dev/loop0
107      loop:    /tmp/tst
108      offset:  256 sectors
109      size:    65024 sectors
110      skipped: 256 sectors
111      mode:    read/write
112
113     * And plaintext filesystem now ready to mount
114
115     # blkid /dev/mapper/tcrypt_dev
116     /dev/mapper/tcrypt_dev: SEC_TYPE="msdos" UUID="9F33-2954" TYPE="vfat" 
117
118
119  * Add (optional) support for lipwquality for new LUKS passwords.
120
121    If password is entered through terminal (no keyfile specified)
122    and cryptsetup is compiled with --enable-pwquality, default
123    system pwquality settings are used to check password quality.
124
125    You can always override this check by using new --force-password option.
126
127    For more info about pwquality project see http://libpwquality.fedorahosted.org/
128
129
130  * Proper handle interrupt signals (ctrl+c and TERM signal) in tools
131
132    Code should now handle interrupt properly, release and explicitly wipe
133    in-memory key materials on interrupt.
134    (Direct users of libcryptsetup should always call crypt_free() when
135    code is interrupted to wipe all resources. There is no signal handling
136    in library, it is up to the tool using it.)
137
138  
139  * Add new benchmark command
140
141    The "benchmark" command now tries to benchmark PBKDF2 and some block
142    cipher variants. You can specify you own parameters (--cipher/--key-size
143    for block ciphers, --hash for PBKDF2).
144
145    See man page for detailed description.
146
147    WARNING: benchmark requires kernel userspace crypto API to be available
148    (kernel af_alg and algif_skcipher modules, introduced in  Linux  kernel 2.6.38).
149
150    EXAMPLE:
151      # cryptsetup benchmark
152      # Tests are approximate using memory only (no storage IO).
153      PBKDF2-sha1       111077 iterations per second
154      PBKDF2-sha256      53718 iterations per second
155      PBKDF2-sha512      18832 iterations per second
156      PBKDF2-ripemd160   89775 iterations per second
157      PBKDF2-whirlpool   23918 iterations per second
158             #  Algorithm | Key | Encryption | Decryption
159           aes-cbc   128b  212.0 MiB/s  428.0 MiB/s
160       serpent-cbc   128b   23.1 MiB/s   66.0 MiB/s
161       twofish-cbc   128b   46.1 MiB/s   50.5 MiB/s
162           aes-cbc   256b  163.0 MiB/s  350.0 MiB/s
163       serpent-cbc   256b   23.1 MiB/s   66.0 MiB/s
164       twofish-cbc   256b   47.0 MiB/s   50.0 MiB/s
165           aes-xts   256b  190.0 MiB/s  190.0 MiB/s
166       serpent-xts   256b   58.4 MiB/s   58.0 MiB/s
167       twofish-xts   256b   49.0 MiB/s   49.5 MiB/s
168           aes-xts   512b  175.0 MiB/s  175.0 MiB/s
169       serpent-xts   512b   59.0 MiB/s   58.0 MiB/s
170       twofish-xts   512b   48.5 MiB/s   49.5 MiB/s
171
172      Or you can specify cipher yourself:
173      # cryptsetup benchmark --cipher cast5-cbc-essiv:sha256 -s 128
174      # Tests are approximate using memory only (no storage IO).
175      #  Algorithm | Key | Encryption | Decryption
176         cast5-cbc   128b   32.4 MiB/s   35.0 MiB/s
177
178      WARNING: these tests do not use dmcrypt, only crypto API.
179      You have to benchmark the whole device stack and you can get completely
180      different results. But is is usable for basic comparison.
181      (Note for example AES-NI decryption optimization effect in example above.)
182
183 Features
184 ~~~~~~~~
185
186  * Do not maintain ChangeLog file anymore, see git log for detailed changes,
187    e.g. here http://code.google.com/p/cryptsetup/source/list
188
189  * Move change key into library, add crypt_keyslot_change_by_passphrase().
190    This change is useful mainly in FIPS mode, where we cannot
191    extract volume key directly from libcryptsetup.
192
193  * Add verbose messages during reencryption.
194
195  * Default LUKS PBKDF2 iteration time is now configurable.
196
197  * Add simple cipher benchmarking API.
198
199  * Add kernel skcipher backend.
200
201  * Add CRC32 implementation (for TCRYPT).
202
203  * Move PBKDF2 into crypto backend wrapper.
204    This allows use it in other formats, use library implementations and
205    also possible use of different KDF function in future.
206
207  * New PBKDF2 benchmark using getrusage().
208
209 Fixes
210 ~~~~~
211
212  * Avoid O_DIRECT open if underlying storage doesn't support it.
213
214  * Fix some non-translated messages.
215
216  * Fix regression in header backup (1.5.1) with container in file.
217
218  * Fix blockwise read/write for end writes near end of device.
219    (was not used in previous versions)
220
221  * Ignore setpriority failure.
222
223  * Code changes to fix/ignore problems found by Coverity static analysis, including
224    - Get page size should never fail.
225    - Fix time of check/use (TOCTOU test) in tools
226    - Fix time of check/use in loop/wipe utils.
227    - Fix time of check/use in device utils.
228
229  * Disallow header restore if context is non-LUKS device.