Назад | Перейти на главную страницу

Заголовок LUKS - загадочно пропало 30 КБ

У меня есть диск, содержащий (только) зашифрованный том LUKS. Это было создано на голом диске без таблицы разделов с помощью cryptsetup v.1.6.1. После разблокировки я могу проверить размер расшифрованного тома, сравнить его со всем диском и увидеть, что разница составляет ровно 2 МБ. С другой стороны, когда я создаю резервную копию заголовка, используя:

cryptsetup luksHeaderBackup /dev/sda --header-backup-file <filename>

Я получаю файл размером на 30 КБ меньше 2 МБ. Используя dd для выгрузки первых 2 МБ диска и сравнивая его с резервным заголовком, я вижу, что 30 КБ отсутствуют с конца и содержат все 0. Как ни странно, у меня есть резервные копии различных (других) заголовков LUKS с использованием cryptsetup 1.4.1 и 1.4.3, и все они составляют ровно 2 МБ. Это соответствует раздел 6.2 FAQ по cryptsetup, в котором говорится, что размер заголовка должен быть 2 МБ.

Может ли кто-нибудь помочь мне понять, что это за 30 КБ? (Я хотел бы перезаписать заголовок случайными данными, поскольку я поместил его на отдельное устройство, и хочу убедиться, что знаю, что делаю.)

Также, в качестве более общей проблемы, существует ли более простой / автоматический способ, возможно, используя вывод luksDump, чтобы точно сказать, где находится заголовок на диске? (И смещение, и размер.) Я прочитал FAQ по cryptsetup, но результат определенно не просто выпадает.

И есть ли лучший способ перезаписать заголовок, чем использование dd?

cryptsetup luksHeaderRestore <file_with_random_data>

не работает, потому что cryptsetup выполняет некоторые идиотские проверки, чтобы увидеть, совпадает ли какой-либо из уже имеющихся заголовков по размеру и смещению главного ключа.

Оказывается, 30 КБ - это неиспользуемое пространство, но данные заголовка выровнены по 1 МБ. Все 2 МБ были включены при резервном копировании с помощью более ранних версий cryptsetup, но в более поздних версиях это не учитывается.

Используя вывод payloadOffset из cryptsetup luksDump (количество секторов 512B), можно увидеть смещение, где начинается зашифрованный том; так что вы можете вручную стереть до этого места. Или, начиная с cryptsetup 1.6.4, вы можете использовать cryptsetup luksErase чтобы перезаписать все активные слоты. Оставшийся видимый заголовок с метаданными - это первый 4 КБ диска, поэтому его придется стереть вручную.

[Спасибо Милану, одному из разработчиков cryptsetup, в cryptlab!]