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

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

3天內不再提示

如何掌握用于ARMv8-M軟件開發的信任區

星星科技指導員 ? 來源:嵌入式計算設計 ? 作者:Diya Soubra ? 2022-10-20 14:13 ? 次閱讀

ARM 信任區技術是一種系統范圍的片上系統 (SoC) 設計安全性方法。它使得安全設計成為可能,從最小的微控制器(用于 Cortex-M 處理器的信任區)到高性能應用處理器(采用適用于 Cortex-A 處理器的信任區技術)。它是基于硬件的安全性,內置于CPU和系統的核心中,供希望為設備(如信任根)提供安全性的半導體芯片設計人員使用。TrustZone技術可用于任何基于ARM Cortex-A的系統,現在有了Cortex-M23和Cortex-M33處理器,它也可以在最新的基于Cortex-M的系統上使用(參見托馬斯·恩塞爾蓋克斯關于Cortex-M23和Cortex-M33的博客 - 數十億臺設備的安全基礎)。

pYYBAGNQ5w-AMV5vAALs0GqX1aU118.png

[圖1|信任區安全性可實現共享資源的受控分離]

TrustZone 方法的核心是硬件彼此分離的安全和非安全世界的概念。在處理器內,軟件要么駐留在安全世界,要么駐留在非安全世界中;這兩個世界之間的切換是通過Cortex-A處理器(稱為安全監視器)中的軟件以及Cortex-M處理器中的硬件(核心邏輯)完成的。這種安全(可信)和非安全(非可信)世界的概念超出了 CPU。它還涵蓋 SoC 中的存儲器、片上總線系統、中斷、外設接口和軟件。

由 ARMv8-M 信任區保護的系統內的軟件模塊

對于安全解決方案,安全專家建議將受信任的代碼減少到最低限度,以減少攻擊面并簡化安全審核。也就是說,只有在代碼經過詳盡的檢查和攻擊測試后,才將代碼放在受信任的空間中。需要測試此受信任的代碼是否適用于規范,并且需要對其進行測試以確保它不會按預期工作。如果我們應用此建議,則我們想象一個代碼分布,如上面的圖 1 所示。

安全啟動、設備資源管理器和安全 API 將駐留在特權受信任的空間中。這是對所有資源具有訪問控制并具有最高優先級的框。受信任的庫駐留在無特權但受信任的空間中。這些庫由資源管理器控制,并使用內存保護單元進一步相互保護。在不受信任的一面,我們看到與今天的任何Cortex-M相同的代碼分布。特權框中的操作系統和用戶空間中的應用程序。這是 TRUSTZone 為 ARMv8-M 帶來的強大優勢之一,在系統獲得安全性的同時,用戶端保持不變。高效和用戶友好的安全性 - 這是信任區對ARMv8-M的承諾。

大部分工作是在受信任方的代碼開發人員的陣營中進行的。建議對代碼進行安全審核,這就是建議使用較小代碼的原因。

順便說一句,對于開發人員來說,新的機會將會打開。例如,現在物聯網節點的“健康監視器”將出現一個新的市場,如果可信空間中的一小段代碼將觀察系統的行為以檢測異常并破解采取糾正措施的嘗試。如果我們認為物聯網節點將在現場停留多年而無需人為干預,那么這可能是確保長使用壽命所需的最重要的代碼。

對于那些對 TrustZone 的要素感興趣的人,我向您介紹三大主要新概念:

概念1:由地址定義的安全

處理器使用新引入的安全歸因單元來檢查地址的安全屬性。系統級接口可能會根據整體 SoC 設計覆蓋該歸因。選擇狀態后,地址也會通過相應的內存保護單元(如果系統中存在)。

概念2:附加狀態

ARMv7-M 和 ARMv6-M 架構定義了兩種執行模式:處理程序模式和線程模式。處理程序模式是特權模式,可以訪問 SoC 的所有資源,而線程模式可以是特權模式,也可以是非特權模式。使用 TrustZone 安全擴展,處理器模式被鏡像為形成安全狀態和非安全狀態,每種模式都有一個處理程序模式和一個線程模式。安全狀態和處理器模式是正交的,從而產生狀態和模式的四種組合。在安全存儲器中運行軟件時,處理器會自動設置為安全狀態。同樣,當處理器在非安全存儲器中執行軟件時,處理器會自動設置為非安全狀態。這種設計消除了任何安全監控軟件來管理狀態開關的需要,從而減少了內存占用和功耗,如上文所述。

概念 3:跨域調用

ARMv8-M是為具有確定性實時操作的Cortex-M配置文件而設計的。任何狀態下的任何函數都可以直接調用處于其他狀態的任何其他函數,只要根據預定義的安全狀態入口點遵守某些規則即可。此外,正如預期的那樣,每個狀態都有一組不同的堆棧和指向這些堆棧的堆棧指針,以保護安全端的資產。函數調用開銷大大減少,因為不需要 API 層來管理調用。給定預定義的入口點,調用將直接進入被調用的函數。

現在您已經完全熟悉了ARMv8-M的TrustZone的工作原理,我們深入研究編寫軟件的機制,以便僅使用三個有用的提示來利用它。

提示 1:利用新的 ARM C 語言擴展功能

ARMv8-M 的信任區引入了一些新的指令來支持安全狀態切換。軟件開發人員不應創建程序集包裝器來生成這些指令,而應利用 ARM C 語言擴展 (ACLE) 中定義的新編譯器功能,使軟件工具能夠了解函數的安全用法并生成所需的最佳代碼。ACLE功能由多個編譯器供應商實現,因此,代碼是可移植的。

例如,在創建可從非安全狀態調用的安全 API 時,應在聲明函數時使用名為“cmse_nonsecure_entry”的新函數屬性。在函數結束時,以安全狀態調用 - 處理器內的寄存器可能仍包含機密信息。使用正確的函數屬性,編譯器可以自動插入代碼以清除 R0-R3、R12 和應用程序狀態寄存器 (APSR) 中可能包含機密信息的寄存器,除非這些寄存器用于將結果返回給不安全的軟件。寄存器 R4 到 R11 的處理方式不同,因為它們的內容在函數邊界處應保持不變。如果它們的值在函數的中間發生更改,則在返回到非安全調用方之前,應將這些值還原為原始值。

提示 2:驗證不受信任的指針

在某些情況下,非安全代碼可能會根據設計提供不正確的指針,以嘗試訪問安全內存。為了對抗這種可能性,在ARMv8-M中引入了一個新的指令,即測試目標(TT)指令。TT 指令返回地址的安全屬性,因此 Secure 軟件可以確定指針是指向安全地址還是非安全地址。

為了使指針的檢查更加高效,安全配置定義的每個內存區域都有一個關聯的區域編號。軟件可以利用此區域編號來確定連續的內存范圍是否具有類似的安全屬性。

TT 指令從地址值返回安全屬性和區域編號(以及 MPU 區域編號)。通過在存儲器范圍的開始和結束地址上使用TT指令,并識別兩者駐留在同一區域編號中,軟件可以快速確定存儲器范圍(例如數據陣列或數據結構)完全位于非安全空間中。

poYBAGNQ5xGAIdm7AAKyKs1CbHU770.png

[圖2 |檢查有效區域邊界的指針]

使用此機制,為安全端提供 API 服務的安全代碼可以確定來自非安全軟件的指針引用的內存是否具有 API 的相應安全屬性。這可以防止非安全軟件在安全軟件中使用 API 來讀出或損壞安全信息。

提示 3:針對異步非安全內存修改進行設計

非安全中斷服務例程可能會更改由安全軟件處理的不安全數據。因此,在驗證步驟之后,已由安全 API 驗證的輸入數據可以通過非安全 ISR 進行更改。避免這種情況的一種方法是在安全存儲器中制作該輸入數據的本地副本,并使用安全副本進行處理(包括驗證輸入數據),并避免讀取非安全存儲器。在不需要這種復制的情況下(例如,當處理特定內存區域中的大量數據時),則替代方法是對安全歸因單元進行編程以使該內存區域安全。

總結

TrustZone 旨在成為一種高效的用戶友好型技術,供所有開發人員創建安全的嵌入式解決方案。安全方的軟件開發人員有責任確保整個系統是安全的,并且沒有安全數據泄漏到非安全方。為了實現這一目標,概述了三個關鍵的 TrustZone 概念,以及安全軟件開發人員可以采取的三個關鍵操作來幫助創建安全的系統。ACLE技術保護被調用函數寄存器中的數據。用于驗證指針的TT指令,最后,開發人員需要記住,非安全端可能會通過中斷安全端來更改數據。

審核編輯:郭婷

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • soc
    soc
    +關注

    關注

    38

    文章

    3798

    瀏覽量

    216061
收藏 人收藏

    評論

    相關推薦

    ARMv8-M平臺開發安全軟件的建議

    設計消除了本來用于管理狀態切換的安全監控軟件的必要性,從而實現減少存儲足跡和功耗的目的。新增正交態概念3:跨域調用ARMv8-M為實現Cortex-M的性能專門設計,具備確定性實時運行
    發表于 01-11 14:37

    Armv8-M應用筆記上使用TrustZone

    本應用筆記介紹CMSIS和MDK中可用的功能,以利用ARMv8-M體系結構中的安全域和非安全域。它包含幾個編程示例,其中包括一個RTOS應用程序,該應用程序顯示了非安全線程執行與ARMv8-M系統安全域提供的庫之間的交互。
    發表于 05-11 13:26

    如何在ARMv8-M架構處理器上集成FreeRTOS?

    用 (NSC) 的內存區域中。使用 TrustZone后,應用程序由兩個獨立的項目組成:1、在安全端運行的安全應用程序2、在非安全端運行的應用程序ARMv8-M 內核啟動后默認為安全端,由安全軟件負責
    發表于 08-04 14:46

    Armv8-M上PAC和BTI的功能擴展分析

    Trustzone for Armv8-M的通用規則,以下訪問是允許的:安全軟件可以訪問安全和非安全密鑰非安全軟件只能訪問非安全密鑰每個安全狀態和特權級狀態有唯一的密鑰,因此軟件不需要
    發表于 08-01 14:56

    Armv8.1-M PAC和BTI擴展簡析

    1、Armv8.1-M PAC和 BTI 擴展簡析Armv8-M通過Trustzone for Armv8-M, Memory Protection Unit (MPU) 和Privileged
    發表于 08-05 14:56

    ARMv8-M trustzone IOT安全之基于Cortex-M33核的TFM測試

    Execution Environment,可信執行環境)無法運行在SPE,ARM給出了開源的TFM(Trusted Firmware-M)作為參考實現。本文編譯運行TFM的代碼,基于MPS2_AN521平臺qemu模擬運行,分析各個測試項,進而理解ARMv8-M的安全
    發表于 09-14 14:41

    ARMv8-M處理器故障處理和檢測

    錯誤檢測和校正技術可用于幫助減輕硅器件。ARMv8-M處理器包括一些功能,可以檢測這些錯誤。 在硅器件中,出現錯誤的原因可能是: ?軟件錯誤。 ?使用錯誤,條件在正常操作條件之外。例如溫度或電源電壓
    發表于 08-02 06:28

    ARMv8-M異常處理手冊

    ;對于例如,不存在IRQ或FIQ處理模式。ARMv8-M處理器還集成了嵌套矢量中斷控制器(NVIC),用于識別核心的外部中斷。這不同于其他ARM處理器,后者幾乎沒有對中斷的直接硬件支持。 處理器核心
    發表于 08-02 06:09

    Armv8-M內存模型與內存保護用戶指南

    本指南概述了Armv8-M內存模型和內存保護單元(MPU)在Cortex-M處理器中實現。本指南使用示例來幫助解釋這些概念 它介紹了。 本章概述以下主題: ?內存模型 ?內存保護單元(MPU) ?Armv7-M
    發表于 08-02 08:12

    如何在Cortex-M處理器中實現的Armv8-M異常模型

    本指南介紹在Cortex-M處理器中實現的Armv8-M異常模型。本指南還提供了示例,以幫助解釋其介紹的概念。 Arm架構分為多個配置文件,針對不同細分市場的需求。微控制器配置文件或“M配置文件
    發表于 08-02 13:14

    ARMv8-M體系結構及其程序員模型簡介

    Armv8體系結構有幾個不同的配置文件。這些配置文件是體系結構的變體針對不同的市場和用例。Armv8-M體系結構就是其中之一配置文件。 Arm定義了三個體系結構配置文件:應用程序(A)、實時(R
    發表于 08-08 06:18

    用于ARMv8-M 2.0版的連接用戶指南0.1版Acle擴展

    ACLE提供的工具允許您構建在ARMv8-M安全擴展的安全狀態下運行的映像。 您還可以創建一個導入庫包,非安全映像的開發人員必須擁有該導入庫包,這些映像才能調用安全映像。 例如,使用amclang
    發表于 08-16 08:27

    基于ARMv8-M處理器的安全堆疊密封

    本建議概括介紹了軟件對識別為CVE-2020-16273的漏洞的影響和緩解措施。 本咨詢中討論的方案涉及基于ARMv8-M的處理器,包括Cortex-M23、Cortex M
    發表于 08-17 06:31

    NuMicro M2351系列微控制器的安全特色與應用

    的就是如何確微控制器內部軟件資產能受到嚴謹保護,同時又要能兼顧給合作廠商在軟件開發上一定的彈性,正如圖一的例子,Armv8-M 架構可以把有價值的通訊協議放到 TrustZone 或 Secure
    發表于 08-28 06:24

    ARMv8-M上使用TrustZone

    ?技術是片上系統(SoC)和CPU系統范圍的安全方法。 針對ARMv8-M安全擴展的TrustZone針對超低功耗嵌入式應用進行了優化。 它支持多個軟件安全域,限制對受信任軟件的安全內
    發表于 09-04 07:11
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>