安全引導(dǎo)可用于保證系統(tǒng)的完整性,防止系統(tǒng)中重要鏡像文件被破壞或替換。
一般情況下,安全引導(dǎo)需要保護(hù)
? 系統(tǒng)的BootLoader鏡像文件、
? TEE鏡像文件、
? Linux內(nèi)核鏡像文件、
? Recover鏡像文件
? 以及在ARMv8中使用的ATF鏡像文件。
將TEE鏡像文件的加載操作加入安全引導(dǎo)功能中可阻止黑客通過(guò)替換TEE鏡像文件的方式來(lái)竊取被TEE保護(hù)的重要資料。
當(dāng)前使用ARM芯片的系統(tǒng)中大部分使能了安全引導(dǎo)功能,該功能對(duì)于用戶的最直接感受就是,當(dāng)用戶非法刷入其他廠商的ROM后手機(jī)無(wú)法正常啟動(dòng),這是因?yàn)榉欠ㄋC(jī)將導(dǎo)致系統(tǒng)中的重要鏡像文件被替換,系統(tǒng)在啟動(dòng)過(guò)程中對(duì)鏡像文件的電子驗(yàn)簽失敗,如果BootLoader驗(yàn)證失敗,則系統(tǒng)在進(jìn)入BootLoader階段之前就會(huì)掛死。
(信任根這個(gè)詞語(yǔ)此時(shí)有沒(méi)有在你的腦子里包含)
安全引導(dǎo)的原理
安全引導(dǎo)功能的原理就是采用鏈?zhǔn)津?yàn)簽的方式啟動(dòng)系統(tǒng),也就是在系統(tǒng)啟動(dòng)過(guò)程中,在加載下一個(gè)階段的鏡像之前都會(huì)對(duì)需要被加載的鏡像文件進(jìn)行電子驗(yàn)簽,只有驗(yàn)簽操作通過(guò)后,該鏡像才能被加載到內(nèi)存中,然后系統(tǒng)才會(huì)跳轉(zhuǎn)到下一個(gè)階段繼續(xù)執(zhí)行,整個(gè)驗(yàn)簽鏈中的任何一環(huán)驗(yàn)簽失敗都會(huì)導(dǎo)致系統(tǒng)掛死,系統(tǒng)啟動(dòng)過(guò)程中的第一級(jí)驗(yàn)簽操作是由ChipRom來(lái)完成的。
只要芯片一出廠,用戶就無(wú)法修改固化在芯片中的這部分代碼,因此無(wú)法通過(guò)修改第一級(jí)驗(yàn)簽結(jié)果來(lái)關(guān)閉安全引導(dǎo)功能。
而且驗(yàn)簽操作使用的RSA公鑰或者哈希值將會(huì)被保存在OTP/efuse中,該區(qū)域中的數(shù)據(jù)一般只有ChipRom和TEE能夠讀取且無(wú)法被修改。RSA公鑰或者哈希值將會(huì)在產(chǎn)品出廠之前被寫入到OTP/efuse中,而且不同廠商使用的密鑰會(huì)不一樣。
本質(zhì)上也就是說(shuō)Rom拿來(lái)校驗(yàn)后級(jí)第一部分的內(nèi)容所用到的密鑰是來(lái)自O(shè)TP里面,而這種是在出廠就確認(rèn)好了的,無(wú)法修改的。ChipRom和OTP的配合讓這個(gè)安全啟動(dòng)的最開始具備了靈活性和安全性兼顧。
在谷歌的安全引導(dǎo)功能白皮書中提出了安全引導(dǎo)功能實(shí)現(xiàn)方案的設(shè)計(jì)建議。
谷歌建議將鏡像文件的電子簽名信息和驗(yàn)簽使用的RSA公鑰保存在電子證書中,系統(tǒng)在啟動(dòng)的過(guò)程中首先會(huì)驗(yàn)證電子證書的合法性,如果驗(yàn)證通過(guò)則需從電子證書中獲取簽名信息和RSA公鑰,然后再利用它們對(duì)鏡像文件進(jìn)行驗(yàn)證。整個(gè)驗(yàn)證過(guò)程就是先驗(yàn)證證書,驗(yàn)證證書通過(guò)后再去驗(yàn)證鏡像文件的合法性。
但是在實(shí)際實(shí)現(xiàn)過(guò)程中,大多數(shù)芯片廠商是將簽名信息與需要被驗(yàn)簽的鏡像文件打包在一起,而RSA公鑰則會(huì)被打包到執(zhí)行驗(yàn)證操作的鏡像文件中。
(但是動(dòng)態(tài)TA的事情)
不同廠商可能會(huì)對(duì)鏡像文件進(jìn)行加密操作,使保存在設(shè)備中的鏡像文件都是以密文的形式存在。
在啟動(dòng)過(guò)程中,首先會(huì)驗(yàn)證密文鏡像文件的合法性然后再進(jìn)行解密鏡像文件的操作,這些都完成后才會(huì)將明文的鏡像文件加載到內(nèi)存中然后再執(zhí)行跳轉(zhuǎn)操作。
先驗(yàn)證,再解密,簽名的是加密的文件哦。
-
ROM
+關(guān)注
關(guān)注
4文章
578瀏覽量
87096 -
鏡像
+關(guān)注
關(guān)注
0文章
178瀏覽量
11149 -
系統(tǒng)
+關(guān)注
關(guān)注
1文章
1029瀏覽量
21737
發(fā)布評(píng)論請(qǐng)先 登錄
PSOC 5安全引導(dǎo)程序怎么實(shí)現(xiàn)
請(qǐng)問(wèn)NORflash的燒寫和引導(dǎo)啟動(dòng)作用是什么?
安全廣播的原理及應(yīng)用是什么?有什么作用?
怎樣使用基于安全引導(dǎo)加載程序構(gòu)建的應(yīng)用程序運(yùn)行調(diào)試會(huì)話
STM32MP1部件號(hào)具有像STM32MP157C/F這樣的安全引導(dǎo)選項(xiàng)嗎?
LS1046AFRWY需要做什么才能使用安全引導(dǎo)架構(gòu)進(jìn)行引導(dǎo)?
iMXRT MCU是否能夠支持安全引導(dǎo)加載程序?qū)嵤?/a>
Arm CryptoCell-312生成和驗(yàn)證安全引導(dǎo)和安全調(diào)試證書鏈指南
通過(guò)安全引導(dǎo)和安全下載認(rèn)證保護(hù)IoT設(shè)備
DS28C36安全認(rèn)證器的安全引導(dǎo)和安全下載
怎樣引導(dǎo)區(qū)塊鏈應(yīng)用走上正軌
EE-366:Blackfin+?和SHARC+?處理器的安全引導(dǎo)指南

wolfBoot安全引導(dǎo)加載程序
ATECC608A安全引導(dǎo)入門用例

ARMv7安全引導(dǎo)的過(guò)程

評(píng)論