RM新时代网站-首页

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)員 ? 來源:嵌入式計(jì)算設(shè)計(jì) ? 作者:Ralph Moore ? 2022-06-10 07:51 ? 次閱讀

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

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)加載程序以黃色顯示。這些可以從許多來源獲得,并且超出了本文的范圍。綠色顯示的代碼是系統(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)軟件帶來范式轉(zhuǎn)變。

安全

最后是安全分區(qū)和保險(xiǎn)庫。Vault 是我們存儲(chǔ)珠寶(加密密鑰、密碼、驗(yàn)證碼、證書等)和現(xiàn)金(私人數(shù)據(jù))的地方。如果 pmode 被破壞,避難所就會(huì)彈開,王國就會(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ì)帶來特殊的安全問題,這將在第 3 部分中討論。

任務(wù)

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

任務(wù)

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

但是,ptasks 可以通過捕獲許多黑客技術(shù)(例如堆?;蚓彌_區(qū)溢出、嘗試從堆?;蚓彌_區(qū)執(zhí)行等)并在黑客獲得實(shí)際控制權(quán)之前觸發(fā) MMF 來幫助挫敗攻擊者。然后,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ù)切換期間無需保存 MPU 內(nèi)容。

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

#pragma default_function_attributes = @“.ut1a_text”

無效 tm05_ut1a(無效)

{

smx_SemSignal(sbr1);

}

#pragma default_function_attributes =

然后在鏈接器命令文件中定義一個(gè)塊來保存此部分和相關(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句在代碼中,有些在鏈接器命令文件中,所以該過程容易出錯(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)用者都是隱藏的,看起來就像是進(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)注意,來自 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

    文章

    19246

    瀏覽量

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

    關(guān)注

    146

    文章

    17115

    瀏覽量

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

    關(guān)注

    0

    文章

    356

    瀏覽量

    48774
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    集中告警管理如何提升設(shè)施安全性?

    在工業(yè)或商業(yè)建筑中,集中告警管理已成為確保安全性或檢測(cè)故障的必備工具。它是如何提升設(shè)施安全性的?歡迎大家閱讀文章了解~
    的頭像 發(fā)表于 12-13 15:51 ?80次閱讀
    集中告警管理如何提升設(shè)施<b class='flag-5'>安全性</b>?

    云托管可以操作云數(shù)據(jù)庫嗎?安全性如何

    云托管可以操作云數(shù)據(jù)庫。在云托管環(huán)境中,開發(fā)者可以通過使用云服務(wù)提供商提供的API或SDK來連接并操作云數(shù)據(jù)庫。云托管提供了多種安全性措施來保護(hù)數(shù)據(jù)和系統(tǒng)。這些措施包括數(shù)據(jù)加密、訪問控制、網(wǎng)絡(luò)
    的頭像 發(fā)表于 12-11 13:35 ?48次閱讀

    電池的安全性測(cè)試項(xiàng)目有哪些?

    電池的安全性測(cè)試是保證電池在實(shí)際使用過程中穩(wěn)定、安全的重要手段。通過一系列嚴(yán)格的測(cè)試項(xiàng)目,能夠有效評(píng)估電池在不同條件下的表現(xiàn),并提前發(fā)現(xiàn)潛在的安全隱患。對(duì)于消費(fèi)者而言,了解這些測(cè)試項(xiàng)目不僅能幫助他們
    的頭像 發(fā)表于 12-06 09:55 ?243次閱讀
    電池的<b class='flag-5'>安全性</b>測(cè)試項(xiàng)目有哪些?

    實(shí)時(shí)操作系統(tǒng)可增強(qiáng)安全性和可靠

    世界衛(wèi)生組織(WHO)《2023年全球道路安全狀況報(bào)告》顯示,全球每年約有120萬人因道路交通事故失去生命。這一驚人的數(shù)據(jù)背后,凸顯了對(duì)安全性和可靠的極高需求。特別是在自動(dòng)駕駛技術(shù)快速發(fā)展的當(dāng)
    的頭像 發(fā)表于 12-04 13:51 ?391次閱讀

    永磁同步電機(jī)的安全性分析

    永磁同步電機(jī)的安全性分析主要涵蓋其設(shè)計(jì)、運(yùn)行、維護(hù)以及故障處理等多個(gè)方面。以下是對(duì)永磁同步電機(jī)安全性的分析: 一、設(shè)計(jì)安全性 材料選擇 : 永磁同步電機(jī)采用永磁體(如釹鐵硼等稀土永磁材料)提供磁場(chǎng)
    的頭像 發(fā)表于 11-22 10:44 ?194次閱讀

    在電氣安裝中通過負(fù)載箱實(shí)現(xiàn)最大效率和安全性

    安全性,在電氣設(shè)備的安裝和調(diào)試過程中,可能會(huì)涉及到高壓、大電流等高風(fēng)險(xiǎn)因素。如果操作不當(dāng),可能會(huì)導(dǎo)致設(shè)備的損壞,甚至可能引發(fā)火災(zāi)、觸電等安全事故。通過使用負(fù)載箱,可以將高壓、大電流等風(fēng)險(xiǎn)轉(zhuǎn)移到負(fù)載箱上
    發(fā)表于 11-20 15:24

    深入探索:海外IP代理池的安全性與管理

    海外IP代理池的安全性與管理是使用這一工具時(shí)不可忽視的重要方面。
    的頭像 發(fā)表于 11-14 07:39 ?127次閱讀

    socket編程的安全性考慮

    在Socket編程中,安全性是一個(gè)至關(guān)重要的考慮因素。以下是一些關(guān)鍵的安全性考慮和措施: 1. 數(shù)據(jù)加密 使用TLS/SSL協(xié)議 :TLS/SSL(傳輸層安全性/安全套接層)是網(wǎng)絡(luò)
    的頭像 發(fā)表于 11-01 16:46 ?228次閱讀

    UWB模塊的安全性評(píng)估

    UWB(超寬帶)模塊的安全性評(píng)估是一個(gè)復(fù)雜而關(guān)鍵的過程,涉及多個(gè)方面,包括技術(shù)特性、加密機(jī)制、抗干擾能力、物理層安全等。以下是對(duì)UWB模塊安全性評(píng)估的分析: 一、技術(shù)特性帶來的安全性
    的頭像 發(fā)表于 10-31 14:17 ?211次閱讀

    智能系統(tǒng)的安全性分析

    智能系統(tǒng)的安全性分析是一個(gè)至關(guān)重要的過程,它涉及多個(gè)層面和維度,以確保系統(tǒng)在各種情況下都能保持安全、穩(wěn)定和可靠。以下是對(duì)智能系統(tǒng)安全性的分析: 一、數(shù)據(jù)安全性 數(shù)據(jù)加密 : 采用對(duì)稱加
    的頭像 發(fā)表于 10-29 09:56 ?246次閱讀

    云計(jì)算安全性如何保障

    云計(jì)算的安全性是一個(gè)復(fù)雜而多維的問題,涉及多個(gè)層面和多種技術(shù)手段。為了保障云計(jì)算的安全性,需要采取一系列綜合措施,以下是具體的保障方法: 一、數(shù)據(jù)加密 數(shù)據(jù)加密是保護(hù)云計(jì)算安全性的核心手段之一
    的頭像 發(fā)表于 10-24 09:14 ?243次閱讀

    固態(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 ?638次閱讀

    請(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 ?1207次閱讀

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

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