0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何掌握用于ARMv8-M軟件開發(fā)的信任區(qū)

星星科技指導(dǎo)員 ? 來(lái)源:嵌入式計(jì)算設(shè)計(jì) ? 作者:Diya Soubra ? 2022-10-20 14:13 ? 次閱讀

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

pYYBAGNQ5w-AMV5vAALs0GqX1aU118.png

[圖1|信任區(qū)安全性可實(shí)現(xiàn)共享資源的受控分離]

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

由 ARMv8-M 信任區(qū)保護(hù)的系統(tǒng)內(nèi)的軟件模塊

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

安全啟動(dòng)、設(shè)備資源管理器和安全 API 將駐留在特權(quán)受信任的空間中。這是對(duì)所有資源具有訪問(wèn)控制并具有最高優(yōu)先級(jí)的框。受信任的庫(kù)駐留在無(wú)特權(quán)但受信任的空間中。這些庫(kù)由資源管理器控制,并使用內(nèi)存保護(hù)單元進(jìn)一步相互保護(hù)。在不受信任的一面,我們看到與今天的任何Cortex-M相同的代碼分布。特權(quán)框中的操作系統(tǒng)和用戶空間中的應(yīng)用程序。這是 TRUSTZone 為 ARMv8-M 帶來(lái)的強(qiáng)大優(yōu)勢(shì)之一,在系統(tǒng)獲得安全性的同時(shí),用戶端保持不變。高效和用戶友好的安全性 - 這是信任區(qū)對(duì)ARMv8-M的承諾。

大部分工作是在受信任方的代碼開發(fā)人員的陣營(yíng)中進(jìn)行的。建議對(duì)代碼進(jìn)行安全審核,這就是建議使用較小代碼的原因。

順便說(shuō)一句,對(duì)于開發(fā)人員來(lái)說(shuō),新的機(jī)會(huì)將會(huì)打開。例如,現(xiàn)在物聯(lián)網(wǎng)節(jié)點(diǎn)的“健康監(jiān)視器”將出現(xiàn)一個(gè)新的市場(chǎng),如果可信空間中的一小段代碼將觀察系統(tǒng)的行為以檢測(cè)異常并破解采取糾正措施的嘗試。如果我們認(rèn)為物聯(lián)網(wǎng)節(jié)點(diǎn)將在現(xiàn)場(chǎng)停留多年而無(wú)需人為干預(yù),那么這可能是確保長(zhǎng)使用壽命所需的最重要的代碼。

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

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

處理器使用新引入的安全歸因單元來(lái)檢查地址的安全屬性。系統(tǒng)級(jí)接口可能會(huì)根據(jù)整體 SoC 設(shè)計(jì)覆蓋該歸因。選擇狀態(tài)后,地址也會(huì)通過(guò)相應(yīng)的內(nèi)存保護(hù)單元(如果系統(tǒng)中存在)。

概念2:附加狀態(tài)

ARMv7-M 和 ARMv6-M 架構(gòu)定義了兩種執(zhí)行模式:處理程序模式和線程模式。處理程序模式是特權(quán)模式,可以訪問(wèn) SoC 的所有資源,而線程模式可以是特權(quán)模式,也可以是非特權(quán)模式。使用 TrustZone 安全擴(kuò)展,處理器模式被鏡像為形成安全狀態(tài)和非安全狀態(tài),每種模式都有一個(gè)處理程序模式和一個(gè)線程模式。安全狀態(tài)和處理器模式是正交的,從而產(chǎn)生狀態(tài)和模式的四種組合。在安全存儲(chǔ)器中運(yùn)行軟件時(shí),處理器會(huì)自動(dòng)設(shè)置為安全狀態(tài)。同樣,當(dāng)處理器在非安全存儲(chǔ)器中執(zhí)行軟件時(shí),處理器會(huì)自動(dòng)設(shè)置為非安全狀態(tài)。這種設(shè)計(jì)消除了任何安全監(jiān)控軟件來(lái)管理狀態(tài)開關(guān)的需要,從而減少了內(nèi)存占用和功耗,如上文所述。

概念 3:跨域調(diào)用

ARMv8-M是為具有確定性實(shí)時(shí)操作的Cortex-M配置文件而設(shè)計(jì)的。任何狀態(tài)下的任何函數(shù)都可以直接調(diào)用處于其他狀態(tài)的任何其他函數(shù),只要根據(jù)預(yù)定義的安全狀態(tài)入口點(diǎn)遵守某些規(guī)則即可。此外,正如預(yù)期的那樣,每個(gè)狀態(tài)都有一組不同的堆棧和指向這些堆棧的堆棧指針,以保護(hù)安全端的資產(chǎn)。函數(shù)調(diào)用開銷大大減少,因?yàn)椴恍枰?API 層來(lái)管理調(diào)用。給定預(yù)定義的入口點(diǎn),調(diào)用將直接進(jìn)入被調(diào)用的函數(shù)。

現(xiàn)在您已經(jīng)完全熟悉了ARMv8-M的TrustZone的工作原理,我們深入研究編寫軟件的機(jī)制,以便僅使用三個(gè)有用的提示來(lái)利用它。

提示 1:利用新的 ARM C 語(yǔ)言擴(kuò)展功能

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

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

提示 2:驗(yàn)證不受信任的指針

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

為了使指針的檢查更加高效,安全配置定義的每個(gè)內(nèi)存區(qū)域都有一個(gè)關(guān)聯(lián)的區(qū)域編號(hào)。軟件可以利用此區(qū)域編號(hào)來(lái)確定連續(xù)的內(nèi)存范圍是否具有類似的安全屬性。

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

poYBAGNQ5xGAIdm7AAKyKs1CbHU770.png

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

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

提示 3:針對(duì)異步非安全內(nèi)存修改進(jìn)行設(shè)計(jì)

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

總結(jié)

TrustZone 旨在成為一種高效的用戶友好型技術(shù),供所有開發(fā)人員創(chuàng)建安全的嵌入式解決方案。安全方的軟件開發(fā)人員有責(zé)任確保整個(gè)系統(tǒng)是安全的,并且沒有安全數(shù)據(jù)泄漏到非安全方。為了實(shí)現(xiàn)這一目標(biāo),概述了三個(gè)關(guān)鍵的 TrustZone 概念,以及安全軟件開發(fā)人員可以采取的三個(gè)關(guān)鍵操作來(lái)幫助創(chuàng)建安全的系統(tǒng)。ACLE技術(shù)保護(hù)被調(diào)用函數(shù)寄存器中的數(shù)據(jù)。用于驗(yàn)證指針的TT指令,最后,開發(fā)人員需要記住,非安全端可能會(huì)通過(guò)中斷安全端來(lái)更改數(shù)據(jù)。

審核編輯:郭婷

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • soc
    soc
    +關(guān)注

    關(guān)注

    38

    文章

    4192

    瀏覽量

    218633
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    ARMv8-M平臺(tái)開發(fā)安全軟件的建議

    設(shè)計(jì)消除了本來(lái)用于管理狀態(tài)切換的安全監(jiān)控軟件的必要性,從而實(shí)現(xiàn)減少存儲(chǔ)足跡和功耗的目的。新增正交態(tài)概念3:跨域調(diào)用ARMv8-M為實(shí)現(xiàn)Cortex-M的性能專門設(shè)計(jì),具備確定性實(shí)時(shí)運(yùn)行
    發(fā)表于 01-11 14:37

    Armv8-M應(yīng)用筆記上使用TrustZone

    本應(yīng)用筆記介紹CMSIS和MDK中可用的功能,以利用ARMv8-M體系結(jié)構(gòu)中的安全域和非安全域。它包含幾個(gè)編程示例,其中包括一個(gè)RTOS應(yīng)用程序,該應(yīng)用程序顯示了非安全線程執(zhí)行與ARMv8-M系統(tǒng)安全域提供的庫(kù)之間的交互。
    發(fā)表于 05-11 13:26

    如何在ARMv8-M架構(gòu)處理器上集成FreeRTOS?

    用 (NSC) 的內(nèi)存區(qū)域中。使用 TrustZone后,應(yīng)用程序由兩個(gè)獨(dú)立的項(xiàng)目組成:1、在安全端運(yùn)行的安全應(yīng)用程序2、在非安全端運(yùn)行的應(yīng)用程序ARMv8-M 內(nèi)核啟動(dòng)后默認(rèn)為安全端,由安全軟件負(fù)責(zé)
    發(fā)表于 08-04 14:46

    Armv8.1-M PAC和BTI擴(kuò)展簡(jiǎn)析

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

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

    Execution Environment,可信執(zhí)行環(huán)境)無(wú)法運(yùn)行在SPE,ARM給出了開源的TFM(Trusted Firmware-M)作為參考實(shí)現(xiàn)。本文編譯運(yùn)行TFM的代碼,基于MPS2_AN521平臺(tái)qemu模擬運(yùn)行,分析各個(gè)測(cè)試項(xiàng),進(jìn)而理解ARMv8-M的安全
    發(fā)表于 09-14 14:41

    ARMv8-M處理器故障處理和檢測(cè)

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

    ARMv8-M異常處理手冊(cè)

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

    Armv8-M內(nèi)存模型與內(nèi)存保護(hù)用戶指南

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

    ARMv8-M體系結(jié)構(gòu)及其程序員模型簡(jiǎn)介

    Armv8體系結(jié)構(gòu)有幾個(gè)不同的配置文件。這些配置文件是體系結(jié)構(gòu)的變體針對(duì)不同的市場(chǎng)和用例。Armv8-M體系結(jié)構(gòu)就是其中之一配置文件。 Arm定義了三個(gè)體系結(jié)構(gòu)配置文件:應(yīng)用程序(A)、實(shí)時(shí)(R
    發(fā)表于 08-08 06:18

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

    ACLE提供的工具允許您構(gòu)建在ARMv8-M安全擴(kuò)展的安全狀態(tài)下運(yùn)行的映像。 您還可以創(chuàng)建一個(gè)導(dǎo)入庫(kù)包,非安全映像的開發(fā)人員必須擁有該導(dǎo)入庫(kù)包,這些映像才能調(diào)用安全映像。 例如,使用amclang
    發(fā)表于 08-16 08:27

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

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

    NuMicro M2351系列微控制器的安全特色與應(yīng)用

    的就是如何確微控制器內(nèi)部軟件資產(chǎn)能受到嚴(yán)謹(jǐn)保護(hù),同時(shí)又要能兼顧給合作廠商在軟件開發(fā)上一定的彈性,正如圖一的例子,Armv8-M 架構(gòu)可以把有價(jià)值的通訊協(xié)議放到 TrustZone 或 Secure
    發(fā)表于 08-28 06:24

    ARMv8-M上使用TrustZone

    ?技術(shù)是片上系統(tǒng)(SoC)和CPU系統(tǒng)范圍的安全方法。 針對(duì)ARMv8-M安全擴(kuò)展的TrustZone針對(duì)超低功耗嵌入式應(yīng)用進(jìn)行了優(yōu)化。 它支持多個(gè)軟件安全域,限制對(duì)受信任軟件的安全內(nèi)
    發(fā)表于 09-04 07:11

    ARMv8-M 架構(gòu)易于實(shí)現(xiàn)智能嵌入式設(shè)備安全性

    ARM 致力于將基于ARM Cortex?-M處理器設(shè)備的安全性延伸至硬件層,確保開發(fā)者能夠快速、高效地保護(hù)所有嵌入式或物聯(lián)網(wǎng)設(shè)備。ARMv8-M架構(gòu)在ARM TechCon 2015舉行
    發(fā)表于 11-12 11:23 ?1406次閱讀

    解析Armv8.1-M的一些特性

    簡(jiǎn)單闡述下ARMv8.1-M的一些特性,更多的特性及其詳細(xì)信息,請(qǐng)查看Armv8-M Architecture Reference Manual-DDI0553B_m。
    的頭像 發(fā)表于 02-06 10:55 ?1366次閱讀