ARMv8 TrustZone技術

Overview

ARM TrustZone技術爲可信軟件提供了系統硬件隔離。在過去幾年裏,這個技術僅僅出現在Cortex-A系列處理器上。隨着ARMv8-M架構的釋放,爲了滿足市場對嵌入式安全解決方案的需求,Cotext-M微處理器系列引入了TrustZone技術。


Background

TrustZone創建了一個隔離的Secure world,用來爲系統提供機密性和完整性。數十億的應用處理器使用TrustZone保護它們的高價值代碼和數據,應用場景包括:認證,支付,內容保護等。 在應用處理器上,TrustZone爲平臺可信執行環境提供了一個安全邊界,也就是安全世界。

下圖展示了Secure world和non-secure world


Hardware

TrustZone硬件架構提供了安全框架使得設備可以應對各種特定的安全威脅。TrustZone技術並沒有提供一個固定的安全解決方案,而是提供了一個基礎構架允許SoC設計者選擇一些部件,在安全環境中滿足特定的功能。

這個框架的主要目標是非常簡單的:通過構造可編程的環境,保護資產的機密性和完整性不被特定攻擊破壞。擁有這些特點的平臺自然可以構造各種安全解決方案,相對傳統方式,代價更小。

通過把SoC's的硬件和軟件資源分區,使得他們存在於兩個世界:secure world, non-secure world, secure world 用來運行安全子系統,而non-secure world則可以運行其他任何系統。使能TrustZone後,硬件邏輯確保non-secure world部件可以訪問non-secure world資源,敏感資源則保存在secure world中,如果運行在secure world的軟件足夠健壯,那麼可以保護大部分可能的攻擊,包括那些很難保證的安全:比如使用keyboard或者touch-scree輸入密碼。

TrustZone硬件架構的另外一個好處就是,它已經擴展到一些ARM processor cores上了。這使得某些單核處理器使用時分調度方式,安全有效的在Normal world和Secure world間切換,無需增加一個安全處理器核,既節省了硅片位置,又節電。沒一個物理處理器核提供了兩個虛擬核,一個用作non-secure, 另外一個用作secure, 並且提供一個機制在二者之間切換。安全訪問通過系統總線實現,Non-secure 虛擬處理器只能訪問 non-secure系統資源,而secure處理器則可以訪問所有資源。

TrustZone硬件框架也是一個secure-aware調試架構,Normal world 可以使能對Normal world 的調試,而且不會影響到Normal world的調試效果。

Non-secure world和normal world的轉換是通過 Monitor Call實現的, Secure Monitor運行在最高優先級Exception level 3(EL3)。對於支持Trust zone的微處理器,world切換是由硬件實現的。下圖是ARMv8-A和ARMv8-M的區別



Software

對於基於ARMv8-A應用處理器,ARM提供了一個開源參考實現BL31,BL31是認證過的可信啓動流和安全runtime。ARM Trusted Firmware(BL31)可以很容易的集成到開源Trusted OS創建Trusted Execution Environment(TEE)。 ARM Trusted Firmware包括runtime,稱爲Secure monitor, 中斷路由,以及Power State co-ordination Interface(PSCI)


Trusted Execution Environment

GlobalPlatform是一個跨行業的標準定義組織, GlobalPlatform爲Trusted Execution Environment提供了軟件APIs, 兼容以及鑑定標準。TEE包含了三部分: 隔離技術的硬件(比如TrustZone),可信啓動,以及可信OS。TEE可以用來運行多個可信app,和其他安全技術相比TEE提供了更高的性能,並且可以訪問更大數量的內存。

TEE的典型應用包括:可信boot, 完整性管理,認證,支付,內容保護,加密以及移動設備管理。secure world設備驅動提供了訪問外設的安全訪問接口。

GlobalPlatform TEE可以和其他安全技術一起使用,比如hypervisor

TEE profile提供了應該拒絕的攻擊的詳細信息。

ARMv8-M TrustZone

ARMv8-M架構擴展了TrustZone技術到Cotex-M系統,在所有的關鍵點都提供了可靠的保護。

防止Secure資源被non-secure world訪問使得系統開發者可以劃分他們的設計。通過使用Secure Attribute Unit(SAU 類似於MPU). 因爲兩個世界的轉換是基於硬件的,幾乎在瞬間完成,這就保證了實時系統的性能,並且減少了軟件的工作量。

在正常世界寫代碼和以往一樣:應用程序可以訪問特權,非特權空間以及中斷。在安全世界調用庫,函數入口點被鏈接到項目中。這個設計簡化了集成有TrustZone技術Cortex-M處理器

一般來說,系統供應商會提供一些安全代碼在系統範圍內設置和運行安全屬性。在一個典型的實現中,安全代碼儘可能小,以便減少攻擊面和漏洞,類似與Cotext-A處理器的TrustZone,運行在secure態的程序可以訪問secure和non-secure信息,而normal world的程序只能訪問non-secure資源。


本文來源: http://blog.csdn.net/kickxxx/article/details/53939948

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章