官术网_书友最值得收藏!

第3章 ARM可信固件

3.1 為什么使用ATF

ARM可信任固件(ARM Trusted Firmware, ATF)是由ARM官方提供的底層固件,該固件統一了ARM底層接口標準,如電源狀態控制接口(Power Status Control Interface, PSCI)、安全啟動需求(Trusted Board Boot Requirements, TBBR)、安全世界狀態(SWS)與正常世界狀態(NWS)切換的安全監控模式調用(secure monitor call, smc)操作等。ATF旨在將ARM底層的操作統一使代碼能夠重用和便于移植。

3.2 ATF的主要功能

ATF的源代碼共分為bl1、bl2、bl31、bl32、bl33部分,其中bl1、bl2、bl31部分屬于固定的固件,bl32和bl33分別用于加載TEE OS和REE側的鏡像。整個加載過程可配置成安全啟動的方式,每一個鏡像文件在被加載之前都會驗證鏡像文件的電子簽名是否合法。

ATF主要完成的功能如下:

□ 初始化安全世界狀態運行環境、異常向量、控制寄存器、中斷控制器、配置平臺的中斷。

□ 初始化ARM通用中斷控制器(General Interrupt Controller, GIC)2.0版本和3.0版本的驅動初始化。

□ 執行ARM系統IP的標準初始化操作以及安全擴展組件的基本配置。

□ 安全監控模式調用(Secure Monitor Call, smc)請求的邏輯處理代碼(Monitor模式/EL3)。

□ 實現可信板級引導功能,對引導過程中加載的鏡像文件進行電子簽名檢查。

□ 支持自有固件的引導,開發者可根據具體需求將自有固件添加到ATF的引導流程中。

3.3 ATF與TEE的關系

為規范和簡化TrustZone OS的集成,在ARMv8架構中,ARM引入ATF作為底層固件并開放了源碼,用于完成系統中BootLoader、Linux內核、TEE OS的加載和啟動以及正常世界狀態和安全世界狀態的切換。ATF將整個啟動過程劃分成不同的啟動階段,由BLx來表示。例如,TEE OS的加載是由ATF中的bl32來完成的,安全世界狀態和正常世界狀態之間的切換是由bl31來完成的。在加載完TEE OS之后,TEE OS需要返回一個處理函數的接口結構體變量給bl31。當在REE側觸發安全監控模式調用指令時,bl31通過查詢該結構體變量就可知需要將安全監控模式調用指令請求發送給TEE中的那個接口并完成正常世界狀態到安全世界狀態的切換。

3.4 小結

在ARMv8架構中,如果系統需要支持TEE,則幾乎都必須使用由ARM提供的ATF作為底層固件。關于ATF如何管理BootLoader、TEE OS、Linux內核以及各個階段鏡像的加載過程和跳轉過程,本書第6章將結合實際代碼詳細分析。

主站蜘蛛池模板: 正蓝旗| 含山县| 玉树县| 新田县| 普格县| 白银市| 安新县| 松溪县| 桃园县| 连云港市| 蓝山县| 东山县| 右玉县| 台中市| 延庆县| 金塔县| 咸阳市| 寿阳县| 中山市| 海盐县| 西乌珠穆沁旗| 临夏市| 威海市| 龙岩市| 聂拉木县| 罗江县| 天台县| 陇川县| 古浪县| 博兴县| 祁连县| 崇仁县| 丰县| 贡嘎县| 正蓝旗| 兴化市| 长泰县| 柘荣县| 亳州市| 聊城市| 长宁县|