通信系統(tǒng)中的消息認(rèn)證方法及通信系統(tǒng)的制作方法
【專利摘要】在各ECU中按照每個CAN?ID對消息被發(fā)送的次數(shù)進(jìn)行計數(shù)。發(fā)送了主消息的發(fā)送節(jié)點根據(jù)主消息的數(shù)據(jù)字段、CAN?ID以及與CAN?ID對應(yīng)的計數(shù)值生成MAC并作為MAC消息發(fā)送。接收到主消息的接收節(jié)點根據(jù)主消息所包含的數(shù)據(jù)字段、CAN?ID以及與CAN?ID對應(yīng)的計數(shù)值生成MAC,判斷所生成的MAC與MAC消息所包含的MAC是否一致。由此,能夠驗證主消息是否正當(dāng)。這樣,能夠進(jìn)行由MAC進(jìn)行的消息認(rèn)證而不變更CAN協(xié)議。
【專利說明】通信系統(tǒng)中的消息認(rèn)證方法及通信系統(tǒng)
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及通信系統(tǒng)中的消息認(rèn)證技術(shù)。
【背景技術(shù)】
[0002]作為車載網(wǎng)絡(luò),采用了 CAN(ControIIer Area Network:控制器局域網(wǎng))。在該CAN中設(shè)有被稱為0BD2端口的診斷用端口,并能夠接收在網(wǎng)絡(luò)上流動的消息(message)或在網(wǎng)絡(luò)上發(fā)送消息。
[0003]由于0BD2端口是不進(jìn)行消息的過濾處理等的直接接口,所以當(dāng)在0BD2端口上連接了不正當(dāng)?shù)脑O(shè)備時,存在被重放攻擊(IteplayAttack)的危險性。在此所述的重放攻擊是指通過竊聽在網(wǎng)絡(luò)上流動的消息并存儲其內(nèi)容,重發(fā)所存儲的消息來引起不正當(dāng)?shù)膭幼鞯墓?。此外,不正?dāng)?shù)脑O(shè)備即使不知道消息的內(nèi)容,如果知道消息發(fā)送后的車輛動作,則也能夠掌握該消息的意圖。
[0004]作為防止這種重放攻擊的技術(shù),提出了在CAN消息中嵌入消息認(rèn)證代碼(MAC)的技術(shù)(非專利文獻(xiàn)I)。在該方案中,如圖11所示,根據(jù)從第N個至第N+3個這4個CAN消息所包含的數(shù)據(jù)字段(data field) (64X4 = 256位)生成64位的MAC,并按每16位劃分為4份,嵌入從第N+4個至第N+7個這4個CAN消息的CRC字段(16位)中進(jìn)行發(fā)送。
[0005]在接收側(cè),從第N+4個至第N+7個CAN消息的CRC字段取得MAC,根據(jù)是否與由從第N個至第N+3個數(shù)據(jù)字段生成的MAC —致,來判斷從第N個至第N+3個CAN消息是否正當(dāng)。在從CRC字段得到的 MAC與根據(jù)數(shù)據(jù)字段計算出的MAC不同的情況下,可以判斷為從第N個至第N+3個CAN消息的任一個不正當(dāng)。
[0006]在先技術(shù)文獻(xiàn)
[0007]非專利文獻(xiàn)I:D.K.Nilsson, U.E.Larson, E.Jonsson, “Efficient In-VehicleDelayed Data Authentication Based on Compound Message Authentication Codes,,(基于復(fù)合消息認(rèn)證代碼的高效的車載延遲數(shù)據(jù)認(rèn)證),IEEE68th VTC2008-Fall, 2008,1-5.
【發(fā)明內(nèi)容】
[0008]發(fā)明所要解決的課題
[0009]然而,在非專利文獻(xiàn)I中示出的方法中,存在以下問題。第一,由于為了驗證第N個消息的正當(dāng)性而需要接收直到第N+7個為止的消息,所以存在消息的驗證需要花費(fèi)時間的問題。
[0010]第二個問題點為在非專利文獻(xiàn)I中示出的方法變更了已標(biāo)準(zhǔn)化的CAN協(xié)議。CRC字段原本用于數(shù)據(jù)字段等的數(shù)據(jù)內(nèi)容的錯誤檢測。若考慮到通過硬件來實現(xiàn)CAN控制器的處理的現(xiàn)狀,則變更協(xié)議是不現(xiàn)實的。因此,該第二問題點更加嚴(yán)重。
[0011]本發(fā)明的目的在于提供一種能夠以可應(yīng)用于CAN協(xié)議的方式進(jìn)行消息認(rèn)證的技術(shù)。
[0012]用于解決問題的方案[0013]在本發(fā)明涉及的消息認(rèn)證方法中,發(fā)送主消息和包含主消息的消息認(rèn)證代碼(Message Authentication Code:MAC)的MAC消息。在接收側(cè),如果根據(jù)主消息計算出的MAC與MAC消息所包含的MAC —致,則可以判斷主消息是正當(dāng)?shù)南?,如果不一致,則可以判斷主消息為不正當(dāng)?shù)南ⅰT诒景l(fā)明中,其特征在于按以下方式生成MAC。
[0014]通信系統(tǒng)內(nèi)的各節(jié)點存儲每當(dāng)在網(wǎng)絡(luò)上傳送主消息時增加的計數(shù)值。發(fā)送主消息的節(jié)點在該發(fā)送時增加計數(shù)值。除發(fā)送節(jié)點以外,當(dāng)檢測到在網(wǎng)絡(luò)上傳送了主消息時增加計數(shù)值。此外,雖然計數(shù)值的初始值無需為0,可以為任意值,但需要在各節(jié)點設(shè)為相同。另外,增加也可以不是使計數(shù)值每次加I。只要是各節(jié)點按照相同的規(guī)則使計數(shù)值變化的方式即在全部節(jié)點處計數(shù)值變得相同的方式即可,也可以是每當(dāng)主消息發(fā)送時按照任意方式使計數(shù)值變化的方式。
[0015]主消息的發(fā)送節(jié)點利用該計數(shù)值生成包含在MAC消息中的MAC。更具體而言,對主消息和計數(shù)值應(yīng)用規(guī)定的算法而生成MAC。該規(guī)定的算法例如可以是由共用密鑰進(jìn)行加密的加密算法、需要事先共有密鑰的帶密鑰哈希函數(shù)等。此外,在生成MAC時,無需利用主消息的全部數(shù)據(jù)位,也可以僅根據(jù)其一部分和計數(shù)值來生成MAC。
[0016]在主消息的接收節(jié)點也同樣地,將規(guī)定的加密算法應(yīng)用于接收到的主消息和計數(shù)值來生成MAC。
[0017]根據(jù)本發(fā)明,能夠以可應(yīng)用于CAN協(xié)議的方式,通過MAC驗證主消息的正當(dāng)性。例如,即使是不正當(dāng)?shù)脑O(shè)備發(fā)送了與以前接收到的主消息對應(yīng)的MAC消息的情況下,由于在重發(fā)時計數(shù)值發(fā)生了變化,正確的MAC也發(fā)生了變化。因此,即使不正當(dāng)?shù)脑O(shè)備進(jìn)行重放攻擊,也能夠在接收節(jié)點處檢測出主消息不正當(dāng)。
[0018]另外,在本發(fā)明 中,由于主消息以明文的狀態(tài)在網(wǎng)絡(luò)上傳送,所以不正當(dāng)?shù)脑O(shè)備能夠知道主消息,但是計數(shù)值不在網(wǎng)絡(luò)上傳送,對不正當(dāng)?shù)脑O(shè)備來說計數(shù)值是未知的。因此,也存在以下優(yōu)點,即使竊聽了主消息和MAC消息,也不能據(jù)此推測用于生成MAC的加密算法、密鑰。
[0019]在本發(fā)明中,主消息可以包含消息ID和數(shù)據(jù)字段。在該情況下,主消息的計數(shù)值優(yōu)選按照每個消息ID獨立地計數(shù)。而且,MAC的生成優(yōu)選基于主消息所包含的消息ID和數(shù)據(jù)字段、以及與該消息ID對應(yīng)的計數(shù)值來生成。此外,在這種情況下,也可以僅根據(jù)數(shù)據(jù)字段和計數(shù)值來生成MAC。
[0020]另外,在本發(fā)明中,MAC優(yōu)選從使共用密鑰加密算法作用于消息ID、數(shù)據(jù)字段以及與消息ID對應(yīng)的計數(shù)而生成的位串,提取規(guī)定的位而生成。該方式在根據(jù)共用密鑰加密算法得到的位串超過MAC消息中能夠存儲的位數(shù)的情況下有效。此外,位的提取方法只要在各節(jié)點相同即可,可以是任意的方法。例如,可以從根據(jù)共用密鑰加密算法得到的位串提取前半部分的位串、提取后半部分的位串、提取第奇數(shù)個位串、第偶數(shù)個位串。
[0021]另外,在本發(fā)明中,優(yōu)選根據(jù)來自主節(jié)點的告知而進(jìn)行計數(shù)值的初始化。即,優(yōu)選網(wǎng)絡(luò)上的一個節(jié)點成為主節(jié)點,在通信系統(tǒng)啟動時通過廣播來告知與各消息ID對應(yīng)的計數(shù)值的初始值。
[0022]這樣,即使各節(jié)點沒有非易失性存儲器,也能夠在全部節(jié)點將計數(shù)值設(shè)為相同。
[0023]更具體而言,優(yōu)選按以下方式進(jìn)行計數(shù)值的初始化。即,主節(jié)點按照每個消息ID生成隨機(jī)值并進(jìn)行廣播發(fā)送。各節(jié)點取得廣播發(fā)送的隨機(jī)值,對該隨機(jī)值作用共用密鑰加密算法。然后,采用得到的值作為計數(shù)值的初始值。
[0024]這樣,由于計數(shù)值的初始值不在網(wǎng)絡(luò)上直接流動,所以,不正當(dāng)?shù)脑O(shè)備無法得知計數(shù)值以怎樣的值進(jìn)行了初始化。如果知道了初始值,則能夠知道任意時刻的計數(shù)值,也能夠根據(jù)主消息和MAC消息來解密密鑰,但通過隱藏計數(shù)的初始值,也能夠避免這種危險性。
[0025]此外,本發(fā)明能夠作為包含上述處理的至少一部分的消息認(rèn)證方法進(jìn)行掌握。另外,本發(fā)明也能夠作為執(zhí)行該方法的計算機(jī)程序進(jìn)行掌握。另外,本發(fā)明能夠作為執(zhí)行上述處理的至少一部分的通信系統(tǒng)以及構(gòu)成通信系統(tǒng)的通信裝置進(jìn)行掌握。上述裝置以及處理的每一個能夠以各種可能的方式相互組合而構(gòu)成本發(fā)明。
[0026]發(fā)明的效果
[0027]根據(jù)本發(fā)明,能夠以可應(yīng)用于CAN協(xié)議的方式來進(jìn)行消息的認(rèn)證。
【專利附圖】
【附圖說明】
[0028]圖1是表示CAN協(xié)議中的數(shù)據(jù)幀的格式的圖。
[0029]圖2是說明本實施方式中的消息驗證處理的概要的圖。
[0030]圖3是說明本實施方式中的MAC計算方法的概要的圖。
[0031]圖4是表示本 實施方式中的E⑶的功能結(jié)構(gòu)的圖。
[0032]圖5是表示發(fā)送消息的E⑶中的各功能部的協(xié)作的圖。
[0033]圖6是表示發(fā)送主消息的E⑶中的處理的流程的流程圖。
[0034]圖7是表示接收消息的ECU中的各功能部的協(xié)作的圖。
[0035]圖8是表示接收主消息的E⑶中的處理的流程的流程圖。
[0036]圖9是表示接收計數(shù)初始化消息的ECU中的各功能部的協(xié)作的圖。
[0037]圖10(a)是表示發(fā)送計數(shù)初始化消息的主節(jié)點中的處理的流程的流程圖;(b)是表示接收計數(shù)初始化消息的一般節(jié)點中的處理的流程的流程圖。
[0038]圖11是說明非專利文獻(xiàn)I中的消息驗證方法的圖。
【具體實施方式】
[0039]在說明本實施方式之前,說明CAN(Controller Area Network)協(xié)議的概要。CAN是用于相互連接的設(shè)備間的數(shù)據(jù)傳送的通信協(xié)議,例如用于汽車內(nèi)的各種ECU (ElectronicControl Unit:電子控制單元)間的通信等。
[0040]圖1是示出了用于CAN的數(shù)據(jù)幀的格式的圖。數(shù)據(jù)幀包含CANID(lOl)、數(shù)據(jù)字段
(102)以及CRC字段(103)等。省略圖示以外的字段的說明。在CAN中,使用CAN ID進(jìn)行消息的尋址。即,利用CAN ID表示該消息是怎樣的數(shù)據(jù),接收側(cè)參照CAN ID來判斷是否是自身節(jié)點需要進(jìn)行處理的數(shù)據(jù)。數(shù)據(jù)字段為(最大)64位的字段,在該數(shù)據(jù)字段中存儲數(shù)據(jù)的內(nèi)容。CRC字段存儲有根據(jù)數(shù)據(jù)字段等計算出的CRC碼,能夠檢測出伴隨著通信而產(chǎn)生的位遺失。
[0041]如上所述,在CAN中,在消息中不賦予表示發(fā)送源、發(fā)送目的地的ID,通過CAN ID來指示數(shù)據(jù)的內(nèi)容、接收節(jié)點。
[0042]在本實施方式中,在CAN網(wǎng)絡(luò)中應(yīng)用本發(fā)明,進(jìn)行消息的正當(dāng)性驗證。以下,一邊參照附圖一邊說明本實施方式。[0043](概要)
[0044]圖2是表示本發(fā)明的概要的圖。在與網(wǎng)絡(luò)連接的E⑶間進(jìn)行數(shù)據(jù)通信的情況下按以下方式進(jìn)行。即,在發(fā)送包含要通信的數(shù)據(jù)的消息(以下稱為主消息)后,發(fā)送包含相對于主消息的數(shù)據(jù)字段的MAC (消息認(rèn)證代碼)的消息(以下稱為MAC消息)。利用MAC進(jìn)行的消息認(rèn)證本身是已知的方法,在本實施方式中,也根據(jù)從接收到的主消息的數(shù)據(jù)字段得到的MAC與接收到的MAC消息所包含的MAC是否一致,來驗證在接收側(cè)主消息的正當(dāng)性。
[0045]在本實施方式中,如圖3(A)所示,在各個ECU中,對各CAN ID的消息被發(fā)送的次數(shù)進(jìn)行計數(shù)并存儲。而且,如圖3(B)所示,具有以下特征:使用主消息的數(shù)據(jù)字段、CAN ID以及與該CAN ID對應(yīng)的計數(shù)值來求出MAC。MAC的計算可通過使用哈希函數(shù)的方式(HMAC)、使用塊加密算法的方式(CMAC等)等任意的已知方法來進(jìn)行。在本實施方式中,通過作為共用密鑰塊加密之一的AES加密算法來求出MAC。雖然在AES中輸出至少為128位,但是由于存儲MAC的數(shù)據(jù)字段為64位,所以從128位的輸出提取規(guī)定的64位作為MAC來利用。此外,在共用密鑰加密算法中,也存在能夠輸出64位的算法,在采用這種共用密鑰加密算法時,無需上述提取作業(yè)。
[0046]在本實施方式中,由于各ECU分別按每個CAN ID對消息發(fā)送次數(shù)進(jìn)行計數(shù),所以各CAN ID的計數(shù)值在全部ECU中相同。因此,在接收側(cè)ECU中也能夠根據(jù)主消息所包含的數(shù)據(jù)字段和CAN ID以及自身節(jié)點所存儲的計數(shù)值來求出MAC。然后,根據(jù)按這種方式求出的MAC與MAC消息所包含的MAC是否一致,能夠驗證主消息的正當(dāng)性。
[0047]簡單地說明本實施方式的效果,第一,可例舉:由于未變更CAN協(xié)議,所以具有與已有系統(tǒng)的兼容性。例如,能夠利用以高速處理和低價化為目的而硬件化的CAN控制器。第二,由于每當(dāng)發(fā)送消息時更新計數(shù)值,所以即使不正當(dāng)?shù)脑O(shè)備按原樣發(fā)送以前接收到的消息,也能夠在接收側(cè) 驗證為不正當(dāng)?shù)南?。第三,由于計?shù)值不在網(wǎng)絡(luò)上流動,因此,事實上也不可能進(jìn)行接收主消息和MAC消息并對密鑰進(jìn)行解密的嘗試。第四,由于能夠在發(fā)送主消息后馬上發(fā)送對應(yīng)的MAC消息,所以能夠立刻驗證主消息的正當(dāng)性。
[0048](結(jié)構(gòu))
[0049]以下,更詳細(xì)地說明本實施方式。圖4是表示本實施方式中的ECU所具有的功能部的圖。E⑶由CPU、RAM、ROM、以及與傳感器、促動器的接口等構(gòu)成,通過由CPU執(zhí)行存儲于ROM中的程序,實現(xiàn)圖4所示的各功能部。圖4所示的功能部示出了消息發(fā)送和消息接收所需的全部功能,并根據(jù)處理內(nèi)容選擇性地執(zhí)行適當(dāng)?shù)墓δ懿俊?br>
[0050]此外,在本實施方式中,無需對全部消息進(jìn)行利用MAC的消息認(rèn)證。即,也可以僅針對重要的消息進(jìn)行消息認(rèn)證。而且,針對僅收發(fā)無需消息認(rèn)證的消息的ECU,不需要用于圖4所示的消息認(rèn)證的各功能部。
[0051]雖然對圖4所示的各功能部的詳細(xì)情況與消息收發(fā)處理一起進(jìn)行說明,但在這里針對幾個功能部附加說明。
[0052]在密鑰存儲部5中存儲在CAN網(wǎng)絡(luò)內(nèi)共用的密鑰(共用密鑰)。該密鑰需要不泄露到外部。在本實施方式中,采用AES加密算法并將密鑰長度設(shè)為128位。當(dāng)然,密鑰長度也可以更長,也可以采用AES以外的加密算法。
[0053]在計數(shù)存儲部3中,按每個CAN ID存儲表示消息在網(wǎng)絡(luò)上被傳送的次數(shù)的計數(shù)值。由于CAN為總線型架構(gòu),所以全部ECU能夠參照在網(wǎng)絡(luò)上傳送的消息,在各ECU中能夠進(jìn)行計數(shù)的更新。此外,各個ECU只要僅針對自身有可能收發(fā)的CAN ID來更新、存儲計數(shù)就足夠了。
[0054]此外,在本實施方式中,計數(shù)設(shè)為53位。這是因為:由于向加密算法的輸入需要128位,所以與數(shù)據(jù)字段(64位)、CAN ID(11位)相加而設(shè)為128位。但是,由于向加密算法的輸入也可進(jìn)行填充(padding),所以,即使計數(shù)的位數(shù)比53位少也沒有問題。例如,由于按照CAN的規(guī)范,即使20年持續(xù)地以最大限度的速度來發(fā)送消息,也只能發(fā)送24°個左右的消息,所以也可將計數(shù)值設(shè)為40位左右。當(dāng)然,也可容許計數(shù)值的重復(fù),在該情況下也可以是更少的位數(shù)。
[0055](消息發(fā)送時處理)
[0056]首先,參照圖5和圖6說明發(fā)送主消息的E⑶進(jìn)行的處理。圖5是表示發(fā)送E⑶中的各功能部的協(xié)作的圖。圖6是表示主消息發(fā)送時的處理的流程的流程圖。
[0057]主消息生成部9生成包含CAN ID和數(shù)據(jù)字段的主消息并發(fā)送到CAN。在圖6的流程圖中示出了發(fā)送主消息后的處理的流程。當(dāng)發(fā)送主消息時,CAN ID提取部6提取從主消息生成部9發(fā)送的主消息的CAN ID (SlOl)。CAN ID提取部6從計數(shù)存儲部3讀取與主消息的CAN ID對應(yīng)的計數(shù)值(S102),并使計數(shù)增加1,更新計數(shù)存儲部3 (S103)。提取的CAN ID和更新后的計數(shù)值發(fā)送到MAC生成 部4。
[0058]另外,數(shù)據(jù)字段提取部7提取主消息生成部9發(fā)送的主消息的數(shù)據(jù)字段(S104)。提取的數(shù)據(jù)字段發(fā)送到MAC生成部4。
[0059]MAC生成部4從密鑰存儲部5獲取密鑰(共用密鑰)(S105),使用該密鑰,并根據(jù)CAN ID、最新的計數(shù)值、發(fā)送完成的數(shù)據(jù)字段生成MAC(S106)。此外,如上所述,由于在本實施方式中采用了 AES,所以加密算法的輸出為128位,但CAN的數(shù)據(jù)幀發(fā)送的數(shù)據(jù)字段為64位。因此,按照在系統(tǒng)內(nèi)共用的規(guī)則,從輸出的128位提取64位。例如,既可以采用前半部64位或后半部64位,也可以采用奇數(shù)位或偶數(shù)位。進(jìn)一步地,也可以根據(jù)CAN ID為奇數(shù)還是偶數(shù)來決定是采用前半部64位還是采用后半部64位,或者是采用奇數(shù)位還是采用偶數(shù)位等。
[0060]MAC生成部4生成的MAC被發(fā)送到MAC消息生成部I (S107) ,MAC消息生成部I將MAC加工成CAN消息(MAC消息)并發(fā)送到CAN。即,計算出的64位的MAC被存儲在MAC消息的數(shù)據(jù)字段中。另外,MAC消息的CAN ID采用與主消息的CAN ID對應(yīng)的ID。根據(jù)主消息與MAC消息的CAN ID的對應(yīng),在接收側(cè)ECU中,在接收到MAC消息的情況下,能夠掌握相對于主消息的MAC,所述主消息具有對應(yīng)的CAN ID。
[0061](消息接收時處理)
[0062]接著,參照圖7和圖8說明接收主消息并進(jìn)行其驗證的E⑶的處理。圖7是表示接收ECU中的各功能部的協(xié)作的圖。圖8是表示主消息接收時的處理的流程的流程圖。
[0063]當(dāng)E⑶接收到主消息時,CAN ID提取部6經(jīng)由CAN消息解析部8提取接收到的主消息的CAN ID(S201)。此外,由于按每個CANID規(guī)定了消息的內(nèi)容,所以通過參照CAN ID也能夠判斷該消息是否需要MAC的認(rèn)證。如果接收到的主消息無需MAC的認(rèn)證,則無需進(jìn)行以下的處理。另外,在接收到的消息無需在自身節(jié)點進(jìn)行處理的情況下,也無需進(jìn)行以下的處理。
[0064]當(dāng)接收到的主消息是自身節(jié)點需要進(jìn)行處理且進(jìn)行MAC的消息認(rèn)證的主消息時,在根據(jù)提取的CAN ID判斷的情況下進(jìn)行以下的處理。CAN ID提取部6從計數(shù)存儲部3讀取與提取的CAN ID對應(yīng)的計數(shù)值(S202),并使計數(shù)增加1,更新計數(shù)存儲部3 (S203)。提取的CAN ID和更新后的計數(shù)值發(fā)送到MAC生成部4。
[0065]另外,數(shù)據(jù)字段提取部7經(jīng)由CAN消息解析部8提取接收到的主消息的數(shù)據(jù)字段(S204)。提取的數(shù)據(jù)字段發(fā)送到MAC生成部4。
[0066]MAC生成部4從密鑰存儲部5獲取密鑰(共用密鑰)(S205),使用該密鑰,并根據(jù)接收到的消息的數(shù)據(jù)字段、CAN ID以及與CANID對應(yīng)的最新的計數(shù)值生成MAC(S206)。由于MAC的生成方法與消息發(fā)送時的方法相同,所以省略詳細(xì)的說明。MAC生成部4生成的MAC發(fā)送到MAC比較部2 (S207)。
[0067]接收側(cè)E⑶等待CAN消息解析部8接收與主消息對應(yīng)的MAC消息(S208~S209)。如上所述,由于主消息及其MAC消息對應(yīng)有CANID,所以CAN消息解析部8等待具有與主消息的CAN ID對應(yīng)的CANID的消息到達(dá)。
[0068]當(dāng)與主消息對應(yīng)的MAC消息到達(dá)時(S209-是),數(shù)據(jù)字段提取部7經(jīng)由CAN消息解析部8從MAC消息提取MAC (S211)。如上所述,MAC存儲于MAC消息的數(shù)據(jù)字段(64位)。數(shù)據(jù)字段提取部7提取的MAC發(fā)送到MAC比較部2 (S212)。
[0069]MAC比較部2比較MAC生成部4生成的MAC和從接收到的MAC消息提取的MAC (S213)。如果這兩個MAC相同(S214-是),則可知主消息正當(dāng),所以接收E⑶對主消息進(jìn)行處理(S216)。另一方面,如果這兩個MAC不同(S214-否),則可知主消息不正當(dāng),所以接收E⑶不處理主消息(S215)。此外,可考慮各種接收到不正當(dāng)?shù)闹飨⒑蟮奶幚?,無論進(jìn)行哪樣的應(yīng)對都可以。
[0070](計數(shù)初始化處理)
[0071]接著,說明每個CAN ID的計數(shù)值的初始化。計數(shù)值需要在系統(tǒng)內(nèi)的全部ECU中共用。雖然系統(tǒng)啟動過程中能夠通過對在網(wǎng)絡(luò)上傳送的消息進(jìn)行計數(shù)而在全部ECU中將計數(shù)設(shè)為相同,但是在系統(tǒng)啟動時也需要使計數(shù)值一致。因此,也可以考慮在全部ECU中設(shè)置可讀寫的非易失性存儲器,存儲電源斷開時的計數(shù)值,并在再次打開系統(tǒng)時從該非易失性存儲器讀入計數(shù)值并使用。然而,在本實施方式中,按以下方式使系統(tǒng)開始時的計數(shù)值一致而并不在全部ECU中設(shè)置非易失性存儲器。
[0072]在本實施方式中,為了計數(shù)的初始化處理,將網(wǎng)絡(luò)內(nèi)的任意ECU用作計數(shù)初始化用的ECU (以下也稱為主節(jié)點)。主節(jié)點在系統(tǒng)開始時針對全部CAN ID (是指與需要進(jìn)行消息認(rèn)證的消息對應(yīng)的CANID。以下相同)進(jìn)行向全部ECU告知計數(shù)值的初始值的處理。
[0073]圖9是示出了從主節(jié)點接收到計數(shù)值的初始化消息時的、一般節(jié)點的各功能部的協(xié)作的圖。圖10(a)是表示發(fā)送計數(shù)值的初始化消息的主節(jié)點的處理流程的流程圖。圖10(b)是表示接收到初始化消息的一般節(jié)點的處理流程的流程圖。
[0074]首先,參照圖10(a)說明主節(jié)點進(jìn)行的處理。當(dāng)系統(tǒng)啟動時,主節(jié)點選擇CANID(S301),產(chǎn)生用于決定該CAN ID的計數(shù)初始值的隨機(jī)數(shù)(S302)。然后,與初始化計數(shù)的CAN ID相關(guān)聯(lián)地,發(fā)送該隨機(jī)數(shù)作為計數(shù)初始化消息(S303)。在主節(jié)點處,針對全部CAN ID發(fā)送這樣的計數(shù)初始化消息。
[0075] 接著,參照圖9和圖10(b)說明一般節(jié)點進(jìn)行的處理。一般節(jié)點在接收到計數(shù)初始化消息的情況下(S311),如果該消息是相對于在自身節(jié)點收發(fā)(即,需要存儲計數(shù)值)的CAN ID的計數(shù)初始化消息,則進(jìn)行以下的處理。
[0076]數(shù)據(jù)字段提取部7從計數(shù)初始化消息的數(shù)據(jù)字段取得主節(jié)點生成的隨機(jī)值(S312)。然后,將該隨機(jī)值發(fā)送到MAC生成部4。然后,使用MAC生成部4所包含的加密算法,使用密鑰存儲部5內(nèi)的密鑰(共用密鑰)來加密接收到的隨機(jī)值(S313)。然后,將得到的數(shù)值作為該CAN ID用的計數(shù)的初始值,存儲在計數(shù)存儲部3中(S314)。此外,由于加密處理的輸出位數(shù)(128位)與計數(shù)的位數(shù)(53)不一致,所以按照例如采用前半部53位或采用后半部53位等在系統(tǒng)內(nèi)共用的規(guī)則來決定計數(shù)的初始值。
[0077]這樣,無需設(shè)置用于存儲計數(shù)的非易失性存儲器,另外,能夠不以明文在網(wǎng)絡(luò)上傳送計數(shù)值本身,而在系統(tǒng)啟動時在全部ECU中將計數(shù)值設(shè)為共用。
[0078](本實施方式的作用、效果)
[0079]根據(jù)本實施方式,通過使用消息認(rèn)證代碼(MAC)進(jìn)行主消息的驗證,能夠判斷主消息是正規(guī)的消息還是從不正當(dāng)?shù)脑O(shè)備發(fā)送的不正當(dāng)消息。由于每當(dāng)發(fā)送消息時用于計算MAC的計數(shù)值發(fā)生變化,所以在進(jìn)行了重發(fā)以前接收到的消息的重放攻擊的情況下,在接收側(cè)ECU根據(jù)MAC的差異能夠檢測出不正當(dāng)攻擊。
[0080]另外,本實施方式的MAC的消息驗證處理是按照標(biāo)準(zhǔn)化的CAN協(xié)議的設(shè)計,所以能夠減小對已有系統(tǒng)的影響。例如,雖然處理CAN消息的CAN控制器以高速處理及低價化作為目的而硬件化,但在本實施方式中,能夠使用這種已有的CAN控制器來安裝。
[0081]另外,在本實施方式中,為了計算MAC而利用了主消息的數(shù)據(jù)字段、CAN ID和計數(shù)值。在此,數(shù)據(jù)字段和CAN ID以明文在網(wǎng)絡(luò)上流動,但計數(shù)值本身不在網(wǎng)絡(luò)上流動。如果加密前的文本和加密后的文本全部知道,則通過接收大部分的消息而可能解密密鑰,但在本實施方式中,由于不正當(dāng)?shù)脑O(shè)備不能得到計數(shù)值,所以也不可能解密密鑰。
[0082]另外,由于設(shè)計成在發(fā)送主消息后能夠立即發(fā)送對應(yīng)的MAC消息,所以能夠在接收E⑶側(cè)立刻判斷主消息的正當(dāng)性。
[0083](變形例)
[0084]本發(fā)明不限定于以上的實施方式,很明顯能夠進(jìn)行各種變形。例如,采用的加密算法、密鑰長度等可以是任意的,計數(shù)值的位長等也能夠考慮對安全性的要求和對成本的要求來設(shè)定為任意的長度。另外,在上述說明中,說明了針對CAN應(yīng)用了本發(fā)明的實施例,但即使是除CAN以外的情形,只要是按照與CAN類似的協(xié)議的通信系統(tǒng)就能夠應(yīng)用本發(fā)明。
[0085]另外,在上述實施方式中,根據(jù)主消息所包含的CAN ID、數(shù)據(jù)字段以及與CAN ID對應(yīng)的計數(shù)值生成MAC,但也可僅根據(jù)主消息的數(shù)據(jù)字段和計數(shù)值生成MAC。這樣,也能夠判斷主消息是通過重放攻擊等發(fā)送來的消息還是正當(dāng)?shù)南ⅰ?br>
[0086]另外,在上述說明中,在接收主消息時和發(fā)送主消息時增加計數(shù)值,使用增加后的計數(shù)值計算MAC,但也可以使用增加前的計數(shù)值計算MAC。另外,以計數(shù)值的增加每次增加I進(jìn)行了說明,但只要在全部ECU中采用共用的規(guī)則,則不一定需要每次增加1,也可以每次增加I以外的值。 [0087]另外,在上述實施方式中,在利用MAC驗證主消息為正當(dāng)?shù)闹飨⒑筮M(jìn)行主消息的處理,但是對于要求處理的實時性的消息,也可以首先進(jìn)行主消息的處理,然后驗證其正當(dāng)性。在該情況下,在判定消息為不正當(dāng)?shù)南⒌那闆r下,之后可忽視具有對應(yīng)的CAN ID的消息。[0088]附圖標(biāo)記說明
[0089]IMAC消息生成部
[0090]2MAC 比較部
[0091]3計數(shù)存儲部
[0092]4MAC 生成部
[0093]5密鑰存儲部
[0094]6CAN ID 提取部
[0095]7數(shù)據(jù)字段提取部
[0096]8CAN消息解析部
[0097]9CAN消 息生成部
【權(quán)利要求】
1.一種消息認(rèn)證方法,是網(wǎng)絡(luò)連接了多個節(jié)點的通信系統(tǒng)中的消息認(rèn)證方法,其特征在于,包含: 各節(jié)點在每當(dāng)主消息由其他節(jié)點發(fā)送時,增加存儲在各節(jié)點中的計數(shù)值的步驟; 發(fā)送節(jié)點發(fā)送主消息的步驟; 發(fā)送節(jié)點在發(fā)送所述主消息時增加計數(shù)值的步驟; 發(fā)送節(jié)點發(fā)送包含消息認(rèn)證代碼的MAC消息的步驟,所述消息認(rèn)證代碼基于所述主消息和所述計數(shù)值而生成; 接收節(jié)點接收所述主消息和所述MAC消息的步驟;以及 接收節(jié)點根據(jù)基于所述主消息和所述計數(shù)值生成的消息認(rèn)證代碼與所述MAC消息所包含的消息認(rèn)證代碼是否一致,來驗證所述主消息的正當(dāng)性的步驟。
2.根據(jù)權(quán)利要求1所述的消息認(rèn)證方法,其特征在于, 所述消息認(rèn)證代碼通過利用共用密鑰的加密算法而生成。
3.一種消息認(rèn)證方法,是網(wǎng)絡(luò)連接了多個節(jié)點的通信系統(tǒng)中的消息認(rèn)證方法,其特征在于,包含: 各節(jié)點在每當(dāng)具有規(guī)定的消息ID的消息由其他節(jié)點發(fā)送時,增加存儲于各節(jié)點中的與該消息ID對應(yīng)的計數(shù) 值的步驟; 發(fā)送節(jié)點發(fā)送包含消息ID和數(shù)據(jù)字段的主消息的步驟; 發(fā)送節(jié)點在發(fā)送所述主消息時增加與所述消息ID對應(yīng)的計數(shù)值的步驟; 發(fā)送節(jié)點發(fā)送包含消息認(rèn)證代碼的MAC消息的步驟,所述消息認(rèn)證代碼基于所述消息ID、所述數(shù)據(jù)字段以及與所述消息ID對應(yīng)的計數(shù)值而生成; 接收節(jié)點接收所述主消息和所述MAC消息的步驟;以及 接收節(jié)點根據(jù)基于與所述消息ID對應(yīng)的計數(shù)值、以及所述主消息所包含的所述消息ID和所述數(shù)據(jù)字段而生成的消息認(rèn)證代碼與所述MAC消息所包含的消息認(rèn)證代碼是否一致,來驗證所述主消息的正當(dāng)性的步驟。
4.根據(jù)權(quán)利要求3所述的消息認(rèn)證方法,其特征在于, 所述消息認(rèn)證代碼通過利用共用密鑰的加密算法而生成。
5.根據(jù)權(quán)利要求4所述的消息認(rèn)證方法,其特征在于, 所述消息認(rèn)證代碼從位串提取規(guī)定的位而生成,所述位串使利用所述共用密鑰的所述加密算法作用于所述消息ID、所述數(shù)據(jù)字段以及與所述消息ID對應(yīng)的計數(shù)值而生成。
6.根據(jù)權(quán)利要求3~5中任一項所述的消息認(rèn)證方法,其特征在于, 主節(jié)點在通信系統(tǒng)啟動時通過廣播來告知與各消息ID對應(yīng)的計數(shù)值的初始值。
7.根據(jù)權(quán)利要求6所述的消息認(rèn)證方法,其特征在于, 所述主節(jié)點按照每個消息ID生成隨機(jī)值并進(jìn)行廣播發(fā)送, 各節(jié)點將使利用共用密鑰的加密算法作用于所接收到的隨機(jī)值而生成的數(shù)值,用作與各消息ID對應(yīng)的計數(shù)值的初始值。
8.一種通信系統(tǒng),是至少網(wǎng)絡(luò)連接了發(fā)送節(jié)點和接收節(jié)點的通信系統(tǒng),其特征在于, 發(fā)送節(jié)點具有: 計數(shù)值存儲構(gòu)件,所述計數(shù)值存儲構(gòu)件存儲計數(shù)值; 計數(shù)值增加構(gòu)件,每當(dāng)接收其他節(jié)點發(fā)送的主消息時以及每當(dāng)自身節(jié)點發(fā)送主消息時,所述計數(shù)值增加構(gòu)件增加計數(shù)值; 主消息發(fā)送構(gòu)件,所述主消息發(fā)送構(gòu)件發(fā)送主消息;以及 MAC消息發(fā)送構(gòu)件,所述MAC消息發(fā)送構(gòu)件發(fā)送MAC消息,所述MAC消息包含基于所述主消息和所述計數(shù)值生成的消息認(rèn)證代碼, 接收節(jié)點具有: 計數(shù)值存儲構(gòu)件,所述計數(shù)值存儲構(gòu)件存儲計數(shù)值; 計數(shù)值增加構(gòu)件,每當(dāng)接收主消息時,所述計數(shù)值增加構(gòu)件增加計數(shù)值; 接收構(gòu)件,所述接收構(gòu)件接收從發(fā)送節(jié)點發(fā)送的主消息和MAC消息;以及消息驗證構(gòu)件,所述消息驗證構(gòu)件根據(jù)基于所述主消息和所述計數(shù)值生成的消息認(rèn)證代碼與所述MAC消息所包含的消息認(rèn)證代碼是否一致,來驗證所述主消息的正當(dāng)性。
9.根據(jù)權(quán)利要求8所述的通信系統(tǒng),其特征在于, 所述發(fā)送節(jié)點的MAC消息發(fā)送構(gòu)件和所述接收節(jié)點的消息驗證構(gòu)件通過利用共用密鑰的加密算法而生成消息認(rèn)證代碼。
10.一種通信系統(tǒng),是至少網(wǎng)絡(luò)連接了發(fā)送節(jié)點和接收節(jié)點的通信系統(tǒng),其特征在于, 發(fā)送節(jié)點具有: 計數(shù)值存儲構(gòu)件,所述計數(shù)值存儲構(gòu)件存儲與消息ID對應(yīng)的計數(shù)值; 計數(shù)值增加構(gòu)件,每當(dāng)具有規(guī)定的消息ID的主消息由其他節(jié)點發(fā)送時以及每當(dāng)自身節(jié)點發(fā)送具有規(guī)定的消息ID的主消息時,所述計數(shù)值增加構(gòu)件增加與該消息ID對應(yīng)的計數(shù)值; 主消息發(fā)送構(gòu)件,所述主消息發(fā)送構(gòu)件發(fā)送包含消息ID和數(shù)據(jù)字段的主消息;以及MAC消息發(fā)送構(gòu)件,所述MAC消息發(fā)送構(gòu)件發(fā)送包含消息認(rèn)證代碼的MAC消息,所述消息認(rèn)證代碼基于所述消息ID、所述數(shù)據(jù)字段以及與所述消息ID對應(yīng)的計數(shù)值而生成,接收節(jié)點具有: 計數(shù)值存儲構(gòu)件,所述計數(shù)值存儲構(gòu)件存儲與消息ID對應(yīng)的計數(shù)值; 計數(shù)值增加構(gòu)件,每當(dāng)具有規(guī)定的消息ID的主消息由其他節(jié)點發(fā)送時,所述計數(shù)值增加構(gòu)件增加與該消息ID對應(yīng)的計數(shù)值; 接收構(gòu)件,所述接收構(gòu)件接收從發(fā)送節(jié)點發(fā)送的主消息和MAC消息;以及消息驗證構(gòu)件,所述消息驗證構(gòu)件根據(jù)基于與所述消息ID對應(yīng)的計數(shù)值、以及所述主消息所包含的所述消息ID和所述數(shù)據(jù)字段而生成的消息認(rèn)證代碼與所述MAC消息所包含的消息認(rèn)證代碼是否一致,來驗證所述主消息的正當(dāng)性。
11.根據(jù)權(quán)利要求10所述的通信系統(tǒng),其特征在于, 所述發(fā)送節(jié)點的MAC消息發(fā)送構(gòu)件和所述接收節(jié)點的消息驗證構(gòu)件通過利用共用密鑰的加密算法而生成消息認(rèn)證代碼。
12.根據(jù)權(quán)利要求11所述的通信系統(tǒng),其特征在于, 所述發(fā)送節(jié)點的MAC消息發(fā)送構(gòu)件和所述接收節(jié)點的消息驗證構(gòu)件從位串提取規(guī)定的位而生成消息認(rèn)證代碼,其中,針對所述消息ID、所述數(shù)據(jù)字段以及與所述消息ID對應(yīng)的計數(shù)值,通過利用所述共用密鑰的所述加密算法而生成所述位串。
13.根據(jù)權(quán)利要求10~12中任一項所述的通信系統(tǒng),其特征在于, 還包含主節(jié)點,所述主節(jié)點在通信系統(tǒng)啟動時通過廣播來告知與各消息ID對應(yīng)的計數(shù)值的初始值。
14.根據(jù)權(quán)利要求13所述的通信系統(tǒng),其特征在于, 所述主節(jié)點按照每個消息ID生成隨機(jī)值并進(jìn)行廣播發(fā)送, 所述發(fā)送節(jié)點和接收節(jié)點將針對接收到的隨機(jī)值通過利用共用密鑰的加密算法而生成的數(shù)值,用作與各 消息ID對應(yīng)的計數(shù)值的初始值。
【文檔編號】H04L9/32GK104025506SQ201280053525
【公開日】2014年9月3日 申請日期:2012年10月30日 優(yōu)先權(quán)日:2011年10月31日
【發(fā)明者】小熊壽, 松本勉, 畑正人, 田邊正人, 吉岡克成, 大石和臣 申請人:豐田自動車株式會社, 國立大學(xué)法人橫濱國立大學(xué)