為什麼 FBI 要求 Apple 幫助解密 iPhone?
目前 FBI 試圖讓蘋果協助解密 iPhone 的辯論讓我想知道:
通常,在打開 iPhone 時,所有內容都使用 4 位密碼(或者實際上是從具有強 KDF 的 PIN 派生的密鑰,但這不是這裡的重點)進行解密。Apple 保護的關鍵要素是一種鎖定機制,可在 10 次(左右)失敗嘗試時鎖定或銷毀數據。
是什麼阻止了 FBI 從設備中讀取所有數據(包括可能在晶片或其他任何東西中編碼的任何硬編碼數據)並在他們自己的環境中執行相同的解密?(……除了自毀或鎖定功能外,它與 Apple 的實現相同。)
暴力破解 4 位 PIN 碼是小菜一碟。鎖定功能對於解密過程不是必需的。
iOS 的保護真的只是通過默默無聞的安全性,還是我錯過了什麼?
(當然,Android 不會有任何不同,我會說所有可以用 4 或 5 位密碼而不是強密碼解密的東西從根本上說是不安全的)。
我會嘗試對此進行嘗試。從 Apple 的iOS 安全指南中,我們了解到
文件系統中所有文件的元數據都使用隨機密鑰加密,該密鑰在首次安裝 iOS 或使用者擦除設備時創建。文件系統密鑰儲存在 Effaceable Storage 中。由於它儲存在設備上,因此該密鑰不用於維護數據的機密性;
和
文件的內容使用每個文件的密鑰進行加密,該密鑰使用類密鑰包裝並儲存在文件的元數據中,而文件的元數據又使用文件系統密鑰進行加密。類密鑰受硬體 UID 保護,對於某些類,還受使用者密碼保護。這種層次結構提供了靈活性和性能。例如,更改文件的類只需要重新包裝其每個文件的密鑰,而更改密碼只需重新包裝類密鑰。
換句話說:通過實際擁有設備,您應該能夠輕鬆獲取文件系統密鑰(取出 SSD 並從中讀取密鑰)。讓我們呼叫文件系統密鑰 $ K_{FS} $ . 此外,每個文件 $ f $ 使用每個文件密鑰加密 $ K_f $ . 要得到 $ K_f $ ,我們需要文件系統密鑰( $ K_{FS} $ ) 和“類鍵”,我們稱之為類鍵 $ K_C $ .
所以,有一個功能 $ F_1 $ 給定文件,文件系統密鑰,類密鑰為您提供文件密鑰。 $ K_f $ = $ F_1(f, K_{FS}, K_C) $ . 這意味著聯邦調查局要解密特定文件,他們需要:
- $ f $ ✅
- $ K_{FS} $ ✅
- $ K_C $ ❌
所以他們沒有 $ K_C $ AFAIK。對了,你通常是怎麼得到那個班級鑰匙的?該文件說,它受“硬體UID”保護( $ K_{UID} $ ) 和(有時)使用者的密碼 $ K_P $ . 唉,還有一個功能 $ F_2(K_{UID}, K_P) $ 給定硬體 UID 和(有時)密碼會返回類密鑰。假設 FBI 可以很容易地暴力破解密碼( $ K_P $ ),他們只需要硬體 UID ( $ K_{UID} $ ) 但不幸的是,對於他們來說,這顯然是放在矽片中的,因此難以訪問:
設備的唯一 ID (UID) 和設備組 ID (GID) 是在製造過程中融合 (UID) 或編譯 (GID) 到應用處理器和 Secure Enclave 中的 AES 256 位密鑰。沒有軟體或韌體可以直接讀取它們;他們只能看到使用 UID 或 GID 作為密鑰在矽中實現的專用 AES 引擎執行的加密或解密操作的結果。此外,安全飛地的 UID 和 GID 只能由專用於安全飛地的 AES 引擎使用。UID 對每台設備都是唯一的,Apple 或其任何供應商都不會記錄。GID 對一類設備中的所有處理器都是通用的(例如,所有使用 Apple A8 處理器的設備),並且用於非安全關鍵任務,例如在安裝和恢復期間傳遞系統軟體時。將這些密鑰集成到晶片中有助於防止它們被篡改或繞過,或在 AES 引擎之外訪問。UID 和 GID 也不能通過 JTAG 或其他調試介面獲得。
UID 允許數據以加密方式綁定到特定設備。例如,保護文件系統的密鑰層次結構包括 UID,因此如果記憶體晶片從一個設備物理移動到另一個設備,則文件將無法訪問。UID 與設備上的任何其他標識符無關。
所以,如果我沒看錯,函式 $ F_2 $ 似乎是在硬體中實現的,並且可以作為 $ F_2’(K_P) $ . 注意 $ F_2’ $ 只有一個參數是使用者的密碼。換句話說 $ F_2’(K_P) = F_2(K_{UID}, K_P) $ ,所以硬體 UID 是由硬體自動提供的。在非 Secure Enclave iPhone(如 5C)中,您可能可以使用自定義 iOS 版本強行使用它 $ F_2’ $ 隨心所欲。在普通的 iOS 中,大概只有鎖屏可以執行 $ F_2’ $ 並阻止您在不增加延遲(以及潛在的最終設備擦除)的情況下這樣做。使用 Secure Enclave iPhone(5S、6 (+)、6S (+)),安全飛地可防止您重複執行此功能。所以連iOS核心都不能執行 $ F_2’ $ 沒有任何延誤。
鑑於有問題的 iPhone 似乎是 5C,FBI 似乎只需要 Apple 提供的特殊版本的 iOS,它允許他們使用 $ F_2’ $ 使用自動提供的密碼反复無延遲。這應該給 FBI 10000(假設是 4 位密碼)或 1000000(假設是 6 位密碼)“類密鑰”。然後他們可以嘗試每個類鍵,其中一個會給他們數據。
這與這個特定問題無關,但我認為它仍然很有趣:安全飛地是否改變了這裡的任何東西?乍一看:顯然是的,因為新的 iOS 版本還不夠好,因為 Secure Enclave 會阻止您執行 $ F_2’ $ 通過暴力破解密碼循環。但是:安全飛地也執行某種韌體,所以這個限制可能會被取消,但更新安全飛地。到目前為止,我還不清楚 Apple 是否可以在不擦除 Secure Enclave 中的所有內容的情況下做到這一點。不同的來源聲稱不同的東西。本文涵蓋了這一點。特別是它引用了John Kelley 的一條推文,他顯然以前在 Apple 的嵌入式安全部門工作。他聲稱
$$ … $$我不知道他們從哪裡得到改變 SPE 韌體會破壞密鑰的想法。SPE FW 只是 iOS 系統部分上的一個簽名 blob
換句話說:即使使用較新的 iPhone,Apple 也可以將特殊韌體部署到 Secure Enclave (SPE),從而允許執行 $ F_2’ $ 聯邦調查局喜歡的頻率。
我希望這有幫助。所有資訊均來自iOS 安全指南和我對它的解釋。
編輯:由於評論我的回答如何回答這個問題,我確實應該更清楚地說明這一點。恕我直言,聯邦調查局詢問蘋果,因為需要執行 $ F_2’ $ 很多時候沒有延遲,所以他們可以暴力破解 iPhone 的程式碼。對於 iPhone 5C,一個新版本的 iOS 應該就足夠了,因為只有作業系統會阻止你這樣做(你沒有程式訪問 $ F_2’ $ 沒有特權)。對於較新的 iPhone,Secure Enclave 顯然可以防止這種情況發生。FBI 無法在沒有此限制的情況下編譯他們自己的、被黑的 iOS 版本,因為 iPhone 只執行由 Apple 簽名的程式碼,而 FBI 確實(可能)沒有 Apple 的簽名密鑰。
如果您知道或認為我誤解了任何內容或有任何錯誤,請發表評論。
加密密鑰不僅僅來自密碼;它還源自直接蝕刻在 CPU 晶片中的許多加密密鑰。這些密鑰不可能在軟體中讀出——只有用它們加密和解密的指令——並且通過檢查硬體故意難以提取。
如果沒有正確的密鑰,您不會暴力破解約 10 位密碼,而是暴力破解 256 位密碼密鑰。即使對於目前地球上最老練的攻擊者來說,這也是不可行的(或者至少是極其困難的)。
甚至法院命令也沒有建議蘋果提取密鑰,以便聯邦調查局可以強制離線密碼。FBI 只是要求蘋果讓他們通過擴展塢連接器輸入 iPhone 密碼,並禁用軟體中實現的錯誤密碼延遲和自動擦除機制。