大量的嵌入式設備使用 ARM 為核心的芯片,為了保證安全 ARM 推出了 Arm Trusted Firmware 的可信固件,簡稱 TF-A。它是一個開源的軟件,最早是用在 Armv8-A。它的作用是隔離硬件,為硬件提供一個安全環境并且提供安全服務。
智能手機里面保存了我們的指紋、Face ID(3D 人臉信息)、虹膜、銀行卡密碼等重要信息。因此智能設備的安全問題就成了半導體行業的重要問題,ARM 為此提供了 TrustZone 解決方案,TrustZone 將 CPU 的工作狀態分為了 Secure World 和 Normal World,涉及到安全相關的內容運行在安全世界,比如指紋、密碼等,其他的操作都在非安全世界運行,比如應用程序。TrustZone 是一種硬件解決方案。
我們并不會直接去官方網站下載 TF-A 的源碼,這樣的開發難度太大,半導體廠商都會從 TF-A 官網下載源碼,然后修改適配自己的芯片,把自家的芯片加進去。我們在實際項目開發中直接使用半導體原廠給提供的 TF-A 即可。
TF-A 是有自己的 Makefile 文件的,而且真正編譯的時候也是要用 TF-A 自己的 Makefile。
TF-A 主要保護的就是設備啟動過程,通過各種鑒權,保證設備啟動的過程中每個階段的固件都是安全的,防止被不法分子替換某些啟動固件導致安全信息泄露。
對于傳統的 ARM 處理器而言 , Linux 系統的啟動流程是:內部 BootROM -》 Uboot -》 kernel -》 rootfs,整個啟動過程是一個鏈式結構,啟動過程其實是沒有安全校驗的。加入 TF-A 固件以后,TF-A 就可以對 uboot、kernel 進行校驗,如果還要使用 TEE OS(Trusted Execution Environment,TEE),那么 TF-A 還要完成對 TEE OS 的校驗。
Linux 啟動是一個鏈式結構,因此安全啟動的鑒權(校驗)過程也是鏈式結構的。在系統啟動的過程中,會先對下一個要加載運行的鏡像進行鑒權,只有鑒權成功此鏡像才能運行,并進入到下一階段,只要其中有一環鑒權失敗,那么整個系統就會啟動失敗。
bl1、bl2 和 bl31 都屬于 TF-A 固件,而 bl32 和 bl33 是 TF-A 要啟動的其他第三方固件,比如 TEE OS 和 uboot。
bl1、bl2、bl31、bl32 和 bl33 是 TF-A 的不同啟動階段,TF-A 的啟動過程是鏈式的,不同的階段完整的功能不同, bl1、bl2、bl31、bl32 和 bl33 全名如下:
bl1:Boot loader stage 1(BL1)
bl2:Boot loader stage 2(BL2)
bl31:Boot loader stage 3-1(BL31)
bl32:Boot loader stage 3-2(BL32)
bl33:Boot loader stage 3-3(BL33)
-
芯片
+關注
關注
456文章
50890瀏覽量
424304 -
ARM
+關注
關注
134文章
9104瀏覽量
367850 -
嵌入式
+關注
關注
5085文章
19138瀏覽量
305779 -
Linux
+關注
關注
87文章
11312瀏覽量
209739
發布評論請先 登錄
相關推薦
評論