ARM Trustzone 技術(shù)(一) 綜述

從 2008 年 12月 ARM 公司第一次 release Trustzone 技術(shù)白皮書,已經(jīng)過去了十年。2013 年 Apple 推出了第一款搭載指紋解鎖的 iPhone:iPhone 5s,用以保證指紋信息安全的 Secure Enclave 技術(shù)據(jù)分析深度定制了 ARM trustzone 架構(gòu),印象中這大概是 Trustzone 技術(shù)第一次走進(jìn)大眾視線。到如今 Trustzone 技術(shù)已經(jīng)成為移動安全領(lǐng)域的重要基礎(chǔ)技術(shù),你也許不了解它的技術(shù)原理,但它一直默默為你守護(hù)你的指紋信息,賬戶密碼等各種敏感數(shù)據(jù)。

在公司負(fù)責(zé) Trustzone 相關(guān)開發(fā)的幾年中,回答最多的問題大概就是“你能不能先給我解釋一下 Trustzone 是什么”。這個問題我也問過自己很多遍,直到現(xiàn)在我還是會把 Arm Trustzone Security whitepaper 拿出來反復(fù)看,每次都會有一些新的體會。當(dāng)初從老板手上接過開發(fā)任務(wù),公司沒有其他人接觸過 Trustzone,經(jīng)過幾個月的摸黑抓瞎交出的初版代碼現(xiàn)在看起來都覺得很好笑。再后來遇到各種 CPU hotplug,cache flush 等等各種奇怪問題,每次都是大型崩潰現(xiàn)場。一路艱難走來,越發(fā)覺得能夠解決現(xiàn)有問題的是一家好公司,能夠判斷大勢所趨,預(yù)測問題的出現(xiàn)并能夠給出解決方案的才能成為一家偉大的公司。所以在我看來簡言之:Trustzone 就是一種解決方案。

再加上多一些的修飾語就是: Trustzone 是 ARM 公司為了解決可能遇到的軟硬件安全問題提出的一種硬件解決方案?;?Trustzone 這種硬件架構(gòu)設(shè)計的軟硬件,能在很大程度和范圍內(nèi)保證系統(tǒng)的安全性,使軟硬件破解都變得相對很困難。

我認(rèn)為這套硬件架構(gòu)的核心設(shè)計思想,關(guān)鍵詞在于“隔離”。簡單描述就是人為將系統(tǒng)運(yùn)行環(huán)境劃分為 TEE (Trusted Execution Environment) 和 REE ( Rich Execution Environment),所有的安全資源只能由 TEE 訪問,而 REE 根本touch 不到。TEE 中運(yùn)行的通常被認(rèn)為是 trusted OS,一般為獨(dú)立的 binary。REE 中運(yùn)行的 rich OS 大多是指常用的 Linux 和 Android 操作系統(tǒng)。直觀的例子就是 Android 系統(tǒng)下的各個應(yīng)用是無法直接訪問指紋信息的,只有切換到 Trusted OS 下才可以訪問。當(dāng)然這個過程:

  1. Android 應(yīng)用如何完成指紋驗(yàn)證可以拿出來單獨(dú)做一個大 topic;
  2. Trusted OS 通常由設(shè)備廠商提供,跟硬件設(shè)計強(qiáng)相關(guān),無法由第三方更新 binary;
  3. 要做到第二條,secure boot 功能就必不可少。(所以說安全功能都是環(huán)環(huán)相扣缺一不可)

要實(shí)現(xiàn)這樣一套硬件架構(gòu),首先需要SoC中的各個硬件模塊都實(shí)現(xiàn)對 Trustzone 的支持,才能稱之為完整的 security system。常見大致上需要以下幾個模塊:

1. Bus

這里涉及的總線分為兩種,一種是 AMBA3 AXI system bus(系統(tǒng)總線),一種是 AMBA3 APB peripheral bus(外圍總線)。
前面說到 trustzone 技術(shù)會將系統(tǒng)劃分為兩種模式:secure 和 Non-secure。而劃分的基礎(chǔ)就是 AXI 系統(tǒng)總線一條控制線的電平高低。簡單來說,就是 ARM 為 AXI 總線每個信道的讀寫操作都新增了一個標(biāo)記位:NS bit。主設(shè)備為Non-secure 狀態(tài)時,發(fā)起讀寫請求,NS bit 必須置為高電平;主設(shè)備為 Secure 狀態(tài)時,發(fā)起讀寫請求,NS bit 必須置為低電平。
APB 外圍總線通過 AXI-to-APB bridge 連接到系統(tǒng)總線,可以實(shí)現(xiàn)對外設(shè)的安全訪問管控,這里的外設(shè)可以包括 interrupt controller,timer 等。

2. Processor

在 ARM core 的 technical reference manual 中,對 Trustzone 技術(shù)的支持一般被描述為 security extension。目前主流使用的 ARM core architecture 主要是 ARMv7 和 ARMv8。兩種架構(gòu)下的 CPU security extension 差異巨大,但總的來說,都是將 CPU 的每個 core 都虛擬出 secure 和 Non-secure 兩種模式,當(dāng) core 為 Non-secure 時,Secure Configuration Register 的 NS bit 置為 1,為 secure 模式時,NS bit 置為 0。NS bit 默認(rèn)為 0,也就是說,CPU 上電后每個 core 都默認(rèn)為 secure mode。
除此之外,兩種模式下 CPU core 對中斷的處理,MMU / Cache訪問,Timer,Debug 等等都做了相應(yīng)的安全擴(kuò)展,每個 model 都值得詳細(xì)研究。

3. Interrupt controller

常見支持 Trustzone 的 interrupt controller IP 有 PL390,GIC-400,GIC-500,簡單說就是能夠區(qū)分 secure interrupt 和 Non-secure interrupt,實(shí)現(xiàn)對中斷處理的隔離。同樣 GIC 的不同版本對 security extension 的設(shè)計也不盡相同,常見的 GICv2 和 GICv3 就有著較大差異,同樣值得詳細(xì)說明。

4. Trustzone Address Space Controller

CPU core MMU 的 security extension 主要是針對 CPU 內(nèi)存空間的安全訪問控制,而 TZASC 主要是針對 DRAM。TZASC通常布置在 CPU 和 DRAM controller 之間,通過新增一條地址線表示 NS bit,可以將 DRAM 劃分為 secure CPU core 可訪問區(qū)域和 Non-secure CPU core 可訪問區(qū)域,實(shí)現(xiàn) DRAM 的隔離。常見的 TZASC IP 有 PL-380 和 TZC-400。針對 on-SoC 的靜態(tài)內(nèi)存(ROM 和 SRAM)的區(qū)域劃分,則需要通過使用 Trustzone Memory Adapter (TZMA)來完成。

5. Trustzone Protection Controller

掛在 AXI-to-APB bridge 上,用以區(qū)分外設(shè)是 secure 還是 Non-secure。

這樣介紹可能有些抽象,用白皮書里示例圖做個簡單說明:


security-signal-control.png

上圖中,支持 Trustzone 的 ARM core 通過 AXI 總線和 TZMA,SRAM,AXI-to-APB bridge 相連,其中 AXI-to-APB bridge 上掛了四個外設(shè),TZPC 永遠(yuǎn)配置為 secure peripheral,timer 和 RTC 是 Non-secure peripheral,而 KMI (Keyboard and Mouse Interface)為 secure peripheral 還是 Non-secure peripheral 是 software programmable。KMI secure 和 Non-secure 的切換,由軟件配置 TZPC 來完成,而由于 TZPC always 是 secure 外設(shè),所以 TZPC 的配置只能在 CPU 是 secure mode 下才能實(shí)現(xiàn)。從軟件層面來看,就是只有 Trusted OS 才能配置 TZPC。那么將 Keyboard 設(shè)置為 secure 的一個作用就是可以在安全環(huán)境下讓用戶輸入密碼。
同樣,當(dāng)有外設(shè)需要訪問 DRAM 或者 SRAM 的 secure region 時,也需要通過 TZPC 實(shí)現(xiàn)對外設(shè)的控制。

所以說 Trustzone 技術(shù)的實(shí)現(xiàn),并非某個單一模塊的功能可以完成,需要參與到整個系統(tǒng)中的所有硬件模塊共同協(xié)作才能實(shí)現(xiàn)一個安全的硬件系統(tǒng)。而 Trustzone 技術(shù)面世以來,也并非牢不可破,一方面 IC design 的方案各大廠商都不相同,另一方面 Trusted OS 由各家 OEM 或者第三方 Trustzone vendor 提供,軟硬件的漏洞也不斷被發(fā)現(xiàn)。因此獨(dú)立的硬件安全單元近年漸成趨勢,尤其是 Android 9.0 Keymaster 從對 Trustzone 的支持提升到對獨(dú)立 Security Elements 的支持,讓人感慨技術(shù)更新的迅速。然而回顧 Trustzone 技術(shù)的發(fā)展,還是覺得 ARM 公司的前瞻性和技術(shù)實(shí)力實(shí)在讓人很是佩服。

附上系列鏈接:
ARM Trustzone 技術(shù)(一) 綜述
ARM Trustzone 技術(shù)(二) ARMv7-A Processor modes & registers 的安全擴(kuò)展
ARM Trustzone 技術(shù) (三)ARMv7-A Exceptions & Interrupts Handling 的安全擴(kuò)展

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容