Debian 安裝程序更改了先前加密卷的密碼
我已經對我的問題進行了一些研究(見下文),這與“完成交易”一樣好,但我仍然想向這個知識淵博的社區提出我的問題。
問題的簡短版本:在 partman(Debian 安裝程序的磁碟分區程序)中,以前 dm-crypt/LUKS 加密卷的密碼被錯誤地更改(或添加)了。此卷上的數據未標記為刪除。在那之後我取消了安裝。後來在手動“解密”此卷後發現只有“新”密碼才能解密該卷,但無法讀取數據(即未找到文件系統和文件)…
我想知道在改回舊密碼後是否能夠正確解密卷的內容。
以前的研究:上述問題已送出到 debian-boot 郵件列表,在那裡我收到了以下(非常清楚)的答案:
我認為除非您備份了 LUKS 標頭,否則數據將無法恢復。LUKS 的工作方式是,數據不是直接使用密碼片語加密,而是使用加密為一組密碼片語的密鑰。如果您純粹通過安裝程序的 UI 工作,您將覆蓋您的 LUKS 標頭,因此將無法再次解密數據,因為密鑰材料失去。LUKS 標頭在磁碟上的位置始終在同一個位置。
數據擦除實際上只是用零覆蓋現有數據,我知道這很令人困惑。從技術上講,由於標頭被覆蓋,數據已經被擦除,但有些人希望在將系統部署到生產環境之前確保將隨機數據(或在非加密磁碟為零的情況下)寫入磁碟。
唉,我沒有這個卷的 LUKS 頭的備份。正如我上面所說,其目的只是掛載先前加密的捲,而不是更改任何內容(因此,遺憾的是,我沒有採取適當的預防措施)。
問題:有沒有辦法使用(已知的)原始密碼來(重新)生成原始 LUKS 標頭,對此捲進行加密,或者這些數據是否永久失去?
感謝您的考慮和您的時間。
沒有任何辦法可以恢復。(*)
使用 LUKS,您用於打開加密的密碼和實際用於加密的主密鑰彼此完全無關。
基本上你的密碼解密一個完全隨機的密鑰,這個隨機密鑰儲存在 LUKS 標頭中。完全失去 LUKS 標頭(或什至更改單個密鑰材料)會使您無法獲得用於卷的主密鑰。
這也是為什麼使用 LUKS,您可以擁有 8 個不同的密碼,並且可以隨時更改每個密碼,而無需重新加密所有數據。無論您多久更改一次 LUKS 密碼,主密鑰都保持不變。
主密鑰恢復顯然不是 LUKS 概念的一部分,實際上恰恰相反;LUKS 採取了許多措施來防止您(或任何人)從(部分)覆蓋的 LUKS 標頭中恢復主密鑰。LUKS 文件甚至建議您不要備份標頭,因為您無法控制的備份標頭意味著失去聲明舊密碼無效的能力。因為舊的密碼仍然會在舊的標頭中儲存和使用。
(*) 此規則的唯一例外是容器仍處於打開狀態。對於活動的 crypt 映射,可能能夠通過 獲取主密鑰
dmsetup table --showkeys
。因此,如果您在正在執行的系統中殺死了您的 LUKS 標頭並立即意識到,您可以使用已知的主密鑰創建一個新的 LUKS 標頭。如果沒有主密鑰,您將無法繼續,也無法暴力破解主密鑰,這首先是加密的重點。好吧,你可以在無限的 CPU 能力和/或時間的情況下做到這一點,所以如果你想給你的後代留下一個謎題,請保留一份加密數據的副本並將其傳遞… ;)