首語(yǔ)
隨著軟件定義汽車(Software Defined Vehicles, SDV)的概念的提出,,汽車軟件發(fā)展迅速,其功能越來(lái)越多,,也變得越來(lái)越智能,,汽車在為人們更好服務(wù)的同時(shí),許多安全問題也隨之出現(xiàn),。汽車安全主要分為功能安全和信息安全,,功能安全主要是要求降低汽車硬件的隨機(jī)失效概率,信息安全則主要保證汽車軟件安全運(yùn)行,、正常升級(jí),。怎樣保證軟件能夠安全運(yùn)行,讓汽車ECU只運(yùn)行完整的,、可信的軟件,?這種要求可以讓汽車的安全啟動(dòng)(Secure Boot)來(lái)做到。
一,、安全啟動(dòng)了什么
當(dāng)駕駛者準(zhǔn)備啟動(dòng)汽車時(shí),,汽車中各種各樣的軟件便會(huì)被加載,完成各種各樣的服務(wù),。這些軟件是汽車廠商設(shè)計(jì)并經(jīng)過(guò)驗(yàn)證的,,汽車廠商保證了他們的軟件可行性和安全性,并把這些軟件在汽車賣給消費(fèi)者之前就安裝在汽車中,,并在后期對(duì)軟件維護(hù)和優(yōu)化升級(jí),,通過(guò)在線升級(jí)(On The Air, OTA)技術(shù)對(duì)汽車軟件進(jìn)行遠(yuǎn)程升級(jí),。消費(fèi)者能持續(xù)獲得可靠的優(yōu)質(zhì)軟件服務(wù)。
這些看起來(lái)都沒什么問題,,但如果在消費(fèi)者使用過(guò)程,,這些配套軟件被惡意替換,那么不但軟件可能無(wú)法提供相應(yīng)的服務(wù)和安全性,,還極有可能對(duì)人和汽車本身造成嚴(yán)重傷害,。所以汽車廠商在設(shè)計(jì)之初,就考慮到這一問題,,實(shí)現(xiàn)了安全啟動(dòng)來(lái)應(yīng)對(duì),,安全啟動(dòng)是一段在啟動(dòng)引導(dǎo)程序(Bootloader)中的程序,在實(shí)現(xiàn)汽車各項(xiàng)功能的軟件(App)啟動(dòng)之前,,Bootloader會(huì)首先啟動(dòng),,對(duì)App進(jìn)行校驗(yàn),主要檢查App的兩項(xiàng)指標(biāo):完整性(Integrity),、可信度(Authentication),,如果檢查不通過(guò),則不會(huì)啟動(dòng)App,。完整性指軟件二進(jìn)制可執(zhí)行文件是否保持原樣,,有沒有被篡改;可信度指軟件的來(lái)源是否可靠,,在汽車軟件中,,指是否是汽車廠商提供的。這兩項(xiàng)指標(biāo)確保了汽車運(yùn)行的軟件是來(lái)自汽車廠商有安全保證的軟件,,并且沒有被篡改,,從而保護(hù)了人和汽車的安全。
二,、怎樣保證安全
怎么在汽車上實(shí)現(xiàn)對(duì)App的完整性和可信度的檢查呢,?這里就需要一些密碼學(xué)(Cryptography)技術(shù)。
先來(lái)了解一些名詞:
哈希函數(shù)(Hash Function):可將任意長(zhǎng)度數(shù)據(jù)轉(zhuǎn)化為指定長(zhǎng)度摘要(e.g. SHA2安全哈希函數(shù),,MD5)
對(duì)稱加密(Symmetric Encryption):用同一把密鑰對(duì)數(shù)據(jù)進(jìn)行加解密(e.g. DES,,AES高級(jí)加密標(biāo)準(zhǔn))
非對(duì)稱加密(Asymmetric Encryption):使用公鑰和私鑰對(duì)數(shù)據(jù)加解密(e.g. RSA,ECC)
完整性驗(yàn)證
App可執(zhí)行文件是一個(gè)二進(jìn)制文件,,可以把App的可執(zhí)行文件作為哈希函數(shù)的輸入,,會(huì)得到一個(gè)固定長(zhǎng)度的哈希值(Hash Value),這里就不得不提到哈希函數(shù)的一個(gè)特點(diǎn),,哈希函數(shù)的輸入值改變會(huì)影響輸出值,,而且是極大的改變,哪怕是輸入值的一位(Bit)數(shù)據(jù)被改變,。設(shè)想,,使用哈希函數(shù)把汽車廠商的正版軟件作為輸入得到一個(gè)哈希值,,并把其保存起來(lái),黑客得到了汽車廠商的App并對(duì)其修改,,然后想讓汽車運(yùn)行他修改過(guò)的軟件,,Bootloader在啟動(dòng)安全啟動(dòng)時(shí),對(duì)修改后的App的再做一次哈希,,發(fā)現(xiàn)與先前的值截然不同,,也就不會(huì)啟動(dòng)帶有風(fēng)險(xiǎn)的App。這就保證了軟件的整體性,。
但這還不夠,,哈希函數(shù)的實(shí)現(xiàn)方式是公開的,汽車廠商可以正常的App生成一個(gè)哈希值H1存放起來(lái),,那么黑客也可以生產(chǎn)一份經(jīng)過(guò)修改的App的哈希值H2替換之前的H1,, 并把修改后的App刷入汽車中,這樣Bootloader啟動(dòng)時(shí)發(fā)現(xiàn)保存的哈希值H2和即將要運(yùn)行的App(經(jīng)過(guò)修改的)一致,,則會(huì)正常運(yùn)行。就可以騙過(guò)安全啟動(dòng)的驗(yàn)證,,達(dá)到運(yùn)行修改后App的目的,。解決這一問題,這就要提到另一個(gè)技術(shù)——一次性可編程(One Time Programmable,, OTP),,這是單片機(jī)的一種存儲(chǔ)器類型,其作用是程序燒入單片機(jī)后,,將不可再次更改和清除,,汽車廠商可以將自己App所生成的哈希值存儲(chǔ)到這樣的存儲(chǔ)器中,就可以保證經(jīng)過(guò)安全啟動(dòng)驗(yàn)證的App一定是汽車廠商所提供的,,這塊區(qū)域也不可能被篡改,。
可信度驗(yàn)證
但接下來(lái)還有一個(gè)問題需要解決,前面我們提到過(guò)OTA技術(shù),,汽車廠商會(huì)在消費(fèi)者使用汽車過(guò)程中,,持續(xù)對(duì)汽車軟件進(jìn)行維護(hù)和升級(jí),如果汽車廠商把最初那一版App的哈希值放到了OTP存儲(chǔ)器中,,那么結(jié)果就是,,汽車廠商對(duì)App升級(jí)后,由于這塊區(qū)域的內(nèi)容無(wú)法被更改(汽車廠商也無(wú)法修改),,結(jié)果就是升級(jí)App后,,由于安全啟動(dòng)校驗(yàn)不通過(guò),導(dǎo)致軟件無(wú)法啟動(dòng),。所以我們得采取其他的解決方案,。
這里可以使用數(shù)字簽名(Digital Signature)技術(shù),,可以采用非對(duì)稱加密算法,利用私鑰(Private Key)對(duì)汽車廠商App的哈希值進(jìn)行加密生成一個(gè)簽名保存起來(lái),,簽名只能用公鑰(Public Key)才能解密,,簽名解密后是一串哈希值,我們就可以用這個(gè)哈希值和即將要啟動(dòng)的App的哈希值進(jìn)行比較,。這樣看起來(lái)就好了很多,,在OTA升級(jí)時(shí),利于數(shù)字簽名技術(shù)對(duì)將要升級(jí)的App進(jìn)行完整性和可信度驗(yàn)證,,確保將要升級(jí)的App沒有被篡改并且確實(shí)來(lái)自于汽車廠商(汽車廠商利用私鑰加密,,汽車軟件升級(jí)驗(yàn)證時(shí)用公鑰解密),然后將簽名寫入FLASH某個(gè)區(qū)域(不需要OTP特性),。那么公鑰放在那里呢,?前面提到的OTP又派上用場(chǎng)了,這塊區(qū)域就可用來(lái)存儲(chǔ)和汽車廠商成對(duì)的公鑰,。
當(dāng)然也有采用基于分組密碼的消息認(rèn)證碼算法(Cipher-based Message Authentication Code,,CMAC)的方案進(jìn)行安全啟動(dòng)的驗(yàn)證,其目的是相似的,,只不過(guò)使用的方法不同,。
如何實(shí)現(xiàn)加解密
有了解決方案,如何實(shí)現(xiàn)這些復(fù)雜的算法呢,?這里就要講一講車規(guī)級(jí)MCU的發(fā)展歷史了,,在一開始, MCU的芯片廠商并沒有集成硬件來(lái)完成加密算法(Cryptographic Algorithm),,加解密過(guò)程基本都是軟件來(lái)實(shí)現(xiàn)的,,其實(shí)軟件加解密這一塊離大家都很近,比如,,熟悉Linux的同學(xué)知道,,兩個(gè)客戶端要進(jìn)行SSH通信前,需要提前生成SSH鑰匙,,這里的SSH鑰匙就是上面提到的非對(duì)稱加密算法中的公鑰和私鑰,。這樣實(shí)現(xiàn)加密算法的方法就是軟件實(shí)現(xiàn),所以早期汽車實(shí)現(xiàn)這些加密算法也都是通過(guò)軟件層面實(shí)現(xiàn)的,。這種方式有一定缺陷,,比如加解密過(guò)程中,需要MCU中主核(一般是M4或M7)來(lái)完成整個(gè)算法,,期間也不能做其他的事,,主核在設(shè)計(jì)之初也沒有考慮對(duì)加解密算法進(jìn)行優(yōu)化,結(jié)果就是實(shí)際效率會(huì)差很多。 目前,,主流的方法是通過(guò)硬件實(shí)現(xiàn)加密算法,,例如硬件安全模塊(HSM,Hardware Security Modules)和安全硬件拓展(SHE,,Secure Hardware Extension),。
SHE顧名思義,是對(duì)MCU的擴(kuò)展,,它主要提供類似于OTP的存儲(chǔ)空間,,并不能為主核提供硬件加速,結(jié)構(gòu)圖如下:
HSM就強(qiáng)大得多,,擁有自己的CPU,,并且有類似OTP的安全存儲(chǔ)區(qū)域,其結(jié)構(gòu)如下:
目前,,大多數(shù)高端車規(guī)級(jí)芯片都會(huì)集成SHE和HSM,,國(guó)外芯片廠商有ST、NXP,、infineon等,,國(guó)內(nèi)芯片廠商有芯馳、地平線,、黑芝麻等,,比較常見內(nèi)嵌HSM模塊的芯片有意法半導(dǎo)體的SPC58、英飛凌的Trave系列,、芯馳的G9X。
三,、安全啟動(dòng)流程
上述的這些解決方法和工具已經(jīng)可以實(shí)現(xiàn)完整的安全啟動(dòng)過(guò)程,,這里要介紹一個(gè)安全啟動(dòng)的概念——信任錨(Trust Anchor),大家可以把它理解為運(yùn)動(dòng)會(huì)中接力賽的接力棒,,其實(shí)仔細(xì)想想就會(huì)發(fā)現(xiàn),,上面講的很多安全啟動(dòng)的內(nèi)容都是Bootloader來(lái)完成的,那么Bootloader的完整性和可信度又該怎么保證呢,?其實(shí)就是靠這個(gè)信任錨,,BootRom(是一段固化在芯片Rom中的程序)它先檢查Bootloader的完整性和可信度,確保沒有問題后,,將信任錨傳遞給Bootloader,,然后Bootloader進(jìn)行密鑰的檢查、簽名驗(yàn)證等操作,,確保App是正確的,,然后才啟動(dòng)App完成各種服務(wù)。
四,、發(fā)展與挑戰(zhàn)
汽車軟件發(fā)展迅速,,它給人民生活帶來(lái)極大的便利,,但機(jī)會(huì)和風(fēng)險(xiǎn)是并存的,汽車軟件的信息安全問題也不容小覷,,以UNECE/WP. 29 (R155,、R156) 和 ISO/SAE 21434 為代表的汽車信息安全的國(guó)際法規(guī)與標(biāo)準(zhǔn)已經(jīng)發(fā)布與實(shí)施,我國(guó)也早已將發(fā)展智能網(wǎng)聯(lián)汽車上升到國(guó)家戰(zhàn)略高度,,國(guó)家各部委根據(jù)在車聯(lián)網(wǎng)關(guān)鍵部件和生命周期各環(huán)節(jié)的職責(zé)劃分,,制定相關(guān)政策及執(zhí)行監(jiān)管,包括網(wǎng)信辦,、工信部,、交通運(yùn)輸部、公安部,、國(guó)標(biāo)委等,,共同推動(dòng)建立健全智能網(wǎng)聯(lián)汽車信息安全管理機(jī)制。例如,,市場(chǎng)監(jiān)管總局分別在2020年11月和2021年6月發(fā)布文件,,規(guī)范了 OTA 技術(shù)在召回工作中的應(yīng)用,明確要求生產(chǎn)者采用 OTA 方式消除汽車產(chǎn)品缺陷,、實(shí)施召回的,,須向市場(chǎng)監(jiān)管總局備案。要求車企在使用 OTA 開展技術(shù)服務(wù)活動(dòng)時(shí),,需向市場(chǎng)監(jiān)管總局質(zhì)量發(fā)展局備案,;車企如果使用 OTA 消除車輛缺陷、實(shí)施召回的,,也需要向市場(chǎng)監(jiān)管總局質(zhì)量發(fā)展局備案,。
汽車信息安全技術(shù)也在不斷進(jìn)步,國(guó)內(nèi)外汽車廠商都在努力做出安全可靠的汽車軟件,。相關(guān)外企研發(fā)出HSM模塊,,并嵌入加密算法、訪問控制,、完整性檢查等技術(shù)到汽車控制系統(tǒng),,但是目前HSM仍然不支持國(guó)密算法,存在技術(shù)壁壘,,未能實(shí)現(xiàn)國(guó)產(chǎn)自主可控,。國(guó)內(nèi)對(duì)于芯片集成安全硬件還不完備,此種情況下能有一款支持國(guó)密標(biāo)準(zhǔn)的國(guó)產(chǎn)汽車硬件安全模塊對(duì)國(guó)內(nèi)汽車行業(yè)十分重要,。國(guó)密算法是我國(guó)自主研發(fā)創(chuàng)新的一套數(shù)據(jù)加密處理系列算法,,隨著我國(guó)智能汽車信息安全的要求,需要將國(guó)密算法嵌入到硬件加密芯片中結(jié)合使用。
最好的情況就是,,能在芯片層面保證安全啟動(dòng)的方案和App軟件都是自主可控,,這樣就可以最大程度的保證人和汽車的安全。
更多信息可以來(lái)這里獲取==>>電子技術(shù)應(yīng)用-AET<<