(57)【特許請求の範囲】
【請求項１】
ネットワークを介してメッセージを受信する通信部と、
前記受信されたメッセージから取得された少なくとも１つの監視項目の値が各基準範囲内に含まれているか否かに基づいて、前記受信されたメッセージが不正メッセージであるか否かを判定する第１不正検知部と、
を備え、
前記監視項目ごとに、第１基準範囲と、前記第１基準範囲より範囲が狭い第２基準範囲とが設定され、
前記第１不正検知部は、前記監視項目の値が前記第１基準範囲に含まれかつ前記第２基準範囲に含まれない監視項目の数が、予め設定された判定基準となる数以上であることを満たすとき、前記メッセージを不正メッセージと判定する、
電子制御装置。
【請求項２】
前記第２基準範囲は、前記第１基準範囲に含まれた範囲であってかつ前記第１基準範囲より狭い範囲である、
請求項１に記載の電子制御装置。
【請求項３】
前記第１不正検知部によって判定される監視項目は、送信周期、送信頻度、ペイロードの範囲、および、ペイロードの変化量の少なくともいずれか１つである、
請求項１又は２に記載の電子制御装置。
【請求項４】
前記受信されたメッセージから取得された、前記第１不正検知部によって判定される監視項目とは異なる少なくとも１つの他の監視項目の値と、当該他の監視項目の値に対応する基準値とを比較して、前記受信されたメッセージが不正メッセージであるか否かを判定する第２不正検知部と、
をさらに備え、
前記第２不正検知部は、前記他の監視項目の値が当該他の監視項目の値に対応する基準値と合致しないとき、前記受信されたメッセージを不正メッセージと判定する、
請求項１から３のいずれか１項に記載の電子制御装置。
【請求項５】
前記第２不正検知部によって判定される監視項目は、前記受信されたメッセージを含むフレームのＩＤ、前記フレームのデータ長、および、前記フレームに含まれるデータフィールドの所定位置の値の少なくともいずれか１つである、
請求項４に記載の電子制御装置。
【請求項６】
ネットワークを介してメッセージを送受信する通信部と、
前記受信されたメッセージから取得された少なくとも１つの監視項目の値が各基準範囲内に含まれているか否かに基づいて、前記受信されたメッセージが不正メッセージであるか否かを判定する第１不正検知部と、
を備え、
前記監視項目ごとに、第１基準範囲と、前記第１基準範囲より範囲が狭い第２基準範囲とが設定され、
前記第１不正検知部は、前記監視項目の値が前記第１基準範囲に含まれかつ前記第２基準範囲に含まれない監視項目の数が、予め設定された判定基準となる数以上であることを満たすとき、前記メッセージを不正メッセージと判定し、
前記通信部は、前記第１不正検知部によって正常メッセージと判定されたメッセージを前記ネットワークへ送信する、
ゲートウェイ装置。
【請求項７】
ネットワークを介して受信されたメッセージから取得された少なくとも１つの監視項目の値が基準範囲内に含まれているか否かに基づいて、前記受信されたメッセージが不正メッセージであるか否かを判定する処理をコンピュータに実行させるための検知プログラムであって、
前記監視項目ごとに、第１基準範囲と、前記第１基準範囲より範囲が狭い第２基準範囲が設定され、
前記不正メッセージであるか否かを判定する処理は、前記監視項目の値が前記第１基準範囲に含まれかつ前記第２基準範囲に含まれない監視項目の数が、予め設定された判定基準となる数以上であることを満たすとき、前記メッセージを不正メッセージと判定する、
検知プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、バスで接続された通信システムにおける電子制御装置、ゲートウェイ装置、及び検知プログラムに関する。
【背景技術】
【０００２】
車載ネットワークとしてＣＡＮ（Ｃｏｎｔｒｏｌｌｅｒ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）が普及している。車載用途では機器の誤動作の防止がより強く求められる。従ってＣＡＮに接続された機器を、ＣＡＮを介した不正な攻撃から十分に防御する必要がある。例えば、ＣＡＮ上のメッセージの周期性をチェックすることで、不正メッセージを検知する方法がある（例えば、特許文献１参照）。当該検知方法において、正規メッセージの若干の送信タイミングのずれまたは若干の伝送遅延により、正規メッセージを不正メッセージとして誤検知することを防止する必要がある。そこで、判定用のパラメータにマージンを持たせることが考えられる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】国際公開第２０１４／１１５４５５号
【発明の概要】
【発明が解決しようとする課題】
【０００４】
上述のように、不正メッセージを検知するための判定用のパラメータにマージンを持たせると、正規メッセージと近い周期、頻度、またはデータを持つ不正メッセージを正規メッセージとして見逃す可能性が増大する。車載ネットワークにおけるメッセージの不正検知において、正規メッセージを不正メッセージと判定する誤検知と、不正メッセージを正規メッセージと判定する検知漏れの両方を低減する必要がある。
【０００５】
本発明はこうした状況に鑑みなされたものであり、その目的は、車載ネットワークにおけるメッセージの不正検知において、誤検知と検知漏れをバランス良く低減する技術を提供することにある。
【課題を解決するための手段】
【０００６】
上記課題を解決するために、本発明のある態様の通信装置は、ネットワークにおけるメッセージを送受信する通信部と、前記通信部において受信されたメッセージから複数の監視項目の値を検出し、前記複数の監視項目の各検出値が各基準範囲に収まっているか否かを判定して、不正メッセージを検知する第１不正検知部と、を備え、前記複数の監視項目ごとに、第１基準範囲と、前記第１基準範囲より範囲が狭い第２基準範囲とが設定され、前記第１不正検知部は、前記各検出値のいずれかが前記第１基準範囲外の値であるとき、前記メッセージを不正メッセージと判定し、前記各検出値のいずれかが前記第１基準範囲内でかつ前記第２基準範囲外の値であるとき、所定の規則を満たす場合に前記メッセージを不正メッセージと判定する。
【０００７】
なお、以上の構成要素の任意の組み合わせ、本発明の表現を方法、装置、システム、コンピュータプログラム、コンピュータプログラムを記録した記録媒体などの間で変換したものもまた、本発明の態様として有効である。
【発明の効果】
【０００８】
本発明によれば、車載ネットワークにおけるメッセージの不正検知において、誤検知と検知漏れをバランス良く低減することができる。
【図面の簡単な説明】
【０００９】
【図１】本発明の実施の形態に係る、車両内に構築される車載ネットワークシステムの構成を示す図である。
【図２】ＣＡＮプロトコルで規定されるデータフレームのフォーマットを示す図である。
【図３】ゲートウェイ装置の構成を示す図である。
【図４】図４（ａ）はゲートウェイ装置が受信するメッセージＩＤリストの一例を示す図、図４（ｂ）はゲートウェイ装置が保有する転送ルールの一例を示す図である。
【図５】ゲートウェイ装置のフレーム転送処理を示すフローチャートである。
【図６】不正検知パラメータ記憶部に保持される不正検知パラメータテーブルの一例を示す図である。
【図７】第１基準パラメータ範囲と第２基準パラメータ範囲の関係を模式的に描いた図である。
【図８】ゲートウェイ装置の不正検知処理を示すフローチャートである。
【図９】図８のステップＳ１２に係る不正検知処理のサブルーチンを示すフローチャートである。
【図１０】図８のステップＳ１５に係る不正検知処理のサブルーチンを示すフローチャートである。
【図１１】図８のステップＳ１５に係る不正検知処理のサブルーチンの変形例を示すフローチャートである。
【図１２】ゲートウェイ装置の不正検知処理の変形例を示すフローチャートである。
【図１３】不正検知部を搭載したＥＣＵの構成を示す図である。
【発明を実施するための形態】
【００１０】
本発明の実施の形態は車載ネットワークシステムに関する。近年、車両内に多数の電子制御ユニット（ＥＣＵ：Ｅｌｅｃｔｒｏｎｉｃ  Ｃｏｎｔｒｏｌ  Ｕｎｉｔ）が搭載されるようになってきている。車載ネットワークシステムは、これら多数のＥＣＵを接続し、相互通信する。車載ネットワークに関する多数の規格が存在するが、代表的な車載ネットワーク規格の一つに、ＩＳＯ１１８９８−１で規定されたＣＡＮがある。
【００１１】
ＣＡＮでは、通信路は２本のバスで構成され、バスに接続されているＥＣＵはノードと呼ばれる。バスに接続されている各ノードは、フレームと呼ばれるメッセージを送受信する。またＣＡＮでは、送信先または送信元を指す識別子は存在せず、送信ノードはフレーム毎にメッセージＩＤと呼ばれるＩＤを付加して送信する（つまりバスに信号を送出する）。各受信ノードはバスに送信されたフレームを受信し（つまりバスから信号を読み取り）、フレームに付加されたＩＤに基づいて必要なフレームに対してのみ処理を行う。
【００１２】
上述の通り、車両内には多数のＥＣＵが配置され、それぞれがバスによって接続される。各ＥＣＵはＣＡＮを介して、様々なメッセージを互いにやりとりしながら動作している。ここで、外部と通信機能を持つＥＣＵが外部から攻撃され、ＣＡＮに対して攻撃メッセージを送信できるようになった場合、他のＥＣＵになりすまして不正メッセージを送信することができる。また、あるＥＣＵ内のファームウェア内に、不正プログラムが忍び込まれている場合も、そのＥＣＵはＣＡＮに対して攻撃メッセージを送信することができる。また、診断用ポートであるＯＢＤ−ＩＩポートまたは車両内のＣＡＮに不正な機器を接続された場合も、ＣＡＮに対して攻撃メッセージが送信されることがある。このような攻撃によって車両が不正に制御されてしまうため、これらの攻撃に対する防御が重要となる。
【００１３】
図１は、本発明の実施の形態に係る、車両１内に構築される車載ネットワークシステム５の構成を示す図である。車載ネットワークシステム５は、各種の機器または補機に接続された複数のＥＣＵ１０、ゲートウェイ装置３０を備え、それらはバス２０で接続されている。
【００１４】
図１に示す例では、第１ＥＣＵ１０ａはエンジン４１に、第２ＥＣＵ１０ｂはブレーキ４２に、第３ＥＣＵ１０ｃはドア開閉センサ４３に、第４ＥＣＵ１０ｄはウインドウ開閉センサ４４にそれぞれ接続されている。第１ＥＣＵ１０ａ−第４ＥＣＵ１０ｄは、それぞれの状態を示すデータを取得し、当該データを含むフレームを定期的にバス２０上に送信している。
【００１５】
第１ＥＣＵ１０ａ及び第２ＥＣＵ１０ｂは第１バス２０ａに接続され、第３ＥＣＵ１０ｃ及び第４ＥＣＵ１０ｄは第２バス２０ｂに接続されている。第１バス２０ａ及び第２バス２０ｂによって、それぞれサブネットワークシステムが構成されている。ゲートウェイ装置３０は、第１バス２０ａによって構成された第１サブネットワークシステムと、第２バス２０ｂによって構成された第２サブネットワークシステムとを中継する。ゲートウェイ装置３０は、一方のサブネットワークシステムのバス２０から受信したフレームを、他方のサブネットワークシステムのバス２０に転送する機能を持つ。以下では、車載ネットワークシステム５として、ＣＡＮプロトコルに従ったネットワークシステムを用いる例を示す。
【００１６】
図２は、ＣＡＮプロトコルで規定されるデータフレームのフォーマットを示す図である。図２には、ＣＡＮプロトコルで規定される標準ＩＤフォーマットにおけるデータフレームが示されている。データフレームは、ＳＯＦ（Ｓｔａｒｔ  Ｏｆ  Ｆｒａｍｅ）、ＩＤフィールド、ＲＴＲ（Ｒｅｍｏｔｅ  Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｒｅｑｕｅｓｔ）、ＩＤＥ（Ｉｄｅｎｔｉｆｉｅｒ  Ｅｘｔｅｎｓｉｏｎ）、予約ビット「ｒ」、ＤＬＣ（Ｄａｔａ  Ｌｅｎｇｔｈ  Ｃｏｄｅ）、データフィールド、ＣＲＣ（Ｃｙｃｌｉｃ  Ｒｅｄｕｎｄａｎｃｙ  Ｃｈｅｃｋ）シーケンス、ＣＲＣデリミタ「ＤＥＬ」、ＡＣＫ（Ａｃｋｎｏｗｌｅｄｇｅｍｅｎｔ）スロット、ＡＣＫデリミタ「ＤＥＬ」、及びＥＯＦ（Ｅｎｄ  Ｏｆ  Ｆｒａｍｅ）で構成される。
【００１７】
ＳＯＦは、１ｂｉｔのドミナント（dominant）で構成される。バスがアイドルの状態ではレセシブ（recessive）になっており、ＳＯＦによりドミナントへ変更することでフレームの送信開始を通知する。
【００１８】
ＩＤフィールドは、１１ｂｉｔで構成される、データの種類を示す値であるＩＤ（メッセージＩＤ）を格納するフィールドである。複数のノードが同時に送信を開始した場合、このＩＤフィールドで通信調停を行うために、ＩＤが小さい値を持つフレームが高い優先度となるよう設計されている。
【００１９】
ＲＴＲは、データフレームとリモートフレームとを識別するための値であり、データフレームにおいてはドミナント１ｂｉｔで構成される。
【００２０】
ＩＤＥと予約ビット「ｒ」は、両方ドミナント１ｂｉｔで構成される。ＤＬＣは、４ｂｉｔで構成され、データフィールドの長さを示す値である。なお、ＩＤＥ、予約ビット「ｒ」及びＤＬＣを合わせてコントロールフィールドと称する。
【００２１】
データフィールドは、最大６４ｂｉｔで構成される送信データを示す値である。データフィールドは、８ｂｉｔ毎に長さを調整することができる。送信データの仕様については、ＣＡＮプロトコルで規定されておらず、車載ネットワークシステム５において定められる。従って、送信データの仕様は、車種、製造者（製造メーカ）等に依存する。
【００２２】
ＣＲＣシーケンスは、１５ｂｉｔで構成され、ＳＯＦ、ＩＤフィールド、コントロールフィールド及びデータフィールドの送信値より算出される。ＣＲＣデリミタは、１ｂｉｔのレセシブで構成されるＣＲＣシーケンスの終了を表す区切り記号である。なお、ＣＲＣシーケンス及びＣＲＣデリミタを合わせてＣＲＣフィールドと称する。
【００２３】
ＡＣＫスロットは、１ｂｉｔで構成される。送信ノードはＡＣＫスロットをレセシブにして送信を行う。受信ノードはＣＲＣシーケンスまで正常に受信ができたとき、ＡＣＫスロットをドミナントとして送信する。レセシブよりドミナントが優先されるため、送信後にＡＣＫスロットがドミナントであれば、送信ノードは、いずれかの受信ノードが正常に受信したことを確認できる。
【００２４】
ＡＣＫデリミタは、１ｂｉｔのレセシブで構成されるＡＣＫの終了を表す区切り記号である。ＥＯＦは、７ｂｉｔのレセシブで構成されており、データフレームの終了を示す。
【００２５】
図３は、ゲートウェイ装置３０の構成を示す図である。ゲートウェイ装置３０は、処理部３１、記憶部３２、通信制御部３３及びフレーム送受信部３４を備える。処理部３１は、フレーム処理部３１１及び不正検知部３１２を含む。記憶部３２は、受信ＩＤリスト記憶部３２１、転送ルール記憶部３２２及び不正検知パラメータ記憶部３２３を含む。
【００２６】
処理部３１は、ハードウェア資源とソフトウェア資源の協働、またはハードウェア資源のみにより実現できる。ハードウェア資源としてマイクロコンピュータ、ＤＳＰ、ＦＰＧＡ、その他のＬＳＩが利用できる。ソフトウェア資源としてオペレーティングシステム、アプリケーション、ファームウェア等のプログラムが利用できる。記憶部３２には揮発性メモリ及び不揮発性メモリが利用できる。通信制御部３３には、専用のハードウェアであるＣＡＮコントローラが利用できる。なお、通信制御部３３の機能を処理部３１に統合する構成も可能である。フレーム送受信部３４には、専用のハードウェアであるＣＡＮトランシーバが利用できる。
【００２７】
フレーム送受信部３４は、第１バス２０ａ及び第２バス２０ｂのそれぞれに、ＣＡＮプロトコルに従ったフレームを送受信する。フレーム送受信部３４は、バス２０からフレームを１ｂｉｔずつ受信して、通信制御部３３にフレームを転送する。また、フレーム送受信部３４は、通信制御部３３から取得したバス情報に応じて、フレームをバス２０に１ｂｉｔずつ送信する。
【００２８】
通信制御部３３は、フレーム送受信部３４から取得したフレームを解釈し、フレームを構成する各値を、ＣＡＮプロトコルにおける各フィールドにマッピングする。通信制御部３３は、マッピングされたフレームの値をフレーム処理部３１１に転送する。
【００２９】
フレーム処理部３１１は、通信制御部３３から取得したＩＤフィールドの値（メッセージＩＤ）を取得し、受信ＩＤリスト記憶部３２１に保持されているメッセージＩＤのリストを参照して、当該フレームを受信するか否かを判定する。ＩＤフィールドの値が当該リストに含まれている場合は受信すると判定し、含まれていない場合は受信しないと判定する。受信すると判定した場合、フレーム処理部３１１はＩＤフィールド以降のフィールドの値を不正検知部３１２に転送する。
【００３０】
また通信制御部３３は、フレーム送受信部３４から取得したフレームがＣＡＮプロトコルに則していないと判断した場合、エラーフレームを生成し、フレーム送受信部３４にエラーフレームを転送する。フレーム送受信部３４は、通信制御部３３から取得したエラーフレームをバス２０に送出する。
【００３１】
フレーム処理部３１１は、通信制御部３３から取得したＩＤフィールド以降のフィールドの値（メッセージ）を不正検知部３１２に転送し、取得したメッセージが攻撃メッセージであるか否かの判定を不正検知部３１２に依頼する。
【００３２】
またフレーム処理部３１１は、転送ルール記憶部３２２に保持される転送ルールと通信制御部３３から取得したメッセージＩＤとに従い、当該フレームを転送するバスを決定する。フレーム処理部３１１は、決定された転送するバスの情報（バス情報）と当該メッセージＩＤとデータを通信制御部３３に通知する。
【００３３】
通信制御部３３は、フレーム処理部３１１から取得したメッセージＩＤとデータをもとにフレームを生成し、バス情報と生成されたフレームをフレーム送受信部３４に転送する。フレーム送受信部３４は、通信制御部３３から取得したフレームを、バス情報に規定されたバス２０に送出する。
【００３４】
不正検知部３１２は、基準値比較部３１２ａ及びレンジ判定部３１２ｂを含み、受信したメッセージが不正なメッセージであるか否かを判定する。不正検知部３１２の詳細は後述する。
【００３５】
受信ＩＤリスト記憶部３２１は、ゲートウェイ装置３０が受信するメッセージＩＤのリストを保持する。転送ルール記憶部３２２は、転送するルールをバス毎に保持する。不正検知パラメータ記憶部３２３は、不正検知部３１２における不正検知処理で使用されるパラメータを保持する。
【００３６】
図４（ａ）は、ゲートウェイ装置３０が受信するメッセージＩＤリストの一例を示す図である。図４（ａ）に示すメッセージＩＤリストテーブル３２１ａは、メッセージＩＤが「１」、「２」、「３」、「４」のフレームをゲートウェイ装置３０が受信する設定を含む。
【００３７】
図４（ｂ）は、ゲートウェイ装置３０が保有する転送ルールの一例を示す図である。図４（ｂ）に示す転送ルールテーブル３２２ａは、第１バス２０ａから受信するフレームはメッセージＩＤに関わらず、第２バス２０ｂに転送する設定（ＩＤは＊で示される）を含む。また、第２バス２０ｂから受信するフレームのうち、メッセージＩＤが「３」のフレームのみを第１バス２０ａに転送する設定（ＩＤは３で示される）を含む。
【００３８】
図５は、ゲートウェイ装置３０におけるフレーム転送処理を示すフローチャートである。図５では、ゲートウェイ装置３０が、第１バス２０ａから受信したフレームを第２バス２０ｂに転送する処理を説明する。なお、第２バス２０ｂから受信したフレームを第１バス２０ａに転送する処理も同様であるため、説明を省略する。
【００３９】
まず、フレーム送受信部３４は、第１バス２０ａからフレームを受信する（Ｓ１）。フレーム送受信部３４は、受信したフレームのＩＤフィールドの値（メッセージＩＤ）を通信制御部３３へ転送する。通信制御部３３は、フレーム処理部３１１と連携して、受信したフレームのメッセージＩＤに基づいて、受信処理する必要があるフレームであるか否かを判定する（Ｓ２）。
【００４０】
受信処理する必要があるフレームであると判定された場合（Ｓ２のＹ）、通信制御部３３は、フレーム処理部３１１にフレーム内の各フィールドの値を転送する。フレーム処理部３１１は、転送ルール記憶部３２２に保持される転送ルールに従って、当該フレームの転送先のバスを決定する（Ｓ３）。
【００４１】
フレーム処理部３１１は、フレーム内の各フィールドの値を不正検知部３１２に通知し、攻撃メッセージ（不正メッセージ）であるか否かの判定を依頼する。不正検知部３１２は、取得した各フィールドの値から、当該フレームが攻撃メッセージであるか否かを判定し、その判定結果をフレーム処理部３１１に報告する（Ｓ４）。
【００４２】
受信したフレームが正常メッセージであると判定された場合（Ｓ４のＹ）、フレーム処理部３１１は、ステップＳ３で決定された転送先のバス上に当該フレームを転送するよう、通信制御部３３に依頼する。通信制御部３３は、フレーム処理部３１１からの依頼を受けて、指定された転送先へフレームを転送する（Ｓ５）。より具体的には、フレーム処理部３１１は、フレームの各フィールドの値を通信制御部３３へ転送し、通信制御部３３がフレームを生成し、フレーム送受信部３４にフレームを転送する。フレーム送受信部３４は、取得したフレームを指定されたバス２０に送出する。
【００４３】
ステップＳ２において、受信処理する必要がないフレームであると判定された場合（Ｓ２のＮ）、またはステップＳ４において、受信したフレームが攻撃メッセージであると判定された場合（Ｓ４のＮ）、フレームの転送は実施されない。
【００４４】
なお、上述のフローチャートでは、転送先を決定した（ステップＳ３）後、攻撃メッセージであるか否かを判断した（ステップＳ４）が、この順番に限定されるものではない。攻撃メッセージであるか否かを判断した（ステップＳ４）後、転送先を決定（ステップＳ３）してもよいし、転送先の決定（ステップＳ３）と攻撃メッセージであるか否かの判断（ステップＳ４）を同時に行ってもよい。
【００４５】
以下、不正検知部３１２における不正検知処理の詳細を説明する。基準値比較部３１２ａは、受信したメッセージが不正であるか否かを判定する際、対象となる値と基準パラメータ値との比較により不正であるか否かを判定する。レンジ判定部３１２ｂは、受信したメッセージが不正であるか否かを判定する際、対象となる値が基準パラメータ範囲に収まるか否かを判定する。
【００４６】
基準値比較部３１２ａにおける判定に用いられる監視項目は、対象となる値の正解値が一意的に定まっている。当該監視項目の検出値と当該監視項目の基準パラメータ値（固定値）とを比較することにより、当該監視項目の合否を形式的に一意に判定できる。即ち、監視項目の検出値が監視項目の基準パラメータ値と一致していれば合格、不一致であれば不合格と判定される。
【００４７】
一方、レンジ判定部３１２ｂにおける判定に用いられる監視項目は、対象となる値の合格基準に幅があり、送信周期など値が変動する監視項目が該当する。例えば、送信周期はバスのトラフィック量、外乱ノイズ等の要因により値が微小に変化する。
【００４８】
レンジ判定部３１２ｂにおける判定処理では、２つの基準パラメータ範囲を使用する。第１基準パラメータ範囲は、第２基準パラメータ範囲より広い範囲を持つ。例えば、第２基準パラメータ範囲は、自動車メーカの仕様に基づき、モデル、仕向地を考慮して監視項目ごとに決定された範囲に設定される。第１基準パラメータ範囲は、第２基準パラメータの範囲の前および／または後に所定のマージンを持たせた範囲に設定される。
【００４９】
レンジ判定部３１２ｂは、受信したフレームをもとに検出した値が第１基準パラメータ範囲を逸脱している場合は不合格と判定し、第２基準パラメータ範囲に収まっている場合は合格と判定する。また、当該検出値が、第１基準パラメータ範囲には収まるが第２基準パラメータ範囲を逸脱している場合はグレーと判定する。
【００５０】
図６は、不正検知パラメータ記憶部３２３に保持される不正検知パラメータテーブル３２３ａの一例を示す図である。図６に示すテーブルでは、基準値比較部３１２ａによる判定処理の対象となる監視項目と、レンジ判定部３１２ｂによる判定処理の対象となる監視項目に分類されている。なお、図６では両者を同一テーブルで構築する例を示しているが、両者を別のテーブルで構築してもよい。
【００５１】
図６に示す例では、基準値比較部３１２ａによる判定処理の対象となる監視項目として、「ＩＤ」、「データ長」、「ペイロード（固定）」の３項目を規定している。
【００５２】
「ＩＤ」は、ゲートウェイ装置３０が送受信するフレームのＩＤが登録されているＩＤリスト中に、受信したフレームのＩＤが登録されているか否かが判定される項目である。フレームのＩＤがＩＤリストに登録されていれば合格、登録されていなければ不合格と判定される。この監視項目においては、検出された値（ＩＤ）と、リストに含まれる複数の基準パラメータ値（登録ＩＤ）とを照合する必要がある。なお、ＩＤリストに登録されているＩＤは、車載ネットワークシステム５において送受信されるフレームのＩＤであってもよい。
【００５３】
「データ長」は、受信したフレームのデータ長が、ＩＤごとに規定された正規の値であるか否かが判定される項目である。データ長が正規の値に一致すれば合格、一致しなければ不合格と判定される。この監視項目においては、検出された値（データ長）と、１つの基準パラメータ値（規定のデータ長）とが比較される。
【００５４】
「ペイロード(固定)」は、データフィールドの所定の位置の値（ビット列）が、あらかじめ自動車メーカの仕様によって規定された値（ビット列）と同じ値であるか否かが判定される項目である。両者の値（ビット列）が一致すれば合格、一致しなければ不合格となる。この監視項目においては、検出された値（ビット列）と、１つの基準パラメータ値（ビット列）とが比較される。なお、データフィールドの複数の箇所のビット列を比較する場合は、各箇所の値（ビット列）が比較される。
【００５５】
また、図６に示す例では、レンジ判定部３１２ｂによる判定処理の対象となる監視項目として、「送信周期」、「送信頻度」、「ペイロード（変化量）」、「ペイロード（範囲）」の４項目を規定している。
【００５６】
「送信周期」は、受信したフレームの周期が、規定された周期の範囲に収まっているか否かが判定される項目である。例えば、規定された周期が１００ｍｓの場合、第１基準パラメータ範囲（第１周期範囲）が８０〜１２０ｍｓ（マージン２０ｍｓ（２０％））、第２基準パラメータ範囲（第２周期範囲）が９５〜１０５ｍｓ（マージン５ｍｓ（５％））に設定される。レンジ判定部３１２ｂは、受信したフレームの周期が第１周期範囲外の場合は不合格と判定し、第２周期範囲内の場合は合格と判定し、第１周期範囲内でかつ第２周期範囲外の周期の場合はグレーと判定する。なお、フレームの周期は、今回受信したフレームと、当該受信したフレームと同じメッセージＩＤを持つ前回受信したフレームとの時間差に基づいて特定される。
【００５７】
「送信頻度」は、受信したフレームの送信頻度が、規定された送信頻度の範囲に収まっているか否かが判定される項目である。例えば、規定された送信頻度が毎秒１００フレームの場合、第１基準パラメータ範囲（第１送信頻度）が毎秒０〜１１０（マージン１０フレーム（１０％））、第２基準パラメータ範囲（第２送信頻度）が毎秒０〜１０５（マージン５フレーム（５％））に設定される。レンジ判定部３１２ｂは、受信したフレームの送信頻度が第１送信頻度外の場合は不合格と判定し、第２送信頻度範囲内の場合は合格と判定し、第１送信頻度範囲内でかつ第２送信頻度範囲外の送信頻度の場合はグレーと判定する。なお、フレームの送信頻度は、メッセージＩＤごとに検出される。
【００５８】
「ペイロード（変化量）」は、受信したフレームにおけるデータフィールドのデータの値と、当該受信したフレームと同じメッセージＩＤを持つ前回受信したフレームにおけるデータフィールドのデータの値との変化量（絶対値）が、規定された変化量（絶対値）の範囲に収まっているか否かが判定される項目である。例えば、データフィールドに含まれるデータがエンジン回転数の場合、第１基準パラメータ範囲（第１変化範囲）が０〜１００ｒｍｓ、第２基準パラメータ範囲（第２変化範囲）が０〜８０ｒｍｓに設定される。レンジ判定部３１２ｂは、受信したフレームのデータフィールドのデータ変化量が第１変化範囲を超える場合は不合格と判定し、第２変化範囲未満の場合は合格と判定し、第１変化範囲以下で第２変化範囲以上の場合はグレーと判定する。なお、第１変化範囲および第２変化範囲は、対象となるデータごとに異なる範囲が設定される。
【００５９】
また、一つのデータフィールドには、複数のデータ(エンジン回転数、車速など)が含まれる場合がある。その場合、レンジ判定部３１２ｂは、１つの受信フレームに対して、複数のデータのそれぞれにおいて上記の変化量の判定を行う。当該フレームのデータフィールドに含まれ、ペイロード（変化量）の判定対象となるデータのいずれかにおいて、上記変化量の判定に不合格となった場合は、レンジ判定部３１２ｂは、当該メッセージを不合格と判定し、すべてのデータが合格となった場合は当該メッセージを合格と判定し、対象となるデータのいずれかがグレーと判定され、かつ不合格となったデータが存在しない場合は当該メッセージをグレーと判定する。
【００６０】
「ペイロード(範囲)」は、受信したフレームのデータフィールドのデータの値が、規定されたデータの値の範囲に収まっているか否かが判定される項目である。例えば、データフィールドに含まれるデータがエンジン回転数の場合、第１基準パラメータ範囲（第１データ範囲）が０ｒｐｍ〜７０００ｒｐｍ、第２基準パラメータ範囲（第２データ範囲）が０ｒｐｍ〜６０００ｒｐｍに設定される。レンジ判定部３１２ｂは、受信したフレームのデータフィールドのデータの範囲が第１データ範囲を超える場合は不合格と判定し、第２データ範囲未満の場合は合格と判定し、第１データ範囲以下で第２データ範囲以上の場合はグレーと判定する。なお、第１データ範囲および第２データ範囲は、対象となるデータごとに異なる範囲が設定される。また、各データ範囲は、状況に応じて変化するようにしてもよい。
【００６１】
また、一つのデータフィールドには、複数のデータ(エンジン回転数、車速など)が含まれる場合がある。その場合、レンジ判定部３１２ｂは、１つの受信フレームに対して、複数のデータのそれぞれにおいて上記のデータ範囲の判定を行う。当該フレームのデータフィールドに含まれ、ペイロード（範囲）の判定対象となるデータのいずれかにおいて、レンジ判定部３１２ｂは、上記変化量の判定に不合格となった場合は不合格と判定し、すべてのデータが合格となった場合は当該メッセージを合格と判定し、対象となるデータのいずれかがグレーと判定され、かつ不合格となったデータが存在しない場合は当該メッセージをグレーと判定する。
【００６２】
図７は、第１基準パラメータ範囲と第２基準パラメータ範囲の関係を模式的に描いた図である。レンジ判定部３１２ｂは、検出値がマージンの範囲に位置する場合、追加の判定基準を用いて、最終的に受信したメッセージが不正なメッセージであるか否かを判定する。追加の判定基準については後述する。
【００６３】
図８は、ゲートウェイ装置３０の不正検知処理を示すフローチャートである。フレーム送受信部３４は、バス２０からフレームを受信する（Ｓ１０）。フレーム送受信部３４は、通信制御部３３を介して、受信したフレームの各フィールドの値をフレーム処理部３１１に転送する。図８の例では、当該フレームのメッセージＩＤが、受信ＩＤリスト記憶部３２１のメッセージＩＤリストテーブル３２１ａに含まれているＩＤであることを前提とする。フレーム処理部３１１は、当該フレームに対する不正検知処理を不正検知部３１２に依頼する。
【００６４】
基準値比較部３１２ａは、当該フレームから、基準値比較用の監視項目の値を検出する（Ｓ１１）。基準値比較部３１２ａは、当該監視項目の検出値と、当該監視項目の基準パラメータ値とを用いて不正検知処理を行う（Ｓ１２）。
【００６５】
図９は、図８のステップＳ１２に係る不正検知処理のサブルーチンを示すフローチャートである。基準値比較部３１２ａは本サブルーチンで使用するパラメータｎに初期値として１を設定し（Ｓ１２１）、定数Ｔとして当該基準値比較用の監視項目の数（上述の「ＩＤ」、「データ長」、「ペイロード（固定）」の例では３）を設定する（Ｓ１２２）。
【００６６】
基準値比較部３１２ａは、監視項目（ｎ）の検出値と、監視項目（ｎ）の基準パラメータ値とを比較する（Ｓ１２３）。両者が一致しない場合（Ｓ１２３の不一致）、基準値比較部３１２ａは項目判定結果（ｎ）に「異常」を設定する（Ｓ１２４）。両者が一致する場合（Ｓ１２３の一致）、基準値比較部３１２ａは項目判定結果（ｎ）に「正常」を設定する（Ｓ１２５）。
【００６７】
基準値比較部３１２ａはパラメータｎをインクリメントし（Ｓ１２６）、パラメータｎが定数Ｔを超えるか否かを判定する（Ｓ１２７）。パラメータｎが定数Ｔを超えない場合（Ｓ１２７のＮ）、ステップＳ１２３に戻る。パラメータｎが定数Ｔを超えた場合（Ｓ１２７のＹ）、基準値比較部３１２ａは、ｎ個の項目判定結果に「異常」が含まれるか否かを判定する（Ｓ１２８）。一つでも異常が含まれる場合（Ｓ１２８のＹ）、基準値比較部３１２ａは、受信したメッセージを不正メッセージと判定する（Ｓ１２９）。ｎ個の項目判定結果に「異常」が含まれない場合（Ｓ１２８のＮ）、基準値比較部３１２ａは、受信したメッセージを不正メッセージと判定しない（つまり、受信したメッセージを正常なメッセージと判定する）。
【００６８】
図８に戻り、基準値比較部３１２ａによる判定結果が、不正メッセージであるとの判定結果であった場合（Ｓ１３のＹ）、不正検知部３１２は、受信したメッセージが不正メッセージであることをフレーム処理部３１１に報告し（Ｓ１８）、処理を終了する。
【００６９】
基準値比較部３１２ａによる判定結果が、不正メッセージでないとの判定結果であった場合（Ｓ１３のＮ）、レンジ判定部３１２ｂは、当該フレームからレンジ判定用の監視項目の値を検出する（Ｓ１４）。レンジ判定部３１２ｂは、当該監視項目の検出値と、当該監視項目の基準パラメータ範囲とを用いて不正検知処理を行う（Ｓ１５）。
【００７０】
図１０は、図８のステップＳ１５に係る不正検知処理のサブルーチンを示すフローチャートである。レンジ判定部３１２ｂは本サブルーチンで使用するパラメータｎに初期値として１を設定し（Ｓ１５１）、定数Ｔに当該レンジ判定用の監視項目の数（上述の「送信周期」、「送信頻度」、「ペイロード（変化量）」、「ペイロード（範囲）」の例では４）を設定する（Ｓ１５２）。
【００７１】
レンジ判定部３１２ｂは、監視項目（ｎ）の検出値が、監視項目（ｎ）の第１基準パラメータ範囲に収まるか否かを判定する（Ｓ１５３）。第１基準パラメータ範囲に収まらない場合（Ｓ１５３の範囲外）、レンジ判定部３１２ｂは項目判定結果（ｎ）に「異常」を設定する（Ｓ１５４）。第１基準パラメータ範囲に収まる場合（Ｓ１５３の範囲内）、レンジ判定部３１２ｂは、監視項目（ｎ）の検出値が、監視項目（ｎ）の第２基準パラメータ範囲に収まるか否かを判定する（Ｓ１５５）。第２基準パラメータ範囲に収まる場合（Ｓ１５５の範囲内）、レンジ判定部３１２ｂは項目判定結果（ｎ）に「正常」を設定する（Ｓ１５６）。第２基準パラメータ範囲に収まらない場合（Ｓ１５５の範囲外）、レンジ判定部３１２ｂは項目判定結果（ｎ）に「グレー」を設定する（Ｓ１５７）。
【００７２】
レンジ判定部３１２ｂはパラメータｎをインクリメントし（Ｓ１５８）、パラメータｎが定数Ｔを超えるか否かを判定する（Ｓ１５９）。パラメータｎが定数Ｔを超えない場合（Ｓ１５９のＮ）、ステップＳ１５３に戻る。パラメータｎが定数Ｔを超えた場合（Ｓ１５９のＹ）、レンジ判定部３１２ｂは、ｎ個の項目判定結果に「異常」が含まれるか否かを判定する（Ｓ１５１０）。一つでも「異常」を含む場合（Ｓ１５１０のＹ）、レンジ判定部３１２ｂは、受信したメッセージを不正メッセージと判定する（Ｓ１５１２）。
【００７３】
ｎ個の項目判定結果に「異常」が含まれない場合（Ｓ１５１０のＮ）、レンジ判定部３１２ｂは、ｎ個の項目判定結果に「グレー」が設定数以上含まれるか否か（追加の判定基準に相当）を判定する（Ｓ１５１１）。「グレー」が設定数（２以上でかつＴ以下の整数）以上含まれる場合（Ｓ１５１１のＹ）、レンジ判定部３１２ｂは、受信したメッセージを不正メッセージと判定する（Ｓ１５１２）。「グレー」が設定数以上含まれない場合（Ｓ１５１１のＮ）、レンジ判定部３１２ｂは、受信したメッセージを不正メッセージと判定しない（つまり、受信したメッセージを正常なメッセージと判定する）。
【００７４】
図８に戻り、レンジ判定部３１２ｂによる判定結果が、不正メッセージであるとの判定結果であった場合（Ｓ１６のＹ）、不正検知部３１２は、受信したメッセージが不正メッセージであることをフレーム処理部３１１に報告し（Ｓ１８）、処理を終了する。レンジ判定部３１２ｂによる判定結果が、不正メッセージでないとの判定結果であった場合（Ｓ１６のＮ）、不正検知部３１２は、受信したメッセージが正常メッセージであることをフレーム処理部３１１に報告し（Ｓ１７）、処理を終了する。
【００７５】
上述の説明では、レンジ判定部３１２ｂによる不正検知処理において、異常と判定された監視項目がない場合であっても、「グレー」と判定された監視項目の数が設定数を超えた場合、不正メッセージと判定した。この点、監視項目ごとにグレー判定に重み付けを行ってもよい。
【００７６】
レンジ判定部３１２ｂは、図１０中のＳ１５５においてグレー判定となった場合、監視項目ごとに重み付けするために、項目判定結果（ｎ）に「重み」を設定する。そして、図１０中のＳ１５１１において、ｎ個の項目判定結果に含まれる「グレー」の数と設定数との比較の代わりに、それぞれの項目判定結果を合算した合計スコアと閾値とが比較される。レンジ判定部３１２ｂは、合計スコアが閾値を超えた場合は不正メッセージと判定し、超えない場合は不正メッセージと判定しない。
【００７７】
例えば、「送信周期」の重みを０．８に、「送信頻度」の重みを１．７に、「ペイロード（変化量）」の重みを０．７に、閾値を１．６に設定した場合、「送信周期」と「ペイロード（変化量）」が「グレー」と判定された（合計スコア＝１．５）としても閾値を超えない（合計スコア＜１．６）ため、不正メッセージとは判定されない。一方、「送信頻度」のみが「グレー」と判定された（合計スコア＝１．７）場合でも閾値を超える（合計スコア＞１．６）ため、不正メッセージと判定される。
【００７８】
上記の設定数、各監視項目の重み及び閾値は、実験および／またはシミュレーションの結果、設計者の知見などに基づいて設定される。設計者は、これらの値を調整することにより、判定感度を調整することができる。
【００７９】
上記図１０に示したフローチャートでは、レンジ判定不正検知部３１２ｂにおける不正検知処理として、監視項目（ｎ）の項目判定結果に関わらず、全てのレンジ判定用の監視項目（監視項目の数＝Ｔ）の判定を実行した後に、受信したメッセージが不正であるか否かを判定し、フレーム処理部３１１に報告した。
【００８０】
この点、レンジ判定用の監視項目の数と同じ数の項目判定結果が出ていない場合であっても、監視項目（ｎ）の項目判定結果に応じて、受信したメッセージが不正メッセージであるかどうかを判定し、レンジ判定不正検知部３１２ｂにおける不正検知処理を終了してもよい。
【００８１】
図１１は、図８のステップＳ１５に係る不正検知処理のサブルーチンの変形例を示すフローチャートである。レンジ判定不正検知部３１２ｂは本サブルーチンで使用するパラメータｎに初期値として１を設定し（Ｓ１５１）、定数Ｔに当該レンジ判定用の監視項目の数（上述の例では４）を設定する（Ｓ１５２）。
【００８２】
レンジ判定不正検知部３１２ｂは、監視項目（ｎ）の検出値が、監視項目（ｎ）の第１基準パラメータ範囲に収まるか否か判定する（Ｓ１５３）。監視項目（ｎ）の検出値が第１基準パラメータ範囲に収まらない場合（Ｓ１５３の範囲外）、レンジ判定不正検知部３１２ｂは項目判定結果（ｎ）に「異常」を設定する（Ｓ１５４）。この場合、レンジ判定不正検知部３１２ｂは、受信したメッセージを不正メッセージと判定し（Ｓ１５１２）、レンジ判定不正検知部３１２ｂにおける不正検知処理を終了する。
【００８３】
監視項目（ｎ）の検出値が第１基準パラメータ範囲に収まる場合（Ｓ１５３の範囲内）、レンジ判定不正検知部３１２ｂは、監視項目（ｎ）の検出値が、監視項目（ｎ）の第２基準パラメータ範囲に収まるか否か判定する（Ｓ１５５）。監視項目（ｎ）の検出値が第２基準パラメータ範囲に収まらない場合（Ｓ１５５の範囲外）、レンジ判定不正検知部３１２ｂは項目判定結果（ｎ）に「グレー」を設定する（Ｓ１５７）。
【００８４】
監視項目（ｎ）の検出値が、第１基準パラメータ範囲に収まり（Ｓ１５３の範囲内）かつ第２基準パラメータ範囲に収まる場合（Ｓ１５５の範囲内）、レンジ判定不正検知部３１２ｂは、項目判定結果（ｎ）に「正常」を設定する（Ｓ１５６）。ｎ個の項目判定結果（項目判定結果（ｎ）以前）に「正常」が第２設定数（１以上のＴ以下の整数）以上含まれる場合（Ｓ１５１３のＹ）、レンジ判定不正検知部３１２ｂは、受信したメッセージを不正メッセージと判定せず、レンジ判定不正検知部３１２ｂにおける不正検知処理を終了する。
【００８５】
ｎ個の項目判定結果（項目判定結果（ｎ）以前）に「正常」が第２設定数以上含まれない場合（Ｓ１５１３のＮ）、レンジ判定不正検知部３１２ｂはパラメータｎをインクリメントし（Ｓ１５８）、パラメータｎが定数Ｔを超えるか否か判定する（Ｓ１５９）。パラメータｎが定数Ｔを超えない場合（Ｓ１５９のＮ）、ステップＳ１５３に戻る。
【００８６】
パラメータｎが定数Ｔを超えた場合（Ｓ１５９のＹ）、レンジ判定不正検知部３１２ｂは、ｎ個の項目判定結果に「グレー」が第１設定数以上含まれるか否か（追加の判定基準に相当）判定する（Ｓ１５１１）。「グレー」が第１設定数（２以上のＴ以下の整数）以上含まれる場合（Ｓ１５１１のＹ）、レンジ判定不正検知部３１２ｂは、受信したメッセージを不正メッセージと判定する（Ｓ１５１２）。「グレー」が設定数以上含まれない場合（Ｓ１５１１のＮ）、レンジ判定不正検知部３１２ｂは、受信したメッセージを不正メッセージと判定しない。
【００８７】
当該変形例では、監視項目（ｎ）までの項目判定結果が所定の数（第２設定数）だけ正常であった場合に、監視項目（ｎ＋１）以降の不正検知処理をスキップすることにより、正常メッセージが送受信されている環境において、不正検知処理における処理負荷を低減することが可能となる。特に、上述の例において、第２設定数＝１とした場合、最初の項目判定結果（１）が正常の場合、即時不正検知処理をスキップし、最初の項目判定結果（１）がグレーの場合、以降の判定処理を続ける。
【００８８】
また、受信したメッセージに適用する監視項目（ｎ）の数および、監視項目（ｎ）を適用する順番を、受信したメッセージの種別に応じて変更することで、不正メッセージの検知精度を向上させることが可能となる。
【００８９】
上記図８に示したフローチャートでは、先に基準値比較部３１２ａによる不正判定処理を実行し、当該不正判定処理の判定結果が不正メッセージでないとの判定結果であった場合に、レンジ判定部３１２ｂによる不正判定処理を行う例を示した。即ち、基準値比較部３１２ａによる不正判定処理の判定結果が不正メッセージであるとの判定結果であった場合、レンジ判定部３１２ｂによる不正判定処理はスキップされた。
【００９０】
この点、ＣＰＵが複数のコアを持つなどハードウェア資源の仕様が高い場合、以下に詳述するように、基準値比較部３１２ａ及びレンジ判定部３１２ｂの処理を並列に実行してもよい。
【００９１】
図１２は、ゲートウェイ装置３０の不正検知処理の変形例を示すフローチャートである。フレーム送受信部３４は、バス２０からフレームを受信する（Ｓ１０）。フレーム送受信部３４は、通信制御部３３を介して、受信したフレームの各フィールドの値をフレーム処理部３１１に転送する。図１２の例でも、当該フレームのメッセージＩＤが、受信ＩＤリスト記憶部３２１のメッセージＩＤリストテーブル３２１ａに含まれているＩＤであることを前提とする。フレーム処理部３１１は、当該フレームに対する不正検知処理を不正検知部３１２に依頼する。
【００９２】
基準値比較部３１２ａは当該フレームから、基準値比較用の監視項目の値を検出する（Ｓ１１）。基準値比較部３１２ａは、当該監視項目の検出値と、当該監視項目の基準パラメータ値とを用いて不正検知処理を行う（Ｓ１２）。レンジ判定部３１２ｂは当該フレームから、レンジ判定用の監視項目の値を検出する（Ｓ１４）。レンジ判定部３１２ｂは、当該監視項目の検出値と、当該監視項目の基準パラメータ範囲を用いて不正検知処理を行う（Ｓ１５）。変形例ではステップＳ１１、Ｓ１２に係る処理と、ステップＳ１４、Ｓ１５に係る処理を並行して実行する。
【００９３】
不正検知部３１２は、基準値比較部３１２ａによる判定結果とレンジ判定部３１２ｂによる判定結果の少なくとも一方の判定結果が、不正メッセージであるとの判定結果であるか否かを判定する（Ｓ１６ａ）。少なくとも一方の判定結果が、不正メッセージであるとの判定結果であった場合（Ｓ１６ａのＹ）、不正検知部３１２は、受信したメッセージが不正メッセージであることをフレーム処理部３１１に報告し（Ｓ１８）、処理を終了する。両方の判定結果が不正メッセージでないとの判定結果であった場合（Ｓ１６ａのＮ）、不正検知部３１２は、受信したメッセージが正常メッセージであることをフレーム処理部３１１に報告し（Ｓ１７）、処理を終了する。
【００９４】
当該変形例では、レンジ判定部３１２ｂによる不正検知処理を常に実行することになるため、当該処理をスキップできる可能性がある図８に示したアルゴリズムよりもトータルの演算量は多くなる。しかしながら、対象となるフレームが、基準値比較部３１２ａによる不正検知処理では不正メッセージと判定されなかったが、レンジ判定部３１２ｂによる不正検知処理では不正メッセージと判定されるケースでは、図８に示したアルゴリズムよりも最終的な判定を行うまでの時間を短縮することができる。
【００９５】
以上の説明では、不正検知部３１２がゲートウェイ装置３０に搭載される例を説明した。この点、不正検知部がＥＣＵ１０に搭載されてもよい。
【００９６】
図１３は、不正検知部１１２を搭載したＥＣＵ１０の構成を示す図である。ＥＣＵ１０は、処理部１１、記憶部１２、通信制御部１３及びフレーム送受信部１４を備える。処理部１１は、フレーム処理部１１１、不正検知部１１２及びアプリケーション実行部１１３を含む。記憶部１２は、受信ＩＤリスト記憶部１２１、不正検知パラメータ記憶部１２３を含む。
【００９７】
処理部１１は、ハードウェア資源とソフトウェア資源の協働、またはハードウェア資源のみにより実現できる。ハードウェア資源としてマイクロコンピュータ、ＤＳＰ、ＦＰＧＡ、その他のＬＳＩが利用できる。ソフトウェア資源としてオペレーティングシステム、アプリケーション、ファームウェア等のプログラムが利用できる。記憶部１２には揮発性メモリ及び不揮発性メモリが利用できる。通信制御部１３には、専用のハードウェアであるＣＡＮコントローラが利用できる。なお、通信制御部１３の機能を処理部１１に統合する構成も可能である。フレーム送受信部１４には、専用のハードウェアであるＣＡＮトランシーバが利用できる。
【００９８】
フレーム送受信部１４は、バス２０上に、ＣＡＮプロトコルに従ったフレームを送受信する。フレーム送受信部１４は、バス２０からフレームを１ｂｉｔずつ受信して、通信制御部１３にフレームを転送する。また、フレーム送受信部１４は、通信制御部１３から取得したフレームをバス２０に１ｂｉｔずつ送信する。
【００９９】
通信制御部１３は、フレーム送受信部１４から取得したフレームを解釈し、フレームを構成する各値を、ＣＡＮプロトコルにおける各フィールドにマッピングする。通信制御部１３は、マッピングされたフレームの値をフレーム処理部１１１に転送する。
【０１００】
フレーム処理部１１１は、通信制御部１３から取得したＩＤフィールドの値（メッセージＩＤ）を取得し、受信ＩＤリスト記憶部１２１に保持されているメッセージＩＤのリストを参照して、当該フレームを受信するか否かを判定する。ＩＤフィールドの値が当該リストに含まれている場合は受信すると判定し、含まれていない場合は受信しないと判定する。受信すると判定した場合、フレーム処理部３１１はＩＤフィールド以降のフィールドの値を不正検知部３１２に転送する。
【０１０１】
また通信制御部１３は、フレーム送受信部１４から取得したフレームがＣＡＮプロトコルに則していないと判断した場合、エラーフレームを生成し、フレーム送受信部１４にエラーフレームを転送する。フレーム送受信部１４は、通信制御部１３から取得したエラーフレームをバス２０に送出する。
【０１０２】
フレーム処理部１１１は、通信制御部１３から取得したＩＤフィールド以降のフィールドの値（メッセージ）を不正検知部１１２に転送し、取得したメッセージが攻撃メッセージであるか否かの判定を不正検知部１１２に依頼する。具体的な不正検知方法は、図８乃至図１２で説明した方法と同様である。
【０１０３】
フレーム処理部１１１は、不正検知部１１２により正常メッセージと判定された場合、受信したフレームのデータをアプリケーション実行部１１３に転送する。アプリケーション実行部１１３は、当該データに応じて所定の処理を実行する。当該処理の内容は、ＥＣＵ１０ごとに異なる。
【０１０４】
例えば、図１の第１ＥＣＵ１０ａは、時速が３０ｋｍを超えた状態でドアが開いている場合、アラーム音を鳴らす機能を備える。第３ＥＣＵ１００ｃは、ブレーキがかかっていない状態でドアが開いた場合、アラーム音を鳴らす機能を備える。
【０１０５】
アプリケーション実行部１１３は、接続されている機器またはセンサの状態を取得し、フレーム処理部１１１に通知する。フレーム処理部１１１は、メッセージＩＤと、アプリケーション実行部１１３から取得したデータを通信制御部１３に通知する。通信制御部１３は、フレーム処理部１１１から取得したメッセージＩＤとデータをもとにフレームを生成し、フレーム送受信部１４に生成したフレームを転送する。フレーム送受信部１４は、通信制御部１３から取得したフレームをバス２０に送出する。
【０１０６】
なお、ＥＣＵ１０でメッセージの不正検知処理を行わない構成では、図１３の不正検知部１１２が省略される。また、ＥＣＵ１０において受信したフレームのメッセージＩＤによる受信制限を行わない構成では、図１３の受信ＩＤリスト記憶部１２１が省略される。
【０１０７】
また、図１３では、不正検知部１１２が、ＥＣＵ１０において受信したメッセージの不正検知処理を行う例を説明した。この点、不正検知部１１２は、接続されている機器から取得したデータが不正であるか否かを判定してもよい。例えば、ＥＣＵ１０がカーナビゲーションシステムと連携したＥＣＵである場合、不正検知部１１２は、カーナビゲーションシステムから送信されたメッセージが攻撃メッセージであるか否かを判定する。不正検知部１１２は、攻撃メッセージと判定した場合、ＥＣＵ１０からの当該メッセージのバス２０への送出を中止する。
【０１０８】
以上説明したように本実施の形態によれば、レンジ判定部３１２ｂにおいて、検出値が第１基準パラメータ範囲内であるが、第２基準パラメータ範囲外である場合、グレーと判定し、グレーと判定された監視項目の数に応じてメッセージが正常であるか不正であるかを判定する。これにより、グレーゾーンの検出値を持つメッセージの正常／不正を的確に判定することができ、誤検知と検知漏れをバランス良く低減することができる。即ち、ＣＡＮフィルタの検知精度を向上させることができる。
【０１０９】
以上、本発明を実施の形態をもとに説明した。実施の形態は例示であり、それらの各構成要素または各処理プロセスの組み合わせにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
【０１１０】
例えば、上述の実施の形態では、ゲートウェイ装置３０において、他のバス２０への転送対象となるフレームに対して、不正検知処理を実施する例を説明した。この点、ゲートウェイ装置３０で受信した全てのフレームに対して不正検知処理を実施してもよい。
【０１１１】
また、上述の実施の形態では、基準値比較部３１２ａとレンジ判定部３１２ｂが分離された状態で説明を行ったが、基準値比較部３１２ａとレンジ判定部３１２ｂとが一つの不正検知部として構成されていてもよい。その場合、すべての不正検知処理の結果を併せたトータルの最終判定を行う。例えば、「ＩＤ」とレンジ判定用の監視項目のグレー判定の数とによって正常／不正を判断してもよい。
【０１１２】
また、上述の実施の形態では、基準値比較部３１２ａが、固定値である基準パラメータ値との比較による判定方法を説明した。この点、基準値比較部３１２ａにおいても、基準パラメータ範囲を用いたレンジ判定を取り入れてもよい。
【０１１３】
また、上述の実施の形態では、ＣＡＮプロトコルに従って通信するネットワーク通信システムの例として車載ネットワークを示した。本発明に係る技術は、車載ネットワークでの利用に限定されるものではなく、ロボット、産業機器等のネットワーク、車載ネットワーク以外のＣＡＮプロトコルに従って通信するネットワーク通信システムなどに利用してもよい。
【０１１４】
また、ＣＡＮプロトコルでの実施例を示したが、これに限定されるものではなく、オートメーションシステム内の組み込みシステム等に用いられるＣＡＮＯｐｅｎ、或いは、ＴＴＣＡＮ（Ｔｉｍｅ−Ｔｒｉｇｇｅｒｅｄ  ＣＡＮ）、ＣＡＮＦＤ（ＣＡＮ  ｗｉｔｈ  Ｆｌｅｘｉｂｌｅ  Ｄａｔａ  Ｒａｔｅ）等のＣＡＮの派生的なプロトコルであってもよいし、車載ネットワークで用いられる別の通信プロトコル（例えば、Ｅｔｈｅｒｎｅｔ（登録商標）、ＭＯＳＴ、ＦｌｅｘＲａｙ等）であってもよい。
【０１１５】
なお、実施の形態は、以下の項目によって特定されてもよい。
【０１１６】
［項目１］
ネットワーク（５）におけるメッセージを送受信する通信部（３４）と、
前記通信部（３４）において受信されたメッセージから複数の監視項目の値を検出し、前記複数の監視項目の各検出値が各基準範囲に収まっているか否かを判定して、不正メッセージを検知する第１不正検知部（３１２ｂ）と、を備え、
前記複数の監視項目ごとに、第１基準範囲と、前記第１基準範囲より範囲が狭い第２基準範囲とが設定され、
前記第１不正検知部（３１２ｂ）は、
前記各検出値のいずれかが前記第１基準範囲外の値であるとき、前記メッセージを不正メッセージと判定し、
前記各検出値のいずれかが前記第１基準範囲内でかつ前記第２基準範囲外の値であるとき、所定の規則を満たす場合に前記メッセージを不正メッセージと判定する、
ことを特徴とする通信装置（３０）。
これによれば、グレーゾーンの検出値を持つフレームの正常／不正を的確に判定することができ、誤検知と検知漏れをバランス良く低減することができる。
［項目２］
前記第１不正検知部（３１２ｂ）は、前記所定の規則として、前記検出値が前記第１基準範囲内でかつ前記第２基準範囲外の値である監視項目の数が、所定数ｎ（ｎは２以上かつ前記複数の監視項目の数以下の整数）以上を満たすとき、前記メッセージを不正メッセージと判定する、ことを特徴とする項目１に記載の通信装置（３０）。
これによれば、グレーゾーンの検出値を監視項目の数を考慮することにより、グレーゾーンの検出値を持つフレームの正常／不正を的確に判定することができる。
［項目３］
前記第１不正検知部（３１２ｂ）は、前記検出値が前記第１基準範囲外の値であるとき前記検出値が前記第２基準範囲内か否かの判定をスキップして前記メッセージを不正メッセージと判定し、前記検出値が前記第１基準範囲内の値であるとき前記検出値が前記第２基準範囲内か否かの判定を行う、
ことを特徴とする項目１または２に記載の通信装置（３０）。
これによれば、全体の処理量を低減することができる。
［項目４］
前記第１不正検知部（３１２ｂ）は、前記検出値が前記第１基準範囲内の値であるとき前記検出値が前記第２基準範囲内か否かの判定を行い、もし前記検出値が前記第２基準範囲内と判定された場合に、
前記第２基準範囲内である監視項目の数が所定数ｍ（ｍは１以上かつ前記複数の監視項目の数以下の整数）以上を満たすとき、次の検出値に対する判定をスキップし、
前記第２基準範囲内である監視項目の数が所定数ｍ未満を満たすとき、次の検出値に対する判定を継続する、
ことを特徴とする請求項１から３のいずれかに記載の通信装置（３０）。
これによれば、不正メッセージの検出精度を確保しつつ、処理量を低減することができる。
［項目５］
前記メッセージから、前記第１不正検知部（３１２ｂ）によって判定される監視項目とは異なる少なくとも１つの監視項目の値を検出し、各検出値と各基準値とを比較して、不正メッセージを検知する第２不正検知部（３１２ａ）と、をさらに備え、
前記第２不正検知部（３１２ａ）は、各検出値が各基準値と合致しないとき前記メッセージを不正メッセージと判定する、
ことを特徴とする項目１から４のいずれかに通信装置（３０）。
これによれば、監視項目ごとに、監視項目の性質に応じた適切な判定方法を採用することができる。
［項目６］
前記第２不正検知部（３１２ａ）が前記メッセージを不正メッセージと判定したとき、前記第１不正検知部（３１２ｂ）による判定をスキップし、前記メッセージを不正メッセージと判定しなかったとき、前記第１不正検知部による判定を行う、
ことを特徴とする項目５に記載の通信装置（３０）。
これによれば、全体の処理量を低減することができる。
［項目７］
ネットワークから受信されるメッセージから複数の監視項目の値を検出し、前記複数の監視項目の各検出値が各基準範囲に収まっているか否かを判定して、不正メッセージを検知し、
前記複数の監視項目ごとに、第１基準範囲と、前記第１基準範囲より範囲が狭い第２基準範囲が設定され、
前記各検出値のいずれかが前記第１基準範囲外の値であるとき、前記メッセージを不正メッセージと判定し、
前記各検出値のいずれかが前記第１基準範囲内でかつ前記第２基準範囲外の値であるとき、所定の規則を満たす場合に前記メッセージを不正メッセージと判定する、
通信方法。
これによれば、グレーゾーンの検出値を持つフレームの正常／不正を的確に判定することができ、誤検知と検知漏れをバランス良く低減することができる。
［項目８］
ネットワークから受信されるメッセージから複数の監視項目の値を検出し、前記複数の監視項目の各検出値が各基準範囲に収まっているか否かを判定して、不正メッセージを検知する処理をコンピュータに実行させる通信プログラムであって、
前記複数の監視項目ごとに、第１基準範囲と、前記第１基準範囲より範囲が狭い第２基準範囲が設定され、
前記不正メッセージを検知する処理は、
前記各検出値のいずれかが前記第１基準範囲外の値であるとき、前記メッセージを不正メッセージと判定し、
前記各検出値のいずれかが前記第１基準範囲内でかつ前記第２基準範囲外の値であるとき、所定の規則を場合に前記メッセージを不正メッセージと判定する、
通信プログラム。
【符号の説明】
【０１１７】
１  車両、  ５  車載ネットワークシステム、  １０  ＥＣＵ、  ４１  エンジン、  ４２  ブレーキ、  ４３  ドア開閉センサ、  ４４  ウインドウ開閉センサ、  ２０  バス、  ３０  ゲートウェイ装置、  ３１  処理部、  ３１１  フレーム処理部、  ３１２  不正検知部、  ３１２ａ  基準値比較部、  ３１２ｂ  レンジ判定部、  ３２  記憶部、  ３２１  受信ＩＤリスト記憶部、  ３２２  転送ルール記憶部、  ３２３  不正検知パラメータ記憶部、  ３３  通信制御部、  ３４  フレーム送受信部。
【図１】
0006566400.tif 000002
【図２】
0006566400.tif 000003
【図３】
0006566400.tif 000004
【図４】
0006566400.tif 000005
【図５】
0006566400.tif 000006
【図６】
0006566400.tif 000007
【図７】
0006566400.tif 000008
【図８】
0006566400.tif 000009
【図９】
0006566400.tif 000010
【図１０】
0006566400.tif 000011
【図１１】
0006566400.tif 000012
【図１２】
0006566400.tif 000013
【図１３】
0006566400.tif 000014