安全引導(dǎo)可用于保證系統(tǒng)的完整性,防止系統(tǒng)中重要鏡像文件被破壞或替換。
一般情況下,安全引導(dǎo)需要保護(hù)
? 系統(tǒng)的BootLoader鏡像文件、
? TEE鏡像文件、
? Linux內(nèi)核鏡像文件、
? Recover鏡像文件
? 以及在ARMv8中使用的ATF鏡像文件。
將TEE鏡像文件的加載操作加入安全引導(dǎo)功能中可阻止黑客通過替換TEE鏡像文件的方式來竊取被TEE保護(hù)的重要資料。
當(dāng)前使用ARM芯片的系統(tǒng)中大部分使能了安全引導(dǎo)功能,該功能對于用戶的最直接感受就是,當(dāng)用戶非法刷入其他廠商的ROM后手機無法正常啟動,這是因為非法刷機將導(dǎo)致系統(tǒng)中的重要鏡像文件被替換,系統(tǒng)在啟動過程中對鏡像文件的電子驗簽失敗,如果BootLoader驗證失敗,則系統(tǒng)在進(jìn)入BootLoader階段之前就會掛死。
(信任根這個詞語此時有沒有在你的腦子里包含)
安全引導(dǎo)的原理
安全引導(dǎo)功能的原理就是采用鏈?zhǔn)津灪灥姆绞絾酉到y(tǒng),也就是在系統(tǒng)啟動過程中,在加載下一個階段的鏡像之前都會對需要被加載的鏡像文件進(jìn)行電子驗簽,只有驗簽操作通過后,該鏡像才能被加載到內(nèi)存中,然后系統(tǒng)才會跳轉(zhuǎn)到下一個階段繼續(xù)執(zhí)行,整個驗簽鏈中的任何一環(huán)驗簽失敗都會導(dǎo)致系統(tǒng)掛死,系統(tǒng)啟動過程中的第一級驗簽操作是由ChipRom來完成的。
只要芯片一出廠,用戶就無法修改固化在芯片中的這部分代碼,因此無法通過修改第一級驗簽結(jié)果來關(guān)閉安全引導(dǎo)功能。
而且驗簽操作使用的RSA公鑰或者哈希值將會被保存在OTP/efuse中,該區(qū)域中的數(shù)據(jù)一般只有ChipRom和TEE能夠讀取且無法被修改。RSA公鑰或者哈希值將會在產(chǎn)品出廠之前被寫入到OTP/efuse中,而且不同廠商使用的密鑰會不一樣。
本質(zhì)上也就是說Rom拿來校驗后級第一部分的內(nèi)容所用到的密鑰是來自O(shè)TP里面,而這種是在出廠就確認(rèn)好了的,無法修改的。ChipRom和OTP的配合讓這個安全啟動的最開始具備了靈活性和安全性兼顧。
在谷歌的安全引導(dǎo)功能白皮書中提出了安全引導(dǎo)功能實現(xiàn)方案的設(shè)計建議。
谷歌建議將鏡像文件的電子簽名信息和驗簽使用的RSA公鑰保存在電子證書中,系統(tǒng)在啟動的過程中首先會驗證電子證書的合法性,如果驗證通過則需從電子證書中獲取簽名信息和RSA公鑰,然后再利用它們對鏡像文件進(jìn)行驗證。整個驗證過程就是先驗證證書,驗證證書通過后再去驗證鏡像文件的合法性。
但是在實際實現(xiàn)過程中,大多數(shù)芯片廠商是將簽名信息與需要被驗簽的鏡像文件打包在一起,而RSA公鑰則會被打包到執(zhí)行驗證操作的鏡像文件中。
(但是動態(tài)TA的事情)
不同廠商可能會對鏡像文件進(jìn)行加密操作,使保存在設(shè)備中的鏡像文件都是以密文的形式存在。
在啟動過程中,首先會驗證密文鏡像文件的合法性然后再進(jìn)行解密鏡像文件的操作,這些都完成后才會將明文的鏡像文件加載到內(nèi)存中然后再執(zhí)行跳轉(zhuǎn)操作。
先驗證,再解密,簽名的是加密的文件哦。
-
ROM
+關(guān)注
關(guān)注
4文章
572瀏覽量
85789 -
鏡像
+關(guān)注
關(guān)注
0文章
165瀏覽量
10746 -
系統(tǒng)
+關(guān)注
關(guān)注
1文章
1017瀏覽量
21359
發(fā)布評論請先 登錄
相關(guān)推薦
評論