【文献】
氏家 良浩 他、車載ネットワークにおけるCANフィルタの提案、2015年 暗号と情報セキュリティシンポジウム SCIS2015予稿集、日本、2015.01.22発行、Vol.32,No.3C2−2、PP.1−7
【文献】
大塚 敏史 他、既存ECUを変更不要な車載LAN向け侵入検知手法、情報処理学会研究報告 研究報告 組込みシステム(EMB)、日本、2013.04.15発行、Vol2013−EMB−28,No.6,PP.1−5
(58)【調査した分野】(Int.Cl.,DB名)
1つ又は複数のバスを介してCAN(Controller Area Network)プロトコルに従ってフレームの授受を行う複数の電子制御ユニットと接続されるセキュリティ装置であって、
前記フレームは、IDを格納するIDフィールド、DLC(Data Length Code)及びデータフィールドを含むデータフレームであり、
1つの前記バスからフレームを受信する受信部と、
フレームについての検査内容として、前記データフィールドに格納されたデータの値の検査に係るデータ検査パラメータを保持する保持部と、
前記受信部により受信されたフレームに関し、前記IDが同値の2つのフレームが送信される時間間隔である送信周期について判定を行うチェック部と、
前記チェック部において、前記IDが同値の2つのフレームの受信間隔が所定の許容範囲から外れる場合に、前記受信部により受信されたフレームの条件が成立したと判定して前記保持部が保持する前記データ検査パラメータを更新する更新部と、
前記保持部が保持する前記データ検査パラメータに基づいて、前記受信部により受信されたフレームが攻撃フレームか否かの判定に係る検査を行う検査部とを備え、
前記更新部は、前記受信部により受信された第1フレームに関連し、前記チェック部において前記IDが同値の2つのフレームの受信間隔が所定の許容範囲から外れると判定された場合に、前記データ検査パラメータを第1検査パラメータに更新し、
前記検査部は、更新された前記第1検査パラメータに基づいて、前記第1フレームが攻撃フレームか否かの判定に係る前記検査を行う
セキュリティ装置。
1つ又は複数のバスを介してCAN(Controller Area Network)プロトコルに従ってフレームの授受を行う複数の電子制御ユニットと接続されるセキュリティ装置であって、
前記フレームは、IDを格納するIDフィールド、DLC(Data Length Code)及びデータフィールドを含むデータフレームであり、
1つの前記バスからフレームを受信する受信部と、
フレームについての検査内容として、前記IDが同値の2つのフレームが送信される時間間隔である送信周期の検査に係る送信周期検査パラメータを保持する保持部と、
前記受信部により受信されたフレームに関し、前記IDが同値の1つ以上のフレームが所定の単位時間内に送信される頻度である送信頻度が所定の許容範囲の上限を超えるか否かを判定するチェック部と、
前記チェック部において、前記IDが同値の1つ以上のフレームが所定の単位時間内に送信される頻度である送信頻度が所定の許容範囲の上限を超える場合に、前記受信部により受信されたフレームの条件が成立したと判定して前記保持部が保持する前記送信周期検査パラメータを更新する更新部と、
前記保持部が保持する前記送信周期検査パラメータに基づいて、前記受信部により受信されたフレームが攻撃フレームか否かの判定に係る検査を行う検査部とを備え、
前記更新部は、前記受信部により受信された第1フレームに関連し、前記IDが同値の1つ以上のフレームが所定の単位時間内に送信される頻度である送信頻度が所定の許容範囲の上限を超えると判定された場合に、前記送信周期検査パラメータを第1検査パラメータに更新し、
前記検査部は、更新された前記第1検査パラメータに基づいて、前記第1フレームが攻撃フレームか否かの判定に係る前記検査を行う
セキュリティ装置。
前記セキュリティ装置は更に、1つ以上の前記電子制御ユニットに対する攻撃フレームの影響を抑制するように前記検査部による検査結果に応じた処理を行う処理部を備える
請求項2〜5のいずれか一項に記載のセキュリティ装置。
1つ又は複数のバスを介して複数の電子制御ユニットがCAN(Controller Area Network)プロトコルに従ってフレームの授受を行う車載ネットワークシステムにおいて用いられる攻撃検知方法であって、
前記フレームは、IDを格納するIDフィールド、DLC(Data Length Code)及びデータフィールドを含むデータフレームであり、
前記バスからフレームを受信する受信ステップと、
前記受信ステップで受信されたフレームに関し、前記IDが同値の2つのフレームが送信される時間間隔である送信周期について判定を行うチェックステップと、
前記チェックステップにおいて、前記IDが同値の2つのフレームの受信間隔が所定の許容範囲から外れる場合に、フレームについての検査内容を規定する、前記データフィールドに格納されたデータの値の検査に係るデータ検査パラメータを、更新する更新ステップと、
前記更新ステップで更新された前記データ検査パラメータに基づいて、前記受信ステップで受信されたフレームが攻撃フレームか否かの判定に係る検査を行う検査ステップとを含み、
前記更新ステップは、前記受信ステップにより受信された第1フレームに関連し、前記チェックステップにおいて前記IDが同値の2つのフレームの受信間隔が所定の許容範囲から外れると判定された場合に、前記データ検査パラメータを第1検査パラメータに更新し、
前記検査ステップは、更新された前記第1検査パラメータに基づいて、前記第1フレームが攻撃フレームか否かの判定に係る前記検査を行う
攻撃検知方法。
1つ又は複数のバスを介して複数の電子制御ユニットがCAN(Controller Area Network)プロトコルに従ってフレームの授受を行う車載ネットワークシステムにおいて用い
られる攻撃検知方法であって、
前記フレームは、IDを格納するIDフィールド、DLC(Data Length Code)及びデータフィールドを含むデータフレームであり、
前記バスからフレームを受信する受信ステップと、
前記受信ステップで受信されたフレームに関し、前記IDが同値の1つ以上のフレームが所定の単位時間内に送信される頻度である送信頻度が所定の許容範囲の上限を超えるか否かを判定するチェックステップと、
前記チェックステップにおいて、前記IDが同値の1つ以上のフレームが所定の単位時間内に送信される頻度である送信頻度が所定の許容範囲の上限を超える場合に、フレームについての検査内容を規定する、前記IDが同値の2つのフレームが送信される時間間隔である送信周期の検査に係る送信周期検査パラメータを、更新する更新ステップと、
前記更新ステップで更新された前記送信周期検査パラメータに基づいて、前記受信ステップで受信されたフレームが攻撃フレームか否かの判定に係る検査を行う検査ステップとを含み、
前記更新ステップは、前記受信ステップにより受信された第1フレームに関連し、前記IDが同値の1つ以上のフレームが所定の単位時間内に送信される頻度である送信頻度が所定の許容範囲の上限を超えると判定された場合に、前記送信周期検査パラメータを第1検査パラメータに更新し、
前記検査ステップは、更新された前記第1検査パラメータに基づいて、前記第1フレームが攻撃フレームか否かの判定に係る前記検査を行う
攻撃検知方法。
1つ又は複数のバスを介してCAN(Controller Area Network)プロトコルに従ってフレームの授受を行う複数の電子制御ユニットと接続される、マイクロプロセッサを含むセキュリティ装置に所定処理を実行させるためのプログラムであって、
前記フレームは、IDを格納するIDフィールド、DLC(Data Length Code)及びデータフィールドを含むデータフレームであり、
前記所定処理は、
1つの前記バスからフレームを受信する受信ステップと、
前記受信ステップで受信されたフレームに関し、前記IDが同値の2つのフレームが送信される時間間隔である送信周期について判定を行うチェックステップと、
前記チェックステップにおいて、前記IDが同値の2つのフレームの受信間隔が所定の許容範囲から外れる場合に、フレームについての検査内容を規定する、前記データフィールドに格納されたデータの値の検査に係るデータ検査パラメータを、更新する更新ステップと、
前記更新ステップで更新された前記データ検査パラメータに基づいて、前記受信ステップで受信されたフレームが攻撃フレームか否かの判定に係る検査を行う検査ステップとを含み、
前記更新ステップは、前記受信ステップにより受信された第1フレームに関連し、前記チェックステップにおいて前記IDが同値の2つのフレームの受信間隔が所定の許容範囲から外れると判定された場合に、前記データ検査パラメータを第1検査パラメータに更新し、
前記検査ステップは、更新された前記第1検査パラメータに基づいて、前記第1フレームが攻撃フレームか否かの判定に係る前記検査を行う
プログラム。
1つ又は複数のバスを介してCAN(Controller Area Network)プロトコルに従ってフレームの授受を行う複数の電子制御ユニットと接続される、マイクロプロセッサを含むセキュリティ装置に所定処理を実行させるためのプログラムであって、
前記フレームは、IDを格納するIDフィールド、DLC(Data Length Code)及びデータフィールドを含むデータフレームであり、
前記所定処理は、
1つの前記バスからフレームを受信する受信ステップと、
前記受信ステップで受信されたフレームに関し、前記IDが同値の1つ以上のフレームが所定の単位時間内に送信される頻度である送信頻度が所定の許容範囲の上限を超えるか否かを判定するチェックステップと、
前記チェックステップにおいて、前記IDが同値の1つ以上のフレームが所定の単位時間内に送信される頻度である送信頻度が所定の許容範囲の上限を超える場合に、フレームについての検査内容を規定する、前記IDが同値の2つのフレームが送信される時間間隔である送信周期の検査に係る送信周期検査パラメータを、更新する更新ステップと、
前記更新ステップで更新された前記送信周期検査パラメータに基づいて、前記受信ステップで受信されたフレームが攻撃フレームか否かの判定に係る検査を行う検査ステップとを含み、
前記更新ステップは、前記受信ステップにより受信された第1フレームに関連し、前記IDが同値の1つ以上のフレームが所定の単位時間内に送信される頻度である送信頻度が所定の許容範囲の上限を超えると判定された場合に、前記送信周期検査パラメータを第1検査パラメータに更新し、
前記検査ステップは、更新された前記第1検査パラメータに基づいて、前記第1フレームが攻撃フレームか否かの判定に係る前記検査を行う
プログラム。
【発明を実施するための形態】
【0015】
本発明の一態様に係るセキュリティ装置は、1つ又は複数のバスに接続されたセキュリティ装置であって、1つの前記バスからフレームを受信する受信部と、フレームについての検査内容を規定する検査パラメータを保持する保持部と、前記受信部により受信されたフレームに関連する予め定められた条件が成立した場合に前記保持部が保持する前記検査パラメータを更新する更新部と、前記保持部が保持する検査パラメータに基づいて、前記受信部により受信されたフレームが攻撃フレームか否かの判定に係る検査を行う検査部とを備えるセキュリティ装置である。これにより、攻撃フレームか否かの検査に用いる検査パラメータを、受信したフレームに応じて更新できるので、検査部により、多様で変化し得る攻撃に対して攻撃フレームを適切に検知し得る。
【0016】
また、例えば、前記セキュリティ装置は、車両に搭載され、前記車両は、前記1つ又は複数のバスを介してCAN(Controller Area Network)プロトコルに従ってフレームの授受を行う複数の電子制御ユニットを搭載することとしても良い。これにより、電子制御ユニット(ECU)間でフレームの授受を行うためのCANに従う車載ネットワークにおいて攻撃フレームが送信された場合にこの攻撃フレームを適切に検知し得るようになる。
【0017】
また、例えば、前記セキュリティ装置は更に、1つ以上の前記電子制御ユニットに対する攻撃フレームの影響を抑制するように前記検査部による検査結果に応じた処理を行う処理部を備えることとしても良い。これにより、攻撃フレームに対する防御(攻撃フレームのECUへの影響の抑制)が可能となる。
【0018】
また、例えば、前記保持部は、相互に異なる、フレームについての検査内容を規定する複数の検査パラメータを保持し、前記更新部は、前記受信部により受信されたフレームについて複数の予め定められた条件それぞれが成立するか否かの判定を行う、条件毎に対応したチェック機能を有し、当該各チェック機能での判定結果に応じて、前記保持部が保持する前記複数の検査パラメータのうち更新対象とすべき検査パラメータを決定して更新することとしても良い。これにより、受信されたフレームが攻撃フレームか否かを判定するために用いられる各種の検査パラメータが、個々の条件のチェック結果に応じて動的に更新され得るので、攻撃フレームの適切な検知が可能となり得る。
【0019】
また、例えば、前記フレームは、IDを格納するIDフィールド、DLC(Data Length Code)及びデータフィールドを含むデータフレームであり、前記更新部が有する複数のチェック機能の一部は、前記IDの値について前記判定を行うIDチェック機能と、前記DLCの値について前記判定を行うDLCチェック機能と、前記IDが同値の2つのフレームが送信される時間間隔である送信周期について前記判定を行う送信周期チェック機能と、前記IDが同値の1つ以上のフレームが所定の単位時間内に送信される頻度である送信頻度について前記判定を行う送信頻度チェック機能と、前記データフィールドに格納されたデータの値について前記判定を行うデータチェック機能とのうちの1つ以上であり、前記保持部が保持する前記複数の検査パラメータは、前記IDの値の検査に係るID検査パラメータと、前記DLCの値の検査に係るDLC検査パラメータと、前記送信周期の検査に係る送信周期検査パラメータと、前記送信頻度の検査に係る送信頻度検査パラメータと、前記データフィールドに格納されたデータの値の検査に係るデータ検査パラメータとのうちの1つ以上を含み、前記検査部は、前記保持部が保持する前記複数の検査パラメータのそれぞれに基づいて前記検査を行うこととしても良い。これにより、攻撃フレームの検知のための個々の検査を、フレームの各フィールドの内容或いはフレームの送信周期、頻度等に基づいて行い得るし、その個々の検査に用いられる閾値等の検査パラメータの更新を、フレームの各フィールドの内容或いはフレームの送信周期、頻度等に基づいて行い得る。
【0020】
また、例えば、前記更新部が有する複数のチェック機能の1つ以上において、前記受信部により受信されたフレームの前記IDフィールドに格納された前記IDを参照して前記判定を行うこととしても良い。これにより、検査パラメータの更新を、ID(メッセージID)に基づく判定結果に応じて行い得る。
【0021】
また、例えば、前記更新部が有する複数のチェック機能の1つは、前記送信周期チェック機能であり、前記送信周期チェック機能では、前記IDが同値の2つのフレームの受信間隔が所定の許容範囲から外れる場合に当該送信周期チェック機能に対応する前記条件が成立したと判定し、前記更新部は、前記送信周期チェック機能で前記条件が成立したと判定した場合に前記複数の検査パラメータのいずれかを更新することとしても良い。これにより、検査パラメータの更新が、フレームの送信周期に基づく判定結果に応じて行われるので、例えば送信周期を乱すように作用する攻撃フレームが送信された場合等において、送信周期が異常であることに基づいて検査パラメータを攻撃フレームの検知に有用となるように更新することで、適切に攻撃フレームを検知できる可能性がある。
【0022】
また、例えば、前記保持部が保持する前記複数の検査パラメータは、前記送信頻度検査パラメータを含み、前記送信頻度検査パラメータは、前記送信頻度の許容範囲の上限を示す閾値を含み、前記検査部は、前記受信部により受信されたフレームに係る前記送信頻度が前記送信頻度検査パラメータにおける前記閾値を超えた場合に当該フレームを攻撃フレームと判定し、前記更新部は、前記送信周期チェック機能で前記条件が成立したと判定した場合に、前記送信頻度検査パラメータにおける前記閾値を更新することとしても良い。これにより、送信頻度に関する送信頻度検査パラメータの更新が、フレームの送信周期に基づく判定結果に応じて行われるので、例えば送信周期を乱すように作用する攻撃フレームが送信された場合等において、送信周期が異常であることに基づいて送信頻度検査パラメータを攻撃フレームの検知に有用となるように更新すること(例えば送信頻度検査パラメータが示す上限値を下げること等)で、適切に攻撃フレームを検知できる可能性がある。
【0023】
また、例えば、前記保持部が保持する前記複数の検査パラメータは、前記データ検査パラメータを含み、前記データ検査パラメータは、前記データフィールドに格納された前記データの変化の許容範囲の上限を示す閾値を含み、前記検査部は、前記受信部により受信されたフレームに係る前記データフィールドに格納された前記データの変化が前記データ検査パラメータにおける前記閾値を超えた場合に当該フレームを攻撃フレームと判定し、前記更新部は、前記送信周期チェック機能で前記条件が成立したと判定した場合に、前記データ検査パラメータにおける前記閾値を、より小さい値へと更新することとしても良い。これにより、データの変化の許容範囲の上限に関するデータ検査パラメータの更新が、フレームの送信周期に基づく判定結果に応じて行われるので、例えば送信周期の異常が検知されたことに基づいてデータ検査パラメータでのデータの変化の許容範囲の上限を小さく変更することで、適切に攻撃フレームを検知できる可能性がある。
【0024】
また、例えば、前記更新部が有する複数のチェック機能の1つは、前記送信頻度チェック機能であり、前記送信頻度チェック機能では、前記送信頻度が所定の許容範囲の上限を超える場合に当該送信頻度チェック機能に対応する前記条件が成立したと判定し、前記保持部が保持する前記複数の検査パラメータは、前記送信周期検査パラメータを含み、前記送信周期検査パラメータは、前記送信周期の許容範囲を示す閾値を含み、前記更新部は、前記送信頻度チェック機能で前記条件が成立したと判定した場合に、前記送信周期検査パラメータにおける前記閾値を更新することとしても良い。これにより、送信周期の許容範囲に関する送信周期検査パラメータの更新が、フレームの送信頻度に基づく判定結果に応じて行われるので、例えば、送信頻度の異常が検知されたことに基づいて送信周期検査パラメータでの送信周期の許容範囲を狭く変更すること等により、適切に攻撃フレームを検知できる可能性がある。
【0025】
また、例えば、前記更新部が有する複数のチェック機能の1つは、前記送信頻度チェック機能であり、前記送信頻度チェック機能では、前記送信頻度が所定の許容範囲の上限を超える場合に当該送信頻度チェック機能に対応する前記条件が成立したと判定し、前記保持部が保持する前記複数の検査パラメータそれぞれは、前記DLC検査パラメータと、前記送信周期検査パラメータと、前記データ検査パラメータとのうちのいずれかであり、前記DLC検査パラメータは、前記DLCの値の許容範囲を示す閾値を含み、前記送信周期検査パラメータは、前記送信周期の許容範囲を示す閾値を含み、前記データ検査パラメータは、前記データの値の許容範囲を示す閾値を含み、前記更新部は、一のフレームに関連して前記送信頻度チェック機能で前記条件が成立したと判定した場合に、当該一のフレームのIDと同一のIDを有するフレームの検査内容として用いられる前記複数の検査パラメータにおける前記閾値を、該当の許容範囲をより狭くするように更新することとしても良い。DLCの値の許容範囲を示す閾値は、例えばDLCの値の上限及び下限を示す閾値であり、送信周期の許容範囲を示す閾値は、例えば許容範囲の上限及び下限を示す閾値であり、データの値の許容範囲を示す閾値は、例えばデータの値の上限及び下限を示す閾値である。これにより、フレームの送信頻度の異常が検知されたことに基づいて各種の検査パラメータで正常なフレームとしての許容範囲を示す閾値を、許容範囲を狭くするように更新する。従って、攻撃フレームが送信された可能性(送信頻度でのチェック結果)に応じて効率的に攻撃フレームか否かの検査を行うことが可能となり得る。
【0026】
また、例えば、前記検査部は、前記受信部によりフレームの前記IDフィールドが受信された後であって前記データフィールドに後続する部分が受信される前に前記検査を行うこととしても良い。これにより、メッセージIDに基づく判定が可能なタイミングであって、エラーフレームの送信によって攻撃フレームに対する防御(無力化)が可能なタイミングで、検査がなされ得る。このため、攻撃に対する適切な防御が可能となり得る。
【0027】
また、例えば、前記セキュリティ装置は更に、前記更新部が有する複数のチェック機能それぞれについて当該チェック機能での判定結果が得られたタイミングで、前記複数の検査パラメータのいずれかが当該判定結果に応じて更新されるべきか否かを確認し、更新されるべきであれば該当の検査パラメータを更新するように前記更新部を制御し、前記複数の検査パラメータそれぞれの更新状況に応じて、当該各検査パラメータに基づく検査を行うように前記検査部を制御する制御部を備えることとしても良い。これにより、受信されたフレームが攻撃フレームか否かに係る検査が適切なタイミングでなされるようになり得る。このため、攻撃フレームに対する防御を適切なタイミングで行うことが可能となり得る。
【0028】
また、例えば、前記更新部は更に、前記受信部により受信されたフレームに関連する予め定められた前記条件が成立した場合に、当該フレームを攻撃フレームであると判定し、前記処理部は更に、1つ以上の前記電子制御ユニットに対する攻撃フレームの影響を抑制するように前記更新部により攻撃フレームと判定されたフレームに対する処理を行うこととしても良い。これにより、検査パラメータの更新用の条件判定(チェック機能)を担う更新部において、攻撃フレームか否かの判定を行うことができる。このため、更新部で攻撃フレームであると判定した場合には検査部での検査を行う必要がなくなり、攻撃フレームの迅速な判定が可能となり得る。
【0029】
また、本発明の一態様に係る攻撃検知方法は、1つ又は複数のバスを介して複数の電子制御ユニットがフレームの授受を行う車載ネットワークシステムにおいて用いられる攻撃検知方法であって、前記バスからフレームを受信する受信ステップと、前記受信ステップで受信されたフレームに関連する予め定められた条件が成立した場合に、フレームについての検査内容を規定する検査パラメータを更新する更新ステップと、前記更新ステップで更新された検査パラメータに基づいて、前記受信ステップで受信されたフレームが攻撃フレームか否かの判定に係る検査を行う検査ステップとを含む攻撃検知方法である。これにより、攻撃フレームか否かの検査に用いる検査パラメータを、受信したフレームに応じて更新するので、検査ステップで、多様で変化し得る攻撃に対して攻撃フレームを適切に検知し得る。
【0030】
また、本発明の一態様に係るプログラムは、1つ又は複数のバスに接続された、マイクロプロセッサを含むセキュリティ装置に所定処理を実行させるためのプログラムであって、前記所定処理は、1つの前記バスからフレームを受信する受信ステップと、前記受信ステップで受信されたフレームに関連する予め定められた条件が成立した場合に、フレームについての検査内容を規定する検査パラメータを更新する更新ステップと、前記更新ステップで更新された検査パラメータに基づいて、前記受信ステップで受信されたフレームが攻撃フレームか否かの判定に係る検査を行う検査ステップとを含むプログラムである。このプログラムがプロセッサを有する装置にインストールされ実行されることで、その装置はセキュリティ装置として機能し得る。このセキュリティ装置は、多様で変化し得る攻撃に対して攻撃フレームを適切に検知し得る。
【0031】
なお、これらの全般的又は具体的な態様は、システム、方法、集積回路、コンピュータプログラム又はコンピュータで読み取り可能なCD−ROM等の記録媒体で実現されても良く、システム、方法、集積回路、コンピュータプログラム又は記録媒体の任意な組み合わせで実現されても良い。
【0032】
以下、実施の形態に係るセキュリティ装置を含む車載ネットワークシステムについて、図面を参照しながら説明する。ここで示す実施の形態は、いずれも本発明の一具体例を示すものである。従って、以下の実施の形態で示される数値、構成要素、構成要素の配置及び接続形態、並びに、ステップ(工程)及びステップの順序等は、一例であって本発明を限定するものではない。以下の実施の形態における構成要素のうち、独立請求項に記載されていない構成要素については、任意に付加可能な構成要素である。また、各図は、模式図であり、必ずしも厳密に図示されたものではない。
【0033】
(実施の形態1)
以下、複数の電子制御ユニット(ECU)がバスを介して通信する車載ネットワークシステムにおいて用いられる攻撃検知方法について、及び、車載ネットワークシステムに備えられたセキュリティ装置について説明する。
【0034】
攻撃検知方法は、車両に搭載された各ECU間での通信に用いられるバスで不正なフレームである攻撃フレームが送信された際に検知するための方法である。車載ネットワークシステムにおけるセキュリティ装置(車載セキュリティ装置)は、攻撃検知方法に関連した攻撃検知機能(攻撃フレームを検知する機能)を少なくとも有する装置である。セキュリティ装置は、攻撃フレームの各ECUへの影響を抑制する防御の機能を有し得るが、攻撃検知機能はその防御の前提となる機能である。なお、セキュリティ装置が攻撃検知結果を他の装置に伝達した場合には他の装置が防御機能を実行し得るようになる。
【0035】
[1.1 車載ネットワークシステム10の全体構成]
図1は、実施の形態1に係る車載ネットワークシステム10の全体構成を示す図である。
【0036】
車載ネットワークシステム10は、CANプロトコルに従って通信するネットワーク通信システムの一例であり、制御装置、センサ、アクチュエータ、ユーザインタフェース装置等の各種機器が搭載された車両におけるネットワーク通信システムである。車載ネットワークシステム10は、バスを介してフレームに係る通信を行う複数の装置を備え、攻撃検知方法を用いる。具体的には
図1に示すように車載ネットワークシステム10は、車両に搭載され各種機器に接続されたECU100a〜100dと、バス200a、200bと、ゲートウェイ300とを含んで構成される。なお、車載ネットワークシステム10には、ゲートウェイ300、ECU100a〜100d以外にもいくつものECUが含まれ得るが、ここでは、便宜上ゲートウェイ300及びECU100a〜100dに注目して説明を行う。ECUは、例えば、プロセッサ(マイクロプロセッサ)、メモリ等のデジタル回路、アナログ回路、通信回路等を含む装置である。メモリは、ROM、RAM等であり、プロセッサにより実行される制御プログラム(ソフトウェアとしてのコンピュータプログラム)を記憶することができる。例えばプロセッサが、制御プログラム(コンピュータプログラム)に従って動作することにより、ECUは各種機能を実現することになる。なお、コンピュータプログラムは、所定の機能を達成するために、プロセッサに対する指令を示す命令コードが複数個組み合わされて構成されたものである。
【0037】
ECU100a〜100dは、それぞれエンジン101、ブレーキ102、ドア開閉センサ103、窓(ウィンドウ)開閉センサ104といった機器に接続されており、その機器の状態を取得し、周期的に状態を表すフレーム(データフレーム)を、バス200a、バス200b等で構成される車載ネットワークに送信している。
【0038】
ゲートウェイ300は、ECU100aとECU100bとが接続されたバス200a、及び、ECU100cとECU100dとが接続されたバス200bと接続されたゲートウェイ装置としての一種のECUである。ゲートウェイ300は一方のバスから受信したフレームを他方のバスに転送する転送機能を有する。また、ゲートウェイ300は、攻撃検知機能を有し、セキュリティ装置として働く。
【0039】
車載ネットワークシステム10における各ECUは、CANプロトコルに従ってフレームの授受を行う。CANプロトコルにおけるフレームには、データフレーム、リモートフレーム、オーバーロードフレーム及びエラーフレームがある。
【0040】
[1.2 データフレームフォーマット]
以下、CANプロトコルに従ったネットワークで用いられるフレームの1つであるデータフレームについて説明する。
【0041】
図2は、CANプロトコルで規定されるデータフレームのフォーマットを示す図である。同図には、CANプロトコルで規定される標準IDフォーマットにおけるデータフレームを示している。データフレームは、SOF(Start Of Frame)、IDフィールド、RTR(Remote Transmission Request)、IDE(Identifier Extension)、予約ビット「r」、DLC(Data Length Code)、データフィールド、CRC(Cyclic Redundancy Check)シーケンス、CRCデリミタ「DEL」、ACK(Acknowledgement)スロット、ACKデリミタ「DEL」、及び、EOF(End Of Frame)の各フィールドで構成される。
【0042】
SOFは、1bitのドミナントで構成される。バスがアイドルの状態はレセシブになっており、SOFによりドミナントへ変更することでフレームの送信開始を通知する。
【0043】
IDフィールドは、11bitで構成される、データの種類を示す値であるID(メッセージID)を格納するフィールドである。複数のノードが同時に送信を開始した場合、このIDフィールドで通信調停を行うために、IDが小さい値を持つフレームが高い優先度となるよう設計されている。
【0044】
RTRは、データフレームとリモートフレームとを識別するための値であり、データフレームにおいてはドミナント1bitで構成される。
【0045】
IDEと「r」とは、両方ドミナント1bitで構成される。
【0046】
DLCは、4bitで構成され、データフィールドの長さを示す値である。なお、IDE、「r」及びDLCを合わせてコントロールフィールドと称する。
【0047】
データフィールドは、最大64bitで構成される送信するデータの内容を示す値である。8bit毎に長さを調整できる。送られるデータの仕様については、CANプロトコルで規定されておらず、車載ネットワークシステム10において定められる。従って、車種、製造者(製造メーカ)等に依存した仕様となる。
【0048】
CRCシーケンスは、15bitで構成される。SOF、IDフィールド、コントロールフィールド及びデータフィールドの送信値より算出される。
【0049】
CRCデリミタは、1bitのレセシブで構成されるCRCシーケンスの終了を表す区切り記号である。なお、CRCシーケンス及びCRCデリミタを合わせてCRCフィールドと称する。
【0050】
ACKスロットは、1bitで構成される。送信ノードはACKスロットをレセシブにして送信を行う。受信ノードはCRCシーケンスまで正常に受信ができていればACKスロットをドミナントとして送信する。レセシブよりドミナントが優先されるため、送信後にACKスロットがドミナントであれば、送信ノードは、いずれかの受信ノードが受信に成功していることを確認できる。
【0051】
ACKデリミタは、1bitのレセシブで構成されるACKの終了を表す区切り記号である。
【0052】
EOFは、7bitのレセシブで構成されており、データフレームの終了を示す。
【0053】
[1.3 ゲートウェイ300の構成]
図3は、ゲートウェイ300の構成図である。ゲートウェイ300は、バス間でのフレーム転送の機能(転送機能)を実行し、攻撃検知機能を有するセキュリティ装置としても機能する。このためゲートウェイ300は、
図3に示すように、フレーム送受信部310と、フレーム解釈部320と、受信ID判断部330と、受信IDリスト保持部340と、フレーム処理部350と、転送ルール保持部360と、不正検知処理機能群370と、フレーム生成部380とを含んで構成される。これらの各構成要素は、ゲートウェイ300における通信回路、メモリに格納された制御プログラムを実行するプロセッサ或いはデジタル回路等により実現される。
【0054】
フレーム送受信部310は、バス200a及びバス200bのそれぞれに対して、CANプロトコルに従ったフレームを送受信する。バス200a又はバス200bからフレームを1bitずつ受信し、フレーム解釈部320に転送する。また、フレーム送受信部310は、フレーム生成部380より通知を受けた転送先のバスを示すバス情報及びフレームに基づいて、そのフレームの内容をバス200a又はバス200bに1bitずつ送信する。
【0055】
フレーム解釈部320は、フレーム送受信部310よりフレームの値を受け取り、CANプロトコルで規定されているフレームフォーマットにおける各フィールドにマッピングするよう解釈を行う。フレーム解釈部320は、IDフィールドと判断した値は受信ID判断部330へ転送する。フレーム解釈部320は、受信ID判断部330から通知される判定結果に応じて、IDフィールドの値と、IDフィールド以降に現れるデータフィールド(データ)とを、フレーム処理部350へ転送するか、フレームの受信を中止するかを決定する。また、フレーム解釈部320は、CANプロトコルに則っていないフレームと判断した場合は、エラーフレームを送信するように、フレーム生成部380へ通知する。また、フレーム解釈部320は、エラーフレームを受信した場合には、受信中のフレームについてそれ以降はそのフレームを破棄する、つまりフレームの解釈を中止する。
【0056】
受信ID判断部330は、フレーム解釈部320から通知されるIDフィールドの値を受け取り、受信IDリスト保持部340が保持しているメッセージIDのリストに従い、そのIDフィールド以降のフレームの各フィールドを受信するかどうかの判定を行う。この判定結果を、受信ID判断部330は、フレーム解釈部320へ通知する。
【0057】
受信IDリスト保持部340は、ゲートウェイ300が受信するID(メッセージID)のリストである受信IDリストを保持する。受信IDリストの例については後述する(
図4)。
【0058】
フレーム処理部350は、転送ルール保持部360が保持する転送ルールに従って、受信したフレームのIDに応じて、転送するバスを決定し、転送するバスのバス情報と、フレーム解釈部320より通知されたメッセージIDと、データとをフレームの転送のためにフレーム生成部380へ通知する。また、フレーム処理部350は、フレーム解釈部320より通知されたフレーム(メッセージ)を不正検知処理機能群370へ通知することで、攻撃検知(つまり攻撃フレームであるか否かの判定)を不正検知処理機能群370に依頼する。フレーム処理部350は、不正検知処理機能群370により攻撃フレームと判定されたフレームについてはフレームの転送のための処理を抑止する。つまり、フレーム処理部350は、攻撃フレームに対する防御の一方法として転送を抑止するためのフィルタリングを行い、攻撃フレーム以外のフレームについては転送ルールに従って転送を行う。
【0059】
転送ルール保持部360は、バス毎のフレームの転送についてのルールを表す情報である転送ルールを保持する。転送ルールの例については後述する(
図5)。
【0060】
不正検知処理機能群370は、受信中のフレームが不正なフレームである攻撃フレームか否かを判定する攻撃検知機能を実現するための機能群である。不正検知処理機能群370の構成要素については後述する。
【0061】
フレーム生成部380は、フレーム解釈部320から通知されたエラーフレームの送信の要求に従い、エラーフレームを、フレーム送受信部310へ通知して送信させる。また、フレーム生成部380は、フレーム処理部350から通知されたメッセージIDと、データとを用いてフレームを構成し、バス情報とともにフレーム送受信部310へ通知する。
【0062】
[1.4 受信IDリスト例]
図4は、ゲートウェイ300の受信IDリスト保持部340に保持される受信IDリストの一例を示す図である。
【0063】
図4に例示する受信IDリストは、ID(メッセージID)の値が「1」、「2」、「3」及び「4」のいずれかであるメッセージIDを含むフレームを選択的に受信して処理するために用いられる。これは一例に過ぎないが、受信IDリストには、ゲートウェイ300が受信すると定められているフレームのメッセージIDが列挙されている。
【0064】
[1.5 転送ルール例]
図5は、ゲートウェイ300の転送ルール保持部360が保持する転送ルールの一例を示す。
【0065】
この転送ルールは、転送元のバスと転送先のバスと転送対象のID(メッセージID)とを対応付けている。
図5中の「*」はメッセージIDにかかわらずフレームの転送がなされることを表している。
図5の例は、バス200aから受信するフレームはメッセージIDにかかわらず、バス200bに転送するように設定されていることを示している。また、バス200bから受信するフレームのうちメッセージIDが「3」であるフレームのみがバス200aに転送されるように設定されていることを示している。
【0066】
[1.6 不正検知処理機能群370の構成]
図6は、不正検知処理機能群370の構成図である。不正検知処理機能群370は、入力部371と、チェック部372と、チェックパラメータ保持部373と、更新部374と、検査パラメータ保持部375と、検査部(フィルタリング部)376とを含んで構成される。
【0067】
入力部371は、フレーム処理部350から攻撃検知の依頼を受け、チェック部372及び検査部(フィルタリング部)376のそれぞれへ、フレーム処理部350から通知されたフレーム(つまりゲートウェイ300がバスから受信したフレーム)の各フィールドの値を伝達することでフレームのチェック、検査(例えばフィルタリングに用いるための検査等)の指示を出す。
【0068】
チェック部372は、入力部371から伝達されたフレームの内容に基づいて、そのフレーム(ゲートウェイ300がバスから受信したフレーム)について予め定められた条件が成立するか否かの判定(例えば不正なフレームであるかどうかの判定)を行う機能を有する。チェック部372は、その判定に利用する閾値等のパラメータ(チェックパラメータと称する)を、チェックパラメータ保持部373から取得する。
【0069】
チェックパラメータ保持部373は、例えばメモリ等の記憶媒体の一領域で実現され、チェック部372が使用するチェックパラメータ(閾値等)を保持する。
【0070】
図7に、チェック部372及びチェックパラメータ保持部373の構成の一例を示す。
図7の例では、チェック部372は、フレームのIDフィールドのIDの値について予め定められた条件が成立するか否かを判定する機能(IDチェック機能)を担うIDチェック機能部と、フレームのDLCの値(データ長)について予め定められた条件が成立するか否かを判定する機能(DLCチェック機能)を担うDLCチェック機能部と、IDが同値の2つのフレームが送信される時間間隔である送信周期について予め定められた条件が成立するか否かを判定する機能(送信周期チェック機能)を担う送信周期チェック機能部と、IDが同値の1つ以上のフレームが所定の単位時間内に送信される頻度である送信頻度について予め定められた条件が成立するか否かを判定する機能(送信頻度チェック機能)を担う送信頻度チェック機能部とを有する。
図7のチェック部372内の各チェック機能部は、チェックパラメータ保持部373が保持する各チェック機能に対応するルール(チェックパラメータで特定される条件)を取得し、そのルールに従ってチェック処理を行う。チェックパラメータは、IDチェック機能に対応するIDチェックパラメータ、DLCチェック機能に対応するDLCチェックパラメータ、送信周期チェック機能に対応する送信周期チェックパラメータ、及び、送信頻度チェック機能に対応する送信頻度チェックパラメータを含んで構成される。また、
図7のチェック部372は、それぞれのチェック機能部におけるチェック結果(例えば予め定められた条件が成立するか否かの判定結果)を個別に出力し、また、それぞれのチェック機能部におけるチェック結果を判定部で総合的に判定した結果を出力する。例えば、判定部は、各チェック機能部におけるチェック結果(例えば条件成立又は不成立を示す判定結果)を用いた論理演算(論理積、論理和等の1つ又は組合せによる演算)の結果を出力する。
【0071】
チェック部372のIDチェック機能について、一例としては、チェックパラメータ保持部373のIDチェックパラメータとしてメッセージIDの値が1つ以上含まれており、入力部371からチェック部372に伝達されたIDフィールド内のメッセージIDが、IDチェックパラメータに含まれているいずれかのメッセージIDと同一であれば、チェック部372のIDチェック機能部は、予め定められた条件が成立すると判定する。また、逆に、チェック部372は、例えば、入力部371から伝達されたIDフィールド内のメッセージIDが、IDチェックパラメータに含まれているどのメッセージIDとも異なる場合に、予め定められた条件が成立しないと判定する。チェック部372のIDチェック機能部等により条件が成立したと判定された結果として、例えば、更新部374が、検査パラメータ保持部375に保持されている複数の検査パラメータのいずれかを更新する。
【0072】
チェック部372のDLCチェック機能について、一例としては、チェックパラメータ保持部373のDLCチェックパラメータとしてDLCの値が1つ含まれており、入力部371からチェック部372に伝達されたDLCの値が、DLCチェックパラメータに含まれているDLCの値と一致しなかった場合に、チェック部372のDLCチェック機能部は、予め定められた条件が成立すると判定する。また、逆に、チェック部372は、例えば、入力部371から伝達されたDLCの値が、DLCチェックパラメータに含まれているDLCの値と一致した場合に、予め定められた条件が成立しないと判定する。チェック部372のDLCチェック機能部等により条件が成立したと判定された結果として、例えば、更新部374が、検査パラメータ保持部375に保持されている複数の検査パラメータのいずれかを更新する。
【0073】
チェック部372の送信周期チェック機能について、一例としては、チェックパラメータ保持部373の送信周期チェックパラメータとして、一定の時間間隔(周期)の範囲(例えば90msecから110msec)が含まれており、入力部371からチェック部372に伝達されたフレームと、そのフレームのメッセージIDと同一のメッセージIDを有する1つ前に受信されたフレームとの受信時間間隔が、送信周期チェックパラメータに含まれている周期の範囲外になっている場合に、チェック部372の送信周期チェック機能部は、予め定められた条件が成立すると判定する。チェック部372の送信周期チェック機能部等により条件が成立したと判定された結果として、例えば、更新部374が、検査パラメータ保持部375に保持されている複数の検査パラメータのいずれかを更新する。
【0074】
チェック部372の送信頻度チェック機能について、一例としては、チェックパラメータ保持部373の送信頻度チェックパラメータとして、一定の頻度の上限値(閾値)が含まれており、入力部371からチェック部372に伝達されたフレームについて、そのフレームが送信された頻度(そのフレームを受信した頻度)が、送信頻度チェックパラメータに含まれている頻度の上限値としての例えば単位期間(例えば1秒)あたりの回数(例えば100回)を超えている場合に、チェック部372の送信頻度チェック機能部は、予め定められた条件が成立すると判定する。なお、送信頻度チェックパラメータは、頻度の下限値であっても良く、チェック部372は、単位期間においてその下限値より少ない回数しかフレームを受信しなかった場合に条件が成立したと判定しても良い。なお、送信頻度チェックパラメータは、頻度の範囲(上限値及び下限値)を示すものであっても良い。チェック部372の送信頻度チェック機能部等により条件が成立したと判定された結果として、例えば、更新部374が、検査パラメータ保持部375に保持されている複数の検査パラメータのいずれかを更新する。また、チェック部372は、送信頻度チェック機能における判定結果を単位期間毎に出力しても良く、この出力に対応して更新部374は、検査パラメータを更新し得る。
【0075】
また、チェック部372は更に、例えば、フレームのデータフィールドのデータの値について予め定められた条件が成立するか否かを判定する機能(データチェック機能)を担うデータチェック機能部を含んでも良い。データチェック機能は、例えば、データの値がチェックパラメータで指定された値であるか否かをチェックするデータ固定値チェック機能を含み得る。また、データチェック機能は、例えば、データの値がチェックパラメータで指定された範囲内の値であるか否かをチェックするデータ範囲チェック機能を含み得る。また、データチェック機能は、例えば、データの値がチェックパラメータで指定された値以上又は以下であるか否かをチェックするデータ下限チェック機能又はデータ上限チェック機能を含み得る。また、データチェック機能は、例えば、データの値がチェックパラメータで指定された所定演算の結果と比較して一致するか否か等をチェックするデータ演算結果チェック機能を含み得る。なお、データチェック機能のチェック対象とするデータは、データフィールドの全体であっても良いし、データフィールドの一部の1つ又は複数のビット(連続した複数のビット或いは連続しない複数のビット)のみであっても良い。
【0076】
また、上述の各チェック機能は、メッセージIDに関係なく適用されるものであっても良いし、特定のメッセージIDを持つフレームに対してのみ適用されるものであっても良い。なお、上述したチェック部372のチェック機能は、一例であり、これに限定されるものではなく、これ以外のチェック機能があっても良いし、上述した複数のチェック機能の一部だけを利用しても良い。
【0077】
更新部374は、チェック部372からの判定結果を受けて、その判定結果に応じて、例えば検査パラメータ保持部375内の複数の検査パラメータのうち更新対象とすべき検査パラメータ(閾値等)を決定して、その決定した検査パラメータを更新する。更新部374が更新する検査パラメータ、検査パラメータの更新の程度等は、予め定められた基準、アルゴリズム等に基づいて決定される。その基準、アルゴリズム等は、例えばゲートウェイ300の製造時等において定められる。
【0078】
検査パラメータ保持部375は、例えばメモリ等の記憶媒体の一領域で実現され、検査部376が使用する検査パラメータ(閾値等)を保持する。
【0079】
検査部376は、検査パラメータ保持部375が保持する検査パラメータに基づいて、入力部371により伝達されたフレーム(バスから受信されたフレーム)が攻撃フレームか否かの判定に係る検査を行う。検査部376による、攻撃フレームか否かの判定に係る検査は、フレームのフィルタリング等の防御機能の前提となるものであり、検査部376は、例えばフィルタリングのための検査を行うフィルタリング部として機能し得る。検査部376は、フレームが攻撃フレームか否かを判定するために用いる閾値等を規定する検査パラメータを検査パラメータ保持部375から取得する。この検査パラメータは、上述のように更新部374により必要に応じて更新される。
【0080】
図8に、検査部376及び検査パラメータ保持部375の構成の一例を示す。
図8の例では、検査部376は、フレームのIDフィールドのIDの値について検査パラメータで特定される条件が成立するか否かを判定する機能(ID検査機能)を担うID検査機能部と、フレームのDLCの値(データ長)について検査パラメータで特定される条件が成立するか否かを判定する機能(DLC検査機能)を担うDLC検査機能部と、IDが同値の2つのフレームが送信される時間間隔である送信周期について検査パラメータで特定される条件が成立するか否かを判定する機能(送信周期検査機能)を担う送信周期検査機能部と、IDが同値の1つ以上のフレームが所定の単位時間内に送信される頻度である送信頻度について検査パラメータで特定される条件が成立するか否かを判定する機能(送信頻度検査機能)を担う送信頻度検査機能部とを有する。
図8の検査部376内の各検査機能部は、検査パラメータ保持部375が保持する各検査機能に対応するルール(検査パラメータで特定される条件)を取得し、そのルールに従って検査処理を行う。検査パラメータは、ID検査機能に対応するID検査パラメータ、DLC検査機能に対応するDLC検査パラメータ、送信周期検査機能に対応する送信周期検査パラメータ、及び、送信頻度検査機能に対応する送信頻度検査パラメータを含んで構成される。また、
図8の検査部376は、それぞれの検査機能部における検査結果を判定部で総合的に判定した結果(攻撃フレームか否かを示す情報)を出力する。
【0081】
検査部376のID検査機能について、一例としては、検査パラメータ保持部375のID検査パラメータとしてメッセージIDの値が1つ以上含まれており、入力部371から検査部376に伝達されたIDフィールド内のメッセージIDが、ID検査パラメータに含まれているいずれかのメッセージIDと同一であれば、検査部376のID検査機能部は、攻撃フレームであると判定する。また、逆に、検査部376は、例えば、入力部371から伝達されたIDフィールド内のメッセージIDが、ID検査パラメータに含まれているどのメッセージIDとも異なる場合に、攻撃フレームでないと判定する。例えば、検査部376のID検査機能部等のいずれかの検査機能部により攻撃フレームであると判定された結果として、検査部376は、攻撃フレームであることを示す情報を出力する。
【0082】
検査部376のDLC検査機能について、一例としては、検査パラメータ保持部375のDLC検査パラメータとしてDLCの値が1つ含まれており、入力部371から検査部376に伝達されたDLCの値が、DLC検査パラメータに含まれているDLCの値と一致しなかった場合に、検査部376のDLC検査機能部は、攻撃フレームであると判定する。また、逆に、検査部376は、例えば、入力部371から伝達されたDLCの値が、DLC検査パラメータに含まれているDLCの値と一致した場合に、攻撃フレームでないと判定する。なお、検査部376は、例えば、入力部371から伝達されたDLCの値が、DLC検査パラメータに含まれているDLCの値より大きい場合に攻撃フレームであると判定したり、DLC検査パラメータに含まれているDLCの値より小さい場合に攻撃フレームであると判定したりしても良く、どのように判定するかについて例えば検査パラメータにおいて規定されていても良い。
【0083】
検査部376の送信周期検査機能について、一例としては、検査パラメータ保持部375の送信周期検査パラメータとして、一定の時間間隔(周期)の範囲(例えば90msecから110msec)が含まれており、入力部371から検査部376に伝達されたフレームと、そのフレームのメッセージIDと同一のメッセージIDを有する1つ前に受信されたフレームとの受信時間間隔が、送信周期検査パラメータに含まれている周期の範囲外になっている場合に、検査部376の送信周期検査機能部は、そのフレームが攻撃フレームであると判定する。なお、検査部376は、例えば、同じメッセージIDを有する2つのフレームの受信時間間隔が、閾値を超える或いは閾値未満である場合に攻撃フレームであると判定することとしても良いし、このために送信周期検査パラメータにその閾値が示され、どのような条件で攻撃フレームと判定すべきかが規定されていても良い。
【0084】
検査部376の送信頻度検査機能について、一例としては、検査パラメータ保持部375の送信頻度検査パラメータとして、一定の頻度の上限値(閾値)が含まれており、入力部371から検査部376に伝達されたフレームについて、そのフレームが送信された頻度(そのフレームを受信した頻度)が、送信頻度検査パラメータに含まれている頻度の上限値としての例えば単位期間(例えば1秒)あたりの回数(例えば100回)を超えている場合に、検査部376の送信頻度検査機能部は、攻撃フレームであると判定する。
【0085】
また、検査部376は更に、例えば、フレームのデータフィールドのデータの値について検査パラメータで特定される条件が成立するか否かにより攻撃フレームであるか否かを判定する機能(データ検査機能)を担うデータ検査機能部を含んでも良い。データ検査機能は、例えば、データの値が検査パラメータで指定された値であるか否かを検査することで攻撃フレームか否かを判定するデータ固定値検査機能を含み得る。また、データ検査機能は、例えば、データの値が検査パラメータで指定された範囲内の値であるか否かを検査するデータ範囲検査機能、データの値が検査パラメータで指定された値以上又は以下であるか否かを検査するデータ下限検査機能又はデータ上限検査機能を含み得る。また、データ検査機能は、例えば、フレームのデータの値について、同一のメッセージIDを有する1つ前に受信されたフレームにおけるデータの値からの変化量が検査パラメータで指定された範囲内の値であるか否かを検査するデータ変化範囲検査機能を含み得る。また、データ検査機能は、例えば、データの値が検査パラメータで指定された所定演算の結果と比較して一致するか否か等を検査するデータ演算結果検査機能を含み得る。なお、データ検査機能の検査対象とするデータは、データフィールドの全体であっても良いし、データフィールドの一部の1つ又は複数のビット(連続した複数のビット或いは連続しない複数のビット)のみであっても良く、また、検査パラメータにおいてデータフィールド内の検査対象のデータの位置について規定することとしても良い。
【0086】
また、上述の各検査機能は、メッセージIDに関係なく適用されるものであっても良いし、特定のメッセージIDを持つフレームに対してのみ適用されるものであっても良い。なお、上述した検査部376の検査機能は、一例であり、これに限定されるものではなく、これ以外の検査機能があっても良いし、上述した複数の検査機能の一部だけを利用しても良い。また、チェック部372と検査部376とは、互いに同様の条件についてのチェック機能又は検査機能を備えても良いし、それぞれ異なる条件についてのチェック機能又は検査機能を備えても良い。
【0087】
なお、更新部374による検査パラメータの更新方法としては、例えば、チェック部372の送信周期チェック機能部が、送信周期が予め定めた適正な範囲の外となったことで条件が成立したと判定した場合に、検査パラメータ保持部375内の送信頻度検査パラメータにおける頻度の上限値(閾値)を下げる方法がある。
【0088】
また、検査部376が上述のデータ変化範囲検査機能を含む場合において、更新部374による検査パラメータの更新方法としては、例えば、チェック部372の送信周期チェック機能部が、送信周期が予め定めた適正な範囲の外となったことで条件が成立したと判定した場合に、検査パラメータにおけるデータ変化範囲検査機能に関するパラメータで指定される範囲を狭める方法がある。これは、送信周期チェック機能部が条件の成立と判定した場合には攻撃を受けている可能性があるので、データ値の変化の許容範囲を狭く限定することで、攻撃の検知率を向上させることに有用である。また、データ値の変化の許容範囲を狭く限定することは、攻撃の影響を低減させる効果を奏し得る。
【0089】
また、更新部374による検査パラメータの更新方法としては、チェック部372の送信頻度チェック機能部がメッセージID毎の送信頻度チェック機能において予め定めた適正な頻度でないことで条件が成立したと判定した場合に、各種の検査機能に関するパラメータの閾値を、より攻撃フレームに該当すると判定される度合いを高める方へ変化させる方法がある。より攻撃フレームに該当すると判定される度合を高める方へ変化させることの一例としては、検査パラメータ保持部375内の送信周期検査パラメータにおける周期の範囲(適正な範囲)を狭めることが挙げられる。これは、あるメッセージIDのフレームの送信頻度が増加したことで攻撃されている可能性があるため、安全のために攻撃をより検知し易くする例である。
【0090】
また、メッセージIDに関係なく全てのフレームに対する送信頻度チェック機能により送信頻度が予め定めた適正な頻度でないことで条件が成立したと判定した場合には、検査パラメータ保持部375内の送信周期検査パラメータにおける周期の範囲を広げる方法がある。これは、フレームの送信頻度の増加により、あるフレームと他のフレームとの送信タイミングが同じになって通信調停が発生して送信が遅れる可能性が高くなることに対応する一方法である。
【0091】
また、検査パラメータ保持部375に、検査部376における複数の検査機能のうち実行されるべき1つ又は複数の検査機能を指定するためのパラメータを検査パラメータに含めて保持させておき、更新部374による検査パラメータの更新方法としては、チェック部372の結果に応じて、検査部376で実行されるべき検査機能を指定するパラメータを更新しても良い。
【0092】
また、検査パラメータ保持部375に、検査部376における複数の検査機能のそれぞれが実行される順序を指定するためのパラメータを検査パラメータに含めて保持させておき、更新部374による検査パラメータの更新方法としては、チェック部372の結果に応じて、検査部376で実行される複数の検査機能それぞれの実行の順序を指定するパラメータを更新しても良い。例えば、実行の順序を指定するパラメータに従って複数の検査機能を実行する検査部376では、複数の検査機能のうちいずれかで、受信されたフレームが攻撃フレームであると判定されると、未だ実行が完了していない検査機能の実行を打ち切ることができる。
【0093】
また、更新部374による検査パラメータの更新方法としては、チェック部372の送信頻度チェック機能で予め定めた適正な頻度の外となったことで条件が成立したと判定し、かつ、データ範囲チェック機能で予め定めた範囲の外となったことで条件が成立したと判定した場合に、検査パラメータ保持部375内の送信周期検査パラメータにおける周期の範囲を狭める方法もある。このように、複数のチェック機能の結果から検査パラメータを更新しても良い。なお、検査パラメータを更新する場合において、1つの検査機能に関するパラメータのみを更新しても良いし、複数の検査機能に関するパラメータを更新しても良い。
【0094】
また、更新部374による検査パラメータの更新方法は、チェック部372がチェックパラメータを用いて予め定められた条件が成立した場合に検査パラメータを更新することとしたが、その条件(つまり更新のための条件)は、受信されたフレームが不正な攻撃フレームである場合、フレームの一部が異常である場合等において満たされるものに限られることはない。例えば、その条件は、受信されたフレームが正常なフレームである場合、フレームの一部が正常である場合等において満たされるものであっても良い。例えば、チェック部372の送信周期チェック機能において正常なフレームが受信された場合に条件が成立したと判定し、この場合に更新部374で、検査パラメータにおける、検査部376で実行されるべき検査機能としてデータ上限検査機能或いはデータ下限検査機能を指定するパラメータを更新しても良いし、データ上限検査機能或いはデータ下限検査機能に関するパラメータを更新しても良い。
【0095】
なお、上述した更新部374による検査パラメータの更新方法は、一例に過ぎず、これら以外の更新方法を用いても良いし、上述した更新方法の一部だけを用いても良い。
【0096】
[1.7 ECU100aの構成]
図9は、ECU100aの構成図である。ECU100aは、フレーム送受信部110と、フレーム解釈部120と、受信ID判断部130と、受信IDリスト保持部140と、フレーム処理部150と、データ取得部170と、フレーム生成部180とを含んで構成される。これらの各構成要素は、ECU100aにおける通信回路、メモリに格納された制御プログラムを実行するプロセッサ或いはデジタル回路等により実現される。ECU100b〜100dもECU100aと概ね同様の構成を備える。
【0097】
フレーム送受信部110は、バス200aに対して、CANプロトコルに従ったフレームを送受信する。バス200aからフレームを1bitずつ受信し、フレーム解釈部120に転送する。また、フレーム生成部180より通知を受けたフレームの内容をバス200aに送信する。
【0098】
フレーム解釈部120は、フレーム送受信部110よりフレームの値を受け取り、CANプロトコルで規定されているフレームフォーマットにおける各フィールドにマッピングするよう解釈を行う。IDフィールドと判断した値は受信ID判断部130へ転送する。フレーム解釈部120は、受信ID判断部130から通知される判定結果に応じて、IDフィールドの値と、IDフィールド以降に現れるデータフィールドとを、フレーム処理部150へ転送するか、その判定結果を受けた以降においてフレームの受信を中止するかを決定する。また、フレーム解釈部120は、CANプロトコルに則っていないフレームと判断した場合は、エラーフレームを送信するようにフレーム生成部180へ通知する。また、フレーム解釈部120は、エラーフレームを受信した場合には、それ以降はそのフレームを破棄する、つまりフレームの解釈を中止する。
【0099】
受信ID判断部130は、フレーム解釈部120から通知されるIDフィールドの値を受け取り、受信IDリスト保持部140が保持しているメッセージIDのリストに従い、そのIDフィールド以降のフレームの各フィールドを受信するかどうかの判定を行う。この判定結果を、受信ID判断部130は、フレーム解釈部120へ通知する。
【0100】
受信IDリスト保持部140は、ECU100aが受信するメッセージIDのリストである受信IDリストを保持する。この受信IDリストは、例えば上述の
図4の例と同様である。
【0101】
フレーム処理部150は、受信したフレームのデータに応じてECU毎に異なる処理を行う。例えば、エンジン101に接続されたECU100aは、時速が30kmを超えた状態でドアが開いている状態だと、アラーム音を鳴らす機能を備える。そして、ECU100aのフレーム処理部150は、他のECUから受信したデータ(例えばドアの状態を示す情報)を管理し、エンジン101から取得された時速に基づいて一定条件下でアラーム音を鳴らす処理等を行う。ECU100cは、ブレーキがかかっていない状況でドアが開くとアラーム音を鳴らす機能を備える。ECU100b、100dでは特に何もしない。なお、ECU100a〜100dは上記以外の機能を備えていても良い。
【0102】
データ取得部170は、ECUに繋がっている機器、センサ等の状態を示すデータを取得し、フレーム生成部180に通知する。
【0103】
フレーム生成部180は、フレーム解釈部120から通知されたエラーフレームの送信を指示する通知に従い、エラーフレームを構成し、エラーフレームをフレーム送受信部110へ通知して送信させる。また、フレーム生成部180は、データ取得部170より通知されたデータの値に対して、予め定められたメッセージIDをつけてフレームを構成し、フレーム送受信部110へ通知する。
【0104】
[1.8 不正検知処理機能群による攻撃検知処理]
図10は、不正検知処理機能群370による攻撃検知処理の一例を示すフローチャートである。
【0105】
まず、入力部371は、フレーム処理部350からフレームの各フィールドデータを受信する(ステップS1001)。入力部371は、受信した各フィールドデータをチェック部372と検査部(フィルタリング部)376へ通知する。
【0106】
次に、チェック部372は、チェックパラメータ保持部373からチェックパラメータを取得する(ステップS1002)。
【0107】
そして、チェック部372は、取得したチェックパラメータを用いて、予め定められた条件が成立するか否かを判定するチェック処理を行う(ステップS1003)。チェック部372は、チェック処理(ステップS1003)における判定の結果を、更新部374へ通知する。チェック部372は、チェック処理として複数の条件それぞれに係る判定を行った場合にそれぞれの判定結果を通知し、それぞれの判定結果に基づく総合的な判定結果も通知する。
【0108】
更新部374は、チェック部372から通知された判定結果から、検査パラメータ保持部375が保持する検査パラメータの更新が必要であるか否かを判定する(ステップS1004)。
【0109】
更新部374は、ステップS1004で検査パラメータの更新が必要であると判断した場合には、検査パラメータ保持部375の検査パラメータを更新する(ステップS1005)。
【0110】
ステップS1005での更新の後に、或いは、ステップS1004で検査パラメータの更新が不要であると判断された場合に、検査部376は、検査パラメータ保持部375から検査パラメータ(例えばフィルタリング用に用いられるパラメータ)を取得する(ステップS1006)。
【0111】
そして、検査部376は、検査処理(例えばフィルタリングの前提としての検査であるフィルタリング処理)を行う(ステップS1007)。この検査処理により検査部376は、受信されたフレームが攻撃フレームであるか否かを判定し判定結果をフレーム処理部350へ通知する。検査部376が攻撃フレームであると判定した場合には、フレーム処理部350へ攻撃フレームであることを通知し、フレーム処理部350では転送処理を禁止するフィルタリングを行い、攻撃フレームを無効化する。
【0112】
[1.9 ゲートウェイの動作例]
図11は、ゲートウェイ300の動作(転送処理)の一例を示すフローチャートである。ゲートウェイ300は、一のバスから受信したフレームを他のバスへ転送する転送処理を行う。ここでは転送処理は、バス200aから受信したフレームをバス200bへ転送する処理を例として説明するが、バス200bから受信したフレームをバス200aへ転送する処理も同様である。
【0113】
まず、ゲートウェイ300のフレーム送受信部310は、バス200aからフレームを受信する(ステップS1101)。フレーム送受信部310は、受信したフレームの各フィールドのデータをフレーム解釈部320へ伝える。
【0114】
次に、ゲートウェイ300のフレーム解釈部320は、受信ID判断部330と連携して、受信したフレームのIDフィールドの値(メッセージID)から、受信して処理する必要があるフレームであるかどうかを判定する(ステップS1102)。
【0115】
ゲートウェイ300のフレーム解釈部320は、ステップS1102で、受信して処理する必要があると判断した場合には、フレーム処理部350へフレーム内の各フィールドの値を伝える。その後、フレーム処理部350は、転送ルール保持部360に保持する転送ルールに従って、転送先のバスを決定する(ステップS1103)。
【0116】
ゲートウェイ300のフレーム処理部350は、不正検知処理機能群370へフレーム内の各フィールドの値を通知することで、攻撃検知(攻撃フレームであるか否かの判定)を依頼する。
【0117】
ゲートウェイ300の不正検知処理機能群370は、上述の攻撃検知処理によって、フレーム処理部350から通知されたフレームの各フィールドの値から、そのフレームが攻撃フレームであるか否かを判定し(ステップS1104)、その判定結果をフレーム処理部350へ通知する。
【0118】
ゲートウェイ300のフレーム処理部350は、ステップS1104でフレームが攻撃フレームではないと判定された場合には、ステップS1103で決定した転送先のバスに、フレームを転送するようフレーム生成部380へ依頼する。フレーム生成部380は、フレーム処理部350からの依頼を受けて、指定された転送先へフレームを転送する(ステップS1105)。ステップS1105では、フレーム処理部350がフレームの各フィールドの値をフレーム生成部380へ伝達し、これを受けてフレーム生成部380は、フレームを生成してフレーム送受信部310にバス200bへ送信させることで、フレームの転送を実現する。
【0119】
なお、転送先の決定(ステップS1103)の後に攻撃フレームであるか否かを判定する例を示したが(ステップS1104)、これに限定されるものではなく、攻撃フレームであるか否かの判定(ステップS1104)の後に、転送先の決定(ステップS1103)を行っても良いし、例えば、転送先の決定(ステップS1103)と攻撃フレームであるか否かの判定(ステップS1104)とを同時に行っても良い。
【0120】
[1.10 実施の形態1の効果]
実施の形態1に係る車載ネットワークシステム10では、ゲートウェイ300でフレームを転送する転送処理におけるフィルタリングのために不正検知処理機能群370による攻撃検知処理を行う。この攻撃検知処理では、フレームが攻撃フレームであるか否かを検査するために用いる検査パラメータを、受信したフレームに基づくチェック機能により一定条件下で変化させ得る。これにより、多様で変化し得る攻撃に適応して攻撃フレームを適切に検知できる度合い(検知精度)が向上し得る。この攻撃フレームの検知精度が向上することで、攻撃に対して適切に防御(転送抑止等といったECUに対する攻撃フレームの影響を抑制するための処理)を行うことが可能となる。
【0121】
[1.11 実施の形態1の変形例]
上述のゲートウェイ300は、フレーム処理部350から不正検知処理機能群370へ攻撃検知(攻撃フレームであるか否かの判定)を依頼し、判定結果に応じてフレームを転送するか否かを切り替えることで、攻撃フレームに対する防御を行う。攻撃検知の結果の利用の方法としては、フレームを転送するか否かというフィルタリングに限られることはない。ここでは、車載ネットワークシステム10におけるゲートウェイ300の変形例として、攻撃検知の結果を、攻撃フレームの無力化による防御に用いるゲートウェイ300aについて説明する。
【0122】
図12は、実施の形態1の変形例に係るゲートウェイ300aの構成図である。同図に示すようにゲートウェイ300aでは、フレーム解釈部320は、受信したフレームの各フィールドを不正検知処理機能群370へ伝達する。不正検知処理機能群370の検査部(フィルタリング部)376は、フレームが攻撃フレームであると判定した場合には、フレーム生成部380にエラーフレームの送信を依頼することで、フレームを無力化する。このため、不正検知処理機能群370における検査部376では、ゲートウェイ300aが受信したフレームのIDフィールドが受信された後であってデータフィールドに後続する部分(CRCフィールド)が受信される前にそのフレームが攻撃フレームか否かの判定に係る検査を行う。そして検査部376が攻撃フレームと判定した時点で、フレーム生成部380及びフレーム送受信部310の動作により、エラーフレームが、攻撃フレームが送信されたバス上に送出される。これにより、攻撃フレームのCRCフィールドより前の部分がエラーフレームにより上書きされるので、各ECUが攻撃フレームを適正なフレームと認識して動作してしまうことが阻止され得る。各ECUが攻撃フレームを適正なフレームと認識して動作してしまうことの阻止のためには、攻撃フレームのデータフレームの終了を示すEOFの最後のビットが送信される前にエラーフレームの送信を開始して上書きすれば足りる。従って、エラーフレームの送信開始タイミングは任意に調整し得る。なお、攻撃フレームの送信中において攻撃フレームであるか否かを早期に検査して、攻撃フレームと判定した場合に早期にエラーフレームの送信を開始することは、各ECUにおける攻撃フレームに係るCRCチェック等の処理負荷の低減のために有用となり得る。
【0123】
なお、ゲートウェイ300aにおけるフレーム解釈部320は、全てのフレームを不正検知処理機能群370へ伝達しても良い。また、フレーム解釈部320は、受信IDリストに含まれないフレームのみを不正検知処理機能群370へ伝達し、受信IDリストに含まれるフレームに関しては、フレーム処理部350から不正検知処理機能群370へ攻撃検知の依頼を行っても良い。
【0124】
また、攻撃検知の結果の利用の方法として、攻撃フレームについてはバス間でのフレームの転送を抑止するフィルタリングと、攻撃フレームが送信されたバスへのエラーフレームの送信による無力化との両方を実行しても良い。
【0125】
図13に、実施の形態1に係るゲートウェイ300及び変形例に係るゲートウェイ300aを一般化したゲートウェイ300bの構成を示す。同図において、主に攻撃検知に係る構成(防御に係る構成を含む)を実線枠のブロックで示している。ゲートウェイ300bは、攻撃検知に係る構成として、受信部410、更新部420、保持部430、検査部440及び処理部450を含んでいる。受信部410は、少なくとも1つのバスからフレームを受信する機能を有し、例えばゲートウェイ300、300aにおけるフレーム送受信部310の受信機能部分と同等である。更新部420は、受信部410により受信されたフレームに関連する予め定められた条件が成立した場合に保持部430が保持する検査パラメータを更新する機能を有する。更新部420は、例えばゲートウェイ300、300aにおける不正検知処理機能群370のチェック部372とチェックパラメータ保持部373と更新部374とを合わせたものと同等である。保持部430は、フレームについての検査内容を規定する検査パラメータを保持する機能を有し、例えばゲートウェイ300、300aにおける不正検知処理機能群370の検査パラメータ保持部375と同等である。検査部440は、保持部430が保持する検査パラメータに基づいて、受信部410により受信されたフレームが攻撃フレームか否かの判定に係る検査を行う機能を有する。検査部440は、例えばゲートウェイ300、300aにおける不正検知処理機能群370の検査部376と同等である。処理部450は、ECUに対する攻撃フレームの影響を抑制するように検査部440による検査結果に応じた処理を行う機能を有する。処理部450は、例えば、ゲートウェイ300のフレーム処理部350における攻撃フレームについての転送処理を禁止する機能、及び、ゲートウェイ300aのフレーム生成部380における攻撃フレームに対してエラーフレームを送信する機能の両方或いは一方と同等である。このゲートウェイ300bでは、フレームが攻撃フレームであるか否かを検査部440で検査するために用いる、保持部430の検査パラメータを、更新部420により、受信したフレームに応じて一定条件下で更新する。これにより、多様で変化し得る攻撃に適応して攻撃フレームを適切に検知でき、処理部450により、攻撃に対して適切に防御できる。
【0126】
(他の実施の形態)
以上のように、本発明に係る技術の例示として実施の形態1を説明した。しかしながら、本発明に係る技術は、これに限定されず、適宜、変更、置き換え、付加、省略等を行った実施の形態にも適用可能である。例えば、以下のような変形例も本発明の一実施態様に含まれる。
【0127】
(1)上記実施の形態における不正検知処理機能群370による攻撃検知処理として、チェック処理を行い、その結果に応じて検査パラメータを更新し、その後に、検査処理を行う例を
図10に示したが、これに限定されるものではなく、例えば、
図14に示す攻撃検知処理の変形例1のように、ステップS1002〜ステップS1003でのチェック処理と、ステップS1006〜ステップS1007での検査処理(フィルタリング処理)とを並列に実行し、そのチェック処理の結果に応じて検査パラメータの更新が必要かどうかを判断し(ステップS1004)、必要であれば検査パラメータを更新し(ステップS1005)、更新された検査パラメータを利用して検査処理(フィルタリング処理)を実行しても良い(ステップS1007)。なお、チェック処理と並列に実行する検査処理は、検査パラメータの更新(ステップS1005)の後の検査処理と同じ内容の検査を行っても良いし、互いに異なる内容の検査(複数の検査機能のうち異なる検査機能による検査)を行っても良い。このように、検査処理の実行タイミングは、検査パラメータの更新のためのチェック処理の実行のタイミングと重なっても相違しても良い。検査パラメータの更新がなされるとその更新後においては検査処理では更新された検査パラメータに基づいて検査が行われ得る。また、攻撃検知処理において検査パラメータの更新のみならずチェックパラメータをフレームの内容に応じて更新しても良い。
【0128】
(2)上記実施の形態で示した不正検知処理機能群370の構成は、一例に過ぎず、例えば、チェックパラメータ保持部373が保持するチェックパラメータを用いた各種のチェック機能を備えるチェック部372の代わりに、
図15に示すように、IDフィールドのみに関連して不正か否かを判定するID関連不正検知処理部372aを備えるように変形しても良い。ID関連不正検知処理部372aは、検知パラメータ保持部373aが保持する検知パラメータを用いて不正か否かの判定を行い、不正である場合において更新部374により、フィルタパラメータ保持部375aが保持するフィルタパラメータを更新する。このフィルタパラメータを用いてフィルタリング部376aが、攻撃フレームのフィルタリングのためにフレームの検査を行う。フィルタパラメータ保持部375aは、検査パラメータ保持部375と同様であり得る。また、フィルタリング部376aは、検査部(フィルタリング部)376と同様であり得る。不正検知処理機能群370の更に具体的な変形例としては、例えば、
図16に示す例が挙げられる。
図16の例では、IDフィールドのメッセージIDから、同じメッセージIDが設定されているフレームの送信時間間隔(送信周期)をチェックし、周期情報保持部373bに保持されているルールとは異なる周期でフレームが送信されていないかを検知する周期異常検知部372bを備え、周期異常を検知した場合は、更新部374は、フィルタパラメータで示す正常なフレームを許容する範囲を狭める等の処理を行っても良い。また、更新部374は、周期が適正な範囲からずれた時間に応じて、フィルタパラメータの変更量を変えても良い。この例は、概ね実施の形態1で示した不正検知処理機能群370におけるチェック部372が、IDフィールドだけから予め定めた条件が成立するか否かをチェックするチェック機能のみを備えた場合と同等である。この場合において、不正検知処理機能群370による攻撃検知処理では、例えば
図17に示すようにIDフィールドの内容をチェックしている間に並行して残りのフィールドの受信を行うこととしても良い。
図17の例では、フレーム解釈部320或いはフレーム処理部350は、IDフィールドを受信したタイミングで、不正検知処理機能群370の入力部371へIDフィールドの値を通知する。その後、フレーム解釈部320或いはフレーム処理部350は、IDフィールド以降のフィールドを受信し、受信が完了したタイミングで残りのフィールドのデータを、不正検知処理機能群370の入力部371へ送信する。これにより、ステップS1002からS1005の処理を、フレームの受信完了より早いタイミングで開始することができ、また、ステップS1002〜S1005の処理と、ステップS1011の処理とを並列に実行できる。このため、データフィールドの受信と、チェック処理及び検査パラメータの更新とを並列に実行できて総合的な処理時間を短縮し得るので、例えば検査パラメータを用いたフィルタリングのための検査処理等に多くの時間を割くこと等が可能になる。
【0129】
(3)上記実施の形態で示した不正検知処理機能群370の構成は、例えば、
図18に示すように変形しても良い。
図18の変形例に係る不正検知処理機能群370cは、チェック部372に攻撃フレームのフィルタリングのための検査の機能を追加したものである第一フィルタリング部372cを備えている。フィルタパラメータ保持部375cは、検査パラメータ保持部375と同様であり得る。また、第二フィルタリング部376cは、検査部(フィルタリング部)376と同様であり得る。ここで、第一フィルタリング部372cと第二フィルタリング部376cとは、フィルタリングのための検査処理の内容が同じであっても良いし、異なるものであっても良い。なお、
図18の例では、第一フィルタリング部372cと第二フィルタリング部376cとが同じフィルタパラメータ保持部375cを利用するとしたが、これに限定されるものではなく、第一フィルタリング部372cと第二フィルタリング部376cとは互いに異なるフィルタパラメータ(検査パラメータ)を用いて検査を行っても良い。なお、第一フィルタリング部372cで攻撃フレームと判定されたフレームについては第二フィルタリング部376cでの検査処理が省略され得る。これにより、第一フィルタリング部372cで攻撃フレームと判定された場合には、いち早く攻撃に対する防御(攻撃フレームの転送抑止、エラーフレームの送信による攻撃フレームの無力化等)を実行できる。また、第一フィルタリング部372cで攻撃フレームと判定できなかった場合にも、フィルタパラメータ(検査パラメータ)を更新することで、第二フィルタリング部376cで攻撃フレームと判定可能になり得る。第一フィルタリング部372cは、
図19に示すように、IDフィールド関連の検査処理しか行わないIDフィールド関連フィルタリング部372dであっても良い。
図19には、IDフィールド関連フィルタリング部372d、フィルタパラメータ保持部375d、フィルタリング部376d等を備える変形例である不正検知処理機能群370dを示している。これにより、IDフィールドを受信したタイミングで、フィルタリングのための検査処理を実行することができるため、データフィールドの受信と、IDフィールド関連のフィルタリングのための検査処理及びフィルタパラメータ保持部375dが保持するパラメータの更新とを、並列に実行でき、フィルタリング部376dによるフィルタリングのための検査処理に多くの時間を割り当てることが可能となり得る。
【0130】
(4)上記実施の形態で示した不正検知処理機能群370の構成は、例えば、
図20に示すように変形しても良い。
図20の変形例に係る不正検知処理機能群370eは、チェック部372と検査部(フィルタリング部)376と更新部374との間に、フィルタ制御部377を備えている。チェック部372は、各種のチェック機能(IDチェック機能、DLCチェック機能、送信周期チェック機能、送信頻度チェック機能等)によりチェック処理(予め定められた条件が成立するか否かの判定)が終わり、判定結果が得られたものから順に、フィルタ制御部377へその判定結果(チェック結果)を通知する。フィルタ制御部377は、検査パラメータの更新に必要なチェック結果が得られた時点で、更新部374へ検査パラメータの更新を行わせる。また、フィルタ制御部377は、検査部376における各種の検査機能(ID検査機能、DLC検査機能、送信周期検査機能、送信頻度検査機能等)に関連するパラメータが、検査に利用可能な状態に更新されたか否かを管理し、利用可能な状態に更新された段階で、検査部376へ該当する検査機能の実行を行わせる。フィルタ制御部377は、例えば、検査パラメータのうち、1つのフレームの受信に際して特定の検査機能が用いるパラメータについての更新に関わるチェック機能によりそのフレームについてのチェック処理がなされた後(チェック結果次第でパラメータの更新がなされた後)にその特定の検査機能を実行させるように制御し得る。これにより、各種のチェック機能による全てのチェック結果が揃わなくても、一部の検査機能に係る検査(例えばフィルタリングのための検査)を実行することができ、攻撃フレームに対する迅速な防御等が可能となり得る。
【0131】
(5)上記実施の形態で示した車載ネットワークシステム10におけるECU(ECU100a〜100d)の構成は
図9に例示したものに限定されることはなく、例えば、
図21に示すECU100eのように、不正検知処理機能群370を備えても良い。
図21に示すECUの変形例において、フレーム処理部150が、不正検知処理機能群370へ攻撃検知(攻撃フレームであるか否かの判定)を依頼しても良いし、フレーム解釈部120が、不正検知処理機能群370へ攻撃検知を依頼しても良い。またECUは、例えば
図22に示すECU100fのように、フレーム送受信部110と、フレーム解釈部120と、フレーム生成部180と、不正検知処理機能群370とで構成されても良い。
図22に示すECUの変形例においてフレーム解釈部120は、全てのフレームを受信し、不正検知処理機能群370へ攻撃検知を依頼する。また、ECUは、
図22のECU100fの構成に加えて、
図9に示した受信ID判断部130と、受信IDリスト保持部140とを備え、受信IDリスト保持部140が保持する受信IDリストに記載されたメッセージIDを持つフレームのみを受信し、そのフレームに関して、フレーム解釈部120が不正検知処理機能群370へ攻撃検知(攻撃フレームであるか否かの判定)を依頼しても良い。このように車載ネットワークシステム10においてゲートウェイ300のみならずその他のECUも、バスに送信されているフレームが、攻撃フレームであるか否かを検知するセキュリティ装置として機能し得る。また、ECUは、例えば
図23に示すECU100gのような構成を備えても良い。
図23に示すECUの変形例においては、バスへ送信するためのデータを外部装置(例えばカーナビゲーション装置等)から取得する送信データ取得部171を備え、不正検知処理機能群370は、送信データ取得部171から受信したデータが攻撃フレームであるか否かを判定し、攻撃フレームではないと判定した場合にのみフレーム生成部180へフレームの送信を依頼しても良い。これにより、ECUに対してカーナビゲーション装置等から攻撃フレームが送信されるような場合に攻撃に対する検知及び防御が可能となる。
【0132】
(6)上記実施の形態では、更新部374は、チェック部372からの判定結果を受けて、更新が必要な検査パラメータ(閾値等)を決定して、その決定した検査パラメータを更新することとしたが、更新部374はチェック部372からの判定結果以外の条件を踏まえて検査パラメータを更新することとしても良い。例えば、更新部374は、チェック部372からの判定結果に加えて、車両の状態(例えば車速、停車中か否か等)、或いは、車載ネットワークシステム10におけるバスに接続されている機器(ECU等)の構成、チェック部372による以前の判定結果等にも基づいて、更新が必要な検査パラメータの決定、或いは、検査パラメータの更新後の値等を決定しても良い。例えば、車両の状態に基づいて検査パラメータを更新する場合には、車両が停車中であれば検査パラメータを更新しないようにしたり、或いは、更新前後での検査パラメータの値の差異が小さくなるように抑制したりしても良い。また、車載ネットワークシステム10を搭載する車両に複数の運転支援機能が搭載され、いずれかの運転支援機能が動作している状態においては、それ以外の同時に動作することのない運転支援機能に関連するフレームについてのパラメータ(閾値等)を、攻撃フレームと判定する度合いが高まるように変化させても良い。この攻撃フレームか否かの判定については、単にメッセージIDの値のみで攻撃フレームとして判定し得るようにしても良いし、データフィールドの特定のビット等を検査することで攻撃フレームとして判定し得るようにしても良い。また、バスに接続されている機器の構成にも基づいて検査パラメータの更新の処理を行う場合には、例えば、カーナビゲーション装置等といった外部と通信する機能を有する機器が一定数以上ある場合には、攻撃フレームと判定する度合いが高まるように検査パラメータを変化させても良い。
【0133】
(7)上記実施の形態では、更新部374が更新する検査パラメータ、検査パラメータの更新の程度等の決定に用いられる基準、アルゴリズム等がゲートウェイ300の製造時等において定められることとしたが、これに限定されるものではなく、製造後(工場出荷後等)に変更できても良い。その基準、アルゴリズム等の変更方法としては、変更に関するデータを外部から受信してそのデータを用いて変更しても良いし、取り外し可能な記憶媒体(光ディスク、磁気ディスク、半導体メディア等)からデータを読み取ることでそのデータを用いて変更しても良い。
【0134】
(8)上記実施の形態1の変形例において示したゲートウェイ300bの構成要素である受信部410、更新部420、保持部430、検査部440及び処理部450は、上述のゲートウェイに限らずECU(ECU100a〜100g等)に含ませても良い。この場合に、受信部410はフレーム送受信部110の受信機能部分である。
【0135】
また、保持部430は、例えば、不正検知処理機能群370、370eの検査パラメータ保持部375、或いは、不正検知処理機能群370a〜370dのフィルタパラメータ保持部375a〜375d等であり得る。保持部430は、相互に異なる、フレームについての検査内容を規定する複数の検査パラメータを保持し、例えば、複数の検査パラメータは、IDの値の検査に係るID検査パラメータと、DLCの値の検査に係るDLC検査パラメータと、送信周期の検査に係る送信周期検査パラメータと、送信頻度の検査に係る送信頻度検査パラメータと、データフィールドに格納されたデータの値の検査に係るデータ検査パラメータとのうちの1つ以上を含む。送信頻度検査パラメータは、送信頻度の許容範囲の上限を示す閾値を含み、データ検査パラメータは、データフィールドに格納されたデータの変化の許容範囲の上限を示す閾値を含み、送信周期検査パラメータは、送信周期の許容範囲を示す閾値を含み、DLC検査パラメータは、DLCの値の許容範囲を示す閾値を含み得る。また、データ検査パラメータは、データの値の許容範囲を示す閾値を含んでも良い。
【0136】
また、更新部420は、不正検知処理機能群370、370eのチェック部372、チェックパラメータ保持部373及び更新部374の組み合わせであり得るし、不正検知処理機能群370aのID関連不正検知処理部372a、検知パラメータ保持部373a及び更新部374の組み合わせであり得るし、不正検知処理機能群370bの周期異常検知部372b、周期情報保持部373b及び更新部374の組み合わせであり得るし、不正検知処理機能群370cの第一フィルタリング部372c、フィルタパラメータ保持部375cの一部又は全部、及び、更新部374の組み合わせであり得るし、不正検知処理機能群370dのIDフィールド関連フィルタリング部372d、フィルタパラメータ保持部375dの一部又は全部、及び、更新部374の組み合わせであり得る。更新部420は、受信部410により受信されたフレームについて複数の予め定められた条件それぞれが成立するか否かの判定を行う、条件毎に対応したチェック機能を有し、その各チェック機能での判定結果に応じて、保持部430が保持する複数の検査パラメータのうち更新対象とすべき検査パラメータを決定して更新する。更新部420は、例えばIDチェック機能と、DLCチェック機能と、送信周期チェック機能と、送信頻度チェック機能と、データチェック機能とのうちの1つ以上のチェック機能を有し得る。例えば、送信周期チェック機能においては、IDが同値の2つのフレームの受信間隔が所定の許容範囲から外れる場合にその送信周期チェック機能に対応する条件が成立したと判定し得る。更新部420は、例えば、送信周期チェック機能で条件が成立したと判定した場合に複数の検査パラメータのいずれかを更新しても良い。また、更新部420は、送信周期チェック機能で条件が成立したと判定した場合に、送信頻度検査パラメータにおける閾値を更新することとしても良い。また、更新部420は、送信周期チェック機能で条件が成立したと判定した場合に、データ検査パラメータにおける閾値を、より小さい値へと更新することとしても良い。また、更新部420は、送信頻度が所定の許容範囲の上限を超える場合に送信頻度チェック機能に対応する条件が成立したと判定して、送信周期検査パラメータにおける閾値を更新することとしても良い。また、更新部420は、一のフレームに関連して送信頻度チェック機能で条件が成立したと判定した場合に、その一のフレームのIDと同一のIDを有するフレームの検査内容として用いられる複数の検査パラメータにおける閾値を、該当の許容範囲をより狭くするように更新することとしても良い。また、更新部420は更に、受信部410により受信されたフレームに関連する予め定められた条件が成立した場合に、そのフレームを攻撃フレームであると判定しても良い。
【0137】
また、検査部440は、不正検知処理機能群370、370eの検査部(フィルタリング部)376であり得るし、不正検知処理機能群370aのフィルタリング部376aであり得るし、不正検知処理機能群370bのフィルタリング部376bであり得るし、不正検知処理機能群370cの第二フィルタリング部376cであり得るし、不正検知処理機能群370dのフィルタリング部376dであり得る。また、処理部450は、ECUにおけるフレーム処理部150及びフレーム生成部180の少なくとも一方であり得る。検査部440は、例えば保持部430が保持する複数の検査パラメータのそれぞれに基づいて検査を行い、例えば、受信部410により受信されたフレームに係る送信頻度が送信頻度検査パラメータにおける閾値を超えた場合にそのフレームを攻撃フレームと判定しても良い。また、検査部440は、受信部410により受信されたフレームに係るデータフィールドに格納されたデータの変化がデータ検査パラメータにおける閾値を超えた場合にそのフレームを攻撃フレームと判定しても良い。検査部440が、受信部410によりフレームのIDフィールドが受信された後であってデータフィールドに後続する部分(CRCフィールド)が受信される前に検査を行うこととしても良く、処理部450では攻撃フレームに対してエラーフレームを送信することとしても良い。
【0138】
また、ゲートウェイ、ECU等において、不正検知処理機能群370eのフィルタ制御部377(
図20参照)のような制御部を設けても良い。この制御部は、更新部420が有する複数のチェック機能それぞれについてそのチェック機能での判定結果が得られたタイミングで、複数の検査パラメータのいずれかがその判定結果に応じて更新されるべきか否かを確認し、更新されるべきであれば該当の検査パラメータを更新するように更新部420を制御し、複数の検査パラメータそれぞれの更新状況に応じて、その各検査パラメータに基づく検査を行うように検査部440を制御する。
【0139】
(9)上記実施の形態では、CANプロトコルに従って通信するネットワーク通信システムの例として車載ネットワークを示した。本発明に係る技術は、車載ネットワークでの利用に限定されるものではなく、ロボット、産業機器等のネットワークその他、車載ネットワーク以外のCANプロトコルに従って通信するネットワーク通信システムに利用しても良い。また、CANプロトコルは、オートメーションシステム内の組み込みシステム等に用いられるCANOpen、或いは、TTCAN(Time-Triggered CAN)、CANFD(CAN with Flexible Data Rate)等の派生的なプロトコルも包含する広義の意味のものと扱われるべきである。また、車載ネットワークシステム10においては、CANプロトコル以外の通信プロトコル、例えば、Ethernet(登録商標)や、MOST(登録商標)、FlexRay(登録商標)等を用いても良い。
【0140】
(10)上記実施の形態で示した各種処理の手順(例えば
図10、
図11、
図14、
図17に示した所定手順等)の実行順序は、必ずしも、上述した通りの順序に制限されるものではなく、発明の要旨を逸脱しない範囲で、実行順序を入れ替えたり、複数の手順を並列に行ったり、その手順の一部を省略したりすることができる。
【0141】
(11)上記実施の形態におけるゲートウェイその他のECUは、例えば、プロセッサ、メモリ等のデジタル回路、アナログ回路、通信回路等を含む装置であることとしたが、ハードディスク装置、ディスプレイ、キーボード、マウス等の他のハードウェア構成要素を含んでいても良い。また、メモリに記憶された制御プログラムがプロセッサにより実行されてソフトウェア的に機能を実現する代わりに、専用のハードウェア(デジタル回路等)によりその機能を実現することとしても良い。
【0142】
(12)上記実施の形態における各装置を構成する構成要素の一部又は全部は、1個のシステムLSI(Large Scale Integration:大規模集積回路)から構成されているとしても良い。システムLSIは、複数の構成部を1個のチップ上に集積して製造された超多機能LSIであり、具体的には、マイクロプロセッサ、ROM、RAM等を含んで構成されるコンピュータシステムである。前記RAMには、コンピュータプログラムが記録されている。前記マイクロプロセッサが、前記コンピュータプログラムに従って動作することにより、システムLSIは、その機能を達成する。また、上記各装置を構成する構成要素の各部は、個別に1チップ化されていても良いし、一部又は全部を含むように1チップ化されても良い。また、ここでは、システムLSIとしたが、集積度の違いにより、IC、LSI、スーパーLSI、ウルトラLSIと呼称されることもある。また、集積回路化の手法はLSIに限るものではなく、専用回路又は汎用プロセッサで実現しても良い。LSI製造後に、プログラムすることが可能なFPGA(Field Programmable Gate Array)や、LSI内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサを利用しても良い。さらには、半導体技術の進歩又は派生する別技術によりLSIに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積化を行っても良い。バイオ技術の適用等が可能性としてあり得る。
【0143】
(13)上記各装置を構成する構成要素の一部又は全部は、各装置に脱着可能なICカード又は単体のモジュールから構成されているとしても良い。前記ICカード又は前記モジュールは、マイクロプロセッサ、ROM、RAM等から構成されるコンピュータシステムである。前記ICカード又は前記モジュールは、上記の超多機能LSIを含むとしても良い。マイクロプロセッサが、コンピュータプログラムに従って動作することにより、前記ICカード又は前記モジュールは、その機能を達成する。このICカード又はこのモジュールは、耐タンパ性を有するとしても良い。
【0144】
(14)本発明の一態様としては、例えば
図10、
図14、
図17等に示す処理手順の全部又は一部を含む攻撃検知方法であるとしても良い。例えば、攻撃検知方法は、1つ又は複数のバスを介して複数のECUがフレームの授受を行う車載ネットワークシステム10において用いられ、受信ステップと更新ステップと検査ステップとを含む。受信ステップでは、バスからフレームを受信し、更新ステップでは、受信ステップで受信されたフレームに関連する予め定められた条件が成立した場合に、フレームについての検査内容を規定する検査パラメータを更新し、検査ステップでは、更新ステップで更新された検査パラメータに基づいて、受信ステップで受信されたフレームが攻撃フレームか否かの判定に係る検査を行う。また、この攻撃検知方法に係る所定処理(攻撃検知処理)をコンピュータにより実現するコンピュータプログラム(制御プログラム)であるとしても良いし、前記コンピュータプログラムからなるデジタル信号であるとしても良い。例えば、制御プログラムは、受信ステップ(例えばステップS1001)と更新ステップ(例えばステップS1002〜S1005)と検査ステップ(例えばステップS1006、S1007)とを含む攻撃検知処理をプロセッサに実行させるためのものである。また、本発明の一態様としては、前記コンピュータプログラム又は前記デジタル信号をコンピュータで読み取り可能な記録媒体、例えば、フレキシブルディスク、ハードディスク、CD−ROM、MO、DVD、DVD−ROM、DVD−RAM、BD(Blu-ray(登録商標) Disc)、半導体メモリ等に記録したものとしても良い。また、これらの記録媒体に記録されている前記デジタル信号であるとしても良い。また、本発明の一態様としては、前記コンピュータプログラム又は前記デジタル信号を、電気通信回線、無線又は有線通信回線、インターネットを代表とするネットワーク、データ放送等を経由して伝送するものとしても良い。また、本発明の一態様としては、マイクロプロセッサとメモリを備えたコンピュータシステムであって、前記メモリは、上記コンピュータプログラムを記録しており、前記マイクロプロセッサは、前記コンピュータプログラムに従って動作するとしても良い。また、前記プログラム若しくは前記デジタル信号を前記記録媒体に記録して移送することにより、又は、前記プログラム若しくは前記デジタル信号を前記ネットワーク等を経由して移送することにより、独立した他のコンピュータシステムにより実施するとしても良い。
【0145】
(15)上記実施の形態及び上記変形例で示した各構成要素及び機能を任意に組み合わせることで実現される形態も本発明の範囲に含まれる。