那曲檬骨新材料有限公司

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

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

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

實現(xiàn)改進微控制器單元安全性的方法

星星科技指導員 ? 來源:嵌入式計算設計 ? 作者:Ralph Moore ? 2022-10-20 17:19 ? 次閱讀

這是由四部分組成的系列文章的第四部分,介紹了獨特的產(chǎn)品 MPU-Plus? 以及使用 Cortex-M 內(nèi)存保護單元 (MPU) 實現(xiàn)改進的微控制器單元 (MCU) 安全性的方法。第 3 部分介紹了分區(qū)問題,包括堆使用、函數(shù)調(diào)用 API、中斷、父任務和子任務以及任務本地存儲。第 2 部分介紹了分區(qū)、安全啟動、MPU 控制和系統(tǒng)調(diào)用。 第 1 部分介紹了一些介紹性概念:MMU 與 MPU、對安全性的需求不斷增加、保護目標、MPU Plus 快照、Cortex-v7M 和 v8M 以及 MPU 操作。

動態(tài)區(qū)域

如前所述,創(chuàng)建靜態(tài)區(qū)域是一個耗時、繁瑣且容易出錯的過程。下面討論的動態(tài)數(shù)據(jù)區(qū)域有助于減輕一些負擔。

動態(tài)數(shù)據(jù)區(qū)域

以下函數(shù)允許在初始化期間或從 ptask 動態(tài)創(chuàng)建數(shù)據(jù)區(qū)域:

u8* mp_RegionGetHeapR(rp, sz, sn, attr, name, u32 hn);

u8* mp_RegionGetPoolR(rp, pool, sn, attr, 名稱);

布爾mp_RegionMakeR(rp, bp, sz, sn, attr, name);

其中 rp 是指向所創(chuàng)建區(qū)域的指針,sz 是區(qū)域大小,sn 是插槽號,attr 是屬性,名稱是區(qū)域的可選名稱,hn 是堆編號,池是塊池句柄,bp 是塊指針。上述內(nèi)容可用于分別從堆、塊池或靜態(tài)塊(例如stat_blk[100])創(chuàng)建數(shù)據(jù)區(qū)域。

通常 rp 指向動態(tài)保護區(qū)域數(shù)組 dpr[n] 中的條目。然后,按如下方式設置動態(tài)區(qū)域的 MPA 模板槽:

mpa_tmplt_t2a=MP_DYN_RGN;

其中 MP_DYN_RGN() 加載 dpr[n] 的地址,并在模板槽中設置動態(tài)區(qū)域標志。

這些函數(shù)通常應在任務開始運行之前在系統(tǒng)初始化期間調(diào)用。但是,它們也可以由 ptask 調(diào)用,這些 ptask 正在創(chuàng)建和初始化其他任務。

動態(tài)數(shù)據(jù)區(qū)域可用于存儲靜態(tài)數(shù)組和結(jié)構(gòu)的混合,并且可以在任務之間共享它們。盡管它們不能用于全局變量,但它們確實節(jié)省了在代碼中定義節(jié)、在鏈接器命令文件中定義塊以及在模板中定義靜態(tài)區(qū)域的復雜性。因此,它們更簡單,更不容易出錯。鑒于 sz 很可能是大小 () 的總和,它們在開發(fā)過程中也可能更靈活。

受保護的數(shù)據(jù)塊

以下受保護的塊函數(shù)允許從 utask 或 ptask 創(chuàng)建受保護的數(shù)據(jù)塊,并在運行時釋放它們:

u8* smx_PBlockGetHeap(sz, sn, attr, name, hn);

u8* smx_PBlockGetPool(pool, sn, attr, name);

BOOLEAN smx_PBlockMake(bp, sz, sn, attr, name);

BOOLEAN smx_PBlockRelHeap(bp, sn, hn);

BOOLEAN smx_PBlockRelPool(bp, sn, pool, clrsz);

其中參數(shù)與動態(tài)區(qū)域的參數(shù)相同,不同之處在于對于發(fā)布函數(shù),bp 是其中一個 Get 函數(shù)返回的塊指針,clrsz 指定在塊的第一個字中的可用塊鏈接之后要清除多少字節(jié)。基本上,塊是從堆或池中獲取的,或者由靜態(tài)塊制成的。為它創(chuàng)建一個區(qū)域,并將其加載到當前任務的 MPU[sn] 和 MPA[sn] 中。堆可以是任何堆,包括主堆。這是安全的,因為如果黑客滲透到任務中,MPU 會阻止他訪問受保護塊之外的堆內(nèi)存。

動態(tài)分配的塊可用于緩沖區(qū)、工作區(qū)、消息(見下文)或結(jié)構(gòu)。如果任務的編寫使得其所有靜態(tài)變量都在結(jié)構(gòu)中,例如:

u8* VP;

vp-》var1 = vp-》var2 + vp-》var3;

然后可以使用動態(tài)塊來存儲其靜態(tài)變量。在上面,vp 是塊Get()函數(shù)返回的塊指針。(請注意,vp 是一個 auto 變量,因此存儲在任務堆棧中,而不是結(jié)構(gòu)中)。如果一個函數(shù)不是以這種方式編寫的,那么轉(zhuǎn)換它并不困難 - 只需在每個靜態(tài)變量引用之前插入“vp-》”,定義一個VP結(jié)構(gòu),將變量名稱作為字段,并將vp定義為指向VP的指針。

受保護的數(shù)據(jù)塊和動態(tài)數(shù)據(jù)區(qū)域之間的區(qū)別在于,受保護的數(shù)據(jù)塊可以在任務運行時獲取,而動態(tài)數(shù)據(jù)區(qū)域是在初始化期間創(chuàng)建的,并且指向它的指針加載到任務的模板中。受保護的數(shù)據(jù)塊對于用于創(chuàng)建臨時緩沖區(qū)和受保護消息的 utask 特別有用,如下所述。

使用動態(tài)區(qū)域

使用動態(tài)數(shù)據(jù)區(qū)域、受保護的數(shù)據(jù)塊或 TLS 替換task_data靜態(tài)區(qū)域需要將所有任務全局變量重新定義為一個或多個結(jié)構(gòu)中的字段。如果結(jié)構(gòu)名稱非常短,這不會明顯使代碼復雜化。例如,下面是來自電子堆的一些代碼:

》EH_OK;

bsmap = hvp[hn]-》地圖;

csbin = hvp[hn]-》

為了支持多個堆,有必要將離散全局變量更改為一組結(jié)構(gòu) hvp[hn]。在本例中,hvp[hn]-》粘貼到代碼中每個全局變量名稱的開頭。Cortex-M 架構(gòu)允許以與離散全局變量一樣快或更快的速度訪問結(jié)構(gòu) – 函數(shù)中的一條 LDM 指令加載結(jié)構(gòu)基址,然后通過常量偏移訪問字段。編譯器可能無法對函數(shù)使用的所有離散全局變量執(zhí)行此操作,因此訪問它們的速度可能會較慢。使用結(jié)構(gòu)還允許將一起使用的字段組合在一起,如果處理器具有指令緩存,則可以提高性能。通過使用 sizeof() 來確定指針偏移量,可以自動處理多個結(jié)構(gòu)和數(shù)組。

受保護的郵件

smx 消息由鏈接到數(shù)據(jù)塊的消息控制塊 (MCB) 組成。smx_MsgMake() 函數(shù)可用于將受保護的數(shù)據(jù)塊轉(zhuǎn)換為受保護的郵件,當前任務將成為郵件所有者。消息發(fā)送到消息交換,并從消息交換接收。在消息交換時,消息的 MCB 鏈接到交換的控制塊,進入等待消息隊列。

圖 11 說明了在任務之間傳輸受保護的郵件。任務 A 顯示為綠色,任務 B 顯示為藍色。黃色表示 p 代碼和 pdata,它們受任一任務的影響。如圖所示,TaskA 在槽 sn 中獲取一個 pdata 塊,將其制作成一條消息,加載它,然后將其發(fā)送到 Xchg。作為發(fā)送操作的一部分,MPU 和任務 A 的 MPA 中的插槽 sn 將被清除。請注意,其他消息正在 Xchg 等待,而 MCBi 位于消息隊列的頂部。任務 B 在插槽 sx 中接收它。請注意,rbar 和 rasr 是從 MCBi 獲取的,用于在插槽 sx 中為消息的 pdata 塊創(chuàng)建區(qū)域。TaskB 驗證消息,該消息與應用程序相關,可能包括對數(shù)據(jù)執(zhí)行范圍和一致性檢查。然后,它處理 pdata,取消生成消息,將插槽 sx 中的 pdata 塊釋放回其堆或池,并清除 MPU 和 TaskB 的 MPA 中的插槽 sx。

smx 中添加了兩個受保護的郵件函數(shù):

MCB_PTR smx_PMsgReceive(xp, bpp, sn, 超時);

布爾smx_PMsgSend(mp, xp, sn, pri, rp);

其中 xp 是交換指針,bpp 是指向消息塊指針的指針,sn 是 MPU/MPA 插槽號,超時以刻度為單位,mp 是消息指針,pri 是消息優(yōu)先級,rp 是回復指針(例如,發(fā)送到交換發(fā)送回復消息。)

如圖 11 所示,當發(fā)送受保護的消息時,MPU 和當前任務的 MPA 中的插槽 sn 將被清除。因此,即使發(fā)送任務保留了指向消息塊(例如 bpp)的指針,它也無法訪問消息塊。這挫敗了在另一個分區(qū)中的接收任務驗證消息后更改消息的黑客技術(shù)。它還會阻止在另一個分區(qū)中的接收任務更新消息后讀取消息。

在交換時,消息塊區(qū)域信息存儲在消息的 MCB 中,并且交換是消息的所有者。當接收任務接收到消息時,其消息塊區(qū)域信息被加載到 MPU 和接收方 MPA 的指定槽 sx 中,接收任務成為消息所有者。(sx 不必與發(fā)送任務使用的插槽相同。

現(xiàn)在,接收任務可以讀取和修改消息,并可能將其發(fā)送到另一個交換。因此,可以創(chuàng)建一條消息,加載數(shù)據(jù),傳遞給任務以檢查數(shù)據(jù)并對其進行加密,然后傳遞給第三個任務以通過網(wǎng)絡發(fā)送它。請注意,發(fā)送任務和接收任務之間存在完全隔離。當然,發(fā)件人可以發(fā)送某種破壞性消息。因此,接收方必須在接受消息之前執(zhí)行驗證。此安全級別是特定于應用程序的。

分區(qū)門戶

如 第 3 部分 所述,分區(qū)入口支持將客戶機分區(qū)與服務器分區(qū)隔離,并且是實現(xiàn) 100% 分區(qū)隔離所必需的,這對于實現(xiàn)強安全性至關重要。它們建立在上述受 smx 保護的郵件之上。受保護的郵件滿足 Arm PSA 安全 IPC 要求(請參閱第 1 部分中的參考文獻 3),而無需復制郵件。因此,引入門戶與普通函數(shù)調(diào)用 API 可能不會明顯降低性能。

如圖 12 所示,分區(qū)入口由標記為 XI 和 XO 的交換組成 — 每個方向一個。添加到客戶機分區(qū)的代碼(由虛線右側(cè)的區(qū)域表示)將函數(shù)調(diào)用及其參數(shù)轉(zhuǎn)換為發(fā)送到 XI 交換的消息。然后,客戶端任務在 XO 交換處等待回復消息。

在添加到服務器端的代碼中(由虛線左側(cè)的區(qū)域表示)中的服務器任務正在 XI 交換處等待消息。當它收到消息時,它會使用消息中的參數(shù)將其轉(zhuǎn)換為函數(shù)調(diào)用。然后,它將來自函數(shù)調(diào)用的返回信息放入發(fā)送到 XO 交換的消息中。客戶端任務從 XO 交換接收消息,并將信息返回給客戶端分區(qū)中的調(diào)用方。

顯然,要將分區(qū)之間的函數(shù)調(diào)用接口轉(zhuǎn)換為分區(qū)門戶,需要做很多工作。但是,結(jié)果是強分區(qū)隔離。當然,這會降低性能。數(shù)據(jù)緩沖區(qū)在消息中傳遞。如果正在修改現(xiàn)有代碼,則可能需要將數(shù)據(jù)從緩沖區(qū)復制到消息,反之亦然。如果要創(chuàng)建新代碼,則可以將其設計為在無復制模式下處理消息。在后一種情況下,性能影響可能很小。

請注意,數(shù)據(jù)復制問題也存在于基于 MMU 的大型系統(tǒng)中。實際上,在這種情況下,由于虛擬地址空間,不存在無復制解決方案。因此,在基于 MPU 的系統(tǒng)中,通過入口進行的分區(qū)間通信可能比基于 MMU 的系統(tǒng)中的進程間通信更有效。這有利于較小的分區(qū),每個分區(qū)執(zhí)行較少的工作,因此系統(tǒng)安全性可能更好。較小的分區(qū)也使冗余路徑更實用 - 例如,兩個獨立的路徑將可疑活動報告回總部。

調(diào)試支持

啟用安全功能時,調(diào)試代碼更具挑戰(zhàn)性。因此,SecureSMX 允許在早期代碼開發(fā)和調(diào)試期間覆蓋大多數(shù)安全功能,以幫助加快這些階段。可以在后期調(diào)試期間重新啟用安全功能,通過檢測堆棧和緩沖區(qū)溢出以及其他問題,它們實際上會變得很有幫助。此外,建議在開發(fā)走得太遠之前開始解決安全問題。

smx軟件?包括許多與安全相關的功能,以幫助調(diào)試基于MPU Plus的軟件。它顯示當前 MPU 和所有任務 MPA,以及命名區(qū)域。圖形化的內(nèi)存映射概述在內(nèi)存條中顯示 MPU 區(qū)域。將顯示開始地址和結(jié)束地址以及排除的子區(qū)域。在所有顯示器中,都會標記對齊和重疊等錯誤。有關詳細信息,請參閱:

smxAware用戶指南,由馬蒂·科克倫和大衛(wèi)·摩爾,微數(shù)碼公司。

結(jié)論

軟件工程已經(jīng)失去了它的天真 - 我們現(xiàn)在正在為一個充滿敵意的世界設計。不可能實現(xiàn)完美的安全性,但它可以非常好。毫無疑問,一個堅定的黑客會發(fā)現(xiàn)一些弱點,即使是你能設計出的最好的安全性。因此,有必要分析所有代碼與可能的威脅。

在某些情況下,代碼體的設計和實現(xiàn)可能非常糟糕,因此非常脆弱,以至于重新設計它是一個毫無希望的命題。在這種情況下,使用本文中介紹的方法將代碼保持原樣并將其放入完全隔離的 umode 分區(qū)中可能更具成本效益。然后,有必要設計一個策略來處理不可避免的闖入,并實現(xiàn)必要的代碼來處理它。在此過程中,可能會發(fā)現(xiàn)一些潛在的錯誤。

如果升級舊代碼以提高現(xiàn)有產(chǎn)品的安全性,或者使用舊代碼開發(fā)新產(chǎn)品,則主要工作通常是重構(gòu)舊代碼。所需的重新編碼量可能很小,具體取決于代碼開始時的結(jié)構(gòu)。當然,新代碼應該從一開始就為安全而設計。

安全性為產(chǎn)品開發(fā)增加了另一個維度。不僅要考慮如何實現(xiàn)功能,還要考慮黑客如何訪問該功能以造成損害或竊取私人數(shù)據(jù)。MMF在調(diào)試過程中很煩人,但它們證明了硬件安全機制確實有效!MPU-Plus的目標是提供一條路徑,在不造成過度痛苦的情況下實現(xiàn)良好的安全性。

審核編輯:郭婷

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

    關注

    48

    文章

    7651

    瀏覽量

    152124
  • mcu
    mcu
    +關注

    關注

    146

    文章

    17324

    瀏覽量

    352662
  • MPU
    MPU
    +關注

    關注

    0

    文章

    375

    瀏覽量

    48959
收藏 人收藏

    評論

    相關推薦

    如何實現(xiàn) HTTP 協(xié)議的安全性

    協(xié)議的安全性,可以采取以下幾種方法: 1. 使用HTTPS HTTPS(安全超文本傳輸協(xié)議)是HTTP的安全版本,它在HTTP的基礎上通過SSL/TLS協(xié)議提供了數(shù)據(jù)加密、數(shù)據(jù)完整
    的頭像 發(fā)表于 12-30 09:22 ?317次閱讀

    FPGA 與微控制器優(yōu)缺點比較

    在現(xiàn)代電子設計領域,F(xiàn)PGA和微控制器(MCU)是兩種常用的計算平臺。它們各自具有獨特的優(yōu)勢和局限性,適用于不同的應用場景。 性能 FPGA FPGA是一種可編程的硬件,由大量的邏輯單元、觸發(fā)
    的頭像 發(fā)表于 12-02 09:58 ?523次閱讀

    STM32WB0系列無線微控制器滿足低功耗藍牙應用需求

    藍牙技術(shù)作為應用最為廣泛的2.4GHz短距離通信技術(shù),對無線微控制器芯片的集成度、功耗、性能、安全性等有較高要求。STM32WB0系列,是兼具高性價比和低功耗的無線微控制器,可充分滿足無線藍牙應用對芯片的要求。
    的頭像 發(fā)表于 10-12 11:03 ?593次閱讀
    STM32WB0系列無線<b class='flag-5'>微控制器</b>滿足低功耗藍牙應用需求

    ESP32 微控制器系列指南

    Systems 創(chuàng)建了功能強大且價格實惠的片上系統(tǒng) (SoC) 設備,將 Wi-Fi、藍牙和中央處理單元 (CPU) 集成到一個微控制器封裝中,使這些 SoC 成為理想的選擇適用于嵌入式控制器和物聯(lián)網(wǎng)項目
    的頭像 發(fā)表于 10-02 18:21 ?3385次閱讀
    ESP32 <b class='flag-5'>微控制器</b>系列指南

    什么是微控制器/它的關鍵組成部分有哪些?

    微控制器
    芯廣場
    發(fā)布于 :2024年09月18日 15:02:33

    微控制器內(nèi)部的存儲有哪些

    微控制器(MCU)內(nèi)部的存儲微控制器系統(tǒng)的重要組成部分,它負責存儲程序代碼、數(shù)據(jù)以及控制邏輯等信息。這些存儲類型多樣,各具特點,共同支
    的頭像 發(fā)表于 08-22 10:41 ?898次閱讀

    微控制器的結(jié)構(gòu)和應用

    微控制器(Microcontroller Unit,簡稱MCU)作為嵌入式系統(tǒng)的核心部件,其原理和應用在現(xiàn)代科技發(fā)展中占據(jù)了舉足輕重的地位。本文將從微控制器的原理、基本結(jié)構(gòu)、工作原理、性能特點以及廣泛的應用領域等方面進行詳細闡述,旨在全面介紹
    的頭像 發(fā)表于 08-22 10:40 ?1366次閱讀

    請問DM平臺訪問安全性如何控制?

    DM平臺訪問安全性如何控制?
    發(fā)表于 07-25 06:10

    控制器的限速線是哪一根

    控制器的限速線指的是在電子控制器中,用于限制電流或功率輸出的線路。這種線路的設計和實現(xiàn)對于確保控制器的穩(wěn)定性和安全性至關重要。本文將詳細介紹
    的頭像 發(fā)表于 06-30 10:02 ?1398次閱讀

    微控制器與運動控制器的區(qū)別

    隨著現(xiàn)代工業(yè)技術(shù)的快速發(fā)展,控制技術(shù)在各種機械設備中扮演著越來越重要的角色。微控制器和運動控制器作為兩種常見的控制設備,在各自的領域發(fā)揮著重要作用。然而,兩者在功能、應用、特點等方面存
    的頭像 發(fā)表于 06-13 14:52 ?726次閱讀

    MCX N系列微控制器適用于安全、智能的電機控制和機器學習應用

    ?? 貿(mào)澤電子即日起開售NXP Semiconductors的MCX工業(yè)和物聯(lián)網(wǎng)微控制器 (MCU)。這些新款MCU屬于高性能、低功耗微控制器,配備智能外設和加速,適用于安全、智能的
    的頭像 發(fā)表于 06-05 09:06 ?1186次閱讀

    微控制器的定義和工作原理

    、消費類電子、游戲設備、電話、HVAC、樓宇安全與門禁控制、工業(yè)控制與自動化和白色家電等眾多領域。本文將對微控制器的定義、工作原理及工作條件進行詳細介紹。
    的頭像 發(fā)表于 05-24 17:17 ?1927次閱讀

    英飛凌AURIX TC4x微控制器系列中的并行處理單元(PPU)簡介

    并行處理單元(PPU)是集成在英飛凌AURIX? TC4x微控制器系列中的協(xié)處理。
    的頭像 發(fā)表于 05-17 10:52 ?1153次閱讀
    英飛凌AURIX TC4x<b class='flag-5'>微控制器</b>系列中的并行處理<b class='flag-5'>單元</b>(PPU)簡介

    雷達傳感增強ADAS安全性,實現(xiàn)駕駛員便利功能

    微控制器和傳感改進使ADAS的功能得以擴展,如電子穩(wěn)定控制、后視攝像頭和基于視覺的行人檢測。更先進的基于雷達的嵌入式解決方案提供安全功能
    的頭像 發(fā)表于 04-28 14:54 ?3587次閱讀
    雷達傳感<b class='flag-5'>器</b>增強ADAS<b class='flag-5'>安全性</b>,<b class='flag-5'>實現(xiàn)</b>駕駛員便利功能

    深入探討微控制器的內(nèi)部結(jié)構(gòu)和工作機制

    中央處理單元(CPU): CPU是微控制器的核心部分,負責解析和執(zhí)行程序中的指令。它的性能直接影響到整個微控制器的運行效率。
    發(fā)表于 04-10 14:41 ?1281次閱讀
    深入探討<b class='flag-5'>微控制器</b>的內(nèi)部結(jié)構(gòu)和工作機制
    阿荣旗| 香港六合彩网址大全| 澳门百家乐海洋阿强| 百家乐官网没边| tt娱乐城官网| 自贡百家乐娱乐场开户注册| 网上赌百家乐官网的玩法技巧和规则 | 伟易博百家乐官网娱乐城 | 百家乐官网视频游戏世界| 大发888 xp缺少 casino| 百家乐投注软件有用吗| 百家乐官网娱乐网备用网址| 介休市| 顶级赌场连环夺宝下注有什么窍门 | 百家乐官网算牌皇冠网| 大发888 这类平台| 百家乐开户导航| 艮山坤向 24山| 百家乐官网高科技| 真钱百家乐赌博| 大发888优惠代码 官网| 百家乐官网游戏| 百家乐网上投注网站| 尊龙百家乐官网赌场娱乐网规则 | 百家乐官网视频游戏会员| 皇冠网址去澳门| 大发888唯一官网| 百家乐的分析| 百家乐开户博彩论坛| 百家乐官网桌布动物| 至尊百家乐官网20130301| 百家乐官网视频游戏网站| 香港| 瑞丰国际,| 百家乐娱乐天上人间| 百家乐官网德州| 破战百家乐官网的玩法技巧和规则| 百家乐官网赌机凤凰软件| 菏泽市| 蓝盾百家乐| 金都国际|