洪雷 萬(wàn)開明
摘 要:CAN(Controller Area Network)總線技術(shù)的發(fā)展令人驚嘆,基于CAN的車載總線實(shí)現(xiàn)ECU(Electronic Control Unit)分布式實(shí)時(shí)數(shù)據(jù)通訊,自由通信,總線仲裁。本文提出了在CAN協(xié)議基礎(chǔ)上增加ECU間(Key)密鑰分配與信息認(rèn)證,簡(jiǎn)稱MAC(Message Authentication Code,信息認(rèn)證碼)。本文會(huì)由淺入深闡述當(dāng)前CAN總線協(xié)議基礎(chǔ)上的MAC的工作原理與實(shí)現(xiàn)方式。
關(guān)鍵詞:CAN總線;信息認(rèn)證;MAC(Message Authentication Code)
1 CAN總線簡(jiǎn)介
CAN(Controller Area Network)網(wǎng)絡(luò)由德國(guó)Bosch博世公司1991發(fā)明,旨在提供一種多ECU(Electronic Control Unit)高性能,穩(wěn)定性高,成本低,擴(kuò)展性強(qiáng),并兼顧總線仲裁的車載總線協(xié)議。
2 MAC 信息認(rèn)證碼簡(jiǎn)介
MAC(信息認(rèn)證碼)通過(guò)車載CAN總線中ECU間網(wǎng)絡(luò)報(bào)文的認(rèn)證,確認(rèn)信息來(lái)源。報(bào)文的發(fā)送方計(jì)算并生成認(rèn)證碼MAC(Message Authentication Code)并包含在報(bào)文Data Field中,MAC的數(shù)值需要證實(shí)數(shù)據(jù)的完整性和真實(shí)性。接收方需要在接受與處理信息之前確認(rèn)MAC的合法性。設(shè)計(jì)意圖主要有以下幾點(diǎn):
2.1 CAN協(xié)議兼容性
MAC數(shù)據(jù)信息需要支持并符合已有CAN總線協(xié)議,無(wú)需對(duì)已有CAN總線協(xié)議進(jìn)行修改。
2.2 ECU硬件兼容性
MAC的布置無(wú)需對(duì)ECU模塊硬件進(jìn)行升級(jí)或更換,僅更新ECU的軟件即可實(shí)現(xiàn)MAC認(rèn)證功能。
2.3 實(shí)時(shí)性
MAC認(rèn)證不應(yīng)消耗過(guò)多ECU運(yùn)算資源,避免因MAC的認(rèn)證影響車輛正常使用與運(yùn)行。
2.4 低成本
MAC認(rèn)證的實(shí)施成本低,ECU硬件調(diào)整,ECU軟件調(diào)整費(fèi)用可控;
2.5 密鑰控制成本
密鑰的生成,存儲(chǔ),寫入,獲取,重寫,都需要連接OEM后臺(tái)服務(wù)器,增加或減少ECU不改變已有MAC認(rèn)證策略;
認(rèn)證場(chǎng)占用部分CAN協(xié)議中的 Data Field(數(shù)據(jù)場(chǎng))的優(yōu)點(diǎn):
a.CAN協(xié)議集成度高,模塊的CAN協(xié)議層經(jīng)歷漫長(zhǎng)開發(fā),調(diào)整,優(yōu)化;避免模塊重新開發(fā)與調(diào)試的高昂費(fèi)用;
b.CAN協(xié)議中除Data Field部分,都定義明確;對(duì)ECU軟件與CAN協(xié)議進(jìn)行最小升級(jí)實(shí)現(xiàn)MAC功能;
c.為向下兼容提供可能。
3 密鑰簡(jiǎn)介
MAC的生成與安全訪問(Security Access)計(jì)算方式類似。發(fā)送方與接收方需要共享密鑰,稱為Symmetric Encryption(成對(duì)密鑰)。發(fā)送方與接收方生成MAC,認(rèn)證MAC都需相同的密鑰。在開始通訊前報(bào)文的發(fā)送方接收方需共享密鑰的寫入。需要特別指出的是成對(duì)密鑰無(wú)法支持方向性確認(rèn)。具備確認(rèn)MAC的真實(shí)性的同時(shí)也就具有生成MAC的能力。
成對(duì)密鑰依需設(shè)置多組,整車中網(wǎng)絡(luò)報(bào)文的發(fā)送方,接收方都有明確規(guī)定,一組成對(duì)密鑰只限于發(fā)送方與接受方,無(wú)關(guān)模塊不寫入成對(duì)密鑰。以確保只有已設(shè)置權(quán)限的獲取成對(duì)密鑰的實(shí)體才能生成和認(rèn)證MAC。
成對(duì)密鑰存儲(chǔ)在ECU的NVM(Non-Volatile-Memory)中,成對(duì)密鑰不能通過(guò)診斷命令直接讀取,需要通過(guò)模塊指定API調(diào)用。
4 防重放計(jì)數(shù)器(Anti-Replay Counter)
與控制器的Security Access類似,MAC也會(huì)遇到非法外置設(shè)備的重放入侵,窮舉測(cè)試直到找到正確的成對(duì)密鑰,防重放場(chǎng)應(yīng)運(yùn)而生。非法設(shè)備可以通過(guò)將監(jiān)聽到的總線報(bào)文重放的方式來(lái)實(shí)現(xiàn)認(rèn)證與攻擊。為了解決重放攻擊問題,加入了Anti-Replay Counter意在解決總線報(bào)文重放攻擊。
報(bào)文的接收方需要能夠判斷出報(bào)文是否為重放攻擊,報(bào)文本身必須包含信息確保此報(bào)文僅被發(fā)送了一次,否則蓄意攻擊方可以在不理解總線內(nèi)容的情況下進(jìn)行監(jiān)聽,并在隨后實(shí)現(xiàn)重放攻擊,達(dá)成與監(jiān)聽時(shí)合法發(fā)送方相同的效果。
在認(rèn)證碼防御的方案中, 常見的防御方案有兩種:
(1)隨機(jī)數(shù):發(fā)送方與接收方會(huì)將隨機(jī)數(shù)寫入NVM(Non-Volatile-Memory)中,報(bào)文中出現(xiàn)NVM中記錄過(guò)的隨機(jī)數(shù)則說(shuō)明是重放侵入。優(yōu)點(diǎn)是邏輯簡(jiǎn)單,實(shí)現(xiàn)方便,缺點(diǎn)是需要記錄的隨機(jī)數(shù)對(duì)NVM的占用較高。
(2)流水號(hào):在發(fā)送方與接收方之間增加一個(gè)逐步遞增或遞減的標(biāo)識(shí)符,標(biāo)識(shí)符也需要通過(guò)加密的方式融合到認(rèn)證碼場(chǎng)中。發(fā)送方的標(biāo)識(shí)符如果不連續(xù)則說(shuō)明是重放侵入。優(yōu)點(diǎn):相比于隨機(jī)數(shù),流水號(hào)方式對(duì)NVM的占用較小。
MAC發(fā)送方與接受方的關(guān)系如上圖:
5 結(jié)束語(yǔ)
汽車CAN總線技術(shù)是當(dāng)代汽車行業(yè)發(fā)展的主流趨勢(shì),伴隨著車輛電器系統(tǒng)的迅速發(fā)展,各大主機(jī)廠都在考慮在其已有CAN架構(gòu)電子架構(gòu)中,實(shí)現(xiàn)了MAC總線信息認(rèn)證功能,實(shí)現(xiàn)確認(rèn)信息來(lái)源增強(qiáng)車載CAN總線的安全性的目的。本文介紹的成對(duì)密鑰,防重放計(jì)數(shù)器都是MAC功能實(shí)現(xiàn)的核心。
參考文獻(xiàn):
[1]Bosch.Road Vehicles-Controller area network(CAN)[S].ISO 1898-2,2003.
[2]ISO.Road Vehicles-Unified diagnostic services(UDS)[S].ISO 14229-1,2013.