《電子技術應用》
您所在的位置:首頁 > 可編程邏輯 > 其他 > Linux教學——secure boot (二)基本概念和框架

Linux教學——secure boot (二)基本概念和框架

2022-09-13
來源:電子技術應用專欄作家 嵌入式與Linux那些事
關鍵詞: secureboot Linux

  什么是secure boot

  secure boot是指確保在一個平臺上運行的程序的完整性的過程或機制。secure boot會在固件和應用程序之間建立一種信任關系。在啟用secure boot功能后,未經簽名的固件或程序將不能運行在該設備上。

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

  為什么需要secure boot

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

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

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

微信圖片_20220913173845.png

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

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

  secure boot預備知識

 微信圖片_20220913173911.png


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

  EL3具有最高管理權限,負責安全監測和Secure World和Normal World之間的切換。

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

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

  EL0是無特權模式,所有APP應用都在EL0。

  啟動流程

微信圖片_20220913173944.png

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

  BL1

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

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

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

  BL2

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

  在完成初始化后尋找BL31或者BL33進行執行;如果找到了BL31則不會繼續調用BL33,如果沒有BL31則BL33必須有。

  BL31

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

  BL32

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

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

  BL32 在不同的平臺有不同的實現,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上實現。

  最后一張圖完整展示整個調用流程:

微信圖片_20220913174138.png

  消息摘要算法和加密算法

  消息摘要算法

  消息摘要又稱為數字摘要。它是一個唯一對應一個消息或文本的固定長度的值,它由一個單向Hash加密函數對消息進行作用而產生。

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

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

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

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

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

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

  來看一個具體的例子:

  TrustChain

  這句話經過哈希函數sha256后得到的哈希值為:

  3a6fed5fc11392b3ee9f81caf017b48640d7458766a8eb0382899a605b41f2b9

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

  加解密算法-RSA

  RSA加密是一種非對稱加密。可以在不直接傳遞密鑰的情況下,完成解密。這能夠確保信息的安全性,避免了直接傳遞密鑰所造成的被破解的風險。

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

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

  戰場上,B要給A傳遞一條消息,內容為某一指令。

  RSA簽名的過程如下:

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

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

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

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

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

  trustzone  & ATF & OPTEE

  trustzone

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

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

微信圖片_20220913174311.png

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

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

  不同的是多應用程序環境下操作系統實現的是進程間切換,而Trustzone下的Monitor Mode實現了同一CPU上兩個操作系統間的切換。

  OPTEE

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

  它的主要作用是給 Secure World 中運行的程序提供一個基本的系統內核,實現多任務調度、虛擬內存管理、System Call 回調、硬件驅動、IPC 通訊等等。

  ATF

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

  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的信任關系的打通。

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

微信圖片_20220913174339.png

  TrustZone,ATF,OPTEE 這三者有什么關系呢?

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

  secure boot啟動流程

  信任鏈的構建

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

微信圖片_20220913174359.png

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

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

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

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

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

  鏡像校驗方式

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

微信圖片_20220913174422.png

  使用hash算法計算鏡像的hash值用私鑰將hash值簽名后,將簽名的結果一起打進鏡像中,存放在特定位置。上電后拿到公鑰,將存儲在鏡像中特定位置的hash解密。將解密的hash值與設備中當前計算的hash值做對比,二者一致則校驗通過。

  總結

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

  

 更多信息可以來這里獲取==>>電子技術應用-AET<<

微信圖片_20210517164139.jpg

微信圖片_20220708145705.jpg

電子技術應用專欄作家  嵌入式與Linux那些事

原文鏈接:https://mp.weixin.qq.com/s/HbM1gI2DqB60DvVwJ7aegg

本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
亚洲在线播放| 亚洲国产高清在线观看视频| 国产私拍一区| 国产精品初高中精品久久| 久久综合一区二区三区| 午夜综合激情| 中日韩在线视频| 99国产精品久久久久久久成人热| 亚洲成人在线视频播放| 亚洲已满18点击进入久久| 亚洲精品社区| 亚洲激情一区| 亚洲日韩欧美一区二区在线| 亚洲高清免费视频| 亚洲成人资源| 亚洲电影自拍| 亚洲第一精品福利| 激情欧美一区二区三区| 欧美日韩国产在线看| 久久久久一区二区三区四区| 一区二区高清在线观看| 99国内精品久久| 9l视频自拍蝌蚪9l视频成人| 日韩香蕉视频| 一区二区三区视频观看| 国产精品99久久久久久宅男| 一区二区三区四区在线| 亚洲小说欧美另类婷婷| 亚洲欧美中文字幕| 小黄鸭精品aⅴ导航网站入口| 先锋影音网一区二区| 欧美亚洲综合另类| 欧美一区二区三区免费观看| 欧美一区二区大片| 欧美专区在线观看| 久久视频国产精品免费视频在线| 久久久91精品国产一区二区精品| 久久久爽爽爽美女图片| 噜噜噜久久亚洲精品国产品小说| 欧美va天堂在线| 欧美精品一区在线观看| 欧美日韩国产首页在线观看| 欧美网站大全在线观看| 国产精品久久网站| 国产亚洲欧美日韩日本| 在线观看欧美日韩| 亚洲国产天堂久久综合| 亚洲精品人人| 亚洲一区二区三区在线视频| 午夜一级在线看亚洲| 亚洲第一主播视频| 99精品国产在热久久| 亚洲神马久久| 久久aⅴ国产紧身牛仔裤| 久久尤物视频| 欧美区高清在线| 国产精品麻豆欧美日韩ww | 久久精品国产在热久久| 久久综合伊人77777麻豆| 欧美日韩国产另类不卡| 国产精品亚洲综合天堂夜夜| 国语自产精品视频在线看8查询8| 亚洲国产婷婷| 亚洲一区二区三区在线看| 亚洲第一精品夜夜躁人人爽| 99re国产精品| 久久成人免费电影| 欧美国产第一页| 国产精品萝li| 亚洲福利视频在线| 亚洲午夜av在线| 久久精品国产v日韩v亚洲| 亚洲最黄网站| 欧美在线首页| 欧美日本三级| 国产在线观看91精品一区| 亚洲精品免费在线播放| 欧美一区=区| 一区二区日韩精品| 久久久国产视频91| 欧美日韩在线播放一区| 韩国av一区| 亚洲一级黄色片| 亚洲日韩视频| 久久国产一二区| 欧美日一区二区三区在线观看国产免| 国产亚洲精品久久久| 亚洲精品日韩久久| 久久精品国产欧美激情| 亚洲欧美成人网| 欧美激情在线狂野欧美精品| 国产亚洲高清视频| 一本大道久久a久久综合婷婷| 亚洲国产成人精品久久| 午夜宅男久久久| 欧美三级日本三级少妇99| 在线观看日韩av电影| 性欧美videos另类喷潮| 亚洲一区二区三区777| 免费成人性网站| 国产精品毛片a∨一区二区三区| 亚洲国产人成综合网站| 久久国产精品一区二区三区四区| 亚洲宅男天堂在线观看无病毒| 欧美激情第1页| 黄色一区二区三区| 亚洲男人第一av网站| 中日韩在线视频| 欧美精品 日韩| 在线精品亚洲| 久久精品国产久精国产一老狼| 午夜精品美女自拍福到在线 | 一区在线播放| 欧美一级成年大片在线观看| 亚洲欧美第一页| 欧美午夜激情视频| 亚洲国产老妈| 亚洲国产精品传媒在线观看| 久久国产精品久久久久久电车| 国产精品高清在线| 一区二区三区 在线观看视| 日韩一区二区高清| 免费亚洲一区二区| **欧美日韩vr在线| 欧美专区在线观看| 久久精品99国产精品日本| 国产精品一区在线播放| 亚洲免费伊人电影在线观看av| 亚洲欧美成人一区二区在线电影| 国产精品成人免费视频| 99re66热这里只有精品3直播| 日韩一区二区精品视频| 欧美精品v国产精品v日韩精品| 亚洲国产网站| 亚洲精品一区二| 欧美激情精品久久久久久| 亚洲国产一区在线| 亚洲精品日本| 欧美日本高清| 亚洲最新视频在线| 亚洲午夜激情网页| 欧美午夜宅男影院| 亚洲天堂免费观看| 欧美亚洲在线观看| 国产最新精品精品你懂的| 亚洲国产日韩欧美在线图片| 欧美国产一区二区在线观看 | 9l视频自拍蝌蚪9l视频成人| 亚洲欧美日韩在线播放| 国产性猛交xxxx免费看久久| 亚洲黄色性网站| 欧美日韩国产一区二区三区地区| 亚洲色诱最新| 久久久999精品视频| 亚洲成人在线视频播放| 在线一区视频| 国产欧美一级| 久久精品一区二区三区四区| 欧美激情第9页| 亚洲午夜在线观看| 久久综合九九| 一区二区三区欧美在线观看| 欧美中文字幕视频| 亚洲成人在线免费| 亚洲综合成人在线| 国产中文一区二区| 日韩一级在线观看| 国产欧美日韩视频在线观看| 久久精品日产第一区二区| 欧美大色视频| 亚洲网友自拍| 久久免费偷拍视频| 国产精品视频成人| 亚洲国产裸拍裸体视频在线观看乱了中文 | 亚洲伊人久久综合| 久久精品中文字幕一区| 亚洲日本成人| 亚洲免费视频网站| 国产美女在线精品免费观看| 久久gogo国模啪啪人体图| 欧美精品在线视频| 亚洲网站在线| 久久字幕精品一区| 亚洲精品视频免费观看| 久久久国产亚洲精品| 最新中文字幕亚洲| 亚洲欧美999| 狠狠色噜噜狠狠色综合久| 国产精品99久久久久久白浆小说| 国产美女诱惑一区二区| 亚洲精华国产欧美| 欧美经典一区二区三区| 久久成人一区二区| 欧美精品久久天天躁| 亚洲一区二区三区在线看| 久久九九国产精品怡红院| 亚洲精品国产精品国产自| 午夜精品成人在线| 在线免费不卡视频| 午夜精品久久久久|