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