Luks

LUKS Header - 30kB 神秘失踪

  • January 8, 2016

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

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

我得到一個小於 2MB 的 30kB 文件。使用 dd 轉儲磁碟的前 2MB 並將其與備份的標頭進行比較,我看到最後缺少 30KB 並且包含所有 0。奇怪的是,我使用 cryptsetup 1.4.1 和 1.4.3 備份了各種(其他)LUKS 標頭,它們都是 2MB。這與cryptsetup FAQ 的第 6.2 節一致,即標頭大小應為 2MB。

有人可以幫我理解這 30KB 是什麼嗎?(我想用隨機數據覆蓋標題,因為我已經把它放在一個單獨的設備上,並想確保我知道我在做什麼。)

同樣作為一個更普遍的問題,是否有一種更簡單/自動化的方法,也許使用 luksDump 的輸出來準確判斷標頭在磁碟上的位置?(包括偏移量和大小。)我已經閱讀了 cryptsetup 常見問題解答,但結果肯定不僅僅是退出。

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

cryptsetup luksHeaderRestore <file_with_random_data>

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

原來 30k 是未使用的空間,但標頭數據已對齊為 1MB。使用早期版本的 cryptsetup 備份時包含了整個 2MB,但後來的版本將其排除在外。

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

$$ Thanks to Milan, one of the cryptsetup dev’s, at cryptlab! $$

引用自:https://serverfault.com/questions/728341