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

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

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

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

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

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

pYYBAGKfH9GAUb0BAAGDzqpdXLM901.png

圖 1:分區(qū)

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

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

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

安全啟動

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

pYYBAGKfH9iAWaXaAAE1Uo0adR0580.png

圖 2:安全啟動

如圖 2 所示,安全啟動軟件進(jìn)行基本的硬件和軟件初始化,加載代碼,如有必要,創(chuàng)建啟動操作所需的任務(wù),然后啟動調(diào)度程序。在啟動調(diào)度程序之前,沒有任何任務(wù)正在運行。啟動調(diào)度器后,系統(tǒng)以任務(wù)模式運行,第一個以最高優(yōu)先級調(diào)度的任務(wù)正在運行。其他分區(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 下運行,而 SMX 中間件在 umode 下運行。MPU-Plus 與 SMX、eheap ? 和某些其他產(chǎn)品捆綁在一起時,構(gòu)成SecureSMX ?。

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

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

smx 參考手冊, Ralph Moore, Micro Digital, Inc.

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

安全

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

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

代碼

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

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

處理中斷會帶來特殊的安全問題,這將在第 3 部分中討論。

任務(wù)

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

任務(wù)

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

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

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

基本操作

MPU 控制

內(nèi)存保護(hù)陣列 (MPA) 是一組要在任務(wù)切換上加載到 MPU 中的區(qū)域;每個任務(wù)都有一個 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。因此,三個對應(yīng)的任務(wù)共享相同的區(qū)域。因此,它們很可能在同一個分區(qū)中。請注意,MPA3 使用模板 mpa_tmpltb。因此,相應(yīng)的任務(wù)很可能在一個單獨的區(qū)域中。第五個任務(wù)尚未創(chuàng)建,其 MPA 也未加載。

pYYBAGKfH-KAK8J9AAC_CAMAGus483.png

圖 3:模板、MPA 和 TCB

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

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

#pragma default_function_attributes = @“.ut1a_text”

無效 tm05_ut1a(無效)

{

smx_SemSignal(sbr1);

}

#pragma default_function_attributes =

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

定義塊 ut1a_code,大小 = 1024,對齊 = 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 中的一個槽:

#pragma section = “ut1a_code”

MPA mpa_tmplt_ut1a =

{

。..

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

。..

};

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

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

ptasks 可以直接調(diào)用所有的 smx 和 system 函數(shù),但是 utasks 不能直接調(diào)用它們,因為它們必須在 pmode 中執(zhí)行。而是使用 SVC N 指令。對于 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。但是,限制通話,對于 umode 是禁止的,會產(chǎn)生 Privilege Violation 錯誤。受限調(diào)用只能通過 pcode 進(jìn)行。例如,utasks 不需要 smx_HeapInit(),如果從惡意軟件調(diào)用,可能會導(dǎo)致系統(tǒng)損壞,因此沒有 smxu_HeapInit()。定義了一組合理的受限調(diào)用。然而,該集合可以根據(jù)需要針對特定應(yīng)用進(jìn)行擴展或收縮。

poYBAGKfH-qAFC9EAAEQTib9c24579.png

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

圖 4 說明了 utasks 和 ptasks 的系統(tǒng)調(diào)用機制。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é)對調(diào)用者都是隱藏的,看起來就像是進(jìn)行了正常的函數(shù)調(diào)用。umode 中不允許的系統(tǒng)調(diào)用會導(dǎo)致分支到特權(quán)沖突錯誤管理器 (PVEM),而后者又會調(diào)用 smx 錯誤管理器 (EM)。

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

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

審核編輯:郭婷

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

    關(guān)注

    68

    文章

    19103

    瀏覽量

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

    關(guān)注

    146

    文章

    16900

    瀏覽量

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

    關(guān)注

    0

    文章

    340

    瀏覽量

    48701
收藏 人收藏

    評論

    相關(guān)推薦

    socket編程的安全性考慮

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

    UWB模塊的安全性評估

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

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

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

    云計算安全性如何保障

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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