(57)【要約】【課題】リアルタイム性を損なわずにメッセージの不正送信の有無を精度よく判定できるネットワーク監視装置およびプログラムを提供する。【解決手段】実施形態のＣＧＷ１０は、識別子で識別されるメッセージが送受信されるネットワークにおいて周期送信されるメッセージを監視対象とし、監視対象メッセージを受信するごとに、受信時刻を識別子と対応付けて記録する受信時刻記録部２１と、監視対象メッセージを受信するごとに、受信した監視対象メッセージについて、今回の受信時刻Ｔｉと、ｍ個前の受信時刻Ｔｉ−ｍと、メッセージ送信周期Ｆと、定数σとに基づいて、受信時刻Ｔｉ−ｍからＴｉの期間内における不正送信の有無を判定する不正送信判定部２２と、を備える。【選択図】図３
2018026663.tif 000002
【特許請求の範囲】
【請求項１】
識別子で識別されるメッセージが送受信されるネットワークにおいて周期送信されるメッセージを監視対象とするネットワーク監視装置であって、
監視対象メッセージを受信するごとに、受信時刻を識別子と対応付けて記録する受信時刻記録部と、
監視対象メッセージを受信するごとに、受信した監視対象メッセージについて、今回の受信時刻Ｔｉと、ｍ個前の受信時刻Ｔｉ−ｍと、メッセージ送信周期Ｆと、予め定めた定数σとに基づいて、受信時刻Ｔｉ−ｍからＴｉの期間内における不正送信の有無を判定する不正送信判定部と、を備えるネットワーク監視装置。
【請求項２】
前記不正送信判定部は、（Ｔｉ−Ｔｉ−ｍ＋σ）／Ｆの整数部ｋを求め、ｍ−ｋが１以上である場合に不正送信ありと判定する、請求項１に記載のネットワーク監視装置。
【請求項３】
前記不正送信判定部は、Ｍ＝ｍ×Ｆ−σなる閾値Ｍを設定し、Ｔｉ−Ｔｉ−ｍが閾値Ｍ未満である場合に不正送信ありと判定する、請求項１に記載のネットワーク監視装置。
【請求項４】
ｍ＝１の場合、前記ネットワークにおける遅延の最大値をΔｍａｘとしたときに、前記定数σは、Δｍａｘ≦σ＜（Ｆ−Δｍａｘ）／２を満たす値に定められる、請求項２または３に記載のネットワーク監視装置。
【請求項５】
ｍ≧２の場合、前記ネットワークにおける遅延の最大値をΔｍａｘとしたときに、前記定数σは、Δｍａｘ≦σ＜Ｆ−Δｍａｘを満たす値に定められる、請求項２または３に記載のネットワーク監視装置。
【請求項６】
前記不正送信判定部が不正送信ありと判定した場合に、所定の不正送信検知時処理を実行する不正送信検知時処理部をさらに備える、請求項１乃至５のいずれか一項に記載のネットワーク監視装置。
【請求項７】
前記不正送信検知時処理部は、前記不正送信検知時処理として、不正送信ありと判定した監視対象メッセージの識別子を含む不正送信検知メッセージをネットワークに送信する処理を実行する、請求項６に記載のネットワーク監視装置。
【請求項８】
前記不正送信検知時処理部は、前記不正送信検知時処理として、受信した監視対象メッセージを破棄する処理をさらに実行する、請求項７に記載のネットワーク監視装置。
【請求項９】
前記不正送信検知時処理部は、受信した監視対象メッセージの特定の位置の値が所定値である場合に当該監視対象メッセージを破棄する、請求項８に記載のネットワーク監視装置。
【請求項１０】
前記不正送信検知時処理部は、前記不正送信検知時処理として、受信した監視対象メッセージの特定の位置を特定の値でマスクした後に、前記不正送信判定部が不正送信なしと判定した場合に実行される通常時処理と同等の処理を実行する、請求項６に記載のネットワーク監視装置。
【請求項１１】
前記不正送信検知時処理部は、受信した監視対象メッセージの特定の位置の値が所定値である場合に当該監視対象メッセージの特定の位置を特定の値でマスクする、請求項１０に記載のネットワーク監視装置。
【請求項１２】
前記不正送信検知時処理部は、前記不正送信検知時処理として、不正送信ありと判定した監視対象メッセージと同じバスから受信したメッセージについて、前記不正送信判定部が不正送信なしと判定した場合に実行される通常時処理を停止させる処理を実行する、請求項６に記載のネットワーク監視装置。
【請求項１３】
コンピュータに、
識別子で識別されるメッセージが送受信されるネットワークにおいて周期送信されるメッセージを監視対象として、
監視対象メッセージを受信するごとに、受信時刻を識別子と対応付けて記録する機能と、
監視対象メッセージを受信するごとに、受信した監視対象メッセージについて、今回の受信時刻Ｔｉと、ｍ個前の受信時刻Ｔｉ−ｍと、メッセージ送信周期Ｆと、予め定めた定数σとに基づいて、受信時刻Ｔｉ−ｍからＴｉの期間内における不正送信の有無を判定する機能と、を実現させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、ネットワーク監視装置およびプログラムに関する。
【背景技術】
【０００２】
例えば自動車に搭載される車載ネットワークでは、メッセージの不正送信によって自動車が運転手の意図と異なる挙動をすることが知られている。こうしたネットワークへの攻撃に対する対策として、メッセージの不正送信を検知する技術の開発が進められている。例えば、送信メッセージの周期性に着目し、所定送信周期に対するフィルタリングを行う技術や、周期異常を検知して不正送信されたメッセージの破棄などを行う技術などが提案されている。
【０００３】
しかし、送信メッセージの周期性に着目して不正送信を検知する従来の技術は、メッセージを受信したときにそのメッセージの正当性を判定することを主眼とする。このため、周期変動などを考慮してメッセージの正当性を高精度に判定しようとすると、待機時間が長くなってリアルタイム性が損なわれる。一方、リアルタイム性を重視すると判定精度が低下し、不正送信の見逃しや誤検知が生じやすくなる。したがって、リアルタイム性を損なわずにメッセージの不正送信の有無を精度よく判定できる新たな技術が望まれている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特許第５９１９２０５号公報
【非特許文献】
【０００５】
【非特許文献１】Dr．Charlie  Miller  &  Chris  Valasek，“Adventures  in  Automotive  Networks  and  Control  Units”，2013，DEF  CON．http://illmatics.com/car_hacking.pdf
【非特許文献２】氏家良浩他：CANメッセージにおける振る舞い検知手法に関する考察，12th  WOCS．http://www.ipa.go.jp/files/000043928.pdf
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本発明が解決しようとする課題は、リアルタイム性を損なわずにメッセージの不正送信の有無を精度よく判定できるネットワーク監視装置およびプログラムを提供することである。
【課題を解決するための手段】
【０００７】
実施形態のネットワーク監視装置は、識別子で識別されるメッセージが送受信されるネットワークにおいて周期送信されるメッセージを監視対象とするネットワーク監視装置であって、受信時刻記録部と、不正送信判定部と、を備える。受信時刻記録部は、監視対象メッセージを受信するごとに、受信時刻を識別子と対応付けて記録する。不正送信判定部は、監視対象メッセージを受信するごとに、受信した監視対象メッセージについて、今回の受信時刻Ｔｉと、ｍ個前の受信時刻Ｔｉ−ｍと、メッセージ送信周期Ｆと、予め定めた定数σとに基づいて、受信時刻Ｔｉ−ｍからＴｉの期間内における不正送信の有無を判定する。
【図面の簡単な説明】
【０００８】
【図１】図１は、車載ネットワークの構成例を示す図である。
【図２】図２は、ＣＧＷのハードウェア構成例を示すブロック図である。
【図３】図３は、ＣＧＷの機能的な構成例を示すブロック図である。
【図４】図４は、監視転送テーブルの一例を示す図である。
【図５】図５は、監視記録テーブルの一例を示す図である。
【図６】図６は、定数σについて説明する図である。
【図７】図７は、定数σについて説明する図である。
【図８】図８は、定数σについて説明する図である。
【図９】図９は、不正送信検知メッセージのデータフォーマットの一例を示す図である。
【図１０】図１０は、検知時処理テーブルの一例を示す図である。
【図１１】図１１は、監視転送部により実行される一連の処理手順を示すフローチャートである。
【図１２−１】図１２−１は、不正送信判定処理の処理手順の一例を示すフローチャートである。
【図１２−２】図１２−２は、不正送信判定処理の処理手順の他の例を示すフローチャートである。
【図１３】図１３は、不正送信検知時処理の処理手順を示すフローチャートである。
【発明を実施するための形態】
【０００９】
以下、実施形態のネットワーク監視装置およびプログラムを、図面を参照して詳細に説明する。以下では、自動車に搭載される車載ネットワークへの適用例を例示するが、適用可能なネットワークは車載ネットワークに限らない。実施形態のネットワーク監視装置およびプログラムは、識別子で識別されるメッセージが送受信されるネットワークであって、少なくとも一部のメッセージが周期送信（所定の周期で繰り返し送信）されるネットワークに対して広く適用可能である。
【００１０】
＜実施形態の概要＞
本実施形態のネットワーク監視装置は、識別子（ＩＤ）で識別されるメッセージが送受信される例えばＣＡＮ（Controller  Area  Network）などの車載ネットワークにおいて、周期送信されるメッセージを監視対象とする。そして、ＩＤで識別される監視対象メッセージに、正規のメッセージと同じＩＤを持つ「なりすまし」メッセージなどの不正送信が含まれているか否かを判定する。本実施形態のネットワーク監視装置による不正送信の有無の判定は、受信したメッセージが不正送信されたメッセージかどうかを判定するものではなく、同じＩＤを持つ監視対象メッセージについて、これまで受信したいくつかのメッセージの中に、不正送信されたメッセージが含まれているかどうかを判定するものである。
【００１１】
監視対象メッセージの不正送信を判定するために、本実施形態では、監視対象メッセージを受信するごとに、受信時刻をそのメッセージのＩＤと対応付けて記録する。受信したメッセージと同じＩＤのメッセージに不正送信が含まれている場合、メッセージの受信間隔に注目すると、正規送信の他に不正送信のメッセージも含まれるため受信間隔が所定のメッセージ送信周期よりも短くなる。本実施形態では、このようなメッセージの受信間隔の変化を利用して、不正送信の有無を判定する。
【００１２】
メッセージの受信間隔の変化は、ネットワークの様々な要因による遅延によっても生じ得る。このため、メッセージの受信間隔の変化が小さい場合、今回受信したメッセージが不正送信されたものか否かをすぐに判定できない。しかし、不正送信があれば、不正送信されたメッセージの受信時に不正送信を検知できないとしても、その次のメッセージを受信したときに受信間隔が大きく変化するので、次のメッセージの受信時には不正送信があったことを検知できる。つまり、ｍ個前のメッセージの受信時刻から今回のメッセージの受信時刻までの期間内に不正送信があったかどうかを判定することは可能である。なお、ｍは１以上の自然数であり、本実施形態ではｍの値が１または２であることを想定するが、３以上の値であっても同様の効果が得られる。
【００１３】
本実施形態では、以上のように、監視対象メッセージについて、ｍ個前のメッセージの受信時刻から今回のメッセージの受信時刻までの期間内における不正送信の有無を判定し、不正送信ありと判定した場合に、例えば、不正送信のあった監視対象メッセージのＩＤを含む不正検知メッセージを送信するなど、予め定めた所定の不正検知時処理を実行する。
【００１４】
＜車載ネットワークの構成例＞
図１は、本実施形態のネットワーク監視装置が適用される車載ネットワークの構成例を示す図である。図１に示す車載ネットワークは、自動車に搭載される電子制御ユニット（以下、「ＥＣＵ」と呼ぶ）間で通信を行うネットワークである。自動車には多数のＥＣＵが搭載される。多数のＥＣＵは複数のバス（図１の例では、第１のバスＢ１、第２のバスＢ２、および第３のバスＢ３）に分散して配置され、相互にメッセージの送受信を行う。本実施形態では、各ＥＣＵがＣＡＮのプロトコルに従った通信を行うものとする。
【００１５】
図１に示す例では、正規のＥＣＵとして、第１バスＢ１にＥＣＵ１０１，１０２が接続され、第２バスＢ２にＥＣＵ２０１，２０２，２０３が接続され、第３バスＢ３にＥＣＵ３０１，３０２，３０３が接続されている。このうち、第３バスＢ３に接続されているＥＣＵ３０１は、車載インフォテインメント（ＩＶＩ：In-Vehicle  Infotainment）用のＥＣＵであり、図示しないデジタル通信モジュール（ＤＣＭ：Digital  Communication  Module）に接続され、移動体通信網を介して車外のＩＰ網に接続している。
【００１６】
ＣＧＷ（Central  Gateway）１０は、第１バスＢ１、第２バスＢ２、および第３バスＢ３にそれぞれ接続されている。あるバス上のＥＣＵが他のバス上のＥＣＵに対してメッセージを送信する場合、ＣＧＷ１０は、そのメッセージの転送を行う。本実施形態では、このＣＧＷ１０が、上述のネットワーク監視装置としての機能を持つものとする。
【００１７】
また、図１に示す例では、第１バスＢ１に、不正ＥＣＵであるＥＣＵ５０１が接続されている。本実施形態では、この不正ＥＣＵ５０１から、正規のＥＣＵのうちでメッセージを周期送信する監視対象のＥＣＵが送信するメッセージ（正規送信のメッセージ）と同じＩＤを持つメッセージ（不正送信のメッセージ）が送信されることを想定する。
【００１８】
なお、図１に示した車載ネットワークの構成は一例であり、本実施形態のネットワーク監視装置が適用される車載ネットワークの構成はこの例に限らない。また、通信方式もＣＡＮに限らず、他の通信方式でＥＣＵ間の通信を行うものであってもよい。互いに通信方式の異なるネットワークがＣＧＷ１０を介して接続された構成であってもよい。また、本実施形態ではＣＧＷ１０がネットワーク監視装置としての機能を持つものとするが、ＣＧＷ１０に代えて、あるいはＣＧＷ１０とともに他の１以上のＥＣＵにネットワーク監視装置としての機能を持たせてもよい。また、ＣＧＷ１０やＥＣＵとは別体の（独立の）ネットワーク監視装置を車載ネットワークに接続する構成であってもよい。
【００１９】
＜ＣＧＷ（ネットワーク監視装置）の構成例＞
図２は、本実施形態のネットワーク監視装置としての機能を持つＣＧＷ１０のハードウェア構成例を示す図である。ＣＧＷ１０は、図２に示すように、ＬＳＩ（Large-Scale  Integration）５０と、第１バスＢ１に接続されたトランシーバ６０ａ、第２バスＢ２に接続されたトランシーバ６０ｂ、および第３バスＢ３に接続されたトランシーバ６０ｃとを備える。トランシーバ６０ａ，６０ｂ，６０ｃは、第１バスＢ１，第２バスＢ２、および第３バスＢ３における差動電位をデジタル信号に変換したり、デジタル信号を差動電位に変換したりといったアナログ処理を行う。
【００２０】
ＬＳＩ５０は、デジタル信号処理を行う集積回路（マイクロコンピュータ）であり、ＣＰＵ５１、ＲＡＭ５２、ＲＯＭ５３、通信コントローラ５４ａ，５４ｂ，５４ｃ、およびタイマ５５などが実装されている。ＣＰＵ５１は、所定のプログラムを実行してＣＧＷ１０全体の動作を制御するプロセッサである。ＲＡＭ５２は、ＣＰＵ５１がプログラムを実行する際のワークエリアとなるメモリであり、ＲＯＭ５３は、ＣＰＵ５１が実行するプログラムやデータを格納するメモリである。通信コントローラ５４ａ，５４ｂ，５４ｃは、トランシーバ６０ａ，６０ｂ，６０ｃと協働して、各バス（第１バスＢ１、第２バスＢ２、および第３バスＢ３）へのメッセージの送信と各バスからのメッセージの受信とを行うためのコントローラである。タイマ５５は、ＣＧＷ１０で扱う時間の計測を行い、例えば、スケジュールの管理や後述の受信時刻の記録などのために時間を計測する。
【００２１】
なお、図２はＣＧＷ１０のハードウェア構成例を示しているが、他のＥＣＵのハードウェア構成も、基本的には図２に示したＣＧＷ１０のハードウェア構成と同様である。図２の構成例では、ＣＧＷ１０が第１バスＢ１、第２バスＢ２、および第３バスＢ３の３つのバスに接続されるため、３つのバスに対応する３つのトランシーバ６０ａ，６０ｂ，６０ｃおよびＬＳＩ５０内の通信コントローラ５４ａ，５４ｂ，５４ｃを備えるが、各ＥＣＵは、自身が接続されるバスに対応するトランシーバおよび通信コントローラを備えていればよい。
【００２２】
本実施形態のネットワーク監視装置としての機能は、一例として、上述したＣＧＷ１０のハードウェアとソフトウェア（プログラム）との協働により実現することができる。すなわち、ＣＧＷ１０をネットワーク監視装置として機能させるためのプログラムをＲＯＭ５３に格納し、ＣＰＵ５１が、ＲＡＭ５２をワークエリアとして利用して、ＲＯＭ５３に格納されたプログラムを読み出して実行することにより、ＣＧＷ１０をネットワーク監視装置として機能させることができる。
【００２３】
図３は、本実施形態のネットワーク監視装置としての機能を持つＣＧＷ１０の機能的な構成例を示すブロック図である。ＣＧＷ１０は、機能的な構成要素として、図３に示すように、監視転送部１１と、受信部１２と、送信部１３と、スケジューラ１４とを備える。受信部１２は、通信コントローラ５４ａ，５４ｂ，５４ｃを介してメッセージを受信する機能であり、送信部１３は、通信コントローラ５４ａ，５４ｂ，５４ｃを介してメッセージを送信する機能である。スケジューラ１４は、送信部１３によるメッセージの送信のタイミングを管理する。また、ＣＧＷ１０は、監視転送部１１が参照または読み書きするテーブルとして、監視転送テーブル１５、監視記録テーブル１６、および検知時処理テーブル１７を備える。
【００２４】
なお、図３はＣＧＷ１０のハードウェアとソフトウェアとの協働により実現される機能的な構成例を示しているが、他のＥＣＵの機能的な構成は、監視転送部１１をそのＥＣＵの本来の機能に置き換えたものとなり、受信部１２、送信部１３、およびスケジューラ１４を備えることは共通である。
【００２５】
監視転送部１１は、本実施形態のネットワーク監視装置の主要な機能である。監視転送部１１は、受信時刻記録部２１、不正送信判定部２２、通常処理部２３、および不正送信検知時処理部２４を有する。
【００２６】
受信時刻記録部２１は、受信部１２が監視対象メッセージを受信するごとに、そのメッセージの受信時刻をそのメッセージのＩＤ（本実施形態ではＣＡＮ  ＩＤ）と対応付けて記録する。受信時刻記録部２１は、受信部１２が受信したメッセージが監視対象メッセージか否かを判断するために、監視転送テーブル１５を参照する。
【００２７】
図４は、監視転送テーブル１５の一例を示す図である。この図４に示す監視転送テーブル１５では、車載ネットワークで送受信されるメッセージのＣＡＮ  ＩＤごとに、周期送信の場合の周期（後述のメッセージ送信周期Ｆ）、送信元バス、周期監視の要否、および転送先バスが示されている。周期監視の「○」はそのＣＡＮ  ＩＤを持つメッセージが監視対象メッセージであることを示し、「−」は周期送信でないために監視不可、「×」は周期送信だが監視対象外であることを示す。転送先バスの「○」はそのバスが転送先であること、「／」はそのバスが送信元バスであるため転送不可、「−」はそのバスに転送しないことを示す。
【００２８】
受信時刻記録部２１は、図４に示すような監視転送テーブル１５を参照し、受信部１２が受信したメッセージのＣＡＮ  ＩＤに対応する周期監視が「○」となっているか否かを確認することで、受信部１２が受信したメッセージが監視対象メッセージか否かを判断できる。そして、受信部１２が受信したメッセージが監視対象メッセージであれば、そのメッセージの受信時刻を監視記録テーブル１６に記録する。
【００２９】
図５は、監視記録テーブル１６の一例を示す図である。監視記録テーブル１６には、受信部１２が監視対象メッセージを受信するごとに、受信時刻記録部２１によって、そのメッセージの受信時刻がＣＡＮ  ＩＤと対応付けて記録される。監視記録テーブル１６に記録される受信時刻は、後述の不正送信判定部２２が不正送信の有無を判定するために用いられる。したがって、不正送信判定部２２での判定に必要となるｍ個前のメッセージの受信時刻よりも古い受信時刻は、監視記録テーブル１６から消去してもよい。図５に例示する監視記録テーブル１６は、最新の受信時刻から３つ前の受信時刻までが記録されている。なお、監視記録テーブル１６に記録される受信時刻は、例えば、上述のタイマ５５により計測される。
【００３０】
不正送信判定部２２は、受信部１２が監視対象メッセージを受信するごとに、つまり受信時刻記録部２１によって監視対象メッセージの最新の受信時刻が監視記録テーブル１６に記録されるたびに、受信部１２が受信した監視対象メッセージについて、今回の受信時刻Ｔｉと、ｍ個前の受信時刻Ｔｉ−ｍと、メッセージ送信周期Ｆと、予め定めた定数σとに基づいて、受信時刻Ｔｉ−ｍからＴｉの期間内における不正送信の有無を判定する。
【００３１】
例えば、不正送信判定部２２は、受信部１２が受信した監視対象メッセージの今回の受信時刻Ｔｉと、ｍ個前の受信時刻Ｔｉ−ｍと、メッセージ送信周期Ｆと、予め定めた定数σとに基づき、下記式（１）により、受信時刻Ｔｉ−ｍからＴｉの期間内における不正送信数の推定値Ｎを求め、Ｎが１以上である場合に、不正送信ありと判定する構成とすることができる。
Ｎ＝ｍ−ＩＮＴ（（Ｔｉ−Ｔｉ−ｍ＋σ）／Ｆ）  ・・・（１）
この式（１）において、ＩＮＴ（Ｘ）は、Ｘの整数部を求める関数（ＩＮＴ関数）である。つまり、上記式（１）は、（Ｔｉ−Ｔｉ−ｍ＋σ）／Ｆの整数部ｋを求め、ｍ−ｋで表される不正送信数の推定値Ｎを算出する算出式となっている。
【００３２】
ここで、定数σについて説明する。ＣＡＮなどの車載ネットワーク上にメッセージを周期送信するＥＣＵは、多くの場合、ソフトウェアにより実現される送信部（図３参照）がタイマの周期割込みにより起動され、この送信部と通信コントローラ（図２参照）の処理により、メッセージがトランシーバを介してバスに送出される。このときタイマの周期割込みは高い精度で発生するが、メッセージがバスに送出されるまでには、下記の様々な要因によって遅延が発生する。
・実行中ソフトウェアの終了待ち
・スケジューラの待ちキューにおける起動の優先順位
・通信コントローラ内でのメッセージの送信順位
・バス上でのメッセージの送信完了待ち
・送信待ちメッセージの送信開始時のバス上での調停
【００３３】
そのため、正規送信されたメッセージの受信時刻をＴ（ｉ）とすると、このＴ（ｉ）は、図６に示すように、タイマの周期割込み時刻ＴＦ（ｉ）と、そこからの遅延Δ（ｉ）（Δ（ｉ）＞０）とにより表現される。ただし、ＴＦ（ｉ）とΔ（ｉ）は外部からは観測できない。
【００３４】
ここで、ｍ＝１の場合について分析する。図７に示すように、Δ（ｉ−２）＝Δ（ｉ）＝０であり、Δ（ｉ−１）＝Δｍａｘ（Δｍａｘは車載ネットワークの設計上想定する遅延の最大値）とすると、最短の正規送信の区間（Ｔ（ｉ−１），Ｔ（ｉ））で正規送信を不正送信と判定しないための条件（Ａ）は、（Ｔ（ｉ）−Ｔ（ｉ−１）＋σ）／Ｆ＝（Ｆ−Δｍａｘ＋σ）／Ｆ≧１、すなわち、Δｍａｘ≦σである。また、最長の正規送信の区間（Ｔ（ｉ−２），Ｔ（ｉ−１））における不正送信を検知するための条件（Ｂ）は、（（Ｔ（ｉ−１）−Ｔ（ｉ−２））／２＋σ）／Ｆ＝（（Ｆ＋Δｍａｘ）／２＋σ）／Ｆ＜１、すなわち、Δｍａｘ＋２σ＜Ｆである。ただし、正規送信の受信時刻Ｔ（ｉ−２）とＴ（ｉ−１）との間の不正送信が、前後の正規送信との間隔の小さい方を最大とする場合に、（Ｔ（ｉ−１）−Ｔ（ｉ−２））／２となる。
【００３５】
以上の条件（Ａ）と条件（Ｂ）とから、ΔｍａｘがΔｍａｘ＜Ｆ／３を満たすとき、ｍ＝１であれば、不正送信を正しく検知するために定数σに求められる必要条件は、Δｍａｘ≦σ＜（Ｆ−Δｍａｘ）／２となる。なお、定数σの値が小さいほど不正送信の検知が遅れるケース、つまり、不正送信を受信したタイミングではなく次の正規送信を受信したタイミングで不正送信が検知されるケースが少なくなるので、定数σは、上記必要条件を満たす範囲内で小さい値に設定することが望ましい。
【００３６】
なお、車載ネットワークでは、通信環境や機器の状況（温度など）により一時的に通信エラーが多発する場合がある。ＣＡＮでは、通信エラーが発生すると通信コントローラが自動的にメッセージの再送を行うため、このような場合にバス全体として遅延が大きくなる。車載ネットワークの設計ではある程度の通信エラーを想定するが、必ずしも最悪の通信エラーを想定していない。したがって、実際の車載ネットワークにおいては、設計上想定する遅延の最大値Δｍａｘを超える遅延が発生する場合もある。定数σをΔｍａｘよりも大きい値にしておくことで、このような想定外の遅延が発生した場合の誤判定を抑制できる。
【００３７】
次に、ｍ＝２の場合について分析する。図８に示すように、Δ（ｉ−１）＝Δ（ｉ）＝０であり、Δ（ｉ−２）＝Δ（ｉ＋１）＝Δｍａｘとすると、最短の正規送信の区間（Ｔ（ｉ−２），Ｔ（ｉ））で正規送信を不正送信と判定しないための条件（Ｃ）は、（Ｔ（ｉ）−Ｔ（ｉ−２）＋σ）／Ｆ＝（２Ｆ−Δｍａｘ＋σ）／Ｆ≧２、すなわち、Δｍａｘ≦σである。また、最長の正規送信の区間（Ｔ（ｉ），Ｔ（ｉ＋１））における不正送信を検知するための条件（Ｄ）は、（Ｔ（ｉ＋１）−Ｔ（ｉ）＋σ）／Ｆ＝（Ｆ＋Δｍａｘ＋σ）／Ｆ＜２、すなわち、Δｍａｘ＋σ＜Ｆである。
【００３８】
以上の条件（Ｃ）と条件（Ｄ）とから、ΔｍａｘがΔｍａｘ＜Ｆ／２を満たすとき、ｍ＝２であれば、不正送信を正しく検知するために定数σに求められる必要条件は、Δｍａｘ≦σ＜Ｆ−Δｍａｘとなる。なお、ｍ＝１の場合と同様に、定数σの値が小さいほど不正送信の検知が遅れるケースが少なくなるので、定数σは、上記必要条件を満たす範囲内で小さい値に設定することが望ましい。また、ｍ＝２の場合は、３つのメッセージの最初と最後が正規送信であるケースにおいて不正送信を確実に検知できる。
【００３９】
次に、ｍ＝３の場合について、ｍ＝２の場合と同様に分析する。Δ（ｉ−２）＝Δ（ｉ−１）＝Δ（ｉ）＝０であり、Δ（ｉ−３）＝Δ（ｉ＋１）＝Δｍａｘとすると、最短の正規送信の区間（Ｔ（ｉ−３），Ｔ（ｉ））で正規送信を不正送信と判定しないための条件（Ｅ）は、（Ｔ（ｉ）−Ｔ（ｉ−３）＋σ）／Ｆ＝（３Ｆ−Δｍａｘ＋σ）／Ｆ≧２、すなわち、Δｍａｘ≦σである。また、最長の正規送信の区間（Ｔ（ｉ−１），Ｔ（ｉ＋１））における不正送信を検知するための条件（Ｆ）は、（Ｔ（ｉ＋１）−Ｔ（ｉ−１）＋σ）／Ｆ＝（２Ｆ＋Δｍａｘ＋σ）／Ｆ＜３、すなわち、Δｍａｘ＋σ＜Ｆである。
【００４０】
以上の条件（Ｅ）と条件（Ｆ）とから、ΔｍａｘがΔｍａｘ＜Ｆ／２を満たすとき、ｍ＝３であれば、不正送信を正しく検知するために定数σに求められる必要条件は、ｍ＝２の場合と同様に、Δｍａｘ≦σ＜Ｆ−Δｍａｘとなる。なお、ｍ＞３の場合も同様に分析できる。つまり、ｍ≧２の場合は、Δｍａｘ≦σ＜Ｆ−Δｍａｘを満たす値に定数σを定めれば、不正送信を正しく検知することができる。
【００４１】
なお、以上は、不正送信判定部２２が、上記式（１）により受信時刻Ｔｉ−ｍからＴｉの期間内における不正送信数の推定値Ｎを求め、Ｎが１以上であるか否かにより受信時刻Ｔｉ−ｍからＴｉの期間内における不正送信の有無を判定する例を説明したが、受信時刻Ｔｉ−ｍからＴｉの期間内における不正送信の有無を判定する方法はこの例に限らない。たとえば、不正送信判定部２２は、Ｍ＝ｍ×Ｆ−σなる閾値Ｍを設定し、Ｔｉ−Ｔｉ−ｍが閾値Ｍ未満である場合に不正送信ありと判定する構成であってもよい。この場合、閾値Ｍは、受信部１２が監視対象メッセージを受信するたびに計算してもよいが、監視対象メッセージごとの閾値Ｍを事前に計算して記憶しておけば、不正送信の有無を判定する処理時間を短縮できる。
【００４２】
通常処理部２３は、受信部１２が受信したメッセージが監視対象メッセージでない場合、あるいは、不正送信判定部２２により不正送信なしと判定された場合に、受信部１２が受信したメッセージに対して通常処理を実行する。ここで通常処理とは、ＣＧＷ１０の本来の機能に基づく処理、例えば、あるバスから受信したメッセージを他のバスに転送する処理である。なお、本実施形態のネットワーク監視装置をＣＧＷ１０以外の他のＥＣＵで実現する場合、通常処理は、そのＥＣＵの本来の機能に基づく処理となる。
【００４３】
不正送信検知時処理部２４は、不正送信判定部２２により不正送信ありと判定された場合に、所定の不正送信検知時処理を実行する。不正送信検知時処理部２４が実行する不正送信検知時処理は、例えば、不正送信ありと判定した監視対象メッセージのＣＡＮ  ＩＤを含む不正送信検知メッセージをネットワークに送信する処理を含む。具体的には、例えば図９に示すような不正送信検知メッセージを、不正送信ありと判定された監視対象メッセージの送信元バスと転送先バスとに送信する。図９は、不正送信検知メッセージのデータフォーマットの一例を示している。
【００４４】
また、不正送信検知時処理は、例えば、不正送信ありと判定された監視対象メッセージの送信元バスが、車外接続機能を持つＩＶＩ用のＥＣＵ３０１を含む第３バスＢ３である場合に、その後、第３バスＢ３から受信したメッセージに対する通常処理（例えば、他のバスへの転送）をすべて停止する処理をさらに含んでいてもよい。
【００４５】
また、不正送信検知時処理は、例えば図１０に示すような検知時処理テーブル１７に従って、受信部１２が受信した監視対象メッセージを破棄したり、受信部１２が受信した監視対象メッセージの特定の位置をマスクしたりする処理をさらに含んでいてもよい。図１０は、不正送信検知時処理部２４が参照する検知時処理テーブル１７の一例を示す図である。この図１０に示す検知時処理テーブル１７では、破棄やマスク処理の対象となる監視対象メッセージのＣＡＮ  ＩＤごとに、破棄／マスクのいずれかを示す処理、監視バイト、危険値、および処理がマスクの場合のマスク値が示されている。
【００４６】
不正送信検知時処理部２４は、不正送信判定部２２により不正送信ありと判定された場合に、検知時処理テーブル１７を参照して、受信部１２が受信した監視対象メッセージのＣＡＮ  ＩＤが検知時処理テーブル１７に登録されているか否かを確認する。そして、受信部１２が受信した監視対象メッセージのＣＡＮ  ＩＤが検知時処理テーブル１７に登録されていれば、そのＣＡＮ  ＩＤに対応する処理が破棄かマスクかを確認する。処理が破棄の場合、不正送信検知時処理部２４は、そのＣＡＮ  ＩＤに対応する監視バイトと危険値を参照し、受信部１２が受信した監視対象メッセージの監視バイトの値が危険値と一致していれば、その監視対象メッセージを破棄する。また、ＣＡＮ  ＩＤに対応する監視バイトが「−」となっている場合も、受信部１２が受信した監視対象メッセージを破棄する。
【００４７】
また、不正送信検知時処理部２４は、受信部１２が受信した監視対象メッセージのＣＡＮ  ＩＤに対応する処理がマスクである場合は、そのＣＡＮ  ＩＤに対応する監視バイトと危険値とマスク値とを参照し、受信部１２が受信した監視対象メッセージの監視バイトの値が危険値と一致していれば、監視バイトの値をマスク値によりマスクした上で、受信部１２が受信した監視対象メッセージを送信部１３から転送先バスへと転送する。また、ＣＡＮ  ＩＤに対応する危険値が「−」となっている場合も、監視バイトの値をマスク値によりマスクした上で、受信部１２が受信した監視対象メッセージを送信部１３から転送先バスへと転送する。
【００４８】
本実施形態では、上述のように、監視対象メッセージを受信したときに、そのメッセージが不正送信かどうかを判定するのではなく、同じＣＡＮ  ＩＤを持つ監視対象メッセージについて、ｍ個前のメッセージの受信時刻Ｔｉ−ｍから今回の受信時刻Ｔｉの期間内における不正送信の有無を判定する。したがって、不正送信ありと判定した場合は、従来のように受信したメッセージの破棄などを行うのではなく、上述の不正送信検知メッセージを送信し、付加的な処理として、条件に応じた通常処理の停止やメッセージの破棄、マスク処理などを行うようにしている。
【００４９】
＜ＣＧＷ（ネットワーク監視装置）の動作説明＞
次に、本実施形態のＣＧＷ１０の動作例について説明する。まず、図１１を参照してＣＧＷ１０による処理手順の概要を説明する。図１１は、受信部１２がメッセージを受信するたびに、ＣＧＷ１０の監視転送部１１により実行される一連の処理手順を示すフローチャートである。
【００５０】
受信部１２によりメッセージが受信されると、まず、監視転送部１１の受信時刻記録部２１が、監視転送テーブル１５を参照し、受信したメッセージが監視対象メッセージか否かを判定する（ステップＳ１０１）。そして、監視対象メッセージであれば（ステップＳ１０１：Ｙｅｓ）、受信時刻記録部２１は、そのメッセージの受信時刻をＣＡＮ  ＩＤと対応付けて監視記録テーブル１６に記録する（ステップＳ１０２）。
【００５１】
次に、不正送信判定部２２が、図１２−１または図１２−２に例示する不正送信判定処理を実行する（ステップＳ１０３）。そして、不正送信判定処理の結果、不正送信ありと判定された場合は（ステップＳ１０４：Ｙｅｓ）、不正送信検知時処理部２４が、図１３に例示する不正送信検知時処理を実行する（ステップＳ１０５）。一方、不正送信判定処理の結果、不正送信なしと判定された場合（ステップＳ１０４：Ｎｏ）、あるいは受信部１２が受信したメッセージが監視対象メッセージではない場合（ステップＳ１０１：Ｎｏ）は、通常処理部２３が、受信部１２が受信したメッセージに対する通常処理を実行する（ステップＳ１０６）。
【００５２】
次に、図１１のステップＳ１０３の不正送信判定処理の一例について、図１２−１を参照して説明する。図１２−１は、不正送信判定部２２が実行する不正送信判定処理の処理手順の一例を示すフローチャートである。
【００５３】
図１２−１に示す不正送信判定処理が開始されると、不正送信判定部２２は、まず、受信部１２が受信したメッセージの最新の受信時刻Ｔｉとｍ個前の受信時刻Ｔｉ−ｍとを監視記録テーブル１６から読み出すとともに、メッセージ送信周期Ｆを監視転送テーブル１５から読み出す（ステップＳ２０１）。そして、不正送信判定部２２は、ステップＳ２０１で読み出した受信時刻Ｔｉ，Ｔｉ−ｍと、メッセージ送信周期Ｆと、ｍの値に応じて定められた定数σとから、上記式（１）により、Ｔｉ−ｍからＴｉの期間内における不正送信数の推定値Ｎを算出する（ステップＳ２０２）。
【００５４】
次に、不正送信判定部２２は、ステップＳ２０２で算出した不正送信数の推定値Ｎが１以上か否かを判定する（ステップＳ２０３）。そして、不正送信数の推定値Ｎが１以上であれば（ステップＳ２０３：Ｙｅｓ）、Ｔｉ−ｍからＴｉの期間内に不正送信があると判定し（ステップＳ２０４）、不正送信数の推定値Ｎが０であれば（ステップＳ２０３：Ｎｏ）、Ｔｉ−ｍからＴｉの期間内に不正送信はないと判定する（ステップＳ２０５）。
【００５５】
次に、図１１のステップＳ１０３の不正送信判定処理の他の例について、図１２−２を参照して説明する。図１２−２は、不正送信判定部２２が実行する不正送信判定処理の処理手順の他の例を示すフローチャートである。
【００５６】
図１２−２に示す不正送信判定処理が開始されると、不正送信判定部２２は、まず、受信部１２が受信したメッセージの最新の受信時刻Ｔｉとｍ個前の受信時刻Ｔｉ−ｍとを監視記録テーブル１６から読み出すとともに、メッセージ送信周期Ｆを監視転送テーブル１５から読み出す（ステップＳ３０１）。そして、不正送信判定部２２は、ステップＳ３０１で読み出した受信時刻Ｔｉ，Ｔｉ−ｍと、メッセージ送信周期Ｆと、ｍの値に応じて定められた定数σとに基づいて、Ｔｉ−Ｔｉ−ｍ＜Ｍ（Ｍ＝ｍ×Ｆ−σ）であるか否かを判定する（ステップＳ３０２）。そして、Ｔｉ−Ｔｉ−ｍ＜Ｍであれば（ステップＳ３０２：Ｙｅｓ）、Ｔｉ−ｍからＴｉの期間内に不正送信があると判定し（ステップＳ３０３）、Ｔｉ−Ｔｉ−ｍ≧Ｍであれば（ステップＳ３０２：Ｎｏ）、Ｔｉ−ｍからＴｉの期間内に不正送信はないと判定する（ステップＳ３０４）。
【００５７】
次に、図１１のステップＳ１０５の不正送信検知時処理の一例について、図１３を参照して説明する。図１３は、不正送信検知時処理部２４が実行する不正送信検知時処理の処理手順を示すフローチャートである。
【００５８】
不正送信検知時処理が開始されると、不正送信検知時処理部２４は、まず、受信部１２が受信した監視対象メッセージの送信元バスと転送先バスとに、送信部１３から不正送信検知メッセージを送信する（ステップＳ４０１）。
【００５９】
次に、不正送信検知時処理部２４は、受信部１２が受信した監視対象メッセージの送信元バスが、ＩＶＩ用のＥＣＵ３０１を含む第３バスＢ３であるか否かを判定する（ステップＳ４０２）。そして、送信元バスが第３バスＢ３であれば（ステップＳ４０２：Ｙｅｓ）、第３バスＢ３から他のバスへのメッセージの転送を停止する（ステップＳ４０３）。
【００６０】
一方、送信元バスが第３バスＢ３でなければ（ステップＳ４０２：Ｎｏ）、不正送信検知時処理部２４は、検知時処理テーブル１７を参照し、受信部１２が受信した監視対象メッセージが破棄対象メッセージか否かを判定する（ステップＳ４０４）。そして、受信部１２が受信した監視対象メッセージが破棄対象メッセージであれば（ステップＳ４０４：Ｙｅｓ）、さらにその監視対象メッセージに対して監視バイトの指定があるかを判定する（ステップＳ４０５）。
【００６１】
ここで、監視バイトの指定があれば（ステップＳ４０５：Ｙｅｓ）、不正送信検知時処理部２４は、受信部１２が受信した監視対象メッセージの監視バイトの値が危険値と一致するか否かを判定し（ステップＳ４０６）、監視バイトの値が危険値と一致する場合（ステップＳ４０６：Ｙｅｓ）、受信部１２が受信した監視対象メッセージを破棄する（ステップＳ４０７）。また、受信部１２が受信した監視対象メッセージに対して監視バイトの指定がない場合も（ステップＳ４０５：Ｎｏ）、受信部１２が受信した監視対象メッセージを破棄する（ステップＳ４０７）。一方、監視バイトの値が危険値と一致しない場合は（ステップＳ４０６：Ｎｏ）、後述のステップＳ４１２に進んで、受信部１２が受信した監視対象メッセージを転送先バスに転送する。
【００６２】
また、受信部１２が受信した監視対象メッセージが破棄対象メッセージでない場合（ステップＳ４０４：Ｎｏ）、不正送信検知時処理部２４は、次に、受信部１２が受信した監視対象メッセージがマスク対象メッセージか否かを判定する（ステップＳ４０８）。そして、受信部１２が受信した監視対象メッセージがマスク対象メッセージであれば（ステップＳ４０８：Ｙｅｓ）、さらにその監視対象メッセージに危険値の指定があるかを判定する（ステップＳ４０９）。
【００６３】
ここで、危険値の指定があれば（ステップＳ４０９：Ｙｅｓ）、不正送信検知時処理部２４は、受信部１２が受信した監視対象メッセージの監視バイトの値が危険値と一致するか否かを判定する（ステップＳ４１０）。そして、監視バイトの値が危険値と一致する場合（ステップＳ４１０：Ｙｅｓ）、監視バイトの値をマスク値でマスクした上で（ステップＳ４１１）、受信部１２が受信した監視対象メッセージを転送先バスに転送する（ステップＳ４１２）。また、受信部１２が受信した監視対象メッセージに対して危険値の指定がない場合も（ステップＳ４０９：Ｎｏ）、監視バイトの値をマスク値でマスクした上で（ステップＳ４１１）、受信部１２が受信した監視対象メッセージを転送先バスに転送する（ステップＳ４１２）。
【００６４】
一方、監視バイトの値が危険値と一致しない場合は（ステップＳ４１０：Ｎｏ）、不正送信検知時処理部２４は、監視バイトの値をマスクすることなく、受信部１２が受信した監視対象メッセージを転送先バスに転送する（ステップＳ４１２）。また、受信部１２が受信した監視対象メッセージがマスク対象メッセージでない場合（ステップＳ４０８：Ｎｏ）、不正送信検知時処理部２４は、受信部１２が受信した監視対象メッセージをそのまま転送先バスに転送する（ステップＳ４１２）。
【００６５】
＜実施形態の効果＞
以上、具体的な例を挙げながら詳細に説明したように、本実施形態では、監視対象メッセージを受信するごとに、受信した監視対象メッセージについて、ｍ個前の受信時刻Ｔｉ−ｍから今回の受信時刻Ｔｉまで期間内における不正送信の有無を判定するようにしている。したがって、本実施形態によれば、リアルタイム性を損なわずにメッセージの不正送信の有無を精度よく判定することができる。
【００６６】
詳述すると、周期送信されるメッセージの不正送信を検知する従来の技術は、メッセージを受信したときにそのメッセージの正当性を判定することを主眼とする。このため、例えば周期異常を検知する方法では、上述したネットワークの遅延などを考慮しつつ受信したメッセージの正当性を正確に判定しようとすると、長い待機時間が必要となって処理の遅れ（つまり、リアルタイム性の低下）を招き、リアルタイム性を損なわないように待機時間を短縮させると、不正送信の見逃しや誤検知が生じやすくなる。また、メッセージの所定送信周期に対してフィルタを適用することで不正送信の検知を行う方法では、フィルタには受信周期の変動に備えたマージンを設定する必要があり、マージンを広くすると不正送信のメッセージの見逃しが発生しやすく、マージンを狭くすると正規のメッセージを不正送信と誤検知しやすくなる。また、上記２つの方法とも、判定の基準となる時刻が必要となるが、メッセージ送信側のＥＣＵとの間で送受信時刻を同期させる方法により基準の時刻を定めようとすると、同期を維持する機構が必要となってコスト高になる。また、過去のメッセージの受信時刻を基準とする方法では、過去のメッセージが不正送信されたものである場合（不正送信の見逃しがあった場合）は、正しい判定を行うことができない。
【００６７】
これに対し、本実施形態によれば、受信したメッセージが不正送信されたメッセージかどうかを判定するのではなく、ｍ個前の受信時刻Ｔｉ−ｍから今回の受信時刻Ｔｉまで期間内における不正送信の有無を判定するため、監視対象メッセージの受信時に不正送信の有無をすぐに判定することができる。また、今回受信した監視対象メッセージが不正送信のメッセージであり、そのときに不正送信を検知できないとしても、次に同じＣＡＮ  ＩＤの監視対象メッセージを受信したときには不正送信を検知できる。
【００６８】
また、本実施形態によれば、不正送信ありと判定した場合の不正送信検知時処理として、不正送信検知メッセージをネットワークに送信するようにしているので、ネットワーク上の他のＥＣＵなどが不正送信検知メッセージに基づく遡及的な処理を行うことができる。また、不正送信検知時処理として、不正送信ありと判定した監視対象メッセージの送信元バスが車外接続されるバスである場合に、そのバスからのメッセージの転送をすべて停止させることにより、情報セキュリティ上の安全性を確保することができる。さらに、不正送信検知時処理として、例えば、不正送信ありと判定した監視対象メッセージが自動車の制御に影響を与えるメッセージであれば、受信した監視対象メッセージを破棄したり、一部をマスクしたりすることで、メッセージの不正送信による自動車の予期せぬ振る舞いなどを未然に防止することができる。
【００６９】
以上、本発明の実施形態を説明したが、ここで説明した実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。ここで説明した新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。ここで説明した実施形態やその変形は、発明の範囲や要旨に含まれるとともに、請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００７０】
１０  ＣＧＷ
１１  監視転送部
１２  受信部
１３  送信部
２１  受信時刻記録部
２２  不正送信判定部
２３  通常処理部
２４  不正送信検知時処理部
【図１】
2018026663.tif 000003
【図２】
2018026663.tif 000004
【図３】
2018026663.tif 000005
【図４】
2018026663.tif 000006
【図５】
2018026663.tif 000007
【図６】
2018026663.tif 000008
【図７】
2018026663.tif 000009
【図８】
2018026663.tif 000010
【図９】
2018026663.tif 000011
【図１０】
2018026663.tif 000012
【図１１】
2018026663.tif 000013
【図１２−１】
2018026663.tif 000014
【図１２−２】
2018026663.tif 000015
【図１３】
2018026663.tif 000016