本發(fā)明涉及通信網(wǎng)絡(luò)系統(tǒng)、發(fā)送節(jié)點(diǎn)、接收節(jié)點(diǎn)、消息檢查方法以及計(jì)算機(jī)程序。
本申請(qǐng)基于2014年6月5日在日本申請(qǐng)的特愿2014-116917號(hào)以及2015年4月23日在日本申請(qǐng)的特愿2015-88397號(hào)要求優(yōu)先權(quán),并將其內(nèi)容引入到此。
背景技術(shù):
以往,作為在車輛上搭載的通信網(wǎng)絡(luò)之一所知道的CAN(Controller Area Network:控制器區(qū)域網(wǎng)絡(luò))用于車輛內(nèi)的各種ECU(Electronic Control Unit:電子控制單元)之間的通信。作為在該CAN使消息的認(rèn)證變得可能的技術(shù),例如已知非專利文獻(xiàn)1、2以及專利文獻(xiàn)1中記載的技術(shù)。
在非專利文獻(xiàn)1中記載的現(xiàn)有技術(shù)中,針對(duì)從與CAN相連接的假冒的ECU發(fā)送冒充消息的攻擊,若真的ECU檢測(cè)到賦予有自身的ID的冒充消息,則發(fā)送用于通知賦予有自身的ID的異常的消息,由此對(duì)接收側(cè)ECU報(bào)告異常。
在非專利文獻(xiàn)2中記載的現(xiàn)有技術(shù)中,將在CAN幀中的校驗(yàn)(Cyclic Redundancy Check:CRC)字段中存儲(chǔ)的信息變更為MAC(Message Authentication Code:消息認(rèn)證碼)。在該現(xiàn)有技術(shù)中,發(fā)送側(cè)基于第N個(gè)到第N+3個(gè)為止的四個(gè)CAN幀中的數(shù)據(jù)字段的數(shù)據(jù)(64×4=256比特)生成64比特的MAC,并將該MAC分割為每一部分包括16比特的四等分,分別存儲(chǔ)至第N+4個(gè)到第N+7個(gè)為止的四個(gè)CAN幀中的CRC字段(16比特)來(lái)發(fā)送各CAN幀。在接收側(cè),從第N+4個(gè)到第N+7個(gè)為止的CAN幀中的CRC字段取得MAC,并根據(jù)是否與基于第N個(gè)到第N+3個(gè)為止的CAN幀中的數(shù)據(jù)字段生成的MAC一致,來(lái)判斷第N個(gè)到第N+3個(gè)為止的CAN幀是否正當(dāng)。由此,在從CRC字段得到的MAC和基于數(shù)據(jù)字段計(jì)算出的MAC不同的情況下,能夠判斷為第N個(gè)到第N+3個(gè)為止的CAN幀中的某一個(gè)不正當(dāng)。
在專利文獻(xiàn)1中記載的技術(shù)中,在各ECU中對(duì)按照每一CANID發(fā)送了消息的次數(shù)進(jìn)行計(jì)數(shù)。并且,發(fā)送了主消息的發(fā)送節(jié)點(diǎn)發(fā)送包括MAC的MAC消息,其中,MAC是基于主消息的數(shù)據(jù)字段以及CANID、與CANID對(duì)應(yīng)的計(jì)數(shù)值來(lái)生成的。接收到主消息的接收節(jié)點(diǎn)基于包含在主消息中的數(shù)據(jù)字段以及CANID、與CANID對(duì)應(yīng)的計(jì)數(shù)值來(lái)生成MAC,并判斷是否與在接收到的MAC消息中包含的MAC一致。
現(xiàn)有技術(shù)文獻(xiàn)
專利文獻(xiàn)
專利文獻(xiàn)1:國(guó)際公開(kāi)第2013/065689號(hào)
非專利文獻(xiàn)
非專利文獻(xiàn)1:畑正人、田邉?wù)恕⒓獙顺?、大石和臣、松本勉、“不正?dāng)發(fā)送阻止:在CAN中可能”、信息處理學(xué)會(huì)、計(jì)算機(jī)安全座談會(huì)(CSS2011)、pp.624-629、2011年10月。
非專利文獻(xiàn)2:AKIRA YOSHIOKA ET AL.:“Kosei Shomei Kino o Motsu Shanai Tsushin Protocol no Teian”SYMPOSIUM ON MULTIMEDIA,DISTRIBUTED,COOPERATIVE ANDMOBILE SYSTEMS(DICOM02008)RONBUNSHU vol.2008,no.1,02 July 2008,pages 1270–1275
非專利文獻(xiàn)3:RFC 2104 HMAC:Keyed-Hashing for Message Aut hentication、[2014年5月26日檢索]、互聯(lián)網(wǎng)<URL:http://www.rfc-editor.org/rfc/rfc2104.txt>
非專利文獻(xiàn)4:RFC 2104 HMAC:用于消息認(rèn)證的密鑰哈希、[2014年5月26日檢索]、互聯(lián)網(wǎng)<URL:http://www.ipa.go.jp/security/rfc/RFC2104JA.html>
非專利文獻(xiàn)5:竹森敬祐、川端秀明、洼田步、“基于ARM+SIM/UIM的安全啟動(dòng)”、電子信息通信學(xué)會(huì)、密碼和信息安全座談會(huì)(SCIS2014)、1B1-2、2014年1月。
非專利文獻(xiàn)6:Trusted Computing Group、[2014年12月26日檢索]、互聯(lián)網(wǎng)<URL:http://www.trustedcomputinggroup.org/>
非專利文獻(xiàn)7:“CAN通信中的數(shù)據(jù)發(fā)送的構(gòu)造是?”、[2014年12月26日檢索]、互聯(lián)網(wǎng)<URL:http://monoist.atmarkit.co.jp/mn/articles/0807/09/news140.html>
非專利文獻(xiàn)8:“初次診斷―Diagnostic Communication入門―”、[2014年12月26日檢索]、互聯(lián)網(wǎng)<URL:http://download.vector-japan.co.jp/pdf/HajimetenoD_ver101.pdf>。
技術(shù)實(shí)現(xiàn)要素:
發(fā)明所要解決的課題
然而,在上述的非專利文獻(xiàn)1中記載的現(xiàn)有技術(shù)中,在用于監(jiān)視通信的真的ECU被拆卸的情況下不能報(bào)告異常。另外,在非專利文獻(xiàn)2中記載的現(xiàn)有技術(shù)中,為了確認(rèn)第N個(gè)到第N+3個(gè)為止的CAN幀的正當(dāng)性,必須等到接收第N+4個(gè)到第N+7個(gè)為止的CAN幀為止,因此該正當(dāng)性的確認(rèn)需要時(shí)間。因此,特別地在要求實(shí)時(shí)控制的情況下不適用。另外,在專利文獻(xiàn)1中記載的現(xiàn)有技術(shù)中,與主消息分開(kāi)發(fā)送MAC消息,因此通信量為2倍以上。進(jìn)而,為了進(jìn)行主消息的認(rèn)證,必須等到接收MAC消息為止,因此該認(rèn)證需要時(shí)間。因此,存在CAN的通信頻帶的壓迫和及時(shí)性下降的問(wèn)題。
本發(fā)明是考慮這樣的情況而做出的,其課題是提供一種通信網(wǎng)絡(luò)系統(tǒng)、發(fā)送節(jié)點(diǎn)、接收節(jié)點(diǎn)、消息檢查方法以及計(jì)算機(jī)程序,其能夠提高用于發(fā)送消息的發(fā)送節(jié)點(diǎn)和用于接收該消息的接收節(jié)點(diǎn)相連接的通信網(wǎng)絡(luò)系統(tǒng)中的消息檢查性能。
用于解決課題的手段
本發(fā)明的一方面是一種通信網(wǎng)絡(luò)系統(tǒng),在該通信網(wǎng)絡(luò)系統(tǒng)中,發(fā)送消息的發(fā)送節(jié)點(diǎn)和接收所述消息的接收節(jié)點(diǎn)相連接,其中,所述發(fā)送節(jié)點(diǎn)具有:發(fā)送計(jì)數(shù)器部,其保存每當(dāng)發(fā)送所述消息時(shí)僅增加規(guī)定的計(jì)數(shù)值的發(fā)送計(jì)數(shù)值;秘密信息存儲(chǔ)部,其存儲(chǔ)秘密信息;消息認(rèn)證碼生成部,其基于在所述消息中的數(shù)據(jù)部中存儲(chǔ)的發(fā)送數(shù)據(jù)、所保存的所述發(fā)送計(jì)數(shù)值和所述秘密信息,生成消息認(rèn)證碼;發(fā)送部,其發(fā)送具有所述發(fā)送數(shù)據(jù)和所生成的所述消息認(rèn)證碼的所述消息;所述接收節(jié)點(diǎn)具有:接收計(jì)數(shù)器部,其保存每當(dāng)接收所述消息時(shí)僅增加所述計(jì)數(shù)值的接收計(jì)數(shù)值;秘密信息存儲(chǔ)部,其存儲(chǔ)所述秘密信息;消息認(rèn)證碼檢查部,其基于從接收到的所述消息中的數(shù)據(jù)部取得的接收數(shù)據(jù)、所保存的所述接收計(jì)數(shù)值和所述秘密信息,生成消息認(rèn)證碼,并檢查所生成的所述消息認(rèn)證碼和從接收到的所述消息取得的消息認(rèn)證碼是否一致。
在本發(fā)明的一方面的通信網(wǎng)絡(luò)系統(tǒng)中,所述消息認(rèn)證碼生成部?jī)?yōu)選僅將所述發(fā)送計(jì)數(shù)值的比特串中的規(guī)定的提取比特?cái)?shù)的上位提取比特使用于所述消息認(rèn)證碼的生成;所述發(fā)送部?jī)?yōu)選針對(duì)要發(fā)送的所述消息,僅存儲(chǔ)所生成的所述消息認(rèn)證碼的比特串中的一部分的比特串,其中,該一部分是根據(jù)所述發(fā)送計(jì)數(shù)值的比特串中除了所述上位提取比特以外的規(guī)定的下位比特的值來(lái)確定的部分;所述消息認(rèn)證碼檢查部?jī)?yōu)選僅將所述接收計(jì)數(shù)值的比特串中的所述提取比特?cái)?shù)的上位提取比特使用于所述消息認(rèn)證碼的生成,并僅將所生成的所述消息認(rèn)證碼中的一部分的比特串作為檢查是否與從接收到的所述消息取得的消息認(rèn)證碼一致的檢查對(duì)象,其中,該一部分是根據(jù)所述接收計(jì)數(shù)值的比特串中除了所述上位提取比特以外的所述下位比特的值來(lái)確定的部分。
在本發(fā)明的一方面的通信網(wǎng)絡(luò)系統(tǒng)中,進(jìn)而優(yōu)選地,所述消息認(rèn)證碼檢查部在所述檢查的結(jié)果為不一致的情況下,僅將所生成的所述消息認(rèn)證碼中的一部分的比特串作為所述一致的再檢查的對(duì)象,其中,該一部分是根據(jù)使所述接收計(jì)數(shù)值增加所述計(jì)數(shù)值而得到的值中的所述下位比特的值來(lái)確定的部分。
在本發(fā)明的一方面的通信網(wǎng)絡(luò)系統(tǒng)中,進(jìn)而優(yōu)選地,所述接收計(jì)數(shù)器部將所述再檢查的結(jié)果為一致的所述下位比特的值作為自身保存的接收計(jì)數(shù)值的所述下位比特的值。
在本發(fā)明的一方面的通信網(wǎng)絡(luò)系統(tǒng)中,所述消息認(rèn)證碼生成部?jī)?yōu)選僅將所述發(fā)送計(jì)數(shù)值的比特串中的規(guī)定的提取比特?cái)?shù)的上位提取比特使用于所述消息認(rèn)證碼的生成;所述發(fā)送部針對(duì)要發(fā)送的所述消息,也可以僅存儲(chǔ)所生成的所述消息認(rèn)證碼的比特串中的一部分的比特串以及與所述一部分的比特串相關(guān)的所生成的所述消息認(rèn)證碼的比特串內(nèi)的位置信息,其中,該一部分是根據(jù)所述發(fā)送計(jì)數(shù)值的比特串中除了所述上位提取比特以外的規(guī)定的下位比特的值來(lái)確定的部分;所述消息認(rèn)證碼檢查部也可以僅將所述接收計(jì)數(shù)值的比特串中的所述提取比特?cái)?shù)的上位提取比特使用于所述消息認(rèn)證碼的生成,并僅將所生成的所述消息認(rèn)證碼中的一部分的比特串作為檢查是否與從接收到的所述消息取得的消息認(rèn)證碼一致的檢查對(duì)象,其中,該一部分是基于從接收到的所述消息取得的位置信息的部分。
本發(fā)明的一方面是一種發(fā)送節(jié)點(diǎn),其是發(fā)送消息的發(fā)送節(jié)點(diǎn)和接收所述消息的接收節(jié)點(diǎn)相連接的通信網(wǎng)絡(luò)系統(tǒng)中的所述發(fā)送節(jié)點(diǎn),其具有:秘密信息存儲(chǔ)部,其存儲(chǔ)與在所述接收節(jié)點(diǎn)保存的秘密信息相同的秘密信息;發(fā)送計(jì)數(shù)器部,其保存每當(dāng)發(fā)送所述消息時(shí)僅增加規(guī)定的計(jì)數(shù)值的發(fā)送計(jì)數(shù)值;消息認(rèn)證碼生成部,其基于在所述消息中的數(shù)據(jù)部中存儲(chǔ)的發(fā)送數(shù)據(jù)、所保存的所述發(fā)送計(jì)數(shù)值和所述秘密信息,生成消息認(rèn)證碼;發(fā)送部,其發(fā)送具有所述發(fā)送數(shù)據(jù)和所生成的所述消息認(rèn)證碼的所述消息。
本發(fā)明的一方面是一種接收節(jié)點(diǎn),其是發(fā)送消息的發(fā)送節(jié)點(diǎn)和接收所述消息的接收節(jié)點(diǎn)相連接的通信網(wǎng)絡(luò)系統(tǒng)中的所述接收節(jié)點(diǎn),其具有:秘密信息存儲(chǔ)部,其存儲(chǔ)與在所述發(fā)送節(jié)點(diǎn)保存的秘密信息相同的秘密信息;接收計(jì)數(shù)器部,其保存每當(dāng)接收所述消息時(shí)僅增加與在所述發(fā)送節(jié)點(diǎn)使用的計(jì)數(shù)值相同的規(guī)定的計(jì)數(shù)值的接收計(jì)數(shù)值;消息認(rèn)證碼檢查部,其基于從接收到的所述消息中的數(shù)據(jù)部取得的接收數(shù)據(jù)、所保存的所述接收計(jì)數(shù)值和所述秘密信息,生成消息認(rèn)證碼,并檢查所生成的所述消息認(rèn)證碼和從接收到的所述消息取得的消息認(rèn)證碼是否一致。
本發(fā)明的一方面是一種消息檢查方法,其是發(fā)送消息的發(fā)送節(jié)點(diǎn)和接收所述消息的接收節(jié)點(diǎn)相連接的通信網(wǎng)絡(luò)系統(tǒng)中的消息檢查方法,其中,所述發(fā)送節(jié)點(diǎn)以及所述接收節(jié)點(diǎn)存儲(chǔ)相同的秘密信息;所述發(fā)送節(jié)點(diǎn)保存每當(dāng)發(fā)送所述消息時(shí)僅增加規(guī)定的計(jì)數(shù)值的發(fā)送計(jì)數(shù)值;所述發(fā)送節(jié)點(diǎn)基于在所述消息中的數(shù)據(jù)部中存儲(chǔ)的發(fā)送數(shù)據(jù)、所保存的所述發(fā)送計(jì)數(shù)值和所述秘密信息,生成消息認(rèn)證碼;所述發(fā)送節(jié)點(diǎn)發(fā)送具有所述發(fā)送數(shù)據(jù)和所生成的所述消息認(rèn)證碼的所述消息;所述接收節(jié)點(diǎn)保存每當(dāng)接收所述消息時(shí)僅增加所述計(jì)數(shù)值的接收計(jì)數(shù)值;所述接收節(jié)點(diǎn)基于從接收到的所述消息中的數(shù)據(jù)部取得的接收數(shù)據(jù)、所保存的所述接收計(jì)數(shù)值和所述秘密信息,生成消息認(rèn)證碼,并檢查所生成的所述消息認(rèn)證碼和從接收到的所述消息取得的消息認(rèn)證碼是否一致。
本發(fā)明的一方面是一種計(jì)算機(jī)程序,其用于使發(fā)送消息的發(fā)送節(jié)點(diǎn)和接收所述消息的接收節(jié)點(diǎn)相連接的通信網(wǎng)絡(luò)系統(tǒng)中的所述發(fā)送節(jié)點(diǎn)的計(jì)算機(jī)實(shí)現(xiàn)如下功能:存儲(chǔ)與在所述接收節(jié)點(diǎn)保存的秘密信息相同的秘密信息的功能;保存每當(dāng)發(fā)送所述消息時(shí)僅增加規(guī)定的計(jì)數(shù)值的發(fā)送計(jì)數(shù)值的功能;基于在所述消息中的數(shù)據(jù)部中存儲(chǔ)的發(fā)送數(shù)據(jù)、所保存的所述發(fā)送計(jì)數(shù)值和所述秘密信息,生成消息認(rèn)證碼的功能;發(fā)送具有所述發(fā)送數(shù)據(jù)和所生成的所述消息認(rèn)證碼的所述消息的功能。
本發(fā)明的一方面是一種計(jì)算機(jī)程序,其用于使發(fā)送消息的發(fā)送節(jié)點(diǎn)和接收所述消息的接收節(jié)點(diǎn)相連接的通信網(wǎng)絡(luò)系統(tǒng)中的所述接收節(jié)點(diǎn)的計(jì)算機(jī)實(shí)現(xiàn)如下功能:存儲(chǔ)與在所述發(fā)送節(jié)點(diǎn)保存的秘密信息相同的秘密信息的功能;保存每當(dāng)接收所述消息時(shí)僅增加與在所述發(fā)送節(jié)點(diǎn)使用的計(jì)數(shù)值相同的規(guī)定的計(jì)數(shù)值的接收計(jì)數(shù)值的功能;基于從接收到的所述消息中的數(shù)據(jù)部取得的接收數(shù)據(jù)、所保存的所述接收計(jì)數(shù)值和所述秘密信息,生成消息認(rèn)證碼,并檢查所生成的所述消息認(rèn)證碼和從接收到的所述消息取得的消息認(rèn)證碼是否一致的功能。
發(fā)明的效果
根據(jù)本發(fā)明,得到能夠提高發(fā)送消息的發(fā)送節(jié)點(diǎn)和接收該消息的接收節(jié)點(diǎn)相連接的通信網(wǎng)絡(luò)系統(tǒng)中的消息檢查性能的效果。
附圖說(shuō)明
圖1是示出本發(fā)明的第一實(shí)施方式的通信網(wǎng)絡(luò)系統(tǒng)的框圖。
圖2是示出本發(fā)明的第一實(shí)施方式的MCU_2(節(jié)點(diǎn))的框圖。
圖3是示出本發(fā)明的第一實(shí)施方式的數(shù)據(jù)幀的圖。
圖4是示出本發(fā)明的第一實(shí)施方式的發(fā)送處理過(guò)程的圖。
圖5是示出本發(fā)明的第一實(shí)施方式的接收處理過(guò)程的圖。
圖6是示出本發(fā)明的第一實(shí)施方式的接收處理過(guò)程的圖。
圖7是示出本發(fā)明的第二實(shí)施方式的通信網(wǎng)絡(luò)系統(tǒng)的框圖。
圖8是示出本發(fā)明的第二實(shí)施方式的引導(dǎo)處理的順序圖表。
圖9是本發(fā)明的第二實(shí)施方式的密碼處理的順序圖表。
圖10是用于說(shuō)明本發(fā)明的第二實(shí)施方式的MAC生成處理以及MAC檢查處理的順序圖表。
圖11是示出本發(fā)明的一實(shí)施方式的數(shù)據(jù)幀的其他例的結(jié)構(gòu)圖。
圖12是示出CAN中的擴(kuò)展格式的數(shù)據(jù)幀的結(jié)構(gòu)圖。
圖13是示出本發(fā)明的一實(shí)施方式的MAC存儲(chǔ)方法的例1的說(shuō)明圖。
圖14是示出本發(fā)明的一實(shí)施方式的MAC存儲(chǔ)方法的例2的說(shuō)明圖。
圖15是示出本發(fā)明的一實(shí)施方式的MAC存儲(chǔ)方法的例3的說(shuō)明圖。
圖16是示出本發(fā)明的一實(shí)施方式的數(shù)據(jù)幀的其他例的結(jié)構(gòu)圖。
圖17是示出在本發(fā)明的一實(shí)施方式的數(shù)據(jù)幀中存儲(chǔ)的MAC數(shù)據(jù)的其他例的說(shuō)明圖。
圖18是示出在本發(fā)明的一實(shí)施方式的數(shù)據(jù)幀中存儲(chǔ)的MAC數(shù)據(jù)的其他例的說(shuō)明圖。
圖19是本發(fā)明的一實(shí)施方式的密碼處理的順序圖表。
圖20是本發(fā)明的一實(shí)施方式的密碼處理的順序圖表。
圖21是本發(fā)明的一實(shí)施方式的密碼處理的順序圖表。
圖22是用于說(shuō)明本發(fā)明的一實(shí)施方式的MAC生成處理以及MAC檢查處理的順序圖表。
具體實(shí)施方式
下面,參照附圖,對(duì)本發(fā)明的實(shí)施方式進(jìn)行說(shuō)明。
[第一實(shí)施方式]
在本實(shí)施方式中,作為本發(fā)明的通信網(wǎng)絡(luò)系統(tǒng)的一個(gè)方面,以作為在車輛上搭載的通信網(wǎng)絡(luò)系統(tǒng)的CAN為例進(jìn)行說(shuō)明。圖1是示出本發(fā)明的第一實(shí)施方式的通信網(wǎng)絡(luò)系統(tǒng)1的結(jié)構(gòu)的框圖。
在圖1中,通信網(wǎng)絡(luò)系統(tǒng)1具有多個(gè)MCU(Micro Computing Unit:微計(jì)算單元)_2。MCU_2由CPU(Central Processing Unit:中央處理器)以及存儲(chǔ)器等構(gòu)成,是計(jì)算機(jī)的一種。MCU_2通過(guò)由自身的CPU執(zhí)行計(jì)算機(jī)程序,來(lái)實(shí)現(xiàn)與該計(jì)算機(jī)程序相應(yīng)的功能。各MCU_2作為用于控制車輛內(nèi)的設(shè)備的電子控制單元(ECU)被利用。
MCU_2連接于CAN的通信總線3。在本實(shí)施方式中,為了方便說(shuō)明,設(shè)通信網(wǎng)絡(luò)系統(tǒng)1具有3臺(tái)MCU_2,該3臺(tái)MCU_2連接于通信總線3。通信總線3將在各MCU_2之間交換的消息進(jìn)行傳送。各MCU_2經(jīng)由通信總線3彼此收發(fā)消息。在CAN中,以規(guī)定的幀形式傳送消息。MCU_2發(fā)揮CAN中的節(jié)點(diǎn)(通信裝置)的功能。在本實(shí)施方式中,MCU_2具有用于發(fā)送消息的發(fā)送節(jié)點(diǎn)的功能和用于接收該消息的接收節(jié)點(diǎn)的功能。如圖1所示,在3臺(tái)的各MCU_2中,作為CAN中的標(biāo)識(shí)符(ID),分別附有ID1、ID2、ID3。
圖2是示出本發(fā)明的第一實(shí)施方式的MCU_2(節(jié)點(diǎn))的結(jié)構(gòu)的框圖。
在圖2中,MCU_2具有發(fā)送部111、接收部112、幀接收處理部113、MAC(消息認(rèn)證碼)生成部114、計(jì)數(shù)器部115、MAC(消息認(rèn)證碼)檢查部116和秘密信息存儲(chǔ)部117。
發(fā)送部111將規(guī)定的幀形式的消息發(fā)送給通信總線3。接收部112從通信總線3接收該規(guī)定的幀形式的消息。
圖3是示出本發(fā)明的第一實(shí)施方式的數(shù)據(jù)幀的結(jié)構(gòu)的圖。在圖3的數(shù)據(jù)幀中,在各字段中所示的括號(hào)內(nèi)的數(shù)字表示:存儲(chǔ)在該字段的信息的比特(bit)數(shù)。
圖3所示的數(shù)據(jù)幀的結(jié)構(gòu)相對(duì)于CAN中的標(biāo)準(zhǔn)格式的數(shù)據(jù)幀的結(jié)構(gòu),變更了一部分。在本實(shí)施方式中,將在數(shù)據(jù)幀中的CRC字段(CRC部)中存儲(chǔ)的信息變更為消息認(rèn)證碼(MAC)。在該數(shù)據(jù)幀中,除了CRC部以外的部分相對(duì)于CAN中的標(biāo)準(zhǔn)格式?jīng)]有變更。下面,將圖3所示的本實(shí)施方式的數(shù)據(jù)幀稱為CAN幀。
再次參照?qǐng)D2,將用于在CAN幀中存儲(chǔ)的發(fā)送數(shù)據(jù)等數(shù)據(jù)輸入至發(fā)送部111。發(fā)送部111將在CAN幀中的相應(yīng)部分存儲(chǔ)了該被輸入的數(shù)據(jù)而得到的CAN幀發(fā)送至通信總線3。發(fā)送數(shù)據(jù)被存儲(chǔ)至圖3中的數(shù)據(jù)字段(Data Field:數(shù)據(jù)部)。幀接收處理部113針對(duì)接收部112從通信總線3接收的CAN幀進(jìn)行接收處理。MAC生成部114基于在CAN幀中的數(shù)據(jù)部中存儲(chǔ)的發(fā)送數(shù)據(jù)等來(lái)生成MAC。
計(jì)數(shù)器部115具有作為發(fā)送計(jì)數(shù)器部的功能和作為接收計(jì)數(shù)器部的功能。作為發(fā)送計(jì)數(shù)器部的功能,計(jì)數(shù)器部115保存每當(dāng)發(fā)送部111發(fā)送CAN幀時(shí)僅增加規(guī)定的計(jì)數(shù)值的發(fā)送計(jì)數(shù)值。在本實(shí)施方式中,將該計(jì)數(shù)值設(shè)為1。因此,計(jì)數(shù)器部115保存每當(dāng)發(fā)送部111發(fā)送CAN幀時(shí)僅增加1的發(fā)送計(jì)數(shù)值。每當(dāng)自身的MCU_2(節(jié)點(diǎn))發(fā)送CAN幀時(shí)該發(fā)送計(jì)數(shù)值被增加1。
作為接收計(jì)數(shù)器部的功能,計(jì)數(shù)器部115保存每當(dāng)接收部112接收CAN幀時(shí)僅增加與發(fā)送計(jì)數(shù)器部相同的規(guī)定的計(jì)數(shù)值的接收計(jì)數(shù)值。在本實(shí)施方式中,將該計(jì)數(shù)值設(shè)為1。因此,計(jì)數(shù)器部115保存每當(dāng)接收部112接收CAN幀時(shí)僅增加1的接收計(jì)數(shù)值。針對(duì)CAN幀中的每一ID,設(shè)置該接收計(jì)數(shù)值。該ID是對(duì)于發(fā)送了CAN幀的MCU_2(節(jié)點(diǎn))賦予的ID,其存儲(chǔ)在圖3中的ID字段(ID部)。
在本實(shí)施方式中,存在3臺(tái)MCU_2(ID分別為ID1、ID2、ID3),因此,如圖2所示,計(jì)數(shù)器部115保存與該3臺(tái)各MCU_2(作為各ID的ID1、ID2、ID3)對(duì)應(yīng)的3個(gè)計(jì)數(shù)值(ID1計(jì)數(shù)值、ID2計(jì)數(shù)值、ID3計(jì)數(shù)值)。在計(jì)數(shù)器部115中,與自身的MCU_2的ID對(duì)應(yīng)的計(jì)數(shù)值為發(fā)送計(jì)數(shù)值,與其他MCU_2的ID對(duì)應(yīng)的計(jì)數(shù)值為接收計(jì)數(shù)值。例如,在ID1的MCU_2中,ID1計(jì)數(shù)值為發(fā)送計(jì)數(shù)值,ID2計(jì)數(shù)值為與ID2對(duì)應(yīng)的接收計(jì)數(shù)值,ID3計(jì)數(shù)值為與ID3對(duì)應(yīng)的接收計(jì)數(shù)值。
MAC檢查部116針對(duì)從接收部112通過(guò)通信總線3接收的CAN幀中取得的MAC進(jìn)行檢查。秘密信息存儲(chǔ)部117在各MCU_2中存儲(chǔ)相同的秘密信息。該秘密信息在制造MCU_2等時(shí)安全地設(shè)置在MCU_2中。
接著,對(duì)本實(shí)施方式的MCU_2(節(jié)點(diǎn))的動(dòng)作進(jìn)行說(shuō)明。
[發(fā)送節(jié)點(diǎn)的動(dòng)作]
首先,參照?qǐng)D4,對(duì)MCU_2的作為發(fā)送節(jié)點(diǎn)的動(dòng)作進(jìn)行說(shuō)明。圖4是示出本發(fā)明的第一實(shí)施方式的發(fā)送處理過(guò)程的圖。在制作從發(fā)送部111發(fā)送的CAN幀時(shí)開(kāi)始圖4的發(fā)送處理。
(步驟S111)MAC生成部114從計(jì)數(shù)器部115取得發(fā)送計(jì)數(shù)值。MAC生成部114從該取得的發(fā)送計(jì)數(shù)值的比特串(比特?cái)?shù)為L(zhǎng))僅取得與規(guī)定的提取比特?cái)?shù)相應(yīng)(L-n比特)的上位比特,來(lái)作為上位提取比特(比特?cái)?shù)為“L-n”)。
(步驟S112)MAC生成部114使用在CAN幀中的數(shù)據(jù)部中存儲(chǔ)的發(fā)送數(shù)據(jù)、在步驟S111中取得的上位提取比特、存儲(chǔ)在秘密信息存儲(chǔ)部117中的秘密信息,來(lái)生成MAC。作為MAC,例如,計(jì)算哈希(Hash)值。作為哈希值的計(jì)算方法,例如,可以舉出SHA-256。此外,關(guān)于哈希值的計(jì)算方法,例如記載在非專利文獻(xiàn)3、4中。
(步驟S113)MAC生成部114從在步驟S112中生成的MAC的比特串(MAC值)提?。阂贑AN幀中的CRC部中存儲(chǔ)的比特串(15比特)。該被提取的比特串是根據(jù)在步驟S111中取得的發(fā)送計(jì)數(shù)值的比特串(比特?cái)?shù)為L(zhǎng))中除了上位提取比特以外的規(guī)定的下位比特(比特?cái)?shù)為n)的值來(lái)確定的。在圖4所示的例中,該下位比特(比特?cái)?shù)為n)的值為“3”。由此,在MAC值的比特串中,提取根據(jù)該值“3”來(lái)確定的一部分(15比特)。
由于在本實(shí)施方式中CAN幀中的CRC部為15比特,因此,作為在該CRC部中存儲(chǔ)的信息,從MAC值的比特串提取根據(jù)值“3”來(lái)確定的15比特。因此,針對(duì)MAC值的比特串確定每15比特的區(qū)間,并根據(jù)發(fā)送計(jì)數(shù)值的下位比特(比特?cái)?shù)為n)的值來(lái)確定將哪個(gè)區(qū)間的15比特存儲(chǔ)在CAN幀中的CRC部。此外,在圖4的例中,按照MAC值的總比特?cái)?shù)確定了K個(gè)區(qū)間(1區(qū)間為15比特)。
發(fā)送部111針對(duì)CAN幀,將發(fā)送數(shù)據(jù)(在步驟S112中用于MAC生成的數(shù)據(jù))存儲(chǔ)在數(shù)據(jù)部中,并將在步驟S113中從MAC值的比特串中提取的15比特的比特串存儲(chǔ)在CRC部中。發(fā)送部111將該CAN幀發(fā)送至通信總線3。計(jì)數(shù)器部115通過(guò)該CAN幀的發(fā)送,將發(fā)送計(jì)數(shù)值僅增加1并進(jìn)行保存。
以上為對(duì)發(fā)送節(jié)點(diǎn)的動(dòng)作的說(shuō)明。
[接收節(jié)點(diǎn)的動(dòng)作]
接著,參照?qǐng)D5、圖6,對(duì)MCU_2的作為接收節(jié)點(diǎn)的動(dòng)作進(jìn)行說(shuō)明。圖5、圖6是示出本發(fā)明的第一實(shí)施方式的接收處理過(guò)程的圖。在通過(guò)接收部112接收到CAN幀時(shí)開(kāi)始圖5的接收處理。
(步驟S121)MAC檢查部116從計(jì)數(shù)器部115取得:與在通過(guò)接收部112接收到的CAN幀中的ID部中存儲(chǔ)的ID對(duì)應(yīng)的接收計(jì)數(shù)值。MAC檢查部116從該取得的接收計(jì)數(shù)值的比特串(比特?cái)?shù)為L(zhǎng))僅取得與規(guī)定的提取比特?cái)?shù)相應(yīng)(L-n比特)的上位比特,來(lái)作為上位提取比特(比特?cái)?shù)為“L-n”)。該上位提取比特的取得方法與上述的MAC生成部114的處理(步驟S111)相同。
(步驟S122)MAC檢查部116使用從通過(guò)接收部112接收到的CAN幀中的數(shù)據(jù)部取得的接收數(shù)據(jù)、在步驟S121中取得的上位提取比特、存儲(chǔ)在秘密信息存儲(chǔ)部117中的秘密信息,來(lái)生成MAC。
該MAC的值(計(jì)算MAC值)以與上述的MAC生成部114相同的計(jì)算方法(例如,由SHA-256進(jìn)行的哈希值計(jì)算)計(jì)算。
(步驟S123)MAC檢查部116從在步驟S122中生成的MAC的比特串(計(jì)算MAC值)提取作為檢查對(duì)象的檢查對(duì)象比特串(15比特)。該檢查對(duì)象比特串的提取方法與上述的MAC生成部114中的、在CAN幀中的CRC部中存儲(chǔ)的比特串(15比特)的提取方法(步驟S113)相同。即,該檢查對(duì)象比特串是計(jì)算MAC值的比特串中的一部分(15比特),該一部分是根據(jù)在步驟S121中取得的接收計(jì)數(shù)值的比特串(比特?cái)?shù)為L(zhǎng))中的除了上位提取比特以外的規(guī)定的下位比特(比特?cái)?shù)為n)的值來(lái)確定的一部分。在圖5所示的例中,該下位比特(比特?cái)?shù)為n)的值為“3”。由此,在計(jì)算MAC值的比特串中提取根據(jù)該值“3”來(lái)確定的一部分(15比特)。
在本實(shí)施方式中,檢查在CAN幀中的CRC部(15比特)中存儲(chǔ)的信息和從計(jì)算MAC值的比特串提取的檢查對(duì)象比特串(15比特)是否一致。因此,與上述的發(fā)送處理同樣地,針對(duì)計(jì)算MAC值的比特串確定每15比特的區(qū)間,并根據(jù)接收計(jì)數(shù)值的下位比特(比特?cái)?shù)為n)的值來(lái)確定:將哪個(gè)區(qū)間的15比特作為檢查對(duì)象比特串。此外,在圖5的例中,按照計(jì)算MAC值的總比特?cái)?shù)確定了K個(gè)區(qū)間(1區(qū)間為15比特)。
MAC檢查部116判定從通過(guò)接收部112接收到的CAN幀中的CRC部取得的MAC值(接收MAC值(15比特))和從計(jì)算MAC值的比特串提取的檢查對(duì)象比特串(15比特)是否一致。
該判定的結(jié)果,在接收MAC值和檢查對(duì)象比特串一致的情況下,MAC檢查部116對(duì)于幀接收處理部113通知檢查合格。由此,幀接收處理部113針對(duì)通過(guò)接收部112接收到的CAN幀,進(jìn)行對(duì)于正常接收到的CAN幀執(zhí)行的規(guī)定的接收處理。另外,MAC檢查部116對(duì)于計(jì)數(shù)器部115通知檢查合格。由此,計(jì)數(shù)器部115使相應(yīng)的接收計(jì)數(shù)值僅增加1并進(jìn)行保存。該計(jì)數(shù)對(duì)象的接收計(jì)數(shù)值是與在通過(guò)接收部112接收到的CAN幀中的ID部中存儲(chǔ)的ID對(duì)應(yīng)的接收計(jì)數(shù)值。
另一方面,在該判定的結(jié)果為接收MAC值和檢查對(duì)象比特串不一致的情況下,MAC檢查部116進(jìn)行圖6所示的再檢查處理。以下,參照?qǐng)D6,對(duì)該再檢查處理進(jìn)行說(shuō)明。
(步驟S131)MAC檢查部116從在步驟S122中生成的計(jì)算MAC值的比特串提取作為再檢查對(duì)象的再檢查對(duì)象比特串(15比特)。該再檢查對(duì)象比特串的提取處理與上述的檢查對(duì)象比特串的提取處理相同,但是使用使在步驟S121中取得的接收計(jì)數(shù)值增加而得到的值(増加接收計(jì)數(shù)值)。具體地,首先,對(duì)在步驟S121中取得的接收計(jì)數(shù)值加上1。接著,從計(jì)算MAC值的比特串中提取一部分(15比特)來(lái)作為再檢查對(duì)象比特串,其中,該一部分是根據(jù)作為對(duì)該接收計(jì)數(shù)值加上1而得到的值的増加接收計(jì)數(shù)值的比特串中的下位比特(比特?cái)?shù)為n)的值來(lái)確定的一部分。
MAC檢查部116判定該提取的再檢查對(duì)象比特串和接收MAC值是否一致。該判定的結(jié)果為不一致的情況下,將對(duì)當(dāng)前的増加接收計(jì)數(shù)值再加上1而得到的值作為新的増加接收計(jì)數(shù)值。然后,從計(jì)算MAC值的比特串中提取一部分(15比特)來(lái)作為新的再檢查對(duì)象比特串,其中,該一部分是根據(jù)該新的増加接收計(jì)數(shù)值的比特串中的下位比特(比特?cái)?shù)為n)的值來(lái)確定的一部分。接著,判定該提取的新的再檢查對(duì)象比特串和接收MAC值是否一致。該再檢查反復(fù)進(jìn)行至判定的結(jié)果變得一致為止。但是,該再檢查到計(jì)算MAC值的比特串的一端的區(qū)間(根據(jù)下位比特的值“K-1”確定的區(qū)間)就結(jié)束。其理由在于,下位比特的值被進(jìn)位,用于計(jì)算MAC值的生成的上位提取比特的值發(fā)生變化。
因此,在即使檢查至計(jì)算MAC值的比特串中根據(jù)下位比特的值“K-1”來(lái)確定的區(qū)間也不與接收MAC值一致的情況下,使用下位比特的值的進(jìn)位后的上位提取比特來(lái)再次計(jì)算出計(jì)算MAC值,并將該再次計(jì)算出的新的計(jì)算MAC值,與上述的再檢查同樣地判斷是否與接收MAC值一致。
(步驟S132)在步驟S131的再檢查的結(jié)果為再檢查對(duì)象比特串和接收MAC值一致的情況下,MAC檢查部116對(duì)計(jì)數(shù)器部115通知與該再檢查對(duì)象比特串相關(guān)的下位比特的值,來(lái)指示計(jì)數(shù)器同步。計(jì)數(shù)器部115通過(guò)該計(jì)數(shù)器同步的指示,將相應(yīng)的接收計(jì)數(shù)值的下位比特(比特?cái)?shù)為n)的值變更為被通知的下位比特的值。該計(jì)數(shù)器同步對(duì)象的接收計(jì)數(shù)值是與在通過(guò)接收部112接收到的CAN幀中的ID部中存儲(chǔ)的ID對(duì)應(yīng)的接收計(jì)數(shù)值。由此,與該ID對(duì)應(yīng)的發(fā)送節(jié)點(diǎn)的發(fā)送計(jì)數(shù)值和本接收節(jié)點(diǎn)的與該ID對(duì)應(yīng)的接收計(jì)數(shù)值變得同步。
在圖6所示的例中,在步驟S121中取得的接收計(jì)數(shù)值中的下位比特(比特?cái)?shù)為n)的值為“3”。在根據(jù)該值“3”來(lái)確定的檢查對(duì)象比特串的情況下,與接收MAC值不一致。因此,將根據(jù)增加接收計(jì)數(shù)值的比特串中的下位比特(比特?cái)?shù)為n)的值“4”來(lái)確定的部分作為再檢查對(duì)象比特串,來(lái)判定是否與接收MAC值一致,其中,上述增加接收計(jì)數(shù)值是對(duì)在步驟S121中取得的接收計(jì)數(shù)值加上1而得到的。在圖6的例中,在根據(jù)該值“4”來(lái)確定的再檢查對(duì)象比特串,也與接收MAC值不一致。因此,將根據(jù)新的增加接收計(jì)數(shù)值的比特串中的下位比特(比特?cái)?shù)為n)的值“5”來(lái)確定的部分作為再檢查對(duì)象比特串,來(lái)判定是否與接收MAC值一致,其中,新的增加接收計(jì)數(shù)值是對(duì)當(dāng)前的增加接收計(jì)數(shù)值加上1而得到的。在圖6的例中,在根據(jù)該值“5”來(lái)確定的再檢查對(duì)象比特串與接收MAC值一致。由此,在計(jì)數(shù)器部115中相應(yīng)的接收計(jì)數(shù)值的下位比特(比特?cái)?shù)為n)的值從“3”變更為“5”。
即使重復(fù)規(guī)定次數(shù)的再檢查,再檢查對(duì)象比特串和接收MAC值也不一致的情況下,MAC檢查部116對(duì)于幀接收處理部113通知檢查不合格。由此,幀接收處理部113廢棄通過(guò)接收部112接收到的CAN幀。這是因?yàn)椋J(rèn)為發(fā)生了通信出錯(cuò)或者發(fā)出冒充消息的攻擊。此外,在檢查不合格的情況下,MAC檢查部116對(duì)于計(jì)數(shù)器部115不通知檢查合格。由此,計(jì)數(shù)器部115對(duì)于與在通過(guò)接收部112接收到的CAN幀中的ID部中存儲(chǔ)的ID對(duì)應(yīng)的接收計(jì)數(shù)值,不增加接收計(jì)數(shù)值。
此外,接收節(jié)點(diǎn)在同一ID的CAN幀中連續(xù)兩次以上接收到具有相同MAC值的CAN幀的情況下,判斷為發(fā)生了重放攻擊(Replay Attacks)。
該情況下,可以舉出針對(duì)該ID的CAN幀不進(jìn)行接收處理的對(duì)策。
以上為對(duì)接收節(jié)點(diǎn)的動(dòng)作的說(shuō)明。
根據(jù)本實(shí)施方式,就從發(fā)送節(jié)點(diǎn)發(fā)送的CAN幀而言,在CRC部中存儲(chǔ)有使用在該CAN幀的數(shù)據(jù)部中存儲(chǔ)的發(fā)送數(shù)據(jù)來(lái)生成的MAC。然后,在接收節(jié)點(diǎn),利用使用從接收到的CAN幀的數(shù)據(jù)部取得的接收數(shù)據(jù)來(lái)生成的MAC和從該CAN幀的CRC部取得的MAC,進(jìn)行該CAN幀的檢查。由此,不需要從發(fā)送節(jié)點(diǎn)與發(fā)送數(shù)據(jù)的CAN幀分開(kāi)來(lái)單獨(dú)地發(fā)送MAC的CAN幀,因此能夠消除由于MAC的CAN幀而壓迫CAN的通信頻帶的問(wèn)題。進(jìn)而,由于能夠以相同的CAN幀接收發(fā)送數(shù)據(jù)和MAC,因此能夠?qū)崿F(xiàn)檢查的及時(shí)性。
進(jìn)而,由于在發(fā)送節(jié)點(diǎn)和接收節(jié)點(diǎn)使用共同的秘密信息來(lái)生成MAC,因此在不具有該秘密信息的發(fā)送節(jié)點(diǎn)所生成的MAC的情況下,CAN幀的檢查將不合格。由此,對(duì)CAN幀的檢查的可靠性提高。
另外,將生成的MAC的比特串中的根據(jù)發(fā)送計(jì)數(shù)值的下位比特來(lái)確定的區(qū)間存儲(chǔ)至CAN幀中,由此在發(fā)送的每一CAN幀中存儲(chǔ)的MAC值都不同。由此,能夠容易檢測(cè)出反復(fù)發(fā)送相同的CAN幀的重放攻擊。另外,在發(fā)送節(jié)點(diǎn)使用CAN幀中的數(shù)據(jù)部的發(fā)送數(shù)據(jù)來(lái)生成MAC,因此在接收節(jié)點(diǎn)能夠檢測(cè)出發(fā)送數(shù)據(jù)的篡改。
另外,在本實(shí)施方式中,在生成MAC時(shí)使用計(jì)數(shù)值的上位提取比特,并根據(jù)計(jì)數(shù)值的除了上位提取比特以外的下位比特,決定將該MAC的哪個(gè)部分存儲(chǔ)在CRC部中。因此,在MAC的再檢查中,在發(fā)生該下位比特的進(jìn)位之前,不需要進(jìn)行MAC的再計(jì)算,而能夠一邊在相同的MAC中改變?cè)贆z查對(duì)象比特串一邊反復(fù)進(jìn)行再檢查。由此,能夠減少檢查時(shí)的運(yùn)算量,有助于檢查時(shí)間的縮短。
另外,根據(jù)本實(shí)施方式,還能夠得到對(duì)CAN的已有的幀形式的變更少的效果。
此外,在本實(shí)施方式中,僅將生成的MAC中的一部分存儲(chǔ)在CAN幀中的CRC部中,因此有可能發(fā)生MAC之間的沖突。例如,發(fā)生哈希值的沖突的可能性為“1/2”的15次方(=1/32768)。但是,即使發(fā)生了哈希值的沖突,進(jìn)而發(fā)生下一個(gè)哈希值的沖突的概率還是1/32768,因此連續(xù)發(fā)生哈希值的沖突的概率變得非常小。例如,如果連續(xù)發(fā)送具有相同發(fā)送數(shù)據(jù)的多個(gè)CAN幀(各CAN幀的MAC不同),則認(rèn)為在該多個(gè)CAN幀中的某一幀中不發(fā)生MAC(哈希值)的沖突,能夠正常接收,因此可以認(rèn)為哈希值的沖突對(duì)通信品質(zhì)的影響較少。
另外,在上述的實(shí)施方式中,在CAN幀中的CRC部中存儲(chǔ)了MAC,但是也可以存儲(chǔ)在數(shù)據(jù)部中。圖11是示出本發(fā)明的一實(shí)施方式的數(shù)據(jù)幀的其他例的結(jié)構(gòu)圖。在圖11的數(shù)據(jù)幀中,各字段中所示的括號(hào)內(nèi)的數(shù)字表示在該字段中存儲(chǔ)的信息的比特?cái)?shù)。圖11所示的數(shù)據(jù)幀的結(jié)構(gòu)相對(duì)于CAN中的標(biāo)準(zhǔn)格式的數(shù)據(jù)幀的結(jié)構(gòu),限定了一部分。
在圖11所示的數(shù)據(jù)幀中,在數(shù)據(jù)幀中的數(shù)據(jù)部(Data Field:數(shù)據(jù)字段)存儲(chǔ)MAC。MAC被存儲(chǔ)在數(shù)據(jù)部?jī)?nèi)的規(guī)定的位置。例如,可以舉例在數(shù)據(jù)部的開(kāi)頭部分或者結(jié)尾部分存儲(chǔ)的情況。其中,認(rèn)為存儲(chǔ)在結(jié)尾部分對(duì)數(shù)據(jù)部的已有的使用方法帶來(lái)的影響小。在圖11的例中,MAC被存儲(chǔ)在數(shù)據(jù)部?jī)?nèi)的結(jié)尾部分。在圖11的例中,MAC的數(shù)據(jù)長(zhǎng)為16比特。因此,如在圖11中記載的那樣,在數(shù)據(jù)部存儲(chǔ)的除了MAC以外的數(shù)據(jù)的數(shù)據(jù)長(zhǎng)的最大值為48比特。在圖11所示的數(shù)據(jù)幀中,除了在數(shù)據(jù)部存儲(chǔ)MAC這一點(diǎn)以外,與CAN中的標(biāo)準(zhǔn)格式相同。
此外,由于數(shù)據(jù)部的大小為64比特,因此能夠使所生成的MAC中的在數(shù)據(jù)幀存儲(chǔ)的部分比CRC部(15比特)多。但是,如果使所生成的MAC中的在數(shù)據(jù)幀存儲(chǔ)的部分變多,則發(fā)送數(shù)據(jù)的大小相應(yīng)地變小,因此優(yōu)選將存儲(chǔ)在數(shù)據(jù)部的MAC的大小抑制到能夠允許MAC的沖突所帶來(lái)的影響的程度。此外,在數(shù)據(jù)部存儲(chǔ)MAC的情況下,在CRC部存儲(chǔ)CRC,從而能夠有效利用CRC功能。
[第二實(shí)施方式]
第二實(shí)施方式是用于在上述的第一實(shí)施方式中MCU_2安全地保存秘密信息的結(jié)構(gòu)例。圖7是示出本發(fā)明的第二實(shí)施方式的通信網(wǎng)絡(luò)系統(tǒng)1的結(jié)構(gòu)的框圖。圖7所示的通信網(wǎng)絡(luò)系統(tǒng)1搭載在車輛。在圖7所示的通信網(wǎng)絡(luò)系統(tǒng)1中,在CAN的通信總線3連接有多個(gè)MCU_2-a、2-b。在第二實(shí)施方式中,也與上述的第一實(shí)施方式同樣地,為了便于說(shuō)明,假設(shè)3臺(tái)MCU_2-a、2-b連接在通信總線3。如圖7所示,對(duì)于3臺(tái)各MCU_2-a、2-b,作為CAN中的標(biāo)識(shí)符(ID),對(duì)MCU_2-a賦予了ID1,對(duì)各MCU_2-b分別賦予了ID2、ID3。
MCU_2-a在認(rèn)證與通信總線3相連接的MCU_2-b的處理中作為主機(jī)進(jìn)行工作。以下,將MCU_2-a稱為“主機(jī)MCU_2-a”。另外,將MCU_2-b稱為“末端MCU_2-b”。另外,在不特別區(qū)分MCU_2-a、2-b時(shí),稱為“MCU_2”。
接著,參照?qǐng)D7,對(duì)主機(jī)MCU_2-a和末端MCU_2-b的結(jié)構(gòu)進(jìn)行說(shuō)明。由于主機(jī)MCU_2-a和末端MCU_2-b具有同樣的結(jié)構(gòu),因此,下面,作為MCU_2,說(shuō)明主機(jī)MCU_2-a和末端MCU_2-b的結(jié)構(gòu)。
MCU_2具有CPU_10、閃存器(flash memory)11、RAM(隨機(jī)存取存儲(chǔ)器)_12、引導(dǎo)加載器(boot loader)13以及安全元件(secure element)14。安全元件14具有安全RAM_21、安全ROM(Read Only Memory:只讀存儲(chǔ)器)_22、驗(yàn)證部23以及密碼處理部24。
CPU_10通過(guò)執(zhí)行計(jì)算機(jī)程序,實(shí)現(xiàn)作為用于控制車輛內(nèi)的設(shè)備的ECU的功能以及作為CAN中的節(jié)點(diǎn)的功能。閃存器11將在CPU_10中執(zhí)行的計(jì)算機(jī)程序以及有關(guān)該計(jì)算機(jī)程序的簽名進(jìn)行存儲(chǔ)。RAM_12存儲(chǔ)數(shù)據(jù)。RAM_12成為在CPU_10執(zhí)行計(jì)算機(jī)程序時(shí)的執(zhí)行區(qū)域。
引導(dǎo)加載器13通過(guò)MCU_2的電源接通來(lái)進(jìn)行引導(dǎo)處理。引導(dǎo)加載器13被進(jìn)行ROM化,使得不能變更該引導(dǎo)處理的內(nèi)容。
安全元件14被構(gòu)成為:從安全元件14的外部不能接入在安全元件14的內(nèi)部保存的數(shù)據(jù)的安全的要素。安全RAM_21是在安全元件14的內(nèi)部保存的數(shù)據(jù)的臨時(shí)存儲(chǔ)區(qū)域。從安全元件14的外部不能接入安全RAM_21。安全ROM_22將在安全元件14內(nèi)部使用的密鑰進(jìn)行存儲(chǔ)。從安全元件14的外部不能接入安全ROM_22。在制造MCU_2時(shí)等,在安全ROM_22中預(yù)先安全地寫入有密鑰。
驗(yàn)證部23使用在安全ROM_22中保存的簽名驗(yàn)證密鑰,進(jìn)行引導(dǎo)加載器13的引導(dǎo)處理中的程序正當(dāng)性驗(yàn)證處理。驗(yàn)證部23在該程序正當(dāng)性驗(yàn)證處理中,使用安全RAM_21作為臨時(shí)存儲(chǔ)區(qū)域。
密碼處理部24使用在安全ROM_22中保存的秘密的密鑰,來(lái)對(duì)在自身的MCU_2和其他MCU_2之間交換的信息進(jìn)行密碼處理。該密碼處理為加密處理或解密處理。密碼處理部24在該密碼處理中,使用安全RAM_21作為臨時(shí)存儲(chǔ)區(qū)域。
接著,參照?qǐng)D8,對(duì)本實(shí)施方式的引導(dǎo)處理進(jìn)行說(shuō)明。圖8是本實(shí)施方式的引導(dǎo)處理的順序圖表。通過(guò)MCU_2的電源接通,開(kāi)始圖8的處理。
(步驟S1)引導(dǎo)加載器13從閃存器11讀入計(jì)算機(jī)程序和簽名。接著,引導(dǎo)加載器13計(jì)算該讀入的計(jì)算機(jī)程序的哈希(hash)值。
(步驟S2)引導(dǎo)加載器13將該計(jì)算出的哈希值和從閃存器11讀入的簽名發(fā)送至安全元件14。
(步驟S3)在安全元件14中,驗(yàn)證部23使用在安全ROM_22保存的簽名驗(yàn)證密鑰,驗(yàn)證從引導(dǎo)加載器13接收到的簽名中包含的值和從引導(dǎo)加載器13接收到的哈希值是否一致。在該驗(yàn)證處理中,安全RAM_21用作為驗(yàn)證處理中的數(shù)據(jù)的臨時(shí)存儲(chǔ)區(qū)域。在該驗(yàn)證成功的情況下,安全元件14向引導(dǎo)加載器13通知驗(yàn)證成功。
(步驟S4)引導(dǎo)加載器13在從安全元件14接收到驗(yàn)證成功的通知的情況下,將在步驟S1中從閃存器11讀入的計(jì)算機(jī)程序加載到RAM_12。由此,CPU_10能夠執(zhí)行加載在RAM_12的計(jì)算機(jī)程序。
另一方面,引導(dǎo)加載器13在未接收到來(lái)自安全元件14的驗(yàn)證成功的通知的情況下(例如,從步驟S2的發(fā)送后起經(jīng)過(guò)了規(guī)定時(shí)間也沒(méi)有從安全元件14接收到驗(yàn)證成功的通知或者從安全元件14接收到驗(yàn)證失敗的通知的情況下),不將在步驟S1中從閃存器11讀入的計(jì)算機(jī)程序加載到RAM_12。在該情況下,引導(dǎo)加載器13停止MCU_2的啟動(dòng)。
根據(jù)上述的本實(shí)施方式的引導(dǎo)處理,通過(guò)安全元件14所進(jìn)行的簽名驗(yàn)證,安全地進(jìn)行在CPU_10執(zhí)行的計(jì)算機(jī)程序的正當(dāng)性驗(yàn)證。由此,在作為CPU_10的執(zhí)行區(qū)域的RAM_12加載正確的計(jì)算機(jī)程序,并由CPU_10執(zhí)行在該RAM_12中加載的計(jì)算機(jī)程序,由此使MCU_2正常啟動(dòng)。由此,在本實(shí)施方式的通信網(wǎng)絡(luò)系統(tǒng)1中,在各個(gè)MCU_2,實(shí)現(xiàn)在MCU_2啟動(dòng)時(shí)驗(yàn)證該MCU_2的計(jì)算機(jī)程序(例如,操作系統(tǒng)(Operating System:OS)等)的正當(dāng)性的安全啟動(dòng)(Secure Boot)。此外,關(guān)于安全啟動(dòng),例如記載在非專利文獻(xiàn)5中。
接著,參照?qǐng)D9,對(duì)本實(shí)施方式的密碼處理進(jìn)行說(shuō)明。圖9是本實(shí)施方式的密碼處理的順序圖表。通過(guò)規(guī)定的契機(jī)開(kāi)始圖9的處理。
在此,以從主機(jī)MCU_2-a向末端MCU_2-b安全地通知作為秘密的信息的隨機(jī)數(shù)的情景為例進(jìn)行說(shuō)明。此外,主機(jī)MCU_2-a和末端MCU_2-b之間的數(shù)據(jù)的收發(fā)經(jīng)由通信總線3來(lái)進(jìn)行。
(步驟S11)主機(jī)MCU_2-a將在自身的RAM_12中保存的初始隨機(jī)數(shù)作為詢問(wèn)(challenge)發(fā)送至末端MCU_2-b。另外,主機(jī)MCU_2-a將向該末端MCU_2-b作為詢問(wèn)發(fā)送的初始隨機(jī)數(shù)轉(zhuǎn)交給自身的安全元件14。
(步驟S12)末端MCU_2-b將從主機(jī)MCU_2-a接收到的作為詢問(wèn)的初始隨機(jī)數(shù)轉(zhuǎn)交給自身的安全元件14。末端MCU_2-b的密碼處理部24使用在自身的安全ROM_22中保存的私鑰(私有密鑰)Ks對(duì)被轉(zhuǎn)交的初始隨機(jī)數(shù)進(jìn)行加密。在該加密處理中,末端MCU_2-b的安全RAM_21用作為加密處理中的數(shù)據(jù)的臨時(shí)存儲(chǔ)區(qū)域。接著,末端MCU_2-b將作為被加密的初始隨機(jī)數(shù)的加密數(shù)據(jù)Ks(初始隨機(jī)數(shù))作為響應(yīng)發(fā)送至主機(jī)MCU_2-a。
(步驟S13)主機(jī)MCU_2-a將從末端MCU_2-b接收到的作為響應(yīng)的加密數(shù)據(jù)Ks(初始隨機(jī)數(shù))轉(zhuǎn)交給自身的安全元件14。主機(jī)MCU_2-a的密碼處理部24使用在自身的安全ROM_22中保存的相應(yīng)末端MCU_2-b的公鑰(公共密鑰)Kp對(duì)被轉(zhuǎn)交的加密數(shù)據(jù)Ks(初始隨機(jī)數(shù))進(jìn)行解密。接著,主機(jī)MCU_2-a的密碼處理部24驗(yàn)證通過(guò)該解密來(lái)得到的解密數(shù)據(jù)和在步驟S11中作為詢問(wèn)發(fā)送至末端MCU_2-b的初始隨機(jī)數(shù)是否一致。在這些解密處理以及驗(yàn)證處理中,主機(jī)MCU_2-a的安全RAM_21用作為解密處理以及驗(yàn)證處理中的數(shù)據(jù)的臨時(shí)存儲(chǔ)區(qū)域。通過(guò)該驗(yàn)證的成功,能夠判斷為該末端MCU_2-b的認(rèn)證成功。
在該驗(yàn)證成功的情況下,主機(jī)MCU_2-a的密碼處理部24生成作為秘密的信息的隨機(jī)數(shù),并使用在自身的安全ROM_22中保存的相應(yīng)末端MCU_2-b的公鑰Kp來(lái)對(duì)所生成的隨機(jī)數(shù)進(jìn)行加密。在這些隨機(jī)數(shù)生成處理以及加密處理中,主機(jī)MCU_2-a的安全RAM_21用作為隨機(jī)數(shù)生成處理以及加密處理中的數(shù)據(jù)的臨時(shí)存儲(chǔ)區(qū)域。接著,主機(jī)MCU_2-a將作為被加密的秘密的信息(隨機(jī)數(shù))的加密數(shù)據(jù)Kp(隨機(jī)數(shù))發(fā)送至末端MCU_2-b。
末端MCU_2-b將從主機(jī)MCU_2-a接收到的加密數(shù)據(jù)Kp(隨機(jī)數(shù))轉(zhuǎn)交給自身的安全元件14。末端MCU_2-b的密碼處理部24使用在自身的安全ROM_22中保存的私鑰Ks來(lái)對(duì)被轉(zhuǎn)交的加密數(shù)據(jù)Kp(隨機(jī)數(shù))進(jìn)行解密。在該解密處理中,末端MCU_2-b的安全RAM_21用作為解密處理中的數(shù)據(jù)的臨時(shí)存儲(chǔ)區(qū)域。通過(guò)該解密處理,從加密數(shù)據(jù)Kp(隨機(jī)數(shù))取得作為秘密的信息的隨機(jī)數(shù)。該取得的隨機(jī)數(shù)被安全地保存至末端MCU_2-b的安全RAM_21中。
根據(jù)上述的本實(shí)施方式的密碼處理,通過(guò)安全元件14所進(jìn)行的密碼處理,安全地進(jìn)行在MCU_2之間(在上述的例中,主機(jī)MCU_2-a和末端MCU_2-b之間)交換的信息的密碼處理(加密處理、解密處理)。由此,保持在MCU_2之間交換的信息的安全性。
進(jìn)而,通過(guò)基于該密碼處理的詢問(wèn)/響應(yīng),主機(jī)MCU_2-a能夠可靠地認(rèn)證末端MCU_2-b。并且,從主機(jī)MCU_2-a對(duì)于認(rèn)證完成的末端MCU_2-b,能夠基于該密碼處理安全地發(fā)送秘密的信息。該秘密的信息能夠用作為上述的第一實(shí)施方式中的秘密信息。在上述的例中,從主機(jī)MCU_2-a對(duì)末端MCU_2-b安全地傳遞作為秘密的信息的隨機(jī)數(shù)。
接著,參照?qǐng)D10,對(duì)本實(shí)施方式的MAC生成處理以及MAC檢查處理進(jìn)行說(shuō)明。圖10是用于說(shuō)明本實(shí)施方式的MAC生成處理以及MAC檢查處理的順序圖表。
通過(guò)上述的圖9的密碼處理,從主機(jī)MCU_2-a對(duì)認(rèn)證完成的末端MCU_2-b安全地發(fā)送作為秘密的信息的隨機(jī)數(shù)。主機(jī)MCU_2-a以及末端MCU_2-b將該作為秘密的信息的隨機(jī)數(shù)存儲(chǔ)在安全RAM_21中。該安全RAM_21作為上述的第一實(shí)施方式中的秘密信息存儲(chǔ)部117,安全地保存該隨機(jī)數(shù)(秘密信息)。
在圖10中,發(fā)送側(cè)MCU_2作為發(fā)送節(jié)點(diǎn)進(jìn)行工作。發(fā)送側(cè)MCU_2可以是主機(jī)MCU_2-a,或者也可以是末端MCU_2-b。接收側(cè)MCU_2作為接收節(jié)點(diǎn)進(jìn)行工作。接收側(cè)MCU_2可以是主機(jī)MCU_2-a,或者也可以是末端MCU_2-b。發(fā)送側(cè)MCU_2在RAM_12中保存發(fā)送計(jì)數(shù)值以及發(fā)送數(shù)據(jù)。接收側(cè)MCU_2在RAM_12中保存接收計(jì)數(shù)值。在制作從發(fā)送側(cè)MCU_2發(fā)送的CAN幀時(shí)開(kāi)始圖10的處理。
(步驟S21)發(fā)送側(cè)MCU_2將發(fā)送數(shù)據(jù)以及發(fā)送計(jì)數(shù)值從RAM_12轉(zhuǎn)交給安全RAM_21。發(fā)送側(cè)MCU_2的安全元件14使用在安全RAM_21中保存的隨機(jī)數(shù)(秘密信息)、發(fā)送數(shù)據(jù)和發(fā)送計(jì)數(shù)值,生成MAC。該MAC的生成方法與上述的第一實(shí)施方式相同。其中,該MAC的生成在安全RAM_21中安全地進(jìn)行。作為該MAC的生成的結(jié)果從MAC值的比特串中提取的15比特的比特串(CRC部用提取MAC比特串)從安全RAM_21轉(zhuǎn)交到RAM_12。
(步驟S22)發(fā)送側(cè)MCU_2針對(duì)CAN幀,將在步驟S21中從RAM_12轉(zhuǎn)交到安全RAM_21的發(fā)送數(shù)據(jù)存儲(chǔ)至數(shù)據(jù)部,將在步驟S21中從安全RAM_21轉(zhuǎn)交到RAM_12的CRC部用提取MAC比特串存儲(chǔ)至CRC部。發(fā)送側(cè)MCU_2將該CAN幀發(fā)送至通信總線3。該CAN幀經(jīng)由通信總線3被接收側(cè)MCU_2接收。
(步驟S23)接收側(cè)MCU_2將從通信總線3接收到的CAN幀保存在RAM_12中。接收側(cè)MCU_2將從在RAM_12中保存的CAN幀中的數(shù)據(jù)部取得的接收數(shù)據(jù)和從該CAN幀中的CRC部取得的接收MAC值轉(zhuǎn)交給安全RAM_21。進(jìn)而,接收側(cè)MCU_2將與在CAN幀中的ID部中存儲(chǔ)的ID對(duì)應(yīng)的接收計(jì)數(shù)值從RAM_12轉(zhuǎn)交給安全RAM_21,其中,上述CAN幀保存在RAM_12中。
接著,接收側(cè)MCU_2的安全元件14使用在安全RAM_21中保存的隨機(jī)數(shù)(秘密信息)、接收數(shù)據(jù)和接收計(jì)數(shù)值,生成MAC。該MAC的生成方法與上述的第一實(shí)施方式相同。其中,該MAC的生成在安全RAM_21中安全地進(jìn)行。作為該MAC的生成的結(jié)果,從計(jì)算MAC值的比特串中提取15比特的檢查對(duì)象比特串。接著,接收側(cè)MCU_2的安全元件14判定在安全RAM_21中保存的接收MAC值和檢查對(duì)象比特串是否一致。該判定的結(jié)果為不一致的情況下,與上述的第一實(shí)施方式同樣地進(jìn)行再檢查。
如上所述,根據(jù)本實(shí)施方式,使用安全地保存在安全RAM_21中的隨機(jī)數(shù)(秘密信息)來(lái)進(jìn)行MAC的生成以及檢查。由此,提高對(duì)CAN幀的檢查的可靠性。
以上,參照附圖詳細(xì)地?cái)⑹隽吮景l(fā)明的實(shí)施方式,但是其具體的結(jié)構(gòu)并不限定于該實(shí)施方式,還包含不脫離本發(fā)明的思想的范圍內(nèi)的設(shè)計(jì)變更等。
例如,在上述的實(shí)施方式中,1臺(tái)MCU_2具有發(fā)送節(jié)點(diǎn)的功能和接收節(jié)點(diǎn)的功能,但是也可以是1臺(tái)MCU_2僅具有發(fā)送節(jié)點(diǎn)的功能,或者1臺(tái)MCU_2僅具有接收節(jié)點(diǎn)的功能。
另外,一個(gè)MCU_2也可以構(gòu)成為一個(gè)半導(dǎo)體裝置。通過(guò)將一個(gè)MCU_2單片化為一個(gè)半導(dǎo)體集成電路,進(jìn)一步提高安全性。
另外,作為安全元件,例如,也可以使用在無(wú)線通信中所使用的eSIM(Embedded Subscriber Identity Module:嵌入式用戶識(shí)別模塊)或者SIM(Subscriber Identity Module:用戶識(shí)別模塊)。eSIM以及SIM為計(jì)算機(jī)的一種,通過(guò)計(jì)算機(jī)程序來(lái)實(shí)現(xiàn)所期望的功能?;蛘?,作為安全元件,例如,也可以使用具有防篡改性(Tamper Resistant)的密碼處理芯片。作為具有防篡改性的密碼處理芯片,例如,已知被稱為TPM(Trusted Platform Module:可信平臺(tái)模塊)的密碼處理芯片。關(guān)于TPM,例如記載在非專利文獻(xiàn)6中。
另外,上述的實(shí)施方式例如能夠應(yīng)用于汽車、帶原動(dòng)機(jī)的自行車、鐵道車輛等車輛。
另外,在上述的實(shí)施方式中,作為本發(fā)明的通信網(wǎng)絡(luò)系統(tǒng)的一個(gè)方面,以在車輛上搭載的通信網(wǎng)絡(luò)系統(tǒng)為例進(jìn)行了說(shuō)明,但是本發(fā)明的通信網(wǎng)絡(luò)系統(tǒng)能夠應(yīng)用于各種領(lǐng)域。例如,也可以被構(gòu)成為:作為用于控制家電產(chǎn)品的計(jì)算機(jī)而應(yīng)用MCU_2,并通過(guò)室內(nèi)網(wǎng)絡(luò)將室內(nèi)的各家電產(chǎn)品的MCU_2進(jìn)行連接。另外,也可以被構(gòu)成為:作為智能電表(smart meter)而應(yīng)用MCU_2,并通過(guò)通信網(wǎng)絡(luò)將各智能電表的MCU_2進(jìn)行連接。
[數(shù)據(jù)幀的結(jié)構(gòu)的其他實(shí)施例1]
對(duì)數(shù)據(jù)幀的結(jié)構(gòu)的其他實(shí)施例1進(jìn)行說(shuō)明。圖12是示出CAN中的擴(kuò)展格式的數(shù)據(jù)幀的結(jié)構(gòu)圖(例如,參照非專利文獻(xiàn)7)。如圖12所示,CAN中的擴(kuò)展格式的數(shù)據(jù)幀具有11比特長(zhǎng)的基本ID(Base ID)字段和18比特長(zhǎng)的擴(kuò)展ID(Extend ID)字段。在該擴(kuò)展格式,作為ID的存儲(chǔ)區(qū)域,能夠使用將基本ID字段和擴(kuò)展ID字段相加而得到的最大29比特。在本實(shí)施例1中,在將基本ID字段和擴(kuò)展ID字段相加而得到的29比特長(zhǎng)的區(qū)域存儲(chǔ)MAC。以下,對(duì)在將基本ID字段和擴(kuò)展ID字段相加而得到的29比特長(zhǎng)的區(qū)域存儲(chǔ)MAC的MAC存儲(chǔ)方法的例1、2、3進(jìn)行說(shuō)明。
(MAC存儲(chǔ)方法的例1)
在MAC存儲(chǔ)方法的例1中,如圖13所示,將18比特長(zhǎng)的擴(kuò)展ID字段使用于MAC存儲(chǔ)區(qū)域?;綢D字段使用于用來(lái)存儲(chǔ)ID的區(qū)域。在圖13的例中,在基本ID字段存儲(chǔ)數(shù)據(jù)幀的發(fā)送源的MCU_2的地址即發(fā)送源地址。
(MAC存儲(chǔ)方法的例2)
MAC存儲(chǔ)方法的例2是如下方法:在將基本ID字段和擴(kuò)展ID字段相加而得到的29比特長(zhǎng)的區(qū)域存儲(chǔ)數(shù)據(jù)幀的發(fā)送源的MCU_2的地址即發(fā)送源地址、數(shù)據(jù)幀的發(fā)送目的地的MCU_2的地址即發(fā)送目的地地址以及發(fā)送目的地類型的情況(例如,參照非專利文獻(xiàn)8)下,在該29比特長(zhǎng)的區(qū)域存儲(chǔ)MAC。圖14是示出本發(fā)明的一實(shí)施方式的MAC存儲(chǔ)方法的例2的說(shuō)明圖。
如圖14所示,使用轉(zhuǎn)換/壓縮表將8比特長(zhǎng)的發(fā)送源地址轉(zhuǎn)換為7比特長(zhǎng)的發(fā)送源地址。同樣地,使用轉(zhuǎn)換/壓縮表將8比特長(zhǎng)的發(fā)送目的地地址轉(zhuǎn)換為7比特長(zhǎng)的發(fā)送目的地地址。同樣地,使用轉(zhuǎn)換/壓縮表將8比特長(zhǎng)的發(fā)送目的地類型轉(zhuǎn)換為2比特長(zhǎng)的發(fā)送目的地類型。前提是,雖然原來(lái)的發(fā)送源地址為8比特長(zhǎng),但是實(shí)際使用的發(fā)送源地址能夠用7比特表達(dá)。同樣地,前提是,雖然原來(lái)的發(fā)送目的地地址為8比特長(zhǎng),但是實(shí)際使用的發(fā)送目的地地址能夠用7比特表達(dá)。同樣地,前提是,原來(lái)的發(fā)送目的地類型為8比特長(zhǎng),但是實(shí)際使用的發(fā)送目的地類型能夠用2比特表達(dá)。各轉(zhuǎn)換/壓縮表被預(yù)先設(shè)置。
通過(guò)將8比特長(zhǎng)的發(fā)送源地址轉(zhuǎn)換為7比特長(zhǎng),將8比特長(zhǎng)的發(fā)送目的地地址轉(zhuǎn)換為7比特長(zhǎng),將8比特長(zhǎng)的發(fā)送目的地類型轉(zhuǎn)換為2比特長(zhǎng),總共8比特將不被使用。如圖14所示,將該不被使用的8比特和原來(lái)的空閑區(qū)域的5比特相加而得到的13比特使用于MAC存儲(chǔ)區(qū)域。
此外,在接收側(cè)預(yù)先設(shè)置有與各轉(zhuǎn)換/壓縮表對(duì)應(yīng)的逆轉(zhuǎn)換/擴(kuò)展表。接收側(cè)使用各逆轉(zhuǎn)換/擴(kuò)展表,將接收到的7比特長(zhǎng)的發(fā)送源地址逆轉(zhuǎn)換為8比特長(zhǎng),將接收到的7比特長(zhǎng)的發(fā)送目的地地址逆轉(zhuǎn)換為8比特長(zhǎng),將接收到的2比特長(zhǎng)的發(fā)送目的地類型逆轉(zhuǎn)換為8比特長(zhǎng)。
(MAC存儲(chǔ)方法的例3)
MAC存儲(chǔ)方法的例3與上述的MAC存儲(chǔ)方法的例2同樣地,是如下方法:在將基本ID字段和擴(kuò)展ID字段相加而得到的29比特長(zhǎng)的區(qū)域存儲(chǔ)數(shù)據(jù)幀的發(fā)送源的MCU_2的地址即發(fā)送源地址、數(shù)據(jù)幀的發(fā)送目的地的MCU_2的地址即發(fā)送目的地地址以及發(fā)送目的地類型的情況下,在該29比特長(zhǎng)的區(qū)域存儲(chǔ)MAC。圖15是示出本發(fā)明的一實(shí)施方式的MAC存儲(chǔ)方法的例3的說(shuō)明圖。
在MAC存儲(chǔ)方法的例3中,如圖14所示,8比特長(zhǎng)的發(fā)送源地址和8比特長(zhǎng)的發(fā)送目的地地址原樣地被存儲(chǔ)。8比特長(zhǎng)的發(fā)送目的地類型使用轉(zhuǎn)換/壓縮表而轉(zhuǎn)換為2比特長(zhǎng)的發(fā)送目的地類型。前提是,原來(lái)的發(fā)送目的地類型是8比特長(zhǎng),但是實(shí)際使用的發(fā)送目的地類型能夠用2比特表達(dá)。轉(zhuǎn)換/壓縮表被預(yù)先設(shè)置。
通過(guò)將8比特長(zhǎng)的發(fā)送目的地類型轉(zhuǎn)換為2比特長(zhǎng),6比特將不被使用。如圖15所示,將該不被使用的6比特和原來(lái)的空閑區(qū)域的5比特相加而得到的11比特使用于MAC存儲(chǔ)區(qū)域。
此外,在接收側(cè)預(yù)先設(shè)置有與發(fā)送目的地類型的轉(zhuǎn)換/壓縮表對(duì)應(yīng)的逆轉(zhuǎn)換/擴(kuò)展表。接收側(cè)使用逆轉(zhuǎn)換/擴(kuò)展表將接收到的2比特長(zhǎng)的發(fā)送目的地類型逆轉(zhuǎn)換為8比特長(zhǎng)。
[數(shù)據(jù)幀的結(jié)構(gòu)的其他實(shí)施例2]
對(duì)數(shù)據(jù)幀的結(jié)構(gòu)的其他實(shí)施例2進(jìn)行說(shuō)明。圖16是示出本發(fā)明的一實(shí)施方式的數(shù)據(jù)幀的其他例的結(jié)構(gòu)圖。在圖16的數(shù)據(jù)幀,各字段中所示的括號(hào)內(nèi)的數(shù)字表示在該字段存儲(chǔ)的信息的比特?cái)?shù)。
圖16所示的數(shù)據(jù)幀的結(jié)構(gòu)相對(duì)于CAN中的擴(kuò)展格式的數(shù)據(jù)幀的結(jié)構(gòu),限定了一部分。在圖16所示的數(shù)據(jù)幀,在數(shù)據(jù)幀中的數(shù)據(jù)部(Data Field:數(shù)據(jù)字段)存儲(chǔ)MAC。MAC被存儲(chǔ)至數(shù)據(jù)部?jī)?nèi)的規(guī)定的位置。例如,可以舉例在數(shù)據(jù)部的開(kāi)頭部分或結(jié)尾部分存儲(chǔ)的情況。其中,認(rèn)為存儲(chǔ)在結(jié)尾部分對(duì)數(shù)據(jù)部的已有的使用方法帶來(lái)的影響小。在圖16的例中,MAC被存儲(chǔ)在數(shù)據(jù)部?jī)?nèi)的結(jié)尾部分。在圖16的例中,MAC的數(shù)據(jù)長(zhǎng)為16比特。因此,如在圖16中記載的那樣,在數(shù)據(jù)部存儲(chǔ)的除了MAC以外的數(shù)據(jù)的數(shù)據(jù)長(zhǎng)的最大值為48比特。除了在圖16所示的數(shù)據(jù)幀中在數(shù)據(jù)部存儲(chǔ)MAC這一點(diǎn)以外,與CAN中的擴(kuò)展格式相同。
[在數(shù)據(jù)幀存儲(chǔ)的MAC數(shù)據(jù)的其他例]
圖17以及圖18是示出在本發(fā)明的一實(shí)施方式的數(shù)據(jù)幀存儲(chǔ)的MAC數(shù)據(jù)的其他例的說(shuō)明圖。作為數(shù)據(jù)幀的結(jié)構(gòu),例如,是上述的圖3所示的CAN幀。首先,參照?qǐng)D17,對(duì)發(fā)送節(jié)點(diǎn)在CAN幀存儲(chǔ)MAC數(shù)據(jù)的動(dòng)作進(jìn)行說(shuō)明。在圖17,對(duì)于與上述的圖4的各步驟對(duì)應(yīng)的部分標(biāo)注相同的附圖標(biāo)記,并省略其說(shuō)明。
在制作從發(fā)送部111發(fā)送的CAN幀時(shí)開(kāi)始圖17的發(fā)送處理。首先,執(zhí)行步驟S111、S112。步驟S111、S112與上述的圖4相同。通過(guò)步驟S111、S112計(jì)算出MAC值。
接著,MAC生成部114從在步驟S112中計(jì)算出的MAC值提取:要在CAN幀存儲(chǔ)的規(guī)定比特?cái)?shù)的比特串(MAC提取值)。該MAC提取值是根據(jù)在步驟S111中取得的發(fā)送計(jì)數(shù)值的比特串(比特?cái)?shù)為L(zhǎng))中除了上位提取比特以外的規(guī)定的下位比特(比特?cái)?shù)為n)的值來(lái)確定的。在圖17所示的例中,該下位比特(比特?cái)?shù)為n)的值為“3”。由此,在MAC值的比特串中,提取根據(jù)該值“3”來(lái)確定的一部分(MAC提取值)。
接著,MAC生成部114基于從MAC值提取的MAC提取值和與該MAC提取值相關(guān)的MAC值內(nèi)的位置信息來(lái)生成發(fā)送MAC數(shù)據(jù)。在圖17的例中,與MAC提取值相關(guān)的MAC值內(nèi)的位置信息是:在步驟S111中取得的發(fā)送計(jì)數(shù)值的比特串中除了上位提取比特以外的規(guī)定的下位比特的值“3”。另外,在圖17的例中,就發(fā)送MAC數(shù)據(jù)而言,在MAC提取值的后方附加下位比特的值“3”。發(fā)送MAC數(shù)據(jù)被存儲(chǔ)至CAN幀。在上述的圖3所示的CAN幀的情況下,發(fā)送MAC數(shù)據(jù)被存儲(chǔ)至CRC部。
此外,發(fā)送MAC數(shù)據(jù)的結(jié)構(gòu)被預(yù)先設(shè)定。在圖3所示的CAN幀的情況下,作為發(fā)送MAC數(shù)據(jù)的存儲(chǔ)位置的CRC部為15比特長(zhǎng),因此發(fā)送MAC數(shù)據(jù)的數(shù)據(jù)長(zhǎng)為15比特。另外,就發(fā)送MAC數(shù)據(jù)而言,也可以在MAC提取值的前方附加與MAC提取值相關(guān)的MAC值內(nèi)的位置信息。另外,與MAC提取值相關(guān)的MAC值內(nèi)的位置信息,可以是在步驟S111中取得的發(fā)送計(jì)數(shù)值的比特串中除了上位提取比特以外的規(guī)定的下位比特的全部,或者也可以是該下位比特中的最下位側(cè)的一部分。
接著,發(fā)送部111針對(duì)CAN幀,將發(fā)送數(shù)據(jù)(在步驟S112中用于MAC值的計(jì)算的數(shù)據(jù))存儲(chǔ)至數(shù)據(jù)部,將發(fā)送MAC數(shù)據(jù)存儲(chǔ)至CRC部。發(fā)送部111將該CAN幀發(fā)送至通信總線3。計(jì)數(shù)器部115通過(guò)該CAN幀的發(fā)送,使發(fā)送計(jì)數(shù)值僅增加1并進(jìn)行保存。
接著,參照?qǐng)D18,對(duì)接收節(jié)點(diǎn)接收到CAN幀時(shí)的動(dòng)作進(jìn)行說(shuō)明。在圖18,對(duì)于與上述的圖5的各步驟對(duì)應(yīng)的部分標(biāo)注相同的附圖標(biāo)記,并省略其說(shuō)明。
在通過(guò)接收部112接收到CAN幀時(shí)開(kāi)始圖18的接收處理。
首先,執(zhí)行步驟S121、S122。步驟S121、S122與上述的圖5相同。通過(guò)步驟S121、S122,計(jì)算出MAC值。接著,MAC檢查部116從通過(guò)接收部112接收到的CAN幀中的CRC部取得MAC數(shù)據(jù)(接收MAC數(shù)據(jù))。MAC檢查部116從接收MAC數(shù)據(jù)取得MAC提取值和與MAC提取值相關(guān)的MAC值內(nèi)的位置信息。在圖17的例中,與MAC提取值相關(guān)的MAC值內(nèi)的位置信息為“3”。
接著,MAC檢查部116基于從接收MAC數(shù)據(jù)取得的位置信息“3”,從在步驟S122中計(jì)算出的MAC值的比特串(計(jì)算MAC值)取得在MAC檢查中使用的MAC檢查值。接著,MAC檢查部116比較從接收MAC數(shù)據(jù)取得的MAC提取值和從計(jì)算MAC值取得的MAC檢查值,判定兩者是否一致。該判定的結(jié)果,兩者不一致的情況下,MAC檢查部116一邊改變從計(jì)算MAC值取得MAC檢查值的取得位置,一邊從計(jì)算MAC值取得MAC檢查值來(lái)檢查是否與MAC提取值一致。例如,一邊將從計(jì)算MAC值取得MAC檢查值的取得位置每次錯(cuò)開(kāi)1比特,一邊從計(jì)算MAC值取得MAC檢查值來(lái)檢查是否與MAC提取值一致。
MAC檢查部116在MAC提取值和MAC檢查值一致的情況下,將與從計(jì)算MAC值取得了該一致的MAC檢查值的取得位置對(duì)應(yīng)的比特值(下位比特值)通知給計(jì)數(shù)器部115,來(lái)指示計(jì)數(shù)器同步。計(jì)數(shù)器部115通過(guò)該計(jì)數(shù)器同步的指示,將相應(yīng)的接收計(jì)數(shù)值的下位比特的值變更為被通知的下位比特值。在圖18的例中,與從計(jì)算MAC值取得了和MAC提取值一致的MAC檢查值的取得位置對(duì)應(yīng)的下位比特值為“3”。因此,MAC檢查部116將下位比特值“3”通知給計(jì)數(shù)器部115來(lái)指示計(jì)數(shù)器同步。
計(jì)數(shù)器部115通過(guò)該計(jì)數(shù)器同步的指示,將相應(yīng)的接收計(jì)數(shù)值的下位比特的值變更為被通知的下位比特值“3”。該計(jì)數(shù)器同步對(duì)象的接收計(jì)數(shù)值是與在通過(guò)接收部112接收到的CAN幀中的ID部中存儲(chǔ)的ID對(duì)應(yīng)的接收計(jì)數(shù)值。由此,與該ID對(duì)應(yīng)的發(fā)送節(jié)點(diǎn)的發(fā)送計(jì)數(shù)值和本接收節(jié)點(diǎn)的與該ID對(duì)應(yīng)的接收計(jì)數(shù)值變得同步。
根據(jù)上述的圖17以及圖18的、在數(shù)據(jù)幀存儲(chǔ)的MAC數(shù)據(jù)的例,在接收節(jié)點(diǎn)從計(jì)算MAC值取得MAC檢查值的取得位置的信息,從發(fā)送節(jié)點(diǎn)通知到接收節(jié)點(diǎn),因此提高在接收節(jié)點(diǎn)的MAC檢查的效率。由此,例如,得到能夠縮短MCU_2之間的通信所需要的時(shí)間等效果。
[MAC的其他例]
作為MAC,例如,可以舉出Code MAC(CMAC)的計(jì)算。CMAC是基于共用密鑰的MAC。
[密碼處理的其他實(shí)施例1]
圖19是本發(fā)明的一實(shí)施方式的密碼處理的順序圖表。參照?qǐng)D19,對(duì)密碼處理的其他實(shí)施例1進(jìn)行說(shuō)明。密碼處理的其他實(shí)施例1是上述的第二實(shí)施方式的變形例。密碼處理的其他實(shí)施例1的通信網(wǎng)絡(luò)系統(tǒng)的結(jié)構(gòu)與上述的第二實(shí)施方式的圖7的通信網(wǎng)絡(luò)系統(tǒng)1的結(jié)構(gòu)相同,例如搭載在汽車。其中,在密碼處理的其他實(shí)施例1中,主機(jī)MCU_2-a以及末端MCU_2-b的各安全ROM_22存儲(chǔ)有相同的共用密鑰Kcom。共用密鑰也被稱為對(duì)稱密鑰。
根據(jù)規(guī)定的契機(jī)開(kāi)始圖19的處理。在此,以從主機(jī)MCU_2-a向末端MCU_2-b安全地通知作為秘密的信息的隨機(jī)數(shù)的情景為例進(jìn)行說(shuō)明。此外,主機(jī)MCU_2-a和末端MCU_2-b之間的數(shù)據(jù)的收發(fā)經(jīng)由通信總線3來(lái)進(jìn)行。
(步驟S201)主機(jī)MCU_2-a將生成并保存在自身的RAM_12的初始隨機(jī)數(shù)作為詢問(wèn)發(fā)送至末端MCU_2-b。另外,主機(jī)MCU_2-a將作為詢問(wèn)發(fā)送至該末端MCU_2-b的初始隨機(jī)數(shù)轉(zhuǎn)交給自身的安全元件14。
(步驟S202)末端MCU_2-b將從主機(jī)MCU_2-a接收到的作為詢問(wèn)的初始隨機(jī)數(shù)轉(zhuǎn)交給自身的安全元件14。末端MCU_2-b的密碼處理部24使用在自身的安全ROM_22中保存的共用密鑰Kcom,對(duì)被轉(zhuǎn)交的初始隨機(jī)數(shù)進(jìn)行加密。在該加密處理中,末端MCU_2-b的安全RAM_21用作為加密處理中的數(shù)據(jù)的臨時(shí)存儲(chǔ)區(qū)域。接著,末端MCU_2-b將作為被加密的初始隨機(jī)數(shù)的加密數(shù)據(jù)Kcom(初始隨機(jī)數(shù))作為響應(yīng)發(fā)送至主機(jī)MCU_2-a。
(步驟S203)主機(jī)MCU_2-a將從末端MCU_2-b接收到的作為響應(yīng)的加密數(shù)據(jù)Kcom(初始隨機(jī)數(shù))轉(zhuǎn)交給自身的安全元件14。主機(jī)MCU_2-a的密碼處理部24使用在自身的安全ROM_22中保存的共用密鑰Kcom對(duì)被轉(zhuǎn)交的加密數(shù)據(jù)Kcom(初始隨機(jī)數(shù))進(jìn)行解密。
接著,主機(jī)MCU_2-a的密碼處理部24驗(yàn)證通過(guò)該解密而得到的解密數(shù)據(jù)和在步驟S201中作為詢問(wèn)發(fā)送至末端MCU_2-b的初始隨機(jī)數(shù)是否一致。在這些解密處理以及驗(yàn)證處理中,主機(jī)MCU_2-a的安全RAM_21用作為解密處理以及驗(yàn)證處理中的數(shù)據(jù)的臨時(shí)存儲(chǔ)區(qū)域。通過(guò)該驗(yàn)證的成功,能夠判斷為該末端MCU_2-b的認(rèn)證成功。
此外,代替對(duì)作為響應(yīng)的加密數(shù)據(jù)Kcom(初始隨機(jī)數(shù))進(jìn)行解密,主機(jī)MCU_2-a也可以使用共用密鑰Kcom對(duì)在步驟S201中作為詢問(wèn)發(fā)送至末端MCU_2-b的初始隨機(jī)數(shù)進(jìn)行加密,并驗(yàn)證該加密數(shù)據(jù)Kcom(初始隨機(jī)數(shù))和作為響應(yīng)的加密數(shù)據(jù)Kcom(初始隨機(jī)數(shù))是否一致。在這些加密處理以及驗(yàn)證處理中,主機(jī)MCU_2-a的安全RAM_21用作為加密處理以及驗(yàn)證處理中的數(shù)據(jù)的臨時(shí)存儲(chǔ)區(qū)域。通過(guò)該驗(yàn)證的成功,能夠判斷為該末端MCU_2-b的認(rèn)證成功。
在該驗(yàn)證成功的情況下,主機(jī)MCU_2-a的密碼處理部24生成作為秘密的信息的隨機(jī)數(shù),并使用在自身的安全ROM_22中保存的共用密鑰Kcom對(duì)所生成的隨機(jī)數(shù)進(jìn)行加密。在這些隨機(jī)數(shù)生成處理以及加密處理中,主機(jī)MCU_2-a的安全RAM_21使用于隨機(jī)數(shù)生成處理以及加密處理中的數(shù)據(jù)的臨時(shí)存儲(chǔ)區(qū)域。接著,主機(jī)MCU_2-a將作為被加密的秘密的信息(隨機(jī)數(shù))的加密數(shù)據(jù)Kcom(隨機(jī)數(shù))發(fā)送至末端MCU_2-b。
末端MCU_2-b將從主機(jī)MCU_2-a接收到的加密數(shù)據(jù)Kcom(隨機(jī)數(shù))轉(zhuǎn)交給自身的安全元件14。末端MCU_2-b的密碼處理部24使用在自身的安全ROM_22中保存的共用密鑰Kcom對(duì)被轉(zhuǎn)交的加密數(shù)據(jù)Kcom(隨機(jī)數(shù))進(jìn)行解密。在該解密處理中,末端MCU_2-b的安全RAM_21用作為解密處理中的數(shù)據(jù)的臨時(shí)存儲(chǔ)區(qū)域。通過(guò)該解密處理,從加密數(shù)據(jù)Kcom(隨機(jī)數(shù))取得作為秘密的信息的隨機(jī)數(shù)。
(步驟S204)末端MCU_2-b將自身的安全元件14所取得的作為秘密的信息的隨機(jī)數(shù)存儲(chǔ)至自身的RAM12中。主機(jī)MCU_2-a將發(fā)送至末端MCU_2-b的作為秘密的信息的隨機(jī)數(shù)存儲(chǔ)至自身的RAM12中。主機(jī)MCU_2-a和末端MCU_2-b保存作為相同的秘密的信息的隨機(jī)數(shù)。
根據(jù)上述的密碼處理的其他實(shí)施例1,通過(guò)安全元件14所進(jìn)行的密碼處理,安全地進(jìn)行在MCU_2之間(在上述的例中,主機(jī)MCU_2-a和末端MCU_2-b之間)交換的信息的密碼處理(加密處理、解密處理)。由此,保持在MCU_2之間交換的信息的安全性。
進(jìn)而,通過(guò)基于該密碼處理的詢問(wèn)/響應(yīng),主機(jī)MCU_2-a能夠可靠地認(rèn)證末端MCU_2-b。并且,從主機(jī)MCU_2-a對(duì)于認(rèn)證完成的末端MCU_2-b,能夠基于該密碼處理安全地發(fā)送秘密的信息。該秘密的信息能夠用作為上述的第一實(shí)施方式中的秘密信息。在上述的密碼處理的其他實(shí)施例1中,從主機(jī)MCU_2-a對(duì)末端MCU_2-b安全地傳遞作為秘密的信息的隨機(jī)數(shù)。
[密碼處理的其他實(shí)施例2]
圖20是本發(fā)明的一實(shí)施方式的密碼處理的順序圖表。參照?qǐng)D20,對(duì)密碼處理的其他實(shí)施例2進(jìn)行說(shuō)明。密碼處理的其他實(shí)施例2是上述的第二實(shí)施方式的變形例。密碼處理的其他實(shí)施例2的通信網(wǎng)絡(luò)系統(tǒng)的結(jié)構(gòu)與上述的第二實(shí)施方式的圖7的通信網(wǎng)絡(luò)系統(tǒng)1的結(jié)構(gòu)相同,例如搭載在汽車。其中,在密碼處理的其他實(shí)施例2中,主機(jī)MCU_2-a以及末端MCU_2-b的各安全ROM_22存儲(chǔ)有相同的共用密鑰Kcom。
根據(jù)規(guī)定的契機(jī)開(kāi)始圖20的處理。在此,以從主機(jī)MCU_2-a向末端MCU_2-b安全地通知作為秘密的信息的隨機(jī)數(shù)的情景為例進(jìn)行說(shuō)明。此外,主機(jī)MCU_2-a和末端MCU_2-b之間的數(shù)據(jù)的收發(fā)經(jīng)由通信總線3來(lái)進(jìn)行。
(步驟S211)主機(jī)MCU_2-a將生成并保存在自身的RAM_12的初始隨機(jī)數(shù)作為詢問(wèn)發(fā)送至末端MCU_2-b。另外,主機(jī)MCU_2-a將作為詢問(wèn)發(fā)送至該末端MCU_2-b的初始隨機(jī)數(shù)轉(zhuǎn)交給自身的安全元件14。
(步驟S212)末端MCU_2-b將從主機(jī)MCU_2-a接收到的作為詢問(wèn)的初始隨機(jī)數(shù)轉(zhuǎn)交給自身的安全元件14。末端MCU_2-b的密碼處理部24使用在自身的安全ROM_22中保存的共用密鑰Kcom對(duì)被轉(zhuǎn)交的初始隨機(jī)數(shù)進(jìn)行加密。在該加密處理中,末端MCU_2-b的安全RAM_21用作為加密處理中的數(shù)據(jù)的臨時(shí)存儲(chǔ)區(qū)域。接著,末端MCU_2-b將作為被加密的初始隨機(jī)數(shù)的加密數(shù)據(jù)Kcom(初始隨機(jī)數(shù))作為響應(yīng)發(fā)送至主機(jī)MCU_2-a。
主機(jī)MCU_2-a將從末端MCU_2-b接收到的作為響應(yīng)的加密數(shù)據(jù)Kcom(初始隨機(jī)數(shù))轉(zhuǎn)交給自身的安全元件14。主機(jī)MCU_2-a的密碼處理部24使用在自身的安全ROM_22中保存的共用密鑰Kcom對(duì)被轉(zhuǎn)交的加密數(shù)據(jù)Kcom(初始隨機(jī)數(shù))進(jìn)行解密。
接著,主機(jī)MCU_2-a的密碼處理部24驗(yàn)證通過(guò)該解密而得到的解密數(shù)據(jù)和在步驟S211中作為詢問(wèn)發(fā)送至末端MCU_2-b的初始隨機(jī)數(shù)是否一致。在這些解密處理以及驗(yàn)證處理中,主機(jī)MCU_2-a的安全RAM_21用作為解密處理以及驗(yàn)證處理中的數(shù)據(jù)的臨時(shí)存儲(chǔ)區(qū)域。通過(guò)該驗(yàn)證的成功,能夠判斷為該末端MCU_2-b的認(rèn)證成功。
此外,代替對(duì)作為響應(yīng)的加密數(shù)據(jù)Kcom(初始隨機(jī)數(shù))進(jìn)行解密,主機(jī)MCU_2-a也可以使用共用密鑰Kcom對(duì)在步驟S211中作為詢問(wèn)發(fā)送至末端MCU_2-b的初始隨機(jī)數(shù)進(jìn)行加密,并驗(yàn)證該加密數(shù)據(jù)Kcom(初始隨機(jī)數(shù))和作為響應(yīng)的加密數(shù)據(jù)Kcom(初始隨機(jī)數(shù))是否一致。在這些加密處理以及驗(yàn)證處理中,主機(jī)MCU_2-a的安全RAM_21用作為加密處理以及驗(yàn)證處理中的數(shù)據(jù)的臨時(shí)存儲(chǔ)區(qū)域。通過(guò)該驗(yàn)證的成功,能夠判斷為該末端MCU_2-b的認(rèn)證成功。
(步驟S213)末端MCU_2-b將生成并保存在自身的RAM_12的初始隨機(jī)數(shù)作為詢問(wèn)發(fā)送至主機(jī)MCU_2-a。另外,末端MCU_2-b將作為詢問(wèn)發(fā)送至該主機(jī)MCU_2-a的初始隨機(jī)數(shù)轉(zhuǎn)交給自身的安全元件14。
(步驟S214)主機(jī)MCU_2-a將從末端MCU_2-b接收到的作為詢問(wèn)的初始隨機(jī)數(shù)轉(zhuǎn)交給自身的安全元件14。主機(jī)MCU_2-a的密碼處理部24使用在自身的安全ROM_22中保存的共用密鑰Kcom對(duì)被轉(zhuǎn)交的初始隨機(jī)數(shù)進(jìn)行加密。在該加密處理中,主機(jī)MCU_2-a的安全RAM_21用作為加密處理中的數(shù)據(jù)的臨時(shí)存儲(chǔ)區(qū)域。接著,主機(jī)MCU_2-a將作為被加密的初始隨機(jī)數(shù)的加密數(shù)據(jù)Kcom(初始隨機(jī)數(shù))作為響應(yīng)發(fā)送至末端MCU_2-b。
末端MCU_2-b將從主機(jī)MCU_2-a接收到的作為響應(yīng)的加密數(shù)據(jù)Kcom(初始隨機(jī)數(shù))轉(zhuǎn)交給自身的安全元件14。末端MCU_2-b的密碼處理部24使用在自身的安全ROM_22中保存的共用密鑰Kcom對(duì)被轉(zhuǎn)交的加密數(shù)據(jù)Kcom(初始隨機(jī)數(shù))進(jìn)行解密。接著,末端MCU_2-b的密碼處理部24驗(yàn)證通過(guò)該解密而得到的解密數(shù)據(jù)和在步驟S213中作為詢問(wèn)發(fā)送至主機(jī)MCU_2-a的初始隨機(jī)數(shù)是否一致。在這些解密處理以及驗(yàn)證處理中,末端MCU_2-b的安全RAM_21用作為解密處理以及驗(yàn)證處理中的數(shù)據(jù)的臨時(shí)存儲(chǔ)區(qū)域。通過(guò)該驗(yàn)證的成功,能夠判斷為該主機(jī)MCU_2-a的認(rèn)證成功。
此外,代替對(duì)作為響應(yīng)的加密數(shù)據(jù)Kcom(初始隨機(jī)數(shù))進(jìn)行解密,末端MCU_2-b也可以使用共用密鑰Kcom對(duì)在步驟S213中作為詢問(wèn)發(fā)送至主機(jī)MCU_2-a的初始隨機(jī)數(shù)進(jìn)行加密,并驗(yàn)證該加密數(shù)據(jù)Kcom(初始隨機(jī)數(shù))和作為響應(yīng)的加密數(shù)據(jù)Kcom(初始隨機(jī)數(shù))是否一致。在這些加密處理以及驗(yàn)證處理中,末端MCU_2-b的安全RAM_21用作為加密處理以及驗(yàn)證處理中的數(shù)據(jù)的臨時(shí)存儲(chǔ)區(qū)域。通過(guò)該驗(yàn)證的成功,能夠判斷為該主機(jī)MCU_2-a的認(rèn)證成功。
在上述的主機(jī)MCU_2-a和末端MCU_2-b之間的相互認(rèn)證成功的情況下,在步驟S215中,從主機(jī)MCU_2-a對(duì)于末端MCU_2-b傳遞作為秘密的信息的隨機(jī)數(shù)。
(步驟S215)主機(jī)MCU_2-a的密碼處理部24生成作為秘密的信息的隨機(jī)數(shù),并使用在自身的安全ROM_22中保存的共用密鑰Kcom對(duì)所生成的隨機(jī)數(shù)進(jìn)行加密。在這些隨機(jī)數(shù)生成處理以及加密處理中,主機(jī)MCU_2-a的安全RAM_21用作為隨機(jī)數(shù)生成處理以及加密處理中的數(shù)據(jù)的臨時(shí)存儲(chǔ)區(qū)域。接著,主機(jī)MCU_2-a將作為被加密的秘密的信息(隨機(jī)數(shù))的加密數(shù)據(jù)Kcom(隨機(jī)數(shù))發(fā)送至末端MCU_2-b。
末端MCU_2-b將從主機(jī)MCU_2-a接收到的加密數(shù)據(jù)Kcom(隨機(jī)數(shù))轉(zhuǎn)交給自身的安全元件14。末端MCU_2-b的密碼處理部24使用在自身的安全ROM_22中保存的共用密鑰Kcom對(duì)被轉(zhuǎn)交的加密數(shù)據(jù)Kcom(隨機(jī)數(shù))進(jìn)行解密。在該解密處理中,末端MCU_2-b的安全RAM_21用作為解密處理中的數(shù)據(jù)的臨時(shí)存儲(chǔ)區(qū)域。通過(guò)該解密處理,從加密數(shù)據(jù)Kcom(隨機(jī)數(shù))取得作為秘密的信息的隨機(jī)數(shù)。
(步驟S216)末端MCU_2-b將自身的安全元件14所取得的作為秘密的信息的隨機(jī)數(shù)存儲(chǔ)至自身的RAM12中。主機(jī)MCU_2-a將發(fā)送至末端MCU_2-b的作為秘密的信息的隨機(jī)數(shù)存儲(chǔ)至自身的RAM12中。主機(jī)MCU_2-a和末端MCU_2-b保存作為相同的秘密的信息的隨機(jī)數(shù)。
根據(jù)上述的密碼處理的其他實(shí)施例2,通過(guò)安全元件14所進(jìn)行的密碼處理,安全地進(jìn)行在MCU_2之間(在上述的例中,主機(jī)MCU_2-a和末端MCU_2-b之間)交換的信息的密碼處理(加密處理、解密處理)。由此,保持在MCU_2之間交換的信息的安全性。
進(jìn)而,通過(guò)基于該密碼處理的詢問(wèn)/響應(yīng),主機(jī)MCU_2-a和末端MCU_2-b能夠可靠地進(jìn)行相互認(rèn)證。并且,在相互認(rèn)證完成的主機(jī)MCU_2-a和末端MCU_2-b之間,從主機(jī)MCU_2-a對(duì)末端MCU_2-b,基于該密碼處理能夠安全地發(fā)送秘密的信息。該秘密的信息能夠用作為上述的第一實(shí)施方式中的秘密信息。在上述的密碼處理的其他實(shí)施例2中,從主機(jī)MCU_2-a向末端MCU_2-b安全地傳遞作為秘密的信息的隨機(jī)數(shù)。
[密碼處理的其他實(shí)施例3]
圖21是本發(fā)明的一實(shí)施方式的密碼處理的順序圖表。參照?qǐng)D21,對(duì)密碼處理的其他實(shí)施例3進(jìn)行說(shuō)明。密碼處理的其他實(shí)施例3是上述的第二實(shí)施方式的變形例。密碼處理的其他實(shí)施例3的通信網(wǎng)絡(luò)系統(tǒng)的結(jié)構(gòu)與上述的第二實(shí)施方式的圖7的通信網(wǎng)絡(luò)系統(tǒng)1的結(jié)構(gòu)相同,例如搭載在汽車。其中,在密碼處理的其他實(shí)施例3中,主機(jī)MCU_2-a以及末端MCU_2-b的各安全ROM_22存儲(chǔ)有相同的共用密鑰Kcom。共用密鑰還被稱為對(duì)稱密鑰。
根據(jù)規(guī)定的契機(jī)開(kāi)始圖21的處理。在此,以從主機(jī)MCU_2-a向末端MCU_2-b安全地通知作為秘密的信息的隨機(jī)數(shù)的情景為例進(jìn)行說(shuō)明。此外,主機(jī)MCU_2-a和末端MCU_2-b之間的數(shù)據(jù)的收發(fā)經(jīng)由通信總線3來(lái)進(jìn)行。
(步驟S221)主機(jī)MCU_2-a的密碼處理部24生成初始隨機(jī)數(shù)。
在該隨機(jī)數(shù)生成處理中,主機(jī)MCU_2-a的安全RAM_21用作為隨機(jī)數(shù)生成處理中的數(shù)據(jù)的臨時(shí)存儲(chǔ)區(qū)域。所生成的初始隨機(jī)數(shù)被保存在主機(jī)MCU_2-a的安全RAM_21中。主機(jī)MCU_2-a將在自身的安全RAM_21中保存的初始隨機(jī)數(shù)作為詢問(wèn)發(fā)送至末端MCU_2-b。
(步驟S222)末端MCU_2-b將從主機(jī)MCU_2-a接收到的作為詢問(wèn)的初始隨機(jī)數(shù)轉(zhuǎn)交給自身的安全元件14。末端MCU_2-b的密碼處理部24使用在自身的安全ROM_22中保存的共用密鑰Kcom對(duì)被轉(zhuǎn)交的初始隨機(jī)數(shù)進(jìn)行加密。在該加密處理中,末端MCU_2-b的安全RAM_21用作為加密處理中的數(shù)據(jù)的臨時(shí)存儲(chǔ)區(qū)域。接著,末端MCU_2-b將作為被加密的初始隨機(jī)數(shù)的加密數(shù)據(jù)Kcom(初始隨機(jī)數(shù))作為響應(yīng)發(fā)送至主機(jī)MCU_2-a。
(步驟S223)主機(jī)MCU_2-a將從末端MCU_2-b接收到的作為響應(yīng)的加密數(shù)據(jù)Kcom(初始隨機(jī)數(shù))轉(zhuǎn)交給自身的安全元件14。主機(jī)MCU_2-a的密碼處理部24使用在自身的安全ROM_22中保存的共用密鑰Kcom對(duì)被轉(zhuǎn)交的加密數(shù)據(jù)Kcom(初始隨機(jī)數(shù))進(jìn)行解密。
接著,主機(jī)MCU_2-a的密碼處理部24驗(yàn)證通過(guò)該解密而得到的解密數(shù)據(jù)和在自身的主機(jī)MCU_2-a的安全RAM_21中保存的初始隨機(jī)數(shù)是否一致。在這些解密處理以及驗(yàn)證處理中,主機(jī)MCU_2-a的安全RAM_21用作為解密處理以及驗(yàn)證處理中的數(shù)據(jù)的臨時(shí)存儲(chǔ)區(qū)域。通過(guò)該驗(yàn)證的成功,能夠判斷為該末端MCU_2-b的認(rèn)證成功。
此外,代替對(duì)作為響應(yīng)的加密數(shù)據(jù)Kcom(初始隨機(jī)數(shù))進(jìn)行解密,主機(jī)MCU_2-a也可以使用共用密鑰Kcom對(duì)在自身的安全RAM_21中保存的初始隨機(jī)數(shù)進(jìn)行加密,并驗(yàn)證該加密數(shù)據(jù)Kcom(初始隨機(jī)數(shù))和作為響應(yīng)的加密數(shù)據(jù)Kcom(初始隨機(jī)數(shù))是否一致。在這些加密處理以及驗(yàn)證處理中,主機(jī)MCU_2-a的安全RAM_21用作為加密處理以及驗(yàn)證處理中的數(shù)據(jù)的臨時(shí)存儲(chǔ)區(qū)域。通過(guò)該驗(yàn)證的成功,能夠判斷為該末端MCU_2-b的認(rèn)證成功。
在該驗(yàn)證成功的情況下,主機(jī)MCU_2-a的密碼處理部24生成作為秘密的信息的隨機(jī)數(shù),并使用在自身的安全ROM_22中保存的共用密鑰Kcom對(duì)所生成的隨機(jī)數(shù)進(jìn)行加密。在這些隨機(jī)數(shù)生成處理以及加密處理中,主機(jī)MCU_2-a的安全RAM_21用作為隨機(jī)數(shù)生成處理以及加密處理中的數(shù)據(jù)的臨時(shí)存儲(chǔ)區(qū)域。接著,主機(jī)MCU_2-a將作為被加密的秘密的信息(隨機(jī)數(shù))的加密數(shù)據(jù)Kcom(隨機(jī)數(shù))發(fā)送至末端MCU_2-b。
末端MCU_2-b將從主機(jī)MCU_2-a接收到的加密數(shù)據(jù)Kcom(隨機(jī)數(shù))轉(zhuǎn)交給自身的安全元件14。末端MCU_2-b的密碼處理部24使用在自身的安全ROM_22中保存的共用密鑰Kcom對(duì)被轉(zhuǎn)交的加密數(shù)據(jù)Kcom(隨機(jī)數(shù))進(jìn)行解密。在該解密處理中,末端MCU_2-b的安全RAM_21用作為解密處理中的數(shù)據(jù)的臨時(shí)存儲(chǔ)區(qū)域。通過(guò)該解密處理,從加密數(shù)據(jù)Kcom(隨機(jī)數(shù))取得作為秘密的信息的隨機(jī)數(shù)。
(步驟S224)末端MCU_2-b將自身的安全元件14所取得的作為秘密的信息的隨機(jī)數(shù)存儲(chǔ)至自身的RAM12中。主機(jī)MCU_2-a將發(fā)送至末端MCU_2-b的作為秘密的信息的隨機(jī)數(shù)存儲(chǔ)至自身的RAM12中。主機(jī)MCU_2-a和末端MCU_2-b保存作為相同的秘密的信息的隨機(jī)數(shù)。
根據(jù)上述的密碼處理的其他實(shí)施例3,通過(guò)安全元件14所進(jìn)行的密碼處理,安全地進(jìn)行在MCU_2之間(在上述的例中,主機(jī)MCU_2-a和末端MCU_2-b之間)交換的信息的密碼處理(加密處理、解密處理)。由此,保持在MCU_2之間交換的信息的安全性。
進(jìn)而,通過(guò)基于該密碼處理的詢問(wèn)/響應(yīng),主機(jī)MCU_2-a能夠可靠地認(rèn)證末端MCU_2-b。并且,從主機(jī)MCU_2-a對(duì)于認(rèn)證完成的末端MCU_2-b,能夠基于該密碼處理安全地發(fā)送秘密的信息。該秘密的信息能夠用作為上述的第一實(shí)施方式中的秘密信息。在上述的密碼處理的其他實(shí)施例3中,從主機(jī)MCU_2-a對(duì)末端MCU_2-b安全地傳遞作為秘密的信息的隨機(jī)數(shù)。
此外,在上述的密碼處理的其他實(shí)施例3中,與上述的密碼處理的其他實(shí)施例2同樣地,也可以使主機(jī)MCU_2-a和末端MCU_2-b彼此進(jìn)行相互認(rèn)證,并在相互認(rèn)證成功的情況下,從主機(jī)MCU_2-a對(duì)末端MCU_2-b傳遞作為秘密的信息的隨機(jī)數(shù)。
[MAC生成處理以及MAC檢查處理的其他實(shí)施例]
圖22是用于對(duì)本發(fā)明的一實(shí)施方式的MAC生成處理以及MAC檢查處理進(jìn)行說(shuō)明的順序圖表。
參照?qǐng)D22,對(duì)MAC生成處理以及MAC檢查處理的其他實(shí)施例進(jìn)行說(shuō)明。MAC生成處理以及MAC檢查處理的其他實(shí)施例是上述的第二實(shí)施方式的變形例。MAC生成處理以及MAC檢查處理的其他實(shí)施例的通信網(wǎng)絡(luò)系統(tǒng)的結(jié)構(gòu)與上述的第二實(shí)施方式的圖7的通信網(wǎng)絡(luò)系統(tǒng)1的結(jié)構(gòu)相同,例如搭載在汽車。其中,在MAC生成處理以及MAC檢查處理的其他實(shí)施例中,根據(jù)上述的密碼處理的其他實(shí)施例1、2、3中的任一個(gè),從主機(jī)MCU_2-a對(duì)于認(rèn)證完成的末端MCU_2-b安全地發(fā)送作為秘密的信息的隨機(jī)數(shù)。主機(jī)MCU_2-a以及末端MCU_2-b將作為該秘密的信息的隨機(jī)數(shù)存儲(chǔ)至RAM12中。該RAM12作為上述的第一實(shí)施方式中的秘密信息存儲(chǔ)部117,保存作為該秘密的信息的隨機(jī)數(shù)來(lái)作為秘密信息。
在圖22中,發(fā)送側(cè)MCU_2作為發(fā)送節(jié)點(diǎn)進(jìn)行工作。發(fā)送側(cè)MCU_2可以是主機(jī)MCU_2-a,或者也可以是末端MCU_2-b。接收側(cè)MCU_2作為接收節(jié)點(diǎn)進(jìn)行工作。接收側(cè)MCU_2可以是主機(jī)MCU_2-a,或者也可以是末端MCU_2-b。發(fā)送側(cè)MCU_2在RAM_12中保存秘密信息、發(fā)送計(jì)數(shù)值和發(fā)送數(shù)據(jù)。接收側(cè)MCU_2在RAM_12中保存秘密信息和接收計(jì)數(shù)值。在制作從發(fā)送側(cè)MCU_2發(fā)送的CAN幀時(shí)開(kāi)始圖22的處理。
(步驟S231)發(fā)送側(cè)MCU_2的CPU_10使用在RAM_12中保存的秘密信息、發(fā)送數(shù)據(jù)和發(fā)送計(jì)數(shù)值,來(lái)生成MAC。該MAC的生成方法與上述的第一實(shí)施方式等相同。
(步驟S232)發(fā)送側(cè)MCU_2的CPU_10將CAN幀發(fā)送至通信總線3,其中,在上述CAN幀中存儲(chǔ)有在步驟S231中使用于MAC生成的發(fā)送數(shù)據(jù)和在步驟S231中生成的MAC。該CAN幀經(jīng)由通信總線3被接收側(cè)MCU_2接收。
(步驟S233)接收側(cè)MCU_2的CPU_10將從通信總線3接收到的CAN幀保存在RAM_12中。接收側(cè)MCU_2的CPU_10從在RAM_12中保存的CAN幀取得接收數(shù)據(jù)和接收MAC。進(jìn)而,接收側(cè)MCU_2的CPU_10從RAM12取得:與在CAN幀中的ID部中存儲(chǔ)的ID對(duì)應(yīng)的接收計(jì)數(shù)值,其中,上述CAN幀保存在RAM_12中。進(jìn)而,接收側(cè)MCU_2的CPU_10從RAM_12取得秘密信息。
接著,接收側(cè)MCU_2的CPU_10使用所取得的秘密信息、接收數(shù)據(jù)和接收計(jì)數(shù)值,來(lái)生成MAC。該MAC的生成方法與上述的發(fā)送側(cè)MCU_2相同。接著,接收側(cè)MCU_2的CPU_10判定所生成的MAC和從在RAM_12中保存的CAN幀取得的接收MAC是否一致。在該判定的結(jié)果為不一致的情況下,與上述的第一實(shí)施方式等同樣地進(jìn)行再檢查。
根據(jù)上述的MAC生成處理以及MAC檢查處理的其他實(shí)施例,使用在RAM12中保存的秘密信息,CPU_10執(zhí)行MAC生成處理以及MAC檢查處理。由此,有可能能夠縮短MAC生成處理以及MAC檢查處理的處理時(shí)間。
在上述的圖10所示的第二實(shí)施方式中,將秘密信息保存在安全元件14的安全RAM_21中,并在安全元件14中執(zhí)行了MAC生成處理以及MAC檢查處理。因此,例如,在每當(dāng)發(fā)送CAN幀時(shí),CPU_10每次將發(fā)送數(shù)據(jù)以及發(fā)送計(jì)數(shù)值轉(zhuǎn)交給安全元件14,來(lái)從安全元件14接受所生成的MAC。
該CPU_10和安全元件14之間的數(shù)據(jù)交換需要一定的時(shí)間,成為MAC生成處理中的開(kāi)銷(overhead)。這在MAC檢查處理中也相同。另一方面,根據(jù)上述的MAC生成處理以及MAC檢查處理的其他實(shí)施例,僅由CPU_10執(zhí)行MAC生成處理以及MAC檢查處理,因此不發(fā)生CPU_10和安全元件14之間的數(shù)據(jù)交換,能夠縮短與該開(kāi)銷相應(yīng)的時(shí)間。
另外,也可以將用于實(shí)現(xiàn)上述的MCU_2的功能的計(jì)算機(jī)程序記錄到計(jì)算機(jī)可讀取的記錄介質(zhì),來(lái)使計(jì)算機(jī)讀入并執(zhí)行在該記錄介質(zhì)中所記錄的程序。
另外,“計(jì)算機(jī)可讀取的記錄介質(zhì)”是指,軟磁盤、光磁盤、ROM(只讀存儲(chǔ)器)、閃存器等可寫入的非易失性存儲(chǔ)器、DVD(Digital Versatile Disk)等移動(dòng)式介質(zhì)、內(nèi)置于計(jì)算機(jī)的硬盤等存儲(chǔ)裝置。
進(jìn)而,“計(jì)算機(jī)可讀取的記錄介質(zhì)”還包括如在經(jīng)由互聯(lián)網(wǎng)等網(wǎng)絡(luò)或電話線路等通信線路來(lái)發(fā)送了程序的情況下成為服務(wù)器或客戶端的計(jì)算機(jī)內(nèi)部的易失性存儲(chǔ)器(例如,DRAM(Dynamic Random Access Me mory:動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器))那樣在一定時(shí)間內(nèi)保存程序的介質(zhì)。
另外,上述程序也可以從在存儲(chǔ)裝置等中存儲(chǔ)有該程序的計(jì)算機(jī)經(jīng)由傳輸介質(zhì)或者通過(guò)傳輸介質(zhì)中的傳輸波來(lái)傳輸給其他計(jì)算機(jī)。在此,用于傳輸程序的“傳輸介質(zhì)”是指,如互聯(lián)網(wǎng)等的網(wǎng)絡(luò)(通信網(wǎng))或電話線路等通信線路(通信線)那樣具有用于傳輸信息的功能的介質(zhì)。
另外,上述程序也可以是用于實(shí)現(xiàn)上述的功能的一部分的程序。
進(jìn)而,也可以通過(guò)與已在計(jì)算機(jī)中記錄有上述的功能的程序的組合來(lái)實(shí)現(xiàn),即也可以是所謂的差分文件(差分程序)。
附圖標(biāo)記的說(shuō)明
1:通信網(wǎng)絡(luò)系統(tǒng)
2、2-a、2-b:MCU
3:通信總線
10:CPU
11:閃存器
12:RAM
13:引導(dǎo)加載器
14:安全元件
21:安全RAM
22:安全ROM
23:驗(yàn)證部
24:密碼處理部
111:發(fā)送部
112:接收部
113:幀接收處理部
114:MAC(消息認(rèn)證碼)生成部
115:計(jì)數(shù)器部
116:MAC(消息認(rèn)證碼)檢查部
117:秘密信息存儲(chǔ)部。