最近鬧的沸沸揚(yáng)揚(yáng)的FBI vs Apple的事件,期間經(jīng)歷了FBI在法庭上要求蘋果開發(fā)通用的破解鎖屏密碼的程序(并非媒體所傳的后門), 蘋果發(fā)布iOS 9.3,F(xiàn)BI要求查看iOS源代碼到最后蘋果威脅要在iCloud中用點(diǎn)對點(diǎn)加密代替現(xiàn)在的Master Key方案,最終該事件在前幾天塵埃落定。據(jù)傳言是在某個(gè)神秘選手的幫忙下,F(xiàn)BI終于解開了那臺iPhone 5C手機(jī)。
最近的媒體傳聞都是說蘋果的鎖屏密碼多么難破解, 神秘選手技術(shù)多么厲害, 其實(shí)據(jù)我們分析, FBI這一次只是運(yùn)氣好, 碰到的是一臺iPhone 5C, 如果這臺設(shè)備是iPhone 5S的話, 那么很大可能還要通過法律手段。
蘋果的鎖屏密碼到底有多難破?為什么說這一次說FBI是僥幸的?對于我們普通用戶來說又有什么影響?
請看盤古實(shí)驗(yàn)室對蘋果數(shù)據(jù)加密機(jī)制以及鎖屏密碼保護(hù)機(jī)制的技術(shù)分析。
iOS上哪些數(shù)據(jù)做了加密?
首先,iOS整個(gè)磁盤是全盤加密的,解密的EMF Key (file-system master encryption key)保存在閃存中1號扇區(qū)的可安全擦除區(qū)域(擦除后無法恢復(fù),并且支持遠(yuǎn)程擦除),該key對每臺設(shè)備都是唯一,并且會在數(shù)據(jù)擦除時(shí)銷毀;其次,在磁盤之上的文件系統(tǒng)的內(nèi)容也是加密的, 在每個(gè)文件創(chuàng)建的時(shí)候會隨機(jī)生成針對每個(gè)文件的Per-File Key,通過這個(gè)Per-File Key對文件中的內(nèi)容進(jìn)行加密保護(hù),并且蘋果又為此設(shè)計(jì)了Class Key來對Per-File Key進(jìn)行保護(hù)。蘋果設(shè)計(jì)A-F等各個(gè)不同的保護(hù)級別的Class Key,每個(gè)級別分別對應(yīng)了密鑰生成和銷毀的時(shí)機(jī),該級別可以通過數(shù)據(jù)保護(hù)的API來指定。默認(rèn)設(shè)備上的信息,通訊錄,郵件等都指定了iOS數(shù)據(jù)保護(hù)功能,而常見的幾個(gè)級別分別是:
全面保護(hù)(Class A)
數(shù)據(jù)保護(hù)最為嚴(yán)格的級別,系統(tǒng)解鎖后才能夠解鎖解密的密鑰,并且在鎖定以后丟棄該密鑰。
未打開文件保護(hù)(Class B)
數(shù)據(jù)保護(hù)較為嚴(yán)格的級別,通過密鑰包中的Class Key進(jìn)行協(xié)商生成公私鑰,文件一但解鎖后即使系統(tǒng)鎖屏仍然可以訪問,直到文件句柄被關(guān)閉。
首次認(rèn)證前保護(hù)(Class C)
數(shù)據(jù)保護(hù)較為嚴(yán)格的級別,在系統(tǒng)啟動時(shí)第一次輸入密碼時(shí)解鎖解密的密鑰,并且在系統(tǒng)關(guān)閉時(shí)丟棄密鑰。
無數(shù)據(jù)保護(hù)(Class D)
沒有指定數(shù)據(jù)保護(hù),但這不意味著文件沒有加密保護(hù),對于沒有設(shè)置數(shù)據(jù)保護(hù)的其他所有文件,iOS中用一個(gè)DKey(Device Key)進(jìn)行保護(hù)。該Key設(shè)備唯一,并且保存在閃存的可安全擦除區(qū)域。
從上述機(jī)制我們可以看出蘋果對iOS數(shù)據(jù)保護(hù)的整個(gè)設(shè)計(jì)框架是相當(dāng)完善的,結(jié)合硬件并且通過多重保護(hù)機(jī)制來防止各種物理手段上對設(shè)備的數(shù)據(jù)破解。
鎖屏密碼(Passcode)的作用
假設(shè)把每個(gè)文件的加密看作為上了一道鎖的話,那么對應(yīng)的開鎖的鑰匙就存放在系統(tǒng)密鑰包里面,而鎖屏密碼除了防止用戶進(jìn)入系統(tǒng)桌面之外,更重要的角色就是利用密碼對系統(tǒng)密鑰包進(jìn)行額外的加密保護(hù)。很多人對鎖屏密碼理解的一個(gè)誤區(qū),就是鎖屏密碼只是物理手段上防止進(jìn)入手機(jī)的一個(gè)保護(hù),但實(shí)際上,用戶在第一次設(shè)置鎖屏密碼的時(shí)候,鎖屏密碼會結(jié)合硬件加密引擎生成一個(gè)叫做Passcode Key的密鑰,通過這個(gè)密鑰對保存在密鑰包中的各個(gè)鑰匙(Class Key)進(jìn)行加密保護(hù)。鎖屏密碼不會以其他加密的形式保存在設(shè)備上,用戶在解鎖的時(shí)候,會直接用輸入的密碼生成Passcode Key對密鑰包中的Class Key解密,解密失敗代表用戶密碼錯(cuò)誤。
從蘋果的數(shù)據(jù)加密和鎖屏密碼的保護(hù)機(jī)制來看,直接拆除存儲芯片并對其進(jìn)行文件讀寫操作是不可能的。
破解Passcode Key的手段
Passcode Key是用戶輸入的passcode結(jié)合系統(tǒng)硬件的加密引擎以及PBKDF2(Password-Based Key Derivation Function)算法生成的。PBKDF2 的基本原理是通過一個(gè)偽隨機(jī)函數(shù),把明文和一個(gè)鹽值及加密重復(fù)次數(shù)作為輸入?yún)?shù),然后重復(fù)進(jìn)行運(yùn)算,并最終產(chǎn)生密鑰。重復(fù)運(yùn)算的會使得暴力破解的成本變得很高,而硬件key及鹽值的添加基本上斷絕了通過“彩虹表”攻擊的可能 。
由于硬件加密引擎的Key無法提取,所以 只能在目標(biāo)的機(jī)器上運(yùn)行暴力破解程序進(jìn)行破解,假設(shè)用戶的密碼設(shè)置的足夠復(fù)雜的話,那么破解的周期就會變得非常久。
在FBI這個(gè)案例中,由于嫌犯可能開啟了輸錯(cuò)10次密碼自動擦除設(shè)備的選項(xiàng),一旦暴力猜測程序連續(xù)10次輸入錯(cuò)誤的密碼,設(shè)備上的所有內(nèi)容就會擦除掉。一旦觸發(fā)數(shù)據(jù)擦除,蘋果會首先對可安全擦除區(qū)域進(jìn)行擦除,物理方式上即使能夠恢復(fù)大部分加密數(shù)據(jù),但是卻無法恢復(fù)可安全擦除區(qū)域中的數(shù)據(jù),因?yàn)榇蟛糠值慕饷苊荑€都保存在這個(gè)區(qū)域中,例如能夠解開系統(tǒng)密鑰包的二進(jìn)制數(shù)據(jù)的BAG1 Key。
后續(xù)蘋果為了封堵各種暴力猜測Passcode的方法,在64位設(shè)備的Secure Enclave中增加了定時(shí)器,針對嘗試密碼的錯(cuò)誤次數(shù),增加嘗試的延時(shí),即使斷電重啟也無法解決。
歷史上曾經(jīng)出現(xiàn)過的破解方法
早期的A4及更老的芯片(iPhone4之前的設(shè)備包括iPhone4)存在bootrom漏洞,通過bootrom中的硬件漏洞獲取設(shè)備的shell然后運(yùn)行暴力破解程序。[A4后面的芯片目前沒有公開的bootrom漏洞]
iOS7中存在利用外接鍵盤可以暴力破解密碼,甚至停用的設(shè)備也可以破解的漏洞。[該漏洞已經(jīng)在iOS8中修復(fù)]
iOS8的早期幾個(gè)版本中存在密碼嘗試失敗立即斷電并不會增加錯(cuò)誤計(jì)數(shù)的漏洞。[該漏洞已經(jīng)修復(fù)]
FBI是怎么破解這臺手機(jī)的?
FBI要想要破解的這臺手機(jī)是一臺iPhone 5C并且運(yùn)行著iOS 9,從硬件的角度上來說這是一臺32位的設(shè)備(沒有Secure Enclave),所以我們覺得相對可能的幾個(gè)方案是(第三種是可能性最高的):
通過未公開的bootrom/iboot漏洞來獲得系統(tǒng)的權(quán)限,然后通過修補(bǔ)內(nèi)核的方式去繞過軟件的錯(cuò)誤計(jì)數(shù)來進(jìn)行暴力破解密碼。
使用未公開的暴力破解繞過錯(cuò)誤計(jì)數(shù)的漏洞(類似曾經(jīng)出現(xiàn)過的強(qiáng)制斷電繞過的漏洞)
事先通過物理方式先對手機(jī)上閃存的數(shù)據(jù)進(jìn)行克隆,由于32位系統(tǒng)不支持在Secure Enclave做硬件的計(jì)時(shí)和計(jì)數(shù),可以通過類似USB外接鍵盤進(jìn)行暴力猜測,每當(dāng)猜測到9次左右的時(shí)候,再通過物理方式用克隆的數(shù)據(jù)對手機(jī)進(jìn)行數(shù)據(jù)恢復(fù),這樣就避免了數(shù)據(jù)被擦除的尷尬。
通過攝像頭追終嫌疑人的生活軌跡并且分析,比如攝像頭剛好拍攝到嫌疑人在星巴克解鎖手機(jī),那么就可以通過圖片分析的手段來判斷用戶輸入的鎖屏密碼是什么。
為什么說FBI是幸運(yùn)的?
如果這是一臺64位的設(shè)備(擁有Secure Enclave),第三方即使擁有bootrom級別的漏洞都不可能對設(shè)備進(jìn)行暴力破解, 除非在找到Secure Enclave的漏洞才有可能對設(shè)備進(jìn)行暴力破解, 目前來看這種可能性微乎其微。這種情況下也許走司法程序是個(gè)更容易的方法。
那么蘋果是否還有弱點(diǎn)?
從設(shè)備上的保護(hù)力度來看,蘋果做的這套保護(hù)架構(gòu)在沒有類似bootrom漏洞之類的大殺器幾乎很難去破解,那么是否有弱點(diǎn)?答案是肯定有的。
由于蘋果在新的系統(tǒng)上引入了Touch ID來作為一個(gè)快捷輸入passcode的方式,在設(shè)備已經(jīng)輸入過正確的解鎖密碼的情況下,并且設(shè)備解鎖的時(shí)間在48小時(shí)之內(nèi),其實(shí)還是可以通過克隆指紋的方式對設(shè)備進(jìn)行解鎖。
其次就是當(dāng)用戶啟用了iCloud數(shù)據(jù)備份的情況下,蘋果在備份加密數(shù)據(jù)的同時(shí),還對密鑰包使用非對稱密鑰加密的方式加密后保存在蘋果的iCloud服務(wù)器上,并且蘋果擁有Master Key進(jìn)行解密。
作為普通用戶我應(yīng)該怎么做?
作為一個(gè)普通用戶來說,其實(shí)不用擔(dān)心太多。因?yàn)槟愕臄?shù)據(jù)還沒敏感到蘋果會來審查,你更應(yīng)該關(guān)心的是注冊Apple ID的郵件服務(wù)商是否足夠安全,Apple ID的密碼是否太簡單,記得開啟Apple ID兩步認(rèn)證哦。
如果你自認(rèn)是一個(gè)對數(shù)據(jù)保護(hù)有極高要求的用戶,那么建議你不要打開iCloud數(shù)據(jù)備份,不要設(shè)置指紋,鎖屏密碼最好不要設(shè)置數(shù)字的密碼。