色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

3天內不再提示

MPU安全性的分區問題和解決方案

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

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

分區問題

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

堆使用。

函數調用 API

中斷。

任務創建和控制。

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

特別是對于面向對象的語言,在現代應用程序代碼中使用堆是很流行的。隨著嵌入式系統變得更加復雜并且預計會執行更多操作,尤其是在物聯網系統中,這是一個不斷增長的趨勢。此外,一些中間件使用堆。

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

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

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

專用堆的內存也可以是鏈接器分配的靜態內存塊。

函數調用 API

函數調用是軟件部分之間的主要 API。這就產生了一個問題。例如,應用程序分區可能需要文件系統服務。因此,文件系統 API 函數必須可供它訪問。文件系統中的子例程必須可供文件系統 API 函數訪問,并且驅動程序函數必須可供子例程訪問。此外,所有這些函數都必須可以訪問文件緩沖區和全局變量。因此,整個蠟球——文件系統和驅動程序——最終位于應用程序分區的代碼區域中,而文件緩沖區和全局變量最終位于應用程序分區的數據區域中。更糟糕的是,如果其他分區需要文件 I/O,那么這些區域將成為這些分區之間的公共區域。

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

中斷

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

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

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

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

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

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

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

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

更多中斷問題

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

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

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

任務創建和控制

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

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

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

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

任務本地存儲 (TLS)

任務創建函數允許創建跟隨任務堆棧的寄存器保存區域 (RSA) 的 TLS 區域:

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

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

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

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

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

審核編輯:郭婷

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

    關注

    112

    文章

    16442

    瀏覽量

    179024
  • 寄存器
    +關注

    關注

    31

    文章

    5363

    瀏覽量

    120930
  • usb
    usb
    +關注

    關注

    60

    文章

    7978

    瀏覽量

    265555
收藏 人收藏

    評論

    相關推薦

    32位單片機相關資料和解決方案參考指南

    電子發燒友網站提供《32位單片機相關資料和解決方案參考指南.pdf》資料免費下載
    發表于 01-21 14:00 ?0次下載
    32位單片機相關資料<b class='flag-5'>和解決方案</b>參考指南

    集中告警管理如何提升設施安全性

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

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

    電池的安全性測試是保證電池在實際使用過程中穩定、安全的重要手段。通過一系列嚴格的測試項目,能夠有效評估電池在不同條件下的表現,并提前發現潛在的安全隱患。對于消費者而言,了解這些測試項目不僅能幫助他們
    的頭像 發表于 12-06 09:55 ?594次閱讀
    電池的<b class='flag-5'>安全性</b>測試項目有哪些?

    socket編程的安全性考慮

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

    UWB模塊的安全性評估

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

    智能系統的安全性分析

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

    固態電池安全性怎么樣

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

    可編程邏輯控制器——安全威脅和解決方案

    電子發燒友網站提供《可編程邏輯控制器——安全威脅和解決方案.pdf》資料免費下載
    發表于 09-14 09:57 ?0次下載
    可編程邏輯控制器——<b class='flag-5'>安全</b>威脅<b class='flag-5'>和解決方案</b>

    MCT8316A-設計挑戰和解決方案應用說明

    電子發燒友網站提供《MCT8316A-設計挑戰和解決方案應用說明.pdf》資料免費下載
    發表于 09-13 09:52 ?0次下載
    MCT8316A-設計挑戰<b class='flag-5'>和解決方案</b>應用說明

    MCF8316A-設計挑戰和解決方案應用說明

    電子發燒友網站提供《MCF8316A-設計挑戰和解決方案應用說明.pdf》資料免費下載
    發表于 09-13 09:51 ?1次下載
    MCF8316A-設計挑戰<b class='flag-5'>和解決方案</b>應用說明

    用于控制和保護的HVDC架構和解決方案簡介

    電子發燒友網站提供《用于控制和保護的HVDC架構和解決方案簡介.pdf》資料免費下載
    發表于 09-04 09:24 ?0次下載
    用于控制和保護的HVDC架構<b class='flag-5'>和解決方案</b>簡介

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

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

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

    據傳輸過程中的安全性問題,分析隱私保護方面的挑戰和解決方案,并介紹一些提高藍牙模塊安全性和隱私保護的先進技術。 藍牙模塊在數據傳輸過程中的安全性問題 藍牙模塊在數據傳輸過程中采用了加密
    的頭像 發表于 06-14 16:06 ?592次閱讀

    開關電源安全性測試項目有哪些?如何測試?

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

    E-Val Pro Plus有線驗證解決方案,功能升級,優化制藥流程,確保安全性和合規

    有線驗證解決方案全新升級,虹科E-Val Pro Plus新品發布!幫助您減少停機和上市時間,優化制藥流程,確保合規安全性,是任何熱驗證過程的理想解決方案
    的頭像 發表于 04-18 13:36 ?387次閱讀
    E-Val Pro Plus有線驗證<b class='flag-5'>解決方案</b>,功能升級,優化制藥流程,確保<b class='flag-5'>安全性</b>和合規<b class='flag-5'>性</b>!
    主站蜘蛛池模板: 一本道手机无码在线看| 男人和女人全黄一级毛片| 在线欧美精品一区二区三区| 全彩无翼污之邪恶女教师| 饥渴难耐的浪荡艳妇在线观看| XXXchinese国产HD| 在线国产三级| 亚洲xxxx动漫| 日本大尺码喷液过程视频| 恋老视频 国产国佬| 狠狠色在在线视频观看| 吃奶摸下的羞羞漫画| 中国二级毛片| 亚洲精品在线影院| 午夜理论片YY4399影院| 热久久伊大人香蕉网老师| 久久亚洲精品中文字幕60分钟 | 动漫女主被扒开双腿羞辱| 2021年国产精品久久| 妖精视频在线观看高清| 小玲被公扒开腿| 少妇精油按摩| 日本肉肉口番工全彩动漫 | 亚洲.欧美.中文字幕在线观看| 日本无翼恶漫画大全优优漫画| 美女被爽cao免费漫画| 久久精品熟女亚洲AV国产| 国产中文视频| 国产色精品久久人妻无码看片| 国产白色视频在线观看w| 俄罗斯粗大猛烈18P| 成人毛片100部免费看| youjizz护士| 扒开老师大腿猛进AAA片软件| jizz日本黄色| 99热这里只有精品| 99精彩视频在线观看| 97无码欧美熟妇人妻蜜| 99精品99| 99视频在线观看视频| 99视频这里只有精品|