成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

在安全芯片的加持下,Android數(shù)據(jù)加密越來(lái)越難被竊取

移動(dòng)開(kāi)發(fā) Android
隨著安全芯片在越來(lái)越多的設(shè)備中變得越來(lái)越流行,Weaver是Android系統(tǒng)中相對(duì)較新的成員。在Quarkslab,研究人員花了很多時(shí)間研究Titan M芯片,這是谷歌在Pixel 3中引入的。

Android FBE的背景

我們將在本文介紹分析靜態(tài)數(shù)據(jù)加密。Android FBE是Android Full Disk Encryption的簡(jiǎn)稱,是一種安全機(jī)制,用于對(duì)Android設(shè)備的所有數(shù)據(jù)進(jìn)行加密,保護(hù)用戶的個(gè)人隱私和敏感數(shù)據(jù)。 

簡(jiǎn)而言之,此功能允許永遠(yuǎn)不以明文形式存儲(chǔ)文件,以防止攻擊者通過(guò)簡(jiǎn)單地提取存儲(chǔ)設(shè)備來(lái)讀取它們。相反,文件在加載到內(nèi)存中時(shí)(例如,通過(guò)文本編輯器)會(huì)自動(dòng)解密,并在寫(xiě)回磁盤(pán)時(shí)再次加密。這要?dú)w功于操作系統(tǒng)的支持,Android歷來(lái)使用兩種方法:全磁盤(pán)加密(FDE)和基于文件的加密(FBE)。顧名思義,基于文件的加密在文件級(jí)工作。也就是說(shuō),每個(gè)文件都有自己的密鑰,并且可以獨(dú)立于其他文件進(jìn)行解密。Android依賴于Linux內(nèi)核特性fscrypt來(lái)實(shí)現(xiàn)這一點(diǎn),該特性在Ext4和F2FS等各種文件系統(tǒng)中都得到支持。在為目錄樹(shù)獲得主密鑰之后,系統(tǒng)將為文件、目錄和符號(hào)鏈接檢索單獨(dú)的密鑰。

由于采用了文件級(jí)方法,F(xiàn)BE實(shí)現(xiàn)非常精確。Android利用這一點(diǎn)將文件劃分為兩個(gè)加密級(jí):

設(shè)備加密(DE):文件在啟動(dòng)后立即可用;

憑證加密(CE):文件只有在用戶進(jìn)行身份驗(yàn)證后才可用(這是用戶數(shù)據(jù)的選擇級(jí)別)。

在啟動(dòng)設(shè)備時(shí)自動(dòng)派生DE密鑰,考慮到這一點(diǎn)以及它所保護(hù)的數(shù)據(jù)類型,從攻擊者的角度來(lái)看,它并不是特別有趣。然而,值得注意的是,這是直接啟動(dòng)功能的基礎(chǔ),允許在用戶進(jìn)行身份驗(yàn)證之前解鎖設(shè)備的某些功能,比如警報(bào)。

盡管如此,由于攻擊者的目標(biāo)可能是檢索私有數(shù)據(jù),因此本文主要關(guān)注CE密鑰。派生它的步驟相當(dāng)復(fù)雜,過(guò)程從系統(tǒng)擁有的一些DE保護(hù)文件(在/data/system_DE//spblob中)開(kāi)始。最終密鑰的原始字節(jié)實(shí)際上是從憑證的原始字節(jié)派生出來(lái)的。盡管過(guò)程復(fù)雜,但這意味著無(wú)論攻擊者可以利用多少漏洞,他們?nèi)匀恍枰┝ζ平鈶{證以將其提供給密鑰派生過(guò)程。

使用TrustZone派生CE密鑰

在安全芯片的加持下,Android數(shù)據(jù)加密越來(lái)越難被竊取在安全芯片的加持下,Android數(shù)據(jù)加密越來(lái)越難被竊取

上圖顯示了派生CE密鑰所需的不同組件是如何鏈接在一起的。如上所述,這是一個(gè)相當(dāng)復(fù)雜的過(guò)程,所以我們建議在一個(gè)單獨(dú)的選項(xiàng)卡中打開(kāi)圖片。對(duì)于沒(méi)有配備安全芯片的設(shè)備,密鑰派生來(lái)自兩個(gè)不同的受保護(hù)組件:

特權(quán)用戶(system或root)擁有的文件:普通用戶無(wú)法訪問(wèn);

TEE保護(hù)密鑰:這些密鑰只能在TEE內(nèi)部由Keymaster應(yīng)用程序使用。這些密鑰也是與身份驗(yàn)證綁定的,因此只有在用戶成功通過(guò)身份驗(yàn)證時(shí)才能使用它們。

這意味著攻擊者應(yīng)該能夠提升權(quán)限并篡改可信執(zhí)行環(huán)境,以便提取密鑰或能夠在身份驗(yàn)證之前使用密鑰。為此,我們有必要了解Gatekeeper如何進(jìn)行身份驗(yàn)證。

使用Gatekeeper進(jìn)行身份驗(yàn)證

在安全芯片的加持下,Android數(shù)據(jù)加密越來(lái)越難被竊取在安全芯片的加持下,Android數(shù)據(jù)加密越來(lái)越難被竊取

Gatekeeper是TEE中經(jīng)常出現(xiàn)的可信應(yīng)用程序(TA)之一,通過(guò)與相應(yīng)的Android守護(hù)進(jìn)程以及硬件抽象層通信,它在驗(yàn)證用戶的身份驗(yàn)證憑證方面發(fā)揮著關(guān)鍵作用。請(qǐng)注意,Gatekeeper僅通過(guò)PIN/密碼/模式參與身份驗(yàn)證,而其他TA用于支持生物識(shí)別。盡管如此,當(dāng)用戶在啟動(dòng)設(shè)備時(shí)首次進(jìn)行身份驗(yàn)證時(shí),他們無(wú)法使用生物識(shí)別技術(shù),原因恰恰與數(shù)據(jù)加密有關(guān)。

Gatekeeper實(shí)現(xiàn)了兩個(gè)概念上簡(jiǎn)單的命令:Enroll和Verify。通常在用戶首次設(shè)置身份驗(yàn)證因素或更改身份驗(yàn)證因素時(shí)調(diào)用Enroll。該命令接受一個(gè)所謂的密碼(pwd) blob,對(duì)其進(jìn)行簽名,然后返回,將其轉(zhuǎn)換為密碼句柄。密碼blob是從憑證創(chuàng)建的,憑證首先使用scrypt進(jìn)行擴(kuò)展,然后與哈希字符串組合。用于簽名所提供的密碼的密鑰是Gatekeeper的內(nèi)部密鑰,用于驗(yàn)證憑證。這樣的功能是通過(guò)Verify命令實(shí)現(xiàn)的,而在用戶嘗試進(jìn)行身份驗(yàn)證時(shí)調(diào)用該命令。顧名思義,它驗(yàn)證當(dāng)前身份驗(yàn)證嘗試的密碼blob是否有效。它通過(guò)計(jì)算其HMAC并將其與原始密碼句柄進(jìn)行比較來(lái)實(shí)現(xiàn)這一點(diǎn),原始密碼句柄也與命令一起發(fā)送。

Scrypt是一個(gè)密鑰派生函數(shù),在這種情況下,它通過(guò)需要大量?jī)?nèi)存來(lái)減緩自定義硬件攻擊。它的參數(shù)與憑證的鹽值一起存儲(chǔ)在一個(gè)文件中。這意味著每次身份驗(yàn)證嘗試的延遲可以忽略不計(jì),但卻讓需要多次進(jìn)行身份驗(yàn)證的攻擊者減慢了速度。

如果身份驗(yàn)證成功,Gatekeeper將創(chuàng)建一個(gè)身份驗(yàn)證(auth)令牌。這是一個(gè)標(biāo)準(zhǔn)格式的簽名令牌(如AOSP中指定的),旨在防止重放攻擊。此令牌證明用戶已通過(guò)身份驗(yàn)證,需要發(fā)送給Keymaster TA以解鎖綁定身份驗(yàn)證的密鑰。如果身份驗(yàn)證嘗試失敗,Gatekeeper的節(jié)流機(jī)制就會(huì)啟動(dòng),使暴力破解變得不可能。這是與實(shí)現(xiàn)相關(guān)的,但通常TA存儲(chǔ)有關(guān)每個(gè)失敗請(qǐng)求的時(shí)間的信息,并在此類失敗請(qǐng)求的頻率變得可疑時(shí)開(kāi)始返回錯(cuò)誤。當(dāng)用戶再次成功進(jìn)行身份驗(yàn)證時(shí),計(jì)數(shù)器將重置。

合成密碼

用戶通過(guò)身份驗(yàn)證后,系統(tǒng)就有了一個(gè)有效的applicationId。在真正成為CE密鑰之前,還需要經(jīng)過(guò)幾個(gè)步驟。對(duì)我們來(lái)說(shuō),第一個(gè)也是更有趣的是合成密碼的推導(dǎo)過(guò)程。檢索到這些信息后,還有許多一些操作,但是這些步驟不需要用戶或某些受信任的組件提供任何信息。

在安全芯片的加持下,Android數(shù)據(jù)加密越來(lái)越難被竊取在安全芯片的加持下,Android數(shù)據(jù)加密越來(lái)越難被竊取

合成密碼存儲(chǔ)在Android文件系統(tǒng)中,必須用兩個(gè)不同的密鑰解密。第一個(gè)是存儲(chǔ)在Android Keystore中的常規(guī)密鑰,該密鑰受TEE保護(hù)并綁定身份驗(yàn)證。由于這些密鑰永遠(yuǎn)不會(huì)離開(kāi)TEE,因此它們以加密形式存儲(chǔ),并且需要在Keymaster TA中進(jìn)行解密。除此之外,如上所述,只有當(dāng)命令還包含先前由Gatekeeper生成的驗(yàn)證令牌并且仍然有效時(shí),才能使用它們。一旦在TEE中完成了第一次解密,就使用哈希的applicationId作為密鑰再次解密中間緩沖區(qū)。注意,這里的AES是使用GCM模式完成的,如果密鑰出現(xiàn)問(wèn)題,則由于標(biāo)記不匹配而導(dǎo)致操作失敗。

此時(shí),攻擊者基本上需要完成三件事才能恢復(fù)CE密鑰。首先,他們需要能夠檢索特權(quán)用戶擁有的文件,這很可能是利用了一個(gè)包含多個(gè)漏洞的內(nèi)核漏洞。然后,他們還必須篡改TEE,要么從Keymaster泄露所需的密鑰,要么攻擊Gatekeeper中的憑證驗(yàn)證和認(rèn)證令牌生成。最后,他們需要對(duì)獲得的信息執(zhí)行暴力破解。

用于Gatekeeper的PoC

研究人員在三星A22設(shè)備(更準(zhǔn)確地說(shuō)是在A226B和A225F)上實(shí)現(xiàn)了PoC,這些設(shè)備使用來(lái)自Mediatek 的兩個(gè)易受攻擊的SoC: MT6769V和MT6833V,可以使用MTKClient利用。該工具與下載模式(類似于高通soc上的EDL模式)交互,該模式暴露了一個(gè)USB接口,該接口最初用于在其上執(zhí)行支持操作(例如刷新固件)。要觸發(fā)該漏洞,就必須物理訪問(wèn),并且在某些設(shè)備(如A225F)上,必須在設(shè)備PCB上短路兩個(gè)引腳才能進(jìn)入下載模式。一旦設(shè)備以正確的模式啟動(dòng),該工具利用Boot ROM漏洞,然后修改BL2(在Mediatek 啟動(dòng)模式中稱為preloader)以禁用下一個(gè)安全啟動(dòng)檢查,最后將其加載到設(shè)備上并在其上啟動(dòng)。

在安全芯片的加持下,Android數(shù)據(jù)加密越來(lái)越難被竊取在安全芯片的加持下,Android數(shù)據(jù)加密越來(lái)越難被竊取

但要實(shí)現(xiàn)攻擊,就需要修復(fù)以下組件:

1.BL3,它被稱為小內(nèi)核(簡(jiǎn)稱為L(zhǎng)K),禁用Android驗(yàn)證啟動(dòng)檢查,因?yàn)槲覀兿胍獑?dòng)修改的Android映像;

2.Android系統(tǒng)(在本示例中為啟動(dòng)鏡像),授予我們r(jià)oot訪問(wèn)權(quán)限,并修改供應(yīng)商分區(qū)中存在的Gatekeeper Trusted應(yīng)用程序;

3.TEE操作系統(tǒng)(稱為T(mén)EEGRIS)禁用對(duì)受信任應(yīng)用程序的驗(yàn)證。

獲得Android系統(tǒng)最高權(quán)限(Android Rooting)

為了實(shí)現(xiàn)Android Rooting,我們使用了Magisk。用修復(fù)的Gatekeeper TA替換它,我們只需要在SPU分區(qū)中創(chuàng)建一個(gè)新文件,然后Magisk的init程序在啟動(dòng)時(shí)將其安裝在現(xiàn)有文件的位置。這種方法的優(yōu)點(diǎn)是,它可以簡(jiǎn)單地替換任何文件,因?yàn)槲覀冎恍枰獙⑺旁趶?fù)制目錄樹(shù)的SPU分區(qū)中。

一旦完成,我們就可以對(duì)設(shè)備進(jìn)行root訪問(wèn),然后使用它來(lái)訪問(wèn)CE密鑰派生中涉及的文件。

修復(fù)TEEGRIS

TEEGRIS是三星設(shè)計(jì)的TrustZone操作系統(tǒng),可以在Exynos和Mediatek 的soc上找到。它的設(shè)計(jì)和逆向工程已經(jīng)被介紹了很多次,所以本文只關(guān)注我們需要修復(fù)的部分來(lái)實(shí)現(xiàn)我們的目標(biāo):執(zhí)行修改后的TA。在本文的示例中,我們決定修復(fù)Gatekeeper,以繞過(guò)句柄驗(yàn)證并始終生成有效的驗(yàn)證令牌。

TEEGRIS分為幾個(gè)鏡像:

tee1.img:它包含Arm Trusted Firmware(在監(jiān)視器模式下以最高權(quán)限執(zhí)行-EL3)、Secure World內(nèi)核和一個(gè)名為userboot.so的二進(jìn)制文件。最后一個(gè)對(duì)我們來(lái)說(shuō)非常重要,因?yàn)樗糜诩虞d和驗(yàn)證TEEGRIS的根文件系統(tǒng)。

tzar.img:這是TEEGRIS的根文件系統(tǒng),以逆向工程的自定義壓縮格式存儲(chǔ)。它包含可供其他庫(kù)使用但也可供TA使用的庫(kù),以及二進(jìn)制文件,其中包括一個(gè)名為root_task的二進(jìn)制文件,負(fù)責(zé)驗(yàn)證和運(yùn)行Android提供的TA。

super.img:它是包含幾個(gè)邏輯分區(qū)的Android主分區(qū)。其中之一是供應(yīng)商分區(qū),包含大多數(shù)TA,包括Gatekeeper。

在安全芯片的加持下,Android數(shù)據(jù)加密越來(lái)越難被竊取在安全芯片的加持下,Android數(shù)據(jù)加密越來(lái)越難被竊取

總而言之,我們需要修復(fù)userboot。所以二進(jìn)制禁用驗(yàn)證的TZAR。然后,我們修復(fù)root_task以禁用TA的驗(yàn)證,這樣終于可以修復(fù)Gatekeeper了。

修復(fù)Gatekeeper

Gatekeeper用于驗(yàn)證用戶的憑證。驗(yàn)證使用密鑰派生函數(shù)(KDF)生成一個(gè)惟一的值,然后可以將該值與作為參數(shù)傳遞的預(yù)期值進(jìn)行比較。在Trusty TEE實(shí)現(xiàn)中,KDF實(shí)際上是一個(gè)使用內(nèi)部密鑰的HMAC。對(duì)于TEEGRIS來(lái)說(shuō),KDF似乎是一個(gè)自定義的,顯然是在加密驅(qū)動(dòng)程序中實(shí)現(xiàn)的,至少在基于exynos的設(shè)備上,它依賴于內(nèi)部加密處理器。

如果憑證匹配,Gatekeeper生成一個(gè)auth_token并將其發(fā)送回Android,以便它可以附加到Keymaster請(qǐng)求。需要注意的是,這是Keymaster解密身份驗(yàn)證綁定密鑰所必需的,例如加密的合成密碼。這里有幾個(gè)選項(xiàng),但我們決定修復(fù)兩個(gè)值之間的比較,以確保接受任何憑證。這是可能的,因?yàn)閍uth_token生成機(jī)制不使用憑證中的任何位。由于進(jìn)行過(guò)修改,每次我們輸入一些憑證時(shí),Gatekeeper都會(huì)生成令牌并返回成功,使系統(tǒng)相信它可以繼續(xù)下一步來(lái)解鎖設(shè)備。可以肯定的是,它不能用錯(cuò)誤的憑證解密用戶數(shù)據(jù)。但是在嘗試之前,Keymaster任務(wù)必須執(zhí)行合成密碼的第一次解密(它被加密了兩次)。

在安全芯片的加持下,Android數(shù)據(jù)加密越來(lái)越難被竊取在安全芯片的加持下,Android數(shù)據(jù)加密越來(lái)越難被竊取

我們可以按照這個(gè)辦法盜取第一個(gè)AES解密操作的結(jié)果。該設(shè)備是根設(shè)備,使用Frida,我們可以在SyntheticPasswordCrypto.decryptBlob中暫停請(qǐng)求該操作的system_server進(jìn)程。檢索到該值后,我們就可以開(kāi)始強(qiáng)制使用憑據(jù)了。

暴力破解憑證

暴力破解的代碼如下所示:

在安全芯片的加持下,Android數(shù)據(jù)加密越來(lái)越難被竊取在安全芯片的加持下,Android數(shù)據(jù)加密越來(lái)越難被竊取

從設(shè)備加密的文件中檢索scrypt的參數(shù)。顧名思義,value_leaked_from_keymaster就是我們通過(guò)Frida盜取的值。由于此AES_Decrypt函數(shù)背后使用的GCM操作模式,如果密鑰是錯(cuò)誤的,解密將失敗,我們知道我們需要選擇另一個(gè)密碼。如果成功,就意味著我們找到了正確的值。具體視頻請(qǐng)點(diǎn)此

就性能而言,暴力執(zhí)行腳本肯定可以改進(jìn)。如上所述,即使只是簡(jiǎn)單地將它移動(dòng)到一個(gè)一般功能的VM上,也有顯著的改進(jìn)。使用專用硬件會(huì)有所不同,但這不是我們PoC的重點(diǎn),我們更愿意把重點(diǎn)放在實(shí)現(xiàn)暴力執(zhí)行所需的過(guò)程上。

利用安全芯片派生CE密鑰

在安全芯片的加持下,Android數(shù)據(jù)加密越來(lái)越難被竊取在安全芯片的加持下,Android數(shù)據(jù)加密越來(lái)越難被竊取

上圖顯示了使用安全芯片時(shí)如何派生CE密鑰。該模式與上一部分中介紹的模式非常相似,主要區(qū)別在于引入了一個(gè)名為Weaver的新組件,并用于生成applicationId。

使用Weaver進(jìn)行身份驗(yàn)證

Weaver是一個(gè)依賴于安全芯片來(lái)存儲(chǔ)密鑰和值的服務(wù),每個(gè)值被分配到一個(gè)唯一的插槽。它公開(kāi)了一個(gè)由三個(gè)命令組成的非常簡(jiǎn)單的API:

Read:在輸入中提供插槽編號(hào)和密鑰,如果密鑰正確,則接收相關(guān)值;

write:提供要存儲(chǔ)的插槽編號(hào)、密鑰和值;

getConfig:檢索Weaver實(shí)現(xiàn)的配置信息。

與Gatekeeper類似,Weaver實(shí)現(xiàn)了一種節(jié)流機(jī)制,該機(jī)制在多次讀取嘗試失敗后生效。

在安全芯片的加持下,Android數(shù)據(jù)加密越來(lái)越難被竊取在安全芯片的加持下,Android數(shù)據(jù)加密越來(lái)越難被竊取

當(dāng)安全芯片可用時(shí),使用scrypt生成的令牌將轉(zhuǎn)換為Weaver密鑰,然后將該密鑰與存儲(chǔ)在設(shè)備加密文件(/data/system_de/

最后,將令牌和哈希密鑰組合起來(lái)生成applicationId,從中派生出的CE密鑰與Gatekeeper模式中提供的密鑰相同。

Weaver的PoC

隨著安全芯片在越來(lái)越多的設(shè)備中變得越來(lái)越流行,Weaver是Android系統(tǒng)中相對(duì)較新的成員。在Quarkslab,研究人員花了很多時(shí)間研究Titan M芯片,這是谷歌在Pixel 3中引入的。

總結(jié)

Android磁盤(pán)加密絕對(duì)是一個(gè)突破性的功能,其安全性可以說(shuō)是密不透風(fēng),設(shè)計(jì)者通過(guò)組合不同組件的功能,很好的保護(hù)了Android系統(tǒng)數(shù)據(jù),攻擊者只有找到非常強(qiáng)大的漏洞才能發(fā)起攻擊。另外,受信任的芯片又把安全級(jí)別提高到了一個(gè)新的高度。

本文翻譯自:https://blog.quarkslab.com/android-data-encryption-in-depth.html如若轉(zhuǎn)載,請(qǐng)注明原文地址

責(zé)任編輯:武曉燕 來(lái)源: 嘶吼網(wǎng)
相關(guān)推薦

2022-09-13 11:15:33

加密貨幣區(qū)塊鏈

2021-04-15 13:48:08

視頻監(jiān)控視頻分析智能安防

2021-12-21 10:33:22

APIWeb安全

2023-03-02 08:00:55

包管理工具pnpm 包

2022-12-13 11:13:34

數(shù)據(jù)傳感器

2021-04-02 13:00:51

大數(shù)據(jù)數(shù)據(jù)采集

2022-08-31 11:24:38

黑客加密貨幣漏洞

2019-07-18 10:58:06

CIO數(shù)據(jù)保護(hù)網(wǎng)絡(luò)安全

2021-03-12 10:31:17

數(shù)據(jù)中心加密數(shù)據(jù)中心管理

2017-12-26 15:34:55

2011-12-01 09:33:17

Google微軟

2022-05-17 09:17:45

JS 代碼越來(lái)越難讀

2024-02-21 09:44:33

Rust前端

2017-10-27 12:28:14

云端遷移云計(jì)算

2022-05-27 11:44:53

JS代碼

2021-08-03 11:09:41

智能手機(jī)功能技術(shù)

2017-02-14 14:07:08

2013-08-01 13:21:47

2020-08-28 12:19:32

智慧城市網(wǎng)絡(luò)安全物聯(lián)網(wǎng)

2010-06-03 10:54:23

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 日韩一区在线视频 | 精品99在线| 一区二区三区在线观看视频 | 日韩高清国产一区在线 | 欧美二区乱c黑人 | 久久精品中文 | 亚洲一区在线播放 | 久久久免费 | 亚洲精品一区二区三区四区高清 | 91精品国产乱码久久久久久久久 | 热久久999| 久久久精品 | 欧美日韩国产一区二区三区 | 国产一区 在线视频 | 欧美视频成人 | 国产欧美在线播放 | 欧美 日韩 国产 在线 | 黄色免费观看 | 玖玖色在线视频 | 成人3d动漫一区二区三区91 | 一区2区 | 在线观看国产wwwa级羞羞视频 | 国产亚洲欧美日韩精品一区二区三区 | 欧美日韩1区2区3区 欧美久久一区 | 黄色在线免费观看 | 又黑又粗又长的欧美一区 | 成人国产精品免费观看 | www.久久.com | 一级毛片免费 | 国产成人在线视频免费观看 | av免费电影在线 | 欧美精品综合在线 | 天天摸天天看 | 国产精品免费在线 | 中文字幕av在线 | 天天舔天天 | 成年精品 | 99精品国自产在线观看 | 成人免费黄色片 | 青春草91 | 亚洲乱码国产乱码精品精98午夜 |