轉載:https://cloud.tencent.com/developer/article/1043659linux
一個移植了TEEOS的Android手機系統啓動流程以下:安全
系統啓動流程如圖所示,具體爲:加密
①系統上電,PC指針指向芯片內部BOOT ROM地址並執行。設計
②BOOT ROM從外部存儲設備加載、驗證preloader並跳轉執行。指針
③preloader從外部存儲加載(驗證) ATF(ARM可信固件)、TEE OS、LK,並跳轉到ATF執行。orm
④ATF跳轉到TEE OS執行初始化,再返回ATF。blog
⑤ATF跳轉到LK執行。內存
⑥LK加載運行Android linux kernel。get
⑦系統加載Modem。ast
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) 信任根綁定功能,三者共同爲用戶數據添加了另外一道防範惡意系統軟件的保護屏障。若是在任意階段驗證失敗,用戶都會收到醒目的通知。 目前基於TEE的系統與防範惡意系統軟件保護之間,看似底層與上層相差甚遠,各位看了上述Google的描述,是否是以爲能夠產生結合,造成特點的安全解決方案了呢?