ECU發(fā)送數(shù)據(jù)幀,并在數(shù)據(jù)域附上計(jì)數(shù)器值對應(yīng)的MAC ;網(wǎng)關(guān)和接收ECU比較接收數(shù)據(jù)幀中的MAC和自身MAC表中與計(jì)數(shù)器值對應(yīng)的MAC,如果相同,判斷該數(shù)據(jù)幀沒有被攻擊,數(shù)據(jù)幀正常,否則判斷為非法幀;無論接收的數(shù)據(jù)幀是否通過驗(yàn)證,網(wǎng)關(guān)和ECU的計(jì)數(shù)器的值均加1,指向下一個(gè)MAC序列;如果計(jì)數(shù)器值溢出,則網(wǎng)關(guān)廣播序列,更新MAC表,計(jì)數(shù)器值置為O ;否則繼續(xù)進(jìn)行下一數(shù)據(jù)幀的通信。
[0060]以下詳細(xì)描述本發(fā)明的基于廣播的CAN總線認(rèn)證方法。
[0061]圖1示出了本發(fā)明的基于廣播的CAN總線認(rèn)證方法的流程圖。
[0062]參照圖1,本發(fā)明的實(shí)施例基于廣播的CAN總線認(rèn)證方法,具體包括:
[0063]S1、對當(dāng)前啟動的所有E⑶進(jìn)行完整性驗(yàn)證,并為網(wǎng)關(guān)和通過完整性驗(yàn)證的E⑶分配種子密鑰。
[0064]S2、所述網(wǎng)關(guān)根據(jù)所述種子密鑰生成加密序列,并將所述加密序列廣播發(fā)送到所述通過完整性驗(yàn)證的E⑶;
[0065]具體地,所述網(wǎng)關(guān)生成隨機(jī)序列,在所述種子密鑰的控制下生成偽隨機(jī)序列,并將所述偽隨機(jī)序列和所述隨機(jī)序列進(jìn)行異或計(jì)算生成加密序列。
[0066]將所述加密序列廣播發(fā)送到所述通過完整性驗(yàn)證的ECU。
[0067]S3、所述網(wǎng)關(guān)和所述通過完整性驗(yàn)證的E⑶根據(jù)所述加密序列分別生成相同的MAC表和同步計(jì)數(shù)器;
[0068]在本實(shí)施例中,在生成同步計(jì)數(shù)器時(shí),對同步計(jì)數(shù)器值設(shè)為O。
[0069]S4、所述通過完整性驗(yàn)證的E⑶中的發(fā)送E⑶在發(fā)送數(shù)據(jù)幀時(shí),在所述數(shù)據(jù)幀的數(shù)據(jù)域附上所述發(fā)送ECU的計(jì)數(shù)器的值對應(yīng)的MAC ;
[0070]S5、所述通過完整性驗(yàn)證的E⑶中的接收E⑶和所述網(wǎng)關(guān)接收附有MAC的數(shù)據(jù)幀時(shí),判斷所述數(shù)據(jù)幀中的MAC與自身的計(jì)數(shù)器值對應(yīng)的MAC表中的MAC是否相同;
[0071]S6、是則判定所述數(shù)據(jù)幀安全;否則判斷所述數(shù)據(jù)幀為非法幀;
[0072]S7、將所述發(fā)送E⑶、網(wǎng)關(guān)和接收E⑶的計(jì)數(shù)器的值加1,并判斷所述發(fā)送E⑶、網(wǎng)關(guān)和接收ECU的計(jì)數(shù)器的值是否超過預(yù)定的閾值;
[0073]S8、是則返回步驟S2,重新生成MAC表;否則返回步驟S4,進(jìn)行下一個(gè)數(shù)據(jù)幀的通信。
[0074]在上述過程中,由于只有網(wǎng)關(guān)和通過驗(yàn)證的E⑶分配了種子密鑰,而攻擊者和被攻擊者控制的ECU沒有分配種子密鑰,因此攻擊者和被控制的ECU無法建立MAC表,從而在進(jìn)行數(shù)據(jù)通信時(shí),可以根據(jù)MAC表中的MAC碼來判定通信的數(shù)據(jù)是否為安全的,從而可以防御攻擊者對CAN總線的攻擊。
[0075]在本發(fā)明的另一個(gè)實(shí)施例中,提供一種基于廣播的CAN總線認(rèn)證系統(tǒng)。
[0076]圖2示出了本發(fā)明的基于廣播的CAN總線認(rèn)證系統(tǒng)的結(jié)構(gòu)框圖。
[0077]參照圖2,本發(fā)明的基于廣播的CAN總線認(rèn)證系統(tǒng)具體包括:
[0078]網(wǎng)關(guān)10,用于生成加密的序列,并進(jìn)行廣播發(fā)送;
[0079]多個(gè)ECU20,用于接收所述網(wǎng)關(guān)的加密序列并生成MAC表和同步計(jì)數(shù)器,并在進(jìn)行數(shù)據(jù)通信時(shí)根據(jù)所述MAC表和所述同步計(jì)數(shù)器判斷所述數(shù)據(jù)通信是否安全。
[0080]驗(yàn)證單元30,用于對所述E⑶進(jìn)行完整性驗(yàn)證,并為所述網(wǎng)關(guān)和通過完整性驗(yàn)證的ECU分配種子密鑰。
[0081]在上述系統(tǒng)中,所述網(wǎng)關(guān)10包括:
[0082]第一種子密鑰接收器,用于接收所述驗(yàn)證單元分配的種子密鑰;
[0083]第一偽隨機(jī)序列生成器,用于根據(jù)所述種子密鑰生成第一偽隨機(jī)序列;
[0084]第一隨機(jī)序列生成器,用于生成第一隨機(jī)序列;
[0085]第一異或計(jì)算器,用于將所述第一偽隨機(jī)序列與第一隨機(jī)序列進(jìn)行異或計(jì)算生成加密序列;
[0086]第一計(jì)數(shù)器生成器,用于生成第一同步計(jì)數(shù)器值,實(shí)現(xiàn)與所述發(fā)送E⑶計(jì)數(shù)器值的同步。
[0087]另外,所述E⑶20包括發(fā)送E⑶和接收E⑶。
[0088]其中,所述發(fā)送E⑶具體包括:
[0089]第二種子密鑰接收器,用于接收所述驗(yàn)證單元分配的第二種子密鑰;
[0090]第三種子密鑰接收器,用于接收所述驗(yàn)證單元分配的第三種子密鑰;
[0091]第二偽隨機(jī)序列生成器,用于根據(jù)所述第二種子密鑰生成第二偽隨機(jī)序列;
[0092]第二異或計(jì)算器,用于將接收的加密序列與所述第二偽隨機(jī)序列進(jìn)行異或計(jì)算,生成第二隨機(jī)序列;
[0093]第三隨機(jī)序列生成器,用于根據(jù)所述第三種子密鑰和所述第二隨機(jī)序列生成第三隨機(jī)序列;
[0094]第三異或計(jì)算器,用于將所述第二隨機(jī)序列與所述第三隨機(jī)序列進(jìn)行異或計(jì)算,生成MAC表;
[0095]第二計(jì)數(shù)器生成器,用于生成第二同步計(jì)數(shù)器值,實(shí)現(xiàn)與所述網(wǎng)關(guān)和所述接收E⑶計(jì)數(shù)器值的同步。
[0096]數(shù)據(jù)發(fā)送單元,用于為通信的數(shù)據(jù)幀附上與生成的所述第二同步計(jì)數(shù)器的值對應(yīng)的MAC,并對附上所述MAC的數(shù)據(jù)幀進(jìn)行發(fā)送。
[0097]其中,所述接收E⑶具體包括:
[0098]第四種子密鑰接收器,用于接收所述驗(yàn)證單元分配的第四種子密鑰;
[0099]第五種子密鑰接收器,用于接收所述驗(yàn)證單元分配的第五種子密鑰;
[0100]第四偽隨機(jī)序列生成器,用于根據(jù)所述第四種子密鑰生成第四偽隨機(jī)序列;
[0101]第四異或計(jì)算器,用于將接收的加密序列與所述第四偽隨機(jī)序列進(jìn)行異或計(jì)算,生成第四隨機(jī)序列;
[0102]第五隨機(jī)序列生成器,用于根據(jù)所述第五種子密鑰和所述第四隨機(jī)序列生成第五隨機(jī)序列;
[0103]第五異或計(jì)算器,用于將所述第四隨機(jī)序列與所述第五隨機(jī)序列進(jìn)行異或計(jì)算,生成MAC表;
[0104]第三計(jì)數(shù)器生成器,用于生成第三同步計(jì)數(shù)器值,實(shí)現(xiàn)與所述發(fā)送E⑶計(jì)數(shù)器值的同步。
[0105]第一數(shù)據(jù)接收單元,用于接收數(shù)據(jù)幀,并判斷所述數(shù)據(jù)幀中的MAC與自身的計(jì)數(shù)器值對應(yīng)的MAC表中的MAC是否相同,若相同則判斷該數(shù)據(jù)幀為安全幀,否則為非法幀。
[0106]另外,由于網(wǎng)關(guān)也接收數(shù)據(jù)幀,并對數(shù)據(jù)幀進(jìn)行驗(yàn)證,因此,網(wǎng)關(guān)包括接收E⑶中的每個(gè)結(jié)構(gòu),即所述網(wǎng)關(guān)還包括:
[0107]第六種子密鑰接收器,用于接收所述驗(yàn)證單元分配的第六種子密鑰;
[0108]第六隨機(jī)序列生成器,用于根據(jù)所述第六種子密鑰和所述第一隨機(jī)序列生成第六隨機(jī)序列;
[0109]第六異或計(jì)算器,用于將所述第一隨機(jī)序列與所述第六隨機(jī)序列進(jìn)行異或計(jì)算,生成MAC表;
[0110]第二數(shù)據(jù)接收單元,用于接收數(shù)據(jù)幀,并判斷所述數(shù)據(jù)幀中的MAC與自身的計(jì)數(shù)器值對應(yīng)的MAC表中的MAC是否相同,若相同則判斷所述數(shù)據(jù)幀為安全幀,否則為非法幀。
[0111]另外,由于網(wǎng)關(guān)有時(shí)會與其他的網(wǎng)關(guān)或其他網(wǎng)關(guān)的ECU進(jìn)行通信,因此,網(wǎng)關(guān)也包括發(fā)送ECU的所有的結(jié)構(gòu)。同時(shí),此處描述的發(fā)送ECU和接收ECU時(shí)在某一次通信中進(jìn)行的限定,實(shí)際應(yīng)用的系統(tǒng)中的每一個(gè)ECU都可以作為發(fā)送ECU使用,也可以作為接收ECU使用,因此,上述結(jié)構(gòu)只是在具體通信過程中做的功能區(qū)分,并不限定本發(fā)明的ECU的實(shí)際結(jié)構(gòu)。
[0112]基于上述系統(tǒng),本發(fā)明的一個(gè)實(shí)施例中提供一種E⑶生成MAC表的示意圖。
[0113]圖3示出了本發(fā)明的實(shí)施例的E⑶生成MAC表的示意圖。
[0114]參照圖3,本發(fā)明實(shí)施例的E⑶生成MAC的具體過程為:
[0115]在網(wǎng)關(guān)中,第一偽隨機(jī)序列生成器gl根據(jù)第一種子密鑰kl生成第一偽隨機(jī)序列pl,然后通過第一隨機(jī)序列生成器生成第一隨機(jī)序列rl,將第一偽隨機(jī)序列pi和第一隨機(jī)序列rl異或計(jì)算后生成加密序列Rl。
[0116]發(fā)送E⑶在接收到加密序列Rl后,第二偽隨機(jī)序列生成器g2根據(jù)第二種子密鑰k2生成第二偽隨機(jī)序列p2,然后將加密序列Rl與第二偽隨機(jī)序列p2異或計(jì)算生成第二隨機(jī)序列r2,第三隨機(jī)序列生成器g3根據(jù)第三種子密鑰k3和第二隨機(jī)序列r2生成第三隨機(jī)序列r3,并將第二隨機(jī)序列r2與第三隨機(jī)序列r3異或計(jì)算后生成MAC表,其中,第二隨機(jī)序列r2對第三隨機(jī)序列生成器g3的控制方式為:如果r2中正在進(jìn)行異或運(yùn)算的位與前一位相同,那么g3中的狀態(tài)值增加1,否則,g3的狀態(tài)值不變。在上述過程中,第一隨機(jī)序列rl和第二隨機(jī)序列r2相同,第一種子密鑰kl與第二種子密鑰k2相同。
[0117]另外,接收E⑶生成MAC表的過程與