- 手機安全和可信應用開發指南:TrustZone與OP-TEE技術詳解
- 帥峰云 黃騰 宋洋
- 827字
- 2019-01-03 15:01:35
第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章將結合實際代碼詳細分析。
- Java語言程序設計
- JavaScript全程指南
- C# Programming Cookbook
- 深度強化學習算法與實踐:基于PyTorch的實現
- 深入理解Android:Wi-Fi、NFC和GPS卷
- HTML 5與CSS 3權威指南(第3版·上冊)
- 持續輕量級Java EE開發:編寫可測試的代碼
- Learning AWS
- TypeScript 2.x By Example
- Python青少年趣味編程
- Getting Started with Electronic Projects
- UML基礎與Rose建模實用教程(第三版)
- Google Adsense優化實戰
- LabVIEW入門與實戰開發100例(第4版)
- Isomorphic Go