(57)【要約】【課題】多様で変化し得る攻撃に適応して攻撃フレームを検知し得るセキュリティ装置を提供する。【解決手段】バスを介してＣＡＮプロトコルに従ってフレーム（データフレーム）を授受する複数の電子制御ユニットと接続されるゲートウェイ３００ｂ（セキュリティ装置）は、バスからフレームを受信する受信部４１０と、フレームのデータフィールド内のデータの値の検査に係るデータ検査パラメータを保持する保持部４３０と、受信部４１０に受信されたフレームに関する送信周期の判定においてＩＤが同値の２つのフレームの受信間隔が所定の許容範囲から外れる場合に、保持部４３０が保持するデータ検査パラメータを更新する更新部４２０と、保持部４３０が保持するデータ検査パラメータに基づいて、受信部４１０により受信されたフレームが攻撃フレームか否かの判定に係る検査を行う検査部４４０とを備える。【選択図】図１３
2017085663.tif 000002
【特許請求の範囲】
【請求項１】
１つ又は複数のバスを介してＣＡＮ（Controller Area Network）プロトコルに従ってフレームの授受を行う複数の電子制御ユニットと接続されるセキュリティ装置であって、
前記フレームは、ＩＤを格納するＩＤフィールド、ＤＬＣ（Data Length Code）及びデータフィールドを含むデータフレームであり、
１つの前記バスからフレームを受信する受信部と、
フレームについての検査内容として、前記データフィールドに格納されたデータの値の検査に係るデータ検査パラメータを保持する保持部と、
前記受信部により受信されたフレームに関し、前記ＩＤが同値の２つのフレームが送信される時間間隔である送信周期について判定を行い、前記ＩＤが同値の２つのフレームの受信間隔が所定の許容範囲から外れる場合に、前記受信部により受信されたフレームの条件が成立したと判定して前記保持部が保持する前記データ検査パラメータを更新する更新部と、
前記保持部が保持する前記データ検査パラメータに基づいて、前記受信部により受信されたフレームが攻撃フレームか否かの判定に係る検査を行う検査部とを備える
セキュリティ装置。
【請求項２】
前記データ検査パラメータは、前記データフィールドに格納された前記データの変化の許容範囲の上限を示す閾値を含み、
前記更新部における、前記データ検査パラメータの更新は、前記閾値を、より小さい値にする更新であり、
前記検査部は、前記受信部により受信されたフレームに係る前記データフィールドに格納された前記データの変化が前記データ検査パラメータにおける前記閾値を超えた場合に当該フレームを攻撃フレームと判定する
請求項１記載のセキュリティ装置。
【請求項３】
１つ又は複数のバスを介してＣＡＮ（Controller Area Network）プロトコルに従ってフレームの授受を行う複数の電子制御ユニットと接続されるセキュリティ装置であって、
前記フレームは、ＩＤを格納するＩＤフィールド、ＤＬＣ（Data Length Code）及びデータフィールドを含むデータフレームであり、
１つの前記バスからフレームを受信する受信部と、
フレームについての検査内容として、前記ＩＤが同値の２つのフレームが送信される時間間隔である送信周期の検査に係る送信周期検査パラメータを保持する保持部と、
前記受信部により受信されたフレームに関し、前記ＩＤが同値の１つ以上のフレームが所定の単位時間内に送信される頻度である送信頻度が所定の許容範囲の上限を超える場合に、前記受信部により受信されたフレームの条件が成立したと判定して前記保持部が保持する前記送信周期検査パラメータを更新する更新部と、
前記保持部が保持する前記送信周期検査パラメータに基づいて、前記受信部により受信されたフレームが攻撃フレームか否かの判定に係る検査を行う検査部とを備える
セキュリティ装置。
【請求項４】
前記送信周期検査パラメータは、前記送信周期の許容範囲を示す閾値を含み、
前記更新部における、前記送信周期検査パラメータの更新は、前記閾値の更新である
請求項３記載のセキュリティ装置。
【請求項５】
前記保持部は更に、前記ＤＬＣの値の検査に係るＤＬＣ検査パラメータと、前記データフィールドに格納されたデータの値の検査に係るデータ検査パラメータとを保持し、
前記送信周期検査パラメータは、前記送信周期の許容範囲を示す第１の閾値を含み、
前記ＤＬＣ検査パラメータは、前記ＤＬＣの値の許容範囲を示す第２の閾値を含み、
前記データ検査パラメータは、前記データの値の許容範囲を示す第３の閾値を含み、
前記更新部は、前記受信部により受信されたフレームに関し、前記送信頻度が所定の許容範囲の上限を超える場合に、前記受信部により受信されたフレームの条件が成立したと判定して前記送信周期検査パラメータにおける前記第１の閾値と、前記ＤＬＣ検査パラメータにおける前記第２の閾値と、前記データ検査パラメータにおける前記第３の閾値とを更新する
請求項３記載のセキュリティ装置。
【請求項６】
前記セキュリティ装置は更に、１つ以上の前記電子制御ユニットに対する攻撃フレームの影響を抑制するように前記検査部による検査結果に応じた処理を行う処理部を備える
請求項２〜５のいずれか一項に記載のセキュリティ装置。
【請求項７】
前記検査部は、前記受信部によりフレームの前記ＩＤフィールドが受信された後であって前記データフィールドに後続する部分が受信される前に前記検査を行う
請求項２〜６のいずれか一項に記載のセキュリティ装置。
【請求項８】
１つ又は複数のバスを介して複数の電子制御ユニットがＣＡＮ（Controller Area Network）プロトコルに従ってフレームの授受を行う車載ネットワークシステムにおいて用いられる攻撃検知方法であって、
前記フレームは、ＩＤを格納するＩＤフィールド、ＤＬＣ（Data Length Code）及びデータフィールドを含むデータフレームであり、
前記バスからフレームを受信する受信ステップと、
前記受信ステップで受信されたフレームに関し、前記ＩＤが同値の２つのフレームが送信される時間間隔である送信周期について判定を行い、前記ＩＤが同値の２つのフレームの受信間隔が所定の許容範囲から外れる場合に、フレームについての検査内容を規定する、前記データフィールドに格納されたデータの値の検査に係るデータ検査パラメータを、更新する更新ステップと、
前記更新ステップで更新された前記データ検査パラメータに基づいて、前記受信ステップで受信されたフレームが攻撃フレームか否かの判定に係る検査を行う検査ステップとを含む
攻撃検知方法。
【請求項９】
１つ又は複数のバスを介して複数の電子制御ユニットがＣＡＮ（Controller Area Network）プロトコルに従ってフレームの授受を行う車載ネットワークシステムにおいて用いられる攻撃検知方法であって、
前記フレームは、ＩＤを格納するＩＤフィールド、ＤＬＣ（Data Length Code）及びデータフィールドを含むデータフレームであり、
前記バスからフレームを受信する受信ステップと、
前記受信ステップで受信されたフレームに関し、前記ＩＤが同値の１つ以上のフレームが所定の単位時間内に送信される頻度である送信頻度が所定の許容範囲の上限を超える場合に、フレームについての検査内容を規定する、前記ＩＤが同値の２つのフレームが送信される時間間隔である送信周期の検査に係る送信周期検査パラメータを、更新する更新ステップと、
前記更新ステップで更新された前記送信周期検査パラメータに基づいて、前記受信ステップで受信されたフレームが攻撃フレームか否かの判定に係る検査を行う検査ステップとを含む
攻撃検知方法。
【請求項１０】
１つ又は複数のバスを介してＣＡＮ（Controller Area Network）プロトコルに従ってフレームの授受を行う複数の電子制御ユニットと接続される、マイクロプロセッサを含むセキュリティ装置に所定処理を実行させるためのプログラムであって、
前記フレームは、ＩＤを格納するＩＤフィールド、ＤＬＣ（Data Length Code）及びデータフィールドを含むデータフレームであり、
前記所定処理は、
１つの前記バスからフレームを受信する受信ステップと、
前記受信ステップで受信されたフレームに関し、前記ＩＤが同値の２つのフレームが送信される時間間隔である送信周期について判定を行い、前記ＩＤが同値の２つのフレームの受信間隔が所定の許容範囲から外れる場合に、フレームについての検査内容を規定する、前記データフィールドに格納されたデータの値の検査に係るデータ検査パラメータを、更新する更新ステップと、
前記更新ステップで更新された前記データ検査パラメータに基づいて、前記受信ステップで受信されたフレームが攻撃フレームか否かの判定に係る検査を行う検査ステップとを含む
プログラム。
【請求項１１】
１つ又は複数のバスを介してＣＡＮ（Controller Area Network）プロトコルに従ってフレームの授受を行う複数の電子制御ユニットと接続される、マイクロプロセッサを含むセキュリティ装置に所定処理を実行させるためのプログラムであって、
前記フレームは、ＩＤを格納するＩＤフィールド、ＤＬＣ（Data Length Code）及びデータフィールドを含むデータフレームであり、
前記所定処理は、
１つの前記バスからフレームを受信する受信ステップと、
前記受信ステップで受信されたフレームに関し、前記ＩＤが同値の１つ以上のフレームが所定の単位時間内に送信される頻度である送信頻度が所定の許容範囲の上限を超える場合に、フレームについての検査内容を規定する、前記ＩＤが同値の２つのフレームが送信される時間間隔である送信周期の検査に係る送信周期検査パラメータを、更新する更新ステップと、
前記更新ステップで更新された前記送信周期検査パラメータに基づいて、前記受信ステップで受信されたフレームが攻撃フレームか否かの判定に係る検査を行う検査ステップとを含む
プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、車両等に搭載される電子制御ユニットが通信を行うネットワークにおいて送信される不正なフレームである攻撃フレームを検知する技術に関する。
【背景技術】
【０００２】
近年、自動車の中のシステムには、電子制御ユニット（ＥＣＵ：Electronic Control Unit）と呼ばれる装置が多数配置されている。これらのＥＣＵをつなぐネットワークは車載ネットワークと呼ばれる。車載ネットワークには、多数の規格が存在する。その中でも最も主流な車載ネットワークの一つに、ＩＳＯ１１８９８−１で規定されているＣＡＮ（Controller Area Network）という規格が存在する。
【０００３】
ＣＡＮでは、通信路は２本のワイヤで構成されたバスであり、バスに接続されているＥＣＵはノードと呼ばれる。バスに接続されている各ノードは、フレームと呼ばれるメッセージを送受信する。またＣＡＮでは、送信先や送信元を指す識別子は存在せず、送信ノードはフレーム毎にメッセージＩＤと呼ばれるＩＤを付けて送信し（つまりバスに信号を送出し）、各受信ノードは予め定められたメッセージＩＤのみを受信する（つまりバスから信号を読み取る）。
【０００４】
自動車の中のシステムにおいては、多数のＥＣＵそれぞれは、様々なフレームの授受を行う。ここで、外部と通信する機能を持つＥＣＵが外部から攻撃され、ＣＡＮのバスに対して不正なメッセージ（攻撃フレーム）を送信できるようになった場合には、そのＥＣＵは、例えば他のＥＣＵになりすましてフレームを送信する等の攻撃が可能となり、これにより自動車を不正に制御できるようになる。このような攻撃を検知して防御する技術として、データの受信間隔と所定周期とを比較することで攻撃（不正の検出）を行う技術が知られている（特許文献１参照）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】国際公開第２０１４／１１５４５５号
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、特許文献１の技術では、検知できる攻撃が、データ送信周期が所定周期と異なるような攻撃に限定されるので、多様な攻撃の検知に必ずしも有効とは限らない。
【０００７】
そこで、本発明は、多様で変化し得る攻撃に適応して攻撃フレームを検知し得るセキュリティ装置を提供する。また、本発明は、多様で変化し得る攻撃に適応して攻撃フレームを検知し得る攻撃検知方法、及び、セキュリティ装置に攻撃フレームの検知に係る処理を行わせるためのプログラムを提供する。
【課題を解決するための手段】
【０００８】
上記課題を解決するために本発明の一態様に係るセキュリティ装置は、１つ又は複数のバスを介してＣＡＮ（Controller Area Network）プロトコルに従ってフレームの授受を行う複数の電子制御ユニットと接続されるセキュリティ装置であって、前記フレームは、ＩＤを格納するＩＤフィールド、ＤＬＣ（Data Length Code）及びデータフィールドを含むデータフレームであり、１つの前記バスからフレームを受信する受信部と、フレームについての検査内容として、前記データフィールドに格納されたデータの値の検査に係るデータ検査パラメータを保持する保持部と、前記受信部により受信されたフレームに関し、前記ＩＤが同値の２つのフレームが送信される時間間隔である送信周期について判定を行い、前記ＩＤが同値の２つのフレームの受信間隔が所定の許容範囲から外れる場合に、前記受信部により受信されたフレームの条件が成立したと判定して前記保持部が保持する前記データ検査パラメータを更新する更新部と、前記保持部が保持する前記データ検査パラメータに基づいて、前記受信部により受信されたフレームが攻撃フレームか否かの判定に係る検査を行う検査部とを備えるセキュリティ装置である。
また、上記課題を解決するために本発明の一態様に係るセキュリティ装置は、１つ又は複数のバスを介してＣＡＮ（Controller Area Network）プロトコルに従ってフレームの授受を行う複数の電子制御ユニットと接続されるセキュリティ装置であって、前記フレームは、ＩＤを格納するＩＤフィールド、ＤＬＣ（Data Length Code）及びデータフィールドを含むデータフレームであり、１つの前記バスからフレームを受信する受信部と、フレームについての検査内容として、前記ＩＤが同値の２つのフレームが送信される時間間隔である送信周期の検査に係る送信周期検査パラメータを保持する保持部と、前記受信部により受信されたフレームに関し、前記ＩＤが同値の１つ以上のフレームが所定の単位時間内に送信される頻度である送信頻度が所定の許容範囲の上限を超える場合に、前記受信部により受信されたフレームの条件が成立したと判定して前記保持部が保持する前記送信周期検査パラメータを更新する更新部と、前記保持部が保持する前記送信周期検査パラメータに基づいて、前記受信部により受信されたフレームが攻撃フレームか否かの判定に係る検査を行う検査部とを備えるセキュリティ装置である。
【０００９】
また、上記課題を解決するために本発明の一態様に係る攻撃検知方法は、１つ又は複数のバスを介して複数の電子制御ユニットがＣＡＮ（Controller Area Network）プロトコルに従ってフレームの授受を行う車載ネットワークシステムにおいて用いられる攻撃検知方法であって、前記フレームは、ＩＤを格納するＩＤフィールド、ＤＬＣ（Data Length Code）及びデータフィールドを含むデータフレームであり、前記バスからフレームを受信する受信ステップと、前記受信ステップで受信されたフレームに関し、前記ＩＤが同値の２つのフレームが送信される時間間隔である送信周期について判定を行い、前記ＩＤが同値の２つのフレームの受信間隔が所定の許容範囲から外れる場合に、フレームについての検査内容を規定する、前記データフィールドに格納されたデータの値の検査に係るデータ検査パラメータを、更新する更新ステップと、前記更新ステップで更新された前記データ検査パラメータに基づいて、前記受信ステップで受信されたフレームが攻撃フレームか否かの判定に係る検査を行う検査ステップとを含む攻撃検知方法である。
【００１０】
また、上記課題を解決するために本発明の一態様に係る攻撃検知方法は、１つ又は複数のバスを介して複数の電子制御ユニットがＣＡＮ（Controller Area Network）プロトコルに従ってフレームの授受を行う車載ネットワークシステムにおいて用いられる攻撃検知方法であって、前記フレームは、ＩＤを格納するＩＤフィールド、ＤＬＣ（Data Length Code）及びデータフィールドを含むデータフレームであり、前記バスからフレームを受信する受信ステップと、前記受信ステップで受信されたフレームに関し、前記ＩＤが同値の１つ以上のフレームが所定の単位時間内に送信される頻度である送信頻度が所定の許容範囲の上限を超える場合に、フレームについての検査内容を規定する、前記ＩＤが同値の２つのフレームが送信される時間間隔である送信周期の検査に係る送信周期検査パラメータを、更新する更新ステップと、前記更新ステップで更新された前記送信周期検査パラメータに基づいて、前記受信ステップで受信されたフレームが攻撃フレームか否かの判定に係る検査を行う検査ステップとを含む攻撃検知方法である。
【００１１】
また、上記課題を解決するために本発明の一態様に係るプログラムは、１つ又は複数のバスを介してＣＡＮ（Controller Area Network）プロトコルに従ってフレームの授受を行う複数の電子制御ユニットと接続される、マイクロプロセッサを含むセキュリティ装置に所定処理を実行させるためのプログラムであって、前記フレームは、ＩＤを格納するＩＤフィールド、ＤＬＣ（Data Length Code）及びデータフィールドを含むデータフレームであり、前記所定処理は、１つの前記バスからフレームを受信する受信ステップと、前記受信ステップで受信されたフレームに関し、前記ＩＤが同値の２つのフレームが送信される時間間隔である送信周期について判定を行い、前記ＩＤが同値の２つのフレームの受信間隔が所定の許容範囲から外れる場合に、フレームについての検査内容を規定する、前記データフィールドに格納されたデータの値の検査に係るデータ検査パラメータを、更新する更新ステップと、前記更新ステップで更新された前記データ検査パラメータに基づいて、前記受信ステップで受信されたフレームが攻撃フレームか否かの判定に係る検査を行う検査ステップとを含むプログラムである。
【００１２】
また、上記課題を解決するために本発明の一態様に係るプログラムは、１つ又は複数のバスを介してＣＡＮ（Controller Area Network）プロトコルに従ってフレームの授受を行う複数の電子制御ユニットと接続される、マイクロプロセッサを含むセキュリティ装置に所定処理を実行させるためのプログラムであって、前記フレームは、ＩＤを格納するＩＤフィールド、ＤＬＣ（Data Length Code）及びデータフィールドを含むデータフレームであり、前記所定処理は、１つの前記バスからフレームを受信する受信ステップと、前記受信ステップで受信されたフレームに関し、前記ＩＤが同値の１つ以上のフレームが所定の単位時間内に送信される頻度である送信頻度が所定の許容範囲の上限を超える場合に、フレームについての検査内容を規定する、前記ＩＤが同値の２つのフレームが送信される時間間隔である送信周期の検査に係る送信周期検査パラメータを、更新する更新ステップと、前記更新ステップで更新された前記送信周期検査パラメータに基づいて、前記受信ステップで受信されたフレームが攻撃フレームか否かの判定に係る検査を行う検査ステップとを含むプログラムである。
【発明の効果】
【００１３】
本発明によれば、攻撃フレームか否かの検査に用いる検査パラメータを、受信したフレームに応じて更新できるので、多様で変化し得る攻撃に対して攻撃フレームを適切に検知し得る。
【図面の簡単な説明】
【００１４】
【図１】実施の形態１に係る車載ネットワークシステムの全体構成を示す図である。
【図２】ＣＡＮプロトコルで規定されるデータフレームのフォーマットを示す図である。
【図３】実施の形態１に係るゲートウェイの構成図である。
【図４】受信ＩＤリストの一例を示す図である。
【図５】ゲートウェイが用いる転送ルールの一例を示す図である。
【図６】実施の形態１に係る不正検知処理機能群の構成図である。
【図７】不正検知処理機能群のチェック部及びチェックパラメータ保持部の構成の一例を示す図である。
【図８】不正検知処理機能群の検査部（フィルタリング部）及び検査パラメータ保持部の構成の一例を示す図である。
【図９】実施の形態１に係るＥＣＵの構成図である。
【図１０】不正検知処理機能群による攻撃検知処理の一例を示すフローチャートである。
【図１１】ゲートウェイの動作（転送処理）の一例を示すフローチャートである。
【図１２】実施の形態１の変形例に係るゲートウェイの構成図である。
【図１３】実施の形態１のゲートウェイにおける攻撃検知に係る構成を示すブロック図である。
【図１４】攻撃検知処理の変形例１を示すフローチャートである。
【図１５】不正検知処理機能群の変形例１を示す構成図である。
【図１６】不正検知処理機能群の変形例２を示す構成図である。
【図１７】攻撃検知処理の変形例２を示すフローチャートである。
【図１８】不正検知処理機能群の変形例３を示す構成図である。
【図１９】不正検知処理機能群の変形例４を示す構成図である。
【図２０】不正検知処理機能群の変形例５を示す構成図である。
【図２１】ＥＣＵの変形例１を示す構成図である。
【図２２】ＥＣＵの変形例２を示す構成図である。
【図２３】ＥＣＵの変形例３を示す構成図である。
【発明を実施するための形態】
【００１５】
本発明の一態様に係るセキュリティ装置は、１つ又は複数のバスに接続されたセキュリティ装置であって、１つの前記バスからフレームを受信する受信部と、フレームについての検査内容を規定する検査パラメータを保持する保持部と、前記受信部により受信されたフレームに関連する予め定められた条件が成立した場合に前記保持部が保持する前記検査パラメータを更新する更新部と、前記保持部が保持する検査パラメータに基づいて、前記受信部により受信されたフレームが攻撃フレームか否かの判定に係る検査を行う検査部とを備えるセキュリティ装置である。これにより、攻撃フレームか否かの検査に用いる検査パラメータを、受信したフレームに応じて更新できるので、検査部により、多様で変化し得る攻撃に対して攻撃フレームを適切に検知し得る。
【００１６】
また、例えば、前記セキュリティ装置は、車両に搭載され、前記車両は、前記１つ又は複数のバスを介してＣＡＮ（Controller Area Network）プロトコルに従ってフレームの授受を行う複数の電子制御ユニットを搭載することとしても良い。これにより、電子制御ユニット（ＥＣＵ）間でフレームの授受を行うためのＣＡＮに従う車載ネットワークにおいて攻撃フレームが送信された場合にこの攻撃フレームを適切に検知し得るようになる。
【００１７】
また、例えば、前記セキュリティ装置は更に、１つ以上の前記電子制御ユニットに対する攻撃フレームの影響を抑制するように前記検査部による検査結果に応じた処理を行う処理部を備えることとしても良い。これにより、攻撃フレームに対する防御（攻撃フレームのＥＣＵへの影響の抑制）が可能となる。
【００１８】
また、例えば、前記保持部は、相互に異なる、フレームについての検査内容を規定する複数の検査パラメータを保持し、前記更新部は、前記受信部により受信されたフレームについて複数の予め定められた条件それぞれが成立するか否かの判定を行う、条件毎に対応したチェック機能を有し、当該各チェック機能での判定結果に応じて、前記保持部が保持する前記複数の検査パラメータのうち更新対象とすべき検査パラメータを決定して更新することとしても良い。これにより、受信されたフレームが攻撃フレームか否かを判定するために用いられる各種の検査パラメータが、個々の条件のチェック結果に応じて動的に更新され得るので、攻撃フレームの適切な検知が可能となり得る。
【００１９】
また、例えば、前記フレームは、ＩＤを格納するＩＤフィールド、ＤＬＣ（Data Length Code）及びデータフィールドを含むデータフレームであり、前記更新部が有する複数のチェック機能の一部は、前記ＩＤの値について前記判定を行うＩＤチェック機能と、前記ＤＬＣの値について前記判定を行うＤＬＣチェック機能と、前記ＩＤが同値の２つのフレームが送信される時間間隔である送信周期について前記判定を行う送信周期チェック機能と、前記ＩＤが同値の１つ以上のフレームが所定の単位時間内に送信される頻度である送信頻度について前記判定を行う送信頻度チェック機能と、前記データフィールドに格納されたデータの値について前記判定を行うデータチェック機能とのうちの１つ以上であり、前記保持部が保持する前記複数の検査パラメータは、前記ＩＤの値の検査に係るＩＤ検査パラメータと、前記ＤＬＣの値の検査に係るＤＬＣ検査パラメータと、前記送信周期の検査に係る送信周期検査パラメータと、前記送信頻度の検査に係る送信頻度検査パラメータと、前記データフィールドに格納されたデータの値の検査に係るデータ検査パラメータとのうちの１つ以上を含み、前記検査部は、前記保持部が保持する前記複数の検査パラメータのそれぞれに基づいて前記検査を行うこととしても良い。これにより、攻撃フレームの検知のための個々の検査を、フレームの各フィールドの内容或いはフレームの送信周期、頻度等に基づいて行い得るし、その個々の検査に用いられる閾値等の検査パラメータの更新を、フレームの各フィールドの内容或いはフレームの送信周期、頻度等に基づいて行い得る。
【００２０】
また、例えば、前記更新部が有する複数のチェック機能の１つ以上において、前記受信部により受信されたフレームの前記ＩＤフィールドに格納された前記ＩＤを参照して前記判定を行うこととしても良い。これにより、検査パラメータの更新を、ＩＤ（メッセージＩＤ）に基づく判定結果に応じて行い得る。
【００２１】
また、例えば、前記更新部が有する複数のチェック機能の１つは、前記送信周期チェック機能であり、前記送信周期チェック機能では、前記ＩＤが同値の２つのフレームの受信間隔が所定の許容範囲から外れる場合に当該送信周期チェック機能に対応する前記条件が成立したと判定し、前記更新部は、前記送信周期チェック機能で前記条件が成立したと判定した場合に前記複数の検査パラメータのいずれかを更新することとしても良い。これにより、検査パラメータの更新が、フレームの送信周期に基づく判定結果に応じて行われるので、例えば送信周期を乱すように作用する攻撃フレームが送信された場合等において、送信周期が異常であることに基づいて検査パラメータを攻撃フレームの検知に有用となるように更新することで、適切に攻撃フレームを検知できる可能性がある。
【００２２】
また、例えば、前記保持部が保持する前記複数の検査パラメータは、前記送信頻度検査パラメータを含み、前記送信頻度検査パラメータは、前記送信頻度の許容範囲の上限を示す閾値を含み、前記検査部は、前記受信部により受信されたフレームに係る前記送信頻度が前記送信頻度検査パラメータにおける前記閾値を超えた場合に当該フレームを攻撃フレームと判定し、前記更新部は、前記送信周期チェック機能で前記条件が成立したと判定した場合に、前記送信頻度検査パラメータにおける前記閾値を更新することとしても良い。これにより、送信頻度に関する送信頻度検査パラメータの更新が、フレームの送信周期に基づく判定結果に応じて行われるので、例えば送信周期を乱すように作用する攻撃フレームが送信された場合等において、送信周期が異常であることに基づいて送信頻度検査パラメータを攻撃フレームの検知に有用となるように更新すること（例えば送信頻度検査パラメータが示す上限値を下げること等）で、適切に攻撃フレームを検知できる可能性がある。
【００２３】
また、例えば、前記保持部が保持する前記複数の検査パラメータは、前記データ検査パラメータを含み、前記データ検査パラメータは、前記データフィールドに格納された前記データの変化の許容範囲の上限を示す閾値を含み、前記検査部は、前記受信部により受信されたフレームに係る前記データフィールドに格納された前記データの変化が前記データ検査パラメータにおける前記閾値を超えた場合に当該フレームを攻撃フレームと判定し、前記更新部は、前記送信周期チェック機能で前記条件が成立したと判定した場合に、前記データ検査パラメータにおける前記閾値を、より小さい値へと更新することとしても良い。これにより、データの変化の許容範囲の上限に関するデータ検査パラメータの更新が、フレームの送信周期に基づく判定結果に応じて行われるので、例えば送信周期の異常が検知されたことに基づいてデータ検査パラメータでのデータの変化の許容範囲の上限を小さく変更することで、適切に攻撃フレームを検知できる可能性がある。
【００２４】
また、例えば、前記更新部が有する複数のチェック機能の１つは、前記送信頻度チェック機能であり、前記送信頻度チェック機能では、前記送信頻度が所定の許容範囲の上限を超える場合に当該送信頻度チェック機能に対応する前記条件が成立したと判定し、前記保持部が保持する前記複数の検査パラメータは、前記送信周期検査パラメータを含み、前記送信周期検査パラメータは、前記送信周期の許容範囲を示す閾値を含み、前記更新部は、前記送信頻度チェック機能で前記条件が成立したと判定した場合に、前記送信周期検査パラメータにおける前記閾値を更新することとしても良い。これにより、送信周期の許容範囲に関する送信周期検査パラメータの更新が、フレームの送信頻度に基づく判定結果に応じて行われるので、例えば、送信頻度の異常が検知されたことに基づいて送信周期検査パラメータでの送信周期の許容範囲を狭く変更すること等により、適切に攻撃フレームを検知できる可能性がある。
【００２５】
また、例えば、前記更新部が有する複数のチェック機能の１つは、前記送信頻度チェック機能であり、前記送信頻度チェック機能では、前記送信頻度が所定の許容範囲の上限を超える場合に当該送信頻度チェック機能に対応する前記条件が成立したと判定し、前記保持部が保持する前記複数の検査パラメータそれぞれは、前記ＤＬＣ検査パラメータと、前記送信周期検査パラメータと、前記データ検査パラメータとのうちのいずれかであり、前記ＤＬＣ検査パラメータは、前記ＤＬＣの値の許容範囲を示す閾値を含み、前記送信周期検査パラメータは、前記送信周期の許容範囲を示す閾値を含み、前記データ検査パラメータは、前記データの値の許容範囲を示す閾値を含み、前記更新部は、一のフレームに関連して前記送信頻度チェック機能で前記条件が成立したと判定した場合に、当該一のフレームのＩＤと同一のＩＤを有するフレームの検査内容として用いられる前記複数の検査パラメータにおける前記閾値を、該当の許容範囲をより狭くするように更新することとしても良い。ＤＬＣの値の許容範囲を示す閾値は、例えばＤＬＣの値の上限及び下限を示す閾値であり、送信周期の許容範囲を示す閾値は、例えば許容範囲の上限及び下限を示す閾値であり、データの値の許容範囲を示す閾値は、例えばデータの値の上限及び下限を示す閾値である。これにより、フレームの送信頻度の異常が検知されたことに基づいて各種の検査パラメータで正常なフレームとしての許容範囲を示す閾値を、許容範囲を狭くするように更新する。従って、攻撃フレームが送信された可能性（送信頻度でのチェック結果）に応じて効率的に攻撃フレームか否かの検査を行うことが可能となり得る。
【００２６】
また、例えば、前記検査部は、前記受信部によりフレームの前記ＩＤフィールドが受信された後であって前記データフィールドに後続する部分が受信される前に前記検査を行うこととしても良い。これにより、メッセージＩＤに基づく判定が可能なタイミングであって、エラーフレームの送信によって攻撃フレームに対する防御（無力化）が可能なタイミングで、検査がなされ得る。このため、攻撃に対する適切な防御が可能となり得る。
【００２７】
また、例えば、前記セキュリティ装置は更に、前記更新部が有する複数のチェック機能それぞれについて当該チェック機能での判定結果が得られたタイミングで、前記複数の検査パラメータのいずれかが当該判定結果に応じて更新されるべきか否かを確認し、更新されるべきであれば該当の検査パラメータを更新するように前記更新部を制御し、前記複数の検査パラメータそれぞれの更新状況に応じて、当該各検査パラメータに基づく検査を行うように前記検査部を制御する制御部を備えることとしても良い。これにより、受信されたフレームが攻撃フレームか否かに係る検査が適切なタイミングでなされるようになり得る。このため、攻撃フレームに対する防御を適切なタイミングで行うことが可能となり得る。
【００２８】
また、例えば、前記更新部は更に、前記受信部により受信されたフレームに関連する予め定められた前記条件が成立した場合に、当該フレームを攻撃フレームであると判定し、前記処理部は更に、１つ以上の前記電子制御ユニットに対する攻撃フレームの影響を抑制するように前記更新部により攻撃フレームと判定されたフレームに対する処理を行うこととしても良い。これにより、検査パラメータの更新用の条件判定（チェック機能）を担う更新部において、攻撃フレームか否かの判定を行うことができる。このため、更新部で攻撃フレームであると判定した場合には検査部での検査を行う必要がなくなり、攻撃フレームの迅速な判定が可能となり得る。
【００２９】
また、本発明の一態様に係る攻撃検知方法は、１つ又は複数のバスを介して複数の電子制御ユニットがフレームの授受を行う車載ネットワークシステムにおいて用いられる攻撃検知方法であって、前記バスからフレームを受信する受信ステップと、前記受信ステップで受信されたフレームに関連する予め定められた条件が成立した場合に、フレームについての検査内容を規定する検査パラメータを更新する更新ステップと、前記更新ステップで更新された検査パラメータに基づいて、前記受信ステップで受信されたフレームが攻撃フレームか否かの判定に係る検査を行う検査ステップとを含む攻撃検知方法である。これにより、攻撃フレームか否かの検査に用いる検査パラメータを、受信したフレームに応じて更新するので、検査ステップで、多様で変化し得る攻撃に対して攻撃フレームを適切に検知し得る。
【００３０】
また、本発明の一態様に係るプログラムは、１つ又は複数のバスに接続された、マイクロプロセッサを含むセキュリティ装置に所定処理を実行させるためのプログラムであって、前記所定処理は、１つの前記バスからフレームを受信する受信ステップと、前記受信ステップで受信されたフレームに関連する予め定められた条件が成立した場合に、フレームについての検査内容を規定する検査パラメータを更新する更新ステップと、前記更新ステップで更新された検査パラメータに基づいて、前記受信ステップで受信されたフレームが攻撃フレームか否かの判定に係る検査を行う検査ステップとを含むプログラムである。このプログラムがプロセッサを有する装置にインストールされ実行されることで、その装置はセキュリティ装置として機能し得る。このセキュリティ装置は、多様で変化し得る攻撃に対して攻撃フレームを適切に検知し得る。
【００３１】
なお、これらの全般的又は具体的な態様は、システム、方法、集積回路、コンピュータプログラム又はコンピュータで読み取り可能なＣＤ−ＲＯＭ等の記録媒体で実現されても良く、システム、方法、集積回路、コンピュータプログラム又は記録媒体の任意な組み合わせで実現されても良い。
【００３２】
以下、実施の形態に係るセキュリティ装置を含む車載ネットワークシステムについて、図面を参照しながら説明する。ここで示す実施の形態は、いずれも本発明の一具体例を示すものである。従って、以下の実施の形態で示される数値、構成要素、構成要素の配置及び接続形態、並びに、ステップ（工程）及びステップの順序等は、一例であって本発明を限定するものではない。以下の実施の形態における構成要素のうち、独立請求項に記載されていない構成要素については、任意に付加可能な構成要素である。また、各図は、模式図であり、必ずしも厳密に図示されたものではない。
【００３３】
（実施の形態１）
以下、複数の電子制御ユニット（ＥＣＵ）がバスを介して通信する車載ネットワークシステムにおいて用いられる攻撃検知方法について、及び、車載ネットワークシステムに備えられたセキュリティ装置について説明する。
【００３４】
攻撃検知方法は、車両に搭載された各ＥＣＵ間での通信に用いられるバスで不正なフレームである攻撃フレームが送信された際に検知するための方法である。車載ネットワークシステムにおけるセキュリティ装置（車載セキュリティ装置）は、攻撃検知方法に関連した攻撃検知機能（攻撃フレームを検知する機能）を少なくとも有する装置である。セキュリティ装置は、攻撃フレームの各ＥＣＵへの影響を抑制する防御の機能を有し得るが、攻撃検知機能はその防御の前提となる機能である。なお、セキュリティ装置が攻撃検知結果を他の装置に伝達した場合には他の装置が防御機能を実行し得るようになる。
【００３５】
［１．１  車載ネットワークシステム１０の全体構成］
図１は、実施の形態１に係る車載ネットワークシステム１０の全体構成を示す図である。
【００３６】
車載ネットワークシステム１０は、ＣＡＮプロトコルに従って通信するネットワーク通信システムの一例であり、制御装置、センサ、アクチュエータ、ユーザインタフェース装置等の各種機器が搭載された車両におけるネットワーク通信システムである。車載ネットワークシステム１０は、バスを介してフレームに係る通信を行う複数の装置を備え、攻撃検知方法を用いる。具体的には図１に示すように車載ネットワークシステム１０は、車両に搭載され各種機器に接続されたＥＣＵ１００ａ〜１００ｄと、バス２００ａ、２００ｂと、ゲートウェイ３００とを含んで構成される。なお、車載ネットワークシステム１０には、ゲートウェイ３００、ＥＣＵ１００ａ〜１００ｄ以外にもいくつものＥＣＵが含まれ得るが、ここでは、便宜上ゲートウェイ３００及びＥＣＵ１００ａ〜１００ｄに注目して説明を行う。ＥＣＵは、例えば、プロセッサ（マイクロプロセッサ）、メモリ等のデジタル回路、アナログ回路、通信回路等を含む装置である。メモリは、ＲＯＭ、ＲＡＭ等であり、プロセッサにより実行される制御プログラム（ソフトウェアとしてのコンピュータプログラム）を記憶することができる。例えばプロセッサが、制御プログラム（コンピュータプログラム）に従って動作することにより、ＥＣＵは各種機能を実現することになる。なお、コンピュータプログラムは、所定の機能を達成するために、プロセッサに対する指令を示す命令コードが複数個組み合わされて構成されたものである。
【００３７】
ＥＣＵ１００ａ〜１００ｄは、それぞれエンジン１０１、ブレーキ１０２、ドア開閉センサ１０３、窓（ウィンドウ）開閉センサ１０４といった機器に接続されており、その機器の状態を取得し、周期的に状態を表すフレーム（データフレーム）を、バス２００ａ、バス２００ｂ等で構成される車載ネットワークに送信している。
【００３８】
ゲートウェイ３００は、ＥＣＵ１００ａとＥＣＵ１００ｂとが接続されたバス２００ａ、及び、ＥＣＵ１００ｃとＥＣＵ１００ｄとが接続されたバス２００ｂと接続されたゲートウェイ装置としての一種のＥＣＵである。ゲートウェイ３００は一方のバスから受信したフレームを他方のバスに転送する転送機能を有する。また、ゲートウェイ３００は、攻撃検知機能を有し、セキュリティ装置として働く。
【００３９】
車載ネットワークシステム１０における各ＥＣＵは、ＣＡＮプロトコルに従ってフレームの授受を行う。ＣＡＮプロトコルにおけるフレームには、データフレーム、リモートフレーム、オーバーロードフレーム及びエラーフレームがある。
【００４０】
［１．２  データフレームフォーマット］
以下、ＣＡＮプロトコルに従ったネットワークで用いられるフレームの１つであるデータフレームについて説明する。
【００４１】
図２は、ＣＡＮプロトコルで規定されるデータフレームのフォーマットを示す図である。同図には、ＣＡＮプロトコルで規定される標準ＩＤフォーマットにおけるデータフレームを示している。データフレームは、ＳＯＦ（Start Of Frame）、ＩＤフィールド、ＲＴＲ（Remote Transmission Request）、ＩＤＥ（Identifier Extension）、予約ビット「ｒ」、ＤＬＣ（Data Length Code）、データフィールド、ＣＲＣ（Cyclic Redundancy Check）シーケンス、ＣＲＣデリミタ「ＤＥＬ」、ＡＣＫ（Acknowledgement）スロット、ＡＣＫデリミタ「ＤＥＬ」、及び、ＥＯＦ（End Of Frame）の各フィールドで構成される。
【００４２】
ＳＯＦは、１ｂｉｔのドミナントで構成される。バスがアイドルの状態はレセシブになっており、ＳＯＦによりドミナントへ変更することでフレームの送信開始を通知する。
【００４３】
ＩＤフィールドは、１１ｂｉｔで構成される、データの種類を示す値であるＩＤ（メッセージＩＤ）を格納するフィールドである。複数のノードが同時に送信を開始した場合、このＩＤフィールドで通信調停を行うために、ＩＤが小さい値を持つフレームが高い優先度となるよう設計されている。
【００４４】
ＲＴＲは、データフレームとリモートフレームとを識別するための値であり、データフレームにおいてはドミナント１ｂｉｔで構成される。
【００４５】
ＩＤＥと「ｒ」とは、両方ドミナント１ｂｉｔで構成される。
【００４６】
ＤＬＣは、４ｂｉｔで構成され、データフィールドの長さを示す値である。なお、ＩＤＥ、「ｒ」及びＤＬＣを合わせてコントロールフィールドと称する。
【００４７】
データフィールドは、最大６４ｂｉｔで構成される送信するデータの内容を示す値である。８ｂｉｔ毎に長さを調整できる。送られるデータの仕様については、ＣＡＮプロトコルで規定されておらず、車載ネットワークシステム１０において定められる。従って、車種、製造者（製造メーカ）等に依存した仕様となる。
【００４８】
ＣＲＣシーケンスは、１５ｂｉｔで構成される。ＳＯＦ、ＩＤフィールド、コントロールフィールド及びデータフィールドの送信値より算出される。
【００４９】
ＣＲＣデリミタは、１ｂｉｔのレセシブで構成されるＣＲＣシーケンスの終了を表す区切り記号である。なお、ＣＲＣシーケンス及びＣＲＣデリミタを合わせてＣＲＣフィールドと称する。
【００５０】
ＡＣＫスロットは、１ｂｉｔで構成される。送信ノードはＡＣＫスロットをレセシブにして送信を行う。受信ノードはＣＲＣシーケンスまで正常に受信ができていればＡＣＫスロットをドミナントとして送信する。レセシブよりドミナントが優先されるため、送信後にＡＣＫスロットがドミナントであれば、送信ノードは、いずれかの受信ノードが受信に成功していることを確認できる。
【００５１】
ＡＣＫデリミタは、１ｂｉｔのレセシブで構成されるＡＣＫの終了を表す区切り記号である。
【００５２】
ＥＯＦは、７ｂｉｔのレセシブで構成されており、データフレームの終了を示す。
【００５３】
［１．３  ゲートウェイ３００の構成］
図３は、ゲートウェイ３００の構成図である。ゲートウェイ３００は、バス間でのフレーム転送の機能（転送機能）を実行し、攻撃検知機能を有するセキュリティ装置としても機能する。このためゲートウェイ３００は、図３に示すように、フレーム送受信部３１０と、フレーム解釈部３２０と、受信ＩＤ判断部３３０と、受信ＩＤリスト保持部３４０と、フレーム処理部３５０と、転送ルール保持部３６０と、不正検知処理機能群３７０と、フレーム生成部３８０とを含んで構成される。これらの各構成要素は、ゲートウェイ３００における通信回路、メモリに格納された制御プログラムを実行するプロセッサ或いはデジタル回路等により実現される。
【００５４】
フレーム送受信部３１０は、バス２００ａ及びバス２００ｂのそれぞれに対して、ＣＡＮプロトコルに従ったフレームを送受信する。バス２００ａ又はバス２００ｂからフレームを１ｂｉｔずつ受信し、フレーム解釈部３２０に転送する。また、フレーム送受信部３１０は、フレーム生成部３８０より通知を受けた転送先のバスを示すバス情報及びフレームに基づいて、そのフレームの内容をバス２００ａ又はバス２００ｂに１ｂｉｔずつ送信する。
【００５５】
フレーム解釈部３２０は、フレーム送受信部３１０よりフレームの値を受け取り、ＣＡＮプロトコルで規定されているフレームフォーマットにおける各フィールドにマッピングするよう解釈を行う。フレーム解釈部３２０は、ＩＤフィールドと判断した値は受信ＩＤ判断部３３０へ転送する。フレーム解釈部３２０は、受信ＩＤ判断部３３０から通知される判定結果に応じて、ＩＤフィールドの値と、ＩＤフィールド以降に現れるデータフィールド（データ）とを、フレーム処理部３５０へ転送するか、フレームの受信を中止するかを決定する。また、フレーム解釈部３２０は、ＣＡＮプロトコルに則っていないフレームと判断した場合は、エラーフレームを送信するように、フレーム生成部３８０へ通知する。また、フレーム解釈部３２０は、エラーフレームを受信した場合には、受信中のフレームについてそれ以降はそのフレームを破棄する、つまりフレームの解釈を中止する。
【００５６】
受信ＩＤ判断部３３０は、フレーム解釈部３２０から通知されるＩＤフィールドの値を受け取り、受信ＩＤリスト保持部３４０が保持しているメッセージＩＤのリストに従い、そのＩＤフィールド以降のフレームの各フィールドを受信するかどうかの判定を行う。この判定結果を、受信ＩＤ判断部３３０は、フレーム解釈部３２０へ通知する。
【００５７】
受信ＩＤリスト保持部３４０は、ゲートウェイ３００が受信するＩＤ（メッセージＩＤ）のリストである受信ＩＤリストを保持する。受信ＩＤリストの例については後述する（図４）。
【００５８】
フレーム処理部３５０は、転送ルール保持部３６０が保持する転送ルールに従って、受信したフレームのＩＤに応じて、転送するバスを決定し、転送するバスのバス情報と、フレーム解釈部３２０より通知されたメッセージＩＤと、データとをフレームの転送のためにフレーム生成部３８０へ通知する。また、フレーム処理部３５０は、フレーム解釈部３２０より通知されたフレーム（メッセージ）を不正検知処理機能群３７０へ通知することで、攻撃検知（つまり攻撃フレームであるか否かの判定）を不正検知処理機能群３７０に依頼する。フレーム処理部３５０は、不正検知処理機能群３７０により攻撃フレームと判定されたフレームについてはフレームの転送のための処理を抑止する。つまり、フレーム処理部３５０は、攻撃フレームに対する防御の一方法として転送を抑止するためのフィルタリングを行い、攻撃フレーム以外のフレームについては転送ルールに従って転送を行う。
【００５９】
転送ルール保持部３６０は、バス毎のフレームの転送についてのルールを表す情報である転送ルールを保持する。転送ルールの例については後述する（図５）。
【００６０】
不正検知処理機能群３７０は、受信中のフレームが不正なフレームである攻撃フレームか否かを判定する攻撃検知機能を実現するための機能群である。不正検知処理機能群３７０の構成要素については後述する。
【００６１】
フレーム生成部３８０は、フレーム解釈部３２０から通知されたエラーフレームの送信の要求に従い、エラーフレームを、フレーム送受信部３１０へ通知して送信させる。また、フレーム生成部３８０は、フレーム処理部３５０から通知されたメッセージＩＤと、データとを用いてフレームを構成し、バス情報とともにフレーム送受信部３１０へ通知する。
【００６２】
［１．４  受信ＩＤリスト例］
図４は、ゲートウェイ３００の受信ＩＤリスト保持部３４０に保持される受信ＩＤリストの一例を示す図である。
【００６３】
図４に例示する受信ＩＤリストは、ＩＤ（メッセージＩＤ）の値が「１」、「２」、「３」及び「４」のいずれかであるメッセージＩＤを含むフレームを選択的に受信して処理するために用いられる。これは一例に過ぎないが、受信ＩＤリストには、ゲートウェイ３００が受信すると定められているフレームのメッセージＩＤが列挙されている。
【００６４】
［１．５  転送ルール例］
図５は、ゲートウェイ３００の転送ルール保持部３６０が保持する転送ルールの一例を示す。
【００６５】
この転送ルールは、転送元のバスと転送先のバスと転送対象のＩＤ（メッセージＩＤ）とを対応付けている。図５中の「＊」はメッセージＩＤにかかわらずフレームの転送がなされることを表している。図５の例は、バス２００ａから受信するフレームはメッセージＩＤにかかわらず、バス２００ｂに転送するように設定されていることを示している。また、バス２００ｂから受信するフレームのうちメッセージＩＤが「３」であるフレームのみがバス２００ａに転送されるように設定されていることを示している。
【００６６】
［１．６  不正検知処理機能群３７０の構成］
図６は、不正検知処理機能群３７０の構成図である。不正検知処理機能群３７０は、入力部３７１と、チェック部３７２と、チェックパラメータ保持部３７３と、更新部３７４と、検査パラメータ保持部３７５と、検査部（フィルタリング部）３７６とを含んで構成される。
【００６７】
入力部３７１は、フレーム処理部３５０から攻撃検知の依頼を受け、チェック部３７２及び検査部（フィルタリング部）３７６のそれぞれへ、フレーム処理部３５０から通知されたフレーム（つまりゲートウェイ３００がバスから受信したフレーム）の各フィールドの値を伝達することでフレームのチェック、検査（例えばフィルタリングに用いるための検査等）の指示を出す。
【００６８】
チェック部３７２は、入力部３７１から伝達されたフレームの内容に基づいて、そのフレーム（ゲートウェイ３００がバスから受信したフレーム）について予め定められた条件が成立するか否かの判定（例えば不正なフレームであるかどうかの判定）を行う機能を有する。チェック部３７２は、その判定に利用する閾値等のパラメータ（チェックパラメータと称する）を、チェックパラメータ保持部３７３から取得する。
【００６９】
チェックパラメータ保持部３７３は、例えばメモリ等の記憶媒体の一領域で実現され、チェック部３７２が使用するチェックパラメータ（閾値等）を保持する。
【００７０】
図７に、チェック部３７２及びチェックパラメータ保持部３７３の構成の一例を示す。図７の例では、チェック部３７２は、フレームのＩＤフィールドのＩＤの値について予め定められた条件が成立するか否かを判定する機能（ＩＤチェック機能）を担うＩＤチェック機能部と、フレームのＤＬＣの値（データ長）について予め定められた条件が成立するか否かを判定する機能（ＤＬＣチェック機能）を担うＤＬＣチェック機能部と、ＩＤが同値の２つのフレームが送信される時間間隔である送信周期について予め定められた条件が成立するか否かを判定する機能（送信周期チェック機能）を担う送信周期チェック機能部と、ＩＤが同値の１つ以上のフレームが所定の単位時間内に送信される頻度である送信頻度について予め定められた条件が成立するか否かを判定する機能（送信頻度チェック機能）を担う送信頻度チェック機能部とを有する。図７のチェック部３７２内の各チェック機能部は、チェックパラメータ保持部３７３が保持する各チェック機能に対応するルール（チェックパラメータで特定される条件）を取得し、そのルールに従ってチェック処理を行う。チェックパラメータは、ＩＤチェック機能に対応するＩＤチェックパラメータ、ＤＬＣチェック機能に対応するＤＬＣチェックパラメータ、送信周期チェック機能に対応する送信周期チェックパラメータ、及び、送信頻度チェック機能に対応する送信頻度チェックパラメータを含んで構成される。また、図７のチェック部３７２は、それぞれのチェック機能部におけるチェック結果（例えば予め定められた条件が成立するか否かの判定結果）を個別に出力し、また、それぞれのチェック機能部におけるチェック結果を判定部で総合的に判定した結果を出力する。例えば、判定部は、各チェック機能部におけるチェック結果（例えば条件成立又は不成立を示す判定結果）を用いた論理演算（論理積、論理和等の１つ又は組合せによる演算）の結果を出力する。
【００７１】
チェック部３７２のＩＤチェック機能について、一例としては、チェックパラメータ保持部３７３のＩＤチェックパラメータとしてメッセージＩＤの値が１つ以上含まれており、入力部３７１からチェック部３７２に伝達されたＩＤフィールド内のメッセージＩＤが、ＩＤチェックパラメータに含まれているいずれかのメッセージＩＤと同一であれば、チェック部３７２のＩＤチェック機能部は、予め定められた条件が成立すると判定する。また、逆に、チェック部３７２は、例えば、入力部３７１から伝達されたＩＤフィールド内のメッセージＩＤが、ＩＤチェックパラメータに含まれているどのメッセージＩＤとも異なる場合に、予め定められた条件が成立しないと判定する。チェック部３７２のＩＤチェック機能部等により条件が成立したと判定された結果として、例えば、更新部３７４が、検査パラメータ保持部３７５に保持されている複数の検査パラメータのいずれかを更新する。
【００７２】
チェック部３７２のＤＬＣチェック機能について、一例としては、チェックパラメータ保持部３７３のＤＬＣチェックパラメータとしてＤＬＣの値が１つ含まれており、入力部３７１からチェック部３７２に伝達されたＤＬＣの値が、ＤＬＣチェックパラメータに含まれているＤＬＣの値と一致しなかった場合に、チェック部３７２のＤＬＣチェック機能部は、予め定められた条件が成立すると判定する。また、逆に、チェック部３７２は、例えば、入力部３７１から伝達されたＤＬＣの値が、ＤＬＣチェックパラメータに含まれているＤＬＣの値と一致した場合に、予め定められた条件が成立しないと判定する。チェック部３７２のＤＬＣチェック機能部等により条件が成立したと判定された結果として、例えば、更新部３７４が、検査パラメータ保持部３７５に保持されている複数の検査パラメータのいずれかを更新する。
【００７３】
チェック部３７２の送信周期チェック機能について、一例としては、チェックパラメータ保持部３７３の送信周期チェックパラメータとして、一定の時間間隔（周期）の範囲（例えば９０ｍｓｅｃから１１０ｍｓｅｃ）が含まれており、入力部３７１からチェック部３７２に伝達されたフレームと、そのフレームのメッセージＩＤと同一のメッセージＩＤを有する１つ前に受信されたフレームとの受信時間間隔が、送信周期チェックパラメータに含まれている周期の範囲外になっている場合に、チェック部３７２の送信周期チェック機能部は、予め定められた条件が成立すると判定する。チェック部３７２の送信周期チェック機能部等により条件が成立したと判定された結果として、例えば、更新部３７４が、検査パラメータ保持部３７５に保持されている複数の検査パラメータのいずれかを更新する。
【００７４】
チェック部３７２の送信頻度チェック機能について、一例としては、チェックパラメータ保持部３７３の送信頻度チェックパラメータとして、一定の頻度の上限値（閾値）が含まれており、入力部３７１からチェック部３７２に伝達されたフレームについて、そのフレームが送信された頻度（そのフレームを受信した頻度）が、送信頻度チェックパラメータに含まれている頻度の上限値としての例えば単位期間（例えば１秒）あたりの回数（例えば１００回）を超えている場合に、チェック部３７２の送信頻度チェック機能部は、予め定められた条件が成立すると判定する。なお、送信頻度チェックパラメータは、頻度の下限値であっても良く、チェック部３７２は、単位期間においてその下限値より少ない回数しかフレームを受信しなかった場合に条件が成立したと判定しても良い。なお、送信頻度チェックパラメータは、頻度の範囲（上限値及び下限値）を示すものであっても良い。チェック部３７２の送信頻度チェック機能部等により条件が成立したと判定された結果として、例えば、更新部３７４が、検査パラメータ保持部３７５に保持されている複数の検査パラメータのいずれかを更新する。また、チェック部３７２は、送信頻度チェック機能における判定結果を単位期間毎に出力しても良く、この出力に対応して更新部３７４は、検査パラメータを更新し得る。
【００７５】
また、チェック部３７２は更に、例えば、フレームのデータフィールドのデータの値について予め定められた条件が成立するか否かを判定する機能（データチェック機能）を担うデータチェック機能部を含んでも良い。データチェック機能は、例えば、データの値がチェックパラメータで指定された値であるか否かをチェックするデータ固定値チェック機能を含み得る。また、データチェック機能は、例えば、データの値がチェックパラメータで指定された範囲内の値であるか否かをチェックするデータ範囲チェック機能を含み得る。また、データチェック機能は、例えば、データの値がチェックパラメータで指定された値以上又は以下であるか否かをチェックするデータ下限チェック機能又はデータ上限チェック機能を含み得る。また、データチェック機能は、例えば、データの値がチェックパラメータで指定された所定演算の結果と比較して一致するか否か等をチェックするデータ演算結果チェック機能を含み得る。なお、データチェック機能のチェック対象とするデータは、データフィールドの全体であっても良いし、データフィールドの一部の１つ又は複数のビット（連続した複数のビット或いは連続しない複数のビット）のみであっても良い。
【００７６】
また、上述の各チェック機能は、メッセージＩＤに関係なく適用されるものであっても良いし、特定のメッセージＩＤを持つフレームに対してのみ適用されるものであっても良い。なお、上述したチェック部３７２のチェック機能は、一例であり、これに限定されるものではなく、これ以外のチェック機能があっても良いし、上述した複数のチェック機能の一部だけを利用しても良い。
【００７７】
更新部３７４は、チェック部３７２からの判定結果を受けて、その判定結果に応じて、例えば検査パラメータ保持部３７５内の複数の検査パラメータのうち更新対象とすべき検査パラメータ（閾値等）を決定して、その決定した検査パラメータを更新する。更新部３７４が更新する検査パラメータ、検査パラメータの更新の程度等は、予め定められた基準、アルゴリズム等に基づいて決定される。その基準、アルゴリズム等は、例えばゲートウェイ３００の製造時等において定められる。
【００７８】
検査パラメータ保持部３７５は、例えばメモリ等の記憶媒体の一領域で実現され、検査部３７６が使用する検査パラメータ（閾値等）を保持する。
【００７９】
検査部３７６は、検査パラメータ保持部３７５が保持する検査パラメータに基づいて、入力部３７１により伝達されたフレーム（バスから受信されたフレーム）が攻撃フレームか否かの判定に係る検査を行う。検査部３７６による、攻撃フレームか否かの判定に係る検査は、フレームのフィルタリング等の防御機能の前提となるものであり、検査部３７６は、例えばフィルタリングのための検査を行うフィルタリング部として機能し得る。検査部３７６は、フレームが攻撃フレームか否かを判定するために用いる閾値等を規定する検査パラメータを検査パラメータ保持部３７５から取得する。この検査パラメータは、上述のように更新部３７４により必要に応じて更新される。
【００８０】
図８に、検査部３７６及び検査パラメータ保持部３７５の構成の一例を示す。図８の例では、検査部３７６は、フレームのＩＤフィールドのＩＤの値について検査パラメータで特定される条件が成立するか否かを判定する機能（ＩＤ検査機能）を担うＩＤ検査機能部と、フレームのＤＬＣの値（データ長）について検査パラメータで特定される条件が成立するか否かを判定する機能（ＤＬＣ検査機能）を担うＤＬＣ検査機能部と、ＩＤが同値の２つのフレームが送信される時間間隔である送信周期について検査パラメータで特定される条件が成立するか否かを判定する機能（送信周期検査機能）を担う送信周期検査機能部と、ＩＤが同値の１つ以上のフレームが所定の単位時間内に送信される頻度である送信頻度について検査パラメータで特定される条件が成立するか否かを判定する機能（送信頻度検査機能）を担う送信頻度検査機能部とを有する。図８の検査部３７６内の各検査機能部は、検査パラメータ保持部３７５が保持する各検査機能に対応するルール（検査パラメータで特定される条件）を取得し、そのルールに従って検査処理を行う。検査パラメータは、ＩＤ検査機能に対応するＩＤ検査パラメータ、ＤＬＣ検査機能に対応するＤＬＣ検査パラメータ、送信周期検査機能に対応する送信周期検査パラメータ、及び、送信頻度検査機能に対応する送信頻度検査パラメータを含んで構成される。また、図８の検査部３７６は、それぞれの検査機能部における検査結果を判定部で総合的に判定した結果（攻撃フレームか否かを示す情報）を出力する。
【００８１】
検査部３７６のＩＤ検査機能について、一例としては、検査パラメータ保持部３７５のＩＤ検査パラメータとしてメッセージＩＤの値が１つ以上含まれており、入力部３７１から検査部３７６に伝達されたＩＤフィールド内のメッセージＩＤが、ＩＤ検査パラメータに含まれているいずれかのメッセージＩＤと同一であれば、検査部３７６のＩＤ検査機能部は、攻撃フレームであると判定する。また、逆に、検査部３７６は、例えば、入力部３７１から伝達されたＩＤフィールド内のメッセージＩＤが、ＩＤ検査パラメータに含まれているどのメッセージＩＤとも異なる場合に、攻撃フレームでないと判定する。例えば、検査部３７６のＩＤ検査機能部等のいずれかの検査機能部により攻撃フレームであると判定された結果として、検査部３７６は、攻撃フレームであることを示す情報を出力する。
【００８２】
検査部３７６のＤＬＣ検査機能について、一例としては、検査パラメータ保持部３７５のＤＬＣ検査パラメータとしてＤＬＣの値が１つ含まれており、入力部３７１から検査部３７６に伝達されたＤＬＣの値が、ＤＬＣ検査パラメータに含まれているＤＬＣの値と一致しなかった場合に、検査部３７６のＤＬＣ検査機能部は、攻撃フレームであると判定する。また、逆に、検査部３７６は、例えば、入力部３７１から伝達されたＤＬＣの値が、ＤＬＣ検査パラメータに含まれているＤＬＣの値と一致した場合に、攻撃フレームでないと判定する。なお、検査部３７６は、例えば、入力部３７１から伝達されたＤＬＣの値が、ＤＬＣ検査パラメータに含まれているＤＬＣの値より大きい場合に攻撃フレームであると判定したり、ＤＬＣ検査パラメータに含まれているＤＬＣの値より小さい場合に攻撃フレームであると判定したりしても良く、どのように判定するかについて例えば検査パラメータにおいて規定されていても良い。
【００８３】
検査部３７６の送信周期検査機能について、一例としては、検査パラメータ保持部３７５の送信周期検査パラメータとして、一定の時間間隔（周期）の範囲（例えば９０ｍｓｅｃから１１０ｍｓｅｃ）が含まれており、入力部３７１から検査部３７６に伝達されたフレームと、そのフレームのメッセージＩＤと同一のメッセージＩＤを有する１つ前に受信されたフレームとの受信時間間隔が、送信周期検査パラメータに含まれている周期の範囲外になっている場合に、検査部３７６の送信周期検査機能部は、そのフレームが攻撃フレームであると判定する。なお、検査部３７６は、例えば、同じメッセージＩＤを有する２つのフレームの受信時間間隔が、閾値を超える或いは閾値未満である場合に攻撃フレームであると判定することとしても良いし、このために送信周期検査パラメータにその閾値が示され、どのような条件で攻撃フレームと判定すべきかが規定されていても良い。
【００８４】
検査部３７６の送信頻度検査機能について、一例としては、検査パラメータ保持部３７５の送信頻度検査パラメータとして、一定の頻度の上限値（閾値）が含まれており、入力部３７１から検査部３７６に伝達されたフレームについて、そのフレームが送信された頻度（そのフレームを受信した頻度）が、送信頻度検査パラメータに含まれている頻度の上限値としての例えば単位期間（例えば１秒）あたりの回数（例えば１００回）を超えている場合に、検査部３７６の送信頻度検査機能部は、攻撃フレームであると判定する。
【００８５】
また、検査部３７６は更に、例えば、フレームのデータフィールドのデータの値について検査パラメータで特定される条件が成立するか否かにより攻撃フレームであるか否かを判定する機能（データ検査機能）を担うデータ検査機能部を含んでも良い。データ検査機能は、例えば、データの値が検査パラメータで指定された値であるか否かを検査することで攻撃フレームか否かを判定するデータ固定値検査機能を含み得る。また、データ検査機能は、例えば、データの値が検査パラメータで指定された範囲内の値であるか否かを検査するデータ範囲検査機能、データの値が検査パラメータで指定された値以上又は以下であるか否かを検査するデータ下限検査機能又はデータ上限検査機能を含み得る。また、データ検査機能は、例えば、フレームのデータの値について、同一のメッセージＩＤを有する１つ前に受信されたフレームにおけるデータの値からの変化量が検査パラメータで指定された範囲内の値であるか否かを検査するデータ変化範囲検査機能を含み得る。また、データ検査機能は、例えば、データの値が検査パラメータで指定された所定演算の結果と比較して一致するか否か等を検査するデータ演算結果検査機能を含み得る。なお、データ検査機能の検査対象とするデータは、データフィールドの全体であっても良いし、データフィールドの一部の１つ又は複数のビット（連続した複数のビット或いは連続しない複数のビット）のみであっても良く、また、検査パラメータにおいてデータフィールド内の検査対象のデータの位置について規定することとしても良い。
【００８６】
また、上述の各検査機能は、メッセージＩＤに関係なく適用されるものであっても良いし、特定のメッセージＩＤを持つフレームに対してのみ適用されるものであっても良い。なお、上述した検査部３７６の検査機能は、一例であり、これに限定されるものではなく、これ以外の検査機能があっても良いし、上述した複数の検査機能の一部だけを利用しても良い。また、チェック部３７２と検査部３７６とは、互いに同様の条件についてのチェック機能又は検査機能を備えても良いし、それぞれ異なる条件についてのチェック機能又は検査機能を備えても良い。
【００８７】
なお、更新部３７４による検査パラメータの更新方法としては、例えば、チェック部３７２の送信周期チェック機能部が、送信周期が予め定めた適正な範囲の外となったことで条件が成立したと判定した場合に、検査パラメータ保持部３７５内の送信頻度検査パラメータにおける頻度の上限値（閾値）を下げる方法がある。
【００８８】
また、検査部３７６が上述のデータ変化範囲検査機能を含む場合において、更新部３７４による検査パラメータの更新方法としては、例えば、チェック部３７２の送信周期チェック機能部が、送信周期が予め定めた適正な範囲の外となったことで条件が成立したと判定した場合に、検査パラメータにおけるデータ変化範囲検査機能に関するパラメータで指定される範囲を狭める方法がある。これは、送信周期チェック機能部が条件の成立と判定した場合には攻撃を受けている可能性があるので、データ値の変化の許容範囲を狭く限定することで、攻撃の検知率を向上させることに有用である。また、データ値の変化の許容範囲を狭く限定することは、攻撃の影響を低減させる効果を奏し得る。
【００８９】
また、更新部３７４による検査パラメータの更新方法としては、チェック部３７２の送信頻度チェック機能部がメッセージＩＤ毎の送信頻度チェック機能において予め定めた適正な頻度でないことで条件が成立したと判定した場合に、各種の検査機能に関するパラメータの閾値を、より攻撃フレームに該当すると判定される度合いを高める方へ変化させる方法がある。より攻撃フレームに該当すると判定される度合を高める方へ変化させることの一例としては、検査パラメータ保持部３７５内の送信周期検査パラメータにおける周期の範囲（適正な範囲）を狭めることが挙げられる。これは、あるメッセージＩＤのフレームの送信頻度が増加したことで攻撃されている可能性があるため、安全のために攻撃をより検知し易くする例である。
【００９０】
また、メッセージＩＤに関係なく全てのフレームに対する送信頻度チェック機能により送信頻度が予め定めた適正な頻度でないことで条件が成立したと判定した場合には、検査パラメータ保持部３７５内の送信周期検査パラメータにおける周期の範囲を広げる方法がある。これは、フレームの送信頻度の増加により、あるフレームと他のフレームとの送信タイミングが同じになって通信調停が発生して送信が遅れる可能性が高くなることに対応する一方法である。
【００９１】
また、検査パラメータ保持部３７５に、検査部３７６における複数の検査機能のうち実行されるべき１つ又は複数の検査機能を指定するためのパラメータを検査パラメータに含めて保持させておき、更新部３７４による検査パラメータの更新方法としては、チェック部３７２の結果に応じて、検査部３７６で実行されるべき検査機能を指定するパラメータを更新しても良い。
【００９２】
また、検査パラメータ保持部３７５に、検査部３７６における複数の検査機能のそれぞれが実行される順序を指定するためのパラメータを検査パラメータに含めて保持させておき、更新部３７４による検査パラメータの更新方法としては、チェック部３７２の結果に応じて、検査部３７６で実行される複数の検査機能それぞれの実行の順序を指定するパラメータを更新しても良い。例えば、実行の順序を指定するパラメータに従って複数の検査機能を実行する検査部３７６では、複数の検査機能のうちいずれかで、受信されたフレームが攻撃フレームであると判定されると、未だ実行が完了していない検査機能の実行を打ち切ることができる。
【００９３】
また、更新部３７４による検査パラメータの更新方法としては、チェック部３７２の送信頻度チェック機能で予め定めた適正な頻度の外となったことで条件が成立したと判定し、かつ、データ範囲チェック機能で予め定めた範囲の外となったことで条件が成立したと判定した場合に、検査パラメータ保持部３７５内の送信周期検査パラメータにおける周期の範囲を狭める方法もある。このように、複数のチェック機能の結果から検査パラメータを更新しても良い。なお、検査パラメータを更新する場合において、１つの検査機能に関するパラメータのみを更新しても良いし、複数の検査機能に関するパラメータを更新しても良い。
【００９４】
また、更新部３７４による検査パラメータの更新方法は、チェック部３７２がチェックパラメータを用いて予め定められた条件が成立した場合に検査パラメータを更新することとしたが、その条件（つまり更新のための条件）は、受信されたフレームが不正な攻撃フレームである場合、フレームの一部が異常である場合等において満たされるものに限られることはない。例えば、その条件は、受信されたフレームが正常なフレームである場合、フレームの一部が正常である場合等において満たされるものであっても良い。例えば、チェック部３７２の送信周期チェック機能において正常なフレームが受信された場合に条件が成立したと判定し、この場合に更新部３７４で、検査パラメータにおける、検査部３７６で実行されるべき検査機能としてデータ上限検査機能或いはデータ下限検査機能を指定するパラメータを更新しても良いし、データ上限検査機能或いはデータ下限検査機能に関するパラメータを更新しても良い。
【００９５】
なお、上述した更新部３７４による検査パラメータの更新方法は、一例に過ぎず、これら以外の更新方法を用いても良いし、上述した更新方法の一部だけを用いても良い。
【００９６】
［１．７  ＥＣＵ１００ａの構成］
図９は、ＥＣＵ１００ａの構成図である。ＥＣＵ１００ａは、フレーム送受信部１１０と、フレーム解釈部１２０と、受信ＩＤ判断部１３０と、受信ＩＤリスト保持部１４０と、フレーム処理部１５０と、データ取得部１７０と、フレーム生成部１８０とを含んで構成される。これらの各構成要素は、ＥＣＵ１００ａにおける通信回路、メモリに格納された制御プログラムを実行するプロセッサ或いはデジタル回路等により実現される。ＥＣＵ１００ｂ〜１００ｄもＥＣＵ１００ａと概ね同様の構成を備える。
【００９７】
フレーム送受信部１１０は、バス２００ａに対して、ＣＡＮプロトコルに従ったフレームを送受信する。バス２００ａからフレームを１ｂｉｔずつ受信し、フレーム解釈部１２０に転送する。また、フレーム生成部１８０より通知を受けたフレームの内容をバス２００ａに送信する。
【００９８】
フレーム解釈部１２０は、フレーム送受信部１１０よりフレームの値を受け取り、ＣＡＮプロトコルで規定されているフレームフォーマットにおける各フィールドにマッピングするよう解釈を行う。ＩＤフィールドと判断した値は受信ＩＤ判断部１３０へ転送する。フレーム解釈部１２０は、受信ＩＤ判断部１３０から通知される判定結果に応じて、ＩＤフィールドの値と、ＩＤフィールド以降に現れるデータフィールドとを、フレーム処理部１５０へ転送するか、その判定結果を受けた以降においてフレームの受信を中止するかを決定する。また、フレーム解釈部１２０は、ＣＡＮプロトコルに則っていないフレームと判断した場合は、エラーフレームを送信するようにフレーム生成部１８０へ通知する。また、フレーム解釈部１２０は、エラーフレームを受信した場合には、それ以降はそのフレームを破棄する、つまりフレームの解釈を中止する。
【００９９】
受信ＩＤ判断部１３０は、フレーム解釈部１２０から通知されるＩＤフィールドの値を受け取り、受信ＩＤリスト保持部１４０が保持しているメッセージＩＤのリストに従い、そのＩＤフィールド以降のフレームの各フィールドを受信するかどうかの判定を行う。この判定結果を、受信ＩＤ判断部１３０は、フレーム解釈部１２０へ通知する。
【０１００】
受信ＩＤリスト保持部１４０は、ＥＣＵ１００ａが受信するメッセージＩＤのリストである受信ＩＤリストを保持する。この受信ＩＤリストは、例えば上述の図４の例と同様である。
【０１０１】
フレーム処理部１５０は、受信したフレームのデータに応じてＥＣＵ毎に異なる処理を行う。例えば、エンジン１０１に接続されたＥＣＵ１００ａは、時速が３０ｋｍを超えた状態でドアが開いている状態だと、アラーム音を鳴らす機能を備える。そして、ＥＣＵ１００ａのフレーム処理部１５０は、他のＥＣＵから受信したデータ（例えばドアの状態を示す情報）を管理し、エンジン１０１から取得された時速に基づいて一定条件下でアラーム音を鳴らす処理等を行う。ＥＣＵ１００ｃは、ブレーキがかかっていない状況でドアが開くとアラーム音を鳴らす機能を備える。ＥＣＵ１００ｂ、１００ｄでは特に何もしない。なお、ＥＣＵ１００ａ〜１００ｄは上記以外の機能を備えていても良い。
【０１０２】
データ取得部１７０は、ＥＣＵに繋がっている機器、センサ等の状態を示すデータを取得し、フレーム生成部１８０に通知する。
【０１０３】
フレーム生成部１８０は、フレーム解釈部１２０から通知されたエラーフレームの送信を指示する通知に従い、エラーフレームを構成し、エラーフレームをフレーム送受信部１１０へ通知して送信させる。また、フレーム生成部１８０は、データ取得部１７０より通知されたデータの値に対して、予め定められたメッセージＩＤをつけてフレームを構成し、フレーム送受信部１１０へ通知する。
【０１０４】
［１．８  不正検知処理機能群による攻撃検知処理］
図１０は、不正検知処理機能群３７０による攻撃検知処理の一例を示すフローチャートである。
【０１０５】
まず、入力部３７１は、フレーム処理部３５０からフレームの各フィールドデータを受信する（ステップＳ１００１）。入力部３７１は、受信した各フィールドデータをチェック部３７２と検査部（フィルタリング部）３７６へ通知する。
【０１０６】
次に、チェック部３７２は、チェックパラメータ保持部３７３からチェックパラメータを取得する（ステップＳ１００２）。
【０１０７】
そして、チェック部３７２は、取得したチェックパラメータを用いて、予め定められた条件が成立するか否かを判定するチェック処理を行う（ステップＳ１００３）。チェック部３７２は、チェック処理（ステップＳ１００３）における判定の結果を、更新部３７４へ通知する。チェック部３７２は、チェック処理として複数の条件それぞれに係る判定を行った場合にそれぞれの判定結果を通知し、それぞれの判定結果に基づく総合的な判定結果も通知する。
【０１０８】
更新部３７４は、チェック部３７２から通知された判定結果から、検査パラメータ保持部３７５が保持する検査パラメータの更新が必要であるか否かを判定する（ステップＳ１００４）。
【０１０９】
更新部３７４は、ステップＳ１００４で検査パラメータの更新が必要であると判断した場合には、検査パラメータ保持部３７５の検査パラメータを更新する（ステップＳ１００５）。
【０１１０】
ステップＳ１００５での更新の後に、或いは、ステップＳ１００４で検査パラメータの更新が不要であると判断された場合に、検査部３７６は、検査パラメータ保持部３７５から検査パラメータ（例えばフィルタリング用に用いられるパラメータ）を取得する（ステップＳ１００６）。
【０１１１】
そして、検査部３７６は、検査処理（例えばフィルタリングの前提としての検査であるフィルタリング処理）を行う（ステップＳ１００７）。この検査処理により検査部３７６は、受信されたフレームが攻撃フレームであるか否かを判定し判定結果をフレーム処理部３５０へ通知する。検査部３７６が攻撃フレームであると判定した場合には、フレーム処理部３５０へ攻撃フレームであることを通知し、フレーム処理部３５０では転送処理を禁止するフィルタリングを行い、攻撃フレームを無効化する。
【０１１２】
［１．９  ゲートウェイの動作例］
図１１は、ゲートウェイ３００の動作（転送処理）の一例を示すフローチャートである。ゲートウェイ３００は、一のバスから受信したフレームを他のバスへ転送する転送処理を行う。ここでは転送処理は、バス２００ａから受信したフレームをバス２００ｂへ転送する処理を例として説明するが、バス２００ｂから受信したフレームをバス２００ａへ転送する処理も同様である。
【０１１３】
まず、ゲートウェイ３００のフレーム送受信部３１０は、バス２００ａからフレームを受信する（ステップＳ１１０１）。フレーム送受信部３１０は、受信したフレームの各フィールドのデータをフレーム解釈部３２０へ伝える。
【０１１４】
次に、ゲートウェイ３００のフレーム解釈部３２０は、受信ＩＤ判断部３３０と連携して、受信したフレームのＩＤフィールドの値（メッセージＩＤ）から、受信して処理する必要があるフレームであるかどうかを判定する（ステップＳ１１０２）。
【０１１５】
ゲートウェイ３００のフレーム解釈部３２０は、ステップＳ１１０２で、受信して処理する必要があると判断した場合には、フレーム処理部３５０へフレーム内の各フィールドの値を伝える。その後、フレーム処理部３５０は、転送ルール保持部３６０に保持する転送ルールに従って、転送先のバスを決定する（ステップＳ１１０３）。
【０１１６】
ゲートウェイ３００のフレーム処理部３５０は、不正検知処理機能群３７０へフレーム内の各フィールドの値を通知することで、攻撃検知（攻撃フレームであるか否かの判定）を依頼する。
【０１１７】
ゲートウェイ３００の不正検知処理機能群３７０は、上述の攻撃検知処理によって、フレーム処理部３５０から通知されたフレームの各フィールドの値から、そのフレームが攻撃フレームであるか否かを判定し（ステップＳ１１０４）、その判定結果をフレーム処理部３５０へ通知する。
【０１１８】
ゲートウェイ３００のフレーム処理部３５０は、ステップＳ１１０４でフレームが攻撃フレームではないと判定された場合には、ステップＳ１１０３で決定した転送先のバスに、フレームを転送するようフレーム生成部３８０へ依頼する。フレーム生成部３８０は、フレーム処理部３５０からの依頼を受けて、指定された転送先へフレームを転送する（ステップＳ１１０５）。ステップＳ１１０５では、フレーム処理部３５０がフレームの各フィールドの値をフレーム生成部３８０へ伝達し、これを受けてフレーム生成部３８０は、フレームを生成してフレーム送受信部３１０にバス２００ｂへ送信させることで、フレームの転送を実現する。
【０１１９】
なお、転送先の決定（ステップＳ１１０３）の後に攻撃フレームであるか否かを判定する例を示したが（ステップＳ１１０４）、これに限定されるものではなく、攻撃フレームであるか否かの判定（ステップＳ１１０４）の後に、転送先の決定（ステップＳ１１０３）を行っても良いし、例えば、転送先の決定（ステップＳ１１０３）と攻撃フレームであるか否かの判定（ステップＳ１１０４）とを同時に行っても良い。
【０１２０】
［１．１０  実施の形態１の効果］
実施の形態１に係る車載ネットワークシステム１０では、ゲートウェイ３００でフレームを転送する転送処理におけるフィルタリングのために不正検知処理機能群３７０による攻撃検知処理を行う。この攻撃検知処理では、フレームが攻撃フレームであるか否かを検査するために用いる検査パラメータを、受信したフレームに基づくチェック機能により一定条件下で変化させ得る。これにより、多様で変化し得る攻撃に適応して攻撃フレームを適切に検知できる度合い（検知精度）が向上し得る。この攻撃フレームの検知精度が向上することで、攻撃に対して適切に防御（転送抑止等といったＥＣＵに対する攻撃フレームの影響を抑制するための処理）を行うことが可能となる。
【０１２１】
［１．１１  実施の形態１の変形例］
上述のゲートウェイ３００は、フレーム処理部３５０から不正検知処理機能群３７０へ攻撃検知（攻撃フレームであるか否かの判定）を依頼し、判定結果に応じてフレームを転送するか否かを切り替えることで、攻撃フレームに対する防御を行う。攻撃検知の結果の利用の方法としては、フレームを転送するか否かというフィルタリングに限られることはない。ここでは、車載ネットワークシステム１０におけるゲートウェイ３００の変形例として、攻撃検知の結果を、攻撃フレームの無力化による防御に用いるゲートウェイ３００ａについて説明する。
【０１２２】
図１２は、実施の形態１の変形例に係るゲートウェイ３００ａの構成図である。同図に示すようにゲートウェイ３００ａでは、フレーム解釈部３２０は、受信したフレームの各フィールドを不正検知処理機能群３７０へ伝達する。不正検知処理機能群３７０の検査部（フィルタリング部）３７６は、フレームが攻撃フレームであると判定した場合には、フレーム生成部３８０にエラーフレームの送信を依頼することで、フレームを無力化する。このため、不正検知処理機能群３７０における検査部３７６では、ゲートウェイ３００ａが受信したフレームのＩＤフィールドが受信された後であってデータフィールドに後続する部分（ＣＲＣフィールド）が受信される前にそのフレームが攻撃フレームか否かの判定に係る検査を行う。そして検査部３７６が攻撃フレームと判定した時点で、フレーム生成部３８０及びフレーム送受信部３１０の動作により、エラーフレームが、攻撃フレームが送信されたバス上に送出される。これにより、攻撃フレームのＣＲＣフィールドより前の部分がエラーフレームにより上書きされるので、各ＥＣＵが攻撃フレームを適正なフレームと認識して動作してしまうことが阻止され得る。各ＥＣＵが攻撃フレームを適正なフレームと認識して動作してしまうことの阻止のためには、攻撃フレームのデータフレームの終了を示すＥＯＦの最後のビットが送信される前にエラーフレームの送信を開始して上書きすれば足りる。従って、エラーフレームの送信開始タイミングは任意に調整し得る。なお、攻撃フレームの送信中において攻撃フレームであるか否かを早期に検査して、攻撃フレームと判定した場合に早期にエラーフレームの送信を開始することは、各ＥＣＵにおける攻撃フレームに係るＣＲＣチェック等の処理負荷の低減のために有用となり得る。
【０１２３】
なお、ゲートウェイ３００ａにおけるフレーム解釈部３２０は、全てのフレームを不正検知処理機能群３７０へ伝達しても良い。また、フレーム解釈部３２０は、受信ＩＤリストに含まれないフレームのみを不正検知処理機能群３７０へ伝達し、受信ＩＤリストに含まれるフレームに関しては、フレーム処理部３５０から不正検知処理機能群３７０へ攻撃検知の依頼を行っても良い。
【０１２４】
また、攻撃検知の結果の利用の方法として、攻撃フレームについてはバス間でのフレームの転送を抑止するフィルタリングと、攻撃フレームが送信されたバスへのエラーフレームの送信による無力化との両方を実行しても良い。
【０１２５】
図１３に、実施の形態１に係るゲートウェイ３００及び変形例に係るゲートウェイ３００ａを一般化したゲートウェイ３００ｂの構成を示す。同図において、主に攻撃検知に係る構成（防御に係る構成を含む）を実線枠のブロックで示している。ゲートウェイ３００ｂは、攻撃検知に係る構成として、受信部４１０、更新部４２０、保持部４３０、検査部４４０及び処理部４５０を含んでいる。受信部４１０は、少なくとも１つのバスからフレームを受信する機能を有し、例えばゲートウェイ３００、３００ａにおけるフレーム送受信部３１０の受信機能部分と同等である。更新部４２０は、受信部４１０により受信されたフレームに関連する予め定められた条件が成立した場合に保持部４３０が保持する検査パラメータを更新する機能を有する。更新部４２０は、例えばゲートウェイ３００、３００ａにおける不正検知処理機能群３７０のチェック部３７２とチェックパラメータ保持部３７３と更新部３７４とを合わせたものと同等である。保持部４３０は、フレームについての検査内容を規定する検査パラメータを保持する機能を有し、例えばゲートウェイ３００、３００ａにおける不正検知処理機能群３７０の検査パラメータ保持部３７５と同等である。検査部４４０は、保持部４３０が保持する検査パラメータに基づいて、受信部４１０により受信されたフレームが攻撃フレームか否かの判定に係る検査を行う機能を有する。検査部４４０は、例えばゲートウェイ３００、３００ａにおける不正検知処理機能群３７０の検査部３７６と同等である。処理部４５０は、ＥＣＵに対する攻撃フレームの影響を抑制するように検査部４４０による検査結果に応じた処理を行う機能を有する。処理部４５０は、例えば、ゲートウェイ３００のフレーム処理部３５０における攻撃フレームについての転送処理を禁止する機能、及び、ゲートウェイ３００ａのフレーム生成部３８０における攻撃フレームに対してエラーフレームを送信する機能の両方或いは一方と同等である。このゲートウェイ３００ｂでは、フレームが攻撃フレームであるか否かを検査部４４０で検査するために用いる、保持部４３０の検査パラメータを、更新部４２０により、受信したフレームに応じて一定条件下で更新する。これにより、多様で変化し得る攻撃に適応して攻撃フレームを適切に検知でき、処理部４５０により、攻撃に対して適切に防御できる。
【０１２６】
（他の実施の形態）
以上のように、本発明に係る技術の例示として実施の形態１を説明した。しかしながら、本発明に係る技術は、これに限定されず、適宜、変更、置き換え、付加、省略等を行った実施の形態にも適用可能である。例えば、以下のような変形例も本発明の一実施態様に含まれる。
【０１２７】
（１）上記実施の形態における不正検知処理機能群３７０による攻撃検知処理として、チェック処理を行い、その結果に応じて検査パラメータを更新し、その後に、検査処理を行う例を図１０に示したが、これに限定されるものではなく、例えば、図１４に示す攻撃検知処理の変形例１のように、ステップＳ１００２〜ステップＳ１００３でのチェック処理と、ステップＳ１００６〜ステップＳ１００７での検査処理（フィルタリング処理）とを並列に実行し、そのチェック処理の結果に応じて検査パラメータの更新が必要かどうかを判断し（ステップＳ１００４）、必要であれば検査パラメータを更新し（ステップＳ１００５）、更新された検査パラメータを利用して検査処理（フィルタリング処理）を実行しても良い（ステップＳ１００７）。なお、チェック処理と並列に実行する検査処理は、検査パラメータの更新（ステップＳ１００５）の後の検査処理と同じ内容の検査を行っても良いし、互いに異なる内容の検査（複数の検査機能のうち異なる検査機能による検査）を行っても良い。このように、検査処理の実行タイミングは、検査パラメータの更新のためのチェック処理の実行のタイミングと重なっても相違しても良い。検査パラメータの更新がなされるとその更新後においては検査処理では更新された検査パラメータに基づいて検査が行われ得る。また、攻撃検知処理において検査パラメータの更新のみならずチェックパラメータをフレームの内容に応じて更新しても良い。
【０１２８】
（２）上記実施の形態で示した不正検知処理機能群３７０の構成は、一例に過ぎず、例えば、チェックパラメータ保持部３７３が保持するチェックパラメータを用いた各種のチェック機能を備えるチェック部３７２の代わりに、図１５に示すように、ＩＤフィールドのみに関連して不正か否かを判定するＩＤ関連不正検知処理部３７２ａを備えるように変形しても良い。ＩＤ関連不正検知処理部３７２ａは、検知パラメータ保持部３７３ａが保持する検知パラメータを用いて不正か否かの判定を行い、不正である場合において更新部３７４により、フィルタパラメータ保持部３７５ａが保持するフィルタパラメータを更新する。このフィルタパラメータを用いてフィルタリング部３７６ａが、攻撃フレームのフィルタリングのためにフレームの検査を行う。フィルタパラメータ保持部３７５ａは、検査パラメータ保持部３７５と同様であり得る。また、フィルタリング部３７６ａは、検査部（フィルタリング部）３７６と同様であり得る。不正検知処理機能群３７０の更に具体的な変形例としては、例えば、図１６に示す例が挙げられる。図１６の例では、ＩＤフィールドのメッセージＩＤから、同じメッセージＩＤが設定されているフレームの送信時間間隔（送信周期）をチェックし、周期情報保持部３７３ｂに保持されているルールとは異なる周期でフレームが送信されていないかを検知する周期異常検知部３７２ｂを備え、周期異常を検知した場合は、更新部３７４は、フィルタパラメータで示す正常なフレームを許容する範囲を狭める等の処理を行っても良い。また、更新部３７４は、周期が適正な範囲からずれた時間に応じて、フィルタパラメータの変更量を変えても良い。この例は、概ね実施の形態１で示した不正検知処理機能群３７０におけるチェック部３７２が、ＩＤフィールドだけから予め定めた条件が成立するか否かをチェックするチェック機能のみを備えた場合と同等である。この場合において、不正検知処理機能群３７０による攻撃検知処理では、例えば図１７に示すようにＩＤフィールドの内容をチェックしている間に並行して残りのフィールドの受信を行うこととしても良い。図１７の例では、フレーム解釈部３２０或いはフレーム処理部３５０は、ＩＤフィールドを受信したタイミングで、不正検知処理機能群３７０の入力部３７１へＩＤフィールドの値を通知する。その後、フレーム解釈部３２０或いはフレーム処理部３５０は、ＩＤフィールド以降のフィールドを受信し、受信が完了したタイミングで残りのフィールドのデータを、不正検知処理機能群３７０の入力部３７１へ送信する。これにより、ステップＳ１００２からＳ１００５の処理を、フレームの受信完了より早いタイミングで開始することができ、また、ステップＳ１００２〜Ｓ１００５の処理と、ステップＳ１０１１の処理とを並列に実行できる。このため、データフィールドの受信と、チェック処理及び検査パラメータの更新とを並列に実行できて総合的な処理時間を短縮し得るので、例えば検査パラメータを用いたフィルタリングのための検査処理等に多くの時間を割くこと等が可能になる。
【０１２９】
（３）上記実施の形態で示した不正検知処理機能群３７０の構成は、例えば、図１８に示すように変形しても良い。図１８の変形例に係る不正検知処理機能群３７０ｃは、チェック部３７２に攻撃フレームのフィルタリングのための検査の機能を追加したものである第一フィルタリング部３７２ｃを備えている。フィルタパラメータ保持部３７５ｃは、検査パラメータ保持部３７５と同様であり得る。また、第二フィルタリング部３７６ｃは、検査部（フィルタリング部）３７６と同様であり得る。ここで、第一フィルタリング部３７２ｃと第二フィルタリング部３７６ｃとは、フィルタリングのための検査処理の内容が同じであっても良いし、異なるものであっても良い。なお、図１８の例では、第一フィルタリング部３７２ｃと第二フィルタリング部３７６ｃとが同じフィルタパラメータ保持部３７５ｃを利用するとしたが、これに限定されるものではなく、第一フィルタリング部３７２ｃと第二フィルタリング部３７６ｃとは互いに異なるフィルタパラメータ（検査パラメータ）を用いて検査を行っても良い。なお、第一フィルタリング部３７２ｃで攻撃フレームと判定されたフレームについては第二フィルタリング部３７６ｃでの検査処理が省略され得る。これにより、第一フィルタリング部３７２ｃで攻撃フレームと判定された場合には、いち早く攻撃に対する防御（攻撃フレームの転送抑止、エラーフレームの送信による攻撃フレームの無力化等）を実行できる。また、第一フィルタリング部３７２ｃで攻撃フレームと判定できなかった場合にも、フィルタパラメータ（検査パラメータ）を更新することで、第二フィルタリング部３７６ｃで攻撃フレームと判定可能になり得る。第一フィルタリング部３７２ｃは、図１９に示すように、ＩＤフィールド関連の検査処理しか行わないＩＤフィールド関連フィルタリング部３７２ｄであっても良い。図１９には、ＩＤフィールド関連フィルタリング部３７２ｄ、フィルタパラメータ保持部３７５ｄ、フィルタリング部３７６ｄ等を備える変形例である不正検知処理機能群３７０ｄを示している。これにより、ＩＤフィールドを受信したタイミングで、フィルタリングのための検査処理を実行することができるため、データフィールドの受信と、ＩＤフィールド関連のフィルタリングのための検査処理及びフィルタパラメータ保持部３７５ｄが保持するパラメータの更新とを、並列に実行でき、フィルタリング部３７６ｄによるフィルタリングのための検査処理に多くの時間を割り当てることが可能となり得る。
【０１３０】
（４）上記実施の形態で示した不正検知処理機能群３７０の構成は、例えば、図２０に示すように変形しても良い。図２０の変形例に係る不正検知処理機能群３７０ｅは、チェック部３７２と検査部（フィルタリング部）３７６と更新部３７４との間に、フィルタ制御部３７７を備えている。チェック部３７２は、各種のチェック機能（ＩＤチェック機能、ＤＬＣチェック機能、送信周期チェック機能、送信頻度チェック機能等）によりチェック処理（予め定められた条件が成立するか否かの判定）が終わり、判定結果が得られたものから順に、フィルタ制御部３７７へその判定結果（チェック結果）を通知する。フィルタ制御部３７７は、検査パラメータの更新に必要なチェック結果が得られた時点で、更新部３７４へ検査パラメータの更新を行わせる。また、フィルタ制御部３７７は、検査部３７６における各種の検査機能（ＩＤ検査機能、ＤＬＣ検査機能、送信周期検査機能、送信頻度検査機能等）に関連するパラメータが、検査に利用可能な状態に更新されたか否かを管理し、利用可能な状態に更新された段階で、検査部３７６へ該当する検査機能の実行を行わせる。フィルタ制御部３７７は、例えば、検査パラメータのうち、１つのフレームの受信に際して特定の検査機能が用いるパラメータについての更新に関わるチェック機能によりそのフレームについてのチェック処理がなされた後（チェック結果次第でパラメータの更新がなされた後）にその特定の検査機能を実行させるように制御し得る。これにより、各種のチェック機能による全てのチェック結果が揃わなくても、一部の検査機能に係る検査（例えばフィルタリングのための検査）を実行することができ、攻撃フレームに対する迅速な防御等が可能となり得る。
【０１３１】
（５）上記実施の形態で示した車載ネットワークシステム１０におけるＥＣＵ（ＥＣＵ１００ａ〜１００ｄ）の構成は図９に例示したものに限定されることはなく、例えば、図２１に示すＥＣＵ１００ｅのように、不正検知処理機能群３７０を備えても良い。図２１に示すＥＣＵの変形例において、フレーム処理部１５０が、不正検知処理機能群３７０へ攻撃検知（攻撃フレームであるか否かの判定）を依頼しても良いし、フレーム解釈部１２０が、不正検知処理機能群３７０へ攻撃検知を依頼しても良い。またＥＣＵは、例えば図２２に示すＥＣＵ１００ｆのように、フレーム送受信部１１０と、フレーム解釈部１２０と、フレーム生成部１８０と、不正検知処理機能群３７０とで構成されても良い。図２２に示すＥＣＵの変形例においてフレーム解釈部１２０は、全てのフレームを受信し、不正検知処理機能群３７０へ攻撃検知を依頼する。また、ＥＣＵは、図２２のＥＣＵ１００ｆの構成に加えて、図９に示した受信ＩＤ判断部１３０と、受信ＩＤリスト保持部１４０とを備え、受信ＩＤリスト保持部１４０が保持する受信ＩＤリストに記載されたメッセージＩＤを持つフレームのみを受信し、そのフレームに関して、フレーム解釈部１２０が不正検知処理機能群３７０へ攻撃検知（攻撃フレームであるか否かの判定）を依頼しても良い。このように車載ネットワークシステム１０においてゲートウェイ３００のみならずその他のＥＣＵも、バスに送信されているフレームが、攻撃フレームであるか否かを検知するセキュリティ装置として機能し得る。また、ＥＣＵは、例えば図２３に示すＥＣＵ１００ｇのような構成を備えても良い。図２３に示すＥＣＵの変形例においては、バスへ送信するためのデータを外部装置（例えばカーナビゲーション装置等）から取得する送信データ取得部１７１を備え、不正検知処理機能群３７０は、送信データ取得部１７１から受信したデータが攻撃フレームであるか否かを判定し、攻撃フレームではないと判定した場合にのみフレーム生成部１８０へフレームの送信を依頼しても良い。これにより、ＥＣＵに対してカーナビゲーション装置等から攻撃フレームが送信されるような場合に攻撃に対する検知及び防御が可能となる。
【０１３２】
（６）上記実施の形態では、更新部３７４は、チェック部３７２からの判定結果を受けて、更新が必要な検査パラメータ（閾値等）を決定して、その決定した検査パラメータを更新することとしたが、更新部３７４はチェック部３７２からの判定結果以外の条件を踏まえて検査パラメータを更新することとしても良い。例えば、更新部３７４は、チェック部３７２からの判定結果に加えて、車両の状態（例えば車速、停車中か否か等）、或いは、車載ネットワークシステム１０におけるバスに接続されている機器（ＥＣＵ等）の構成、チェック部３７２による以前の判定結果等にも基づいて、更新が必要な検査パラメータの決定、或いは、検査パラメータの更新後の値等を決定しても良い。例えば、車両の状態に基づいて検査パラメータを更新する場合には、車両が停車中であれば検査パラメータを更新しないようにしたり、或いは、更新前後での検査パラメータの値の差異が小さくなるように抑制したりしても良い。また、車載ネットワークシステム１０を搭載する車両に複数の運転支援機能が搭載され、いずれかの運転支援機能が動作している状態においては、それ以外の同時に動作することのない運転支援機能に関連するフレームについてのパラメータ（閾値等）を、攻撃フレームと判定する度合いが高まるように変化させても良い。この攻撃フレームか否かの判定については、単にメッセージＩＤの値のみで攻撃フレームとして判定し得るようにしても良いし、データフィールドの特定のビット等を検査することで攻撃フレームとして判定し得るようにしても良い。また、バスに接続されている機器の構成にも基づいて検査パラメータの更新の処理を行う場合には、例えば、カーナビゲーション装置等といった外部と通信する機能を有する機器が一定数以上ある場合には、攻撃フレームと判定する度合いが高まるように検査パラメータを変化させても良い。
【０１３３】
（７）上記実施の形態では、更新部３７４が更新する検査パラメータ、検査パラメータの更新の程度等の決定に用いられる基準、アルゴリズム等がゲートウェイ３００の製造時等において定められることとしたが、これに限定されるものではなく、製造後（工場出荷後等）に変更できても良い。その基準、アルゴリズム等の変更方法としては、変更に関するデータを外部から受信してそのデータを用いて変更しても良いし、取り外し可能な記憶媒体（光ディスク、磁気ディスク、半導体メディア等）からデータを読み取ることでそのデータを用いて変更しても良い。
【０１３４】
（８）上記実施の形態１の変形例において示したゲートウェイ３００ｂの構成要素である受信部４１０、更新部４２０、保持部４３０、検査部４４０及び処理部４５０は、上述のゲートウェイに限らずＥＣＵ（ＥＣＵ１００ａ〜１００ｇ等）に含ませても良い。この場合に、受信部４１０はフレーム送受信部１１０の受信機能部分である。
【０１３５】
また、保持部４３０は、例えば、不正検知処理機能群３７０、３７０ｅの検査パラメータ保持部３７５、或いは、不正検知処理機能群３７０ａ〜３７０ｄのフィルタパラメータ保持部３７５ａ〜３７５ｄ等であり得る。保持部４３０は、相互に異なる、フレームについての検査内容を規定する複数の検査パラメータを保持し、例えば、複数の検査パラメータは、ＩＤの値の検査に係るＩＤ検査パラメータと、ＤＬＣの値の検査に係るＤＬＣ検査パラメータと、送信周期の検査に係る送信周期検査パラメータと、送信頻度の検査に係る送信頻度検査パラメータと、データフィールドに格納されたデータの値の検査に係るデータ検査パラメータとのうちの１つ以上を含む。送信頻度検査パラメータは、送信頻度の許容範囲の上限を示す閾値を含み、データ検査パラメータは、データフィールドに格納されたデータの変化の許容範囲の上限を示す閾値を含み、送信周期検査パラメータは、送信周期の許容範囲を示す閾値を含み、ＤＬＣ検査パラメータは、ＤＬＣの値の許容範囲を示す閾値を含み得る。また、データ検査パラメータは、データの値の許容範囲を示す閾値を含んでも良い。
【０１３６】
また、更新部４２０は、不正検知処理機能群３７０、３７０ｅのチェック部３７２、チェックパラメータ保持部３７３及び更新部３７４の組み合わせであり得るし、不正検知処理機能群３７０ａのＩＤ関連不正検知処理部３７２ａ、検知パラメータ保持部３７３ａ及び更新部３７４の組み合わせであり得るし、不正検知処理機能群３７０ｂの周期異常検知部３７２ｂ、周期情報保持部３７３ｂ及び更新部３７４の組み合わせであり得るし、不正検知処理機能群３７０ｃの第一フィルタリング部３７２ｃ、フィルタパラメータ保持部３７５ｃの一部又は全部、及び、更新部３７４の組み合わせであり得るし、不正検知処理機能群３７０ｄのＩＤフィールド関連フィルタリング部３７２ｄ、フィルタパラメータ保持部３７５ｄの一部又は全部、及び、更新部３７４の組み合わせであり得る。更新部４２０は、受信部４１０により受信されたフレームについて複数の予め定められた条件それぞれが成立するか否かの判定を行う、条件毎に対応したチェック機能を有し、その各チェック機能での判定結果に応じて、保持部４３０が保持する複数の検査パラメータのうち更新対象とすべき検査パラメータを決定して更新する。更新部４２０は、例えばＩＤチェック機能と、ＤＬＣチェック機能と、送信周期チェック機能と、送信頻度チェック機能と、データチェック機能とのうちの１つ以上のチェック機能を有し得る。例えば、送信周期チェック機能においては、ＩＤが同値の２つのフレームの受信間隔が所定の許容範囲から外れる場合にその送信周期チェック機能に対応する条件が成立したと判定し得る。更新部４２０は、例えば、送信周期チェック機能で条件が成立したと判定した場合に複数の検査パラメータのいずれかを更新しても良い。また、更新部４２０は、送信周期チェック機能で条件が成立したと判定した場合に、送信頻度検査パラメータにおける閾値を更新することとしても良い。また、更新部４２０は、送信周期チェック機能で条件が成立したと判定した場合に、データ検査パラメータにおける閾値を、より小さい値へと更新することとしても良い。また、更新部４２０は、送信頻度が所定の許容範囲の上限を超える場合に送信頻度チェック機能に対応する条件が成立したと判定して、送信周期検査パラメータにおける閾値を更新することとしても良い。また、更新部４２０は、一のフレームに関連して送信頻度チェック機能で条件が成立したと判定した場合に、その一のフレームのＩＤと同一のＩＤを有するフレームの検査内容として用いられる複数の検査パラメータにおける閾値を、該当の許容範囲をより狭くするように更新することとしても良い。また、更新部４２０は更に、受信部４１０により受信されたフレームに関連する予め定められた条件が成立した場合に、そのフレームを攻撃フレームであると判定しても良い。
【０１３７】
また、検査部４４０は、不正検知処理機能群３７０、３７０ｅの検査部（フィルタリング部）３７６であり得るし、不正検知処理機能群３７０ａのフィルタリング部３７６ａであり得るし、不正検知処理機能群３７０ｂのフィルタリング部３７６ｂであり得るし、不正検知処理機能群３７０ｃの第二フィルタリング部３７６ｃであり得るし、不正検知処理機能群３７０ｄのフィルタリング部３７６ｄであり得る。また、処理部４５０は、ＥＣＵにおけるフレーム処理部１５０及びフレーム生成部１８０の少なくとも一方であり得る。検査部４４０は、例えば保持部４３０が保持する複数の検査パラメータのそれぞれに基づいて検査を行い、例えば、受信部４１０により受信されたフレームに係る送信頻度が送信頻度検査パラメータにおける閾値を超えた場合にそのフレームを攻撃フレームと判定しても良い。また、検査部４４０は、受信部４１０により受信されたフレームに係るデータフィールドに格納されたデータの変化がデータ検査パラメータにおける閾値を超えた場合にそのフレームを攻撃フレームと判定しても良い。検査部４４０が、受信部４１０によりフレームのＩＤフィールドが受信された後であってデータフィールドに後続する部分（ＣＲＣフィールド）が受信される前に検査を行うこととしても良く、処理部４５０では攻撃フレームに対してエラーフレームを送信することとしても良い。
【０１３８】
また、ゲートウェイ、ＥＣＵ等において、不正検知処理機能群３７０ｅのフィルタ制御部３７７（図２０参照）のような制御部を設けても良い。この制御部は、更新部４２０が有する複数のチェック機能それぞれについてそのチェック機能での判定結果が得られたタイミングで、複数の検査パラメータのいずれかがその判定結果に応じて更新されるべきか否かを確認し、更新されるべきであれば該当の検査パラメータを更新するように更新部４２０を制御し、複数の検査パラメータそれぞれの更新状況に応じて、その各検査パラメータに基づく検査を行うように検査部４４０を制御する。
【０１３９】
（９）上記実施の形態では、ＣＡＮプロトコルに従って通信するネットワーク通信システムの例として車載ネットワークを示した。本発明に係る技術は、車載ネットワークでの利用に限定されるものではなく、ロボット、産業機器等のネットワークその他、車載ネットワーク以外のＣＡＮプロトコルに従って通信するネットワーク通信システムに利用しても良い。また、ＣＡＮプロトコルは、オートメーションシステム内の組み込みシステム等に用いられるＣＡＮＯｐｅｎ、或いは、ＴＴＣＡＮ（Time-Triggered CAN)、ＣＡＮＦＤ（CAN with Flexible Data Rate）等の派生的なプロトコルも包含する広義の意味のものと扱われるべきである。また、車載ネットワークシステム１０においては、ＣＡＮプロトコル以外の通信プロトコル、例えば、Ｅｔｈｅｒｎｅｔ（登録商標）や、ＭＯＳＴ（登録商標）、ＦｌｅｘＲａｙ（登録商標）等を用いても良い。
【０１４０】
（１０）上記実施の形態で示した各種処理の手順（例えば図１０、図１１、図１４、図１７に示した所定手順等）の実行順序は、必ずしも、上述した通りの順序に制限されるものではなく、発明の要旨を逸脱しない範囲で、実行順序を入れ替えたり、複数の手順を並列に行ったり、その手順の一部を省略したりすることができる。
【０１４１】
（１１）上記実施の形態におけるゲートウェイその他のＥＣＵは、例えば、プロセッサ、メモリ等のデジタル回路、アナログ回路、通信回路等を含む装置であることとしたが、ハードディスク装置、ディスプレイ、キーボード、マウス等の他のハードウェア構成要素を含んでいても良い。また、メモリに記憶された制御プログラムがプロセッサにより実行されてソフトウェア的に機能を実現する代わりに、専用のハードウェア（デジタル回路等）によりその機能を実現することとしても良い。
【０１４２】
（１２）上記実施の形態における各装置を構成する構成要素の一部又は全部は、１個のシステムＬＳＩ（Large Scale Integration：大規模集積回路）から構成されているとしても良い。システムＬＳＩは、複数の構成部を１個のチップ上に集積して製造された超多機能ＬＳＩであり、具体的には、マイクロプロセッサ、ＲＯＭ、ＲＡＭ等を含んで構成されるコンピュータシステムである。前記ＲＡＭには、コンピュータプログラムが記録されている。前記マイクロプロセッサが、前記コンピュータプログラムに従って動作することにより、システムＬＳＩは、その機能を達成する。また、上記各装置を構成する構成要素の各部は、個別に１チップ化されていても良いし、一部又は全部を含むように１チップ化されても良い。また、ここでは、システムＬＳＩとしたが、集積度の違いにより、ＩＣ、ＬＳＩ、スーパーＬＳＩ、ウルトラＬＳＩと呼称されることもある。また、集積回路化の手法はＬＳＩに限るものではなく、専用回路又は汎用プロセッサで実現しても良い。ＬＳＩ製造後に、プログラムすることが可能なＦＰＧＡ（Field Programmable Gate Array）や、ＬＳＩ内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサを利用しても良い。さらには、半導体技術の進歩又は派生する別技術によりＬＳＩに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積化を行っても良い。バイオ技術の適用等が可能性としてあり得る。
【０１４３】
（１３）上記各装置を構成する構成要素の一部又は全部は、各装置に脱着可能なＩＣカード又は単体のモジュールから構成されているとしても良い。前記ＩＣカード又は前記モジュールは、マイクロプロセッサ、ＲＯＭ、ＲＡＭ等から構成されるコンピュータシステムである。前記ＩＣカード又は前記モジュールは、上記の超多機能ＬＳＩを含むとしても良い。マイクロプロセッサが、コンピュータプログラムに従って動作することにより、前記ＩＣカード又は前記モジュールは、その機能を達成する。このＩＣカード又はこのモジュールは、耐タンパ性を有するとしても良い。
【０１４４】
（１４）本発明の一態様としては、例えば図１０、図１４、図１７等に示す処理手順の全部又は一部を含む攻撃検知方法であるとしても良い。例えば、攻撃検知方法は、１つ又は複数のバスを介して複数のＥＣＵがフレームの授受を行う車載ネットワークシステム１０において用いられ、受信ステップと更新ステップと検査ステップとを含む。受信ステップでは、バスからフレームを受信し、更新ステップでは、受信ステップで受信されたフレームに関連する予め定められた条件が成立した場合に、フレームについての検査内容を規定する検査パラメータを更新し、検査ステップでは、更新ステップで更新された検査パラメータに基づいて、受信ステップで受信されたフレームが攻撃フレームか否かの判定に係る検査を行う。また、この攻撃検知方法に係る所定処理（攻撃検知処理）をコンピュータにより実現するコンピュータプログラム（制御プログラム）であるとしても良いし、前記コンピュータプログラムからなるデジタル信号であるとしても良い。例えば、制御プログラムは、受信ステップ（例えばステップＳ１００１）と更新ステップ（例えばステップＳ１００２〜Ｓ１００５）と検査ステップ（例えばステップＳ１００６、Ｓ１００７）とを含む攻撃検知処理をプロセッサに実行させるためのものである。また、本発明の一態様としては、前記コンピュータプログラム又は前記デジタル信号をコンピュータで読み取り可能な記録媒体、例えば、フレキシブルディスク、ハードディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ、ＤＶＤ−ＲＯＭ、ＤＶＤ−ＲＡＭ、ＢＤ（Blu-ray（登録商標） Disc）、半導体メモリ等に記録したものとしても良い。また、これらの記録媒体に記録されている前記デジタル信号であるとしても良い。また、本発明の一態様としては、前記コンピュータプログラム又は前記デジタル信号を、電気通信回線、無線又は有線通信回線、インターネットを代表とするネットワーク、データ放送等を経由して伝送するものとしても良い。また、本発明の一態様としては、マイクロプロセッサとメモリを備えたコンピュータシステムであって、前記メモリは、上記コンピュータプログラムを記録しており、前記マイクロプロセッサは、前記コンピュータプログラムに従って動作するとしても良い。また、前記プログラム若しくは前記デジタル信号を前記記録媒体に記録して移送することにより、又は、前記プログラム若しくは前記デジタル信号を前記ネットワーク等を経由して移送することにより、独立した他のコンピュータシステムにより実施するとしても良い。
【０１４５】
（１５）上記実施の形態及び上記変形例で示した各構成要素及び機能を任意に組み合わせることで実現される形態も本発明の範囲に含まれる。
【産業上の利用可能性】
【０１４６】
本発明は、車載ネットワークにおいて攻撃フレームが送信されることを適切に検知するために利用可能である。
【符号の説明】
【０１４７】
１０  車載ネットワークシステム
１００ａ〜１００ｇ  電子制御ユニット（ＥＣＵ）
１０１  エンジン
１０２  ブレーキ
１０３  ドア開閉センサ
１０４  窓（ウィンドウ）開閉センサ
１１０  フレーム送受信部
１２０  フレーム解釈部
１３０  受信ＩＤ判断部
１４０  受信ＩＤリスト保持部
１５０  フレーム処理部
１７０  データ取得部
１７１  送信データ取得部
１８０  フレーム生成部
２００ａ、２００ｂ  バス
３００、３００ａ、３００ｂ  ゲートウェイ
３１０  フレーム送受信部
３２０  フレーム解釈部
３３０  受信ＩＤ判断部
３４０  受信ＩＤリスト保持部
３５０  フレーム処理部
３６０  転送ルール保持部
３７０、３７０ａ〜３７０ｅ  不正検知処理機能群
３７１  入力部
３７２  チェック部
３７２ａ  ＩＤ関連不正検知処理部
３７２ｂ  周期異常検知部
３７２ｃ  第一フィルタリング部
３７２ｄ  ＩＤフィールド関連フィルタリング部
３７３  チェックパラメータ保持部
３７３ａ  検知パラメータ保持部
３７３ｂ  周期情報保持部
３７４、４２０  更新部
３７５  検査パラメータ保持部
３７５ａ〜３７５ｄ  フィルタパラメータ保持部
３７６  検査部（フィルタリング部）
３７６ａ、３７６ｂ、３７６ｄ  フィルタリング部
３７６ｃ  第二フィルタリング部
３７７  フィルタ制御部
３８０  フレーム生成部
４１０  受信部
４３０  保持部
４４０  検査部
４５０  処理部
【図１】
2017085663.tif 000003
【図２】
2017085663.tif 000004
【図３】
2017085663.tif 000005
【図４】
2017085663.tif 000006
【図５】
2017085663.tif 000007
【図６】
2017085663.tif 000008
【図７】
2017085663.tif 000009
【図８】
2017085663.tif 000010
【図９】
2017085663.tif 000011
【図１０】
2017085663.tif 000012
【図１１】
2017085663.tif 000013
【図１２】
2017085663.tif 000014
【図１３】
2017085663.tif 000015
【図１４】
2017085663.tif 000016
【図１５】
2017085663.tif 000017
【図１６】
2017085663.tif 000018
【図１７】
2017085663.tif 000019
【図１８】
2017085663.tif 000020
【図１９】
2017085663.tif 000021
【図２０】
2017085663.tif 000022
【図２１】
2017085663.tif 000023
【図２２】
2017085663.tif 000024
【図２３】
2017085663.tif 000025