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

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

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

域控軟件安全隔離關(guān)鍵技術(shù)剖析:MCU域 VS SOC域

經(jīng)緯恒潤 ? 2024-04-11 14:00 ? 次閱讀

安全隔離的需求

功能安全開發(fā)中,軟件階段由軟件V模型左邊的軟件安全需求SSR開始。SSR是從技術(shù)安全需求TSR中提取出軟件的功能安全需求,大多數(shù)情況下具有不同的ASIL等級。

wKgZomYXe6KAARPrAAERxMLYISc651.pngwKgZomYXe6KAARPrAAERxMLYISc651.png

圖1功能安全軟件開發(fā)V模型

隨后,軟件安全需求會被分配到軟件架構(gòu)中的軟件組件中。不同ASIL等級的軟件安全需求被分配到軟件組件過后,帶來了級聯(lián)失效的問題。若放任不同ASIL等級軟件組件在一個系統(tǒng)中運行,可能會存在低ASIL等級軟件組件失效從而引發(fā)高ASIL等級軟件組件失效的風(fēng)險。

ISO26262對軟件組件之間的交互進行了分析并提出了免于干擾(Freedom from Interference)的需求,安全隔離則旨在隔離軟件系統(tǒng)中安全相關(guān)與安全無關(guān)的軟件組件,以及不同ASIL等級的軟件組件。

軟件內(nèi)存基礎(chǔ)

首先讓我們來了解內(nèi)存的基本知識。RAMROM是ECU中常見的存儲器類型,它們在數(shù)據(jù)存儲和訪問方面扮演著重要的角色。

RAM(Random Access Memory)是一種臨時存儲器,用于存儲計算機正在運行的程序和數(shù)據(jù)。它具有快速的讀寫速度和隨機訪問的特點。

ROM(Read-Only Memory)是一種只讀存儲器,用于存儲固定的程序指令和數(shù)據(jù)。ROM中的數(shù)據(jù)在計算機斷電時不會丟失,因此被稱為非易失性存儲器。

然而在軟件視角中,軟件被編譯后會被分為不同的段進行存放。具體分段方式可能根據(jù)架構(gòu)有細微區(qū)別在,以Tc3xx系列芯片為例,包含以下幾段:

(1)已初始化的數(shù)據(jù)段

(2)未初始化的數(shù)據(jù)段

(3)只讀數(shù)據(jù)段

(4)代碼段

(5)task棧區(qū)

(6)啟動棧區(qū)

(7)CSA區(qū)

這些段被編譯器分配到物理內(nèi)存中,可能由不同的存儲器來存放。每當(dāng)程序需要使用某處數(shù)據(jù)或者加載某處的指令時,會根據(jù)地址來取出所需的數(shù)據(jù)或是指令進行運算,再將運算結(jié)果寫入某處物理內(nèi)存中。

在這個過程中,安全隔離的目標是阻止安全無關(guān)的軟件組件寫入安全相關(guān)的軟件組件使用的內(nèi)存區(qū)域;低ASIL等級的軟件組件寫入高ASIL等級的軟件組件所使用的內(nèi)存區(qū)域。

MCU上的安全隔離模塊

MCU上的安全隔離通常借助內(nèi)存分區(qū)機制和內(nèi)存保護單元MPU完成。經(jīng)典AUTOSAR架構(gòu)中,允許對軟件進行內(nèi)存分區(qū)(Partition),借助內(nèi)存映射(memory map)將軟件組件的代碼和數(shù)據(jù)劃分到指定的區(qū)域內(nèi)。這種方式雖然能有效地將不同ASIL等級的變量和代碼分布到不同的地址范圍中,但無法杜絕指針越界、數(shù)組越界導(dǎo)致跨區(qū)域訪問的風(fēng)險。

MPU(memory protection unit)內(nèi)存保護單元是一種按內(nèi)存區(qū)域提供保護和隔離的硬件原件,與內(nèi)存分區(qū)配合使用可以阻止不同軟件分區(qū)的軟件組件之間相互訪問,從而達到內(nèi)存隔離的效果。

以Tc3xx系列芯片為例,MPU可以按照保護范圍分為兩種,一種為系統(tǒng)級的SMPU(System Memory Protection Unit),另一種為核心級的CMPU(Core Memory Protection Unit)。

· 系統(tǒng)級的SMPU

SMPU有時候也被稱為Bus MPU,表示其工作在芯片總線上。其保護原理如圖2所示,總線上所有主機對于內(nèi)存的訪問都會經(jīng)過SMPU,當(dāng)主機擁有所請求內(nèi)存地址的對應(yīng)訪問權(quán)限(讀/寫)時,才能允許訪問。

Tc3xx中的Bus MPU可以維護8個地址保護區(qū)域(每個保護區(qū)域范圍由兩個寄存器控制),每個保護區(qū)域都記錄了64個總線主機的權(quán)限。當(dāng)主機訪問內(nèi)存區(qū)域時,首先尋找對應(yīng)的區(qū)域,再根據(jù)主機TAG ID檢查主機是否擁有對應(yīng)的權(quán)限,檢查通過后才能進行讀寫訪問,否則會觸發(fā)系統(tǒng)定義的故障。

SMPU通常用于多核系統(tǒng)和使用DMA設(shè)備的系統(tǒng),其保護范圍有限,且不能覆蓋所有的內(nèi)存區(qū)域。

up-3b47d2d236af2518a538fb61105ab942c7d.jpgwKgZomYXe66Afn9WAACK0ZoKrbM598.png

圖2 SMPU保護原理

  • · 核心級的CMPU

核心級的CMPU則是每個CPU核心獨有的,提供應(yīng)用級別的隔離。經(jīng)典AUTOSAR中,軟件組件被組織成OSA(OS Application)。OSA內(nèi)部存在共享資源,OSA之間則需要考慮內(nèi)存隔離。

CMPU保護原理如圖3所示,CMPU隔離對象為CPU中運行的軟件。CMPU也會預(yù)先劃分保護區(qū)域,這通常也是內(nèi)存分區(qū)的結(jié)果。對于這些內(nèi)存區(qū)域,每一個在核心中運行的OSA可能都具有不同的權(quán)限。當(dāng)上下文切換時,MPU的保護范圍也會動態(tài)切換,以適配不同的OSA。

同CMPU一樣,只有擁有對應(yīng)內(nèi)存區(qū)域訪問權(quán)限的OSA,才能成功完成訪問,否則會觸發(fā)系統(tǒng)定義的故障。CMPU通常擁有更多的保護區(qū)域,且能覆蓋所有的內(nèi)存空間。在這基礎(chǔ)上,CMPU還支持保護集的預(yù)設(shè),使CPU進行上下文切換時,更快地切換地址空間地MPU保護權(quán)限。一般來說,CMPU的應(yīng)用更為廣泛,在一些不那么復(fù)雜的系統(tǒng)中甚至只用CMPU就足以完成內(nèi)存隔離的需求。

wKgZomYXe7WAIxK_AADXt4Hi0pQ415.png

圖3 CMPU隔離原理

SOC上的安全隔離

相比MCU,SOC擁有更強大的性能,可以運行一些復(fù)雜操作系統(tǒng)(比如linux)。這種情況下,基于地址范圍進行保護的MPU就顯得“力不從心”了。進程是操作系統(tǒng)進行資源分配的基本單位,一些應(yīng)用程序可能由多個進程組成,在某些場景中(比如座艙域)還需要虛擬機來運行不同的操作系統(tǒng)。

因此,我們把SOC上的內(nèi)存隔離場景劃分為兩個層級:進程級隔離、應(yīng)用程序級隔離和操作系統(tǒng)級隔離。本文主要介紹進程級隔離。

MMU(Memory Management Unit)是SOC中常見的硬件,用于提供進程級別的內(nèi)存分配和隔離。進程在運行時,操作系統(tǒng)會使進程認為自己獨占整個尋址空間(32位機器尋址空間為4GB),并使用連續(xù)的物理地址進行操作。但實際上,這個內(nèi)存空間要么尚未分配,要么部分存在于磁盤中。并且其使用的虛擬地址會由MMU進行翻譯,對應(yīng)到分散的物理地址中。

MMU的工作原理如圖4所示。內(nèi)存空間被劃分為若干頁面(Page),每個頁面占用4KB內(nèi)存。進程使用的連續(xù)虛擬頁面被MMU翻譯到具體的分散的物理頁面中。

MMU最主要的功能其實是將虛擬頁翻譯到物理頁。那為什么MMU可以實現(xiàn)進程級隔離呢?

因為MMU的翻譯是基于頁表進行的,頁表記錄了進程虛擬頁到物理頁的映射。操作系統(tǒng)為不同的進程分配的不同的頁表起始地址,存儲在對應(yīng)寄存器中。當(dāng)MMU翻譯地址時,根據(jù)頁表起始地址加偏移量定位到具體的頁表項,進而完成地址翻譯。不難看出,這種機制使得進程擁有天然隔離的零散的地址空間

wKgaomYXe8GAJ0zpAAC8606e4Jc001.png

圖4 MMU工作原理

安全隔離小結(jié)

安全隔離的底層原理是避免軟件對內(nèi)存的不合理訪問,以滿足功能安全要求。硬件層面上,有MPU、MMU這樣的硬件進行程序內(nèi)存空間的保護和約束;軟件層面上,容器化技術(shù)和虛擬化技術(shù)也能幫助用戶制定更靈活的隔離策略。但并不是說實現(xiàn)了這些安全隔離機制就等于完全滿足了安全隔離需求,還需要結(jié)合軟件和系統(tǒng)的正確設(shè)計來共同達成目標。

經(jīng)緯恒潤功能安全團隊成立于2008年,系國內(nèi)較早從事功能安全技術(shù)研究的團隊。作為功能安全、預(yù)期功能安全國家標準委員會成員,經(jīng)緯恒潤的研發(fā)流程、生產(chǎn)流程已通過功能安全開發(fā)過程認證,功能安全開發(fā)過程達到ASIL-D,相關(guān)產(chǎn)品已成功服務(wù)于近百家國內(nèi)外整車及零部件企業(yè)。

經(jīng)緯恒潤功能安全軟件團隊可提供功能安全軟件開發(fā)技術(shù)咨詢服務(wù),包括功能安全軟件階段流程/產(chǎn)品咨詢、L2監(jiān)控算法開發(fā)集成和L3安全機制(安全通信、隔離、監(jiān)控、執(zhí)行和芯片AOU)的開發(fā)集成,控制器覆蓋動力域、底盤域、智駕域和車身域等。

未來,經(jīng)緯恒潤將緊跟行業(yè)發(fā)展趨勢和市場需求,結(jié)合自身汽車電子產(chǎn)品研發(fā)和國內(nèi)外咨詢實踐,一如既往地堅持自主創(chuàng)新道路,為智能汽車安全保駕護航。

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

    關(guān)注

    146

    文章

    16665

    瀏覽量

    347752
  • 汽車功能安全
    +關(guān)注

    關(guān)注

    0

    文章

    24

    瀏覽量

    1384
收藏 人收藏

    評論

    相關(guān)推薦

    CAN數(shù)據(jù)幀的各個及其作用

    CAN數(shù)據(jù)幀由多個組成,包括幀起始、仲裁、控制、數(shù)據(jù)和幀結(jié)束。每個都有其特定的作用,共同構(gòu)成了一個完整的數(shù)據(jù)幀。下面將詳細介紹這
    的頭像 發(fā)表于 07-24 15:10 ?427次閱讀

    汽車智能座艙功能測試

    北匯信息推出座艙功能測試解決方案,支持在實驗室環(huán)境以及實車環(huán)境下完成座艙功能測試,不僅可以確保產(chǎn)品質(zhì)量、提升用戶體驗、保障行車安全,也能降低維護成本、加速產(chǎn)品上市、滿足法規(guī)要求、推動技術(shù)
    的頭像 發(fā)表于 05-10 09:20 ?2148次閱讀
    汽車智能座艙<b class='flag-5'>域</b>功能測試

    什么是智能汽車第六?

    在集中式EEA中,博世五大劃分最為經(jīng)典:動力(Power Train)、底盤(Chassis)、車身(Body/Comfort)、座艙
    發(fā)表于 04-20 09:46 ?422次閱讀
    什么是智能汽車第六<b class='flag-5'>域</b>?

    C語言中的位典型的實例

    所謂"位"是把一個字節(jié)中的二進位劃分為幾個不同的區(qū)域,并說明每個區(qū)域的位數(shù)。每個有一個域名,允許在程序中按域名進行操作。這樣就可以把幾個不同的對象用一個字節(jié)的二進制位來表示。
    發(fā)表于 03-04 11:29 ?334次閱讀
    C語言中的位<b class='flag-5'>域</b>典型的實例

    LED照明廠商聯(lián)光電新設(shè)子公司

    深圳市聯(lián)光電股份有限公司(以下簡稱“聯(lián)光電”)近日新增投資企業(yè)廣東聯(lián)五金制品有限公司(以下簡稱“聯(lián)五金制品”)。這一舉措標志著聯(lián)
    的頭像 發(fā)表于 02-05 16:57 ?825次閱讀

    如何處理跨時鐘這些基礎(chǔ)問題

    對于數(shù)字設(shè)計人員來講,只要信號從一個時鐘跨越到另一個時鐘,那么就可能發(fā)生亞穩(wěn)態(tài)。我們稱為“跨時鐘”即“Clock Domain Crossing”,或CDC。
    發(fā)表于 01-08 09:39 ?430次閱讀
    如何處理跨時鐘<b class='flag-5'>域</b>這些基礎(chǔ)問題

    在AD9787里面,哪些管腳是屬于DVDD33的電源,哪些是屬于DVDD18的電源?

    在AD9787里面,數(shù)字電壓有兩個一個是DVDD33,一個是DVDD18,想問的是,哪些管腳是屬于DVDD33的電源,哪些是屬于DVDD18的電源?
    發(fā)表于 12-01 06:33

    淺談符號IO和圖形IO

    符號IO組態(tài) 方法:把“符號IO”這個灰色塊狀拖拽到指定畫面位置,鼠標右鍵彈出對話框“屬性”后點擊“常規(guī)”找到過程“變量”后,連接變量。添加文本并創(chuàng)建文本名稱。
    的頭像 發(fā)表于 11-29 09:33 ?1377次閱讀
    淺談符號IO<b class='flag-5'>域</b>和圖形IO<b class='flag-5'>域</b>

    什么是頻率?為什么要在頻率域中進行圖像處理?

    什么是頻率?為什么要在頻率域中進行圖像處理? 頻率是指在頻率上對圖像進行分析和處理的領(lǐng)域。在頻率域中,圖像被轉(zhuǎn)換為一組頻率成分,其中每個頻率表示圖像中某種特定的變化。頻率分析使用一種叫做
    的頭像 發(fā)表于 11-20 14:05 ?1671次閱讀

    架構(gòu)下的功能安全思考

    隨著整車電子電氣架構(gòu)的發(fā)展,功能控架構(gòu)向整車集中式區(qū)域控制演進。新的區(qū)域控制架構(gòu)下,車身控制模塊(BCM),整車控制單元(VCU),熱管理系統(tǒng)(TMS)和動力底盤等功能等原本獨立的功能整合
    的頭像 發(fā)表于 11-06 08:40 ?479次閱讀
    <b class='flag-5'>域</b>架構(gòu)下的功能<b class='flag-5'>安全</b>思考

    為什么選擇屏幕要選廣色的?

    為什么選擇屏幕要選廣色
    發(fā)表于 10-30 08:13

    如何解決跨問題

    如何解決跨問題?首先我們需要知道什么是跨,跨指的是瀏覽器不能執(zhí)行其它網(wǎng)站的腳本,它是由瀏覽器的同源策略造成的,是瀏覽器對JavaScript 施加的安全限制。 1、同源策略 根據(jù)
    的頭像 發(fā)表于 10-09 16:07 ?474次閱讀
    如何解決跨<b class='flag-5'>域</b>問題

    MCU中局部變量的作用是什么?

    MCU中局部變量的作用是什么
    發(fā)表于 10-09 08:51

    MCU中怎么確定一個變量的作用?

    MCU中怎么確定一個變量的作用
    發(fā)表于 10-09 06:46

    自動駕駛操作監(jiān)督是什么

    操作監(jiān)督(ODS) 操作監(jiān)督功能模塊圖 操作監(jiān)督模塊監(jiān)控與動態(tài)駕駛?cè)蝿?wù)相關(guān)的能力、狀態(tài)和情況,目的是確保自動駕駛車輛在操作設(shè)計及其他適用的動態(tài)和靜態(tài)約束下運行。它使用兩個操作
    的頭像 發(fā)表于 10-04 18:19 ?454次閱讀
    自動駕駛操作<b class='flag-5'>域</b>監(jiān)督是什么