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