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

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

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

MPU安全性的分區(qū)和基本操作

星星科技指導(dǎo)員 ? 來(lái)源:嵌入式計(jì)算設(shè)計(jì) ? 作者:Ralph Moore ? 2022-06-10 07:51 ? 次閱讀

這是四部分系列文章的第二部分,介紹了獨(dú)特的產(chǎn)品 MPU-Plus 和使用 Cortex-M 內(nèi)存保護(hù)單元 (MPU) 來(lái)提高微控制器單元 (MCU) 安全性的方法。第 1部分介紹了一些介紹性概念:MMU 與 MPU、對(duì)安全性、保護(hù)目標(biāo)、MPU-Plus 快照、Cortex-v7M 和 v8M 以及 MPU 操作的日益增長(zhǎng)的需求。

pYYBAGKfH9GAUb0BAAGDzqpdXLM901.png

圖 1:分區(qū)

圖 1 說明了我們?yōu)榘踩?shí)現(xiàn)的軟件結(jié)構(gòu)。在此圖中,橢圓表示隔離的分區(qū)。粗線以上的分區(qū)以u(píng)mode(非特權(quán)或用戶模式)運(yùn)行,粗線以下的分區(qū)以pmode(特權(quán)或保護(hù)模式)運(yùn)行。粗線表示非特權(quán)操作和特權(quán)操作之間的界限。這種隔離由 Cortex-M 處理器架構(gòu)強(qiáng)制執(zhí)行。它是安全可靠的,除非我們做錯(cuò)了什么。

粗線上方是兩個(gè)應(yīng)用程序分區(qū)和一個(gè)中間件分區(qū)。當(dāng)然,實(shí)際系統(tǒng)可能有更多的 umode 分區(qū)。這里的目標(biāo)是實(shí)現(xiàn)一個(gè) umode 分區(qū)與另一個(gè)分區(qū)的完全隔離。然后穿透一個(gè)分區(qū)不會(huì)使黑客能夠穿透其他分區(qū),因此可以控制違規(guī)行為。每個(gè) umode 分區(qū)是一組一個(gè)或多個(gè) utask。utask 構(gòu)成了與其他分區(qū)中的任務(wù)隔離的基礎(chǔ),但不是與自己分區(qū)中的任務(wù)隔離的基礎(chǔ)。umode 分區(qū)具有強(qiáng)隔離能力。因此,應(yīng)盡可能將易受攻擊的代碼(如驅(qū)動(dòng)程序、中間件和應(yīng)用程序代碼)放入 umode 分區(qū)。

粗線以下是安全啟動(dòng)、pcode、smx、SMX RTOS 內(nèi)核和安全分區(qū)。這些由 pcode 組成。當(dāng)然,實(shí)際系統(tǒng)可能有更多的 pmode 分區(qū)。目標(biāo)是也將 pmode 分區(qū)彼此隔離。但是,這種隔離不如 umode 隔離那么強(qiáng),后面會(huì)討論。

安全啟動(dòng)

當(dāng)系統(tǒng)啟動(dòng)或重新啟動(dòng)時(shí),處理器以 pmode 啟動(dòng),并且位于 Secure Boot 分區(qū)中。

pYYBAGKfH9iAWaXaAAE1Uo0adR0580.png

圖 2:安全啟動(dòng)

如圖 2 所示,安全啟動(dòng)軟件進(jìn)行基本的硬件和軟件初始化,加載代碼,如有必要,創(chuàng)建啟動(dòng)操作所需的任務(wù),然后啟動(dòng)調(diào)度程序。在啟動(dòng)調(diào)度程序之前,沒有任何任務(wù)正在運(yùn)行。啟動(dòng)調(diào)度器后,系統(tǒng)以任務(wù)模式運(yùn)行,第一個(gè)以最高優(yōu)先級(jí)調(diào)度的任務(wù)正在運(yùn)行。其他分區(qū)進(jìn)行自己的初始化。出于結(jié)構(gòu)和安全原因,最好將安全引導(dǎo)分區(qū)中的代碼最小化。在圖 2 中,安全引導(dǎo)加載程序以黃色顯示。這些可以從許多來(lái)源獲得,并且超出了本文的范圍。綠色顯示的代碼是系統(tǒng)和應(yīng)用程序代碼。

smx

SMX RTOS由smx 內(nèi)核和中間件組成。SMX 被拆分,因此 smx 內(nèi)核在 pmode 下運(yùn)行,而 SMX 中間件在 umode 下運(yùn)行。MPU-Plus 與 SMX、eheap ? 和某些其他產(chǎn)品捆綁在一起時(shí),構(gòu)成SecureSMX ?。

smx分區(qū)包含smx內(nèi)核和SVC Handler、PendSV Handler等相關(guān)軟件。它以 pmode 運(yùn)行,以便將其與可能已損壞的 umode 分區(qū)強(qiáng)烈隔離。MPU-Plus 擴(kuò)展了 smx 以添加安全功能。有關(guān)這些的更多信息,請(qǐng)參閱:

smx 用戶指南, Ralph Moore,Micro Digital, Inc.

smx 參考手冊(cè), Ralph Moore, Micro Digital, Inc.

我們發(fā)現(xiàn),除了添加 MPU-Plus 之外,還需要對(duì) smx 本身進(jìn)行大量修改,盡管 smx 已作為嵌入式內(nèi)核使用了 30 年!中間件產(chǎn)品也需要進(jìn)行重大修改。安全似乎正在給嵌入式系統(tǒng)軟件帶來(lái)范式轉(zhuǎn)變。

安全

最后是安全分區(qū)和保險(xiǎn)庫(kù)。Vault 是我們存儲(chǔ)珠寶(加密密鑰、密碼、驗(yàn)證碼、證書等)和現(xiàn)金(私人數(shù)據(jù))的地方。如果 pmode 被破壞,避難所就會(huì)彈開,王國(guó)就會(huì)消失。因此,保護(hù) Vault 至關(guān)重要,只有包含加密、身份驗(yàn)證和其他安全任務(wù)的安全分區(qū)才能訪問 Vault。

加密和身份驗(yàn)證軟件已從 SMX 中間件產(chǎn)品中移出到安全分區(qū)中。因此,只有安全軟件才能訪問 Vault。

代碼

pcode 分區(qū)包含中斷服務(wù)例程 (ISR)、鏈接服務(wù)例程 (LSR) 和其他必須處于 pmode 的代碼。這是系統(tǒng)、中間件和應(yīng)用程序代碼的混合體。在實(shí)際系統(tǒng)中,這可能會(huì)分為系統(tǒng)分區(qū)和應(yīng)用程序分區(qū)。它可能包含一些 ptask 以及 ISR 和 LSR。同樣, smx 錯(cuò)誤

Manager、smx_EM() 和錯(cuò)誤恢復(fù)代碼不是任務(wù)。因此,此分區(qū)中的大部分代碼都在當(dāng)前任務(wù)的上下文中運(yùn)行。

處理中斷會(huì)帶來(lái)特殊的安全問題,這將在第 3 部分中討論。

任務(wù)

utasks 可以提供高級(jí)別的隔離。這主要是因?yàn)樗麄儫o(wú)法訪問 MPU。MPU 加載了允許任務(wù)訪問的區(qū)域,包括訪問權(quán)限(例如只讀、從不執(zhí)行等),但任務(wù)無(wú)法更改它們。如果背景區(qū)域打開,它在 umode 中無(wú)效。然而,一切都不是桃子和奶油——還有堆問題和函數(shù)調(diào)用問題,這些將在后面討論。

任務(wù)

與 utasks 相比,ptasks 提供的隔離性較弱。這是因?yàn)橐坏?ptask 被破壞,惡意軟件只需一個(gè)步驟即可關(guān)閉 MPU 或打開其背景區(qū)域 (BR)。然后 MPU 區(qū)域沒有效果。MPU 在 pmode 中毫無(wú)防備,而在 umode 中則堅(jiān)不可摧。

但是,ptasks 可以通過捕獲許多黑客技術(shù)(例如堆?;蚓彌_區(qū)溢出、嘗試從堆?;蚓彌_區(qū)執(zhí)行等)并在黑客獲得實(shí)際控制權(quán)之前觸發(fā) MMF 來(lái)幫助挫敗攻擊者。然后,MMF 處理程序可以刪除滲透的任務(wù)并重新創(chuàng)建它,希望系統(tǒng)操作中只有一個(gè)小問題。它還可以報(bào)告事件,這有助于發(fā)現(xiàn)和減少代碼漏洞。

ptasks 對(duì)于捕獲編程錯(cuò)誤也很有用,并且可以成為通向 utasks 的有用步驟。

基本操作

MPU 控制

內(nèi)存保護(hù)陣列 (MPA) 是一組要在任務(wù)切換上加載到 MPU 中的區(qū)域;每個(gè)任務(wù)都有一個(gè) MPA。任務(wù)的索引用于在內(nèi)存保護(hù)表中查找其 MPA,mpt[indexsmx_TaskCreate() 將當(dāng)前(父)任務(wù)的 MPA 復(fù)制到正在創(chuàng)建的任務(wù)。如果 ct 是 ptask,它可以通過以下方式更改任務(wù)的 MPA:

smx_TaskSet(任務(wù),SMX_ST_MPA,tp);

其中 tp 指向任務(wù)的 MPA 模板。

前述如圖3所示。在該圖中,MPA0、1和2共享模板mpa_tmplta。因此,三個(gè)對(duì)應(yīng)的任務(wù)共享相同的區(qū)域。因此,它們很可能在同一個(gè)分區(qū)中。請(qǐng)注意,MPA3 使用模板 mpa_tmpltb。因此,相應(yīng)的任務(wù)很可能在一個(gè)單獨(dú)的區(qū)域中。第五個(gè)任務(wù)尚未創(chuàng)建,其 MPA 也未加載。

pYYBAGKfH-KAK8J9AAC_CAMAGus483.png

圖 3:模板、MPA 和 TCB

MPA 中的插槽與 MPU 中的動(dòng)態(tài)插槽一樣多。大多數(shù)插槽都充滿了鏈接器命令文件中定義的靜態(tài)區(qū)域(一個(gè)乏味的過程)。但是,某些插槽具有指向在運(yùn)行時(shí)動(dòng)態(tài)創(chuàng)建的區(qū)域數(shù)組的指針。這些將在第 4 部分中詳細(xì)討論。具有最高優(yōu)先級(jí)的頂部 MPU 正在使用的插槽是為任務(wù)堆棧區(qū)域保留的。任務(wù)棧是在創(chuàng)建任務(wù)時(shí)從主堆動(dòng)態(tài)創(chuàng)建的,或者在調(diào)度任務(wù)時(shí)從棧池中獲取。在任務(wù)運(yùn)行時(shí),對(duì) MPU 的任何更新也會(huì)對(duì)其 MPA 進(jìn)行,因此在任務(wù)切換期間無(wú)需保存 MPU 內(nèi)容。

創(chuàng)建靜態(tài)區(qū)域是一個(gè)費(fèi)力的過程。例如,對(duì)于代碼區(qū)域,有必要識(shí)別特定分區(qū)或特定任務(wù)所需的所有功能,包括子例程。Pragma 被插入到代碼中,以將所有這些放入一個(gè)唯一的代碼部分,例如:

#pragma default_function_attributes = @“.ut1a_text”

無(wú)效 tm05_ut1a(無(wú)效)

{

smx_SemSignal(sbr1);

}

#pragma default_function_attributes =

然后在鏈接器命令文件中定義一個(gè)塊來(lái)保存此部分和相關(guān)部分,例如:

定義塊 ut1a_code,大小 = 1024,對(duì)齊 = 1024 {ro section .ut1a_text,ro section .ut1a_rodata};

區(qū)域在鏈接器命令文件中定義,并在其中放置塊,例如:

定義區(qū)域 ROM = mem:[從 0x00200000 到 0x002FFFFF];

放入 ROM {block t2a_code, ro section .tmplt, block ut1a_code, block ut2a_code, block ut2b_code};

回到代碼中,定義了 MPA 中的一個(gè)槽:

#pragma section = “ut1a_code”

MPA mpa_tmplt_ut1a =

{

。..

RGN(3 | RA(“ut1a_code”) | V, 代碼 | RSI(“ut1a_code”) | EN, “ut1a_code”),

。..

};

所有這些都是針對(duì)一個(gè)模板中的一個(gè) MPU 區(qū)域完成的——顯然是一個(gè)費(fèi)力的過程。上面顯示的模板宏(例如 RGN())可以減少工作并有助于減少錯(cuò)誤。因?yàn)橛行┱Z(yǔ)句在代碼中,有些在鏈接器命令文件中,所以該過程容易出錯(cuò)。不僅如此,很容易為代碼區(qū)域遺漏一個(gè)晦澀的子程序或?yàn)閿?shù)據(jù)區(qū)域遺漏變量,從而在調(diào)試期間導(dǎo)致煩人的 MMF(在調(diào)試的早期階段關(guān)閉 MMF 的一個(gè)很好的理由)。

系統(tǒng)調(diào)用

ptasks 可以直接調(diào)用所有的 smx 和 system 函數(shù),但是 utasks 不能直接調(diào)用它們,因?yàn)樗鼈儽仨氃?pmode 中執(zhí)行。而是使用 SVC N 指令。對(duì)于 umode 代碼,將包含 smx 和系統(tǒng)原型函數(shù)的 xapi.h 頭文件替換為 xapiu.h 頭文件。后者將 smx_ 調(diào)用映射到 smxu_ 調(diào)用,這些調(diào)用是調(diào)用 SVC N 的 shell 函數(shù),其中 N 是系統(tǒng)調(diào)用 ID。但是,限制通話,對(duì)于 umode 是禁止的,會(huì)產(chǎn)生 Privilege Violation 錯(cuò)誤。受限調(diào)用只能通過 pcode 進(jìn)行。例如,utasks 不需要 smx_HeapInit(),如果從惡意軟件調(diào)用,可能會(huì)導(dǎo)致系統(tǒng)損壞,因此沒有 smxu_HeapInit()。定義了一組合理的受限調(diào)用。然而,該集合可以根據(jù)需要針對(duì)特定應(yīng)用進(jìn)行擴(kuò)展或收縮。

poYBAGKfH-qAFC9EAAEQTib9c24579.png

圖 4:系統(tǒng)調(diào)用

圖 4 說明了 utasks 和 ptasks 的系統(tǒng)調(diào)用機(jī)制。SVC Handler 使用 N 作為索引,通過 SSR 跳轉(zhuǎn)表到 smx 系統(tǒng)服務(wù)例程(SSR)。SSR 在 pmode 中執(zhí)行,然后將結(jié)果返回給 SVC Handler。SVC 處理程序?qū)⒋私Y(jié)果返回給 smxu shell 函數(shù),后者將其返回給 utask。所有這些細(xì)節(jié)對(duì)調(diào)用者都是隱藏的,看起來(lái)就像是進(jìn)行了正常的函數(shù)調(diào)用。umode 中不允許的系統(tǒng)調(diào)用會(huì)導(dǎo)致分支到特權(quán)沖突錯(cuò)誤管理器 (PVEM),而后者又會(huì)調(diào)用 smx 錯(cuò)誤管理器 (EM)。

請(qǐng)注意,來(lái)自 ptask 的 smx 調(diào)用直接轉(zhuǎn)到 SSR,并且沒有不允許的服務(wù)調(diào)用。

本系列的下一部分將討論分區(qū)問題,包括堆使用、函數(shù)調(diào)用 API、中斷、父子任務(wù)和任務(wù)本地存儲(chǔ)。

審核編輯:郭婷

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

    關(guān)注

    68

    文章

    19038

    瀏覽量

    228481
  • mcu
    mcu
    +關(guān)注

    關(guān)注

    146

    文章

    16802

    瀏覽量

    349368
  • MPU
    MPU
    +關(guān)注

    關(guān)注

    0

    文章

    334

    瀏覽量

    48663
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    恒訊科技分析:IPSec與SSL/TLS相比,安全性如何?

    IPSec和SSL/TLS都是用于保護(hù)網(wǎng)絡(luò)通信安全的協(xié)議,但它們?cè)趯?shí)現(xiàn)方式、安全性側(cè)重點(diǎn)、兼容以及使用場(chǎng)景上存在一些顯著的區(qū)別。1、安全性方面:IPSec主要關(guān)注網(wǎng)絡(luò)層的
    的頭像 發(fā)表于 10-23 15:08 ?76次閱讀
    恒訊科技分析:IPSec與SSL/TLS相比,<b class='flag-5'>安全性</b>如何?

    固態(tài)電池安全性怎么樣

    固態(tài)電池在安全性方面表現(xiàn)出顯著的優(yōu)勢(shì),這主要得益于其獨(dú)特的固態(tài)電解質(zhì)結(jié)構(gòu)。以下是對(duì)固態(tài)電池安全性的詳細(xì)分析:
    的頭像 發(fā)表于 09-15 11:47 ?300次閱讀

    利用JTAGLOCK特性增強(qiáng)設(shè)備安全性

    電子發(fā)燒友網(wǎng)站提供《利用JTAGLOCK特性增強(qiáng)設(shè)備安全性.pdf》資料免費(fèi)下載
    發(fā)表于 09-14 10:06 ?0次下載
    利用JTAGLOCK特性增強(qiáng)設(shè)備<b class='flag-5'>安全性</b>

    請(qǐng)問DM平臺(tái)訪問安全性如何控制?

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

    NFC風(fēng)險(xiǎn)與安全性:揭示NFC技術(shù)高安全性的真相

    在數(shù)字化日益普及的今天,NFC(近場(chǎng)通信)技術(shù)因其便捷和高效而被廣泛應(yīng)用。然而,當(dāng)提及NFC時(shí),一些人可能會(huì)聯(lián)想到潛在的風(fēng)險(xiǎn)。本文將深入探討NFC風(fēng)險(xiǎn),并強(qiáng)調(diào)其高安全性的特性,揭示NFC技術(shù)在
    的頭像 發(fā)表于 06-29 13:03 ?667次閱讀

    藍(lán)牙模塊的安全性與隱私保護(hù)

    藍(lán)牙模塊作為現(xiàn)代無(wú)線通信的重要組成部分,在智能家居、可穿戴設(shè)備、健康監(jiān)測(cè)等多個(gè)領(lǐng)域得到了廣泛應(yīng)用。然而,隨著藍(lán)牙技術(shù)的普及,其安全性和隱私保護(hù)問題也日益凸顯。本文將探討藍(lán)牙模塊在數(shù)
    的頭像 發(fā)表于 06-14 16:06 ?424次閱讀

    開關(guān)電源安全性測(cè)試項(xiàng)目有哪些?如何測(cè)試?

    總結(jié)而言,通過對(duì)開關(guān)電源進(jìn)行過壓保護(hù)、過流保護(hù)、短路保護(hù)、絕緣電阻測(cè)試、高壓測(cè)試以及溫升測(cè)試等一系列全面的安全性檢測(cè),可以充分評(píng)估電源的可靠、安全性和穩(wěn)定性。NSAT-8000電源測(cè)試系統(tǒng)提供了
    的頭像 發(fā)表于 05-23 17:41 ?723次閱讀
    開關(guān)電源<b class='flag-5'>安全性</b>測(cè)試項(xiàng)目有哪些?如何測(cè)試?

    AUTOSAR內(nèi)存分區(qū)MPU關(guān)系簡(jiǎn)述

    MPU保護(hù)與當(dāng)前執(zhí)行的代碼“不相關(guān)“的所有數(shù)據(jù)。
    的頭像 發(fā)表于 03-18 11:15 ?1062次閱讀
    AUTOSAR內(nèi)存<b class='flag-5'>分區(qū)</b>和<b class='flag-5'>MPU</b>關(guān)系簡(jiǎn)述

    電流探頭測(cè)試小技巧:提高準(zhǔn)確安全性

    電流探頭是一種常用的測(cè)試工具,用于測(cè)量電路中的電流。正確使用電流探頭可以提高測(cè)試的準(zhǔn)確,并確保操作安全性。本文將介紹一些電流探頭的測(cè)試小技巧,幫助您更好地使用電流探頭進(jìn)行電流測(cè)量。 技巧一:正確
    的頭像 發(fā)表于 03-08 09:31 ?287次閱讀
    電流探頭測(cè)試小技巧:提高準(zhǔn)確<b class='flag-5'>性</b>和<b class='flag-5'>安全性</b>

    指定和使用 VFD 電纜以提高可靠安全性并減少碳排放

    作者:Jeff Shepard 投稿人:DigiKey 北美編輯 變頻驅(qū)動(dòng)器 (VFD) 和電機(jī)可以減少碳排放,提高各種系統(tǒng)的效率、可靠安全性,包括輸送機(jī)、泵、攪拌機(jī)、電梯、暖通/空調(diào)
    的頭像 發(fā)表于 01-01 15:03 ?742次閱讀
    指定和使用 VFD 電纜以提高可靠<b class='flag-5'>性</b>和<b class='flag-5'>安全性</b>并減少碳排放

    實(shí)驗(yàn)室如何助力發(fā)展新能源汽車動(dòng)力電池的安全性

    實(shí)驗(yàn)室如何助力發(fā)展新能源汽車動(dòng)力電池的安全性
    的頭像 發(fā)表于 12-27 12:19 ?337次閱讀
    實(shí)驗(yàn)室如何助力發(fā)展新能源汽車動(dòng)力電池的<b class='flag-5'>安全性</b>

    為工業(yè)應(yīng)用選擇高安全性功率繼電器

    為工業(yè)應(yīng)用選擇高安全性功率繼電器
    的頭像 發(fā)表于 12-05 15:11 ?401次閱讀
    為工業(yè)應(yīng)用選擇高<b class='flag-5'>安全性</b>功率繼電器

    mysql中表分區(qū)的備份與恢復(fù)

    MySQL的表分區(qū)是一種將大型表分成更小段的技術(shù),這樣可以提高查詢效率、降低維護(hù)成本和減少數(shù)據(jù)備份恢復(fù)時(shí)間。在進(jìn)行表分區(qū)的過程中,我們也需要了解如何備份和恢復(fù)這些分區(qū),以確保數(shù)據(jù)的安全性
    的頭像 發(fā)表于 11-23 14:39 ?977次閱讀

    如何在ElfBoard開發(fā)板上進(jìn)行分區(qū)

    數(shù)據(jù)分布在多個(gè)分區(qū)中,可以提高磁盤訪問的效率;將系統(tǒng)和用戶數(shù)據(jù)分開存儲(chǔ)在不同的分區(qū)中,則可以提高系統(tǒng)的安全性和穩(wěn)定性。常用查看分區(qū)和目錄命令:1.fdisk查看硬
    的頭像 發(fā)表于 11-15 10:25 ?342次閱讀
    如何在ElfBoard開發(fā)板上進(jìn)行<b class='flag-5'>分區(qū)</b>

    求助,為什么說電氣隔離安全性比較高?

    為什么說電氣隔離安全性比較高?
    發(fā)表于 11-02 08:22