那曲檬骨新材料有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

從硬件架構與軟件架構看TrustZone

冬至子 ? 來源:TrustZone ? 作者:Hcoco ? 2023-07-26 15:58 ? 次閱讀

1、TrustZone

ARM TrustZone技術是芯片級的安全解決方案,通過在CPU內核的設計中集成系統安全性擴展,同時提供安全軟件平臺,為安全支付、數字版權管理(DRM, Digital Rights Management)、企業服務等應用提供了安全的運行環境。

TrustZone將硬件和軟件資源劃分為兩個執行環境:安全世界(Secure World)和普通世界(Normal World)。不同執行環境的系統軟件和應用軟件、內存區和外圍設備等均相互獨立。TrustZone的硬件邏輯,使安全世界的資源與普通世界隔離,不能被普通世界的組件訪問。

把敏感資源放在安全世界,能保護絕大多數的資源免受很多潛在的攻擊,包括一些很難保證安全的操作,如用鍵盤或者觸摸屏輸入密碼。普通世界和安全世界的代碼以分時共享的方式在同一個物理處理器核上運行,使其不需要專用的處理器內核來執行安全代碼,節省了芯片面積和能耗。

1、TrustZone硬件架構

TrustZone的硬件架構如圖3-1所示,其核心包括處理器內核、直接內存訪問(DMA,Direct Memory Access)、安全RAM、安全啟動ROM、通用中斷控制(GIC,Generic Interrupt Controller)、TrustZone地址空間控制器(TZASC,Trust Zone Address Space Controller)、TrustZone保護控制器、動態內存控制器(DMC,Dynamic Memory Controller)和DRAM(Dynamic Random Access Memory,動態內存控制器),TrustZone內部組件通過AXI(Advanced eXtensible Interface,先進的可擴展接口)系統總線通信,與外設通過AXI-to-APB橋通信。

image.png

(1)系統安全性

TrustZone隔離了所有SoC(System on Chip,系統級芯片)硬件和軟件資源,劃分為兩個執行環境,即用于安全子系統的安全區域以及用于存儲其他所有內容的普通區域。TrustZone通過AXI和APB實現了硬件資源的區域分離,并通過AXI總線的硬件邏輯確保普通區域的組件無法訪問安全區域的資源。將敏感數據存儲在安全區域,將安全軟件運行在安全處理器內核中,確保敏感數據存儲和訪問免受攻擊,如使用鍵盤或觸摸屏輸入密碼等難以防護的攻擊。

TrustZone架構的總線結構中, AXI是一種面向高性能、高帶寬、低延遲的片內總線,用于連接高速設備APB是一種低門數、低帶寬的外設總線,用于連接低速設備 ,APB通過AXI-to-APB橋連接到AXI系統總線上。

AMBA協議是用于連接和管理片上系統中功能塊的開放標準和芯片互連規范,TrustZone使用的AXI總線和APB外設總線均遵循AMBA3協議。

為支持TrustZone技術,AMBA3 AXI系統總線在 每個讀寫信道都增加了一個額外的控制信號,稱作非安全位(NS位)

當主設備向總線提出讀寫事務請求時,必須將控制信號發送到總線上,總線從設備的解碼邏輯解釋該控制信號, 允許安全主設備對安全從設備的訪問,并拒絕非安全主設備對安全從設備的訪問, 依據外設的硬件設計和總線配置,從設備或總線可以產生錯誤訪問的狀態信號。

TrustZone架構 通過AMBA3 APB外設總線提供了保護外設安全性的特性,包括中斷控制器、時鐘及用戶I/O設備。 相比僅僅保護數據安全,TrustZone架構的安全世界可以解決更廣泛的安全問題。

安全中斷控制器和時鐘允許非中斷安全任務來監控系統, 安全時鐘源保證了DRM的可靠性,安全鍵盤保證用戶輸入密碼的安全性 。為了使現有AMBA2 APB外設與實現TrustZone技術的系統兼容,APB總線沒有帶對應的NS位,而由AXI-to-APB橋負責管理APB外設的安全。AXI-to-APB橋會主動拒絕異常的安全設置事務請求,而不會把請求發送給外設。

(2)處理器內核安全性

通過ARM處理器內核的擴展,普通區域和安全區域的代碼能夠以分時的方式安全有效地運行在同一個物理處理器內核上,不需要使用專用安全處理器內核,在保證處理器內核安全的同時兼顧了芯片面積和能耗。(有點像時間片任務切換)

目前ARM主流產品,如ARM Cortex-A5、ARM Cortex-A7、ARM Cortex-A9等處理器均已支持前述處理器內核安全擴展。

在處理器架構上,每個帶TrustZone安全擴展的處理器核都提供兩個虛擬核:安全核和非安全核。

它們分屬不同的執行環境安全區域和非安全區域,如圖3-2所示。同時處理器引入了一個特殊的機制——監控模式,負責不同執行環境間的切換。非安全核僅能訪問非安全系統資源,但安全核能訪問所有資源。

image.png

ARM CP15協處理器中引入一個安全配置寄存器(SCR),該寄存器中有一個NS位,NS位表明當前處理器所處的安全狀態:0代表安全態,1代表非安全態。 安全配置寄存器中的NS位是TrustZone對系統所做的關鍵擴展 ,該NS位不僅可以影響CPU內核和內存子系統,還可以影響片內外設的工作。

當ARM處理器處于特權模式工作狀態,即系統模式(sys)、中斷模式(irq)、快速中斷模式(iq)、管理模式(svc)、數據訪問終止模式(abt)或未定義指令終止模式(und)時,可以讀寫安全配置寄存器,而在用戶模式(usr)時不允許讀寫。

NS位只能被運行在安全態且處于特權模式的軟件改變,系統在非安全態時不能訪問SCR寄存器,通過NS位的狀態控制處理器安全狀態的切換。

在TrustZone處理器中同時引入了一個特殊的模式——監控模式。監控模式是一種特殊的安全狀態,當系統處于監控模式時,不管NS位是否為0,都可以訪問安全世界的資源。從非特權模式到特權模式只能通過異常來進行,與該過程類似的,從非安全態到監控模式也是通過異常進行的。從非安全狀態可以通過3種異常進入監控模式:執行SMC(Secure Monitor Call,安全監視調用)指令、外部中止、FIQ(Fast Interrupt Request,快速中斷請求)和IRQ(Interrupt Request,中斷請求)。監控模式還負責實現兩個虛擬核之間切換時的上下文備份和恢復。

監控器可以在沒有任何執行環境的代碼幫助下直接捕獲FIQ和IRQ,當執行流到達監控器的時候,監控器能將中斷請求路由到相應的中斷處理程序與安全中斷控制器結合起來,從而讓安全中斷源發出的中斷不被普通世界軟件操作。(是不是中斷管理器)

ARM推薦使用IRQ作為普通世界中斷源,FIQ作為安全世界中斷源。如果中斷發生在相應的執行環境,則不需要進行執行環境的切換;如果中斷發生在另外的執行環境,由監控器控制切換執行環境。一般情況下在執行監控器代碼的時候應該關閉中斷。同時在CP15協處理器中還引入一個配置寄存器以防止普通世界的惡意軟件屏蔽安全世界的中斷。

內存管理是實現安全管理的另一關鍵技術。TrustZone技術的內存管理,通過對一個增強的內存子系統MMU(Memory Management Unit,內存管理單元)和Cache增加相應的控制邏輯實現。

ARM處理器中一級存儲系統的主要部件就是內存管理單元,用來將程序和數據的虛擬地址轉換為物理地址。頁表描述了虛擬地址到物理地址的映射關系,以及每一頁的訪問權限和Cache屬性。

有MMU但是沒有TrustZone安全擴展的 ARM內核中,只有一個頁表基地址寄存器, 通過特權模式代碼重寫頁表基地址寄存器,使其重新指向一個新的頁表來提供多個獨立的地址空間。

在TrustZone安全擴展處理器中, 有兩個頁表基地址寄存器,不同安全狀態使用不同的頁表基地址寄存器, 相當于有兩個虛擬MMU,每個虛擬MMU分屬不同的虛擬核,使每個執行環境有一個本地頁表集,各個執行環境的虛擬地址到物理地址的轉換是獨立的,在切換執行環境時不需要切換頁表。

這樣,在兩種模式切換時不必刷新緩存,進而提升軟件在這兩種模式間通信時的性能。為了實現這種特性,L1、L2等各級處理器緩存需要為 Tag域增加一個NS位 ,用來標識這一行的安全狀態。無論Cache行的安全狀態如何,只要沒被鎖住,都可以被換出到主存中,為新的緩沖數據留出存儲空間。高性能設計能夠在Cache中同時支持安全模式及普通模式的數據緩存,是一個非常有用的特性。

TrustZone技術中使用協處理器實現處理器擴展功能,ARM協處理器附屬于ARM處理器,通過 擴展指令集或提供配置寄存器來擴展內核功能CP15協處理器是TrustZone技術中使用的最重要的ARM協處理器,用于控制Cache、TCM和存儲器管理。

協處理器通過設置某些寄存器實現普通世界和安全世界的工作協同。其中某些寄存器是有備份的,即普通世界和安全世界各有一個這樣的寄存器,此時修改寄存器只會對它所在執行環境起作用;有的協處理器寄存器是沒有備份的,對它的修改會影響到全局,如控制對Cache進行鎖定操作的寄存器。

對這種全局寄存器的訪問必須嚴格控制,一般只對安全世界提供讀寫權限,而普通世界只能讀取。

(3)調試安全性

通過安全感知的調試結構對安全區域的調試進行嚴格控制,而不會影響普通區域的調試。(這個方面我倒是一直沒有接觸到)

2、TrustZone軟件架構

TrustZone硬件架構將新的安全擴展特性應用于CPU內核之中,為 建立安全執行環境提供了硬件基礎操作系統廠商手機制造商和芯片廠商可以根據自己的安全需求,在一個可共用的硬件框架之上擴展和開發不同的安全解決方案。

ARM同時提供了一個典型的安全軟件架構,如圖3-3所示。安全軟件架構包括安全世界、普通世界兩個區域,通過監控器實現兩者的切換。目前的絕大多數解決方案都是嚴格基于此架構實現。

image.png

TrustZone的安全軟件架構設計基于智能終端的使用模式,包含安全啟動、監控模式、TrustZone API 3個方面。

(1)安全啟動

TrustZone軟件安全啟動過程如圖3-4所示。

在系統初始化時,在安全特權模式下從片內安全引導代碼區啟動,采用這種方式以避免OS被攻擊。

片內安全引導代碼完成系統安全狀態的設置,然后引導OS啟動。

在OS啟動的每一個階段,功能模塊均需通過驗證才允許加載

通過檢查保存在安全域內的簽名可以保證OS引導代碼的完整性,避免終端設備被非法重新硬件編程

(可以看看我在ATF的那個翻譯-COT信任鏈,這種啟動鏈的安全校驗更多地是像一種思維模式)

(2)監控模式

TrustZone監控器實現軟件系統在安全世界和普通世界之間的切換管理。

如前所述,普通世界的應用程序可以通過3種異常進入監控模式:執行安全監視調用SMC指令、外部中止、FIQ和IRQ。

典型的切換過程如下。當普通世界的應用需要切換到安全世界的服務時,首先切換到普通世界的特權模式,在該模式下調用SMI,處理器將切換進入監控模式;

監控模式首先備份普通世界的運行時環境和上下文,然后進入安全世界的特權模式,再轉換為安全世界的用戶模式,此時的運行環境為安全世界的執行環境,可以執行相應的安全服務。

上述過程包括普通世界和安全世界的切換,以及用戶模式和特權模式的切換。 執行環境的切換只有在各自世界的特權模式下才能實現 ,但應用的調用關系只能在 用戶模式下執行 ,避免應用越權使用系統級別的調用。(執行和切換)

監控模式中的代碼實現兩個虛擬運行世界的上下文備份和恢復。CP15協處理器中的安全狀態寄存器SCR的NS位標志著當前處理器所處的安全狀態,該寄存器不允許被普通世界的應用訪問。由于監控器負責環境切換時對狀態的存儲和恢復,所以執行環境的切換不需要在各自系統中增加環境切換代碼。

TrustZone通過優化中斷向量表的設計避免惡意中斷攻擊,并滿足必要的執行環境切換需求。

TrustZone把中斷向量表分成兩部分:安全的中斷向量表置于安全存儲器,而且指向安全的中斷處理程序;

非安全的中斷向量表和處理程序置于普通存儲器中,以避免某些惡意程序修改安全的中斷向量表和處理程序或其他通過非法手段進入安全世界。

處理器執行完安全任務后,TrustZone監視器最后還要 執行一遍SMI指令 ,其目的在于清除CP15的NS位。

監視器還會將之前的內容重新存回所有寄存器,使處理器恢復到之前的非安全狀態。

通過這種恢復機制,所有安全世界中的指令和數據還是原值,未受任何的修改,這也是安全世界之所以安全的關鍵。(函數的堆棧調用)

(3)TrustZone API

TrustZone API為希望獲取安全保護的應用程序提供了一個標準接口,定義了運行在普通世界中的客戶端與安全世界之間交互的接口,應用程序必須通過調用TrustZone API才能被允許進入安全世界。

應用使用TrustZone API能夠與一個獨立于實際所在系統的安全部件進行通信,使開發者能夠專注于應用程序本身的功能和性能,并且縮短開發周期,同時保證應用的安全性。

但是,希望使用TrustZone提供安全保護的應用程序必須根據它們運行的安全平臺進行重寫,導致市場被過度細分,制約了應用程序與服務之間良好的生態環境的形成。

image.png

客戶端包括應用程序和Service Stub服務抽象層,調用普通世界下的TrustZone API呼出,通過TrustZone交互機制傳送給安全世界下的服務管理器和安全服務。

大部分的API函數都設計為客戶端程序與安全服務間的溝通橋梁,兩者通過結構體信息(Structured Messages)及共享內容(Shared Memory)這兩個機制形成通信信道。

當傳遞的信息量較小時,可通過結構體信息來傳送及溝通; 而當傳遞的信息量較大時,則會直接將客戶端的memory映射到安全服務區的memory空間,然后通過該Share Memory作為客戶端與服務端之間直接存取信息的緩沖區。 (這個部分就是動態TA加載)

2、SecureBoot安全啟動技術

由于廠家版本的OS大多嵌入了相當數量的廠家生態應用,同時不明來源的系統鏡像和不可靠的刷機是系統風險引入的一個重要途徑,多數手機廠商希望用戶能保留和使用廠家的OS版本。另外,有的惡意病毒會通過從定向系統啟動位置引入安全風險,由此提出了系統安全啟動技術。

安全啟動技術的邏輯大同小異,本節以展訊的SecureBoot為例說明。

展訊的SecureBoot安全啟動技術采用多級認證的機制,建立了自底向上的可信啟動過程。

SecureBoot對系統軟件采用簽名認證的方式,在手機出廠前對手機操作系統的Image文件進行簽名認證,計算簽名文件的散列值并寫入芯片的一次性可編程模塊。手機每次啟動時先校驗系統的散列值,然后對簽名Images逐級校驗,實現從手機芯片到系統軟件的鏈式校驗過程。

防止非授權更改甚至替換手機原版操作系統中固件或者操作系統,避免手機出廠后沒有得到客戶簽名認證的非授權操作,保護手機中原有的操作系統和軟件版本。

SecureBoot在啟動過程中從Rom Code到Images采用了多層鏈式校驗機制;包括對RomCode的散列校驗,對SPL的完整性的RSA校驗。需要注意的是,RSA私鑰是SecureBoot的保障,需要小心保存。

image.png

SecureBoot安全啟動的流程如下。

  • (1)ROMCode讀取存儲于一次性可編程模塊中BSC(Base Station Controller,基站控制器)的散列值和UID(User Identification,用戶身份)。
  • (2)加載SPL(Second Program Loader,第二次裝載系統)和BSC。
  • (3)RomCode利用散列函數來驗證BSC的完整性。
  • (4)RomCode利用RSA算法來驗證SPL的完整性。
  • (5)加載和運行安全操作系統引導程序。
  • (6)驗證和運行安全操作系統。
  • (7)SPL利用RSA算法驗證UBoot。
  • (8)UBoot利用RSA算法驗證bootimage、recoveryimage、modem、sp等。
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 處理器
    +關注

    關注

    68

    文章

    19409

    瀏覽量

    231188
  • 寄存器
    +關注

    關注

    31

    文章

    5363

    瀏覽量

    121171
  • AMBA總線
    +關注

    關注

    0

    文章

    35

    瀏覽量

    9612
  • ARM芯片
    +關注

    關注

    1

    文章

    126

    瀏覽量

    21578
  • 中斷控制器
    +關注

    關注

    0

    文章

    59

    瀏覽量

    9489
收藏 人收藏

    評論

    相關推薦

    軟件架構

    軟件架構軟件架構軟件架構
    發表于 03-29 21:54

    嵌入式系統 硬件軟件架構(英文)

    嵌入式系統 硬件軟件架構(英文)
    發表于 01-23 14:30

    嵌入式系統 硬件軟件架構(英文)

    嵌入式系統 硬件軟件架構(英文)
    發表于 02-27 09:27

    架構的角度如何寫好代碼 + 我的思考

    架構漫談(八):架構的角度如何寫好代碼 + 我的思考
    發表于 06-18 06:16

    軟件架構存在的意義

    1、前言在嵌入式軟件開發,包括單片機開發中,軟件架構對于開發人員是一個必須認真考慮的問題。軟件架構對于系統整體的穩定性和可靠性是非常重要的,
    發表于 10-27 09:34

    決定嵌入式系統軟件架構的因素和架構的影響

    嵌入式系統軟件架構設計目錄1.前言42.決定架構的因素和架構的影響42.1.常見的誤解52.1.1.小型的系統不需要架構52.1.2.敏捷開
    發表于 11-08 06:54

    軟件架構的作用與設計思路

    痛苦;能最大限度地復用原有的代碼;使代碼高內聚低耦合,維護和修改簡單方便。2.設計思路2.1架構風格嵌入式系統軟件硬件聯系緊密。首先想到要將硬件的驅動程序和功能應用的程序...
    發表于 12-20 06:04

    CMSIS軟件架構概述?

    目錄CMSIS軟件架構庫文件說明CMSIS軟件架構CMSIS概述? ? ?CMSIS軟件架構由四
    發表于 12-22 07:34

    Arm架構中的TrustZone、CryptoCell以及Cryptoisland之間的區別是什么

    就支持TrustZone,因為TrustZone是個系統級別的安全方案,包括硬件軟件。那么即使硬件上支持了
    發表于 07-14 14:15

    STM32 MCU TrustZone開發調試技巧分享

    系統隔離與ARM V8-M TrustZone技術、TrustZone地址安全區及資源安全屬性配置、TrustZone架構下的HardFault調試與處理 、
    發表于 09-05 06:16

    ARM 架構TrustZone 安全處理技術的研究

    對基于 ARMv6 架構的全新TrustZone 安全處理技術進行了研究,著重該技術的實現原理、運行模式和軟硬件支持等方面,論證TrustZone
    發表于 08-28 11:23 ?18次下載

    USB接口的硬件軟件架構及應用設計

    介紹USB接口的硬件軟件架構;USB接口的硬件設計及認證規范;如何利用USB接口提高物聯網設備接口擴展以及提高數據吞吐量;SDK USB 應用入門。
    的頭像 發表于 01-17 07:06 ?4619次閱讀
    USB接口的<b class='flag-5'>硬件</b>和<b class='flag-5'>軟件</b><b class='flag-5'>架構</b>及應用設計

    簡單了解AUTOSRA軟件架構

    AUTOSAR規范主要包括:軟件架構、方法論和應用接口三部分內容。其中,軟件架構是實現軟硬件分離的關鍵,它使汽車嵌入式系統控制
    的頭像 發表于 09-19 15:56 ?1260次閱讀

    什么是系統架構 為什么要做架構設計

    以上的定義從高層抽象視角對什么是架構給予了自己的回答,相比之下,Neil Ford 在《軟件架構基礎》一書中對架構給出了更具象的闡述,其
    的頭像 發表于 11-10 10:19 ?4507次閱讀

    Arm? TrustZone? 技術簡介

    ,不同廠家芯片可能不同需要參考對應的手冊。 二.TrustZone介紹 Arm TrustZone 技術是Armv8-M 架構一個可選的架構擴展。 其核心思想就是樸素的
    的頭像 發表于 07-04 08:44 ?3286次閱讀
    Arm? <b class='flag-5'>TrustZone</b>? 技術簡介
    百家乐官网必胜软件下载| 电玩百家乐官网的玩法技巧和规则| 亚洲百家乐新全讯网| 凌龙棋牌游戏大厅| 金都娱乐城| 做生意摆放龙龟方向| 最新皇冠网| 帝王百家乐官网的玩法技巧和规则| 真人游戏 role/play| 百家乐官网技巧辅助软件| 大发888 娱乐游戏| 百家乐官网试玩1000元| 大发888什么赢钱快| OG百家乐官网大转轮| 百家乐怎么玩会| 百家乐官网专家赢钱打法| 网上百家乐游戏玩法| 木棉百家乐官网网络| 明升网站| 百家乐开户导航| 百家乐官网庄闲的比例| 威尼斯人娱乐城送宝马| 百家乐官网赢多少该止赢| 六合彩现场| 百家乐官网骗局视频| 云博| 百家乐平的概率| 喜达百家乐官网现金网| 威尼斯人娱乐城老牌| 58百家乐官网的玩法技巧和规则 | 哪个百家乐网站最大| 百家乐官网输了100万| 百家乐高手怎么下注| 真人百家乐官网蓝盾娱乐平台| 大发888八大胜博彩| 百家乐娱乐城主页| 狼2老虎机清零密码| 万人迷百家乐官网的玩法技巧和规则| 大关县| 威尼斯人娱乐城送钱| 做生意摆放老虎好不好 |