加入星計(jì)劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴(kuò)散
  • 作品版權(quán)保護(hù)
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長(zhǎng)期合作伙伴
立即加入
  • 正文
    • MCU如何保證軟件的安全啟動(dòng)
    • 安全啟動(dòng)方案詳解
    • 總結(jié)
  • 推薦器件
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

汽車電子MCU側(cè)信息安全之安全啟動(dòng)

2023/08/18
1萬(wàn)
閱讀需 16 分鐘
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

早期的汽車電子是一個(gè)封閉的系統(tǒng),不與外界互聯(lián),然而隨著汽車電子智能化和網(wǎng)聯(lián)化的發(fā)展,信息安全正在占據(jù)重要的位置。信息安全I(xiàn)SO21434也隨之出臺(tái),汽車電子對(duì)信息安全的要求也越發(fā)的嚴(yán)格,相關(guān)的需求日益增多。

安全啟動(dòng)正是汽車電子信息安全環(huán)節(jié)中的重要一環(huán),安全啟動(dòng)(secure boot)可以有效防止攻擊者惡意修改軟件,保護(hù)用戶的隱私。安全啟動(dòng)保證啟動(dòng)的軟件是可信任的軟件,是安全的,沒(méi)有被篡改的軟件。目前MCU側(cè)安全啟動(dòng)的主流技術(shù)方向有以HSM安全硬件支撐的安全啟動(dòng)方案以及不使用安全硬件的軟件級(jí)安全啟動(dòng)方案。

本文主要講述MCU側(cè)安全啟動(dòng)機(jī)制的原理,簡(jiǎn)要介紹了可信根和信任鏈,并簡(jiǎn)要介紹軟件安全啟動(dòng)方案對(duì)可信根的論證分析。最后簡(jiǎn)要介紹基于安全硬件的安全啟動(dòng)方案以及使用不使用安全硬件的軟件級(jí)安全啟動(dòng)方案。

MCU如何保證軟件的安全啟動(dòng)

2.1可信根

不論MCU還是SOC,均有一個(gè)“信任根”,“信任根”是信息安全信心的來(lái)源?!靶湃胃笔敲艽a系統(tǒng)中始終可以信任的來(lái)源。信任根是一個(gè)不可變的過(guò)程或身份,用作信任鏈中的第一個(gè)實(shí)體。因此,沒(méi)有祖先實(shí)體可以為信任根的初始代碼和數(shù)據(jù)狀態(tài)提供可信任的證明(以摘要或其他方式)。換句話說(shuō),嵌入式開(kāi)發(fā)人員的信任根是一個(gè)不可更改的身份和最小的軟件集,可以成功地驗(yàn)證自己并促進(jìn)系統(tǒng)上的安全操作。

最終歸納一下:必須有一段程序或者硬件可以看作不會(huì)被攻破的一個(gè)實(shí)體,那么這段程序或硬件被稱為信任根。

2.2信任鏈

如下所示,信任根(Root of Trust)驗(yàn)證Secure BootLoader是否可信任,本質(zhì)上是驗(yàn)證Secure BootLoader是否被篡改,專業(yè)術(shù)語(yǔ)為驗(yàn)證Secure BootLoader的完整性,如果Secure BootLoader可信任,那么信任根和Secure BootLoader均是可信任的,Secure BootLoader驗(yàn)證Secure App是否是可信的,如果可被信任,那么信任根、Secure BootLoader、Secure App三者均是可信任的,這三者層層相連,下層驗(yàn)證上層,保證上層可信,組成了一個(gè)鏈條,鏈條上的每一個(gè)環(huán)節(jié)均是可信的,那么這個(gè)可信的鏈條就成為信任鏈。

Root of Trust(RoT)—— Secure BootLoader——Secure App —— User App

信任根——The Root of Trust(RoT)

2.3實(shí)現(xiàn)安全啟動(dòng)的要點(diǎn)

上述分析可知,要實(shí)現(xiàn)安全啟動(dòng),需要兩點(diǎn):1.可信根的確定 2.確定驗(yàn)證方法,形成信任鏈。

2.3.1 可信根的確定

由于MCU一般不直接與網(wǎng)絡(luò)相連接,網(wǎng)絡(luò)很難直接攻擊可信根,因此,MCU側(cè)安全啟動(dòng)的可信根可分為兩種方案。

方案一:利用芯片的安全模塊或者其他安全硬件。簡(jiǎn)單歸納為:利用安全硬件作為可信根。例如英飛凌Tc3xx系列的HSM模塊。這個(gè)基本上不用做太多TARA分析,也不用向OEM做過(guò)多解釋。當(dāng)然這種方式屬于土豪方案,軟硬件都需要花錢(qián),優(yōu)點(diǎn)也是很明顯:有獨(dú)立的核來(lái)保證可信,是真正硬件上的可信!?。。。?!

方案二:根據(jù)ISO21434進(jìn)行TARA分析,得出使用軟件的最底層BootLoader作為可信根的結(jié)論。這種方案優(yōu)點(diǎn)很明顯:便宜,好擴(kuò)展。缺點(diǎn)也很明顯:不是硬件可信,是一個(gè)純軟件方案,需要得到OEM的確任。

這種方案不是沒(méi)有可取之處的。首先MCU在實(shí)車上一般不聯(lián)網(wǎng),其次刷新流程是固定的,并且不是所有Pflash的地址均可以被刷新,進(jìn)一步說(shuō),程序也是有模式控制的,工廠模式,開(kāi)發(fā)模式,運(yùn)輸模式,下線模式,售后模式,正常模式等等,不同的模式對(duì)應(yīng)著不同的軟件,模式的切換(安全刷新)也是可信的(這點(diǎn)一般由TARA分析得出)。此外,一方面,由于部分汽車機(jī)械結(jié)構(gòu)的特殊設(shè)計(jì),控制器可能會(huì)和機(jī)械結(jié)構(gòu)焊死,一旦強(qiáng)拆會(huì)導(dǎo)致汽車直接無(wú)法正常使用,一般黑客也不會(huì)做物理強(qiáng)拆。另外一方面,一般都需要關(guān)閉芯片的debug功能,使得芯片無(wú)法連接調(diào)試器,不會(huì)在任何模式下被輕易的更改軟件,以英飛凌Tc3xx為例,關(guān)閉芯片debug功能又是由OTP(刷寫(xiě)一次就不可更新的存儲(chǔ))保證的,很難被攻破。當(dāng)然電路上也可以強(qiáng)行做保護(hù),比如說(shuō),強(qiáng)行連接調(diào)試器會(huì)導(dǎo)致控制器供電直接中斷或者外狗直接復(fù)位軟件進(jìn)而斷開(kāi)調(diào)試器連接。

從上述分析,基本可得出一個(gè)結(jié)論:機(jī)械物理上無(wú)法使用debug線連接控制器,即使被拆卸下來(lái),也由于電路保護(hù)、debug口的密碼保護(hù),使得調(diào)試器無(wú)法正常連接。通信端連接由于安全模式切換以及安全刷新的存在,最底層的BootLoader無(wú)法被更新。因此,最底層的BootLoader在開(kāi)發(fā)、生產(chǎn)、銷售、售后任何一個(gè)環(huán)節(jié)等不會(huì)被篡改,可作為可信任根。

2.3.2 驗(yàn)證方法

一般要形成信任鏈,就缺不了密碼學(xué)的參與。其實(shí)不管是軟件方案還是硬件方案,本質(zhì)還是靠密碼學(xué)形成信任鏈的。前文說(shuō)過(guò),驗(yàn)證方法本質(zhì)上是驗(yàn)證完整性,因此,安全啟動(dòng)一般使用MAC校驗(yàn)。

MAC檢驗(yàn)是Message Authentication Codes的縮寫(xiě),也稱消息認(rèn)證碼,用于檢查消息的完整性以及身份驗(yàn)證,保證消息不被篡改。

常見(jiàn)的MAC算法有:HMACMD5、HMACSHA1、HMACSHA256、CMAC-AES128、CMAC-AES256等等。

簡(jiǎn)而言之,驗(yàn)證方法一般是使用MAC校驗(yàn)保證上層軟件的完整性,從而實(shí)現(xiàn)信任鏈。

安全啟動(dòng)方案詳解

3.1 Tc3xx的芯片啟動(dòng)流程簡(jiǎn)述

Tc3xx芯片手冊(cè)中的芯片啟動(dòng)流程叫SSW,英飛凌的BootRom的啟動(dòng)核為Cpu0,其他核處于Halt狀態(tài)。BootRom是英飛凌的Boot,跳轉(zhuǎn)到用戶空間的第一條指令是由用戶選擇的啟動(dòng)配置決定。我們正常用到的啟動(dòng)模式就是BMI Header,BMI Haeder可以配置在4個(gè)位置,分別為0xA0000000,0xA0020000,0xA000FFE0,0xA001FFE0。

整體的流程如下圖所示,BootRom會(huì)按照順序查找這四個(gè)位置的BMI Header的配置,并檢查其有效性。如果配置有效,則根據(jù)配置跳轉(zhuǎn)到用戶代碼。BMI Header配置信息為: 用戶空間啟動(dòng)地址,Boot Mode Index信息,Boot Mode Header ID,StartAddress(PFlash的起始地址),EndAddress(PFlash的結(jié)束地址),CRCRange(PFlash的CRC值),CRCRange取反,CRC header(ABM Haeder CRC值),CRC header取反。

設(shè)計(jì)多個(gè)BMI Header是為了做冗余備份,保證在一個(gè)或多個(gè)損壞時(shí),芯片仍然可以正常啟動(dòng)。

在跳轉(zhuǎn)進(jìn)用戶空間地址后,程序會(huì)按照設(shè)計(jì)的啟動(dòng)流程啟動(dòng),一般情況下,用戶空間分為BootLoader + BSW兩個(gè)層級(jí),英飛凌的BootRom會(huì)先跳轉(zhuǎn)進(jìn)BootLoader,BootLoader運(yùn)行之后,再跳轉(zhuǎn)進(jìn)BSW運(yùn)行,然后初始化外設(shè),啟動(dòng)Autosar OS。

簡(jiǎn)要概括一下英飛凌系列的啟動(dòng)流程為:

1.啟動(dòng)時(shí),BootRom會(huì)根據(jù)用戶配置,選擇啟動(dòng)方式,一般是BMI Header方式啟動(dòng)。

2.BMI Header存在芯片PFlash的4個(gè)位置中, BootRom按序?qū)ふ业谝粋€(gè)有效的BMI Haeder。

3.尋找到第一個(gè)有效的BMI Haeder之后,BootRom跳轉(zhuǎn)進(jìn)用戶空間的地址。

4.跳轉(zhuǎn)進(jìn)用戶空間運(yùn)行BootLoader,檢查BSW有效之后,跳轉(zhuǎn)進(jìn)BSW。

5.運(yùn)行BSW,啟動(dòng)Autosar OS,完成整個(gè)控制器啟動(dòng)。

3.2基于Tc3xx的HSM安全啟動(dòng)方案

英飛凌Tc3xx系列支持硬件安全模塊HSM,當(dāng)采用HSM時(shí),啟動(dòng)流程有了一些變化,英飛凌Tc3xx的BootRom除了正常查詢BMI Header之外,還會(huì)等待HSM啟動(dòng)以及HSM對(duì)配置區(qū)域完整性校驗(yàn)的完成,然后Signal HSM to start user code handling,之后再跳進(jìn)用戶空間的地址。此外,還需注意一點(diǎn),Tc3xx的EEPROM會(huì)被強(qiáng)制分配一部分到HSM,導(dǎo)致總的EEPROM大小變小,這些EEPROM本質(zhì)上就是HSM的安全存儲(chǔ)所用的空間,完整性校驗(yàn)預(yù)存的MAC值,就存儲(chǔ)在此處。使用HSM的英飛凌啟動(dòng)流程如下圖所示,

我們?cè)诓捎肏SM作為安全啟動(dòng)方案時(shí),我們一般會(huì)有兩種選擇:

方案一:英飛凌的BootRom等待HSM完成之后,再跳轉(zhuǎn)進(jìn)用戶空間地址

方案二:英飛凌的BootRom不等待HSM完成之后,直接跳轉(zhuǎn)進(jìn)用戶空間地址,在用戶空間檢查HSM的安全校驗(yàn)是否正常。

HSM對(duì)于設(shè)置區(qū)域的完整性校驗(yàn)和正常的代碼啟動(dòng)是并行的。正常情況下,采用方案一作為安全啟動(dòng)的方案,但是某些情況下,基于HSM安全啟動(dòng)方案的系統(tǒng)魯棒性、降低控制器變磚的可能性以及減少啟動(dòng)時(shí)間,可以選擇方案二。

方案一是標(biāo)準(zhǔn)的安全硬件支持下的安全啟動(dòng)方案,方案二是有一定的概率被黑客攻擊,修改跳轉(zhuǎn)到用戶空間的地址。

整個(gè)HSM在啟動(dòng)過(guò)程中主要流程如下圖所示,主要是對(duì)配置的Block區(qū)域即設(shè)定的需要校驗(yàn)的區(qū)域進(jìn)行MAC計(jì)算,得出的MAC值與預(yù)存在HSM的MAC值比較,若相等則代表驗(yàn)證成功,否則校驗(yàn)失敗。

3.3基于Tc3xx的軟件安全啟動(dòng)方案

基于Tc3xx的軟件啟動(dòng)方案不使用HSM安全硬件,節(jié)約了一大筆費(fèi)用。Tc3xx啟動(dòng)流程還是按照正常的流程啟動(dòng),BootRom尋找BMI Header,跳轉(zhuǎn)進(jìn)用戶空間。但是整個(gè)軟件方案需要特殊處理。

Pflash的用途需要特殊劃分,有一塊區(qū)域必須用作信任根,作為永久性ROM固化在控制器中,這是一塊人為劃分的不可刷新區(qū)域,至少對(duì)客戶是不開(kāi)放的,我們稱為Start Boot,作用相當(dāng)于英飛凌的BootRom。Start Boot需要一小塊EEPROM存放密鑰,預(yù)存的MAC校驗(yàn)值等等,這塊EEPROM是軟件劃分的產(chǎn)物,實(shí)現(xiàn)軟件隔離,從軟件以及驅(qū)動(dòng)層級(jí)無(wú)法訪問(wèn)這塊區(qū)域。Start Boot是控制器用戶空間啟動(dòng)的起點(diǎn),在Start Boot中,會(huì)初始化電源,初始化必需的外設(shè),初始化EEPROM驅(qū)動(dòng)等等。

Start Boot啟動(dòng)校驗(yàn)的流程和HSM保持一致,本質(zhì)上安全啟動(dòng)的流程大多大差不差,區(qū)別在于使用了安全硬件還是采用了純軟件方案模擬。然而,作為軟件供應(yīng)商或者自身可以可控的軟件方案,為了適應(yīng)客戶需求,這邊有一些變型的方案,像極了上學(xué)時(shí)老師講的變型題。變型的重要需求如下:

1.為了滿足啟動(dòng)時(shí)間的的要求,則縮短安全啟動(dòng)校驗(yàn)時(shí)間,那么采用部分校驗(yàn)方案。

2.MAC校驗(yàn)存儲(chǔ)的EEPROM為非安全存儲(chǔ),需要對(duì)存儲(chǔ)做安全策略

3.為了滿足整體的安全啟動(dòng)需求,則將整體軟件的校驗(yàn)挪至BSW。

上述需求第一和第三點(diǎn),整體的安全啟動(dòng)策略變更如圖所示,將安全啟動(dòng)劃分成兩次完成,第一次計(jì)算最為核心代碼區(qū)域的MAC值,計(jì)算范圍為0x8110 0000 ~ 0x813F FFFF,計(jì)算范圍客戶可自行調(diào)整配置,所得到的MAC值和預(yù)存的MAC1比較,相等則允許跳轉(zhuǎn)。此方案縮短了啟動(dòng)時(shí)間,又保證了軟件是大概率可靠的。跳轉(zhuǎn)到BSW之后,采用周期性校驗(yàn)法,在軟件平穩(wěn)運(yùn)行時(shí),分段累積計(jì)算MAC值,計(jì)算完成后與MAC2相比較,若發(fā)生篡改,則軟件直接復(fù)位停留在Customer Boot等待刷新。

上述需求第二點(diǎn),對(duì)于安全存儲(chǔ),一般會(huì)采用分散存儲(chǔ),熟稱加鹽。此外還會(huì)加密存儲(chǔ),密鑰一般寫(xiě)死在代碼中。以2K EEPROM,存儲(chǔ)32字節(jié)的MAC值為例,如下圖所示,每個(gè)單元格代表16個(gè)字節(jié),MAC值的每個(gè)字節(jié)按照一定的自定義算法散布在各個(gè)單元格中,每個(gè)單元格內(nèi),單字節(jié)的MAC值,又拆分成高字節(jié)和低字節(jié)兩部分,按照頭部加密的信息散布在16字節(jié)中。

總結(jié)

通過(guò)TARA分析,可以得出結(jié)論:在不使用的HSM安全硬件的情況下,完全可以通過(guò)軟件方案實(shí)現(xiàn)安全啟動(dòng),實(shí)現(xiàn)降本增效。

推薦器件

更多器件
器件型號(hào) 數(shù)量 器件廠商 器件描述 數(shù)據(jù)手冊(cè) ECAD模型 風(fēng)險(xiǎn)等級(jí) 參考價(jià)格 更多信息
ATMEGA328P-MU 1 Microchip Technology Inc IC MCU 8BIT 32KB FLASH 32VQFN

ECAD模型

下載ECAD模型
$2.5 查看
MKL17Z256VMP4 1 Freescale Semiconductor Kinetis L 32-bit MCU, ARM Cortex-M0+ core, 256KB Flash, 48MHz, MAPBGA 64

ECAD模型

下載ECAD模型
$5.01 查看
PIC24EP512GU810-I/PT 1 Microchip Technology Inc 16-BIT, FLASH, 60 MHz, MICROCONTROLLER, PQFP100, 12 X 12 MM, 1 MM HEIGHT, LEAD FREE, PLASTIC, TQFP-100

ECAD模型

下載ECAD模型
$10.44 查看

相關(guān)推薦

電子產(chǎn)業(yè)圖譜