開啟 Passcode 的 iOS 設備,數據是硬體加密不可獲取破譯的嗎?

是否意味著,即便設備被拆卸,也不能從快閃記憶體空間中讀取到信息?這個加密的過程具體如何,可以用通俗易懂的話解釋嗎?

&> Data protection is available for devices that offer hardware encryption, including iPhone 3GS and later, all iPad models, and iPod touch (3rd generation and later). Data protection enhances the built-in hardware encryption by protecting the hardware encryption keys with your passcode. This provides an additional layer of protection for your email messages attachments, and third-party applications.

via iOS: Understanding data protection


是的,除了因bug而沒有加密的數據(如最近被發現的Email附件未加密bug),和系統不做加密的數據。

流程大致如下:

  1. 系統初始化時,生成偽隨機「AES密鑰」,保存於Flash。(此處為抽象描述,實際有多個多層密鑰)
  2. 所有應加密數據在寫入Flash前,都先通過主晶元的硬體AES引擎進行加密,密鑰為上一步所生成的「AES密鑰」。(注意,無論是否開啟Passcode,都有上述兩個步驟)
  3. 如果開啟Passcode,則使用Passcode和其它硬體信息,生成「解鎖密鑰」。
  4. 使用和Passcode相關聯的「解鎖密鑰」加密「AES密鑰」。
  5. 解鎖設備時
    • 如未啟用Passcode,則直接使用「AES密鑰」解密數據(如照片)。
    • 如已啟用Passcode,則根據輸入的Passcode實時生成「解鎖密鑰」,用於解密「AES密鑰」,繼而解密數據。(說明:即使啟用,也不是作用於所有文件)

可見,啟用Passcode後,數據已被AES層級密鑰機制保護。其根密鑰派生自實時生成的「 解鎖密鑰」,而「解鎖密鑰」派生自Passcode數值,不保存於Flash。因此,在演算法層面,已加密的數據是不可獲取的。

順便說明一下,步驟1和2(數據加密存儲)並未直接保護數據,因為此時的「AES密鑰」是保存在Flash上的(不是明文,但可解密)。數據加密存儲的目的是:

  • 步驟4,能夠快速啟用Passcode,不必在啟用時才進行數據加密。
  • Find My iPhone的遠程擦除,只用擦除「AES密鑰」即可讓數據無法使用。

這裡就不使用密碼學專業術語了,因此表述可能有不精確的地方。見諒。

(第2次編輯增加)
補充說明:

  • 上述描述省略了很多技術細節,如Class Key、Chip OTP Key、File Key。省略的原因是為了能用一個簡化的架構,回答題主的問題。
  • iOS安全技術可以參考的公開文檔是《iOS Security》。
  • BlackBerry實現了類似的安全級別。
  • Android在數據安全方面沒有很好的保護。

(第3次編輯增加)
上面的表述看來還是不夠清楚,所以評論中被問到幾個很好的問題。這裡直接引用問題和回答如下,希望問題作者不介意。

  • :即沒有啟用Passcode 己得到手機的情況下,可通過讀取Flash 內的Key 解AES? (Tony Wong)
  • :可以這麼認為。雖然還有其它一些安全措施,但Apple自己也說明了:Since it』s stored on the device, this key is not used to maintain the confidentiality of data。

  • :無需密碼也能訪問的怎麼辦,如桌面背景?保存在內存里嗎? 以及 Siri 最近的漏洞里的 Contacts 是如何打開的……(劉閩晟)
  • :不是所有的文件都用Passcode派生的Key來保護的,具體實現機制是用多個Class Key來加密File Key。具體實現機制可參見《iOS Security》,這裡再轉述可能還不如原版清晰,抱歉。

  • :無psscode也加密會不會對性能影響很大?如果下載個電影也會加密嗎(紫ylx)
    • 關於性能:加密一定會有延遲,但是AES演算法的本質上是位運算,因此用硬體引擎實現會非常高效。在不很嚴謹的場合,我們可以稱之為「瞬間」完成。
    • 關於下載:iOS對下載有些特殊處理,例如Background Download是在鎖屏狀態進行的,此時系統並沒有「解鎖密鑰」,因此加密方式更複雜一些,涉及到非對稱演算法。
    • 關於電影下載:APP似乎可以設置不加密某些數據,因此下載的電影並不一定被加密。(沒有iOS開發經驗,此結論不一定準確)

手機CPU內有個內置AES引擎,預先配置好密鑰,無法從外部訪問到,flash裡面一切內容都加密過,既然key無法導出,那麼拆flash無法讀出任何東西
文件系統也有密鑰,每次系統安裝時隨機生成,抹除數據的時候刪掉密鑰,就能保證數據被銷毀
passcode作為第三層密鑰,敏感數據還要經過passcode加密,每次關機甚至鎖屏都會從內存中刪除用戶密鑰,保證數據丟失甚至凍結RAM都無法讀取內容
A7晶元的secure enclave可以作為安全處理器,在隔離環境下進行加密操作


對技術細節感興趣的話可以看 iOS Security Guide

這次蘋果可是出人意料的實誠,講了不少內容。


推薦閱讀:

TAG:iOS設備 | AES加密 | iOSPasscode | 硬體加密 |