dm-crypt + luks: Могу ли я иметь отдельный заголовок, не сохраняя его на зашифрованном устройстве luks?

3729
user1861174

Я хотел бы зашифровать свой внешний жесткий диск с помощью dm-crypt + luks, но я не удовлетворен всей информацией, которую заголовок LUKS предоставляет в виде открытого текста.

Поэтому я хотел бы, чтобы заголовок LUKS и зашифрованные данные были отделены друг от друга:

  1. Храните раздел LUKS (CRYPT) без заголовка на внешнем диске.
  2. Когда я захочу получить доступ к зашифрованным данным, объединить заголовок и CRYPT и нормально смонтировать раздел luks.

Я уже знаю, как я мог бы достичь этого вручную:

  1. Резервное копирование заголовка LUKS с дд.
  2. Перезаписать заголовок LUKS на внешнем диске.
  3. Всякий раз, когда раздел LUKS должен быть смонтирован, запишите его обратно и смонтируйте как обычно.
  4. Размонтируйте и перезапишите заголовок снова, когда закончите.

Это не очень оптимально, поскольку заголовки Sectors в заголовке luks будут перезаписываться при каждом подключении диска, и я опасаюсь, что эти сектора наверняка испортятся.


Другой подход заключается в том, что заголовочный файл и зашифрованный раздел luks объединяются в одно виртуальное устройство linux, которое можно монтировать обычным образом.

Под «объединением в одно виртуальное устройство» я подразумеваю, что заголовок фактически не записывается обратно в раздел luks, но система воспринимает его таким образом. Заголовок до сих пор остается на моей USB-флешке.

Моя единственная проблема в том, что я не знаю, как создать такое виртуальное устройство.

Любая помощь будет оценена.

3

1 ответ на вопрос

8
mic_e

You can simply use LUKS in detached-header mode:

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 

You can put the header file wherever you want, including a block device.

~/lukshdr must be at least 1049600 bytes in size for luksFormat to work:

dd if=/dev/zero bs=1049600 count=1 > ~/lukshdr 

If you run lsblk -b, you will see that the size of the mapped device precisely equals the size of the LUKS device; there's no room where any header or metadata might hide.

$ 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 

In fact, as long as the underlying ciphers remain unbroken, the LUKS device will look just like random data to anybody who doesn't have the header file.

Было бы неплохо добавить ссылку, откуда приходит точное число 1049600. mlt 8 лет назад 2
Почему я все еще могу расшифровать раздел без подключенного USB-устройства, содержащего заголовок luks? ChiseledAbs 7 лет назад 0
Заголовок LUKS используется только во время команд `cryptsetup`. При открытии тома ключ загружается из заголовка и сохраняется в памяти ядра. mic_e 7 лет назад 0

Похожие вопросы