LUKS 標題 - 30kB 神秘失踪

LUKS 標題 - 30kB 神秘失踪

我有一個磁碟(僅)包含 LUKS 加密磁碟區。這是使用 cryptsetup v.1.6.1 在沒有分區表的裸碟機上建立的。解鎖後,我可以檢查解密磁碟區的大小,將其與整個磁碟進行比較,發現差異正好是 2MB。另一方面,當我備份標頭時,使用:

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

我得到的檔案大小為 30kB,小於 2MB。使用 dd 轉儲磁碟的前 2MB 並將其與備份的標頭進行比較,我發現末尾缺少 30KB 並且包含全 0。奇怪的是,我使用 cryptsetup 1.4.1 和 1.4.3 備份了各種(其他)LUKS 標頭,而且它們都是 2MB。這與cryptsetup 常見問題解答第 6.2 節,表示標頭大小應為 2MB。

有人能幫我理解這 30KB 是什麼嗎? (我想用隨機數據覆蓋標頭,因為我已將其放在單獨的設備上,並希望確保我知道我在做什麼。)

另外,作為一個更普遍的問題,是否有一種更簡單/自動化的方法,也許使用 luksDump 的輸出來準確告知標頭位於磁碟上的位置? (偏移量和大小。)我已經閱讀了 cryptsetup FAQ,但結果肯定不會直接消失。

並且,有沒有比使用 dd 更好的方法來覆蓋標頭?

cryptsetup luksHeaderRestore <file_with_random_data>

不起作用,因為 cryptsetup 會進行一些白痴檢查,以查看是否有任何已存在的標頭與主密鑰大小和偏移量匹配。

答案1

事實證明,30k 是未使用的空間,但標頭資料已對齊到 1MB。備份早期版本的 cryptsetup 時包含了整個 2MB,但後來的版本將其省略。

透過使用(多個512B扇區)的payloadOffset輸出cryptsetup luksDump,可以看到加密磁碟區開始的偏移量;所以你可以手動擦拭到那裡。或者,從 cryptsetup 1.6.4 開始,您可以使用cryptsetup luksErase覆蓋所有活動密鑰槽。剩餘的帶有元資料的可見標頭是磁碟的前 4KB,因此必須手動擦除。

[感謝 cryptlab 的 cryptsetup 開發人員之一 Milan!

相關內容