cryptsetup - 1.4.0
В конце октября вышла в свет новая версия программы cryptsetup, которая используется для прозрачного шифрования блочных устройств, используя API ядра Linux.
Основные изменения:
- если устройство не является вращающимся носителем, то для стирания ключей алгоритм Гутманна использоваться не будет. Эта область будет однократно перезаписываться случайными данными;
- заголовок LUKS теперь может отделяться. Его можно поместить на другой носитель и в другой файл. Для этого введена новая опция --header.
Эта опция относится только к устройствам LUKS, и может использоваться с такими командами, как luksFormat, luksOpen, luksResume, luksSuspend и resize.
Пример.
Создадим шифрованное устройство LUKS на устройстве /dev/sdb с заголовком на /dev/sdc. Будет использоваться всё пространство устройства /dev/sdb, под заголовок ничего не резервируется:
cryptsetup luksFormat /dev/sdb --header /dev/sdc --align-payload 0
Активация устройства:
cryptsetup luksOpen /dev/sdb --header /dev/sdc test_disk
Для заголовка LUKS можно использовать файл (файл должен быть достаточно большим):
dd if=/dev/zero of=/mnt/luks_header bs=1M count=4 cryptsetup luksFormat /dev/sdb --header /mnt/luks_header --align-payload 0
Активация происходит так же:
cryptsetup luksOpen /dev/sdb --header /mnt/luks_header test_disk
А все операции с ключами производятся над файлом заголовка, а не над зашифрованными данными:
cryptsetup luksAddKey /mnt/luks_header
Эту возможность нужно использовать очень осторожностью.
Во-первых, нельзя проверить, соответствует ли заголовок устройству. Ошибка может повредить данные.
Во-вторых, если ключ хранится в файле, то anti-forensic splitter cannot properly work (there is filesystem allocation layer between header and disk);- опция --enable-discards для включения поддержки запросов discard/TRIM. Начиная с версии ядра 3.1, устройства dm-crypt опционально поддерживают команды discard (TRIM).
Включение этой опции должно использоваться при каждой активации устройства:
cryptsetup luksOpen --enable-discards /dev/sdb test_disk
Включение опции TRIM может быть опасным, прочитайте внимательно, этот текст: http://asalor.blogspot.com/2011/08/trim-dm-crypt-problems.html - опция --shared для создания не перекрывающихся зашифрованных сегментов. --shared проверяет, что сегменты не перекрываются, и позволяет не исключительный доступ к нижележащему устройству.Только базовые крипто-устройства (не LUKS) могут использоваться в этом режиме.
Например, отобразим первые 64M как один диск, следующие 32М — как другой:
cryptsetup create outer_disk /dev/sdb --offset 0 --size 65536 cryptsetup create inner_disk /dev/sdb --offset 65536 --size 32768 --shared
Простейшая реализация скрытого диска. - изменения в API libcrypsetup. Удалены устаревшие функции, добавлены новые;
- теперь команде luksOpen можно указывать конкретный слот. Другие ключи проверяться не будут;
- поддержка параметров time out и количества попыток для команды luksSuspend (аналогично команде luksOpen);
- среди прочих изменений можно выделить поддержку бекенда Nettle 2.4
- опция --enable-discards для включения поддержки запросов discard/TRIM. Начиная с версии ядра 3.1, устройства dm-crypt опционально поддерживают команды discard (TRIM).
Подробности на странице Cryptsetup140.