Arm TrustZone : Arm 於 2004 首次在 ARMV6z 引入 TrustZone,將 CPU 的架構分成「普通、加密」兩個世界,從硬體層來提昇資訊安全,而在 進一步了解 Arm 的設計,從這份 Arm 2013 年的白皮書中可以看出總共有四層的安全策略提供程式設計師來使用:
其中 Trust world 即是 TrustZone 的應用,使執行環境分離成 Rich Execution Environment & Trusted Execution Environment,抑或上面說的「普通、加密」。
此圖中的處理器架構在 CPU、Cache 分隔出兩個世界,並以 Security Configuration Register(SCR) bit 0 來告知 CPU 此時的資料是從哪個世界而來。另外圖中的 EL3 則 ARMv8架構定義的四個例外層級其中之一,分別為 EL0 到 EL3,其中數字越大代表特權(privilege)越大,詳情可見成大資工 wiki
Globalplatform:制定 TEE 標準的非營利組織,值得關注的是 TEE Subsystem & OP-TEE Driver 被納入 4.12 Linux kernel,而這是 2017.7.2 時發生的事情!
Trusted Platform Module:由 TCG(Trusted Computing Group) 制定的安全標準,根據閱讀資料,jserv 提到「可以把 TPM 想為電腦的指紋一樣,可作為電腦身分的唯一辨識,非一般的電腦晶片組,利用 TPM 晶片加上 BIOS、作業系統,即可創造出唯一僅能被自己電腦所用的加密金鑰,於是透過 TPM 加密過後,即使 BIOS 被洗掉,硬碟裡的東西也受到保護。」
從功能面上 TPM 扮演幾個角色
REE & TEE : REE 即 Rich Execution Environment 就是我們一般常用的系統環境,運行常見的作業系統 e.g. Linux Android,而 TEE 則是獨立於 REE 之外的另一個隱密世界,負責掌管系統的機密的記憶體與執行秘密任務的作業系統。
TEE 要能夠讓 Secure World 的安全性被保證沒被打折扣,就必須從開機階段的一致性做起,我們可以參考底下 OP-TEE 的 truted boot 的流程是先 TEE 後 REE 並且在 TEE Boot 的階段進行簽章驗證,而在這個階段的簽章標準上是由 Original Equipment Manufacturer(OEM) 生產商來簽署,而每個階段的 bootloader 都會驗證程式碼的簽證才載入程式碼,因此這個流程被稱為 Trusted boot ,以防在 boot 階段 TEE 系統就被惡意程式碼污染。
而在程式執行的階段則是讓 REE、TEE 分別具備不同的權限,我們這邊看的是 Arm TrustZone 為硬體支援發展出來的 OP-TEE。從 Arm TrustZone 的硬體設計我們看得出 REE 不具備存取 Secure Wolrd 記憶體的權限,因此 TEE 就是一個隔離的執行環境負責機密資料的存取與運算。對於 REE 和 TEE 雙方的溝通是建立 Secure Monitor Call,SMC 的指令是 CPU 對 EL3 的進入點,,這方面 API 的標準則是由 Globalplatform 所制定,兩個系統的溝通大致上可以從下圖看出個大概,TEE 會接受來自 SMC 的事件然後給出相對應的 response,這之中經過什麼運算處理,都是不可視的。
TEE 目前課程上有看到兩個實際的開源案例分別是
• Secure hardware tokens
• Mobile payment
• BYOD
• Runtime integrity verification
• Trusted user interface
• Remote enablement/disablement
• Automotive (trust vs. safety)
• Secure isolation, Remote attestation
• DRM, HDCP, secure NFC in P2P mode
• Any other operation that requires verifiable
小結:看了很多文章,深入解釋 TEE 比較完整的還是有公開標準的 GlobalPlatform 妥提供的文件並搭配由 Linaro 開源的 OP-TEE 來學習會是一個不錯的方向。 TEE 基本核心精神是「隔離執行環境」,同時 TEE 系統安全則必須建構在硬體上的支援,如 Arm TrustZone、Intel SGX…等等,在每個人都有手機的前提以及各種行動應用的產生,TEE 所能帶來的安全是否是 「Trustworthy」會是行動應用所關注的點。另外很多關於 TEE 的文章都是對岸整理的,要入門從對岸的文章著手是一個不錯的切入點。