0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

secure boot相關(guān)的基本概念和框架

我快閉嘴 ? 來源:嵌入式與Linux那些事 ? 作者:嵌入式與Linux那些 ? 2022-09-13 14:20 ? 次閱讀

什么是secure boot

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

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

為什么需要secure boot

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

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

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

b7b92474-331a-11ed-ba43-dac502259ad0.png

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

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

secure boot預備知識

安全級別

b7d64ab8-331a-11ed-ba43-dac502259ad0.png

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

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

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

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

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

啟動流程

b7f859aa-331a-11ed-ba43-dac502259ad0.png

上圖中的BL1,BL2,BL31,BL32,BL33分別對應如下功能:

BL1

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

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

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

BL2

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

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

BL31

BL31作為EL3最后的安全堡壘,它不像BL1和BL2是一次性運行的。如它的runtime名字暗示的那樣,它通過SMC指令為Non-Secure持續(xù)提供設(shè)計安全的服務,在Secure World和Non-Secure World之間進行切換。它的主要任務是找到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)用流程:

b82235c2-331a-11ed-ba43-dac502259ad0.png

消息摘要算法和加密算法

消息摘要算法

消息摘要又稱為數(shù)字摘要。它是一個唯一對應一個消息或文本的固定長度的值,它由一個單向Hash加密函數(shù)對消息進行作用而產(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位的哈希值,稱作消息摘要。這個摘要相當于是個長度為32個字節(jié)的數(shù)組,通常有一個長度為64的十六進制字符串來表示,其中1個字節(jié)=8位,一個十六進制的字符的長度為4位。

來看一個具體的例子:

TrustChain

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

3a6fed5fc11392b3ee9f81caf017b48640d7458766a8eb0382899a605b41f2b9

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

加解密算法-RSA

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

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

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

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

RSA簽名的過程如下:

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

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

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

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

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

trustzone & ATF & OPTEE

trustzone

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

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

b85d4af4-331a-11ed-ba43-dac502259ad0.png

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

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

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

OPTEE

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

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

ATF

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

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

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

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

b87267a4-331a-11ed-ba43-dac502259ad0.png ?

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流程,則其后的所有鏡像實際上都是不可信的。典型的例子如下:

b8988920-331a-11ed-ba43-dac502259ad0.png

以上例子中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í)行。

鏡像校驗方式

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

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

總結(jié)

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

審核編輯:湯梓紅


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 嵌入式
    +關(guān)注

    關(guān)注

    5045

    文章

    18816

    瀏覽量

    298459
  • Secure
    +關(guān)注

    關(guān)注

    0

    文章

    7

    瀏覽量

    11727
  • Boot
    +關(guān)注

    關(guān)注

    0

    文章

    148

    瀏覽量

    35672

原文標題:secure boot (二)基本概念和框架

文章出處:【微信號:嵌入式與Linux那些事,微信公眾號:嵌入式與Linux那些事】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    Proteus涉及的基本概念

    Proteus涉及的基本概念
    發(fā)表于 08-01 20:58

    Fpga Cpld的基本概念

    Fpga Cpld的基本概念
    發(fā)表于 08-20 17:14

    C語言基本概念

    C語言基本概念
    發(fā)表于 08-01 02:00

    C6678芯片是否有帶Secure Boot的版本

    請問,C6678芯片是否有帶Secure Boot的版本,對應的型號是? 有關(guān)于C6678 Secure Boot的介紹資料嗎?
    發(fā)表于 06-21 01:23

    使用SECURE_BOOTSECURE_SFLASH選項

    / SecureBoot / aec_cbc_128和hmac_sha256命令,他們并沒有得到與makefile建成。當我們使用secure_boot = 1和secure_sflash = 1個
    發(fā)表于 08-29 14:51

    天線分集技術(shù)的基本概念介紹

    基本概念往往有助于理解多變的無線電通信鏈接品質(zhì),一旦理解了這些基本概念,其中許多問題可以通過一種低成本、易實現(xiàn)的被稱作天線分集(antenna diversity)的技術(shù)來實現(xiàn)。
    發(fā)表于 07-02 06:04

    阻抗控制相關(guān)基本概念

    阻抗控制部分包括兩部分內(nèi)容:基本概念及阻抗匹配。本篇主要介紹阻抗控制相關(guān)的一些基本概念。
    發(fā)表于 02-25 08:11

    智能天線的基本概念

    1智能天線的基本概念 智能天線綜合了自適應天線和陣列天線的優(yōu)點,以自適應信號處理算法為基礎(chǔ),并引入了人工智能的處理方法。智能天線不再是一個簡單的單元,它已成為一個具有智能的系統(tǒng)。其具體定義為:智能
    發(fā)表于 08-05 08:30

    CODESYS的基本概念有哪些

    CODESYS是什么?CODESYS的基本概念有哪些?CODESYS有哪些功能?
    發(fā)表于 09-18 06:52

    單片機中斷的基本概念

    文章目錄一.中斷的基本概念二.中斷相關(guān)的寄存器三.中斷的實際使用四.中斷的優(yōu)點:一.中斷的基本概念1.中斷的概念:在單片機中,中斷是指:對于CPU來說,當它在正常處理事件A時,突然發(fā)生
    發(fā)表于 11-25 08:14

    STM32的中斷系統(tǒng)基本概念

    STM32 中斷系統(tǒng)概述筆記(一)中斷概述中斷相關(guān)基本概念STM32的中斷系統(tǒng)基本概念:NVIC 嵌套向量中斷控制器中斷通道中斷優(yōu)先級優(yōu)先級分組EXTI 外部中斷控制器三種外部中斷觸發(fā)方式引腳分組
    發(fā)表于 01-07 07:32

    基于 Rockchip U-boot next-dev 的 secure boot 流程

    資料將詳細介紹基于 Rockchip U-boot next-dev 的 secure boot 流程。 Rockchip Secure Boot
    發(fā)表于 06-27 15:53

    第一道防線-Secure Boot安全開機

    第一道防線-Secure Boot安全開機
    的頭像 發(fā)表于 08-11 14:46 ?558次閱讀
    第一道防線-<b class='flag-5'>Secure</b> <b class='flag-5'>Boot</b>安全開機

    安全啟動Secure Boot流程

    安全啟動-Secure Boot 除了NSPE和SPE兩個環(huán)境的溝通流程之外,secure boot也是Trusted Firmware很重要的設(shè)計環(huán)節(jié)。
    的頭像 發(fā)表于 11-02 16:45 ?1123次閱讀
    安全啟動<b class='flag-5'>Secure</b> <b class='flag-5'>Boot</b>流程

    MMU相關(guān)基本概念

    1-MMU相關(guān)基本概念 (1)虛擬地址相關(guān)基本概念 ? 虛擬內(nèi)存(Virtual Memory,VM):為每個進程提供了一致的、連續(xù)的、私有的內(nèi)存空間,簡化了內(nèi)存管理。將主存看成是一
    的頭像 發(fā)表于 11-26 16:11 ?557次閱讀