本發(fā)明涉及第一通信裝置和第二通信裝置共享在加密處理中使用的密鑰信息的通信系統(tǒng)及密鑰信息共享方法。
背景技術:
以往,在多個通信裝置通過網(wǎng)絡進行通信的通信系統(tǒng)中,為了提高通信的可靠性,進行提供了數(shù)據(jù)的加密或消息認證碼的通信等。為了進行加密等處理,進行通信的各通信裝置需要保存共享密鑰。
在專利文獻1中,提出了進行在通用密鑰加密方式中使用的加密密鑰的更新的加密密鑰更新系統(tǒng)。在該加密密鑰更新系統(tǒng)中,在電子鑰匙和車載設備之間預先共享保密信息,將對保密信息重復應用散列函數(shù)而得到的結果作為共同的加密密鑰。在更新加密密鑰時,將以比此前的重復次數(shù)少一次的次數(shù)應用散列函數(shù)而得到的結果作為加密密鑰。
現(xiàn)有技術文獻
專利文獻
專利文獻1:日本特開2009-284086號公報
技術實現(xiàn)要素:
發(fā)明要解決的課題
本申請的發(fā)明人發(fā)明了能夠檢測針對存儲在通信裝置的存儲部中的程序和數(shù)據(jù)等的非法篡改的通信系統(tǒng),并已經(jīng)提出了專利申請。在該通信系統(tǒng)中也為了提高通信的安全性和可靠性等,希望共享密鑰信息而進行提供了在通信裝置間收發(fā)的數(shù)據(jù)的加密或消息認證碼的通信等。
本發(fā)明是鑒于上述情況而完成的,其目的在于,提供第一通信裝置和第二通信裝置能夠共享密鑰信息而進行加密處理的通信系統(tǒng)及密鑰信息共享方法。
用于解決課題的技術方案
本發(fā)明的通信系統(tǒng)是,第一通信裝置與具有存儲部的第二通信裝置共享在加密處理中使用的密鑰信息,所述通信系統(tǒng)的特征在于,所述第一通信裝置具備:存儲部,存儲有所述第二通信裝置的所述存儲部的存儲內容;第一散列值計算單元,計算基于該存儲部的存儲內容的散列值;提取單元,從該第一散列值計算單元計算出的散列值中提取第一部分;以及第一部分發(fā)送單元,將該提取單元提取的所述第一部分發(fā)送到所述第二通信裝置,所述第二通信裝置具備:第二散列值計算單元,計算基于自身的存儲部的存儲內容的散列值;第一部分接收單元,從所述第一通信裝置接收所述第一部分;散列值判定單元,判定該第一部分接收單元接收到的所述第一部分是否與所述第二散列值計算單元計算出的散列值的一部分一致;提取單元,在該散列值判定單元判定為一致時,從所述第二散列值計算單元計算出的散列值中提取與所述第一部分不同的第二部分;第二部分發(fā)送單元,將該提取單元提取的所述第二部分發(fā)送到所述第一通信裝置;以及生成單元,根據(jù)從所述第二散列值計算單元計算出的散列值中除去所述第一部分和所述第二部分而得到的剩余值,生成所述密鑰信息,所述第一通信裝置還具備:第二部分接收單元,從所述第二通信裝置接收所述第二部分;散列值判定單元,判定該第二部分接收單元接收到的所述第二部分是否與所述第一散列值計算單元計算出的散列值的一部分一致;以及生成單元,在該散列值判定單元判定為一致時,根據(jù)從所述第一散列值計算單元計算出的散列值中除去所述第一部分和所述第二部分而得到的剩余值,生成所述密鑰信息。
另外,在本發(fā)明的通信系統(tǒng)中,其特征在于,所述第一通信裝置和所述第二通信裝置的生成單元將所述剩余值作為所述密鑰信息。
另外,在本發(fā)明的通信系統(tǒng)中,其特征在于,所述第一通信裝置具備:第一秘密值生成單元,生成第一秘密值;第一公開值生成單元,根據(jù)所述剩余值和所述第一秘密值生成單元生成的第一秘密值,生成第一公開值;第一公開值發(fā)送單元,將該第一公開值生成單元生成的第一公開值發(fā)送到所述第二通信裝置;以及第二公開值接收單元,從所述第二通信裝置接收第二公開值,所述第一通信裝置的生成單元根據(jù)所述第一秘密值和所述第二公開值接收單元接收到的所述第二公開值,生成所述密鑰信息,所述第二通信裝置具備:第二秘密值生成單元,生成第二秘密值;第二公開值生成單元,根據(jù)所述剩余值和所述第二秘密值生成單元生成的第二秘密值,生成所述第二公開值;第二公開值發(fā)送單元,將該第二公開值生成單元生成的第二公開值發(fā)送到所述第一通信裝置;以及第一公開值接收單元,從所述第一通信裝置接收所述第一公開值,所述第二通信裝置的生成單元根據(jù)所述第二秘密值和所述第一公開值接收單元接收到的所述第一公開值,生成所述密鑰信息。
另外,在本發(fā)明的通信系統(tǒng)中,其特征在于,所述第一通信裝置和所述第二通信裝置分別具有:質數(shù)表,存儲有多個質數(shù);以及質數(shù)選擇單元,從所述質數(shù)表選擇質數(shù),所述第一通信裝置的所述第一公開值生成單元使用所述質數(shù)選擇單元選擇的質數(shù)來生成所述第一公開值,所述第二通信裝置的所述第二公開值生成單元使用所述質數(shù)選擇單元選擇的質數(shù)來生成所述第二公開值。
另外,在本發(fā)明的通信系統(tǒng)中,其特征在于,所述第一秘密值生成單元和所述第二秘密值生成單元根據(jù)隨機數(shù)來生成所述第一秘密值和所述第二秘密值。
另外,在本發(fā)明的通信系統(tǒng)中,其特征在于,所述第一通信裝置具備:散列值計算用信息生成單元,生成在散列值計算中使用的信息;以及散列值計算用信息發(fā)送單元,將該散列值計算用信息生成單元生成的散列值計算用信息發(fā)送到所述第二通信裝置,所述第一散列值計算單元使用所述散列值計算用信息生成單元生成的散列值計算用信息來計算散列值,所述第二通信裝置具有從所述第一通信裝置接收所述散列值計算用信息的散列值計算用信息接收單元,所述第二散列值計算單元使用所述散列值計算用信息接收單元接收到的散列值計算用信息來計算散列值。
另外,在本發(fā)明的通信系統(tǒng)中,其特征在于,在所述散列值計算用信息生成單元生成的散列值計算用信息中包含隨機數(shù)。
另外,在本發(fā)明的通信系統(tǒng)中,其特征在于,在所述散列值計算用信息生成單元生成的散列值計算用信息中,包含對作為散列值的計算對象的所述第二通信裝置的存儲部的區(qū)域進行規(guī)定的信息。
另外,在本發(fā)明的通信系統(tǒng)中,其特征在于,所述第一通信裝置具備:第一散列值存儲部,存儲所述第一散列值計算單元計算出的散列值;以及更新處理單元,進行根據(jù)該第一散列值存儲部存儲的散列值來更新所述密鑰信息的處理。
另外,在本發(fā)明的通信系統(tǒng)中,其特征在于,所述更新處理單元通過所述第一通信裝置的提取單元從所述第一散列值存儲部存儲的散列值中提取第一部分,并通過所述第一部分發(fā)送單元將所提取的所述第一部分發(fā)送到所述第二通信裝置,通過所述第二部分接收單元從所述第二通信裝置接收第二部分,更新所述剩余值。
另外,在本發(fā)明的通信系統(tǒng)中,其特征在于,所述第二通信裝置具備:第二散列值存儲部,存儲所述第二散列值計算單元計算出的散列值;以及更新處理單元,根據(jù)通過所述第一通信裝置的所述更新處理單元的更新處理發(fā)送的所述第一部分,通過所述第二通信裝置的提取單元來提取所述第二部分,并通過所述第二部分發(fā)送單元將所提取的所述第二部分發(fā)送到所述第一通信裝置,根據(jù)所述第一部分和所述第二部分來更新所述剩余值。
另外,本發(fā)明的密鑰信息共享方法是,第一通信裝置與具有存儲部的第二通信裝置共享在加密處理中使用的密鑰信息,所述密鑰信息共享方法的特征在于,在所述第一通信裝置中復寫有所述第二通信裝置的存儲部的存儲內容,所述密鑰信息共享方法包括如下步驟:第一散列值計算步驟,所述第一通信裝置計算基于所復寫的存儲內容的散列值;提取步驟,從在該第一散列值計算步驟中計算出的散列值中提取第一部分;第一部分發(fā)送步驟,將在該提取步驟中提取的所述第一部分發(fā)送到所述第二通信裝置;第二散列值計算步驟,所述第二通信裝置計算基于所述存儲部的存儲內容的散列值;第一部分接收步驟,所述第二通信裝置從所述第一通信裝置接收所述第一部分;散列值判定步驟,判定在該第一部分接收步驟中接收到的所述第一部分是否與在所述第二散列值計算步驟中計算出的散列值的一部分一致;提取步驟,當在該散列值判定步驟中判定為一致時,從在所述第二散列值計算步驟中計算出的散列值中提取與所述第一部分不同的第二部分;響應信息發(fā)送步驟,將在該提取步驟中提取的所述第二部分發(fā)送到所述第一通信裝置;密鑰信息生成步驟,生成與從在所述第二散列值計算步驟中計算出的散列值中除去所述第一部分和所述第二部分而得到的剩余值對應的密鑰信息;第二部分接收步驟,所述第一通信裝置從所述第二通信裝置接收所述第二部分;散列值判定步驟,判定在該第二部分接收步驟中接收到的所述第二部分是否與在所述第一散列值算步驟中計算出的散列值的一部分一致;以及密鑰信息生成步驟,當在該散列值判定步驟中判定為一致時,生成與從在所述第一散列值計算步驟中計算出的散列值中除去所述第一部分和所述第二部分而得到的剩余值對應的密鑰信息。
在本發(fā)明中,第一通信裝置和第二通信裝置共享密鑰信息。第一通信裝置對復寫了第二通信裝置的存儲部的存儲內容而得到的內容進行存儲,具有根據(jù)所復寫的存儲內容來計算散列值的第一散列值計算單元。第二通信裝置具有根據(jù)自身的存儲部的存儲內容來計算散列值的第二散列值計算單元。另外,第一散列值計算單元和第二散列值計算單元進行相同的計算,如果輸入信息相同則計算出的散列值相同。
第一通信裝置計算基于所復寫的存儲內容的散列值,將其一部分提取為第一部分并發(fā)送到第二通信裝置。第二通信裝置對從第一通信裝置接收到的散列值的第一部分與根據(jù)自身的存儲內容計算出的散列值進行比較,判定所接收到的第一部分與自身的散列值的一部分是否一致。在兩散列值不一致時,第二通信裝置的存儲內容與第一通信裝置的所復寫的存儲內容變得不一致,因此能夠判斷為存在第二通信裝置的存儲內容被非法篡改的可能性。在兩散列值一致時,第二通信裝置從自身計算的散列值中提取與接收到的第一部分不同的第二部分并發(fā)送到第二通信裝置。
第一通信裝置對從第二通信裝置接收到的散列值的第二部分與自身計算出的散列值進行比較,判定所接收到的第二部分與自身的散列值的一部分是否一致。在兩散列值不一致時,第二通信裝置的存儲內容與第一通信裝置的所復寫的存儲內容變得不一致,因此能夠判斷為存在第二通信裝置的存儲內容被非法篡改的可能性。在兩散列值一致時,第一通信裝置和第二通信裝置都能夠判斷為各自計算出的散列值一致,存儲內容未被非法篡改。
因此,第一通信裝置和第二通信裝置計算從自身計算出的散列值中除去第一通信裝置提取的第一部分和第二通信裝置提取的第二部分而得到的剩余值,根據(jù)該剩余值來生成密鑰信息。
由此,第一通信裝置和第二通信裝置能夠同時進行檢測第二通信裝置的存儲部的存儲內容的非法篡改的處理和確定用于加密處理的密鑰信息的處理。
另外,在本發(fā)明中,第一通信裝置和第二通信裝置將計算出的剩余值作為密鑰信息來進行加密處理。另外,可以將全部剩余值作為密鑰信息,也可以將剩余值的一部分作為密鑰信息。由此,第一通信裝置和第二通信裝置能夠在非法篡改的檢測處理結束的同時獲取密鑰信息。
另外,在本發(fā)明中,第一通信裝置和第二通信裝置,例如通過隨機數(shù)等分別生成秘密值,根據(jù)秘密值和剩余值來生成公開值并彼此發(fā)送,根據(jù)自身的秘密值和接收到的公開值來分別生成密鑰信息。
例如,第一通信裝置和第二通信裝置存儲有共同的質數(shù)表。在質數(shù)表中存儲有多個質數(shù),第一通信裝置和第二通信裝置從質數(shù)表選擇質數(shù),并使用所選擇的質數(shù)分別生成公開值。
由此,能夠提高第一通信裝置和第二通信裝置共享的密鑰信息的隱匿性。
另外,在本發(fā)明中,在散列值的計算之前,第一通信裝置生成散列值計算用信息并發(fā)送到第二通信裝置。例如能夠將散列值計算用信息設為隨機數(shù)。另外,例如能夠將散列值計算用信息設為對作為散列值計算對象的存儲部的區(qū)域進行規(guī)定的信息。第一通信裝置和第二通信裝置使用散列值計算用信息來進行基于存儲內容的散列值的計算。
由此,由于散列值計算變得困難,因此能夠提高存儲內容的非法篡改的檢測可靠性,能夠提高共享的密鑰信息的可靠性。
另外,在本發(fā)明中,第一通信裝置和第二通信裝置分別存儲所計算出的散列值。第一通信裝置在例如從生成密鑰信息經(jīng)過了預定期間時等適當?shù)臅r刻,進行密鑰信息的更新處理。在更新處理中,通過使用所存儲的散列值,能夠減少處理負荷。第一通信裝置從所存儲的散列值中提取與以往不同的第一部分并發(fā)送到第二通信裝置,從而開始密鑰信息的更新處理。第二通信裝置根據(jù)接收到的第一部分和所存儲的散列值來進行第二部分的提取,將第二部分發(fā)送到第一通信裝置。由此,第一通信裝置和第二通信裝置能夠根據(jù)新的第一部分和第二部分來計算剩余值,能夠更新密鑰信息。
發(fā)明效果
在本發(fā)明的情況下,能夠利用針對第二通信裝置的存儲部的存儲內容的非法篡改檢測的處理,通過第一通信裝置和第二通信裝置來進行密鑰信息的共享。第一通信裝置和第二通信裝置利用共享的密鑰信息來進行加密處理,從而能夠進行可靠性較高的通信。
附圖說明
圖1是示出本實施方式的通信系統(tǒng)的結構的示意圖。
圖2是示出ECU的結構的框圖。
圖3是示出ECU的ROM的結構的示意圖。
圖4是示出監(jiān)視裝置的結構的框圖。
圖5是說明存儲在監(jiān)視裝置的存儲部中的復寫數(shù)據(jù)的構成的示意圖。
圖6是用于說明基于監(jiān)視裝置和ECU的非法篡改檢測處理和共享密鑰生成處理的示意圖。
圖7是用于說明基于監(jiān)視裝置和ECU的非法篡改檢測處理和共享密鑰生成處理的示意圖。
圖8是用于說明共享密鑰的更新處理的示意圖。
圖9是示出監(jiān)視裝置所進行的非法篡改檢測和共享密鑰生成的處理步驟的流程圖。
圖10是示出ECU根據(jù)來自監(jiān)視裝置的散列值計算指示而進行的處理的步驟的流程圖。
圖11是示出ECU根據(jù)來自監(jiān)視裝置的散列確認指示而進行的處理的步驟的流程圖。
圖12是示出監(jiān)視裝置所進行的共享密鑰的更新處理的步驟的流程圖。
圖13是用于說明實施方式2的通信系統(tǒng)的共享密鑰生成方法的示意圖。
圖14是示出質數(shù)表的一例的示意圖。
具體實施方式
(實施方式1)
<系統(tǒng)結構>
圖1是示出本實施方式的通信系統(tǒng)的結構的示意圖。本實施方式的通信系統(tǒng)具備搭載于車輛1的多個ECU(Electronic Control Unit:電子控制單元)3和一個監(jiān)視裝置5而構成。ECU3和監(jiān)視裝置5通過鋪設在車輛1中的通用的通信線而連接,能夠彼此收發(fā)數(shù)據(jù)。在本實施方式中,ECU3和監(jiān)視裝置5將該通信線路作為CAN(Controller Area Network:控制器局域網(wǎng))總線,進行依照CAN協(xié)議的通信。關于ECU3,例如可以是如進行車輛1的發(fā)動機的控制的發(fā)動機ECU、進行車體的電氣安裝件的控制的車身ECU、進行與ABS(Antilock Brake System:防抱死制動系統(tǒng))有關的控制的ABS-ECU或者進行車輛1的安全氣囊的控制的安全氣囊ECU等這樣的各種電子控制裝置。監(jiān)視裝置5是監(jiān)視針對ECU3所存儲的程序和數(shù)據(jù)的非法篡改以及針對車內網(wǎng)絡的非法數(shù)據(jù)發(fā)送等的裝置。關于監(jiān)視裝置5,可以作為監(jiān)視專用裝置來設置,也可以是例如在網(wǎng)關等裝置附加了監(jiān)視功能的結構,或者也可以是例如在任一個ECU3附加了監(jiān)視功能的結構。
圖2是示出ECU3的結構的框圖。另外,在圖2中,關于設置在車輛1的多個ECU3,提取與通信和非法檢測等有關的塊來進行了圖示。這些塊在各ECU3中都是相同的。本實施方式的ECU3具備處理部31、ROM(Read Only Memory:只讀存儲器)32、存儲部33以及CAN通信部34等而構成。處理部31利用CPU(Central Processing Unit:中央處理單元)或MPU(Micro-Processing Unit:微處理單元)等運算處理裝置而構成。處理部31讀取在ROM32中存儲的程序32a并執(zhí)行,從而進行與車輛1有關的各種信息處理或控制處理等。
ROM32利用掩模ROM、閃存或EEPROM(Electrically Erasable Programmable ROM:電可擦除可編程ROM)等非易失性存儲元件而構成。ROM32存儲處理部31所執(zhí)行的程序32a和在由此進行的處理中所需的各種數(shù)據(jù)32b。另外,存儲在ROM32中的程序32a和數(shù)據(jù)32b在每個ECU3中都不同。另外,在本實施方式中,即使在ROM32利用閃存等能夠數(shù)據(jù)重寫的存儲元件而構成的情況下,也不會通過處理部31的處理進行ROM32的數(shù)據(jù)重寫。
存儲部33利用閃存或EEPROM等能夠數(shù)據(jù)重寫的存儲元件而構成。另外,存儲部33也可以利用SRAM(Static Random Access Memory:靜態(tài)隨機存取存儲器)或DRAM(Dynamic Random Access Memory:動態(tài)隨機存取存儲器)等易失性存儲元件而構成。存儲部33存儲通過處理部31的處理而生成的各種數(shù)據(jù)。另外,在本實施方式中,存儲部33存儲通過處理部31的處理而計算出的散列值33a。
CAN通信部34依照CAN通信協(xié)議,通過CAN總線進行與其他ECU3或監(jiān)視裝置5的通信。CAN通信部34將從處理部31提供的發(fā)送用信息轉換為依照CAN通信協(xié)議的發(fā)送信號,并向CAN總線輸出所轉換的信號,從而進行向其他ECU3或監(jiān)視裝置5的信息發(fā)送。CAN通信部34對CAN總線的電位進行采樣,從而獲取其他ECU3或監(jiān)視裝置5所輸出的信號,并依照CAN通信協(xié)議將該信號轉換為二進制的信息,從而進行信息的接收,并將接收到的信息提供給處理部31。
在本實施方式中,在ECU3的處理部31中設置有散列值計算部41、散列值判定部42、提取部43、密鑰生成部44以及加密處理部45等。散列值計算部41~加密處理部45可以構成為硬件的功能塊構成,也可以構成為軟件的功能塊。對于散列值計算部41~加密處理部45所進行的處理,將在后文中詳細說明。
圖3是示出ECU3的ROM32的結構的示意圖。在圖示的例子中,ROM32具有地址以0000h~FFFFh表示的存儲區(qū)域。在ROM32中存儲有由處理部31執(zhí)行的兩個程序32a(在圖3中表示為程序1和程序2)和在各程序的執(zhí)行中各自所需的兩種數(shù)據(jù)(數(shù)據(jù)1和數(shù)據(jù)2)。在ROM32中,從地址的最前頭側依次存儲有程序1、程序2、數(shù)據(jù)1、數(shù)據(jù)2,而在它們各自之間的存儲區(qū)域和地址的末尾側的存儲區(qū)域中存儲有虛擬數(shù)據(jù)。
虛擬數(shù)據(jù)可以是任何值,例如能夠存儲隨機確定的值。虛擬數(shù)據(jù)寫入到ROM32的剩余區(qū)域的整個區(qū)域。即,在ROM32中,在其整個存儲區(qū)域中存儲有某些數(shù)據(jù)。由此,能夠防止在ROM32的剩余區(qū)域中存儲非法程序而進行非法處理的情況。另外,能夠變得難以壓縮存儲在ROM32中的程序32a和數(shù)據(jù)32b。
圖4是示出監(jiān)視裝置5的結構的框圖。監(jiān)視裝置5具備處理部51、存儲部52以及CAN通信部53等而構成。處理部51利用CPU或MPU等運算處理裝置而構成,通過讀取在存儲部52中存儲的程序并執(zhí)行,從而進行監(jiān)視車輛1的ECU3的動作和通信等的處理。
存儲部52利用閃存或EEPROM等能夠數(shù)據(jù)重寫的非易失性存儲元件而構成。在本實施方式中,存儲部52存儲有對搭載在車輛1上的ECU3的ROM32的存儲內容進行復寫而得到的復寫數(shù)據(jù)52a。另外,存儲部52存儲由處理部51的處理計算出的散列值52b。另外,存儲部52具有被稱為防篡改性的針對來自外部的解析的抗性,不會進行復寫數(shù)據(jù)52a和散列值52b的篡改和解讀。
CAN通信部53依照CAN通信協(xié)議,通過CAN總線與ECU3進行通信。CAN通信部53將從處理部51提供的發(fā)送用信息轉換為依照CAN通信協(xié)議的發(fā)送信號,并向CAN總線輸出所轉換的信號,從而進行向ECU3的信息發(fā)送。CAN通信部53通過對CAN總線的電位進行采樣,從而獲取ECU3所輸出的信號,依照CAN通信協(xié)議將該信號轉換為二進制的信息,從而進行信息的接收,并向處理部51提供所接收到的信息。
在本實施方式中,在監(jiān)視裝置5的處理部51中設置有散列值計算部61、提取部62、散列值判定部63、密鑰生成部64以及加密處理部65等。散列值計算部61~加密處理部65可以構成為硬件的功能塊,也可以構成為軟件的功能塊。對于散列值計算部61~加密處理部65所進行的處理,將在后文中詳細說明。
圖5是說明在監(jiān)視裝置5的存儲部52中存儲的復寫數(shù)據(jù)52a的構成的示意圖。對于搭載在車輛1中的作為監(jiān)視對象的所有ECU3,監(jiān)視裝置5將與ROM3的存儲內容相同的內容存儲為復寫數(shù)據(jù)52a。關于復寫數(shù)據(jù)52a,將對于各ECU3唯一地附加的識別信息(圖5中ECUa、ECUb…)與各ECU3的ROM3的存儲內容建立對應并存儲。
<非法篡改檢測和共享密鑰生成>
在本實施方式的通信系統(tǒng)中,例如在車輛1的點火開關從斷開狀態(tài)切換到接通狀態(tài)時,監(jiān)視裝置5進行各ECU3的非法篡改的檢測處理和共享密鑰的生成處理。這些處理通過監(jiān)視裝置5與一個ECU3一對一進行信息交換而進行。監(jiān)視裝置5對于搭載在車輛1上的多個ECU3以預定的順序進行處理。在監(jiān)視裝置5的處理結束之后,開始進行各ECU3的單獨處理。以下,對在監(jiān)視裝置5與一個ECU3之間進行的非法篡改檢測處理和共享密鑰生成處理進行說明。
圖6和圖7是用于說明基于監(jiān)視裝置5和ECU3的非法篡改檢測處理和共享密鑰生成處理的示意圖。另外,在圖6中示出在監(jiān)視裝置5和ECU3之間進行的信息收發(fā)的步驟,在圖7中示出所計算出的散列值的構成。在非法篡改檢測處理和共享密鑰生成處理中,監(jiān)視裝置5首先進行在散列值計算中使用的信息的生成。在本實施方式中,監(jiān)視裝置5生成隨機種子和區(qū)域指定信息。監(jiān)視裝置5的處理部51將通過預定的算法產(chǎn)生隨機數(shù)而得到的預定位長的數(shù)據(jù)作為隨機種子。區(qū)域指定信息是指定作為散列值計算對象的ROM32的區(qū)域的信息,例如是開始地址和結束地址或者開始地址和數(shù)據(jù)大小等的信息。處理部51例如根據(jù)隨機數(shù)而確定開始地址,能夠將在該開始地址上加上了預定數(shù)而得到的地址作為結束地址。另外,例如處理部51將初始的開始地址設為0等初始值,在第二次之后,能夠將在上一次的開始地址上加上了預定數(shù)而得到的地址作為此次的開始地址。
監(jiān)視裝置5的處理部51將所生成的隨機種子和區(qū)域指定信息與散列值的計算指示一起發(fā)送到作為處理對象的ECU3。另外,處理部51的散列值計算部61從存儲部52的復寫數(shù)據(jù)52a讀取作為處理對象的ECU3的存儲內容,并使用所讀取的存儲內容和所生成的隨機種子及區(qū)域指定信息來計算散列值。散列值計算部61從被復寫的存儲內容中提取由區(qū)域指定信息指定的部位,將所提取的存儲內容和隨機種子輸入到預先確定的散列函數(shù),從而計算散列值。在本實施方式中,散列值計算部61使用SHA-1散列函數(shù)來計算160位的散列值。處理部51將散列值計算部61所計算出的散列值存儲到存儲部52中。
接收到來自監(jiān)視裝置5的隨機種子和區(qū)域指定信息的ECU3使用自身ROM32的存儲內容和接收到的隨機種子及區(qū)域指定信息,通過處理部31的散列值計算部41來計算散列值。散列值計算部41從ROM32提取由區(qū)域指定信息指定的部位,將所提取的存儲內容和隨機種子輸入到預先確定的散列函數(shù),從而計算散列值。處理部31將散列值計算部41所計算出的散列值存儲到存儲部33。另外,監(jiān)視裝置5所使用的散列函數(shù)與ECU3所使用的散列函數(shù)相同。由此,如果復寫數(shù)據(jù)52a的存儲內容與ROM32的存儲內容相同,則監(jiān)視裝置5計算的散列值與ECU3計算的散列值成為相同的值。相反地,在兩散列值成為不同的值時,存在ECU3的ROM32的存儲內容被篡改的可能性。
此處,簡單說明監(jiān)視裝置5的散列值計算部61和ECU3的散列值計算部41的散列值計算的方法。散列值計算部41、61能夠構成為,例如利用MD(Message Digest:消息摘要)4、MD5、SHA-1、SHA-256、SHA-384、SHA-512、EIPEMD-160或SHA-3等現(xiàn)有的散列函數(shù)來進行散列值的計算。這些是所謂的單向散列函數(shù),是對所輸入的信息輸出一個散列值的函數(shù)。輸入到散列函數(shù)的信息是在本實施方式中存儲到ECU3的ROM32中的程序32a或數(shù)據(jù)32b的一部分或全部。即使向散列函數(shù)輸入的信息是程序32a或數(shù)據(jù)32b中的任意一個或者是程序32a和數(shù)據(jù)32b這兩方,散列函數(shù)也能夠將所輸入的信息簡單地處理為二進制信息,計算散列值。散列值計算部41、61存儲預先確定的散列函數(shù),并使用該散列函數(shù)來進行散列值的計算。
以下,關于散列值計算部41、61使用SHA-1散列函數(shù)來計算散列值的情況,對計算方法進行說明。另外,關于SHA-1散列函數(shù)的詳細處理以及散列值計算部41、61使用其他散列函數(shù)的情況,這些散列函數(shù)是現(xiàn)有的技術,因此省略說明。
在利用SHA-1散列函數(shù)的情況下,散列值計算部41、61首先進行填充處理。在填充處理中,散列值計算部41、61通過在輸入信息之后附加額外的數(shù)據(jù),以使處理對象的信息大小成為預定值(512位)的整數(shù)倍的方式進行調整。接著,散列值計算部41、61將被填充處理的信息按照每512位的塊進行分割,進行針對各塊計算80個值的第一處理。
接著,散列值計算部41、61針對預定大小(160位)的初始值,進行如下的第二處理:進行使用了通過第一處理計算出的值的運算,并將運算后的160位的值作為散列值。在第二處理中,首先,散列值計算部41、61使用針對一個塊計算出的80個值,對160位的初始值進行80步驟的運算。通過該80步驟的運算,能夠對160位的初始值混入塊的信息,作為輸出而得到160位的值。散列值計算部41、61將所得到的160位的值作為初始值,使用針對下一個塊計算出的80個值同樣地進行80步驟的運算。散列值計算部41、61對所有的塊進行同樣的80步驟的處理,將最終得到的160位的值作為散列值。
另外,在本實施方式中,散列值計算部41、61需要利用監(jiān)視裝置5所生成的隨機種子來進行散列值的計算。例如散列值計算部41、61在上述的填充處理中,能夠對附加到輸入信息的數(shù)據(jù)使用隨機種子。另外,例如散列值計算部41、61在上述的第二處理中,能夠對160位的初始值使用隨機種子。在本實施方式中,設為對第二處理的初始值使用隨機種子。
另外,散列值計算部41、61的隨機種子的利用方法不限定于上述的方法。例如,散列值計算部41、61能夠將作為散列值計算對象的ROM32的存儲內容與隨機種子的邏輯運算值(異或等)作為向散列函數(shù)的輸入信息。另外,例如,散列值計算部41、61能夠使對作為散列值計算對象的ROM32的存儲內容的最前頭部分或末尾部分等預定位置附加了隨機種子而得到的信息成為向散列函數(shù)的輸入信息。
在隨機種子和區(qū)域指定信息向ECU3的發(fā)送以及散列值計算部41對散列值的計算完成之后,監(jiān)視裝置5的處理部51通過提取部62進行提取所計算出的散列值的一部分的處理。在本實施方式中,提取部62從所計算出的160位的散列值提取64位的值來作為確認用信息(散列值的第一部分)。在圖7所示的例子中,將160位的散列值中的0~63這64位提取為確認用信息。處理部51將包含提取部62所提取的確認用信息的散列確認指示發(fā)送到作為處理對象的ECU3。
從監(jiān)視裝置5接收了散列確認指示的ECU3的處理部31獲取包含在接收到的散列確認指示中的確認用信息。處理部31的散列值判定部42對從監(jiān)視裝置5獲取的確認用信息與自身通過散列值計算部41計算出的散列值進行比較。散列值判定部42判定在散列值計算部41計算出的散列值中是否包含從監(jiān)視裝置5獲取以作為確認用信息的散列值的一部分。當散列值判定部42判定為在自身的散列值中未包含確認用信息的散列值時,認為ECU3計算出的散列值與監(jiān)視裝置5計算出的散列值不一致,因此處理部31中斷處理,對監(jiān)視裝置5進行錯誤通知等。
當散列值判定部42判定為在自身的散列值中包含確認用信息的散列值時,看作ECU3計算出的散列值與監(jiān)視裝置5計算出的散列值為相同的值,處理部31進行向監(jiān)視裝置5發(fā)送針對散列確認指示的響應(散列確認響應)的處理。此時,處理部31的提取部43從如下部分中進一步提取64位的信息,該部分是指從散列值計算部41計算出的160位的散列值中除去相當于確認用信息的64位而得到的部分。在圖7所示的例子中,提取部43將接在來自監(jiān)視裝置5的確認用信息之后的64位的信息提取為響應信息(散列值的第二部分)。處理部31使提取部43提取出的64位的響應信息包含在散列確認響應中并發(fā)送到監(jiān)視裝置5。另外,從散列值提取確認用信息和響應信息的方法不限于圖7所示。例如也可以是,確認用信息和響應信息的一部分重復。
從ECU3接收了散列確認響應的監(jiān)視裝置5的處理部51獲取在接收到的散列確認響應中包含的響應信息。處理部51的散列值判定部63對從ECU3獲取的響應信息與自身通過散列值計算部61計算出的散列值進行比較。散列值判定部63判定在從散列值計算部61計算出的散列值中除去提取部62提取出的確認用信息而得到的部分中,是否包含作為來自ECU3的響應信息獲取的散列值的一部分。當散列值判定部63判定為在自身的散列值中未包含響應信息的散列值時,認為監(jiān)視裝置5計算出的散列值與ECU3計算出的散列值不一致,因此處理部51中斷處理,進行對ECU3的錯誤通知等。
當散列值判定部63判定為在自身的散列值中包含響應信息的散列值時,處理部51看作監(jiān)視裝置5計算出的散列值與ECU3計算出的散列值為相同的值。此時,處理部51也可以向ECU3通知散列值的判定成功。處理部51的密鑰生成部64根據(jù)散列值計算部61計算出的散列值、提取部62提取出的確認用信息以及從ECU3獲取的響應信息,通過與ECU3的通信而生成在加密處理中使用的共享密鑰。處理部51將密鑰生成部64所生成的共享密鑰存儲到例如存儲部52中。在圖7所示的例子中,將從散列值計算部61計算出的160位的散列值中除去64位的確認用信息和64位的響應信息而得到的32位的信息作為共享密鑰。
同樣地,ECU3的密鑰生成部44將從自身的散列值計算部41計算出的160位的散列值中除去從監(jiān)視裝置5接收到以作為確認用信息的64位的信息以及提取部43提取以作為響應信息的64位的信息而得到的32位的信息作為共享密鑰。處理部31將密鑰生成部44生成的共享密鑰存儲在例如存儲部33中。由此,ECU3和監(jiān)視裝置5能夠共享32位的密鑰信息。另外,密鑰信息不限于圖7所示的構成。例如也可以是,確認用信息和響應信息的一部分重復。
此后,ECU3和監(jiān)視裝置5使用在上述的步驟中生成的共享密鑰進行通信。另外,使用了共享密鑰的通信為現(xiàn)有的技術,因此省略詳細的說明。例如ECU3的處理部31通過加密處理部45利用共享密鑰對向監(jiān)視裝置5發(fā)送的信息進行加密,將加密了的信息提供給CAN通信部34并發(fā)送到監(jiān)視裝置5。監(jiān)視裝置5的處理部51通過加密處理部65對從ECU3接收到的信息進行解碼。或者,例如在ECU3的處理部31中,加密處理部45根據(jù)向監(jiān)視裝置5發(fā)送的信息和共享密鑰而生成認證信息,將所生成的認證信息附加到發(fā)送信息并發(fā)送到監(jiān)視裝置5。關于監(jiān)視裝置5的處理部51,加密處理部45利用共享密鑰來判定附加到來自ECU3的接收信息中的認證信息是否正當,在認證信息正當時進行使用了接收信息的處理。
<共享密鑰的更新>
當在ECU3和監(jiān)視裝置5之間使用相同的共享密鑰重復進行了通信的情況下,對通信內容進行監(jiān)聽的惡意裝置推斷共享密鑰的可能性提高。因此,在本實施方式的通信系統(tǒng)中,在預定的時刻進行更新共享密鑰的處理。例如,可以構成為在共享密鑰使用了預定次數(shù)(10次或100次等)時進行更新處理。例如,能夠構成為在車輛1的點火開關從斷開狀態(tài)向接通狀態(tài)變化了的情況下進行更新處理。另外,例如,能夠構成為在產(chǎn)生某種通信錯誤時進行更新處理。也可以在除此以外的時刻進行共享密鑰的更新處理。
在本實施方式的通信系統(tǒng)中,對于共享密鑰的更新處理,提供兩種方法。第一方法是從最初開始進行如上所述的共享密鑰的生成處理的方法。即,在達到更新共享密鑰的時刻的情況下,監(jiān)視裝置5生成隨機種子和區(qū)域指定信息并將散列值計算指示發(fā)送到ECU3,進行散列值的重新計算和共享密鑰的重新生成。
對共享密鑰進行更新的第二方法是利用ECU3和監(jiān)視裝置5分別存儲的計算完成的散列值的方法。該方法具有以下優(yōu)點:由于不需要進行用于通過ECU3和監(jiān)視裝置5計算散列值的處理,因此能夠在短時間進行。以下,對利用所存儲的散列值更新共享密鑰的方法進行說明。
圖8是用于說明共享密鑰的更新處理的示意圖。ECU3將在生成共享密鑰時計算出的散列值33a存儲到存儲部33中。同樣地,監(jiān)視裝置5將在生成共享密鑰時計算出的散列值52b存儲到存儲部52中。ECU3和監(jiān)視裝置5所存儲的散列值為相同的值。其中,監(jiān)視裝置5在與多個ECU3之間進行共享密鑰的生成處理,因此針對各ECU3存儲散列值。圖8上部所示的圖與圖7所示的圖相同,圖示了ECU3和監(jiān)視裝置5所存儲的散列值與當前時刻(更新處理前)下的共享密鑰等。
在需要更新共享密鑰時,監(jiān)視裝置5的處理部51通過提取部62進行從在存儲部52中存儲的散列值52b提取新的確認用信息的處理。此時,提取部62提取與上一次的共享密鑰生成或更新時不同的確認用信息。因此,監(jiān)視裝置5優(yōu)選存儲提取了確認用信息的位置(使散列值的從第幾位到第幾位為止作為確認用信息),但是也能夠通過核查與存儲有當前的共享密鑰的散列值的哪個部分相當而確定上一次的確認用信息的提取位置。
例如,提取部62能夠生成隨機數(shù)并將對上一次的提取位置加上了隨機數(shù)而得到的位置作為此次的提取位置。在圖8中部所示的例子中,對上一次的提取位置(0~63位)加上10位,將所存儲的散列值的10~73位提取為確認用信息。監(jiān)視裝置5的處理部51將包含提取部62提取出的64位的確認用信息的散列確認指示發(fā)送到ECU3。接收到這些信息的ECU3的提取部43從在存儲部33存儲的散列值33a中提取響應信息。在圖8中部所示的例子中,將接在確認用信息之后的74~137位提取為響應信息。ECU3的處理部31將包含所提取的確認用信息的散列確認響應發(fā)送到監(jiān)視裝置5。由此,監(jiān)視裝置5和ECU3能夠得到新的確認用信息和響應信息,并將從自身存儲的散列值中除去確認用信息和響應信息而得到的32位的信息作為新的共享密鑰。在圖8中部所示的例子中,將散列值的138~159位、0~9位的信息作為共享密鑰。
在圖8下部示出需要進一步更新共享密鑰時的例子。監(jiān)視裝置5對上一次的提取位置加上12位,將散列值的32~95位提取為確認用信息并發(fā)送到ECU3。ECU3將接在確認用信息之后的96~159位提取為響應信息并發(fā)送到監(jiān)視裝置5。監(jiān)視裝置5和ECU3將從所存儲的散列值除去了確認用信息和響應信息而得到的0~31位作為共享密鑰。
如上所述,在本實施方式的通信系統(tǒng)中,通過對計算完成的散列值進行再利用,使從基于監(jiān)視裝置5的散列值提取確認用信息的提取位置變化,從而能夠更新共享密鑰。在本例的情況下,從160位的散列值能夠至少得到同樣160位的共享密鑰。另外,在本實施方式的通信系統(tǒng)中,監(jiān)視裝置5變更隨機種子和區(qū)域指定信息并進行散列值的重新計算,從而能夠得到更多的共享密鑰。
<流程圖>
以下,使用流程圖對本實施方式的通信系統(tǒng)的監(jiān)視裝置5和ECU3進行的處理進行說明。圖9是示出監(jiān)視裝置5所進行的非法篡改檢測和共享密鑰生成的處理步驟的流程圖。監(jiān)視裝置5的處理部51生成在散列值計算中使用的隨機種子和指定ECU3的ROM32的存儲區(qū)域的區(qū)域指定信息(步驟S1)。處理部51通過CAN通信部53將包含所生成的隨機種子和區(qū)域指定信息的散列值計算指示發(fā)送到作為處理對象的ECU3(步驟S2)。
處理部51的散列值計算部61從存儲部52獲取作為處理對象的ECU3的存儲內容的復寫數(shù)據(jù)52a,根據(jù)所獲取的復寫數(shù)據(jù)52a以及在步驟S1中生成的隨機種子和區(qū)域指定信息,使用預定的散列函數(shù)來計算散列值,將計算出的散列值存儲到存儲部52中(步驟S3)。處理部51的提取部62從在步驟S3中計算出的散列值中提取一部分作為確認用信息(步驟S4)。處理部51通過CAN通信部53將包含所提取的確認用信息的散列確認指示發(fā)送到作為處理對象的ECU3(步驟S5)。
接著,處理部51判定是否通過CAN通信部53接收到ECU3針對散列確認指示而發(fā)送的散列確認響應(步驟S6)。在未接收到散列確認響應時(S6:否),處理部51判定是否從作為處理對象的ECU接收到錯誤通知(步驟S7)。在未接收到錯誤通知時(S7:否),處理部51使處理回到步驟S6,并待機直到從ECU3接收散列確認響應或錯誤通知為止。
在從作為處理對象的ECU3接收到散列確認響應時(S6:是),處理部51的散列值判定部63根據(jù)接收到的散列確認響應所包含的響應信息是否包含在步驟S3中計算出的散列值中,來判定響應信息的成功與否(步驟S8)。在從ECU3接收到錯誤通知時(S7:是),或者,在從ECU3接收到的響應信息不正確時(S8:否),處理部51判斷為存在作為對象的ECU3的ROM32的存儲內容被改變的可能性,進行例如使該ECU3的動作停止等適當?shù)腻e誤處理(步驟S9),結束處理。
在從ECU3接收到的響應信息正確時(S8:是),處理部51的密鑰生成部64生成在與ECU3的通信中使用的共享密鑰(步驟S10)。此時,密鑰生成部64將從在步驟S3中計算出的散列值除去在步驟S4中提取出的確認用信息和在步驟S6中接收到的響應信息而得到的部分作為共享密鑰。處理部51將密鑰生成部64生成的共享密鑰存儲到存儲部52(步驟S11),結束處理。
圖10是示出ECU3根據(jù)來自監(jiān)視裝置5的散列值計算指示而進行的處理的步驟的流程圖。ECU3的處理部31判定是否通過CAN通信部34從監(jiān)視裝置5接收了散列值計算指示(步驟S21)。在未接收到散列值計算指示時(S21:否),處理部31待機直到接收到散列值計算指示為止。在接收到散列值計算指示時(S21:是),處理部31獲取所接收到的散列值計算指示所包含的隨機種子和區(qū)域指定信息(步驟S22)。處理部31的散列值計算部41根據(jù)ROM32的存儲內容以及在步驟S22中獲取的隨機種子和區(qū)域指定信息,使用預定的散列函數(shù)來計算散列值(步驟S23)。處理部31將所計算出的散列值存儲到存儲部33中(步驟S24),結束處理。
圖11是示出ECU3根據(jù)來自監(jiān)視裝置5的散列確認指示而進行的處理的步驟的流程圖。另外,本處理在最初生成共享密鑰時和更新共享密鑰時是通用的。ECU3的處理部31判定是否通過CAN通信部34從監(jiān)視裝置5接收了散列確認指示(步驟S31)。在未接收到散列確認指示時(S31:否),處理部31待機直到接收到散列確認指示為止。在接收到散列確認指示時(S31:是),處理部31讀取在存儲部33中存儲的散列值33a(步驟S32)。處理部31的散列值判定部42根據(jù)步驟S31中接收到的散列確認指示所包含的確認用信息是否包含在步驟S32中讀取出的散列值中,來判定確認用信息的成功與否(步驟S33)。在確認用信息不正確時(S33:否),處理部31向監(jiān)視裝置5發(fā)送錯誤通知(步驟S34),結束處理。
在來自監(jiān)視裝置5的確認用信息正確時(S33:是),處理部31的提取部43從如下部分提取響應信息,該部分是指從步驟S32中讀取出的散列值除去了確認用信息而得到的部分(步驟S35)。處理部31通過CAN通信部34向監(jiān)視裝置5發(fā)送所提取的響應信息(步驟S36)。處理部31的密鑰生成部44生成在與監(jiān)視裝置5的通信中使用的共享密鑰(步驟S37)。此時,密鑰生成部44將從在步驟S32中讀取的散列值除去在步驟S31中接收到的確認用信息和在步驟S35中提取的響應信息而得到的部分作為共享密鑰。處理部31將密鑰生成部44生成的共享密鑰存儲到存儲部33(步驟38),結束處理。
圖12是示出監(jiān)視裝置5所進行的共享密鑰的更新處理的步驟的流程圖。監(jiān)視裝置5的處理部51判定是否達到例如共享密鑰利用了預定次數(shù)的情況等更新共享密鑰的時刻(步驟S41)。在未達到更新共享密鑰的時刻時(S41:否),處理部51待機直到達到更新共享密鑰的時刻為止。在達到了更新共享密鑰的時刻時(S41:是),處理部51讀取在存儲部52中存儲的散列值52b(步驟S42)。
接著,處理部51的提取部62獲取從散列值提取上一次的確認用信息的位置(步驟S43)。提取部62可以將上一次的提取位置存儲到存儲部52等并獲取該提取位置,也可以將散列值與當前時刻的共享密鑰進行比較來獲取提取位置。提取部62產(chǎn)生隨機數(shù)(步驟S44),計算在上一次的提取位置加上了隨機數(shù)而得到的位置,從在步驟S42中讀取的散列值的相應位置提取確認用信息(步驟S45)。
處理部51將包含提取部62所提取的確認用信息的散列確認指示發(fā)送到作為處理對象的ECU3(步驟S46)。另外,雖然此后的處理與圖9所示的流程圖的步驟S6~S11相同,但是在圖12中以簡化這些處理的方式示出步驟。處理部51接收ECU3針對散列確認指示而發(fā)送的散列確認響應(步驟S47)。處理部51的散列值判定部63判定在所接收的散列確認響應中包含的響應信息是否正確(步驟S48)。處理部51的密鑰生成部64根據(jù)在步驟S42中讀取的散列值、在步驟S45中提取的確認用信息以及在步驟S48中判定為正確的響應信息,生成新的共享密鑰(步驟S49),將所生成的共享密鑰存儲到存儲部52(步驟S50),結束處理。
<總結>
在以上結構的本實施方式的通信系統(tǒng)中,ECU3和監(jiān)視裝置5共享密鑰信息,進行使用了該密鑰信息的通信。ECU3具有根據(jù)ROM32的存儲內容來計算散列值的散列值計算部41。監(jiān)視裝置5將ECU3的ROM32的存儲內容的復寫數(shù)據(jù)52a存儲到存儲部52中,并具有根據(jù)所復寫的存儲內容來計算散列值的散列值計算部61。ECU3的散列值計算部41和監(jiān)視裝置5的散列值計算部61進行基于相同的散列函數(shù)的運算,如果所輸入的信息相同,則所計算的散列值成為相同的值。
監(jiān)視裝置5計算基于復寫數(shù)據(jù)52a的散列值,將其一部分作為確認用信息發(fā)送到ECU3。ECU3對從監(jiān)視裝置5接收以作為確認用信息的散列值的一部分與自身計算出的散列值進行比較,判定所接收到的散列值的一部分是否包含在自身的散列值中。在接收到的散列值的一部分未包含在自身的散列值中時,監(jiān)視裝置5的復寫數(shù)據(jù)52a與ECU3的ROM32的存儲內容不一致,因此能夠判斷為存在ECU3的ROM32的存儲內容被非法篡改的可能性。在接收到的散列值的一部分包含在自身的散列值中時,ECU3從如下的值進一步提取一部分并作為響應信息發(fā)送到監(jiān)視裝置5,上述值是指從自身計算出的散列值除去了確認用信息而得到的值。
監(jiān)視裝置5對從ECU3接收到以作為響應信息的散列值的一部分與自身計算出的散列值進行比較,判定所接收到的散列值的一部分是否包含在自身的散列值中。在接收到的散列值的一部分未包含在自身的散列值中時,能夠判斷為存在ECU3的ROM32的存儲內容被非法篡改的可能性。在接收到的散列值的一部分包含在自身的散列值中時,ECU3和監(jiān)視裝置5分別計算出的散列值一致,能夠判斷為ROM32的存儲內容沒有被非法篡改。
ECU3和監(jiān)視裝置5分別計算從自身計算出的散列值除去監(jiān)視裝置5所提取的確認用信息和ECU3所提取的響應信息而得到的剩余值,將該剩余值作為密鑰信息共享來進行加密處理。另外,可以將全部剩余值作為密鑰信息,也可以將剩余值的一部分作為密鑰信息。由此,ECU3和監(jiān)視裝置5能夠同時進行檢測ECU3的ROM32的存儲內容的非法篡改的處理和確定用于加密處理的密鑰信息的處理。
另外,在本實施方式的通信系統(tǒng)中,在散列值的計算之前,監(jiān)視裝置5生成隨機種子和區(qū)域指定信息作為散列值計算用信息并發(fā)送到ECU3。ECU3和監(jiān)視裝置5使用隨機種子和區(qū)域指定信息進行散列值的計算。由此,由于散列值計算變得困難,因此能夠提高存儲內容的非法篡改的檢測的可靠性,能夠提高共享的密鑰信息的可靠性。
另外,在本實施方式的通信系統(tǒng)中,ECU3和監(jiān)視裝置5分別存儲所計算出的散列值。監(jiān)視裝置5在例如從生成密鑰信息之后經(jīng)過了預定期間時等適當?shù)臅r刻,進行密鑰信息的更新處理。在更新處理中,不重新進行散列值的計算而使用存儲的散列值,由此減少處理負荷。監(jiān)視裝置5從存儲的散列值中提取與生成當前時刻的密鑰信息時的確認用信息不同的一部分,將所提取的信息作為新的確認用信息并發(fā)送到ECU3。通過基于監(jiān)視裝置5的確認用信息的發(fā)送,開始密鑰信息的更新處理。ECU3根據(jù)接收到的確認用信息和存儲的散列值來生成響應信息并發(fā)送到監(jiān)視裝置5。由此,ECU3和監(jiān)視裝置5能夠根據(jù)存儲的散列值以及新的確認用信息和響應信息來生成新的密鑰信息,能夠更新密鑰信息。
另外,在本實施方式中,構成為通過經(jīng)由鋪設在車輛1中的CAN總線的有線通信而進行ECU3和監(jiān)視裝置5的通信,但是并不限定于此,也可以構成為進行無線LAN等的無線通信。另外,也可以構成為進行基于CAN以外的協(xié)議的有線通信。另外,監(jiān)視裝置5構成為將對ECU3的ROM32的存儲內容進行復寫而得到的復寫數(shù)據(jù)52a存儲到存儲部52中,但是并不限定于此。例如也可以將復寫數(shù)據(jù)52a存儲到其他的服務器裝置等中,監(jiān)視裝置5根據(jù)需要從服務器裝置獲取復寫數(shù)據(jù)52a,進而也可以構成為在服務器裝置設置散列值計算功能而監(jiān)視裝置5從服務器裝置獲取所需的散列值。另外,在本實施方式中,以搭載在車輛1中的通信系統(tǒng)為例進行了說明,但是通信系統(tǒng)不限定于搭載在車輛1中,例如也可以搭載在飛機或船舶等移動物體中,另外例如也可以不是移動物體而設置在工廠、辦公室或學校等中。
(變形例)
變形例的通信系統(tǒng)的監(jiān)視裝置5在上述的處理以外,還進行對從向ECU3發(fā)送散列確認指示起到接收到來自該ECU3的散列確認響應為止的時間進行計測的處理。監(jiān)視裝置5判定所計測的時間是否超過閾值,在計測時間超過閾值時,判斷為進行了針對ECU3的ROM32的存儲內容的非法重寫。另外,關于在判定中使用的閾值,考慮監(jiān)視裝置5和ECU3的通信速度以及ECU3的處理能力等,在本系統(tǒng)的設計階段等中預先確定。
例如存在如下問題:在監(jiān)視裝置5和ECU3之間存在非法的設備,進行在監(jiān)視裝置5和ECU3之間收發(fā)的信息的中繼和改變等。另外,例如存在如下問題:存儲在ECU3的ROM32中的程序32a和數(shù)據(jù)32b被壓縮,在由壓縮引起的ROM32的空白區(qū)域侵入非法程序而進行非法的處理。在這種情況下,即使非法設備或程序等能夠計算散列值并進行針對監(jiān)視裝置5的響應,也可以預想到直到響應的發(fā)送為止需要比正常時更長的時間。因此,本實施方式的通信系統(tǒng)通過進行如上所述的時間監(jiān)視,能夠防止進行基于非法設備或程序等的非法的處理。
(實施方式2)
在實施方式2的通信系統(tǒng)中,ECU3和監(jiān)視裝置5不是將從自身計算出的散列值除去確認用信息和響應信息而得到的剩余值作為共享密鑰,而是使用該剩余值進一步進行計算,從而生成共享密鑰。圖13是用于說明實施方式2的通信系統(tǒng)的共享密鑰生成方法的示意圖。另外,該圖圖示出,監(jiān)視裝置5將散列值計算指示和散列確認指示發(fā)送到ECU3,ECU3將散列確認響應發(fā)送到監(jiān)視裝置5,ECU3和監(jiān)視裝置5計算從自身計算出的散列值除去確認用信息和響應信息而得到的剩余值之后的處理。在共享密鑰的生成處理中,首先,實施方式2的ECU3和監(jiān)視裝置5將從自身計算的散列值除去確認用信息和響應信息而得到的剩余值設為元g(SA1、SB1)。由于ECU3和監(jiān)視裝置5計算出的散列值為相同的值,因此ECU3和監(jiān)視裝置5的元g為相同的值。
接著,ECU3和監(jiān)視裝置5進行從預先存儲的質數(shù)表選擇一個質數(shù)p的處理(SA2、SB2)。圖14是示出質數(shù)表的一例的示意圖。本實施方式的質數(shù)表是針對0~159這160個標簽存儲有質數(shù)0~質數(shù)159這160個大的質數(shù)的表。ECU3和監(jiān)視裝置5對自身計算出的散列值與監(jiān)視裝置5所提取的確認用信息進行比較,核查散列值中的確認用信息的位置,并且核查確認用信息的開始位相當于散列值中的第幾位。例如在確認用信息相當于散列值的10~73位時,ECU3和監(jiān)視裝置5獲取作為確認用信息的開始位的10,選擇與質數(shù)表的標簽10對應的質數(shù)10。另外,ECU3和監(jiān)視裝置5預先存儲相同內容的質數(shù)表,所選擇的質數(shù)p為相同的值。
接著,ECU3生成秘密值a(SA3)。秘密值a為僅在ECU3內利用的值,例如能夠根據(jù)隨機數(shù)等來生成。同樣地,監(jiān)視裝置5生成秘密值b(SB3)。秘密值b是僅在監(jiān)視裝置5內利用的值,例如能夠根據(jù)隨機數(shù)等來生成。ECU3的秘密值a與監(jiān)視裝置5的秘密值b可以是不同的值。
接著,ECU3利用元g、質數(shù)p以及秘密值a,通過(1)式生成公開值A(SA4)。同樣地,監(jiān)視裝置5利用元g、質數(shù)p以及秘密值b,通過(2)式生成公開值B(SB4)。
【公式1】
A=gamod p…(1)
B=gbmod p…(2)
接著,ECU3將所計算出的公開值A發(fā)送到監(jiān)視裝置5(SA5),并且接收從監(jiān)視裝置5發(fā)送來的公開值B(SA6)。同樣地,監(jiān)視裝置5將所計算出的公開值B發(fā)送到ECU3(SB5),并且接收從ECU3發(fā)送的公開值A(SB6)。
接著,ECU3利用所接收到的公開值B、秘密值a以及質數(shù)p,通過(3)式生成共享密鑰Ka(SA7)。同樣地,監(jiān)視裝置5利用所接收到的公開值A、秘密值b以及質數(shù)p,通過(4)式生成共享密鑰Kb(SB7)。另外,ECU3生成的共享密鑰Ka與監(jiān)視裝置5生成的共享密鑰Kb為相同的值。
【公式2】
Ka=Bamod p…(3)
Kb=Abmod p…(4)
生成了共享密鑰的ECU3和監(jiān)視裝置5對所生成的共享密鑰進行存儲,在以后的通信中使用該共享密鑰進行加密處理。另外,在進行共享密鑰的更新處理時,ECU3和監(jiān)視裝置5進行圖13所示的處理而重新生成共享密鑰。
關于以上結構的實施方式2的通信系統(tǒng),ECU3和監(jiān)視裝置5例如分別通過隨機數(shù)等來生成秘密值a、b,根據(jù)秘密值a、b以及剩余值來分別生成公開值A、B并彼此發(fā)送,根據(jù)自身的秘密值a、b以及接收到的公開值A、B而分別生成密鑰信息Ka、Kb。另外,ECU3和監(jiān)視裝置5存儲共同的質數(shù)表。在質數(shù)表中存儲有多個質數(shù),ECU3和監(jiān)視裝置5根據(jù)散列值中的確認用信息的開始位位置來選擇一個質數(shù)。ECU3和監(jiān)視裝置5利用所選擇的質數(shù)來生成公開值A、B。
由此,能夠提高ECU3和監(jiān)視裝置5共享的密鑰信息的隱匿性。
另外,在本實施方式中,根據(jù)隨機數(shù)來生成秘密值a、b,但是并不限定于此,也可以通過其他的各種方法來生成秘密值a、b。例如能夠構成為,與質數(shù)表同樣地預先對存儲有多個秘密值的秘密值表進行存儲,從秘密值表選擇一個秘密值。另外,質數(shù)表的構成不限于圖14所示的構成,可以是其他的各種構成。另外,從質數(shù)表選擇一個質數(shù)的方法不限于基于確認用信息的開始位位置的方法,可以采用其他的各種方法。
實施方式2的通信系統(tǒng)的其他結構與實施方式1的通信系統(tǒng)的結構相同,因此對相同的部位標上相同的標號并省略詳細的說明。
標號說明
1 車輛
3 ECU(第二通信裝置)
5 監(jiān)視裝置(第一通信裝置)
31 處理部(第二秘密值生成單元、第二公開值生成單元、質數(shù)選擇單元、更新處理單元)
32 ROM(存儲部)
32a 程序
32b 數(shù)據(jù)
33 存儲部(第二散列值存儲部)
33a 散列值
34 CAN通信部(第一部分接收單元、第二部分發(fā)送單元、第二公開值發(fā)送單元、第一公開值接收單元、散列值計算用信息接收單元)
41 散列值計算部(第二散列值計算單元)
42 散列值判定部(散列值判定單元)
43 提取部(提取單元)
44 密鑰生成部(密鑰信息生成單元)
45 加密處理部(加密處理單元)
51 處理部(第一秘密值生成單元、第一公開值生成單元、質數(shù)選擇單元、散列值計算用信息生成單元、更新處理單元)
52 存儲部(第一散列值存儲部)
52a 復寫數(shù)據(jù)
52b 散列值
53 CAN通信部(第一部分發(fā)送單元、第二部分接收單元、第一公開值發(fā)送單元、第二公開值接收單元、散列值計算用信息發(fā)送單元)
61 散列值計算部(第一散列值計算單元)
62 提取部(提取單元)
63 散列值判定部(散列值判定單元)
64 密鑰生成部(密鑰信息生成單元)
65 加密處理部。