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

什么是secure boot

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

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

為什么需要secure boot

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

該流程中由bootrom開始,逐級通過spl、uboot以啟動linux操作系統(tǒng)。

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

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

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

secure boot預(yù)備知識

安全級別

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

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

EL2主要提供了對虛擬化的支持。

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

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

啟動流程

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

BL1

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

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

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

BL2

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

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

BL31

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

BL32

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

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

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

BL33

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

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

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

消息摘要算法和加密算法

消息摘要算法

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

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

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

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

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

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

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

來看一個具體的例子:

TrustChain

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

3a6fed5fc11392b3ee9f81caf017b48640d7458766a8eb0382899a605b41f2b9

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

加解密算法-RSA

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

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

下面以一個例子說明RSA簽名的過程。

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

RSA簽名的過程如下:

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

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

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

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

即使都被敵方截獲,也沒有危險性,因為只有A的私鑰才能對消息進(jìn)行簽名,即使知道了消息內(nèi)容,也無法偽造帶簽名的回復(fù)給B,防止了消息內(nèi)容的篡改。

trustzone  & ATF & OPTEE

trustzone

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

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

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

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

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

OPTEE

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

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

ATF

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

TF實際有兩種Profile,對ARM Profile A的CPU應(yīng)用TF-A,對ARM Profile M的CPU應(yīng)用TF-M。我們一般接觸的都是TF-A,又因為這個概念是ARM提出的,有時候也縮寫做ATF(ARM Trusted Firmware)。

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

ATF的啟動流程包括5個單獨的啟動階段,在不同的異常級別運行,如下表所示。

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

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

secure boot啟動流程

信任鏈的構(gòu)建

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

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

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

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

由于信任鏈建立流程中,鏡像合法性是由其前級鏡像驗證的,那么第一級鏡像的合法性如何保證呢?既然無法由前級鏡像為其背書,那么按照慣例,軟件沒辦法解決的問題自然就需要硬件上馬了。

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

鏡像校驗方式

下面我們介紹一種常見的鏡像簽名和校驗方法。

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

總結(jié)

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

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

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

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

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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