當(dāng)前位置:首頁(yè) > 公眾號(hào)精選 > 嵌入式與Linux那些事
[導(dǎo)讀]secure boot是指確保在一個(gè)平臺(tái)上運(yùn)行的程序的完整性的過(guò)程或機(jī)制。secure boot會(huì)在固件和應(yīng)用程序之間建立一種信任關(guān)系。在啟用secure boot功能后,未經(jīng)簽名的固件或程序?qū)⒉荒苓\(yùn)行在該設(shè)備上。

什么是secure boot

secure boot是指確保在一個(gè)平臺(tái)上運(yùn)行的程序的完整性的過(guò)程或機(jī)制。secure boot會(huì)在固件和應(yīng)用程序之間建立一種信任關(guān)系。在啟用secure boot功能后,未經(jīng)簽名的固件或程序?qū)⒉荒苓\(yùn)行在該設(shè)備上。

通過(guò)這種方式,可以保護(hù)操作系統(tǒng)免受惡意攻擊。secure boot一般使用公鑰/私鑰來(lái)驗(yàn)證固件和應(yīng)用程序的簽名是否合法。

為什么需要secure boot

嵌入式設(shè)備啟動(dòng)一般從bootrom開(kāi)始,逐級(jí)加載spl,uboot,linux,應(yīng)用程序。

該流程中由bootrom開(kāi)始,逐級(jí)通過(guò)spl、uboot以啟動(dòng)linux操作系統(tǒng)。

我們假設(shè)spl、uboot和linux鏡像都被保存在flash上,則在啟動(dòng)時(shí),各級(jí)啟動(dòng)程序都需要從flash中加載下一級(jí)啟動(dòng)鏡像,其流程示意圖如下:

如果以上流程未執(zhí)行secure boot,則flash中的鏡像一旦被惡意攻擊者替換掉,那么最終系統(tǒng)上將會(huì)運(yùn)行被攻擊者篡改過(guò)的固件。

假設(shè)linux和rootfs被替換掉以后,那么啟動(dòng)后整個(gè)系統(tǒng)都將掌握在攻擊者的手里。從而導(dǎo)致在操作系統(tǒng)之上構(gòu)建的所有安全機(jī)制都形同虛設(shè)。

secure boot預(yù)備知識(shí)

安全級(jí)別

ARMv8分為Secure World和Non-Secure World(Normal World),四種異常級(jí)別從高到低分別為EL3,EL2,EL1,EL0。

EL3具有最高管理權(quán)限,負(fù)責(zé)安全監(jiān)測(cè)和Secure World和Normal World之間的切換。

EL2主要提供了對(duì)虛擬化的支持。

EL1是一個(gè)特權(quán)模式,能夠執(zhí)行一些特權(quán)指令,用于運(yùn)行各類操作系統(tǒng),在Secure World則是secure OS(如TEE)。

EL0是無(wú)特權(quán)模式,所有APP應(yīng)用都在EL0。

啟動(dòng)流程

上圖中的BL1,BL2,BL31,BL32,BL33分別對(duì)應(yīng)如下功能:

BL1

BL1是信任鏈的根所在,一般是固化在芯片內(nèi)部的一段代碼,叫做bootrom,具有最高的執(zhí)行權(quán)限EL3,在 CPU 出廠時(shí)就被寫(xiě)死了。

bootrom通常會(huì)被映射到它專屬的一塊內(nèi)存地址中,但是如果你嘗試向這塊地址寫(xiě)入內(nèi)容,一般都會(huì)出錯(cuò)。

芯片上電或復(fù)位后,bootrom的代碼會(huì)從固定位置加載BL2來(lái)初始化sram,在BL2 驗(yàn)簽通過(guò)后會(huì)跳轉(zhuǎn)到BL2 ,以保證可信任執(zhí)行。

BL2

BL2和BL1一樣,也是運(yùn)行在EL3特權(quán)級(jí)別的,不同的是BL2在flash中的一段可信安全啟動(dòng)代碼,它的可信建立在BL1對(duì)它的驗(yàn)證,主要完成一些平臺(tái)相關(guān)的初始化,比如對(duì)ddr的初始化等。

在完成初始化后尋找BL31或者BL33進(jìn)行執(zhí)行;如果找到了BL31則不會(huì)繼續(xù)調(diào)用BL33,如果沒(méi)有BL31則BL33必須有。

BL31

BL31作為EL3最后的安全堡壘,它不像BL1和BL2是一次性運(yùn)行的。如它的runtime名字暗示的那樣,它通過(guò)SMC指令為Non-Secure持續(xù)提供設(shè)計(jì)安全的服務(wù),在Secure World和Non-Secure World之間進(jìn)行切換。它的主要任務(wù)是找到BL32,驗(yàn)簽,并運(yùn)行BL32。

BL32

BL32是所謂的secure os,在ARM平臺(tái)下是 ARM 家的 Trusted Execution Environment(TEE)實(shí)現(xiàn)。OP-TEE 是基于ARM TrustZone硬件架構(gòu)所實(shí)現(xiàn)的軟件Secure OS。

一般在BL32會(huì)運(yùn)行OPTee OS + 安全app,它是一個(gè)可信安全的OS運(yùn)行在EL1并在EL0啟動(dòng)可信任APP(如指紋信息,移動(dòng)支付的密碼等),并在Trust OS運(yùn)行完成后通過(guò)SMC指令返回BL31,BL31切換到Non-Seucre World繼續(xù)執(zhí)行BL33。

BL32 在不同的平臺(tái)有不同的實(shí)現(xiàn),Intel 的叫做 Software Guard Extensions(SGX),AMD 的叫做 Platform Security Processor(PSP)

BL33

到了BL33這里就是Normal Wrold了,運(yùn)行的都是非安全固件,也就是我們常見(jiàn)的UEFI firmware或者u-boot,也可能是直接啟動(dòng)Linux kernel。

啟動(dòng)BL1,BL2,BL31,BL32則是一個(gè)完整的ATF信任鏈建立流程(ARM Trusted Firmware),像常見(jiàn)的PSCI(Power State Coordination Interface)功能則是在ATF的BL31上實(shí)現(xiàn)。

最后一張圖完整展示整個(gè)調(diào)用流程:

消息摘要算法和加密算法

消息摘要算法

消息摘要又稱為數(shù)字摘要。它是一個(gè)唯一對(duì)應(yīng)一個(gè)消息或文本的固定長(zhǎng)度的值,它由一個(gè)單向Hash加密函數(shù)對(duì)消息進(jìn)行作用而產(chǎn)生。

如果消息在途中改變了,則接收者通過(guò)對(duì)收到消息的新產(chǎn)生的摘要與原摘要比較,就可知道消息是否被改變了。因此消息摘要保證了消息的完整性。

消息摘要采用單向Hash函數(shù),將需加密的明文"摘要"成一串固定位數(shù)(如128bit)的密文,這一串密文亦稱為數(shù)字指紋(Finger Print),它有固定的長(zhǎng)度,且不同的明文摘要成密文,其結(jié)果總是不同的,而同樣的明文其摘要必定一致。

這樣這串摘要便可成為驗(yàn)證明文是否是“真身”的“指紋”了。

消息摘要具有不可逆性,在消息摘要生成過(guò)程中,會(huì)丟失很多原文的信息,而且無(wú)法找回。一個(gè)好的摘要算法,是極難產(chǎn)生Hash碰撞的,也就是找到另一段明文經(jīng)計(jì)算后產(chǎn)生相同的摘要。

常用的消息摘要算法有MD5,SHA,MAC等。在secure boot中,一般使用sha128,sha256、sha512等算法作為完整性算法。

對(duì)于任意長(zhǎng)度的消息,sha256都會(huì)產(chǎn)生一個(gè)256位的哈希值,稱作消息摘要。這個(gè)摘要相當(dāng)于是個(gè)長(zhǎng)度為32個(gè)字節(jié)的數(shù)組,通常有一個(gè)長(zhǎng)度為64的十六進(jìn)制字符串來(lái)表示,其中1個(gè)字節(jié)=8位,一個(gè)十六進(jìn)制的字符的長(zhǎng)度為4位。

來(lái)看一個(gè)具體的例子:

TrustChain

這句話經(jīng)過(guò)哈希函數(shù)sha256后得到的哈希值為:

3a6fed5fc11392b3ee9f81caf017b48640d7458766a8eb0382899a605b41f2b9

總體上,sha256與MD4、MD5以及HSA-1等哈希函數(shù)的操作流程類似,有了消息摘要算法后,我們就可以通過(guò)它驗(yàn)證鏡像的完整性,從而很容易地就能把被篡改的鏡像給識(shí)別出來(lái)。

加解密算法-RSA

RSA加密是一種非對(duì)稱加密??梢栽诓恢苯觽鬟f密鑰的情況下,完成解密。這能夠確保信息的安全性,避免了直接傳遞密鑰所造成的被破解的風(fēng)險(xiǎn)。

RSA算法是由一對(duì)密鑰來(lái)進(jìn)行加解密的過(guò)程,分別稱為公鑰和私鑰。兩者之間有數(shù)學(xué)相關(guān),該加密算法的原理就是對(duì)一極大整數(shù)做因數(shù)分解的困難性來(lái)保證安全性。通常個(gè)人保存私鑰,公鑰是公開(kāi)的(可能同時(shí)多人持有)。

下面以一個(gè)例子說(shuō)明RSA簽名的過(guò)程。

戰(zhàn)場(chǎng)上,B要給A傳遞一條消息,內(nèi)容為某一指令。

RSA簽名的過(guò)程如下:

(1)A生成一對(duì)密鑰(公鑰和私鑰),私鑰不公開(kāi),A自己保留。公鑰為公開(kāi)的,任何人可以獲取。

(2)A用自己的私鑰對(duì)消息加簽,形成簽名,并將加簽的消息和消息本身一起傳遞給B。

(3)B收到消息后,在獲取A的公鑰進(jìn)行驗(yàn)簽,如果驗(yàn)簽出來(lái)的內(nèi)容與消息本身一致,證明消息是A回復(fù)的。

在這個(gè)過(guò)程中,只有2次傳遞過(guò)程,第一次是A傳遞加簽的消息和消息本身給B,第二次是B獲取A的公鑰。

即使都被敵方截獲,也沒(méi)有危險(xiǎn)性,因?yàn)橹挥蠥的私鑰才能對(duì)消息進(jìn)行簽名,即使知道了消息內(nèi)容,也無(wú)法偽造帶簽名的回復(fù)給B,防止了消息內(nèi)容的篡改。

trustzone  & ATF & OPTEE

trustzone

TrustZone是ARM針對(duì)消費(fèi)電子設(shè)備設(shè)計(jì)的一種硬件架構(gòu),它對(duì)ARM的擴(kuò)展,其實(shí)只是增加了一條指令,一個(gè)配置狀態(tài)位(NS位),以及一個(gè)新的有別于核心態(tài)和用戶態(tài)的安全態(tài)。其目的是為消費(fèi)電子產(chǎn)品構(gòu)建一個(gè)安全框架來(lái)抵御各種可能的攻擊。

TrustZone在概念上將SOC的硬件和軟件資源劃分為安全(Secure World)和非安全(Normal World)兩個(gè)世界,所有需要保密的操作在安全世界執(zhí)行(如指紋識(shí)別、密碼處理、數(shù)據(jù)加解密、安全認(rèn)證等),其余操作在非安全世界執(zhí)行(如用戶操作系統(tǒng)、各種應(yīng)用程序等),安全世界和非安全世界通過(guò)一個(gè)名為Monitor Mode的模式進(jìn)行轉(zhuǎn)換,如圖1:

處理器架構(gòu)上,TrustZone將每個(gè)物理核虛擬為兩個(gè)核,一個(gè)非安全核(Non-secure Core, NS Core),運(yùn)行非安全世界的代碼;和另一個(gè)安全核(Secure Core),運(yùn)行安全世界的代碼。

兩個(gè)虛擬的核以基于時(shí)間片的方式運(yùn)行,根據(jù)需要實(shí)時(shí)占用物理核,并通過(guò)Monitor Mode在安全世界和非安全世界之間切換,類似同一CPU下的多應(yīng)用程序環(huán)境。

不同的是多應(yīng)用程序環(huán)境下操作系統(tǒng)實(shí)現(xiàn)的是進(jìn)程間切換,而Trustzone下的Monitor Mode實(shí)現(xiàn)了同一CPU上兩個(gè)操作系統(tǒng)間的切換。

OPTEE

OPTEE是一個(gè)通常運(yùn)行在 Secure World EL1 權(quán)限中的內(nèi)核程序,比較常見(jiàn)的是基于開(kāi)源的 ARM Trusted Firmware 進(jìn)行擴(kuò)展修改的,別的實(shí)現(xiàn)還有基于 Little Kernel 的,以及一些芯片廠家自己的實(shí)現(xiàn)。

它的主要作用是給 Secure World 中運(yùn)行的程序提供一個(gè)基本的系統(tǒng)內(nèi)核,實(shí)現(xiàn)多任務(wù)調(diào)度、虛擬內(nèi)存管理、System Call 回調(diào)、硬件驅(qū)動(dòng)、IPC 通訊等等。

ATF

TF(Trusted Firmware)是ARM在Armv8引入的安全解決方案,為安全提供了整體解決方案。它包括啟動(dòng)和運(yùn)行過(guò)程中的特權(quán)級(jí)劃分,對(duì)Armv7中的TrustZone(TZ)進(jìn)行了提高,補(bǔ)充了啟動(dòng)過(guò)程信任鏈的傳導(dǎo),細(xì)化了運(yùn)行過(guò)程的特權(quán)級(jí)區(qū)間。

TF實(shí)際有兩種Profile,對(duì)ARM Profile A的CPU應(yīng)用TF-A,對(duì)ARM Profile M的CPU應(yīng)用TF-M。我們一般接觸的都是TF-A,又因?yàn)檫@個(gè)概念是ARM提出的,有時(shí)候也縮寫(xiě)做ATF(ARM Trusted Firmware)。

ATF帶來(lái)最大的變化是信任鏈的建立(Trust Chain),整個(gè)啟動(dòng)過(guò)程包括從EL3到EL0的信任關(guān)系的打通。

ATF的啟動(dòng)流程包括5個(gè)單獨(dú)的啟動(dòng)階段,在不同的異常級(jí)別運(yùn)行,如下表所示。

TrustZone,ATF,OPTEE 這三者有什么關(guān)系呢?

TrustZone是一種架構(gòu),支持ATF的硬件。ATF是軟件,包含bl2 + bl31 + bl32 + bl33,bl32=optee-os,bl33=u-boot。

secure boot啟動(dòng)流程

信任鏈的構(gòu)建

由于操作系統(tǒng)啟動(dòng)時(shí)可能需要多級(jí)啟動(dòng)鏡像,而只要其中任意一級(jí)鏡像未執(zhí)行secure boot流程,則其后的所有鏡像實(shí)際上都是不可信的。典型的例子如下:

以上例子中bootrom驗(yàn)證了spl鏡像,若spl未驗(yàn)證uboot鏡像,則一旦uboot鏡像被替換以后,那么攻擊者就可以控制后面所有的啟動(dòng)流程。如被替換的uboot可以從其它位置加載非法的linux鏡像,而在該linux鏡像中任意植入后門等。

因此,secure boot需要建立安全啟動(dòng)的信任鏈,在啟動(dòng)流程中,每一級(jí)鏡像都由其前級(jí)鏡像執(zhí)行合法性驗(yàn)證。

這樣只要保證第一級(jí)鏡像是合法的,那么第二級(jí)鏡像的合法性由第一級(jí)鏡像保證,第三級(jí)鏡像的合法性由第二級(jí)鏡像保證。從而像鏈條一樣將整個(gè)啟動(dòng)流程的信任鏈連接起來(lái),最終保證整個(gè)系統(tǒng)是可信的。

由于信任鏈建立流程中,鏡像合法性是由其前級(jí)鏡像驗(yàn)證的,那么第一級(jí)鏡像的合法性如何保證呢?既然無(wú)法由前級(jí)鏡像為其背書(shū),那么按照慣例,軟件沒(méi)辦法解決的問(wèn)題自然就需要硬件上馬了。

我們知道rom是一種只讀存儲(chǔ)器,它只能被編程一次且內(nèi)容在其后不能被再次更改。因此若在SOC內(nèi)部集成一片ROM,并在芯片生產(chǎn)時(shí)就將第一級(jí)啟動(dòng)鏡像刷到這塊ROM中,那么也就保證了它是可信的,這也是現(xiàn)代SOC的普遍做法。一般SOC在出廠時(shí)就已經(jīng)在rom固定區(qū)域中集成了bootrom鏡像,每次芯片啟動(dòng)時(shí)都會(huì)從bootrom開(kāi)始執(zhí)行。

鏡像校驗(yàn)方式

下面我們介紹一種常見(jiàn)的鏡像簽名和校驗(yàn)方法。

  1. 使用hash算法計(jì)算鏡像的hash值
  2. 用私鑰將hash值簽名后,將簽名的結(jié)果一起打進(jìn)鏡像中,存放在特定位置。
  3. 上電后拿到公鑰,將存儲(chǔ)在鏡像中特定位置的hash解密。
  4. 將解密的hash值與設(shè)備中當(dāng)前計(jì)算的hash值做對(duì)比,二者一致則校驗(yàn)通過(guò)。

總結(jié)

以上就介紹了secure boot相關(guān)的基本概念和框架,希望大家能對(duì)secure boot有更加深刻的理解。secure boot的具體實(shí)現(xiàn)方案各個(gè)廠家都有所差別,但原理都是相同的。下一篇文章將介紹一種主流的開(kāi)源的secure boot的實(shí)現(xiàn)方案。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開(kāi)發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開(kāi)幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉