對(duì)ARM TrustZone的理解
ARM把TrustZone固化在硬件里的道理是:
系統(tǒng)的安全性不能全靠軟件來保證,而且改寫現(xiàn)有的不安全的軟件,使之更安全也不大可行。
較為可行的方案就是引入一塊安全的硬件邏輯,并且只讓一小塊軟>件控制此安全邏輯。
這樣既保護(hù)了既有投資,也把系統(tǒng)的安全風(fēng)險(xiǎn)降到最小。
因?yàn)椴僮飨到y(tǒng)和普通應(yīng)用都可以運(yùn)行在安全態(tài),所以安全態(tài)不同于傳統(tǒng)的運(yùn)行態(tài)環(huán)狀的特權(quán)劃分,因此ARM把安全態(tài)描述成一個(gè)平行區(qū)域,稱之為安全區(qū),又稱為安全監(jiān)控模式。
核心態(tài)程序要進(jìn)入到安全區(qū)運(yùn)行,必須執(zhí)行安全監(jiān)控中斷( secure monitor interrupt, SMI) 指令,而應(yīng)用程序則必須通過API 函數(shù)來調(diào)用SMI 指令,此時(shí),操作系統(tǒng)要負(fù)責(zé)檢查應(yīng)用程序是否安全,若通過檢查則執(zhí)行SMI 指令進(jìn)入到安全區(qū)。這樣,整個(gè)系統(tǒng)的安全性就全由操作系統(tǒng)負(fù)責(zé)了。換句話說,TrustZone需要軟件的支持,才能達(dá)到安全目標(biāo)。
執(zhí)行SMI 指令的具體動(dòng)作是,SMI 在CP15的安全狀態(tài)寄存器中設(shè)置S位.。S位擴(kuò)展還體現(xiàn)在AMBA總線上,這樣外設(shè)也可以實(shí)現(xiàn)對(duì)TrustZone的支持。
安全監(jiān)控程序(固件)是獨(dú)立于操作系統(tǒng)的、自足的、不可重入的一小段代碼。只要CP15安全狀態(tài)寄存的S位處于置1狀態(tài),安全監(jiān)控程序就要起作用(監(jiān)測(cè)所有處理器操作)。首先監(jiān)控程序要負(fù)責(zé)保存>上下文狀態(tài),即寄存器內(nèi)容(一般保存到緊致內(nèi)存TCM中),并且把當(dāng)前處理器配置信息保存到CP15的單獨(dú)一組分編(banked)寄存器中。TrustZone的開銷是增加了大約350位狀態(tài)信息,完成上下文切換需要200時(shí)鐘周期。
由于TrustZone為安全區(qū)配備了單獨(dú)的緩存、TLB和緊致內(nèi)存TCM,上下文切換并不會(huì)導(dǎo)致這些性能構(gòu)件內(nèi)容的倒換,也即不會(huì)導(dǎo)致系統(tǒng)性能的降低。
ARM建議把安全監(jiān)控程序及其運(yùn)行時(shí)需要的內(nèi)存置于一個(gè)TCM塊中,以使延遲更低且更可預(yù)測(cè)。
安全擴(kuò)展對(duì)于中斷處理也有影響。因?yàn)橹袛嗉瓤梢詠碜酝庠O(shè),也可來自軟件,那就必須假定中斷有可能造成安全漏洞,這樣,在安全代碼執(zhí)行時(shí),就不能簡(jiǎn)單地讓任何中斷切入進(jìn)來。ARM建議的方案是,把中斷也分為安全的和非安全的,安全代碼只能被安全中斷打斷。當(dāng)然,也可以把所有中斷都提升為安全的,但那樣會(huì)引入不必要的延遲。
TrustZone是體系結(jié)構(gòu)的擴(kuò)展,系統(tǒng)軟件可以利用這一擴(kuò)展提供安全支持,TrustZone本身并不能實(shí)現(xiàn)安全保障功能,但這一解決方案硬件實(shí)現(xiàn)不復(fù)雜,也不增加許多功耗,仍是具有很好性價(jià)比的安全嵌入式解決方案。
評(píng)論