羅 峰, 胡 強(qiáng), 劉 宇
(同濟(jì)大學(xué) 汽車學(xué)院, 上海 201804)
智能網(wǎng)聯(lián)汽車是當(dāng)前汽車技術(shù)領(lǐng)域的一個(gè)重要發(fā)展方向.隨著汽車網(wǎng)聯(lián)技術(shù)的發(fā)展,汽車上對外的接口逐漸增多,針對汽車的網(wǎng)絡(luò)攻擊成為了一個(gè)新的問題[1].當(dāng)前對于汽車網(wǎng)絡(luò)的安全通信研究中,Herrewege等[2]基于CAN+ (controller area network +),將數(shù)據(jù)場16個(gè)字節(jié)中的15個(gè)字節(jié)用于消息驗(yàn)證,通過哈希加密函數(shù)計(jì)算出數(shù)據(jù)幀的簽名校驗(yàn),實(shí)現(xiàn)通信的安全認(rèn)證,但由于只有1個(gè)字節(jié)可以用于數(shù)據(jù)傳輸,會(huì)造成總線負(fù)載率升高.Hartkopp等[3]將CAN總線數(shù)據(jù)場的4個(gè)字節(jié)用于對報(bào)文和時(shí)間戳的認(rèn)證,但是使CAN通信的有效數(shù)據(jù)降低,造成網(wǎng)絡(luò)負(fù)載率的上升.Woo等[4]對CAN總線通信進(jìn)行了無線攻擊,并提出一種安全協(xié)議對CAN總線通信進(jìn)行安全保護(hù).針對高速數(shù)據(jù)的傳輸,Woo等[5]提出了一種基于CAN-FD (controller area network with flexible data-rate)加密通信的方法,實(shí)現(xiàn)了在汽車網(wǎng)絡(luò)上進(jìn)行數(shù)據(jù)的分級加密傳輸,但缺乏相應(yīng)的時(shí)間檢測機(jī)制.國內(nèi)學(xué)者在CAN總線通信的身份認(rèn)證方面提出了一種動(dòng)態(tài)口令身份認(rèn)證方法[6],實(shí)現(xiàn)通信的完整性檢查.在入侵檢測方面,國內(nèi)的研究者提出了一種運(yùn)用信息熵的算法對通信入侵的異?,F(xiàn)象進(jìn)行檢測的方法[7],但未體現(xiàn)該方法在汽車級微控制器的計(jì)算處理能力下的性能效果.
在目前的國內(nèi)外研究中,對汽車通信網(wǎng)絡(luò)的保護(hù)主要包括對數(shù)據(jù)的加密以保護(hù)通信的機(jī)密性、對消息的校驗(yàn)以保證數(shù)據(jù)的真實(shí)性以及通信網(wǎng)絡(luò)的入侵檢測,但是缺乏在汽車級微控制器的計(jì)算處理能力下的實(shí)際性能分析和可行性驗(yàn)證.針對目前的車載網(wǎng)絡(luò)安全通信問題,通過對車載網(wǎng)絡(luò)通信的安全需求分析,以數(shù)據(jù)加密和入侵檢測為基礎(chǔ),建立一種基于CAN-FD網(wǎng)絡(luò)的汽車通信網(wǎng)絡(luò)信息安全方法,并通過硬件實(shí)例驗(yàn)證該方法的實(shí)時(shí)性和負(fù)載率是否滿足汽車網(wǎng)絡(luò)要求.
通過威脅分析可以確定網(wǎng)絡(luò)通信基本的安全需求.目前針對汽車網(wǎng)絡(luò)通信的攻擊主要有以下幾種形式[8]:
(1) 信息竊取.攻擊者通過網(wǎng)絡(luò)監(jiān)聽方式,直接獲取通信內(nèi)容,從而獲取有關(guān)的車輛信息以及進(jìn)行深入的網(wǎng)絡(luò)攻擊.應(yīng)對該攻擊的主要方式是對通信的數(shù)據(jù)內(nèi)容進(jìn)行加密,保證信息的機(jī)密性.
(2) 重放攻擊.攻擊者根據(jù)通信報(bào)文的特征,記錄網(wǎng)絡(luò)監(jiān)聽到的報(bào)文,再將記錄的報(bào)文數(shù)據(jù)進(jìn)行重發(fā).重放攻擊在攻擊者不知道報(bào)文內(nèi)容的前提下也能進(jìn)行.針對重放攻擊的主要應(yīng)對機(jī)制是在通信過程中進(jìn)行報(bào)文的時(shí)間標(biāo)志檢查,保證信息的新鮮性.
(3) 中間人攻擊.中間人攻擊主要有報(bào)文攔截和報(bào)文篡改2種形式.攻擊者將網(wǎng)絡(luò)中的通信節(jié)點(diǎn)分離,監(jiān)聽和記錄網(wǎng)絡(luò)上的通信內(nèi)容,并對通信報(bào)文進(jìn)行攔截或者篡改.對于中間人攻擊,需要對通信報(bào)文進(jìn)行完整性檢查和真實(shí)性校驗(yàn).
(4) 拒絕服務(wù)攻擊.攻擊者在網(wǎng)絡(luò)上發(fā)送大量高優(yōu)先級的報(bào)文,使網(wǎng)絡(luò)的負(fù)載率達(dá)到最高值,影響網(wǎng)絡(luò)正常通信.因此需要采取相應(yīng)的安全機(jī)制保證通信的可用性.
信息的機(jī)密性、新鮮性、完整性、真實(shí)性以及可用性是汽車網(wǎng)絡(luò)通信的最基本的安全需求.
安全通信在基于CAN-FD網(wǎng)絡(luò)傳輸?shù)幕A(chǔ)上, 加入了安全通信協(xié)議和入侵檢測安全機(jī)制.CAN-FD網(wǎng)絡(luò)具有最高10 Mbps的通信速率以及多達(dá)64字節(jié)數(shù)據(jù)場容量.CAN-FD網(wǎng)絡(luò)的報(bào)文幀結(jié)構(gòu)形式如圖1所示[9].
2.1.1安全傳輸
汽車網(wǎng)絡(luò)通信對加密算法的要求如下:
圖1CAN-FD幀結(jié)構(gòu)
Fig.1FramestructureofCAN-FD
(1) 算法應(yīng)該具備輕量級要求,在汽車ECU(electronic control unit)有限的硬件資源下,能夠在保證網(wǎng)絡(luò)通信實(shí)時(shí)性前提下正常執(zhí)行算法.
(2) 具備足夠的防破解能力.
(3) 適合車載網(wǎng)絡(luò)的數(shù)據(jù)加密,最小加密塊應(yīng)小于報(bào)文數(shù)據(jù)場的字節(jié)數(shù).
AES(advanced encryption standard)加密算法作為一種對稱加密算法,具有執(zhí)行計(jì)算時(shí)間短,兼容軟件加密、硬件加密的方式等特點(diǎn)[10].本文中安全傳輸協(xié)議采用AES-128算法對傳輸數(shù)據(jù)進(jìn)行加密和MAC(message authentication code)計(jì)算.CAN-FD總線中,數(shù)據(jù)場有64個(gè)字節(jié)(512位),將前48字節(jié)數(shù)據(jù)進(jìn)行密文傳送,后16個(gè)字節(jié)作為MAC校驗(yàn).16字節(jié)(128位)的AES-MAC理論上的暴力破解次數(shù)為2128,具有足夠的安全性.
2.1.2安全啟動(dòng)
在車輛啟動(dòng)時(shí),密鑰管理員需要對ECU進(jìn)行輪詢,確保所有子網(wǎng)內(nèi)的ECU掌握正確的預(yù)共享密鑰,圖2所示是密鑰管理員對ECU1進(jìn)行安全啟動(dòng)詢問過程.首先密鑰管理員生成隨機(jī)數(shù),將隨機(jī)數(shù)和一個(gè)計(jì)數(shù)器值以明文形式發(fā)送給ECU1,并生成MAC校驗(yàn)碼,其中計(jì)數(shù)器值用來防止重放攻擊.ECU1收到請求后驗(yàn)證MAC和計(jì)數(shù)器值,將隨機(jī)數(shù)通過預(yù)共享密鑰進(jìn)行加密和認(rèn)證,發(fā)回給密鑰管理員,密鑰管理員對ECU1的應(yīng)答進(jìn)行解密.當(dāng)接收隨機(jī)數(shù)和發(fā)送隨機(jī)數(shù)一致且MAC有效時(shí),說明ECU1能夠正確使用預(yù)共享密鑰,安全啟動(dòng)完成.
圖2 安全啟動(dòng)流程
2.1.3時(shí)間同步
高精度的時(shí)間戳是防止重放攻擊的一種手段.時(shí)鐘同步是依靠某一個(gè)ECU作為“時(shí)鐘基準(zhǔn)”,其他ECU通過接收該ECU的時(shí)間戳信息,更新本地ECU時(shí)間戳參數(shù).由于在網(wǎng)絡(luò)上傳輸數(shù)據(jù)、接收和發(fā)送數(shù)據(jù)、加密解密以及MAC校驗(yàn)都會(huì)產(chǎn)生延時(shí),因此需要對傳輸產(chǎn)生的延時(shí)進(jìn)行校正.時(shí)間同步協(xié)議參考IEEE 1588協(xié)議[11],通過計(jì)算時(shí)間延時(shí)和偏移,得出報(bào)文發(fā)送時(shí)間和接收時(shí)間的偏差.需要同步時(shí)間的ECU根據(jù)計(jì)算得出的時(shí)間偏差,修正接收的時(shí)間戳參數(shù).在同步的過程中的通信報(bào)文需要加入隨機(jī)數(shù)校驗(yàn)和MAC校驗(yàn)機(jī)制,確保時(shí)間同步的安全性.圖3中延時(shí)Tdelay和偏移Toffset的計(jì)算公式如下:
圖3 IEEE 1588 時(shí)鐘同步機(jī)制
(1)
(2)
式中:T1為主節(jié)點(diǎn)發(fā)送時(shí)間;T2為從節(jié)點(diǎn)接收時(shí)間;T3為從節(jié)點(diǎn)發(fā)送時(shí)間;T4為主節(jié)點(diǎn)接收時(shí)間.
2.1.4密鑰分配
安全通信中用于密鑰分配、時(shí)鐘同步和安全啟動(dòng)的密鑰為預(yù)共享密鑰,安全傳輸中使用的密鑰為會(huì)話密鑰.假設(shè)會(huì)話密鑰在車輛每次啟動(dòng)時(shí)會(huì)進(jìn)行一次更新.一個(gè)ECU節(jié)點(diǎn)可以具備多組會(huì)話密鑰,用于不同類型的安全通信.圖4中,每個(gè)ECU的預(yù)共享密鑰依次為K1,K2,…,K5.其中ECU1、ECU3、ECU4具有會(huì)話密鑰1,ECU2和ECU5具有會(huì)話密鑰2,從而實(shí)現(xiàn)同一子網(wǎng)內(nèi)通信內(nèi)容的邏輯隔離,保護(hù)會(huì)話內(nèi)容的隱私性.在實(shí)際使用中,每個(gè)ECU的安全模塊中可以儲(chǔ)存多個(gè)密鑰,用于不同場合下的加密認(rèn)證.
圖4 會(huì)話密鑰分組
密鑰分配有以下2個(gè)場景:①ECU通過預(yù)共享密鑰向密鑰管理員發(fā)送更新請求;②密鑰管理員通過預(yù)共享密鑰向ECU發(fā)送密鑰更新請求.
密鑰分配會(huì)話采用隨機(jī)數(shù)驗(yàn)證機(jī)制,其中隨機(jī)數(shù)由密鑰管理員和會(huì)話ECU生成.同時(shí)在通信過程中加入時(shí)間戳和MAC校驗(yàn)以及通信加密機(jī)制,保證密鑰更新安全進(jìn)行.
安全通信過程中引入入侵檢測機(jī)制.在通信過程中,ECU需要實(shí)時(shí)檢測通信的安全狀態(tài).安全通信的狀態(tài)碼定義如表1 所示.
表1 安全通信狀態(tài)碼定義
安全通信系統(tǒng)通過CANoe軟件進(jìn)行仿真驗(yàn)證,搭建網(wǎng)絡(luò)仿真模型.設(shè)置CAN-FD通信速率為2 Mbps,時(shí)間戳允許誤差為100 ms.仿真過程為密鑰管理員和5個(gè)ECU節(jié)點(diǎn)之間實(shí)現(xiàn)安全啟動(dòng)、時(shí)間同步、密鑰分配以及安全傳輸協(xié)議.利用CANoe 設(shè)計(jì)仿真控制面板,如圖5所示.仿真程序中安全協(xié)議執(zhí)行的流程如圖6所示.
圖5 安全協(xié)議仿真面板
圖6 安全通信流程
仿真實(shí)驗(yàn)中CAN-FD的通信速率為2 Mbps,連續(xù)實(shí)現(xiàn)安全啟動(dòng)、時(shí)間同步、密鑰分配協(xié)議用時(shí)約為20.8 ms.如圖7所示,在僅執(zhí)行安全協(xié)議過程中, CAN Statistics數(shù)據(jù)欄的統(tǒng)計(jì)結(jié)果顯示網(wǎng)絡(luò)仿真通信最大負(fù)載率為3.10%,平均負(fù)載率為1.41%.因此采取該安全通信機(jī)制不會(huì)對總線負(fù)載率造成太大壓力.在安全會(huì)話過程中,CAN-FD報(bào)文的數(shù)據(jù)場中前48個(gè)字節(jié)用于數(shù)據(jù)傳輸,后16個(gè)字節(jié)用于數(shù)據(jù)校驗(yàn),數(shù)據(jù)場的傳輸利用率為75%,通信效率較高.
安全傳輸?shù)臄?shù)據(jù)由AES-128算法進(jìn)行加密和解密.表2中列出了在安全傳輸過程中,ECU1和ECU3之間的通信數(shù)據(jù).其中ECU1在CAN-FD報(bào)文數(shù)據(jù)場前48個(gè)字節(jié)中傳輸數(shù)據(jù),后16個(gè)字節(jié)發(fā)送報(bào)文仲裁場、時(shí)間戳等校驗(yàn)信息,經(jīng)加密密鑰和校驗(yàn)密鑰分別生成密文和MAC,發(fā)送給ECU3.ECU3校驗(yàn)MAC后解密報(bào)文數(shù)據(jù).可以看出ECU3解密的數(shù)據(jù)和ECU1發(fā)送數(shù)據(jù)完全吻合.
圖7 安全協(xié)議執(zhí)行時(shí)的網(wǎng)絡(luò)負(fù)載率界面
節(jié)點(diǎn)傳輸數(shù)據(jù)ECU1發(fā)送原始信息01 70D6FE505C943C264302CC15D933930000000000000000000000000000000000000000000000000000000000000000DC755A787AD073806D0D497F841E9401ECU1發(fā)送密文7B68D9256E7BAC92F1263A35E1D8052B0BD83B5226BAE3FA979BA8B38EA034B8EC7B0CA87C8C39928F230B690C05F8CC28F5302DAE5B68C42100637E085058D6ECU3解密明文0170D6FE505C943C264302CC15D933930000000000000000000000000000000000000000000000000000000000000000DC755A787AD073806D0D497F841E9401
安全通信在微控制器MPC5748G上進(jìn)行驗(yàn)證,如圖8所示.MPC5748G具有硬件安全模塊,能夠從硬件層面上實(shí)現(xiàn)AES-128算法和MAC認(rèn)證,并具有隨機(jī)數(shù)生成和密鑰安全存儲(chǔ)等功能[12].
圖8 安全通信硬件節(jié)點(diǎn)
加密和解密的計(jì)算時(shí)間測試結(jié)果如圖9所示.當(dāng)微控制器的時(shí)鐘頻率為160 MHz,使用AES-128算法連續(xù)加密或解密1 600字節(jié)所消耗的時(shí)間約為71.6 μs,平均每幀報(bào)文中由于加密和解密造成的額外延時(shí)為5.73 μs.該延時(shí)遠(yuǎn)小于CAN-FD報(bào)文的傳輸周期時(shí)間.因此,引入該安全通信機(jī)制并不會(huì)影響網(wǎng)絡(luò)通信的實(shí)時(shí)性.
圖9 加密、解密計(jì)算性能
使用Dolev-Yao模型進(jìn)行安全通信攻擊測試[13].在圖4的CAN-FD網(wǎng)絡(luò)安全通信基礎(chǔ)上加入一個(gè)攻擊者節(jié)點(diǎn).攻擊者可以監(jiān)聽網(wǎng)絡(luò)信息,改變網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu),發(fā)起重放報(bào)文、篡改報(bào)文和攔截報(bào)文等攻擊.
基本測試場景中使用CANoe作為網(wǎng)絡(luò)仿真工具,建立的CAN-FD總線的通信速率為500 kbps,并使用外接的PCAN工具仿真和記錄工具進(jìn)行拒絕服務(wù)攻擊.測試用例包括密鑰破解、重放攻擊、中間人攻擊和拒絕服務(wù)攻擊.
(1) 密鑰破解.設(shè)置攻擊者節(jié)點(diǎn)為監(jiān)聽模式,攻擊者監(jiān)聽總線,并對監(jiān)聽的報(bào)文信息進(jìn)行記錄.通過主節(jié)點(diǎn)的請求報(bào)文和從節(jié)點(diǎn)的應(yīng)答報(bào)文推測密鑰,然后使用虛假ECU替換原從節(jié)點(diǎn).由于AES-128算法只能通過暴力破解,可以認(rèn)為攻擊者無法找出正確的密鑰,網(wǎng)絡(luò)監(jiān)測狀態(tài)為MAC認(rèn)證錯(cuò)誤.
(2) 重放攻擊.設(shè)置攻擊者節(jié)點(diǎn)為發(fā)送模式,在報(bào)文監(jiān)聽的基礎(chǔ)上,攻擊者根據(jù)標(biāo)識(shí)位等特征記錄網(wǎng)絡(luò)上報(bào)文信息,然后向網(wǎng)絡(luò)上重新發(fā)送該報(bào)文.由于報(bào)文中時(shí)間戳超過允許誤差值,網(wǎng)絡(luò)監(jiān)測狀態(tài)為時(shí)間戳錯(cuò)誤.
(3) 中間人攻擊.攻擊者將原網(wǎng)絡(luò)分割開來,進(jìn)行攔截、篡改報(bào)文攻擊.被攔截攻擊后,網(wǎng)絡(luò)監(jiān)測狀態(tài)為等待超時(shí).篡改報(bào)文攻擊包括篡改MAC值、篡改報(bào)文標(biāo)識(shí)符和直接篡改數(shù)據(jù)3種形式.由于安全通信系統(tǒng)會(huì)計(jì)算每幀報(bào)文的MAC值,被篡改攻擊后,網(wǎng)絡(luò)監(jiān)測狀態(tài)為MAC認(rèn)證錯(cuò)誤.
(4) 拒絕服務(wù)攻擊.通過CAN卡從外部接入仿真的網(wǎng)絡(luò)環(huán)境.設(shè)置PCAN工具發(fā)送報(bào)文標(biāo)識(shí)符為0x01(高優(yōu)先級)、數(shù)據(jù)場64個(gè)字節(jié)均為零的報(bào)文,間隔為1 ms,如圖10所示.網(wǎng)絡(luò)負(fù)載率在拒絕服務(wù)攻擊后迅速達(dá)到100%.此時(shí)正常的通信報(bào)文無法成功發(fā)送,網(wǎng)絡(luò)監(jiān)測狀態(tài)為網(wǎng)絡(luò)高負(fù)載.
圖10 拒絕服務(wù)攻擊的測試環(huán)境
綜上,安全通信系統(tǒng)中網(wǎng)絡(luò)遭受到攻擊及入侵檢測狀態(tài)判斷指標(biāo)如表3所示.
表3 網(wǎng)絡(luò)入侵判斷指標(biāo)
以數(shù)據(jù)加密和消息認(rèn)證為基礎(chǔ),結(jié)合隨機(jī)數(shù)和時(shí)間戳機(jī)制,建立了一種基于CAN-FD網(wǎng)絡(luò)的汽車通信網(wǎng)絡(luò)信息安全方法.研究提出了包括安全傳輸、安全啟動(dòng)、時(shí)間同步與密鑰分配協(xié)議的汽車網(wǎng)絡(luò)安全通信流程,并建立了車輛網(wǎng)絡(luò)仿真模型,驗(yàn)證了安全協(xié)議的通信機(jī)密性、新鮮性、完整性、真實(shí)性以及可用性.針對汽車通信網(wǎng)絡(luò)潛在的攻擊方式,基于Dolev-Yao攻擊模型和拒絕服務(wù)攻擊場景,對安全通信模型進(jìn)行了入侵測試.測試結(jié)果驗(yàn)證了該安全通信方法的安全性和可用性.
由于測試用例的限制,提出的CAN-FD網(wǎng)絡(luò)安全通信方法在實(shí)際運(yùn)行環(huán)境中可能會(huì)遇到更復(fù)雜的網(wǎng)絡(luò)攻擊場景.后續(xù)可以結(jié)合真實(shí)的車輛網(wǎng)絡(luò)環(huán)境進(jìn)行安全通信的性能分析.