(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024114822
(43)【公開日】2024-08-23
(54)【発明の名称】不正検知方法、不正検知装置及びプログラム
(51)【国際特許分類】
H04L 41/0631 20220101AFI20240816BHJP
H04L 12/28 20060101ALI20240816BHJP
【FI】
H04L41/0631
H04L12/28 100A
【審査請求】有
【請求項の数】10
【出願形態】OL
(21)【出願番号】P 2024102810
(22)【出願日】2024-06-26
(62)【分割の表示】P 2023078576の分割
【原出願日】2018-12-04
(31)【優先権主張番号】P 2018064431
(32)【優先日】2018-03-29
(33)【優先権主張国・地域又は機関】JP
(71)【出願人】
【識別番号】514136668
【氏名又は名称】パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ
【氏名又は名称原語表記】Panasonic Intellectual Property Corporation of America
(74)【代理人】
【識別番号】100109210
【弁理士】
【氏名又は名称】新居 広守
(74)【代理人】
【識別番号】100137235
【弁理士】
【氏名又は名称】寺谷 英作
(74)【代理人】
【識別番号】100131417
【弁理士】
【氏名又は名称】道坂 伸一
(72)【発明者】
【氏名】前田 学
(72)【発明者】
【氏名】岸川 剛
(72)【発明者】
【氏名】国宗 大介
(57)【要約】
【課題】バスに送出された個々のメッセージが異常なメッセージであるか否かを判定する不正検知方法、不正検知装置等を提供する。
【解決手段】車載ネットワークに、繰り返し送出されたメッセージの周期が異常であるか否かを判定する周期異常判定ステップ(S1002)と、メッセージが車載ネットワークに送出された際に調停が発生していたか否かを検出する調停検出ステップ(S1004)と、メッセージの周期が異常であり、メッセージが車載ネットワークに送出された際に調停が発生していなかった場合、メッセージを異常なメッセージと判定するメッセージ判定ステップ(S1006)とを含む。
【選択図】
図3
【特許請求の範囲】
【請求項1】
車載ネットワークにおける異常なメッセージを検知する不正検知方法であって、以下を含む、
前記車載ネットワークに送出された第1メッセージを受信し、
前記第1メッセージの受信時刻が、前記第1メッセージの直前に受信した、データの種類が前記第1メッセージと同じ第2メッセージの受信時刻からの経過時間である予定時刻を含む所定範囲の時刻に収まっているか否かを判定し、
前記判定において、前記第1メッセージの受信時刻が所定範囲の時刻に収まっている場合、前記第1メッセージを正常なメッセージと判定し、
前記判定において、前記第1メッセージの受信時刻が所定範囲の時刻に収まっていない場合、前記第1メッセージの受信時に調停が発生していたか否かを検出し、
前記第1メッセージの受信時に調停が発生していなかった場合、前記第1メッセージを異常なメッセージと判定し、
前記第1メッセージの受信時に調停が発生していた場合、
1つまたは連続して続いている複数の第3メッセージと、前記1つまたは連続して続いている複数の第3メッセージに続いて前記第1メッセージが連続して受信されている場合、前記1つまたは連続して続いている複数の第3メッセージのうち、受信時刻が一番早いメッセージの受信時刻を調停の開始時刻とし、
調停の開始時刻が前記所定範囲の時刻の上限より早い場合、前記第1メッセージを正常なメッセージと判定し、
調停の開始時刻が前記所定範囲の時刻の上限以降の場合、前記第1メッセージを異常なメッセージと判定し、
前記第1メッセージの直後に受信する、データの種類が前記第1メッセージと同じ第4メッセージの予定時刻を算出するための起点となる時刻である起点時刻を、前記第1メッセージのタイプに応じて、前記第1メッセージの受信時刻、または、前記第2メッセージの受信時刻からの経過時間である前記第1メッセージの予定時刻に決定し、
前記第4メッセージの受信時刻が前記起点時刻からの経過時間である予定時刻を含む所定範囲の時刻に収まっているか否かを判定する、
不正検知方法。
【請求項2】
前記第1メッセージの受信時刻と、前記第2メッセージの受信時刻との差に応じて、前記起点時刻を前記第1メッセージの受信時刻または前記第1メッセージの予定時刻に決定する、
請求項1記載の不正検知方法。
【請求項3】
データの種類が前記第1メッセージと同じで前記第1メッセージよりも前に受信した複数の第5メッセージのうち、受信順が隣り合う2つのメッセージそれぞれの受信時刻の差を、少なくとも2つのタイプに分類し、分類された前記少なくとも2つのタイプのそれぞれの数に応じて、前記起点時刻を前記第1メッセージの受信時刻または前記第1メッセージの予定時刻に決定する、
請求項1に記載の不正検知方法。
【請求項4】
前記複数の第5メッセージのうち受信順が隣り合う2つのメッセージそれぞれの受信時刻の差を基準値と比較し、
前記差が前記基準値より短い場合の数と、前記差が前記基準値より長い場合の数とに応じて、前記起点時刻を前記第1メッセージの受信時刻または前記第1メッセージの予定時刻に決定する、
請求項3記載の不正検知方法。
【請求項5】
前記差が前記基準値より短い場合の数が、前記差が前記基準値より長い場合の数より少ない場合、前記起点時刻を前記第1メッセージの受信時刻に決定する、
請求項4記載の不正検知方法。
【請求項6】
前記差が前記基準値より短い場合の第1の数が、前記差が前記基準値より長い場合の第2の数より少なく、かつ、前記第1の数と前記第2の数との差が所定数以上である場合、前記起点時刻を前記第1メッセージの受信時刻に決定する、
請求項4記載の不正検知方法。
【請求項7】
前記差が前記基準値より短い場合の第1の数が、前記差が前記基準値より長い場合の第2の数より少なく、かつ、前記第1の数の前記第2の数に対する比が所定値より小さい場合、前記起点時刻を前記第1メッセージの受信時刻に決定する、
請求項4記載の不正検知方法。
【請求項8】
前記差が前記基準値より短い場合の第1の数と、前記差が前記基準値より長い場合の第2の数との差が所定数以上でない場合、前記起点時刻を前記第1メッセージの予定時刻に決定する、
請求項4記載の不正検知方法。
【請求項9】
前記差が前記基準値より短い場合の第1の数の、前記差が前記基準値より長い場合の第2の数に対する比が所定値より小さくない場合、前記起点時刻を前記第1メッセージの予定時刻に決定する、
請求項4記載の不正検知方法。
【請求項10】
車載ネットワークにおける異常なメッセージを検知する不正検知装置であって、
1個以上のプロセッサと、
記憶部と、を含み、
前記1個以上のプロセッサは、前記記憶部を用いて、
前記車載ネットワークに送出された第1メッセージを受信し、
前記第1メッセージの受信時刻が、前記第1メッセージの直前に受信した、データの種類が前記第1メッセージと同じ第2メッセージの受信時刻からの経過時間である予定時刻を含む所定範囲の時刻に収まっているか否かを判定し、
前記判定において、前記第1メッセージの受信時刻が所定範囲の時刻に収まっている場合、前記第1メッセージを正常なメッセージと判定し、
前記判定において、前記第1メッセージの受信時刻が所定範囲の時刻に収まっていない場合、前記第1メッセージの受信時に調停が発生していたか否かを検出し、
前記第1メッセージの受信時に調停が発生していなかった場合、前記第1メッセージを異常なメッセージと判定し、
前記第1メッセージの受信時に調停が発生していた場合、
1つまたは連続して続いている複数の第3メッセージと、前記1つまたは連続して続いている複数の第3メッセージに続いて前記第1メッセージが連続して受信されている場合、前記1つまたは連続して続いている複数の第3メッセージのうち、受信時刻が一番早いメッセージの受信時刻を調停の開始時刻とし、
調停の開始時刻が前記所定範囲の時刻の上限より早い場合、前記第1メッセージを正常なメッセージと判定し、
調停の開始時刻が前記所定範囲の時刻の上限以降の場合、前記第1メッセージを異常なメッセージと判定し、
前記第1メッセージの直後に受信する、データの種類が前記第1メッセージと同じ第4メッセージの予定時刻を算出するための起点となる時刻である起点時刻を、前記第1メッセージのタイプに応じて、前記第1メッセージの受信時刻、または、前記第2メッセージの受信時刻からの経過時間である前記第1メッセージの予定時刻に決定し、
前記第4メッセージの受信時刻が前記起点時刻からの経過時間である予定時刻を含む所定範囲の時刻に収まっているか否かを判定する、
不正検知装置。
【請求項11】
コンピュータに請求項1に記載の不正検知方法を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、車載ネットワークにおける異常なメッセージを検知する不正検知方法等に関する。
【背景技術】
【0002】
近年、自動車の中のシステムには、電子制御ユニット(ECU:Electronic Control Unit)と呼ばれる装置が多数配置されている。これらのECUをつなぐ通信ネットワークは車載ネットワークと呼ばれる。車載ネットワークには、多数の通信規格が存在する。その中でも最も主流な車載ネットワークの規格の一つに、Controller Area Network(CAN)がある。
【0003】
CANの規格に拠るネットワーク(CANネットワーク)では、通信路(バス)は2本のケーブルで構成され、バスに接続されているECUはノードとも呼ばれる。バスに接続されている各ノードは、フレーム又はメッセージと呼ばれる単位でデータを送受信する。またCANでは、データの送信先又は送信元を示す識別子は用いられない。
【0004】
フレームを送信するノード(送信ノード)は、メッセージ毎にメッセージの種類を示すメッセージIDと呼ばれるIDを付けてメッセージを送信、つまりバスに信号を送出する。メッセージを受信するノード(受信ノード)は、予め決められたメッセージIDを含むメッセージのみ受信、つまりバスから信号を読み取る。同一IDのメッセージは、一定の周期で送信される。
【0005】
上述の通り、自動車の中のシステムに多数配置されているECUは、それぞれがCANネットワークに接続され、様々なメッセージを互いにやりとりしながら動作している。
【0006】
ここで、CANネットワークの外部と通信機能を持つECUが、外部から不正にアクセスされること等により、何者かに不正に制御され、CANネットワークに対して異常なメッセージ(攻撃メッセージ)を送信することが起こり得る。このような何者かに不正に制御されたECU(不正ECU)は、例えば他のECUになりすまして異常なメッセージを送信し、車両を不正に制御することが可能となる。このような、いわゆるなりすまし攻撃を検知するための方法が、例えば、特許文献1に開示されている。
【先行技術文献】
【特許文献】
【0007】
【発明の概要】
【発明が解決しようとする課題】
【0008】
しかしながら、特許文献1に開示されている方法では、CANネットワークバス上の送信周期の乱れにより正常なメッセージの送信周期が長くなった場合に、正しい判断ができないという課題がある。
【0009】
本開示は、上記課題を解決するもので、バスに送出された個々のメッセージが異常なメッセージであるか否かを判定する不正検知方法、不正検知装置等を提供することを目的とする。
【課題を解決するための手段】
【0010】
上記課題を解決するために、本開示の一態様に係る不正検知方法は、車載ネットワークにおける異常なメッセージを検知する不正検知方法であって、以下を含む、前記車載ネットワークに送出された第1メッセージを受信し、前記第1メッセージの受信時刻が、前記第1メッセージの直前に受信した、データの種類が前記第1メッセージと同じ第2メッセージの受信時刻からの経過時間である予定時刻を含む所定範囲の時刻に収まっているか否かを判定し、前記判定において、前記第1メッセージの受信時刻が所定範囲の時刻に収まっている場合、前記第1メッセージを正常なメッセージと判定し、前記判定において、前記第1メッセージの受信時刻が所定範囲の時刻に収まっていない場合、前記第1メッセージの受信時に調停が発生していたか否かを検出し、前記第1メッセージの受信時に調停が発生していなかった場合、前記第1メッセージを異常なメッセージと判定し、前記第1メッセージの受信時に調停が発生していた場合、1つまたは連続して続いている複数の第3メッセージと、前記1つまたは連続して続いている複数の第3メッセージに続いて前記第1メッセージが連続して受信されている場合、前記1つまたは連続して続いている複数の第3メッセージのうち、受信時刻が一番早いメッセージの受信時刻を調停の開始時刻とし、調停の開始時刻が前記所定範囲の時刻の上限より早い場合、前記第1メッセージを正常なメッセージと判定し、調停の開始時刻が前記所定範囲の時刻の上限以降の場合、前記第1メッセージを異常なメッセージと判定し、前記第1メッセージの直後に受信する、データの種類が前記第1メッセージと同じ第4メッセージの予定時刻を算出するための起点となる時刻である起点時刻を、前記第1メッセージのタイプに応じて、前記第1メッセージの受信時刻、または、前記第2メッセージの受信時刻からの経過時間である前記第1メッセージの予定時刻に決定し、前記第4メッセージの受信時刻が前記起点時刻からの経過時間である予定時刻を含む所定範囲の時刻に収まっているか否かを判定する。
【0011】
なお、これらの包括的または具体的な態様は、システム、装置、方法、集積回路、コンピュータプログラム又はコンピュータ読み取り可能なCD-ROMなどの非一時的な記録媒体で実現されてもよく、システム、装置、方法、集積回路、コンピュータプログラム及び記録媒体の任意な組み合わせで実現されてもよい。
【発明の効果】
【0012】
本開示の一態様に係る不正検知方法等によれば、バスに送出された個別のメッセージが異常なメッセージであるか否かを判定することができる。
【図面の簡単な説明】
【0013】
【
図1】
図1は、実施の形態1における車載ネットワークシステムの全体構成を示すブロック図である。
【
図2】
図2は、実施の形態1におけるCANプロトコトルのメッセージ(データフレーム)のフォーマットを示す図である。
【
図3】
図3は、実施の形態1における車載ネットワークシステムに含まれるゲートウェイの構成を示すブロック図である。
【
図4】
図4は、実施の形態1における受信IDリストの一例を示す図である。
【
図5】
図5は、実施の形態1における転送ルールの一例を示す図である。
【
図6】
図6は、実施の形態1における不正検知処理機能群の一例を示すブロック図である。
【
図7A】
図7Aは、実施の形態1における調停発生時のメッセージの受信パターンを示す図である。
【
図7B】
図7Bは、実施の形態1における調停発生時のメッセージの受信パターンを示す別の図である。
【
図8】
図8は、実施の形態1における不正検知処理機能群の別の一例を示すブロック図である。
【
図9】
図9は、実施の形態1における車載ネットワークシステムに含まれるECUの一例を示すブロック図である。
【
図10】
図10は、実施の形態1における不正検知処理の一例を示すフローチャートである。
【
図11】
図11は、実施の形態1における転送処理の一例を示すフローチャートである。
【
図12】
図12は、実施の形態2における不正検知処理機能群の一例を示すブロック図である。
【
図13】
図13は、実施の形態2における不正検知処理の一例を示すフローチャートである。
【
図14】
図14は、変形例における不正検知処理機能群の一例を示す図である。
【
図15】
図15は、変形例における不正検知処理機能群の一例を示す図である。
【
図16】
図16は、変形例におけるECUの一例を示すブロック図である。
【
図17】
図17は、変形例におけるECUの一例を示すブロック図である。
【
図18】
図18は、変形例におけるECUの一例を示すブロック図である。
【発明を実施するための形態】
【0014】
(本開示の基礎になった知見)
CANネットワーク上に、多くのECUが接続されている場合、それぞれのECUが独立してメッセージを送信しようとすると、メッセージの送信タイミングが同じになる可能性が高くなる。
【0015】
その場合は、CANネットワークには、「調停」と呼ばれる機能があり、IDの小さいメッセージが優先的に送信され、IDの大きなメッセージは、送信を待つことになる。そうすると、メッセージを送信する送信タイミングにずれが生じるため、メッセージの送信間隔に応じて正常なメッセージか異常なメッセージかを判定する機能が誤作動し、正常なメッセージを異常なメッセージであると判定する可能性が生じる。
【0016】
そこで、本開示の一態様に係る不正検知方法は、記憶部を含む情報処理システムで実行される、車載ネットワークシステムにおける異常なメッセージを検知する不正検知方法であって、前記車載ネットワークシステムに、繰り返し送出されたメッセージの周期が異常であるか否かを判定する周期異常判定ステップと、前記メッセージが前記車載ネットワークシステムに送出された際に調停が発生していたか否かを検出する調停検出ステップと、前記メッセージの周期が異常であり、前記メッセージが前記車載ネットワークシステムに送出された際に調停が発生していなかった場合、前記メッセージを異常なメッセージと判定するメッセージ判定ステップとを含む。
【0017】
これにより、車載ネットワークシステムに送出されたメッセージに調停などによって送信遅れが生じた場合に、受信したメッセージが、正常なメッセージか否かを適切に判定できる。その結果、個々のメッセージが異常なメッセージであるか否かの判定は、より高い精度で実行される。
【0018】
また例えば、前記周期異常判定ステップで周期を判定する際に周期の起点となる時刻を前記メッセージの受け付け時刻または、受け付け予定時刻に決定する周期起点決定ステップとを含み、前記周期異常検知ステップでは、前記周期起点決定ステップで決定された起点を用いて周期を判定してもよい。
【0019】
これにより、調停が発生した際のメッセージ送信方法が複数ある場合においても、メッセージの受信時刻に現れる特徴に基づいて正常なメッセージであるか否かを判断することで、より高い精度で異常なメッセージを判定できる。
【0020】
また、例えば、前記メッセージの送信タイプを判定する送信タイプ判定ステップを含み、前記周期起点決定ステップでは、送信タイプに応じて前記メッセージの受け付け時刻または受け付け予定時刻に決定してもよい。
【0021】
これにより、車載ネットワークに送出されたメッセージの送信タイプに応じた、調停検出を行うことができる。
【0022】
また、例えば、前記調停検出ステップでは、前記メッセージが、前記メッセージを受信する周期の正常範囲内の時刻に受信された他のメッセージから連続して受信された1つ以上のメッセージに含まれる場合、調停が発生したと判定してもよい。
【0023】
これにより、調停などによってメッセージの送信遅れが生じた場合でも、受信したメッセージが正常なメッセージか否かを適切に判定できる。
【0024】
また、本開示の一態様に係る不正検知装置は、車載ネットワークシステムにおける異常なメッセージを検知する不正検知装置であって、1個以上のプロセッサと、記憶部と、を含み、前記記憶部を用いて、前記1個以上のプロセッサは、前記車載ネットワークシステムに送出されたメッセージの周期が異常であるか否かを判定する周期異常判定ステップと、前記メッセージが前記車載ネットワークシステムに送出された際に調停が発生していたかどうかを検出する調停検出ステップと、前記メッセージの周期が異常であり、前記メッセージが前記車載ネットワークシステムに送出された際に調停が発生していた場合、前記メッセージを正常なメッセージと判定する周期判定ステップとを行う。
【0025】
これにより、車載ネットワークシステムに送出されたメッセージが調停などにより送信遅れが生じても、正常なメッセージか否かを適切に判定できる。その結果、個々のメッセージが異常なメッセージであるか否かの判定も、より高い精度で実行される。
【0026】
また、本開示の一態様に係るプログラムは、上記の不正検知装置において、前記1個以上のプロセッサに上記の不正検知方法のいずれかを実施させるためのプログラムである。
【0027】
これにより、車載ネットワークシステムに送出されたメッセージに調停などによって送信遅れが生じても、正常なメッセージか否かを適切に判定できる。その結果、個々のメッセージが異常なメッセージであるか否かの判定も、より高い精度で実行される。
【0028】
以下、実施の形態について図面を参照しながら具体的に説明する。
【0029】
なお、以下で説明する実施の形態は、いずれも包括的または具体的な例を示すものである。以下の実施の形態で示される数値、形状、材料、構成要素、構成要素の配置および接続形態、ステップ、ステップの順序などは一例であり、本開示を限定する趣旨ではない。以下の実施の形態における構成要素のうち、最上位概念を示す独立請求項に記載されていない構成要素は、任意で含まれる構成要素として説明されるものである。
【0030】
(実施の形態1)
[1.概要]
本実施の形態では、車載ネットワークシステムにおいて、送信されているメッセージが異常なメッセージであるか否かの判定がなされる場合について図面を参照しながら説明する。なお、ここで、異常なメッセージは、基本的に、不正なメッセージである。
【0031】
[1.1 車載ネットワークシステムの全体構成]
図1は、本実施の形態における車載ネットワークシステム10の全体構成を示すブロック図である。
【0032】
図1において、車載ネットワークシステム10は、CANネットワークで構成され、ECU100a、ECU100b、ECU100c、及びECU100dと、バス200a及びバス200bと、ゲートウェイ300とを含む。
【0033】
以下では、ECU100a、ECU100b、ECU100c、ECU100dを、集合的にECU100とする場合がある。又、ECU100a、ECU100b、ECU100c、ECU100dのいずれかを指して、ECU100として説明する場合がある。
【0034】
また、以下では、バス200a、バス200b集合的にバス200とする場合がある。又、バス200a及びバス200bのいずれか一方を指して、バス200とする場合がある。
【0035】
ECU100aはエンジン101に接続され、ECU100bはブレーキ102に接続される。また、ECU100cはドア開閉センサ103に接続され、ECU100dはウィンドウ開閉センサ104に接続されている。
【0036】
ECU100は、接続されている機器の状態を取得し、取得した状態を表すメッセージを周期的にバス200に送出する。例えばECU100aは、エンジン101の回転数を取得し、この回転数を表すデータ値を含むメッセージに所定のIDを付けてバス200に送出する。
【0037】
また、各ECU100は、他のECU100が送信したメッセージをバス200から読み出し、メッセージに付されたIDに応じて選択的に受信する。この選択的な受信については後述する。
【0038】
ゲートウェイ300は、ECU100a及びECU100bが接続されているバス200aと、ECU100c及びECU100dが接続されているバス200bとを接続している。ゲートウェイ300は一方のバスから受信したメッセージを、もう一方のバスに転送する機能を持つ。ゲートウェイ300もまた、CANネットワーク上ではひとつのノードである。
【0039】
なお、車載ネットワークシステム10は、メッセージが異常なメッセージであるか否かの判定をする不正通信検知システム等が適用可能な対象を説明するための例であり、その適用対象は車載ネットワークシステム10に限定されない。LAN(Local Area Network)等を用いた各種ネットワークシステム又は分散データベース等に適用されてもよい。
【0040】
[1.2 メッセージのデータフォーマット]
図2は、CANプロトコルのメッセージ(データフレーム)のフォーマットを示す図である。ここではCANプロトコルにおける標準IDフォーマットにおけるメッセージを示している。
【0041】
メッセージは、Start Of Frame(SOF)と、IDフィールド、Remote Transimission Request(RTR)、IDE(IDentifier Extension)、予約bit(r)、データレングスコード(DLC)、データフィールド、CRC(Cycric Redundancy Check)シーケンス、CRCデリミタ(図中、左のDEL)と、ACK(Acknowledgement)スロットと、ACKデリミタ(図中、右のDEL)と、EOF(End Of Frame)から構成される。
【0042】
SOFは、1bitのドミナントである。ドミナントは、優性の意である。ドミナントは、データの伝達にデジタル方式が用いられるCANネットワークにおいて、“0”の値を送信するようにバスを構成する2本のケーブルに電圧がかけられた状態、または送信されるこの“0”の値のことである。これに対し、“バスを構成する2本のケーブルに1”の値を送信するように電圧がかけられた状態、または送信されるこの“1”の値のことはレセシブと呼ばれる。レセシブは、劣勢の意である。2つのノードからバスに同時に“0”の値と“1”の値とが送信された場合には、“0”の値が優先される。アイドル時のバスはレセシブの状態である。各ECU100は、バス200の状態をレセシブからドミナントへ変化させることでメッセージの送信を開始し、他のECU100はこの変化を読み取って同期する。
図2において、メッセージを構成するドミナント又はレセシブを示す線が実線である部分は、ドミナント又はレセシブの各値を取り得ることを示す。SOFはドミナントの状態で固定されているため、ドミナントの線は実線であり、レセシブの線は破線である。
【0043】
IDとは、メッセージが含むデータの種類を示す11bitの値である。またCANでは、複数のノードが同時に送信を開始したメッセージ間での通信調停において、IDの値がより小さいメッセージがより高い優先度となるよう設計されている。
【0044】
RTRとは、フレームがメッセージ(データフレーム)であることを示す1bitのドミナントである。
【0045】
IDEとは、それぞれ1bitのドミナントである。
【0046】
DLCは、続くデータフィールドの長さを示す4bitの値である。
【0047】
データフィールドは、送信されるデータの内容を示す値であり、最大64bit長で、8bit単位で長さを調整できる。送られるデータのこの部分への割り当てに関する仕様は、車種又は製造者に依存する。
【0048】
CRCシーケンスは、SOF、IDフィールド、コントロールフィールド、データフィールドの送信値より算出される15bitの値である。
【0049】
CRCデリミタは1bitのレセシブ固定の、CRCシーケンスの終了を表す区切り記号である。受信ノードは、受信したメッセージのSOF、IDフィールド、コントロールフィールド、及びデータフィールドの値から算出した結果をCRCシーケンスの値と比較することで異常の有無を判断する。
【0050】
ACKスロットは1bit長で、送信ノードはこの部分でレセシブを送信する。受信ノードはCRCシーケンスまで正常に受信ができていれば確認応答としてドミナントを送信する。ドミナントが優先されるため、1メッセージの通信がCRCシーケンスまで正常に行われていれば、ACKスロットの送信中のバス200はドミナントである。
【0051】
ACKデリミタは1bitのレセシブに固定されており、ACKスロットの終了を表す区切り記号である。
【0052】
EOFは7bitのレセシブに固定されており、メッセージの終了を示す。
【0053】
[1.3 ゲートウェイの構成]
図3は、本実施の形態における車載ネットワークシステム10に含まれるゲートウェイ300の構成を示すブロック図である。
図3において、ゲートウェイ300は、フレーム送受信部310と、フレーム解釈部320と、受信ID判定部330と、受信IDリスト保持部340と、フレーム処理部350と、転送ルール保持部360と、不正検知処理機能群370と、フレーム生成部380とを備える。
【0054】
なお、これらの構成は機能を示す構成であり、ゲートウェイ300は、例えばプロセッサで実現される処理部、半導体メモリ等で実現される記憶部、入出力ポートで実現される入出力部等を備える情報処理装置として提供される。
【0055】
上記の機能を示す構成は、記憶部に保持されるプログラムを処理部により読み出し、実行し、記憶部へ所定のデータを記録することで実現される。若しくは、記憶部へ所定のデータを記録することの代わりに、入出力部を介してデータの送受信を実行することでこれらの構成が実現されてもよい。又は、上記の機能を示す構成は、これらの組み合わせで実現されてもよい。
【0056】
フレーム送受信部310は、バス200a、200bのそれぞれに対して、CANのプロトコルに従ったメッセージを送受信する。
【0057】
より具体的には、フレーム送受信部310は、バス200に送出されたメッセージを1bitずつ読み出し、読み出したメッセージをフレーム解釈部320に転送する。
【0058】
また、フレーム送受信部310は、フレーム生成部380より送信されたバス情報に応じて、メッセージをバス200a及び200bに1bitずつ送出する。
【0059】
フレーム送受信部310は、バス200aから受信したメッセージをバス200bに送信し、バス200bから受信したメッセージをバス200aに送信することでバス200間でのメッセージの転送を実行する。
【0060】
フレーム解釈部320は、フレーム送受信部310よりメッセージの値を受け取り、CANプロトコルにおける各フィールドにマッピングして、受信したメッセージの解釈を行う。フレーム解釈部320は、IDフィールドの値と解釈した一連の値を、受信ID判定部330へ転送する。
【0061】
フレーム解釈部320はさらに、受信ID判定部330から通知される判定結果に応じて、メッセージのIDフィールドの値及びIDフィールド以降に現れるデータフィールドをフレーム処理部350へ転送するか、メッセージの受信を中止するかを決定する。
【0062】
また、フレーム解釈部320は、受信したメッセージがCANプロトコルに則っていないメッセージと判断した場合は、エラーフレームを送信するようにフレーム生成部380へ要求する。
【0063】
エラーフレームは、CANネットワーク上でエラーが発生した場合に、ノードから送信される、上述のメッセージとは異なる、CANプロトコルで規定される所定のフォーマットのフレームである。エラーフレームがバスに送出されると、そのネットワークでのメッセージの送信は中断される。
【0064】
また、フレーム解釈部320は、他のノードが送信したエラーフレームを受信したと解釈した場合、読み取り中のメッセージを破棄する。
【0065】
受信ID判定部330は、フレーム解釈部320からIDフィールドの値を受け取り、受信IDリスト保持部340が保持しているメッセージIDのリストに従い、読み出したメッセージを受信するか否かの判定を行う。受信ID判定部330は、この判定の結果をフレーム解釈部320へ通知する。
【0066】
受信IDリスト保持部340は、ゲートウェイ300が受信するメッセージIDのリスト(受信IDリスト)を保持する。
図4は、本実施の形態における受信IDリストの一例を示す図である。
図4における受信IDリストの詳細は、後述する。
【0067】
フレーム処理部350は、転送ルール保持部360が保持するデータ転送に関するルールに従って、受信したメッセージのIDに応じて転送先となるバス200を決定し、転送先となるバス200と、フレーム解釈部320より通知されたメッセージIDと、転送するデータとをフレーム生成部380へ通知する。
【0068】
またフレーム処理部350は、フレーム解釈部320より受け取ったメッセージを不正検知処理機能群370へ送り、不正検知処理機能群370に対して、そのメッセージが、異常なメッセージであるか否かの判定を行うように要求する。不正検知処理機能群370において異常なメッセージであると判定されたメッセージを、フレーム処理部350は転送しない。
【0069】
転送ルール保持部360は、各バス200のデータ転送に関するルール(以下、転送ルールともいう)を保持する。
図5は、本実施の形態における転送ルールの一例を示す図である。
図5における転送ルールの詳細は、後述する。
【0070】
不正検知処理機能群370は、受信中のメッセージが異常なメッセージであるか否かを判定する機能群である。不正検知処理機能群370に含まれる機能構成の詳細は後述する。
【0071】
フレーム生成部380は、フレーム解釈部320からのエラーフレーム送信の要求に従い、エラーフレームを生成し、フレーム送受信部310にエラーフレームを送出させる。
【0072】
またフレーム生成部380は、フレーム処理部350より受け取ったメッセージID及びデータを使ってメッセージフレームを生成し、バス情報とともに、フレーム送受信部310にメッセージフレームを送出する。
【0073】
[1.4 受信IDリスト]
図4は、本実施の形態における受信IDリストの一例を示す図である。受信IDリストは、ゲートウェイ300が受信して処理するメッセージのメッセージIDのリストである。
【0074】
図4において、受信IDリストは、各行にメッセージのIDが格納されている。
図4の受信IDリストは、メッセージIDが、「1」、「2」、「3」及び「4」であり、ゲートウェイ300は、これらのメッセージIDのメッセージを受信する。ゲートウェイ300は、受信IDリストに含まれないメッセージIDのメッセージの受信を中止する。
【0075】
なお、IDの値及び受信IDリストに含まれるIDの個数は説明のための一例であり、ゲートウェイ300で用いられる受信IDリストの構成をこれに限定するものではない。
【0076】
[1.5 転送ルール]
図5は、本実施の形態における転送ルールの一例を示す図である。
図5において、転送ルールは、各行にメッセージの転送元のバスと転送先のバス、及び転送対象のメッセージIDの組み合わせが格納されている。
【0077】
具体的には、転送ルールの1行目は、転送元「バス200a」、転送先「バス200b」、ID「*」であり、ゲートウェイ300は、バス200aから受信するメッセージを、IDが何であってもバス200bに転送する、というルールである。転送ルールの2行目は、転送元「バス200b」、転送先「バス200a」、ID「3」であり、ゲートウェイ300は、バス200bから受信するメッセージは、IDが「3」のメッセージであればバス200aに転送する、というルールである。
【0078】
[1.6 不正検知処理機能群の構成]
図6は、本実施の形態におけるゲートウェイ300が備える不正検知処理機能群370の一例を示すブロック図である。
図6において、不正検知処理機能群370は、周期判定部371と、ルール判定情報保持部372と、調停検出部373と、受信メッセージ情報保持部374とを含む。
【0079】
なお、これらの構成は機能を示す構成であり、ゲートウェイ300において記憶部に保持されるプログラムを処理部により読み出し、実行し、記憶部へ所定のデータを保持する。若しくは、記憶部へ所定のデータを記録することの代わりに、入出力部を介してデータの送受信を実行することでこれらの構成が実現されてもよい。又は、これらの構成は、上記の組み合わせで実現されてもよい。
【0080】
周期判定部371は、同じIDを持つメッセージごとに、メッセージを受信した周期(経過時間)が正常と判定できる範囲内に収まっているかどうかを判定する。
【0081】
周期判定部371は、フレーム処理部350から受信したメッセージからメッセージのIDを取得し、そのIDに関連した周期を判定するために必要な情報を取得する。具体的には、ルール、前回受信時刻、をルール判定情報保持部372から取得する。
【0082】
周期判定部371は、現在のメッセージを受信した時刻と、ルール判定情報保持部372から取得した前回受信時刻との差を求め、その差の値(経過時間)が、ルール判定情報保持部372から取得したルールで示される範囲内に含まれるかどうかを判定する。
【0083】
周期判定部371は、上記経過時間がルールで示される範囲内に含まれる場合はOKと判定し、上記経過時間がルールで示される範囲から外れる場合はNGと判定する。
【0084】
ここで、ルールは、同じIDのメッセージを前回受信してからの経過時間の上限と下限の情報であってもよい。また、ルールは、基準となる経過時間の値と、基準となる時間からのOKと判定される範囲の幅の情報であってもよい。
【0085】
また、周期判定部371における判定は、メッセージを受信した時刻と、前回受信時刻との差が、ルールで示される範囲内に含まれるか否かの判定をするとしたが、これに限定されない。例えば、周期判定部371は、前回受信時刻にルールで示される経過時間の範囲を足すことで、期待する受信時刻の範囲を求め、今回受信したメッセージの受信時刻が、その期待する受信時刻の範囲内に含まれるか否かを判定してもよい。
【0086】
また、周期判定部371は、調停検出部373に、メッセージを受信した際に調停が発生していたかどうかを問い合わせる。周期判定部371は、調停検出部373から調停が発生していたか否かを示す情報と、調停が発生していた場合は、その発生している調停の開始時刻を取得する。
【0087】
周期判定部371は、NGと判定した場合において、調停が発生していた場合、調停の開始時刻が上記ルールで示される範囲の上限より早い場合、すなわち、値が小さい場合には、判定をOKに変更する。また、調停が発生していなかった場合には、判定をNGのままで変更しない。
【0088】
なお、周期判定部371は、メッセージを受信するたびに調停検出部373へ調停が発生していたか否かを問い合わせてもよい。また、ルール判定情報保持部372から取得したルールに対する判定がNGの場合にのみ、調停検出部373へ調停が発生していたか否かを問い合わせてもよい。
【0089】
周期判定部371が、ルール判定情報保持部372から取得したルールに対する判定がNGの時のみ調停検出部373へ調停が発生していたか否かを問い合わせる場合は、周期判定部371は、メッセージを受信するたびに、メッセージの受信時刻を調停検出部373へ通知するか、受信メッセージ情報保持部374へ受信時刻を保存する。
【0090】
また、周期判定部371は、調停検出部373において調停が発生していた場合、メッセージの受信時刻が基準となる経過時間の値より小さい場合に、判定をOKに変更してもよい。
【0091】
また、周期判定部371は、判定がOKの場合に、その時に受信したメッセージの受信時刻を、ルール判定情報保持部372へ通知する。
【0092】
ルール判定情報保持部372は、周期判定部371が使用するルールとメッセージに含まれるIDごとのメッセージの受信時刻を保持する。ルールは、同じIDのメッセージを前回受信してからの経過時間の上限と下限の情報であってもよい。また、基準となる経過時間の値と、基準となる経過時間の値からのOKと判定される範囲の幅を示す情報であってもよい。
【0093】
調停検出部373は、周期判定部371からの問合せに応じて、そのメッセージを受信したときに、調停が発生していたか否かを検出する。
図7A、
図7Bは、本実施の形態における調停発生時のメッセージの受信パターンを示す図である。
図7A、
図7Bにおいて、三角の記号は、1つのメッセージを示し、横軸は時間を示しており、T1、T2はメッセージを受信する予定の時刻を示している。αは、ルール判定情報保持部372から取得したルールに対する判定がOKとなる範囲の幅を示している。
【0094】
図7A、
図7Bにおいて、例えば、時刻(T1-α)は、周期判定部371が時刻T1においてOKと判定する下限値であり、時刻(T1+α)は、周期判定部371が時刻T1においてOKと判定する上限値である。
【0095】
また、メッセージM1、メッセージM3は、周期判定部371が時刻T1に受信すると予想していたメッセージであり、メッセージM2、メッセージM4は、調停が開始されたメッセージである。調停検出部373は、メッセージM2又はメッセージM4の受信時刻を、調停の開始時刻として、周期判定部371へ通知する。
【0096】
調停検出部373は、予め決められた時間間隔以下でメッセージを受信した際に、調停が発生していたと判定する。例えば、
図7Aでは、メッセージM2からメッセージM1までメッセージが連続して送信されているため、メッセージM2からメッセージM1まで調停が発生していたと判定する。
図7Bでは、メッセージM4と、メッセージM4の前の時刻T1に受信したメッセージM5の時間間隔が広いため、メッセージM4から調停が発生したと判定する。
【0097】
図6において、調停検出部373は、周期判定部371からメッセージの受信時刻を受け取り、受信メッセージ情報保持部374に格納されている、前回メッセージの受信時刻を取得し、調停が発生したか否かを判定する。調停検出部373は、調停が発生していると判定した場合、受信メッセージ情報保持部374から調停が発生しているか否かを示す情報である調停発生状態情報を取得する。取得した調停発生状態情報が、調停が発生していないことを示す場合、調停検出部373は、調停発生開始時刻としてメッセージの受信時刻を受信メッセージ情報保持部374で保持する。また、調停検出部373は、前回のメッセージの受信時刻として、今回のメッセージの受信時刻を受信メッセージ情報保持部374で保持し、調停発生状態情報を受信メッセージ情報保持部374で保持する。
【0098】
また、調停検出部373は、周期判定部371から調停が発生しているかどうかの問い合わせがあった場合に、メッセージの受信時刻から、調停が発生しているかどうかを判定する。そして、調停が発生していた場合には、受信メッセージ情報保持部374から調停発生開始時刻を取得し、調停が発生している判定結果と一緒に、周期判定部371へ通知する。一方、調停検出部373は、調停が発生していなかった場合には、調停が発生していない旨を示す判定結果のみを通知する。
【0099】
なお、調停検出部373は、調停が発生していなかった場合には、調停が発生していない旨を示す判定結果のみを通知するとしたが、これに限定するものではない。例えば、調停検出部373は、判定結果と一緒に調停発生開始時刻を示す値を通知してもよいし、前回の調停発生時の調停発生開始時刻を通知してもよい。
【0100】
受信メッセージ情報保持部374は、調停検出部373が使用する前回のメッセージの受信時刻と、調停発生状態情報、調停発生開始時刻を保持する。
【0101】
なお、不正検知処理機能群370は、周期判定を行う機能群として説明したが、これに限定されない。
図8は、本実施の形態における不正検知処理機能群370の別の一例を示す図であり、不正検知処理機能群370の変形例を示している。
図8において、不正検知処理機能群370aは、6種類の判定機能を含んでいる。具体的には、判定機能として、メッセージのIDフィールドをチェックする機能であるID判定機能、メッセージのデータ長をチェックする機能であるデータ長判定機能、メッセージが送信される周期(時間間隔)をチェックする機能である送信周期判定機能、メッセージが送信される頻度をチェックする機能である送信頻度判定機能、メッセージのデータフィールドの値(データ値)をチェックする機能であるデータ値判定機能を含み、さらに、これらの判定機能の判定結果、送信周期、頻度、データ値、又はデータ値の変化量などに基づいて車両の状態を認識し、車両状態をチェックする機能である車両状態判定機能を含む。さらに不正検知処理機能群370aは、受信したメッセージが異常なメッセージであるか否かを、これらの判定機能による判定結果から総合的に判定する総合判定機能を含む。総合判定機能の結果が、不正検知処理機能群370aによる不正の検知の結果となる。
【0102】
なお、
図6における不正検知処理機能群370の周期判定部371と、ルール判定情報保持部372と、調停検出部373と、受信メッセージ情報保持部374とは、
図8における不正検知処理機能群370aの、送信周期判定機能に組み込まれていてもよい。
【0103】
なお、これらの構成は機能を示す構成であり、ゲートウェイ300において記憶部に保持されるプログラムを処理部により読み出し、実行し、記憶部へ所定のデータを格納、若しくは入出力部を介してデータの送受信を実行することによって実現される。又は、これらの構成は、上記の組み合わせで実現されてもよい。
【0104】
[1.7 ECUの構成]
図9は、本実施の形態における車載ネットワークシステム10に含まれるECU100の一例を示すブロック図である。
図9において、ECU100は、フレーム送受信部110と、フレーム解釈部120と、受信ID判定部130と、受信IDリスト保持部140と、フレーム処理部150と、データ取得部170と、フレーム生成部180とを備える。
【0105】
なお、これらの構成は機能を示す構成であり、ECU100は、例えばプロセッサで実現される処理部、半導体メモリ等で実現される記憶部、入出力ポートで実現される入出力部等を備える情報処理装置として提供される。
【0106】
上記の機能を示す構成は、記憶部に保持されるプログラムを処理部により読み出し、実行し、記憶部へ所定のデータを保持し、若しくは入出力部を介してデータの送受信を実行することで実現される。又は、これらの構成は、上記の組み合わせで実現されてもよい。
【0107】
フレーム送受信部110は、バス200に対して、CANのプロトコルに従ったメッセージを送受信する。
【0108】
より具体的には、フレーム送受信部110は、バス200に送出されたメッセージを1bitずつ読み出し、読み出したメッセージをフレーム解釈部120に転送する。
【0109】
また、フレーム送受信部110は、フレーム生成部180より通知を受けたメッセージをバス200に送出する。
【0110】
フレーム解釈部120は、フレーム送受信部110よりメッセージの値を受け取り、CANプロトコルにおける各フィールドにマッピングするようにしてメッセージの解釈を行う。フレーム解釈部120は、IDフィールドと解釈した一連の値を、受信ID判定部130へ転送する。
【0111】
フレーム解釈部120はさらに、受信ID判定部130から通知される判定結果に応じて、メッセージのIDフィールドの値及びIDフィールド以降に現れるデータフィールドをフレーム処理部150へ転送するか、メッセージの受信を中止するかを決定する。
【0112】
また、フレーム解釈部120は、受信したメッセージが、CANプロトコルに則っていないメッセージであると判断した場合は、エラーフレームを送信するようにフレーム生成部180へ要求する。
【0113】
また、フレーム解釈部120は、他のノードが送信したエラーフレームを受信したと判断した場合、読取中のメッセージを破棄する。
【0114】
受信ID判定部130は、フレーム解釈部120からIDフィールドの値を受け取る。そして、受信IDリスト保持部140が保持しているメッセージIDのリストに従い、読み出したメッセージを受信するか否かの判定を行う。受信ID判定部130は、この判定の結果をフレーム解釈部120へ通知する。
【0115】
受信IDリスト保持部140は、ECU100が受信する受信IDリストを保持する。受信IDリストは、
図4と同様の形式であるため、ここではその説明を省略する。
【0116】
フレーム処理部150は、受信したメッセージのデータに応じた処理を行う。処理の内容は、ECU100ごとに異なる。
【0117】
例えば、ECU100aでは、自動車の時速が30kmを超えているときに、ドアが開いていることを示すメッセージを受信すると、アラーム音を鳴らすための処理を実行する。ECU100cは、ブレーキがかかっていないことを示すメッセージを受信しているときにドアが開くと、アラーム音を鳴らすための処理を実行する。
【0118】
これらの処理は、説明のために一例として挙げているだけであり、ECU100は上記以外の処理を実行してもよい。このような処理を実行するために送出するフレームを、フレーム処理部150はフレーム生成部180に生成させる。
【0119】
データ取得部170は、ECU100に接続されている機器の状態を示すデータ又はセンサによる計測値等を示す出力データを取得し、フレーム生成部180に転送する。
【0120】
フレーム生成部180は、フレーム解釈部120からのエラーフレーム送信の要求に従い、エラーフレームを構成してフレーム送受信部110へ送る。
【0121】
またフレーム生成部180は、データ取得部170より受け取ったデータの値に対して予め定められたメッセージIDを付けてメッセージフレームを構成し、フレーム送受信部110へ送る。
【0122】
[1.8 不正検知処理]
図10は、本実施の形態における不正検知処理の一例を示すフローチャートである。
【0123】
まず、不正検知処理機能群370の周期判定部371は、フレーム処理部350からメッセージを受け取る(ステップS1001)。
【0124】
周期判定部371では、受け取ったメッセージが、同じIDを持つメッセージに対して、メッセージを受信した周期(経過時間)が正常と判定できる範囲内に収まっているかどうかを判定する(ステップS1002)。
【0125】
周期判定部371は、受信したメッセージが正常と判定できる範囲内に収まっていない場合(ステップS1003でYesの場合)、ステップS1004へ進む。周期判定部371は、受信したメッセージが正常と判定できる範囲内に収まっている場合(ステップS1003でNoの場合)、ステップS1007へ進む。
【0126】
ステップS1003で周期判定部371が受信したメッセージが正常と判定できる範囲に収まっていないと判定した場合(ステップS1003でYesの場合)、調停検出部373は、メッセージ受信時に調停が発生していたか否かの検出を行う(ステップS1004)。
【0127】
調停検出部373は、メッセージ受信時に調停が発生していた場合(ステップS1005でYesの場合)、ステップS1007へ進む。調停検出部373は、メッセージ受信時に調停が発生していなかった場合(ステップS1005でNoの場合)、ステップS1006へ進む。
【0128】
ステップS1005で、調停検出部373において調停が発生していると検出した場合(ステップS1005でNoの場合)、周期判定部371は、受信したメッセージが正常なメッセージではない、すなわち、異常なメッセージであると判定する(ステップS1006)。その後、不正検知処理機能群370での不正検知処理を終了する。
【0129】
ステップS1003で、周期判定部371が受信したメッセージが正常と判定できる範囲内に収まっていると判定した場合(ステップS1003でNoの場合)又は、ステップS1005で、調停検出部373がメッセージ受信時に調停が発生したと検出した場合(ステップS1005でYesの場合)、周期判定部371は、受信したメッセージが正常なメッセージであると判定する(ステップS1007)。その後、不正検知処理機能群370での不正検知処理を終了する。
【0130】
[1.9 転送処理]
図11は、本実施の形態における転送処理の一例を示すフローチャートである。ゲートウェイ300が行う転送処理は、転送の方向によらず実質的に共通であるため、ゲートウェイ300がバス200aから受信したメッセージをバス200bへ転送する場合を例に説明する。
【0131】
まず、フレーム送受信部310は、バス200aからメッセージを読み出す(ステップS1101)。フレーム送受信部310は、読み出したメッセージの各フィールドのデータをフレーム解釈部320へ通知する。
【0132】
次に、フレーム解釈部320は、受信ID判定部330と連携して、読み出したメッセージのIDフィールドの値(メッセージID)から、受信して処理する対象のメッセージであるか否かを判定する(ステップS1102)。フレーム解釈部320が処理する対象のメッセージではないと判定した場合(ステップS1102でNoの場合)、当該メッセージの転送は行われない。
【0133】
フレーム解釈部320は、ステップS1102で、受信して処理する対象のメッセージであると判断した場合には(ステップS1102でYesの場合)、フレーム処理部350へメッセージ内の各フィールドの値を転送する。その後、フレーム処理部350は、転送ルール保持部360に保持される転送ルールに従って、転送先のバスを決定する(ステップS1103)。
【0134】
フレーム処理部350は、フレーム解釈部320から受け取ったメッセージ内の各フィールドの値を不正検知処理機能群370へ通知し、異常なメッセージであるか否かの判定を要求する。不正検知処理機能群370は、通知されたメッセージの各フィールドの値から、通知されたメッセージが異常なメッセージであるか否かを判定し、その判定の結果をフレーム処理部350へ通知する(ステップS1104)。
【0135】
ステップS1104で不正検知処理機能群370が、メッセージは異常なメッセージであると判定した場合(ステップS1105でYesの場合)、そのメッセージの転送は行われない。
【0136】
ステップS1104で不正検知処理機能群370が、メッセージは異常なメッセージではなく正常なメッセージであると判定した場合(ステップS1105でNoの場合)、フレーム処理部350は、そのメッセージをステップS1103で決定した転送先のバスに、転送するようフレーム生成部380へ要求する。
【0137】
フレーム生成部380は、フレーム処理部350からの要求を受けて、指定された転送先が受信するようメッセージを生成し、このメッセージをフレーム送受信部310に送出させる(ステップS1106)。
【0138】
なお、上記の例では、受信したメッセージの転送先の決定(ステップS1103)の後にこのメッセージが異常なメッセージであるかの判定(ステップS1104)がなされているが、これに限定されない。受信したメッセージが異常なメッセージであるかの判定の後にこのメッセージの転送先の決定がなされてもよい。また、受信したメッセージの転送先の決定と異常なメッセージであるかの判定が並行して行われてもよい。
【0139】
[1.10 効果]
本実施の形態では、不正検知処理機能群370は、車載ネットワークシステムのネットワークを流れるメッセージを監視し、メッセージが所定の周期より遅れて受信された場合、調停によって遅れたのかどうかを判定することで、異常なメッセージであるか否かを判定する。これにより従来の不正検知の技術で用いられていたような、例えば所定の周期より短い時間間隔でメッセージを受信したときに、不正が発生したと判断する技術では、正常なメッセージであるか異常なメッセージであるかの判定が困難であったメッセージに関しても、より高い精度で異常なメッセージであるか否かを判定することが可能になる。その結果、車載ネットワークシステムの安全性が高められる。
【0140】
(実施の形態2)
[2.概要]
実施の形態2では、実施の形態1の不正検知処理機能群370の代わりに、不正検知処理機能群370bが用いられる。不正検知処理機能群370bにおいて周期判定部が、ルール判定情報保持部へ通知するメッセージの受信時刻の決定に、調停検出部373の検出結果を利用する。このような不正検知処理機能群370bは、実施の形態1で説明した
図3における不正検知処理機能群370に代えてゲートウェイ300に含まれ得る。
【0141】
なお、この不正検知処理機能群370bを含むゲートウェイ、及びこのゲートウェイを備える車載ネットワークシステムは実施の形態1と基本的に共通のため、その構成についての説明を省略する。
【0142】
[2.1 不正検知処理機能群の構成]
図12は、本実施の形態における不正検知処理機能群370bを示すブロック図である。
図12において、
図6と同じ構成要素については同じ符号を用い、説明を省略する。また、同じ構成の一部については、図示を省略する。以下、不正検知処理機能群370bについて、不正検知処理機能群370との差異点を中心に説明する。
【0143】
不正検知処理機能群370bは、実施の形態1における不正検知処理機能群370の構成に加え、周期起点決定部375と、送信タイプ判定部376を含む。また、不正検知処理機能群370bは、周期判定部371に代えて周期判定部371bを含む。
【0144】
これらの構成は機能を示す構成であり、ゲートウェイ300において記憶部に保持されるプログラムを処理部により読み出し、実行し、記憶部へ所定のデータを保持する。若しくは、記憶部へ所定のデータを記録することの代わりに、入出力部を介してデータの送受信を実行することで実現される。又は、これらの構成は上記の組み合わせで実現される。
【0145】
周期起点決定部375は、周期判定部371bがメッセージを受信した周期(経過時間)が正常と判断できる範囲内に収まっているかどうかを判定するときに、経過時間を算出するための起点として利用する「前回受信時刻」の値を決定する。周期起点決定部375は、周期判定部371bからの問合せを受け、経過時間を算出するための起点として利用する「前回受信時刻」の値を決定し、周期判定部371bへ通知する。
【0146】
周期起点決定部375は、受信したメッセージのIDを送信タイプ判定部376へ通知し、送信タイプの判定を依頼する。周期起点決定部375は、送信タイプ判定部376が判定した結果に応じて、「前回受信時刻」の値を決定する。
【0147】
例えば、メッセージの受信時刻(今回受信時刻)を「前回受信時刻」の値とする送信タイプ(Aタイプ)と、メッセージを受信する予定だった時刻(受信予定時刻)、つまり、前回受信時刻に、ルールとして保持している基準となる経過時間を足した値を「前回受信時刻」の値とする送信タイプ(Bタイプ)とがあるとする。
【0148】
この時、周期起点決定部375は、送信タイプ判定部376が送信タイプをAタイプと判定したときは、今回受信時刻を「前回受信時刻」として周期判定部371bへ通知する。また、周期起点決定部375は、送信タイプ判定部376が送信タイプをBタイプと判定したときには、受信予定時刻を「前回受信時刻」として周期判定部371bへ通知する。
【0149】
また、周期起点決定部375は、周期判定部371bから受信したメッセージと共に、そのメッセージを受信した際に調停が発生していたかどうかの情報も取得し、調停が発生していたかどうかで、起点となる時刻を決定してもよい。
【0150】
例えば、そのメッセージを受信した際に調停が発生していなかった場合には、周期起点決定部375は常に今回受信時刻を「前回受信時刻」として周期判定部371bへ通知する。そして、そのメッセージを受信した際に調停が発生していた場合にのみ、周期起点決定部375は送信タイプ判定部376へ送信タイプの判定を依頼し、得られた送信タイプによって起点となる時刻を上述した方法等で決定してもよい。
【0151】
送信タイプ判定部376は、周期起点決定部375からの問合せに応じて、受信したメッセージのIDから、送信タイプを判定し、周期起点決定部375へ通知する。
【0152】
送信タイプの判定は、例えば、送信タイプ判定部376が、IDとそのIDの送信タイプの組が記載されたテーブルを事前に保持しておき、周期起点決定部375からの問合せに応じて、事前に保持しておいたテーブルから、受信したメッセージのIDに対応した送信タイプを判定する。
【0153】
周期判定部371bは、実施の形態1における周期判定部371と同様の処理を行い、受信したメッセージが最終的に正常なメッセージであると判定した際に、ルール判定情報保持部372に保持を依頼する前回受信時刻の決定を、周期起点決定部375へ依頼する。つまり、周期判定部371bは、周期起点決定部375が通知してきた前回受信時刻を、ルール判定情報保持部372へ通知し、保持を依頼する。
【0154】
なお、周期起点決定部375は、メッセージを受信した際に調停が発生していたかどうかの情報を、周期判定部371bから取得するとしたが、これに限定されない。例えば、周期起点決定部375が直接、調停検出部373からメッセージを受信した際に調停が発生していたかどうかの情報を取得してもよい。
【0155】
[2.2 不正検知処理]
図13は、本実施の形態における不正検知処理の一例を示すフローチャートである。
図10と共通のステップについては、
図13において同じ参照符号を用いて示し、一部説明を省略する。
【0156】
まず、不正検知処理機能群370bの周期判定部371bは、フレーム処理部350からメッセージを受け取る(ステップS1001)。
【0157】
ステップS1002からステップS1007までの処理は、
図10と共通であるため、説明を省略する。
【0158】
周期判定部371は、ステップS1007で受信したメッセージが正常なメッセージであると判定すると、周期起点決定部375へ、前回受信時刻の決定を依頼する。周期判定部371bは、周期起点決定部375が通知してきた前回受信時刻を、ルール判定情報保持部372へ通知し、ルール判定情報保持部372が保持する前回受信時刻を更新する(S1008)。その後、不正検知処理機能群370bでの不正検知処理は終了する。
【0159】
[2.3 効果]
本実施の形態では、不正検知処理機能群370bでの不正検知処理において、周期判定部371がメッセージを受信した周期(経過時間)が正常と判断できる範囲内に収まっているかどうかを判定する際に利用する「前回受信時刻」の値を、送信タイプ又は、調停が発生していたかどうかにより柔軟に決定する。これにより、従来起こりえた、IDごとに送信方法が異なる場合又は、調停が発生した際の送信タイミングのズレにより周期検知が正しくできない場合でも、より高い精度で異常なメッセージであるか否かの判定をすることができる。その結果、車載ネットワークシステムの安全性が高められる。
【0160】
[3.その他の変形例]
本開示は、上記で説明した各実施の形態に限定されない。本開示の趣旨を逸脱しない限り、当業者が思いつく各種変形を実施の形態に施したもの、及び異なる実施の形態における構成要素を組み合わせて構築される形態も、本開示の範囲内に含まれる。例えば以下のような変形例も本開示に含まれる。
【0161】
(1)上記の実施の形態2では、不正検知処理機能群370bは、周期判定部371bと、ルール判定情報保持部372と、調停検出部373と、受信メッセージ情報保持部374と、周期起点決定部375と、送信タイプ判定部376とを備えると説明したが、これに限定されない。
【0162】
図14は、変形例における不正検知処理機能群の一例を示す図である。
図14に示すように、不正検知処理機能群370cは、周期判定部371cと、ルール判定情報保持部372と、調停検出部373と、受信メッセージ情報保持部374と、周期起点決定部375cと、送信タイプ判定部376cと、周期タイプ学習部377と、周期タイプ保持部378とを備える。
【0163】
周期タイプ学習部377は、周期判定部371cから受信した情報を元に、IDごとの周期タイプを判定する。判定方法としては、例えば、周期タイプ学習部377は、IDごとに受信したメッセージの受信時刻を記録(蓄積)していき、一定数の受信時刻が蓄積できたタイミングで、IDごとにそれぞれの受信時刻の一つ前の受信時刻との差(経過時間)を求める。
【0164】
周期タイプ学習部377は、その受信時刻の差が、IDごとに決められている経過時間の基準値と比較したときに、(1)基準値と同程度か、(2)基準値より短いか、(3)基準値より長いかを判定する。
【0165】
ここで、基準値と同程度か否かの判定には、予め決められたしきい値(上限用と下限用)を用いる。周期タイプ学習部377は、基準値から下限用のしきい値を引いた値から、基準値に上限用のしきい値を足した値の間に、経過時間が含まれる場合に、「基準値と同程度」と判定し、経過時間が、基準値から下限用のしきい値を引いた値より小さい場合に、「基準値より短い」と判定し、経過時間が、基準値に上限用のしきい値を足した値より大きい場合に、「基準値より長い」と判定する。
【0166】
周期タイプ学習部377は、判定した結果(1.基準値と同程度か、2.基準値より短いか、3.基準値より長いか)の数をIDと一緒に周期タイプ保持部378へ通知する。
【0167】
周期タイプ保持部378は、周期タイプ学習部377から通知された周期タイプの判定結果を保持し、送信タイプ判定部376からの問合せに応じて、周期タイプを通知する。周期タイプ保持部378は、周期タイプ学習部377からの通知を受けた際に、既に通知されたIDと同じIDの判定結果を保持していた場合、新たに通知された判定結果で上書きしてもよいし、既に保持していた値に足した値で更新してもよい。
【0168】
周期判定部371cは、受信したメッセージのうち、最終的にOKと判定したメッセージ関する情報を、周期タイプ学習部377へ通知する。
【0169】
送信タイプ判定部376cは、周期起点決定部375cから送信タイプの判定を依頼された際に、依頼されたIDに関連する受信タイミングごとの経過時間と経過時間の基準値とを比較した結果を周期タイプ保持部378より取得する。送信タイプ判定部376は、(2)基準値より短いと判定した数が、(3)基準値より長いと判定した数より少なかった場合、送信タイプがAタイプであると判定し、(2)基準値より短いと判定した数と、(3)基準値より長いと判定した数とが、ほぼ同じ数であった場合に、送信タイプがBタイプであると判定し、それ以外の場合は、送信タイプが判定できないと判定する。(2)基準値より短いと判定した数が(3)基準値より長いと判定した数より少ないとの判定は、判定した数そのものが予め決められた数以上の差があるかどうかで判定してもよいし、判定した数の比が予め決められた値より小さいかどうかで判定してもよい。(1)基準値と同じぐらいか、(2)基準値より短いか、(3)基準値より長いかのそれぞれの割合を求め、その割合が予め決められた値以上の差があるかどうかで判定してもよい。(2)基準値より短いと判定した数と、(3)基準値より長いと判定した数とが、ほぼ同じ数との判定は、判定した数そのものが予め決められた数以内の差に収まっているかどうか判定してもよいし、判定した数の比が予め決められた値より大きい、または予め決められた範囲に収まっているかどうかで判定してもよい。(1)基準値と同じぐらいか、(2)基準値より短いか、(3)基準値より長いかのそれぞれの割合を求め、その割合が予め決められた値以内の差に収まっているかどうかで判定してもよい。
【0170】
送信タイプ判定部376cは、周期起点決定部375cからの要求に応じて、判定した結果を通知する。送信タイプ判定部376cは、送信タイプが判定できなかった場合には、予め決められたタイプを周期起点決定部375cへ通知する。
【0171】
なお、周期タイプ学習部377は、IDごとに受信したメッセージの受信時刻を記録していき、一定数の受信時刻が蓄積できたタイミングで、IDごとにそれぞれの受信時刻の一つ前の受信時刻との差(経過時間)を求めるとしたが、これに限定されるものではない。
【0172】
例えば、周期タイプ学習部377は、車両が工場から出荷される前に、周期タイプを学習する時間を設け、その間に受信したメッセージの受信時刻を蓄積し、IDごとにそれぞれの受信時刻の一つ前の受信時刻との差(経過時間)を求めてもよい。
【0173】
さらに、周期タイプ学習部377は、工場出荷後から受信時刻を蓄積し、一定数、または、一定時間、受信時刻を蓄積したタイミングで、IDごとにそれぞれの受信時刻の一つ前の受信時刻との差(経過時間)を求めてもよい。
【0174】
また、周期タイプ学習部377は、車両外部の機器からメッセージの受信時刻を蓄積するように指示を受け、受信時刻を蓄積し、外部の機器から蓄積停止の指示を受けるまで一定数、または、一定時間、受信時刻を蓄積したタイミングで、IDごとにそれぞれの受信時刻の一つ前の受信時刻との差(経過時間)を求めてもよい。
【0175】
また、周期タイプ学習部377は、メッセージを受信するたびに受信時刻を記録し、一定数、または、一定時間の受信時刻が蓄積できた後は、メッセージを受信するごとに、受信時刻の一つ前の受信時刻との差(経過時間)を求めてもよい。
【0176】
なお、周期タイプ学習部377は、受信時刻を記録し、あるタイミングでIDごとにそれぞれの受信時刻の一つ前の受信時刻との差(経過時間)を求めるとしたが、これに限定されるものではない。例えば、周期タイプ学習部377は、メッセージを受信するごとに、前のメッセージの受信時刻との差(経過時間)を求め、経過時間を記録(蓄積)し、最新の受信時刻を記録してもよい。
【0177】
なお、基準値と同じぐらいかどうかの判定には、予め決められたしきい値(上限用と下限用)を用いるとしたが、これに限定されるものではない。例えば、1つのしきい値を用いて、下限も上限も同じ値を用いてもよいし、基準値としきい値という組み合わせではなく、下限値と上限値の2つの値を用いてもよい。
【0178】
なお、周期タイプ学習部377は、判定した結果((1)基準値と同じぐらいか、(2)基準値より短いか、(3)基準値より長いか)の数を周期タイプ保持部378へ通知するとしたが、これに限定されるものではない。例えば、割合を通知してもよいし、周期タイプ保持部378へ既に保持されている値があれば、その値に、今回の値を足した数を通知してもよい。
【0179】
これにより、送信タイプを事前に設定することなく、自動的に送信タイプを判定することが可能となる。更に、修理などでECUが交換された場合にも、自動的に送信タイプを判定することが可能となる。その結果、更なる不正検知精度の向上又は、処理コスト、製造コストを低減することが可能となる。
【0180】
(2)上記の実施の形態2では、不正検知処理機能群370bは、周期判定部371bと、ルール判定情報保持部372と、調停検出部373と、受信メッセージ情報保持部374と、周期起点決定部375と、送信タイプ判定部376とを備えると説明したが、これに限定されない。
【0181】
図15は、変形例における不正検知処理機能群の一例を示す図である。
図15に示すように、不正検知処理機能群370dは、周期判定部371bと、ルール判定情報保持部372と、調停検出部373と、受信メッセージ情報保持部374と、周期起点決定部375dとを備える。
【0182】
周期起点決定部375dは、メッセージの受信時に調停が発生していたかどうかで、周期の起点を決定する。例えば、調停が発生していなかった場合には、周期起点決定部375dは今回受信時刻を「前回受信時刻」として周期判定部371bへ通知し、調停が発生していた場合には、周期起点決定部375dは受信予定時刻を「前回受信時刻」として周期判定部371bへ通知する。
【0183】
なお、周期起点決定部375dは、今回受信時刻を「前回受信時刻」とするか、受信予定時刻を「前回受信時刻」とするかを周期判定部371bへ通知するとしたが、これに限定されるものではない。
【0184】
例えば、周期起点決定部375dは、調停が発生した1回目は今回受信時刻を「前回受信時刻」として、その後、調停が連続して発生する度に、予め決められた時間又は予め決められた割合で、受信予定時刻へ近づけた時刻を「前回受信時刻」として周期判定部371bへ通知してもよい。また、調停が発生した1回目から受信予定時刻へ近づけた時刻を「前回受信時刻」として周期判定部371bへ通知してもよい。
【0185】
また、周期起点決定部375dは、それぞれのIDごとに事前に、どれだけ今回受信時刻から受信予定時刻へ近づけた時刻を「前回受信時刻」として周期判定部371bへ通知するかを、例えば、歪度(Skewness)又は尖度(Kurtosis)などの統計的な数値を用いて算出しておき、その事前に算出しておいた値分、今回受信時刻から受信予定時刻へ近づけた時刻を「前回受信時刻」として周期判定部371bへ通知してもよい。
【0186】
また、歪度又は尖度だけでなく、中央値又は平均値、最頻値などから求まる値又は、標準偏差などの値を使用して、どれだけ今回受信時刻から受信予定時刻へ近づけた時刻を「前回受信時刻」とするかを決定してもよい。この時、それぞれの値を個別に利用してもよいし、いくつかの値から計算した値を用いてもよい。また、周期タイプ学習部377により、これらを学習してもよい。
【0187】
これにより、前回時刻を二者択一で決定するよりも、柔軟に決定することが出来るため、より検知精度を向上させることが出来る。
【0188】
(3)上記各実施の形態では、ECU100は、フレーム送受信部110と、フレーム解釈部120と、受信ID判定部130と、受信IDリスト保持部140と、フレーム処理部150と、データ取得部170と、フレーム生成部180とを備えると説明したが、本開示における車載ネットワークシステムが備えるECU100の構成はこれに限定されるものではない。
【0189】
図16は、変形例におけるECUの一例を示すブロック図である。
図16に示すECU100eは、さらに不正検知処理機能群370を備える。この場合、異常なメッセージであるか否かの判定を、フレーム処理部150が不正検知処理機能群370へ要求してもよいし、フレーム解釈部120が要求してもよい。
【0190】
図17は、変形例におけるECUの一例を示すブロック図である。
図17に示すECU100fは、フレーム送受信部110と、フレーム解釈部120と、フレーム生成部180とで構成される。この場合、フレーム解釈部120は、例えばIDによらず全てのメッセージを受信し、全てのメッセージについて不正検知処理機能群370へ異常なメッセージであるかどうかの判定を依頼してもよい。
【0191】
また、ECU100fは、
図17の構成に加えて、受信ID判定部130と、受信IDリスト保持部140とを備え、受信IDリスト保持部が保持する受信IDリストに記載されたメッセージIDを持つメッセージのみを受信し、そのメッセージに関して、不正検知処理機能群370へ異常なメッセージであるか否かの判定を依頼してもよい。なお、不正検知処理機能群370は、上述の370a~370dのいずれに代えられてもよい。
【0192】
これにより、ゲートウェイだけでなく、ECU100でも、バスに送信されているメッセージが異常なメッセージであるか否かを判定できる。その結果、例えば車載ネットワークシステムにおける不正検知のための仕組の冗長性が向上し、より高度に安全が確保される。
【0193】
図18は、変形例におけるECUの一例を示すブロック図である。
図18に示すECU100gは、バス200へ送信するデータを他の接続機器又は外部等から取得する送信データ取得部171を備えてもよい。ECU100gが備える不正検知処理機能群370eは、送信データ取得部171から受信したデータが異常なメッセージであるか否かについても判定し、異常なメッセージではないと判定した場合のみ、フレーム生成部180へメッセージの送信を依頼してもよい。なお、不正検知処理機能群370eの構成は、不正検知処理機能群370、370a、370b、370c、370dのいずれかの構成と共通であってもよい。
【0194】
これにより、例えば、カーナビゲーションと一緒に利用されるECU100fが、乗っ取られたカーナビゲーションから異常なメッセージが送信されるような場合において、そのメッセージのネットワークへの拡散を抑制することができる。または、車外から送り込みが試みられる異常なメッセージの車載ネットワークシステム内部への侵入を抑制することができる。
【0195】
(4)上記各実施の形態では、不正の検知に応じたアクションとして、受信したメッセージを転送しない例を示したが、これに限定されない。例えば、上述の不正検知処理機能群を備えるゲートウェイ又はECU100は、メッセージの受信中に不正検知処理を行い、異常なメッセージであると判定した時点で、エラーフレームを送信することで、ネットワークから受信中のメッセージを無効化してもよい。
【0196】
これにより、異常なメッセージが見つかったバスに接続された他のECU100が異常なメッセージを受信することを防止することができる。同様のアクションは、転送しないメッセージに対しても適用できる。
【0197】
また、上述の不正検知処理機能群を備えるゲートウェイ300又はECU100はさらに、不正の発生のユーザ若しくは外部のサーバ等への通知、不正の発生のログへの記録、又は車両のフェールセーフモードへの移行を実行してもよい。
【0198】
これにより、不正検知後の柔軟な対応が可能となる。また異常なメッセージと判定した複数のメッセージをデータの1以上の系列として扱い、各系列について、データの値又は受信間隔の集合を不正なラベルとして学習してもよい。
【0199】
(5)上記各実施の形態では、標準フォーマットのIDにおける例を示したが、拡張フォーマットのIDであってもよい。
【0200】
(6)上記各実施の形態では、メッセージは平文で送信される例を示したが、暗号化されていてもよい。またメッセージにメッセージ認証コードを含んでいてもよい。
【0201】
(7)上記実施の形態では、正常モデルと、受信ログとを平文で保持している例を示したが、これらを暗号化して保持していてもよい。
【0202】
(8)上記の実施の形態では、CANプロトコルに従って通信するネットワーク通信システムの例として車載ネットワークを示した。本開示に係る技術は、車載ネットワークでの利用に限定されるものではなく、ロボット、産業機器等のネットワークその他、車載ネットワーク以外のCANプロトコルに従って通信するネットワーク通信システムに利用してもよい。
【0203】
また、車載ネットワークシステム10としてCANプロトコルを用いていたが、これに限るものではない。例えば、CAN-FD(CAN with Flexible Data Rate)、FlexRay、Ethernet、LIN(Local Interconnect Network)、MOST(Media Oriented Systems Transport)などを用いてもよい。あるいはこれらのネットワークをサブネットワークとして、組み合わせたネットワークであってもよい。
【0204】
(9)上記の実施の形態における各装置は、具体的には、マイクロプロセッサ、ROM(Read Only Memory)、RAM(Random Access Memory)、ハードディスクユニット、ディスプレイユニット、キーボード、マウスなどから構成されるコンピュータシステムである。RAMまたはハードディスクユニットには、コンピュータプログラムが記録されている。マイクロプロセッサが、コンピュータプログラムにしたがって動作することにより、各装置は、その機能を達成する。ここでコンピュータプログラムは、所定の機能を達成するために、コンピュータに対する指令を示す命令コードが複数個組み合わされて構成されたものである。
【0205】
(10)上記の実施の形態における各装置は、構成する構成要素の一部または全部は、1個のシステムLSI(Large Scale Integration:大規模集積回路)から構成されているとしてもよい。システムLSIは、複数の構成部を1個のチップ上に集積して製造された超多機能LSIであり、具体的には、マイクロプロセッサ、ROM、RAMなどを含んで構成されるコンピュータシステムである。RAMには、コンピュータプログラムが記録されている。マイクロプロセッサが、コンピュータプログラムにしたがって動作することにより、システムLSIは、その機能を達成する。
【0206】
また、上記の各装置を構成する構成要素の各部は、個別に1チップ化されていても良いし、一部又はすべてを含むように1チップ化されてもよい。
【0207】
また、ここでは、システムLSIとしたが、集積度の違いにより、IC(Integrated Circuit)、LSI、スーパーLSI、ウルトラLSIと呼称されることもある。また、集積回路化の手法はLSIに限るものではなく、専用回路又は汎用プロセッサで実現してもよい。LSI製造後に、プログラムすることが可能なFPGA(Field Programmable Gate Array)又は、LSI内部の回路セルの接続又は設定を再構成可能なリコンフィギュラブル・プロセッサを利用しても良い。
【0208】
さらには、半導体技術の進歩又は派生する別技術によりLSIに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積化を行ってもよい。バイオ技術の適用等が可能性としてありえる。
【0209】
(11)上記の各装置を構成する構成要素の一部または全部は、各装置に脱着可能なICカードまたは単体のモジュールから構成されているとしてもよい。ICカードまたはモジュールは、マイクロプロセッサ、ROM、RAMなどから構成されるコンピュータシステムである。ICカードまたはモジュールは、上記の超多機能LSIを含むとしてもよい。マイクロプロセッサが、コンピュータプログラムにしたがって動作することにより、ICカードまたは前記モジュールは、その機能を達成する。このICカードまたはこのモジュールは、耐タンパ性を有するとしてもよい。
【0210】
(12)本開示は、上記に示す方法であるとしてもよい。また、これらの方法をコンピュータにより実現するコンピュータプログラムであるとしてもよいし、コンピュータプログラムからなるデジタル信号であるとしてもよい。
【0211】
また、本開示は、コンピュータプログラムまたはデジタル信号をコンピュータ読み取り可能な記録媒体、例えば、フレキシブルディスク、ハードディスク、CD-ROM、MO、DVD、DVD-ROM、DVD-RAM、BD(Blu-ray(登録商標) Disc)、半導体メモリなどに記録したものとしてもよい。また、これらの記録媒体に記録されているデジタル信号であるとしてもよい。
【0212】
また、本開示は、コンピュータプログラムまたはデジタル信号を、電気通信回線、無線または有線通信回線、インターネットを代表とするネットワーク、データ放送等を経由して伝送するものとしてもよい。
【0213】
また、本開示は、マイクロプロセッサとメモリを備えたコンピュータシステムであって、メモリは、上記コンピュータプログラムを記録しており、マイクロプロセッサは、コンピュータプログラムにしたがって動作するとしてもよい。
【0214】
また、プログラムまたはデジタル信号を記録媒体に記録して移送することにより、またはプログラムまたはデジタル信号を、ネットワーク等を経由して移送することにより、独立した他のコンピュータシステムにより実施するとしてもよい。
【0215】
(13)上記実施の形態及び上記変形例をそれぞれ組み合わせるとしてもよい。
【0216】
以上、一つ又は複数の態様に係る車載ネットワークにおける、異常なメッセージによる不正制御を目的とする不正通信検知の基準として用いられるメッセージの決定のための技術について実施の形態及びその変形例に基づいて説明した。これらの各実施の形態及びその変形例では、車載ネットワークシステムに接続されて通信するゲートウェイ若しくはECU、又はこれらとサーバコンピュータとの組み合わせによって不正通信検知の基準として用いられるメッセージが決定される。このような不正通信検知を実行する、1個以上のプロセッサ及び記憶部を含むシステムを、本開示では不正通信検知基準決定システムと呼ぶ。したがって、不正通信検知基準決定システムは車載ネットワークシステムに接続される1台のゲートウェイのように1個の装置によって実現されるものも、このようなゲートウェイとECUとの組み合わせ、又はゲートウェイ若しくはECUと遠隔にあるサーバコンピュータとの組み合わせのように複数個の装置によって実現されるものも含む。
【0217】
また、この技術は、上記各実施の形態又はその変形例において、各構成要素が実行する処理のステップの一部又は全部を含む方法として、又は不正通信検知基準決定システムのプロセッサに実行されて、不正通信検知基準決定システムがこの方法を実施させるためのプログラムとしても実現可能である。
【0218】
また、上記実施の形態又はその変形例において、特定の構成要素が実行する処理を特定の構成要素の代わりに別の構成要素が実行してもよい。また、複数の処理の順序が変更されてもよいし、複数の処理が並行して実行されてもよい。
【産業上の利用可能性】
【0219】
本開示にかかる車載ネットワークシステム等に適用可能である。
【符号の説明】
【0220】
10 車載ネットワークシステム
100、100a、100b、100c、100d、100e、100f、100g ECU
101 エンジン
102 ブレーキ
103 ドア開閉センサ
104 ウィンドウ開閉センサ
110 フレーム送受信部
120 フレーム解釈部
130 受信ID判定部
140 受信IDリスト保持部
150 フレーム処理部
170 データ取得部
171 送信データ取得部
180、380 フレーム生成部
200、200a、200b バス
300 ゲートウェイ
310 フレーム送受信部
320 フレーム解釈部
330 受信ID判定部
340 受信IDリスト保持部
350 フレーム処理部
360 転送ルール保持部
370、370a、370b、370c、370d、370e 不正検知処理機能群
371、371b、371c 周期判定部
372 ルール判定情報保持部
373 調停検出部
374 受信メッセージ情報保持部
375、375c、375d 周期起点決定部
376、376c 送信タイプ判定部
377 周期タイプ学習部
378 周期タイプ保持部
【手続補正書】
【提出日】2024-06-27
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
車載ネットワークにおける異常なメッセージを検知する不正検知方法であって、以下を含む、
前記車載ネットワークに送出された第1メッセージを受信し、
前記第1メッセージの受信時刻が、前記第1メッセージの直前に受信した、データの種類が前記第1メッセージと同じ第2メッセージの受信時刻からの経過時間である予定時刻を含む所定範囲の時刻に収まっているか否かを判定し、
前記判定において、前記第1メッセージの受信時刻が所定範囲の時刻に収まっている場合、前記第1メッセージを正常なメッセージと判定し、
前記判定において、前記第1メッセージの受信時刻が所定範囲の時刻に収まっていない場合、前記第1メッセージの受信時に調停が発生していたか否かを検出し、
前記第1メッセージの受信時に調停が発生していなかった場合、前記第1メッセージを異常なメッセージと判定し、
前記第1メッセージの受信時に調停が発生していた場合、
1つまたは連続して続いている複数の第3メッセージと、前記1つまたは連続して続いている複数の第3メッセージに続いて前記第1メッセージが連続して受信されている場合、前記1つまたは連続して続いている複数の第3メッセージのうち、受信時刻が一番早いメッセージの受信時刻を調停の開始時刻とし、
調停の開始時刻が前記所定範囲の時刻の上限より早い場合、前記第1メッセージを正常なメッセージと判定し、
調停の開始時刻が前記所定範囲の時刻の上限以降の場合、前記第1メッセージを異常なメッセージと判定し、
前記第1メッセージの直後に受信する、データの種類が前記第1メッセージと同じ第4メッセージの予定時刻を算出するための起点となる時刻である起点時刻を、前記第1メッセージの受信時に調停が発生していたか否かに応じて、決定し、
前記第4メッセージの受信時刻が前記起点時刻からの経過時間である予定時刻を含む所定範囲の時刻に収まっているか否かを判定する、
不正検知方法。
【請求項2】
前記起点時刻を、前記第1メッセージの受信時に調停が発生していたか否かに応じて、前記第1メッセージの受信時刻、または、前記第2メッセージの受信時刻からの経過時間である前記第1メッセージの予定時刻に決定する、
請求項1に記載の不正検知方法。
【請求項3】
前記第1メッセージの受信時に調停が発生していた場合、前記起点時刻を前記第2メッセージの受信時刻からの経過時間である前記第1メッセージの予定時刻に決定し、
前記第1メッセージの受信時に調停が発生していなかった場合、前記起点時刻を前記第1メッセージの受信時刻に決定する、
請求項1に記載の不正検知方法。
【請求項4】
前記第1メッセージの受信時に調停が発生していた場合、前記起点時刻を、前記第1メッセージの受信時刻から、予め決められた時間又は予め決められた割合で、前記第2メッセージの受信時刻からの経過時間である前記第1メッセージの予定時刻へ近づけた時刻に決定し、
前記第1メッセージの受信時に調停が発生していなかった場合、前記起点時刻を前記第1メッセージの受信時刻に決定する、
請求項1に記載の不正検知方法。
【請求項5】
前記第1メッセージの受信時に調停が発生し、
調停の発生が1回目の場合、前記起点時刻を前記第1メッセージの受信時刻に決定し、
調停の発生が連続して発生している場合、前記起点時刻を、前記第1メッセージの受信時刻から、予め決められた時間又は予め決められた割合で、前記予定時刻へ近づけた時刻に決定し、
前記第1メッセージの受信時に調停が発生していなかった場合、前記起点時刻を前記第1メッセージの受信時刻に決定する、
請求項1に記載の不正検知方法。
【請求項6】
前記予め決められた時間又は予め決められた割合は、データの種類ごとに受信した前記車載ネットワークに送出されたメッセージの受信時刻を蓄積し、蓄積した受信時刻を用いて歪度又は尖度の統計的な数値から算出する、
請求項4または5に記載の不正検知方法。
【請求項7】
前記予め決められた時間又は予め決められた割合は、データの種類ごとに受信した前記車載ネットワークに送出されたメッセージの受信時刻を蓄積し、蓄積した受信時刻を用いて中央値、平均値及び最頻値のいずれか1つから求まる値又は、標準偏差の値から算出する、
請求項4または5に記載の不正検知方法。
【請求項8】
前記蓄積した受信時刻を学習することで、前記予め決められた時間又は予め決められた割合を算出する、
請求項6または7に記載の不正検知方法。
【請求項9】
車載ネットワークにおける異常なメッセージを検知する不正検知装置であって、
1個以上のプロセッサと、
記憶部と、を含み、
前記1個以上のプロセッサは、前記記憶部を用いて、
前記車載ネットワークに送出された第1メッセージを受信し、
前記第1メッセージの受信時刻が、前記第1メッセージの直前に受信した、データの種類が前記第1メッセージと同じ第2メッセージの受信時刻からの経過時間である予定時刻を含む所定範囲の時刻に収まっているか否かを判定し、
前記判定において、前記第1メッセージの受信時刻が所定範囲の時刻に収まっている場合、前記第1メッセージを正常なメッセージと判定し、
前記判定において、前記第1メッセージの受信時刻が所定範囲の時刻に収まっていない場合、前記第1メッセージの受信時に調停が発生していたか否かを検出し、
前記第1メッセージの受信時に調停が発生していなかった場合、前記第1メッセージを異常なメッセージと判定し、
前記第1メッセージの受信時に調停が発生していた場合、
1つまたは連続して続いている複数の第3メッセージと、前記1つまたは連続して続いている複数の第3メッセージに続いて前記第1メッセージが連続して受信されている場合、前記1つまたは連続して続いている複数の第3メッセージのうち、受信時刻が一番早いメッセージの受信時刻を調停の開始時刻とし、
調停の開始時刻が前記所定範囲の時刻の上限より早い場合、前記第1メッセージを正常なメッセージと判定し、
調停の開始時刻が前記所定範囲の時刻の上限以降の場合、前記第1メッセージを異常なメッセージと判定し、
前記第1メッセージの直後に受信する、データの種類が前記第1メッセージと同じ第4メッセージの予定時刻を算出するための起点となる時刻である起点時刻を、前記第1メッセージの受信時に調停が発生していたか否かに応じて、決定し、
前記第4メッセージの受信時刻が前記起点時刻からの経過時間である予定時刻を含む所定範囲の時刻に収まっているか否かを判定する、
不正検知装置。
【請求項10】
コンピュータに請求項1から8のいずれか1項に記載の不正検知方法を実行させるためのプログラム。
【手続補正2】
【補正対象書類名】明細書
【補正対象項目名】0010
【補正方法】変更
【補正の内容】
【0010】
上記課題を解決するために、本開示の一態様に係る不正検知方法は、車載ネットワークにおける異常なメッセージを検知する不正検知方法であって、以下を含む、前記車載ネットワークに送出された第1メッセージを受信し、前記第1メッセージの受信時刻が、前記第1メッセージの直前に受信した、データの種類が前記第1メッセージと同じ第2メッセージの受信時刻からの経過時間である予定時刻を含む所定範囲の時刻に収まっているか否かを判定し、前記判定において、前記第1メッセージの受信時刻が所定範囲の時刻に収まっている場合、前記第1メッセージを正常なメッセージと判定し、前記判定において、前記第1メッセージの受信時刻が所定範囲の時刻に収まっていない場合、前記第1メッセージの受信時に調停が発生していたか否かを検出し、前記第1メッセージの受信時に調停が発生していなかった場合、前記第1メッセージを異常なメッセージと判定し、前記第1メッセージの受信時に調停が発生していた場合、1つまたは連続して続いている複数の第3メッセージと、前記1つまたは連続して続いている複数の第3メッセージに続いて前記第1メッセージが連続して受信されている場合、前記1つまたは連続して続いている複数の第3メッセージのうち、受信時刻が一番早いメッセージの受信時刻を調停の開始時刻とし、調停の開始時刻が前記所定範囲の時刻の上限より早い場合、前記第1メッセージを正常なメッセージと判定し、調停の開始時刻が前記所定範囲の時刻の上限以降の場合、前記第1メッセージを異常なメッセージと判定し、前記第1メッセージの直後に受信する、データの種類が前記第1メッセージと同じ第4メッセージの予定時刻を算出するための起点となる時刻である起点時刻を、前記第1メッセージの受信時に調停が発生していたか否かに応じて、決定し、前記第4メッセージの受信時刻が前記起点時刻からの経過時間である予定時刻を含む所定範囲の時刻に収まっているか否かを判定する。