摘要:iPhone作為主流移動終端,在國內(nèi)外的用戶非常多。近幾年,iOS系統(tǒng)已經(jīng)迭代更新至iOSl3,用戶使用iTunes對iPhone手機進行備份的文件結(jié)構(gòu)也從iOSl0開始發(fā)生了較大的變化。用戶通過irlunes對iPhone手機進行備份時可以選擇對備份進行加密。理論上來說,沒有備份密碼的情況下,無論是用戶還是取證鑒定機構(gòu)都很難解密iPhone備份文件。該文對iPhone備份文件的加密模式進行了深入的研究,并探究其加密模式的安全性。
關(guān)鍵詞:iPhone備份文件;加密模式
中圖分類號:TP393 文獻標(biāo)識碼:A
文章編號:1009-3044(2019)36-0049-02
1背景
iPhone手機由于其流暢的界面UI,簡約的工業(yè)化沒計和前沿的智能化思想成為越來越多用戶首選的智能手機。與此同時,iPhone的安全性也越來越高,自從iOSl0開始,市面上已經(jīng)沒有提供穩(wěn)定越獄的工具,取證廠商只能通過iPhone備份數(shù)據(jù)才能夠獲取到iPhone手機的隱私數(shù)據(jù)。倘若用戶在此之前對iPhone手機設(shè)置了備份密碼,蘋果廠商聲稱在沒有備份密碼的情況下,iPhone備份文件是無法被暴力破解的。本文通過對iPhone備份文件的加密模式進行研究,進而論證iPhone備份的安全性。
2新版iPhone備份與舊版iPhone備份的區(qū)別
用戶通過iTunes備份獲得的備份文件保存路徑如下:
Windmvs XP:oHOMEPATH%YApplication Data\Apple Com-puter\MobileSync\Backup\{U DID)
Windows Vista/7/8:% HOMEPATH% \AppData\Roaming\Ap-ple Computer\MobileSync\Backup\( UDID)
%APPDATA%\Apple Computer\MobileSync\Backup\{ UDID}
Os X:~/Library/Application Support/MobileSync/Backup/{UDID}
2.liOS10以前
iOSIO之前的備份文件中包括如下文件:
2.2 iOS10及其以后
iOSIO以后的備份文件和目錄結(jié)構(gòu)都發(fā)生了變化。其中Mainfest.mdbd文件變?yōu)榱薓ainfest.db。后者為sqlite數(shù)據(jù)庫,除記錄了文件路徑相關(guān)信息外,對于加密的備份它還記錄了每個文件對應(yīng)的加密密鑰,在加密備份中Mainfest.db文件也會被加密。同時發(fā)生變化的還有備份文件的存儲結(jié)構(gòu),由之前的同一級目錄存儲變?yōu)榱朔旨壌鎯Γ掳鎮(zhèn)浞菸募鶕?jù)每個文件名的前兩個字符為文件夾名稱創(chuàng)建父文件夾,文件名前兩個字符相同的文件會被歸類到同一個目錄下。新版本備份文件目錄結(jié)構(gòu)如下圖2所示:
3 iPhone備份文件加密模式
當(dāng)使用iTunes創(chuàng)建一個加密的iPhone備份時,會在電腦上自動生成一個與之對應(yīng)的Backup keybag,而這個keybag是使用PBKDF2算法將備份密碼經(jīng)過1000萬次迭代運算生成的。之后,keybag經(jīng)過AES Unwrap算法進行加密之后作為密鑰,再使用AES-CBC-256算法對備份文件依次進行加密。
3.liOS10以前
iOSIO之前的系統(tǒng)在加密備份時,使用了PBKDF2With-HamcSHAl算法,經(jīng)過若十次迭代后生成keybag。
3.2 iOSIO及其以后
iOSIO及其以后的系統(tǒng)在備份時,首先使用PBKDF2With-HameSHAl算法對備份密碼進行若干次迭代運算后,再將迭代結(jié)果作為輸入項,使用PBKDF2WithHamcSHA256算法再次進行若十次迭代運算生成最終的keybag。同時,系統(tǒng)還會對man-ifest.db文件通過AES Unwrap算法進行加密,并將加密該文件的key記錄在Manifest.plist文件中。
4 iPhone備份文件安全性探究
由上文得知,iPhone備份首先會對備份密碼進行PBKDF2哈希運算。接下來的加密過程都是基于PBKDF2算法的運算結(jié)果進行的。備份文件的加密通過AES對稱加密算法,眾所周知,AES為對稱加密算法,在密鑰已知的情況下,是可以解密出加密信息的。因此,iPhone加密備份破解的關(guān)鍵點就在于PB-KDF2算法的安全性。
4.1 PBKDF2
Password-Based Key Derivation Function 2簡稱PBKDF2,它基于一個偽隨機函數(shù),例如iPhone備份加密是基于HMAC算法,輸入密碼或口令以及一個salt值,并多次重復(fù)該過程以生成派生密鑰,該密鑰可在后續(xù)操作中用作密碼密鑰。增加的計算工作使密碼破解變得更加困難,這就是所謂的密鑰拉伸。
4.2 PBKDF2函數(shù)定義
DK= PBKDF2(PRF, Password, Salt,e, dkLen)
PRF是兩個參數(shù)的偽隨機函數(shù),輸出長度為hLen
Password是生成派生密鑰的主密碼
c是所需的迭代次數(shù)
dkLen是所需的派生密鑰的長度
DK是生成的派生密鑰
派生密鑰由dkLen/hLen個bloek塊連接而成:
DK=T1+T2+…+Tdkledhlen
其中,每個block通過函數(shù)F生成:
T.= F(Password, Salt,c,i)
函數(shù)F由鏈?zhǔn)絇RFs進行c:次異或迭代的結(jié)果。PRF的第一次迭代使用Password作為PRF的KEY,并將Salt與編碼為大端32位整數(shù)的i連接起來作為輸入。PRF的后續(xù)迭代使用Password作為PRF密鑰,前一次PRF計算的輸出作為輸入:
F(Password, Salt,c,i)=Ui U2 U。
其中:
Ul= PRF(Password, Salt+ INT_32_BE(i)
U2= PRr(Password, u1)
Ue= PRF(Password,Ue-1)
例如,iPhone IOS10以前的系統(tǒng)備份加密的密鑰使用:
DK=PBKDF2(HMAC - SHAI, backup_password, back-up_SALT, backup.IterationCount, 256)
iPhone IOSIO及其以后的系統(tǒng)備份加密的密鑰使用:
DK_TEMP=PBKDF2(HMAC - SHA256, backup_passWord,backup_DPSL, backup_DPIClterCount, 256)
DK=PBKDF2(HMAC - SHAI, DK_TEMP, backup_SALT,backup.IterationCount, 256)
在新版本的iOS系統(tǒng)中,盡管對備份密碼進行了高強度的哈希運算,但是由于其沒有關(guān)聯(lián)特定設(shè)備,理論上來說,可以通過暴力碰撞獲取到備份密碼。當(dāng)然,iTunes備份密碼可以設(shè)置數(shù)字、字母和特殊符號的組合,因此,可以通過高強度的密碼組合來抵抗密碼碰撞,從而增加安全性。
參考文獻:
[1]周君.基于口令的密鑰導(dǎo)出算法安全性分析[D].廈門:廈門大學(xué),2013.
[2] Visconti A,Bossi S,Ragab H,et al.On the weaknesses of PB-KDF2[C]// The 14th International Conference on Cryptologyand Network Security (CANS 2015). Springer InternationalPuhlishing.2015.
[3]金星,孫波,曹雪芬.備份文件加密的iPhone手機取證研究[J]警察技術(shù),2012(5):12-14.
[4] iOS Security[EB/OL].https://www.apple.com/business/docs/site/iOS_Security_Guide.pdf.
【通聯(lián)編輯:謝媛媛】
收稿日期:2019-10-29
基金項目:基于云的仿真和自動化測試技術(shù)研究(2019年基本科研業(yè)務(wù)費專項資金,所內(nèi)編號C19352)
作者簡介:石奧迪(1994-),上海人,研究實習(xí)員,本科,主要研究方向為電子取證鑒定。