OP-TEE(Open Source Project Trusted Execution Environment)主要是為用戶提供了一種安全存儲的機制,通過硬件對被保護的數(shù)據(jù)進行加密存儲,因此可以使用該機制來保存敏感數(shù)據(jù)、密鑰等信息。在進行對應(yīng)操作時,設(shè)備會進入到被稱為TEE(Trusted Execution Environment)的環(huán)境下,和正常運行時的操作系統(tǒng)隔離開。隔離的實現(xiàn)是通過Arm芯片硬件(Arm TrustZone技術(shù))來完成的,所以安全性和可靠性是非常高的。
OP-TEE作為Trusted Execution Environment(TEE),是基于Arm TrustZone技術(shù)作為底層硬件隔離機制實現(xiàn)的。在TEE規(guī)范中,我們通常使用的操作系統(tǒng),比如Linux,Android等,都屬于non-secure OS,也可被稱作REE(Rich Execution Environment),與TEE相對應(yīng)。TEE是被設(shè)計可以作為non-secure OS的一部分在Arm芯片上運行的,以英創(chuàng)公司的Linux主板為例,這就相當于在主板的non-secure Linux中運行了一個OP-TEE OS,而OP-TEE OS就專門負責安全性要求的操作。
為了保證安全性,通過Arm TrustZone技術(shù)的隔離機制,OP-TEE對REE的系統(tǒng)和應(yīng)用是不可訪問的。因此在REE中是無法獲取到OP-TEE保存的數(shù)據(jù)的,舉一個簡單例子,手機中的指紋或者面容解鎖就會用到這一項技術(shù),REE中的應(yīng)用無法獲得指紋或者面容數(shù)據(jù),只能得到一個是否驗證通過的結(jié)果,具體的驗證過程都是在TEE中完成的。
通過上文簡單的介紹,可以看出REE和TEE之間是需要交互的。OP-TEE提供了CA/TA這種調(diào)用機制,因此實際應(yīng)用中程序需要分為CA和TA兩部分。CA(client application)是運行在REE中的程序,也就是通常運行的普通業(yè)務(wù)代碼,而TA(trusted application)是運行在TEE中的,實現(xiàn)了具體需要在TEE中執(zhí)行的操作。OP-TEE為TA提供了專用的TEE Internal Core API來實現(xiàn)具體的功能,為CA提供了TEE client API來與TA通信,獲取對應(yīng)的安全服務(wù)。對于TEE Internal Core API和TEE client API官網(wǎng)有詳細的介紹和說明,感興趣的客戶可以點擊鏈接查看。CA/TA的具體軟件架構(gòu)可以參考下圖:
我們通過OP-TEE提供的一個簡單例程hello_world來看一下實際應(yīng)用中是如何實現(xiàn)OP-TEE功能的。首先看例程的目錄結(jié)構(gòu),如下圖:
可以看到有host和ta兩個目錄,其中host中就是CA部分的代碼,而ta目錄就是TA部分的代碼。CA部分其實就是正常運行在Linux系統(tǒng)中的代碼,當遇到需要TEE相關(guān)功能時,就可以通過TEE client API來與TA通訊,并獲取對應(yīng)的安全服務(wù)。例程在這里是直接發(fā)起了TEE相關(guān)的請求。CA編譯后會生成一個在Linux系統(tǒng)下可執(zhí)行的二進制文件,可以拷貝到主板的任意目錄下。
TA通過TEE Internal Core API來實現(xiàn)在TEE中具體的操作,所以根據(jù)需求不同,所實現(xiàn)功能也會不同,例程在這里只是簡單的打印了提示信息,表示成功調(diào)用TA并進入到了TEE中。TA通過編譯會生成一個只能在TEE中執(zhí)行的.ta文件,需要拷貝到主板的/lib/optee_armtz/目錄中。
在主板中可以直接運行CA生成的二進制文件,當CA調(diào)用TEE client API與TA通訊時,系統(tǒng)就會尋找到對應(yīng)的.ta文件,并進入到TEE中執(zhí)行。運行結(jié)果如下圖:
這里只是簡單介紹了一下OP-TEE的基礎(chǔ)概念,并表明英創(chuàng)Linux主板可以支持OP-TEE的運行。如果有感興趣的客戶,歡迎和英創(chuàng)的工程師聯(lián)系,獲取更加詳細的信息。
成都英創(chuàng)信息技術(shù)有限公司 028-8618 0660