大量的嵌入式設(shè)備使用 ARM 為核心的芯片,為了保證安全 ARM 推出了 Arm Trusted Firmware 的可信固件,簡(jiǎn)稱 TF-A。它是一個(gè)開(kāi)源的軟件,最早是用在 Armv8-A。它的作用是隔離硬件,為硬件提供一個(gè)安全環(huán)境并且提供安全服務(wù)。
智能手機(jī)里面保存了我們的指紋、Face ID(3D 人臉信息)、虹膜、銀行卡密碼等重要信息。因此智能設(shè)備的安全問(wèn)題就成了半導(dǎo)體行業(yè)的重要問(wèn)題,ARM 為此提供了 TrustZone 解決方案,TrustZone 將 CPU 的工作狀態(tài)分為了 Secure World 和 Normal World,涉及到安全相關(guān)的內(nèi)容運(yùn)行在安全世界,比如指紋、密碼等,其他的操作都在非安全世界運(yùn)行,比如應(yīng)用程序。TrustZone 是一種硬件解決方案。
我們并不會(huì)直接去官方網(wǎng)站下載 TF-A 的源碼,這樣的開(kāi)發(fā)難度太大,半導(dǎo)體廠商都會(huì)從 TF-A 官網(wǎng)下載源碼,然后修改適配自己的芯片,把自家的芯片加進(jìn)去。我們?cè)趯?shí)際項(xiàng)目開(kāi)發(fā)中直接使用半導(dǎo)體原廠給提供的 TF-A 即可。
TF-A 是有自己的 Makefile 文件的,而且真正編譯的時(shí)候也是要用 TF-A 自己的 Makefile。
TF-A 主要保護(hù)的就是設(shè)備啟動(dòng)過(guò)程,通過(guò)各種鑒權(quán),保證設(shè)備啟動(dòng)的過(guò)程中每個(gè)階段的固件都是安全的,防止被不法分子替換某些啟動(dòng)固件導(dǎo)致安全信息泄露。
對(duì)于傳統(tǒng)的 ARM 處理器而言 , Linux 系統(tǒng)的啟動(dòng)流程是:內(nèi)部 BootROM -》 Uboot -》 kernel -》 rootfs,整個(gè)啟動(dòng)過(guò)程是一個(gè)鏈?zhǔn)浇Y(jié)構(gòu),啟動(dòng)過(guò)程其實(shí)是沒(méi)有安全校驗(yàn)的。加入 TF-A 固件以后,TF-A 就可以對(duì) uboot、kernel 進(jìn)行校驗(yàn),如果還要使用 TEE OS(Trusted Execution Environment,TEE),那么 TF-A 還要完成對(duì) TEE OS 的校驗(yàn)。
Linux 啟動(dòng)是一個(gè)鏈?zhǔn)浇Y(jié)構(gòu),因此安全啟動(dòng)的鑒權(quán)(校驗(yàn))過(guò)程也是鏈?zhǔn)浇Y(jié)構(gòu)的。在系統(tǒng)啟動(dòng)的過(guò)程中,會(huì)先對(duì)下一個(gè)要加載運(yùn)行的鏡像進(jìn)行鑒權(quán),只有鑒權(quán)成功此鏡像才能運(yùn)行,并進(jìn)入到下一階段,只要其中有一環(huán)鑒權(quán)失敗,那么整個(gè)系統(tǒng)就會(huì)啟動(dòng)失敗。
bl1、bl2 和 bl31 都屬于 TF-A 固件,而 bl32 和 bl33 是 TF-A 要啟動(dòng)的其他第三方固件,比如 TEE OS 和 uboot。
bl1、bl2、bl31、bl32 和 bl33 是 TF-A 的不同啟動(dòng)階段,TF-A 的啟動(dòng)過(guò)程是鏈?zhǔn)降模煌碾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)
-
芯片
+關(guān)注
關(guān)注
453文章
50410瀏覽量
421849 -
ARM
+關(guān)注
關(guān)注
134文章
9051瀏覽量
366824 -
嵌入式
+關(guān)注
關(guān)注
5068文章
19019瀏覽量
303308 -
Linux
+關(guān)注
關(guān)注
87文章
11229瀏覽量
208931
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論