Encryption

Microsoft 的 BitLocker 恢復程式碼如何工作?

  • October 13, 2020

我不信任 Microsoft BitLocker,因為它是封閉原始碼,因此人們無法對其進行審核。但現在我真的很感興趣它的恢復程式碼是如何工作的。據我所知,加密數據在不知道密鑰的情況下無法解密,但 BitLocker 會破解它。

所以,我有三個問題想問:

  • 恢復程式碼如何工作?
  • 如何

以數學方式在任何加密算法上實現恢復程式碼功能?

  • 是否會成為黑客的後門/漏洞?

據我所知,加密數據在不知道密鑰的情況下無法解密,但 BitLocker 會破解它。

該描述表明您可能在那裡誤解了某些內容。Bitlocker 沒有*break任何作用,因為 Microsoft BitLocker 使用恢復密鑰(再次閱讀:“密鑰”),而不是程式碼!用於恢復的相關程式碼與 Bitlocker 在您使用個人密鑰時也使用的常用解密程式碼非常相似。那裡沒有魔法或後門。有關詳細資訊,您可能需要查看“什麼是 BitLocker 恢復密鑰?”“BitLocker 恢復密鑰:常見問題解答”以及 Bitlocker 文件的連結頁面。

這三個子問題部分過於寬泛,部分無法完全回答,原因我很樂意描述,同時試圖為您提供一些有用的提示……

  • 恢復程式碼如何工作?

當你寫的時候你自己已經說過了*I don't trust Microsoft BitLocker because it is closed source, which makes it so people can't audit it.*在問這樣的問題時,要記住“封閉源”這個詞很重要。長話短說:我不會為你破壞任何智慧財產權,而且我很確定微軟不會非常願意為任何人提供任何合法權利,除非這對他們有意義。

但是,您可以在自己的電腦上很好地反編譯二進製文件,以親自檢查其內部工作。這樣做也可以讓您參與一些個人審計工作。然而,您這樣做的成功肯定取決於您的反編譯能力以及您閱讀和理解反編譯器傾向於吐出的最小 ASM 原始碼的能力。

  • 如何以數學方式在任何加密算法上實現恢復程式碼功能?

這個問題是基於您對 Microsoft Bitlocker 使用恢復程式碼“破壞”事物的誤解。如上所述:這不是它的工作方式。

Microsoft BitLocker 使用恢復密鑰- 這是一個特殊密鑰,您可以在您第一次在您加密的每個驅動器上打開 Bitlocker 驅動器加密時創建它。該恢復密鑰使 Bitlocker 能夠在您忘記常用(非恢復)密鑰時為您恢復內容……如果沒有密鑰,您將無處可去 – 這就是為什麼 Microsoft 強調以下事實的原因:您應該通過列印恢復密鑰、將其保存在可移動媒體上或將其作為文件保存在安全的地方來儲存它。

就我個人而言,我建議不要在用於託管/儲存加密數據的同一台電腦上儲存密鑰之類的秘密。然而,您的安全期望可能與我的不同。(稍後我回答您的第三個子問題時,將詳細介紹相關的潛在安全影響。)

Bitlocker 使用該恢復密鑰為您恢復數據的“程式碼”與您使用常用(非恢復)密鑰解密時使用的程式碼幾乎相同。區別僅在於檢測密鑰類型(正常或恢復)並相應地處理/解密事物。那裡沒有魔法或隱藏的獨角獸……Bitlocker 絕對不是breaking使用恢復密鑰恢復加密驅動器時的任何加密。可以把它想像成 Bitlocker 像往常一樣使用正常解密程式碼,只是密鑰類型不同……但“恢復密鑰”只不過是正常密鑰。在最壞的情況下解鎖數據是一個秘密;例如:你試圖記住你的鑰匙,但第二天早上醒來時你發現你忘記了它。這就是您需要恢復密鑰的地方,您希望在創建它時將其儲存在安全的地方 - 這是您第一次加密相關磁碟/數據的時候。

那麼,無論加密算法如何,您都可以實現這樣的恢復功能嗎?一般來說,是的。請注意,這更像是“軟體功能”而不是算法。因此,詢問一個*mathematical way*這樣做並沒有真正的意義,因為它太寬泛,幾乎不可能涵蓋所有單獨的算法。並且描述如何圍繞加密算法核心編寫安全包裝器並不能真正用數學來描述,因為它更像是一種程序化的東西,而不是“一個可以用數學描述的公式來統治它們”。如果算法可以基於密鑰/密鑰加密和解密數據,那麼沒有什麼能阻止程序員圍繞加密算法核心包裝一個功能,為使用者提供使用恢復密鑰來解密事物的選項。(如有疑問:我假設這樣的程序員可以訪問加密算法原始碼,或者至少 API/SDK 能夠這樣做……同時忽略了一些可能不是這種情況的罕見的、相當邊緣的情況,但仍然可以實現。)

當然,可以從密碼學的角度解釋和描述使兩個不同的密鑰解密相同的數據,因為有多種選擇/方案可以這樣做。我什至不會在這裡開始列出它們,因為 Crypto.SE 已經有幾個 Q&A 來處理它。每個 Crypto.SE 頁面右上角的搜尋框是幫助您找到它們的完美工具。

  • 是否會成為黑客的後門/漏洞?

恢復密鑰和相關恢復功能要求您在解密相關驅動器之前輸入此類機密,這很難提供攻擊媒介,除非從安全形度來看,您真的把事情搞砸了。這就是 Microsoft 向您作為使用者提供大量安全建議的原因之一。

考慮到這一點,我不得不說,如果情況允許,任何事情都是“可能的”。因此,超越顯而易見的思考會使您的問題有點過於寬泛,因為您不可能期望任何人來處理您可能會或可能不會考慮的所有潛在場景、情況和潛在安全故障。

為了避免這種廣泛性,我將限制我對這個子問題的回答,說當我們假設解密程式碼不包含後門和/或漏洞時,使用恢復密鑰的恢復過程幾乎不會造成任何風險因為它主要使用程式碼的相同部分,Bitlocker 在使用常用(非恢復)密鑰時也用於常用解密功能。

“黑客”是否可以訪問您的加密驅動器以及相關密鑰和/或恢復密鑰最終需要您評估。只要您保證您的密鑰安全並正確使用 Bitlocker(這兩件事都在微軟提供的相關手冊/文件中有充分的理由進行了描述),您應該沒問題。

請注意,Bitlocker 文件明確指出並建議不要將密鑰儲存在託管加密驅動器/數據的同一台機器上。如果您決定將密鑰和(加密)數據儲存在同一個地方,那麼您在邏輯上必須承擔所有相關風險。含義:如果攻擊者可以訪問您的密鑰儲存(您可能選擇的任何密鑰儲存選項),您肯定會邀請該攻擊者遍歷所有加密數據……如果(且僅)該黑客也是能夠訪問這些密鑰所屬的加密驅動器。

假設一個普通的、非國家的對手並假設你已經遵循了 Bitlocker 手冊中提供的大量建議,這不太可能發生。

為了使這種攻擊起作用,攻擊者必須繞過諸如 Microsoft Firewall 等之類的東西——像您這樣具有安全意識的人肯定會為您的系統保護進行更新、正確配置和啟動。攻擊者無法讀取任何驅動器(加密或未加密)的任何內容,除非他們繞過這些障礙(防火牆等)或當他們可以物理訪問您的驅動器時。

此外,攻擊者還必須訪問或了解您的密鑰。再重複一遍:如果您遵循 Bitlocker 文件並包含建議,則這些密鑰將不會儲存在同一電腦系統上,因此無法在保存加密驅動器的同一電腦系統上找到。這對攻擊者來說很困難,因為攻擊者要麼需要繞過其他障礙(例如:其他系統的防火牆等),要麼能夠獲得對密鑰的物理訪問權限。

當然,如果發生諸如(例如)竊賊偶然發現您的加密驅動器以及您列印出來但隨後整齊地放入電腦旁邊的桌面抽屜中供所有人查找的事件,事情將會對您不利,或者(例如)您將密鑰儲存在同一網路內的另一個系統上,但攻擊者可以在成功破壞整個網路後訪問加密驅動器以及密鑰儲存。如果您考慮一下,一些人為邏輯可以防止大多數此類風險……而其餘的可以通過閱讀 Microsoft Bitlocker 手冊並遵循所包含的建議來學習。

我認為不用說,如果您將系統和/或網路完全打開(閱讀:處於不安全狀態),並且如果您另外忽略手冊​​/文件,至少讓您的一個鑰匙在觸手可及的範圍內飛來飛去對於潛在的攻擊者,您的數據可以在任何能夠訪問加密驅動器和相關密鑰的人附近輕鬆解密。

總結一下:

  • Bitlocker 沒有,所以通過使用一些魔法來decrypted without knowing the key假設任何事情都是錯誤的。Bitlocker 使用恢復密鑰BitLocker breaks``recovery code通過相關的恢復功能。每個基於恢復密鑰提供相似功能的軟體都以某種相似的方式工作——將附加功能包裝在加密算法核心周圍。Bitlocker 不包含通過破壞自己的加密來使您的密鑰失效的魔法醬……它只是一種基於恢復/備份密鑰的恢復功能。如果沒有密鑰,Bitlocker 將不願意也無法解密任何內容。微軟究竟是如​​何實現的,只有在訪問和研究原始碼時才能詳細回答。即使這可用,描述細節也會打破理智的限制,因為它可能需要一本小書而不是一個答案來討論每個相關函式和變數的每個細節。
  • 與每次加密一樣:如果您將加密的數據和密鑰儲存在同一個系統上 - 您的數據安全幾乎可以被認為是無效的。任何有權訪問(或能夠訪問)加密數據以及相關密鑰的人都可以訪問和解密您的數據。這就是為什麼密碼學家、資訊安全人員和 Bitlocker 文件本身建議永遠不要將加密數據及其相關秘密/密鑰儲存在同一位置的原因之一。只要您將密鑰儲存在一個單獨的、安全的地方(至少不在同一台機器上),從而使潛在的攻擊者無法接觸到密鑰,潛在“黑客”的成功率以及攻擊者讀取您解密的能力數據將接近或等於對加密驅動器進行暴力攻擊的成功率。

實際上,您可以將整個事情歸結為一個簡單的問題:“保護您的密鑰是您安全的關鍵。” ——或者,別人怎麼知道的:“永遠保守你的秘密。”

  • 要了解與密鑰儲存等相關的 Microsoft Bitlocker 安全建議,並清楚地了解 Microsoft Bitlocker(包括加密驅動器的恢復)的實際工作原理,您可能需要開始閱讀手冊。我在這個答案開頭提供的兩個連結是一個很好的切入點。

為方便起見,我將再次簡單提及這些連結:“什麼是 BitLocker 恢復密鑰?”“BitLocker 恢復密鑰:常見問題解答”。當您點擊這些連結時,您會發現一本完整的手冊,它肯定能夠更詳細地解釋所有這些。

編輯

由於評論區顯示密鑰以及哪個密鑰加密/解密什麼……

Bitlocker 可以使用這些密鑰中的每一個(“正常”密鑰和“恢復”密鑰)。實際上它是這樣的:您提供一個密鑰,該密鑰將用於構造密鑰保護密鑰(使用密鑰派生函式 - KDF)。KDF 的輸出用於解密卷主密鑰 (VMK)。然後使用 VMK 解密“全卷加密密鑰”(FVEK),這是實際加密/解密單個磁碟/卷的密鑰。

因此,請與評論中使用的符號保持一致:

$$ \text{pin/recovery key} \rightarrow KDF \rightarrow VMK \rightarrow FVEK \rightarrow \text{volume en/decryption} $$

引用自:https://crypto.stackexchange.com/questions/34480