精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

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

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

3天內不再提示

MPU安全性的分區和基本操作

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

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

pYYBAGKfH9GAUb0BAAGDzqpdXLM901.png

圖 1:分區

圖 1 說明了我們為安全而努力實現的軟件結構。在此圖中,橢圓表示隔離的分區。粗線以上的分區以umode(非特權或用戶模式)運行,粗線以下的分區以pmode(特權或保護模式)運行。粗線表示非特權操作和特權操作之間的界限。這種隔離由 Cortex-M 處理器架構強制執行。它是安全可靠的,除非我們做錯了什么。

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

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

安全啟動

當系統啟動或重新啟動時,處理器以 pmode 啟動,并且位于 Secure Boot 分區中。

pYYBAGKfH9iAWaXaAAE1Uo0adR0580.png

圖 2:安全啟動

如圖 2 所示,安全啟動軟件進行基本的硬件和軟件初始化,加載代碼,如有必要,創建啟動操作所需的任務,然后啟動調度程序。在啟動調度程序之前,沒有任何任務正在運行。啟動調度器后,系統以任務模式運行,第一個以最高優先級調度的任務正在運行。其他分區進行自己的初始化。出于結構和安全原因,最好將安全引導分區中的代碼最小化。在圖 2 中,安全引導加載程序以黃色顯示。這些可以從許多來源獲得,并且超出了本文的范圍。綠色顯示的代碼是系統和應用程序代碼。

smx

SMX RTOS由smx 內核和中間件組成。SMX 被拆分,因此 smx 內核在 pmode 下運行,而 SMX 中間件在 umode 下運行。MPU-Plus 與 SMX、eheap ? 和某些其他產品捆綁在一起時,構成SecureSMX ?。

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

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

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

我們發現,除了添加 MPU-Plus 之外,還需要對 smx 本身進行大量修改,盡管 smx 已作為嵌入式內核使用了 30 年!中間件產品也需要進行重大修改。安全似乎正在給嵌入式系統軟件帶來范式轉變。

安全

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

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

代碼

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

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

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

任務

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

任務

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

但是,ptasks 可以通過捕獲許多黑客技術(例如堆棧或緩沖區溢出、嘗試從堆棧或緩沖區執行等)并在黑客獲得實際控制權之前觸發 MMF 來幫助挫敗攻擊者。然后,MMF 處理程序可以刪除滲透的任務并重新創建它,希望系統操作中只有一個小問題。它還可以報告事件,這有助于發現和減少代碼漏洞。

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

基本操作

MPU 控制

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

smx_TaskSet(任務,SMX_ST_MPA,tp);

其中 tp 指向任務的 MPA 模板。

前述如圖3所示。在該圖中,MPA0、1和2共享模板mpa_tmplta。因此,三個對應的任務共享相同的區域。因此,它們很可能在同一個分區中。請注意,MPA3 使用模板 mpa_tmpltb。因此,相應的任務很可能在一個單獨的區域中。第五個任務尚未創建,其 MPA 也未加載。

pYYBAGKfH-KAK8J9AAC_CAMAGus483.png

圖 3:模板、MPA 和 TCB

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

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

#pragma default_function_attributes = @“.ut1a_text”

無效 tm05_ut1a(無效)

{

smx_SemSignal(sbr1);

}

#pragma default_function_attributes =

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

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

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

定義區域 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 區域完成的——顯然是一個費力的過程。上面顯示的模板宏(例如 RGN())可以減少工作并有助于減少錯誤。因為有些語句在代碼中,有些在鏈接器命令文件中,所以該過程容易出錯。不僅如此,很容易為代碼區域遺漏一個晦澀的子程序或為數據區域遺漏變量,從而在調試期間導致煩人的 MMF(在調試的早期階段關閉 MMF 的一個很好的理由)。

系統調用

ptasks 可以直接調用所有的 smx 和 system 函數,但是 utasks 不能直接調用它們,因為它們必須在 pmode 中執行。而是使用 SVC N 指令。對于 umode 代碼,將包含 smx 和系統原型函數的 xapi.h 頭文件替換為 xapiu.h 頭文件。后者將 smx_ 調用映射到 smxu_ 調用,這些調用是調用 SVC N 的 shell 函數,其中 N 是系統調用 ID。但是,限制通話,對于 umode 是禁止的,會產生 Privilege Violation 錯誤。受限調用只能通過 pcode 進行。例如,utasks 不需要 smx_HeapInit(),如果從惡意軟件調用,可能會導致系統損壞,因此沒有 smxu_HeapInit()。定義了一組合理的受限調用。然而,該集合可以根據需要針對特定應用進行擴展或收縮。

poYBAGKfH-qAFC9EAAEQTib9c24579.png

圖 4:系統調用

圖 4 說明了 utasks 和 ptasks 的系統調用機制。SVC Handler 使用 N 作為索引,通過 SSR 跳轉表到 smx 系統服務例程(SSR)。SSR 在 pmode 中執行,然后將結果返回給 SVC Handler。SVC 處理程序將此結果返回給 smxu shell 函數,后者將其返回給 utask。所有這些細節對調用者都是隱藏的,看起來就像是進行了正常的函數調用。umode 中不允許的系統調用會導致分支到特權沖突錯誤管理器 (PVEM),而后者又會調用 smx 錯誤管理器 (EM)。

請注意,來自 ptask 的 smx 調用直接轉到 SSR,并且沒有不允許的服務調用。

本系列的下一部分將討論分區問題,包括堆使用、函數調用 API、中斷、父子任務和任務本地存儲。

審核編輯:郭婷

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 處理器
    +關注

    關注

    68

    文章

    19178

    瀏覽量

    229201
  • mcu
    mcu
    +關注

    關注

    146

    文章

    17019

    瀏覽量

    350374
  • MPU
    MPU
    +關注

    關注

    0

    文章

    348

    瀏覽量

    48739
收藏 人收藏

    評論

    相關推薦

    永磁同步電機的安全性分析

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

    在電氣安裝中通過負載箱實現最大效率和安全性

    安全性,在電氣設備的安裝和調試過程中,可能會涉及到高壓、大電流等高風險因素。如果操作不當,可能會導致設備的損壞,甚至可能引發火災、觸電等安全事故。通過使用負載箱,可以將高壓、大電流等風險轉移到負載箱上
    發表于 11-20 15:24

    村田貼片電容的使用安全性

    村田貼片電容的使用安全性是一個重要的話題,它直接關系到電子產品的整體性能和可靠。以下是對村田貼片電容使用安全性的詳細分析: 一、電氣安全 額定電壓與電壓穩定性: 村田貼片電容具有明確
    的頭像 發表于 11-15 14:22 ?133次閱讀

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

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

    socket編程的安全性考慮

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

    UWB模塊的安全性評估

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

    智能系統的安全性分析

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

    云計算安全性如何保障

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

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

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

    固態電池安全性怎么樣

    固態電池在安全性方面表現出顯著的優勢,這主要得益于其獨特的固態電解質結構。以下是對固態電池安全性的詳細分析:
    的頭像 發表于 09-15 11:47 ?570次閱讀

    利用JTAGLOCK特性增強設備安全性

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

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

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

    NFC風險與安全性:揭示NFC技術高安全性的真相

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

    藍牙模塊的安全性與隱私保護

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

    為工業應用選擇高安全性功率繼電器

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