Как я могу изменить хеш-спецификацию и время существования существующего устройства LUKS dm-crypt?
Ясно, что я могу передать параметры, если я создаю новое устройство, например что-то вроде этого:
sudo cryptsetup luksFormat --cipher aes-cbc-essiv:sha256 --key-size 256 --iter-time 2100 --hash sha512 /dev/loop0
Но если устройство уже существует, то как я могу изменить, например , sha256
чтобы sha1
или изменить время итерации без «уничтожения» устройства. (Очевидно, вам придется повторно ввести пароль, поскольку будет сгенерирован новый хэш.)
hash-spec
или «iter-time
настройки» более конкретны.cryptsetup-reencrypt
. Список маркеров напоминает то, что вы пытаетесь сделать со мной: «изменить произвольные параметры шифрования».Ответы:
Каждый ключевой слот имеет свое время итерации. Если вы хотите изменить количество итераций, создайте новый слот с той же парольной фразой и новым количеством итераций, а затем удалите старый слот.
Я думаю, что алгоритм хеширования не может быть настроен для каждого слота, это всегда PBKDF2 с глобально выбранной хэш-функцией.
Последние версии cryptsetup включают в себя инструмент
cryptsetup-reencrypt
, который может изменять основной ключ шифрования и все параметры, но он считается экспериментальным (и он перешифрует все устройство, даже если в этом нет необходимости просто изменять функцию получения ключа на основе пароля) ,источник
Если все, что вы хотите изменить, - это хеш, нет необходимости повторно шифровать. Вам все еще нужно создать новый заголовок LUKS. Тот же шифр, тот же главный ключ, то же смещение, другой хеш.
Вы можете попробовать это для себя. Сначала мы настроили устройство LUKS со стандартными настройками и количеством паршивых итэров:
На данный момент у нас есть устройство LUKS с зашифрованными данными «Hello World I am LUKS». В частности это выглядит так:
Как видите, паршивая итерация считается стандартным хэшем sha1.
Чтобы переключить это на большое число итераций и хэш sha512, без повторного шифрования нам нужен новый заголовок LUKS, использующий тот же главный ключ, тот же шифр и то же смещение полезной нагрузки.
Получение мастер-ключа: (Предупреждение: в этом примере ваш мастер-ключ просачивается в общедоступный файл, в список процессов, а также в историю вашей оболочки. На всякий случай делайте это в ОЗУ / на Live CD / как угодно)
Создайте новый заголовок LUKS, используя этот ключ: (возможен сбой - сначала сделайте резервную копию вашего старого заголовка LUKS!)
И вот как это выглядит:
Теперь у нас это есть. Тот же шифр, смещение [если они различаются, вы должны указать их вместе с luksFormat], новый хеш и правильное количество итераций.
Но содержание все еще там?
Вот и ты.
источник
cryptsetup-reencrypt --keep-key --hash sha512
делает то же самое.