【解決手段】記憶装置を備える情報処理システムが行う、1以上の電子制御ユニットを含む車載ネットワークに流れる複数のデータフレームを処理する情報処理方法は、複数のデータフレームを順次受信する受信ステップ(S81)と、複数のデータフレーム間の受信間隔を示す受信間隔情報をフレーム情報として記録するフレーム収集ステップ(S82)と、受信間隔情報から、複数のデータフレーム間の受信間隔の分布に関する特徴量を取得する特徴量取得ステップと、特徴量を用いて、複数のデータフレームの中の不正なデータフレームの存否を判定する不正データ存否判定ステップ(S87)とを含む。
前記不正データ存否判定ステップにおいて前記1以上のグループのそれぞれについてグループを識別した後に実行した前記受信ステップで受信したデータフレームについて、
前記識別されたグループに属するか否かを判定することで当該データフレームが正常なデータフレームであるか又は不正なデータフレームであるかを判定するデータフレーム判定ステップをさらに含む、
請求項5に記載の情報処理方法。
前記記憶装置には、データフレームの受信間隔に関する規定である受信間隔ルールと、データフレームに含まれるデータ値の時間的変化量に関する規定であるデータ変化量ルールとがさらに保持され、
前記グルーピングステップにおいて、前記受信間隔情報及び前記データ値と、前記受信間隔ルール及び前記データ変化量ルールとに基づいて、前記1以上のグループを設定し、
前記1以上のグループのそれぞれに含まれるデータフレームの数が所定数以上である場合に、前記1以上のグループに対して前記不正データ存否判定ステップを実行する、
請求項5又は6に記載の情報処理方法。
前記記憶装置には、データフレームの受信間隔に関する規定である受信間隔ルールと、正常なデータフレームに含まれるデータ値の時間的変化量に関する規定であるデータ変化量ルールがさらに保持され、
前記グルーピングステップにおいて、前記受信間隔情報及び前記データ値と、前記受信間隔ルール及び前記データ変化量ルールとに基づいて、前記複数のデータフレームに複数のグループを設定し、
前記複数のグループのそれぞれに含まれるデータフレームのデータ値の平均の差が所定の大きさ以上である場合に、前記複数のグループに対して前記不正データ存否判定ステップを実行する、
請求項5又は6に記載の情報処理方法。
前記識別器は、ランダムフォレスト(Random Forest)、サポートベクターマシン(Support Vector Machine)、NN(Nearest Neighbor)、ニューラルネットワーク(Neural Network)のいずれかひとつで、又は複数を組み合わせて構成される、
請求項11に記載の情報処理方法。
プロセッサ及び記憶装置を備える情報処理システムにおいて、前記プロセッサによって実行されることで前記情報処理システムに請求項1に記載の情報処理方法を実行させるプログラム。
【発明を実施するための形態】
【0017】
本開示の一実施様態に係る情報処理方法は、記憶装置を備える情報処理システムが行う、1以上の電子制御ユニットを含む車載ネットワークに流れるデータフレームを処理する情報処理方法であって、前記車載ネットワークに流れる複数のデータフレームを順次受信する受信ステップと、前記複数のデータフレーム間の受信間隔を示す受信間隔情報を、前記記憶装置に保持される受信ログにフレーム情報として記録するフレーム収集ステップと、前記受信間隔情報から、前記複数のデータフレーム間の受信間隔の分布に関する特徴量を取得する特徴量取得ステップと、前記特徴量を用いて、前記複数のデータフレームの中の不正なデータフレームの存否を判定する不正データ存否判定ステップとを含む。
【0018】
これにより、攻撃者による不正なデータフレームの送信の検知が、攻撃者が制御困難な特徴量を利用して実行される。つまり、攻撃者は不正対策の回避が困難になる。したがって、車載ネットワークをより確実に保護することができる。
【0019】
また、前記記憶装置には、正常なデータフレームの特徴を示す正常モデルがさらに保持され、前記不正データ存否判定ステップにおいて、前記受信間隔情報を用いて求められた前記特徴量と、前記正常モデルとを用いて前記複数のデータフレームの中の不正なデータフレームの存否を判定してもよい。
【0020】
これにより、例えば正常なデータフレームの受信間隔の分布に関する特徴量と不正なデータフレームの受信間隔の分布に関する特徴量との差異の大きさに基づいて不正なデータフレームの存否を判定することができる。従来は不正の判定が困難であった一群のデータフレームについても、より高い精度での判定が可能になる。
【0021】
例えば、前記正常モデルは、前記特徴として正常なデータフレーム間の受信間隔を示し、前記特徴量取得ステップにおいて取得される特徴量は、受信された前記複数のデータフレーム間の受信間隔と前記正常モデルが示す正常なデータフレーム間の受信間隔との密度比推定を用いて算出される、受信された前記複数のデータフレーム間の受信間隔の異常度であり、前記不正データ存否判定ステップにおいて、前記異常度に基づいて前記複数のデータフレームの中の不正なデータフレームの存否を判定してもよい。
【0022】
これにより、正常なデータフレームの受信間隔と、実際に受信したデータフレームの受信間隔の確率分布の差を検知することができる。そして、不正なデータフレームの存否を判定することができる。従来は不正の判定が困難であった一群のデータフレームについても、より高い精度での判定が可能になる。
【0023】
また例えば、前記正常モデルは、前記特徴として正常なデータフレーム間の受信間隔の分散を示し、前記特徴量取得ステップにおいて取得される特徴量は、受信された前記複数のデータフレーム間の受信間隔の分散であり、前記不正データ存否判定ステップにおいて、前記正常なデータフレーム間の受信間隔の分散と前記受信間隔の分散との差を算出し、前記差の大きさに基づいて前記複数のデータフレームの中の不正なデータフレームの存否を判定してもよい。
【0024】
これにより、正常なデータフレームの受信間隔と、不正なデータフレームの受信間隔の統計的な際に基づいて不正なデータフレームを検知することができるそして従来では、正常と不正との判定が困難であったデータフレームに関しても精度よく識別することができ、車載ネットワークの保護が可能となる。
【0025】
また、前記フレーム情報には、前記受信間隔情報と対応づけて、前記複数のデータフレームのそれぞれが含むデータ値がさらに含まれ、さらに、前記フレーム情報が含む前記受信間隔情報及び前記データ値に基づいて、前記複数のデータフレームの少なくとも一部を含む1以上のグループを設定するグルーピングステップを含み、前記特徴量取得ステップにおいて、前記受信ログに含まれる前記受信間隔情報から、前記1以上のグループのそれぞれについて、当該グループが含む前記複数のデータフレーム間の受信間隔の分布に関する特徴量を取得し、前記不正データ存否判定ステップにおいて、前記1以上のグループのそれぞれについて求められた特徴量に少なくとも基づいて、前記1以上のグループの中から不正なデータフレームを含むグループ又は不正なデータフレームを含まないグループを識別してもよい。
【0026】
これにより、従来では、通信間隔の規定の範囲内で複数のデータフレームが受信された場合に、これらのデータフレームについての不正なデータフレームの存否の判定が困難であった。このような場合にも、不正なデータフレームを含むグループ又は不正なデータフレームを含まないグループを識別することができる。したがって、車載ネットワークをより確実に保護することができる。
【0027】
また、不正データ存否判定ステップにおいて前記1以上のグループのそれぞれについてグループを識別した後に実行した前記受信ステップで受信したデータフレームについて、前記識別されたグループに属するか否かを判定することで当該データフレームが正常なデータフレームであるか又は不正なデータフレームであるかを判定するデータフレーム判定ステップをさらに含んでもよい。
【0028】
これにより、個々のデータフレームの正常又は不正判定によるフィルタリングが可能になる。
【0029】
また、前記記憶装置には、データフレームの受信間隔に関する規定である受信間隔ルールと、データフレームに含まれるデータ値の時間的変化量に関する規定であるデータ変化量ルールとがさらに保持され、前記グルーピングステップにおいて、前記受信間隔情報及び前記データ値と、前記受信間隔ルール及び前記データ変化量ルールとに基づいて、前記1以上のグループを設定し、前記1以上のグループのそれぞれに含まれるデータフレームの数が所定数以上である場合に、前記1以上のグループに対して前記不正データ存否判定ステップを実行してもよい。または、前記記憶装置には、データフレームの受信間隔に関する規定である受信間隔ルールと、正常なデータフレームに含まれるデータ値の時間的変化量に関する規定であるデータ変化量ルールがさらに保持され、前記グルーピングステップにおいて、前記受信間隔情報及び前記データ値と、前記受信間隔ルール及び前記データ変化量ルールとに基づいて、前記複数のデータフレームに複数のグループを設定し、前記複数のグループのそれぞれに含まれるデータフレームのデータ値の平均の差が所定の大きさ以上である場合に、前記複数のグループに対して前記不正データ存否判定ステップを実行してもよい。またさらに、前記データ変化量ルールは、前記データフレームに含まれるデータ値の時間的変化量が所定値以下であることを規定してもよい。
【0030】
これにより、複数のデータフレームに対してより精度よくグループを設定でき、従来では困難であった不正なデータフレームの存否の判定をすることができる。したがって、車載ネットワークをより確実に保護することができる。
【0031】
また、前記記憶装置には、正常なデータフレームの受信間隔の時系列データから求めた自己回帰係数がさらに保持され、前記グルーピングステップにおいて設定される前記1以上のグループは複数のグループであり、前記複数のグループのそれぞれが含む前記複数のデータフレーム間の受信間隔に関する特徴量は、前記受信間隔情報を用いて予測される予測受信間隔であり、前記特徴量取得ステップにおいて、前記複数のグループのそれぞれが含む前記複数のデータフレーム間の受信間隔に関する特徴量として、前記自己回帰係数及び前記フレーム情報とを用いて予測受信間隔を取得し、前記不正データ存否判定ステップにおいて、前記複数のグループのそれぞれについて、前記予測受信間隔と、当該グループに含まれる最新のデータフレームの実際の受信間隔との誤差である予測誤差を算出し、前記複数のグループの中で前記予測誤差が最も小さいグループを、不正なデータフレームを含まないグループと識別してもよい。
【0032】
これにより、正常なデータフレームの受信間隔と、不正なデータフレームの受信間隔の時系列モデルへの当てはまりのよさを用いて、不正なデータフレームを含まないグループを識別することができる。したがって、車載ネットワークをより確実に保護することができる。
【0033】
また、前記不正データ存否判定ステップにおいて、正常なデータフレームの受信間隔ベクトルと、不正なデータフレームの受信間隔ベクトルとを学習した識別器を用いて、前記複数のグループの中から、不正なデータフレームを含むグループと不正なデータフレームを含まないグループとを識別してもよい。また、この識別器は、ランダムフォレスト(Random Forest)、サポートベクターマシン(Support Vector Machine)、NN(Nearest Neighbor)、ニューラルネットワーク(Neural Network)のいずれか、又は複数を組み合わせて構成されてもよい。
【0034】
これにより、正常なデータフレームの受信間隔ベクトルと、不正なデータフレームの受信間隔ベクトルを学習した識別器によって、不正なデータフレームを含むグループが従来に比べて精度よく識別される。したがって、車載ネットワークをより確実に保護することができる。
【0035】
また、本開示の一実施様態に係る情報処理システムは、プロセッサ及び記憶装置を備え、1以上の電子制御ユニットを含む車載ネットワークに流れるデータフレームを処理する情報処理システムであって、前記プロセッサは、前記車載ネットワークに流れる複数のデータフレームを順次受信し、前記複数のデータフレーム間の受信間隔を示す受信間隔情報を、前記記憶装置に保持される受信ログにフレーム情報として記録し、前記受信間隔情報から、前記複数のデータフレーム間の受信間隔の分布に関する特徴量を取得し、前記特徴量を用いて、前記複数のデータフレームの中の不正なデータフレームの存否を判定する。または、本開示の一実施様態に係るプログラムは、プロセッサ及び記憶装置を備える情報処理システムにおいて、前記プロセッサによって実行されることで前記情報処理システムに請求項1に記載の情報処理方法を実行させる。
【0036】
これにより、攻撃者による不正なデータフレームの送信の検知が、攻撃者が制御困難な特徴量を利用して実行される。つまり、攻撃者は不正対策の回避が困難になる。したがって、車載ネットワークをより確実に保護することができる。
【0037】
以下、図面を参照しながら、実施の形態について説明する。なお、以下で説明する実施の形態は、包括的又は具体的な例を示す。したがって、以下の実施の形態で示される数値、形状、材料、構成要素、構成要素の配置及び接続形態、ステップ、ステップの順序などは一例であり、本発明を限定する趣旨ではない。また、以下の実施の形態における構成要素のうち、最上位概念を示す独立請求項に記載されていない構成要素は、任意で含まれる構成要素として説明される。
【0038】
(実施の形態)
[1.システムの構成]
実施の形態として説明する情報処理システムは、プロセッサ及び記憶装置を備え、1以上の電子制御ユニットを含む車載ネットワークに流れるデータフレームを処理する情報処理システムである。このプロセッサは、車載ネットワークに流れる複数のデータフレームを順次受信し、これらのデータフレーム間の受信間隔を示す受信間隔情報を、記憶装置に保持される受信ログにフレーム情報として記録する。また、このプロセッサは、この記録された受信間隔情報から、複数のデータフレーム間の受信間隔の分布に関する特徴量を取得し、この取得した特徴量を用いて、複数のデータフレームの中の不正なデータフレームの存否を判定する。本実施の形態では、種類を示す識別子(ID)が共通である複数個のデータフレームを2つの系列(グループ)に分類する。
【0039】
以下、車載ネットワークに接続される監視ECUについて、本実施の形態における情報処理システムの一例として図面を参照しながら説明する。
【0040】
[1.1 車載ネットワークシステムの全体構成]
図1は、本実施の形態における車載ネットワークシステムの全体構成を示すブロック図である。
図1において、車載ネットワークシステム10は、監視ECU100と、ECU200aと、ECU200bと、バス300とを備える。
【0041】
監視ECU100は、バス300に接続され、バス300上に流れるデータフレームを監視し、不正なデータフレームが流れているか否かを監視する。監視ECU100は、通信回路、プロセッサ及びメモリを含むマイクロコントローラ(図示なし)を備える、本実施の形態における情報処理システムの一例である。
【0042】
ECU200aは、バス300に接続され、さらに速度センサ210に接続されている。ECU200aは、速度センサ210から得られる車両の速度をデータフレームに含めて定期的にバス300へ送信する。
【0043】
ECU200bは、バス300に接続され、さらにメータ220に接続されている。ECU200bは、ECU200aからバス300に送信される、車両の速度を含むデータフレームを取得し、データフレームから取得した車両の速度をメータ220に表示させる。
【0044】
[1.2 データフレームフォーマット]
図2は、CANプロトコルのデータフレームのフォーマットを示す図である。ここではCANプロトコルにおける標準IDフォーマットにおけるデータフレームを示している。
【0045】
図2において、データフレームは、Start Of Frame(以下、SOFという)と、IDフィールド、Remote Transmission Request(以下、RTRという)、IDentifier Extension(以下、IDEという)、予約ビット(以下、r)、データレングスコード(以下、DLCという)、データフィールド、Cycric Redundancy Check(以下、CRCという)シーケンス、CRCデリミタ(図中、左のDEL)と、Acknowledgement(以下、ACKという)スロットと、ACKデリミタ(図中、右のDEL)と、エンドオブフレーム(以下、EOFという)から構成される。
【0046】
SOFは、1ビットのドミナントである。バス300はアイドルときレセシブになっており、送信ノードはバス300をレセシブからドミナントへ変更することでフレームの送信開始を通知する。
【0047】
IDは、11ビット長の値で、データフレームの種類を示す。ここでいうデータフレームの種類とは、例えばデータの内容又はデータフレームの送信元である送信ノードを指す。また、IDは同一ネットワーク上で複数のノードが同時に送信を開始したデータフレーム間での通信調停にも用いられる。より具体的には、IDがより小さい値を持つデータフレームは優先順位が高い。
【0048】
RTRは、1ビットのドミナントで、データフレームであることを示す。
【0049】
IDE及びrは、それぞれ1ビットのドミナントである。
【0050】
DLCは4ビット長の値で、続くデータフィールドの長さを示す。
【0051】
データフィールドは、最大64ビット長の送信されるデータの部分であり、データフレームのペイロードである。長さは8ビット単位で調整可能である。送信されるデータのこの部分への割り当てに関する仕様は、車種や製造者に依存する。
【0052】
CRCシーケンスは、15ビット長で、SOF、IDフィールド、コントロールフィールド、及びデータフィールドの送信値より算出される値を示す。受信ノードは、各データフレームについてSOF、IDフィールド、コントロールフィールド、及びデータフィールドの受信値から算出した結果をCRCシーケンスの値と比較することで異常の有無を判断する。
【0053】
CRCデリミタは、1ビットのレセシブで、CRCシーケンスの終了を表す区切り記号である。
【0054】
ACKスロットは、1ビット長、送信ノードはこの部分でレセシブを送信する。受信ノードはCRCシーケンスまで正常に受信ができていれば、この部分でドミナントを送信する。ことで、CANの規格では、同時に送信されたドミナントとレセシブとでは上述のとおりドミナントが優先されるため、通信が正常に行われている車載ネットワークシステム10では、ACKスロットの送信中、バス300はドミナントの状態である。
【0055】
ACKデリミタは、1ビット長のレセシブで、ACKスロットの終了を表す区切り記号である。
【0056】
EOFは、7ビット長のレセシブで、データフレームの終了を示す。
【0057】
[1.3 エラーフレームフォーマット]
図3は、CANプロトコルのエラーフレームのフォーマットを示す図である。
図3において、エラーフレームは、エラーフラグ(プライマリ)、エラーフラグ(セカンダリ)、及びエラーデリミタ(図中DEL)の3個の部分から構成される。
【0058】
エラーフラグ(プライマリ)は、エラーの発生を他のノードに知らせるために使用される。連続する6ビットのドミナントであり、CANプロトコルにおける、連続する同じ値の5ビットの次には異なる値を1ビット送信するというビットスタッフィングルールに違反する。このビットスタッフィングルール違反の発生によって、他のノードからのエラーフラグ(セカンダリ)の送信が引き起こされる。
【0059】
エラーフラグ(セカンダリ)は、エラーの発生を他のノードに通知するために送信される6ビット長のドミナントである。エラーフラグ(プライマリ)を受信した全てのノードが送信する。
【0060】
エラーデリミタ(DEL)は、8ビット長のレセシブで、エラーフレームの終了を示す。
【0061】
[1.4 監視ECUの構成]
図4は、本実施の形態における監視ECUの機能構成を示すブロック図である。
図4において、監視ECU100は、フレーム送受信部110と、フレーム収集部120と、不正発生検知部130と、グループ設定部140と、不正データ識別部150と、不正対応部160と、フレーム生成部170と、受信ログ保持部180と、ルール保持部190と、正常モデル保持部191とを備える。
【0062】
フレーム送受信部110は、バス300に対して、CANのプロトコルに従ったデータフレームを送受信する。即ち、フレーム送受信部110は、車載ネットワークシステム10を構成するバス300からデータフレームを1ビットずつ受信することで、複数のデータフレームを順次受信する(受信ステップ)。また、各データフレームの受信がエラー無く完了すると、データフレームの一部であるID、DLC、及びデータフィールドをフレーム収集部120及び不正発生検知部130に転送する。
【0063】
また、受信したデータフレームがCANプロトコルに従っていないと判断した場合、フレーム送受信部110は、上記で
図3を参照して説明したエラーフレームを送信する。
【0064】
また、フレーム送受信部110は、他のノードからエラーフレームを受信した場合、つまり受け取ったフレームがその値からエラーフレームであると判断した場合には、それ以降はそのフレームを破棄する。
【0065】
また、フレーム生成部170からデータフレームの送信要求を受けたフレーム送受信部110は、バス300へデータフレームを1ビットずつ送信する。
【0066】
フレーム収集部120は、フレーム送受信部110からデータフレームの上述の一部を受け取り、このデータフレームが受信された時刻(以下、受信時刻という)、並びにデータフレームに含まれていたID及びデータフィールドを、受信ログ保持部180に保持される受信ログのレコードとして記録する(フレーム収集ステップ)。なお、以下では、このようにレコードに記録される、各データフレームに関する情報のことをフレーム情報ともいう。また、受信時刻は、本実施の形態における受信間隔情報の例である。データフレームの受信時刻は、監視ECU100が起動してから経過した時間を計測するタイマを参照することで得られる時刻である。このようなタイマは、例えば監視ECU100が備えるマイクロコントローラに含まれる。
【0067】
不正発生検知部130は、受信ログ保持部180に保持されている受信ログと、ルール保持部190に格納されているルール、具体的には、データフレームの受信間隔に関する規定(以下、受信間隔ルールともいう)とを用いて不正が発生しているか否かを判断する。受信間隔ルールは、例えば車載ネットワークシステム10の仕様に基づいてIDごとに定められる。
【0068】
より具体的には、不正発生検知部130は、受信ログ保持部180に保持されている受信ログを参照して、IDが共通のデータフレームの受信間隔を取得する。そしてこの取得した受信間隔を、ルール保持部190に保持されている受信間隔ルールである当該IDの受信間隔の平均とマージンとに照らして不正が発生しているか否かを判断する。
【0069】
図5は、本実施の形態における監視ECU100の受信ログ保持部180が保持する受信ログのデータ構成の一例を示す図である。この例では、受信ログにはIDが0x100である3件のデータフレームのレコード(又はフレーム情報)が格納されている。
【0070】
受信ログには、フレーム収集部120から通知された各データフレームの情報、具体的には、受信時刻、ID、データフィールドの値(以下、データ値ともいう)、基準、及びグループが含まれる。
【0071】
この例で格納されている3件のデータフレームの情報の中で最も古いデータフレームの受信時刻は50,250μsであり、データフィールドの値は0x00 0x00である。また、最も新しいデータフレームの受信時刻は150,560μsであり、データフィールドの値は0x00 0x1Aである。また、受信ログには「基準」の欄がある。この欄の値は、各データフレームの受信時刻又はデータ値が、一連の処理の中で、不正なデータフレームの存否に関する判定の基準として用いられるか否かを示す。この例では、「基準」の欄の値が1であるデータフレームがこのような基準に用いられる。
【0072】
例えば不正発生検知部130は、受信ログ保持部180に格納されている受信ログにフレーム情報が記録されている各データフレームが受信間隔ルールに適合するか否か判定する。この判定では、例えば判定対象のIDのデータフレームのうち基準の欄の値が1であるデータフレームの受信時刻に、所定の受信間隔の平均を加算した値が次回想定受信時刻として用いられる。不正発生検知部130は、当該データフレームの後に受信した同IDのデータフレームのうち、受信時刻がこの次回想定受信時刻から受信間隔のマージンを減算した値以上であり、かつ、次回想定受信時刻に受信間隔のマージンを加算した値以下であるデータフレームを、受信間隔ルールに適合するデータフレームであると判定する。
【0073】
また、次回想定受信時刻の受信間隔ルールに適合するデータフレームが1つ存在し、かつ、現在の時刻が次回想定受信時刻に受信間隔のマージンを加算した値より大きい場合、不正発生検知部130は、受信間隔ルールに適合すると判定したデータフレームの基準の欄の値を1に変更する。
【0074】
また、受信間隔ルールに適合するデータフレームが2つ以上存在する場合、不正発生検知部130は、受信間隔ルールに適合する各データフレームのデータ値がルール保持部190に格納されているデータ変化量のルールに適合するか否かを判定する。この判定では、例えばデータ値が、上記の基準の欄の値が1であるデータフレームのデータ値に所定のデータ変化量のマージンを加算した値以下であり、かつ、当該データ値からデータ変化量のマージンを減算した値以上であるデータフレームを、データ変化量の規定(以下、データ変化量ルールという)に適合するデータフレームであると判定する。そして、データ変化量ルールに適合するデータフレームが2つ以上存在する場合、不正発生検知部130は、不正が発生していると判断する。データ変化量ルールとは、データフレームに含まれるデータ値の時間的変化量に関する規定であり、データフレームに含まれるデータ値の時間的変化量が所定値以下であることを規定している。この所定値は、例えば車載ネットワークシステム10の仕様に基づいて定められる。
【0075】
不正が発生していると判断した場合、不正発生検知部130は、不正が発生していることを、グループ設定部140と、不正対応部160とに通知する。
【0076】
またこの場合に、現在の時刻が次回想定受信時刻に受信間隔のマージンを加算した値より大きいとき、不正発生検知部130は、データ変化量ルールに適合すると判定した全てのデータフレームの基準の欄の値を1に変更する。
【0077】
また、不正発生検知部130は、受信ログ保持部180に格納されている受信ログの判定対象のデータフレームのIDに関して、基準の欄の値が1に設定されているデータフレームが複数存在する場合、基準の欄の値が1に設定されているデータフレームそれぞれを基準とする上記の受信間隔ルール及びデータ変化量ルールを用いた判定を行う。そして各データフレームがいずれかの基準を用いて受信間隔ルールに適合し、かつ、データ変化量ルールに適合する場合に、現在の時刻が、次回想定受信時刻に受信間隔のマージンを加算した値より大きいときは、当該データフレームの基準の欄の値を1に変更する。
【0078】
なお、受信ログ保持部180に格納されている受信ログの判定対象のIDのデータフレームのうちで、基準の欄の値が1であるデータフレームが存在しない場合、すなわち、初めて当該IDのデータフレームを受信する場合、不正発生検知部130は、初めて受信したそのデータフレームの基準の欄の値を1に設定する。
【0079】
グループ設定部140は、受信ログ保持部180に格納されている受信ログに含まれるフレーム情報に基づいて複数のデータフレームの少なくとも一部を含む1以上のグループを設定する(グルーピングステップ)。
【0080】
グループ設定部140によるグループの設定は、受信ログ保持部180の受信ログにおいて基準の欄の値が1に設定されているデータフレームが複数存在する場合、つまり不正が発生していると判断されている場合に行われる。データフレームに設定されているグループは、受信ログのグループの欄の値で示される。
【0081】
基準の欄の値が1に設定されているデータフレームが複数存在しない場合は、グループ設定部140は、グループの設定を行わない。つまり、受信ログのグループの欄の値は、初期値の0のまま、つまりグループは未設定である。
【0082】
図5の例では、全てのデータフレームについて設定されたグループを示す値が初期値の0である。これは、不正発生検知部130による判定で、このIDを持つデータフレームでは不正が発生しているという結果がこの時点までに出ていないため、グループの設定は行われていないことを示している。
【0083】
あるいは、基準の欄の値が1に設定されている複数のデータフレームに含まれるデータ値が全て同じである場合には、グループ設定部140は、グループの設定を行わない。したがって、受信ログ保持部180に格納される受信ログのグループの欄の値は初期値の0である。また、複数のデータフレームに含まれるデータ値が同じという条件に代えて、例えば、データフレームの特定のサブフィールドの値が一致する、データフィールド全体又は特定のサブフィールドの値の変化が所定の範囲に収まっている、ということがグループの設定が行われない条件であってもよい。以下、データ値が同じであることの記載は、矛盾のない限り、これらの条件に表される状況に読み替えることができる。
【0084】
基準の欄の値が1に設定されているデータフレームが複数存在し、当該データフレームのグループの欄の値が初期値の0(グループが未設定)であり、かつ当該データフレームの値が互いに異なる場合に、グループ設定部140は、基準の欄の値が1に設定されている複数のデータフレームを互いに異なるグループに分類する。
【0085】
より具体的には、グループ設定部140は、基準の欄の値が1に設定されているデータフレームの受信時刻からルール保持部190に格納されているデータフレームの受信間隔の平均を引いた値を、前回受信想定時刻とする。そして、受信ログに記録されているデータフレームのうち、受信時刻の値が、前回受信想定時刻からルール保持部190に格納されているデータフレームの受信間隔のマージンを減算した値以上であり、かつ、前回受信想定時刻からデータフレームの受信間隔のマージンを加算した値以下であるデータフレームを、前回基準フレームとする。複数の前回基準フレームが存在し、かつ、これらの前回基準フレームに設定されているグループが互いに異なる場合、グループ設定部140は、基準の欄の値が1に設定されているデータフレームのデータ値が、複数の前回基準フレームのデータ値のうちで最も近い前回基準フレームのグループと同じグループを、当該データフレームのグループに分類する。
【0086】
ここで、グループ設定部140は、基準の欄の値が1に設定されている複数のデータフレームを互いに異なるグループに設定する。例えば、前回基準として用いられたデータフレームが2つあり、それぞれ、グループ1に含まれ、データ値がD1のデータフレームと、グループ2に含まれ、データ値がD2のデータフレームであるとする。また、現在基準として用いられるデータフレームに設定されているデータフレームも2つあり、それぞれのデータ値をX、Yとする。
【0087】
このときX、YともにD1が最も近い値である場合には、次の2つの式の計算結果の比較の結果に基づいて各データフレームにグループが設定される。
(D1−X)^2+(D2−Y)^2・・・(1)
(D1−Y)^2+(D2−X)^2・・・(2)
【0088】
より具体的には、(1)の値が(2)の値より小さい場合に、データ値がXのデータフレームはグループ1に、データ値がYのデータフレームはグループ2に設定される。また、(2)の値が(1)の値より小さい場合には、データ値がXのデータフレームをグループ2に設定し、データ値がYのデータフレームはグループ1に設定される。これにより、前回の基準フレームのデータ値と、不正の判定対象のデータフレームのデータ値との2乗誤差が最小となるデータフレームの組み合わせが同じグループに設定される。
【0089】
また、異なるグループに設定されている複数の前回基準フレームが存在する場合にデータ値が同じ複数のデータフレームを受信したときは、グループ設定部140は、これらの複数のデータフレームに対し、受信時刻順に、グループ1、グループ2・・・と互いに異なるグループを設定する。そして設定された各グループで当該グループに含まれるデータフレームの個数が所定の数、例えば20に達すると、グループ設定部140は、不正データ識別部150へ通知を行う。
【0090】
不正データ識別部150は、受信ログ保持部180が保持する受信ログにフレーム情報が記録されているデータフレームの受信間隔をグループ別に算出する。そして不正データ識別部150は、正常モデル保持部191が保持する正常モデルと、算出した受信間隔とに基づいて、不正なデータフレームを含むグループを識別する。
【0091】
図6は、監視ECU100の正常モデル保持部191が保持する正常モデルのデータ構成の一例を示す図である。
図6に示される正常モデルは、正常なデータフレームの特徴として統計的に得られた、IDが0x100である正常なデータフレームの受信間隔の分散を示す。つまりこの例は、IDが0x100の正常なデータフレームの特徴として、受信間隔の分散は250000であることを示す。正常モデルが示す分散は、本実施の形態における、データフレームの特徴の一例である。
【0092】
不正データ識別部150は、受信ログに記録される受信時刻からグル―プごとに受信間隔を算出し、さらに受信間隔の分散を算出する(特徴量算出ステップ)。この受信間隔の分散は、本実施の形態におけるデータフレーム間の受信間隔の分布に関する特徴量の例である。次に不正データ識別部150は、算出した分散が、正常モデルが示す分散に最も近いグループを正常なデータフレームのグループ、つまりは不正なデータフレームを含まないグループと識別する(不正データ存否判定ステップ)。また、不正データ識別部150は、受信ログの正常なデータフレームのグループに含まれる最新のデータフレームの基準の欄の値を1に変更する。
【0093】
不正対応部160は、不正発生検知部130から不正の発生の通知を受けると、他のECUへ不正の発生を通知するために、フレーム生成部170へデータフレームの生成を要求する。
【0094】
フレーム生成部170は、不正対応部160からデータフレームの生成を要求されると、不正なデータフレームを受信していることを通知するためのデータフレームを生成し、当該データフレームの送信をフレーム送受信部110へ要求する。
【0095】
受信ログ保持部180は、
図5に示す例を用いて上記に説明した受信ログを保持する。
【0096】
ルール保持部190は、データフレームのIDごとに規定されている受信間隔ルール及びデータ変化量ルールが格納されている。受信間隔ルールは、より具体的には、データフレームの受信間隔の平均及びマージンとを示す受信間隔に関するルールである。データ変化量ルールは、より具体的には、データフレームに含まれるデータの変化量のマージンに関するルールである。
図7は、監視ECU100のルール保持部190が保持するルールのデータ構成の一例を示す図である。
図7に示される例は、IDが0x100のデータフレームのルールであり、受信間隔ルール及びデータ変化量ルールを含む。
【0097】
この例における受信間隔ルールでは、受信間隔の平均は50,000μsであり、受信間隔のマージンは3,000μsであると規定されている。
【0098】
また、データ変化量ルールによれば、データ変化量のマージンは100である。IDが0x100のデータフレームに含まれるデータ値が車速を示す場合、このデータ変化量ルールでは、連続する2つのデータフレームでのデータ値の差の絶対値は1km/h以下であるとデータ変化量ルールで規定されている。ただし、データ変化量マージンの欄にあるカッコ書きは説明の便宜上示したものであり、実際のデータ変化量ルールには含まれなくてもよい。
【0099】
正常モデル保持部191は、
図6に示す例を用いて上記のとおり説明した正常モデルを格納する。
【0100】
これらの機能的な構成要素は、監視ECU100が備えるマイクロコントローラにおいて、プロセッサが、通信回路を通じて受信したデータフレームを、メモリに格納されたプログラムを実行して処理し、必要に応じて処理の中間又は最終で生成されるデータがメモリに保持されることによって実現される。
【0101】
[1.5 監視ECUによる処理]
図8は、本実施の形態における監視ECU100の処理を示すフローチャートである。
【0102】
(ステップS81)監視ECU100のフレーム送受信部110は、ネットワークに流れるデータフレームを受信する(受信ステップ)。
【0103】
(ステップS82)監視ECU100のフレーム収集部120は、ステップS81で受信したデータフレームのフレーム情報を受信ログ保持部180が保持する受信ログに記録する(フレーム収集ステップ)。
【0104】
(ステップS83)監視ECU100の不正発生検知部130は、受信ログ保持部180が保持する受信ログと、ルール保持部190が保持する受信間隔ルールとを用いて、不正が発生しているか否かを判断する(不正発生検知ステップ)。この判断のための処理の詳細は後述する。
【0105】
(ステップS84)不正が発生している場合(YESの場合)は、監視ECU100による処理はステップS85に進む。不正が発生していない場合(NOの場合)は、監視ECU100は処理を終了する。
【0106】
(ステップS85)監視ECU100のグループ設定部140は、受信ログ保持部180が保持する受信ログにフレーム情報が記録されている複数のデータフレームに1以上のグループを設定する(グルーピングステップ)。
【0107】
(ステップS86)監視ECU100のグループ設定部140は、グループ設定部140が設定した各グループについて、当該グループに含まれるデータフレームの数が所定数、例えば20以上であるか否かを判定する。各グループに含まれるデータフレームの数が所定数以上である場合(YESの場合)は、監視ECU100による処理は、ステップS87に進む。所定数未満のデータフレームしか含んでいないグループが存在する場合(NOの場合)、監視ECU100は処理を終了する。
【0108】
(ステップS87)監視ECU100の不正データ識別部150は、受信ログに記録されているデータフレームの受信間隔と、正常モデル保持部191が保持する正常モデルとを用いて、グループ設定部140が設定した各グループについて正常なデータフレームのグループであるか不正なデータフレームのグループであるかを識別する(特徴量取得ステップ、不正データ存否判定ステップ)。
【0109】
(ステップS88)監視ECU100の不正データ識別部150は、ステップS87での結果に基づいて、受信ログにおける、基準として用いられるデータフレームの基準の欄の値が1に、基準として用いないデータフレームの基準の欄の値が0になるよう設定する(基準データフレーム再設定ステップ)。
【0110】
[1.6 不正発生検知部による処理]
図9は、本実施の形態における監視ECU100の不正発生検知部130による、上記のステップS83の処理の具体例を示すフローチャートである。
【0111】
(ステップS91)不正発生検知部130は、受信ログ保持部180が保持する受信ログを参照する(受信ログ参照ステップ)。
【0112】
(ステップS92)不正発生検知部130は、受信ログに、基準の欄の値が1に設定されているデータフレームが存在するか否かを確認する(基準データフレーム存否確認ステップ)。基準の欄の値が1に設定されているデータフレームが存在する場合、不正発生検知部130による処理はステップS94に進む。基準の欄の値が1に設定されているデータフレームが存在しない場合、不正発生検知部130による処理はステップS93を実行する。
【0113】
(ステップS93)不正発生検知部130は、受信ログ保持部180が保持する受信ログに記録されているデータフレームのうち、最新のデータフレームの基準の欄の値を1に設定する(基準データフレーム設定ステップ)。
【0114】
(ステップS94)不正発生検知部130は、受信ログに含まれるフレーム情報から、受信済みのデータフレーム間の受信間隔及びデータ変化量を取得する(受信間隔・データ変化量取得ステップ)。
【0115】
(ステップS95)不正発生検知部130は、ステップS94で取得した受信間隔及びデータ変化量を用いて、ルール保持部190が保持する受信間隔ルール及びデータ変化量ルールに適合するデータフレームが、受信ログ保持部180が保持する受信ログに複数記録されているかを確認する(ルール適合性確認ステップ)。このとき、受信ログ内に基準の欄の値が1に設定されているデータフレームが複数存在する場合は、不正発生検知部130は、基準の欄の値が1に設定されているデータフレームそれぞれについて、全てのルールに適合しているか否かを判断する。各データフレームについて受信間隔ルール及びデータ変化量ルールの両方に適合していると判断された場合に、不正発生検知部130は、当該データフレームはルールに適合すると判断する。ルールに適合するデータフレームが複数存在する場合、不正発生検知部130による処理はステップS96に進む。ルールに適合するデータフレームが存在しないか又は1つのみである場合、不正発生検知部130による処理はステップS97に進む。
【0116】
(ステップS96)不正発生検知部130は、不正が発生していると判断して、不正対応部160と、グループ設定部140とに、不正が発生していることを通知する。
【0117】
(ステップS97)不正発生検知部130は、現在の時刻が、基準の欄の値が1に設定されているデータフレームの受信時刻に、ルール保持部190が保持する対応する受信間隔の平均に受信間隔のマージンを加算した時刻を経過しているか否か判断する。
【0118】
(ステップS98)当該時刻を経過している場合、不正発生検知部130は、受信ログにおいて、ルールに適合する全てのデータフレームの基準の欄の値を1に変更する。当該時刻を経過していない場合は、いずれのデータフレームについても基準の欄の値は変更されない。
【0119】
[1.10 他のECUの構成]
図10は、車載ネットワークに接続されるノードの例であるECU200a又はECU200bの機能構成を示すブロック図である。ECU200aとECU200bとの機能構成は共通であってもよい。
【0120】
ECU200aは、フレーム送受信部201と、フレーム処理部202と、外部機器入出力部203と、フレーム生成部204とを備える。これらの機能的な構成要素は、ECU200aにおける通信回路、メモリに格納された制御プログラムを実行するプロセッサ又はデジタル回路等により実現される。
【0121】
フレーム送受信部201は、バス300に対して、CANのプロトコルに従ったデータフレームを送受信する。即ち、フレーム送受信部201はバス300からデータフレームを1ビットずつ受信する。また、データフレームの受信がエラー無く完了すると、データフレームに含まれるID、DLC、及びデータフィールド(データ値)をフレーム処理部202に転送する。
【0122】
受信したデータフレームがCANプロトコルに従っていないデータフレームと判断した場合、フレーム送受信部201はエラーフレームを送信する。また、他のノードからエラーフレームを受信した場合、フレーム送受信部201は受信中のデータフレームを破棄する。
【0123】
フレーム送受信部201はさらに、通信調停といったCANのプロトコルに従った処理も実行する。
【0124】
フレーム処理部202は、受信したデータフレームの内容を解釈する。例えばECU200bでは、ECU200aから送信されるデータフレームのデータフィールドに含まれる、速度センサ210が計測した速度の情報を解釈する。そして、フレーム処理部202は、解釈して取得した速度の情報をメータ220に表示させるための制御情報を外部機器入出力部203に通知する。
【0125】
外部機器入出力部203は、ECU200a又はECU200bに接続される外部機器と通信を行う。例えばECU200aの場合、外部機器入出力部203は、速度センサ210と接続され、現在の車両の速度の情報を取得し、この情報をフレーム生成部204に通知する。ECU200bの場合、外部機器入出力部203は、メータ220に接続され、現在の車両の速度の情報を運転者に通知するために、この情報を表示させる信号をメータ220に送信する。
【0126】
フレーム生成部204は、バス300へ送信するデータフレームを生成する。例えばECU200aでは、外部機器入出力部203から通知された、速度センサ210から取得した車両の速度を含むデータフレームを、あらかじめ定められた周期、例えば、50ms間隔で生成しフレーム送受信部201に送信する。
【0127】
なお、データフレームが生成される間隔は上記に例示した50msに限定されず、50ms以外の任意の間隔でもよい。
【0128】
[1.11 ECUが送信するデータフレーム]
本実施の形態における車載ネットワークに接続される各ECUが送信するデータフレームの構成について例を用いて説明する。
図11は、ECU200aがバス300に送信するデータフレームの例を示す図である。監視ECU100及びECU200bは、バス300からこのデータフレームを受信する。ただし、
図11では本実施の形態の理解に必要な部分のみを抜粋して示している。
【0129】
図11に示すように、ECU200aは、IDが0x100で、DLCが2のデータフレームを送信する。データフィールドはDLCに示される2バイトのデータ長であり、データフィールド全体で速度を(0.01km/h単位)を示す。
図11に例として示されるデータフィールドの値「0x154B」は、54.51km/hの車速を示す。
【0130】
[1.12 監視ECUによる処理の具体例]
次に、監視ECU100によるデータフレームの受信に伴う一連の処理(
図8及び
図9参照)の具体例を説明する。
【0131】
図12A、
図13A、及び
図14Aは、本実施の形態における監視ECU100の受信ログ保持部180が保持する受信ログの、
図5の例とは別の例を時系列順に示す。ただし、データ値の欄にある十進数での時速表示は説明の便宜上示したものであり、実際の受信ログのデータ値には含まれなくてもよい。
【0132】
図12B、
図13B、及び
図14Bは、本実施の形態における監視ECU100が受信したデータフレームを説明するための図であり、それぞれ
図12A、
図13A、及び
図14Aに対応する。
図12Bに示されるグラフ空間内の丸は、
図12Aに示されている受信ログに記録されている各データフレームの受信時刻及びデータ値に基づいてプロットされている。同様に、
図13Bに示されるグラフ空間内の丸は、
図13A中の各データフレームの受信時刻及びデータ値に基づいて、
図14Bに示されるグラフ空間内の丸は、
図14A中の各データフレームの受信時刻及びデータ値に基づいてプロットされているものと理解されたい。
【0133】
図15は、本実施の形態における監視ECU100により設定された各グループの受信間隔の分散を示す図である。
【0134】
また、以下の具体例においては、車載ネットワークシステム10では、ID「0x100」のデータフレームのルールとして、
図7に示される受信間隔ルール及びデータ変化量ルールが用いられ、正常モデルとして、
図6に示される正常ルールが用いられる。そして車載ネットワークシステム10に不正なECUが接続されており、この不正なECUからバス300に不正なデータフレームが流されている場合を想定している。
【0135】
図12Aによれば、監視ECU100は3個のデータフレームを受信し、これらの各データフレームが受信ログに記録されている(ステップS81、S82)。まず、この時点までの監視ECU100による処理を説明する。
【0136】
最初のデータフレームの受信後の処理では基準として用いられるデータフレームがまだ存在していないため、監視ECU100では当該データフレームが基準として設定される。つまり、不正発生検知部130によって、ステップS92でNOと判定されて、ステップS93が実行される(
図9参照)。その結果、受信ログにおける最初のデータ行の基準の欄の値が1に設定される(図示なし)。
【0137】
また、不正の発生は検知されていないため、監視ECU100ではステップS84でNOと判定されて、このデータフレームの受信に関連する一連の処理は終了する(
図8参照)。したがって、最初のデータフレームのグループの欄では、初期値のゼロのままである。
【0138】
2番目のデータフレームの受信に関連する一連の処理では、最初に受信されたデータフレームが基準に用いられる。したがって不正発生検知部130は、ステップS92ではYESと判定して、ステップS94へ進む(
図9参照)。不正発生検知部130は、最初に受信されたデータフレームと2番目に受信されたデータフレームとで受信時刻及びデータ値の差分を取って、それぞれを受信間隔ルール及びデータ変化量ルールに照らす(ステップS95)。
【0139】
この例では、受信時刻の差、つまり受信間隔は49,450μsであり、受信間隔の平均50,000μsからのマージン(許容差)3,000μs内に収まる。つまり2番目に受信されたデータフレームは受信間隔ルールを満たす。また、データ値の差は0.12km/hである。したがって、2番目に受信されたデータフレームはデータ変化量ルールも満たす。
【0140】
この時点で、受信間隔ルールとデータ変化量ルールとの両方に適合するデータフレームは2番目に受信されたデータフレームのみである。したがって、ステップS95では、不正発生検知部130はNOと判定し、ステップS97に進む(
図9参照)。
【0141】
ステップS97では、不正発生検知部130は、現在の時刻が最初のデータフレームの受信時刻にマージンを加算した時刻を経過しているか否かを判定する。この例では、その時刻より手前である(ステップS97でNO)と想定して、最初に受信されたデータフレームが引き続き基準として用いられる(図示なし)。
【0142】
2番目のデータフレームの受信に関連する処理は、その後(ステップS84以降)は最初に受信されたデータフレームの場合と同様に進んで終了する。したがって、グループの欄の値については、いずれも初期値のゼロのままである(図示なし)。
【0143】
次の3番目のデータフレームの受信に関連する一連の処理では、最初に受信されたデータフレームが再び基準に用いられる。したがって不正発生検知部130は、ステップS92ではYESと判定して、ステップS94へ進む(
図9参照)。不正発生検知部130は、最初に受信されたデータフレームと3番目に受信されたデータフレームとで受信時刻及びデータ値の差分を取って(ステップS94)、それぞれを受信間隔ルール及びデータ変化量ルールに照らす(ステップS95)。
【0144】
この場合の受信間隔は50,250μsであり、受信間隔の平均50,000μsからのマージン3,000μs内に収まる。つまり3番目に受信されたデータフレームは受信間隔ルールを満たす。また、データ値の差は0.11km/hである。したがって、3番目に受信されたデータフレームはデータ変化量ルールも満たす。
【0145】
なお、
図12Bを参照すると、受信された3つのデータフレームの受信間隔及びデータ値の大小関係が模式的に示されている。黒丸で示されるのが、最初のデータフレームである。この例では、この最初のデータフレームの受信時刻及びデータ値を基準に、続く2つのデータフレームのそれぞれについて2つのルールに適合するか否かが判定され、いずれについても2つのルールに適合すると判定されている。
【0146】
この時点で、受信間隔ルールとデータ変化量ルールとの両方に適合するデータフレームは2番目に受信されたデータフレーム及び3番目に受信されたデータフレームの2つである。したがって、次のステップS95では、不正発生検知部130はYESと判定してステップS96に進み、不正発生をグループ設定部140及び不正対応部160に通知する(
図9参照)。
【0147】
次に不正発生検知部130は、現在の時刻が、最初のデータフレームの受信時刻にマージンを加算した時刻を経過しているか否かを判定する。この例では、その時刻を経過している(ステップS97でYES)と想定して、ルールに適合する全てのデータフレームを基準として用いるデータフレームに設定する(ステップS98)。つまり、2番目に受信されたデータフレーム及び3番目に受信されたデータフレームの2つが基準として用いるデータフレームに設定される(
図12Aの「基準」の欄を参照)。
【0148】
次に監視ECU100は、ステップS84からステップS85へ進む。ステップS85では、不正が発生していることの通知を不正発生検知部130から受けているグループ設定部140が、フレーム情報を用いて、受信ログに記録されている複数のデータフレームにグループを設定する。この例では、2番目に受信されたデータフレーム及び3番目に受信されたデータフレームが互いに異なるグループに含まれるよう設定される。
図12Aが示すのは、この時点での受信ログの状態である。
図12Aに示される受信ログのグループの欄の値は、2番目に受信されたデータフレームはグループ1に、3番目に受信されたデータフレームはグループ2に含まれることを示している。
【0149】
次にグループ設定部140は、グループ1及びグループ2のそれぞれに含まれるデータフレームの個数が所定数以上であるか否か判定する(ステップS86、
図8参照)。この例では所定数は10と想定する。この場合、ステップS86ではNOと判定され、3番目のデータフレームの受信に関連する一連の処理は終了する(
図8参照)。
【0150】
次に、
図13A及び
図13Bを参照して、4番目及び5番目のデータフレームの受信に伴う監視ECU100による一連の処理を説明する。ただし、3番目までのデータフレームの受信に伴う処理と共通の点については省略するか又は簡単に説明する。
【0151】
4番目に受信されたデータフレームについてのステップS95の手順では、2番目に受信されたデータフレーム及び3番目に受信されたデータフレームの両方が基準に用いられる。
【0152】
4番目に受信されたデータフレームと2番目に受信されたデータフレームとの受信間隔は50,850μs、データ値の差は1km/h未満である。また、4番目に受信されたデータフレームと3番目に受信されたデータフレームとの受信間隔は、50,050μs、データ値の差は1km/h未満である。つまり、4番目に受信されたデータフレームは、受信間隔ルールとデータ変化量ルールとの両方に適合する。なお、この例のように基準として用いられるデータフレームが複数ある場合には、少なくとも1つの基準として用いられるデータフレームとの関係で受信間隔及びデータ変化量が基準を満たせば、ルールに適合すると判断される。
【0153】
この時点では、受信間隔ルールとデータ変化量ルールとの両方に適合するデータフレームは4番目に受信されたデータフレームのみである。したがって、不正発生検知部130はステップS95ではNOと判定し、ステップS97に進む。
【0154】
次のステップS97では、この例では、その時刻より手前である(ステップS97でNO)と想定して、2番目及び3番目に受信されたデータフレームが引き続き基準として用いられる。
【0155】
ステップS84以降については、2番目に受信されたデータフレームの場合と同様である。
【0156】
5番目に受信されたデータフレームについてのステップS95の手順では、2番目に受信されたデータフレーム及び3番目に受信されたデータフレームが再び基準に用いられる。
【0157】
5番目に受信されたデータフレームと2番目に受信されたデータフレームとの受信間隔は51,300μs、データ値の差は1km/h未満である。また、5番目に受信されたデータフレームと3番目に受信されたデータフレームとの受信間隔は、50,500μs、データ値の差は1km/h未満である。つまり、5番目に受信されたデータフレームは、受信間隔ルールとデータ変化量ルールとの両方に適合する。
【0158】
なお、
図13Bを参照すると、この時点までに受信された5つのデータフレームの受信間隔及びデータ値の大小関係が模式的に示されている。黒丸で示されるのが、2番目及び3番目に受信されたデータフレームである。この例では、この2番目及び3番目に受信されたデータフレームの受信時刻及びデータ値を基準に、続く4番目及び5番目に受信されたデータフレームのそれぞれについて2つのルールに適合するか否かが判定され、いずれについても2つのルールに適合すると判定されている。
【0159】
この時点では、受信間隔ルールとデータ変化量ルールとの両方に適合するデータフレームは4番目に受信されたデータフレーム及び5番目に受信されたデータフレームの2つである。したがって不正発生検知部130は、ステップS95でYESと判定してステップS96に進み、不正発生をグループ設定部140及び不正対応部160に通知する(
図9参照)。
【0160】
ステップS97では、この例ではその時刻を経過している(ステップS97でYES)と想定して、基準として用いられるデータフレームの設定が、4番目及び5番目に受信されたデータフレームに更新される(ステップS98、
図13Aの「基準」の欄を参照)。
【0161】
ステップS84以降については、3番目に受信されたデータフレームの場合と同様である。ただしステップS85ではグループ設定部140が、4番目に受信されたデータフレームを、データ値の差がより小さい2番目に受信されたデータフレームと同じグループ1に設定する。また、5番目に受信されたデータフレームを、データ値の差がより小さい3番目に受信されたデータフレームと同じグループ2に設定する。
図13Aに示される受信ログのグループの欄では、4番目に受信されたデータフレームはグループ1に、5番目に受信されたデータフレームはグループ2に含まれることが示されている。
図13Bでは、同一のグループに含まれるデータフレームは点線の枠で囲んで示されている。
【0162】
6番目から19番目に受信されたデータフレームは、4番目又は5番目に受信されたデータフレームと同様に処理されるため説明を省略し、
図14A及び
図14Bを参照して、20番目及び21番目のデータフレームの受信に伴う監視ECU100による一連の処理を説明する。ただし、5番目までのデータフレームの受信に伴う処理と共通の点については省略するか又は簡単に説明する。また、6番目から17番目に受信されたデータフレームについては、
図14Aに記載の受信ログでの記載も省略している。
【0163】
20番目及び21番目に受信されたデータフレームについてのステップS95の手順では、18番目に受信されたデータフレーム及び19番目に受信されたデータフレームの両方が基準に用いられる。
【0164】
20番目に受信されたデータフレームと18番目に受信されたデータフレームとの受信間隔は49,100μs、データ値の差は1km/h未満である。また、20番目に受信されたデータフレームと19番目に受信されたデータフレームとの受信間隔は、48,500μsであるが、データ値の差は1km/hを超える。このように、20番目に受信されたデータフレームは、18番目に受信されたデータフレームとの関係で受信間隔及びデータ変化量が基準を満たすため、受信間隔ルールとデータ変化量ルールとの両方に適合すると判断される。
【0165】
この時点では、受信間隔ルールとデータ変化量ルールとの両方に適合するデータフレームは20番目に受信されたデータフレームのみである。したがって、不正発生検知部130は、ステップS95ではNOと判定し、ステップS97に進む。
【0166】
次のステップS97では、この例では、その時刻より手前である(ステップS97でNO)と想定して、18番目及び19番目に受信されたデータフレームが引き続き基準として用いられる。
【0167】
ステップS84以降については、2番目又は4番目に受信されたデータフレームの場合と同様である。
【0168】
21番目に受信されたデータフレームについてのステップS94の手順では、再び19番目に受信されたデータフレーム及び20番目に受信されたデータフレームが基準に用いられる。
【0169】
21番目に受信されたデータフレームと18番目に受信されたデータフレームとの受信間隔は49,700μs、データ値の差は1km/hを超える。また、21番目に受信されたデータフレームと19番目に受信されたデータフレームとの受信間隔は、49,100μsであるが、データ値の差は1km/h未満である。このように、21番目に受信されたデータフレームは、19番目に受信されたデータフレームとの関係で受信間隔及びデータ変化量が基準を満たすため、受信間隔ルールとデータ変化量ルールとの両方に適合する。
【0170】
この時点では、受信間隔ルールとデータ変化量ルールとの両方に適合するデータフレームは20番目に受信されたデータフレーム及び21番目に受信されたデータフレームの2つである。したがって不正発生検知部130は、ステップS95でYESと判定してステップS96に進み、不正発生をグループ設定部140及び不正対応部160に通知する(
図9参照)。
【0171】
次のステップS97では、この例では、その時刻を経過している(ステップS97でYES)と想定して、基準として用いられるデータフレームの設定が、20番目及び21番目に受信されたデータフレームに更新される(図示なし)。
【0172】
ステップS84では、3番目又は5番目に受信されたデータフレームの場合と同様に、YESと判定される。
【0173】
ステップS85ではグループ設定部140が、20番目に受信されたデータフレームを、データ値の差がより小さい18番目に受信されたデータフレームと同じグループ1に設定する。また、21番目に受信されたデータフレームを、データ値の差がより小さい19番目に受信されたデータフレームと同じグループ2に設定する。
【0174】
次にグループ設定部140は、グループ1及びグループ2のそれぞれに含まれるデータフレームの個数が所定数以上であるか否か判定する(ステップS86、
図8参照)。この時点では、各グループに含まれるデータフレームの個数が10個である(
図14B参照)。したがって、グループ設定部140は、ステップS86でYESと判定する。
【0175】
次に監視ECU100では、不正データ識別部150が、各グループについて正常なデータフレームのグループであるか不正なデータフレームのグループであるかを識別する(ステップS87、
図8参照)。不正データ識別部150は、各グループの受信間隔の分散を算出する。
図15は、不正データ識別部150が算出した受信間隔の分散の例を示す。不正データ識別部150は、これらの分散のそれぞれと、
図6に示される正常モデル保持部191が保持する正常モデルが示す正常なIDが0x100のデータフレームの受信間隔の分散との差分を比較する。この例では、不正データ識別部150は、正常モデルが示す分散との差分のより小さい、つまり、より正常モデルに近い分散を示すグループ1を正常なデータフレームのグループであると識別する。また、グループ2を不正なデータフレームのグループであると識別する。
【0176】
また不正データ識別部150は、不正なデータフレームのグループであるグループ2に含まれるデータフレームを基準として用いないよう設定を変更する。つまり、受信ログにおける、グループ2に含まれるデータフレームの基準の欄の値を0に設定する(ステップS88、
図8参照)。この例では、次に受信されるデータフレームについては、グループ1の最新のデータフレーム、つまり20番目に受信されたデータフレームのみが基準として用いられる。
図14Aに示される受信ログの基準の欄では、20番目に受信されたデータフレームについてのみ1の値が入り、その他のデータフレームについては0とされている。
【0177】
図14Bは、この時点までに受信されたデータフレームの受信間隔及びデータ値の大小関係を模式的に示す。クロスを含む丸は、ステップS87で不正なデータフレームのグループと識別されたグループ2に含まれるデータフレームを示す。また、黒丸は、21番目に受信されたデータフレームについて実行されたステップS88の後、つまり、22番目に受信されるデータフレームについての処理におけるステップS95で基準として用いられるデータフレームを示す。
【0178】
なお、その後にグループ2に含まれるデータフレームを送信していた不正なECUから新たに送信するデータフレームは、20番目に受信されたデータフレームのみが基準として用いる場合には、少なくともデータ変化量ルールに適合しない。つまり、いずれのデータフレームとの関係においてもルールに適合しないため、監視ECU100では不正なデータフレームとして扱われる。
【0179】
[1.13 効果]
本実施の形態において、車載ネットワークシステム10を流れるデータフレームを監視する監視ECU100では、所定のルールに適合するデータフレームが複数存在する場合に、各データフレームには、含むデータ値に基づいてグループが設定される。そして、さらに、設定したグループごとに、データフレームの受信間隔の分布に関する特徴(特徴量)を正常モデルと比較することで、当該グループが正常なデータフレームを含むグループであるかを識別する。これにより、従来では正常と不正の識別が困難であったデータフレームについて、より精度よく正常なデータフレームを識別することができ、より確実に車載ネットワークを保護することができる。
【0180】
[2. 変形例]
なお、本発明を上記実施の形態に基づいて説明してきたが、本発明は、上記実施の形態に限定されないのはもちろんである。以下のような場合も本発明に含まれる。
【0181】
(1)上記実施の形態は、データフレームに含まれるデータ値によって、データフレームに2個のグループを設定する場合を例に用いて説明したものであり、設定されるグループは3つ以上であってもよい。また、設定されるグループの個数は、例えばグループ設定部140によって、所定の受信間隔の時間内に受信される同じIDのデータフレームの数に応じて動的に変更されてもよい。これにより、例えば車載ネットワークシステム10に流される不正なデータフレームが、正常なデータフレームの個数に対して非常に多い場合にも対応可能となり、より効果的である。
【0182】
また、上記実施の形態では、2個のグループが一度に設定されているが、一時に設定されるグループは、ある時間幅の中でルールを満たす等の所定の条件を満たす一群のデータフレームに1個のみでもよく、グループが設定される都度、不正なデータフレームを含むグループであるか否かが判定されてもよい。
【0183】
(2)上記実施の形態は、受信間隔ルールとデータ変化量ルールとの両方に適合するデータフレームは、いずれも基準として用いるデータフレームに設定する場合を例に用いて説明したものであり、基準として用いるデータフレームの個数を所定の数以下に抑えてもよい。例えば、受信間隔ルールとデータ変化量ルールとの両方に適合するデータフレームが3個以上存在する場合には、これらのデータフレームの中からグループ設定部140がランダムに、受信順に、又はデータ値間の差分等に基づいて、基準に用いるデータフレームとして2個を選択してもよい。これにより、不正発生検知部130による計算量の増加を抑えてより効率よく安定した処理ができる。
【0184】
(3)上記実施の形態は、各グループに含まれるデータフレームが20個又は10個以上のときに、不正なデータフレームを含むグループか否かの判断が実行される(ステップS86)場合を例に用いて説明したものである。ただし、不正データ識別部150がこの判断を行うときに各グループに含まれるデータフレームの個数はこれらに限定されず、多くても少なくてもよい。不正なデータフレームを含むグループの識別の処理は、各グループに含まれるデータフレームの個数が少なければ、より高速な処理が可能である。その一方で、各グループに含まれるデータフレームの個数が多ければ、より高い精度の識別が期待できる。このようなグループあたりのデータフレームの個数は、例えば処理速度と、用途に応じて要求される識別の精度とのバランスを考慮して決定されてもよい。
【0185】
また、上記実施の形態は、不正データ識別部150が不正なデータフレームを含むグループの識別を開始する条件に、各グループに含まれるデータフレームの個数を用いる場合を例に用いて説明したものであり、この条件には、このようなデータフレームの個数以外のものが用いられてもよい。不正データ識別部150は、例えば、各グループに含まれるデータフレームのデータ値の平均の差が所定の値を超えた場合に、不正なデータフレームの識別を実行してもよい。また、グループが3個以上ある場合には、例えば各グループ間でのデータ値の平均の差の中で最大のもの、又は最小のものが所定の値を超えた場合に不正なデータフレームの識別を実行してもよい。
【0186】
または、各グループに含まれる最新のデータフレームのデータ値間の差が所定の値を超えた場合に、不正なデータフレームの識別を実行してもよい。これらの場合に用いられる所定の値は、同一IDのデータフレームのデータ値の差が大きいことが車両の動作に悪影響を及ぼさない範囲で選択して決定される。
【0187】
これにより、車両の動作に影響が及ばない程度であればデータフレームを蓄積することが可能となる。したがって、車両の動作に影響が及ぶ前に不正なデータフレームを含むグループを識別でき、かつ、識別精度の向上が期待できる。
【0188】
また、上記のような開始の条件が満たされた後に不正なデータフレームを含むグループであるかの識別を実行したものの、例えばデータフレームの受信間隔の分散の差が所定の値よりも小さいなどの理由で、不正なデータフレームを含むグループであると識別しなかった場合には、さらにデータフレームの収集を継続してグループに追加してから再度識別が実行されてもよい。
【0189】
これにより、不正であるか否かの識別が所望の精度で実行するのに要する数までデータフレームを収集することができる。
【0190】
(4)上記実施の形態は、各グループに含まれるデータフレームの個数が所定の数に達すると、不正なデータフレームを含むグループであるか否かの識別が、正常モデルとの比較の1回の結果に基づいて実行されている場合を例に用いて説明されているが、これに限定されない。
【0191】
例えば、1回の比較の結果が不正なデータフレームを含むグループであることを示す場合、データフレームを引き続き受信してから判定を繰り返し実施し、同じグループが所定の回数、例えば3回連続して不正だと判定した場合に、当該グループを不正なデータフレームのグループと識別してもよい。
【0192】
これにより、不正なデータフレームを含むグループであるかの識別がより慎重に実行されることで、識別精度の向上が期待できる。
【0193】
(5)上記実施の形態は、受信ログにフレーム情報が記録されているデータフレームに対して、グループ設定部140によって設定された各グループに含まれるデータフレームの数がカウントされる場合を例に用いて説明したものである。しかしながら、各グループに含まれるデータフレームの個数の上限をあらかじめ定めておき、データフレームが受信されるたびにFIFO(First−In First−Out)バッファを用いて各グループに含まれるデータフレームを更新してもよい。これにより、データフレームは古いものから順に自動的にグループから除去されてその影響が小さくなり、識別の精度向上に効果的である。
【0194】
(6)上記実施の形態は、データフレームへのグループの設定方法として、前回の基準として用いられたデータフレームのデータ値と、現在の基準であるデータフレームのデータ値の2乗誤差が最小となる組み合わせが同じグループに設定される例を用いて説明したものである。しかしながら、データフレームへのグループの設定方法はこの例に限定されない。例えば、前回の基準として用いられたデータフレームと、前回よりさらに1つ前、すなわち、前々回の基準として用いられたデータフレームを用いて、1つ前及び2つ前に各グループが設定されたデータフレーム間のデータ値の差から現在のデータ値を予測し、予測に最も近いデータ値のデータフレームを当該グループに設定してもよい。または、K−means法や、DBSCAN(Density−Based Spatial Clustering of Applications with Noise)などの既知の各種のクラスタリング手法を用いてデータフレームにグループを設定してもよい。
【0195】
(7)上記実施の形態では、受信間隔の分布に関する特徴量として受信間隔の分散が用いられているが、これに限定されない。例えば、受信間隔の最大値や最小値、標準偏差等の他の統計量が用いられてもよい。また、正常モデルとしても、受信間隔の分散が用いられているが、これに限らず他の統計量が正常モデルとして用いられてもよい。例えば、受信間隔の最大値や最小値、標準偏差が用いられてもよい。
【0196】
(8)上記実施の形態では、正常モデルに示される特徴量とより近い特徴量を示すグループを正常なデータフレームを含むグループとして識別しているが、正常モデルはこれに限定されない。正常モデルは正常なデータフレームの特徴を示すものであればよく、例えば正常モデルとして、過去に正常と判定されたグループに含まれるデータフレーム、又は仕様で規定されている正常な受信間隔のデータが正常モデル保持部191に保持されてもよい。そして、不正データ識別部150は、正常モデルのデータが示す受信間隔と識別対象のデータフレームのグループの受信間隔との密度比推定を介した異常度をデータフレーム間の受信間隔の分布に関する特徴量として算出し、不正なデータフレームを含むグループであるかの判定がなされてもよい。この場合、不正データ識別部150は、異常度に基づいて正常又は不正なデータフレームの識別を実行する。
【0197】
これにより、受信間隔の集合から求まる統計量からではなく、正常な受信間隔との確率分布の差異からデータフレームのグループの不正を判定することが可能となり、識別の可能性が高まる。例えば、識別対象のグループに含まれるデータフレームが単独又は比較的少数であっても、その受信間隔から、正常又は不正なデータフレームを含むグループの識別をより精度よく実行することができる。
【0198】
また、正常モデルの別の例をさらに挙げると、正常なデータフレームの受信間隔の時系列データから求めた自己回帰係数を示すものであってもよい。この場合、正常なデータフレームの識別は、グループごとに、グループに含まれるデータフレームの受信間隔の時系列データ、つまりフレーム情報から自己回帰係数を用いて予測される予測受信間隔と、当該グループに含まれる最新のデータフレームの実際の受信間隔との誤差である予測誤差を算出し、予測誤差が最も小さいものが正常なデータフレームを含むグループと識別されてもよい。
【0199】
これにより、受信間隔の時系列モデルに沿った出現確率に基づいて正常なデータフレームのグループを判定することが可能となり、識別の可能性が高まる。
【0200】
また、正常なデータフレームのグループの識別には機械学習を用いる方法が利用されてもよい。
【0201】
例を挙げると、各グループに含まれるデータフレーム間の受信間隔についてのベクトル(以下、受信間隔ベクトルという)を主成分分析又はオートエンコーダなどを用いて次元削減した結果が用いられてもよい。例えばあるグループに含まれるデータフレームが10個ある場合、9個の受信間隔を要素とする9次元のベクトルが利用可能であり、次元削減の対象とすることができる。そして復元後の再構成誤差が小さいデータフレームのグループが正常なデータフレームを含むグループと識別されてもよい。
【0202】
なお、上記のような受信間隔ベクトルは、機械学習を用いる方法に限らず利用されてもよい。例えば、受信間隔ルールは正常なデータフレーム間の受信間隔についての受信間隔ベクトル(正常受信間隔ベクトル)の分散等の特徴量に関する規定であってもよい。この場合、不正データ識別部150は、例えば、受信間隔ルールが示す正常受信間隔ベクトルの分散と、識別対象のデータフレームの受信間隔ベクトルの分散との差に基づいて識別を実行する。
【0203】
機械学習を用いる方法の別の例を挙げると、あらかじめ不正なデータフレームを正常なデータフレーム近傍に注入した受信間隔のデータを不正なデータフレームのグループのラベルとして学習させたランダムフォレスト(Random Forest)、又はサポートベクターマシン(Support Vector Machine)などの識別器が用いられてもよい。
【0204】
(9)上記実施の形態及びその変形例では、データフレームに含まれるデータ値によって、データフレームにグループを設定した後に、グループごとのデータフレームの受信間隔から算出される特徴(受信間隔に関する特徴量)を用いて不正なデータフレームを含むグループを識別している。しかしながら、データフレームにグループを設定することなく、複数のデータフレームの受信間隔の分布の特徴量に基づいて不正なデータフレームの存否が判定されてもよい。
【0205】
これにより、ネットワークに正常なデータフレームが送信されずに不正なデータフレームのみが送信される状況においても、データフレームの受信間隔を用いて不正なデータフレームが送信されていることを検知することができ、車載ネットワークを効果的に保護することができる。このような状況は、例えば攻撃によって送信されるデータフレームによって正常なデータフレームが置換される場合に発生し得る。
【0206】
CANのような仕様のネットワークでは、IDで識別されるデータの種類(内容)ごとにデータフレームの送信の周期がほぼ一定であり、攻撃のためのデータフレームもその周期から許容範囲内の誤差で送信される必要がある。しかしながら、データフレームの実際の送信の周期には、ECUの個体差又は処理内容によって差が生じる。したがって、実際に送信されたデータフレームのサンプルから統計的に得られる、データフレームの受信間隔の分布に関する特徴量は、攻撃者にとって偽装が困難である。したがって、受信間隔に関する特徴量を利用する攻撃対策は、攻撃者に回避されにくい。これにより、より確実に車載ネットワークを保護することができる。
【0207】
(10)上記実施の形態では、不正を検知した監視ECU100の動作として、不正を通知するデータフレームを他のECU等に送信する例を示したが、これに限定されない。例えば監視ECU100は、データフレームの受信中に不正検知を行い、受信間隔ルール及びデータ変化量ルールのいずれかに適合しないデータフレームをエラーフレームの送信により無効化してもよい。
【0208】
また車載ネットワークがゲートウェイECUを含む場合、監視ECU100と同等の監視機能をゲートウェイECUに追加してもよい。このゲートウェイECUは、ルールに適合しないデータフレームを転送しないという動作をしてもよい。このようにゲートウェイECUに監視機能を追加することで、より多数の車載ネットワークの情報を監視できる。したがって、実現できる機能の幅が広がり、また、効率的な監視が可能である。
【0209】
また、不正を検知した監視ECU100の動作の他の例として、不正を検知したことのユーザへの通知、車両のフェールセーフモードへの移行、検知した不正のログへの記録、携帯電話網などを通じての検知した不正の、車外にあるクラウドサーバ等への通知が挙げられる。
【0210】
これにより、不正を検知した後の、ユーザ又は車載ネットワークシステム10と連携するシステム等による柔軟な対応が可能となる。また、不正なデータフレームを含むグループについて、データ値又は受信間隔情報といったフレーム情報の集合が不正の指標となるラベルとして機械学習に用いられてもよい。
【0211】
(11)上記実施の形態は、ステップS88で基準となるデータフレームを設定し直し、このデータフレームを基準に用いて以降の不正の発生検知の処理(ステップS83)をしていたが、これに限定されない。例えば、ステップS88の処理に代えて、その後に受信する各データフレームについて、そのデータ値に基づいて、ステップS87で識別された不正なデータフレームを含むグループに属するか否かが判定されてもよい(データフレーム判定ステップ)。例えばこの判定の結果がYESであるデータフレームは、ゲートウェイで転送されない対象として扱われてもよい。
【0212】
または、データフレーム判定ステップでは、受信する各データフレームについて、ステップS87で識別された不正なデータフレームを含まないグループ(正常なデータフレームのグループ)に属するか否かが判定されてもよく、例えば、この判定の結果がYESであるデータフレームのみがゲートウェイでの転送の対象として扱われてもよい。
【0213】
これにより、個々のデータフレームの正常又は不正の判定によるフィルタリングが可能になる。
【0214】
(12)上記実施の形態は、CANプロトコルの標準フォーマットにおけるIDの例を示して説明したが、CANプロトコルの拡張フォーマットのIDであってもよい。
【0215】
(13)上記実施の形態は、受信ログには各データフレームのフレーム情報に、受信間隔情報として受信時刻が含まれ、データフレーム間の実際の受信間隔はこの受信時刻の差を算出することで取得される場合を例に説明されているがこれに限定されない。例えば受信ログには、受信時刻に代えて、直前のデータフレームとの受信時刻の差の計算結果が受信間隔情報として含まれてもよく、監視ECU100では、この計算結果である受信間隔情報が不正発生検知部130によって取得されてそのまま用いられてもよい。
【0216】
(14)上記実施の形態は、1つのID「0x100」について保持されるデータフレームの受信ログ、正常モデル、受信間隔ルール、及びデータ変化量ルールを用いて説明したが、監視ECU100では、これらは、それぞれ1つ以上のIDについて保持されてもよい。例えば、監視対象であるデータフレームの全てのIDの各々について保持されてもよい。
【0217】
また、通信の仕様でデータフレームに複数の種類がない場合、又は種類は複数あっても受信間隔及びデータ変化量の正常範囲が共通であることが既知な場合には、受信ログにIDを含めなくてもよい。
【0218】
(15)上記実施の形態では、データフレームは平文でバス300に流される例を示したが、データフレームは、暗号化されてからバスに送信されてもよい。また、データフレームにメッセージ認証コードを含んでいてもよい。
【0219】
(16)上記実施の形態では、正常モデル及び受信ログは、それぞれ正常モデル保持部191、受信ログ保持部180に平文で保持されている例を示したが、暗号化されていてもよい。
【0220】
(17)上記実施の形態では、車載ネットワークとしてCANプロトコルを用いていたが、これに限るものではない。例えば、CAN−FD(CAN with Flexible Data−Rate)、FlexRay、Ethernet(登録商標)、LIN(Local Interconnect Network)、MOST(Media Oriented Systems Transport)などを用いてもよい。あるいはこれらのネットワークをサブネットワークとして、CANと組み合わせたネットワークであってもよい。
【0221】
(18)上記実施の形態では、不正発生検知部130、グループ設定部140、不正データ識別部150、及び各種のデータを保持する記憶装置を構成要素として含む監視ECU100を説明しているが、全ての構成要素が一の装置に備えられる必要はない。例えば、不正発生検知部130、グループ設定部140、不正データ識別部150、又は記憶装置は、車外のクラウドサーバに備えられてもよい。例えばこれらの構成要素を備えるクラウドサーバでは、車載ネットワークシステムが接続可能な携帯電話回線網等の無線通信網を通じて監視ECU100のフレーム収集部120から受け取ったデータが、記憶装置上で実現される受信ログ保持部180に記録される。また、不正発生検知部130、グループ設定部140、及び不正データ識別部150は、受信ログ保持部180に保持される受信ログの読み書きをする。一方、監視ECU100では、クラウドサーバの不正発生検知部130から無線通信網を通じて不正の発生の通知を受けると、不正対応部160がフレーム生成部170へデータフレームの生成を要求する。
【0222】
なお、このような変形的な実施の形態も包含して、本発明は1台以上の情報処理装置を含む情報処理システムとして実現され得る。
【0223】
(19)上記の実施の形態における各ECUは、具体的には、マイクロプロセッサ、ROM、RAM、ハードディスクユニット、ディスプレイユニット、キーボード、マウスなどから構成されるコンピュータシステムである。RAM又はハードディスクユニットには、コンピュータプログラムが記録されている。マイクロプロセッサが、コンピュータプログラムにしたがって動作することにより、各ECUは、その機能を実現する。ここでコンピュータプログラムは、所定の機能を達成するために、コンピュータに対する指令を示す命令コードが複数個組み合わされて構成されたものである。
【0224】
(20)上記実施の形態における各ECUは、構成の一部又は全部は、1個のシステムLSI(Large Scale Integration:大規模集積回路)から構成されているとしてもよい。システムLSIは、複数の構成部を1個のチップ上に集積して製造された超多機能LSIであり、具体的には、マイクロプロセッサ、ROM、RAMなどを含んで構成されるコンピュータシステムである。RAMには、コンピュータプログラムが記録されている。マイクロプロセッサが、コンピュータプログラムにしたがって動作することにより、システムLSIは、その機能を達成する。
【0225】
また、上記の各ECUを構成する各構成要素は、個別に1チップ化されていても良いし、一部又は全てを含むように1チップ化されてもよい。
【0226】
また、ここでは、各ECUの構成をシステムLSIとしたが、集積度の違いにより、IC、LSI、スーパーLSI、ウルトラLSIと呼称されることもある。また、集積回路化の手法はLSIに限るものではなく、専用回路又は汎用プロセッサで実現してもよい。LSI製造後に、プログラムすることが可能なFPGA(Field Programmable Gate Array)や、LSI内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサを利用しても良い。
【0227】
さらには、半導体技術の進歩又は派生する別技術によりLSIに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積化を行ってもよい。バイオ技術の適用等が可能性としてありえる。
【0228】
(21)上記の各ECUを構成の一部又は全部は、各ECUに脱着可能なICカード又は単体のモジュールから構成されているとしてもよい。ICカード又はモジュールは、マイクロプロセッサ、ROM、RAMなどから構成されるコンピュータシステムである。ICカード又はモジュールは、上記の超多機能LSIを含むとしてもよい。マイクロプロセッサが、コンピュータプログラムにしたがって動作することにより、ICカード又はモジュールは、その機能を達成する。このICカード又はこのモジュールは、耐タンパ性を有するとしてもよい。
【0229】
(22)本発明は、上記に示すステップを含む方法であるとしてもよい。例えば、監視ECU100の各構成要素が実行する処理の内容を手順として含む方法として実現され得る。また、これらの方法をコンピュータにより実現するコンピュータプログラムであるとしてもよいし、コンピュータプログラムからなるデジタル信号であるとしてもよい。
【0230】
また、本発明は、コンピュータプログラム又はデジタル信号をコンピュータ読み取り可能な記録媒体、例えば、フレキシブルディスク、ハードディスク、CD−ROM、MO、DVD、DVD−ROM、DVD−RAM、BD(Blu−ray(登録商標) Disc)、半導体メモリなどに記録したものとしてもよい。また、これらの記録媒体に記録されているデジタル信号であるとしてもよい。
【0231】
また、本発明は、コンピュータプログラム又はデジタル信号を、電気通信回線、無線又は有線通信回線、インターネットを代表とするネットワーク、データ放送等を経由して伝送するものとしてもよい。
【0232】
また、本発明は、マイクロプロセッサとメモリを備えたコンピュータシステムであって、メモリは、上記コンピュータプログラムを記録しており、マイクロプロセッサは、コンピュータプログラムにしたがって動作するとしてもよい。
【0233】
また、プログラム又はデジタル信号を記録媒体に記録して移送することにより、又はプログラムまたはデジタル信号を、ネットワーク等を経由して移送することにより、独立した他のコンピュータシステムにより実施するとしてもよい。
【0234】
(23)上記実施の形態及び上記変形例をそれぞれ組み合わせてもよい。
【0235】
以上、上記のいずれの実施の形態又はその変形例を用いて説明された本発明の情報処理システム等は、車載ネットワークを流れるデータフレームを監視し、ルールに適合するデータフレームが複数送信された場合でも、受信間隔の分布に関する特徴に基づいて不正なデータフレームの存否を判定することができる。また、受信したデータフレームに、データ値に基づいてグループを設定し、受信間隔の分布に関する特徴量を設定したグループごとに取得して正常モデルと比較することで、正常なデータフレームのグループを識別することができる。これにより、従来は正常か不正の識別が困難であったルールに適合する複数のデータフレームについても、精度よく、正常又は不正なデータフレームのグループであるか否かの識別、又は受信した複数のデータフレームの中に不正なデータフレームが含まれているか否かの判定をすることができ、より確実な車載ネットワークの保護が可能となる。
【0236】
なお、本願の記載では、複数のデータフレームの中の不正なデータフレームの存否を判定する、との表現は、複数のデータフレーム中の各々が正常又は不正であるか否かであるかに基づく識別、及び複数のデータフレーム中にひとつでも不正なデータフレームが含まれているか否かに基づく正常又は不正の判定のいずれの場合も指し得る意味で用いている。