(57)【特許請求の範囲】
【請求項１】
第１のノードから、第２のノードが受信するデータに含まれる第１の識別情報、または、前記第２のノードが受信しないデータに含まれる第２の識別情報を含むデータを受信する受信部と、
前記第１の識別情報を含む第１のデータを前記受信部が受信すると、前記第１のデータを用いて第１の認証符号を生成する制御部
を備え、
前記受信部は、前記第１のノードから、前記第２の識別情報及び前記第１のノードが前記第１のデータを用いて生成した第２の認証符号を含む第２のデータを受信し、
前記制御部は、前記第１の認証符号と前記第２の認証符号との比較の結果に基づいて、前記第２のノードに前記第１の識別情報を用いて通知されたデータの処理を中断させるかを決定する
ことを特徴とする通信制御装置。
【請求項２】
前記第１のデータの受信から前記第２のデータの受信までに、前記受信部が前記第１のノードから前記第１の識別情報と共に第３のデータを受信した場合、前記制御部は、前記第１の認証符号の生成に、前記第３のデータをさらに使用し、
前記第２の認証符号は、前記第１のデータの送信から前記第２のデータの送信までに、前記第１のノードが前記第１の識別情報を用いて送信したデータから生成され、
前記制御部は、前記第１の認証符号と前記第２の認証符号が一致しない場合、前記第２のノードに前記第１の識別情報を用いて通知されたデータの処理を中断させる
ことを特徴とする請求項１に記載の通信制御装置。
【請求項３】
前記第１のノードが前記第２のデータを送信するまでに前記第１の識別情報を用いて送信するデータの送信数として予め決められた値を記憶する記憶部
をさらに備え、
前記制御部は、前記第２の認証符号を取得した時点で、前記第１の認証符号の生成に使用したデータ数と前記送信数が一致しない場合、前記第２のノードに前記第１の識別情報を用いて通知されたデータの処理を中断させる
ことを特徴とする請求項２に記載の通信制御装置。
【請求項４】
前記受信部は、第３のノードから、前記第２の識別情報または第３の識別情報を含むデータをさらに受信し、
前記第２の識別情報を含むデータは、処理を中断するかの判定対象となる識別情報を示す値を含み、
前記制御部は、
前記第１の認証符号を前記第１の識別情報に対応付けて記憶し、
前記第３の識別情報を含む第４のデータを用いて第３の認証符号を生成すると共に、前記第３の認証符号を前記第３の識別情報に対応付けて記憶し、
前記第１の識別情報を前記判定対象とし、前記第１の識別情報に前記第１のノードで計算された認証符号を対応付けた第５のデータを、前記受信部が前記第２の識別情報を用いて受信すると、前記第５のデータ中の認証符号と前記第１の認証符号を比較し、
前記第３の識別情報を前記判定対象とし、前記第３の識別情報に前記第３のノードで計算された認証符号を対応付けた第６のデータを、前記受信部が前記第２の識別情報を用いて受信すると、前記第６のデータ中の認証符号と前記第３の認証符号を比較し、
比較処理の結果を用いて、処理の中断を行うかを判定する
ことを特徴とする請求項１〜３のいずれかに記載の通信制御装置。
【請求項５】
複数のノード間の通信制御を行う通信制御方法において、
第１のノードから、第２のノードが受信するデータに含まれる第１の識別情報を含む第１のデータを受信し、
受信した前記第１のデータを用いて第１の認証符号を生成し、
前記第１のノードから、前記第２のノードが受信しないデータに含まれる第２の識別情報及び前記第１のノードにおいて前記第１のデータを用いて生成された第２の認証符号を含む第２のデータを受信し、
前記第１の認証符号と前記第２の認証符号とを比較し、
前記比較の結果に基づいて、前記第２のノードに対し、前記第１の識別情報を用いて通知されたデータの処理を中断させるかを判定する
ことを特徴とする通信制御方法。
【請求項６】
複数のノード間の通信制御を行う通信制御装置に、
第１のノードから、第２のノードが受信するデータに含まれる第１の識別情報を含む第１のデータを受信し、
受信した前記第１のデータを用いて第１の認証符号を生成し、
前記第１のノードから、前記第２のノードが受信しないデータに含まれる第２の識別情報及び前記第１のノードにおいて前記第１のデータを用いて生成された第２の認証符号を含む第２のデータを受信し、
前記第１の認証符号と前記第２の認証符号とを比較し、
前記比較の結果に基づいて、前記第２のノードに対し、前記第１の識別情報を用いて通知されたデータの処理を中断させるかを判定する
処理を行わせることを特徴とする通信制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信装置間の通信の制御に関する。
【背景技術】
【０００２】
自動車の車載ネットワークやファクトリーオートメーションなどに使用される装置間で、データや制御情報を送受信するために、ＣＡＮ（Controller Area Network）と呼ばれるネットワーク技術が使用されることがある。ＣＡＮが用いられるシステムは、複数のＥＣＵ（electronic control unit）を含む。ＥＣＵ同士はフレームを送受信することにより通信を行う。ＣＡＮでは、通信に使用されるフレームには、フレームの識別に使用される識別情報（ＩＤ）が含まれている。また、各ＥＣＵは、受信するフレームのＩＤを予め記憶している。フレームはブロードキャストされ、各ＥＣＵは、ＥＣＵが受信するように設定されたＩＤを含むフレームを受信するが、受信対象に設定されていないＩＤを含むフレームは破棄する。
【０００３】
フレームで使用されるＩＤとＥＣＵの対応関係は一部を除き標準化されてはおらず、どのＥＣＵがどのＩＤを受信するように設定されているかは公開されない。しかし、攻撃者は、ＣＡＮで送受信されているフレームの傍受と、ＣＡＮを用いたシステムで行われた処理の観察を行うことにより、送信されたフレームとシステムで行われる処理を関連づけることができる。攻撃者は、関連付けで得られた結果と過去に送信されたフレームを記憶しておき、ＣＡＮを用いたシステムに対して引き起こしたい挙動に対応付けられたフレームを、ネットワークに送信することができる。すると、自動車やオートメーションファクトリーでは、本来は行わない処理を、攻撃者から送信されたフレームに起因して行ってしまうことになる。以下の説明では、このような攻撃を「リプレイ攻撃」または「再送攻撃」と記載することがある。
【０００４】
リプレイ攻撃を防ぐために、データ、ＩＤ、ＩＤに対応するカウンタ値から生成したメッセージ認証コード（Message Authentication Code、ＭＡＣ）を用いる検証方法が提案されている。ここで、カウンタ値は、各ＥＣＵにおいてフレームのＩＤごとにメッセージが送信された回数をカウントすることにより得られる値である。送信元の装置は、送信対象のデータを含むメインメッセージと、メインメッセージを用いて生成したＭＡＣを通知するＭＡＣメッセージを宛先の装置に送信する。メインメッセージとＭＡＣメッセージを受信した装置は、メインメッセージからＭＡＣを生成し、ＭＡＣメッセージ中のＭＡＣと一致するかを判定することにより、メインメッセージが正当なものであるかを判定する（例えば、特許文献１）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１３−９８７１９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ＣＡＮシステム中の各装置がデータを含むフレームを受信するたびにＭＡＣの検証を行う場合、システム中の全ての装置がカウンタ値の生成、ＭＡＣの計算、フレームから計算したＭＡＣと通知されたＭＡＣの比較処理を行うことになる。このため、受信側の装置の負荷が高くなってしまう。
【０００７】
本発明は、フレームを受信する装置の負荷を抑えてリプレイ攻撃を検出することを目的とする。
【課題を解決するための手段】
【０００８】
ある１つの態様にかかる通信制御装置は、受信部と制御部を備える。受信部は、第１の識別情報または第２の識別情報を含むデータを第１のノードから受信する。制御部は、前記第１の識別情報を含む第１のデータを前記受信部が受信すると、前記第１のデータを用いて第１の認証符号を生成する。前記受信部は、前記第１のノードから、前記第２の識別情報及び前記第１のノードが前記第１のデータを用いて生成した第２の認証符号を含む第２のデータを受信する。前記制御部は、前記第１の認証符号と前記第２の認証符号との比較の結果に基づいて、第２のノードに前記第１の識別情報を用いて通知されたデータの処理を中断させるかを決定する。
【発明の効果】
【０００９】
フレームを受信する装置の負荷を抑えてリプレイ攻撃を検出できる。
【図面の簡単な説明】
【００１０】
【図１】実施形態にかかる制御方法の例を説明するシーケンス図である。
【図２】通信制御装置の構成の例を示す図である。
【図３】ＭＡＣテーブルの例を示す図である。
【図４】送信ノードの構成の例を示す図である。
【図５】ハードウェア構成の例を示す図である。
【図６】送受信されるフレームのフォーマットの例を示す図である。
【図７】第１の実施形態が適用されるネットワークの例を説明する図である。
【図８】カウンタ値の初期値の設定方法の例を示すシーケンス図である。
【図９】ＭＡＣの生成方法の例を説明する図である。
【図１０】第１の実施形態での制御方法の例を説明するシーケンス図である。
【図１１】第１の実施形態での通信制御装置の処理の例を説明するフローチャートである。
【図１２】ネットワークの例を説明する図である。
【図１３】第２の実施形態が適用されるネットワークの例とフレームの例を説明する図である。
【図１４Ａ】第２の実施形態での制御方法の例を説明するシーケンス図である。
【図１４Ｂ】第２の実施形態での制御方法の例を説明するシーケンス図である。
【図１５】第２の実施形態での通信制御装置の処理の例を説明するフローチャートである。
【図１６】認証符号の生成方法の例を説明する図である。
【図１７】認証符号テーブルの例を示す図である。
【図１８】第３の実施形態での制御方法の例を説明するシーケンス図である。
【図１９】第３の実施形態での通信制御装置の処理の例を説明するフローチャートである。
【発明を実施するための形態】
【００１１】
図１は、実施形態にかかる制御方法の例を説明するシーケンス図である。図１は、ＣＡＮネットワーク中に、通信制御装置１０、送信ノード４０、受信ノード６０が１台ずつ設置されている場合に行われる処理の例を示すがシステム中の送信ノード４０と受信ノード６０の数は任意である。以下の説明では、システムでの処理に使用されるデータを含むフレーム（データフレーム）を送信する装置を「送信ノード」と記載する。一方、データフレームを受信するとともに、データフレーム中のデータに基づいた処理により、システムを稼働させるための処理を行うが、リプレイ攻撃を検出するための処理を行わない装置を受信ノード６０と記載する。
【００１２】
送信ノード４０は、受信ノード６０宛のデータを送信する際には第１のＩＤを使用し、通信制御装置１０との通信には、受信ノード６０で受信されない第２のＩＤを用いる。通信制御装置１０は、第１のＩＤと第２のＩＤの両方を受信の対象とする。図１の例は、第１のＩＤはＩＤ＝１２３であり、第２のＩＤはＩＤ＝７７７である。
【００１３】
ステップＳ１において、送信ノード４０は、受信ノード６０に通知するデータＡを含むデータフレームを生成する。データフレームは、第１のＩＤ（ＩＤ＝１２３）で識別されるものとする。
【００１４】
ステップＳ２において送信ノード４０は、ステップＳ１で生成したデータフレームを送信する。データフレームはブロードキャストされるので、受信ノード６０と通信制御装置１０の両方に到達する。受信ノード６０はＩＤ＝１２３を受信対象としているため、データフレームを受信し、データＡを取得する。通信制御装置１０もＩＤ＝１２３を受信対象としているため、データフレームを受信し、データＡを取得する。
【００１５】
ステップＳ３において、通信制御装置１０は、データＡからＭＡＣを計算する。図１では、通信制御装置１０でのＭＡＣの計算結果をＭＡＣ１とする。ＭＡＣの計算方法は、通信制御装置１０と送信ノード４０で共通した方法であればよく、任意の方法が使用されうる。
【００１６】
ステップＳ４に示すように、送信ノード４０でも、送信したデータＡを用いて、ＭＡＣを計算する。図１では、送信ノード４０でのＭＡＣの計算結果をＭＡＣ２とする。
【００１７】
ステップＳ５において、送信ノード４０は、第２のＩＤ（ＩＤ＝７７７）を用いて、ＭＡＣの計算結果を含むデータ（データＢ）をブロードキャストする。第２のＩＤは受信ノード６０では受信対象に設定されていないので、受信ノード６０は、データＢを含むフレームを受信せずに破棄する。一方、通信制御装置１０は、第２のＩＤを受信する対象に設定しているため、データＢを含むフレームを受信する。
【００１８】
ステップＳ６において、通信制御装置１０は、データＢから送信ノード４０において計算されたＭＡＣ２を抽出する。通信制御装置１０は、ステップＳ３で計算したＭＡＣ１とＭＡＣ２を比較する。ＭＡＣ１とＭＡＣ２が一致する場合、通信制御装置１０は、リプレイ攻撃が発生していないと判定して処理を終了する（ステップＳ６でＹｅｓ）。
【００１９】
一方、ＭＡＣ１とＭＡＣ２が一致しない場合、通信制御装置１０は、リプレイ攻撃が発生していると判定する（ステップＳ６でＮｏ、ステップＳ７）。そこで、通信制御装置１０は、受信ノード６０に対し、ＩＤ＝１２３を用いたフレームの処理の中断を要求する（ステップＳ８）。
【００２０】
このように、図１を用いて説明した制御方法では、送信ノード４０で計算されたＭＡＣの値を含むフレームは、受信ノード６０で受信されない。従って、受信ノード６０では、ＭＡＣの受信や、受信データからＭＡＣを生成する処理などを行わなくて済むため、リプレイ攻撃の検出を行うかによって受信ノード６０の負荷は変化しない。一方、通信制御装置１０では、受信ノード６０が受信したデータを用いて計算したＭＡＣと、送信ノード４０からリプレイ攻撃の有無を検証するために通知されたＭＡＣの比較を行うことによって、リプレイ攻撃の検出を行うことができる。
【００２１】
さらに、図１のように、ＭＡＣの生成やリプレイ攻撃の検出を通信制御装置１０が行うシステムでは、ＭＡＣの生成などを行うことができない受信ノード６０を使用することができるという利点もある。現在普及しているシステムに含まれる装置には、ＭＡＣの生成やリプレイ攻撃の検出を行うための処理回路などが搭載されていない。実施形態にかかる方法を用いると、個々の受信ノード６０の代わりに通信制御装置１０がリプレイ攻撃を検出できるため、データを受信する装置がＭＡＣの比較処理などを行わなくても、リプレイ攻撃を防ぐことができる。
【００２２】
＜装置構成の例とフレームのフォーマットの例＞
図２は、通信制御装置１０の構成の例を示す図である。通信制御装置１０は、送受信部１１、カウンタ１４、制御部２０、記憶部３０を備える。送受信部１１は、送信部１２と受信部１３を有する。制御部２０は、ＭＡＣ生成部２１と比較部２２と有する。記憶部３０はＭＡＣテーブル３１を記憶する。
【００２３】
送信部１２は、ＣＡＮネットワーク中の他の装置に、適宜、フレームを送信する。受信部１３は、ＣＡＮネットワーク中の他の装置から送信されたフレームのうち、通信制御装置１０において受信するように設定されたＩＤを含むフレームを受信する。受信部１３は、受信したデータフレームをＭＡＣ生成部２１に出力する。一方、受信部１３は、送信ノード４０で生成されたＭＡＣの通知に使用されているフレーム（通知フレーム）を、比較部２２に出力する。カウンタ１４は、ＭＡＣの生成に使用されるカウンタ値を生成する。カウンタ値は、適宜、記憶部３０に記憶される。
【００２４】
ＭＡＣ生成部２１は、受信部１３から入力されたフレーム中のデータと、カウンタ値を用いて、ＭＡＣを生成する。ＭＡＣの生成方法については後述する。ＭＡＣ生成部２１は、生成したＭＡＣを、フレーム中のＩＤに対応付けてＭＡＣテーブル３１に格納する。比較部２２は、受信部１３から入力されたフレーム中のＭＡＣとＭＡＣテーブル３１に格納されているＭＡＣを比較することにより、リプレイ攻撃が行われているかを判定する。比較部２２は、比較対象となっている２つのＭＡＣが一致しないと、リプレイ攻撃が発生したと判定する。
【００２５】
図３は、ＭＡＣテーブル３１の例を示す図である。ＭＡＣテーブル３１は、ＭＡＣ生成部２１で生成されたＭＡＣと、ＭＡＣの生成に使用したデータの送受信に使用されたフレーム中のＩＤを対応付けて記憶する任意の形式である。図３の例では、フレームのＩＤ、ＭＡＣの計算値、および、カウンタ値が対応付けて記録されている。カウンタ値は、ＭＡＣの生成の際に使用される値であり、カウンタ１４により適宜更新される。なお、ＭＡＣテーブル３１の形式は実装に応じて変更されうる。例えば、システム中でデータフレームの送受信には１つのＩＤしか使用されない場合は、ＭＡＣテーブル３１には、ＩＤが含まれていなくてもよい。
【００２６】
図４は、送信ノード４０の構成の例を示す図である。送信ノード４０は、送受信部４１、カウンタ４４、記憶部４５、フレーム処理部５０を備える。送受信部４１は、送信部４２と受信部４３を有する。フレーム処理部５０は、ＭＡＣ生成部５１、データフレーム生成部５２、通知フレーム生成部５３を有する。
【００２７】
送信部４２は、データフレーム生成部５２や通知フレーム生成部５３から入力されたフレームを、ＣＡＮネットワーク中の他の装置に送信する。受信部４３は、ＣＡＮネットワーク中の他の装置から、適宜、フレームを受信する。カウンタ４４は、ＭＡＣの生成に使用されるカウンタ値を生成する。カウンタ値は、適宜、記憶部４５に記憶される。
【００２８】
データフレーム生成部５２は、受信ノード６０に通知するデータを含むデータフレームを生成する。ＭＡＣ生成部５１は、データフレーム中のデータを用いてＭＡＣを計算する。通知フレーム生成部５３は、ＭＡＣ生成部５１が計算したＭＡＣを通知するための通知フレームを生成する。なお、通知フレームでは、受信ノード６０が受信しないＩＤが設定される。
【００２９】
図５は、ハードウェア構成の例を示す図である。通信制御装置１０と送信ノード４０のいずれも、図５に示すハードウェアによって実現されうる。図５の例では、通信制御装置１０と送信ノード４０のいずれも、ＥＣＵ１００として実現されている。ＥＣＵ１００は、ＣＡＮトランシーバ１０１、ＣＡＮコントローラ１０２、処理回路１０３を含む。処理回路１０３は、プロセッサ１０４とメモリ１０５を備える。
【００３０】
ＣＡＮトランシーバ１０１は、適宜、バス電圧の調整など、ＥＣＵ１００がＣＡＮネットワーク中の他の装置と通信するための処理を行う。ＣＡＮコントローラ１０２は、受信したフレームに対するＣＲＣ（Cyclic Redundancy Check）チェックやビットスタッフィングなどの処理を行うことにより、データを抽出する。ＣＡＮコントローラ１０２は、データをプロセッサ１０４に出力する。プロセッサ１０４は、任意の処理回路である。プロセッサは、メモリ１０５に格納されたプログラムを読み込んで、処理を行う。
【００３１】
通信制御装置１０では、ＣＡＮトランシーバ１０１とＣＡＮコントローラ１０２により、送受信部１１が実現される。プロセッサ１０４は、カウンタ１４および制御部２０として動作する。メモリ１０５は記憶部３０として動作する。
【００３２】
送信ノード４０では、ＣＡＮトランシーバ１０１とＣＡＮコントローラ１０２は、送受信部４１を実現する。プロセッサ１０４は、カウンタ４４およびフレーム処理部５０として動作する。メモリ１０５は記憶部４５として動作する。
【００３３】
図６は、送受信されるフレームのフォーマットの例を示す図である。図６のＦ１１は、一般仕様のフレームのフォーマット例であり、Ｆ１２は拡張仕様で使用されるフレームのフォーマット例である。
【００３４】
一般仕様のフレームは、ＳＯＦ（Start of Frame）、調停（arbitration）フィールド、コントロールフィールド、データフィールド、ＣＲＣフィールド、ＡＣＫフィールド、ＥＯＦ（End of Frame）を含む。調停フィールドには、ＩＤとＲＴＲ（Remote Transmission Request）が含まれる。ここで、ＩＤは、フレームの識別に使用される識別情報である。コントロールフィールドには、ＩＤＥ（Identifier Extension）、予約ビット、ＤＬＣ（Data Length Code）が含まれる。ＣＲＣフィールドは、ＣＲＣシーケンスとＣＲＣデリミタを含む。ＡＣＫフィールドは、ＡＣＫスロットとＡＣＫデリミタを含む。なお、各フィールドに含まれる情報要素のビット長は、Ｆ１１の一番下の行に記載したとおりである。例えば、ＩＤの長さは１１ビットであり、データフィールドの長さは０〜６４ビットの可変長である。
【００３５】
拡張仕様で使用されるフレーム（Ｆ１２）も、ＳＯＦ、調停フィールド、コントロールフィールド、データフィールド、ＣＲＣフィールド、ＡＣＫフィールド、ＥＯＦを含む。拡張仕様の調停フィールドは、ＩＤベース、ＳＲＲ（Substitute Remote Request Bit）、ＩＤＥ、ＩＤ拡張、ＲＴＲを含む。拡張仕様では、ＩＤベースとして格納されたビット列の次に、ＩＤ拡張として格納されたビット列をつなげて得られるビット列により、フレームの識別情報（ＩＤ）を表わす。コントロールフィールドからＥＯＦまでは、拡張仕様のフォーマットでも、一般仕様のフォーマットと同様である。また、各フィールドに含まれる情報要素のビット長は、Ｆ１２の一番下の行に記載したとおりである。このため、拡張フォーマットでは、送信元の識別情報として、ＩＤベースの１１ビットとＩＤ拡張の１８ビットを合わせた２９ビットのビット列が使用される。以下、図６のＦ１１に示すフォーマットを用いたフレームが送受信される場合を例として、各実施形態で行われる処理の例を説明する。なお、通信に使用されるフレームが拡張仕様の場合でも、同様に処理が行われる。
【００３６】
＜第１の実施形態＞
図７は、第１の実施形態が適用されるネットワークＮ１の例を説明する図である。ネットワークＮ１では、理解しやすくするために、通信制御装置１０、送信ノード４０、受信ノード６０が１台ずつの場合の例を示すが、システム中の送信ノード４０と受信ノード６０の数は任意である。ただし、第１の実施形態では、データフレームの送受信に使用されるＩＤは１つであるものとする。第１の実施形態では、ＩＤ＝１２３がデータフレームの送受信に使用される場合を例とする。
【００３７】
通信制御装置１０、受信ノード６０、送信ノード４０は、いずれもバス７１で接続されており、いずれかの装置から送信されたフレームは、ブロードキャストされる。各装置は、その装置において、受信対象に設定されたＩＤを含むフレームを受信し、他のフレームは破棄する。通信制御装置１０と受信ノード６０の間は、通信制御装置１０が受信ノード６０にリプレイ攻撃を検出したことを通知する信号を送るための結線７２で接続されている。
【００３８】
通信の開始前に、送信ノード４０と通信制御装置１０は、共通鍵を保持しているものとする。ここで、通信制御装置１０と送信ノード４０が共通鍵を取得する方法は、既知の任意の方法のいずれかである。送信ノード４０と通信制御装置１０は、ＭＡＣの生成の際に使用するカウンタ値が共通の値になるように、カウンタ値の初期値を設定する。ここで、カウンタ値は、ＭＡＣの生成の際に使用されるが、フレームごとに異なる値が使用される。また、カウンタ値自体はいずれの装置の間でも送受信されない。
【００３９】
図８は、カウンタ値の初期値の設定方法の例を示すシーケンス図である。通信制御装置１０は、リプレイ攻撃の検出に使用するＭＡＣを計算するために使用するカウンタ値の初期値を設定するための乱数を生成する（ステップＳ１１）。次に、通信制御装置１０は、送信ノード４０で受信されるが、受信ノード６０で受信されないＩＤを用いて、生成した乱数をブロードキャストする。なお、この通信は暗号化されていてもよい。以下の例では、送信ノード４０はＩＤ＝７７７を受信し、さらに、ＩＤ＝７７７をＭＡＣの通知にも使用するものとする。また、受信ノード６０は、ＩＤ＝７７７のフレームを受信しないものとする。そこで、通信制御装置１０は、ＩＤ＝７７７を含むフレーム中のデータフィールドに生成した乱数を含めて、ブロードキャストする（ステップＳ１２）。
【００４０】
さらに、ステップＳ１３において、通信制御装置１０は、乱数を共通鍵で暗号化することにより、カウンタ１４の初期値を生成する。通信制御装置１０は、ステップＳ１３で得られた初期値を、送信ノード４０が受信ノード６０との通信に使用するＩＤに対応付けて記憶する（ステップＳ１４）。
【００４１】
一方、送信ノード４０は、ステップＳ１２で通信制御装置１０から送信されたフレーム（ＩＤ＝７７７）を受信し、受信フレームのデータフィールドから乱数を取得する。さらに、送信ノード４０は、取得した乱数を共通鍵で暗号化することにより、カウンタ４４の初期値を生成する（ステップＳ１５）。送信ノード４０は、ステップＳ１５で得られた初期値を、カウンタ４４の初期値としてセットする（ステップＳ１６）。
【００４２】
図９は、ＭＡＣの生成方法の例を説明する図である。ＭＡＣの生成方法は、通信制御装置１０と送信ノード４０で共通しているので、第１の実施形態での処理の例を時系列に説明する前に説明する。ＭＡＣの生成方法として、ＨＭＡＣ−ＳＨＡ１（Hash-based Message Authentication Code - Secure Hash Algorithm 1）、ＨＭＡＣ−ＳＨＡ２５６などのハッシュ関数を使う方式や、ブロック暗号アルゴリズムを使う方式が使用されうる。以下の説明では、図９を参照しながらブロック暗号アルゴリズムを用いる場合の例を説明するが、ＭＡＣの生成方法は、通信制御装置１０と送信ノード４０で共通していれば、任意の方法でよい。
【００４３】
ＭＡＣの生成には、ＭＡＣを計算する対象のフレームのデータフィールド中のデータ、カウンタ値、ＭＡＣを計算する対象のフレームのＩＤ（ＣＡＮ  ＩＤ）を結合した文字列が使用される。ここで、カウンタ値は、ＭＡＣの計算の度に異なる値が用いられるようにカウンタ１４やカウンタ４４で処理された値である。図９の例では、データ、カウンタ値、ＣＡＮ  ＩＤの順に連続させた文字列を生成しているが、実装に応じて、結合される要素の順序が入れ替えられても良い。次に、ＭＡＣを生成する装置は、データ、カウンタ値、ＣＡＮ  ＩＤから得られた文字列を、共通鍵を用いて、暗号化することにより、暗号文を生成する。ＭＡＣを生成する装置は、暗号文から予め決められた方法で６４ビットを選択し、得られた値をＭＡＣとする。なお、６４ビットの選択方法は、通信制御装置１０と送信ノード４０で共通していれば、任意である。例えば、ＭＡＣ生成部２１やＭＡＣ生成部５１は、生成した暗号文の先頭の６４ビットをＭＡＣとしてもよいし、暗号文の末尾の６４ビットをＭＡＣにしても良い。
【００４４】
図１０は、第１の実施形態での制御方法の例を説明するシーケンス図である。なお、図１０は一例であり、例えば、ステップS２１とＳ２２の順序を入れ替えるなどの変更が行われても良い。
【００４５】
送信ノード４０中のＭＡＣ生成部５１は、受信ノード６０にデータフレームが送信される際のカウンタ値（カウンタ４４の値）を取得する（ステップＳ２１）。データフレーム生成部５２は、受信ノード６０に通知するデータをデータフィールドに含め、ＩＤ＝１２３のデータフレームを生成する（ステップＳ２２）。データフレーム生成部５２は、生成したデータフレームを送信部４２に出力する。送信部４２は、データフレームをブロードキャストする（ステップＳ２３）。データフレームには、受信ノード６０と通信制御装置１０のいずれでも受信されるＩＤ＝１２３が使用されているため、データフレームは、受信ノード６０と通信制御装置１０のいずれでも受信される。
【００４６】
通信制御装置１０の受信部１３は、受信したフレームのＩＤがデータフレームの送受信用の値（ＩＤ＝１２３）に設定されているため、受信したフレームをＭＡＣ生成部２１に出力する。ＭＡＣ生成部２１は、入力されたフレーム中のデータフィールドの値とＭＡＣテーブル３１中のカウンタ値を用いて、ＭＡＣ（ＭＡＣ１）を計算する（ステップＳ２４）。ＭＡＣの計算方法は、図９を参照しながら説明したとおりである。ＭＡＣ生成部２１は、ＭＡＣ１を、受信フレームのＩＤ（ＩＤ＝１２３）に対応付けて、ＭＡＣテーブル３１に記録する。その後、カウンタ１４は、次回のＭＡＣの計算に備えて、カウンタ値をインクリメントする（ステップＳ２５）。
【００４７】
一方、データフレームの送信後に、送信ノード４０中のＭＡＣ生成部５１は、送信したフレーム中のデータフィールドの値、カウンタ値、送信フレーム中のＩＤを用いて、ＭＡＣ（ＭＡＣ２）を計算する（ステップＳ２６）。ＭＡＣ生成部５１で行われるＭＡＣの計算も図９を参照しながら説明したとおりである。その後、カウンタ４４は、次回のＭＡＣの計算に備えて、カウンタ値をインクリメントする（ステップＳ２７）。
【００４８】
ＭＡＣ生成部５１は、生成したＭＡＣを通知フレーム生成部５３に出力する。通知フレーム生成部５３は、入力されたＭＡＣを通知するための通知フレームを生成する。このとき、通知フレームには、通信制御装置１０での受信対象であるが受信ノード６０の受信対象とならないＩＤが設定される。図１０の例では、ＩＤ＝７７７が、通知フレームに設定されるものとする。また、通知フレームのデータフィールドには、ＭＡＣ生成部５１で得られたＭＡＣ２が含められる。すなわち、送信ノード４０で計算されたＭＡＣ２は、通信制御装置１０において、リプレイ攻撃の発生の有無を検証するために使用される値である。ＭＡＣ生成部５１は、送信部４２を介して、通知フレームをブロードキャストする（ステップＳ２８）。すると、通知フレームは、通信制御装置１０で受信される。
【００４９】
通信制御装置１０の受信部１３は、受信したフレームのＩＤが通知フレームを示すＩＤ（ＩＤ＝７７７）であるため、通知フレームを比較部２２に出力する。比較部２２は、通知フレームが入力されると、ＭＡＣテーブル３１から計算済みのＭＡＣ１を取得する。また、比較部２２は、入力された通知フレームのデータフィールドに含まれているＭＡＣ（ＭＡＣ２）を抽出する。比較部２２は、ＭＡＣ１とＭＡＣ２が等しいかを判定する（ステップＳ２９）。ＭＡＣ１とＭＡＣ２が等しい場合、比較部２２は、リプレイ攻撃が検出されていないと判定して処理を終了する（ステップＳ２９でＹｅｓ）。
【００５０】
一方、ＭＡＣ１とＭＡＣ２が異なる場合、比較部２２は、リプレイ攻撃を検出したと判定する（ステップＳ３０）。比較部２２は、結線７２を介して、ＩＤ＝１２３のフレームの処理の中断を要求するための信号を、受信ノード６０に送信する（ステップＳ３１）。なお、信号の形式は、受信ノード６０がＩＤ＝１２３のフレームの処理の中断が要求されたことを認識することができる任意の形式であるものとする。
【００５１】
図１１は、第１の実施形態での通信制御装置１０の処理の例を説明するフローチャートである。受信部１３は、フレームを受信するまで待機する（ステップＳ４１でＮｏ）。フレームを受信すると、受信部１３は、受信フレームのＩＤがＭＡＣ通知用のＩＤであるかを判定する（ステップＳ４１でＹｅｓ、ステップＳ４２）。
【００５２】
受信フレームのＩＤがＭＡＣ通知用のＩＤではない場合、受信部１３は、受信フレームをＭＡＣ生成部２１に出力する（ステップＳ４２でＮｏ）。ＭＡＣ生成部２１は、受信フレームからＩＤとデータを抽出する（ステップＳ４３）。ＭＡＣ生成部２１は、抽出したＩＤがＭＡＣ検証対象の値であった場合、カウンタ値を取得する（ステップＳ４４）。ＭＡＣ生成部２１は、ＩＤ、データ、および、カウンタ値を用いて、ＭＡＣを生成する（ステップＳ４５）。ＭＡＣ生成部２１は、受信フレームのＩＤに対応付けて、計算したＭＡＣ（ＭＡＣ１）を記憶する（ステップＳ４６）。次に、カウンタ１４は、カウンタ値をインクリメントする（ステップＳ４７）。
【００５３】
受信フレームのＩＤがＭＡＣ通知用のＩＤである場合、受信部１３は、受信フレームを比較部２２に出力する（ステップＳ４２でＹｅｓ）。比較部２２は、入力されたフレームから、送信ノード４０で計算されたＭＡＣ（ＭＡＣ２）を抽出する（ステップＳ４８）。比較部２２は、ＭＡＣテーブル３１に記憶しているＭＡＣ（ＭＡＣ１）を取得し、ＭＡＣ１とＭＡＣ２を比較する（ステップＳ４９、Ｓ５０）。ＭＡＣ１とＭＡＣ２が等しい場合、比較部２２は処理を終了する（ステップＳ５０でＹｅｓ）。ＭＡＣ１とＭＡＣ２が異なる場合、比較部２２は、攻撃を検出したと判定する（ステップＳ５０でＮｏ、ステップＳ５１）。その後、比較部２２は、攻撃を検出したＩＤで識別されるフレームの処理の中止を、結線７２を介して、受信ノード６０に要求する。
【００５４】
このように、第１の実施形態では、受信ノード６０がＭＡＣに関する処理を行わなくても、通信制御装置１０においてリプレイ攻撃を検出できる。さらに、受信ノード６０は、通信制御装置１０からの通知により、リプレイ攻撃によって送信されたフレームの処理を中断することができる。従って、送信ノード４０の処理負担を増大させずに、リプレイ攻撃の検出と、リプレイ攻撃からのシステムの保護を実現できる。また、受信ノード６０においてはＭＡＣの処理が行われないため、通信制御装置１０との間の結線７２を設定することにより、既存のＥＣＵを受信ノード６０として使用することができる。
【００５５】
なお、第１の実施形態で使用されるＭＡＣでは、カウンタ値は、ＭＡＣの計算の度に異なる値が用いられるようにカウンタ１４やカウンタ４４で処理されている。つまり、過去に送信されたフレームが再送されたとしても、ＭＡＣ生成部２１が受信データを用いてＭＡＣを計算するときのカウンタ値は、再送されたフレームが１回目に送信されたときからカウンタ１４によって変更されている。このため、再送されているフレームに対応して送信されたＭＡＣの通知フレームが再送されたとしても、ＭＡＣの計算に用いられているカウンタ値が異なることから、比較部２２は、リプレイ攻撃を検出できる。
【００５６】
なお、通信制御装置１０は、通信制御装置に画面などのユーザへの通知手段を有していても良い。この場合、通信制御装置１０は、リプレイ攻撃検知時に結線７２を用いずに、画面などの通知手段を用いて攻撃を受けていることをユーザに通知してもよい。
【００５７】
（変形例）
図１２は、ネットワークの例を説明する図である。図１２を参照しながら第１の実施形態の変形例を説明する。図１２に示すネットワークＮ２には、通信制御装置１０、送信ノード４０、受信ノード６０、管理装置７５が含まれる。ここで、管理装置７５は、ＣＡＮシステム中での通信を管理する管理センタに設定された装置である。通信制御装置１０と管理装置７５の間は結線７３で接続されている。
【００５８】
通信制御装置１０、送信ノード４０、受信ノード６０は、互いにフレームが送受信できるようにバスで接続されているものとする。通信制御装置１０は、第１の実施形態で説明した手順によりリプレイ攻撃を検出すると、管理装置７５にリプレイ攻撃の発生を通知する。管理装置７５のオペレータは、管理装置７５にリプレイ攻撃の検出が通知されると、リプレイ攻撃を防止するための処理を行うものとする。また、管理装置７５から通知命令等が受信ノード６０に出力される場合は、管理装置７５と受信ノード６０が接続されても良い。
【００５９】
さらに別の変形例では、通信制御装置１０と受信ノード６０とが、中止命令の暗号化に使用する共通鍵と中止命令の暗号化に使用するカウンタ値を有している。この場合、通信制御装置１０は、バス７１を経由して受信ノード６０に中止命令を通知できる。なお、以下の説明では、リプレイ攻撃が検出されたフレーム中のＩＤと同じＩＤを含むフレームに対する処理の中止の要求を、「中止命令」と記載する。また、中止命令の暗号化に用いる共通のカウンタ値を、カウンタ１４やカウンタ４４で扱われるカウンタ値と容易に区別するために、中止命令の暗号化に用いる共通のカウンタ値のことを「中止カウンタ値」と記載する。中止カウンタの初期値は、図８を参照しながら説明した処理と同様の処理により、通信制御装置１０と受信ノード６０の間で、共通の値が設定される。
【００６０】
比較部２２は、リプレイ攻撃を検出すると中止命令に中止カウンタ値を続けて得られる文字列を、中止命令の暗号化用の共通鍵で暗号化する。比較部２２は、暗号化後の中止命令をデータフィールドに含むフレームを生成し、ＩＤを中止命令の送信用のＩＤに設定する。ここで、中止命令の送信用のＩＤは、受信ノード６０には受信されるが送信ノード４０に受信されない値であるものとする。通信制御装置１０は、暗号化された中止命令を含むフレームをブロードキャストする。すると、暗号化された中止命令を含むフレームは、受信ノード６０で受信されるが送信ノード４０では受信されない。
【００６１】
受信ノード６０は、受信したフレームのデータフィールド中の値を、中止命令の復号化用の共通鍵で復号することにより、中止命令に中止カウンタ値を続けた文字列を取得する。受信ノード６０は、得られた文字列中の中止カウンタ値が、受信ノード６０に保持されている値と一致する場合、通信制御装置１０から中止命令が出されたと判定して、フレームの処理を中断する。なお、この場合、受信ノード６０は、１つの中止命令を正しく受信すると、全てのフレームの処理を中断するものとする。
【００６２】
このように変形が行われる場合でも、受信ノード６０ではＭＡＣの処理が行われないので、受信ノード６０の負荷を余り大きくせずに、リプレイ攻撃の検出や、リプレイ攻撃からシステムを防衛するための処理を行うことができる。
【００６３】
＜第２の実施形態＞
第１の実施形態では、データフレームに使用されるＩＤが１種類の場合を説明したが、データフレームの送受信に複数のＩＤが使用される場合もありうる。そこで、第２の実施形態では、データフレームの送受信に複数のＩＤが使用される場合について説明する。
【００６４】
図１３は、第２の実施形態が適用されるネットワークの例とフレームの例を説明する図である。第２の実施形態では、図１３に示すネットワークＮ３が使用されるものとする。ネットワークＮ３には、通信制御装置１０、送信ノード４０（４０ａ、４０ｂ）、受信ノード６０（６０ａ、６０ｂ）が含まれる。通信制御装置１０、送信ノード４０ａ、送信ノード４０ｂ、受信ノード６０ａ、受信ノード６０ｂは、いずれも相互にフレームの送受信が可能になるように、バス７１で接続されている。また、通信制御装置１０と受信ノード６０ａは、結線７２ａで接続されている。結線７２ａは、受信ノード６０ａでの受信対象のＩＤを用いたリプレイ攻撃が検出された場合に、通信制御装置１０から受信ノード６０ａにフレームの処理の中断を要求するために使用される。同様に、通信制御装置１０と受信ノード６０ｂは、結線７２ｂで接続されている。結線７２ｂは、受信ノード６０ｂでの受信対象のＩＤを用いたリプレイ攻撃が検出された場合に、通信制御装置１０から受信ノード６０ｂにフレームの処理の中断を要求するために使用される。
【００６５】
図１３に示すフレームＦ２１は、第２の実施形態で使用される通知フレームの例である。第２の実施形態で使用される通知フレームは、データフィールド以外は、第１の実施形態と同様であるが、データフィールド内に、検出対象ＩＤとＭＡＣが含められる。なお、検出対象ＩＤは、リプレイ攻撃が行われているかを判定する対象となっているＩＤである。なお、第２の実施形態では、ＭＡＣと検出対象ＩＤの両方がデータフィールドに含まれるため、ＭＡＣのビット長は５３ビットである。第２の実施形態でのＭＡＣの生成方法は、ビット数の調整より前の手順は図９を参照しながら説明したとおりである。ＭＡＣを生成する装置は、データ、カウンタ値、ＩＤ、共通鍵を用いて生成した暗号文から、５３ビットを予め決められた方法で選択する。なお、第２の実施形態においても、通信制御装置１０と送信ノード４０ａ、送信ノード４０ｂにおいて、ＭＡＣに使用するビットの選択方法は同じであるものとする。
【００６６】
なお、通信制御装置１０が送信ノード４０ａまたは送信ノード４０ｂとの間でカウンタの初期値を設定する際にも、フレームＦ２１に示すフレームが使用される。カウンタの初期値の設定の際には、検出対象のＩＤと初期値を生成するための乱数が通信制御装置１０から送信される。各送信ノード４０は、通信制御装置１０から受信したフレーム中の検出対象ＩＤが送信処理に使うＩＤである場合、検出対象ＩＤに対応付けられている乱数を取得し、予め通信制御装置１０と交換してある共通鍵を用いて暗号化する。各送信ノード４０は、得られた値をカウンタの初期値とする。通信制御装置１０での初期値の設定は図８を参照しながら説明した処理と同様である。通信制御装置１０は、システムでデータフレームの送受信に使用されるＩＤと同数の乱数を生成し、ＩＤと対応付けて送信ノード４０に送信する。また、通信制御装置１０は、乱数を共通鍵によって暗号化した値を、ＩＤに対応付けて記憶する。
【００６７】
図１４Ａと図１４Ｂは、第２の実施形態での制御方法の例を説明するシーケンス図である。以下、送信ノード４０ａがＩＤ＝１２３のデータフレームを送信し、送信ノード４０ｂがＩＤ＝２３４のデータフレームを送信する場合を例とする。また、受信ノード６０ａはＩＤ＝１２３のフレームを受信するがＩＤ＝２３４のフレームを受信しないものとする。一方、受信ノード６０ｂはＩＤ＝２３４のフレームを受信するがＩＤ＝１２３のフレームを受信しないものとする。さらに、以下の説明では、ＭＡＣの送受信用に使用されるＩＤは、いずれの送信ノード４０でもＩＤ＝７７７であるものとする。
【００６８】
第２の実施形態では、通信制御装置１０は、通信制御装置１０と各受信ノード６０を接続する結線７２の各々について、その結線７２に接続している受信ノード６０が受信する対象のＩＤを記憶しているものとする。以下の説明では、通信制御装置１０は、結線７２ａを介した接続先（受信ノード６０ａ）はＩＤ＝１２３を受信することと、結線７２ｂを介した接続先（受信ノード６０ｂ）はＩＤ＝２３４を受信することを、記憶部３０に記憶しているものとする。
【００６９】
各ＩＤのフレームは送信されるタイミングが特に調整されない。このため、一方のＩＤについてのデータフレームの送信と、そのデータフレーム中のデータの正当性を評価するために使用されるＭＡＣを通知するフレームの送信の間に、他のＩＤを用いた送信が行われる場合もある。図１４Ａと図１４Ｂを用いて、送信ノード４０ａから通知フレームが送信される前に、送信ノード４０ｂがデータＢを含むデータフレームを送信した場合の処理を説明する。
【００７０】
また、以下の説明では、動作を行っている装置を区別し易くするために、符号の後に動作を行っている送信ノード４０に割り当てられたアルファベットを記載することがある。例えば、ＭＡＣ生成部５１ａは、送信ノード４０ａに含まれているＭＡＣ生成部５１である。
【００７１】
ステップＳ６１に示すように、通信制御装置１０は、ＩＤごとにカウンタ値を記憶している。なお、第２の実施形態において通信制御装置１０が保持しているＭＡＣテーブル３１には、送受信されるＩＤごとに、複数のエントリが含まれている。ステップＳ６１には、便宜上、ＭＡＣテーブル３１のカウンタ値とＩＤの欄を抜き出して図示している。以下、ステップＳ６１の時点では、ＩＤ＝１２３のカウンタ値はＣｘであり、ＩＤ＝２３４のカウンタ値はＣｙであるものとする。
【００７２】
ステップＳ６２において、送信ノード４０ａ中のＭＡＣ生成部５１ａは、カウンタ値を取得する。通信制御装置１０と送信ノード４０ａは、図８を参照しながら説明した手順により、予め、ＩＤ＝１２３に関するカウンタの値を一致させているので、ＭＡＣ生成部５１ａはカウンタ値としてＣｘを取得する。
【００７３】
データフレーム生成部５２ａは、データＡをデータフィールドに含めて、ＩＤ＝１２３のデータフレームを生成する（ステップＳ６３）。データフレーム生成部５２ａは、送信部４２ａを介して、データフレームをブロードキャストする（ステップＳ６４）。データフレームに含まれているＩＤは１２３であるので、データフレームは、受信ノード６０ａと通信制御装置１０のいずれでも受信される。
【００７４】
ステップＳ６５において、通信制御装置１０の受信部１３は、受信したフレームのＩＤがＩＤ＝１２３に設定されているため、受信フレームをＭＡＣ生成部２１に出力する。ＭＡＣ生成部２１は、図９を参照しながら説明した処理により、ＩＤ＝１２３に対応付けられたカウンタ値Ｃｘと、データＡを用いて、ＭＡＣ（ＭＡＣ１）を計算する。ＭＡＣ生成部２１は、ＭＡＣ１を、受信フレームのＩＤ（ＩＤ＝１２３）に対応付けて、ＭＡＣテーブル３１に記録する。ステップＳ６６において、カウンタ１４は、ＩＤ＝１２３を用いて送信されたデータを用いたＭＡＣの計算に備えて、カウンタ値をインクリメントする。
【００７５】
一方、送信ノード４０ａ中のＭＡＣ生成部５１ａは、データＡを含むフレームの送信後に、データＡ、カウンタ値Ｃｘ、送信フレーム中のＩＤを用いて、ＭＡＣ（ＭＡＣ２）を計算する（ステップＳ６７）。その後、カウンタ４４ａは、次回のＭＡＣの計算に備えて、ＩＤ＝１２３に対応付けられたカウンタ値をインクリメントする（ステップＳ６８）。
【００７６】
ステップＳ６９において、送信ノード４０ｂ中のＭＡＣ生成部５１ｂは、ＩＤ＝２３４を用いたフレームに対応するＭＡＣの計算に使用するカウンタ値Ｃｙを取得する。なお、通信制御装置１０と送信ノード４０ｂも、図８を参照しながら説明した手順により、予め、ＩＤ＝２３４に関するカウンタの値を一致させている。
【００７７】
データフレーム生成部５２ｂは、データＢをデータフィールドに含めて、ＩＤ＝２３４のデータフレームを生成する（ステップＳ７０）。データフレーム生成部５２ｂは、送信部４２ｂを介して、データフレームをブロードキャストする（ステップＳ７１）。データフレームに含まれているＩＤは２３４であるので、データフレームは、受信ノード６０ｂと通信制御装置１０に受信される。
【００７８】
ステップＳ７２において、通信制御装置１０の受信部１３は、受信したフレームのＩＤがＩＤ＝２３４であるため、受信フレームをＭＡＣ生成部２１に出力する。ＭＡＣ生成部２１は、ＩＤ＝２３４に対応付けられたカウンタ値Ｃｙと、データＢを用いて、ＭＡＣ（ＭＡＣ３）を計算する。ＭＡＣ生成部２１は、ＭＡＣ３を、受信フレームのＩＤ（ＩＤ＝２３４）に対応付けて、ＭＡＣテーブル３１に記録する。ステップＳ７３において、カウンタ１４は、ＩＤ＝２３４を用いて送信されたデータを用いたＭＡＣの計算に備えて、カウンタ値をインクリメントする。
【００７９】
一方、送信ノード４０ｂ中のＭＡＣ生成部５１ｂは、データＢを含むフレームの送信後に、データＢ、カウンタ値Ｃｙ、ＩＤ＝２３４を用いて、ＭＡＣ（ＭＡＣ４）を計算する（ステップＳ７４）。その後、カウンタ４４ｂは、ＩＤ＝２３４に対応付けられたカウンタ値をインクリメントする（ステップＳ７５）。
【００８０】
図１４Ｂでは、送信ノード４０ａの方が送信ノード４０ｂよりも先に通知フレームを送信した場合の例を示している。
【００８１】
ステップＳ７６において、送信ノード４０ａの通知フレーム生成部５３ａは、ＭＡＣ２を通知するための通知フレームを生成し、送信部４２ａを介してブロードキャストする。ここで、ＭＡＣ２は、図１３のフレームＦ２１を参照しながら説明したように、５３ビットに調整されている。このため、通知フレームのデータフィールドには、検出対象ＩＤ＝１２３であることと、ＭＡＣ２が含められる。さらに、通知フレームは、ＩＤ＝７７７に設定されている。通信制御装置１０は通知フレームを受信するが、ＩＤ＝７７７のフレームはいずれの受信ノード６０でも受信対象にならないので、受信ノード６０ａ、６０ｂは通知フレームを受信しない。
【００８２】
通信制御装置１０の受信部１３は、ステップＳ７６で受信した通知フレームを比較部２２に出力する。比較部２２は、通知フレーム中の検出対象ＩＤに対応付けられたＭＡＣをＭＡＣテーブル３１から取得する。ここでは、検出対象ＩＤはＩＤ＝１２３であるので、比較部２２は、ＭＡＣ１を取得する。さらに、比較部２２は、通知フレーム中のデータからＭＡＣ２を抽出する。比較部２２は、ＭＡＣ１がＭＡＣ２と等しいかを判定する。（ステップＳ７７）。ＭＡＣ１とＭＡＣ２が等しい場合、比較部２２は、リプレイ攻撃が検出されていないと判定する（ステップＳ７７でＹｅｓ）。一方、ＭＡＣ１とＭＡＣ２が異なる場合、比較部２２は、ＩＤ＝１２３に対するリプレイ攻撃を検出したと判定する（ステップＳ７７でＮｏ、ステップＳ７８）。比較部２２は、結線７２ａを介して、ＩＤ＝１２３のフレームの処理の中断を要求するための信号を、受信ノード６０ａに送信する（ステップＳ７９）。
【００８３】
ステップＳ８０において、送信ノード４０ｂの通知フレーム生成部５３ｂは、検出対象ＩＤ＝２３４とＭＡＣ４を通知するための通知フレームを生成し、送信部４２ｂを介してブロードキャストする。送信ノード４０ｂにおいても、通知フレームは、ＩＤ＝７７７に設定されるので、通知フレームは通信制御装置１０に受信されるが、受信ノード６０ａ、６０ｂには受信されない。
【００８４】
通信制御装置１０の比較部２２は、受信部１３を介して、通知フレームを取得する。比較部２２は、通知フレーム中の検出対象ＩＤ（ＩＤ＝２３４）に対応付けられたＭＡＣ３をＭＡＣテーブル３１から取得する。比較部２２は、ＭＡＣ３を、通知フレームによって通知されたＭＡＣ４と比較する。（ステップＳ８１）。ＭＡＣ３とＭＡＣ４が等しい場合、比較部２２は、ＩＤ＝２３４に対するリプレイ攻撃が検出されていないと判定する（ステップＳ８１でＹｅｓ）。一方、ＭＡＣ３とＭＡＣ４が異なる場合、比較部２２は、ＩＤ＝２３４に対するリプレイ攻撃を検出したと判定する（ステップＳ８１でＮｏ、ステップＳ８２）。比較部２２は、結線７２ｂを介して、ＩＤ＝２３４のフレームの処理の中断を要求するための信号を、受信ノード６０ｂに送信する（ステップＳ８３）。
【００８５】
図１５は、第２の実施形態での通信制御装置の処理の例を説明するフローチャートである。ステップＳ９１〜Ｓ９７の処理は、ＭＡＣのビット数の違いを除くと、図１１を参照しながら説明したステップＳ４１〜Ｓ４７で行われる処理と同様である。受信フレームの識別に使用されるＩＤがＭＡＣの通知用のＩＤである場合、比較部２２は、受信フレームのデータから、検出対象ＩＤとＭＡＣ（ＭＡＣ＿ａ）を抽出する（ステップＳ９２でＹｅｓ、ステップＳ９８）。比較部２２は、検出対象ＩＤに対応付けてＭＡＣテーブル３１に記憶しているＭＡＣ（ＭＡＣ＿ｂ）を取得する（ステップＳ９９）。比較部２２は、ＭＡＣ＿ａとＭＡＣ＿ｂを比較する（ステップＳ１００）。ＭＡＣ＿ａとＭＡＣ＿ｂが等しい場合、比較部２２は、検出対象ＩＤに対するリプレイ攻撃を検出しなかったと判定して処理を終了する（ステップＳ１００でＹｅｓ）。一方、ＭＡＣ＿ａとＭＡＣ＿ｂが異なる場合、比較部２２は、検出対象ＩＤに対するリプレイ攻撃を検出したと判定する（ステップＳ１００でＮｏ、ステップＳ１０１）。その後、比較部２２は、リプレイ攻撃の検出に伴って受信ノード６０への通知などの処理を行う。
【００８６】
以上説明したように、第２の実施形態では、複数のＩＤがデータフレームの送受信に使用される場合であっても、受信ノード６０にかかる負荷の増大を防ぎつつ、リプレイ攻撃を検出することができる。
【００８７】
なお、第１の実施形態と同様に、ネットワークに含まれている装置の種類に応じて、リプレイ攻撃の検出後の処理を、管理装置７５を介した処理に変更しても良い。
【００８８】
＜第３の実施形態＞
第３の実施形態では、送信ノード４０が複数のデータフレームの送信後に、送信したデータフレームの各々から得られたＭＡＣを用いて生成した認証符号を送信する場合について説明する。第３の実施形態で使用される通信制御装置１０は、ＭＡＣテーブル３１の代わりに認証符号テーブル３２（図１７）を記憶している。以下の説明では、理解しやすくするために、ネットワークＮ１（図７）に第３の実施形態が適用される場合を例として説明するが、第３の実施形態は、任意の数の送信ノード４０や受信ノード６０を含むネットワークに適用され得る。
【００８９】
図１６は、認証符号の生成方法の例を説明する図である。図１６は、ＩＤ１が検出対象ＩＤである場合の例を示している。例えば、フレームＦ３１〜Ｆ３３（図示せず）を用いて認証符号が生成されるとする。平文Ｐ１は、フレームＦ３１中のデータ、フレームＦ３１が送信されるときのカウンタ値、フレームＦ３１の識別に使用されたＩＤを結合して得られるビット列である。同様に、平文Ｐ２は、フレームＦ３２中のデータ、カウンタ値、ＩＤを結合して得られるビット列である。また、平文Ｐ３は、フレームＦ３３中のデータ、カウンタ値、ＩＤを結合して得られるビット列である。平文Ｐ１〜Ｐ３は、暗号化され、得られた暗号文からＭＡＣ３１〜３３が得られる。平文の各々からＭＡＣが生成されるときの処理は、図９を参照しながら説明した処理と同様である。
【００９０】
その後、ＭＡＣを演算処理することにより、認証符号が得られる。図１６の例では、ＭＡＣ３１〜３３の排他的論理和（ＸＯＲ）により認証符号が計算されている。なお、図１６には、紙面の都合上、３つ以上のフレームから認証符号が計算される場合を示しているが、認証符号の計算に使用されるフレームの数は任意の複数である。
【００９１】
なお、図１６では、認証符号が６４ビットである場合を例として説明したが、認証符号は６４ビット未満の値でも良い。この場合、認証符号の生成に使用されるＭＡＣの各々の長さが６４ビットよりも短い。例えば、データフレームから生成されるＭＡＣが５３ビットの場合、認証符号も５３ビットとなる。
【００９２】
図１７は、認証符号テーブル３２の例を示す図である。認証符号テーブル３２には、検出対象ＩＤ、認証符号、カウンタ値、変数ｎを含む。認証符号は、検出対象ＩＤを用いて送信されたデータフレームのうち、変数ｎと同数のフレームを用いて計算された認証符号である。変数ｎは、認証符号の計算に使用されたデータフレームの数を計数するために使用される値である。カウンタ値は、第１および第２の実施形態と同様に、カウンタ１４によって生成され、ＭＡＣの生成に使用される。
【００９３】
図１８は、第３の実施形態での制御方法の例を説明するシーケンス図である。図１８を参照しながら、データフレームが２回送信されるごとに、１つの通知フレームが送信される場合の処理の例を説明する。なお、図１８の例でも、データフレームにはＩＤ＝１２３が使用され、通知フレームにはＩＤ＝７７７が使用されるものとする。また、認証符号がいずれの装置により生成された符号かを区別しやすくするために、通信制御装置１０が生成、更新している認証符号を認証符号Ｘと表わし、送信ノード４０が生成、更新している認証符号を認証符号Ｙとする。また、図１８の例では、データフレームの送受信に使用されるＩＤが１種類の場合を例としている。
【００９４】
ステップＳ１１１の処理が開始される際に通信制御装置１０が保持している認証符号テーブル３２では、ＩＤ＝１２３に対応付けられた値は以下のとおりであるものとする。
検出対象ＩＤ＝１２３
認証符号Ｘ  ＝０
カウンタ値  ＝Ｃ１
変数ｎ      ＝０
【００９５】
さらに、送信ノード４０が記憶している認証符号Ｙと、認証符号の生成に使用されたフレーム数も０に初期化されているものとする。なお、送信ノード４０では、通知フレーム生成部５３が認証符号Ｙと、認証符号Ｙの計算に使用したフレーム数を管理しているものとする。
【００９６】
送信ノード４０中のＭＡＣ生成部５１は、データフレームの送信に際してカウンタ値を取得する（ステップＳ１１１）。データフレーム生成部５２は、データＡを含むデータフレームを生成すると、送信部４２を介してブロードキャストする（ステップＳ１１２）。データフレームは、受信ノード６０と通信制御装置１０の両方で受信される。
【００９７】
通信制御装置１０のＭＡＣ生成部２１は、受信部１３を介してデータフレームを取得すると、ＭＡＣ（ＭＡＣ１）を計算する（ステップＳ１１３）。ＭＡＣ生成部２１は、ＭＡＣ１を用いて、認証符号テーブル３２中の認証符号（認証符号Ｘ）を更新する（ステップＳ１１４）。ステップＳ１１４の処理により、認証符号テーブル３２では認証符号の初期値がＭＡＣ１で置換される。また、ＭＡＣ生成部２１は、ＩＤ＝１２３に対応付けられている変数ｎをインクリメントする。さらに、カウンタ１４は、カウンタ値をインクリメントする（ステップＳ１１５）。このため、ステップＳ１１５の処理が終わった時点では、認証符号テーブル３２に以下の情報が記録される。
検出対象ＩＤ＝１２３
認証符号    ＝ＭＡＣ１
カウンタ値  ＝Ｃ２
変数ｎ      ＝１
【００９８】
一方、送信ノード４０においても、データＡを含むデータフレームの送信後、ＭＡＣ生成部５１はＭＡＣ（ＭＡＣ２）を生成する（ステップＳ１１６）。通知フレーム生成部５３は、ＭＡＣ２を用いて認証符号Ｙを更新する（ステップＳ１１７）。なお、このとき、通知フレーム生成部５３は、１つのデータフレームが認証符号Ｙの生成に使用されていることを記憶する。カウンタ４４は、送信ノード４０でのＭＡＣの計算に使用されるカウンタ値をインクリメントする（ステップＳ１１８）。
【００９９】
次に、送信ノード４０は、データＢを含むデータフレームをブロードキャストする（ステップＳ１１９）。ステップＳ１１９での処理はステップＳ１１２と同様である。データＢを含むデータフレームも、受信ノード６０と通信制御装置１０の両方で受信される。
【０１００】
通信制御装置１０のＭＡＣ生成部２１は、受信部１３を介して、データＢを含むデータフレームを取得し、ＭＡＣ（ＭＡＣ３）を計算する（ステップＳ１２０）。ＭＡＣ生成部２１は、ＭＡＣ３を用いて、認証符号テーブル３２中の認証符号Ｘを更新する（ステップＳ１２１）。ステップＳ１２１の処理により、認証符号Ｘは、ＭＡＣ１とＭＡＣ３のＸＯＲで得られる値になる。また、ＭＡＣ生成部２１は、ＩＤ＝１２３に対応付けられている変数ｎをインクリメントする。さらに、カウンタ１４は、カウンタ値をインクリメントする（ステップＳ１２２）。
【０１０１】
一方、送信ノード４０においても、ＭＡＣ生成部５１は、データＢを含むデータフレームを用いてＭＡＣ（ＭＡＣ４）を生成する（ステップＳ１２３）。通知フレーム生成部５３は、ＭＡＣ４を用いて認証符号Ｙを更新する（ステップＳ１２４）。カウンタ４４は、送信ノード４０でのＭＡＣの計算に使用されるカウンタ値をインクリメントする（ステップＳ１２５）。
【０１０２】
ところで、認証符号Ｙの更新により、更新後の認証符号Ｙは、２つのデータフレームを用いて生成されたことになる。そこで、通知フレーム生成部５３は、データフィールドに認証符号Ｙを含めた通知フレームを生成し、通知フレームのＩＤをＩＤ＝７７７に設定した上でブロードキャストする（ステップＳ１２６）。通知フレームは通信制御装置１０に受信されるが、受信ノード６０では受信されない。
【０１０３】
通信制御装置１０の比較部２２は、受信部１３を介して、通知フレームを取得する。比較部２２は、通知フレームで通知された認証符号Ｙと、ＭＡＣテーブル３１に記録されている認証符号Ｘとを比較する（ステップＳ１２７）。認証符号Ｙと認証符号Ｘが一致している場合、比較部２２は、ＩＤ＝１２３に対するリプレイ攻撃が検出されていないと判定し、処理を終了する（ステップＳ１２７でＹｅｓ）。一方、認証符号Ｙと認証符号Ｘが異なる場合、比較部２２は、ＩＤ＝１２３に対するリプレイ攻撃を検出したと判定する（ステップＳ１２７でＮｏ、ステップＳ１２８）。比較部２２は、結線７２を介して、ＩＤ＝１２３のフレームの処理の中断を要求するための信号を、受信ノード６０に送信する（ステップＳ１２９）。
【０１０４】
以上、図１６〜図１８を参照しながら、通知フレームのデータフィールド中に認証符号のみが含まれている場合の例を説明したが、認証符号の長さが６４ビット未満の場合、通知フレームは認証符号以外の情報をデータフィールドに含んでも良い。例えば、認証符号が５３ビットの場合、図１３のフレームＦ２１のＭＡＣを認証符号に置き換えたものが通知フレームとして使用されうる。このように変形されると、通知フレーム中に検出対象ＩＤが含まれるので、データフレームの送受信に複数のＩＤが使用されている場合であっても、第３の実施形態を適用できる。データフレームの送受信に複数のＩＤが使用されている場合にも対応しているシステム中で行われる処理の例を、図１９を参照しながら説明する。
【０１０５】
図１９は、第３の実施形態での通信制御装置１０の処理の例を説明するフローチャートである。図１９では、定数ｋを用いる。定数ｋは、送信ノード４０が通知フレームを送信するまでに送信するデータフレームの数である。従って、通知フレーム中の認証符号は、定数ｋと同数のデータフレームから生成されている。
【０１０６】
比較部２２は、変数ｎ＝０に設定し、認証符号テーブル３２中の認証符号Ｘも０に設定する（ステップＳ１４１）。ここで、ステップＳ１４１の処理は、通信制御装置１０が動作を開始したときと、比較部２２での比較処理が終わるごとに行われる。受信部１３は、フレームを受信するまで待機する（ステップＳ１４２でＮｏ）。フレームを受信すると、受信部１３は、受信フレームのＩＤが認証符号の通知用のＩＤであるかを判定する（ステップＳ１４２でＹｅｓ、ステップＳ１４３）。
【０１０７】
受信フレームのＩＤが認証符号の通知用のＩＤではない場合、受信部１３は、受信フレームをＭＡＣ生成部２１に出力する（ステップＳ１４３でＮｏ）。ＭＡＣ生成部２１は、受信フレームからＩＤとデータを抽出する（ステップＳ１４４）。ＭＡＣ生成部２１は、カウンタ値を取得する（ステップＳ１４５）。ＭＡＣ生成部２１は、ＩＤ、データ、および、カウンタ値を用いて、ＭＡＣを生成する（ステップＳ１４６）。ＭＡＣ生成部２１は、受信フレームのＩＤ（検出対象ＩＤ）に対応付けられている認証符号を、ＭＡＣを用いて、更新する（ステップＳ１４７）。ＭＡＣ生成部２１は、変数ｎをインクリメントする（ステップＳ１４８）。次に、カウンタ１４は、カウンタ値をインクリメントする（ステップＳ１４９）。その後、ステップＳ１４２に戻る。
【０１０８】
受信フレームのＩＤが認証符号の通知用のＩＤである場合、受信部１３は、受信フレームを比較部２２に出力する（ステップＳ１４３でＹｅｓ）。比較部２２は、入力されたフレームから、検出対象ＩＤと、送信ノード４０で計算された認証符号（認証符号Ｙ）を抽出する（ステップＳ１５０）。比較部２２は、認証符号テーブル３２において検出対象ＩＤに対応付けられているエントリ中の変数ｎの値が定数ｋと一致しているかを判定する（ステップＳ１５１）。変数ｎの値が定数ｋと一致しない場合、送信ノード４０が送信していないフレームが、攻撃者から検出対象ＩＤを用いて送信された可能性がある（ステップＳ１５１でＮｏ）。そこで、比較部２２は、検出対象ＩＤに対する攻撃を検出したと判定する（ステップＳ１５４）。
【０１０９】
変数ｎの値が定数ｋと一致する場合、比較部２２は、検出対象ＩＤに対応付けて認証符号テーブル３２に記憶している認証符号（認証符号Ｘ）を取得する（ステップＳ１５１でＹｅｓ、ステップＳ１５２）。さらに、比較部２２は、認証符号Ｘと認証符号Ｙを比較する（ステップＳ１５３）。認証符号Ｘと認証符号Ｙが等しい場合、比較部２２は、検出対象ＩＤに対する攻撃は検出されていないと判定して、処理を終了する（ステップＳ１５３でＹｅｓ）。認証符号Ｘと認証符号Ｙが異なる場合、比較部２２は、攻撃を検出したと判定する（ステップＳ１５３でＮｏ、ステップＳ１５４）。その後、比較部２２は、攻撃を検出したＩＤで識別されるフレームの処理の中止を、結線７２を介して、受信ノード６０に要求する。
【０１１０】
第３の実施形態によると、データフレームが送信ノード４０からｋ個送信される度に、１つの通知フレームが送信されることになる。つまり、ｋ個のデータフレームの正当性を判定するための処理対象となるフレームの数はｋ＋１個である。一方、第1および第２の実施形態では、１つのデータフレームに対して１つの通知フレームが送信されるので、ｋ個のデータフレームの正当性を判定するためには２ｋ個のフレームが処理されることになる。従って、第３の実施形態では、第１および第２の実施形態に比べて通信制御装置１０での処理負荷が小さく、処理速度も速くなる。
【０１１１】
＜その他＞
なお、実施形態は上記に限られるものではなく、様々に変形可能である。例えば、ＭＡＣテーブル３１、認証符号テーブル３２、フレームのフォーマットは一例であり、実装に応じて変更され得る。
【０１１２】
また、第３の実施形態においては、各認証符号の算出の際に使用されるカウンタ値の組合せが認証符号ごとに異なればよく、ＭＡＣごとにカウンタ値が異なっていなくても良い。このため、通信制御装置１０および送信ノード４０は、１つの認証符号で正当性を評価するｋ個のデータフレームからＭＡＣを計算するときに同じカウンタ値を使用してもよい。この場合、送信ノード４０は、通知フレームを送信するたびにカウンタ値をインクリメントする。一方、通信制御装置１０も、認証符号を用いた判定の後でカウンタ値を変更する。
【０１１３】
以上の説明では、ＣＡＮの一般仕様のフレームが送受信される場合を例として説明したが、ＣＡＮの拡張仕様のフレームやＣＡＮ  ＦＤ（CAN with Flexible Data-Rate）で使用されるフレームが送受信される場合にも、上述の各実施形態を適用できる。
【０１１４】
また、第２および第３の実施形態においても、通信制御装置１０がリプレイ攻撃を検出したときの処理は、第１の実施形態の変形例で述べたように、変形されても良い。
【０１１５】
上述の第１〜第３の実施形態を含む実施形態に関し、さらに以下の付記を開示する。
（付記１）
第１の識別情報または第２の識別情報を含むデータを第１のノードから受信する受信部と、
前記第１の識別情報を含む第１のデータを前記受信部が受信すると、前記第１のデータを用いて第１の認証符号を生成する制御部
を備え、
前記受信部は、前記第１のノードから、前記第２の識別情報及び前記第１のノードが前記第１のデータを用いて生成した第２の認証符号を含む第２のデータを受信し、
前記制御部は、前記第１の認証符号と前記第２の認証符号との比較の結果に基づいて、第２のノードに前記第１の識別情報を用いて通知されたデータの処理を中断させるかを決定する
ことを特徴とする通信制御装置。
（付記２）
前記第１のデータの受信から前記第２のデータの受信までに、前記受信部が前記第１のノードから前記第１の識別情報と共に第３のデータを受信した場合、前記制御部は、前記第１の認証符号の生成に、前記第３のデータをさらに使用し、
前記第２の認証符号は、前記第１のデータの送信から前記第２のデータの送信までに、前記第１のノードが前記第１の識別情報を用いて送信したデータから生成され、
前記制御部は、前記第１の認証符号と前記第２の認証符号が一致しない場合、前記第２のノードに前記第１の識別情報を用いて通知されたデータの処理を中断させる
ことを特徴とする付記１に記載の通信制御装置。
（付記３）
前記第１のノードが前記第２のデータを送信するまでに前記第１の識別情報を用いて送信するデータの送信数として予め決められた値を記憶する記憶部
をさらに備え、
前記制御部は、前記第２の認証符号を取得した時点で、前記第１の認証符号の生成に使用したデータ数と前記送信数が一致しない場合、前記第２のノードに前記第１の識別情報を用いて通知されたデータの処理を中断させる
ことを特徴とする付記２に記載の通信制御装置。
（付記４）
前記受信部は、第３のノードから、前記第２の識別情報または第３の識別情報を含むデータをさらに受信し、
前記第２の識別情報を含むデータは、処理を中断するかの判定対象となる識別情報を示す値を含み、
前記制御部は、
前記第１の認証符号を前記第１の識別情報に対応付けて記憶し、
前記第３の識別情報を含む第４のデータを用いて第３の認証符号を生成すると共に、前記第３の認証符号を前記第３の識別情報に対応付けて記憶し、
前記第１の識別情報を前記判定対象とし、前記第１の識別情報に前記第１のノードで計算された認証符号を対応付けた第５のデータを、前記受信部が前記第２の識別情報を用いて受信すると、前記第５のデータ中の認証符号と前記第１の認証符号を比較し、
前記第３の識別情報を前記判定対象とし、前記第３の識別情報に前記第３のノードで計算された認証符号を対応付けた第６のデータを、前記受信部が前記第２の識別情報を用いて受信すると、前記第６のデータ中の認証符号と前記第３の認証符号を比較し、
比較処理の結果を用いて、処理の中断を行うかを判定する
ことを特徴とする付記１〜３のいずれかに記載の通信制御装置。
（付記５）
複数のノード間の通信制御を行う通信制御方法において、
第１のノードから第１の識別情報を含む第１のデータを受信し、
受信した前記第１のデータを用いて第１の認証符号を生成し、
前記第１のノードから、第２の識別情報及び前記第１のノードにおいて前記第１のデータを用いて生成された第２の認証符号を含む第２のデータを受信し、
前記第１の認証符号と前記第２の認証符号とを比較し、
前記比較の結果に基づいて、第２のノードに対し、前記第１の識別情報を用いて通知されたデータの処理を中断させるかを判定する
ことを特徴とする通信制御方法。
（付記６）
前記第１のデータの受信から前記第２のデータの受信までに、前記第１のノードから前記第１の識別情報と共に第３のデータを受信した場合、前記第１の認証符号の生成に、前記第３のデータをさらに使用し、
前記第２の認証符号は、前記第１のデータの送信から前記第２のデータの送信までに、前記第１のノードが前記第１の識別情報を用いて送信したデータから生成され、
前記第１の認証符号と前記第２の認証符号が一致しない場合、前記第２のノードに前記第１の識別情報を用いて通知されたデータの処理を中断させる
ことを特徴とする付記５に記載の通信制御方法。
（付記７）
前記第２の認証符号を取得した時点で、前記第１の認証符号の生成に使用したデータ数と、前記第１のノードが前記第２のデータを送信するまでに前記第１の識別情報を用いて送信するデータの送信数として予め決められた値が一致しない場合、前記第２のノードに前記第１の識別情報を用いて通知されたデータの処理を中断させる
ことを特徴とする付記６に記載の通信制御方法。
（付記８）
前記第１の認証符号を前記第１の識別情報に対応付けて記憶し、
第３のノードから第３の識別情報を含む第４のデータを受信すると、前記第４のデータを用いて第３の認証符号を生成すると共に、前記第３の認証符号を前記第３の識別情報に対応付けて記憶し、
前記第１の識別情報に前記第１のノードで計算された認証符号を対応付けた第５のデータを、前記第２の識別情報を用いて受信すると、前記第５のデータ中の認証符号と前記第１の認証符号を比較し、
前記第３の識別情報に前記第３のノードで計算された認証符号を対応付けた第６のデータを、前記第２の識別情報を用いて受信すると、前記第６のデータ中の認証符号と前記第３の認証符号を比較し、
比較処理の結果を用いて、処理の中断を行うかを判定する
ことを特徴とする付記５〜７のいずれかに記載の通信制御方法。
（付記９）
複数のノード間の通信制御を行う通信制御装置に、
第１のノードから第１の識別情報を含む第１のデータを受信し、
受信した前記第１のデータを用いて第１の認証符号を生成し、
前記第１のノードから、第２の識別情報及び前記第１のノードにおいて前記第１のデータを用いて生成された第２の認証符号を含む第２のデータを受信し、
前記第１の認証符号と前記第２の認証符号とを比較し、
前記比較の結果に基づいて、第２のノードに対し、前記第１の識別情報を用いて通知されたデータの処理を中断させるかを判定する
処理を行わせることを特徴とする通信制御プログラム。
（付記１０）
前記第１のデータの受信から前記第２のデータの受信までに、前記第１のノードから前記第１の識別情報と共に第３のデータを受信した場合、前記第１の認証符号の生成に、前記第３のデータをさらに使用し、
前記第２の認証符号は、前記第１のデータの送信から前記第２のデータの送信までに、前記第１のノードが前記第１の識別情報を用いて送信したデータから生成され、
前記第１の認証符号と前記第２の認証符号が一致しない場合、前記第２のノードに前記第１の識別情報を用いて通知されたデータの処理を中断させる
処理を前記通信制御装置に行わせることを特徴とする付記９に記載の通信制御プログラム。
（付記１１）
前記第２の認証符号を取得した時点で、前記第１の認証符号の生成に使用したデータ数と、前記第１のノードが前記第２のデータを送信するまでに前記第１の識別情報を用いて送信するデータの送信数として予め決められた値が一致しない場合、前記第２のノードに前記第１の識別情報を用いて通知されたデータの処理を中断させる
処理を前記通信制御装置に行わせることを特徴とする付記１０に記載の通信制御プログラム。
（付記１２）
前記第１の認証符号を前記第１の識別情報に対応付けて記憶し、
第３のノードから第３の識別情報を含む第４のデータを受信すると、前記第４のデータを用いて第３の認証符号を生成すると共に、前記第３の認証符号を前記第３の識別情報に対応付けて記憶し、
前記第１の識別情報に前記第１のノードで計算された認証符号を対応付けた第５のデータを、前記第２の識別情報を用いて受信すると、前記第５のデータ中の認証符号と前記第１の認証符号を比較し、
前記第３の識別情報に前記第３のノードで計算された認証符号を対応付けた第６のデータを、前記第２の識別情報を用いて受信すると、前記第６のデータ中の認証符号と前記第３の認証符号を比較し、
比較処理の結果を用いて、処理の中断を行うかを判定する
処理を前記通信制御装置に行わせることを特徴とする付記９〜１１のいずれかに記載の通信制御プログラム。
【符号の説明】
【０１１６】
１０  通信制御装置
１１、４１  送受信部
１２、４２  送信部
１３、４３  受信部
１４、４４  カウンタ
２０  制御部
２１、５１  ＭＡＣ生成部
２２  比較部
３０、４５  記憶部
３１  ＭＡＣテーブル
３２  認証符号テーブル
４０  送信ノード
５０  フレーム処理部
５２  データフレーム生成部
５３  通知フレーム生成部
６０  受信ノード
７１  バス
７２、７３  結線
１０１  ＣＡＮトランシーバ
１０２  ＣＡＮコントローラ
１０３  処理回路
１０４  プロセッサ
１０５  メモリ
【図１】
0006488702.tif 000002
【図２】
0006488702.tif 000003
【図３】
0006488702.tif 000004
【図４】
0006488702.tif 000005
【図５】
0006488702.tif 000006
【図６】
0006488702.tif 000007
【図７】
0006488702.tif 000008
【図８】
0006488702.tif 000009
【図９】
0006488702.tif 000010
【図１０】
0006488702.tif 000011
【図１１】
0006488702.tif 000012
【図１２】
0006488702.tif 000013
【図１３】
0006488702.tif 000014
【図１４Ａ】
0006488702.tif 000015
【図１４Ｂ】
0006488702.tif 000016
【図１５】
0006488702.tif 000017
【図１６】
0006488702.tif 000018
【図１７】
0006488702.tif 000019
【図１８】
0006488702.tif 000020
【図１９】
0006488702.tif 000021