В конце октября вышла новая версия cryptsetup — программы, используемой для прозрачного шифрования блочных устройств, с применением API ядра Linux.
Значительные изменения:
- если устройство не является вращающимся диском, то для стирания ключей алгоритм Гутмана использоваться не будет, а эта область будет однократно перезаписываться случайными данными;
- загловок LUKS теперь может отделяться: его можно поместить на другой диск и в другой файл, для чего введена новая опция --header.
Эта опция относится только к устройствам LUKS, и может использоваться с такими командами, как luksFormat, luksOpen, luksSuspend, luksResume и resize.Пример: Создадим зашифрованное устройство LUKS на устройстве /dev/sdb с заголовком на /dev/sdc. Будет использоваться всё пространство /dev/sdb, под заголовок ничего не резервируется:
Активируем это устройство:cryptsetup luksFormat /dev/sdb --header /dev/sdc --align-payload 0
Для заголовка LUKS можно использовать файл (файл должен быть достаточно большим):cryptsetup luksOpen /dev/sdb --header /dev/sdc test_disk
Активация происходит точно так же: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
Эту возможность нужно использовать с осторожностью. Во-первых, нельзя проверить, соответствует ли заголовок устройству. Ошибка может повредить данные. Во-вторых, если ключ хранится в файле, то невозможна работа механизма защиты от т.н. следственного анализа, поскольку между заголовком (суперблоком) LUKS и диском находится прослойка в виде ФС. Описание механизма можно найти здесь: http://clemens.endorphin.org/AFsplitter;
- опция --enable-discards для включения поддержки запросов discard/TRIM. Начиная с версии ядра 3.1, устройства dm-crypt опционально поддерживают команды discard (TRIM), включение этой опции должно происходить при каждой активации устройства:
Включение TRIM может быть небезопасным, прочитайте, по крайней мере, этот текст: http://asalor.blogspot.com/2011/08/trim-dm-crypt-problems.html;
cryptsetup luksOpen --enable-discards /dev/sdb test_disk
- опция --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 можно указывать конкретный слот, другие ключи проверяться при этом не будут;
- поддержка параметров таймаута и количества попыток для команды luksSuspend (аналогично команде luksOpen);
- среди прочих изменений можно выделить поддержку бэкенда Nettle 2.4.
>>> Подробности