TrustZone技術簡介

2021-07-04 04:08:15 字數 2659 閱讀 5206

**:

trustzone是arm針對消費電子裝置安全所提出的一種架構。對於這種裝置的安全威脅,可以有幾種形態的安全解決方案。

外部的硬體安全模組,比如裝置上的sim卡。這種方式的優點是sim卡具有特定的軟硬體安全特性,能夠保護卡內的金鑰等資源,而且要攻破其防護所付出的代價很高。缺點就是與裝置的介面通訊速度低,而且不能保護使用者介面的安全,即與使用者互動的資料的安全,所以在交易支付方面該方案還不能提供好的保護;

軟體虛擬化。虛擬化技術如果要保護使用者介面的安全,就需要在gpu的控制上加入很多的驗證,這對於圖形處理的效能也會產生較大影響。同時,除錯埠也仍然是乙個問題。

trustzone的硬體架構是整個系統設計過程中的安全體系的擴充套件,目標是防範裝置可能遭受到的多種特定威脅(注意這種威脅除了來自惡意軟體,黑作坊,還有可能來自裝置的持有人)。系統的安全,是通過將soc的硬體和軟體資源劃分到兩個世界來獲得的。這兩個世界是安全子系統對應的安全世界,和其他子系統對應的普通世界。amba3 axi匯流排系統能確保安全世界的資源不會被普通世界所訪問。而在arm處理器核也有相應的擴充套件,來讓兩個世界的**能分時執行在同乙個核上,這就實際上節省了乙個核。另一方面就是擴充套件了除錯體系,使得安全世界的除錯有相應的訪問控制。

在處理器架構上,每個物理的處理器核提供兩個虛擬核,乙個是非安全核(non-secure, ns),另乙個是安全核(secure),在這二者之間切換的機制叫做monitor模式。ns核只能訪問ns的系統資源,而安全核能訪問所有資源。普通世界的軟體可以使用smc指令或者通過硬體異常機制的乙個子集來進入到monitor模式。可以配置irq,fiq,外部data abort, 外部prefetch abort這幾個異常進入到monitor模式。下圖展現了這種切換方式。

最簡單的情況是,當普通世界的使用者模式需要獲取安全世界的服務時,首先需要進入到普通世界的特權模式,在該模式下呼叫smc,處理器將進入到monitor模式,monitor模式備份普通世界的上下文,然後進入到安全世界的特權模式,此時的執行環境是安全世界的執行環境,此後進入到安全世界的使用者模式,執行相應的安全服務。這裡把安全世界的使用者模式和特權模式分離,是因為通常特權模式中的執行環境是系統級別的,而使用者模式的安全服務是應用級別的,兩者的提供者通常是不同的。下圖是軟體架構的展示。也就是說,安全世界的執行環境要管理使用者模式的服務和應用,並給它們提供程式設計介面。

通常而言,monitor模式中的**是做兩個虛擬核之間切換時的上下文備份和恢復。cp15的scr暫存器的ns位表明了當預處理器所處的安全狀態,該暫存器在普通世界是不能被訪問的。

對於l1記憶體,也需要做與兩個世界對應的劃分,這樣,對於有trustzone的處理器也有兩個虛擬的mmu,使得每個世界都有自己本地的轉換表,來控制位址對映。實際上,轉換表的描述裡面有乙個ns域,對於ns的虛擬核,它會忽略這一位。而對於安全虛擬核,無論ns為0或者1,都可以訪問轉換表,這也使得安全虛擬核可以訪問任何記憶體。對於tlb而言,tlb的tag可以記錄當前的表是哪個世界的(這個不是arm強制的,即各晶元廠商可以自己另外定義),從而讓兩個世界的tlb能夠共存,這也使得世界之間的切換更加快速,而不用去刷tlb記錄。同樣的,對於cache,也擴充套件了一位tag來記錄安全狀態,從而也使得世界切換時不用刷cache。

安全中斷。在trustzone技術中,irq和fiq都可以配置為直接進入monitor模式。推薦的方式是普通世界的中斷源使用irq,而安全世界的中斷源使用fiq。因為在linux中,fiq是不使用的,中斷源都是irq。下圖展現了irq配置為ns中斷的情況。

當處理器執行在普通世界時,irq直接進入到普通世界的irq處理函式;如果處理器執行在安全世界,當irq發生時,會先進入到monitor模式,然後跳到普通的irq處理函式執行。通常而言,進入到monitor模式再切換所導致的中斷延遲的影響很小,尤其是對於非實時系統而言。

對於多核系統,是乙個更加重量級的話題,設想4個物理核,每個又分為兩個虛擬核,是什麼樣的情況,下圖是乙個展示。

在這樣的系統中,外部記憶體的一致性,中斷處理,多核之間的普通世界和安全世界之間的狀態管理和同步都需要深思熟慮。

安全啟動。下圖是安全啟動的順序。

上電後,rom中的bootloader初始化關鍵的外設,比如記憶體控制權,然後切換到外部的bootloader,然後安全世界的os啟動後會做相應的操作環境的初始化,之後才會讓普通世界的bootloader去裝載普通世界的os。這裡的簽名協議是基於rsa演算法的,所以裝置裡面當然會存有相應的公鑰了。這其中有乙個信任鏈的概念,就是說後裝入的元件必須要能通過前面裝入的元件的認證。一次性程式設計(otp)硬體就是拿來做這個信任鏈的根的儲存的。但是rsa公鑰又長了點,比較浪費儲存空間,於是只把公鑰的hash放在otp區域中就行了。當然,有了這樣的安全啟動,實現omtp tr1 中的fsb就順理成章了,只要有相應的私鑰簽名即可。那麼,對於不需要更新啟動鏈中元件的安全啟動,是否還需要非對稱演算法呢?

TrustZone入門知識

最近實習在研究這個東西,就分享一些個人的知識給要用的人吧。arm的trustzone 是乙個涉及整個系統的安全技術。通過該技術可以實現arm的trustedfirmware architecture。該結構涉及多個方面,從總體上看如圖1 參考lcu13 trustedfirmware deep di...

TrustZone系統的安全需求

嵌入式系統中,安全有著多種不同的含義。在一般的系統中,安全包含但不限於以下幾個部分 而trustzone則實現了以下一些安全功能 trustzone實際上只是安全和非安全兩種空間之間的乙個屏障,因此有些安全需求是無法通過trustzone實現的,比如 通訊保護 通訊涉及的資料依然需要進行加密保護,加...

python技術簡介 Python簡介

python 簡介 python是乙個高層次的 結合了解釋性 編譯性 互動性和物件導向的指令碼語言。python的設計具有很強的可讀性,相比其他語言經用使用英文關鍵字,其他語言的一些標點符號,它具有比其他語言更有特色語法結構。python 是一種解釋型語言 這意味著開發過程中沒有了編譯這個環節,類似...