《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 模擬設(shè)計(jì) > 業(yè)界動(dòng)態(tài) > 汽車軟件的安全啟動(dòng)

汽車軟件的安全啟動(dòng)

2023-02-23
來源:電子發(fā)燒友網(wǎng)
關(guān)鍵詞: 安全啟動(dòng) SDV ECU

  首語

  隨著軟件定義汽車(Software Defined Vehicles, SDV)的概念的提出,汽車軟件發(fā)展迅速,其功能越來越多,也變得越來越智能,汽車在為人們更好服務(wù)的同時(shí),許多安全問題也隨之出現(xiàn)。汽車安全主要分為功能安全和信息安全,功能安全主要是要求降低汽車硬件的隨機(jī)失效概率,信息安全則主要保證汽車軟件安全運(yùn)行、正常升級(jí)。怎樣保證軟件能夠安全運(yùn)行,讓汽車ECU只運(yùn)行完整的、可信的軟件?這種要求可以讓汽車的安全啟動(dòng)(Secure Boot)來做到。

  一、安全啟動(dòng)了什么

  當(dāng)駕駛者準(zhǔn)備啟動(dòng)汽車時(shí),汽車中各種各樣的軟件便會(huì)被加載,完成各種各樣的服務(wù)。這些軟件是汽車廠商設(shè)計(jì)并經(jīng)過驗(yàn)證的,汽車廠商保證了他們的軟件可行性和安全性,并把這些軟件在汽車賣給消費(fèi)者之前就安裝在汽車中,并在后期對(duì)軟件維護(hù)和優(yōu)化升級(jí),通過在線升級(jí)(On The Air, OTA)技術(shù)對(duì)汽車軟件進(jìn)行遠(yuǎn)程升級(jí)。消費(fèi)者能持續(xù)獲得可靠的優(yōu)質(zhì)軟件服務(wù)。

  

1.png

  這些看起來都沒什么問題,但如果在消費(fèi)者使用過程,這些配套軟件被惡意替換,那么不但軟件可能無法提供相應(yīng)的服務(wù)和安全性,還極有可能對(duì)人和汽車本身造成嚴(yán)重傷害。所以汽車廠商在設(shè)計(jì)之初,就考慮到這一問題,實(shí)現(xiàn)了安全啟動(dòng)來應(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),如果檢查不通過,則不會(huì)啟動(dòng)App。完整性指軟件二進(jìn)制可執(zhí)行文件是否保持原樣,有沒有被篡改;可信度指軟件的來源是否可靠,在汽車軟件中,指是否是汽車廠商提供的。這兩項(xiàng)指標(biāo)確保了汽車運(yùn)行的軟件是來自汽車廠商有安全保證的軟件,并且沒有被篡改,從而保護(hù)了人和汽車的安全。

  

2.png

  二、怎樣保證安全

  怎么在汽車上實(shí)現(xiàn)對(duì)App的完整性和可信度的檢查呢?這里就需要一些密碼學(xué)(Cryptography)技術(shù)。

  先來了解一些名詞:

  哈希函數(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è)哈希值,并把其保存起來,黑客得到了汽車廠商的App并對(duì)其修改,然后想讓汽車運(yùn)行他修改過的軟件,Bootloader在啟動(dòng)安全啟動(dòng)時(shí),對(duì)修改后的App的再做一次哈希,發(fā)現(xiàn)與先前的值截然不同,也就不會(huì)啟動(dòng)帶有風(fēng)險(xiǎn)的App。這就保證了軟件的整體性。

  

3.png

  但這還不夠,哈希函數(shù)的實(shí)現(xiàn)方式是公開的,汽車廠商可以正常的App生成一個(gè)哈希值H1存放起來,那么黑客也可以生產(chǎn)一份經(jīng)過修改的App的哈希值H2替換之前的H1, 并把修改后的App刷入汽車中,這樣Bootloader啟動(dòng)時(shí)發(fā)現(xiàn)保存的哈希值H2和即將要運(yùn)行的App(經(jīng)過修改的)一致,則會(huì)正常運(yùn)行。就可以騙過安全啟動(dòng)的驗(yàn)證,達(dá)到運(yùn)行修改后App的目的。解決這一問題,這就要提到另一個(gè)技術(shù)——一次性可編程(One Time Programmable, OTP),這是單片機(jī)的一種存儲(chǔ)器類型,其作用是程序燒入單片機(jī)后,將不可再次更改和清除,汽車廠商可以將自己App所生成的哈希值存儲(chǔ)到這樣的存儲(chǔ)器中,就可以保證經(jīng)過安全啟動(dòng)驗(yàn)證的App一定是汽車廠商所提供的,這塊區(qū)域也不可能被篡改。

  可信度驗(yàn)證

  但接下來還有一個(gè)問題需要解決,前面我們提到過OTA技術(shù),汽車廠商會(huì)在消費(fèi)者使用汽車過程中,持續(xù)對(duì)汽車軟件進(jìn)行維護(hù)和升級(jí),如果汽車廠商把最初那一版App的哈希值放到了OTP存儲(chǔ)器中,那么結(jié)果就是,汽車廠商對(duì)App升級(jí)后,由于這塊區(qū)域的內(nèi)容無法被更改(汽車廠商也無法修改),結(jié)果就是升級(jí)App后,由于安全啟動(dòng)校驗(yàn)不通過,導(dǎo)致軟件無法啟動(dòng)。所以我們得采取其他的解決方案。

  這里可以使用數(shù)字簽名(Digital Signature)技術(shù),可以采用非對(duì)稱加密算法,利用私鑰(Private Key)對(duì)汽車廠商App的哈希值進(jìn)行加密生成一個(gè)簽名保存起來,簽名只能用公鑰(Public Key)才能解密,簽名解密后是一串哈希值,我們就可以用這個(gè)哈希值和即將要啟動(dòng)的App的哈希值進(jìn)行比較。這樣看起來就好了很多,在OTA升級(jí)時(shí),利于數(shù)字簽名技術(shù)對(duì)將要升級(jí)的App進(jìn)行完整性和可信度驗(yàn)證,確保將要升級(jí)的App沒有被篡改并且確實(shí)來自于汽車廠商(汽車廠商利用私鑰加密,汽車軟件升級(jí)驗(yàn)證時(shí)用公鑰解密),然后將簽名寫入FLASH某個(gè)區(qū)域(不需要OTP特性)。那么公鑰放在那里呢?前面提到的OTP又派上用場(chǎng)了,這塊區(qū)域就可用來存儲(chǔ)和汽車廠商成對(duì)的公鑰。

 

4.png

  當(dāng)然也有采用基于分組密碼的消息認(rèn)證碼算法(Cipher-based Message Authentication Code,CMAC)的方案進(jìn)行安全啟動(dòng)的驗(yàn)證,其目的是相似的,只不過使用的方法不同。

  如何實(shí)現(xiàn)加解密

  有了解決方案,如何實(shí)現(xiàn)這些復(fù)雜的算法呢?這里就要講一講車規(guī)級(jí)MCU的發(fā)展歷史了,在一開始, MCU的芯片廠商并沒有集成硬件來完成加密算法(Cryptographic Algorithm),加解密過程基本都是軟件來實(shí)現(xiàn)的,其實(shí)軟件加解密這一塊離大家都很近,比如,熟悉Linux的同學(xué)知道,兩個(gè)客戶端要進(jìn)行SSH通信前,需要提前生成SSH鑰匙,這里的SSH鑰匙就是上面提到的非對(duì)稱加密算法中的公鑰和私鑰。這樣實(shí)現(xiàn)加密算法的方法就是軟件實(shí)現(xiàn),所以早期汽車實(shí)現(xiàn)這些加密算法也都是通過軟件層面實(shí)現(xiàn)的。這種方式有一定缺陷,比如加解密過程中,需要MCU中主核(一般是M4或M7)來完成整個(gè)算法,期間也不能做其他的事,主核在設(shè)計(jì)之初也沒有考慮對(duì)加解密算法進(jìn)行優(yōu)化,結(jié)果就是實(shí)際效率會(huì)差很多。 目前,主流的方法是通過硬件實(shí)現(xiàn)加密算法,例如硬件安全模塊(HSM,Hardware Security Modules)和安全硬件拓展(SHE,Secure Hardware Extension)。

  SHE顧名思義,是對(duì)MCU的擴(kuò)展,它主要提供類似于OTP的存儲(chǔ)空間,并不能為主核提供硬件加速,結(jié)構(gòu)圖如下:

  

5.png

  HSM就強(qiáng)大得多,擁有自己的CPU,并且有類似OTP的安全存儲(chǔ)區(qū)域,其結(jié)構(gòu)如下:

  

6.png

  目前,大多數(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)過程,這里要介紹一個(gè)安全啟動(dòng)的概念——信任錨(Trust Anchor),大家可以把它理解為運(yùn)動(dòng)會(huì)中接力賽的接力棒,其實(shí)仔細(xì)想想就會(huì)發(fā)現(xiàn),上面講的很多安全啟動(dòng)的內(nèi)容都是Bootloader來完成的,那么Bootloader的完整性和可信度又該怎么保證呢?其實(shí)就是靠這個(gè)信任錨,BootRom(是一段固化在芯片Rom中的程序)它先檢查Bootloader的完整性和可信度,確保沒有問題后,將信任錨傳遞給Bootloader,然后Bootloader進(jìn)行密鑰的檢查、簽名驗(yàn)證等操作,確保App是正確的,然后才啟動(dòng)App完成各種服務(wù)。

  

7.png

  四、發(fā)展與挑戰(zhàn)

  汽車軟件發(fā)展迅速,它給人民生活帶來極大的便利,但機(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軟件都是自主可控,這樣就可以最大程度的保證人和汽車的安全。





更多信息可以來這里獲取==>>電子技術(shù)應(yīng)用-AET<<

新聞圖片.jpg


本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請(qǐng)及時(shí)通過電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。