冠捷半導(dǎo)體(上海)有限公司 王 敏
CAN網(wǎng)絡(luò)作為目前汽車的主要網(wǎng)絡(luò),是確保整車信息安全重要的一個(gè)環(huán)節(jié)。本文在汽車電子軟件開(kāi)發(fā)標(biāo)準(zhǔn)AUTOSAR提出的SecOC概念基礎(chǔ)上加以擴(kuò)展,實(shí)現(xiàn)了一套不依賴于AUTOSAR軟件但兼容于其SecOC通訊機(jī)制的系統(tǒng)。實(shí)驗(yàn)證明,該系統(tǒng)能有效地生成SecOC校驗(yàn)時(shí)需要的Freshness值以及MAC消息認(rèn)證碼,能正常接入使用SecOC通訊機(jī)制的網(wǎng)絡(luò),在不降低安全性的條件下,極大節(jié)省了硬件成本和軟件開(kāi)發(fā)成本。
在汽車信息化,互聯(lián)化,電子化的今天,汽車信息安全成為一個(gè)越來(lái)越重要的話題。相對(duì)于傳統(tǒng)汽車,現(xiàn)代化的汽車存在著更多的信息接入口,例如:板上調(diào)試接口,遠(yuǎn)程無(wú)線連接接口,如WIFI,藍(lán)牙等,信息娛樂(lè)接口,如CD,USB等。而這些接口都是黑客常見(jiàn)的目標(biāo)。黑客通常會(huì)從這些接口入手,尋找一些漏洞,入侵到汽車系統(tǒng)里。緊接著,黑客會(huì)嘗試破解車內(nèi)CAN網(wǎng)絡(luò)協(xié)議,在CAN網(wǎng)絡(luò)上發(fā)送一些非法消息,以實(shí)現(xiàn)對(duì)車內(nèi)各個(gè)部件的控制或者破壞。
近年來(lái),汽車被惡意攻擊的事件頻發(fā),例如,在2015年,查理·米勒和克里斯·瓦拉塞克就利用菲亞特克萊斯勒的車載娛樂(lè)系統(tǒng)的漏洞更新了車內(nèi)ECU的固件并向CAN總線發(fā)送非法控制指令從而成功入侵了2014款Jeep自由光。二人在2016年再次合作,利用相似的手法破解了板上調(diào)試接口,像CAN網(wǎng)絡(luò)上發(fā)送控制指令,實(shí)現(xiàn)了對(duì)汽車的動(dòng)力系統(tǒng)的操控,可以隨意的進(jìn)行加減速和剎車。
從這些例子我們可以發(fā)現(xiàn)由于CAN網(wǎng)絡(luò)是車內(nèi)最主要的通信渠道,CAN網(wǎng)絡(luò)安全是汽車信息安全的最后也是最重要的一個(gè)環(huán)節(jié)。但頻頻的黑客攻擊事件也說(shuō)明了傳統(tǒng)CAN2.0網(wǎng)絡(luò)對(duì)于信息安全的防護(hù)極其薄弱,已經(jīng)難以適應(yīng)當(dāng)今汽車發(fā)展的需求。為了提高車載CAN總線的安全性,國(guó)際知名汽車電子軟件開(kāi)發(fā)標(biāo)準(zhǔn)AUTOSAR提出了基于CAN-FD總線的車載安全通信模塊SecOC(Secure on Board Communication)安全驗(yàn)證機(jī)制,通過(guò)在CAN-FD總線數(shù)據(jù)上附加Freshness值以及MAC消息認(rèn)證碼,來(lái)實(shí)現(xiàn)通訊雙方的認(rèn)證以及消息驗(yàn)證,從而保障了車載通訊網(wǎng)絡(luò)的安全。下面將詳細(xì)介紹SecOC的原理和基于外掛式硬件安全模塊的SecOC實(shí)現(xiàn)方法。
SecOC從屬于AUTOSAR軟件規(guī)范中的Safety and Security部分,旨在對(duì)單個(gè)傳輸?shù)臄?shù)據(jù)單元的安全性進(jìn)行校驗(yàn)以檢測(cè)識(shí)別重播,欺騙,篡改等攻擊行為。SecOC于AUTOSAR 4.3.1版本首次提出,在對(duì)之前版本AUTOSAR架構(gòu)改動(dòng)較少,資源消耗不大量增長(zhǎng)的情況下,實(shí)現(xiàn)了安全的CAN-FD通信。該模塊主要使用了基于對(duì)稱身份驗(yàn)證方法的MAC消息認(rèn)證碼,相對(duì)于傳送統(tǒng)的非對(duì)稱密鑰驗(yàn)證體系來(lái)說(shuō),密鑰長(zhǎng)度更加短,計(jì)算時(shí)間更加少,對(duì)軟硬件的資源消耗更加少,但卻可以實(shí)現(xiàn)和非對(duì)稱秘鑰驗(yàn)證類似的安全性。同時(shí),AUTOSAR也保留了非對(duì)稱秘鑰驗(yàn)證的模塊接口,可以在對(duì)稱秘鑰驗(yàn)證系統(tǒng)和非對(duì)稱秘鑰驗(yàn)證系統(tǒng)間靈活切換。
如圖1所示,SecOC模塊是AUTOSAR基礎(chǔ)軟件模塊的一部分,集成于通訊服務(wù)的PDU(Protocol Data Unit)路由層,配合系統(tǒng)服務(wù)的CSM加密服務(wù)管理單元等確保整個(gè)AUTOSAR通訊協(xié)議的安全性。在該架構(gòu)中PDU路由層會(huì)把安全相關(guān)的PDU傳給SecOC模塊,然后由SecOC模塊根據(jù)預(yù)先的配置信息將相應(yīng)的PDU內(nèi)容添加相關(guān)的安全認(rèn)證信息,或者讀取其中的安全認(rèn)證信息。
圖1 SecOC模塊層級(jí)
如圖2所示,SecOC模塊處理后包含安全認(rèn)證信息的Secured I-PDU報(bào)文結(jié)構(gòu)主要包括可選的Secured I-PDU頭,Authentic I-PDU,可選的Freshness值和Authenticator四個(gè)部分。Authentic I-PDU為合法的協(xié)議內(nèi)容,如各種傳感器狀態(tài)內(nèi)容。可選的Freshness值和Authenticator是進(jìn)行安全校驗(yàn)的重要部分。Freshness值是一個(gè)隨時(shí)間不斷變化,不重復(fù)的值,以確??偩€上的消息不會(huì)被重放攻擊,一般是一個(gè)單調(diào)計(jì)數(shù)器或者時(shí)間戳。Authenticator部分是MAC消息認(rèn)證碼的部分,由對(duì)稱秘鑰,Authentic I-PDU數(shù)據(jù),對(duì)應(yīng)消息的ID值和Freshness值計(jì)算生成,用于保護(hù)驗(yàn)證消息的數(shù)據(jù)完整性和真實(shí)性。
圖2 Secured I-PDU結(jié)構(gòu)
如圖3所示,在通訊過(guò)程中,發(fā)送端應(yīng)用層的Freshness值管理器(FVM)會(huì)生成一個(gè)Freshness值并根據(jù)配置好的長(zhǎng)度裁減后用于本次通訊。SecOC模塊包含一個(gè)MAC消息認(rèn)證碼生成單元,目前常用的MAC消息認(rèn)證碼生成算法是AES-CMAC及HMAC。將生成好的Freshness值,秘鑰K,消息ID和Authentic I-PDU數(shù)據(jù)送入MAC消息認(rèn)證碼生成器,就可以計(jì)算得到MAC消息認(rèn)證碼值。同樣的,根據(jù)配置的不同,最終發(fā)送到總線的MAC消息認(rèn)證碼長(zhǎng)度也是可裁減的。
圖3 SecOC安全機(jī)制驗(yàn)證流程
接收端收到Secured I-PDU數(shù)據(jù)后,接收端的Freshness值管理器會(huì)首先比對(duì)Freshness值,如果該值小于等于之前保存的上一次Freshness值或不在設(shè)定的時(shí)間范圍內(nèi),則說(shuō)明這是一包被重放的數(shù)據(jù),有安全隱患,需要丟棄;如果該值大于之前保存的上一次Freshness值或在設(shè)定的時(shí)間范圍內(nèi),則說(shuō)明該字段安全,進(jìn)行之后的檢驗(yàn)。接收端的MAC消息認(rèn)證碼驗(yàn)證單元按照發(fā)送端的MAC消息認(rèn)證碼生成單元一樣的算法計(jì)算Freshness值,秘鑰K,消息ID和Authentic I-PDU數(shù)據(jù)對(duì)應(yīng)的MAC消息認(rèn)證碼值并和接收到的MAC消息認(rèn)證碼值比對(duì),如果兩者一致,說(shuō)明該包數(shù)據(jù)安全可信;如果不一致,則說(shuō)明該包數(shù)據(jù)有安全隱患,需要丟棄。
在SecOC的實(shí)現(xiàn)過(guò)程中,除了需要大量的軟件工作,同時(shí)要求硬件MCU具有安全算法能力和對(duì)秘鑰的安全保護(hù)能力。對(duì)于普通的MCU,其往往沒(méi)有足夠快的安全運(yùn)算能力,或者自帶的硬件安全單元不支持AES-CMAC算法或者HMAC算法。對(duì)于一些運(yùn)行速率高,運(yùn)算能力強(qiáng)勁的MCU,雖然可以通過(guò)純軟件的方式完成相關(guān)的SecOC算法,但是很多又缺乏硬件上的安全保護(hù)機(jī)制,無(wú)法實(shí)現(xiàn)對(duì)秘鑰的安全存儲(chǔ),達(dá)不到汽車相關(guān)安全規(guī)范對(duì)信息安全的要求。于是,汽車供應(yīng)商只能基于少許的帶硬件安全模塊HSM且支持AUTOSAR的MCU器件進(jìn)行SecOC的開(kāi)發(fā),SecOC的應(yīng)用范圍收到了極大的限制。
為了解決這一問(wèn)題,我們考慮使用車規(guī)級(jí)別的外掛式硬件安全芯片,在不使用AUTOSAR架構(gòu)的情況下實(shí)現(xiàn)SecOC的相應(yīng)功能,實(shí)現(xiàn)安全的車載通訊。
如圖4所示,我們搭建了一套硬件系統(tǒng)。其中,主控端使用美國(guó)微芯公司生產(chǎn)的ATSAMV71Q20。ATSAMV71Q20是一顆Cortex M7內(nèi)核的單片機(jī),最高運(yùn)行速率300MHz,附帶SPI,I2C,UART,CAN和CAN-FD等多種數(shù)據(jù)接口。CAN-FD收發(fā)器使用美國(guó)微芯公司生產(chǎn)的ATA6571。安全芯片使用美國(guó)微芯公司生產(chǎn)的TA100。TA100集成了多種對(duì)稱,非對(duì)稱及哈希等安全算法,可以實(shí)現(xiàn)安全啟動(dòng),安全升級(jí),消息認(rèn)證和TLS等多種安全功能。對(duì)于SecOC安全機(jī)制中所需要的AES-CMAC算法和HMAC算法,TA100可以在微秒級(jí)別完成,非常適合該系統(tǒng)。
圖4 系統(tǒng)硬件架構(gòu)
系統(tǒng)中的MOOCA FD是用來(lái)充當(dāng)SecOC的接收節(jié)點(diǎn)的CANFD分析儀,它可以通過(guò)配置成為一個(gè)符合AUTOSAR通訊標(biāo)準(zhǔn)的SecOC子節(jié)點(diǎn),從而判斷本系統(tǒng)發(fā)出的數(shù)據(jù)是否符合AUTOSAR中對(duì)SecOC的要求。
為了模擬真實(shí)的量產(chǎn)使用環(huán)境,軟件部分主要包含兩大部分:產(chǎn)線燒錄軟件及客戶端使用軟件。
對(duì)于產(chǎn)線燒錄軟件主要是為了將后續(xù)測(cè)試需要的AES-CMAC秘鑰組燒錄進(jìn)TA100,并對(duì)TA100做基本配置。這部分的軟件流程如圖5(a)所示。(1)初始化主控各外設(shè),配置主時(shí)鐘為300MHz,使能SPI及USB模塊。(2)配合微芯公司提供的上位機(jī)工具讀取存儲(chǔ)于上位機(jī)的AES-CMAC秘鑰數(shù)據(jù)。(3)將秘鑰數(shù)據(jù)發(fā)送到TA100。(4)對(duì)秘鑰數(shù)據(jù)進(jìn)行再校驗(yàn),如果出現(xiàn)錯(cuò)誤則重試步驟(3)。(5)寫入其他TA100配置,并鎖定TA100,以確保相關(guān)秘鑰再也無(wú)法被讀寫。
圖5 系統(tǒng)軟件流程
對(duì)于客戶端使用軟件,即測(cè)試用軟件,會(huì)將8字節(jié)的Authentic I-PDU明文數(shù)據(jù)添加Freshness值及由TA100計(jì)算得到的MAC消息認(rèn)證碼(也就是Authenticator部分)值發(fā)送到CAN-FD總線上。這初部分的軟件流程如圖5(b)所示。(1)初始化主控各外設(shè),配置主時(shí)鐘為300MHz,使能SPI及CAN-FD模塊。(2)讀取TA100單調(diào)遞增的安全計(jì)數(shù)值作為Freshness值。(3)打包Authentic I-PDU明文數(shù)據(jù)及Freshness值數(shù)據(jù)。(4)使能TA100的AESCMAC功能,并配置好后續(xù)MAC消息認(rèn)證碼所需要的秘鑰。(5)將打包好的Authentic I-PDU明文數(shù)據(jù)及Freshness值數(shù)據(jù)發(fā)送至TA100。(6)等待TA100計(jì)算完成返回MAC消息認(rèn)證碼值數(shù)據(jù)。(7)重新打包所有數(shù)據(jù),并發(fā)送到CAN-FD總線上。(8)檢查停止測(cè)試的按鍵是否按下,如果按下則停止測(cè)試,否則跳轉(zhuǎn)到(2)循環(huán)進(jìn)行測(cè)試。
搭建好測(cè)試系統(tǒng)后,打開(kāi)MOOCA FD上位機(jī)工具,導(dǎo)入測(cè)試系統(tǒng)使用的秘鑰值,并配置成AUTOSAR SecOC子節(jié)點(diǎn)。記錄MOOCA FD收到的數(shù)據(jù),如圖6所示,SecOC子節(jié)點(diǎn)已成功收到數(shù)據(jù)并校驗(yàn)通過(guò)。說(shuō)明本系統(tǒng)作為SecOC的主節(jié)點(diǎn),在不使用帶硬件安全模塊HSM的MCU器件且不使用AUTOSAR的情況下,可以實(shí)現(xiàn)AUTOSAR SecOC主節(jié)點(diǎn)一樣的功能。
圖6 測(cè)試結(jié)果
結(jié)語(yǔ):AUTOSAR規(guī)范提出了SecOC的概念,通過(guò)對(duì)CAN總線上的數(shù)據(jù)進(jìn)行校驗(yàn)和認(rèn)證,以實(shí)現(xiàn)對(duì)汽車CAN總線通訊數(shù)據(jù)的保護(hù)。但受限于SecOC對(duì)軟件和硬件的苛刻要求,該概念的推廣收到了極大的阻礙。本文通過(guò)使用外掛式的安全加密芯片TA100,在不使用高成本的安全控制器件的情況下,構(gòu)建了一套兼容SecOC安全機(jī)制的軟硬件系統(tǒng)。該系統(tǒng)不依賴于AUTOSAR系統(tǒng)和MCU本身硬件安全能力,軟件開(kāi)發(fā)簡(jiǎn)單,通用性強(qiáng)。在保證車載通信安全的基礎(chǔ)上,具有很好的實(shí)用性和靈活性。