如何竊取iPhone資料? iOS資料保護機制簡介

iOS裝置的資料加密機制從A7處理器後(iPhone 5S後),不管在硬體(導入Secure Enclave)與iOS(FBE啟用)上,功能皆有很大的提升。這篇文章會簡單的描述iOS Data Protection架構,讓鑑識人員有初步的了解Apple在資料安全性上設計的機制。也希望藉由這篇,可以探討以下幾個議題!

  1. 為什麼新版的iPhone不支援物理提取(64-bit iOS)。
  2. iOS如何快速重置裝置?
  3. AFU與BFU可以提取的差異?
  4. Data Protection使用的Class Key差異。
  5. 有密碼與無密碼的iTunes備份差異?

加密背景:檔案與硬碟加密

電腦加密機制比手機存在的時間更久遠。 實際上,1990年初電腦就有開始使用加密技術來保護資料不被竊取,但實際有廣泛使用要到2000年初,當作業系統有內建加密機制時才逐漸普及。

PC通常採用FDE(Full Disk Encryption)加密機制,一般開機時會要求使用者輸入一個密碼,如果正確才會解開加密的硬碟,進而進入到作業系統。早期iOS與Android皆採用FDE加密機制,主要是導入與開發成本相較於FBE(File Based Encryption)較低。FDE最大的問題是如果被竊取的電腦或手機為開機狀態,要破解並竊取已開機狀態的資料相對簡單,這也是為什麼在”iPhone資料保存與提取步驟分析“這篇文章上所描述,若查扣到數位裝置,必須第一時間開啟飛航模式並插上行動電源的主因。

FDE加密機制

Apple在iPhone 3GS/iOS 3/時已導入FDE架構,從硬體設計上採用獨立的AES處理器來進行加解密運算(AES有獨立DMA通道連接CPU與快閃記憶體)。

以下為FDE加密流程說明:

  1. 系統產生一個亂數的EMF key。
  2. 透過UID導出0x89B key,並使用該key對EMF key加密。
  3. 將加密的EMF key儲存在快閃記憶體的Block 1 (Effaceable Storage)。
  4. 整個File System使用EMF Key來進行加密保護。

圖一、iOS 3 FDE架構

FDE的好處是可以快速刪除資料,只要將EMF Key刪除整個File System就無法被解開。另外作業系統尚未啟動前,資料是無法被存取的;且若無法取得EMF Key,直接移除儲存晶片讀取出的資料也是亂碼。但壞處就是開機後,系統使用EMF Key解開File System資料就無額外的保護,即便上了螢幕鎖。

FBE加密機制

Apple已意識到了FDE先天在資料保護的不足,因此在iOS 7之後開始導入FBE,但一直到iOS 8後Apple才正式啟用FBE的Data Protection機制。新的FBE保護機制,採用多層金鑰加密架構,主要分為五大類型,每個類型另有自己的Class Key來控管存取權限:

  1. User Keybag
  2. Device Kaybag
  3. Backup Keybag
  4. Escrow Keybag
  5. iCloud Backup keybag

本文主要探討的是User、Backup與Device Keybag。User Keybag的金鑰是由硬體UID(AES 256-bit hardware key)與Passcode兩個組合而成(除了No Protection Class Key),而Device Keybag的金鑰僅由UID衍生而成,而Backup Keybag則是兩個組合都有。User Keybag會依照各種檔案所需要的保護類型,由最上層的金鑰加密各個Class Key,再由不同的Class Key加密File Key。下圖為針對User Keybag的Class Key架構。

圖二、FBE架構

iOS Data Protection架構的User Keybag,有四種金鑰種類(Class Key),這四種金鑰種類對應不同的檔案保護機制。而針對單一檔案的金鑰,則是有多少檔案就有多少對應的檔案金鑰(Per-File Key是採已加密後的形式存放在檔案的Metadata內,必須由對應的Class Key才可解開)

圖三、金鑰種類

若把圖二、三展開,可看到較完整的「資料保護」多層金鑰加密架構,每部 iOS 裝置皆採如圖四的硬體加密技術。從圖四所示,主要從UID與Passcode衍生的金鑰是存放在Secure Enclave(安全隔離區)內。根據Apple的技術文章,UID是由工廠在生產個過程產生而出,Apple與工廠並不會記錄裝置的UID資料。而每一個iOS的UID都是獨立的。而透過UID,會衍生出多隻金鑰,其中兩隻金鑰、0x89B與0x835會用於Device Keybag上。0x89B功能同FDE,會透過EMF金鑰針對整個File System/Partition進行加密保護。而Passcode則是用戶自己產生,從iOS 9之後,預設的Passcode長度為6個數字,而0x835 Key與Passcode Key(從Passcode透過加密運算產生)會針對所有的Class Key進行加密(除了Class 4 Key外)。

圖四、iOS Data Protection詳細架構

當打開檔案時,因系統已使用EMF金鑰解開File System,故可以讀取該檔案的metadata資料(包含日期,時間,檔案名稱等)與檔案專屬的已加密狀態金鑰(per-file key)以及表示其保護類別(Class Key)的資訊。已加密的檔案專屬金鑰需使用相對應的類別金鑰(Class Key)來解開。從該架構可得知,若裝置上有1萬個檔案,就會有1萬個256bit檔案專屬檔案金鑰(per-file key)。所有過程會透過硬體 AES 引擎運算加解密,當從快閃記憶體中讀取檔案時,AES引擎會對檔案進行解密。所有封裝檔案金鑰的處理作業會在「安全隔離區」中進行。

截至今日為止,尚未發現有針對Secure Enclave Processor「安全隔離區處理器」的漏洞,若有就可取得金鑰,進而進行物理提取。離破解最接近的一次為2017年,有駭客成功將SEP Firmware提取出,但尚未有辦法成功解讀SEP裡面儲存的資訊。

User Keybag的Class Key類別

在 iOS 裝置上產生新檔案時,產生檔案的App會替該檔案指定一個類別(Class)。每個類別使用不同的規則來決定資料何時可供存取。在iOS內User Keybag一共有四個檔案保護類別:

  1. Complete Protection/完整保護
  2. Protected Unless Open/完整保護除非檔案尚未關閉
  3. Protected Until First User Authentication/完整保護直到首次使用者認證後
  4. No Protection/無保護

圖五、Class Key說明

Backup Keybag – iTunes備份與Class Key

有密碼保護與無密碼保護的iTunes備份最大的差異是在Keybag是否被UID Key加密的狀態下儲存於iTunes備份擋內。若iTunes備份檔沒有密碼保護,Keybag會被UID的金鑰加密後儲存於備份檔內(Keychain也是),這代表這個備份檔案是無法恢復到其他的iOS裝置,僅能恢復到原有備份出來的裝置(因為每個iOS的UID皆不同)。若iTunes備份檔有密碼保護,則Keybag會用iTunes設定的密碼採PBKDF2加密函式反覆運算1千萬次來保護 Keybag ,因Keybag未與UID綁定,當升級新的iOS裝置時就必須採用密碼保護的iTunes備份檔才可進行資料移轉。

圖六、Backup Key說明

總結

了解iOS Data Protection架構後,Apple在行動裝置領域中對於隱私與資料安全保護明顯處於領先地位,當有新的漏洞,軟體更新皆在很短的時間內補上。而在iOS 13,Apple推出的CryptoKit可以讓APP開發者使用Secure Enclave加密功能,讓APP在資料交換過程可以有更高等級的加密保護。當然,這些功能對於鑑識人員在取證過程中將面臨更多的阻擾,在取證領域上將會是一場永無止盡的追趕賽事。

問答

1. 為什麼新版的iPhone不支援物理提取(64-bit iOS)?2019-08-26T21:57:01+08:00

因64-bit iOS後的裝置皆有導入Secure Enclave Processor安全性晶片架構,而可解密儲放於NAND Block 1上的Keybag金鑰是存放在Secure Enclave內,現無已知的方式可直接讀取SEP並取得UID與Passcode Key。比較接近的提取模式僅有JB後的iOS裝置可提取完整的檔案系統。

2. iOS如何快速重置裝置? 重置後資料是否可以恢復?2019-08-27T02:35:26+08:00

從圖四可以得知,只要抹除NAND Block 1的資料(既Effaceable Storage)就可刪除所有的金鑰,包含Dkey,Bagkey與EMF Key。該區塊被刪除後,即使可以物理複製NAND資料,因加密的金鑰皆已刪除,也無法將NAND上的資料解密並恢復內容。另外,Apple有針對Effaceable Storage另處理寫入與刪除方式,Wear-leveling功能不會在這個區快啟用,可確保Keybag資料僅寫入該Block。

3. AFU與BFU可以提取的差異?2019-08-27T02:22:01+08:00

從User與Device Keybag的權限推估,可存取的資料應該如下:

  • BFU(Before First Unlock):僅Class 4 Key權限的檔案可以存取。
  • AFU(After First Unlock):Class 3 & 4 Key權限的檔案可以存取。
4. 更換Passcode對Keybag的影響?2019-08-27T02:30:29+08:00

系統會複製所有的Keybag,新的Keybag採用0x835與新的Passcode Key重新加密,加密過後的Keybag寫入至Effaceable Storage,完成後舊的Keybag則刪除。

5. 重新開機的影響?2019-08-27T02:33:31+08:00

NSFileProtectionComplete、UnlessOpen與UntilFirstUserAuthentication的Key皆從RAM移除。只有FileProtectionNone的檔案可以被系統讀取(因為FDE)。

2019-08-27T12:02:05+08:00August 27th, 2019|