Версия: 2.7.2
Cryptsetup — это инструмент для работы с dm-crypt, используемый для создания, доступа и управления зашифрованными устройствами. Инструмент был расширен для поддержки различных типов шифрования, которые используют модуль управления устройствами ядра Linux (device-mapper) и криптографические модули. Самым заметным дополнением стало расширение Linux Unified Key Setup (LUKS), которое сохраняет всю необходимую информацию для настройки dm-crypt непосредственно на диске и упрощает управление разделами и ключами, чтобы повысить удобство использования.
Устройства, доступ к которым осуществляется через device-mapper, называются блочными устройствами.
Cryptsetup предоставляет ограниченную поддержку для томов, использующих loop-AES, TrueCrypt, VeraCrypt, BitLocker и совместимых с FileVault2, а также для аппаратного шифрования на дисках с поддержкой OPAL.
Контактная информация:
Проект GitLab
Лицензия:
GPL
Синтаксис:
cryptsetup [ПАРАМЕТР…] <действие> <данные для действия>
Параметры справки:
Опция | Описание |
---|---|
-?, --help | Показать это сообщение |
--usage | Показать краткие инструкции |
-V, --version | Показать версию пакета |
--active-name=STRING | Переопределить автоматическое определение устройства dm для повторного шифрования |
--align-payload=SECTORS | Выравнивание данных на границе <n> секторов - для luksFormat |
--allow-discards | Разрешить запросы TRIM для устройства |
-q, --batch-mode | Не запрашивать подтверждение |
--cancel-deferred | Отменить ранее установленное отложенное удаление устройства |
-c, --cipher=STRING | Алгоритм шифрования (см. /proc/crypto) |
--debug | Показывать отладочные сообщения |
--debug-json | Показывать отладочные сообщения включая JSON-метаданные |
--deferred | Отложить удаление устройства до закрытия последним пользователем |
--device-size=bytes | Использовать только указанную часть устройства (ОПАСНО!) |
--decrypt | Расшифровать устройство LUKS2 (убрать шифрование) |
--disable-external-tokens | Отключить загрузку внешних токенов LUKS2 |
--disable-keyring | Отключить загрузку ключей через ядро keyring |
--disable-locks | Отключить блокировки на метаданные |
--disable-veracrypt | Не сканировать устройства, совместимые с VeraCrypt |
--dump-json-metadata | Вывод информации в формате JSON (только LUKS2) |
--dump-master-key | Вывести мастер-ключ тома вместо информации о ключевых слотах |
--encrypt | Зашифровать устройство LUKS2 (шифрование на месте) |
--force-password | Отключить проверку сложности пароля |
-h, --hash=STRING | Хэш для создания ключа шифрования из пароля |
--header=STRING | Устройство или файл с отдельным заголовком LUKS |
--header-backup-file=STRING | Файл с резервной копией заголовка и ключевых слотов LUKS |
--hotzone-size=bytes | Максимальный размер "горячей зоны" для повторного шифрования |
--init-only | Инициализация повторного шифрования только в метаданных (LUKS2) |
-I, --integrity=STRING | Алгоритм целостности данных (только LUKS2) |
--integrity-legacy-padding | Использовать устаревшую неэффективную выравнивающую запись |
--integrity-no-journal | Отключить журнал для устройств целостности |
--integrity-no-wipe | Не стирать устройство после форматирования |
-i, --iter-time=msecs | Время итерации PBKDF для LUKS (в мс) |
--iv-large-sectors | Использовать IV, считанные в размере сектора (не 512 байт) |
--json-file=STRING | Чтение или запись JSON из/в файл |
--key-description=STRING | Описание ключа |
-d, --key-file=STRING | Чтение ключа из файла |
-s, --key-size=BITS | Размер ключа шифрования |
-S, --key-slot=INT | Номер слота для нового ключа (по умолчанию первый свободный) |
--keyfile-offset=bytes | Число байтов для пропуска в файле ключа |
-l, --keyfile-size=bytes | Лимит чтения файла ключа |
--keyslot-cipher=STRING | LUKS2: Алгоритм шифрования ключевого слота |
--keyslot-key-size=BITS | LUKS2: Размер ключа для ключевого слота |
--label=STRING | Установить метку устройства LUKS2 |
--luks2-keyslots-size=bytes | Размер области ключевых слотов LUKS2 |
--luks2-metadata-size=bytes | Размер области метаданных LUKS2 |
--master-key-file=STRING | Чтение мастер-ключа тома из файла |
--new-keyfile-offset=bytes | Пропуск байтов в новом файле ключа |
--new-keyfile-size=bytes | Лимит чтения нового файла ключа |
-o, --offset=SECTORS | Начальный смещение на базовом устройстве |
--pbkdf=STRING | Алгоритм PBKDF (для LUKS2): argon2i, argon2id, pbkdf2 |
--pbkdf-force-iterations=LONG | Принудительное значение итераций PBKDF |
--pbkdf-memory=kilobytes | Лимит памяти PBKDF |
--pbkdf-parallel=threads | Параллельное выполнение PBKDF |
--perf-no_read_workqueue | Пропуск очереди dm-crypt при обработке запросов чтения |
--perf-no_write_workqueue | Пропуск очереди dm-crypt при обработке запросов записи |
--perf-same_cpu_crypt | Использовать совместимость dm-crypt same_cpu_crypt |
--perf-submit_from_crypt_cpus | Использовать совместимость dm-crypt submit_from_crypt_cpus |
--persistent | Сделать флаги активации устройства постоянными |
--priority=STRING | Приоритет слота ключей: ignore, normal, prefer |
--progress-frequency=secs | Частота обновления строки прогресса |
-r, --readonly | Создание только для чтения |
--reduce-device-size=bytes | Уменьшение размера устройства данных (ОПАСНО!) |
--refresh | Обновить параметры устройства |
--resilience=STRING | Тип "горячей зоны" для повторного шифрования (checksum, journal, none) |
--resilience-hash=STRING | Хэш для проверки "горячей зоны" |
--resume-only | Продолжить ранее начатое повторное шифрование LUKS2 |
--sector-size=INT | Размер сектора шифрования (по умолчанию: 512 байт) |
--serialize-memory-hard-pbkdf | Использовать глобальную блокировку для PBKDF (решение проблемы OOM) |
--shared | Разделение устройства с другим сегментом |
-b, --size=SECTORS | Размер устройства |
-p, --skip=SECTORS | Пропустить указанное количество секторов данных |
--subsystem=STRING | Метка подсистемы для LUKS2 устройства |
--tcrypt-backup | Использовать резервный (вторичный) заголовок TCRYPT |
--tcrypt-hidden | Использовать скрытый заголовок TCRYPT |
--tcrypt-system | Устройство является системным TCRYPT-диском |
--test-args | Проверка аргументов без выполнения |
--test-passphrase | Проверка пароля без активации устройства |
-t, --timeout=secs | Тайм-аут для интерактивного ввода пароля (в секундах) |
--token-id=INT | Номер токена (по умолчанию: любой) |
--token-only | Не запрашивать пароль, если активация токеном не удалась |
--token-type=STRING | Тип токена для активации LUKS2 |
-T, --tries=INT | Количество попыток ввода пароля |
-M, --type=STRING | Тип метаданных устройства: luks, luks1, luks2, plain, loopaes, tcrypt, bitlk |
--unbound | Создать или вывести необвязанное (без данных) ключевое хранилище LUKS2 |
--use-random | Использовать /dev/random для генерации ключа тома |
--use-urandom | Использовать /dev/urandom для генерации ключа тома |
--uuid=STRING | UUID для использования устройства |
--veracrypt | Сканировать также устройства, совместимые с VeraCrypt |
--veracrypt-pim=INT | Личный множитель итераций для VeraCrypt |
--veracrypt-query-pim | Запрос личного множителя итераций для VeraCrypt |
-v, --verbose | Показывать подробные сообщения об ошибках |
-y, --verify-passphrase | Проверка пароля, запрашивая его дважды |
Также можно использовать псевдонимы старого синтаксиса <действия>:
open: create (plainOpen), luksOpen, loopaesOpen, tcryptOpen, bitlkOpen
close: remove (plainClose), luksClose, loopaesClose, tcryptClose, bitlkClose
Встроенным форматом по умолчанию для метаданных является LUKS2 (для действия luksFormat).
Модуль поддержки внешнего токена LUKS2 скомпилирован.
Путь к модулю поддержки внешнего токена LUKS2: /usr/lib/cryptsetup
.
Встроенные параметры ключа и парольной фразы по умолчанию:
Максимальный размер файла ключа: 8192КБ, Максимальная длина парольной фразы при вводе вручную: 512 (символов)
PBKDF по умолчанию для LUKS1: pbkdf2, Время итерации: 2000 (мс)
PBKDF по умолчанию для LUKS2: argon2id
Время итерации: 2000, Требуемая память: 1048576КБ, Кол-во параллельных нитей: 4
Встроенные параметры шифра по умолчанию:
loop-AES: aes, Ключ: 256 бит
plain: aes-cbc-essiv:sha256, Ключ: 256 бит, хэширование пароля: ripemd160
LUKS: aes-xts-plain64, Ключ: 256 бит, хэширование заголовка LUKS: sha256, RNG: /dev/urandom
LUKS: Размер ключа по умолчанию в режиме XTS (два внутренних ключа) будет удвоен.
Для создания LUKS-зашифрованного устройства следует открыть терминал и ввести:
sudo cryptsetup luksFormat /dev/sdX
Где:
После выполнения команды будет запрошен пароль.
Начиная с версии cryptsetup 2.4.0 это эквивалентно команде:
cryptsetup luksFormat --type luks2 --cipher aes-xts-plain64 --hash sha256 --iter-time 2000 --key-size 256 --pbkdf argon2id --use-urandom --verify-passphrase /dev/sdX
Где значения по умолчанию:
Опции | Значения по умолчанию в Cryptsetup 2.1.0 | Пример | Комментарий |
---|---|---|---|
--cipher -c |
aes-xts-plain64 | aes-xts-plain64 | Начиная с версии 1.6.0, настройки по умолчанию были изменены на шифр AES в режиме XTS. Использование предыдущего значения по умолчанию --cipher aes-cbc-essiv не рекомендуется из-за известных проблем и практических атак на него. |
--key-size -s |
256 (512 for XTS) | 512 | По умолчанию для шифров XTS используется ключ размером 512 бит. Однако следует отметить, что XTS делит предоставленный ключ пополам, поэтому фактически используется AES-256. |
--hash -h |
sha256 | sha512 | Алгоритм хэширования, используемый для получения ключа. Начиная с версии 1.7.0, алгоритм по умолчанию был изменён с sha1 на sha256 «не по соображениям безопасности [а] главным образом для предотвращения проблем совместимости на усиленных системах, где SHA1 уже [начинает] выводиться из обращения». Предыдущий алгоритм по умолчанию, sha1, всё ещё может использоваться для совместимости с более старыми версиями cryptsetup, так как он считается безопасным. |
--iter-time -i |
2000 | 5000 | Количество миллисекунд, затрачиваемых на обработку пароля с использованием PBKDF. В версии 1.7.0 значение по умолчанию было изменено с 1000 на 2000, чтобы «поддерживать достаточно высокое количество итераций PBKDF2 и при этом сделать его приемлемым для пользователей». Этот параметр актуален только для операций LUKS, которые устанавливают или изменяют пароли, таких как luksFormat или luksAddKey. Указание значения 0 выбирает значение по умолчанию, заданное при компиляции. |
--use-urandom | --use-urandom | --use-random | Выбирает, какой генератор случайных чисел использовать. Следует обратить внимание, что блокирующий пул /dev/random был удалён. Таким образом, флаг --use-random теперь эквивалентен --use-urandom. |
--verify-passphrase -y |
Yes | - | Включено по умолчанию для команд luksFormat и luksAddKey |
--sector-size | 512 or 4096 (device dependent) | 4096 | Устанавливает размер сектора в байтах для использования с шифрованием диска. По умолчанию используется размер 4096 байт для блочных устройств, которые сообщают о себе как 4Kn или 512e, и 512 байт для тех, которые сообщают о себе как 512n. Увеличение размера сектора с 512 байт до 4096 байт может обеспечить лучшую производительность на большинстве современных устройств хранения данных. |
Свойства функций и опций LUKS описаны в спецификациях LUKS1 (pdf) и LUKS2 (pdf).
Для проверки результатов следует выполнить команду:
sudo cryptsetup luksDump устройство
Дамп отображает не только информацию о заголовке шифра, но и слоты ключей, используемые для раздела LUKS.
Пример (зашифрованный корневой раздел с /dev/sda1использованием шифра AES по умолчанию в режиме XTS с 256-битным шифрованием):
sudo cryptsetup luksFormat -s 512 /dev/sda1
При создании нового зашифрованного раздела LUKS, ключевой файл может быть ассоциирован с разделом при его создании с помощью команды:
sudo cryptsetup luksFormat device /path/to/mykeyfile
Процесс разблокировки сопоставит разделы с новым именем устройства спользуя модуль device mapper. Это сообщает ядру, что устройство на самом деле является зашифрованным, и к нему следует обратиться через LUKS с использованием /dev/mapper/dm_name, чтобы избежать перезаписи зашифрованных данных.
Для защиты от случайной перезаписи следует ознакомится с возможностями резервного копирования криптозаголовка после завершения настройки.
Для открытия зашифрованного раздела LUKS следует открыть терминал и выполнить:
cryptsetup open device dm_name
После выполнения команды будет предложено ввести пароль для разблокировки раздела.
Обычно имя устройства, отображенное через device mapper, описывает функцию монтируемого раздела. Например, следующая команда разблокирует корневой раздел LUKS /dev/sda1 и отобразит его как устройство с именем root:
cryptsetup open /dev/sda1 root
После открытия устройство корневого раздела будет иметь адрес /dev/mapper/root вместо адреса раздела (например, /dev/sda1).
Для настройки LVM поверх слоя шифрования, файл устройства для расшифрованной группы томов будет иметь имя, похожее на /dev/mapper/root вместо /dev/sda1. Затем LVM присваивает дополнительные имена всем созданным логическим томам, например, /dev/lvmpool/root и /dev/lvmpool/swap.
Чтобы записать зашифрованные данные на раздел, необходимо обращаться к нему через имя, назначенное устройству. Первым шагом для доступа обычно является создание файловой системы. Например:
mkfs.ext4 /dev/mapper/root
Устройство /dev/mapper/root затем можно монтировать как любой другой раздел.
Чтобы закрыть контейнер LUKS, отмонтируйте раздел и выполните:
cryptsetup close root
Установить можно отдельным модулем или пакетом:
Для установки следует воспользоваться утилитой "Установка и удаление программ".
Модуль, необходимый для установки:
Внимание! Данный системный модуль может быть уже установлен.
Для установки следует воспользоваться утилитой "Установка и удаление программ".
Пакет, необходимый для установки:
Внимание! Если система загружена в режиме полного сохранения, то внесенные изменения в систему будут сохранены после перезагрузки.
Если режим загрузки другой, то рекомендуется воспользоваться утилитой "Сохранение изменений" до перезагрузки системы.