chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

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

使用Cortex-M MPU提高MCU安全性的方法

星星科技指導(dǎo)員 ? 來源:嵌入式計算設(shè)計 ? 作者:Ralph Moore ? 2022-06-10 07:32 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

這是四部分系列文章的第四部分,介紹了獨特的產(chǎn)品 MPU?Plus? 和使用 Cortex-M 內(nèi)存保護單元 (MPU) 來提高微控制器單元 (MCU) 安全性的方法。第 3 部分介紹了分區(qū)問題,包括堆使用、函數(shù)調(diào)用 API、中斷、父子任務(wù)和任務(wù)本地存儲。 第 2 部分 介紹了分區(qū)、安全啟動、MPU 控制和系統(tǒng)調(diào)用。 第 1 部分介紹了一些介紹性概念:MMU 與 MPU、對安全性、保護目標(biāo)、MPU-Plus 快照、Cortex-v7M 和 v8M 以及 MPU 操作的日益增長的需求。

動態(tài)區(qū)域

如前所述,創(chuàng)建靜態(tài)區(qū)域是一個耗時、乏味且容易出錯的過程。下面討論的動態(tài)數(shù)據(jù)區(qū)域有助于減輕部分負擔(dān)。

動態(tài)數(shù)據(jù)區(qū)域

以下函數(shù)允許在初始化期間或從 ptask 動態(tài)創(chuàng)建數(shù)據(jù)區(qū)域:

u8* mp_RegionGetHeapR(rp, sz, sn, attr, name, u32 hn);

u8* mp_RegionGetPoolR(rp, pool, sn, attr, name);

BOOLEAN mp_RegionMakeR(rp, bp, sz, sn, attr, name);

其中 rp 是指向創(chuàng)建區(qū)域的指針,sz 是區(qū)域大小,sn 是槽號,attr 是屬性,name 是區(qū)域的可選名稱,hn 是堆號,pool 是塊池句柄,并且bp 是一個塊指針。以上可用于分別從堆、塊池或靜態(tài)塊(例如 stat_blk[100])創(chuàng)建數(shù)據(jù)區(qū)域。

通常 rp 指向動態(tài)保護區(qū)域數(shù)組 dpr[n] 中的一個條目。然后,動態(tài)區(qū)域的 MPA 模板槽設(shè)置如下:

mpa_tmplt_t2a[sn] = MP_DYN_RGN(dpr[n]);

其中 MP_DYN_RGN() 加載 dpr[n] 的地址并在模板槽中設(shè)置動態(tài)區(qū)域標(biāo)志。

這些函數(shù)通常應(yīng)在任務(wù)開始運行之前的系統(tǒng)初始化期間調(diào)用。但是,它們也可以被 ptasks 調(diào)用,它們正在創(chuàng)建和初始化其他任務(wù)。

動態(tài)數(shù)據(jù)區(qū)域可用于存儲靜態(tài)數(shù)組和結(jié)構(gòu)的混合,它們可以在任務(wù)之間共享。盡管它們不能用于全局變量,但它們確實節(jié)省了在代碼中定義部分、在鏈接器命令文件中定義塊以及在模板中定義靜態(tài)區(qū)域的復(fù)雜性。因此,它們更簡單,使用起來更不容易出錯。鑒于 sz 可能是 sizeof() 的總和,它們在開發(fā)過程中也可能更加靈活。

受保護的數(shù)據(jù)塊

以下受保護的塊函數(shù)允許從 utasks 或 ptasks創(chuàng)建受保護的數(shù)據(jù)塊,并在運行時釋放它們:

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

其中參數(shù)與動態(tài)區(qū)域的參數(shù)相同,除了釋放函數(shù),bp 是其中一個 Get 函數(shù)返回的塊指針,clrsz 指定在第一個字的空閑塊鏈接之后要清除多少字節(jié)堵塞。基本上,塊是從堆或池中獲得的,或者是由靜態(tài)塊制成的。為其創(chuàng)建一個區(qū)域并將其加載到當(dāng)前任務(wù)的 MPU[sn] 和 MPA[sn] 中。堆可以是任何堆,包括主堆。這是安全的,因為如果黑客侵入任務(wù),MPU 會阻止他訪問受保護塊之外的堆內(nèi)存。

動態(tài)分配的塊可用于緩沖區(qū)、工作區(qū)、消息(見下文)或結(jié)構(gòu)。如果一個任務(wù)被寫成它的所有靜態(tài)變量都在一個結(jié)構(gòu)中,例如:

u8* 副總裁;

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

然后可以使用動態(tài)塊來存儲其靜態(tài)變量。上面的 vp 是 BlockGet() 函數(shù)返回的塊指針。(注意 vp 是一個自動變量,因此存儲在任務(wù)堆棧中,而不是結(jié)構(gòu)中)。如果一個函數(shù)不是這樣寫的,轉(zhuǎn)換它并不困難——只需在每個靜態(tài)變量引用前插入“vp-》”,定義一個VP結(jié)構(gòu),變量名作為字段,定義vp作為指向副總裁。

受保護數(shù)據(jù)塊和動態(tài)數(shù)據(jù)區(qū)域的區(qū)別在于,受保護數(shù)據(jù)塊可以在任務(wù)運行時被任務(wù)獲取,而動態(tài)數(shù)據(jù)區(qū)域是在初始化過程中創(chuàng)建的,并且指向它的指針被加載到任務(wù)的模板中。 受保護數(shù)據(jù)塊對于 utasks 創(chuàng)建臨時緩沖區(qū)和受保護消息特別有用,如下所述。

使用動態(tài)區(qū)域

使用動態(tài)數(shù)據(jù)區(qū)域、受保護數(shù)據(jù)塊或 TLS 來替換 task_data 靜態(tài)區(qū)域需要將所有任務(wù)全局變量重新定義為一個或多個結(jié)構(gòu)中的字段。如果結(jié)構(gòu)名稱很短,這不會明顯使代碼復(fù)雜化。例如,這里有一些來自 eheap 的代碼:

hvp[hn]-》errno = EH_OK;

bsmap = hvp[hn]-》bsmap;

csbin = hvp[hn]-》csbin;

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

受保護的消息

smx 消息由鏈接到數(shù)據(jù)塊的消息控制塊 (MCB) 組成。smx_MsgMake() 函數(shù)可用于將受保護的數(shù)據(jù)塊變成受保護的消息,并且當(dāng)前任務(wù)成為消息所有者。消息被發(fā)送到消息交換并從消息交換接收。在消息交換中,消息的 MCB 與交換的控制塊鏈接到等待消息的隊列中。

圖 11 說明了在任務(wù)之間傳輸受保護的消息。TaskA 顯示為綠色,TaskB 顯示為藍色。黃色代表 pcode 和 pdata,它們受任一任務(wù)的保護。如圖所示,TaskA 在 slot sn 中獲取一個 pdata 塊,將其制成消息,加載它,然后將其發(fā)送到 Xchg。作為發(fā)送操作的一部分,MPU 和 TaskA 的 MPA 中的 slot sn 被清除。請注意,其他消息正在 Xchg 處等待,并且 MCBi 位于消息隊列的頂部。TaskB 在插槽 sx 中接收它。請注意,rbar 和 rasr 是從 MCBi 獲得的,用于在插槽 sx 中為消息的 pdata 塊創(chuàng)建區(qū)域。TaskB 驗證消息,該消息依賴于應(yīng)用程序,可能包括對數(shù)據(jù)進行范圍和一致性檢查。然后它處理 pdata,取消消息,

smx 中添加了兩個受保護的消息函數(shù):

MCB_PTR smx_PMsgReceive(xp, bpp, sn, timeout);

BOOLEAN smx_PMsgSend(mp, xp, sn, pri, rp);

其中 xp 是交換指針,bpp 是指向消息塊指針的指針,sn 是 MPU/MPA 槽號,timeout 以刻度為單位,mp 是消息指針,pri 是消息優(yōu)先級,rp 是回復(fù)指針(例如到交易所發(fā)送回復(fù)消息。)

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

在交換器中,消息塊區(qū)域信息存儲在消息的 MCB 中,交換器是消息的所有者。當(dāng)消息被接收任務(wù)接收時,其消息塊區(qū)域信息被加載到 MPU 和接收者 MPA 的指定槽 sx 中,接收任務(wù)成為消息所有者。(sx 不必與發(fā)送任務(wù)使用的插槽相同。)

現(xiàn)在,接收任務(wù)可以讀取和修改消息,并可能將其發(fā)送到另一個交換器。因此,可以創(chuàng)建一條消息,加載數(shù)據(jù),傳遞給一個任務(wù)以檢查數(shù)據(jù)并對其進行加密,然后傳遞給第三個任務(wù)以通過網(wǎng)絡(luò)發(fā)送它。請注意,發(fā)送任務(wù)和接收任務(wù)之間是完全隔離的。當(dāng)然,發(fā)件人可以發(fā)送某種破壞性消息。因此,接收者必須在接受消息之前執(zhí)行驗證。這種安全級別是特定于應(yīng)用程序的。

分區(qū)門戶

正如第 3 部分中所討論的,分區(qū)門戶可以將客戶端分區(qū)與服務(wù)器分區(qū)隔離開來,并且是實現(xiàn) 100% 分區(qū)隔離所必需的,這對于實現(xiàn)強大的安全性至關(guān)重要。它們建立在上述受 smx 保護的消息之上。受保護的消息滿足 Arm PSA Secure IPC 要求(參見第 1 部分中的參考資料 3),無需進行消息復(fù)制。因此,與普通函數(shù)調(diào)用 API 相比,引入門戶可能不會顯著降低性能。

如圖 12 所示,分區(qū)門戶由交易所組成,標(biāo)記為 XI 和 XO — 每個方向一個。添加到客戶端分區(qū)的代碼(由虛線右側(cè)的區(qū)域表示)將函數(shù)調(diào)用及其參數(shù)轉(zhuǎn)換為發(fā)送到 XI 交換的消息。然后,客戶端任務(wù)在 XO 交換處等待回復(fù)消息。

在添加到服務(wù)器端的代碼中的服務(wù)器任務(wù)(由虛線左側(cè)的區(qū)域表示)正在 XI 交換處等待消息。當(dāng)它收到一條消息時,它會使用消息中的參數(shù)將其轉(zhuǎn)換為函數(shù)調(diào)用。然后它將來自函數(shù)調(diào)用的返回信息放入它發(fā)送到 XO 交換器的消息中。客戶端任務(wù)從 XO 交換接收消息,并將信息返回給客戶端分區(qū)中的調(diào)用者。

顯然,將分區(qū)之間的函數(shù)調(diào)用接口轉(zhuǎn)換為分區(qū)門戶需要做很多工作。但是,結(jié)果是強大的分區(qū)隔離。當(dāng)然,這會降低性能。數(shù)據(jù)緩沖區(qū)在消息中傳遞。如果正在修改現(xiàn)有代碼,則可能需要將數(shù)據(jù)從緩沖區(qū)復(fù)制到消息,反之亦然。如果正在創(chuàng)建新代碼,則可以將其設(shè)計為在無復(fù)制模式下處理消息。在后一種情況下,性能影響可能很小。

請注意,大型基于 MMU 的系統(tǒng)中也存在數(shù)據(jù)復(fù)制問題。事實上,在這種情況下,由于虛擬地址空間,不存在無復(fù)制解決方案。因此,在基于 MPU 的系統(tǒng)中通過門戶進行的分區(qū)間通信可??能比基于 MMU 的系統(tǒng)中的進程間通信更有效。這有利于較小的分區(qū),每個分區(qū)做的工作較少,因此系統(tǒng)安全性可能更好。擁有更小的分區(qū)也使冗余路徑更加實用——例如,兩條獨立的路徑可以將可疑活動報告回總部。

調(diào)試支持

啟用安全功能后,調(diào)試代碼更具挑戰(zhàn)性。出于這個原因,SecureSMX 允許在早期代碼開發(fā)和調(diào)試期間覆蓋大多數(shù)安全功能,以幫助加快這些階段??梢栽诤笃谡{(diào)試期間重新啟用安全功能,通過檢測堆棧和緩沖區(qū)溢出以及其他問題,它們實際上變得有用。此外,建議在發(fā)展過頭之前開始解決安全問題。

smxAware? 包括許多與安全相關(guān)的功能,可幫助調(diào)試基于 MPU-Plus 的軟件。它顯示當(dāng)前 MPU 和所有任務(wù) MPA,以及命名區(qū)域。圖形內(nèi)存映射概覽顯示內(nèi)存條中的 MPU 區(qū)域。顯示了開始和結(jié)束地址以及排除的子區(qū)域。在所有顯示中,都會標(biāo)記對齊和重疊等錯誤。有關(guān)更多信息,請參閱:

smxAware 用戶指南, Marty Cochran 和 David Moore,Micro Digital Inc.

結(jié)論

軟件工程已經(jīng)失去了天真——我們現(xiàn)在正在為一個充滿敵意的世界進行設(shè)計。實現(xiàn)完美的安全性是不可能的,但它可以是相當(dāng)不錯的。毫無疑問,即使是你能設(shè)計的最好的安全措施,一個堅定的黑客也會發(fā)現(xiàn)一些弱點。因此,有必要分析所有代碼與可能的威脅。

在某些情況下,一段代碼可能設(shè)計和實現(xiàn)都很糟糕,因此很容易受到攻擊,以至于重新編寫它是一個絕望的提議。在這種情況下,使用本文中描述的方法將代碼保持原樣并將其放入完全隔離的 umode 分區(qū)中可能更具成本效益。然后有必要設(shè)計一種策略來處理不可避免的闖入并實施必要的代碼來處理它。在此過程中,可能會發(fā)現(xiàn)一些潛在的錯誤。

如果升級遺留代碼以提高現(xiàn)有產(chǎn)品的安全性,或者如果使用遺留代碼開發(fā)新產(chǎn)品,主要工作通常是重組遺留代碼。所需的重新編碼量可能很小,這取決于代碼的結(jié)構(gòu)如何。當(dāng)然,新代碼的結(jié)構(gòu)應(yīng)該從一開始就保證安全。

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

審核編輯:郭婷

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

    關(guān)注

    48

    文章

    7946

    瀏覽量

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

    關(guān)注

    0

    文章

    415

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    MPUMCU的區(qū)別

    在現(xiàn)代電子系統(tǒng)中,微處理器單元(MPU)和微控制器單元(MCU)扮演著至關(guān)重要的角色。它們是計算機和其他電子設(shè)備的核心,負責(zé)處理數(shù)據(jù)和執(zhí)行程序。盡管兩者在某些方面有相似之處,但它們在設(shè)計、功能
    的頭像 發(fā)表于 01-08 09:25 ?1579次閱讀

    如何實現(xiàn) HTTP 協(xié)議的安全性

    協(xié)議的安全性,可以采取以下幾種方法: 1. 使用HTTPS HTTPS(安全超文本傳輸協(xié)議)是HTTP的安全版本,它在HTTP的基礎(chǔ)上通過SSL/TLS協(xié)議提供了數(shù)據(jù)加密、數(shù)據(jù)完整
    的頭像 發(fā)表于 12-30 09:22 ?921次閱讀

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

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

    電池的安全性測試項目有哪些?

    選擇更加安全可靠的電池產(chǎn)品,也能提高對電池安全性的信任。在電池技術(shù)日益進步的今天,安全性測試仍將是確保電池產(chǎn)品質(zhì)量和用戶安全的重要保障。
    的頭像 發(fā)表于 12-06 09:55 ?2079次閱讀
    電池的<b class='flag-5'>安全性</b>測試項目有哪些?

    如何使用Ozone分析Cortex-M異常

    Ozone可以幫助用戶快速分析和查找導(dǎo)致CPU故障的軟件bug。本文解釋如何使用Ozone的調(diào)試功能,深入了解Cortex-M架構(gòu)上的這些錯誤。
    的頭像 發(fā)表于 11-29 11:14 ?1673次閱讀
    如何使用Ozone分析<b class='flag-5'>Cortex-M</b>異常

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

    在電氣安裝中,負載箱是一種常用的設(shè)備,主要用于模擬實際的電力負載,以便進行各種電氣設(shè)備的測試和調(diào)試。通過負載箱,可以實現(xiàn)最大效率和安全性,從而提高電氣設(shè)備的運行性能和使用壽命。 負載箱可以實現(xiàn)最大
    發(fā)表于 11-20 15:24

    試驗機設(shè)備管理系統(tǒng)成為提高管理效率和安全性的重要手段

    ? ? ? ?在當(dāng)今快速發(fā)展的建筑行業(yè)中,信息技術(shù)的應(yīng)用已成為提高管理效率和安全性的重要手段。試驗機設(shè)備管理系統(tǒng)作為一種新興的管理工具,為建筑領(lǐng)域的信息技術(shù)建設(shè)提供了強有力的支持。本文將從系統(tǒng)實施
    的頭像 發(fā)表于 11-16 16:38 ?444次閱讀
    試驗機設(shè)備管理系統(tǒng)成為<b class='flag-5'>提高</b>管理效率和<b class='flag-5'>安全性</b>的重要手段

    socket編程的安全性考慮

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

    UWB模塊的安全性評估

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

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

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

    固態(tài)電池的安全性分析

    解決的關(guān)鍵問題。 1. 固態(tài)電池的基本原理 固態(tài)電池與傳統(tǒng)的鋰離子電池的主要區(qū)別在于其電解質(zhì)。固態(tài)電池使用固態(tài)電解質(zhì)代替液態(tài)電解質(zhì),這可以提高電池的熱穩(wěn)定性和機械穩(wěn)定性,從而提高安全性。固態(tài)電解質(zhì)通常由無機材料如氧化
    的頭像 發(fā)表于 10-28 09:23 ?2306次閱讀

    云計算安全性如何保障

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

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

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

    瑞薩電子基于Arm Cortex-A55和雙Cortex-M33 MPU的SOM方案 加速物聯(lián)網(wǎng)設(shè)計

    隨著工業(yè)物聯(lián)網(wǎng)技術(shù)的不斷發(fā)展,數(shù)以億計的嵌入式設(shè)備實現(xiàn)了無縫互聯(lián)。在這宏大圖景中,網(wǎng)關(guān)作為連接設(shè)備與網(wǎng)絡(luò)的核心樞紐,重要不言而喻。為滿足市場對高性能、高安全性以及高靈活性的工業(yè)網(wǎng)關(guān)需求,瑞薩推出
    的頭像 發(fā)表于 08-15 17:23 ?2402次閱讀
    瑞薩電子基于Arm <b class='flag-5'>Cortex</b>-A55和雙<b class='flag-5'>Cortex-M</b>33 <b class='flag-5'>MPU</b>的SOM方案 加速物聯(lián)網(wǎng)設(shè)計

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

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