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