実施の形態の情報処理システムは、例えば、移動体の一例である自動車に搭載される車載ネットワークシステム(通信システム)に適用できる。以下では、車載ネットワークシステムに含まれる車載ゲートウェイ装置(以下、「GW」と略称する)を、実施の形態の情報処理装置として構成した例を説明する。また、以下では、車載ネットワークシステムに含まれる電子制御装置(ECU:Electronic Control Unit、以下、「ECU」と略称する)や各種センサや機器を、実施の形態のノードとして構成した例を説明する。
なお、実施形態の情報処理システムを適用可能な装置やシステムは以下の例に限られない。実施の形態の情報処理システムは、解析対象の通信データを通信する、様々なシステムに広く適用可能である。
(第1の実施の形態)
図1は、情報処理システム1の概要を示す模式図である。情報処理システム1は、例えば、車両2に搭載されている。
情報処理システム1は、GW10と、複数のノード20と、を備える。複数のノード20と、GW10と、は、ネットワークNを介して接続されている。図1に示す例では、情報処理システム1は、ネットワークNとして、複数のサブネットワーク(サブネットワークN1、サブネットワークN2)を含む。これらの複数のサブネットワークの各々には、ノード20が接続されている。また、これらの複数のサブネットワークは、GW10に接続されている。
また、GW10には、V2X通信モジュール50および通信モジュール52が接続されている。通信モジュール52は、外部ネットワーク26を介して外部装置と通信するためのモジュールである。V2X通信モジュール50は、通信インフラを介さずに、他の車両2との間で直接無線通信を行うためのモジュールである。直接無線通信には、例えば、車車間・路車間通信(V2X:Vehicle−to−Everything)を用いる。なお、V2X通信は、C2X(Car−to−X)通信と称される場合もある。
GW10は、情報処理装置の一例である。GW10は、本来のゲートウェイとしての機能に加えて、後述する各処理を実行する。本来のゲートウェイとしての機能は、例えば、情報処理システム1内のサブネットワーク(例えば、サブネットワークN1、サブネットワークN2)間の通信の中継およびフィルタリングや、情報処理システム1と車外の外部ネットワーク26との間の通信の中継およびフィルタリングや、他の車両2との直接の通信の中継およびフィルタリングなどである。
ノード20は、ノードの一例である。ノード20は、GW10を介して他のノード20との間で、通信データを通信する電子機器である。ノード20は、例えば、ECUや、各種センサや、アクチュエータなどである。ECUは、車両2における各種制御を行う電子機器である。図1には、ノード20の一例として、ECU20a、ECU20b、センサ20c、ECU20d、およびアクチュエータ20eを、示した。ノード20は、電子機器としての本来の機能に加えて、後述する各処理を実行する。
情報処理システム1の通信規格は限定されない。情報処理システム1の通信規格は、例えば、CAN(Controller Area Network)やFlexRay(登録商標)などである。
図2は、GW10のハードウェア構成例を示すブロック図である。GW10は、CPU(Central Processing Unit)11などの制御装置と、ROM(Read Only Memory)12やRAM(Random Access Memory)13などの記憶装置と、ネットワークI/F14と、通信I/F15と、通信I/F16と、メモリI/F17と、がバス19を介して接続された構成である。
ネットワークI/F14は、サブネットワークを介してノード20と通信するための通信インターフェースである。通信I/F15は、直接無線通信を行う通信インターフェースである。通信I/F16は、外部ネットワーク26を介して外部装置と通信する通信インターフェースである。メモリI/F17は、ST(ストレージ)18へアクセスするためのインターフェースである。ST18は、各種情報を記憶するメモリである。ST18は、例えば、ハードディスクや、不揮発性メモリを使用したSSD(Solid State Drive)などである。
GW10では、CPU11が、ROM12からプログラムをRAM13上に読み出して実行することにより、後述する各種の機能が実現される。
図3は、ノード20のハードウェア構成例を示すブロック図である。ノード20は、CPU21などの制御装置と、ROM22やRAM23などの記憶装置と、ネットワークI/F24と、メモリI/F17と、がバス29を介して接続された構成である。
ネットワークI/F24は、サブネットワークおよびGW10を介して他のノード20と通信するための通信インターフェースである。メモリI/F27は、ST28へアクセスするためのインターフェースである。ST28は、各種情報を記憶するメモリである。
ノード20では、CPU21が、ROM22からプログラムをRAM23上に読み出して実行することにより、後述する各種の機能が実現される。
図4は、本実施の形態の情報処理システム1に含まれるGW10およびノード20の各々の、機能的な構成例を示すブロック図である。なお、図4には、説明を簡略化するために、1台のノード20を示した。しかし、実際には、複数のノード20が、GW10を介して通信し、後述する処理を実行する。
―GW10―
まず、GW10について説明する。GW10は、制御部32と、記憶部34と、を備える。制御部32と記憶部34とは、データや信号を授受可能に接続されている。
記憶部34は、各種情報を記憶する。記憶部34は、記憶部および第1記憶部の一例である。記憶部34は、例えば、ST18(図2参照)により実現する。本実施の形態では、記憶部34は、共通鍵34Aと、ログDB34Bと、を記憶する(詳細後述)。
制御部32は、コンピュータシステムを集積回路として組み込んだものであり、コンピュータシステム上で動作するプログラム(ソフトウェア)に従って様々な制御を実行する。制御部32は、送受信部32Aと、検証部32Dと、GW処理部32Eと、生成部32Fと、記憶制御部32Gと、を備える。送受信部32Aは、受信部32Bと、送信部32Cと、を備える。
これらの各部(送受信部32A、受信部32B、送信部32C、検証部32D、GW処理部32E、生成部32F、記憶制御部32G)は、例えば、1または複数のプロセッサにより実現される。例えば上記各部は、CPU11などのプロセッサにプログラムを実行させること、すなわちソフトウェアにより実現してもよい。上記各部は、専用のIC(Integrated Circuit)などのプロセッサ、すなわちハードウェアにより実現してもよい。上記各部は、ソフトウェアおよびハードウェアを併用して実現してもよい。複数のプロセッサを用いる場合、各プロセッサは、各部のうち1つを実現してもよいし、各部のうち2以上を実現してもよい。
送受信部32Aは、ノード20や他の情報処理システム1や外部装置などと、各種のデータを送受信する。本実施の形態では、送受信部32Aは、ノード20との間で通信データを送受信する。送受信部32Aは、受信部32Bと、送信部32Cと、を含む。受信部32Bは、ノード20から通信データを受信する。送信部32Cは、受信した通信データを、該通信データの送信先のノード20へ送信する。
ここで、複数のノード20がGW10を介して通信データを送受信する際には、誤った制御が行われないようにするために、通信の正当性が保証される必要がある。このため、ノード20は、通信データに認証情報を付与し、送信する。詳細には、ノード20は、通信データと、認証情報と、通信データの送信先を示す送信先情報と、をGW10へ送信する。送信先情報は、送信先の他のノード20の識別情報である。
認証情報は、ノード20間の認証に用いる情報である。認証情報は、通信の正当性を保証するための情報であればよい。認証情報は、例えば、MAC(メッセージ認証コード:Message Authentication Code)、乱数、カウンタ値、または、デジタル署名である。
認証情報は、ノード20で生成される。なお、情報処理システム1で用いる認証情報の種類は、情報処理システム1に含まれるGW10およびノード20の間で、同じであるものとする。
このため、本実施の形態では、GW10の受信部32Bは、通信データ、認証情報、および送信先情報を、ノード20から受信する。また、送信部32Cは、通信データ、認証情報、および送信先情報を、ノード20へ送信する。
なお、GW10がノード20から受信する通信データが、他のノード20へ送信する対象のデータではない場合がある。例えば、GW10は、ノード20内の処理結果を示す情報を、通信データとして受信する場合がある。この場合、受信部32Bは、送信先情報を含まない(すなわち、通信データおよび認証情報)を、ノード20から受信することとなる。
検証部32Dは、認証情報を検証する。
認証情報がMACである場合、検証部32Dは、記憶部34から、記憶制御部32Gを介して共通鍵34Aを取得する。共通鍵34Aは、予め記憶部34へ記憶しておけばよい。なお、記憶部34は、情報処理システム1に含まれる全てのノード20との間で共通する1つの共通鍵34Aを予め記憶してもよいし、サブネットワークごとに共通する共通鍵34Aを予め記憶してもよいし、ノード20ごとに対応する共通鍵34Aを予め記憶してもよい。
そして、検証部32Dは、受信部32Bで受信した通信データと、共通鍵34Aと、を用いてMACを算出する。検証部32Dは、算出したMACと、該通信データと共に受信したMACとを比較し、一致する場合、検証正常と判断し、不一致の場合、検証異常と判断する。そして、検証部32Dは、検証正常または検証異常を示す検証結果を、記憶制御部32GおよびGW処理部32Eへ出力する。
認証情報が乱数である場合、GW10は、疑似乱数発生器を備えた構成とすればよい。そして、検証部32Dは、乱数値(更新前の乱数値)を記憶部34から読取る。そして、検証部32Dは、読取った乱数値を疑似乱数発生器へ入力し、乱数値を更新する。検証部32Dは、更新後の乱数値を更新前の乱数値として記憶部34へ記憶する。また、検証部32Dは、更新後の乱数値と、受信部32Bで通信データと共に受信した乱数値と、を比較する。検証部32Dは、一致する場合、検証正常と判断し、不一致の場合、検証異常と判断する。そして、検証部32Dは、検証正常または検証異常を示す検証結果を、記憶制御部32GおよびGW処理部32Eへ出力する。
認証情報がカウンタ値である場合、GW10は、カウンタ値を発生させるカウンタを備えた構成とすればよい。そして、検証部32Dは、カウンタ値(更新前のカウンタ値)を記憶部34から読取る。そして、検証部32Dは、読取ったカウンタ値をカウンタへ入力し、カウンタ値を更新する。検証部32Dは、更新後のカウンタ値を更新前のカウンタ値として記憶部34へ記憶する。また、検証部32Dは、更新後のカウンタ値と、受信部32Bで通信データと共に受信したカウンタ値と、を比較する。検証部32Dは、一致する場合、検証正常と判断し、不一致の場合、検証異常と判断する。そして、検証部32Dは、検証正常または検証異常を示す検証結果を、記憶制御部32GおよびGW処理部32Eへ出力する。
認証情報がデジタル署名である場合、検証部32Dは、公知の公開鍵暗号方式およびハッシュ関数を用いて、通信データが正当であるか否かを判別する。そして、検証部32Dは、通信データが正当であると判別した場合、検証正常と判断する。また、検証部32Dは、通信データが不当であると判別した場合、検証異常と判断する。そして、検証部32Dは、検証正常または検証異常を示す検証結果を、記憶制御部32GおよびGW処理部32Eへ出力する。
なお、検証部32Dは、終了時に、検証に用いた情報を、記憶部34へ記憶してもよい。そして、検証部32Dは、起動時に、検証に用いる情報を記憶部34から読取り、認証情報の検証に用いてもよい。検証に用いる情報とは、乱数値、カウンタ値、ハッシュ関数、公開鍵証明書、の少なくとも1つである。
起動時とは、GW10の装置各部に電力の供給が開始された時である。例えば、起動時は、車両2のアクセサリー電源がオン状態とされた時や、車両2のイグニッション電源がオン状態とされた時などである。
終了時とは、GW10の装置各部への電力供給のオフが指示された時である。例えば、終了時は、車両2のイグニッションスイッチのユーザによる操作などにより、イグニッション電源のオフが指示された時や、アクセサリー電源のオフが指示された時である。
なお、この場合、記憶部34として用いるST18は、不揮発性メモリであることが好ましい。例えば、記憶部34を複数種類の不揮発性メモリから構成すればよい。
次に、記憶制御部32Gについて説明する。記憶制御部32Gは、記憶部34への記憶およびデータの読出しを制御する。記憶制御部32Gは、記憶制御部および第1記憶制御部の一例である。
記憶制御部32Gは、ネットワークNを介して接続されたノード20の通信データと、関連情報と、を対応づけて記憶部34へ記憶する。
関連情報は、ノード20における、通信データの入出力に関する情報である。入出力に関する情報とは、通信データの因果関係を示す情報である。因果関係を示す情報とは、言い換えると、通信データの送信元のノード20や、通信データの送信先のノード20を特定可能な情報である。
関連情報は、例えば、通信データの識別情報である。すなわち、関連情報は、通信データを一意に識別可能な情報である。本実施の形態では、関連情報の一例である識別情報として、認証情報を用いる。すなわち、本実施の形態では、識別情報は、ノード20間の認証に用いる認証情報である。
ここで、上述したように、認証情報は、例えば、MAC、乱数、カウンタ値、または、デジタル署名である。このため、本実施の形態では、記憶制御部32Gは、通信データと、該通信データと共に受信した認証情報と、を対応づけて記憶部34へ記憶する。
具体的には、記憶制御部32Gは、ログDB34Bを更新することで、通信データと認証情報とを対応づけて記憶部34へ記憶する。図5は、ログDB34Bのデータ構成の一例を示す模式図である。ログDB34Bは、認証情報と、通信データと、を対応づけたデータベースである。なお、ログDB34Bのデータ構成は、データベースに限定されない。例えば、ログDB34Bのデータ構成は、テーブルなどであってもよい。
図4に戻り、説明を続ける。なお、記憶制御部32Gは、検証部32Dから受付けた検証結果が検証正常を示す場合に、該検証に用いた通信データおよび認証情報を、対応づけて記憶部34へ記憶してもよい。そして、記憶制御部32Gは、検証結果が検証異常を示す場合には、該検証に用いた通信データおよび認証情報の、記憶部34への記憶を省略してもよい。
なお、記憶制御部32Gは、終了時に、通信データと認証情報を次に記憶する領域を示すアドレス情報を、記憶部34に記憶することが好ましい。例えば、記憶制御部32Gは、起動時に、記憶部34に記憶されたログDB34Bにおける、次に通信データと認証情報を記憶する領域を示すアドレス情報を、記憶部34に記憶することが好ましい。
そして、記憶制御部32Gは、起動時に、記憶部34からアドレス情報を読取り、記憶部34における該アドレス情報によって示される領域に、通信データと認証情報を記憶すればよい。
なお、終了時、起動時、の定義は、上記と同様である。また、この場合についても、記憶部34として用いるST18は、不揮発性メモリであることが好ましい。例えば、記憶部34を複数種類の不揮発性メモリから構成すればよい。
GW処理部32Eは、本来のGWとしての機能を実行する。具体的には、GW処理部32Eは、情報処理システム1内のサブネットワーク(例えば、サブネットワークN1、サブネットワークN2)間の通信の中継およびフィルタリングや、情報処理システム1と車外の外部ネットワーク26との間の通信の中継およびフィルタリングや、他の車両2との直接の通信の中継およびフィルタリングなどを行う。
本実施の形態では、GW処理部32Eは、検証部32Dによって検証正常と判断された場合に、本来のGW10としての機能を実行する。本来のGW10としての機能とは、上述したように、例えば、情報処理システム1内のサブネットワーク(例えば、サブネットワークN1、サブネットワークN2)間の通信の中継や、情報処理システム1と車外の外部ネットワーク26との間の通信の中継や、他の車両2との直接の通信の中継などである。
生成部32Fは、ノード20へ送信する通信データに付与する認証情報を生成する。例えば、生成部32Fは、受信部32Bで受信した通信データの送信元のノード20と、該通信データの送信先のノード20と、のドメイン(サブネットワーク)が異なる場合に、認証情報を生成する。また、認証情報がMACであり、送信元のノード20と送信先のノード20との間で異なる共通鍵34Aを用いる場合、生成部32Fは、認証情報を生成する。
例えば、認証情報がMACである場合、生成部32Fは、記憶部34から、記憶制御部32Gを介して共通鍵34Aを取得する。そして、生成部32Fは、ノード20への送信対象の通信データと、共通鍵34Aと、を用いてMACを算出する。これによって、生成部32Fは、MACを認証情報として生成する。
認証情報が乱数である場合、GW10は、疑似乱数発生器を備えた構成とすればよい。そして、生成部32Fは、乱数値(更新前の乱数値)を記憶部34から読取る。そして、生成部32Fは、読取った乱数値を疑似乱数発生器へ入力し、乱数値を更新する。生成部32Fは、更新後の乱数値を更新前の乱数値として記憶部34へ記憶する。また、生成部32Fは、更新後の乱数値を、認証情報として生成する。
認証情報がカウンタ値である場合、GW10は、カウンタ値を発生させるカウンタを備えた構成とすればよい。そして、生成部32Fは、カウンタ値(更新前のカウンタ値)を記憶部34から読取る。そして、生成部32Fは、読取ったカウンタ値をカウンタへ入力し、カウンタ値を更新する。生成部32Fは、更新後のカウンタ値を更新前のカウンタ値として記憶部34へ記憶する。また、生成部32Fは、更新後のカウンタ値を、認証情報として生成する。
認証情報がデジタル署名である場合、生成部32Fは、公知の公開鍵暗号方式やハッシュ関数を用いて、デジタル署名を生成する。これによって、生成部32Fは、デジタル署名を認証情報として生成する。
なお、GW10が、受信部32Bで受信した通信データおよび認証情報を、そのまま該通信データの送信先のノード20へ送信する場合には、生成部32Fは、認証情報の生成を省略してもよい。
送信部32Cは、通信データ、該通信データに対する認証情報、および、送信先情報を、該送信先情報によって識別されるノード20へ送信する。
記憶制御部32Gは、送信部32Cからノード20へ送信された通信データと、該通信データに付与された認証情報と、を対応づけて記憶部34へ記憶する。すなわち、記憶制御部32Gは、通信データと、認証情報と、を対応づけて、ログDB34Bへ登録する。
―ノード20―
次に、ノード20について説明する。ノード20は、制御部42と、記憶部44と、を備える。制御部42と記憶部44とは、データや信号を授受可能に接続されている。
記憶部44は、各種情報を記憶する。記憶部44は、第2記憶部の一例である。記憶部44は、ST28(図3参照)により実現する。本実施の形態では、記憶部44は、共通鍵44Aと、ログDB44Bと、を記憶する(詳細後述)。
制御部42は、コンピュータシステムを集積回路として組み込んだものであり、コンピュータシステム上で動作するプログラム(ソフトウェア)に従って様々な制御を実行する。制御部42は、送受信部42Aと、検証部42Dと、ノード処理部42Eと、生成部42Fと、記憶制御部42Gと、を備える。送受信部42Aは、受信部42Bと、送信部42Cと、を備える。
これらの各部(送受信部42A、受信部42B、送信部42C、検証部42D、ノード処理部42E、生成部42F、記憶制御部42G)は、例えば、1または複数のプロセッサにより実現される。例えば上記各部は、CPU21などのプロセッサにプログラムを実行させること、すなわちソフトウェアにより実現してもよい。上記各部は、専用のICなどのプロセッサ、すなわちハードウェアにより実現してもよい。上記各部は、ソフトウェアおよびハードウェアを併用して実現してもよい。複数のプロセッサを用いる場合、各プロセッサは、各部のうち1つを実現してもよいし、各部のうち2以上を実現してもよい。
送受信部42Aは、GW10と各種データを送受信する。本実施の形態では、送受信部42Aは、GW10を介して、他のノード20と通信データを送受信する。受信部42Bは、GW10から通信データを受信する。上述したように、本実施の形態では、受信部42Bは、GW10から、通信データと、認証情報と、送信先情報と、を受信する。送信部42Cは、GW10へ通信データを送信する。上述したように、本実施の形態では、送信部42Cは、GW10へ、通信データと、認証情報と、送信先情報と、を送信する。
検証部42Dは、認証情報を検証する。
認証情報がMACである場合、検証部42Dは、記憶部44から、記憶制御部42Gを介して共通鍵34Aを取得する。共通鍵34Aは、予め記憶部44へ記憶しておけばよい。共通鍵44Aは、共通鍵34Aと同様である。すなわち、情報処理システム1に含まれる全てのノード20との間で共通する1つの共通鍵を設ける場合には、共通鍵34Aと共通鍵44Aは、同じ鍵である。
検証部42Dは、受信部42Bで受信した通信データと、共通鍵44Aと、を用いてMACを算出する。検証部42Dは、算出したMACと、該通信データと共に受信したMACとを比較し、一致する場合、検証正常と判断し、不一致の場合、検証異常と判断する。そして、検証部42Dは、検証正常または検証異常を示す検証結果を、記憶制御部42Gおよびノード処理部42Eへ出力する。
認証情報が乱数である場合、ノード20は、疑似乱数発生器を備えた構成とすればよい。そして、ノード20は、乱数値(更新前の乱数値)を記憶部44から読取る。そして、検証部42Dは、読取った乱数値を疑似乱数発生器へ入力し、乱数値を更新する。検証部42Dは、更新後の乱数値を更新前の乱数値として記憶部44へ記憶する。また、検証部42Dは、更新後の乱数値と、受信部42Bで通信データと共に受信した乱数値と、を比較する。検証部42Dは、一致する場合、検証正常と判断し、不一致の場合、検証異常と判断する。そして、検証部42Dは、検証正常または検証異常を示す検証結果を、記憶制御部42Gおよびノード処理部42Eへ出力する。
認証情報がカウンタ値である場合、ノード20は、カウンタ値を発生させるカウンタを備えた構成とすればよい。そして、検証部42Dは、カウンタ値(更新前のカウンタ値)を記憶部44から読取る。そして、検証部42Dは、読取ったカウンタ値をカウンタへ入力し、カウンタ値を更新する。検証部42Dは、更新後のカウンタ値を更新前のカウンタ値として記憶部44へ記憶する。また、検証部42Dは、更新後のカウンタ値と、受信部42Bで通信データと共に受信したカウンタ値と、を比較する。検証部42Dは、一致する場合、検証正常と判断し、不一致の場合、検証異常と判断する。そして、検証部42Dは、検証正常または検証異常を示す検証結果を、記憶制御部42Gおよびノード処理部42Eへ出力する。
認証情報がデジタル署名である場合、検証部42Dは、公知の公開鍵暗号方式およびハッシュ関数を用いて、通信データが正当であるか否かを判別する。そして、検証部42Dは、通信データが正当であると判別した場合、検証正常と判断する。また、検証部42Dは、通信データが不当であると判別した場合、検証異常と判断する。そして、検証部42Dは、検証正常または検証異常を示す検証結果を、記憶制御部42Gおよびノード処理部42Eへ出力する。
ノード処理部42Eは、本来のノード20としての機能を実行する。具体的には、ノード20は、予め定められた処理を行う。予め定められた処理は、例えば、予め定めた対象の検知や予め定めた対象の駆動や、各種演算処理などである。
本実施の形態では、ノード処理部42Eは、検証部42Dから受付けた検証結果が検証正常を示す場合に、本来のノード20としての機能を実行する。また、ノード処理部42Eは、検証部42Dから受付けた検証結果が検証異常を示す場合には、本来のノード20としての機能の実行を行わない。
生成部42Fは、GW10へ送信する通信データに付与する認証情報を生成する。例えば、生成部42Fは、ノード処理部42Eの処理によってGW10やGW10を介して他のノード20へ送信する送信対象の通信データが発生した場合、該通信データの認証情報を生成する。
例えば、認証情報がMACである場合、生成部42Fは、記憶部44から、記憶制御部42Gを介して共通鍵44Aを取得する。そして、生成部42Fは、送信する対象の通信データと、共通鍵34Aと、を用いてMACを算出する。これによって、生成部42Fは、MACを認証情報として生成する。
認証情報が乱数である場合、ノード20は、疑似乱数発生器を備えた構成とすればよい。そして、生成部42Fは、乱数値(更新前の乱数値)を記憶部44から読取る。そして、生成部42Fは、読取った乱数値を疑似乱数発生器へ入力し、乱数値を更新する。生成部42Fは、更新後の乱数値を更新前の乱数値として記憶部44へ記憶する。また、生成部42Fは、更新後の乱数値を、認証情報として生成する。
認証情報がカウンタ値である場合、ノード20は、カウンタ値を発生させるカウンタを備えた構成とすればよい。そして、生成部42Fは、カウンタ値(更新前のカウンタ値)を記憶部44から読取る。そして、生成部42Fは、読取ったカウンタ値をカウンタへ入力し、カウンタ値を更新する。生成部42Fは、更新後のカウンタ値を更新前のカウンタ値として記憶部44へ記憶する。また、生成部42Fは、更新後のカウンタ値を、認証情報として生成する。
認証情報がデジタル署名である場合、生成部42Fは、公知の公開鍵暗号方式およびハッシュ関数を用いて、デジタル署名を生成する。これによって、生成部42Fは、デジタル署名を認証情報として生成する。
送信部42Cは、通信データ、該通信データに対する認証情報、および、該通信データの送信先情報を、GW10へ送信する。
次に、記憶制御部42Gについて説明する。記憶制御部42Gは、第2記憶制御部の一例である。記憶制御部42Gは、記憶部44へのデータの記憶およびデータの読出しを制御する。
本実施の形態では、記憶制御部42Gは、関連情報を、記憶部44へ記憶する。上述したように、本実施の形態では、関連情報が、認証情報である場合を一例として説明する。そして、本実施の形態では、記憶制御部42Gは、ログDB44Bに認証情報を登録することで、該認証情報を記憶部44へ記憶する。
このため、ノード20の記憶部44には、通信データは記憶されず、認証情報のみが、関連情報として記憶されることとなる。このため、ノード20の記憶部44(ST28)のデータ容量の削減を図ることができる。
図6は、ログDB44Bのデータ構成の一例を示す模式図である。図6(A)と図6(B)は、互いに異なるノード20(例えば、ECU20a、ECU20b)の各々に記憶された、ログDB44Bの一例を示す模式図である。
ログDB44Bは、認証情報を格納するためのデータベースである。なお、ログDB44Bのデータ形式は、データベースに限定されない。
本実施の形態では、ログDB44Bは、ラベルと、認証情報と、を対応づけたものである。ラベルは、対応する認証情報の付与された通信データが、該ログDB44Bを記憶しているノード20で受信したデータであるか、該ノード20から他のノード20へ出力されたデータであるか、を示すラベルである。図6に示す例では、ラベル“入力”は、対応する通信データが、該ログDB44Bを記憶しているノード20で受信したデータであることを示す。また、ラベル“出力”は、対応する通信データが、該ログDB44Bを記憶しているノード20から他のノード20やGW10へ送信されたデータであることを示す。
本実施の形態では、記憶制御部42Gは、受信部42BがGW10から通信データを受信した場合、該通信データと共に受信した認証情報に、ラベル“入力”を付与して、ログDB44Bへ登録する。また、記憶制御部42Gは、送信部42CがGW10へ通信データを送信した場合、該通信データと共に送信した認証情報に、ラベル“出力”を付与して、ログDB44Bへ登録する。
このため、複数のノード20の各々の記憶部44には、それぞれ、ノード20で受信した通信データであることを示すラベル“入力”、または、ノード20から送信された通信データであることを示すラベル“出力”に対応づけて、認証情報が記憶される(図6(A)、図6(B)参照)。
なお、記憶制御部42Gは、通信データと該通信データに付与された認証情報の内、データサイズの小さい方を、記憶部44へ記憶することが好ましい。すなわち、記憶部44には、関連情報のみ、または、関連情報と通信データの内のデータサイズの小さい方のみが、記憶されることとなる。このため、ノード20の記憶部44(ST28)のデータ容量の削減を、更に図ることができる。
具体的には、この場合、記憶制御部42Gは、受信部42Bで受信した通信データと認証情報の内、データサイズの小さい方と、ラベル“入力”と、を対応づけてログDB44Bへ登録する。同様に、記憶制御部42Gは、送信部42Cから送信された通信データと認証情報の内、データサイズの小さい方と、ラベル“出力”と、を対応づけてログDB44Bへ登録する。
なお、通信データと該通信データに付与された認証情報のデータサイズが同一である場合には、記憶制御部42Gは、認証情報を記憶部44へ記憶すればよい。
なお、記憶制御部42Gは、認証情報(または、通信データおよび認証情報の内のデータサイズの小さい方)を、ラベルに対応づけて記憶部44へ記憶する形態に限定されない。すなわち、ログDB44Bは、ラベルを含まず、認証情報、または、通信データおよび認証情報の内のデータサイズの小さい方のみを、登録したものであってもよい。
ログDB44Bにラベルが含まれない場合、GW10のログDB34Bを、認証情報と、通信データと、該通信データの送信先情報と、を対応づけたものとすればよい。
なお、ノード20では、GW10を介さずに処理されるデータが発生する場合がある。GW10を介さずに処理されるデータとは、例えば、GW10を介さずに他のノード20と直接通信するデータや、ノード処理部42Eの処理によって発生したデータなどである。
記憶制御部42Gは、このような、GW10を介さずに処理されるデータを、更に、ログDB44Bへ記憶してもよい。
次に、GW10で実行する情報処理の手順の一例を説明する。図7は、本実施の形態のGW10で実行する情報処理の手順の一例を示す、フローチャートである。
まず、GW10の受信部32Bが、通信データおよび認証情報をノード20から受信したか否かを判断する(ステップS100)。上述したように、詳細には、受信部32Bは、通信データ、認証情報、および送信先情報を、ノード20から受信したか否かを判断する。受信部32Bが、ステップS100で否定判断すると(ステップS100:No)、本ルーチンを終了する。一方、ステップS100で肯定判断すると(ステップS100:Yes)、ステップS102へ進む。
ステップS102では、検証部32Dが、ステップS100で受信した認証情報を検証する(ステップS102)。次に、検証部32Dは、ステップS102の検証結果が、検証正常を示すか否かを判断する(ステップS104)。ステップS104で肯定判断すると(ステップS104:Yes)、ステップS106へ進む。
ステップS106では、記憶制御部32Gが、ステップS100で受信した通信データと認証情報とを対応づけて、記憶部34へ記憶する(ステップS106)。
次に、GW処理部32Eが、GW10の本来のGWとしての機能を実行する(ステップS108)。そして、ステップS112へ進む。
一方、ステップS104で検証結果が検証異常を示すと判断した場合(ステップS104:No)、ステップS110へ進む。ステップS110では、記憶制御部32Gが、ステップS100で受信した通信データと認証情報とを対応づけて、記憶部34へ記憶する(ステップS110)。そして、ステップS112へ進む。なお、ステップS110の処理は、省略してもよい。
次に、生成部32Fが、ノード20へ送信する通信データに付与する認証情報を生成するか否かを判断する(ステップS112)。例えば、生成部32Fは、ステップS100で受信した通信データの送信元のノード20と、送信先情報によって示される送信先のノード20と、のドメイン(サブネットワーク)が異なるか否かを判別することで、ステップS112の判断を行う。また、例えば、生成部32Fは、認証情報がMACであり、送信元のノード20と送信先のノード20との間で異なる共通鍵34Aを用いるか否かを判別することで、ステップS112の判断を行う。
ステップS112で肯定判断すると(ステップS112:Yes)、ステップS114へ進む。ステップS114では、生成部32Fが、送信対象の通信データに付与する認証情報を生成する(ステップS114)。送信対象の通信データは、例えば、ステップS100で受信した通信データである。
次に、送信部32Cが、送信対象の通信データ、該通信データに対してステップS114で生成された認証情報、および、送信先情報を、該送信先情報によって識別されるノード20へ送信する(ステップS116)。ステップS116で送信する送信先情報は、例えば、ステップS100で受信した送信先情報に一致する。
次に、記憶制御部32GはステップS116で送信した通信データと、該通信データに付与された認証情報と、を対応づけて記憶部34へ記憶する(ステップS118)。そして、本ルーチンを終了する。
一方、上記ステップS112で否定判断すると(ステップS112:No)、ステップS120へ進む。ステップS120では、送信部42Cは、上記ステップS100で受信した通信データ、認証情報、および送信先情報を、該送信先情報によって識別されるノード20へ送信する(ステップS120)。そして、本ルーチンを終了する。
なお、GW10が実行する情報処理の手順は、図7に示す順に限定されない。
例えば、GW10は、図7に示す各ステップに示される処理の少なくとも一部を、並列して実行してもよい。また、GW10は、ステップS106およびステップS110の記憶処理を、ステップS100の処理より後で、且つ、ステップS102またはステップS104の処理より前に実行してもよい。また、GW10は、ステップS116の送信処理を、ステップS118の記憶処理の後に実行してもよい。また、GW10は、ステップS116の送信処理と、ステップS118の記憶処理と、を並列に実行してもよい。
また、GW10は、ステップS102の検証処理、ステップS104の判断処理、および、ステップS114の生成処理を実行しない形態であってもよい。また、ステップS100で受信した、通信データ、認証情報、および送信先情報と、ステップS120で送信する、通信データ、認証情報、および送信先情報と、が同一の場合がある。この場合、GW10は、ステップS106およびステップS110の処理を省略し、ステップS120の処理と同じタイミングまたは該処理の前または後に、ステップS106またはステップS110の処理を実行してもよい。
次に、ノード20で実行する情報処理の手順の一例を説明する。図8は、本実施の形態のノード20で実行する情報処理の手順の一例を示す、フローチャートである。
まず、ノード20の受信部42Bが、通信データおよび認証情報をGW10から受信したか否かを判断する(ステップS200)。上述したように、詳細には、受信部42Bは、通信データ、認証情報、および送信先情報を、GW10から受信したか否かを判断する。受信部42Bが、ステップS200で否定判断すると(ステップS200:No)、本ルーチンを終了する。一方、ステップS200で肯定判断すると(ステップS200:Yes)、ステップS202へ進む。
ステップS202では、検証部42Dが、ステップS200で受信した認証情報を検証する(ステップS202)。次に、検証部42Dは、ステップS202の検証結果が、検証正常を示すか否かを判断する(ステップS204)。ステップS204で肯定判断すると(ステップS204:Yes)、ステップS206へ進む。
ステップS206では、記憶制御部42Gが、ステップS200で受信した通信データと認証情報の内、データサイズの小さい方を、記憶部44へ記憶する(ステップS206)。本実施の形態では、ステップS206では、記憶制御部42Gは、ラベル「入力」と、通信データと認証情報の内、データサイズの小さい方と、を対応付けて、記憶部44へ記憶する。
次に、ノード処理部42Eが、本来のノード20としての機能を実行する(ステップS208)。そして、ステップS212へ進む。
一方、ステップS204で検証結果が検証異常を示すと判断した場合(ステップS204:No)、ステップS210へ進む。ステップS210では、記憶制御部42Gが、ステップS200で受信した通信データと認証情報の内、データサイズの小さい方を、記憶部44へ記憶する(ステップS210)。そして、ステップS212へ進む。なお、ステップS210の処理は、省略してもよい。
次に、生成部42Fが、送信対象の通信データが発生したか否かを判断する(ステップS212)。ステップS212で否定判断すると(ステップS212:No)、本ルーチンを終了する。一方、ステップS212で肯定判断すると(ステップS212:Yes)、ステップS214へ進む。ステップS214では、生成部42Fが、送信対象の通信データに付与する認証情報を生成する(ステップS214)。送信対象の通信データは、例えば、ノード処理部42EによるステップS208の処理によって発生したデータである。
次に、送信部42Cが、送信対象の通信データ、該通信データに対してステップS214で生成された認証情報、および、送信先情報を、GW10へ送信する(ステップS216)。
次に、記憶制御部42GはステップS216で送信した通信データと、該通信データに付与された認証情報と、の内、データサイズの小さい方を、記憶部44へ記憶する(ステップS218)。本実施の形態では、ステップS218では、記憶制御部42Gは、ラベル「出力」と、通信データと認証情報の内、データサイズの小さい方と、を対応付けて、記憶部44へ記憶する。そして、本ルーチンを終了する。
なお、ノード20が実行する情報処理の手順は、図8に示す順に限定されない。
例えば、ノード20は、図8に示す各ステップに示され処理の少なくとも一部を、並列して実行してもよい。また、ノード20は、ステップS206およびステップS210の記憶処理を、ステップS200の処理より後で、且つ、ステップS202またはステップS204の処理より前に実行してもよい。また、ノード20は、ステップS216の送信処理を、ステップS218の記憶処理の後に実行してもよい。また、ノード20は、ステップS216の送信処理と、ステップS218の記憶処理と、を並列に実行してもよい。
以上説明したように、本実施の形態のGW10(情報処理装置)は、記憶制御部32Gを備える。記憶制御部32Gは、ネットワークNを介して接続されたノード20の通信データと、通信データの通信時にノード20間の認証に用いる認証情報と、を対応づけて記憶部34に記憶する。
このため、情報処理システム1におけるログの解析時には、記憶部34に記憶された通信データに対応する認証情報を解析することで、該通信データの、ノード20間やノード20内における因果関係の推定を行うことができる。
従って、本実施の形態のGW10(情報処理装置)は、ログ解析に有用なデータを提供することができる。
また、認証情報を用いることによって、ノード20側は、通信データの関連情報として用いる識別情報をGW10に対して問い合わせることで取得することなく、認証情報を関連情報として用いることができる。また、認証情報は、GW10とノード20とが共に用いる情報であって、秘密情報ではない。また、認証情報は、重複して同じ値が生成される確率が十分に小さいことから、通信データの識別情報として好適に用いられる。
このため、上記効果に加えて、GW10は、通信の複雑化を招くことなく、ログ解析に有用なデータを提供することができる。
また、本実施の形態の情報処理システム1では、ノード20が、記憶制御部42G(第2記憶制御部)を備える。記憶制御部42Gは、関連情報、または、通信データおよび該通信データに対応する関連情報の内のデータサイズの小さい方を、記憶部44(第2記憶部)に記憶する。
このため、本実施の形態の情報処理システム1は、上記効果に加えて、ノード20の記憶容量の削減を図ることができる。
例えば、関連情報としての認証情報がMACである場合、32バイトであるが、実際には、4〜8バイト程度にトランケートされた値が用いられる。認証情報(MAC)が8バイトであると仮定すると、通信データ全体を記憶する場合に比べて、ノード20のST28(記憶部44)の容量を1/8にすることができると考えられる。このため、本実施の形態の情報処理システム1は、上記効果に加えて、ノード20の記憶容量の削減を図ることができる。
また、本実施の形態の情報処理システム1では、GW10の記憶制御部32Gが、ノード20の通信データと、ノード20における通信データの入出力に関する関連情報と、を対応づけて記憶部34に記憶する。また、ノード20の記憶制御部42Gが、関連情報、または、通信データおよび該通信データに対応する関連情報の内のデータサイズの小さい方を、記憶部44(第2記憶部)に記憶する。さらに、記憶制御部42Gは、ノード20で発生した、GW10を介さずに処理されるデータを、更に記憶部44(ログDB44B)へ記憶することができる。
このため、本実施の形態の情報処理システム1では、上記効果に加えて、ノード20間およびノード20内の各々における因果関係の解析に有用なデータを提供することができる。
(第2の実施の形態)
上記実施の形態では、通信データの関連情報として、通信データの識別情報や認証情報を用いる場合を、一例として説明した。本実施の形態では、通信データの関連情報として、通信データの送信元情報および送信先情報を用いる場合を説明する。
なお、本実施の形態では、第1の実施の形態と同様の構成および機能部については、同一の符号を付与し、詳細な説明を省略する場合がある。
図9は、情報処理システム1Aにおける、GW30およびノード40の機能的な構成例を示すブロック図である。情報処理システム1Aは、例えば、車両2に搭載されている(図1参照)。
情報処理システム1Aは、GW30と、複数のノード40と、を備える。複数のノード40と、GW30と、は、ネットワークNを介して接続されている。情報処理システム1Aは、GW10およびノード20に代えて、GW30およびノード40を備えた点以外は、第1の実施の形態の情報処理システム1と同様である。
GW30は、情報処理装置の一例である。GW30は、本来のゲートウェイとしての機能に加えて、後述する各処理を実行する。本来のゲートウェイとしての機能は、第1の実施の形態と同様である。ノード40は、ノードの一例である。ノード40は、GW30を介して他のノード40との間で、通信データを通信する電子機器である。ノード40は、例えば、ECUや、各種センサや、アクチュエータなどである。図1には、ノード40の一例として、ECU40a、ECU40b、センサ40c、ECU40d、およびアクチュエータ40eを、示した。ノード40は、電子機器としての本来の機能に加えて、後述する各処理を実行する。電子機器としての本来の機能は、第1の実施の形態と同様である。
なお、GW30およびノード40のハードウェア構成は、第1の実施の形態のGW10およびノード20と同様である(図2、図3参照)。
図9は、本実施の形態の情報処理システム1Aに含まれるGW30およびノード40の各々の、機能的な構成例を示すブロック図である。なお、図9には、説明を簡略化するために、1台のノード40を示した。しかし、実際には、複数のノード40が、GW30を介して通信し、後述する処理を実行する。
―GW30―
まず、GW30について説明する。GW30は、制御部36と、記憶部38と、を備える。制御部36と記憶部38とは、データや信号を授受可能に接続されている。
記憶部38は、各種情報を記憶する。記憶部38は、記憶部および第1記憶部の一例である。記憶部38は、ST18(図2参照)により実現する。本実施の形態では、記憶部38は、共通鍵34Aと、ログDB38Bと、を記憶する(詳細後述)。
制御部36は、コンピュータシステムを集積回路として組み込んだものであり、コンピュータシステム上で動作するプログラム(ソフトウェア)に従って様々な制御を実行する。制御部36は、送受信部32Aと、検証部32Dと、GW処理部32Eと、生成部32Fと、記憶制御部36Gと、を備える。送受信部32Aは、受信部32Bと、送信部32Cと、を備える。受信部32Bは、受信部の一例である。
これらの各部は、例えば、1または複数のプロセッサにより実現される。例えば上記各部は、CPU11などのプロセッサにプログラムを実行させること、すなわちソフトウェアにより実現してもよい。上記各部は、専用のICなどのプロセッサ、すなわちハードウェアにより実現してもよい。上記各部は、ソフトウェアおよびハードウェアを併用して実現してもよい。複数のプロセッサを用いる場合、各プロセッサは、各部のうち1つを実現してもよいし、各部のうち2以上を実現してもよい。
送受信部32A、受信部32B、送信部32C、検証部32D、GW処理部32E、および生成部32Fは、第1の実施の形態のGW10と同様である。すなわち、制御部36は、記憶制御部32Gに代えて記憶制御部36Gを備え、導出部36Kを更に備えた点以外は、第1の実施の形態のGW10の制御部32と同様である。
受信部32Bは、第1の実施の形態と同様に、通信データ、認証情報、および送信先情報を、ノード40から受信する。
導出部36Kは、受信部32Bで受信した認証情報に基づいて、該認証情報と共に受信した通信データの送信元情報を導出する。ここで、GW30とノード40とが、CAN(Controller Area Network)やFlexRay(登録商標)などを用いて通信を行う場合、GW30やノード40との間で通信されるデータには、送信元情報が含まれない。このため、導出部36Kは、認証情報を用いて、送信元情報を導出する。
例えば、導出部36Kは、検証部32Dによる認証情報の検証結果を用いて、送信元情報を導出する。
詳細には、導出部36Kは、検証部32Dによる検証結果が検証正常を示す場合、検証識別情報を、送信元情報として導出する。検証識別情報とは、検証部32Dが検証に用いた情報を識別するための情報である。
具体的には、認証情報がMAC(メッセージ認証コード)である場合、検証識別情報は該MACの生成と検証に用いた共通鍵のインデックス情報である。
また、認証情報が乱数である場合、検証識別情報は、該乱数を発生させた疑似乱数発生器のインデックス情報である。
また、認証情報がカウント値である場合、検証識別情報は、該カウント値を発生させたカウンタのインデックス情報である。
また、認証情報がデジタル署名である場合、検証識別情報は、該デジタル署名の生成に用いた秘密鍵に対応する公開鍵証明書または検証に用いる公開鍵証明書である。
一方、導出部36Kは、検証結果が検証異常を示す場合、検証異常を示す検証異常情報を、送信元情報として導出する。
なお、導出部36Kは、認証情報がMACであり、情報処理システム1A内の全てのノード40で同一の共通鍵44Aを共有している場合には、検証結果を、送信元情報として導出してもよい。
そして、導出部36Kは、導出した送信元情報を、記憶制御部36Gへ出力する。
記憶制御部36Gは、記憶部38への記憶およびデータの読出しを制御する。記憶制御部36Gは、記憶制御部および第1記憶制御部の一例である。
記憶制御部36Gは、ネットワークNを介して接続されたノード40の通信データと、関連情報と、を対応づけて記憶部38へ記憶する。本実施の形態では、記憶制御部36Gは、関連情報として、通信データの送信先情報および送信元情報を用いる。
記憶制御部36Gは、受信部32Bで受信した通信データと、該通信データと共に受信した送信先情報及び導出部36Kで導出した送信元情報、と、を対応づけて記憶部38へ記憶する。
具体的には、記憶制御部36Gは、ログDB38Bを更新することで、通信データと関連情報とを対応づけて記憶部38へ記憶する。図10は、ログDB38Bのデータ構成の一例を示す模式図である。ログDB38Bは、関連情報と、通信データと、を対応づけたデータベースである。関連情報は、送信元情報と送信先情報から構成される。なお、ログDB38Bのデータ構成は、データベースに限定されない。例えば、ログDB38Bのデータ構成は、テーブルなどであってもよい。
図9に戻り、説明を続ける。生成部32Fは、第1の実施の形態と同様に、ノード40へ送信する通信データに付与する認証情報を生成する。
生成部32Fが認証情報を生成した場合には、導出部36Kは、該認証情報の生成に用いた情報を、検証識別情報として生成し、記憶制御部36Gへ出力する。この場合、記憶制御部36Gは、該検証識別情報を送信元情報として用いる。そして、記憶制御部36Gは、該送信元情報と、該通信データの送信先情報と、から構成される関連情報と、該通信データと、を対応付けて記憶部38へ記憶すればよい。
―ノード40―
次に、ノード40について説明する。ノード40は、制御部46と、記憶部48と、を備える。制御部46と記憶部48とは、データや信号を授受可能に接続されている。
記憶部48は、各種情報を記憶する。記憶部48は、ST28(図3参照)により実現する。本実施の形態では、記憶部48は、共通鍵44Aを記憶するが、ログDBを記憶しない。すなわち、本実施の形態では、ノード40は、関連情報を、記憶部48に記憶しない。
制御部46は、コンピュータシステムを集積回路として組み込んだものであり、コンピュータシステム上で動作するプログラム(ソフトウェア)に従って様々な制御を実行する。制御部46は、送受信部42Aと、検証部42Dと、ノード処理部42Eと、生成部42Fと、記憶制御部46Gと、を備える。送受信部42Aは、受信部42Bと、送信部42Cと、を備える。
これらの各部(送受信部42A、受信部42B、送信部42C、検証部42D、ノード処理部42E、生成部42F、記憶制御部46G)は、例えば、1または複数のプロセッサにより実現される。例えば上記各部は、CPU21などのプロセッサにプログラムを実行させること、すなわちソフトウェアにより実現してもよい。上記各部は、専用のICなどのプロセッサ、すなわちハードウェアにより実現してもよい。上記各部は、ソフトウェアおよびハードウェアを併用して実現してもよい。複数のプロセッサを用いる場合、各プロセッサは、各部のうち1つを実現してもよいし、各部のうち2以上を実現してもよい。
送受信部42A、受信部42B、送信部42C、検証部42D、ノード処理部42E、および生成部42Fは、第1の実施の形態のノード20と同様である。本実施の形態では、第1の実施の形態のノード20における記憶制御部42Gに代えて、記憶制御部46Gを備える。
記憶制御部46Gは、関連情報や、関連情報および通信データの内のデータサイズの小さい方の、記憶部48への記憶制御を行わない点以外は、第1の実施の形態の記憶制御部42Gと同様である。
次に、GW30で実行する情報処理の手順の一例を説明する。図11は、本実施の形態のGW30で実行する情報処理の手順の一例を示す、フローチャートである。
まず、GW30の受信部32Bが、通信データ、認証情報、および送信先情報を、ノード40から受信したか否かを判断する(ステップS300)。受信部32Bが、ステップS300で否定判断すると(ステップS300:No)、本ルーチンを終了する。一方、ステップS300で肯定判断すると(ステップS300:Yes)、ステップS302へ進む。
ステップS302では、検証部32Dが、ステップS300で受信した認証情報を検証する(ステップS302)。次に、検証部32Dは、ステップS302の検証結果が、検証正常を示すか否かを判断する(ステップS304)。ステップS304で肯定判断すると(ステップS304:Yes)、ステップS306へ進む。
ステップS306では、導出部36Kが、ステップS302で検証に用いた情報を識別するための検証識別情報を、送信元情報として導出する(ステップS306)。
次に、記憶制御部36Gが、ステップS300で受信した通信データと、関連情報(ステップS300で受信した送信先情報、および、ステップS306で導出した送信元情報)と、を対応づけて、記憶部38へ記憶する(ステップS308)。
次に、GW処理部32Eが、GW30の本来のGWとしての機能を実行する(ステップS310)。そして、ステップS316へ進む。
一方、ステップS304で検証結果が検証異常を示すと判断した場合(ステップS304:No)、ステップS312へ進む。ステップS312では、導出部36Kが、検証異常を示す検証異常情報を、送信元情報として導出する(ステップS312)。
次に、記憶制御部36Gが、ステップS300で受信した通信データと、関連情報(ステップS300で受信した送信先情報、および、ステップS312で導出した送信元情報)と、を対応づけて、記憶部38へ記憶する(ステップS314)。そして、ステップS316へ進む。
ステップS316では、生成部32Fが、ノード40へ送信する通信データに付与する認証情報を生成するか否かを判断する(ステップS316)。ステップS316の判断は、第1の実施の形態のステップS112と同様である。
ステップS316で肯定判断すると(ステップS316:Yes)、ステップS318へ進む。ステップS318では、生成部32Fが、送信対象の通信データに付与する認証情報を生成する(ステップS318)。送信対象の通信データは、例えば、ステップS300で受信した通信データである。
次に、送信部32Cが、送信対象の通信データ、該通信データに対してステップS318で生成された認証情報、および、送信先情報を、該送信先情報によって識別されるノード40へ送信する(ステップS320)。ステップS320で送信する送信先情報は、例えば、ステップS300で受信した送信先情報に一致する。
次に、導出部36Kが、ステップS318で認証情報の生成に用いた情報を識別するための検証識別情報を、送信元情報として導出する(ステップS322)。
次に、記憶制御部36Gが、ステップS300で受信した通信データと、関連情報(ステップS300で受信した送信先情報、および、ステップS322で導出した送信元情報)と、を対応づけて、記憶部38へ記憶する(ステップS324)。そして、本ルーチンを終了する。
一方、上記ステップS316で否定判断すると(ステップS316:No)、ステップS326へ進む。ステップS326では、送信部32Cが、ステップS300で受信した、通信データ、認証情報、および送信先情報を、該送信先情報によって識別されるノード40へ送信する(ステップS326)。そして、本ルーチンを終了する。
なお、GW30が実行する情報処理の手順は、図11に示す順に限定されない。
例えば、GW30は、図11に示す各ステップに示される処理の少なくとも一部を、並列して実行してもよい。また、GW30は、ステップS320の送信処理を、ステップS324の記憶処理の後に実行してもよい。また、GW30は、ステップS320の送信処理と、ステップS324の記憶処理と、を並列に実行してもよい。
また、ステップS300で受信した、通信データ、認証情報、および送信先情報と、ステップS326で送信する、通信データ、認証情報、および送信先情報と、が同一の場合がある。この場合、GW30は、ステップS308およびステップS314の処理を省略し、ステップS326の処理と同じタイミングまたは該処理の前または後に、ステップS308またはステップS314の処理を実行してもよい。
次に、ノード40で実行する情報処理の手順の一例を説明する。図12は、本実施の形態のノード40で実行する情報処理の手順の一例を示す、フローチャートである。
まず、ノード40の受信部42Bが、通信データおよび認証情報をGW30から受信したか否かを判断する(ステップS400)。上述したように、詳細には、受信部42Bは、通信データ、認証情報、および送信先情報を、GW30から受信したか否かを判断する。受信部42Bが、ステップS400で否定判断すると(ステップS400:No)、本ルーチンを終了する。一方、ステップS400で肯定判断すると(ステップS400:Yes)、ステップS402へ進む。
ステップS402では、検証部42Dが、ステップS400で受信した認証情報を検証する(ステップS402)。次に、検証部42Dは、ステップS402の検証結果が、検証正常を示すか否かを判断する(ステップS404)。ステップS404で肯定判断すると(ステップS404:Yes)、ステップS406へ進む。
ステップS406では、ノード処理部42Eが、本来のノード40としての機能を実行する(ステップS406)。そして、ステップS408へ進む。ステップS404で否定判断した場合も(ステップS404:No)、ステップS408へ進む。
ステップS408では、生成部42Fが、送信対象の通信データが発生したか否かを判断する(ステップS408)。ステップS408で否定判断すると(ステップS408:No)、本ルーチンを終了する。一方、ステップS408で肯定判断すると(ステップS408:Yes)、ステップS410へ進む。ステップS410では、生成部42Fが、送信対象の通信データに付与する認証情報を生成する(ステップS410)。
次に、送信部42Cが、送信対象の通信データ、該通信データに対してステップS410で生成された認証情報、および、送信先情報を、GW30へ送信する(ステップS412)。そして、本ルーチンを終了する。
以上説明したように、本実施の形態のGW30(情報処理装置)では、関連情報として、通信データの送信元情報および送信先情報を用いる。このため、GW30の記憶部38(ログDB38B)には、通信データの各々に対して、該通信データの送信元情報と送信先情報が記憶されることとなる。このため、情報処理システム1Aにおけるログの解析時には、GW30の記憶部38に記憶された通信データに対応する関連情報を解析することで、該通信データの、ノード40間における因果関係の推定を行うことができる。
従って、本実施の形態のGW30(情報処理装置)は、ログ解析に有用なデータを提供することができる。
また、本実施の形態の情報処理システム1Aでは、ノード40には、関連情報の記憶を行わない。このため、情報処理システム1Aは、第1の実施の形態に比べて、更に、ノード40の記憶容量の削減を図ることができる。
また、本実施の形態の情報処理システム1Aでは、送信元情報としての検証識別情報は、MACの生成と検証に用いた共通鍵のインデックス情報、乱数を発生させた疑似乱数発生器のインデックス情報、カウント値を発生させたカウンタのインデックス情報、または、デジタル署名の生成に用いた公開鍵証明書である。
送信元情報が共通鍵44Aのインデックス情報である場合、ノード40の共通鍵44Aの管理は車両製造者が行うと仮定する。そして、全てのノード40とGW30で同じ共通鍵44A(共通鍵44Aと共通鍵34Aも同じ鍵)を共有していると仮定する。この場合、解析時には、送信元情報である共通鍵44Aのインデックス情報を解析することで、対応する通信データが、該共有鍵44Aを用いる車両製造者の管理下にあるノード40に関するものであると、解析することが可能となる。
また、ノード40の共通鍵44Aの管理は車両製造者が行うと仮定する。そして、情報処理システム1Aのドメインごと(サブネットワークごと)に、同じ共通鍵44Aを共有していると仮定する。この場合、解析時には、送信元情報である共通鍵44Aのインデックス情報を解析することで、対応する通信データが、該共有鍵44Aを用いる車両製造者の管理下にある、特定のドメイン内のノード40に関するものであると、解析することが可能となる。
また、ノード40の共通鍵44Aの管理は車両製造者が行うと仮定する。そして、情報処理システム1Aにおける、ノード40のペアごとに、同じ共通鍵44Aを共有していると仮定する。この場合、解析時には、送信元情報である共通鍵44Aのインデックス情報を解析することで、対応する通信データが、該共有鍵44Aを用いる車両製造者の管理下にある、特定のペアのノード40に関するものであると、解析することが可能となる。
また、MACを検証識別情報として用いる場合についても、同様の効果を得ることができる。
<補足説明>
なお、GW10、ノード20、GW30、およびノード40で実行される上記各処理を実行するためのプログラムは、HDD(ハードディスクドライブ)に記憶されていてもよい。また、上記実施の形態のGW10、ノード20、GW30、およびノード40で実行される上記各処理を実行するためのプログラムは、ROM12、ROM22に予め組み込まれて提供されていてもよい。
また、上記実施の形態のGW10、ノード20、GW30、およびノード40で実行される上記処理を実行するためのプログラムは、インストール可能な形式または実行可能な形式のファイルでCD−ROM、CD−R、メモリカード、DVD(Digital Versatile Disk)、フレキシブルディスク(FD)等のコンピュータで読み取り可能な記憶媒体に記憶されてコンピュータプログラムプロダクトとして提供されるようにしてもよい。また、上記実施の形態のGW10、ノード20、GW30、およびノード40で実行される上記処理を実行するためのプログラムを、インターネットなどのネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するようにしてもよい。また、上記実施の形態のGW10、ノード20、GW30、およびノード40で実行される上記処理を実行するためのプログラムを、インターネットなどのネットワーク経由で提供または配布するようにしてもよい。
以上、本発明の実施の形態を説明したが、これらの実施の形態は例として提示したものであり、発明の範囲を限定することは意図していない。これらの新規な実施の形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これらの実施の形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。