91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

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

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

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

MPU安全性的分區(qū)問題和解決方案

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

掃碼添加小助手

加入工程師交流群

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

分區(qū)問題

定義分區(qū)只是安全過程中的一步。我們還必須關(guān)注黑客入侵分區(qū)后會做什么。在這方面,出現(xiàn)了四個主要問題領(lǐng)域:

堆使用。

函數(shù)調(diào)用 API。

中斷。

任務(wù)創(chuàng)建和控制。

還有其他的,但這些現(xiàn)在就可以了。下面討論解決方案。

特別是對于面向?qū)ο蟮恼Z言,在現(xiàn)代應(yīng)用程序代碼中使用堆是很流行的。隨著嵌入式系統(tǒng)變得更加復(fù)雜并且預(yù)計會執(zhí)行更多操作,尤其是在物聯(lián)網(wǎng)系統(tǒng)中,這是一個不斷增長的趨勢。此外,一些中間件使用堆。

utasks 直接訪問主堆顯然是不可接受的。黑客可以很容易地通過耗盡或破壞整個系統(tǒng)來破壞整個系統(tǒng)。因此,必須在需要堆的 umode 分區(qū)和可能的 pmode 分區(qū)中使用專用堆。為了解決這個問題,最近升級了eheap?以支持多個堆。這些堆通常很小,但不一定如此。鑒于它傾向于支持小堆,這是一個很好的解決方案。有關(guān)更多信息,請參閱:

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

圖 6 說明了從主堆分配一個小的專用堆。來自 TaskA 的堆調(diào)用僅在該堆上運行,不能超出該堆。TaskA 只能訪問受保護塊或受保護消息的主堆,如虛線所示,不能超出受保護塊。(受保護的塊和消息將在后面討論。)因此,主堆受到 TaskA 的保護,TaskA 可能是 utask 或 ptask。

專用堆的內(nèi)存也可以是鏈接器分配的靜態(tài)內(nèi)存塊。

函數(shù)調(diào)用 API

函數(shù)調(diào)用是軟件部分之間的主要 API。這就產(chǎn)生了一個問題。例如,應(yīng)用程序分區(qū)可能需要文件系統(tǒng)服務(wù)。因此,文件系統(tǒng) API 函數(shù)必須可供它訪問。文件系統(tǒng)中的子例程必須可供文件系統(tǒng) API 函數(shù)訪問,并且驅(qū)動程序函數(shù)必須可供子例程訪問。此外,所有這些函數(shù)都必須可以訪問文件緩沖區(qū)和全局變量。因此,整個蠟球——文件系統(tǒng)和驅(qū)動程序——最終位于應(yīng)用程序分區(qū)的代碼區(qū)域中,而文件緩沖區(qū)和全局變量最終位于應(yīng)用程序分區(qū)的數(shù)據(jù)區(qū)域中。更糟糕的是,如果其他分區(qū)需要文件 I/O,那么這些區(qū)域?qū)⒊蔀檫@些分區(qū)之間的公共區(qū)域。

如果黑客侵入其中一個分區(qū),他就可以通過公共區(qū)域訪問其他分區(qū)。雖然他不一定能控制那些分區(qū),但他肯定可以把它們弄下來,甚至可能破壞整個系統(tǒng)。這個問題的解決方案是分區(qū)門戶,這將在第 4 部分中討論。

中斷

中斷會導致立即切換到 pmode,從而將 pmode 暴露給外部。回想一下,任何 pmode 功能都距離打開 Vault 僅一步之遙,這是一個嚴重的安全問題。在許多情況下,如圖 7 所示,只需要在 ISR 或 ISR + LSR 中精心編寫的幾行代碼。(LSR 提供??延遲中斷處理。)

不幸的是,有限數(shù)量的 MPU 插槽加劇了中斷問題。最初,我們定義了一個sys_code區(qū)域來包含中斷所需的 ISR 和其他系統(tǒng)代碼,以及一個用于所需數(shù)據(jù)的sys_data區(qū)域。Vault、Security 和其他敏感分區(qū)被排除在這些區(qū)域之外。sys_code 和 sys_data 存在于每個任務(wù) MPA 中。因此,當發(fā)生中斷時,ISR 和 LSR 可以運行,但對其他 pcode 和 pdata 的訪問權(quán)限有限。如果 MPU 有足夠的插槽,這仍然是我們的首選方案。

sys_code 和 sys_data 區(qū)域是特權(quán)區(qū)域,因此不能由 utasks 使用。不幸的是,我們發(fā)現(xiàn)對于 8 插槽 MPU,我們不能為每個 utask 浪費兩個插槽。因此,每當切換到 utask 時,標準 MPU-Plus 都會打開背景區(qū)域 (BR)。BR 在 umode 中不起作用,但是當中斷發(fā)生時它允許 ISR 和 LSR 運行。不幸的是,在 pmode 中打開 BR 也允許訪問所有內(nèi)容 - 因此 Vault 是打開的!

在可行的情況下,建議 ISR 立即將最少的 sys_code 和 sys_data 區(qū)域加載到 MPU 中并關(guān)閉 BR。這至少會關(guān)閉保險庫并使訪問它變得更加困難。退出時,ISR 當然必須恢復(fù)被替換的區(qū)域。

對于 ptask,sys_code 和 sys_data 區(qū)域存在且可用。它們有些擴大以包括其他系統(tǒng)功能。因此,這兩個區(qū)域不會造成問題,并且每當運行 ptask 時都會關(guān)閉 BR,以保護 Vault 等。

圖 8 說明了采用的方法。注意 ptask 的 sys_code 和 sys_data 區(qū)域。utask 沒有這些區(qū)域,因為 BR 已打開。因此,可以將 utask MPA 擴展兩個插槽。這樣就可以將 MPU 插槽 4 中的外圍區(qū)域分別拆分為插槽 4 和 5 中的單獨 USB 主機和 UART1 區(qū)域。這提供了更好的安全性,因為 USB 主機和 UART1 之間的內(nèi)存中有幾個外圍設(shè)備,現(xiàn)在這些外圍設(shè)備被 utask 排除在訪問之外。插槽 6 也可用于動態(tài)區(qū)域(參見第 4 部分)。請注意,對于這兩個任務(wù),都有任務(wù)代碼和任務(wù)數(shù)據(jù)區(qū)域以及公共代碼和公共數(shù)據(jù)區(qū)域。后一個區(qū)域?qū)τ?ptask 和 utask 是不一樣的——即使 ptask 最終變成了 utask。

當需要超過最小的中斷處理時,圖 9 在左側(cè)說明了要做什么,右側(cè)是不做什么。目標是將盡可能多的處理轉(zhuǎn)移到可以更好地遏制黑客攻擊的 utask 中。在這里,對于簡單的中斷,目標是 ISR 和 LSR 中的代碼最少。此外,必須仔細編寫此代碼——它必須采用廣泛的范圍檢查和其他旨在抵御黑客攻擊的測試。如果還需要高性能,這是具有挑戰(zhàn)性的。

盡管有上述注意事項,但可能需要在 pmode 中進行完全中斷處理(即圖 9 的右側(cè))。這肯定更快更簡單,特別是如果有代碼的關(guān)鍵部分并且正在調(diào)用系統(tǒng)服務(wù)。在這種情況下,最好在 ptask 中進行處理,而不是在 ISR 或 LSR 中進行處理,因為 ptask 提供了更多的保護,因為 BR 被禁用,因此它僅限于 MPU 區(qū)域。

更多中斷問題

中斷問題不會消失。另一組問題圍繞著禁用和啟用中斷。在 umode 中,這兩個操作是無操作的。所以,如果中斷被禁用以保護 umode 代碼中的關(guān)鍵部分,你猜怎么著?他們沒有被禁用,你有一個隱藏的問題!在將遺留代碼轉(zhuǎn)換為 ucode 時,這可能會讓人頭疼,因為中斷禁用通常用于保護代碼的關(guān)鍵部分。也不能從 umode 禁用中斷。如果可以的話,這將是黑客的戰(zhàn)場。請注意,這在 pmode 中不是問題,因為所有特權(quán)指令都可以在 pmode 中訪問。

解決這個問題的方法是允許 utasks 屏蔽和取消屏蔽特定的中斷,使用 smx 函數(shù) sb_IRQMask(irq_num) 和 sb_IRQUnmask(irq_num)。允許任務(wù)屏蔽和取消屏蔽的 IRQ 范圍存儲在其 TCB 中。因此,黑客可以造成的破壞僅限于任務(wù)使用的中斷。對于遺留代碼,有必要跟蹤所有中斷被禁用和啟用的位置,用屏蔽和取消屏蔽替換它們,然后將允許的 IRQ 范圍加載到任務(wù) TCB 中。

為了幫助找到 umode 中中斷禁用和啟用的用途,如果在 umode 中調(diào)用,可以使用中斷禁用和啟用宏或函數(shù)的替代版本。這些有助于從宏和包裝函數(shù)或預(yù)期在 pmode 中運行的代碼中查找誤用。

任務(wù)創(chuàng)建和控制

顯然,如果黑客可以從他已經(jīng)滲透的 umode 分區(qū)中創(chuàng)建、刪除、啟動和停止任務(wù),他真的會造成麻煩。因此,在 umode 中不應(yīng)允許任務(wù)功能。有人會認為所有任務(wù)的創(chuàng)建和控制都應(yīng)該只在 pmode 中執(zhí)行。

不幸的是,這不能很好地工作,尤其是在轉(zhuǎn)換遺留代碼時。要求在 pmode 初始化期間創(chuàng)建所有任務(wù)會導致意想不到的限制和復(fù)雜性。在許多情況下,需要根據(jù)需要創(chuàng)建任務(wù),以便在事件發(fā)生時處理它們。例如,可以在插入 USB 設(shè)備時創(chuàng)建任務(wù),并且可以在拔下 USB 設(shè)備時刪除任務(wù)。作為另一個示例,一些 USB 控制器可以在主機和設(shè)備模式之間切換,因此需要禁用一個 USB 堆棧并啟用另一個。為了節(jié)省資源,這很可能通過刪除一組任務(wù)并創(chuàng)建另一組任務(wù)來實現(xiàn)。

這個問題的解決方案是任務(wù)族,如圖 10 所示。通常,一個分區(qū)將有一個父任務(wù)或根任務(wù),它在 pmode 中創(chuàng)建并在 pmode 中運行以執(zhí)行某些分區(qū)初始化。后者可能包括創(chuàng)建或產(chǎn)生一些子任務(wù)。父任務(wù)然后將自己切換到 umode,它可以在其中啟動其子 utask,并可能創(chuàng)建和啟動其他任務(wù)。這為動態(tài)任務(wù)控制提供了必要的靈活性。圖 8 說明了一個任務(wù)族。請注意,子任務(wù)可以創(chuàng)建其他子任務(wù),從而成為這些子任務(wù)的父任務(wù)。

父任務(wù)可以在其子任務(wù)上創(chuàng)建、啟動、停止、刪除和執(zhí)行其他功能。它不能對其父級或兄弟級執(zhí)行這些任務(wù)功能,也不能對其子級執(zhí)行這些任務(wù)功能。除此限制外,子級還繼承其父級的 MPA 模板和所有其他父級限制。因此,孩子不能做任何父母不能做的事情。(否則,黑客可能會滋生怪物。)

任務(wù)本地存儲 (TLS)

任務(wù)創(chuàng)建函數(shù)允許創(chuàng)建跟隨任務(wù)堆棧的寄存器保存區(qū)域 (RSA) 的 TLS 區(qū)域:

TCB_PTR smx_TaskCreate(樂趣,pri,tlssz_ssz,fl_hn,名稱)

tlssz_ssz 是一個拆分參數(shù):高 16 位定義 TLS 大小 tlssz,低 16 位定義堆棧大小 ssz。兩者都可以達到 64 KB。TLS 僅在 ssz 》 0 時可用——即任務(wù)堆棧必須是來自堆 hn 的永久堆棧。TLS 是一個額外受保護的任務(wù)數(shù)據(jù)塊,不需要額外的 MPU 區(qū)域。它可以以與受保護數(shù)據(jù)塊相同的方式使用(參見第 4 部分)。

TLS 指針存儲在任務(wù)的 TCB 中。可以通過以下方式訪問:

dp = (u8*)smx_TaskPeek(ut2a, SMX_PK_TLSP);

utasks 和 ptasks 都允許此操作。TLS 只能包含結(jié)構(gòu)和數(shù)組(即緩沖區(qū))。如果所有任務(wù)靜態(tài)變量都定義為結(jié)構(gòu)字段,任務(wù)緩沖區(qū)定義為數(shù)組,則 TLS 可以替換 task_data 區(qū)域,只要沒有其他任務(wù)嘗試訪問任何變量(如果是,請將它們放入com_data 區(qū)域)。這釋放了任務(wù)數(shù)據(jù)槽以用于另一個區(qū)域,以便創(chuàng)建更小、更安全的區(qū)域。圖 8 是這種優(yōu)勢的主要示例。

審核編輯:郭婷

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

    關(guān)注

    114

    文章

    17817

    瀏覽量

    194227
  • 寄存器
    +關(guān)注

    關(guān)注

    31

    文章

    5611

    瀏覽量

    130145
  • usb
    usb
    +關(guān)注

    關(guān)注

    60

    文章

    8448

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

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

    Atmel AT88SC0204C CryptoMemory:高安全性能的2Kbit存儲解決方案

    Atmel AT88SC0204C CryptoMemory:高安全性能的2Kbit存儲解決方案 在當今的電子設(shè)備中,數(shù)據(jù)的安全性和可靠至關(guān)重要。Atmel的AT88SC0204C
    的頭像 發(fā)表于 03-17 14:45 ?107次閱讀

    從 M0 到 M3丨笙泉32 位 MCU:高效能、安全性與多元應(yīng)用兼具

    從 M0 到 M3丨笙泉32 位 MCU:高效能、安全性與多元應(yīng)用兼具 笙泉32位MCU打造多元應(yīng)用控制方案 32 位 MCU(單片機 / 微控制器),如 Arm? Cortex?-M0
    發(fā)表于 03-10 15:29

    關(guān)于無線光通信物理層安全性的技術(shù)方案

    ————基于物理層特性的無線光通信保密安全方案闡述1.摘要本方案旨在系統(tǒng)闡述無線光通信技術(shù)(尤指可見光通信/VLC與光保真/LiFi)在通信保密安全性方面的核心原理與獨特優(yōu)勢。與傳統(tǒng)的
    的頭像 發(fā)表于 12-19 11:55 ?1724次閱讀
    關(guān)于無線光通信物理層<b class='flag-5'>安全性</b>的技術(shù)<b class='flag-5'>方案</b>

    請問CW32L052C8T6這種安全性低功耗MCU的安全固件部分怎么實現(xiàn)?

    請問,CW32L052C8T6這種安全性低功耗MCU的安全固件部分怎么實現(xiàn)?
    發(fā)表于 12-05 07:19

    【應(yīng)用方案】汽車座椅電機安全可靠的高集成度智能控制解決方案 | 賽卓電子

    賽卓電子提供的車規(guī)級高集成度解決方案,在符合ISO26262 ASIL-B功能安全標準的同時,實現(xiàn)了卓越的抗干擾性能,能有效簡化客戶系統(tǒng)設(shè)計、降低成本。同時,內(nèi)置的診斷功能實現(xiàn)了狀態(tài)實時上報,增強了安全性。
    的頭像 發(fā)表于 12-01 09:56 ?728次閱讀
    【應(yīng)用<b class='flag-5'>方案</b>】汽車座椅電機<b class='flag-5'>安全</b>可靠的高集成度智能控制<b class='flag-5'>解決方案</b> | 賽卓電子

    車規(guī)級與消費級芯片的可靠、安全性與成本差異

    引言在汽車電子和消費電子領(lǐng)域,"車規(guī)級"與"消費級"芯片代表了兩種截然不同的設(shè)計理念和技術(shù)標準。車規(guī)級芯片專為汽車應(yīng)用設(shè)計,強調(diào)在極端環(huán)境下的可靠安全性
    的頭像 發(fā)表于 11-18 17:27 ?1346次閱讀
    車規(guī)級與消費級芯片的可靠<b class='flag-5'>性</b>、<b class='flag-5'>安全性</b>與成本差異

    FreeRTOS和uC/OS-II的功能特性

    。 多核支持 (FreeRTOS SMP): 有官方對稱多處理 (SMP) 版本,支持多核處理器。 MPU 支持: 支持內(nèi)存保護單元 (MPU),用于任務(wù)隔離和提升可靠/安全性。 P
    發(fā)表于 11-17 08:17

    實施動態(tài)校準與補償策略時,如何保證數(shù)據(jù)的安全性?

    在實施動態(tài)校準與補償策略時,數(shù)據(jù)安全性需覆蓋數(shù)據(jù)全生命周期(采集→傳輸→存儲→處理→銷毀),重點防范 “數(shù)據(jù)泄露(如補償模型參數(shù)外泄)、數(shù)據(jù)篡改(如傳感器數(shù)據(jù)被注入偽造值)、數(shù)據(jù)丟失(如校準日志損壞
    的頭像 發(fā)表于 09-23 18:01 ?729次閱讀

    邊聊安全 | 功能安全開發(fā)之MPU

    上海磐時PANSHI“磐時,做汽車企業(yè)的安全智庫”功能安全開發(fā)之MPU寫在前面:在與從事功能安全開發(fā)行業(yè)的同事以及SASETECH社區(qū)的成員討論時,筆者經(jīng)常被問及有關(guān)芯片內(nèi)存保護單元(
    的頭像 發(fā)表于 09-05 16:21 ?2594次閱讀
    邊聊<b class='flag-5'>安全</b> | 功能<b class='flag-5'>安全</b>開發(fā)之<b class='flag-5'>MPU</b>

    有哪些技術(shù)可以提高邊緣計算設(shè)備的安全性

    邊緣計算設(shè)備的安全性面臨分布式部署、資源受限(算力 / 存儲 / 帶寬)、網(wǎng)絡(luò)環(huán)境復(fù)雜(多無線連接)、物理接觸易被篡改等獨特挑戰(zhàn),因此其安全技術(shù)需在 “安全性” 與 “輕量化適配” 之間平衡。以下從
    的頭像 發(fā)表于 09-05 15:44 ?1590次閱讀
    有哪些技術(shù)可以提高邊緣計算設(shè)備的<b class='flag-5'>安全性</b>?

    如何驗證硬件加速是否真正提升了通信協(xié)議的安全性?

    驗證硬件加速是否真正提升通信協(xié)議的安全性,需從 安全功能正確、抗攻擊能力增強、安全性能適配、合規(guī)一致 等核心維度展開,結(jié)合實驗室測試與真
    的頭像 發(fā)表于 08-27 10:16 ?1206次閱讀
    如何驗證硬件加速是否真正提升了通信協(xié)議的<b class='flag-5'>安全性</b>?

    如何利用硬件加速提升通信協(xié)議的安全性?

    產(chǎn)品實拍圖 利用硬件加速提升通信協(xié)議安全性,核心是通過 專用硬件模塊或可編程硬件 ,承接軟件層面難以高效處理的安全關(guān)鍵操作(如加密解密、認證、密鑰管理等),在提升性能的同時,通過硬件級隔離、防篡改等
    的頭像 發(fā)表于 08-27 09:59 ?1062次閱讀
    如何利用硬件加速提升通信協(xié)議的<b class='flag-5'>安全性</b>?

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

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

    開源+安全雙引擎!STM32MPU白皮書解鎖可信系統(tǒng)構(gòu)建新范式

    硬件級安全+開源生態(tài) 給出破局方案! 這份白皮書深度揭秘: ? 從0到1構(gòu)建信任鏈 :安全啟動(Secure Boot)如何通過公私鑰認證、固件簽名、OTP存儲實現(xiàn)“代碼未動,安全
    的頭像 發(fā)表于 05-16 15:24 ?616次閱讀
    開源+<b class='flag-5'>安全</b>雙引擎!STM32<b class='flag-5'>MPU</b>白皮書解鎖可信系統(tǒng)構(gòu)建新范式

    晶振不起振的常見原因和解決方案

    在電子電路設(shè)計和調(diào)試中,晶振為電路提供穩(wěn)定的時鐘信號。我們可能會遇到晶振有電壓,但不起振,從而導致整個電路無法正常工作的情況。今天凱擎小妹聊一下可能的原因和解決方案。
    的頭像 發(fā)表于 04-21 10:53 ?3520次閱讀