Android手機啟動流程與TEE OS
轉載:https://cloud.tencent.com/developer/article/1043659
一個移植了TEEOS的Android手機系統啟動流程如下:
系統啟動流程如圖所示,具體為:
①系統上電,PC指標指向晶片內部BOOT ROM地址並執行。
②BOOT ROM從外部儲存裝置載入、驗證preloader並跳轉執行。
③preloader從外部儲存載入(驗證) ATF(ARM可信韌體)、TEE OS、LK,並跳轉到ATF執行。
④ATF跳轉到TEE OS執行初始化,再返回ATF。
⑤ATF跳轉到LK執行。
⑥LK載入執行Android linux kernel。
⑦系統載入Modem。
BOOT ROM:固化在CPU晶片內部ROM中,上電cpu pc就指向這段地址並開始執行。
Preloader: 手機出廠前由手機廠商燒寫至cpu晶片外部儲存器(如emmc)中,並由BOOT ROM載入至記憶體中執行。
Lk: 可看作一個第二階段的bootloader,支援多種啟動模式(fastboot meta normal等等),並載入bootimage執行。
TEE: 包含ATF和TEE OS兩部分,共同構建安全執行環境。
Boot: Android Kernel。
只有理解了上述啟動流程,我們可以更好的進行安全啟動設計!
Google有如下要求:
驗證啟動功能旨在保證裝置軟體(從硬體信任根直到系統分割槽)的完整 性。在啟動過程中,無論是在每個階段,都會在進入下一個階段之前先驗證下一個階段的完整性和真實性。 當用戶對軟體進行了不應進行的更改時,可以使用該功能向他們發出警告,比如當用戶獲得一臺二手裝置後告知他們軟體經受了不應進行的更改。此外,該功能還可以提供進行遠端認證時使用的其他裝置完整性訊號。該功能再加上加密功能以及可信執行環境 (TEE) 信任根繫結功能,三者共同為使用者資料添加了另一道防範惡意系統軟體的保護屏障。