Friday Q&A 2016-02-19: 什麼是安全區域?

做者:Mike Ash,原文連接,原文日期:2016-02-19
譯者:littledogboy;校對:陳剛;定稿:CMBhtml

本週最大的科技新聞是 FBI 正試圖迫使蘋果公司解鎖一個嫌疑人的 iPhone。有趣的是,涉案手機的型號是老款的 iPhone 5c。新款的 iPhone 中加入了蘋果的 Secure Enclave(安全區域)技術,用來防止手機被暴力破解,甚至連蘋果本身都沒法破解。這件事事後許多朋友都在問一個問題:什麼是 Secure Enclave?它扮演了什麼角色?git

在我開始寫以前聲明一下: 我平時寫文章的習慣是一直深刻到比特和字節,而後再討論發生了什麼。但此次一定有所不一樣,由於我這種凡夫俗子是觸及不到安全區域的本質的。所以本文中大部分的知識來自蘋果 iOS 信息安全指南,又添加了一些通用的理論。參考指南中安全區域的相關信息,解釋而且思考它們的含義。這篇文章創建在蘋果提供了準確信息的假設上,由於從外部沒有可行的方法來檢測這些信息的真實性。所以最終檢測結果將基於蘋果文檔的準確性,和我本身的理解,這點讀者須要注意。github

並且,此文章是爲了調研本案的技術和安全區域技術。對 FBI 的要求,蘋果的迴應,任何其餘政治問題,沒有任何意見和暗示。若是你想在此討論政治問題,出門右轉。swift

找準了方向,讓咱們開始吧。安全

回顧

涉案 iPhone 經過密碼保護,密碼沒有直接存儲在手機中。獲取密碼的惟一方法是暴力破解密碼。計算驗證密碼很是慢,每次大約須要 80 毫秒。不過,暴力破解是可行的。一個四位數的密碼,嘗試 10000 個組合,每次 80 毫秒,只需不到 15 分鐘。一個 6 位數字密碼須要大約一天的時間。併發

這意味着密碼並不十分安全。嘗試屢次輸入密碼失敗後,蘋果會增長額外的時間來延緩暴力破解的頻次。幾回錯誤的嘗試以後,當你再次嘗試輸入密碼時,iPhone 會讓你等待,最開始等待 1 分鐘,而後等待 5 分鐘,後面的等待時間會遞增。app

你可能會想,若是把閃存從蘋果電腦中取出來,複製它的內容,而後在一個更快的計算機上嘗試破解密碼,能夠解決這個問題。這樣就不會有蘋果軟件強加的額外延遲。 這麼作帶來的好處是,在更快的計算機上每次嘗試的時間會少於 80 毫秒,而且能夠併發執行多個嘗試。然而,這是行不通的。由於數據加密與硬件是綁定的,因此必須在原始設備進行暴力破解。ide

沒有安全區域的舊 iPhone 系統上有一個弱點。爲了防止暴力破解而持續增長的延遲時間,只是手機操做系統的特徵。密鑰推導的計算時間是固定的80毫秒,而在屢次錯誤的嘗試以後額外添加的分鐘或者小時數所起到的做用,僅僅是操做系統拒絕在這些延遲時間結束前接受輸入而已。FBI 但願蘋果構建和安裝一個不包含延遲時間而且容許自動提交密碼的系統版本。這將使得聯邦調查局能夠在幾分鐘或幾小時內破解密碼。除了蘋果以外不容許任何人更新 iPhone 操做系統,因此,對於來自外部的攻擊該系統是安全可靠的,但對蘋果自身來講該系統是不安全的。ui

注意,以上的方案只針對使用數字密碼的用戶,比較複雜的密碼在這些舊版 iPhone 仍然是安全的。例如,一個八個字符的字母數字密碼將須要 550000 年的時間去嘗試全部可能的組合。加密

不可讀的 UIDs

每一個內置的 iOS CPU 都獨有一個 256 位的標識符或者 UID。UID 被直接嵌入到了硬件中,不存儲在任何地方。UID 不能被外部直接訪問,包括那些以最高權限在 CPU 上運行的軟件。取而代之的是,CPU 中包含一個 AES 硬件加密引擎,並且惟一經過硬件獲取到 UID 的方式是經過 AES 加密引擎加載祕鑰,而後使用祕鑰對數據進行加密或者解密。

蘋果使這種硬件加密方式把用戶密碼和設備綁定起來。經過把設備的 UID 做爲 AES 密鑰,而後對密碼再次加密,獲得一系列隨機的不可逆的數據。由於特定設備 UID 取決於用戶密碼和加密數據,所以它是不可讀取的。加密過程執行了屢次 PBKDF2加密方法,把每輪加密後獲得的結果做爲下一輪加密的輸入,以致於每次驗證密碼都須要 80 毫秒以完成複雜的運算。

安全區域

蘋果首次引入安全區域是在搭載 A7 芯片的操做系統上。對應的手機型號從 iPhone 5S 開始,5 和 5C 以及舊版本都沒有安全區域。iPad 端是從 iPad mini 2 和 iPad Air 開始。

安全區域 是 A7(以及以後的芯片)內部中一個獨立的處理器,其負責低級別的加密操做。安全區域不能運行 iOS 程序或任何相似於 iOS 的程序,其上運行的是 L4微內核 程序。由於在高級權限下,運行時的代碼可能會引起 bug,L4 意欲在內核中執行儘量少的代碼,從而使系統達到理論上的更加安全的狀態。安全區域使用 secure boot (安全引導)系統,確保運行的代碼不能被修改,它使用加密存儲確保其它系統數據沒法被讀取或者篡改。這種方式有效地在計算機內另外構建了一臺很難被攻擊的電腦。

安全區域內包含本身的 UID 和 AES 引擎。該區域獨立於系統的其他部分,密碼驗證的過程在安全區域中進行。安全區域同時也管理 Touch ID 指紋的處理和匹配,以及 Apple Pay 的受權。

安全區域管理着全部加密文件的密鑰。文件加密幾乎應用於全部的用戶數據。大部分系統應用程序使都用了文件加密,而且系統版本不低於 iOS 7 的全部第三方應用程序默認使用的也是文件加密。每一個加密文件都有一個惟一的祕鑰,該祕鑰又被設備的 UID 和 用戶的密碼進行了加密。主 CPU 自身並不能讀取加密的文件,它必須從安全區域中獲取文件的密鑰,而該祕鑰沒有用戶密碼是獲取不到的。

嘗試輸入密碼失敗而增長的延遲,是由安全區域執行的。主 CPU 只是提交密碼和接收結果。安全區域負責檢查密碼,若是檢查出屢次失敗,則將會延遲密碼檢查。主處理器並不能加快檢查的速度。

啓示

安全區域對系統總體安全來講擔當一個什麼角色?

在大多數系統中,若是你能夠進入系統內核,那麼你就能夠擁有整個系統權限。內核能夠完成任何事情。它能夠讀寫系統內存中的每個字節、控制全部的硬件、控制系統運行的全部應用程序的代碼,而且能夠破壞這一切。

因爲安全區域是一個獨立的 CPU,與系統的其他部分阻斷,所以它不受內核的控制。在一箇舊的 iPhone 上,掌控內核就意味着掌控了系統能作的一切功能,包括密碼驗證過程。有了安全區域,不論是誰在控制主 CPU,不管操做系統運行什麼樣的代碼,基本的安全功能依舊保持不變。

這套系統本質上容許把任意代碼放在加密功能以前,這樣任意代碼都不能繞過加密。這有點像是那個須要花費 80 毫秒的密碼校驗的超級版本。延遲的時間來源於固定的計算。這意味着它不能被繞過,而且固有的計算時間會限制你能作的事情。例如,你不能設置第五次嘗試時的延時爲一分鐘,由於原密碼構造不存在第五次嘗試的概念。有了安全區域,一分鐘的延時就變成了強制的,由於即便系統的其餘區域被破換了,安全區域中延遲代碼也不會改變。

軟件更新

iPhone 5C(和其餘沒有搭載 A7 處理器的 iPhone)能夠被暴力破解,經過建立一個新的沒有延遲時間的操做系統,把該系統安裝到設備上,以硬件最快的計算速度來破解密碼。安全區域阻止了這樣作。可是若是進行相同的更高級別的攻擊,在安全區域中加載新的軟件,那麼能夠去掉延遲時間麼?

蘋果的指南包含了在安全區域中更新軟件的討論:

安全區域使用了它本身的安全引導和專用的軟件,與應用程序處理器的更新是隔離開的。

就是這樣!沒有任何細節。實際狀況是什麼?那麼,咱們必須進行猜想,由於只要我沒有挖到任何有關於安全區域軟件更新是如何執行的信息。我預測了兩種可能性。

第一種可能性是安全區域使用的軟件更新機制相似於其他的設備。也就是說,更新必須由蘋果簽署,但能夠自由應用。這將使安全區域遭受到來自蘋果自己的攻擊時變得毫無用途,由於蘋果能夠創造新的安全區域軟件解除限制。若是主操做系統是由第三方開發的,安全區域仍然是一個有用的功能,幫助保護用戶。可是蘋果是否能夠進入它本身的設備,決定了該問題是否有必要。

第二種可能性是,安全區域的軟件更新機制作了更先進的防攻擊甚至是蘋果自己的攻擊。安全區域的總體思路是,強制執行附加的規則,以致於不能從外面繞過安全區域。這些附加的規則可能包括了其自身的軟件更新。出於保護用戶數據的目的,除非該設備已經由用戶的密碼解鎖,不然安全區域拒絕任何軟件的更新。通常狀況下,用戶忘了密碼,想清除設備並從新啓動,安全區域可能容許更新,可是會刪除主密鑰下保護的用戶數據。

哪種狀況是正確答案?如今,咱們不知道。蘋果付出了很大的努力來保護用戶數據,而且他們採起第二種方法,若是沒有用戶的密碼進行更新會清除數據,將會頗有意義。這將是至關容易實現的,並不該該影響設備的可用性。鑑於蘋果對用戶隱私的公開立場,我想若是它的安全區域的軟件更新機制不是這樣實現的會很奇怪。另外一方面,蒂姆庫克的公開信暗示,全部型號的蘋果手機都存在潛在的弱點,因此也許他們沒有采起這一額外的步驟。

回到執法者迫使蘋果攻擊 iOS 設備的問題,這是問題的關鍵。若是更新安全區域在蘋果的攻擊下都是牢固的,那麼以聯邦調查局的能力,會止步於蘋果 5S 。若是不是,那麼即便是最新的 6S 仍然可能被攻擊。我對這個問題的答案很感興趣。

結論

安全區域增長了一個額外的防線,經過在硬件獨立的 CPU 中實現核心安全和加密功能,來防護攻擊。這個獨立的處理器運行特殊的軟件,並隔離於系統的其他部分,隔離於主操做系統和內核的控制。安全區域實現了設備的密碼驗證、文件加密、Touch ID 識別和 Apple Pay,並執行安全限制,如過屢次錯誤的密碼輸入後增長延遲時間。

FBI 要求蘋果破解的 iPhone 5C 機型,早於安全區域技術以前,所以能夠經過安裝一個新的移除了延遲時間的蘋果操做系統。新機型手機是否一樣能夠被破解取決於安全區域的軟件更新機制的實現。若是更新軟件時,沒有密碼就會刪除加密主密鑰,那麼新的 iPhone 就不能被這樣攻擊,甚至抵禦來自蘋果本身的攻擊。若是更新軟件時,即使沒有密碼也不會刪除主祕鑰 ,那麼安全區域就像舊版的 iPhone 同樣能夠被攻擊。在我能獲得確切的資料以前,真實狀況是否如此依舊是一個懸而未決的問題。

本文由 SwiftGG 翻譯組翻譯,已經得到做者翻譯受權,最新文章請訪問 http://swift.gg

相關文章
相關標籤/搜索