国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

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

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

3天內不再提示

實現改進微控制器單元安全性的方法

星星科技指導員 ? 來源:嵌入式計算設計 ? 作者:Ralph Moore ? 2022-10-20 17:19 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

動態區域

如前所述,創建靜態區域是一個耗時、繁瑣且容易出錯的過程。下面討論的動態數據區域有助于減輕一些負擔。

動態數據區域

以下函數允許在初始化期間或從 ptask 動態創建數據區域:

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 是指向所創建區域的指針,sz 是區域大小,sn 是插槽號,attr 是屬性,名稱是區域的可選名稱,hn 是堆編號,池是塊池句柄,bp 是塊指針。上述內容可用于分別從堆、塊池或靜態塊(例如stat_blk[100])創建數據區域。

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

mpa_tmplt_t2a=MP_DYN_RGN;

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

這些函數通常應在任務開始運行之前在系統初始化期間調用。但是,它們也可以由 ptask 調用,這些 ptask 正在創建和初始化其他任務。

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

受保護的數據塊

以下受保護的塊函數允許從 utask 或 ptask 創建受保護的數據塊,并在運行時釋放它們:

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);

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

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

u8* VP;

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

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

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

使用動態區域

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

》EH_OK;

bsmap = hvp[hn]-》地圖;

csbin = hvp[hn]-》

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

受保護的郵件

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

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

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

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

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

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

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

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

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

分區門戶

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

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

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

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

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

調試支持

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

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

smxAware用戶指南,由馬蒂·科克倫和大衛·摩爾,微數碼公司。

結論

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

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

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

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

審核編輯:郭婷

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

    關注

    48

    文章

    8375

    瀏覽量

    164558
  • mcu
    mcu
    +關注

    關注

    147

    文章

    18924

    瀏覽量

    398081
  • MPU
    MPU
    +關注

    關注

    0

    文章

    455

    瀏覽量

    51327
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    恩智浦MCX E31系列微控制器深度解析

    MCX E系列是恩智浦最廣泛的5V微控制器單元 (MCU) 產品組合,為工業和家電設計帶來了可擴展的性能、內置的功能安全和長久的可靠
    的頭像 發表于 02-27 14:34 ?560次閱讀
    恩智浦MCX E31系列<b class='flag-5'>微控制器</b>深度解析

    RM46L430和RM46L830微控制器:高性能與安全性的完美結合

    RM46L430和RM46L830微控制器:高性能與安全性的完美結合 在電子工程師的日常工作中,選擇一款合適的微控制器對于項目的成功至關重要。今天,我們就來深入探討一下德州儀器(TI
    的頭像 發表于 02-25 10:20 ?132次閱讀

    SPC56ELx/SPC564Lx系列微控制器:汽車應用的理想之選

    SPC56ELx/SPC564Lx系列微控制器:汽車應用的理想之選 在汽車電子領域,對高性能、高安全性和可靠微控制器需求日益增長。SPC56ELx/SPC564Lx系列32位Pow
    的頭像 發表于 02-10 10:40 ?190次閱讀

    基于靈動MM32F0140微控制器的汽車傳感控制

    在現代汽車電子系統中,各類傳感模塊需要通過高效可靠的車身總線與主控單元進行通信,以實現整車狀態的實時監控與智能控制微控制器作為傳感
    的頭像 發表于 02-06 16:51 ?900次閱讀
    基于靈動MM32F0140<b class='flag-5'>微控制器</b>的汽車傳感<b class='flag-5'>控制</b>

    RA4T1微控制器:性能與特性全解析

    RA4T1微控制器:性能與特性全解析 在當今的電子設計領域,微控制器扮演著至關重要的角色。Renesas的RA4T1系列微控制器憑借其豐富的功能和出色的性能,吸引了眾多電子工程師的關注。今天,我們
    的頭像 發表于 12-29 14:50 ?255次閱讀

    探索MCX E24系列微控制器:工業與物聯網應用的理想之選

    、豐富的功能和強大的安全特性,成為了應對惡劣環境和復雜應用的理想解決方案。本文將深入介紹MCX E24系列微控制器的特點、應用場景以及開發體驗,幫助電子工程師更好地了解和應用這款產品。 文件下載: NXP Semiconductors MCX E可靠
    的頭像 發表于 12-24 11:10 ?405次閱讀

    在筋膜槍上應用的MCU微控制器方案

    筋膜槍是現在很多人必不可少的放松肌肉的健身工具,而實現筋膜槍的高效、穩定、安全運行,則需要內部搭載的MCU微控制器來負責控制電機運轉、保護電路安全
    的頭像 發表于 12-09 16:39 ?665次閱讀
    在筋膜槍上應用的MCU<b class='flag-5'>微控制器</b>方案

    請問CW32L052C8T6這種安全性低功耗MCU的安全固件部分怎么實現

    請問,CW32L052C8T6這種安全性低功耗MCU的安全固件部分怎么實現
    發表于 12-05 07:19

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

    DM平臺訪問安全性如何控制
    發表于 08-06 06:01

    如何在MCXN947微控制器上配置安全啟動和生命周期

    本文檔旨在介紹如何在MCXN947微控制器上配置安全啟動和生命周期,以確保產品在量產階段的安全性,防止代碼被竊取和篡改,并且能夠安全地升級更新固件。通過本應用筆記,開發者可以更好地理解
    的頭像 發表于 06-26 09:49 ?2456次閱讀
    如何在MCXN947<b class='flag-5'>微控制器</b>上配置<b class='flag-5'>安全</b>啟動和生命周期

    改進的BP網絡PID控制器在無刷直流電機中的應用

    通過分析學習速率對BP算法的影響,提出一種分層調整學習速率的改進BP 網絡算法,并把該方法設計成 PID控制器應用在無刷直流電機控制系統中,仿真結果驗證了基于
    發表于 05-28 15:42

    MAXQ1741用于磁卡讀卡的DeepCover安全微控制器技術手冊

    DeepCover 嵌入式安全方案采用多重先進的物理安全機制保護敏感數據,提供最高等級的密鑰存儲安全保護。 DeepCover安全微控制器
    的頭像 發表于 05-15 09:48 ?859次閱讀
    MAXQ1741用于磁卡讀卡<b class='flag-5'>器</b>的DeepCover<b class='flag-5'>安全</b><b class='flag-5'>微控制器</b>技術手冊

    MAX32670高可靠、超低功耗微控制器技術手冊

    在Darwin家族中,MAX32670是一款超低功耗、高性價比、高可靠的32位微控制器,在實現復雜的傳感處理設計的同時不會影響電池壽命。器件集成了高度靈活性的多功能電源管理
    的頭像 發表于 05-08 11:48 ?1103次閱讀
    MAX32670高可靠<b class='flag-5'>性</b>、超低功耗<b class='flag-5'>微控制器</b>技術手冊

    儒卓力推出基于英飛凌微控制器的AI控制系統

    的進一步開發,并將其整合到面向應用的演示中。最新成果是基于英飛凌PSOC Edge E84微控制器開發的AI控制系統,集成RAB3雷達手勢識別與關鍵詞識別功能。該微控制器支持在邊緣端進行神經網絡本地化計算,大幅提升系統響應速度、
    的頭像 發表于 04-09 10:21 ?1094次閱讀

    在STM32微控制器實現數據加密的方法

    在STM32微控制器實現數據加密,可以通過多種方法和技術來確保數據的安全性。以下是一些常見的方法和步驟: · 使用內置加密庫: · · S
    發表于 03-07 07:30