1. 爲什麼會出現這種技術?
爲了安全,例如:保護指紋虹膜的生物特徵數據
2. 爲了確保數據安全各家公司都做了些什麼?
Arm公司提出的了trustzone技術,用一根安全總線(稱爲NS位)來判斷當前處於secure world還是non-secure world狀態,狀態的切換由ATF(arm trusted firmware)來完成
3. 有哪些Normal world os
Linux,Android
4. 有哪些secure world os
OP-TEE,Trusty,QSEE,SierraTEE
5. 什麼是TEE?
TEE全稱爲Trusted execute environment,也就是信任執行環境。TEE是基於trustzone技術搭建的安全執行環境
6. TEE需要硬件支持嗎?
是的,硬件軟件缺一不可,兩者相輔相成。所謂的硬件是集成到處理器中的功能
7. TEE硬件視圖
8. TEE軟件視圖
9. TEE OS是統一的嗎?
不是,目前各家廠商和組織都有各自的實現方式,但是所有方案的外部接口都會遵循GP(GlobalPlatform)標準
10. 各家廠商和組織的TEE OS到底有何區別?
TA的添加和加載時的校驗有所區別
11. OPTEE-OS屬於哪家廠商的?
屬於Trustonic的
12. OPTEE-OS全稱是什麼?
Open-source Portable Trusted Execution Environment OS
13. 到底是如何實現安全的呢?
當處於secure world狀態,那麼就會執行TEE OS部分的代碼,當處於non-secure world狀態時,就執行linux kernel部分的代碼
14. Linux內核能直接訪問TEE部分的資源嗎?
Linux kernel不能直接訪問TEE部分的資源
15. Linux 內核如何才能訪問TEE部分的資源呢?
Linux kernel能通過特定的TA(Trust Appliaction)和CA(Client Application)來訪問TEE部分特定的資源
16. TA都做了些什麼?
處理保密信息,如信用卡pin碼,私有密碼,客戶數據,受DRM (Digital Rights Management,數字版權管理)保護的媒體;
爲正常內核提供服務,以便不用協調正常內核就可以充分利用保密信息
17. OP-TEE都包括些什麼內容?
Secure world OS(optee_os)、normal world client(optee_client)、test suite(optee_test/xtest)以及linux驅動
18. OP-TEE軟件架構
產品開發團隊負責開發一個運行在linux上的client application(CA)和一個運行在OP-TEE上的trusted application(TA),CA使用TEE client API與TA通信,並且從TA獲取安全服務。CA和TA使用共享內存進行通信。
19. TEE啓動流程
理論上來說,在啓動過程中,OP-TEE必須儘可能早的啓動(bootloader的運行優先於OP-TEE會帶來一個缺陷,觸碰敏感數據)。在一個典型的linux啓動過程中,rom bootloader加載/執行一個第一階段bootloader(如:SPL,MLO,SBL1,FSBL),這個第一階段bootloader然後執行一個第二階段bootloader(如:U-Boot,LittleKernel),這個第二階段bootloader會執行linux內核,所有的這些過程來自一個安全世界上下文。
在一個基於ARMv7的處理器上,附有TEE的典型啓動流程是SPL加載OP-TEE和U-Boot,然後跳轉到OP-TEE,一旦OP-TEE初始化完畢,OP-TEE就會切換到非安全上下文,並且跳轉到U-Boot中。OP-TEE代碼會繼續放在內存中,以便爲linux內核提供安全服務。
在一個基於ARMv8的處理器上,TEE啓動流程還涉及到一個SPL加載ARM Trusted firmware的步驟。SPL跳轉到arm trusted firmware,這個firmware隨後與OP-TEE共同協作,OP-TEE轉而跳轉到處於非安全上下文的U-Boot中。
在一個ARMv8平臺上,ARM Trusted firmware提供一個監視器代碼去管理安全世界和非安全世界之間的切換,而在ARMv7平臺上這一功能是被嵌入到OP-TEE中的。
20. OP-TEE對linux的支持情況是怎樣的?
針對OP-TEE的linux內核驅動出現在內核版本4.12及其以上的版本,如果您運行的內核版本較老,那麼您需要backport 補丁(https://lwn.net/Articles/716737/)。當然您也需要做以下操作來使能此驅動:
20.1 設置內核配置項:CONFIG_OPTEE=y
20.2 添加設備樹節點(可以參考這裏https://github.com/nodeax/linux-at91/commit/6f4de47f0265d75a7d3a1335b5191d464d611ebe)
(可選操作:編譯OP-TEE OS時使能CFG_DT=y,這樣就能在運行時添加必要的節點)
21. OP-TEE OS爲TA提供了安全數據存儲設備
數據要麼以某種加密/授權的方式存儲在linux文件系統/data/tee中,要麼就是存儲在一個Emmc RPMB(Replay Protected Memory Block,重放保護內存塊)的分區中
22. TEE能減少硬件成本
TEE能替代專用的安全芯片。
23. TEE能最小化應用程序的修改
爲了訪問硬件特性,許多安全芯片給用戶空間程序提供OpenSSL引擎接口。一個相同的模型能夠通過開發一個TEE client app作爲OpenSSL引擎與TA之間的接口,因此能夠最小化用戶空間程序的任何修改。Trusted Application將需要實現密鑰管理和加密操作等接口。OP-TEE OS包含libtomcrypt,這個庫提供各種各樣的對稱/非對稱/橢圓曲線加密函數,因此TA 大部分工作是負責輸入校驗和調用合適的OP-TEE 核心API
24. TEE加密操作架構示例
25. 參考資料
https://www.timesys.com/security/trusted-software-development-op-tee/