(57)【要約】【課題】ネットワークに接続された各情報処理装置において受信したメッセージが不正な攻撃によるものか否かを正しく判別する。【解決手段】情報処理装置１において、共有情報検証部１１０は、受信メッセージに含まれる共有情報と共有情報生成部１０１により生成された共有情報とを比較し、その比較結果に基づいて、受信メッセージに含まれる共有情報の正当性を検証する。セキュリティ用符号検証部１１１は、受信メッセージに含まれるセキュリティ用符号と、セキュリティ用符号生成部１０５により生成されたセキュリティ用符号とを比較し、その比較結果に基づいて、受信メッセージに含まれる共有情報の正誤を検証する。処理判断制御部９は、共有情報検証部１１０による検証結果と、セキュリティ用符号検証部１１１による検証結果とに基づいて、受信メッセージの正常性を判断する。【選択図】図２
2016096419.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークを介して接続された他の情報処理装置から送信されたメッセージを受信する情報処理装置であって、
前記他の情報処理装置と共有される共有情報を生成する共有情報生成部と、
前記メッセージを受信する通信部と、
前記メッセージに含まれる共有情報と、前記共有情報生成部により生成された共有情報とを比較し、その比較結果に基づいて、前記メッセージに含まれる共有情報の正当性を検証する共有情報検証部と、
前記共有情報に基づくセキュリティ用符号を生成するセキュリティ用符号生成部と、
前記メッセージに含まれるセキュリティ用符号と、前記セキュリティ用符号生成部により生成されたセキュリティ用符号とを比較し、その比較結果に基づいて、前記メッセージに含まれる共有情報の正誤を検証するセキュリティ用符号検証部と、
前記共有情報検証部による検証結果と、前記セキュリティ用符号検証部による検証結果とに基づいて、前記メッセージの正常性を判断する処理判断制御部と、を備える情報処理装置。
【請求項２】
請求項１に記載の情報処理装置において、
前記セキュリティ用符号生成部は、前記共有情報の誤りを検知するための誤り検知符号を前記セキュリティ用符号として生成し、
前記セキュリティ用符号検証部は、前記メッセージに含まれる誤り検知符号と、前記セキュリティ用符号生成部により生成された誤り検知符号とを比較し、その比較結果に基づいて、前記メッセージに含まれる共有情報の正誤を検証する情報処理装置。
【請求項３】
請求項１に記載の情報処理装置において、
前記セキュリティ用符号生成部は、前記共有情報の誤りを検知および訂正するための誤り訂正符号を前記セキュリティ用符号として生成し、
前記セキュリティ用符号検証部は、前記メッセージに含まれる誤り訂正符号と、前記セキュリティ用符号生成部により生成された誤り訂正符号とを比較し、その比較結果に基づいて、前記メッセージに含まれる共有情報の正誤を検証する情報処理装置。
【請求項４】
請求項３に記載の情報処理装置において、
前記セキュリティ用符号検証部は、前記メッセージに含まれる共有情報に誤りがあることを検知した場合に、その共有情報を前記誤り訂正符号に基づいて訂正し、
前記共有情報検証部は、前記セキュリティ用符号検証部により訂正された共有情報と、前記共有情報生成部により生成された共有情報とを比較し、その比較結果に基づいて、前記メッセージに含まれる共有情報の正当性を再検証する情報処理装置。
【請求項５】
請求項２乃至４のいずれか一項に記載の情報処理装置において、
前記セキュリティ用符号生成部は、前記誤り検知符号または前記誤り訂正符号に加えて、前記メッセージに含まれるデータおよび共有情報の改ざんを検知するための改ざん検知符号を前記セキュリティ用符号としてさらに生成し、
前記セキュリティ用符号検証部は、前記メッセージに含まれる改ざん検知符号と、前記セキュリティ用符号生成部により生成された改ざん検知符号とを比較し、その比較結果に基づいて、前記メッセージの正当性をさらに検証する情報処理装置。
【請求項６】
請求項２または３に記載の情報処理装置において、
前記処理判断制御部は、
前記共有情報検証部により前記メッセージに含まれる共有情報が正当であると判断された場合には、前記メッセージが正常であると判断し、
前記共有情報検証部により前記メッセージに含まれる共有情報が正当ではないと判断され、かつ前記セキュリティ用符号検証部により前記メッセージに含まれる共有情報に誤りがないと判断された場合には、前記メッセージが不正な攻撃によるものであると判断する情報処理装置。
【請求項７】
請求項６に記載の情報処理装置において、
前記処理判断制御部により前記メッセージの正常性を判断するために用いられるカウンタ値を記憶する通信情報記憶部をさらに備え、
前記処理判断制御部は、
前記共有情報検証部により前記メッセージに含まれる共有情報が正当ではないと判断され、かつ前記セキュリティ用符号検証部により前記メッセージに含まれる共有情報に誤りがあると判断された場合には、前記カウンタ値を更新し、
前記カウンタ値と所定の閾値とを比較し、その比較結果に基づいて、前記メッセージが不正な攻撃によるものであるか否かを判断する情報処理装置。
【請求項８】
請求項５に記載の情報処理装置において、
前記処理判断制御部は、
前記共有情報検証部により前記メッセージに含まれる共有情報が正当であると判断され、かつ前記セキュリティ用符号検証部により前記メッセージが正当であると判断された場合には、前記メッセージが正常であると判断し、
前記共有情報検証部により前記メッセージに含まれる共有情報が正当ではないと判断され、かつ前記セキュリティ用符号検証部により前記メッセージに含まれる共有情報に誤りがないと判断された場合には、前記メッセージが不正な攻撃によるものであると判断する情報処理装置。
【請求項９】
請求項８に記載の情報処理装置において、
前記処理判断制御部により前記メッセージの正常性を判断するために用いられるカウンタ値を記憶する通信情報記憶部をさらに備え、
前記処理判断制御部は、
前記共有情報検証部により前記メッセージに含まれる共有情報が正当であると判断され、かつ前記セキュリティ用符号検証部により前記メッセージが正当ではないと判断された場合、または、前記共有情報検証部により前記メッセージに含まれる共有情報が正当ではないと判断され、かつ前記セキュリティ用符号検証部により前記メッセージに含まれる共有情報に誤りがあると判断された場合には、前記カウンタ値を更新し、
前記カウンタ値と所定の閾値とを比較し、その比較結果に基づいて、前記メッセージが不正な攻撃によるものであるか否かを判断する情報処理装置。
【請求項１０】
請求項３または４に記載の情報処理装置において、
前記セキュリティ用符号生成部は、前記ネットワークの通信品質に基づいて、前記誤り訂正符号の訂正範囲を設定する情報処理装置。
【請求項１１】
請求項１乃至４のいずれか一項に記載の情報処理装置において、
前記他の情報処理装置が前記メッセージを複数に分割して送信した場合に、前記通信部により受信された複数の分割メッセージを元のメッセージ長まで蓄積することにより、分割前の前記メッセージを再現するメッセージ解析部をさらに備える情報処理装置。
【請求項１２】
ネットワークを介して接続された他の情報処理装置に送信メッセージを送信すると共に、前記他の情報処理装置から送信された受信メッセージを受信する情報処理装置であって、
前記他の情報処理装置と共有される共有情報を生成する共有情報生成部と、
前記共有情報に基づくセキュリティ用符号を生成するセキュリティ用符号生成部と、
前記共有情報および前記セキュリティ用符号を含む前記送信メッセージを生成するメッセージ生成部と、
前記メッセージ生成部により生成された前記送信メッセージを送信すると共に、前記受信メッセージを受信する通信部と、
前記受信メッセージに含まれる共有情報と、前記共有情報生成部により生成された共有情報とを比較し、その比較結果に基づいて、前記受信メッセージに含まれる共有情報の正当性を検証する共有情報検証部と、
前記受信メッセージに含まれるセキュリティ用符号と、前記セキュリティ用符号生成部により生成されたセキュリティ用符号とを比較し、その比較結果に基づいて、前記受信メッセージに含まれる共有情報の正誤を検証するセキュリティ用符号検証部と、
前記共有情報検証部による検証結果と、前記セキュリティ用符号検証部による検証結果とに基づいて、前記受信メッセージの正常性を判断する処理判断制御部と、を備える情報処理装置。
【請求項１３】
請求項１２に記載の情報処理装置において、
前記通信部は、前記送信メッセージを分割して送信可能であり、
前記送信メッセージを分割して送信する場合の各分割送信メッセージに含まれる共有情報とセキュリティ用符号をそれぞれ合計した情報量のいずれか少なくとも一つは、前記送信メッセージを分割しないで送信する場合の前記送信メッセージに含まれる共有情報の情報量またはセキュリティ用符号の情報量よりも少ない情報処理装置。
【請求項１４】
ネットワークを介して接続された２つの情報処理装置間で送受信されるメッセージの認証方法であって、
前記メッセージを受信する情報処理装置により、
前記２つの情報処理装置間で共有される共有情報を生成する第１の処理ステップと、
前記メッセージを受信する第２の処理ステップと、
前記第２の処理ステップで受信したメッセージに含まれる共有情報と、前記第１の処理ステップで生成した共有情報とを比較し、その比較結果に基づいて、前記メッセージに含まれる共有情報の正当性を検証する第３の処理ステップと、
前記共有情報に基づくセキュリティ用符号を生成する第４の処理ステップと、
前記第２の処理ステップで受信したメッセージに含まれるセキュリティ用符号と、前記第４の処理ステップで生成したセキュリティ用符号とを比較し、その比較結果に基づいて、前記メッセージに含まれる共有情報の正誤を検証する第５の処理ステップと、
前記第３の処理ステップでの検証結果と、前記第５の処理ステップでの検証結果とに基づいて、前記メッセージの正常性を判断する第６の処理ステップと、を実行するメッセージ認証方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワークに接続されて利用される情報処理装置と、ネットワークに接続された複数の情報処理装置間のメッセージ認証方法に関する。
【背景技術】
【０００２】
現在では、自動車の車載ネットワークにおける代表的な標準プロトコルとして、ＣＡＮ（Ｃｏｎｔｒｏｌｌｅｒ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）が普及している。さらに今後は、ＣＡＮを拡張したＣＡＮ  ＦＤ（Ｆｌｅｘｉｂｌｅ  Ｄａｔａ−Ｒａｔｅ）も普及してくることが予想されている。
【０００３】
このような車載ネットワークでは、侵入者により通信に対する不正な攻撃が行われる危険性がある。車両には一般的に、ＯＢＤ２（Ｏｎ−Ｂｏａｒｄ−Ｄｉａｇｎｏｓｔｉｃｓ  ２）ポートと呼ばれる、車載ネットワークに直接繋がっている診断用のインタフェースが設けられている。たとえば、このＯＢＤ２ポートに侵入者が不正な機器を接続し、これを用いて、車載ネットワークに対するリプレイ攻撃などが行なわれる危険性がある。ここで、リプレイ攻撃とは、通信路上を流れるメッセージを侵入者が盗聴して事前に取得し、取得したメッセージを再送することで、車載ネットワークの各機器に不正な動作を引き起こす攻撃である。他にも、たとえば車外のシステムと連携して動作する情報処理装置をマルウェアに感染させることで、感染した当該装置が偽のメッセージを車載ネットワークに送信するようにして、このメッセージを受信した制御装置に誤動作を引き起こすといった攻撃なども考えられる。
【０００４】
上記のような不正攻撃の脅威に対する有効な対策としては、車載ネットワークの各情報処理装置間を流れるメッセージに対して、改ざん検知符号としてＭＡＣ（Ｍｅｓｓａｇｅ  Ａｕｔｈｅｎｔｉｃａｔｉｏｎ  Ｃｏｄｅ）を用いたメッセージ認証を実施することが知られている（特許文献１）。この特許文献１に開示された技術では、各情報処理装置において、メッセージＩＤごとにメッセージが送信された回数をカウントする。そして、メッセージを送信する側の情報処理装置は、データ、送信回数、メッセージＩＤからＭＡＣを生成し、メッセージとは別に送信する。一方、メッセージを受信する側の情報処理装置は、受信したメッセージにおける、データ、送信回数、メッセージＩＤを基にＭＡＣを算出し、これを送信側の情報処理装置から別途受信したＭＡＣと比較する。その結果、これらのＭＡＣ同士が異なっている場合は、受信したメッセージが不正なものと認識し、以降では、そのメッセージＩＤを用いたメッセージを受け付けなくする。これにより、リプレイ攻撃やデータの改ざんによる情報処理装置の誤作動を防止する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１３−９８７１９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
特許文献１に記載の技術において用いられるＭＡＣには、一般にノイズに弱いという特性がある。そのため、メッセージにノイズが混ざることでＭＡＣの値が変化した場合は、不正なメッセージでないにも関わらず、これを受信した情報処理装置において不正なメッセージとして認識されることになる。その結果、当該情報処理装置は、不正な攻撃が行われたと誤って判断してしまい、本来は不正な攻撃を受けたときにのみ実施すべき上記のような対策を、ノイズが混ざったときも実施することになる。これにより、不正な攻撃を受けていないにも関わらず、たとえば自動車の運転を妨げるような動作が受信側の情報処理装置において行われ、実用性に乏しい運用をユーザが強いられてしまうおそれがある。
【０００７】
本発明は、以上の問題に鑑みなされたものである。本発明の主な目的は、ネットワークに接続された各情報処理装置において受信したメッセージが不正な攻撃によるものか否かを正しく判別することにある。
【課題を解決するための手段】
【０００８】
本発明による情報処理装置は、ネットワークを介して接続された他の情報処理装置から送信されたメッセージを受信するものであって、前記他の情報処理装置と共有される共有情報を生成する共有情報生成部と、前記メッセージを受信する通信部と、前記メッセージに含まれる共有情報と、前記共有情報生成部により生成された共有情報とを比較し、その比較結果に基づいて、前記メッセージに含まれる共有情報の正当性を検証する共有情報検証部と、前記共有情報に基づくセキュリティ用符号を生成するセキュリティ用符号生成部と、前記メッセージに含まれるセキュリティ用符号と、前記セキュリティ用符号生成部により生成されたセキュリティ用符号とを比較し、その比較結果に基づいて、前記メッセージに含まれる共有情報の正誤を検証するセキュリティ用符号検証部と、前記共有情報検証部による検証結果と、前記セキュリティ用符号検証部による検証結果とに基づいて、前記メッセージの正常性を判断する処理判断制御部と、を備える。
本発明によるメッセージ認証方法は、ネットワークを介して接続された２つの情報処理装置間で送受信されるメッセージの認証方法であって、前記メッセージを受信する情報処理装置により、前記２つの情報処理装置間で共有される共有情報を生成する第１の処理ステップと、前記メッセージを受信する第２の処理ステップと、前記第２の処理ステップで受信したメッセージに含まれる共有情報と、前記第１の処理ステップで生成した共有情報とを比較し、その比較結果に基づいて、前記メッセージに含まれる共有情報の正当性を検証する第３の処理ステップと、前記共有情報に基づくセキュリティ用符号を生成する第４の処理ステップと、前記第２の処理ステップで受信したメッセージに含まれるセキュリティ用符号と、前記第４の処理ステップで生成したセキュリティ用符号とを比較し、その比較結果に基づいて、前記メッセージに含まれる共有情報の正誤を検証する第５の処理ステップと、前記第３の処理ステップでの検証結果と、前記第５の処理ステップでの検証結果とに基づいて、前記メッセージの正常性を判断する第６の処理ステップと、を実行する。
【発明の効果】
【０００９】
本発明によれば、ネットワークに接続された各情報処理装置において受信したメッセージが不正な攻撃によるものか否かを正しく判別することができる。
【図面の簡単な説明】
【００１０】
【図１】情報処理システムの構成例を示す図
【図２】情報処理装置の構成例を示す図
【図３】ＣＰＵが実行する処理のフローチャート
【図４】共有情報生成処理のフローチャート
【図５】共有情報のテーブル構成の例を示す図
【図６】第１の実施形態によるメッセージ送信処理のフローチャート
【図７】送信メッセージのデータ構造の例を示す図
【図８】メッセージ受信処理のフローチャート
【図９】第１の実施形態によるメッセージ種別判断処理のフローチャート
【図１０】第２の実施形態によるメッセージ送信処理のフローチャート
【図１１】送信メッセージのデータ構造の例を示す図
【図１２】第２の実施形態によるメッセージ種別判断処理のフローチャート
【図１３】送信メッセージを４つのメッセージに分割した例を示す図
【図１４】通信路カウンタ値の同期をとるためのメッセージのデータ構造の例を示す図
【発明を実施するための形態】
【００１１】
以下、本発明の実施形態について、図面を参照しながら詳細に説明する。
【００１２】
−第１の実施形態−
以下では、本発明の一実施形態に係る情報処理装置およびメッセージ認証方法について説明する。本実施形態では、ネットワークを介して接続された複数の情報処理装置において、各情報処理装置間で共有される共有情報と、セキュリティ用符号である誤り検知符号とを用いて、各情報処理装置間で送受信されるメッセージの認証を行う例を説明する。
【００１３】
図１は、本発明の一実施形態における情報処理システムの構成例を示す図である。図１に示す情報処理システムは、複数の情報処理装置１がネットワーク２を介して互いに接続されることにより構成されている。たとえば、車両に搭載されている様々な種類のＥＣＵ（Ｅｌｅｃｔｒｏｎｉｃ  Ｃｏｎｔｒｏｌ  Ｕｎｉｔ）を、車両内のネットワークであるＣＡＮ（Ｃｏｎｔｒｏｌｌｅｒ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）やＣＡＮ  ＦＤを介して互いに接続することで、図１の情報処理システムが構成される。この場合、各ＥＣＵが情報処理装置１に対応し、ＣＡＮやＣＡＮ  ＦＤがネットワーク２に対応する。ただし、本発明の適用範囲はこれに限定されるものではなく、様々な種類の情報処理システムにおいて本発明を適用可能である。
【００１４】
図２は、情報処理装置１の構成例を示す図である。情報処理装置１は、図２に示すように、ＣＰＵ１０、メモリ２０および通信部３０がバス４０を介して互いに接続されることにより構成されている。
【００１５】
ＣＰＵ１０は、共有情報生成部１０１、共有情報管理部１０２、鍵管理部１０３、メッセージ生成部１０４、セキュリティ用符号生成部１０５、メッセージ解析部１０８、処理判断制御部１０９、共有情報検証部１１０およびセキュリティ用符号検証部１１１を機能的に有している。ＣＰＵ１０は、所定のプログラムを実行することにより、メモリ２０や通信部３０を制御して、これらの各機能部として動作することができる。なお、これらの各機能部については、後で詳しく説明する。
【００１６】
ＣＰＵ１０で実行されるプログラムは、予めメモリ２０に格納されていてもよい。または、不図示の入出力インタフェースに接続された記憶媒体や不図示の通信媒体を介して、ＣＰＵ１０の動作に必要なプログラムを取得してもよい。この場合、取得したプログラムはメモリ２０に記憶しておくこともできる。
【００１７】
メモリ２０は、上記のプログラムや、ＣＰＵ１０の動作に必要な各種のデータを記憶するための部分である。メモリ２０には、たとえば一次記憶装置や二次記憶装置などを含むことができる。ＣＰＵ１０とメモリ２０の間でのデータ通信は、バス４０を介して行われる。メモリ２０は、暗号情報記憶部２０６と、通信情報記憶部２０７とを機能的に有する。なお、これらの各機能部については、後で詳しく説明する。
【００１８】
通信部３０は、図１のネットワーク２と接続されており、ＣＰＵ１０の制御に応じて動作する。通信部３０は、ネットワーク２を介して、他の情報処理装置１へのメッセージの送信や、他の情報処理装置１から送信されたメッセージの受信を行う。通信部３０により他の情報処理装置１へと送信されるメッセージは、バス４０を介してＣＰＵ１０から通信部３０に出力される。また、通信部３０により他の情報処理装置１から受信したメッセージは、バス４０を介して通信部３０からＣＰＵ１０に出力される。
【００１９】
次に、ＣＰＵ１０とメモリ２０がそれぞれ有する各機能部について説明する。
【００２０】
共有情報生成部１０１は、各情報処理装置１間で共有される共有情報を生成する。共有情報生成部１０１により生成された共有情報は、暗号情報記憶部２０６に記憶される。
【００２１】
共有情報管理部１０２は、共有情報の管理を行う。たとえば、共有情報生成部１０１が共有情報を生成するために必要な情報を取得したり、メッセージ数やメッセージ種類に応じて共有情報を更新したりする。
【００２２】
鍵管理部１０３は、暗号化された共有情報やセキュリティ用符号を生成するために用いられる鍵データの管理を行う。
【００２３】
メッセージ生成部１０４は、情報処理装置１から他の情報処理装置１への送信メッセージを生成する。メッセージ生成部１０４により生成された送信メッセージは、通信部３０に出力され、通信部３０から他の情報処理装置１へ送信される。
【００２４】
セキュリティ用符号生成部１０５は、他の情報処理装置１との間で送受信されるメッセージの認証に用いるためのセキュリティ用符号を生成する。なお、本実施形態では、セキュリティ用符号生成部１０５は、セキュリティ用符号として誤り検知符号を生成するものとする。
【００２５】
メッセージ解析部１０８は、通信部３０で受信された他の情報処理装置１からの受信メッセージのデータ構造を解析し、その受信メッセージに含まれるデータ、共有情報、セキュリティ用符号などを抽出する。
【００２６】
共有情報検証部１１０は、メッセージ解析部１０８で抽出された受信メッセージの共有情報と、共有情報生成部１０１で生成された共有情報とを比較し、その比較結果に基づいて、受信メッセージに含まれる共有情報の正当性を検証する。
【００２７】
セキュリティ用符号検証部１１１は、メッセージ解析部１０８で抽出された受信メッセージのセキュリティ用符号と、セキュリティ用符号生成部１０５生成されたセキュリティ用符号とを比較し、その比較結果に基づいて、受信メッセージに含まれる共有情報の正当性を検証する。
【００２８】
暗号情報記憶部２０６は、共有情報およびセキュリティ用符号の暗号化に関する暗号情報を記憶する。たとえば、共有情報生成部１０１やセキュリティ用符号生成部１０５が共有情報やセキュリティ用符号を暗号化する際に用いられる初期値や前述の鍵データなどが、暗号情報として暗号情報記憶部２０６に記憶される。
【００２９】
通信情報記憶部２０７は、他の情報処理装置１との間でメッセージを送受信するために必要な通信情報を記憶する。たとえば、メッセージのカウンタ値や、メッセージ種別の判断に用いられる処理判断カウンタ値などが、通信情報として通信情報記憶部２０７に記憶される。
【００３０】
なお、以上説明した機能部のうち、メッセージ生成部１０４やセキュリティ用符号生成部１０５を除いて情報処理装置１を構成してもよい。すなわち、ＣＰＵ１０は、共有情報生成部１０１、共有情報管理部１０２、鍵管理部１０３、メッセージ解析部１０８、処理判断制御部１０９、共有情報検証部１１０およびセキュリティ用符号検証部１１１のみを有する構成としてもよい。この場合、情報処理装置１は、メッセージ送信機能を有しないメッセージ認証向けの情報処理装置として利用することができる。
【００３１】
図３は、ＣＰＵ１０が実行する処理のフローチャートである。ＣＰＵ１０は、所定の周期ごとに、図３のフローチャートに従った処理を繰り返し実行する。
【００３２】
ステップＳ１０では、ＣＰＵ１０は、共有情報を生成するか否かを判定する。共有情報は、たとえば車両のエンジン起動時や、他の情報処理装置１との間で通信を開始する直前または通信の合間など、所定のタイミングで生成される。こうした共有情報の生成タイミングに該当する場合、ＣＰＵ１０は、共有情報を生成すると判定してステップＳ２０に進み、そうでない場合はステップＳ３０に進む。
【００３３】
ステップＳ２０では、ＣＰＵ１０は、共有情報生成部１０１および共有情報管理部１０２により、共有情報生成処理を実行する。この共有情報生成処理の具体的な内容は、後で図４のフローチャートを参照して説明する。
【００３４】
ステップＳ３０では、ＣＰＵ１０は、他の情報処理装置１への送信メッセージの有無を判定する。送信メッセージが存在する場合はステップＳ４０に進み、存在しない場合はステップＳ５０に進む。
【００３５】
ステップＳ４０では、ＣＰＵ１０は、メッセージ生成部１０４およびセキュリティ用符号生成部１０５により、メッセージ送信処理を実行する。このメッセージ送信処理の具体的な内容は、後で図６のフローチャートを参照して説明する。
【００３６】
ステップＳ５０では、ＣＰＵ１０は、他の情報処理装置１からの受信メッセージの有無を判定する。受信メッセージが存在する場合はステップＳ６０に進み、存在しない場合は図３のフローチャートの処理を終了する。
【００３７】
ステップＳ６０では、ＣＰＵ１０は、メッセージ解析部１０８、処理判断制御部１０９、共有情報検証部１１０およびセキュリティ用符号検証部１１１により、メッセージ受信処理を実行する。このメッセージ受信処理の具体的な内容は、後で図８のフローチャートを参照して説明する。ステップＳ６０の処理を実行したら、ＣＰＵ１０は、図３のフローチャートの処理を終了する。
なお、前記ステップＳ１０からステップＳ４０までの処理と、前記ステップＳ５０からステップ６０までの処理は、別プロセスとして並行して行なわれてもよい。
【００３８】
次に、図３のステップＳ２０で実行される共有情報生成処理について説明する。ステップＳ２０において、ＣＰＵ１０は、共有情報生成部１０１において、たとえば擬似乱数生成器を用いてシーケンス番号を生成することにより、共有情報を生成することができる。図４は、この場合の共有情報生成処理のフローチャートである。
【００３９】
ステップＳ２０１では、共有情報管理部１０２は、擬似乱数生成器により疑似乱数を生成するのに必要な付随情報を暗号情報記憶部２０６から取得する。ここでは、予め設定された付随情報の参照先を示す情報に基づいて、暗号情報記憶部２０６の所定の場所に記憶されている付随情報を読み出すことにより、付随情報を取得することができる。共有情報管理部１０２は、擬似乱数生成器のシード、擬似乱数を生成するための補助情報、擬似乱数生成器の内部状態などを付随情報として取得する。なお、補助情報とは、たとえば、擬似乱数生成器の初期値を決定するための初期化ベクトル（ＩＶ）である。また、擬似乱数生成器の内部状態とは、次回以降の疑似乱数を生成するために必要な情報であり、擬似乱数生成器がこれまでに生成済みの疑似乱数の個数に応じて変化する。
【００４０】
ステップＳ２０２では、共有情報生成部１０１は、ステップＳ２０１で取得した付随情報を用いて擬似乱数列を生成する。
【００４１】
ステップＳ２０３では、共有情報生成部１０１は、ステップＳ２０２で生成した擬似乱数列に基づいてシーケンス番号列を作成する。ここでは、予め定められた方法に従って、擬似乱数列を構成する各疑似乱数に対してシーケンス番号を順に作成して並べることにより、シーケンス番号列を作成することができる。
【００４２】
ステップＳ２０４では、共有情報管理部１０２は、ステップＳ２０３で生成したシーケンス番号列を共有情報として暗号情報記憶部２０６に格納する。
【００４３】
図５は、ステップＳ２０４で暗号情報記憶部２０６に格納される共有情報１０７０のテーブル構成の例を示す図である。共有情報１０７０において、通信路カウンタ値１０７１は、各シーケンス番号に対応する通信路カウンタ値を示す。乱数１０７２は、シーケンス番号として使用される乱数を示す。
【００４４】
図４の説明に戻ると、ステップＳ２０５では、共有情報管理部１０２は、暗号情報記憶部２０６に記憶されている暗号情報のうち、ステップＳ２０３で疑似乱数列からシーケンス番号列を生成するのに必要な情報を更新する。ここで、暗号情報記憶部２０６には、たとえば、ステップＳ２０２で生成した擬似乱数列に含まれる疑似乱数のうちで、ステップＳ２０３でのシーケンス番号列の生成において未使用の擬似乱数の個数や先頭アドレスを示す情報などが、シーケンス番号列を生成するのに必要な情報として記憶されている。共有情報管理部１０２は、疑似乱数列の使用状況に応じて、これらの情報を更新する。
【００４５】
たとえば、擬似乱数列に含まれる各疑似乱数のデータサイズをｂビットとし、疑似乱数の個数をｍとすると、前述のステップＳ２０２では、ｂ×ｍビット分の擬似乱数列が生成される。このような場合に、擬似乱数列に含まれる疑似乱数の一つから生成されたシーケンス番号を含む送信メッセージが生成されて他の情報処理装置１に送信されると、共有情報管理部１０２は、暗号情報記憶部２０６に記憶されている暗号情報のうち、未使用の疑似乱数の個数を１つ減少させると共に、その先頭アドレスをｂビット分だけ変化させる。このようにして、シーケンス番号列を生成するのに必要な情報が更新される。
【００４６】
なお、上記のステップＳ２０５で情報が更新された結果、未使用の擬似乱数の個数が予め定められた所定値以下になった場合は、図４の処理フローを実行することで新たに疑似乱数列を生成し、これに基づいてシーケンス番号列を作成することが好ましい。さらに、予め定められた数を各情報処理装置間で事前に共有しておき、１つのシードから生成された擬似乱数列のバイト長がこの数に到達する度に、リシード（エントロピーソースの追加）を行ったり、シードの更新を行ったりしてもよい。リシードを行う場合、たとえば、ＮＩＳＴのＳＰ８００−９０Ａに記載されている方法を用いることができる。ただし、リシードの方法はこれに限定されず、実現可能な方法であればよい。また、シードの更新を行う場合、たとえば、ある情報処理装置１において更新用のシードを生成し、これを暗号化して他の情報処理装置１に送信するようにすればよい。ただし、シードの更新方法はこれに限定されず、実現可能な方法であればよい。このようにしてリシードやシードの更新を実施することにより、シードを把握していない第三者はシーケンス番号の予測がさらに困難になる、という効果がある。
【００４７】
ステップＳ２０５の処理を実行したら、図４の共有情報生成処理を終了し、図３のステップＳ３０に進む。以上説明した共有情報生成処理により、情報処理装置１は、他の情報処理装置１との間で共有される共有情報を生成できる。
【００４８】
次に、図３のステップＳ４０で実行されるメッセージ送信処理について説明する。ステップＳ４０において、ＣＰＵ１０は、メッセージ生成部１０４により、ステップＳ２０で生成された共有情報を利用して、不正なリプレイ攻撃の有無を判別するための送信メッセージを生成し、他の情報処理装置１に送信することができる。図６は、本発明の第１の実施形態によるメッセージ送信処理のフローチャートである。
【００４９】
ステップＳ３０１では、メッセージ生成部１０４は、図１のネットワーク２を介して送受信されたメッセージの合計数を表す通信路カウンタ値を通信情報記憶部２０７から取得する。ここで取得される通信路カウンタ値は、全ての情報処理装置間で一致した値であればよい。たとえば、ネットワーク２を介してメッセージが流れるたびに、各情報処理装置１のメッセージ生成部１０４が通信路カウンタ値をインクリメントして通信情報記憶部２０７に格納してもよい。なお、通信路カウンタ値の更新には、全ての情報処理装置１で共通の方法を用いてもよい。または、全ての情報処理装置１で更新後のカウンタ値が一致していれば、各情報処理装置１が異なる更新方法を用いてもよい。
【００５０】
ステップＳ３０２では、メッセージ生成部１０４は、通信情報記憶部２０７からヘッダ情報とデータを取得するとともに、ステップＳ３０１で取得した通信路カウンタ値に対応する共有情報を暗号情報記憶部２０６から取得する。ここで、ヘッダ情報とは、たとえば、ネットワーク２としてＣＡＮ  ＦＤを用いた場合には、アービトレーションフィールドやコントロールフィールドなどの情報である。他の通信プロトコルにおいては、たとえば、通信先、通信元、データ長等を示す情報をヘッダ情報として取得することができる。ただし、ヘッダ情報として必要な情報を含むものであれば、ステップＳ３０２で取得するヘッダ情報はこれらに限定されるものではない。
【００５１】
ステップＳ３０３では、セキュリティ用符号生成部１０５は、ステップＳ３０２で取得した共有情報に対する誤り検知符号を生成する。ここでは、取得した共有情報に基づき、所定のアルゴリズムを用いて、その共有情報の誤りを検知するための誤り検知符号を生成する。たとえば、ＣＲＣ（Ｃｙｃｌｉｃ  Ｒｅｄｕｎｄａｎｃｙ  Ｃｈｅｃｋ）などのアルゴリズムに従って、共有情報に対する誤り検知符号を生成することができる。
【００５２】
ステップＳ３０４では、メッセージ生成部１０４は、ステップＳ３０２で取得したヘッダ情報、データおよび共有情報と、ステップＳ３０３で生成した誤り検知符号と、これらに対応するフッタ情報とに基づいて、送信メッセージを生成する。ここで、フッタ情報とは、たとえば、ネットワーク２としてＣＡＮ  ＦＤを用いた場合には、周期的冗長性チェックフィールドやアクノレッジフィールドの情報である。ただし、フッタ情報として必要な情報を含むものであれば、ステップＳ３０４で取得するフッタ情報はこれらに限定されるものではない。
【００５３】
図７は、ステップＳ３０４で生成される送信メッセージのデータ構造の例を示す図である。送信メッセージは、ヘッダ情報４１１、データ４１２、共有情報４１３、誤り検知符号４１４、フッタ情報４１５から成る。
【００５４】
図６の説明に戻ると、ステップＳ３０５では、メッセージ生成部１０４は、ステップＳ３０４で生成した送信メッセージを通信部３０に出力する。これにより、生成した送信メッセージが通信部３０からネットワーク２を介して他の情報処理装置１に送信されるようにする。
【００５５】
ステップＳ３０６では、メッセージ生成部１０４は、ステップＳ３０１で取得した通信路カウンタ値を更新し、通信情報記憶部２０７に格納する。
【００５６】
ステップＳ３０６の処理を実行したら、図６のメッセージ送信処理を終了し、図３のステップＳ５０に進む。以上説明したメッセージ送信処理により、情報処理装置１は、セキュリティ用符号として共有情報に対する誤り検知符号を付与したメッセージを通信路に送信できる。
【００５７】
次に、図３のステップＳ６０で実行されるメッセージ受信処理について説明する。ステップＳ６０において、ＣＰＵ１０は、他の情報処理装置１から図６に示したデータ構造のメッセージを受信したときに、メッセージ解析部１０８を用いてその受信メッセージのデータ構造を解析し、受信メッセージが不正な攻撃によるものなのかどうかを判別することができる。図８は、メッセージ受信処理のフローチャートである。
【００５８】
ステップＳ５０１では、メッセージ解析部１０８は、通信部３０を用いて、他の情報処理装置１から送信されたメッセージを受信する。ここでは、通信部３０により受信されて通信部３０からＣＰＵ１０に出力された他の情報処理装置１からのメッセージを取得することで、受信メッセージを取得する。
【００５９】
ステップＳ５０２では、メッセージ解析部１０８は、通信情報記憶部２０７から通信路カウンタ値を取得し、その通信路カウンタ値を更新する。なお、各情報処理装置間で管理する通信路カウンタ値にずれが生じても同期できるように、任意の情報処理装置が同期用のＩＤが付与されたメッセージを通信路に定期的に送信してもよい。
【００６０】
図１４は、通信路カウンタ値の同期をとるためのメッセージのデータ構造の例を示す図である。本メッセージのデータ構造は、同期用ＩＤ９０４が付与されたヘッダ情報９０１と、通信路カウンタ値９０２と、フッタ情報９０３から成る。
【００６１】
図８の説明に戻ると、ステップＳ５０３では、メッセージ解析部１０８は、ステップＳ５０１で受信したメッセージのデータ構造を解析する。ここでは、図７に示したようなデータ構造を基に受信メッセージのデータ構造を解析することで、受信メッセージに含まれるデータ、共有情報、誤り検知符号をそれぞれ抽出する。
【００６２】
ステップＳ５０４では、処理判断制御部１０９は、ステップＳ５０１で受信メッセージから抽出した共有情報および誤り検知符号に基づいて、受信メッセージの種別を判断するためのメッセージ種別判断処理を行う。このメッセージ種別判断処理の具体的な内容は、後で図９のフローチャートを参照して説明する。
【００６３】
ステップＳ５０５では、処理判断制御部１０９は、ステップＳ５０４のメッセージ種別判断処理によって受信メッセージの種別を特定できたか否かを判断する。受信メッセージの種別を特定できた場合はステップＳ５０６に進み、特定できなかった場合はステップＳ５１０に進む。
【００６４】
ステップＳ５０５からステップＳ５０６に進んだ場合、ステップＳ５０６では、処理判断制御部１０９は、受信メッセージの種別を特定できたかどうかを示す処理判断カウンタの値をクリアする。これにより、ステップＳ５０４のメッセージ種別判断処理によって受信メッセージの種別を特定できた場合は、処理判断カウンタの値をクリアし、所定の初期値（たとえば０）に戻す。ここで、処理判断カウンタは、前述のように受信メッセージの種別の判断に用いられるものであり、通信情報記憶部２０７に記憶されている。
【００６５】
ステップＳ５０７では、処理判断制御部１０９は、ステップＳ５０４のメッセージ種別判断処理によって特定した受信メッセージの種別が、「正常」または「攻撃」のいずれであるかを判断する。受信メッセージの種別が「正常」である場合、すなわち受信メッセージが正常であるとの判断がステップＳ５０４でなされた場合は、ステップＳ５０８に進む。一方、受信メッセージの種別が「攻撃」である場合、すなわち受信メッセージが不正な攻撃によるものであるとの判断がステップＳ５０４でなされた場合は、ステップＳ５０９に進む。
【００６６】
ステップＳ５０８では、処理判断制御部１０９は、受信メッセージを受け入れる。これにより、ＣＰＵ１０において、受信メッセージに含まれるデータに基づく制御処理が実行されるようになる。
【００６７】
ステップＳ５０９では、処理判断制御部１０９は、受信メッセージを破棄し、所定の対策モードに移行する。ここで、対策モードとは、受信メッセージが不正な攻撃によるものと判断された場合に、情報処理装置１を、その情報処理装置１が含まれる情報処理システムの運用に悪影響を及ぼさないような制御状態へと移行させるためのモードである。たとえば、車両に搭載された情報処理システムであれば、情報処理装置１を車両の安全運転に影響を及ぼさないような制御状態へと移行させるように、対策モードを設定することが好ましい。
【００６８】
対策モードに移行した情報処理装置１では、たとえば、当該受信メッセージと同じＩＤが設定された他の情報処理装置１からの受信メッセージを、以降では全て破棄する。または、攻撃の種類に応じて対策内容を変化させてもよい。たとえば、ステップＳ５０４で受信メッセージがリプレイ攻撃によるものであると判断した場合は、シーケンス番号を再生成すると共に、ユーザに対する警告を行うことなどが考えられる。車両に搭載された情報処理システムであれば、カーナビゲーション装置や車両に接続された携帯端末装置などに所定の警告画面を表示することで、ユーザへの警告を行うことができる。
【００６９】
一方、ステップＳ５０５からステップＳ５１０に進んだ場合、ステップＳ５１０では、処理判断制御部１０９は、通信情報記憶部２０７に記憶されている処理判断カウンタの値をインクリメントして更新する。これにより、ステップＳ５０４のメッセージ種別判断処理によって受信メッセージの種別を特定できなかった場合は、処理判断カウンタの値を１つ増加させる。
【００７０】
ステップＳ５１１では、処理判断制御部１０９は、ステップＳ５１０でインクリメントした処理判断カウンタ値と所定の閾値とを比較する。その結果、処理判断カウンタ値が閾値よりも大きい場合は、ステップＳ５０９に進む。一方、処理判断カウンタ値が閾値以下である場合は、ステップＳ５１２に進む。なお、ステップＳ５１１で処理判断カウンタ値と比較される閾値の大きさは、ネットワーク２の通信品質などに応じて変化させてもよい。その場合、情報処理システムの設計情報や運用開始前のテスト結果などに基づいて事前に閾値を設定してもよいし、ネットワーク２の通信品質をリアルタイムで計測し、その計測結果に基づいて閾値を逐次変化させてもよい。
【００７１】
ステップＳ５１１からステップＳ５０９に進むと、処理判断制御部１０９は、これまでの受信メッセージが不正な攻撃によるものと判断して、前述のように受信メッセージを破棄し、所定の対策モードに移行する。
【００７２】
ステップＳ５１２では、処理判断制御部１０９は、受信メッセージを破棄し、次のメッセージが受信されるまで待機する。この場合は、次のメッセージが受信されると、図８のステップＳ５０１以降の処理が再度実行される。
【００７３】
ステップＳ５０８、Ｓ５０９またはＳ５１２のいずれかの処理を実行したら、図８のメッセージ受信処理を終了する。以上説明したメッセージ受信処理により、情報処理装置１は、受信メッセージが正常であるか、それとも不正な攻撃によるものかを判別することができる。
【００７４】
続いて、図８のステップＳ５０４で実行されるメッセージ種別判断処理について説明する。図９は、本発明の第１の実施形態によるメッセージ種別判断処理のフローチャートである。
【００７５】
ステップＳ５００１では、処理判断制御部１０９は、共有情報検証部１１０を用いて、受信メッセージに含まれる共有情報の正当性の検証を行う。ここで、共有情報検証部１１０は、図３のステップＳ２０の共有情報生成処理により生成されて格納された共有情報を暗号情報記憶部２０６から取得する。そして、取得した共有情報と、受信メッセージに含まれる共有情報とを比較して、これらが一致するか否かを判定する。この判定は、予め決められたルールに従って実施されればよい。たとえば、受信メッセージに含まれる共有情報のシーケンス番号をｒＫとし、共有情報検証部１１０が取得した共有情報において受信メッセージに対応するシーケンス番号をＮとすると、Ｎ＝ｒＫであるか否かを判定する。その結果、Ｎ＝ｒＫであれば、受信メッセージに含まれる共有情報が正当なものと判断して、検証結果をＯＫとする。一方、Ｎ≠ｒＫであれば、受信メッセージに含まれる共有情報が不正なものと判断して、検証結果をＮＧとする。なお、共有情報検証部１１０がシーケンス番号列を共有情報として取得した場合、そのシーケンス番号列の中でどのシーケンス番号が受信メッセージに対応するかの判断は、図８のステップＳ５０２で取得される通信路カウンタ値に基づいて行うことができる。
【００７６】
ステップＳ５００２では、処理判断制御部１０９は、ステップＳ５００１で行われた共有情報の正当性の検証結果がＯＫまたはＮＧのいずれであったかを判定する。検証結果がＯＫであった場合はステップＳ５００３に進み、ＮＧであった場合はステップＳ５００４に進む。
【００７７】
ステップＳ５００３では、処理判断制御部１０９は、受信メッセージを正常なものとして判断する。これにより、受信メッセージの種別が「正常」であることが特定される。
【００７８】
ステップＳ５００４では、処理判断制御部１０９は、セキュリティ用符号生成部１０５を用いて、受信メッセージに含まれる共有情報に基づく誤り検知符号を生成する。ここで、セキュリティ用符号生成部１０５は、図６のステップＳ３０３と同様の処理を行うことにより、受信メッセージに含まれる共有情報に対するセキュリティ用符号としての誤り検知符号を生成することができる。
【００７９】
ステップＳ５００５では、処理判断制御部１０９は、セキュリティ用符号検証部１１１を用いて、受信メッセージに含まれる共有情報の正誤の検証を行う。ここで、セキュリティ用符号検証部１１１は、ステップＳ５００４で生成された誤り検知符号をセキュリティ用符号生成部１０５から取得する。そして、取得した誤り検知情報と、受信メッセージに含まれるセキュリティ用符号としての誤り検知符号とを比較して、これらが一致するか否かを判定する。その結果、両方の誤り検知符号が一致していれば、受信メッセージに含まれる共有情報には誤りがないと判断して、検証結果をＯＫとする。一方、誤り検知符号が一致していなければ、受信メッセージに含まれる共有情報には誤りがあると判断して、検証結果をＮＧとする。
【００８０】
ステップＳ５００６では、処理判断制御部１０９は、ステップＳ５００５で行われた共有情報の正誤の検証結果がＯＫまたはＮＧのいずれであったかを判定する。検証結果がＯＫであった場合はステップＳ５００８に進み、ＮＧであった場合はステップＳ５００７に進む。
【００８１】
ステップＳ５００７では、処理判断制御部１０９は、受信メッセージをリプレイ攻撃以外の原因による異常なメッセージと判断する。この場合、受信メッセージの種別は特定されない。なお、こうした異常メッセージの原因としては、たとえば、ネットワーク２におけるノイズ等による偶発的な通信ビット誤りや、リプレイ攻撃以外の不正な攻撃などが考えられる。
【００８２】
ステップＳ５００８では、処理判断制御部１０９は、受信メッセージを不正なリプレイ攻撃によるものと判断する。すなわち、この場合には、共有情報が正当ではなく、かつ共有情報には誤りがないことから、その共有情報が既に使用済みであり、これを不正に入手した第三者がリプレイ攻撃を行ったと判断できる。これにより、受信メッセージの種別が「攻撃」であることが特定される。
【００８３】
ステップＳ５００３、Ｓ５００７またはＳ５００８のいずれかを実行したら、図９のメッセージ種別判断処理を終了し、図８のステップＳ５０５に進む。以上説明したメッセージ種別判断処理により、情報処理装置１は、受信メッセージがリプレイ攻撃なのかどうかを判別できる。
【００８４】
以上説明した本発明の第１の実施形態によれば、以下の作用効果を奏する。
【００８５】
（１）情報処理装置１は、ネットワーク２を介して接続された他の情報処理装置１から送信されたメッセージを受信する。情報処理装置１は、共有情報生成部１０１、通信部３０、共有情報検証部１１０、セキュリティ用符号生成部１０５、セキュリティ用符号検証部１１１および処理判断制御部１０９を備える。共有情報生成部１０１は、他の情報処理装置１と共有される共有情報を生成する（ステップＳ２０）。通信部３０は、他の情報処理装置１から送信されたメッセージを受信する（ステップＳ５０１）。共有情報検証部１１０は、この受信メッセージに含まれる共有情報と共有情報生成部１０１により生成された共有情報とを比較し、その比較結果に基づいて、受信メッセージに含まれる共有情報の正当性を検証する（ステップＳ５００１）。セキュリティ用符号生成部１０５は、共有情報に基づくセキュリティ用符号を生成する（ステップＳ５００４）。セキュリティ用符号検証部１１１は、受信メッセージに含まれるセキュリティ用符号と、セキュリティ用符号生成部１０５により生成されたセキュリティ用符号とを比較し、その比較結果に基づいて、受信メッセージに含まれる共有情報の正誤を検証する（ステップＳ５００５）。処理判断制御部１０９は、共有情報検証部１１０による検証結果と、セキュリティ用符号検証部１１１による検証結果とに基づいて、受信メッセージの正常性を判断する（ステップＳ５００３、Ｓ５００７、Ｓ５００８）。このようにしたので、ネットワーク２に接続された各情報処理装置１において受信したメッセージが不正な攻撃によるものか否かを正しく判別することができる。
【００８６】
（２）ステップＳ５００４では、セキュリティ用符号生成部１０５は、共有情報の誤りを検知するための誤り検知符号をセキュリティ用符号として生成する。ステップＳ５００５では、セキュリティ用符号検証部１１１は、受信メッセージに含まれる誤り検知符号と、セキュリティ用符号生成部１０５により生成された誤り検知符号とを比較し、その比較結果に基づいて、受信メッセージに含まれる共有情報の正誤を検証する。このようにしたので、共有情報の正誤を簡単に、かつ正確に検証することができる。
【００８７】
（３）処理判断制御部１０９は、ステップＳ５００１で共有情報検証部１１０により受信メッセージに含まれる共有情報が正当であると判断された場合には、ステップＳ５００３において受信メッセージが正常であると判断する。一方、ステップＳ５００１で共有情報検証部１１０により受信メッセージに含まれる共有情報が正当ではないと判断され、かつステップＳ５００５でセキュリティ用符号検証部１１１により受信メッセージに含まれる共有情報に誤りがないと判断された場合には、ステップＳ５００８において受信メッセージが不正なリプレイ攻撃によるものであると判断する。このようにしたので、受信メッセージが正常であるか、それとも不正なリプレイ攻撃によるものであるかを、確実に判断することができる。
【００８８】
（４）情報処理装置１は、処理判断制御部１０９により受信メッセージの正常性を判断するために用いられる処理判断カウンタ値を記憶する通信情報記憶部２０７をさらに備える。処理判断制御部１０９は、ステップＳ５００１で共有情報検証部１１０により受信メッセージに含まれる共有情報が正当ではないと判断され、かつステップＳ５００５でセキュリティ用符号検証部１１１により受信メッセージに含まれる共有情報に誤りがあると判断されることで、ステップＳ５００７の処理を実行した場合には、処理判断カウンタ値をインクリメントして更新する（ステップＳ５１０）。そして、処理判断カウンタ値と所定の閾値とを比較し（ステップＳ５１１）、その比較結果に基づいて、受信メッセージが不正な攻撃によるものであるか否かを判断する（ステップＳ５０９、Ｓ５１２）。このようにしたので、受信メッセージがリプレイ攻撃以外の不正な攻撃によるものである場合にも、これを判断することができる。
【００８９】
（５）情報処理装置１は、共有情報生成部１０１、通信部３０、共有情報検証部１１０、セキュリティ用符号生成部１０５、セキュリティ用符号検証部１１１および処理判断制御部１０９に加えてさらに、メッセージ生成部１０４を備える。メッセージ生成部１０４は、共有情報生成部１０１により生成された共有情報およびセキュリティ用符号生成部１０５により生成されたセキュリティ用符号を含む送信メッセージを生成する（ステップＳ３０４）。通信部３０は、この送信メッセージを他の情報処理装置１に送信すると共に、他の情報処理装置１からの受信メッセージを受信する。このようにしたので、複数の情報処理装置１間でメッセージを送受信し、メッセージ認証を行うことができる。
【００９０】
−第２の実施形態−
以下では、本発明の第２の実施形態について説明する。第２の実施形態では、第１の実施形態で説明した誤り検知符号に替えて、誤り訂正符号や改ざん検知符号をセキュリティ用符号として使用する場合の例を説明する。なお、本実施形態に係る情報処理システムの構成や、情報処理装置１の構成については、第１の実施形態と同様であるため、説明を省略する。また、ＣＰＵ１０が実行する処理は、図６に示したメッセージ送信処理および図９に示したメッセージ種別判断処理以外については、第１の実施形態と共通であるため、説明を省略する。
【００９１】
図１０は、本発明の第２の実施形態によるメッセージ送信処理のフローチャートである。このフローチャートは、図６に示した第１の実施形態によるメッセージ送信処理のフローチャートと比べて、ステップＳ３０３およびＳ３０４の処理に替えて、ステップＳ３０３１、Ｓ３０３２およびＳ３０４１の処理を実行する点が異なっている。
【００９２】
ステップＳ３０３１では、セキュリティ用符号生成部１０５は、ステップＳ３０２で取得した共有情報に対する誤り訂正符号を生成する。ここでは、取得した共有情報に基づき、所定のアルゴリズムを用いて、その共有情報の誤りを検知および訂正するための誤り訂正符号を生成する。たとえば、所定の多項式を用いることで、共有情報に対応するＥＣＣ（Ｅｒｒｏｒ  ＣｏｒｒｅｃｔｉｎｇＣｏｄｅ）を算出することにより、誤り訂正符号を生成することができる。このとき、送信メッセージが通過するネットワーク２の通信品質に基づいて、生成する誤り訂正符号の訂正範囲を設定してもよい。たとえば、送信メッセージがネットワーク２を通過する際に生じる平均的な通信エラーのビット数がｎビットである場合、ステップＳ３０３１では、ｎビット以上の訂正能力を有する誤り訂正符号を生成することが好ましい。なお、誤り訂正符号の訂正範囲の設定は、たとえばＥＣＣの算出に用いる多項式を適切に選定することで実現できる。
【００９３】
ステップＳ３０３２では、セキュリティ用符号生成部１０５は、ステップＳ３０２で取得したヘッダ情報、データおよび共有情報に対する改ざん検知符号を生成する。ここでは、取得したヘッダ情報、データおよび共有情報に基づいて、これらの情報に対する改ざんの有無を検知するための改ざん検知符号を生成する。たとえば、所定のアルゴリズムを利用してＭＡＣ（Ｍｅｓｓａｇｅ  Ａｕｔｈｅｎｔｉｃａｔｉｏｎ  Ｃｏｄｅ）を算出することにより、改ざん検知符号を生成することができる。なお、ＭＡＣの算出方法としては、たとえばハッシュ関数を用いるものや、ブロック暗号アルゴリズムを用いるものなどが知られている。また、共通鍵ブロック暗号アルゴリズムであるＡＥＳを用いてもよい。具体的には、ＭＡＣの算出対象とするヘッダ情報、データおよび共有情報を含み、かつブロック長に合わせて付与されたパディング用データを加えたデータ列を入力メッセージとして所定の処理を行うと、１２８ビット等のブロック暗号が出力される。このブロック暗号をＭＡＣとして利用することができる。その他にも、任意の手法を利用して改ざん検知符号を生成することができる。なお、送信メッセージのヘッダ情報、データおよび共有情報のうち一部の情報に基づいて、改ざん検知符号を生成してもよい。
【００９４】
ステップＳ３０４１では、メッセージ生成部１０４は、ステップＳ３０２で取得したヘッダ情報、データおよび共有情報と、ステップＳ３０３１で生成した誤り訂正符号と、ステップＳ３０３２で生成した改ざん検知符号と、これらに対応するフッタ情報とに基づいて、送信メッセージを生成する。ステップＳ３０５では、この送信メッセージが通信部３０に出力されて送信される。
【００９５】
図１１は、ステップＳ３０４１で生成される送信メッセージのデータ構造の例を示す図である。送信メッセージは、ヘッダ情報４２１、データ４２２、共有情報４２３、誤り訂正符号４２４、改ざん検知符号４２５およびフッタ情報４２６から成る。なお、ヘッダ情報４２１、データ４２２、共有情報４２３、フッタ情報４２６については、第１の実施形態で説明した図７の送信メッセージにおけるヘッダ情報４１１、データ４１２、共有情報４１３とそれぞれ同様のものである。
【００９６】
図１２は、本発明の第２の実施形態によるメッセージ種別判断処理のフローチャートである。
【００９７】
ステップＳ６００１、Ｓ６００２では、処理判断制御部１０９は、図９のステップＳ５００１、Ｓ５００２とそれぞれ同様の処理を行う。
【００９８】
ステップＳ６００３では、処理判断制御部１０９は、セキュリティ用符号生成部１０５を用いて、受信メッセージに含まれる共有情報に基づく誤り訂正符号を生成する。ここで、セキュリティ用符号生成部１０５は、図１０のステップＳ３０３１と同様の処理を行うことにより、受信メッセージに含まれる共有情報に対するセキュリティ用符号としての誤り訂正符号を生成することができる。
【００９９】
ステップＳ６００４では、処理判断制御部１０９は、セキュリティ用符号検証部１１１を用いて、受信メッセージに含まれる共有情報の正誤の検証を行う。ここで、セキュリティ用符号検証部１１１は、ステップＳ６００３で生成された誤り訂正符号を誤り検知符号の代わりに用いて、図９のステップＳ５００５と同様の処理を行う。その結果、受信メッセージに含まれる共有情報に誤りがなければ検証結果をＯＫとし、誤りがあれば検証結果をＮＧとする。
【０１００】
ステップＳ６００５では、処理判断制御部１０９は、ステップＳ６００４で行われた共有情報の正誤の検証結果がＯＫまたはＮＧのいずれであったかを判定する。検証結果がＯＫであった場合はステップＳ６０１０に進み、ＮＧであった場合はステップＳ６００６に進む。
【０１０１】
ステップＳ６００６では、処理判断制御部１０９は、セキュリティ用符号検証部１１１を用いて、受信メッセージに含まれる共有情報を訂正する。ここで、セキュリティ用符号検証部１１１は、ステップＳ６００３で生成された誤り訂正符号を用いて、所定のアルゴリズムに従った計算を行うことにより、受信メッセージに含まれる共有情報を訂正する。これにより、たとえば、誤り訂正符号であるＥＣＣのハミング距離が一定以内である場合に、受信メッセージの共有情報に含まれる誤りを訂正することができる。ただし、受信メッセージに含まれる共有情報に誤りが多い場合は、誤り訂正符号を用いても共有情報を完全には訂正できないため、誤りが残ってしまうことがある。
【０１０２】
ステップＳ６００７では、処理判断制御部１０９は、共有情報検証部１１０を用いて、受信メッセージに含まれる共有情報の正当性の再検証を行う。ここで、共有情報検証部１１０は、暗号情報記憶部２０６から取得した共有情報と、ステップＳ６００６で誤り訂正された共有情報とを比較して、ステップＳ６００１と同様に、これらが一致するか否かを判定する。その結果、取得した共有情報と誤り訂正後の共有情報とが一致していれば、受信メッセージに含まれる共有情報が正当なものと判断して、再検証結果をＯＫとする。一方、これらが一致していなければ、受信メッセージに含まれる共有情報が不正なものと判断して、再検証結果をＮＧとする。
【０１０３】
ステップＳ６００８では、処理判断制御部１０９は、ステップＳ６００７で行われた共有情報の正当性の再検証結果がＯＫまたはＮＧのいずれであったかを判定する。再検証結果がＯＫであった場合はステップＳ６０１１に進み、ＮＧであった場合はステップＳ６００９に進む。
【０１０４】
ステップＳ６００９では、処理判断制御部１０９は、受信メッセージを、事前に生成された偽メッセージが用いられた不正な攻撃による異常なメッセージか、または、誤り訂正不可能な共有情報のノイズによる異常なメッセージと判断する。この場合、受信メッセージの種別は特定されない。
【０１０５】
ステップＳ６０１０では、処理判断制御部１０９は、図９のステップＳ５００８と同様に、受信メッセージを不正なリプレイ攻撃によるものと判断する。これにより、受信メッセージの種別が「攻撃」であることが特定される。
【０１０６】
ステップＳ６０１１では、処理判断制御部１０９は、セキュリティ用符号生成部１０５を用いて、受信メッセージに含まれるヘッダ情報、データおよび共有情報に基づく改ざん検知符号を生成する。ここで、セキュリティ用符号生成部１０５は、図１０のステップＳ３０３２と同様の処理を行うことにより、受信メッセージに含まれるヘッダ情報、データおよび共有情報に対するセキュリティ用符号としての改ざん検知符号を生成することができる。
【０１０７】
ステップＳ６０１２では、処理判断制御部１０９は、セキュリティ用符号検証部１１１を用いて、受信メッセージの正当性の検証を行う。ここで、セキュリティ用符号検証部１１１は、ステップＳ６０１１で生成された改ざん検知符号をセキュリティ用符号生成部１０５から取得する。そして、取得した改ざん検知符号と、受信メッセージに含まれるセキュリティ用符号としての改ざん検知符号とを比較して、これらが一致するか否かを判定する。その結果、両方の改ざん検知符号が一致していれば、受信メッセージが改ざんされていない正当なものと判断して、検証結果をＯＫとする。一方、改ざん検知符号が一致していなければ、受信メッセージが改ざんされた不正なものと判断して、検証結果をＮＧとする。
【０１０８】
ステップＳ６０１３では、処理判断制御部１０９は、ステップＳ６０１２で行われた受信メッセージの正当性の検証結果がＯＫまたはＮＧのいずれであったかを判定する。検証結果がＯＫであった場合はステップＳ６０１４に進み、ＮＧであった場合はステップＳ６０１５に進む。
【０１０９】
ステップＳ６０１４では、処理判断制御部１０９は、図９のステップＳ５００３と同様に、受信メッセージを正常なものとして判断する。これにより、受信メッセージの種別が「正常」であることが特定される。
【０１１０】
ステップＳ６０１５では、処理判断制御部１０９は、受信メッセージを、ヘッダ情報、データ等がリアルタイムに改ざんされて生成された偽メッセージが用いられた不正な攻撃による異常なメッセージか、または、ヘッダ情報、データ等に対するノイズによる異常なメッセージと判断する。この場合も、ステップＳ６００９と同様に、受信メッセージの種別は特定されない。
【０１１１】
ステップＳ６００９、Ｓ６０１０、Ｓ６０１４またはＳ６０１５のいずれかを実行したら、図１２のメッセージ種別判断処理を終了し、図８のステップＳ５０５に進む。以上説明したメッセージ種別判断処理により、情報処理装置１は、受信メッセージがリプレイ攻撃、事前に用意された偽メッセージによる攻撃、またはリアルタイムに生成された偽メッセージによる攻撃なのかどうかを判別できる。
【０１１２】
以上説明した本発明の第２の実施形態によれば、第１の実施形態で説明した（１）、（５）の作用効果に加えて、さらに以下の作用効果を奏する。
【０１１３】
（６）ステップＳ６００３では、セキュリティ用符号生成部１０５は、共有情報の誤りを検知および訂正するための誤り訂正符号をセキュリティ用符号として生成する。ステップＳ６００４では、セキュリティ用符号検証部１１１は、受信メッセージに含まれる誤り訂正符号と、セキュリティ用符号生成部１０５により生成された誤り訂正符号とを比較し、その比較結果に基づいて、受信メッセージに含まれる共有情報の正誤を検証する。このようにしたので、共有情報の正誤を簡単に、かつ正確に検証することができる。
【０１１４】
（７）セキュリティ用符号検証部１１１は、ステップＳ６００４で受信メッセージに含まれる共有情報に誤りがあることを検知した場合に、その共有情報を誤り訂正符号に基づいて訂正する（ステップＳ６００６）。共有情報検証部１１０は、セキュリティ用符号検証部１１１により訂正された共有情報と、共有情報生成部１０１により生成された共有情報とを比較し、その比較結果に基づいて、受信メッセージに含まれる共有情報の正当性を再検証する（ステップＳ６００７）。このようにしたので、偶発的な通信ビット誤り等によって受信メッセージの共有情報の一部に誤りが生じた場合でも、その共有情報が正当であるか否かを確実に判断することができる。
【０１１５】
（８）セキュリティ用符号生成部１０５は、誤り訂正符号に加えて、受信メッセージに含まれるデータおよび共有情報の改ざんを検知するための改ざん検知符号をセキュリティ用符号としてさらに生成する（ステップＳ６０１１）。セキュリティ用符号検証部１１１は、受信メッセージに含まれる改ざん検知符号と、セキュリティ用符号生成部１０５により生成された改ざん検知符号とを比較し、その比較結果に基づいて、受信メッセージの正当性をさらに検証する（ステップＳ６０１２）。このようにしたので、受信メッセージが不正な攻撃によるものか否かをさらに正しく判別することができる。
【０１１６】
（９）処理判断制御部１０９は、ステップＳ６００１で共有情報検証部１１０により受信メッセージに含まれる共有情報が正当であると判断され、かつステップＳ６０１２でセキュリティ用符号検証部１１１により受信メッセージが正当であると判断された場合には、ステップＳ６０１４において受信メッセージが正常であると判断する。一方、ステップＳ６００１で共有情報検証部１１０により受信メッセージに含まれる共有情報が正当ではないと判断され、かつステップＳ６００４でセキュリティ用符号検証部１１１により受信メッセージに含まれる共有情報に誤りがないと判断された場合には、ステップＳ６０１０において受信メッセージが不正なリプレイ攻撃によるものであると判断する。このようにしたので、受信メッセージが正常であるか、それとも不正なリプレイ攻撃によるものであるかを、確実に判断することができる。
【０１１７】
（１０）情報処理装置１は、処理判断制御部１０９により受信メッセージの正常性を判断するために用いられる処理判断カウンタ値を記憶する通信情報記憶部２０７をさらに備える。処理判断制御部１０９は、ステップＳ６００１で共有情報検証部１１０により受信メッセージに含まれる共有情報が正当であると判断され、かつステップＳ６０１２でセキュリティ用符号検証部１１１により受信メッセージが正当ではないと判断されることで、ステップＳ６０１５の処理を実行した場合、または、ステップＳ６００１で共有情報検証部１１０により受信メッセージに含まれる共有情報が正当ではないと判断され、かつステップＳ６００４でセキュリティ用符号検証部１１１により受信メッセージに含まれる共有情報に誤りがあると判断されることで、ステップＳ６００９の処理を実行した場合には、処理判断カウンタ値をインクリメントして更新する（ステップＳ５１０）。そして、処理判断カウンタ値と所定の閾値とを比較し（ステップＳ５１１）、その比較結果に基づいて、受信メッセージが不正な攻撃によるものであるか否かを判断する（ステップＳ５０９、Ｓ５１２）。このようにしたので、受信メッセージがリプレイ攻撃以外の不正な攻撃によるものである場合にも、これを判断することができる。
【０１１８】
（１１）セキュリティ用符号生成部１０５は、ネットワーク２の通信品質に基づいて、誤り訂正符号の訂正範囲を設定してもよい。このようにすれば、誤り訂正符号の訂正範囲を適切に設定することができる。
【０１１９】
なお、以上説明した第２の実施形態において、誤り訂正符号や改ざん検知符号の代わりに誤り検知符号を用いてもよい。誤り訂正符号の代わりに誤り検知符号を用いる場合、図１０のステップＳ３０３１では、セキュリティ用符号生成部１０５は、図６のステップＳ３０３と同様の処理を行う。また、図１２のステップＳ６００３でも同様にして、誤り検知符号を生成する。この場合、図１２のステップＳ６００６〜Ｓ６００８の処理は実行されない。一方、改ざん検知符号の代わりに誤り検知符号を用いる場合、図１０のステップＳ３０３２では、セキュリティ用符号生成部１０５は、ステップＳ３０２で取得したヘッダ情報、データおよび共有情報に基づいて、これらの情報に対する誤りの有無を検知するための誤り検知符号を生成する。また、図１２のステップＳ６０１１でも同様にして、誤り検知符号を生成する。なお、この場合に生成される誤り検知符号は、少なくともデータを誤り検知の対象に含んでいればよい。このようにしても、上記と同様の作用効果を奏することができる。
【０１２０】
また、以上説明した第２の実施形態において、情報処理装置１間で送受信されるメッセージに改ざん検知符号を付与しないこととしてもよい。この場合、図１０のステップＳ３０３２の処理や、図１２のステップＳ６０１１〜Ｓ６０１３およびＳ６０１５の処理は実施されない。このようにしても、上記と同様の作用効果を奏することができる。
【０１２１】
−第３の実施形態−
以下では、本発明の第３の実施形態について説明する。第３の実施形態では、複数の情報処理装置１間でメッセージを分割して送信する例を説明する。たとえば、ネットワーク２としてＣＡＮを利用した場合に、メッセージを分割することで、ＣＡＮの通信プロトコルに従ってメッセージの送受信が行われるようにする。なお、本実施形態に係る情報処理システムの構成や、情報処理装置１の構成については、第１および第２の実施形態と同様であるため、説明を省略する。また、ＣＰＵ１０が実行する処理は、第１の実施形態または第２の実施形態と共通であるため、説明を省略する。
【０１２２】
本実施形態において、送信側の情報処理装置１のメッセージ生成部１０４は、図６または図１０のステップＳ３０５において送信メッセージを通信部３０に出力する際に、送信メッセージを複数に分割して出力することができる。これにより、元のメッセージ構造が分割された状態で、通信部３０からネットワーク２を介して他の情報処理装置１にメッセージが送信されるようにする。
【０１２３】
図１３は、メッセージ生成部１０４が送信メッセージを４つのメッセージに分割した例を示す図である。図１３の例では、ヘッダ情報８０１、データ８０２、共有情報８０３、誤り訂正符号８０４、改ざん検知符号８０５およびフッタ情報８０６から成る送信メッセージを４つに分割した場合の例を示している。なお、分割前の送信メッセージは、第２の実施形態で説明したような方法で生成することができる。
【０１２４】
図１３に示した分割後の送信メッセージにそれぞれ付されたヘッダ情報８０７、８０９、８１１および８１４と、フッタ情報８０８、８１０、８１３および８１６とは、ＣＡＮの通信プロトコルに固有の情報である。一方、一つ目の分割メッセージにおけるデータ８０２と、二つ目の分割メッセージにおける共有情報８０３および８０４とは、分割前のものと同一である。また、三つ目の分割メッセージにおける改ざん検知符号８１２は、分割前の改ざん検知符号８０５の下位６４ビット分に対応し、四つ目の分割メッセージにおける改ざん検知符号８１５は、分割前の改ざん検知符号８０５の上位６４ビット分に対応する。なお、図１３の例では、ＣＡＮの通信プロトコルにおけるデータフィールドが６４ビットであり、データ８０２のビット数および共有情報８０３と誤り訂正符号８０４の合計ビット数がそれぞれ６４ビットである場合を示している。たとえば、このようにして送信メッセージを分割することができる。ただし、メッセージの分割方法はこれに限らない。たとえば、データフィールドの６４ビットに対して余りがある場合は、０ビット値を用いたパディングを行ってもよい。
【０１２５】
一方、受信側の情報処理装置１のメッセージ解析部１０８は、上記のようにして複数に分割されたメッセージを通信部３０により受信したら、その複数の分割メッセージを元のメッセージ長になるまで蓄積する。分割メッセージが元のメッセージ長まで蓄積されたら、メッセージ解析部１０８は、各分割メッセージからヘッダ情報やフッタ情報を除去して順に並べることで、元の分割前のメッセージを再現する。その後、再現された分割前のメッセージを用いて、図８のメッセージ受信処理を行う。このとき、図８のステップＳ５０２では、メッセージ解析部１０８は、最初の分割メッセージを受信したときにのみ通信路カウンタ値を更新し、残りの分割メッセージを受信したときは更新しないことが好ましい。なお、受信側の情報処理装置１のメッセージ解析部１０８は、分割された各メッセージを対応付ける方法として、たとえば、データ８０２を含むメッセージのＩＤと、共有情報８０３と誤り訂正符号８０４と改ざん検知符号８０５を含むメッセージのＩＤを別系統にしておき、それぞれのＩＤの対応表を用いることで判断してもよい。ただし、メッセージの対応付け方法はこれに限らない。
【０１２６】
以上説明した本発明の第３の実施形態によれば、情報処理装置１は、他の情報処理装置１がメッセージを複数に分割して送信した場合に、通信部３０により受信された複数の分割メッセージを元のメッセージ長まで蓄積することにより、分割前のメッセージを再現する。このようにしたので、複数の情報処理装置の間で、ネットワークの通信プロトコルに従ってメッセージの送受信を行うことができる。
【０１２７】
なお、以上説明した第３の実施形態において、送信側の情報処理装置１では、送信メッセージを分割して送信するか否かを任意に選択できるようにしてもよい。さらにこの場合、メッセージ生成部１０４は、分割しないで送信される場合と比べて、分割して送信される送信メッセージの共有情報やセキュリティ用符号の情報量が少なくなるように、送信メッセージを生成してもよい。その場合、送信メッセージを分割して送信する場合の各分割送信メッセージに含まれる共有情報とセキュリティ用符号をそれぞれ合計した情報量のいずれか少なくとも一つは、送信メッセージを分割しないで送信する場合の送信メッセージに含まれる共有情報の情報量またはセキュリティ用符号の情報量よりも少なくなる。このようにすれば、送信メッセージを分割して送信する場合でも、分割に伴う通信データ量の増加をなるべく抑えることができる。
【０１２８】
具体的には、たとえば、送信メッセージを分割する場合としない場合とで、送信側の情報処理装置１において共有情報生成部１０１が共有情報を生成する際の設定条件や、セキュリティ用符号生成部１０５がセキュリティ用符号を生成する際の設定条件などを変化させる。これにより、メッセージ生成部１０４で生成される送信メッセージにおける共有情報やセキュリティ用符号の情報量を任意に調節して、上記のような状態とすることができる。
【０１２９】
なお、以上説明した各実施形態や各種の変化例はあくまで一例であり、発明の特徴が損なわれない限り、本発明はこれらの内容に限定されない。本発明は上述した実施形態や変形例に限定されるものではなく、本発明の趣旨を逸脱しない範囲で種々の変更が可能である。
【符号の説明】
【０１３０】
１  情報処理装置
２  ネットワーク
２０  メモリ
３０  通信部
４０  バス
１０１  共有情報生成部
１０２  共有情報管理部
１０３  鍵管理部
１０４  メッセージ生成部
１０５  セキュリティ用符号生成部
１０８  メッセージ解析部
１０９  処理判断制御部
１１０  共有情報検証部
１１１  セキュリティ用符号検証部
２０６  暗号情報記憶部
２０７  通信情報記憶部
【図１】
2016096419.tif 000003
【図２】
2016096419.tif 000004
【図３】
2016096419.tif 000005
【図４】
2016096419.tif 000006
【図５】
2016096419.tif 000007
【図６】
2016096419.tif 000008
【図７】
2016096419.tif 000009
【図８】
2016096419.tif 000010
【図９】
2016096419.tif 000011
【図１０】
2016096419.tif 000012
【図１１】
2016096419.tif 000013
【図１２】
2016096419.tif 000014
【図１３】
2016096419.tif 000015
【図１４】
2016096419.tif 000016