dm-crypt+luks: Могу ли я иметь отдельный заголовок, не сохраняя его на зашифрованном устройстве luks?
Я хотел бы зашифровать свой внешний жесткий диск с помощью dm-crypt+luks, но я не удовлетворен всей информацией, которую заголовок LUKS предоставляет в виде открытого текста.
Поэтому я хотел бы, чтобы заголовок LUKS и зашифрованные данные были отделены друг от друга:
- Храните раздел LUKS (CRYPT) без заголовка на внешнем диске.
- Когда я захочу получить доступ к зашифрованным данным, объединить заголовок и CRYPT и нормально смонтировать раздел luks.
Я уже знаю, как я мог бы достичь этого вручную:
- Резервное копирование заголовка LUKS с дд.
- Перезаписать заголовок LUKS на внешнем диске.
- Всякий раз, когда раздел LUKS должен быть смонтирован, запишите его обратно и смонтируйте как обычно.
- Размонтируйте и перезапишите заголовок снова, когда закончите.
Это не очень оптимально, поскольку заголовки Sectors в luks будут перезаписываться при каждом подключении диска, и я опасаюсь, что эти сектора наверняка испортятся.
Другой подход заключается в том, что заголовочный файл и зашифрованный раздел luks объединяются в одно виртуальное устройство linux, которое можно монтировать обычным образом.
Под "объединением в одно виртуальное устройство" я подразумеваю, что заголовок фактически не записывается обратно в раздел luks, но система воспринимает его таким образом. Заголовок все еще остается на моей USB-флешке.
Моя единственная проблема в том, что я не знаю, как создать такое виртуальное устройство.
Любая помощь будет оценена.
1 ответ
Вы можете просто использовать LUKS в режиме отдельного заголовка:
cryptsetup luksFormat /dev/sda4 --header ~/lukshdr --align-payload 0 --cipher twofish
cryptsetup open /dev/sda4 --header ~/lukshdr mycrypt
cryptsetup luksSuspend mycrypt --header ~/lukshdr
cryptsetup luksResume mycrypt --header ~/lukshdr
Вы можете поместить заголовочный файл куда угодно, включая блочное устройство.
~/lukshdr
должен быть не менее 1049600 байт для luksFormat
работать:
dd if=/dev/zero bs=1049600 count=1 > ~/lukshdr
Если вы бежите lsblk -b
, вы увидите, что размер отображаемого устройства точно равен размеру устройства LUKS; нет места, где могли бы скрываться заголовки или метаданные.
$ lsblk -b
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 80026361856 0 disk
├─sda1 8:1 0 254803968 0 part /boot
├─sda2 8:2 0 5999951872 0 part [SWAP]
├─sda3 8:3 0 19999490048 0 part /
└─sda4 8:4 0 53771067392 0 part
└─mycrypt 254:0 0 53771067392 0 crypt /tmp/mnt
Фактически, пока базовые шифры не будут взломаны, устройство LUKS будет выглядеть как случайные данные для всех, у кого нет заголовочного файла.