秦武韜,王鵬,李玉峰,2
(1.網(wǎng)絡(luò)通信與安全紫金山實(shí)驗(yàn)室,江蘇 南京 211111;2.上海大學(xué)計(jì)算機(jī)工程與科學(xué)學(xué)院,上海 200444)
隨著新一輪科技革命的蓬勃發(fā)展,網(wǎng)絡(luò)通信技術(shù)、深度學(xué)習(xí)技術(shù)、計(jì)算機(jī)技術(shù)等不斷進(jìn)步,并與傳統(tǒng)汽車技術(shù)相結(jié)合,使智能網(wǎng)聯(lián)汽車快速發(fā)展,大量網(wǎng)聯(lián)汽車逐漸步入人們的日常生活中[1-2]。智能網(wǎng)聯(lián)汽車在帶來巨大便利的同時,導(dǎo)致針對汽車的各種攻擊入口被打開,用戶、車輛、環(huán)境等海量隱私或敏感信息存在被非法竊取的巨大風(fēng)險(xiǎn),不僅帶來了巨大的網(wǎng)絡(luò)安全問題,也使傳統(tǒng)的功能安全問題與網(wǎng)絡(luò)安全問題相互交織,引發(fā)復(fù)雜的廣義功能安全問題[3-5]。
車內(nèi)通信安全是汽車廣義安全的重要組成部分,一旦通信安全受到威脅,輕則導(dǎo)致隱私泄露、財(cái)產(chǎn)損失,重則導(dǎo)致汽車故障、車輛惡意被控,引發(fā)行車安全及其他惡性事件[6]。在車內(nèi)通信網(wǎng)絡(luò)中,控制器局域網(wǎng)絡(luò)(CAN)總線憑借簡單、輕量化、可靠性好、布線靈活、成本低等優(yōu)勢,一直是車內(nèi)通信網(wǎng)絡(luò)的主力軍,連接著動力域、車身域等車內(nèi)各個域(如圖1 所示),承擔(dān)著絕大多數(shù)的通信任務(wù),特別是包含位置、速度、轉(zhuǎn)向、發(fā)動機(jī)轉(zhuǎn)速等有關(guān)行車安全的信息[7]。
圖1 車內(nèi)CAN 架構(gòu)
然而,基于CAN 總線的通信是一種廣播形式的網(wǎng)絡(luò)通信,出于輕量化和快速響應(yīng)的考慮,CAN總線在設(shè)計(jì)階段沒有應(yīng)用加密技術(shù),因此通過一些手段可以輕易地獲取總線上傳輸?shù)恼鎸?shí)信息,不僅導(dǎo)致車內(nèi)各類數(shù)據(jù)極易泄露,而且攻擊者可以利用這些信息對網(wǎng)絡(luò)上的其他單元進(jìn)行攻擊,嚴(yán)重危害車輛安全[8]。因此,在智能網(wǎng)聯(lián)化的今天,必須對CAN 傳輸?shù)臄?shù)據(jù)進(jìn)行加密處理。
智能網(wǎng)聯(lián)汽車的信息傳輸和車輛的安全控制要求車內(nèi)數(shù)據(jù)傳輸必須具有低時延的特點(diǎn),而CAN總線本身的數(shù)據(jù)傳輸能力相對較弱,且具有固定的數(shù)據(jù)格式,每個標(biāo)準(zhǔn)幀所能傳輸?shù)臄?shù)據(jù)固定為8 字節(jié)(64 位),這就要求在對CAN 數(shù)據(jù)進(jìn)行加密時需采用快速、輕量化的分組加密方法,加密前后數(shù)據(jù)長度不變,不增加CAN 總線的傳輸負(fù)擔(dān),不改變原有數(shù)據(jù)的傳輸節(jié)奏和格式。
此外,CAN 總線的廣播形式使一個車載單元(OBU,on board unit)被攻破俘獲,則所有經(jīng)CAN總線傳輸?shù)臄?shù)據(jù)均會泄露。如果簡單采用同樣的分組對稱密碼進(jìn)行加密,將使所有經(jīng)CAN 總線傳輸?shù)臄?shù)據(jù)面臨“全軍覆沒”的巨大風(fēng)險(xiǎn)。如果各OBU 兩兩之間分配密鑰,盡管可以確保數(shù)據(jù)傳輸?shù)谋C苄?,但會帶來大量的密鑰,如果同一數(shù)據(jù)需要發(fā)送至n個OBU,則需要重復(fù)加密、傳輸n次,帶來了極大的計(jì)算量和沉重的總線傳輸負(fù)擔(dān),這在當(dāng)前CAN 總線傳輸負(fù)載率已經(jīng)較高的情況下并不現(xiàn)實(shí),將顯著增加傳輸時延,危害行車安全。
因此,需要設(shè)計(jì)一種輕量化、低時延的加密策略,在不顯著增加計(jì)算量、數(shù)據(jù)傳輸量的情況下確保CAN 總線傳輸?shù)拿芪膬H能被數(shù)據(jù)發(fā)送的目標(biāo)單元解密,即同時滿足以下3 個特點(diǎn)。1) 輕量化、低時延,確保高效加解密;2) 報(bào)文數(shù)據(jù)64 bit 分組加密,不改變原有傳輸節(jié)奏和格式;3) 針對性地加解密,非目標(biāo)數(shù)據(jù)用戶無法得到明文信息。
在現(xiàn)有的CAN 數(shù)據(jù)加密方法中,1977 年由美國政府頒布的數(shù)據(jù)加密標(biāo)準(zhǔn)(DES,data encryption standard)具有典型代表性[9],DES 為64 bit 分組對稱加密,分組位數(shù)與CAN 標(biāo)準(zhǔn)幀中的數(shù)據(jù)長度(如圖2 所示)一致,應(yīng)用簡單方便、適用性強(qiáng),但隨著現(xiàn)代計(jì)算能力的提升存在著暴力破解的風(fēng)險(xiǎn);而基于DES 的改進(jìn)算法3DES 通過多次加解密運(yùn)算提升了安全性[10],但加密的計(jì)算量大幅增加,加密時間是DES 算法的3 倍多。因此,美國政府頒布了高級加密標(biāo)準(zhǔn)(AES,advanced encryption standard)用于取代DES[11-12],AES 算法由于其出色的安全性和較小的計(jì)算量,已經(jīng)成為主流的對稱加密算法,但其要求明文長度至少達(dá)到128 bit,超過了CAN 數(shù)據(jù)幀的64 bit,無法直接應(yīng)用。一種典型解決方法是利用64 bit 空白報(bào)文補(bǔ)位至128 bit,再利用AES進(jìn)行加密處理,生成128 bit 的密文后連續(xù)發(fā)送兩幀,接收方則連續(xù)接收兩幀后再進(jìn)行解密,但該方法明顯存在著加解密計(jì)算量和總線數(shù)據(jù)傳輸量翻倍的問題[13];另一種方法則是通過累積兩幀數(shù)據(jù)幀補(bǔ)位至128 bit,再利用AES 進(jìn)行加解密,但該方法的奇數(shù)拍報(bào)文必須等待偶數(shù)拍報(bào)文配對后才能發(fā)送,增加了奇數(shù)拍報(bào)文的等待時間,帶來了時延的不確定性。
圖2 標(biāo)準(zhǔn)幀數(shù)據(jù)格式
此外,現(xiàn)有的CAN 數(shù)據(jù)加密算法直接對明文數(shù)據(jù)進(jìn)行處理,在明文出現(xiàn)之前不進(jìn)行預(yù)加解密計(jì)算,所有計(jì)算累積到加密或解密請求出現(xiàn)后,未能充分利用離線段的計(jì)算能力,增大了在線段的運(yùn)算負(fù)擔(dān)和加解密時延。同時,現(xiàn)有的CAN 總線數(shù)據(jù)加密方法仍采用簡單的對稱密碼設(shè)計(jì)思路,各OBU通過預(yù)設(shè)相同的密碼來實(shí)現(xiàn)數(shù)據(jù)的加解密,增加了數(shù)據(jù)泄露的風(fēng)險(xiǎn),無法滿足CAN 總線傳輸中針對性加解密的需求。
因此,本文面向CAN 報(bào)文加解密快速響應(yīng)需求,利用CAN 總線周期性傳輸特點(diǎn),提出一種基于在線-離線處理的組合加密方法,如圖3 所示。首先,利用OBU 的身份屬性制定訪問策略對分組密碼進(jìn)行加密、分發(fā),確保僅有目標(biāo)OBU 可以完成密碼解密,獲取分組密碼。然后,對CAN 報(bào)文加解密方法進(jìn)行在線離線處理改造,其中,在離線階段利用AES 算法動態(tài)生成8 字節(jié)會話密鑰,在線段則利用會話密鑰通過異或運(yùn)算迅速響應(yīng)數(shù)據(jù)的加解密需求,實(shí)現(xiàn)高速、輕量化、64 位分組和針對性加解密,同時滿足智能網(wǎng)聯(lián)汽車CAN 報(bào)文加解密的3 個需求。
圖3 與周期耦合的在線離線加解密模式
AES 加解密流程如圖4 所示。從圖4 中可以看出,其核心運(yùn)算主要包括輪密鑰加、字節(jié)代換(逆字節(jié)代換)、密鑰擴(kuò)展、行移位(逆行移位)、列混合(逆列混合)5 種,具體方法介紹如下。
圖4 AES 加解密流程
1) 輪密鑰加。如圖5 所示,將數(shù)據(jù)逐個與本輪相應(yīng)密鑰進(jìn)行異或運(yùn)算。其中,m為待運(yùn)算數(shù)據(jù),k為本輪密鑰,c為異或運(yùn)算結(jié)果。
圖5 輪密鑰加
2) 字節(jié)代換(逆字節(jié)代換)。把輪密鑰加后產(chǎn)生的每一個字節(jié)用十六進(jìn)制表示,然后以十六進(jìn)制的第一個數(shù)字為行,第二個數(shù)字為列,在S 盒[14]表中查找對應(yīng)的數(shù)字代替原先的數(shù)字,完成字節(jié)代換。逆字節(jié)代換則從逆S 盒中查找元素替代。
3) 密鑰擴(kuò)展?;?6 字節(jié)原始密鑰,按順序以每4 字節(jié)為一組,按位進(jìn)行依次連接,獲得第一輪密鑰W[0]、W[1]、W[2]、W[3]。對于后續(xù)輪密鑰,采用如圖6 所示的方法進(jìn)行計(jì)算,即
圖6 密鑰擴(kuò)展
其中,T (·)為包括字循環(huán)移位、字節(jié)替換和輪常量異或運(yùn)算的非線性函數(shù)[11]。
4) 行移位(逆行移位)。把字節(jié)代換得到的矩陣逐行進(jìn)行左環(huán)移,逆行移位則與行移位相反。
5) 列混合(逆列混合)。利用給定矩陣對上一步獲得的矩陣進(jìn)行變換,其中,列混合為
針對車內(nèi)CAN 網(wǎng)絡(luò)數(shù)據(jù)加密64 位分組、輕量化、低時延、針對性解密的需求,本文提出一種與CAN 總線通信周期耦合的組合加密方案,具體流程如圖7 所示。
圖7 在線離線處理的組合加密流程
組合加密方案由兩部分組成,一部分為基于屬性的分組密碼加密方法,確保用于CAN 報(bào)文加密的分組密碼僅由目標(biāo)數(shù)據(jù)用戶獲得,防止加密信息擴(kuò)散,避免某一單元被攻破后全車信息泄露。
另一部分為基于分組加密方法的CAN 報(bào)文數(shù)據(jù)加密,該方法利用AES 算法動態(tài)生成8 字節(jié)會話密鑰,實(shí)現(xiàn)分組對稱加密,密文與明文長度不變,實(shí)現(xiàn)了數(shù)據(jù)傳輸節(jié)奏和格式的穩(wěn)定。
此外,在加解密過程中,使用了在線離線處理技術(shù),將計(jì)算量大、不依賴實(shí)時報(bào)文信息的計(jì)算放入通信間歇的離線段進(jìn)行,可大幅度降低計(jì)算時延。本文方案具體內(nèi)容介紹如下。
該方法首先根據(jù)確定的報(bào)文收發(fā)OBU 確定收發(fā)組,在本收發(fā)組第一幀CAN 報(bào)文發(fā)送前,利用基于身份屬性加密方案對分組密碼mkey進(jìn)行加密,確保僅有目標(biāo)數(shù)據(jù)用戶可完成解密獲得分組密碼mkey,確保后續(xù)報(bào)文的安全。具體步驟介紹如下。
1) Ex.SysAtt():收集汽車各OBU 的屬性,包括所屬域、單元類型、種類、編號等,如自動駕駛域、傳感器、相機(jī)、1,確定系統(tǒng)屬性集U= {u1,u2,…,uu}。
2) Ex.Setup(τ,U):進(jìn)行設(shè)置,輸入安全選取的隱含安全參數(shù)τ與各OBU 單元屬性集合U,計(jì)算公鑰PK 和主私鑰MSK
其中,g為G1的生成元,G1為雙線性映射概念下的循環(huán)群,其元素包括γ1,γ2,…,γ u,相關(guān)概念可參考文獻(xiàn)[15],隨機(jī)參數(shù)a,b∈ Zp。
3) Ex.KeyGen(MSK,PK,S):根據(jù)各OBU 屬性,利用主私鑰MSK 和公鑰PK 生成相應(yīng)私鑰,預(yù)設(shè)至各組件中,對于第k個組件,其私鑰為
其中,1,2,…,s表示OBU 屬性集S中的屬性標(biāo)號,L表示私鑰的組成參數(shù),用于后續(xù)解密,?(i)表示第k個OBU 的屬性到系統(tǒng)屬性集U中元素的映射,隨機(jī)參數(shù)t∈Zp。
以上三步均在系統(tǒng)聯(lián)網(wǎng)實(shí)驗(yàn)前完成,確保各私鑰安全裝訂。
4) Offline.EncryptKey(PK):在離線段,數(shù)據(jù)發(fā)送OBU 選擇隨機(jī)數(shù)r∈Zp,利用公鑰PK 計(jì)算中間密文ICkey。
5) Online.EncryptKey(PK,ICkey,mkey,(M,ρ),v):此時已經(jīng)確定密鑰明文mkey和訪問控制策略(M,ρ),利用中間結(jié)果完成加密,輸出密文Ckey。
針對傳統(tǒng)分組對稱加密方法加密安全性不足、最小加密長度與CAN 數(shù)據(jù)長度不匹配、缺乏在線離線處理導(dǎo)致在線段計(jì)算負(fù)擔(dān)過重等問題,本節(jié)給出一種基于在線離線AES(OOAES,online-offline AES)的CAN 報(bào)文分組加密方法,具體流程如圖8所示。該方法在離線階段利用128 位AES 分組密碼對由計(jì)數(shù)器和上一幀明文信息構(gòu)成的配對信息進(jìn)行預(yù)加密,通過截取8 字節(jié)密文生成動態(tài)會話密鑰,等待加密請求;在線段則利用動態(tài)會話密鑰通過異或運(yùn)算對8 字節(jié)的CAN 數(shù)據(jù)進(jìn)行加密,生成8 字節(jié)密文通過CAN 網(wǎng)絡(luò)進(jìn)行傳輸。
圖8 加解密處理流程
圖8 中,mkey是長度為16 字節(jié)的AES 分組密碼,由數(shù)據(jù)加密方自定義;配對信息是長度為16 字節(jié)的明文信息,由8 字節(jié)的循環(huán)計(jì)數(shù)器和上一數(shù)據(jù)幀CAN 數(shù)據(jù)的明文消息構(gòu)成,對于初始幀則采用事先約定的消息,如{00 00 00 00 00 00 00 00}。
利用AES對16字節(jié)配對信息進(jìn)行加密處理后,獲得16 字節(jié)長度的AES 密文。在CAN 標(biāo)準(zhǔn)數(shù)據(jù)幀中,數(shù)據(jù)長度為8 字節(jié),因此可從16 字節(jié)的密文中截取8 字節(jié)構(gòu)成動態(tài)會話密鑰G,利用8 字節(jié)的會話密鑰G與CAN 明文進(jìn)行異或加密運(yùn)算獲得8 字節(jié)的CAN 密文進(jìn)行傳輸。解密流程與加密流程相似,區(qū)別在于解密流程利用動態(tài)會話密鑰與經(jīng)CAN 總線傳輸?shù)拿芪倪M(jìn)行異或解密運(yùn)算,獲得明文完成解密。
在CAN 報(bào)文的加解密過程中,充分設(shè)計(jì)了在線離線的處理方法。對于加密過程,系統(tǒng)啟動后,首先在離線階段完成預(yù)加密計(jì)算,獲得加密會話密鑰G;當(dāng)CAN 明文生成并觸發(fā)加密請求時,進(jìn)入在線段,此時利用G對明文進(jìn)行快速加密,生成密文數(shù)據(jù)并發(fā)送;加密過程隨后進(jìn)入離線階段,更新配對信息并進(jìn)行預(yù)加密,生成新的會話密鑰等待CAN 報(bào)文數(shù)據(jù)。解密過程與加密過程類似,系統(tǒng)啟動后,首先在離線階段完成預(yù)解密計(jì)算,獲得解密會話密鑰G;當(dāng)接收到CAN密文數(shù)據(jù)時,進(jìn)入在線段,運(yùn)行異或運(yùn)算恢復(fù)明文數(shù)據(jù);完成解密后進(jìn)入離線階段,更新配對信息進(jìn)行預(yù)解密,生成新的解密會話密鑰等待CAN密文數(shù)據(jù)。
通過在線-離線加解密處理方法的運(yùn)用,顯著減少了在線段的運(yùn)算量,節(jié)約了運(yùn)算時間,將巨大的預(yù)加密計(jì)算工作前置到了計(jì)算資源相對空閑的離線階段,確保了在線段能快速響應(yīng)加密和解密請求,大幅降低了加解密帶來的時延。
為了驗(yàn)證加解密的正確性,生成1 000 幀描述汽車速度變化的CAN 報(bào)文,對比數(shù)據(jù)非加密傳輸和使用本文提出的CAN 報(bào)文加密方法進(jìn)行加密傳輸?shù)慕Y(jié)果,分別如圖9 和圖10 所示。
圖9 非加密網(wǎng)絡(luò)數(shù)據(jù)
圖10 加密網(wǎng)絡(luò)數(shù)據(jù)
從圖9 和圖10 中可以看出,對于未采用加密處理的CAN 報(bào)文傳輸方法,可以輕易從網(wǎng)絡(luò)端竊取汽車真實(shí)的速度數(shù)據(jù),不具備傳輸?shù)陌踩?;而采用加密處理后的?shù)據(jù)呈現(xiàn)出類似于高斯噪聲的不規(guī)則變化,趨勢、結(jié)果與真實(shí)數(shù)據(jù)明顯不同。接收端獲取的結(jié)果與發(fā)送端一致,證明本文所提加密方法可以有效準(zhǔn)確地對CAN 數(shù)據(jù)進(jìn)行加解密,確保了CAN 網(wǎng)絡(luò)傳輸數(shù)據(jù)的安全性。
雪崩效應(yīng)是指明文或密鑰發(fā)生微小變化時,密文會出現(xiàn)不可區(qū)分的改變,理想情況是每個二進(jìn)制位有50%的概率發(fā)生翻轉(zhuǎn)。本節(jié)將分別進(jìn)行密鑰雪崩效應(yīng)測試和密文雪崩效應(yīng)測試,其中,密鑰雪崩效應(yīng)測試中將128 位密鑰的最后一位翻轉(zhuǎn),觀測密鑰翻轉(zhuǎn)前后1 000 幀CAN 密文二進(jìn)制位的翻轉(zhuǎn)概率;密文雪崩效應(yīng)測試中將CAN 報(bào)文中速度數(shù)據(jù)的最后一位翻轉(zhuǎn),觀測翻轉(zhuǎn)前后1 000 幀密文的翻轉(zhuǎn)概率。圖11 給出了1 000 幀報(bào)文的雪崩率曲線,圖12 給出了密鑰雪崩率和密文雪崩率統(tǒng)計(jì),表1 給出了雪崩效應(yīng)特性的測試統(tǒng)計(jì)結(jié)果。圖12 中,橫坐標(biāo)表示組別,組1為密鑰調(diào)整帶來的雪崩率,稱為“密鑰-雪崩率”,組2 為明文調(diào)整帶來的雪崩率,稱為“明文-雪崩率”。從圖12 中可以看出,本文方法具有優(yōu)異的雪崩特性效應(yīng),密文二進(jìn)制翻轉(zhuǎn)概率約為50%,達(dá)到了某一位微小的輸入變化使輸出發(fā)生不可區(qū)分改變的效果。
圖11 1 000 幀報(bào)文雪崩率
圖12 密鑰雪崩率和密文雪崩率統(tǒng)計(jì)
表1 雪崩效應(yīng)特性測試結(jié)果
基于3.1 節(jié)生成的1 000 幀CAN 報(bào)文數(shù)據(jù),分別利用DES、3DES、AES 和OOAES 在一臺搭載i5-9400 @2.9 GHz 處理器的windows 10 機(jī)器上進(jìn)行 500 次蒙特卡羅仿真實(shí)驗(yàn),編程語言為C++11,統(tǒng)計(jì)加解密總耗時和明文出現(xiàn)后的在線段耗時。其中,加密時長定義為加密運(yùn)算階段耗時,即各個加密運(yùn)算步驟耗時之和;解密時長定義為解密運(yùn)算階段耗時,即各個解密運(yùn)算步驟耗時之和;在線運(yùn)行時長等于加密在線運(yùn)行時長和解密在線運(yùn)行時長之和,表示明文出現(xiàn)后轉(zhuǎn)換為密文的時間和密文出現(xiàn)后轉(zhuǎn)換為明文的時間。在實(shí)驗(yàn)中,利用C++chrono 庫中的steady_clock 函數(shù)統(tǒng)計(jì)1 000 次加解密的耗時之和,以減少單次統(tǒng)計(jì)的不必要誤差。
在仿真結(jié)果中,圖13 和圖14 分別給出了總耗時和在線段耗時對比,表2 給出了各階段耗時的平均統(tǒng)計(jì)結(jié)果。從圖13、圖14 和表2 可以看出,本文提出的OOAES 具有良好的全程計(jì)算效率和極其優(yōu)異的在線段計(jì)算效率,主要體現(xiàn)在以下兩點(diǎn)。
表2 1 000 幀CAN 報(bào)文加解密各階段耗時的平均統(tǒng)計(jì)結(jié)果
圖13 1 000 幀報(bào)文加解密總耗時對比
圖14 1 000 幀報(bào)文加解密在線段耗時對比
1) OOAES 的加解密總耗時遠(yuǎn)小于常規(guī)AES 算法。OOAES 的加密部分與常規(guī)AES 基本一致,該部分單幀耗時大致相同,約為14 μs,但AES 的解密部分運(yùn)算量很大,單幀耗時達(dá)到65 μs。OOAES繞過AES 的解密模塊,仍然利用加密方法生成解密所采用的動態(tài)會話密鑰,大大降低了解密計(jì)算量,單幀解密耗時僅14 μs,獲得了更優(yōu)異的加解密總耗時成績。
2) OOAES 的在線段耗時呈指數(shù)級降低。常規(guī)的DES、3DES、AES 等方法直接對明文(密文)進(jìn)行加密(解密)處理,在未獲取明文(密文)前的離線段缺乏預(yù)加密工作,導(dǎo)致所有加解密計(jì)算累積到加解密需求出現(xiàn)后,使在線段的計(jì)算負(fù)擔(dān)巨大,增加了CAN 報(bào)文數(shù)據(jù)產(chǎn)生到解密段的時延。從測試結(jié)果看,DES、3DES 和AES 的在線段單幀計(jì)算耗時分別達(dá)到了8.3 μs、24.3 μs 和79.4 μs,而采用了在線-離線處理技術(shù)的OOAES方法將大量計(jì)算前移至離線段,在線段僅利用動態(tài)會話密鑰進(jìn)行異或加解密運(yùn)算,計(jì)算量指數(shù)級減小,每千幀在線段耗時僅為85 μs,單幀耗時為0.085 μs,領(lǐng)先DES 和AES 2~3 個數(shù)量級,單幀CAN 報(bào)文加密接近零時延,可以做到“即請求,即加(解)密”。
為了進(jìn)一步驗(yàn)證本文提出的方法在車載系統(tǒng)的可行性和有效性,利用一款搭載Arm Cortex-A53 max @1.2 GHz的車載旭日X3芯片進(jìn)行不同消息周期CAN 報(bào)文的加解密分析。
基于上述軟硬件條件,進(jìn)行1 000 組不同CAN消息周期的仿真實(shí)驗(yàn),每組仿真所采用的數(shù)據(jù)均為1 000 幀8 字節(jié)CAN 報(bào)文信息,消息周期根據(jù)文獻(xiàn)[17]給出的統(tǒng)計(jì)規(guī)律隨機(jī)采樣,確保小于10 ms周期的實(shí)驗(yàn)組數(shù)占比約為41%,10~20 ms 周期的實(shí)驗(yàn)組數(shù)占比約為31%。單幀CAN 報(bào)文加解密平均計(jì)算耗時分布如表3 所示。
表3 單幀CAN 報(bào)文加解密平均計(jì)算耗時分布
圖15 給出了單幀加解密平均耗時分布。從圖15可以看出,相較于運(yùn)算能力更強(qiáng)的Intel i5 芯片,基于車載旭日X3 芯片的加解密計(jì)算耗時有所增加,但單幀數(shù)據(jù)的加解密平均耗時仍然不超過0.75 ms(圖 15 中超過0.75 ms 的平均耗時占比為0),顯著小于CAN 消息周期,具有良好的可行性。為了進(jìn)一步分析CPU 計(jì)算資源占用情況,實(shí)驗(yàn)中同步統(tǒng)計(jì)了加解密過程中的CPU 占用率。
圖15 單幀加解密平均耗時分布
圖16 給出了不同消息周期下CPU 利用率的情況。從圖16 可以看出,消息周期越長,CPU 利用率越低;消息周期越短,CPU 利用率越高。這是因?yàn)橐欢〞r間內(nèi),加解密的計(jì)算負(fù)擔(dān)隨著消息收發(fā)頻率的增加而增加。盡管如此,從圖17 可以看出,CPU利用率超過4%的情況很少,占比不超過1%,事實(shí)上,在本次仿真中也僅出現(xiàn)一次,利用率為4.027 5%,這說明本文提出的OOAES 計(jì)算資源占用有限,對其他應(yīng)用的影響不大。
圖16 不同消息周期下CPU 利用率的情況
圖17 CPU 利用率分布
根據(jù)車內(nèi)CAN 總線對數(shù)據(jù)加密低時延、輕量化、分組、針對性保密的需求,設(shè)計(jì)了基于在線離線處理的組合加密方法。該方法首先利用身份屬性對分組密碼進(jìn)行加密分發(fā),確保僅數(shù)據(jù)目標(biāo)OBU 可以完成密碼解密,避免單一OBU 攻破后全車信息泄露的風(fēng)險(xiǎn)?;谠诰€離線處理框架設(shè)計(jì)基于AES 的CAN 報(bào)文分組加密方法,巧妙地利用離線段進(jìn)行預(yù)加密計(jì)算,生成8 字節(jié)動態(tài)會話密鑰,不僅解決AES 最小加密長度與CAN 報(bào)文長度不匹配的問題,更實(shí)現(xiàn)量級地降低在線段加(解)密時長,具備報(bào)文數(shù)據(jù)“即請求、即加(解)密”的能力。