(57)【要約】【課題】周期外れか否かに基づいては検知できない不正メッセージの検知が可能な情報処理装置を提供する。【解決手段】ネットワークに接続される情報処理装置１００は、ネットワークから受信した複数の受信データを記憶する記憶部と、複数の受信データのうちの不正な受信データを検知するプロセッサとを備え、記憶部は、複数の受信データのうちの第一受信データによって、当該第一受信データより前に記憶部に記憶されたデータである第二受信データが上書きされたか否かを示す上書きステータス情報を保持し、プロセッサは、上書きステータス情報を用いて、第一受信データが不正な受信データであるか否か判定する。【選択図】図７
2019097012.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークに接続される情報処理装置であって、
前記ネットワークから受信した複数の受信データを記憶する記憶部と、
前記複数の受信データのうちの不正な受信データを検知するプロセッサとを備え、
前記記憶部は、前記複数の受信データのうちの第一受信データによって、前記第一受信データより前に前記記憶部に記憶されたデータである第二受信データが上書きされたか否かを示す上書きステータス情報を保持し、
前記プロセッサは、前記上書きステータス情報を用いて、前記第一受信データが不正な受信データであるか否か判定する、
情報処理装置。
【請求項２】
前記上書きステータス情報が前記第一受信データによって前記第二受信データが上書きされていることを示す場合、前記プロセッサは、前記第一受信データが不正であると判定する、
請求項１に記載の情報処理装置。
【請求項３】
前記記憶部はさらに前記複数の受信データの受信時刻を示す時刻情報を保持し、
前記上書きステータス情報が前記第一受信データによって前記第二受信データが上書きされていないことを示す場合、前記プロセッサは、前記第一受信データの時刻情報と前記第二受信データの時刻情報との差分が所定の範囲外であるときは、前記第一受信データが不正であると判定する、
請求項１又は２に記載の情報処理装置。
【請求項４】
前記上書きステータス情報が前記第一受信データによって前記第二受信データが上書きされていることを示す場合、又は、前記上書きステータス情報が前記第一受信データによって前記第二受信データが上書きされていないことを示し、かつ前記記憶部に保持されて前記複数の受信データの受信時刻を示す時刻情報のうち、前記第一受信データの受信時刻を示す時刻情報と前記第二受信データの受信時刻を示す時刻情報との差分が所定の範囲外である場合、前記プロセッサは、さらに前記第一受信データのペイロードの示す値が所定の正常範囲外にあるときは、前記第一受信データが不正であると判定する、
請求項１に記載の情報処理装置。
【請求項５】
前記記憶部は、前記記憶部に前記受信データが格納されているか否かを示す格納ステータス情報をさらに保持し、
前記プロセッサは、前記格納ステータス情報の読み出しを所定の周期で実行し、前記格納ステータス情報が前記記憶部に受信データが格納されていることを示す場合、前記記憶部から前記上書きステータス情報を読み出し、
前記上書きステータス情報が前記第一受信データによって前記第二受信データが上書きされていることを示す場合、前記プロセッサは、前記第一受信データより後のデータである第三受信データに対する処理において、前記所定の周期よりも短い周期で前記格納ステータス情報の読み出しを実行する、
請求項１から４のいずれか１項に記載の情報処理装置。
【請求項６】
前記より短い周期で読み出した前記格納ステータス情報が前記記憶部に受信データが格納されていることを示す場合、前記プロセッサは、前記第三受信データが不正でないと判定した場合、前記第三受信データより後のデータである第四受信データに対する処理において、前記より短い周期よりも長い周期又は前記所定の周期で実行する、
請求項５に記載の情報処理装置。
【請求項７】
ネットワークに接続される情報処理装置において実行される情報処理方法であって、
前記情報処理装置は、前記ネットワークから受信した複数の受信データ受信データを記憶する記憶部と、
前記複数の受信データのうちの不正な受信データを検知するプロセッサとを備え、
前記記憶部に、前記複数の受信データのうちの第一受信データによって、前記第一受信データより前に前記記憶部に記憶されたデータである第二受信データが上書きされたか否かを示す上書きステータス情報を保持させ、
前記プロセッサに、前記上書きステータス情報を用いて、前記第一受信データが不正な受信データであるか否か判定させる
情報処理方法。
【請求項８】
前記情報処理装置において、前記プロセッサに請求項７に記載の情報処理方法を実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワークに接続される情報処理装置が受信するデータの不正検知に関する。
【背景技術】
【０００２】
近年、車載ネットワークに対する攻撃（ハッキング）、並びに、攻撃によるリスクの高さが指摘されている。具体的には、外部との無線接続インタフェースを備える自動車の情報端末に無線通信などを介してアクセスした攻撃者が、その情報端末上のプログラムを不正に書き換え、その情報端末から自動車内部の車載ネットワークに対して任意のコマンドを含む不正なＣＡＮ（Ｃｏｎｔｒｏｌｌｅｒ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）メッセージを送信する。このことによって、電子制御ユニット（ＥＣＵ：Ｅｌｅｃｔｒｏｎｉｃ  Ｃｏｎｔｏｒｏｌ  Ｕｎｉｔ、以下、ＥＣＵと表記する）によって制御されるアクチュエータが運転者の意図に反して制御される攻撃手法が発表されている。
【０００３】
ＣＡＮのプロトコルによる通信では、ＣＡＮメッセージの種類はメッセージ内のＩＤ（ＩＤｅｎｔｉｆｉｃａｔｉｏｎ）によって示され、ＩＤが同じである同一種類のメッセージは、一定の間隔で車載ネットワークのバスに送信される。
【０００４】
このような送信の周期性を利用して、バスからメッセージを受信するＥＣＵにおいて、受信したメッセージがこのような不正なメッセージであるか否かを、送信又は受信のタイミングが規定の範囲内にあるか否かに基づいて判定する技術が提案されている（特許文献１参照）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１３−１８７５５５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、このようなタイミングを規定の範囲におさめることで、特許文献１に提案されている技術では検知できないようにする巧妙な攻撃手法がある。
【０００７】
本発明は、そのような攻撃手法によって送信された不正メッセージであっても検知が可能な情報処理装置等を提供する。
【課題を解決するための手段】
【０００８】
本発明の一態様に係る情報処理装置は、ネットワークに接続される情報処理装置であって、このネットワークから受信した複数の受信データを記憶する記憶部と、これら複数の受信データのうちの不正な受信データを検知するプロセッサとを備え、記憶部は、上記の複数の受信データのうちの第一受信データによって、当該第一受信データより前に記憶部に記憶されたデータである第二受信データが上書きされたか否かを示す上書きステータス情報を保持し、プロセッサは、この上書きステータス情報を用いて、第一受信データが不正な受信データであるか否か判定する。
【０００９】
なお、これらの包括的または具体的な態様は、システム、方法、集積回路、コンピュータプログラム又はコンピュータ読み取り可能なＣＤ−ＲＯＭなどの記録媒体で実現されてもよく、システム、方法、集積回路、コンピュータプログラム及び記録媒体の任意な組み合わせで実現されてもよい。
【発明の効果】
【００１０】
本発明の情報処理装置は、送信又は受信のタイミングが規定の範囲外であるかの判定のみでは検知できない不正メッセージを検知することができる。
【図面の簡単な説明】
【００１１】
【図１】図１は、車載ネットワークのバスからメッセージを受信する情報処理装置の一般的な機能構成を示すブロック図である。
【図２Ａ】図２Ａは、上記の情報処理装置で行われる、正常メッセージの受信時の動作例を説明するためのタイミングチャートである。
【図２Ｂ】図２Ｂは、上記の情報処理装置で行われる、不正メッセージの受信時の動作例を説明するためのタイミングチャートである。
【図３】図３は、上記の情報処理装置で行われる、不正メッセージの受信時の他の動作例を説明するためのタイミングチャートである。
【図４】図４は、実施の形態１における情報処理装置の一般的な機能構成を示すブロック図である。
【図５】図５は、実施の形態１における情報処理装置で行われるメッセージの受信時の動作例を説明するためのタイミングチャートである。
【図６Ａ】図６Ａは、実施の形態１における情報処理装置で用いられる上書きステータス情報を示すレジスタの値及び対応する上書きステータス情報の例を説明するための図である。
【図６Ｂ】図６Ｂは、実施の形態１における情報処理装置で用いられる格納ステータス情報を示すレジスタの値及び対応する格納ステータス情報の例を説明するための図である。
【図７】図７は、実施の形態１における情報処理装置で行われる受信データに対する処理のフローチャートである。
【図８】図８は、実施の形態２における情報処理装置で行われるメッセージの受信時の動作例を説明するためのタイミングチャートである。
【図９】図９は、実施の形態２における情報処理装置で行われる受信データに対する処理のフローチャートである。
【発明を実施するための形態】
【００１２】
（本発明の基礎となった知見）
本発明者らは、「背景技術」の欄において記載したようなタイミングを用いた不正メッセージの検知手法に関し、以下の問題が生じることを見出した。
【００１３】
攻撃手法の理解のために、まず、メッセージを受信する機器の一般的な構成と、正常時のメッセージの受信処理について図を用いて説明する。図１は、ＣＡＮプロトコルに準拠する車載ネットワークのバスからメッセージを受信する機器であるＥＣＵ１１００の一般的な機能構成を示すブロック図である。このような機器の例として、車載ネットワークにおいてメッセージを受信するＥＣＵを用いる。図２Ａ及び図２Ｂは、それぞれ当該機器で行われるメッセージの受信時の動作例を説明するためのタイミングチャートである。
【００１４】
車載ネットワークのバス３００に接続されるＥＣＵ１１００は、例えばこの車載ネットワークに接続される他のＥＣＵから送信されるメッセージを受信する。メッセージは、ユーザの操作に応じた設定値又はセンサによって測定された物理量等を示す情報を含み、ＥＣＵ１１００はこれらの情報に応じて、ＥＣＵ１１００に接続されている（図示しない）アクチュエータを制御する。ＥＣＵ１１００は、ＣＡＮコントローラ１１１０、ドライバ１１３０、及び不正検知部１１５０を備える。
【００１５】
ＣＡＮコントローラ１１１０は、ＥＣＵ１１００を構成するマイクロコントローラによって実現される構成要素であり、受信バッファ及びレジスタを有する。
【００１６】
受信バッファ及びレジスタは、マイクロコントローラに含まれるプロセッサの一部又はメモリ等の記憶装置（以下、これらをまとめて記憶部ともいう）によって実現される。受信バッファは、ＥＣＵ１１００がバス３００から受信したメッセージのデータ（以下、受信データともいう）が一時的に格納される格納領域（記憶領域）であり、各メッセージに含まれるＩＤが示すメッセージの種類ごとに割り当てられる。つまり各受信バッファ（各格納領域）は、対応するＩＤが示す所定の種類のメッセージを格納する。レジスタには、各受信バッファに格納されたメッセージの受信時のタイムスタンプが保持される。また、レジスタには、受信されたメッセージのデータが、そのＩＤが示すメッセージの種類に応じた受信バッファに格納されているか否かを示すステータスの情報（以下、格納ステータス情報ともいう）も保持される。
【００１７】
ドライバ１１３０及び不正検知部１１５０は、上記のプロセッサがメモリからソフトウェアを読み出して実行することによって実現される構成要素である。ドライバ１１３０は、レジスタに定期的にポーリングして格納ステータス情報を取得する。格納ステータス情報から受信バッファに受信データが格納されていると判定したときには、この受信データ及びレジスタのタイムスタンプを取得し、取得した受信データ及びタイムスタンプを合わせて不正検知部１１５０に渡す。
【００１８】
不正検知部１１５０は、ドライバ１１３０から順次受け取った受信データのタイムスタンプから受信間隔を計算し、この受信間隔が、あらかじめ定められた周期から一定の許容範囲を超えて外れているか否かを判断する。受信間隔が許容範囲を超えてこの周期から外れている場合、不正検知部１１５０は不正を検知し、この受信データのメッセージを不正メッセージとして処理する。
【００１９】
ＥＣＵ１１００のこれらの構成要素の動作例について、図２Ａ及び図２Ｂを用いて説明する。図２Ａは正常メッセージの受信時の動作、図２Ｂは不正メッセージの受信時の動作を示すタイミングチャートである。なお、ソフトウェアが実行されることで実現されるドライバ１１３０及び不正検知部１１５０の動作は、１本の時間軸の線にまとめている。
【００２０】
図２Ａ及び図２Ｂでは、矢印でＥＣＵ１１００における動作の発生が上向き又は下向きの矢印で示されている。矢印上の丸（ドット）は動作主又はデータ等の送信元を示し、矢尻は動作の対象又はデータ等の送信先を示す。例えば、ポーリング動作の発生は動作主であるドライバ１１３０の時間軸から、ポーリング先であるレジスタの時間軸に達する下向きの矢印で示される。このポーリングに対してレジスタに保持される値がドライバ１１３０に渡されるのは、レジスタの時間軸からドライバ１１３０の時間軸に向かう上向きの矢印で示される。また、渡されるレジスタの値の違いは、送信元から出る矢印の軸を実線と破線とで違えて示されている。
【００２１】
また、ＭＳＧ１、ＭＳＧ２、ＭＳＧ３、及びＭＳＧｘはＣＡＮバス３００を介して送信されてＥＣＵ１１００が受信するメッセージを示す。
【００２２】
図２Ａ及び図２Ｂに示されるように、ドライバ１１３０は、レジスタから格納ステータス情報を取得するために、一定周期でレジスタへのポーリングを行う。
【００２３】
格納ステータス情報を保持するレジスタは、取る値を変えて２つの格納ステータスを示す。この例では、レジスタは、受信バッファに受信データが格納されているときに１の値を、受信データが格納されていないときに０の値をそれぞれ取る。
【００２４】
時間軸に沿って図２Ａを見ると、まず、ドライバ１１３０は初回のポーリングに対し、受信バッファに受信データがないことを示す格納ステータス情報（０の値）を得て（破線の上向きの矢印）、受信バッファからのデータ取得は行わない。
【００２５】
その後、他のＥＣＵからＣＡＮバス３００に1つ目のメッセージ（以下、ＭＳＧ１と表記する）が送信されると、ＣＡＮコントローラ１１１０はＭＳＧ１を時刻ｔ１に受信する。ＣＡＮコントローラ１１１０は、受信したＭＳＧ１を受信バッファに格納し、時刻ｔ１のタイムスタンプをこの受信バッファに対応するレジスタに保持させる（図示なし）。また、格納ステータス情報を保持するレジスタの値を０から１にする。
【００２６】
初回のポーリングから所定の周期（ポーリング周期）で２回目のポーリングを行ったドライバ１１３０は、受信バッファに受信データがあることを示す格納ステータス情報（１の値）を得ると、受信バッファからＭＳＧ１及びレジスタから時刻ｔ１のタイムスタンプをそれぞれ取得して、不正検知部１１５０に渡す。ＣＡＮコントローラ１１１０では、ＭＳＧ１の格納されていた受信バッファが空けられ、格納ステータス情報を保持するレジスタの値は１から０に戻される。
【００２７】
ＥＣＵ１１００では、ここまでのサイクル（初回のポーリングから受信バッファを空けるまで）が繰り返される。ＥＣＵ１１００では、ＭＳＧ１と共通のＩＤを持つ２つ目のメッセージＭＳＧ２とその受信時刻ｔ２を示すタイムスタンプが取得されて、不正検知部１１５０に渡される。なお、これらのタイムスタンプは、ＣＡＮコントローラ１１１０において各メッセージに付され、例えば各受信バッファに対応するレジスタ（図２Ｂにおいて図示なし）に保持される。
【００２８】
不正検知部１１５０は、ＭＳＧ２の受信時刻ｔ２とＭＳＧ１の受信時刻ｔ１との差分と、所定のメッセージ送信周期Ｔとを用いて、ＭＳＧ２が不正メッセージであるか否か判定する。より具体的には、ｔ２とｔ１との差分が、メッセージ送信周期Ｔから所定の許容差Δ以上に外れている場合にＭＳＧ２が不正メッセージであると判定する。つまり、ＭＳＧ２は、次の式１が満たされる場合、正常メッセージであると判定され、満たされない場合、不正メッセージであると判定される。
【００２９】
Ｔ−Δ＜ｔ２−ｔ１＜Ｔ＋Δ・・・（式１）
【００３０】
図２Ａの例では、ｔ２とｔ１との差分はＴに等しく、不正検知部１１５０は、ＭＳＧ２は正常メッセージであると判定する。
【００３１】
次に図２Ｂの例を説明する。図２Ａの例と共通の点については、説明を省略する。なお、ドライバ１１３０によるポーリングの周期、及び正常メッセージの送信周期Ｔは図２Ａの例と共通である。
【００３２】
ＣＡＮバス３００に送信された1つ目のメッセージＭＳＧ１が受信バッファに格納され、受信バッファからのＭＳＧ１及びレジスタからの時刻ｔ１のタイムスタンプが不正検知部１１５０に渡されるまでは図２Ａの例での動作と共通である。
【００３３】
ＣＡＮコントローラ１１１０では、ＭＳＧ１の格納されていた受信バッファが空けられ、格納ステータス情報を保持するレジスタの値は１から０に戻される。正常メッセージとしては次に送信周期Ｔに従ってＭＳＧ２がＣＡＮバス３００に送信され、時刻ｔ２に受信されるはずである。しかし、ＭＳＧ２が送信される前に、ＭＳＧ１と共通のＩＤを持つメッセージＭＳＧｘが攻撃者に乗っ取られた他のＥＣＵからＣＡＮバス３００に送信されている。ＣＡＮコントローラ１１１０は、ＭＳＧｘを時刻ｔｘに受信して一旦空いた受信バッファに格納し、また、時刻ｔｘを示すタイムスタンプをレジスタに保持する。あわせて、格納ステータス情報を保持するレジスタの値は０から１に変更される。
【００３４】
その次のポーリングの結果、ＭＳＧｘ及び時刻ｔｘを示すタイムスタンプがドライバ１１３０から不正検知部１１５０に渡される。
【００３５】
不正検知部１１５０は、ＭＳＧｘの受信時刻ｔｘとＭＳＧ１の受信時刻ｔ１との差分と、所定のメッセージ送信周期Ｔとを用いて、ＭＳＧｘが不正メッセージであるか否か判定する。ここで、次の式２が満たされる場合、ＭＳＧｘは正常メッセージであると判定される。
【００３６】
Ｔ−Δ＜ｔｘ−ｔ１＜Ｔ＋Δ・・・（式２）
【００３７】
しかし図２Ｂの場合、ｔｘ−ｔ１＜Ｔ−Δであるため、不正検知部１１５０は、ＣＡＮバスへの送信が所定の周期を外れるＭＳＧｘを不正メッセージと判定して不正なデータを検知する。検知された不正メッセージは、ＥＣＵ１１００によるアクチュエータの制御に利用されることなく破棄されるか、又は事後的な解析等への利用のために、不揮発性のメモリ上にあるログに記録されてもよい。
【００３８】
その後、ＣＡＮバス３００に送信されたＭＳＧ２は図２Ａの例と同様に受信され、ＥＣＵ１１００において利用される。
【００３９】
このように、ＥＣＵ１１００は、ＣＡＮネットワークでは共通のＩＤのメッセージは所定の周期で送信されることを利用して、その周期から許容差以上に外れて送信されたメッセージを不正メッセージと判定して検知する。これにより、ＣＡＮネットワークのセキュリティが図られている。しかしながら、次に説明する攻撃手法では、ＥＣＵ１１００は不正メッセージを検知できない。
【００４０】
図３は、ＥＣＵ１１００で行われる、不正メッセージの受信時の他の動作例を説明するためのタイミングチャートである。ドライバ１１３０によるポーリングの周期、及び正常メッセージの送信周期Ｔは図２Ａ及び図２Ｂの例と共通である。
【００４１】
図３の例における攻撃手法の図２Ｂにおける攻撃手法との違いは、ＣＡＮバス３００への不正メッセージＭＳＧｘの送信が、ある正常メッセージ（同図中のＭＳＧ２）の送信直後であって、ドライバ１１３０がこの正常メッセージを取得する前に行われる点にある。
【００４２】
ＭＳＧ２は、ＣＡＮコントローラ１１１０によって時刻ｔ２に受信されて受信バッファに格納され、レジスタにはタイムスタンプとしてｔ２が格納される。そして、ＣＡＮコントローラ１１１０は、ＭＳＧ２の受信の直後にＣＡＮバス３００に送信されたＭＳＧｘを、ドライバ１１３０がＭＳＧ２を取得するより前である時刻ｔｘに受信する。ＭＳＧｘとＭＳＧ２とは共通のＩＤを持つため、格納される受信バッファは同じである。つまり、受信バッファにあるＭＳＧ２はＭＳＧｘによって上書きされ、レジスタに保持するタイムスタンプもｔ２からｔｘに上書きされる。
【００４３】
その次のポーリングの結果、ＭＳＧｘ及び時刻ｔｘを示すタイムスタンプがドライバ１１３０から不正検知部１１５０に渡される。
【００４４】
不正検知部１１５０では、ｔｘとｔ１との差分と、所定のメッセージ送信周期Ｔとを用いてＭＳＧｘが不正メッセージであるか否か判定する。ここで、次の式３が満たされる場合、ＭＳＧｘは正常メッセージであると判定される。
【００４５】
Ｔ−Δ＜ｔｘ−ｔ１＜Ｔ＋Δ・・・（式３）
【００４６】
ここで、ＭＳＧｘはＭＳＧ２の直後に送信され速やかに受信されたためｔ２とｔｘとの差は小さく、式３は満たされる。したがって、不正検知部１１５０は、ＭＳＧｘを正常メッセージであると判定する。その後、実際は不正メッセージであるＭＳＧｘが正常メッセージであるＭＳＧ２に代わってアクチュエータの制御に使われることで、攻撃者の意図する攻撃は成功する。
【００４７】
なお、この例では、続いて受信されるＭＳＧ３についての不正検知のための判定でも、ｔ３とｔｘとの差分が送信周期から許容差未満であるため、ＭＳＧｘの不正は検知されない。
【００４８】
以下、このような攻撃手法によって送信された不正メッセージであっても検知が可能な情報処理装置等の実施の形態を説明する。
【００４９】
なお、以下で説明する各実施の形態は、いずれも包括的又は具体的な例を示すものである。以下の各実施の形態で示される数値、形状、構成要素、構成要素の配置及び接続形態、ステップ、ステップの順序などは一例であり、本発明を限定する趣旨ではない。また、以下の各実施の形態における構成要素のうち、最上位概念を示す独立請求項に記載されていない構成要素については任意の構成要素として説明される。
【００５０】
（実施の形態１）
図４は、実施の形態１における、ＣＡＮプロトコルに準拠する車載ネットワークのバスからメッセージを受信する情報処理装置の一般的な機能構成を示すブロック図である。このような情報処理装置の例として、上述の本発明の基礎となった知見の説明に用いたのと同じく、車載ネットワークにおいてメッセージを受信するＥＣＵを用いる。
【００５１】
車載ネットワークのバス３００に接続されるＥＣＵ１００もまた、例えばこの車載ネットワークに接続される他のＥＣＵから送信される、ユーザの操作に応じた設定値又はセンサによって測定された物理量等を示すメッセージに応じて、ＥＣＵ１００に接続されているアクチュエータ（図示しない）を制御するものであり、基本的な機能構成はＥＣＵ１１００と同じく、ＣＡＮコントローラ１１０、ドライバ１３０、及び不正検知部１５０を備える。
【００５２】
また、これらの機能的な構成要素の基本的な機能及びこれらを実現するためのハードウェア及びハードウェアと協働するソフトウェアの種類はＥＣＵ１１００と同じであるため、説明を省略する。しかしながら、ＥＣＵ１００とＥＣＵ１１００とは、メッセージの受信時の動作において差がある。以下、ＥＣＵ１００のＥＣＵ１１００との差異を中心に説明する。
【００５３】
図５は、ＥＣＵ１００で行われるメッセージの受信時の動作例を説明するためのタイミングチャートである。ドライバ１３０によるポーリングの周期、及び正常メッセージの送信周期Ｔは図２Ａから図３までの例と共通である。また、図５の動作例でも、図３と同様のタイミングで不正メッセージＭＳＧｘが攻撃者に乗っ取られた他のＥＣＵからバス３００に送信される。つまり、正常なメッセージＭＳＧ２がＣＡＮコントローラ１１０によってバス３００から受信された直後に、不正メッセージＭＳＧｘがバス３００に送信される。したがって、上述のとおり、受信されたメッセージの送信間隔に基づく従来の手法では不正検知はできない。
【００５４】
ＥＣＵ１００では、ＥＣＵ１１００と異なり、上書きステータス情報がさらに不正検知のために用いられる。上書きステータス情報とは、標準的なＣＡＮコントローラにおいて実装される、レジスタに保持される情報であり、受信バッファにおいて、ドライバ１３０によって読み取られなかった受信データが新たに受信した別のデータによって上書きされたか否かを示す。従来、例えば、上書きステータス情報はバス３００の混雑状況の判断に用いられている。図６Ａは、上書きステータス情報を示すレジスタの値及び対応する上書きステータス情報の例を説明するための図である。また、図６Ｂは、上述の格納ステータス情報を示すレジスタの値及び対応する格納ステータス情報の例を説明するための図である。格納ステータス情報も、ＥＣＵ１００において用いられる。ＥＣＵ１００は、各ＩＤのメッセージの受信データが格納される受信バッファごとの、上書きステータス情報および格納ステータス情報のそれぞれを示す値を保持するためのレジスタを備える。
【００５５】
再び図５を参照し、図３に示したＥＣＵ１１００の各構成要素の動作と比較しながらＥＣＵ１００の動作について説明する。
【００５６】
ドライバ１３０は、受信バッファの格納ステータス情報を保持するレジスタにポーリングする。ポーリングの結果、返ってきた格納ステータス情報を保持するレジスタの値が０の場合、受信バッファに格納されている受信データがなく、ドライバ１１３０の動作と同じく、それ以上のデータのやり取りは行われない。なお、図５では、破線の矢印の軸のレジスタの値「０」のやり取りを示し、実線の矢印の軸はレジスタの値「１」のやり取りを示す。両方の線が並ぶ場合は、２つのレジスタのそれぞれから「１」の値と「０」の値とが読み取られている。
【００５７】
格納ステータスを示す値が１の場合、つまり、受信バッファに格納されている受信データがある場合、ドライバ１１３０の動作と異なり、ドライバ１３０は受信バッファからこの受信データを取得し、合わせて、この受信バッファの上書きステータス情報を保持するレジスタにポーリングをして値を取得する。図５におけるＯＳ１及びＯＳｘはそれぞれ、ＭＳＧ１、ＭＳＧｘが受信バッファにあるときにドライバ１３０が取得した上書きステータス情報を示す。
【００５８】
この値が０の場合、つまり、新たに受信されたデータフレームによる受信バッファのデータの上書きが発生していない場合、ドライバ１３０は受信データのメッセージを正常メッセージとして扱う。図５において、ＯＳ１は値が０で示される上書きステータス情報の例である。
【００５９】
また、この値が１の場合、つまり、新たに受信されたデータフレームによる受信バッファの（未読の）データの上書きが発生している場合、ドライバ１３０は受信データのメッセージを不正メッセージとして扱う。図５において、ＯＳｘは値が１で示される上書きステータス情報の例である。
【００６０】
ＥＣＵ１００で行われる、受信データに対するこのような処理の一連の手順を、フローチャートを用いて説明する。図７は、ＥＣＵ１００で行われる、受信データに対する処理のフローチャートである。
【００６１】
周期的にポーリングを実行するドライバ１３０は、ポーリングのタイミングが到来するまでは待機し（ステップＳ７０でＮｏ）、ポーリングのタイミングが到来すると（ステップＳ７０でＹｅｓ）、ポーリングを実行してＣＡＮコントローラ１１０のレジスタに保持されている受信バッファの格納ステータス情報を問い合わせる（ステップＳ７１）。
【００６２】
格納ステータス情報が、受信バッファに受信データが格納されていないことを示す場合（ステップＳ７１で「受信なし」）、ドライバ１３０は次のタイミングを待ってポーリングを実行する。
【００６３】
格納ステータス情報が、受信バッファに受信データが格納されていることを示す場合（ステップＳ７１で「受信あり」）、ドライバ１３０は受信バッファからメッセージ、つまり受信データ、及び、当該受信バッファに対応するレジスタからこの受信データのタイムスタンプを、それぞれ取得する（ステップＳ７２）。この受信データは、本実施の形態における第一受信データの例である。また、タイムスタンプは、受信データの受信時刻に関連する時刻情報の例である。
【００６４】
またドライバ１３０は、さらに、ＣＡＮコントローラ１１０のレジスタに保持されている受信バッファの上書きステータス情報を問い合わせて取得する（ステップＳ７３）。ここまでにドライバ１３０が取得したメッセージの受信データ、タイムスタンプ、及び上書きステータス情報は、不正検知部１５０に渡される。
【００６５】
不正検知部１５０は、上書きステータス情報に基づいて、ステップＳ７２でドライバ１３０が取得した受信データによって、受信バッファでの（未読の）受信データの上書きは発生しているか否かを確認する（ステップＳ７４）。
【００６６】
上書きステータス情報が、受信バッファにおいて（未読の）受信データの上書きが発生したことを示す場合（ステップＳ７４でＹｅｓ）、不正検知部１５０は、不正検知の通知（ステップＳ７６）及び／又は不正メッセージの出力（ステップＳ７７）を行う。
【００６７】
ステップＳ７６での不正検知の通知の具体例としては、ＥＣＵ１００が接続される車載ネットワークを含む車両の運転手へ、当該車両が備える警告機能による通知、及び／又は、当該車両と通信可能な監視サーバへの通知が挙げられる。または、当該車両内で、危険回避動作処理等の、不正検知時に行われる処理を担う機能的なブロックへの通知であってもよい。
【００６８】
また、ステップＳ７７での不正メッセージの出力の具体例としては、上述のような事後的な解析等への利用のためのログへの記録が挙げられる。
【００６９】
上書きステータス情報が、受信バッファにおいて（未読の）受信データの上書きは発生していないことを示す場合（ステップＳ７４でＮｏ）、不正検知部１５０は、この受信データの受信時刻に基づく正常又は不正の判定を行う（ステップＳ７５）。より具体的には、不正検知部１５０は、ドライバ１３０から取得した受信データのタイムスタンプが示す時刻情報と、この受信データの１つ前にドライバ１３０から取得した受信データのタイムスタンプが示す時刻情報との差分を算出する。１つ前の受信データは、本実施の形態における第二受信データの例である。
【００７０】
算出された差分が所定の範囲内であれば（ステップＳ７５でＹｅｓ）、不正検知部１５０は受信データを正常なデータと判定する。算出された差分が所定の範囲外であれば（ステップＳ７５でＮｏ）、不正検知部１５０は受信データを不正なデータと判定して不正なデータを検知する。ステップＳ７５で不正な受信データを検知すると、不正検知部１５０は、不正検知の通知（ステップＳ７６）及び／又は不正メッセージの出力（ステップＳ７７）を行う。なお、算出された差分と比較されるこの所定の範囲とは、図５に示される送信周期Ｔ±許容差Δの範囲である。
【００７１】
受信データの不正検知のための一連の手順が終了し、引き続きＣＡＮバスからの次の受信データを対象に不正検知の処理が行われる。
【００７２】
このように、本実施の形態における不正検知部１５０は、受信データ（メッセージ）が正常であるか否かについて、この受信データによって、受信バッファでプロセッサが（未読の）同種の（この受信データの１つ前の）受信データを上書きしたか否かに基づいて判定する。また、このような上書きが発生していない場合には、直前の受信データとのタイムスタンプの差分に基づく不正検知をさらに行う。これにより、定期的に送信される正常なデータから、送信間隔の許容差内のごく短い時間差で送信される不正な受信データを検知することができる。
【００７３】
このような不正検知部１５０を備えるＥＣＵ１００は、従来は検知できなかった不正なデータの検知に対応し、ネットワークにおけるセキュリティをより確実なものにすることができる。
【００７４】
（実施の形態２）
実施の形態２における情報処理装置について、実施の形態１との差異点を中心に説明する。
【００７５】
本実施の形態における情報処理装置は、実施の形態１における情報処理装置と不正検知処理における動作に差異がある。
【００７６】
本実施の形態における情報処理装置の機能構成は、実施の形態１における情報処理装置であるＥＣＵ１００の機能構成と共通であるため、上述の図４及びその説明をもって替え、ここでの説明を省略する。
【００７７】
図８は、本実施の形態におけるＥＣＵ１００で行われるメッセージの受信時の動作例を説明するためのタイミングチャートである。正常メッセージの送信周期Ｔは図２Ａから図３及び図５の例と共通である。また、図８の動作例でも、図３及び図５と同様のタイミングで不正メッセージＭＳＧｘが攻撃者に乗っ取られた他のＥＣＵからバス３００に送信される。つまり、正常なメッセージＭＳＧ２がＣＡＮコントローラ１１０によってバス３００から受信された直後に不正メッセージＭＳＧｘがバス３００に送信される。したがって、受信されたメッセージの送信間隔に基づく手法での不正検知はできない。
【００７８】
図８の動作例は、図５に示される実施の形態１におけるＥＣＵ１００の動作例と、ドライバ１３０によるポーリングの周期が異なる。
【００７９】
具体的には、図８の動作例では、上書きステータス情報ＯＳｘを用いてＭＳＧｘが不正な受信データであることを検知した後に、ポーリングの周期をより短くする。このように、より短い周期でポーリングを実行することで、受信バッファの格納ステータス情報を取得する。そして、定期的に送信されている受信バッファに格納された正常なデータを、その送信から送信間隔の許容差内のごく短い時間差で送信される不正な受信データで上書きされる前にドライバ１３０が読み取ることができる。
【００８０】
図５の動作例では、不正な受信データの検知は可能であったが、このような時間差で不正なデータが送信され続けている間、ドライバ１３０は受信バッファから正常なデータを読み取ることができない。
【００８１】
これに対し図８の動作例では、不正な受信データの直前に送信された正常な受信データＭＳＧ３がドライバ１３０によって読み取られ、さらに不正検知部１５０が、その後の受信データＭＳＧｙが不正な受信データであることを、送信間隔（ｔｙ−ｔ３）が許容差内に収まらないことに基づいて検知している。本実施の形態におけるＥＣＵ１００では、不正な受信データが検知された場合に、ドライバ１３０が格納ステータス情報を取得するためのポーリングをより短い周期で実行する。これにより、ドライバ１３０は受信バッファから正常なデータを読み取ることができる。
【００８２】
なお、ポーリングの周期は正常なデータの受信が可能になるまで段階的に短縮されてもよいし、一度に最短の周期まで短縮されてもよい。
【００８３】
次に、本実施の形態におけるＥＣＵ１００で行われる、受信データに対するこのような処理の一連の手順を、フローチャートを用いて説明する。図９は、ＥＣＵ１００で行われる、受信データに対する処理のフローチャートである。図７で示される処理と共通の手順は、共通の参照符号で示されており、説明を省略することがある。なお、以下のこの処理の説明は、ポーリングの周期は正常なデータの受信が可能になるまで段階的に短縮され得る場合を例とする。
【００８４】
ドライバ１３０は、まずポーリング周期を初期化する（ステップＳ８０）。ポーリング周期の初期値は、例えばＥＣＵ１００における処理負荷としてある程度の余裕が確保される程度のポーリングの時間的間隔を示す値である。このような値として実施の形態１におけるＥＣＵ１００で設定されるポーリング周期と共通であってもよい。
【００８５】
ステップＳ７０からＳ７４までは、実施の形態１と共通である。ステップＳ７２でドライバ１３０が受信バッファから取得する受信データは本実施の形態における第一受信データの例であり、受信バッファから取得するタイムスタンプは、受信データの受信時刻に関連する時刻情報の例である。また、第一受信データの１つ前の受信データは、本実施の形態における第二受信データの例である。
【００８６】
上書きステータス情報が、受信バッファにおいて（未読の）受信データの上書きが発生したことを示す場合（ステップＳ７４でＹｅｓ）、不正検知部１５０は、ポーリング周期を上述のように短縮し（ステップＳ８２）、また、不正メッセージの出力（ステップＳ７８）を行う。不正メッセージの出力の動作の内容は、ステップＳ７６での動作と基本的に共通であってよい。
【００８７】
その後のＥＣＵ１００の処理は、受信バッファに格納された次の受信データの有無の確認のためのポーリング（ステップＳ７０）に戻る。したがって、初期値のポーリング周期よりも短い周期でステップＳ７０が実行される。その後のステップＳ７４までは上述の１回目のステップＳ７０からＳ７４までと同様に実行される。このように短縮されたポーリング周期でステップＳ７０が実行されてからステップＳ７２でドライバ１３０が受信バッファから取得する受信データは、本実施の形態における第三受信データの例である。
【００８８】
そして２回目のステップＳ７４でもＹｅｓの場合、ポーリング周期がさらに短縮される（ステップＳ８２）。続いて不正検知通知が実行され（ステップＳ７８）、このさらに短縮されたポーリング周期で、次の受信データに対してステップＳ７０が実行される。このような手順で、ポーリング周期の短縮は、ステップＳ７４でＮｏと判断されるまで、つまり受信バッファにおいて、ドライバ１３０が（未読の）受信データが新しい受信データで上書きされる状況が発生しなくなるまで重ねて実行される。
【００８９】
２回目のステップＳ７４でＮｏの場合、さらに不正検知部１５０は、この受信データの受信時刻に基づく正常又は不正の判定を行う（ステップＳ７５）。ステップＳ７５でＮｏの場合におけるステップＳ７６及びＳ７７は、実施の形態１と共通である。なお、ステップＳ７５からＳ７７の手順が実行される場合は、不正な受信データはタイミングに基づいた不正検知手法によって検出可能であるため、図９の例では、以降の不正な受信データの検知のためにポーリングの周期を短縮していない。
【００９０】
ステップＳ７５でＹｅｓの場合、不正な受信データは検出されなかったとして、次の受信データの有無の確認のためのポーリング（ステップＳ７０）のポーリング周期は初期化される（ステップＳ８１）。
【００９１】
このように、本実施の形態における不正検知部１５０は、実施の形態１における不正検知部１５０と同様に、受信データ（メッセージ）が正常であるか否かについて、この受信データによって、受信バッファで（ドライバ１３０又は不正検知部１５０を実行する）プロセッサが（未読の）同種の（この受信データの１つ前の）受信データを上書きしたか否かに基づいて判定する。また、このような上書きが発生していない場合には、直前の受信データとのタイムスタンプの差分に基づく不正検知をさらに行う。これにより、定期的に送信される正常なデータから、送信間隔の許容差内のごく短い時間差で送信される不正な受信データを検知することができる。
【００９２】
また、本実施の形態における不正検知部１５０はさらに、受信データの上書きが発生した場合には、ポーリング周期を短くする。これにより、不正な受信データによって正常な受信データが上書きされる前に正常な受信データを取得することができる。
【００９３】
なお、図９に示される例を用いた上述の処理の手順は適宜変形が可能である。例えば、ステップＳ８１は、ＥＣＵ１００の起動後にステップＳ８２のポーリング周期の短縮が実行されるまでは、実行されなくてもよい。
【００９４】
また、ステップＳ８１ではポーリング周期を初期化するのではなく、段階的により長くしてもよい。例えば、上書きステータス情報に基づく不正な受信データの初回の検知時のステップＳ８２ではポーリング周期をＥＣＵ１００において可能な最小値まで短くして、まずは受信バッファからの正常な受信データの取得を可能にする。その後、段階的にポーリング周期を長くし、再度不正な受信データが検知されたときにポーリング周期を一段階短くすることで、正常な受信データの取得が可能であって最も長いポーリング周期が見つけられてもよい。
【００９５】
このように一旦短縮されたポーリング周期がステップＳ８１が延長又は初期化されてからのステップＳ７２でドライバ１３０が受信バッファから取得する受信データは、本実施の形態における第四受信データの例である。
【００９６】
ポーリング周期は短ければ短いほど、より確実に受信バッファからの正常な受信データの取得が可能である。しかしその一方で、短いポーリング周期はＥＣＵ１００の処理負荷が大きい。したがって、むやみにポーリング周期を短縮すると、不正検知以外の処理に十分なリソースを割り当てることが不可能になる場合がある。上記のように正常な受信データが取得された後にポーリング周期を初期化したり、又は極力長いものを用いたりすることで、過度に短いポーリング周期を用い続けることを避け、ＥＣＵ１００におけるセキュリティの強度とセキュリティに割り当てるリソースとのバランスをとることができる。
【００９７】
（変形例等）
以上のように、本発明に係る技術の例示として実施の形態１及び２を説明した。しかしながら、本発明に係る技術は、これらの実施の形態に限定されず、適宜、変更、置き換え、付加、省略等を行った実施の形態にも適用可能である。例えば、以下のような変形例も本発明の実施の形態に含まれる。
【００９８】
（１）各実施の形態におけるＥＣＵ１００では、上書きステータス情報及びタイムスタンプを用いて不正検知の判定がなされているが、さらに受信データに含まれるペイロードを用いて不正検知の判定がなされてもよい。
【００９９】
より具体的には、ステップＳ７４でＹｅｓ又はステップＳ７５でＮｏの判定がなされた受信データを対象に、不正検知部１５０は、ステップＳ７６又はＳ７８より前に各受信データのペイロードを抽出し、ペイロードの示す値が所定の正常範囲内にあるか正常範囲外にあるかを判定する。そして、この値が所定の正常範囲外にある場合、不正検知部１５０は、第一受信データが不正であると判定してステップＳ７６又はＳ７８の不正検知通知を実行してもよい。
【０１００】
ここでいう所定の正常範囲とは、例えば受信データ（メッセージ）のＩＤが示す種類ごとに定められた値の範囲であってもよい。また、判定対象のメッセージより前に受信された、ＩＤが共通のメッセージのペイロードの値からの差分又は変化率の正常範囲であってもよい。これにより、例えばバス３００の混雑又はその緩和によって正常なメッセージ間での上書き又は受信時刻のずれ等が発生した場合に、これらのメッセージが誤って不正であると判定されない。
【０１０１】
このように、ペイロードを用いることで誤検知を抑え、より高精度な不正検知を実現することができる。
【０１０２】
（２）各実施の形態におけるＥＣＵ１００では、ドライバ１３０はポーリングを周期的に実行して取得する格納ステータス情報に応じて受信バッファから受信データを取得しているが、これに限定されない。例えば実施の形態１におけるＥＣＵ１００では、ドライバ１３０は、受信バッファに受信データが格納されたときに発生する割り込みベースで受信データを取得してもよい。また例えば、実施の形態２におけるＥＣＵ１００では、ドライバ１３０は、不正な受信データが検知されるまでは受信バッファに受信データが格納されたときに発生する割り込みベースで受信データを取得し、検知後にポーリングを含む上述の動作に切り替えて実行してもよい。
【０１０３】
（３）各実施の形態におけるＥＣＵ１００で行われるメッセージの受信時の動作の各手順のドライバ又は不正検知部による分担は上述の例に限定されない。例えばすべての手順がドライバによって実行されてもよい。また例えば、ＥＣＵ１００上で実行されているメイン関数がステップＳ７１を実行し、ポーリングを実行するタイミングにドライバ１３０を呼び出して続くステップＳ７１等を実行させてもよい。
【０１０４】
（４）各実施の形態において、タイムスタンプ等の情報の保持される場所はレジスタに限定されない。このような情報の保持場所は、ドライバ１３０及び不正検知部１５０を実現するプロセッサから図５又は図８に示されるようなタイミングでの動作が実行できる速さでアクセス可能であればよく、例えば各ＩＤの受信データを格納する受信バッファ内であってもよい。
【０１０５】
（５）各実施の形態において、ＥＣＵ１００で例示される情報処理装置の、接続されているネットワーク内での役割は限定されない。情報処理装置は、例えばアクチュエータの制御をするＥＣＵであってもよいし、ネットワークの監視用のＥＣＵ、又はゲートウェイであってもよい。また、これらの役割を担う１つの情報処理装置であってもよいし、１台の情報処理装置上でソフトウェア等によって実現される複数の機能モジュールの１つとして実装されてもよい。
【０１０６】
（６）各実施の形態及びその変形例は、ＣＡＮ通信が行われるネットワーク上のシステムとして説明されたが、本発明の適用対象はこれに限定されず、他の通信方式によるネットワークを利用するシステムにも適用することができる。例えば、ＣＡＮ  ＦＤ（ＣＡＮ  ｗｉｔｈ  Ｆｌｅｘｉｂｌｅ  Ｄａｔａ  ｒａｔｅ）、ＴＴＣＡＮ（Ｔｉｍｅ  Ｔｒｉｇｇｅｒｅｄ  ＣＡＮ）、Ｅｔｈｅｒｎｅｔ（登録商標）、ＬＩＮ（Ｌｏｃａｌ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｎｅｔｗｏｒｋ）、ＭＯＳＴ（登録商標）（Ｍｅｄｉａ  Ｏｒｉｅｎｔｅｄ  Ｓｙｓｔｅｍｓ  Ｔｒａｎｓｐｏｒｔ）、ＦｌｅｘＲａｙ（登録商標）などの通信方式が用いられるシステムであってもよい。
【０１０７】
（７）上記の各情報処理装置を構成する構成要素の一部又は全部は、各装置に脱着可能なＩＣカード又は単体のモジュールから構成されているとしてもよい。このＩＣカード又はモジュールは、マイクロプロセッサ、ＲＯＭ、ＲＡＭなどから構成されるコンピュータシステムである。また、このＩＣカード又はモジュールは、上記のような高集積度の集積回路で実現される超多機能ＬＳＩを含んでもよい。マイクロプロセッサが、ＲＯＭ又はＲＡＭに記憶されるコンピュータプログラムに従って動作することにより、ＩＣカード又はモジュールは、その機能を達成する。このＩＣカード又はモジュールは、耐タンパ性を有してもよい。
【０１０８】
（８）本発明は、上記の各装置が実行する動作に含まれる処理の手順を含む方法であるとしてもよい。また、これらの方法をコンピュータにより実現するコンピュータプログラムであるとしてもよいし、このコンピュータプログラムからなるデジタル信号であるとしてもよい。
【０１０９】
（９）また、本発明は、上記のコンピュータプログラム又はデジタル信号をコンピュータ読み取り可能な記録媒体、例えば、フレキシブルディスク、ハードディスク、ＣＤ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ）−ＲＯＭ、ＭＯ（Ｍａｇｎｅｔｏ−Ｏｐｔｉｃａｌ）ディスク、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｃ）、ＤＶＤ−ＲＯＭ、ＤＶＤ−ＲＡＭ、ＢＤ（Ｂｌｕ−ｒａｙ（登録商標）  Ｄｉｓｃ）、半導体メモリーなどに記録したものとしてもよい。また、これらの記録媒体に記録されている上記のデジタル信号であるとしてもよい。
【０１１０】
（１０）また、本発明は、上記のコンピュータプログラム又はデジタル信号を、電気通信回線、無線または有線通信回線、インターネットを代表とするネットワーク、データ放送等を経由して伝送するものとしてもよい。
【０１１１】
（１１）また、本発明は、マイクロプロセッサとメモリーとを備えたコンピュータシステムであって、このメモリーは、上記のコンピュータプログラムを記憶しており、このマイクロプロセッサは、当該コンピュータプログラムに従って動作するとしてもよい。
【０１１２】
（１２）また、上記のコンピュータプログラム又はデジタル信号を上記の記録媒体に記録して移送することにより、または上記のコンピュータプログラム又はデジタル信号を上記のネットワーク等を経由して移送することにより、独立した他のコンピュータシステムにより実施されるとしてもよい。
【０１１３】
（１３）上記の各実施の形態及びその変形例は、それぞれ組み合わせるとしてもよい。
【産業上の利用可能性】
【０１１４】
本発明にかかる情報処理装置、情情報処理方法、及びプログラムは、攻撃によってネットワークに注入された不正なデータを検知して当該ネットワークの正常な機能を維持する。これらの情報処理装置等は、ネットワーク上で動く、又はネットワークを含む製品の安全性向上に有用である。
【符号の説明】
【０１１５】
１００、１１００    ＥＣＵ
１１０、１１１０    ＣＡＮコントローラ
１３０、１１３０    ドライバ
１５０、１１５０    不正検知部
３００    バス
【図１】
2019097012.tif 000003
【図２Ａ】
2019097012.tif 000004
【図２Ｂ】
2019097012.tif 000005
【図３】
2019097012.tif 000006
【図４】
2019097012.tif 000007
【図５】
2019097012.tif 000008
【図６Ａ】
2019097012.tif 000009
【図６Ｂ】
2019097012.tif 000010
【図７】
2019097012.tif 000011
【図８】
2019097012.tif 000012
【図９】
2019097012.tif 000013