(57)【要約】【課題】不正なフレームを用いた攻撃に対するシステムの耐性を強化する。【解決手段】通信制御装置は、フレームの識別情報を用いてフレームを受信するかを判定する複数の通信装置の間の通信を制御する。通信制御装置は、記憶部、制御部、選択部を備える。記憶部は、複数の通信装置のいずれかに接続された複数のポートの各々と、当該ポートに接続された通信装置が送信処理に使用する識別情報を対応付けて記憶する。制御部は、第１のフレームを識別する第１の識別情報が第１のフレームの受信ポートに対応付けられていない場合、複数の通信装置のいずれでも受信されない第２の識別情報を設定した第２のフレームを生成する。選択部は、第１のフレームと共に第２のフレームを取得すると、第１のフレームの代わりに第２のフレームを複数の通信装置に送信するための処理を行う【選択図】図３
2016116132.tif 000002
【特許請求の範囲】
【請求項１】
フレームの識別情報を用いて前記フレームを受信するかを判定する複数の通信装置の間の通信を制御する通信制御装置であって、
前記複数の通信装置のいずれかに接続された複数のポートの各々と、当該ポートに接続された通信装置が送信処理に使用する識別情報を対応付けて記憶する記憶部と、
第１のフレームを識別する第１の識別情報が前記第１のフレームの受信ポートに対応付けられていない場合、前記複数の通信装置のいずれでも受信されない第２の識別情報を設定した第２のフレームを生成する制御部と、
前記第１のフレームと共に前記第２のフレームを取得すると、前記第１のフレームの代わりに前記第２のフレームを前記複数の通信装置に送信するための処理を行う選択部
を備えることを特徴とする通信制御装置。
【請求項２】
前記制御部は、
前記選択部に入力される信号を取得し、
前記第１の識別情報の先頭ビットから比較対象のビットまでの第１のビット列が前記受信ポートに対応付けられた識別情報のいずれかと一致する場合、前記第１のフレーム中の比較対象とした対象ビットの複製を前記第２のフレーム中のビットとして、前記選択部に出力し、
前記第１のビット列が前記受信ポートに対応付けられた識別情報のいずれにも一致しないことを特定すると、前記第２の識別情報のうちで前記選択部に出力されていない第２のビット列の値を、前記第１の識別情報中の前記対象ビット以降の値よりも前記選択部で優先される値に設定する
ことを特徴とする請求項１に記載の通信制御装置。
【請求項３】
前記記憶部は、前記複数の通信装置のいずれでも受信されない識別情報のリストを記憶し、
前記制御部は、前記リスト中の識別情報から、前記第２の識別情報を選択する
ことを特徴とする請求項１または２に記載の通信制御装置。
【請求項４】
フレームの識別情報を用いて前記フレームを受信するかを判定する複数の通信装置の間の通信を制御する通信制御装置が、
第１のフレームを識別する第１の識別情報は、前記第１のフレームの受信ポートに接続された通信装置での送信処理に使用される識別情報として、前記受信ポートに対応付けられているかを判定し、
前記第１の識別情報が前記受信ポートに対応付けられていない場合、前記複数の通信装置のいずれでも受信されない第２の識別情報を設定した第２のフレームを生成し、
前記第１のフレームの代わりに前記第２のフレームを前記複数の通信装置に送信する
処理を行うことを特徴とする通信制御方法。
【請求項５】
前記通信制御装置は、
前記第１の識別情報の先頭ビットから比較対象のビットまでの第１のビット列が前記受信ポートに対応付けられた識別情報のいずれかと一致する場合、前記第１のフレーム中の比較対象とした対象ビットを前記第２のフレーム中のビットとして複製し、
前記第１のビット列が前記受信ポートに対応付けられた識別情報のいずれにも一致しないことを特定すると、前記第２の識別情報のうちで前記選択部に出力されていない第２のビット列の値を、前記第１の識別情報中の前記対象ビット以降の値よりも、前記複数の通信装置への送信対象として優先される値に設定する
ことを特徴とする請求項４に記載の通信制御方法。
【請求項６】
フレームの識別情報を用いて前記フレームを受信するかを判定する複数の通信装置の間の通信を制御する通信制御装置に、
第１のフレームを識別する第１の識別情報は、前記第１のフレームの受信ポートに接続された通信装置での送信処理に使用される識別情報として、前記受信ポートに対応付けられているかを判定し、
前記第１の識別情報が前記受信ポートに対応付けられていない場合、前記複数の通信装置のいずれでも受信されない第２の識別情報を設定した第２のフレームを生成し、
前記第１のフレームの代わりに前記第２のフレームを前記複数の通信装置に送信する
処理を行わせることを特徴とする通信制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信装置間の通信の制御に関する。
【背景技術】
【０００２】
自動車の車載ネットワークやファクトリーオートメーションなどに使用される装置間で、データや制御情報を送受信するために、ＣＡＮ（Controller Area Network）と呼ばれるネットワーク技術が使用されることがある。ＣＡＮでは、ＥＣＵ（electronic control unit）と呼ばれる装置間の接続にＣＡＮハブが使用されることがある。
【０００３】
図１は、ＣＡＮハブ１０を含むシステムで行われるフレームの送受信の例を示す。図１の例では、ＣＡＮハブ１０にＥＣＵ５（５ａ〜５ｃ）が接続されている。ＣＡＮハブ１０は、あるポートから入力された信号を、ＣＡＮトランシーバ１１（１１ａ〜１１ｃ）と通信調停部１２を介して、全てのポートに出力する。なお、同時に複数のフレームを受信すると、通信調停部１２は、出力対象とするフレームを決定する。ここで、通信に使用されるフレームには、識別情報（ＩＤ）が含まれている。また、各ＥＣＵは、受信するフレームの識別情報を、予め記憶している。
【０００４】
例えば、ＥＣＵ５ｂはＩＤ＝７８９のフレームを受信し、ＥＣＵ５ｃはＩＤ＝１２３のフレームを受信するものとする。また、ＥＣＵ５ａは、ＩＤ＝１２３またはＩＤ＝４５６のフレームを送信するように設定されている。例えば、図１に示すように、ＥＣＵ５ａがＩＤ＝１２３を指定したフレームＦ１を送信したとする。すると、フレームＦ１はＣＡＮハブ１０の全てのポートから出力されるので、ＥＣＵ５ａ〜５ｃの全てに向けてフレームＦ１が出力される。ＥＣＵ５ｂは、受信対象のフレームのＩＤは７８９であるので、フレームＦ１を廃棄する。一方、ＥＣＵ５ｃは、ＩＤが１２３であるので、フレームＦ１を受信し、適宜、処理を行う。
【０００５】
図２は、送信処理に使用するＩＤとして設定されていないＩＤを用いた送信処理が行われた場合の例を示す。例えば、ＥＣＵ５ａが外部からの攻撃を受けたことにより、送信処理に使用するＩＤとして設定されていないＩＤ＝７８９を設定したフレームＦ２を送信したとする。フレームＦ２も全てのポートから出力されるので、フレームＦ２がＥＣＵ５ａ〜５ｃに向けて送信される。すると、ＩＤ＝７８９のフレームを受信するように設定されたＥＣＵ５ｂは、フレームＦ２を受信するが、ＥＣＵ５ｃはフレームＦ２を破棄する。従って、ＥＣＵ５ａが送信処理に使用するＩＤが変更されたことにより、ＥＣＵ５ｂは、ＥＣＵ５ｂが本来受信しないＥＣＵ５ａからのフレームをフレームＦ２として受信し、フレームＦ２の処理を行うことになる。このように、本来はＥＣＵ５ｂで処理されないデータを含むフレームＦ２がＥＣＵ５ｂで処理されることにより、システムへの問題が発生する恐れがある。
【０００６】
このような不正なフレームをＥＣＵ５が受信することを避けるための技術も考案されている。例えば、ＣＡＮハブ１０の各ポートと、接続されているＥＣＵ５が送信に使用するＩＤを対応付け、対応付けられていないＩＤを含むフレームが入力されたポートと通信調停部１２の間の結線をスイッチで切断することが提案されている。
【０００７】
また、関連する技術として、データ送信を抑制させる対象の装置に送信不成功の状態を擬似的に発生させてから、抑制対象でない装置間で通信を行うことにより、特定の装置間での通信を優先する方法が提案されている（例えば、特許文献１）。さらに、ゲートウェイ装置を通過する特定のデータを出力する際に、ゲートウェイ装置を通過しないダミーデータを出力することによりデータの中継を確実に行う方法も提案されている（例えば、特許文献２）。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００４−３６３７６１号公報
【特許文献２】特開２０１４−３６４１７号公報
【非特許文献】
【０００９】
【非特許文献１】関口大樹、他３名、「不正ＣＡＮデータ送信を抑制するホワイトリスト・ハブ」、暗号と情報セキュリティシンポジウムＳＣＩＳ２０１４予稿集、電子情報通信学会、２０１４年１月、ＳＣＩＳ２０１４−２−Ｃ１−１
【発明の概要】
【発明が解決しようとする課題】
【００１０】
背景技術で述べた方法を用いても、不正なフレームを用いた攻撃からシステムを保護することは困難である。例えば、不正なフレームの入力に使用される結線を切断しても、入力されたフレームが不正であるかを判定するために読み込まれたビット列がフレームの断片としてＣＡＮハブに入力され、各ポートに出力される恐れがある。フレームの断片が各ポートに出力されると、各ポートに接続されているＥＣＵでエラーが検出され、各ＥＣＵからエラーフレームが出力されるために、システムが輻輳する恐れがある。また、通信の抑制対象の装置に送信不成功の状態を擬似的に発生させる場合、送信不成功を通知するためのエラーフレームにより、輻輳が発生する恐れがある。また、ゲートウェイ装置にダミーフレームを送信する場合でも、ダミーフレームはゲートウェイに受信される。従って、不正なフレームの受信を防ぐために、これらの方法を使用することはできない。
【００１１】
本発明は、不正なフレームを用いた攻撃に対するシステムの耐性を強化することを目的とする。
【課題を解決するための手段】
【００１２】
ある態様にかかる通信制御装置は、フレームの識別情報を用いて前記フレームを受信するかを判定する複数の通信装置の間の通信を制御する。通信制御装置は、記憶部、制御部、選択部を備える。記憶部は、前記複数の通信装置のいずれかに接続された複数のポートの各々と、当該ポートに接続された通信装置が送信処理に使用する識別情報を対応付けて記憶する。制御部は、第１のフレームを識別する第１の識別情報が前記第１のフレームの受信ポートに対応付けられていない場合、前記複数の通信装置のいずれでも受信されない第２の識別情報を設定した第２のフレームを生成する。選択部は、前記第１のフレームと共に前記第２のフレームを取得すると、前記第１のフレームの代わりに前記第２のフレームを前記複数の通信装置に送信するための処理を行う。
【発明の効果】
【００１３】
不正なフレームを用いた攻撃に対するシステムの耐性が強化される。
【図面の簡単な説明】
【００１４】
【図１】ＣＡＮハブを含むシステムで行われるフレームの送受信の例を示す図である。
【図２】送信処理に使用するＩＤとして設定されていないＩＤを用いた送信処理が行われた場合の例を示す図である。
【図３】実施形態にかかる通信制御方法の例を示す図である。
【図４】第１の実施形態にかかる通信制御装置の構成の例を示す図である。
【図５】通信制御装置のハードウェア構成の例を示す図である。
【図６】送受信されるフレームのフォーマットの例を示す図である。
【図７】制御部と選択部の動作の例を説明する図である。
【図８】比較処理の例を説明する図である。
【図９】未使用ＩＤリストの例を示す図である。
【図１０】制御部と選択部の動作の例を説明する図である。
【図１１】制御部で行われる処理の例を説明するフローチャートである。
【図１２】選択部で行われる処理の例を説明するフローチャートである。
【図１３】第２の実施形態にかかる通信制御装置の構成の例を示す図である。
【図１４】使用ＩＤリストの例を示す図である。
【図１５】制御部で行われる処理の例を説明するフローチャートである。
【図１６】フレームリストの例を示す図である。
【発明を実施するための形態】
【００１５】
図３は、実施形態にかかる通信制御方法の例を示す。図３に示す通信制御装置２０では、各ＣＡＮトランシーバ２１（２１ａ〜２１ｃ）からの出力は、選択部２３（２３ａ〜２３ｃ）と制御部３０（３０ａ〜３０ｃ）とに分岐される。制御部３０は、選択部２３にデータを出力できる。このため、選択部２３は、ＣＡＮトランシーバ２１と制御部３０の両方から所定の時間内にフレームを取得すると、取得したフレームから、通信調停部２２に出力する対象のフレームを選択する。ここで、所定の時間は、制御部３０からの入力とＣＡＮトランシーバ２１からの入力が同じフレームに起因していると推定できる時間の範囲内で設定された値である。以下の説明では、選択部２３は、入力されたフレームのＩＤの値を用いて、通信調停部２２に出力する対象を選択するものとする。
【００１６】
通信制御装置２０は、予め、ポートごとに、そのポートに接続されているＥＣＵ５が送信処理に使用する識別情報を記憶している。さらに、通信制御装置２０は、いずれのポートに接続されたＥＣＵ５でも受信されない識別情報を特定するための情報を保持している。なお、いずれのポートに接続されたＥＣＵ５でも受信されない識別情報を特定する情報は、例えば、いずれのポートでも受信されない識別情報のリストを含む任意の形式の情報とすることができる。
【００１７】
図３の例では、ＥＣＵ５ａは、正常に動作している場合は、送信処理にＩＤ＝１２３とＩＤ＝４５６を使用するものとする。しかし、図２のケースと同様に、ＥＣＵ５ａが外部からの攻撃を受けて、送信処理に使用するＩＤとして設定されていないＩＤ＝７８９を設定したフレームＦ２を送信したとする。
【００１８】
矢印Ａ１で示すように、ＣＡＮトランシーバ２１ａから出力されたデータは、選択部２３ａと制御部３０ａとに分岐される。このため、フレームＦ２がＣＡＮトランシーバ２１ａから出力されると、フレームＦ２は、選択部２３ａと制御部３０ａとに入力される。
【００１９】
制御部３０ａは、フレームＦ２を識別する情報がフレームＦ２の受信ポートに対応付けられた識別情報のいずれかと一致するかを判定する。なお、受信ポートに対応付けられた識別情報が複数の場合、制御部３０は、受信ポートに対応付けられたいずれかの識別情報が、受信フレームの識別情報と一致するかを判定する。制御部３０ａは、フレームＦ２のＩＤ＝７８９であるのに対し、フレームＦ２の受信ポートには、ＩＤ＝７８９が登録されていないと判定したとする。すると、制御部３０ａは、いずれのＥＣＵ５でも受信の対象とならない識別情報のうち、選択部２３ａでフレームＦ２よりも優先的に通信調停部２２に出力される識別情報を選択する。制御部３０ａは、フレームＦ２の代わりに、選択した識別情報をＩＤとするフレームＦ３を選択部２３ａに出力する（矢印Ａ２）。ここで、フレームＦ３では、ＩＤ＝７１０であるとする。
【００２０】
選択部２３ａには、ＣＡＮトランシーバ２１ａからフレームＦ２が入力され、さらに、制御部３０ａからフレームＦ３が入力されている。選択部２３ａは、フレームＦ２とフレームＦ３を所定時間内に取得したため、フレームＦ２とフレームＦ３のＩＤを用いて、通信調停部２２に出力するフレームを選択する。ここで、フレームＦ３のＩＤは、通信調停部２２に出力される対象としての優先度がフレームＦ２よりも高くなるように選択されている。このため、選択部２３ａは、フレームＦ３を通信調停部２２への出力対象に選択し、フレームＦ３を通信調停部２２に出力する（矢印Ａ３）。
【００２１】
矢印Ａ４で示すように、通信調停部２２は、入力されたフレームＦ３を全てのポートに向けて転送する。このため、フレームＦ３は、ＥＣＵ５ａ〜５ｃに送信される。ＥＣＵ５ｂは、通信制御装置２０から入力されたフレームＦ３のＩＤ＝７１０であるため、フレームＦ３を受信対象ではないと判定して廃棄する。同様に、ＥＣＵ５ｃも、フレームＦ３を受信対象ではないと判定して廃棄する。
【００２２】
従って、実施形態にかかる方法によると、ＥＣＵ５への不正なフレームの転送を防ぐことができる。さらに、実施形態にかかる方法によると、フレームの断片がネットワーク中で送受信されることにより、エラーフレームの輻輳が発生する恐れも無い。このため、実施形態にかかる方法を用いて、不正なフレームを用いた攻撃からシステムを保護することができる。換言すると、通信制御装置２０を用いたシステムでは、攻撃に対する耐性が強化される。
【００２３】
＜第１の実施形態＞
図４は、第１の実施形態にかかる通信制御装置の構成の例を示す図である。通信制御装置２０は、ポート（Ｐ１〜Ｐ３）、ＣＡＮトランシーバ２１（２１ａ〜２１ｃ）、通信調停部２２、選択部２３（２３ａ〜２３ｃ）、制御部３０（３０ａ〜３０ｃ）、記憶部４０（４０ａ〜４０ｃ）を備える。制御部３０は、変換部３１と比較部３２を有する。記憶部４０は、ホワイトリスト４１と未使用ＩＤリスト４２を記憶する。
【００２４】
ホワイトリスト４１は、通信制御装置２０の各ポートに接続されたＥＣＵ５がフレームの送信に使用する識別情報を、そのポートに対応付けている。なお、図４に示すように、ホワイトリスト４１がポートごとに生成されている場合、各ホワイトリスト４１は、そのホワイトリスト４１に対応付けられたポートに接続されたＥＣＵ５がフレームの送信に使用する識別情報を格納する。例えば、ホワイトリスト４１ａは、ポートＰ１に対応付けられているので、ポートＰ１に接続されたＥＣＵ５ａが送信処理に使用する識別情報を格納する。同様に、ホワイトリスト４１ｂは、ポートＰ２から入力されたフレームの処理に使用されるので、ポートＰ２に接続されているＥＣＵ５ｂが送信処理に使用する識別情報を格納する。また、ホワイトリスト４１ｃは、ポートＰ３に対応付けられているので、ポートＰ３に接続されたＥＣＵ５ｃが送信処理に使用する識別情報を格納する。未使用ＩＤリスト４２ａ〜４２ｃは、通信制御装置２０に接続されたいずれのＥＣＵ５も受信対象としない識別情報を格納する。
【００２５】
ＣＡＮトランシーバ２１は、ＥＣＵ５との間でフレームを送受信するためのバス送信電圧の発生、バス送信電圧の調整などの処理を行う。また、ＣＡＮトランシーバ２１から通信調停部２２への出力は分岐されて、選択部２３ａと制御部３０ａとに入力される。
【００２６】
比較部３２は、ＣＡＮトランシーバ２１から入力されたフレームの識別情報を、ホワイトリスト４１に格納されている識別情報と比較する。比較部３２は、入力されたフレームの識別情報が、フレームの受信ポートに対応付けてホワイトリスト４１に格納されている識別情報のいずれかに一致すると、入力されたフレームを選択部２３に出力する。換言すると、比較部３２は、受信ポートに対応付けてホワイトリスト４１に登録されている識別情報を持つ受信フレームを、正常なＥＣＵ５から送信されたフレームとして扱う。一方、入力されたフレームの識別情報が、フレームの受信ポートに対応付けられている識別情報のいずれとも一致しない場合、比較部３２は、不正なフレームが入力されたことを変換部３１に通知する。
【００２７】
変換部３１は、不正なフレームの検出が通知されると、不正なフレームの識別情報を、いずれのＥＣＵ５でも受信されない識別情報で、かつ、元のＩＤよりも優先的に通信調停部２２に出力されるＩＤに変更する。変換部３１は、識別情報を変更したフレームを選択部２３に出力するための処理を行う。
【００２８】
選択部２３は、ＣＡＮトランシーバ２１と制御部３０から入力されたフレームから選択した１つのフレームを、通信調停部２２に出力する。以下の説明では、選択部２３は、ＩＤの表わす値が小さいフレームほど優先的に、通信調停部２２に出力するものとする。通信調停部２２は、入力されたフレームを、全てのポートに向けて出力する。なお、複数のフレームが同時に通信調停部２２に入力された場合、通信調停部２２は、同時に入力されたフレームのうちの１つを転送対象のフレームとして選択する。
【００２９】
なお、図４の例は、ＥＣＵ５に接続されているポートが３つの場合を例として示しているが、通信制御装置２０がＥＣＵ５との通信に使用するポートの数は任意である。図４では、ポートごとに制御部３０と記憶部４０が設けられている場合の例を示しているが、制御部３０ａ〜３０ｃで行われる処理が１つの制御部３０で行われても良く、また、記憶部４０ａ〜４０ｃに記憶されている情報が１つの記憶部４０に格納されても良い。
【００３０】
図５は、通信制御装置２０のハードウェア構成の例である。図５も、ポート数が３の場合の例を示しているが、通信制御装置２０のポート数は、実装に応じて任意に決定されうる。通信制御装置２０は、選択回路１０１、処理回路１０２（１０２ａ〜１０２ｃ）、メモリ１０３（１０３ａ〜１０３ｃ）、選択回路１０４（１０４ａ〜１０４ｃ）、ＣＡＮトランシーバ２１（２１ａ〜２１ｃ）、ポート（Ｐ１〜Ｐ３）を備える。選択回路１０１と選択回路１０４は、いずれも、通信制御装置２０のポートから送信するフレームを、入力された複数のフレームから選択することが可能な任意の回路である。選択回路１０１は、通信調停部２２として動作する。選択回路１０４は、選択部２３として動作する。各処理回路１０２は、適宜、その処理回路１０２に接続されたメモリ１０３に格納されている情報を用いて、制御部３０として動作する。メモリ１０３は、記憶部４０として動作する。通信制御装置２０は、例えば、ジャンクションボックス、ハブ、リピータハブなどとして実現されうる。
【００３１】
図６は、送受信されるフレームのフォーマットの例を示す。図６のＦ１１は、ＣＡＮの一般仕様のフレームのフォーマット例であり、Ｆ１２はＣＡＮの拡張仕様で使用されるフレームのフォーマット例である。
【００３２】
一般仕様のフレームは、ＳＯＦ（Start of Frame）、調停（arbitration）フィールド、コントロールフィールド、データフィールド、ＣＲＣ（Cyclic Redundancy Check）フィールド、ＡＣＫフィールド、ＥＯＦ（End of Frame）を含む。調停フィールドには、ＩＤとＲＴＲ（Remote Transmission Request）が含まれる。ここで、ＩＤは、フレームの識別情報である。コントロールフィールドには、ＩＤＥ（Identifier Extension）、予約ビット、ＤＬＣ（Data Length Code）が含まれる。ＣＲＣフィールドは、ＣＲＣシーケンスとＣＲＣデリミタを含む。ＡＣＫフィールドは、ＡＣＫスロットとＡＣＫデリミタを含む。なお、各フィールドに含まれる情報要素のビット長は、Ｆ１１の一番下の行に記載したとおりである。例えば、ＩＤの長さは１１ビットであり、データフィールドの長さは０〜６４ビットの可変長である。
【００３３】
拡張仕様で使用されるフレーム（Ｆ１２）も、ＳＯＦ、調停フィールド、コントロールフィールド、データフィールド、ＣＲＣフィールド、ＡＣＫフィールド、ＥＯＦを含む。拡張仕様の調停フィールドは、ＩＤベース、ＳＲＲ（Substitute Remote Request Bit）、ＩＤＥ、ＩＤ拡張、ＲＴＲを含む。拡張仕様では、ＩＤベースとして格納されたビット列の次に、拡張ＩＤとして格納されたビット列をつなげて得られるビット列により、識別情報（ＩＤ）を表わす。コントロールフィールドには、予約ビット（ｒ１、ｒ０）とＤＬＣが含まれる。データフィールドからＥＯＦまでは、拡張仕様のフォーマットでも、一般仕様のフォーマットと同様である。また、各フィールドに含まれる情報要素のビット長は、Ｆ１２の一番下の行に記載したとおりである。このため、拡張フォーマットでは、識別情報として、ＩＤベースの１１ビットとＩＤ拡張の１８ビットを合わせた２９ビットのビット列が使用される。
【００３４】
以下、図６のＦ１１に示すフォーマットを用いた不正なフレームがＥＣＵ５ａから通信制御装置２０に送信される場合を例として、第１の実施形態で行われる処理の例を説明する。なお、通信に使用されるフレームが拡張仕様の場合でも、同様に処理が行われる。以下、説明を分かりやすくするために、ＥＣＵ５ａから送信されたフレームを第１のフレームと記載する。
【００３５】
ＥＣＵ５ａが第１のフレームを送信すると、第１のフレームは、ポートＰ１を介して、通信制御装置２０に受信される。ＣＡＮトランシーバ２１ａは、ポートＰ１から入力された第１のフレームを、通信調停部２２に向けて出力する。ＣＡＮトランシーバ２１から通信調停部２２への信号の入力線は分岐しているため、第１のフレームは、選択部２３ａと比較部３２ａに入力される。このとき、第１のフレームは、図７に示すように、先頭のビットから順に、選択部２３ａや比較部３２ａに入力される。
【００３６】
図７は、制御部３０と選択部２３の動作の例を説明する図である。図７の例では、ホワイトリスト４１ａ中に１０１０００１０１１０という識別情報が記録されているが、比較部３２に入力されたフレームのＩＤは１０１１０１１００１０であるものとする。なお、図７の例では、分かりやすくするために、ホワイトリスト４１ａに登録された識別情報が１つの場合を図示しているが、個々のホワイトリスト４１に格納される識別情報の数は任意である。また、図７では、図を見やすくするために、比較部３２ａと変換部３１ａを合わせて、制御部３０ａとして示している。
【００３７】
ステップＳ１において、ＣＡＮトランシーバ２１ａが第１のフレーム中のＩＤ（１０１１０１１００１０）の１ビット目を出力したとする。第１のフレーム中のＩＤの１ビット目の値は１である。ＣＡＮトランシーバ２１ａからの出力は、比較部３２ａ（制御部３０ａ中）と選択部２３ａに分岐される。このため、第１のフレーム中のＩＤの１ビット目の値として、１が比較部３２ａに出力される（ステップＳ２）。さらに、第１のフレーム中のＩＤの１ビット目の値が選択部２３ａにも出力される（ステップＳ３）。
【００３８】
ステップＳ４を参照しながら、比較部３２ａでの比較処理について説明する。第１のフレーム中のＩＤの１ビット目の値を取得すると、比較部３２ａは、ホワイトリスト４１ａに記録されているいずれかのＩＤと第１のフレームのＩＤが一致する可能性があるかを判定する。すなわち、ホワイトリスト４１ａに記録されている識別情報の先頭の１ビットと、入力された値を比較する。ステップＳ４の２つのビット列のうち、下に記載しているビット列は、第１のフレーム中のＩＤである。なお、ステップＳ４では、ＩＤの１ビット目の値同士を比較していることを見やすくするために、第１のフレーム中のＩＤの全体を示しているが、この時点では、比較部３２ａは、第１のフレーム中のＩＤの１ビット目しか取得していない。比較部３２ａは、第１のフレーム中のＩＤの１ビット目の値が１であり、ホワイトリスト４１ａに１から始まる識別情報が含まれているので、第１のフレームは不正なフレームではない可能性があると判定する。そこで、比較部３２ａは、第１のフレームのＩＤの１ビット目を選択部２３ａに出力する（ステップＳ５）。
【００３９】
ステップＳ３とステップＳ５により、選択部２３ａには、ＣＡＮトランシーバ２１ａと比較部３２ａとから、ＩＤの先頭のビットの値として、それぞれ、１が入力される。選択部２３ａは、ＣＡＮトランシーバ２１ａから入力されたビットの値と、比較部３２ａから入力されたビットの値が等しい場合、ＣＡＮトランシーバ２１ａから入力された値を通信調停部２２に出力する。図７では、ＣＡＮトランシーバ２１ａから選択部２３ａを経由して通信調停部２２に至る線により、ＣＡＮトランシーバ２１ａから出力されたビットが通信調停部２２に出力される様子を示している。通信調停部２２に入力されたビットの値は、通信調停部２２により、各ポートに出力される。なお、通信調停部２２は、選択部２３ａ〜２３ｃを介さずにＣＡＮトランシーバ２１に接続している結線（図４）に、各ポートに送信するフレーム中の各ビットを出力する。
【００４０】
図８は、比較処理の例を説明する図である。図８でも、説明の都合上、第１のフレームのＩＤの全ビットを各ステップ（Ｓ１１〜Ｓ１３）の下側のビット列として図示しているが、各ステップにおいて比較部３２ａに入力された値は、太線で囲んだビットである。
【００４１】
ステップＳ１１は、第１のフレームのＩＤの２ビット目が比較部３２ａに入力されたときに行われる比較処理の例である。第１のフレームのＩＤの２ビット目も、図７を参照しながら説明した手順と同様に、比較部３２ａと選択部２３ａとに出力される。比較部３２ａは、ホワイトリスト４１ａ中で１ビット目が第１のフレームのＩＤと一致した識別情報のいずれかの２ビット目と、入力されたビットの値が一致するかを判定する。換言すると、比較部３２ａは、第１のフレームの先頭から２ビット目までのビット列がホワイトリスト４１ａ中の識別情報のいずれかの先頭から２ビット目までと一致するかを判定している。ステップＳ１１に示す例では、ホワイトリスト４１ａ中で１ビット目が第１のフレームのＩＤと一致した識別情報（１０１０００１０１１０）の２ビット目は０である。一方、第１のフレームのＩＤの２ビット目として比較部３２ａに入力された値も０である。このため、第１のフレーム中のＩＤの１〜２ビット目とホワイトリスト４１ａの比較結果から、比較部３２ａは、第１のフレームは不正なフレームではない可能性があると判定する。そこで、比較部３２ａは、第１のフレームのＩＤの２ビット目を比較部３２に出力する。
【００４２】
ステップＳ１１の処理により、比較部３２ａから選択部２３ａにデータが出力されたときに、選択部２３ａが行う処理は、図７を参照しながら説明した処理と同様である。このため、通信調停部２２には、第１のフレームのＩＤの２ビット目の値が入力される。通信調停部２２は、入力されたビットの値を各ポートに出力する。
【００４３】
ステップＳ１２は、第１のフレームのＩＤの３ビット目が比較部３２ａに入力されたときに行われる比較処理の例である。比較部３２ａは、ステップＳ１２において、ステップＳ１１と同様の処理を行う。その結果、ＩＤの１〜３ビットはホワイトリスト４１ａ中の識別情報と一致しているので、比較部３２ａは、第１のフレームは不正なフレームではない可能性があると判定する。また、選択部２３ａには、比較部３２ａとＣＡＮトランシーバ２１ａの両方から、第１のフレームの３ビット目が出力される。このため、通信調停部２２にも、第１のフレームの３ビット目が出力される。通信調停部２２の処理は、ステップＳ１１で第１のフレームの２ビット目が入力されたときと同様である。
【００４４】
ステップＳ１３は、第１のフレームのＩＤの４ビット目が比較部３２ａに入力されたときに行われる比較処理の例である。比較部３２ａは、先頭の１〜４ビットの値が第１のフレームのＩＤの１〜４ビットと一致する識別情報がホワイトリスト４１ａに含まれていないので、第１のフレームは不正なフレームであると判定する。比較部３２ａは、不正なフレームを検出したことを変換部３１ａに通知する。比較部３２ａは、第１のフレームのＩＤの４ビット目の値は、選択部２３ａに出力しない。なお、この時点において、比較部３２ａは第１のフレームの１〜３ビットを選択部２３ａに出力したので、通信調停部２２には、選択部２３ａを介して、第１のフレームのＩＤの先頭から３ビットまでの値が出力されている。そこで、比較部３２ａは、第１のフレームのＩＤの１〜３ビットまでの値を、選択部２３ａへの出力済みの値として変換部３１ａに通知する。さらに、比較部３２ａは、第１のフレームが不正なフレームであると判定したときに使用したビットの値も、変換部３１ａに出力する。
【００４５】
変換部３１ａは、比較部３２ａが比較処理の対象としたビット列よりも選択部２３ａで優先され、かつ、選択部２３ａに出力済みのビット列を先頭に含む識別情報を、未使用ＩＤリスト４２ａから選択する。変換部３１ａは、選択した識別情報を、第１のフレームの代替として出力する第２のフレームのＩＤとして用いる。なお、未使用ＩＤリスト４２ａに含まれている識別情報は、いずれのＥＣＵ５でも受信されない識別情報であるため、第２のフレームは、各ポートから出力されても、いずれのＥＣＵ５でも受信されない。
【００４６】
図９は、未使用ＩＤリストの例を示す図である。未使用ＩＤリスト４２は、システム中のいずれのＥＣＵ５でも受信されない識別情報と、各識別情報に対応付けられたＣＲＣの値が含まれている。ここで、ＣＲＣは、未使用ＩＤリスト４２中の各識別情報を含むフレーム中で、データフィールドの値が予め特定の値である場合について計算したＣＲＣである。ここで、ＣＲＣの計算に用いられたデータフィールドの値は、第２のフレームのデータフィールドの値として用いられる。以下の説明では、一例として、データフィールドの全ビットに０が記録されている場合を例とする。
【００４７】
次に、変換部３１ａによる第２のフレームのＩＤの決定の詳細について説明する。図７、図８を用いて述べた例では、比較部３２ａは、入力されたフレームのＩＤの先頭から３ビットを通信調停部２２に出力した後で、不正なフレームであることを検出している。このため、通信調停部２２には、ビット列１０１までがＩＤとして出力されている。そこで、変換部３１ａは、第２のフレームのＩＤとして、先頭から３ビットが１０１で、第１のフレームのＩＤの値よりも小さな値となる識別情報を、未使用ＩＤリスト４２ａに格納されている識別情報から選択する。以下の例では、変換部３１ａは、未使用ＩＤリスト４２ａから、１０１００１１００００という識別情報を選択したとする。変換部３１ａは、選択した識別情報に対応付けられたＣＲＣの値も未使用ＩＤリスト４２ａから取得する。この例では、変換部３１ａが選択した識別情報に対応付けられたＣＲＣの値は、ｃｒｃ１である。
【００４８】
変換部３１ａは、選択した識別情報の先頭から、選択部２３ａに出力済みのビット数を削除して得られるビット列を、ＩＤの続きとして選択部２３ａに出力する。図８の例では、不正なフレームの検出の際に、第１のフレームのＩＤのうちの先頭から３ビット（１０１）が選択部２３ａに出力されている。このため、変換部３１ａは、未使用ＩＤリスト４２ａから選択した識別情報の４ビット目以降（００１１００００）を選択部２３ａに出力する。図８のステップＳ１３を参照しながら述べたように、選択部２３ａにはすでに「１０１」が入力されているので、選択部２３ａに入力されるＩＤは「１０１００１１００００」となる。
【００４９】
なお、比較部３２から通知されたビット列から第１のＩＤより優先されるＩＤを選択できない場合、変換部３１は、選択部２３での優先度が上がる可能性のある値を選択部２３に出力し、次に比較部３２に入力されたビットの値も使用してＩＤを選択する。変換部３１は、選択部２３で優先される識別情報を選択できるまで、比較部３２に入力されたビットの値の取得と優先度が上がる可能性のある値の選択部２３への出力を継続する。例えば、第１のフレームのＩＤ（１０１１０１１００１０）の５ビット目で第１のフレームが不正なフレームであることが特定された場合、すでに、選択部２３に「１０１１」の４ビットが出力されている。変換部３１は、比較処理に使用された５ビット目の値が「０」であることと、小さな値を示すＩＤほど選択部２３で優先されることに基づき、比較部３２から通知されたビット列からは選択部２３で優先される識別情報を特定できないと判定する。すると、変換部３１は、ＩＤの５ビット目の値として「０」を選択部２３に出力しつつ、次に比較部３２に入力された値を取得する。ＩＤの６ビット目の値は「１」であるので、６ビット目の値が０である識別情報は、第１のフレームのＩＤよりも選択部２３で優先される。そこで、変換部３１は、未使用ＩＤリスト４２中で「１０１１００」で始まる識別情報を、第２のフレームのＩＤに決定する。
【００５０】
図１０は、制御部３０と選択部２３の動作の例を説明する図である。図１０は、ＩＤの４ビット目の値の処理の際に行われる処理の例を示している。図１０を参照しながら、選択部２３ａで行われる選択処理の具体例を説明する。
【００５１】
ステップＳ２１において、ＣＡＮトランシーバ２１ａからＩＤの４ビット目の値が出力される。ＣＡＮトランシーバ２１ａからの出力は、ステップＳ２２とＳ２３に示すように、比較部３２ａと選択部２３ａの両方に入力される。ステップＳ２２で比較部３２ａに入力されたビットに対しての比較処理と第２のフレームのＩＤの求め方は、図８のステップＳ１３と図９を参照しながら述べたとおりである。このため、ステップＳ２４に示すように、変換部３１ａは、第２のフレームのＩＤに選択した識別情報（１０１００１１００００）の４ビット目の値である０を選択部２３ａに出力する。
【００５２】
選択部２３ａは、ＣＡＮトランシーバ２１ａから入力されたビットの値と、制御部３０ａから入力されたビットの値が異なる場合、より小さい値の入力元から入力されたフレームを通信調停部２２に出力する対象に選択する。ここでは、ＣＡＮトランシーバ２１ａから入力されたビットの値が１であるのに対して、制御部３０ａ中の変換部３１ａから入力された値が０である。このため、選択部２３ａは、以後は、制御部３０ａから入力された情報を通信調停部２２に出力するように設定を変更する。図１０では、制御部３０ａから選択部２３ａを経由して通信調停部２２に至る線により、制御部３０ａから出力されたビットが通信調停部２２に出力される様子を示している。
【００５３】
変換部３１ａは、ＩＤの変更のための処理が終わると、データフィールドの全ビットの値を０とし、未使用ＩＤリスト４２ａから取得したＣＲＣの値を比較部３２ａに出力する。これらの処理が終わると、比較部３２ａは、第１のフレーム中のＣＲＣシーケンスより後のビット列を選択部２３ａに出力する。
【００５４】
なお、変換部３１ａは、ＩＤの変更のための処理が終わると、データフィールドの全ビットの値を０とする代わりに、ＤＬＣ＝０とした上で、フレーム中にデータフィールドを含めないようにしても良い。また、変換部３１ａは、予め決められている別の値を、ＩＤの変更後のフレームのデータとしても良い。
【００５５】
これらの処理により、変換部３１ａは、第１のフレームのＩＤの一部、データフィールド、ＣＲＣシーケンスの値を変更することにより、不正に送信された第１のフレームを、いずれのＥＣＵ５でも受信されない第２のフレームに変換しているといえる。また、第２のフレームは、図１０を参照しながら説明した選択部２３ａの処理により、第１のフレームよりも優先的に通信調停部２２に出力される。
【００５６】
図８〜図１０を参照しながら、通信制御装置２０に不正なフレームが送信された場合の処理を説明したが、受信フレームが不正なフレームではない場合、通信制御装置２０は、受信したフレームを各ポートから出力する。この場合に行われる処理は、図７および図８のステップＳ１１、Ｓ１２を参照しながら説明したとおりである。
【００５７】
図１１は、制御部３０で行われる処理の例を説明するフローチャートである。なお、図１１の例では、定数Ｘと変数ｘが使用される。変数ｘは、入力されたフレームのＩＤのうちで未使用ＩＤリスト４２中の識別情報と比較されたビット数の計数に使用される。定数Ｘは、通信に使用されているフレーム中で、ＩＤの記述に使用されているビットの総数である。また、図１１は処理の一例であり、実装に応じて処理が変更され得る。例えば、ステップＳ３３の処理が最初に行われても良い。
【００５８】
比較部３２は、フレームの入力側となるＣＡＮトランシーバ２１との間の結線からのデータ入力を監視し、フレームの通過が開始したかを判定する（ステップＳ３１、Ｓ３２）。ここで、比較部３２は、受信フレームのＳＯＦを用いて、フレームの通過が開始したと判定する。例えば、比較部３２は、フレームのＳＯＦが入力されるとフレームの通過が開始したと判定しても良く、また、比較部３２がＳＯＦを選択部２３に出力するとフレームの通過が開始したと判定しても良い。比較部３２は、フレームの通過が開始すると、変数ｘを１に設定する（ステップＳ３２でＹｅｓ、ステップＳ３３）。比較部３２は、ＩＤの先頭からｘビット目までのビット列が、ホワイトリスト４１中に含まれているいずれかの識別情報と一致するかを判定する（ステップＳ３４）。比較部３２で行われる判定方法は、図７、図８を参照しながら説明したとおりである。ＩＤの先頭からｘビット目までのビット列が、ホワイトリスト４１中に含まれているいずれかの識別情報と一致する場合、比較部３２は、ＩＤのｘビット目を選択部２３に出力する（ステップＳ３４でＹｅｓ、ステップＳ３５）。比較部３２は、変数ｘの値が定数Ｘ以上であるかを判定する（ステップＳ３６）。変数ｘの値が定数Ｘ未満である場合、比較部３２は、変数ｘを１つインクリメントして、ステップＳ３４に戻る（ステップＳ３６でＮｏ、ステップＳ３７）。
【００５９】
一方、ＩＤの先頭からｘビット目までのビット列が、ホワイトリスト４１中に含まれているいずれの識別情報とも一致しない場合、比較部３２は、入力されたフレームが不正なフレームであることを変換部３１に通知する（ステップＳ３４でＮｏ）。また、比較部３２は、不正なフレーム（第１のフレーム）のＩＤのうち、選択部２３に出力済みの（ｘ−１）ビットのビット列を変換部３１に通知する。
【００６０】
変換部３１は、未使用ＩＤリスト４２から、ＩＤの先頭の（ｘ−１）ビット分が第１のフレームの識別情報の先頭から（ｘ−１）ビットと同じＩＤであって、第１のフレームのＩＤより優先される識別情報を取得する（ステップＳ３８）。ステップＳ３８で行われる処理の例は、図９、図１０を参照しながら説明したとおりである。このとき、変換部３１は、未使用ＩＤリスト４２から取得した識別情報に対応付けられたＣＲＣの値も合わせて取得する。次に、変換部３１は、取得したＩＤのうちの先頭からｘビット目以降を選択部２３に出力する（ステップＳ３９）。このため、選択部２３には、ＩＤとして、変換部３１が選択したＩＤが通知される。変換部３１でのＩＤの入力処理が終わると、比較部３２は、入力されたフレームのコントロールフィールドを選択部２３に出力する（ステップＳ４０）。次に、変換部３１は、データフィールドのビット長と同じ長さで、各ビットの値が０のビット列と、選択部２３に出力した識別情報に対応付けられたＣＲＣの値を、選択部２３に出力する（ステップＳ４１）。このため、選択部２３には、第１のフレーム中のデータの代わりに、全ビットが０のデータと、データフィールドの全ビットが０の場合のＣＲＣが出力される。その後、比較部３２は、入力されたフレームのＣＲＣシーケンスよりも後の値を、選択部２３に出力する（ステップＳ４２）。
【００６１】
従って、選択部２３は、ステップＳ３８〜Ｓ４２の処理により、制御部３０からは、不正な第１のフレームの代わりに、第１のフレームとは異なる第２のフレームを取得することになる。第２のフレームのＩＤはいずれのＥＣＵ５でも受信されない値であり、さらに、第１のＩＤよりも選択部２３での選択処理で優先される値である。また、制御部３０は、ステップＳ３８〜Ｓ４２の処理により、第１のフレームから第２のフレームを生成しているといえる。
【００６２】
一方、ステップＳ３６において、変数ｘの値が定数Ｘ以上である場合、入力されたフレームのＩＤはホワイトリスト４１中の識別情報と一致するので、比較部３２は、入力されたフレームは不正フレームではないと判定する（ステップＳ３６でＹｅｓ）。比較部３２は、さらに、入力されたフレームを末尾まで選択部２３に出力する（ステップＳ４３）。この場合は、選択部２３には受信フレームが出力されるため、選択部２３はＣＡＮトランシーバ２１から取得した第１のフレームを通信調停部２２に出力し、通信調停部２２は、第１のフレームを各ポートに出力する。
【００６３】
図１２は、選択部２３で行われる処理の例を説明するフローチャートである。図１２では、ＣＡＮトランシーバ２１から選択部２３に入力されるフレームを第１のフレームと記載している。一方、制御部３０から入力されるフレームは、第１のフレームが不正なフレームでなければ第１のフレームと同じフレームであるが、第１のフレームが不正なフレーである場合は、第２のフレームに置き換えられている。また、図１２においても、変数ｘは、入力されたフレームのＩＤのうちで未使用ＩＤリスト４２中の識別情報と比較されたビット数の計数に使用する変数である。定数Ｘは、通信に使用されているフレーム中で、ＩＤの記述に使用されているビットの総数である。また、図１２において、ステップＳ５２の処理が最初に行われるなどの変更が行われても良い。
【００６４】
選択部２３は、ＣＡＮトランシーバ２１からの第１のフレームの入力と、制御部３０からのフレームの入力の両方が開始するまで待機する（ステップＳ５１でＮｏ）。ＣＡＮトランシーバ２１からの第１のフレームの入力と制御部３０からのフレームの入力が開始すると、選択部２３は、変数ｘを１に設定する（ステップＳ５２）。選択部２３は、第１のフレームのｘビット目の値と、制御部３０から入力されたフレームのｘビット目の値が等しいかを判定する（ステップＳ５３）。ＣＡＮトランシーバ２１から入力された第１のフレームのｘビット目の値と、制御部３０から入力されたフレームのｘビット目の値が等しい場合、選択部２３は、ＣＡＮトランシーバ２１からの入力を通信調停部２２への出力とする（ステップＳ５３でＹｅｓ）。このため、選択部２３は、第１のフレームのｘビット目を通信調停部２２に出力する（ステップＳ５４）。選択部２３は、変数ｘの値が定数Ｘ以上であるかを判定する（ステップＳ５５）。変数ｘの値が定数Ｘ未満である場合、比較部３２は、変数ｘを１つインクリメントして、ステップＳ５３に戻る（ステップＳ５５
でＮｏ、ステップＳ５６）。
【００６５】
次に、ＣＡＮトランシーバ２１から入力された第１のフレームのｘビット目の値（ｘ１）と、制御部３０から入力されたフレームのｘビット目（ｘ２）の値が異なる場合について説明する（ステップＳ５３でＮｏ）。ステップＳ５３でＮｏと判定される場合、選択部２３は、ＣＡＮトランシーバ２１から第１のフレームを取得し、制御部３０からは第１のフレームとは異なる第２のフレームを取得している。従って、ｘ１は第１のフレームのｘビット目の値であり、ｘ２は第２のフレームのｘビット目の値である。選択部２３は、ｘ１とｘ２の大きさを比較する（ステップＳ５７）。
【００６６】
図１２の例では、ＣＡＮトランシーバ２１は、制御部３０とＣＡＮトランシーバ２１のうちでより小さい値を入力したほうからの入力を、通信調停部２２に出力することを決定する。このため、ｘ１がｘ２よりも大きい場合、選択部２３は、制御部３０から取得した第２のフレームを、末尾まで、通信調停部２２に出力する（ステップＳ５７でＹｅｓ、ステップＳ５８）。一方、ｘ１がｘ２よりも小さい場合、選択部２３は、第１のフレームを、末尾まで、通信調停部２２に出力する（ステップＳ５７でＮｏ、ステップＳ５９）。なお、選択部２３にステップＳ５９の処理を行わせないために、図１１などを参照しながら説明したように、変換部３１は、第１のフレームのＩＤよりも小さな値を、第２のフレームのＩＤとして、未使用ＩＤリスト４２から選択している。
【００６７】
ステップＳ５５において、変数ｘの値が定数Ｘ以上である場合、ＣＡＮトランシーバ２１から入力されたフレームと制御部３０から入力されたフレームは一致している（ステップＳ５６でＹｅｓ）。このため、選択部２３はＣＡＮトランシーバ２１から取得した第１のフレームを末尾まで通信調停部２２に出力する（ステップＳ５９）。すると、通信調停部２２は、第１のフレームを各ポートに出力する。
【００６８】
以上説明したように、第１の実施形態を用いると、選択部２３において、不正な第１のフレームが廃棄されることになるので、不正なフレームがＥＣＵ５で受信されることを防ぐことができる。さらに、通信調停部２２からは第１のフレームの代わりに、いずれのＥＣＵ５でも受信されないがフレームとしてはエラーの原因を含んでいない第２のフレームが送信される。このため、第１の実施形態を用いると、不正なフレームが入力されたことを検知したときに結線を切断する場合のように、フレームの断片がＥＣＵ５に送信されたことによるエラーメッセージの輻輳も防止することができる。
【００６９】
第１の実施形態は、通信制御装置２０において、各ポートから入力されたフレームをリアルタイムに処理するシステムにおいて、不正なＩＤを用いた攻撃を防御する場合に特に効果的である。すなわち、フレームをリアルタイムに処理するシステムでは、遅延をなるべく小さくするために、通信制御装置２０は、ＥＣＵ５から受信したフレームをバッファリングしない。従って、ＣＡＮトランシーバ２１や制御部３０は、ＩＤの全体を取得する前に、入力されたビットを処理している。また、選択部２３は、制御部３０からの入力とＣＡＮトランシーバ２１からの入力のうちの一方を、通信調停部２２に出力する。通信調停部２２に入力された情報は、調停が行われなければ各ポートに出力されるので、比較部３２が第１のフレームが不正なフレームであることを検出した段階では、既に、フレームのＩＤの一部が、通信調停部２２を介して各ポートに出力されている可能性がある。このため、変換部３１は、いずれのＥＣＵ５でも受信されない識別情報のうち、選択部２３に出力済みのビット列を先頭に含むＩＤを選択する。また、変換部３１は、制御部３０から選択部２３に出力される第２のフレームが通信調停部２２に出力される対象として選択されるように、第１のフレームのＩＤよりも選択部２３で優先される値を、第２のフレームのＩＤに選択する。従って、第１の実施形態により、システムでのフレームのリアルタイム性を重視した処理を妨げずに、不正なフレームによる攻撃からシステムを守ることができる。
【００７０】
＜第２の実施形態＞
第２の実施形態では、未使用ＩＤリスト４２の代わりに、各ＥＣＵ５での受信対象となっているＩＤのリスト（使用ＩＤリスト４３）を用いた処理が行われる場合について説明する。なお、第２の実施形態でも第１の実施形態と同様に、第２のフレーム中のデータフィールドの値が予め一定の値に決められているものとする。
【００７１】
図１３は、第２の実施形態にかかる通信制御装置６０の構成の例を示す図である。通信制御装置６０は、ポートＰ１〜Ｐ３、ＣＡＮトランシーバ２１（２１ａ〜２１ｃ）、通信調停部２２、選択部２３（２３ａ〜２３ｃ）、制御部５０（５０ａ〜５０ｃ）、記憶部４０（４０ａ〜４０ｃ）を備える。制御部５０は、変換部３１、比較部３２、および、ＣＲＣ計算部５１を有する。記憶部４０は、ホワイトリスト４１と使用ＩＤリスト４３を記憶する。ＣＡＮトランシーバ２１、通信調停部２２、選択部２３、比較部３２の動作は、第１の実施形態と同様である。なお、制御部５０は処理回路１０２（図５）によって実現されるものとする。
【００７２】
比較部３２は、第１のフレーム中のＩＤがホワイトリスト４１に含まれていない場合、不正なフレームの検出と、ＩＤとして比較部３２に出力済みのビット列を変換部３１に通知する。変換部３１は、使用ＩＤリスト４３を用いて、出力済みのビット列を含み、いずれのＥＣＵ５にも受信されないＩＤであって、第１のフレームよりも優先される識別情報を決定する。
【００７３】
ＣＲＣ計算部５１は、不正なフレームであることが特定された第１のフレームの代替として出力される第２のフレームのＩＤと、データフィールドの値などを用いて、第２のフレームに設定するＣＲＣの値を計算する。ＣＲＣ計算部５１は、第２のフレームのＩＤを変換部３１から取得する。以下の例では、第２のフレーム中のデータフィールドの値が予め一定の値に決められているので、ＣＲＣ計算部５１は、変換部３１から取得したＩＤの値と第２のフレームのデータフィールドの値、及び、ＣＡＮで規定されたＣＲＣ計算対象データを用いて、ＣＲＣを計算する。
【００７４】
図１４は、使用ＩＤリスト４３の例を示す図である。使用ＩＤリスト４３は、通信制御装置６０に接続されているいずれかのＥＣＵ５で受信対象とされている識別情報を含む。なお、使用ＩＤリスト４３は、図１４に示すように、受信対象とされている識別情報だけを記憶しても良く、また、識別情報とその識別情報からのフレームを受信するＥＣＵ５の識別情報を対応付けた情報であっても良い。
【００７５】
図１５は、制御部５０で行われる処理の例を説明するフローチャートである。図１５を用いて、不正な第１のフレームの代わりに選択部２３に出力する第２のフレームのＩＤの求め方について説明する。なお、入力されたフレームが不正なフレームではない可能性がある場合の処理は、第１の実施形態と同様である。
【００７６】
ステップＳ７１において、比較部３２は、入力されたフレームのＩＤのｘビット目に対する処理により、ＩＤがホワイトリスト４１中の識別情報のいずれとも一致しないことを検出したとする。比較部３２は、不正なフレームの受信を変換部３１に通知するとともに、不正なフレームのＩＤのうちの先頭から（ｘ−１）ビット分を変換部３１に通知する。
【００７７】
変換部３１は、先頭の（ｘ−１）ビットが入力されたフレームのＩＤと同じで、ｘビット目以降のビットを全て０に設定したＩＤを生成する（ステップＳ７２）。さらに、変換部３１は、生成したＩＤが使用ＩＤリスト４３に含まれているかを判定する（ステップＳ７３）。生成したＩＤが使用ＩＤリスト４３に含まれている場合、変換部３１は、生成したＩＤの値を１つインクリメントして、ステップＳ７３に戻る（ステップＳ７３でＹｅｓ、ステップＳ７４）。変換部３１は、使用ＩＤリスト４３に含まれていないＩＤを検出するまで、ステップＳ７３とＳ７４の処理を繰り返す。
【００７８】
変換部３１は、生成したＩＤが使用ＩＤリスト４３に含まれていない場合、生成したＩＤが入力されたフレームのＩＤよりも、選択部２３において優先されるＩＤであるかを判定する（ステップＳ７５）。生成したＩＤが入力されたフレームのＩＤよりも選択部２３で優先されるＩＤである場合、変換部３１と比較部３２は、得られたＩＤを設定したフレームを選択部２３に出力するための処理を行う（ステップＳ７５でＹｅｓ、ステップＳ７６）。すなわち、ステップＳ７６において、変換部３１は、使用ＩＤリスト４３に含まれていないと判定したＩＤのｘビット目以降を選択部２３に出力することにより、ＩＤを置き換える。また、変換部３１は、データフィールドの値として予め決定されている値を、選択部２３に出力する。その後、ＣＲＣ計算部５１は、選択部２３に出力された第２のフレームのＩＤとデータフィールドの値と、ＣＡＮで規定されたＣＲＣ計算対象データを用いて、第２のフレームに設定するＣＲＣシーケンスの値を決定する。ＣＲＣシーケンスの入力後、比較部３２は、第１のフレーム中のＣＲＣシーケンスより後のビットを、選択部２３に出力する。
【００７９】
第２の実施形態によると、通信制御装置６０に接続されているＥＣＵ５のいずれかで使用されているＩＤを使用ＩＤリスト４３として記憶することにより、第１の実施形態と同様に、不正フレームの転送を防止できる。ここで、通信制御装置６０に接続されているＥＣＵ５の数が少ない場合や、通信制御装置６０に接続されているＥＣＵ５で受信されるＩＤの種類が少ない場合、使用ＩＤリスト４３のデータ量は未使用ＩＤリスト４２のデータ量よりも小さくなる。このため、変換部３１が使用ＩＤリスト４３を用いて、転送処理に使用するＩＤを決定することにより、未使用ＩＤリスト４２を用いて処理を行う場合よりも、通信制御装置６０が記憶する情報量を削減することができる。従って、第２の実施形態では、第１の実施形態に比べて、通信制御装置６０の処理に使用できるメモリの容量を増やすことができる。
【００８０】
＜その他＞
なお、実施形態は上記に限られるものではなく、様々に変形可能である。以下にその例をいくつか述べる。
【００８１】
図１６は、フレームリストの例である。通信制御装置２０は、未使用ＩＤリスト４２の代わりにフレームリストを備えていても良い。フレームリストには、不正なフレームの代替として使用できるフレームのリストが記録されている。フレームリスト中のフレームは、いずれも、ＩＤがシステム中のいずれのＥＣＵ５にも受信されない値に設定されている。また、予め、フレーム毎に、フレームのＩＤとダミーデータを用いて計算されたＣＲＣが含まれている。例えば、ＩＤ＿１とダミーデータを用いて計算されたＣＲＣは、ＣＲＣ＿１である。ダミーデータは、任意のビット数の任意の値であり、また、１つのフレームリスト中のフレーム間で異なる値に設定されても良い。
【００８２】
フレームリストが用いられる場合に、変換部３１が第２のフレームのＩＤとして使用する識別情報を選択する方法は、第１の実施形態と同様である。変換部３１は、第２のフレームのＩＤとして使用する対象に選択した識別情報を含むフレームを、フレームリストから抽出する。変換部３１は、抽出したフレームのうち、選択部２３に出力済みのビット列以降を、選択部２３に出力する。
【００８３】
以上の説明では、例として、選択部２３では、ＩＤが示す値が小さいほど優先される場合を説明したが、選択部２３でのフレームの選択方法は実装に応じて変更され得る。例えば、ＩＤの値が大きいフレームほど選択部２３で優先されてもよい。また、選択部２３は、制御部３０からのフレームをＣＡＮトランシーバ２１からのフレームよりも優先するように設定されてもよい。
【００８４】
選択回路１０１、処理回路１０２、選択回路１０４として、プロセッサが通信制御装置２０、６０に搭載されても良い。この場合、プロセッサは、メモリ１０３に格納されたプログラムを読み込んで、通信調停部２２、選択部２３、制御部３０または制御部５０を実現する。また、選択回路１０４と選択回路１０１は１つの回路として実現されてもよく、また、選択回路１０４と処理回路１０２が１つの回路として実現されてもよい。
【００８５】
第１および第２の実施形態を含む実施形態に関し、さらに以下の付記を開示する。
（付記１）
フレームの識別情報を用いて前記フレームを受信するかを判定する複数の通信装置の間の通信を制御する通信制御装置であって、
前記複数の通信装置のいずれかに接続された複数のポートの各々と、当該ポートに接続された通信装置が送信処理に使用する識別情報を対応付けて記憶する記憶部と、
第１のフレームを識別する第１の識別情報が前記第１のフレームの受信ポートに対応付けられていない場合、前記複数の通信装置のいずれでも受信されない第２の識別情報を設定した第２のフレームを生成する制御部と、
前記第１のフレームと共に前記第２のフレームを取得すると、前記第１のフレームの代わりに前記第２のフレームを前記複数の通信装置に送信するための処理を行う選択部
を備えることを特徴とする通信制御装置。
（付記２）
前記制御部は、
前記選択部に入力される信号を取得し、
前記第１の識別情報の先頭ビットから比較対象のビットまでの第１のビット列が前記受信ポートに対応付けられた識別情報のいずれかと一致する場合、前記第１のフレーム中の比較対象とした対象ビットの複製を前記第２のフレーム中のビットとして、前記選択部に出力し、
前記第１のビット列が前記受信ポートに対応付けられた識別情報のいずれにも一致しないことを特定すると、前記第２の識別情報のうちで前記選択部に出力されていない第２のビット列の値を、前記第１の識別情報中の前記対象ビット以降の値よりも前記選択部で優先される値に設定する
ことを特徴とする付記１に記載の通信制御装置。
（付記３）
前記記憶部は、前記複数の通信装置のいずれでも受信されない識別情報のリストを記憶し、
前記制御部は、前記リスト中の識別情報から、前記第２の識別情報を選択する
ことを特徴とする付記１または２に記載の通信制御装置。
（付記４）
前記記憶部は、前記複数の通信装置のいずれかで受信される識別情報のリストを記憶し、
前記制御部は、
前記第２の識別情報の候補とする第１の候補を決定し、
前記第１の候補が前記リストに含まれておらず、かつ、前記第１の識別情報より前記選択部で優先される値である場合、前記第１の候補を前記第２の識別情報に決定し、
前記第１の候補が前記リストに含まれていると、前記第２の識別情報の第２の候補を生成するとともに、前記第２の候補が前記リストに含まれているかを判定する
ことを特徴とする付記１または２に記載の通信制御装置。
（付記５）
前記記憶部は、前記複数の通信装置のいずれでも受信されない識別情報を含むフレームのリストを記憶し、
前記制御部は、前記リスト中のフレームから、前記第２のフレームを選択し、
選択した第２のフレームの前記対象ビット以降を、前記選択部に出力する
ことを特徴とする付記２に記載の通信制御装置。
（付記６）
フレームの識別情報を用いて前記フレームを受信するかを判定する複数の通信装置の間の通信を制御する通信制御装置が、
第１のフレームを識別する第１の識別情報は、前記第１のフレームの受信ポートに接続された通信装置での送信処理に使用される識別情報として、前記受信ポートに対応付けられているかを判定し、
前記第１の識別情報が前記受信ポートに対応付けられていない場合、前記複数の通信装置のいずれでも受信されない第２の識別情報を設定した第２のフレームを生成し、
前記第１のフレームの代わりに前記第２のフレームを前記複数の通信装置に送信する
処理を行うことを特徴とする通信制御方法。
（付記７）
前記通信制御装置は、
前記第１の識別情報の先頭ビットから比較対象のビットまでの第１のビット列が前記受信ポートに対応付けられた識別情報のいずれかと一致する場合、前記第１のフレーム中の比較対象とした対象ビットを前記第２のフレーム中のビットとして複製し、
前記第１のビット列が前記受信ポートに対応付けられた識別情報のいずれにも一致しないことを特定すると、前記第２の識別情報のうちで前記選択部に出力されていない第２のビット列の値を、前記第１の識別情報中の前記対象ビット以降の値よりも、前記複数の通信装置への送信対象として優先される値に設定する
ことを特徴とする付記６に記載の通信制御方法。
（付記８）
前記通信制御装置は、前記複数の通信装置のいずれでも受信されない識別情報のリストから、前記第２の識別情報を選択する
ことを特徴とする付記６または７に記載の通信制御方法。
（付記９）
前記通信制御装置は、
前記第２の識別情報の候補とする第１の候補を決定し、
前記第１の候補が前記複数の通信装置のいずれかで受信される識別情報のリストに含まれておらず、かつ、前記第１の識別情報より前記選択部で優先される値である場合、前記第１の候補を前記第２の識別情報に決定し、
前記第１の候補が前記リストに含まれていると、前記第２の識別情報の第２の候補を生成するとともに、前記第２の候補が前記リストに含まれているかを判定する
ことを特徴とする付記６または７に記載の通信制御方法。
（付記１０）
前記通信制御装置は、
前記複数の通信装置のいずれでも受信されない識別情報を含むフレームのリスト中から、前記第２のフレームを選択し、
選択した第２のフレームの前記対象ビット以降を、前記選択部に出力する
ことを特徴とする付記７に記載の通信制御方法。
（付記１１）
フレームの識別情報を用いて前記フレームを受信するかを判定する複数の通信装置の間の通信を制御する通信制御装置に、
第１のフレームを識別する第１の識別情報は、前記第１のフレームの受信ポートに接続された通信装置での送信処理に使用される識別情報として、前記受信ポートに対応付けられているかを判定し、
前記第１の識別情報が前記受信ポートに対応付けられていない場合、前記複数の通信装置のいずれでも受信されない第２の識別情報を設定した第２のフレームを生成し、
前記第１のフレームの代わりに前記第２のフレームを前記複数の通信装置に送信する
処理を行わせることを特徴とする通信制御プログラム。
【符号の説明】
【００８６】
５  ＥＣＵ
１０  ＣＡＮハブ
１１、２１  ＣＡＮトランシーバ
１２、２２  通信調停部
２０、６０  通信制御装置
２３  選択部
３０  制御部
３１  変換部
３２  比較部
４０  記憶部
４１  ホワイトリスト
４２  未使用ＩＤリスト
４３  使用ＩＤリスト
１０１、１０４  選択回路
１０２  処理回路
１０３  メモリ
【図１】
2016116132.tif 000003
【図２】
2016116132.tif 000004
【図３】
2016116132.tif 000005
【図４】
2016116132.tif 000006
【図５】
2016116132.tif 000007
【図６】
2016116132.tif 000008
【図７】
2016116132.tif 000009
【図８】
2016116132.tif 000010
【図９】
2016116132.tif 000011
【図１０】
2016116132.tif 000012
【図１１】
2016116132.tif 000013
【図１２】
2016116132.tif 000014
【図１３】
2016116132.tif 000015
【図１４】
2016116132.tif 000016
【図１５】
2016116132.tif 000017
【図１６】
2016116132.tif 000018