丁 山, 臧仕義, 曹殿明, 佘黎煌
(東北大學(xué) 計算機科學(xué)與工程學(xué)院, 遼寧 沈陽 110169)
近年,車載網(wǎng)絡(luò)安全研究員和網(wǎng)絡(luò)黑客們開發(fā)了大量對CAN(controller area network)的攻擊方法,攻擊數(shù)量顯著增加,這暴露出CAN總線的弱訪問控制和缺乏網(wǎng)絡(luò)安全防御機制問題,攻擊者可以輕易地入侵CAN總線實施偽造攻擊、重放攻擊和拒絕服務(wù)等攻擊.隨著智能網(wǎng)聯(lián)汽車的快速發(fā)展以及5G時代的萬物互聯(lián),類似于自動駕駛等先進(jìn)技術(shù)正廣泛應(yīng)用于汽車中,因此網(wǎng)聯(lián)汽車的智能化和一體化管理背后的安全問題至關(guān)重要.
在CAN網(wǎng)絡(luò)攻擊方式多樣化的同時,其防御手段也相繼提出.Wolf等[1]提出在相互通信的ECU之間進(jìn)行驗證,同時對傳輸?shù)臄?shù)據(jù)進(jìn)行加密以保證安全性.吳尚則[2]提出動態(tài)身份認(rèn)證方法,使用動態(tài)口令完成消息認(rèn)證.Groza等[3]提出物理特性身份認(rèn)證.由于CAN總線的資源是有限的,添加消息認(rèn)證碼將消耗有限的有效負(fù)載.Larson等[4]提出基于CANopen協(xié)議的異常檢測,通過對象字典檢測非法ECU.Humayed等[5]提出基于非周期的NAS機制的ID跳變方法.Lukasiewycz等[6]提出一種優(yōu)先級混淆方法.Wu等[7]提出使用基于ID跳變表的周期性ID跳變算法,即IDHCC(ID Hopping CAN controller).但是上述ID跳變機制必須保持相對優(yōu)先級順序,通過收集大量消息,攻擊者可以輕易知道消息在系統(tǒng)中的優(yōu)先級分布情況從而實施攻擊.
針對上述情況,本文提出使用優(yōu)先級跳變和一次性ID的方法.通過遺傳算法計算固定優(yōu)先級決定算法保證系統(tǒng)的實時性.將數(shù)據(jù)幀的ID段進(jìn)行重構(gòu),利用可調(diào)度性分析計算結(jié)果,進(jìn)行分組優(yōu)先級的循環(huán)ID跳變(PID與UID),使用單向散列函數(shù)SHA-256對ID段的后部DID進(jìn)行動態(tài)跳變,通過優(yōu)先級跳變和動態(tài)ID 跳變算法保證系統(tǒng)的網(wǎng)絡(luò)安全性.
局域網(wǎng)控制器CAN是一種串行通信協(xié)議,是當(dāng)今現(xiàn)場總線中具有國際標(biāo)準(zhǔn)的現(xiàn)場總線,傳統(tǒng)的CAN幀只能支持0到8字節(jié)的數(shù)據(jù)長度.不過CAN 2.0規(guī)范又分為CAN 2.0A和CAN 2.0B,其中,CAN 2.0A 的報文格式繼承了CAN 1.2標(biāo)識符11位的標(biāo)準(zhǔn)幀;CAN 2.0B對CAN 2.0A進(jìn)行了擴展,同時支持標(biāo)識符為29位的擴展幀.圖1為CAN標(biāo)準(zhǔn)幀格式.
圖1 CAN標(biāo)準(zhǔn)幀格式
在本文的攻擊模型中,由于當(dāng)前CAN總線中沒有安全策略,認(rèn)為攻擊者可以訪問CAN總線并通過發(fā)起嗅探、重放、偽造和特定拒絕服務(wù)(denial of service,DoS)攻擊進(jìn)行CAN總線攻擊.構(gòu)建的攻擊模型如圖2所示,其中特定DoS攻擊是指攻擊者以某一個ECU或某一組ECU為目標(biāo),插入大量優(yōu)先級ID大于正常數(shù)據(jù)幀ID的惡意幀,從而破壞正常的CAN總線工作;重放攻擊指攻擊者通過大量嗅探以往的數(shù)據(jù)幀,在某個關(guān)鍵時刻向總線上重放嗅探到的數(shù)據(jù)幀,以達(dá)到破壞CAN總線或執(zhí)行攻擊者預(yù)想的效果,也被稱為“中間人攻擊”.
圖2 攻擊模型
本文針對現(xiàn)存問題所提出的解決方案概述如圖3所示,其中包含5個步驟,步驟1和2是跳變前的數(shù)據(jù)準(zhǔn)備階段,步驟3和4是循環(huán)跳變的設(shè)計階段,步驟5是利用重構(gòu)后的ID段進(jìn)行ID Hopping的應(yīng)用階段.
步驟1 數(shù)據(jù)幀的固定優(yōu)先級與優(yōu)先級可妥協(xié)范圍,即通過遺傳算法得到CAN總線數(shù)據(jù)幀的最佳固定優(yōu)先級并盡可能擴大每個優(yōu)先級的上下限的綁定范圍,且滿足所有實時約束.
步驟2 優(yōu)先級分組集合,本文提出一種“優(yōu)先級決定算法(priority decision algorithm,PBD)”,通過優(yōu)先級可妥協(xié)范圍計算出優(yōu)先級分組集合,將優(yōu)先級分組集合作為后續(xù)的優(yōu)先級跳變的依據(jù).
步驟3 重構(gòu)ID段,如圖4所示,將ID段分為用于區(qū)分優(yōu)先級的部分和進(jìn)行混淆跳變的部分,定義標(biāo)識符的前部分為優(yōu)先級ID(priority ID,PID)、中間部分為唯一ID(unique ID,UID)和后部分為動態(tài)ID(dynamical ID,DID).
步驟4 循環(huán)跳變,利用可調(diào)度性分析計算的結(jié)果進(jìn)行分組優(yōu)先級的循環(huán)ID跳變,即重構(gòu)后的PID段與UID段,使用單向散列函數(shù)SHA-256對ID段的后部DID進(jìn)行動態(tài)跳變.
步驟5 應(yīng)用階段,當(dāng)在CAN總線上發(fā)送數(shù)據(jù)幀時,可以結(jié)合重構(gòu)后的ID段進(jìn)行數(shù)據(jù)幀ID的選擇與跳變.
圖3 動態(tài)ID Hopping機制
圖4 ID段重構(gòu)
一個消息mi,屬于一個消息集合M={m1,m2,…,mn},共計n個消息幀.這些幀可以使用一個三元組來表示:mi={Ti,tci,tdi},其中Ti是幀的周期,tci是幀的傳輸時間,tdi是幀的截止時間.一般情況下,Ti=tdi,在本文中,為了計算方便,同樣認(rèn)為Ti=tdi.那么,幀mi的WCRT[8]由三部分組成,分別是抖動時間Ji、隊列延遲Wi和傳輸時間tci(隊列抖動,指的是事件開始到幀mi就緒并準(zhǔn)備在總線上進(jìn)行傳輸需要的最長時間;隊列延遲,指的是幀mi成功在總線上開始傳輸之前,一直被保存在CAN設(shè)備驅(qū)動隊列里的最長時間).
Ri=Ji+tci+Wi,?mi.
(1)
隊列延遲Wi是一個單調(diào)非遞減函數(shù),具體值的計算只能通過以下遞推公式來求解:
(2)
其中:hpi,i′=1是一個二進(jìn)制變量,用來表示幀mi的優(yōu)先級高于幀mi′;τbit是CAN總線的速率,這里設(shè)為1.
最后,tci的計算公式如下:
(3)
其中:Si是CAN總線數(shù)據(jù)場中數(shù)據(jù)的字節(jié)數(shù);g是CAN總線的一個常量,這里等于34.
關(guān)于實時性的約束,即WCRT要小于等于截止時間,使得消息可以在規(guī)定時間內(nèi)被接收,其約束如下:
Ri≤tdi,?mi,
(4)
tdi=Ti,?mi.
(5)
其中,Ri是mi的最壞響應(yīng)時間,通常對于任意的周期消息來說,其截止時間就是周期,即每個消息都需要在其周期內(nèi)響應(yīng),否則該消息響應(yīng)失敗.
本文在優(yōu)先級約束中引入RM調(diào)度[9]約束,即周期小的幀的優(yōu)先級高于周期大的幀的優(yōu)先級,該約束定義如下:
Ti (6) 其中,對于幀mi,mi′,如果有Ti>Ti′,則有pi hpi,i′+hpi′,i=1,?mi,mi′,i≠i′; (7) hpi,i′+hpi′,i″-1≤hpi,i″,?mi,mi′,mi″,i≠i′,i′≠i″. (8) 對于可調(diào)度系統(tǒng),調(diào)度性能的指標(biāo)主要是系統(tǒng)的冗余度,其最壞響應(yīng)時間越小,冗余的時間越多,則系統(tǒng)的調(diào)度性能越好,即系統(tǒng)具有更好的魯棒性,目標(biāo)是最優(yōu)調(diào)度策略,即系統(tǒng)的冗余時間越多說明調(diào)度性越好,并通過最壞情況響應(yīng)率WCRR[10](worst case response rate)進(jìn)行說明,這樣就可以得到如下目標(biāo)函數(shù): (9) 其中:Ri代表消息mi在本周期的最壞響應(yīng)時間;Ti是消息mi的周期.可調(diào)度的系統(tǒng)每個消息都滿足WCRRi<1,若有任一消息WCRRi>1,則該消息不滿足實時性,即不可調(diào)度. 2.2.1 初始化種群 本文采用實數(shù)形式構(gòu)建染色體編碼,每個染色體編碼代表一個排序方案,染色體上每個基因位置代表任務(wù)的優(yōu)先級.每個實數(shù)編碼只能取一次不能重復(fù),即一個染色體內(nèi)不能出現(xiàn)兩個相同的實數(shù).實數(shù)編碼的取值范圍為1到N(N為數(shù)據(jù)集內(nèi)幀的個數(shù)).據(jù)RM調(diào)度可知周期越小的幀的優(yōu)先級越高,即代表優(yōu)先級的實數(shù)p越小.初始化個體實例如圖5所示,假設(shè)有12個幀進(jìn)行固定優(yōu)先級的計算,其中{m9,m11}的周期都為T1,m8的周期為T2,m10的周期為T3,{m1,m2,m3,m4,m7,m12}的周期都為T4,m5的周期為T5,m6的周期為T6,并且T1 2.2.2 適應(yīng)度函數(shù) 適應(yīng)度函數(shù)用以評價固定優(yōu)先級順序的優(yōu)劣,由截止時間和最壞響應(yīng)時間的差值來體現(xiàn),差值越大,代表冗余度越多,即調(diào)度性能越好;另一種表現(xiàn)調(diào)度性能的形式是最壞情況響應(yīng)率WCRR(式(9)).由于初始化和交叉后的種群也是根據(jù)周期大小的順序進(jìn)行優(yōu)先級排序的,所以只要數(shù)據(jù)集是滿足可調(diào)度的,那么每一個幀的截止時間一定是小于其周期的,否則輸入的數(shù)據(jù)集就是不可調(diào)度的,計算會沒有意義. 圖5 個體實例 2.2.3 選擇運算 遺傳算法的選擇方式有很多種,一個合適的選擇方式可以直接影響到算法的性能,如果選擇后導(dǎo)致個體的多樣性降低會導(dǎo)致算法過早收斂到局部最優(yōu)解,而選擇后個體的多樣化程度過高可能導(dǎo)致算法不容易收斂.本文選擇的方式是在種群中通過輪盤賭的方式選N/2組個體,每組包含2個個體,然后保留適應(yīng)度更好的個體,適應(yīng)度較差的個體則淘汰. 2.2.4 交叉運算 本文采用實數(shù)編碼方式,根據(jù)要求設(shè)計了一種基于周期分類的多點交叉方式,如圖6所示.交叉的過程是在每個周期內(nèi)選擇隨機的一個交叉點,將2個父代染色體每個周期的交叉點的后部分進(jìn)行交換,由于編碼中不允許有重復(fù)的基因碼,所以子代還需依次把父代的剩余編碼按順序保留. 圖6 交叉示意圖 2.2.5 變異運算 本文采取的變異方法是在一個染色體上每個周期范圍內(nèi)任取兩點,然后通過交叉概率判斷是否進(jìn)行交叉,如果進(jìn)行交叉,將這兩點之間的基因互換得到新的染色體. 2.2.6 終止條件 本文采用的是設(shè)置最大迭代次數(shù)來終止算法,當(dāng)算法運行結(jié)束后就可以得到一個全局最優(yōu)解. 2.3.1 優(yōu)先級可妥協(xié)范圍 每個幀的優(yōu)先級可妥協(xié)范圍用FB(fb_high,fb_low)表示,fb_high表示每個幀的可妥協(xié)優(yōu)先級的上界,fb_low表示每個幀的可妥協(xié)優(yōu)先級的下界.每個幀在其妥協(xié)范圍內(nèi)選擇任意1個優(yōu)先級發(fā)送,不會影響整體的可調(diào)度性. 求各幀在最優(yōu)調(diào)度情況下的可妥協(xié)范圍,將式(2)替換為 Wi=maxmax{PG(j)}≥min{PG(i)}tcj+ (10) 這表示一個幀mi會被另外一個幀mj所延遲,而幀mj的可妥協(xié)上界必須要大于幀mi的可妥協(xié)下界.需添加如下約束: pi (11) 表示幀mi′的優(yōu)先級可妥協(xié)范圍可以在i與i″之間滑動. 2.3.2 優(yōu)先級分組 根據(jù)優(yōu)先級可妥協(xié)范圍,幀的優(yōu)先級可以改變,不會造成系統(tǒng)不可調(diào)度.根據(jù)每個幀的優(yōu)先級可妥協(xié)范圍把妥協(xié)范圍相近的幀合并到一組集合內(nèi),在這個集合內(nèi)很多的幀的優(yōu)先級范圍可以相互覆蓋,在發(fā)送時,該集合內(nèi)的幀以集合范圍內(nèi)的任一優(yōu)先級發(fā)送不影響系統(tǒng)的可調(diào)度性,則稱集合為優(yōu)先級分組集合(priority grouping,PG).每一個PG內(nèi)的所有幀擁有相同優(yōu)先級上下界PG(pg_high,pg_low).滿足以下約束: fb_highi≤pg_highk,fb_lowi≥pg_lowk,?mi∈PGk, (12) pg_highk-pg_lowk+1=num(PGk) ,?PGk, (13) PG(mi)≠PG(mj),?mi∈PG,mj∈PG . (14) 即每個優(yōu)先級分組集合的范圍都滿足該集合內(nèi)每個幀的優(yōu)先級可妥協(xié)范圍,而每個幀的優(yōu)先級可妥協(xié)范圍滿足可調(diào)度性.不同組的優(yōu)先級互相沒有交集,每一個幀只屬于一個優(yōu)先級分組.每個分組內(nèi)幀的數(shù)量與優(yōu)先級的數(shù)量必然相等. 表1是優(yōu)先級分組算法的具體過程,本算法的核心是不停地在一個組中尋找覆蓋最大幀的集合. 表1 算法1 優(yōu)先級仲裁在標(biāo)識符的前部分,將ID段分為用于區(qū)分優(yōu)先級的部分和進(jìn)行混淆跳變的部分,其中包括以下三部分: 1) PID:用以區(qū)分優(yōu)先級分組集合的優(yōu)先級,分組內(nèi)的所有數(shù)據(jù)幀共用同一個PID,PID位數(shù)是由優(yōu)先級分組集合的個數(shù)所確定: 2n-1≤α≤2n-1 . (15) 其中:α代表優(yōu)先級分組的數(shù)量;n為PID所需的位數(shù). 2) UID:優(yōu)先級分組幀集合內(nèi)每個數(shù)據(jù)幀分配獨一的ID, UID不同代表優(yōu)先級不同,同一分組集合內(nèi)的幀進(jìn)行UID跳變,即實現(xiàn)優(yōu)先級跳變,使用同步循環(huán)機制進(jìn)行跳變.UID位數(shù)由式(15)確定. 3) DID:通過對稱加密算法進(jìn)行動態(tài)跳變混淆,每發(fā)送一次數(shù)據(jù)幀,該數(shù)據(jù)幀的收發(fā)雙方的DID同時使用相同的密鑰進(jìn)行跳變,且保證優(yōu)先級不改變,實時性不改變. 3.2.1 優(yōu)先級跳變 前文提到數(shù)據(jù)幀在妥協(xié)范圍內(nèi)以任意優(yōu)先級進(jìn)行發(fā)送不會破壞系統(tǒng)的可調(diào)度性,而后形成一個優(yōu)先級分組集合PG,分組范圍具有上下限,組內(nèi)數(shù)據(jù)幀都滿足范圍的上下限,范圍內(nèi)的幀進(jìn)行優(yōu)先級跳變.以表2所示的5個數(shù)據(jù)幀解釋優(yōu)先級跳變. RM調(diào)度規(guī)定周期越小的幀優(yōu)先級越高,由于幀的數(shù)量較少,可以輕易計算出固定優(yōu)先級和優(yōu)先級分組集合.如表3所示,幀m1,m2,m3可以形成一個PG集合P1={m1,m2,m3},幀m4,m5可以形成一個PG集合P2={m4,m5},其中P1內(nèi)所有數(shù)據(jù)幀的優(yōu)先級高于P2內(nèi)所有數(shù)據(jù)幀的優(yōu)先級. 表2 幀的參數(shù) 表3 幀優(yōu)先級可妥協(xié)范圍 對于表2的數(shù)據(jù),由式(15)可知2個優(yōu)先級分組只需要1位PID就可以決定,但是實際上總線上數(shù)據(jù)幀最后形成的分組大約在12個,用4位的PID決定分組優(yōu)先級,優(yōu)先級分組集合內(nèi)的數(shù)據(jù)幀的最大數(shù)量必小于UID位數(shù)可決定的數(shù)量,這里分組集合內(nèi)數(shù)據(jù)幀的數(shù)量的最大值是3,所以用2位ID區(qū)分,ID段剩余5位用作DID進(jìn)行動態(tài)跳變. 優(yōu)先級跳變流程如圖7所示,計算每個幀的固定優(yōu)先級,根據(jù)WCRT判斷可妥協(xié)范圍,得到優(yōu)先級分組集合.為每個優(yōu)先級分組分配PID與UID,圖7中PID分為兩個優(yōu)先級分組集合P1={m1,m2,m3}和P2={m4,m5},集合P1的PID1為0101,集合P2的PID2為1010,PID1的值小于PID2的值,集合P1的幀仲裁一定勝過P2,滿足實時性. 為節(jié)點分配初始標(biāo)識符后,需要同步控制器控制優(yōu)先級跳變,即UID的改變.本文的優(yōu)先級跳變機制將通過改變每個幀的UID,使UID表在規(guī)定時間向下移,即UID+1,如圖8所示,當(dāng)m3的UID移動到11時,此m3的優(yōu)先級是低于m1和m2的,當(dāng)優(yōu)先級再次移動時,由于m3的UID為11加1后變?yōu)?0,這樣m3的優(yōu)先級就高于m1和m2了,即m3的優(yōu)先級覆蓋了m1的優(yōu)先級,進(jìn)行了優(yōu)先級的跳變. 圖7 UID跳變策略 優(yōu)先級跳變(UID跳變)的時間由消息計數(shù)器(message counter)確定,本文使用ACK應(yīng)答信號作為優(yōu)先級跳變標(biāo)志,當(dāng)發(fā)送了8個ACK信號,UID表自動向下跳變. 圖8 優(yōu)先級轉(zhuǎn)換 當(dāng)幀的優(yōu)先級發(fā)生改變時,攻擊者無法區(qū)分每個幀的具體優(yōu)先級,攻擊者不能將某一個優(yōu)先級判定為具體的功能,增加破解系統(tǒng)的復(fù)雜程度. 3.2.2 DID驗證算法 本文使用對稱加密進(jìn)行DID的動態(tài)跳變,一個會話的接收方和發(fā)送方都有著相同的會話密鑰(group session key,GSK),用作DID的加密生成.輸入DID,生成的密文作為新的DID,不需要解密,保證收發(fā)雙方同時加密,生成的密文一致,滿足收發(fā)雙方同步.具有會話密鑰的ECU每次發(fā)送數(shù)據(jù)幀都會生成一個新的一次性密鑰(one-time key,OTK),DID通過一次性密鑰生成新的DID作為下次發(fā)送數(shù)據(jù)的ID,本文使用HMAC[11]生成DID. 3.2節(jié)使用UID進(jìn)行優(yōu)先級跳變,但跳變只在一段時間發(fā)生一次,跳變后還將維持到靜態(tài)配置,攻擊者可以通過這段時間破解系統(tǒng).本文在此基礎(chǔ)上進(jìn)一步增強系統(tǒng)防御性,使用NAS方案,即最高頻率的更改ID. 3.3.1 數(shù)據(jù)幀發(fā)送與接收 發(fā)送數(shù)據(jù)幀時,使用DID進(jìn)行一次性動態(tài)跳變混淆攻擊者,呈現(xiàn)無規(guī)律狀態(tài),DID改變頻率為1,用后即改變頻率(如圖9所示),使用單向散列函數(shù)和對稱密鑰進(jìn)行DID的跳變,攻擊者無法通過計算得到. 發(fā)送數(shù)據(jù)幀:發(fā)送ECU通過前一次生成的會話密鑰(GSK)和幀計數(shù)器生成新的一次性密鑰(OTK),每次更新DID后其一次性密鑰發(fā)生改變,根據(jù)OTK生成新的會話DID,發(fā)送時使用新生成的DID,當(dāng)發(fā)送成功后,再次通過散列函數(shù)計算新的DID作為下次發(fā)送的ID. 圖9 接收方和發(fā)送方DID跳變 根據(jù)GSK生成新的一次性密鑰[12]: HGSKk(OTKi-k||CTRe-j)=OTK(i+1)-k; (16) 根據(jù)OTK生成新的DID: HOTK(i+1)-k(DIDi-k||CTRe-j)=DID(i+1)-k. (17) 接收數(shù)據(jù)幀:接收方在接收數(shù)據(jù)之前,通過已經(jīng)接收到的 DIDi、新鮮度CTRe和會話密鑰生成的一次性密鑰OTKi+1生成新的DIDi+1,會話發(fā)送方的DID和接收方的DID通過散列函數(shù)保持一致,從而數(shù)據(jù)可被接收,此時接收方的幀計數(shù)器加1,改變新鮮度. 3.3.2 身份認(rèn)證與密鑰分發(fā) DID動態(tài)跳變進(jìn)行通信的發(fā)送方和接收方都保存著相同的密鑰,由網(wǎng)關(guān)ECU分發(fā)(如圖10所示),支持密鑰更新.密鑰導(dǎo)出通過HKDF(HMAC-based extract-and-expand key derivation function)[13]實現(xiàn),HKDF是一種基于HMAC的密鑰衍生函數(shù),其主要規(guī)范如下: GSKk=HKDF(Seed,t,P). (18) 輸入一個隨機的種子Seed,一個迭代次數(shù)t,一個口令p,函數(shù)成功終止后可以得到一個密鑰K. 圖10 密鑰分發(fā)流程 3.3.3 同步機制 如圖11所示,本文在DID跳變過程中可能造成發(fā)送方與接收方ID不同步,接收方若長時間沒有接收到發(fā)送方的消息,則判斷ID失去同步,接收方向發(fā)送方發(fā)送Auth Fail信號請求同步,當(dāng)發(fā)送方讀取到Auth Fail信號后,發(fā)送方向接收方廣播當(dāng)前的經(jīng)過加密的計數(shù)器與會話密鑰,接收方接收到發(fā)送方的數(shù)據(jù)后根據(jù)自己的數(shù)據(jù)進(jìn)行MAC認(rèn)證,如果不一致則向發(fā)送方請求同步數(shù)據(jù). 圖11 密鑰同步 實驗所用數(shù)據(jù)集參數(shù)由標(biāo)準(zhǔn)數(shù)據(jù)集SAE benchmark產(chǎn)生,本次實驗收集了帶寬利用率從10%到76%的多組測試數(shù)據(jù)(見表4).默認(rèn)周期和截止時間相等,數(shù)據(jù)長度從0到8 B,抖動時間范圍從0.1 ms到1.7 ms. 表4 數(shù)據(jù)集大小 實驗主要測試數(shù)據(jù)為帶寬利用率76%的數(shù)據(jù)集,周期分布如表5所示,其中比例指當(dāng)前周期的測試數(shù)據(jù)數(shù)量占總測試數(shù)據(jù)數(shù)量的百分比. 表5 周期分布 本次實驗進(jìn)行了多組數(shù)據(jù)結(jié)果的分析,從10%帶寬利用率的數(shù)據(jù)集到76%帶寬利用率的數(shù)據(jù)集,經(jīng)過不同數(shù)據(jù)集對比WCRR,如圖12所示.當(dāng)數(shù)據(jù)量較小時,遺傳算法和RM調(diào)度算法計算固定優(yōu)先級得到的目標(biāo)值相差較小,輸入信號的帶寬利用率越大時,即信號更多,經(jīng)過基于遺傳算法的固定優(yōu)先級調(diào)度的優(yōu)化后,其效果越明顯,這表明遺傳算法在大規(guī)模數(shù)據(jù)計算中可以得到優(yōu)秀的全局最優(yōu)解. 圖12 優(yōu)化效果對比 4.2.1 安全參數(shù) 優(yōu)先級分組算法輸出安全參數(shù)N_aver,含義是一個幀可以選擇的優(yōu)先級的平均數(shù),用以計算算法對偽造攻擊與重放攻擊的防御能力,N_aver表示為 (19) 其中:pgi表示第i個優(yōu)先級分組集合內(nèi)幀的數(shù)量;N為數(shù)據(jù)集內(nèi)幀的數(shù)量. 如圖13所示,通過對不同數(shù)據(jù)集的多次實驗結(jié)果分析可知,幀的數(shù)量越多,平均每個幀可以分配的優(yōu)先級數(shù)量越多. 圖13 N_aver結(jié)果 4.2.2 安全性分析 使用ID Hopping方法防御攻擊關(guān)鍵在于ID的接收原理,即攻擊者需要猜測出正確的ID,使得攻擊者的幀可以被接收節(jié)點所接受.沒有ID Hopping機制的CAN總線破解的概率為 (20) 使用offset進(jìn)行ID Hopping破解的概率為 (21) 使用ID跳變表的IDHCC的概率為 (22) 本文所提算法被破解的概率由DID的長度lDID決定,lDID越大則系統(tǒng)的安全性越強. (23) 實際總線傳輸?shù)臄?shù)據(jù)幀的個數(shù)Num_IDs為120個左右,P_offset由當(dāng)前系統(tǒng)使用的ID最大值決定,因為ID跳變后不能超過CAN總線ID的范圍.Table_nums為16,這是因為CAN數(shù)據(jù)幀的ID為11位,其范圍是0x000~0x7FF,對于總線上的120個幀可以分為16份,lDID代表DID的長度,經(jīng)多次計算,如果使用11位ID,PID長度為4,UID長度為3,DID長度為4,N_aver為同一優(yōu)先級分組集合內(nèi)幀的數(shù)量,這個值就是安全參數(shù)N_aver. 圖14展示幾種算法的被攻擊成功率的對比情況,其被攻擊成功的概率越小,安全性越高.可以看出,本文中提出的動態(tài)ID跳變安全調(diào)度算法具有較高的安全性,其效果遠(yuǎn)遠(yuǎn)好于其他ID跳變機制,可以有效地抵御偽造攻擊與重放攻擊. 圖14 不同算法被攻擊成功率對比 本文結(jié)合了CAN總線固定優(yōu)先級調(diào)度,設(shè)計了一種優(yōu)先級跳變機制,改變了傳統(tǒng)的靜態(tài)跳變方式,將通過散列函數(shù)進(jìn)行一次性標(biāo)識符動態(tài)跳變的方式引入到實時調(diào)度算法中.實驗結(jié)果和安全性分析表明,該機制能在不增加負(fù)載開銷的情況下,有效防御偽造和重放攻擊等多種攻擊手段,安全性能優(yōu)于現(xiàn)有方法.在未來的工作中,將通過改進(jìn)算法,使其UID數(shù)量減少,增加DID數(shù)量,從而進(jìn)一步提高安全性能,例如切割數(shù)量較多的優(yōu)先級分組集合.2.2 基于遺傳算法的最佳固定優(yōu)先級
2.3 優(yōu)先級決定算法(PBD)
3 ID段重構(gòu)與動態(tài)ID Hopping
3.1 重構(gòu)ID段
3.2 優(yōu)先級跳變與驗證算法
3.3 動態(tài)ID生成
4 實驗對比與安全性分析
4.1 遺傳算法實驗評估
4.2 安全性分析
5 結(jié) 語