国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

我的NPI項(xiàng)目之Android 安全系列 -- Keymaster到底是個(gè)什么

這篇具有很好參考價(jià)值的文章主要介紹了我的NPI項(xiàng)目之Android 安全系列 -- Keymaster到底是個(gè)什么。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

最近因?yàn)橐恢痹谡{(diào)研獨(dú)立secure element集成的工作,不巧的是目前使用的高通平臺只有NFC-eSE的方案。高通目前也并不支持獨(dú)立的eSE集成,codebase中并無相對應(yīng)的代碼。舉個(gè)例子,目前使用的STM的一款eSE,但是這款eSE的開發(fā)STM還沒有完成(搞不清楚,為什么就可以被選來用于項(xiàng)目),STM需要將code release給到高通進(jìn)行validation的操作,高通集成進(jìn)codebase之后,才能使可用狀態(tài),我理解這個(gè)也是進(jìn)Qualcomm PVL的基本方法。

說一下Keymaster,之前的項(xiàng)目上是有過Keymaster相關(guān)經(jīng)驗(yàn)的。Qualcomm SDM660的平臺(至少是Android6 launch)基于這個(gè)平臺,我們在Android N上launch了一個(gè)產(chǎn)品,產(chǎn)品為Gpc60,當(dāng)時(shí)對應(yīng)的keymaster1.0。通過觀察,ota包解壓后,里面有個(gè)兩個(gè)鏡像文件,keymaster.img

這里插一個(gè)Google version binding的項(xiàng)目:https://source.android.com/docs/security/features/keystore/version-binding?hl=zh-cn

通過綁定的系統(tǒng)版本和安全補(bǔ)丁信息,阻止針對攻擊的系統(tǒng)回滾!詳細(xì)的后面繼續(xù)深度研究一下 。?

將OTA包解壓后,內(nèi)容如下:

keymaster分區(qū),安全,android,partition

這里最大的內(nèi)容是,payload.bin文件,其它部分后面再看。通過,payload_dumper工具能夠?qū)ayload.bin 的內(nèi)容導(dǎo)出:

keymaster分區(qū),安全,android,partition

可以看到里面的keymaster.img,update engine能夠通過分區(qū)表中的分區(qū)名稱查找鏡像文件,并用來更新分區(qū)。分區(qū)表的內(nèi)容通常和Emergency download的tool中對應(yīng)的xml分區(qū)表是一致的。通常,分區(qū)表中內(nèi)容是由Qualcomm進(jìn)行定義的,codebase中自帶。

那好,這里留一個(gè)疑問,keymaster.img和androd.hardware.keymaster@1.0-service的關(guān)系是什么?

為弄清楚上面這個(gè)問題,繼續(xù)理解Qualcomm Android Security中的keymaster相關(guān)的技術(shù)。有幸經(jīng)歷了三個(gè)高通平臺和Android6~Android14的8個(gè)Android的OS的開發(fā)過程。就先從Android6的keymaster1開始。在Android6(M)中,我們可以看到,要支持keymaster,

首先要物理分區(qū)表進(jìn)行配置,早期都是使用的emmc作為存儲。配置如下:

<partition label="keymaster" size_in_kb="256" type="4F772165-0F3C-4BA3- BBCB-A829E9C969F9" bootable="false" readonly="false" filename="keymaster.mbn" />
?

這里還涉及tz和metadata的內(nèi)容,tz的具體內(nèi)容暫時(shí)先不看,主要看下metadata。分區(qū)表中,有單獨(dú)的metadata的分區(qū)配置,但是目前也不是很清楚具體的作用,暫時(shí)按下不表。但是,可以了解一下vbmeta。

vbmeta 是Android 8.0 以后引入的一個(gè)機(jī)制,用于保證系統(tǒng)啟動過程的完整性和安全性。 vbmeta 是一個(gè)包含數(shù)字簽名的元數(shù)據(jù)文件,其中記錄了系統(tǒng)啟動過程中需要校驗(yàn)的boot、recovery、system 和vendor 分區(qū)的完整性信息,以及用于校驗(yàn)這些分區(qū)完整性的公鑰。在分區(qū)表中通常由如下的分區(qū)設(shè)定:

<partition?label="vbmeta_a"?size_in_kb="64"?type="4b7a15d6-322c-42ac-8110-88b7da0c5d77"?bootable="false"?readonly="true"?filename="vbmeta.img"/>

<partition?label="vbmeta_b"?size_in_kb="64"?type="77036CD4-03D5-42BB-8ED1-37E5A88BAA34"?bootable="false"?readonly="true"?filename=""/>? //沒有文件名稱?

<partition?label="vbmeta_system_a"?size_in_kb="64"?type="1344859D-3A6A-4C14-A316-9E696B3A5400"?bootable="false"?readonly="true"?filename="vbmeta_system.img"/>

<partition?label="vbmeta_system_b"?size_in_kb="64"?type="FE3AB853-5B66-4D4A-BF85-8D90AF1C2C4A"?bootable="false"?readonly="true"?filename=""/> //沒有文件名稱?

看下verify boot是什么概念:先看看Google的相關(guān)概念,簡單的流程圖如下:

keymaster分區(qū),安全,android,partition

簡單的說就是簽名和驗(yàn)簽的過程, 確保用本公司自己的簽名工具簽過的image來啟動機(jī)器。簽名的過程就是獲取分區(qū)的摘要(摘要通常就是一個(gè)數(shù)據(jù)塊的hash值),使用私鑰對摘要進(jìn)行加密,并將加密文件和分區(qū)文件打包并刷到機(jī)器的磁盤中,例如mmc或者ufs中。

這里涉及到一個(gè)問題,這里的signature是存儲在哪個(gè)位置?通過相關(guān)文檔,發(fā)現(xiàn)是存在了vbmeta.img中了;

驗(yàn)證(verify)的過程就比較簡單了,同樣對分區(qū)取摘要為摘要A,對簽名進(jìn)行解密得到之前簽名時(shí)的分區(qū)鏡像文件的摘要為摘要B,對A/B進(jìn)行比較,如果摘要一直,那么驗(yàn)簽成功。針對Android的Verified boot后面要重點(diǎn)講一下。

這里繼續(xù)keymaster的故事,看一下一些名稱需要理解和記憶:

AndroidKeystore?是供應(yīng)用訪問 Keystore 功能的 Android Framework API 和組件。它是作為標(biāo)準(zhǔn) Java Cryptography Architecture API 的擴(kuò)展程序?qū)崿F(xiàn)的,包含在應(yīng)用自己的進(jìn)程空間中運(yùn)行的 Java 代碼AndroidKeystore?通過將與密鑰庫行為有關(guān)的應(yīng)用請求轉(zhuǎn)發(fā)到密鑰庫守護(hù)程序執(zhí)行這些請求。//最好自己寫一下測試app進(jìn)行調(diào)試看看;

密鑰庫守護(hù)程序是 Android 系統(tǒng)中的一個(gè)守護(hù)程序,該程序通過?Binder API?提供對所有密鑰庫功能的訪問權(quán)限(java的后端,AIDL)。密鑰庫守護(hù)程序負(fù)責(zé)存儲“密鑰 blob”。密鑰 blob 中包含已加密的實(shí)際密鑰材料,因此密鑰庫可以存儲這些材料,但無法使用或顯示這些材料。(比如說?)

keymasterd?是一個(gè) HIDL 服務(wù)器,可提供對 Keymaster TA 的訪問權(quán)限。(此名稱未進(jìn)行標(biāo)準(zhǔn)化,僅用于說明概念。)(keymaster@1.0-service.rc/?keymaster@4.0-service.rc/keymaster@3.0-service). e.g :keymaster@3.0-service, 這個(gè)便是keymasterd的一個(gè)實(shí)例。

keymaster分區(qū),安全,android,partition

Keymaster TA(可信應(yīng)用)是在安全環(huán)境(大多數(shù)情況為 ARM SoC 上的 TrustZone)中運(yùn)行的軟件。它可提供所有安全的密鑰庫操作,能夠訪問原始密鑰材料,在密鑰上驗(yàn)證所有訪問權(quán)限控制條件,等等。(ps操作命令可以能訪問到嗎?肯定是不能夠的,因?yàn)檫\(yùn)行在TEE中);

LockSettingsService?是負(fù)責(zé)用戶身份驗(yàn)證(包括密碼和指紋)的 Android 系統(tǒng)組件。它不是密鑰庫的一部分卻與其相關(guān),因?yàn)楹芏嗝荑€庫密鑰操作都需要對用戶進(jìn)行身份驗(yàn)證。LockSettingsService?與 Gatekeeper TA 和 Fingerprint TA 進(jìn)行交互以獲取身份驗(yàn)證令牌,并將其提供給密鑰庫守護(hù)程序,這些令牌最終將由 Keymaster TA 應(yīng)用使用。

Gatekeeper TA(可信應(yīng)用)是在安全環(huán)境中運(yùn)行的另一個(gè)組件,它負(fù)責(zé)驗(yàn)證用戶密碼并生成身份驗(yàn)證令牌(用于向 Keymaster TA 證明已在特定時(shí)間點(diǎn)完成對特定用戶的身份驗(yàn)證)。

Fingerprint TA(可信應(yīng)用)是在安全環(huán)境中運(yùn)行的另一個(gè)組件,它負(fù)責(zé)驗(yàn)證用戶指紋并生成身份驗(yàn)證令牌(用于向 Keymaster TA 證明已在特定時(shí)間點(diǎn)完成對特定用戶的身份驗(yàn)證)

繼續(xù)回到上面的問題:keymaster.img和androd.hardware.keymaster@1.0-service的關(guān)系是什么?手邊剛好有Android12 的代碼作為O設(shè)備的launch的設(shè)備MR。 對應(yīng)的service是android.hardware.keymaster@3.0-service。對應(yīng)的partition.xml內(nèi)容如下:

keymaster分區(qū),安全,android,partition

那就要看看keymaster64.mbn的編譯腳本,就可以知道keymaster64.mbn的內(nèi)容。但開始可以確認(rèn)的是,android.hardware.keymaster@3.0-service 是屬于vendor分區(qū)的一部分,會被打包到vendor.img中。有點(diǎn)意思,keymaster64.mdn的內(nèi)容到底是啥?(引導(dǎo)加載密鑰?)

keymaster分區(qū),安全,android,partition

從高通得知,這個(gè)是高通平臺封裝的TA,是通過編譯腳本打包進(jìn)ROM包中。有一個(gè)問題是,那么TEE的整個(gè)運(yùn)行環(huán)境是如何更新的?文章來源地址http://www.zghlxwxcb.cn/news/detail-840288.html

到了這里,關(guān)于我的NPI項(xiàng)目之Android 安全系列 -- Keymaster到底是個(gè)什么的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • CocoaPods 在iOS開發(fā)中養(yǎng)活了這么多項(xiàng)目,它到底是個(gè)啥?

    對于iOS開發(fā)者而言,CocoaPods并不陌生,通過pod相關(guān)的命令操作,就可以很方便的將項(xiàng)目中用到的三方依賴庫資源集成到項(xiàng)目環(huán)境中,大大的提升了開發(fā)的效率。CocoaPods作為iOS項(xiàng)目的包管理工具,它在命令行背后做了什么操作?而又是通過什么樣的方式將命令指令聲明出來供我

    2024年02月08日
    瀏覽(20)
  • socket 到底是個(gè)啥

    socket 到底是個(gè)啥

    ? 哈嘍大家好,我是咸魚 ? 我相信大家在面試過程中或多或少都會被問到這樣一個(gè)問題: 你能解釋一下什么是 socket 嗎 ? 我記得我當(dāng)初的回答很是淺顯:socket 也叫套接字,用來負(fù)責(zé)不同主機(jī)程序之間的網(wǎng)絡(luò)通信連接,socket 的表現(xiàn)方式由四元組(ip地址:端口)組成 ? 那么今

    2023年04月13日
    瀏覽(21)
  • Android keymint(keymaster)一RKP

    RKP is remote key provisioing. 以前我們生產(chǎn)手機(jī)平板項(xiàng)目的時(shí)候,是從Google申請attestation key(google key),在產(chǎn)線使用工具寫入手機(jī)或平板設(shè)備中。 這種寫入的方式有一個(gè)安全隱患: 從Google申請的證書和密鑰,有私鑰泄露的隱患,因此從Android S開始,google提出了一個(gè)RKP的做法。簡單來

    2024年02月15日
    瀏覽(75)
  • ?Web3到底是個(gè)啥?

    Web3到底是個(gè)啥? Web3是近兩年來科技領(lǐng)域最火熱的概念之一,但是目前對于Web3的定義卻仍然沒有形成標(biāo)準(zhǔn)答案,相當(dāng)多對于Web3的理解,都是建立在虛擬貨幣行業(yè)(即俗稱的“幣圈”)的邏輯基礎(chǔ)之上的。 區(qū)塊鏈服務(wù)網(wǎng)絡(luò)(BSN)的核心理念,是在互聯(lián)網(wǎng)上推動建立一個(gè)新的公

    2024年02月14日
    瀏覽(20)
  • Web3到底是個(gè)啥?

    Web3是近兩年來科技領(lǐng)域最火熱的概念之一,但是目前對于Web3的定義卻仍然沒有形成標(biāo)準(zhǔn)答案,相當(dāng)多對于Web3的理解,都是建立在虛擬貨幣行業(yè)(即俗稱的“幣圈”)的邏輯基礎(chǔ)之上的。 區(qū)塊鏈服務(wù)網(wǎng)絡(luò)(BSN)的核心理念,是在互聯(lián)網(wǎng)上推動建立一個(gè)新的公共層,服務(wù)于各行

    2024年02月14日
    瀏覽(16)
  • vnpy到底是個(gè)什么東西?

    vnpy到底是個(gè)什么東西?

    vnpy定位是量化交易平臺,提供從交易API對接到策略自動交易的完整解決方案,對接了國內(nèi)外諸多不同類型的金融市場:證券、期貨、期權(quán)、外匯、數(shù)字貨幣等。有回測功能,但支持較弱。 vnpy對windows支持較好,提供了python發(fā)行版,其內(nèi)置了最新版的vnpy框架以及vnpy量化管理平

    2024年02月11日
    瀏覽(21)
  • ChatGPT到底是個(gè)啥 - 它甚至?xí)凸氛f話

    ChatGPT到底是個(gè)啥 - 它甚至?xí)凸氛f話

    寫在前面:博主是一只經(jīng)過實(shí)戰(zhàn)開發(fā)歷練后投身培訓(xùn)事業(yè)的“小山豬”,昵稱取自動畫片《獅子王》中的“彭彭”,總是以樂觀、積極的心態(tài)對待周邊的事物。本人的技術(shù)路線從Java全棧工程師一路奔向大數(shù)據(jù)開發(fā)、數(shù)據(jù)挖掘領(lǐng)域,如今終有小成,愿將昔日所獲與大家交流一二

    2024年02月03日
    瀏覽(26)
  • AIGC到底是個(gè)啥? AI和AIGC的區(qū)別有哪些

    AIGC到底是個(gè)啥? AI和AIGC的區(qū)別有哪些

    ? 說來說去,到底什么是AIGC呢?AIGC是人工智能生成內(nèi)容的縮寫,是一種基于生成對抗網(wǎng)絡(luò)(GAN)、大型預(yù)訓(xùn)練模型等人工智能技術(shù)的方法,通過對已有數(shù)據(jù)進(jìn)行學(xué)習(xí)和模式識別,以適當(dāng)?shù)姆夯芰ι上嚓P(guān)內(nèi)容的技術(shù),AIGC的應(yīng)用領(lǐng)域有很多例如,AIGC可以用于自動生成新聞、

    2024年02月08日
    瀏覽(16)
  • 越來越火的Serverless(無服務(wù)器計(jì)算),到底是個(gè)啥?

    越來越火的Serverless(無服務(wù)器計(jì)算),到底是個(gè)啥?

    今天這篇文章,我們來聊一個(gè)云計(jì)算領(lǐng)域的熱門概念——Serverless。 到底什么是Serverless? 英語好的童鞋,可能一眼就看出來了,Serverless是由Server和less兩個(gè)詞根組成的詞。從字面上理解,就是“無服務(wù)器”。 行業(yè)通常所說的Serverless,主要是指 “無服務(wù)器計(jì)算(Serverless Comp

    2024年02月03日
    瀏覽(22)
  • 云原生到底是個(gè)啥玩意?從云端降臨的超級技術(shù):云原生

    云原生到底是個(gè)啥玩意?從云端降臨的超級技術(shù):云原生

    目錄 福利:文末分享云原生相關(guān)全套資料哦 一、云計(jì)算?云原生? 二、云原生帶來什么好處 7個(gè)字:隔離、彈性、自動化。 三、云原生的基礎(chǔ)知識 四、云原生中最重要的概念 1、虛機(jī) 2、容器 3、容器編排 4、VPC 5、微服務(wù)(Microservices) 6、服務(wù)網(wǎng)格(Service Mesh) 7、無服務(wù)器

    2024年02月08日
    瀏覽(19)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包