Заголовок LUKS - 30 КБ таинственным образом исчезли

Заголовок LUKS - 30 КБ таинственным образом исчезли

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

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

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

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

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

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

cryptsetup luksHeaderRestore <file_with_random_data>

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

решение1

Оказывается, 30k — это неиспользуемое пространство, но данные заголовка были выровнены до 1MB. Все 2MB были включены при резервном копировании с более ранними версиями cryptsetup, но более поздние версии их исключили.

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

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

Связанный контент