(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6420176
(24)【登録日】2018年10月19日
(45)【発行日】2018年11月7日
(54)【発明の名称】通信システムおよび通信装置
(51)【国際特許分類】
H04L 9/32 20060101AFI20181029BHJP
【FI】
H04L9/00 675A
【請求項の数】16
【全頁数】17
(21)【出願番号】特願2015-36298(P2015-36298)
(22)【出願日】2015年2月26日
(65)【公開番号】特開2016-158204(P2016-158204A)
(43)【公開日】2016年9月1日
【審査請求日】2017年11月27日
(73)【特許権者】
【識別番号】302062931
【氏名又は名称】ルネサスエレクトロニクス株式会社
(74)【代理人】
【識別番号】100103894
【弁理士】
【氏名又は名称】家入 健
(74)【代理人】
【識別番号】100089071
【弁理士】
【氏名又は名称】玉村 静世
(72)【発明者】
【氏名】押田 大介
【審査官】
青木 重徳
(56)【参考文献】
【文献】
米国特許出願公開第2011/0238989(US,A1)
【文献】
特開2000−106553(JP,A)
【文献】
特表2009−517939(JP,A)
【文献】
米国特許出願公開第2009/0222666(US,A1)
【文献】
竹森 敬祐 ほか,セキュアブート+認証による車載制御システムの保護,電子情報通信学会技術研究報告,日本,電子情報通信学会,2014年 9月12日,Vol.114,No.225,pp.47−54
【文献】
D. W. Davides, W. L. Price 著/上園 忠弘 監訳,ネットワーク・セキュリティ,日本,日経マグロウヒル社,1985年12月 5日,1版1刷,pp.126−129
(58)【調査した分野】(Int.Cl.,DB名)
H04L 9/32
(57)【特許請求の範囲】
【請求項1】
ネットワークで相互接続され、前記ネットワークを介してパケットを送受可能な第1装置と第2装置とを含み、
前記第1及び第2装置は、それぞれ第1及び第2パケットカウンタを備え、
前記第1及び第2パケットカウンタは、初期値として同じ乱数値が与えられ、パケットの送受信に伴ってそれぞれ更新され、
前記第1装置は、前記第2装置にメッセージを伝送するときに、前記メッセージに基づいてメッセージ認証符号を生成し、その一部を前記第1パケットカウンタのカウント値に基づいて抜き出して分割メッセージ認証符号とし、前記メッセージと前記分割メッセージ認証符号とを含むパケットを生成して、前記ネットワークを介して前記第2装置に送信し、
前記第2装置は、前記パケットを受信したとき、受信したパケットに含まれるメッセージに基づいてメッセージ認証符号を生成し、その一部を前記第2パケットカウンタのカウント値に基づいて抜き出し、受信したパケットに含まれる前記分割メッセージ認証符号と比較することによってメッセージ認証を行い、
前記第1及び第2装置は、パケットの送受信ごとに、それぞれ、自身のパケットカウンタのカウンタ値から同じ計算方法で生成される値を増分値として、自身のパケットカウンタを更新する、
通信システム。
【請求項2】
請求項1において、前記第1または第2装置のうちのいずれか一方は、前記乱数値を生成し、自身のパケットカウンタの初期値として設定するとともに暗号化して他方に伝送し、他方は暗号を復号して前記乱数値を復元して自身のパケットカウンタの初期値として設定する、
通信システム。
【請求項3】
請求項2において、前記暗号化は、共通鍵暗号方式に則る暗号化である、
通信システム。
【請求項4】
請求項3において、前記第1及び第2装置は、前記乱数値をそれぞれのパケットカウンタの前記暗号化のために送受信する前に、公開鍵暗号方式に則ったチャレンジ/レスポンス認証を実行する、
通信システム。
【請求項5】
請求項1において、前記第1及び第2装置は、それぞれ、自身のパケットカウンタのカウンタ値に、同じ不可逆圧縮関数を作用させて得られる値に基づいて、前記増分値を算出する、
通信システム。
【請求項6】
請求項1において、前記パケットを受信したとき、
前記第2装置により、受信パケットに含まれるメッセージに基づいて生成したメッセージ認証符号から、前記第2パケットカウンタのカウント値に基づいて抜き出された前記一部を、中央ビット列とし、
前記第2装置は、当該受信パケットよりi個(iは任意の整数)だけ以前に受信した受信パケットからj個(jは任意の整数)だけ以降に受信する受信パケットまでに、それぞれ対応する複数のカウント値に基づいて生成される複数のMAC値における当該カウント値に基づく位置から、当該メッセージ認証符号の複数のビット列をさらに抜き出し、
前記第2装置は、前記中央ビット列及び前記複数のビット列のそれぞれを、当該受信パケットに含まれる分割メッセージ認証符号と比較し、少なくとも1個のビット列が一致したときに、当該受信パケットを正当なパケットとして認証する、
通信システム。
【請求項7】
請求項6において、前記i及び前記jをともに1とする、
通信システム。
【請求項8】
請求項1において、前記第1及び第2装置の少なくとも一方は、ハードウェアセキュリティモジュールを備える、
通信システム。
【請求項9】
請求項1において、前記第1及び第2装置は、それぞれ電子制御ユニットであり、前記ネットワークは車載ネットワークである、
通信システム。
【請求項10】
第1パケットカウンタを備える他の通信装置とネットワークで接続され、前記ネットワークを介してパケットを送受可能であり、前記他の通信装置から受信したパケットのメッセージ認証を行う、通信装置であって、
前記第1パケットカウンタと対応し、前記他の通信装置との間でパケットが送受信されるのに伴って更新される、第2パケットカウンタと、ハードウェアセキュリティモジュールとを備え、
前記ハードウェアセキュリティモジュールによって生成した乱数を、前記第2パケットカウンタの初期値として設定するとともに、前記乱数を前記第1パケットカウンタの初期値とさせるために前記他の通信装置に対して暗号化して伝送し、
前記他の通信装置から受信するパケットは、前記他の通信装置が、伝送するメッセージに基づいてメッセージ認証符号を生成し、その一部を前記第1パケットカウンタのカウント値に基づいて抜き出して分割メッセージ認証符号とし、前記メッセージと前記分割メッセージ認証符号とを含んで生成したものであり、
当該通信装置は、前記他の通信装置からパケットを受信したとき、受信したパケットに含まれるメッセージに基づいてメッセージ認証符号を生成し、その一部を前記第2パケットカウンタのカウント値に基づいて抜き出し、受信したパケットに含まれる前記分割メッセージ認証符号と比較することによってメッセージ認証を行い、
当該通信装置及び前記他の通信装置は、パケットの送受信ごとに、それぞれ、自身のパケットカウンタのカウンタ値から同じ計算方法で生成される値を増分値として、自身のパケットカウンタを更新する、
通信装置。
【請求項11】
請求項10において、前記暗号化は、共通鍵暗号方式に則る暗号化である、
通信装置。
【請求項12】
請求項11において、前記通信装置は、前記乱数を前記他の通信装置に送信する前に、前記他の通信装置との間で、公開鍵暗号方式に則ったチャレンジ/レスポンス認証を実行する、
通信装置。
【請求項13】
請求項10において、当該通信装置及び前記他の通信装置は、それぞれ、自身のパケットカウンタのカウンタ値に、同じ不可逆圧縮関数を作用させて得られる値に基づいて、前記増分値を算出する、
通信装置。
【請求項14】
請求項10において、前記パケットを受信したとき、
受信パケットに含まれるメッセージに基づいて生成したメッセージ認証符号から、前記第2パケットカウンタのカウント値に基づいて抜き出された前記一部を、中央ビット列とし、
当該通信装置は、当該受信パケットよりi個(iは任意の整数)だけ以前に受信した受信パケットからj個(jは任意の整数)だけ以降に受信する受信パケットまでに、それぞれ対応する複数のカウント値に基づいて生成される複数のMAC値における当該カウント値に基づく位置から、当該メッセージ認証符号の複数のビット列をさらに抜き出し、
当該通信装置は、前記中央ビット列及び前記複数のビット列のそれぞれを、当該受信パケットに含まれる分割メッセージ認証符号と比較し、少なくとも1個のビット列が一致したときに、当該受信パケットを正当なパケットとして認証する、
通信装置。
【請求項15】
請求項14において、前記i及び前記jをともに1とする、
通信装置。
【請求項16】
請求項10において、当該通信装置と前記通信装置は、車載ネットワークに接続される電子制御ユニットを構成する通信装置であり、当該通信装置と前記通信装置とを相互に接続する前記ネットワークは、前記車載ネットワークと同一又は異なるネットワークである、
通信装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、通信システムおよび通信装置に関し、特にネットワーク上の通信パケットにメッセージ認証コード(MAC:Message Authentication Code)の一部を含む通信に好適に利用できるものである。
【背景技術】
【0002】
自動車の制御システムを始めとして、様々な分野において、セキュリティの重要性及びニーズが高まっている。これに対応するため組み込み機器の分野においては、対象製品そのものが物理的に攻撃される機会が多いため、耐タンパ性の高い、ハードウェアセキュリティモジュール(HSM:Hardware Security Module)にセキュリティ機能を集約する傾向がある。
【0003】
自動車の制御システムは、例えばCAN(Controller Area Network)などの車載ネットワークに接続された複数の電子制御ユニット(ECU:Electronic Control Unit)から構成される。このような自動車の制御システムに対する攻撃には、CANでやり取りされるメッセージの漏洩、メッセージの改竄、偽のメッセージの配信などがあり、これを防ぐために、ECU間の通信にはCANパケットにその正当性を証明する情報を付加する手法などが提案されている。
【0004】
特許文献1には、CANプロトコルを変更せずにメッセージ認証コード(MAC)によるメッセージ認証を行う技術が開示されている。CANに接続されている各ECUにおいてCANIDごとにメッセージが送信された回数をカウントする。メッセージを送信したECUはメインメッセージのデータフィールド及びCANIDと、CANIDに対応するカウンタ値とからMACを生成して、MACメッセージとして送信する。メインメッセージを受信したECUは、メインメッセージに含まれるデータフィールド及びCANIDと、CANIDに対応するカウンタ値とからMACを生成して、MACメッセージに含まれるMACとの比較を行い、メインメッセージの正当性を検証することができる。
【0005】
非特許文献1には、上記特許文献1に記載される技術を改良した、CANパケットの認証技術が開示されている。CANパケットの大きさには制限があるので、算出されたMAC値の一部のビットのみをCANパケットに包含させる。送信側ECUでは、送信パケットカウンタの上位L−1−nビットをMACの算出に使用し、下位nビットを算出されたMAC値から抽出される一部のビット(Xsビット)のフレーム位置を示すために使用する。即ち、送信側ECUでは、メインメッセージと、送信側と受信側とで共有される秘密の情報と、送信パケットカウンタの上位L−1−nビットとからMAC値を算出し、そのMAC値から送信パケットカウンタの下位nビットで指定されるフレーム位置のXsビットを抽出して、メインメッセージに付加してCANパケットを構成する。受信側ECUでは、受信パケットカウンタの送信側と同じ上位L−1−nビットをMACの算出に使用し、下位nビットを算出されたMAC値から抽出される一部のビット(Xrビット)のフレーム位置を示すために使用する。即ち、受信側ECUでは、受信したCANパケット中のメインメッセージと、送信側と共有する秘密の情報と、受信パケットカウンタの上位L−1−nビットとからMAC値を算出し、そのMAC値から受信パケットカウンタの下位nビットで指定されるフレーム位置のXrビットを抽出する。受信したCANパケット中のMAC値Xsビットと、自身が算出したMAC値のうちのXrビットとを比較し、一致すれば受信したCANパケットを正当なものと認証する。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特開2013−98719号公報
【非特許文献】
【0007】
【非特許文献1】竹森敬祐、溝口誠一郎、川端秀明、窪田歩、「セキュアブート+認証による車載制御システムの保護」、情報処理学会研究報告 高度交通システムとスマートコミュニティ(ITS)、2014-ITS-58、情報処理学会、2014年9月12日
【発明の概要】
【発明が解決しようとする課題】
【0008】
特許文献1及び非特許文献1について本発明者が検討した結果、以下のような新たな課題があることがわかった。
【0009】
非特許文献1には、送信側と受信側のECUがそれぞれセキュアエレメントと呼ばれるHSMを備えており、MACの生成などを行うため、この部分の耐タンパ性は担保されているが、パケットカウンタをHSMの外側に備えるため、ECU内部でHSMにデータを入出力する通信経路の秘匿性・完全性の確保が十分でないことがわかった。例えばセキュリティ機能を備えないホストプロセッサとHSMとを通信路で接続してECUを構成すると、仮に、ホストプロセッサ側でソフトウェアを用いて暗号化を行い、秘匿性を確保したとしても、ホストプロセッサとHSM間の通信経路にプロービング等を行い、古い情報を流す、いわゆるリプレイアタックに対しての耐性が低いことがわかった。
【0010】
このような課題を解決するための手段を以下に説明するが、その他の課題と新規な特徴は、本明細書の記述及び添付図面から明らかになるであろう。
【課題を解決するための手段】
【0011】
一実施の形態によれば、下記の通りである。
【0012】
すなわち、ネットワークで相互接続されパケットを送受する複数の装置を含む通信システムであって、パケットを送受する装置はそれぞれ通信相手に対応するパケットカウンタを備える。対応するパケットカウンタには、初期値として同じ乱数値が与えられ、パケットの送受信に伴ってそれぞれ更新される。メッセージを送信する側の装置は、前記メッセージに基づいてメッセージ認証符号(MAC値)を生成し、その一部を自身のパケットカウンタのカウント値に基づいて抜き出して分割メッセージ認証符号(分割MAC値)とし、前記メッセージに付加してパケットを生成してネットワークに送信する。パケットを受信した装置は、受信したパケットに含まれるメッセージに基づいてメッセージ認証符号(MAC値)を生成し、その一部を自身のパケットカウンタのカウント値に基づいて抜き出し、受信したパケットに含まれる分割メッセージ認証符号(分割MAC値)と比較することによってメッセージ認証を行う。
【発明の効果】
【0013】
前記一実施の形態によって得られる効果を簡単に説明すれば下記のとおりである。
【0014】
すなわち、パケットカウンタのカウント値を外部から観測または推定することが難しくなり、複数の装置間の通信経路(ネットワーク)の秘匿性や安全性を向上することができる。
【図面の簡単な説明】
【0015】
【
図1】
図1は、通信装置の構成例及びその通信装置を含んで構成される通信システムの構成例を示すブロック図である。
【
図2】
図2は、通信装置が電子制御ユニット(ECU)であり、そのECUを車載ネットワーク(CAN)で相互に接続して構成される通信システムの構成例を示すブロック図である。
【
図3】
図3は、通信システムが通信装置としての複数のECUをCANで相互接続して構成され、その1つの通信装置(ECU)が、HOSTと耐タンパ性を備えるハードウェアセキュリティモジュール(HSM)で構成される、構成例を示すブロック図である。
【
図4】
図4は、実施形態1における通信フローの一例を示すフロー図である。
【
図5】
図5は、パケットカウンタのゆらぎを吸収するためのフローの一例を示すフロー図である。
【
図6】
図6は、パケットカウンタのインクリメント値を乱数にするためのフローの一例を示すフロー図である。
【
図7】
図7は、実施形態2における通信フローの一例を示すフロー図である。
【
図8】
図8は、HOSTにも暗号機能が搭載される、ECUの構成例を示すブロック図である。
【
図9】
図9は、実施形態3における通信フローの一例を示すフロー図である。
【発明を実施するための形態】
【0017】
〔実施形態1〕<パケットカウンタを乱数で初期化>
図1は、通信装置の構成例及びその通信装置を含んで構成される通信システムの構成例を示すブロック図である。通信システム10は、ネットワーク5で相互接続され、そのネットワーク5を介してパケットを送受信する第1通信装置1_2と第2通信装置1_1とを含んで構成される。ネットワーク5には、他の通信装置がさらに接続されていてもよい。また、ネットワーク5は階層化されたネットワークであって、第1通信装置1_2と第2通信装置1_1との間に中継装置を含んで構成されても良い。また、ネットワークは有線・無線を問わず、パケットを伝送可能な何らかの通信路であればよい。
【0018】
第1通信装置1_2と第2通信装置1_1は、パケットカウンタ6_2と6_1をそれぞれ備える。パケットカウンタ6_2と6_1には、初期値として同じ乱数値が与えられ、第1通信装置1_2と第2通信装置1_1との間のパケットの送受信に伴ってそれぞれ更新される。第1通信装置1_2から第2通信装置1_1へのパケットの伝送と、逆方向の第2通信装置1_1から第1通信装置1_2へのパケットの伝送とについてそれぞれ別のパケットカウンタが設けられていても良い。送信側がパケットを送信するときに自身のパケットカウンタを更新すると、受信側もこれに合わせてそのパケットを受信したときに自身パケットカウンタを更新するように構成し、互いのパケットカウンタが同じカウント値を保持するように制御される。このとき、1パケットの送受信に対応するパケットカウンタの増分値(インクリメント値)は、必ずしも1には限られず、パケットの送受に応じて互いのパケットカウンタに同じカウント値が保持される限り、任意の値を取り得る。
【0019】
第1通信装置1_2は、第2通信装置1_1宛てに送信するメッセージと、メッセージ認証符号(MAC値)を生成するための秘密の情報が与えられており、パケット生成部20とMAC生成部21と分割MAC値生成部22とを備える。パケット生成部20とMAC生成部21と分割MAC値生成部22とは、第1通信装置1_2が備えるプロセッサ上でソフトウェアを実行することによって実現される機能ブロックである。ソフトウェアによって実現される代わりに、全部または一部を、専用ハードウェアによって実現しても良い。
【0020】
第1通信装置1_2は、第2通信装置1_1宛てにメッセージを伝送するときに、そのメッセージと秘密の情報に基づいてMAC生成部21においてMAC値を生成する。分割MAC値生成部22は、生成されたMAC値から、パケットカウンタ6_2のカウント値に基づいて指定される、一部分のビット位置(フレーム位置)のデータを抜き出して分割MAC値とする。パケット生成部20は、メッセージと分割MAC値とを含むパケットを生成して、第2通信装置1_1宛てにネットワーク5に送信する。
【0021】
第2通信装置1_1は、MAC値を認証するための秘密の情報が与えられており、パケット分割部30とMAC生成部31と分割MAC値生成部32と比較・認証部33とを備える。パケット分割部30とMAC生成部31と分割MAC値生成部32と比較・認証部33とは、第2通信装置1_1が備えるプロセッサ上でソフトウェアを実行することによって実現される機能ブロックである。ソフトウェアによって実現される代わりに、全部または一部を、専用ハードウェアによって実現しても良い。
【0022】
第2通信装置1_1は、第1通信装置1_2からネットワーク5を経由してパケットを受信したとき、パケット分割部30によってそのパケットからメッセージと分割MAC値を抽出する。MAC生成部31は、受信したパケットから抽出されたメッセージと、秘密の情報と、パケットカウンタ6_1のカウント値とから、MAC値を生成する。分割MAC値生成部32は、生成されたMAC値から、パケットカウンタ6_1のカウント値に基づいて指定される、一部分のビット位置(フレーム位置)のデータを抜き出して分割MAC値とする。比較・認証部33は、パケット分割部30によって受信したパケットから抽出された分割MAC値と、MAC生成部31と分割MAC値生成部32によって生成された分割MAC値とを比較し、比較結果に基づいて、受信したメッセージを認証する。ここで、受信したメッセージが認証されるのは、受信したパケットから抽出された分割MAC値と内部で生成された分割MAC値とが完全に一致する場合には限られない。「パケットカウンタのゆらぎを吸収」に後述するように、送信側と受信側でパケットカウンタのカウント値にずれが生じている場合にも、メッセージ認証を成功と判定させることもできる。
【0023】
パケットカウンタ6_1と6_2の初期値として乱数値が与えられることにより、そのカウント値を外部から観測または推定することが難しくなり、第1通信装置1_2と第2通信装置1_1との間の通信経路(ネットワーク5)の秘匿性や安全性を向上することができる。
【0024】
ここで、
図1には、第1通信装置1_2がメッセージの送信側であり、第2通信装置1_1が受信側である場合に限って説明したが、メッセージの伝送方向は逆方向でも双方向でも良い。その場合には、第1通信装置1_2が、パケット分割部、受信したパケットから抽出されるメッセージからMAC値を生成するMAC生成部、分割MAC値生成部、及び、比較・認証部をさらに備えてもよく、また、第2通信装置1_1が、パケット生成部、MAC生成部、及び、分割MAC値生成部をさらに備えてもよい。
【0025】
〔CANに接続されるECU間通信への適用〕
上述の第1及び第2通信装置をそれぞれECUとし、ネットワーク5を車載ネットワーク(CAN)とすることによって、通信システムを構成することができる。
【0026】
図2は、通信装置が電子制御ユニット(ECU)であり、そのECUを車載ネットワーク(CAN)で相互に接続して構成される通信システムの構成例を示すブロック図である。複数のECUである、ECU−A(2_A)、ECU−B(2_B)、及び、ECU−C(2_C)が、CAN5に接続されている。ECU−A(2_A)はパケットカウンタAB(6_AB)とパケットカウンタAC(6_AC)とを備え、ECU−B(2_B)はパケットカウンタBA(6_BA)とパケットカウンタBC(6_BC)とを備え、ECU−C(2_C)はパケットカウンタCA(6_CA)とパケットカウンタCB(6_CB)とを備える。パケットカウンタAB(6_AB)とパケットカウンタBA(6_BA)とは、ECU−A(2_A)とECU−B(2_B)との間のパケット通信に対応して設けられている。同様に、パケットカウンタAC(6_AC)とパケットカウンタCA(6_CA)とは、ECU−A(2_A)とECU−C(2_C)との間のパケット通信、パケットカウンタBC(6_BC)とパケットカウンタCB(6_CB)とは、ECU−B(2_B)とECU−C(2_C)との間のパケット通信に、それぞれ対応して設けられている。それぞれECUが1:1のパケット通信を行う場合には、そのパケット通信を行うECUどうしのパケットカウンタが、同じ乱数値によって初期化される。ブロードキャストなど1:多のパケット通信を行う場合には、その1:多のパケット通信に参加するすべてのECUどうしのパケットカウンタが、同じ乱数値によって初期化される。
【0027】
これにより、CANによって相互接続される電子制御ユニット(ECU)間の通信の秘匿性や安全性を向上することができる。
【0028】
〔HOST−HSM間通信への適用〕
上述の第1及び第2通信装置の間の通信を、ECUを構成するホストプロセッサ(HOST)とハードウェアセキュリティモジュール(HSM)との間の通信に適用することができる。「背景技術」において述べたように、自動車の制御システムを始めとする、セキュリティの重要性及びニーズが高い組み込み機器においては、対象の機器そのものが物理的に攻撃される機会が多いため、耐タンパ性の高いHSMを設けて、これにセキュリティ機能を集約する傾向がある。
【0029】
図3は、通信システムが通信装置としての複数のECUをCANで相互接続して構成され、その1つのECUが、HOSTと耐タンパ性を備えるHSMとを含んで構成される、構成例を示すブロック図である。
図2と同様に、複数のECUがCAN5_2に接続され得るが、ECU−A(2_A)とECU−B(2_B)のみがCAN5_2に接続されている例が示され、ECU−A(2_A)が、ネットワーク5_1によって相互接続される、HOST4と耐タンパ性を備えるHSM3とを備えて構成される例である。
【0030】
HOST4は、CPU11_2と、CAN5_2とのインターフェース(I/F)12_3と、ネットワーク5_1とのインターフェース(I/F)12_2と、ROM15_2と、RAM16_2とが、互いにバス17_2に接続されて構成されている。HSM3は、CPU11_1と、ネットワーク5_1とのインターフェース(I/F)12_1と、ROM15_1と、RAM16_1と、暗号IP(Crypt IP)13_1と、乱数発生回路(RNG)14_1とが、互いにバス17_1に接続されて構成されている。暗号IP13は、耐タンパ性を備える暗号通信に関わるデータ処理を実行する回路モジュールであり、公知の耐タンパ機能を実装することによって構成することができる。例えば、秘匿すべきパラメータを外部から観測することができないように記憶し、所定の暗号演算を実行する際に、演算時間や消費電力の変動波形にデータ依存性が現れないようにするなど、暗号通信に対する攻撃からの防御措置が講じられている。
【0031】
HOST4におけるROM15_2には、CPU11_2で実行されることにより、上述のパケット生成部20、MAC生成部21及び分割MAC値生成部22として機能する、プログラムが格納されている。HSM3におけるROM15_1には、11_1で実行されることにより、上述のパケット分割部30、MAC生成部31、分割MAC値生成部32及び比較・認証部33として機能する、プログラムが格納されている。HOST4とHSM3との間のネットワーク5_1を介するパケット通信は、HOST4内のRAM16_2に保持されるパケットカウンタHOST−HSM(6_2)とHSM3内のRAM16_1に保持されるパケットカウンタHSM−HOST(6_1)とを使って実行される。一方、ECU−A(2_A)とECU−B(2_B)との間のCAN5_2を介するパケット通信は、ECU−A(2_A)のHSM3内のRAM16_1に保持されるパケットカウンタAB(6_3)と、ECU−B(2_B)が備えるパケットカウンタBA(6_4)とを使って実行される。パケットカウンタAB(6_3)は、HOST4内のRAM16_2に保持されてもよいが、HSM3内のRAM16_1に保持される方が、耐タンパ性が高い。パケットカウンタHOST−HSM(6_2)、パケットカウンタHSM−HOST(6_1)及びパケットカウンタAB(6_3)は、HOST4内のRAM16_2またはHSM3内のRAM16_1に保持される代わりに、専用のカウンタによって実現されてもよい。
【0032】
HOST4とHSM3との間のネットワーク5_1を介するパケット通信に、上述の
図1を引用して説明した通信を適用することにより、HSMでない一般のHOSTとHSMの間の通信経路(ネットワーク)の秘匿性や安全性を向上することができる。
【0033】
ここで、HOST4とHSM3の構成として
図3に示されるのは、一例に過ぎない。ネットワーク5_1は、CAN、SPI(Serial Peripheral Interface)など任意の通信路で形成され得る。HOST4とHSM3において、バス17_1、17_2はそれぞれ階層化されてもよい。また、HOST4は、実際に用いられるアプリケーションに応じて、図示されている機能ブロック以外の機能ブロック、例えば、割り込み制御回路、ダイレクトメモリコントローラ、タイマ、その他のペリフェラルなどを適宜含んで構成されても良い。HSM3も同様である。HSM3としては、CPU11_1が搭載される構成例を示したが、シーケンサで代用してもよい。HSM3は耐タンパ性を備えていることが望ましいが、単に、
図3に示される構成要素を備えていている半導体デバイスであれば良い。特に制限されないが、HOST4とHSM3とは、それぞれ例えば、公知のCMOS(Complementary Metal-Oxide-Semiconductor field effect transistor)LSI(Large Scale Integrated circuit)の製造技術を用いて、シリコンなどの単一半導体基板上に形成される。このように、HOST4とHSM3とがそれぞれ別の半導体チップに形成され、互いがネットワーク5_1によって通信される場合に、ネットワーク5_1を観測することによる攻撃に対して、パケットカウンタを乱数値によって初期化することにより、通信の秘匿性や安全性を向上することができる。一方、HOST4とHSM3とが同一の半導体チップ上に混載されても良い。このとき、ネットワーク5_1が半導体チップの外に引き出されないように構成すれば、通信の秘匿性と安全性をさらに向上することができる。
【0034】
〔乱数値はHSMで生成し、暗号化してHOSTに伝送〕
図3に例示されるECU−A(2_A)の動作について説明する。
【0035】
図4は、本実施形態1における通信フローの一例を示すフロー図である。HOST4とHSM3によってそれぞれ実行される処理ステップと、送受信されるデータの内容が、上から下に向かう時系列に沿って示される。
【0036】
まず、HOST4とHSM3がそれぞれ起動される(システムON)。HSM3は、乱数R1を乱数発生回路(RNG)14_1で生成し、暗号IP(Crypt IP)13_1によって共通鍵CKを使って暗号化する。共通鍵CKを使って暗号化された乱数R1を「CK(R1)」と表記する。HSM3は、生成した乱数R1をパケットカウンタHSM−HOST(6_1)に初期値としてセットする。HSM3は、暗号化された乱数CK(R1)を、ネットワーク5_1を介してHOST4へ送付する。HOST4では、事前にHSM3と共有してある共通鍵CKを用いて、暗号化された乱数CK(R1)を復号する。その段階で、HOST4は、復号された乱数R1をパケットカウンタHOST−HSM(6_2)の初期値とし、1パケット分のインクリメントを行う。即ちHOST4は、パケットカウンタHOST−HSM(6_2)の値をR2=R1+1に更新する。HOST4は、HSM3に対して、署名生成、署名検証、その他暗号に関わる処理を要求する際に、リクエストメッセージ(Request msg)を生成するとともに、そのメッセージとパケットカウンタHOST−HSM(6_2)のカウンタ値であるR2からMAC値を生成して、メッセージに付加する。MAC値は、一般的なCMAC(Cipher based Message Authentication Code)等の技術を用いて生成することができる。HOST4は、リクエストメッセージ(Request)とMAC値を含むパケットを生成して、HSM3に送付する。パケットを受信したHSM3では、それに含まれるMAC値からメッセージの正当性を検証(MAC値検証)した後、メッセージの処理を実行し、その結果(Result)をHOST4に送付する。このとき、パケットカウンタHSM−HOST(6_1)の値をR3=R2+1に更新する。この処理間の通信メッセージは、共通鍵CKで暗号化される。MAC値検証の際に、受信したメッセージと自身のパケットカウンタHSM−HOST(6_1)のカウンタ値から生成されるMAC値と受信したMAC値とが相違する場合には、不正処理に移行する。不正処理には、後述の「パケットカウンタのゆらぎを吸収」する処理が含まれてもよい。これにより、メッセージのなりすましを防ぐ事が可能となり、通信の秘匿性や安全性を向上させることができる。
【0037】
ここで、HOST4とHSM3においてそれぞれ実行されるMAC値の生成は、送受信される対象のメッセージと、それぞれのパケットカウンタHOST−HSM(6_2)とHSM−HOST(6_1)のカウント値に基づく演算処理である。ここで、HOST4とHSM3がさらに秘密の情報を共有し、これをそれぞれのMAC値生成の演算に寄与させるように構成してもよい。これにより、通信の秘匿性や安全性をより向上させることができる。
【0038】
〔パケットカウンタのゆらぎを吸収〕
上述のMAC値検証においては、パケットカウンタHOST−HSM(6_2)とHSM−HOST(6_1)のカウント値が同期していることが前提となる。ここで、「同期」とは、必ずしも同時に同じ値を取ることを指すのではなく、ある程度の時間差を持って同じ値に更新されても良いし、さらには、互いに異なる値であっても、一定の規則に従うことによって相互に対応する値を取ってもよい。即ち、送信側でのMAC値生成に使用されたカウント値が、受信側で再現することができ、同じMAC値を生成することができればよい。
【0039】
しかしながら、通信エラーなどに起因して、パケットカウンタHOST−HSM(6_2)とHSM−HOST(6_1)との間で、同期が外れる場合がある。このパケットカウンタの同期はずれを、「パケットカウンタのゆらぎ」と呼ぶことにする。このようなパケットカウンタのゆらぎは、システムが正常に動作している場合にも発生し得るので、ある程度の幅までは吸収することが望ましい。一方、通信の秘匿性・安全性が優先されるシステムにおいては、ゆらぎを外部からの攻撃と判断して、即座に防御措置を講ずることが望ましい場合もある。どちらを採用するかは、システム設計におけるHSM3及びHOST4のセキュリティポリシーに依存する。
【0040】
図5は、パケットカウンタのゆらぎを吸収するためのフローの一例を示すフロー図である。
【0041】
上述のHSM3におけるMAC値検証の際に、受信したMAC値が、受信したメッセージと自身のパケットカウンタHSM−HOST(6_1)のカウンタ値から生成されるMAC値と相違する場合(MACの不一致検出)に、不正処理として即時に動作を停止させる場合(即時Stopの場合)と、ゆらぎを吸収する処理に移行する場合(検証する場合)とのいずれかを採り得る。前者は、通信の秘匿性・安全性が優先されるシステムにおいて、ゆらぎを外部からの攻撃と判断して、即座に防御措置を講ずる場合に採用され、後者は、パケットカウンタのゆらぎを吸収する場合に採用される。
【0042】
即時Stopの場合、HSM3からHOST4に対して異常を通知し、HSM3は実行中の処理を中断または終了する。
【0043】
検証する場合、
図5にはパケットカウンタのゆらぎを±1パケットまで許容する例が示されている。MACの不一致検出の後、パケットカウンタHSM−HOST(6_1)のカウンタ値のデクリメントを実施し、再びMAC検証を行う。このステップで生成されたMAC値が受信したMAC値と一致したときには、正常なメッセージであると判断して、メッセージの処理に移行する。不一致の場合には、カウンタ値のインクリメントを2回実施し、もう1度MAC検証を行う。このステップで生成されたMAC値が受信したMAC値と一致したときには、正常なメッセージであると判断して、メッセージの処理に移行する。不一致の場合には、HSM3からHOST4に対して異常を通知し、HSM3は実行中の処理を中断または終了する。
【0044】
ここで、デクリメント値とインクリメント値は、必ずしも1である必要はなく、後述の実施形態2に記載されるように、別の乱数値などであってもよい。また、パケットカウンタのゆらぎを±1パケットよりも広い範囲まで許容するように変更することもできる。即ち、当該受信パケットよりi個(iは任意の整数)だけ以前に受信した受信パケットからj個(jは任意の整数)だけ以降に受信する受信パケットまでに、それぞれ対応する複数のカウント値に基づいて生成される複数のMAC値と、受信したMAC値とを比較して、繰り返しMAC検証を行う。少なくとも1個のMAC値が一致したときは、正常なメッセージであると判断して、メッセージの処理に移行し、すべて不一致の場合には、HSM3からHOST4に対して異常を通知し、HSM3は実行中の処理を中断または終了する。iとjの値は、システムのセキュリティポリシーに依存して任意に設定することができる。iとjの値が大きければ大きいほど、リプレイアタックが容易となるため、iとjの値はともに3以下であることが望ましい。また、ゆらぎの幅が小さい時には、正常なメッセージであると判断して、メッセージの処理に移行するとしても、ゆらぎの幅がある程度大きい時には、即時に停止する処理に移行する代わりに、何らかの警告を発し、別の方法でセキュリティ強化を図るなどの防御手段を採りながら、メッセージの処理に移行するなどの中庸の処理に移行することもできる。
【0045】
ここでは、パケットカウンタのゆらぎを吸収する構成及び方法について、パケットカウンタHSM−HOST(6_1)とHOST−HSM(6_2)の初期値を乱数に設定する、本実施形態1の一変形例として説明したが、パケットカウンタの初期値は、必ずしも乱数である必要はない。パケットカウンタが従来技術と同様に、1または0に初期化される場合にも、同じ構成及び方法を適用することができ、同様の効果を得ることができる。またここでは、ECU2を構成するHOST4とHSM3との間の通信を例にとって説明したが、任意の通信装置間の通信にも同様に適用することができる。例えば、CANで接続されるECU間の通信に適用することもできる。
【0046】
〔実施形態2〕<パケットカウンタのインクリメント値も乱数>
実施形態1について
図4を引用して説明した例では、パケットカウンタHSM−HOST(6_1)とHOST−HSM(6_2)のインクリメント値を1とする単純な増加であるため、攻撃者が次のカウンタ値を類推しやすくなる可能性がある。そのため、インクリメントする値をランダム(乱数)にする事で、攻撃者が次のカウンタ値を類推する事を困難にする事が有効である。
【0047】
図6は、パケットカウンタのインクリメント値を乱数にするためのフローの一例を示すフロー図である。
パケットカウンタHSM−HOST(6_1)とHOST−HSM(6_2)の初期値となる乱数R1(初期カウンター)を、例えばSHA256などの不可逆圧縮関数を用いて圧縮する。その際に得られた固定値の最後の1桁を抽出し、インクリメントする数値S1とする。このS1を乱数R1に加算して得られるR2(=R1+S1)を次のカウンタ値とする。さらに次のカウンタ値の生成は、このR2から例えばSHA256などの不可逆圧縮関数を用いて生成したS2を用いてインクリメントする。このような方式を用いる事により、カウンタの増加数の類推が困難となる。
【0048】
図7は、実施形態2における通信フローの一例を示すフロー図である。
図4と同様に、HOST4とHSM3によってそれぞれ実行される処理ステップと、送受信されるデータの内容が、上から下に向かう時系列に沿って示される。
【0049】
まず、HOST4とHSM3がそれぞれ起動される(システムON)。HSM3は、乱数R1を乱数発生回路(RNG)14_1で生成し、暗号IP(Crypt IP)13_1によって共通鍵CKを使って暗号化する。HSM3は、生成した乱数R1をパケットカウンタHSM−HOST(6_1)に初期値としてセットする。HSM3は、暗号化された乱数CK(R1)を、ネットワーク5_1を介してHOST4へ送付する。HOST4では、受信した、暗号化された乱数CK(R1)を、共通鍵CKを用いて復号する。その段階で、HOST4はパケットカウンタHOST−HSM(6_2)の初期値とし、1パケット分のインクリメントを行う。即ちHOST4は、パケットカウンタHOST−HSM(6_2)の値をR2=R1+S1に更新する。HOST4は、HSM3に対してリクエストメッセージ(Request msg)を生成するとともに、そのメッセージとパケットカウンタHOST−HSM(6_2)のカウンタ値であるR2からMAC値を生成して、メッセージに付加する。HOST4は、リクエストメッセージ(Request)とMAC値を含むパケットを生成して、HSM3に送付する。パケットを受信したHSM3では、それに含まれるMAC値からメッセージの正当性を検証(MAC値検証)した後、メッセージの処理を実行し、その結果(Result)をHOST4に送付する。このとき、パケットカウンタHSM−HOST(6_1)の値をR3=R2+S2に更新する。この処理間の通信メッセージは、共通鍵CKで暗号化される。
【0050】
図4に示されるフローとの違いは、インクリメント値が
図5を引用して上述したように、乱数とされている点である。これより、次のパケットに対応する、パケットカウンタHOST−HSM(6_2)とHSM−HOST(6_1)をカウント値の類推が困難となり、通信の秘匿性や安全性をさらに向上させることができる。
【0051】
本実施形態2では、ECU2を構成するHOST4とHSM3との間の通信を例にとって説明したが、任意の通信装置間の通信にも同様に適用することができる。例えば、CANで接続されるECU間の通信に適用することもできる。
【0052】
〔実施形態3〕<HOSTにも暗号機能を搭載>
以上の実施形態1及び2における、
図3に例示される構成例に基づいた説明では、HOST4とHSM3との間の通信は、あらかじめ共有していた共通鍵CKを用いて暗号化する方式を示した。これに対して、HOST4に暗号機能が搭載されている場合、或いは、HOST4のCPU11_2にて暗号の計算処理が可能な場合には、公開鍵暗号方式を用いて双方を認証した後に、共通鍵CKの交換を行う事が可能である。
【0053】
図8は、HOST4にも暗号機能が搭載される、ECU2の構成例を示すブロック図である。ECU2は、
図3に示されるECU−A(2_A)に対応する。HOST4は、
図3に示されるECU−A(2_A)に搭載されるHOST4と同様に、互いにバス17_2に接続される、CPU11_2と、CAN5_2とのインターフェース(I/F)12_3と、ネットワーク5_1とのインターフェース(I/F)12_2と、ROM15_2と、RAM16_2とを備え、さらに暗号IP(Crypt IP)13_2を備える点で異なる。暗号IP13_2は、
図3に示される暗号IP13_1と同様に、耐タンパ性を備える暗号通信に関わるデータ処理を実行する回路モジュールである。ネットワーク5_1及びHSM3は、
図3に示されるECU−A(2_A)に搭載される、ネットワーク5_1及びHSM3と同様である。HOST4に暗号IP13_2が追加されている点以外は、実施形態1での説明がそのまま適用できるので、重複した説明は控える。
【0055】
図9は、本実施形態3における通信フローの一例を示すフロー図である。HOST4とHSM3によってそれぞれ実行される処理ステップと、送受信されるデータの内容が、
図4、7と同様に、上から下に向かう時系列に沿って示される。
【0056】
まず、HOST4とHSM3がそれぞれ起動される(システムON)。HOST4は、暗号IP13_2によって公開鍵Ppと秘密鍵Psを生成し、生成した公開鍵PpをHSM3に送付する。HSM3は、乱数発生回路(RNG)14_1によって乱数RCを生成し、暗号IP13_1によって受信した公開鍵Ppを使って暗号化する。公開鍵Ppを使って暗号化された乱数RCを、「Pp(RC)」と表記する。HSM3は、暗号化された乱数Pp(RC)を、チャレンジデータとしてHOST4に送付する。HOST4は、受信したチャレンジデータを、暗号IP13_2によって秘密鍵Psを用いて復号し、レスポンスデータを生成し、HSM3に送付する。HSM3では期待値比較を行って受信したレスポンスデータを検証し、HOST4が真正な通信装置であることを確認する。
【0057】
その後、HSM3は、乱数R1を乱数発生回路(RNG)14_1で生成し、暗号IP13_1によって共通鍵CKを使って暗号化する。以降のフローは、
図7を引用して説明した実施形態2のフローと同様であるので、説明を省略する。以降のフローを、
図4を引用して説明した実施形態1のフローと同様とすることもできる。
【0058】
これにより、パケットカウンタの初期値とされる乱数値を不正に取得しようとする攻撃に対する耐性が向上し、HSM3とHOST4との間の通信経路(ネットワーク)の秘匿性や安全性を向上することができる。
【0059】
本実施形態3では、ECU2を構成するHOST4とHSM3との間の通信を例にとって説明したが、任意の通信装置間の通信にも同様に適用することができる。例えば、CANで接続されるECU間の通信に適用することもできる。
【0060】
上述のチャレンジで利用された乱数RCをHOST4とHSM3間の共通鍵CKとして用いる事により、鍵交換シーケンスを省略する事ができるが、別途、共通鍵CKを交換するシーケンスを追加しても良い。
【0061】
以上本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
【符号の説明】
【0062】
1 通信装置
2 電子制御ユニット(ECU:Electronic Control Unit)
3 ハードウェアセキュリティモジュール(HSM:Hardware Security Module)
4 ホスト(HOST)
5 ネットワーク
6 パケットカウンタ
10 通信システム
11 CPU(Central Processing Unit)
12 インターフェース(I/F)
13 暗号IP(Crypt IP)
14 乱数発生回路(RNG:Random Number Generator)
15 ROM(Read Only Memory)
16 RAM(Random Access Memory)
17 バス
20 パケット生成部
21 MAC生成部
22 分割MAC生成部
30 パケット分割部
31 MAC生成部
32 分割MAC生成部
33 比較・認証部