(57)【要約】      （修正有）【課題】ネットワークに接続された機器に対するサイバー攻撃を検知する異常検知装置を提供する。【解決手段】異常検知装置であるゲートウェイ装置１００は、所定の周期でデータフレームが伝送されるバスに接続され、当該バスに接続された機器への攻撃を検知する装置である。異常検知装置は、バスに伝送されるデータフレームを受信するフレーム受信部１２１と、検査対象のデータフレームの受信周期が正常範囲にあるか否かを、正常範囲を示す閾値を用いて判断し、その判断結果に基づき攻撃の有無を検知する攻撃検知部１１７と、フレーム受信部１２１が受信したデータフレームの内容に基づきバスの混雑さの程度を示すバス負荷値を算出するバス負荷計算部１１４と、バス負荷計算部１１４が算出したバス負荷値に応じて閾値を決定する受信周期閾値計算部１１５と、を備える。【選択図】図３
2019200670.tif 000002
【特許請求の範囲】
【請求項１】
所定の周期でデータフレームが伝送されるバスに接続され、当該バスに接続された機器への攻撃を検知する装置であって、
前記バスに伝送されるデータフレームを受信するフレーム受信部と、
検査対象のデータフレームの受信周期が正常範囲にあるか否かを、正常範囲を示す閾値を用いて判断し、その判断結果に基づき攻撃の有無を検知する攻撃検知部と、
前記フレーム受信部が受信したデータフレームの内容に基づき前記バスの混雑さの程度を示すバス負荷値を算出するバス負荷計算部と、
前記バス負荷計算部が算出した前記バス負荷値に応じて前記閾値を決定する受信周期閾値計算部と、
を備えた異常検知装置。
【請求項２】
前記受信周期閾値計算部は、前記バス負荷値がバスの混雑さの程度がより高いことを示すほど、前記正常範囲がより広くなるように前記閾値を決定する、
請求項１記載の異常検知装置。
【請求項３】
前記バス上に複数種類のデータフレームが伝送され、データフレームの種類毎にデータフレームの送信に対する優先度が異なり、
前記攻撃検知部はさらに、前記バス負荷値が許容値以下であるときに、攻撃があったことを検知し、
前記許容値は前記データフレームの優先度が高いほど小さな値に設定される、
請求項１または２に記載の異常検知装置。
【請求項４】
前記バス負荷値は、データフレームの受信時刻を含み正常周期範囲の幅を持つ期間における、前記バスで通信可能なビット総数に対する受信したデータのビット総数の比率である、
請求項１に記載の異常検知装置。
【請求項５】
前記バス負荷値は、単位時間に受信したデータフレームのビット総数である、
請求項１に記載の異常検知装置。
【請求項６】
前記受信周期閾値計算部は、データフレームの受信が期待される時刻である期待受信時刻の経過したデータフレームについて、前記バス負荷値が連続して所定値を超えた時間に応じて、前記閾値を決定する、
請求項５に記載の異常検知装置。
【請求項７】
車両内のネットワークに接続される、請求項１ないし６のいずれか１つに記載の異常検知装置。
【請求項８】
前記データフレームはＣＡＮ(Controller Area Network)プロトコルにしたがって伝送される、請求項７に記載の異常検知装置。
【請求項９】
所定の周期でデータフレームが伝送されるバスに接続され、当該バスに接続された機器への攻撃を検知する方法であって、
データフレームを受信するステップと、
受信したデータフレームの内容に基づき、前記バスの混雑さの程度を示すバス負荷値を算出するステップと、
前記算出したバス負荷値に基づき、データフレームの受信周期の正常範囲の閾値を決定するステップと、
前記決定した閾値を用いて、検査対象のデータフレームの受信周期が正常範囲にあるか否かを判断するステップと、
その判断結果に基づき攻撃の有無を検知するステップと、を含む、
異常検知方法。
【請求項１０】
前記バス負荷値がバスの混雑さの程度がより高いことを示すほど、前記正常範囲がより広くなるように前記閾値を決定する、
請求項９に記載の異常検知方法。
【請求項１１】
さらに、前記バス負荷値が許容値以下であるときに、攻撃があったことを検知するステップを含み、
前記バス上には複数種類のデータフレームが伝送され、データフレームの種類毎にデータフレームの送信に対する優先度が異なり、
前記許容値は、前記データフレームの優先度が高いほど小さな値に設定される、
請求項９または１０に記載の異常検知方法。
【請求項１２】
所定の周期でデータフレームが伝送されるバスに接続され、当該バスに接続された機器への攻撃を検知する異常検知装置を制御するプログラムであって、
前記プログラムは、前記異常検知装置の制御部に、
データフレームを受信するステップと、
前記受信したデータフレームの内容に基づき、前記バスの混雑さの程度を示すバス負荷値を算出するステップと、
前記算出したバス負荷値に基づき、データフレームの受信周期の正常範囲の閾値を決定するステップと、
前記決定した閾値を用いて、検査対象のデータフレームの受信周期が正常範囲にあるか否かを判断するステップと、
その判断結果に基づき攻撃の有無を検知するステップと、を実行させる、
プログラム。
【請求項１３】
前記バス負荷値がバスの混雑さの程度がより高いことを示すほど、前記正常範囲がより広くなるように前記閾値を決定する、
請求項１２に記載のプログラム。
【請求項１４】
さらに、前記バス負荷値が許容値以下であるときに、攻撃があったことを検知するステップを前記制御部に実行させ、
前記バス上には複数種類のデータフレームが伝送され、データフレームの種類毎にデータフレームの送信に対する優先度が異なり、
前記許容値は、前記データフレームの優先度が高いほど小さな値に設定される、
請求項１２または１３に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、ネットワークに接続された機器に対するサイバー攻撃を検知する装置及び方法に関する。
【背景技術】
【０００２】
車両においては、エンジン、ブレーキのみならず複数の機器を電子制御するＥＣＵが車載ネットワークに接続され、かつ、車載ネットワークは外部のネットワークに接続されている。
【０００３】
近年、車両の自動運転技術の開発が進められているが、車両の自動運転技術の進化に伴い、車両内の各機器の電子制御の重要度が増す状況において、車載ネットワークに接続された機器に対して外部からのサイバー攻撃を迅速に検知し、対処することは重要な課題である。
【０００４】
このため、車載ネットワークに対するサイバー攻撃を検知する技術が種々開発されている。例えば、特許文献１、２は、データの受信間隔と所定周期とを比較することでサイバー攻撃（不正の検出）を行う技術を開示している。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】国際公開第２０１４／１１５４５５号ガゼット
【特許文献２】特許２０１７−７３７６５号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本発明は、車載ネットワークのようなネットワークに接続された機器に対するサイバー攻撃を検知する異常検知装置及び異常検知方法を提供する。
【課題を解決するための手段】
【０００７】
本発明の第一の態様において、所定の周期でデータフレームが伝送されるバスに接続され、当該バスに接続された機器への攻撃を検知する異常検知装置が提供される。異常検知装置は、バスに伝送されるデータフレームを受信するフレーム受信部と、検査対象のデータフレームの受信周期が正常範囲にあるか否かを、正常範囲を示す閾値を用いて判断し、その判断結果に基づき攻撃の有無を検知する攻撃検知部と、フレーム受信部が受信したデータフレームの内容に基づき、バスの混雑さの程度を示すバス負荷値を算出するバス負荷計算部と、バス負荷計算部が算出したバス負荷値に応じて閾値を決定する受信周期閾値計算部と、を備える。
【０００８】
本発明の第二の態様において、所定の周期でデータフレームが伝送されるバスに接続され、当該バスに接続された機器への攻撃を検知する異常検知方法が提供される。異常検知方法は、データフレームを受信するステップと、受信したデータフレームの内容に基づき、バスの混雑さの程度を示すバス負荷値を算出するステップと、算出したバス負荷値に基づき、データフレームの受信周期の正常範囲の閾値を決定するステップと、決定した閾値を用いて、検査対象のデータフレームの受信周期が正常範囲にあるか否かを判断するステップと、その判断結果に基づき攻撃の有無を検知するステップと、を含む。
【０００９】
本発明の第三の態様において、所定の周期でデータフレームが伝送されるバスに接続され、当該バスに接続された機器への攻撃を検知する異常検知装置を制御するプログラムが提供される。当該プログラムは、異常検知装置の制御部に、データフレームを受信するステップと、受信したデータフレームの内容に基づきバスの混雑さの程度を示すバス負荷値を算出するステップと、算出したバス負荷値に基づき、データフレームの受信周期の正常範囲の閾値を決定するステップと、決定した閾値を用いて、検査対象のデータフレームの受信周期が正常範囲にあるか否かを判断するステップと、その判断結果に基づき攻撃の有無を検知するステップと、を実行させる。
【発明の効果】
【００１０】
本発明によれば、バスの混雑度合いに応じて受信周期の判断における閾値を変化させる。このため、バスの混雑によりデータフレームが遅延した場合において、正常フレームを攻撃フレームであると誤検知することを防止しつつ、バスが混雑していない場合には精度よく、攻撃フレームを検知することができる。
【図面の簡単な説明】
【００１１】
【図１】本開示の異常検知装置の車両内ネットワークへの適用例を示した図
【図２】ゲートウェイ装置のハードウェア構成を示す図
【図３】ゲートウェイ装置の機能的な構成を示す図
【図４】ＣＡＮ(Controller Area Network)ネットワークで送信されるデータフレームの構成を示す図
【図５】ゲートウェイ装置の制御において参照される各種のデータを示す図
【図６】実施の形態１におけるゲートウェイ装置による攻撃検知動作を説明するための図
【図７】実施の形態１におけるゲートウェイ装置による攻撃検知動作を示すフローチャート
【図８】単位時間当たりの受信ビット総数の算出方法を説明するための図
【図９】期待受信時刻範囲を説明するための図
【図１０】実施の形態２におけるゲートウェイ装置による攻撃検知動作を説明するための図
【図１１】実施の形態２におけるゲートウェイ装置による攻撃検知動作を示す第１のフローチャート
【図１２】実施の形態２におけるゲートウェイ装置による攻撃検知動作を示す第２のフローチャート
【発明を実施するための形態】
【００１２】
以下、適宜図面を参照しながら、本発明のネットワークに対する異常検知装置の実施の形態を詳細に説明する。
【００１３】
（適用例）
本開示の異常検知装置は、ネットワークに接続された機器に対する攻撃（例えば、ＤｏＳ攻撃）を検知する装置である。図１は、本開示の異常検知装置を車両内のネットワークに適用した例を示した図である。図１に示すように、車両１０において車載ネットワーク２００ａ、２００ｂが設けられている。車載ネットワーク２００ａと車載ネットワーク２００ｂはゲートウェイ装置１００によって接続されている。車載ネットワーク２００ａは、バス２０１ａと、バス２０１ａに接続された複数のＥＣＵ（Electronic Control Unit：電子制御ユニット）３００とを含む。車載ネットワーク２００ｂは、バス２０１ｂと、バス２０１ｂに接続された複数のＥＣＵ３００とを含む。ＥＣＵ３００は、それに接続される機器を電子的に制御したり、機器から情報を収集したりする装置である。ＥＣＵ３００には、例えば、エンジン、ブレーキ、パワーウィンドウのアクチュエータ、各種センサ等が接続される。なお、以下では、説明の便宜上、車載ネットワーク２００ａと車載ネットワーク２００ｂをまとめて「車載ネットワーク２００」と称することがある。また、バス２０１ａとバス２０１ｂをまとめて「バス２０１」と称することがある。
【００１４】
ゲートウェイ装置１００は、車両１０のＥＣＵ３００へのサイバー攻撃を検知する機能を有し、異常検知装置として動作する。ゲートウェイ装置１００は攻撃を検知したときに、ドライバ、車両の所有者、所定の機関、及びＥＣＵに、攻撃を受けた旨を通知する。例えばＥＣＵはこの通知にしたがい安全を確保するためにエンジンやブレーキを制御する。
【００１５】
（実施の形態１）
以下、本開示の異常検知装置の一実施形態であるゲートウェイ装置の構成及び動作について説明する。
【００１６】
１．ゲートウェイ装置の構成
図１に示すように、本実施の形態１のゲートウェイ装置１００は車載ネットワーク２００に接続され、ネットワーク２００への攻撃を検知する機能を有する。ゲートウェイ装置１００は、ネットワーク２００上で周期的に伝送されるデータフレームの受信周期に基づいて攻撃を検知する。
【００１７】
図２は、ゲートウェイ装置１００のハードウェア構成を示す図である。同図に示すように、ゲートウェイ装置１００はＣＰＵ１１０を含み、所定のプログラムを実行することによって所定の機能を実現する。ＣＰＵ１１０に変えて、他の種類の汎用プロセッサ、例えばＭＰＵを用いてもよい。または、ＣＰＵ１１０に変えて、所定の機能を実現するように専用に設計されたプロセッサを用いてもよい。すなわち、ゲートウェイ装置１００はＣＰＵ、ＭＰＵ、ＧＰＵ、ＤＳＰ、ＦＰＧＡ、ＡＳＩＣ等、種々のプロセッサを含むことができる。
【００１８】
さらに、ゲートウェイ装置１００は、ＲＡＭ１２０と、ＲＯＭ１３０と、データ記憶部１４０とを備える。ＲＡＭ１２０は、ＣＰＵ１１０が演算を実行するにあたって、必要な情報やプログラムを一時的に記憶するメモリであり、ＣＰＵ１１０から適宜アクセスされる作業領域である。ＲＯＭ１３０はＣＰＵ１１０で実行されるプログラムを記憶するメモリである。なお、ＣＰＵ１１０で実行されるプログラムは、通信回線を介してサーバからダウンロードされてもよいし、不揮発メモリ等のボード上の内部記録媒体、または、光ディスクやメモリカード等の外部記録媒体を介してゲートウェイ装置１００に提供されてもよい。
【００１９】
データ記憶部１４０は、ゲートウェイ装置１００の制御において参照する種々の情報を記録する記録媒体である。データ記憶部１４０は、例えば、不揮発メモリ等の内部記録媒体、または、ハードディスク（ＨＤＤ）、ソリッドステートドライブ（ＳＳＤ）、光ディスク装置等の外部記録媒体で構成できる。
【００２０】
さらに、ゲートウェイ装置１００は、第１及び第２通信インタフェース１５０，１６０を備える。第１通信インタフェース１５０は車載ネットワーク２００ａに接続するＥＣＵとの間でデータのやりとりを行うための通信回路または通信モジュールである。第２通信インタフェース１６０は、車載ネットワーク２００ｂに接続するＥＣＵとの間でデータのやりとりを行うための通信回路または通信モジュールである。本実施の形態では、第１ないし第２通信インタフェース１５０、１６０は、車載ネットワークにおいて広く使用されているＣＡＮ(Controller Area Network)プロトコルにしたがい通信を行なう。なお、第１ないし第２通信インタフェース１５０、１６０はＣＡＮプロトコル以外のプロトコルにしたがい通信を行ってもよい。例えば、ＣＡＮ ＦＤプロトコルにしたがい通信を行なってもよい。
【００２１】
図３は、ゲートウェイ装置１００の機能的な構成を示した図である。図３に示す各機能はＣＰＵ１１０が所定のプログラムを実行することで実現される。
【００２２】
ゲートウェイ装置１００は、フレーム受信部１２１と、フレーム確認部１１１と、ビットカウント部１１３と、バス負荷率計算部１１４と、受信周期閾値計算部１１５と、受信周期閾値更新部１１６と、攻撃検知部１１７とを備える。さらに、ゲートウェイ装置１００は、ビットカウント保持部１４１と、受信周期情報保持部１４３と、受信周期閾値保持部１４５と、を備える。
【００２３】
フレーム受信部１２１は、車載ネットワーク２００上を伝送するデータフレームを受信する。フレーム受信部１２１は第１通信インタフェース１５０及び／または第２通信インタフェース１６０で構成される。
【００２４】
フレーム確認部１１１は、受信したデータフレームのＣＡＮ ＩＤに基づき、受信したデータフレームが検査対象であるか否かについて確認する。本実施の形態では、周期的に伝送されるデータフレームを、サイバー攻撃の検知のための検査を実施する対象のフレームとしている。
【００２５】
ビットカウント部１１３は、検査対象のデータフレームの全体の長さ、すなわち、検査対象のデータフレームのビット数をカウントする。
【００２６】
バス負荷率計算部１１４は、車載ネットワーク２００のバス２０１上で伝送されるデータの混雑の程度を示す指標であるバス負荷値の一例として、バス負荷率を計算する。バス負荷率は、車載ネットワーク２００の負荷の大きさを示す値とも言える。バス負荷率の算出方法の詳細については後述する。
【００２７】
受信周期閾値計算部１１５は、サイバー攻撃の有無を検知する際の判断基準となる正常周期範囲の閾値を計算する。具体的には、受信周期閾値計算部１１５は、データフレームの正常な受信周期の範囲を示す正常周期範囲の幅を計算する。
【００２８】
受信周期閾値更新部１１６は、バス負荷率に基づき正常周期範囲の閾値（幅）を更新する。
【００２９】
攻撃検知部１１７は、正常周期範囲を参照し、データフレームの受信周期に基づきサイバー攻撃の有無を検知する。
【００３０】
フレーム確認部１１１と、ビットカウント部１１３と、バス負荷率計算部１１４と、受信周期閾値計算部１１５と、受信周期閾値更新部１１６と、攻撃検知部１１７とは、ＣＰＵ１１０がプログラムを実行することにより実現される。
【００３１】
ビットカウント保持部１４１と、受信周期情報保持部１４３と、受信周期閾値保持部１４５とは、データ記憶部１４０により構成される。各保持部１４１、１４３、１４５で保持される情報の詳細については図５を参照して後述する。
【００３２】
車載ネットワーク２００ａ、２００ｂはＣＡＮプロトロコルに準拠した通信を行う。図４は、ＣＡＮプロトコルにおいて規定されるデータフレーム（以下「ＣＡＮフレーム」と称す）の構成を示す図である。ＣＡＮフレームは、ＳＯＦ（Start of Frame）５１で始まり、ＥＯＦ（End of Frame）６２で終わる。さらに、ＣＡＮフレームは、フレームの種類を特定するＩＤを格納するフィールド５２と、ＲＴＲ５３と、ＤＬＣ５６と、データを格納するフィールド５７とを有する。ＲＴＲ（Remote Transmission Request）５３は、データフレームとリモートフレームとを識別するための値を格納する。ＤＬＣ（Data length Code）５６は、データフィールド５７の長さを示す値を格納する。
【００３３】
図５は、ゲートウェイ装置１００の制御において参照される各種のテーブル情報を示す図である。
【００３４】
（１）フレーム情報テーブル
図５（Ａ）は、各種のデータフレームの情報を格納するフレーム情報テーブル８１の構成の例を説明した図である。フレーム情報テーブル８１は、データフレームの期待周期、ＤＬＣ、ＲＴＲ、バス負荷率の許容値を管理する。フレーム情報テーブル８１は受信周期情報保持部１４３に格納される。
【００３５】
ＤＬＣおよびＲＴＲはＣＡＮプロトコルにより、データフレームの種類毎に規定されている。また、ＣＡＮプロトコルでは、データフレームの種類毎に伝送周期が規定されている。すなわち、データフレームは、フレームの種類毎（すなわち、ＣＡＮ ＩＤ毎）に予め規定された伝送周期に対応する受信周期（期待周期）で受信されることが期待される。そこで、フレーム情報テーブル８１において、ＣＡＮ ＩＤ毎に、データフレームの期待される受信周期（期待周期）を管理している。
【００３６】
期待周期が「０」とは、そのデータフレームが非周期的に伝送されるフレームであることを意味する。本実施の形態のゲートウェイ装置１００は、このような非周期的に伝送（受信）されるデータフレームは攻撃検知の検査対象外とし、周期的に伝送（受信）されるデータフレームを検査対象とする。
【００３７】
また、ＣＡＮプロトコルでは、ＣＡＮ ＩＤの値は、データフレームの送信制御における優先度を示している。すなわち、ＣＡＮ ＩＤの値が小さいデータフレームほど、送信の優先度がより高くなっている。バスの混雑時には、データフレームは優先度の高いものから優先的に送信される。
【００３８】
バス負荷率の許容値は、攻撃検知処理において参照される情報であり、データフレームのＣＡＮ ＩＤ毎に予め設定される（詳細は後述）。バス負荷率の許容値は、データフレームの種類毎（ＣＡＮ ＩＤ毎）に設定される。
【００３９】
（２）ビットカウントテーブル
図５（Ｂ）は、所定の受信時刻毎に受信したデータフレームのビットの総数を管理するビットカウントテーブル８３である。受信時刻は、所定のタイミング（例えば、制御部１１０の起動時）を基準時刻として計測される時刻である。ビットカウントテーブル８３はビットカウント保持部１４１に格納される。例えば、図５（Ｂ）の例では、時刻２０１１において３つのデータフレームが受信され、それぞれのビット数が１２１、９５、４５ビットであり、ビットカウントテーブル８３において、受信ビット総数として、２６１ビットが記録されている。
【００４０】
（３）周期閾値テーブル
図５（Ｃ）は、各ＣＡＮ ＩＤのデータフレームに対する、正常な受信と判断される受信周期の範囲である正常周期範囲を規定するための閾値情報を管理する周期閾値テーブル８５である。周期閾値テーブル８５は、受信周期閾値保持部１４５に格納される。
【００４１】
本実施の形態では、正常周期範囲を規定するための閾値情報として、上側及び下側の周期のマージンである上側閾値幅と下側閾値幅を管理する。すなわち、正常周期範囲は、フレーム毎に予め規定される期待周期Ｔを基準として、上側および下側においてそれぞれ上側閾値幅と下側閾値幅だけマージンを持たせた範囲に設定される。具体的には、上側閾値幅をΔｍｈとし、下側閾値幅をΔｍｌとすると、正常周期範囲Ｗは下記式で表される。
Ｔ−Δｍｌ  ≦  正常周期範囲Ｗ  ≦  Ｔ＋Δｍｈ        （１）
【００４２】
周期閾値テーブル８５は、データフレームの種類毎に、すなわち、ＣＡＮ ＩＤ毎に、データフレームの上側閾値と下側閾値を管理する。図５（Ｃ）において、ＣＡＮ ＩＤが「１００」のデータフレームについては、上側閾値は１０＋Δｍｈ（ｍｓ）であり、下側閾値は１０−Δｍｌ（ｍｓ）である。よって、ＣＡＮ ＩＤが「１００」のデータフレームについては、正常周期範囲Ｗは、（１０−Δｍｌ）ｍｓ以上かつ（１０＋Δｍｈ）ｍｓ以下の範囲となる。このように、上側閾値及び下側閾値は、正常と判断される受信周期の範囲の閾値を与える値である。
【００４３】
２．サイバー攻撃の検知動作
以上のように構成されたゲートウェイ装置１００におけるサイバー攻撃の検知動作を以下に説明する。ゲートウェイ装置１００は車載ネットワーク２００上に流れるデータの受信周期の変動に基づきサイバー攻撃を検知する。
【００４４】
ＣＡＮプロトコルによれば、周期的に送信されるデータフレームの種類と、非周期的に送信されるデータフレームがある。周期的に送信されるデータフレームを、本来の期待される受信周期（期待周期）から大きくずれた周期で受信した場合、そのデータフレームは正規のデータフレームではなく、サイバー攻撃により送信された、なりすましのデータフレームである可能性が高い。そこで、ゲートウェイ装置１００は、周期的に送信されるデータフレームの受信周期を監視し、期待される受信周期（期待周期）が正常周期範囲内でない場合にサイバー攻撃があったと判断する。
【００４５】
すなわち、ゲートウェイ装置１００は、周期性を有するデータフレームの受信周期を監視し、その周期が正常周期範囲内に入っている場合は、受信周期は正常であり、攻撃を受けていないと判断する。一方、受信周期が正常周期範囲外である場合、受信周期は異常であると判断し、攻撃を受けたことを検知する。
【００４６】
より具体的には、ゲートウェイ装置１００は以下のようにして受信周期に基づき攻撃の有無を判断する。図６を参照し、周期Ｔを有する、あるＣＡＮ ＩＤのデータフレームについて、前回の受信から期待される受信時刻がｔexpであり、今回実際に受信した時刻がｔactである場合を例に説明する。この場合、周期閾値テーブル８５に格納された下側閾値幅Δｍｌ、上側閾値幅Δｍｈを用いて、正常周期範囲Ｗの下限を示す時刻である最小閾値時刻ｔｈmin、上限を示す時刻である最大閾値時刻ｔｈmaxは次式で算出される。
ｔｈmin＝ｔexp−Δｍｌ        （２ａ）
ｔｈmax＝ｔexp＋Δｍｈ        （２ｂ）
【００４７】
ここで、上側閾値幅Δｍｈ及び下側閾値幅Δｍｌはそれぞれバス負荷率Ｌに基づき下記式により算出される。バス負荷率Ｌはバス上で伝送されるデータの混雑さの程度を示す指標であり、その算出方法については後述する。
Δｍｈ ＝ Ｔｅ×Ｌ            （３ａ）
Δｍｌ ＝ Δｍｈ              （３ｂ）
Ｔｅ ＝ ｔact − ｔexp        （３ｃ）
【００４８】
受信時刻ｔactが、以上のようにして求めたｔｈmin以上でかつｔｈmax以下の正常周期範囲Ｗ内にあるときは、その受信周期は正常範囲内となるため、正常なデータフレームであると判断する。一方、受信時刻ｔａｃｔが、最小閾値時刻ｔｈminよりも早いか、または、最大閾値時刻ｔｈmaxよりも遅い場合は、受信周期は正常周期範囲の範囲外となるため、攻撃を受けたと判断する。
【００４９】
このとき、上側閾値幅Δｍｈ及び下側閾値幅Δｍｌは式（３ａ）、（３ｂ）に示すように、バス負荷率Ｌすなわちバスの混雑さに応じて変化させている。すなわち、周期判定のための閾値をバス負荷率Ｌすなわちバスの混雑さに応じて変化させている。具体的には、バスが混雑しているときには、上側閾値幅Δｍｈ及び下側閾値幅Δｍｌを大きくし、判断基準となる正常周期範囲Ｗを大きくしている。これにより、バスの混雑により遅延したフレームを攻撃フレームであると誤認する確率を低減している。一方、バスが混雑していないときには、上側閾値幅Δｍｈ及び下側閾値幅Δｍｌを小さくして正常周期範囲Ｗを小さくし、これにより本来の攻撃フレームの検知精度を向上している。
【００５０】
図７は、実施の形態１におけるゲートウェイ装置１００による攻撃検知動作を示すフローチャートである。以下、図７を参照して、ゲートウェイ装置１００による攻撃検知動作を説明する。なお、図７に示す処理は所定の制御周期で繰り返し実行される。
【００５１】
ゲートウェイ装置１００において、フレーム受信部１２１は、車載ネットワーク２００上を伝送するデータフレームを受信する（Ｓ１）。
【００５２】
ビットカウント部１１３は、受信した各データフレームのビット数をカウントし、同じ受信時刻に受信した他のデータフレームのビット数に加算して受信ビット総数を求め、受信時刻毎の受信ビット総数をビットカウント保持部１４１に記録する（Ｓ２）。ビットカウント部１１３は、受信したデータフレームのビット数を実際にカウントする代わりに、ＤＬＣに格納された値をビット数として取得してもよい。
【００５３】
すなわち、ビットカウント部１１３は、図８に示すように、受信時刻毎に、単位時間当たりの受信ビット総数（Bit_sum）を求め、ビットカウントテーブル８３に記録する。例えば、図５（Ｂ）の例では、受信時刻「２０１１」で、３つのデータフレームを受信し、それぞれのビット数が１２１、９５、４５である。このため、ビットカウント部１１３は、受信時刻「２０１１」において、受信ビットを合算して、単位時間当たりの受信ビット総数として「２６１」をビットカウントテーブル８３に記録する。また、受信時刻「２０１２」では、６８ビットと７５ビットの２つのデータフレームが受信されたため、ビットカウント部１１３は、受信ビット総数として「１４３」をビットカウントテーブル８３に記録する。受信時刻「２０１３」では、データフレームを受信しておらず、受信ビット総数「０」がビットカウントテーブル８３に記録される。受信時刻「２０１４」では、１１１ビットのデータフレームを受信したため、受信ビット総数「１１１」がビットカウントテーブル８３に記録される。
【００５４】
フレーム確認部１１１は、受信したデータフレームがサイバー攻撃の検知のための検査対象のデータフレームであるか否かを確認する（Ｓ３）。具体的には、フレーム確認部１１１は、フレーム情報テーブル８１を参照し、受信したデータフレームのＣＡＮ ＩＤに基づき、受信したデータフレームが周期性を持つフレームであるか否かを確認する。フレーム確認部１１１は、受信したデータフレームが周期性を有するフレームである場合、サイバー攻撃の検知のための検査対象のフレームであるとする。
【００５５】
受信したデータフレームが検査対象のフレームでない場合（Ｓ３でＮＯ）、本処理を終了する。
【００５６】
一方、受信したデータフレームが検査対象のフレームである場合（Ｓ３でＹＥＳ）、フレーム確認部１１１はさらにデータフレームの受信時刻ｔactが期待受信時刻ｔexpと等しいか否かを判断する（Ｓ４）。期待受信時刻ｔexpは、前回の受信時刻に、そのデータフレームの期待周期Ｔを加算して求める。期待周期Ｔは、受信したデータフレームのＣＡＮ ＩＤに基づきフレーム情報テーブル８１を参照して取得する。
【００５７】
受信時刻ｔactが期待受信時刻ｔexpと等しい場合（Ｓ４でＹＥＳ）、データフレームは正規の周期で受信されているため、攻撃検知部１１７は、サイバー攻撃は検知されなかったと判断し（Ｓ１２）、本処理を終了する。
【００５８】
受信時刻ｔactが期待受信時刻ｔexpと等しくない場合（Ｓ４でＮＯ）、フレーム確認部１１１は、受信時刻ｔactが期待受信時刻ｔexpよりも遅延しているか否かを判断する（Ｓ５）。
【００５９】
受信時刻ｔactが期待受信時刻ｔexpよりも遅延している場合（Ｓ５でＹＥＳ）、バス負荷率計算部１１４は、期待受信時刻ｔexpに対する受信時刻ｔactのずれ量を示す偏差時間Ｔｅを算出する（Ｓ６）。次に、バス負荷率計算部１１４は下記式にしたがいバス負荷率Ｌを計算する（Ｓ７）。
【００６０】
【数１】
2019200670.tif 000003
ここで、ＢＰＳはバス上でのデータ転送レートである。
【００６１】
すなわち、バス負荷率計算部１１４は、図８に示すように、偏差時間Ｔｅと、期待受信時刻ｔexpから受信時刻ｔactの間における各受信時刻で受信したビット総数Bit_sumの合計とから、バス負荷率Ｌを計算する（Ｓ７）。期待受信時刻ｔexpから受信時刻ｔactの間の各受信時刻におけるビット総数Bit_sumはビットカウントテーブル８３から取得できる。
【００６２】
バス負荷率Ｌの算出後、バス負荷率計算部１１４は、算出したバス負荷率Ｌを、バス負荷率の許容値ＰＬ（許容値）と比較する（Ｓ８）。バス負荷率の許容値ＰＬは、受信したデータフレームのＣＡＮ ＩＤに基づきフレーム情報テーブル８１を参照して取得される。
【００６３】
ここで、バス負荷率の許容値ＰＬについて説明する。バス負荷率の許容値ＰＬは、データフレームの遅延がバスの混雑さに起因したものか否かを判定するための閾値である。バスが許容値ＰＬを超えた混雑さを有する状態にある場合、受信したデータフレームよりも優先度の高い他のフレームが多数伝送されている状況にあると考えられる。よって、この場合、たとえ大きな遅延があったとしても、その遅延は、より優先度の高い他のフレームの伝送によるバスの混雑さが原因であり、攻撃によるものではないと判断する。一方、バスが許容値ＰＬを超えていない状態にある場合は、バスの混雑さの影響を考慮せずにフレームの受信周期の判断を行う。
【００６４】
つまり、バス上のトラフィックが混雑している場合、優先度の高いフレームは優先して伝送される。このため本来優先度の高いデータフレームはバスの混雑さに依らず遅延しにくく、バスのトラフィックの影響は受けにくい。一方、優先度の低いデータフレームは、送信が後回しにされるため、バスのトラフィックの影響を受けやすく、遅延し易くなる。これらの点から、優先度の高いデータフレームは遅延し難いため、バスが混雑していない場合であっても少しの遅延があれば、その遅延が攻撃に起因すると考えることができる。一方、優先度の低いデータフレームは遅延し易いため、バスが混雑している場合は、大きな遅延があっても、その遅延はバスの混雑に起因し、攻撃によるものではないと考えることができる。
【００６５】
そこで、本実施の形態では、遅延の原因がバス２０１の混雑さである（すなわち、遅延が攻撃のせいではない）と判断するときの基準値であるバス負荷率の許容値ＰＬを、データフレームの優先度に応じて設定している。すなわち、データフレームの優先度が高い場合、許容値ＰＬを低く設定する（混雑していると判断する基準値を厳しくする）。また、データフレームの優先度が低い場合、許容値ＰＬを高く設定している（混雑していると判断する基準値を緩くする）。許容値ＰＬは、図５（Ａ）に示すように、データフレームの優先度、すなわち、データフレームの種類（ＣＡＮ ＩＤ）毎に予め設定され、フレーム情報テーブル８１において管理される。
【００６６】
バス負荷率計算部１１４は、受信周期情報保持部１４３からフレーム情報テーブル８１を読み出す。バス負荷率計算部１１４は、このフレーム情報テーブル８１を参照して、受信したデータフレームのＣＡＮ ＩＤに基づきバス負荷率の許容値ＰＬ（許容値）を取得する。例えば、図５（Ａ）の例において、ＣＡＮ ＩＤが「１００」である場合、バス負荷率の許容値ＰＬとして「９０％」が取得される。
【００６７】
ステップ８において、算出したバス負荷率Ｌが許容値ＰＬ以下の場合（Ｓ８でＮＯ）、受信したデータフレームが混雑さの影響を受ける程にバスが混雑した状態にないと考えられる。よって、この遅延（すなわち、受信周期のずれ）が発生しているのは、そのデータフレームが正規のものではなく、サイバー攻撃による、なりすましのデータフレームであるためであると考えられる。そこで、バス負荷率Ｌが許容値ＰＬ以下の場合（Ｓ８でＮＯ）、攻撃検知部１１７はサイバー攻撃を受けたことを検知する（Ｓ１６）。このとき、受信周期閾値更新部１１６は、上側閾値幅Δｍｈ及び下側閾値幅Δｍｌを所定値にリセットし、リセットした値で受信周期閾値保持部１４５の周期閾値テーブル８５を更新する（Ｓ１５）。
【００６８】
一方、ステップ８において、算出したバス負荷率Ｌがその許容値ＰＬよりも大きい場合（Ｓ８でＹＥＳ）、受信周期閾値計算部１１５は正常周期範囲Ｗの上限を規定する最大閾値時刻（ｔｈmax）を算出する（Ｓ９）。
【００６９】
このため、受信周期閾値計算部１１５はまず、偏差時間Ｔｅとバス負荷率Ｌとから式（３ａ）を用いて上側閾値幅Δｍｈを求める。そして、受信周期閾値計算部１１５は、期待受信時刻ｔexpと上側閾値幅Δｍｈとから式（２ｂ）を用いて最大閾値時刻ｔｈmaxを求める。受信周期閾値更新部１１６は、算出された上側閾値幅Δｍｈを用いて受信周期閾値保持部１４５における周期閾値テーブル８５を更新する。
【００７０】
その後、攻撃検知部１１７は、受信時刻ｔactが最大閾値時刻ｔｈmaxと等しいか、またはそれよりも前かを判断する（Ｓ１０）。
【００７１】
受信時刻ｔactが、最大閾値時刻ｔｈmaxと等しいか、またはそれよりも前である場合（Ｓ１０でＹＥＳ）、受信したデータフレームの周期は正常周期範囲Ｗ内であるため、攻撃は受けていないと考えられる。この場合、攻撃検知部１１７は、サイバー攻撃を検知しなかったと判断する（Ｓ１２）。また、受信周期閾値更新部１１６は、式（３ｂ）により、下側閾値幅Δｍｌを算出し、受信周期閾値保持部１４５の周期閾値テーブル８５を更新する（Ｓ１１）。
【００７２】
一方、受信時刻ｔactが最大閾値時刻ｔｈmaxよりも後の場合（Ｓ１０でＮＯ）、データフレームの受信周期は正常周期範囲Ｗの外であるため、攻撃を受けたと考えられるので、攻撃検知部１１７はサイバー攻撃を受けたことを検知する（Ｓ１６）。このとき、受信周期閾値更新部１１６は、上側閾値幅Δｍｈ及び下側閾値幅Δｍｌを所定値にリセットし、受信周期閾値保持部１４５の周期閾値テーブル８５を更新する（Ｓ１５）。
【００７３】
ステップＳ５に戻り、受信時刻ｔactが期待受信時刻ｔexpよりも前である場合（Ｓ５でＮＯ）、受信時刻ｔactが最小閾値時刻ｔｈminと等しいか、それよりも後であるかが判定される（Ｓ１３）。
【００７４】
受信時刻ｔactが最小閾値時刻ｔｈminと等しいか、それよりも後である場合（Ｓ１３でＹＥＳ）、受信したデータフレームの受信周期は正常周期範囲Ｗ内であると考えられるため、攻撃は受けていないと判定される（Ｓ１２）。このとき、受信周期閾値更新部１１６は、上側閾値幅Δｍｈ及び下側閾値幅Δｍｌを所定値にリセットし、受信周期閾値保持部１４５の周期閾値テーブル８５を更新する（Ｓ１４）。
【００７５】
一方、受信時刻ｔactが最小閾値時刻ｔｈminよりも前である場合（Ｓ１３でＮＯ）、受信周期は正常周期範囲Ｗ内ではない。よって、この場合、なりすましのデータフレームによる攻撃を受けていると考えられる。すなわち、攻撃検知部１１７はサイバー攻撃を受けたことを検知する（Ｓ１６）。また、受信周期閾値更新部１１６は、上側閾値幅Δｍｈ及び下側閾値幅Δｍｌを所定値にリセットし、受信周期閾値保持部１４５の周期閾値テーブル８５を更新する（Ｓ１５）。
【００７６】
以上のように、本実施の形態では、受信したフレームが正常であると判断する正常周期範囲Ｗの大きさ（換言すれば、正常周期範囲Ｗの閾値）をバス２０１の混雑状況（バス負荷率Ｌ）に基づき変動させている。これにより、バス２０１の混雑時において、混雑さに起因して遅延したフレームに対する攻撃の誤検知を低減しつつ、バスが混雑していないときには、攻撃フレームの検知精度を向上させることができる。
【００７７】
なお、上記のフローチャートにおけるステップＳ４では、受信時刻ｔactを期待受信時刻ｔexpと比較した。ジッタ等の、優先度の低さ以外の遅延要因を考慮して、図９に示すように期待時刻ｔexpに幅を持たせても良い。例えば、期待時刻ｔexpを中心として所定のマージン±Δｔを持たせた期待受信時刻範囲を設定してもよい。
ｔexp−Δｔ  ≦  期待受信時刻範囲  ≦  ｔexp＋Δt        （５）
【００７８】
そして、ステップＳ４において、受信時刻ｔactが期待時刻範囲内に入るか否かを判断してもよい。この場合、ステップＳ５においては、受信時刻ｔactが期待受信時刻範囲よりも後か否かを判断すればよい。また、ステップＳ１３では、式（２ａ）で求めた値からさらにΔｔだけ減算して最小閾値時刻を求め、この求めた最小閾値時刻と受信時刻ｔactとを比較すればよい。
【００７９】
以上のように本実施の形態のゲートウェイ装置１００は、所定の周期でデータフレームが伝送されるバス２０１に接続され、当該バス２０１にされた機器への攻撃を検知する装置である。ゲートウェイ装置１００は、バス２０１に伝送されるデータフレームを受信するフレーム受信部１２１と、検査対象のデータフレームの受信周期が正常範囲にあるか否かを、正常範囲を示す閾値（例えば、Ｔｈmin、Ｔｈmax、またはΔｍｌ、Δｍｈ）を用いて判断し、その判断結果に基づき攻撃の有無を検知する攻撃検知部１１７と、受信したデータフレームの内容に基づき、バスの混雑さの程度を示すバス負荷率Ｌを算出するバス負荷計算部１１４と、算出したバス負荷率に応じて閾値を決定する受信周期閾値計算部１１５と、を備える。
【００８０】
受信周期閾値計算部１１５、例えば、バス負荷率がバスの混雑さの程度がより高いことを示すほど、正常周期範囲Ｗがより広くなるように閾値（例えば、Ｔｈmin、Ｔｈmax、またはΔｍｌ、Δｍｈ）を決定する。
【００８１】
上記の構成によれば、バス２０１の混雑度合いを示すバス負荷率Ｌに応じて、正常周期範囲を規定する閾値幅Δｍｌ、Δｍｈや閾値時刻Ｔｈmin、Ｔｈmaxを変化させている。すなわち、バス負荷率Ｌに応じて受信周期の判断における正常周期範囲の閾値を変化させている。これにより、バス２０１の混雑によりデータフレームが遅延した場合において、正常フレームを攻撃フレームであると誤検知することを防止しつつ、バスが混雑していない場合には精度よく、攻撃フレームを検知することができる。
【００８２】
また、ＣＡＮプロトコルによれば、データフレームの種類毎にデータフレームの送信に対する優先度が異なっている。攻撃検知部１１７はさらに、バス負荷率が許容値以下であるときに（Ｓ８）、攻撃があったことを検知する（Ｓ１６）。これにより、バスが混雑していないにもかかわらず、データフレームが遅延している場合、その原因はサイバー攻撃であると判断する。また、許容値はデータフレームの優先度に応じて設定される。これにより、優先度が高く遅延しにくいデータフレームと、優先度が低く遅延し易いデータフレームのそれぞれに対して適切な許容値を設定できる。
【００８３】
（実施の形態２）
実施の形態１では、バス２０１の混雑度を示す指標であるバス負荷率を、式（４）に示すように、期待時刻ｔexpから受信時刻ｔactの間における、バスの最大可能ビット数に対する受信ビット総数の比率Ｌとして算出した。バス負荷率の算出方法はこれに限定されない。本実施の形態では、実施の形態１と異なるバス負荷率ＬＢを用いた攻撃検知の動作を説明する。なお、ゲートウェイ装置１００のハードウェア構成は実施の形態１のものと同じである。
【００８４】
本実施の形態では、バス負荷率ＬＢは、単位時間当たりの受信したフレームのビット数として算出される。そして、バス負荷率ＬＢが閾値ＰＢを超えている時間に応じて正常周期範囲Ｗの大きさを設定する。
【００８５】
図１０は、実施の形態２におけるゲートウェイ装置１００による攻撃検知動作を説明するための図である。本実施の形態では、周期性を有する各種のデータフレームについて、所定の受信時刻毎にバス負荷率ＬＢを算出する。具体的には、バス負荷率計算部１１４は、単位時間当たりに受信したフレームのビット総数をバス負荷率ＬＢとして求める。
ＬＢ＝単位時間の間に受信したフレームのビット総数／単位時間      （６）
【００８６】
そして、周期性を有する各種のデータフレームについて、期待受信時刻ｔexpが経過してもデータフレームを受信していない場合に、期待受信時刻ｔexpの経過後から継続してバス負荷率ＬＢが許容値ＰＢを超えている時間Ｔoverを算出する。そして、この経過時間Ｔoverに基づき正常周期範囲Ｗの大きさを設定する。より具体的には、正常周期範囲Ｗの上限を示す最大閾値時刻ｔｈmaxと下限を示す最小閾値時刻ｔｈminとをそれぞれ決定する上側閾値幅Δｍｈと下側閾値幅Δｍｌを次式により設定する。
Δｍｈ ＝ Ｔov                （７ａ）
Δｍｌ ＝ Δｍｈ              （７ｂ）
【００８７】
ここで、バス負荷率ＬＢの許容値ＰＢは、図５（Ａ）に示すように、フレーム情報テーブル８１ｂに予め記憶されている。バス負荷率ＬＢの許容値ＰＢは、実施の形態１と同様にＣＡＮ ＩＤ毎に設定されている。
【００８８】
図１１は、実施の形態２におけるゲートウェイ装置１００による攻撃検知動作を示す第１のフローチャートである。図１１に示す処理は、ＣＰＵ１１０により所定の周期で繰り返し実行される。また、図１１に示す処理は、周期性を有するデータフレームの種類（ＣＡＮ ＩＤ）毎に実施される。
【００８９】
ビットカウント部１１３は、検査対象の種類のデータフレームの受信時刻ｔactが期待受信時刻ｔexpを超過しているか否かを判断する（Ｓ３１）。受信時刻ｔactが期待受信時刻ｔexpを超過している場合（Ｓ３１でＹＥＳ）、ビットカウント部１１３は、所定の受信時刻毎に、受信した全フレームそれぞれのビット数を合算してビット総数（Bit_sum）を算出することでバス負荷率ＬＢを算出する（Ｓ３２）。例えば、図５（Ｂ）に示す例では、時刻「２０１１」におけるバス負荷率ＬＢは、２６１（＝１２５＋９５＋４５）となる。同様に、時刻「２０１２」におけるバス負荷率ＬＢは１４３（＝６８＋７５）となる。時刻「２０１３」におけるバス負荷率ＬＢは０となり、時刻「２０１４」におけるバス負荷率ＬＢは１１１となる。
【００９０】
受信周期閾値計算部１１５は、検査対象のデータフレームの種類のバス負荷率ＬＢが、許容値ＰＢよりも大きいか否かを判断する（Ｓ３３）。許容値ＰＢはフレーム情報テーブル８１ｂから、データフレームの種類（ＣＡＮ ＩＤ）に応じて取得される。
【００９１】
バス負荷率ＬＢが許容値ＰＢよりも大きい場合（Ｓ３３でＹＥＳ）、受信周期閾値計算部１１５は、継続してビット総数がしきい値を超えている時間Ｔoverに基づき、最大閾値時刻Ｔｈmaxを設定する（Ｓ３４）。
【００９２】
具体的には、受信周期閾値計算部１１５は、継続して受信ビット総数が許容値ＰＢを超えている時間Ｔoverに基づき、正常周期範囲Ｗの上側閾値幅Δｍｈと下側閾値幅Δｍｌを式（７ａ）、（７ｂ）により決定する。そして、受信周期閾値計算部１１５はそれらの値Δｍｈ、Δｍｌを用いて最大閾値時刻ｔｈmaxと最小閾値時刻ｔｈminを求める。
【００９３】
受信周期閾値更新部１１６は、最大閾値時刻ｔｈmaxと最小閾値時刻ｔｈminの算出過程で求められた上側閾値幅Δｍｈと下側閾値幅Δｍｌを用いて周期閾値テーブル８５を更新する（Ｓ３５）。これにより正常周期範囲Ｗが更新される。
【００９４】
バス負荷率（単位時間当たりの受信ビット総数）ＬＢが許容値ＰＢより大きいことは、バス上に多くのデータが伝送されている混雑状態にあることを示している。このため、フレーム受信の遅延はバスの混雑によるものと考え、攻撃によるものではないと考えられる。よって、バス負荷率ＬＢが閾値ＰＢよりも大きい場合（Ｓ３３でＹＥＳ）、攻撃検知部１１７は、サイバー攻撃がないことを検知する（Ｓ３６）。
【００９５】
一方、バス負荷率ＬＢが許容値ＰＢ以下の場合（Ｓ３３でＮＯ）、バスは混雑状態にない。バスが混雑していないにもかかわらず、フレームの受信が遅延していること、すなわち、受信周期が異常であることは、そのフレームがサイバー攻撃による、なりすましフレームであると考えられる。よって、バス負荷率ＬＢが許容値ＰＢ以下の場合（Ｓ３３でＮＯ）、攻撃検知部１１７はサイバー攻撃を受けたことを検知する（Ｓ３７）。
【００９６】
図１２は、以上のようにして設定された最大及び最小閾値時刻に基づく攻撃検知動作を示す第２のフローチャートである。
【００９７】
ゲートウェイ装置１００において、フレーム受信部１２１は、車載ネットワーク２００のバス上を伝送するデータフレームを受信する（Ｓ５１）。
【００９８】
攻撃検知部１１７は、受信時刻ｔactが最大閾値時刻ｔｈmaxよりも後か否かを判断する（Ｓ５２）。受信時刻ｔactが最大閾値時刻ｔｈmaxよりも後である場合（Ｓ５２でＹＥＳ）、攻撃検知部１１７は、サイバー攻撃を受けたことを検知する（Ｓ５６）。
【００９９】
受信時刻ｔactが最大閾値時刻ｔｈmaxと等しいかそれよりも前である場合（Ｓ５２でＮＯ）、攻撃検知部１１７は、受信時刻ｔactが最小閾値時刻ｔｈminよりも前か否かを判断する（Ｓ５３）。
【０１００】
受信時刻ｔactが最小閾値時刻ｔｈminよりも前である場合（Ｓ５３でＹＥＳ）、攻撃検知部１１７は、サイバー攻撃を受けたことを検知する（Ｓ５６）。
【０１０１】
受信時刻ｔactが最小閾値時刻ｔｈminと等しいか、それよりも後である場合（Ｓ５３でＮＯ）、攻撃検知部１１７は、サイバー攻撃を受けていないことを検知する（Ｓ５５）。その際、受信周期閾値計算部１１５は、上側閾値幅Δｍｈ及び下側閾値幅Δｍｌを所定値にリセットする（Ｓ５４）。
【０１０２】
以上のように、本実施の形態では、バスの混雑さを示す指標であるバス負荷率ＬＢとして、単位時間当たりの受信ビット総数を用いている。そして、単位時間当たりの受信ビット総数ＬＢが所定値を超えた経過時間Ｔoverに基づき、正常周期範囲を規定する上側閾値幅Δｍｈ及び下側閾値幅Δｍｌを変化させる。換言すれば、単位時間当たりの受信ビット総数が所定値を超えた経過時間に基づき、周期判定の際の閾値を動的に変化させる。このように周期判定の際の閾値を動的に変化させることで、バスの混雑時の誤検知を防止しつつ、バスが混雑していない時の検知精度を向上させることができる。
【０１０３】
（変形例）
上記の実施の形態では、本発明に係る異常検知装置（及び方法）の構成を、車載ネットワークに対して適用した例を説明したが、他の種類のネットワークに対しても同様に適用することができる。
【０１０４】
上記の実施の形態では、本開示に係る異常検知装置を、ゲートウェイ装置１００に適用した例を説明したが、他の機器に適用することもできる。例えば、本開示に係る異常検知装置は、ＥＣＵ３００のようなネットワークに接続する種々の機器に適用することができる。
【０１０５】
上記の実施の形態において、バスの混雑さを示す指標であるバス負荷値の例として、式（４）または式（６）で求められるバス負荷率を提示したが、バス負荷値はこれに限定されない。バスの混雑さを定量的に示す情報であれば、任意の情報をバス負荷値として使用できる。
【０１０６】
（本開示）
上記の実施の形態は以下の思想を開示している。
【０１０７】
（１）所定の周期でデータフレームが伝送されるバス（２０１）に接続され、当該バスに接続された機器への攻撃を検知する装置（１００）であって、
バスに伝送されるデータフレームを受信するフレーム受信部（１２１）と、
検査対象のデータフレームの受信周期が正常範囲にあるか否かを、正常範囲を示す閾値を用いて判断し、その判断結果に基づき攻撃の有無を検知する攻撃検知部（１１７）と、
フレーム受信部が受信したデータフレームの内容に基づきバスの混雑さの程度を示すバス負荷値を算出するバス負荷計算部（１１４）と、
バス負荷計算部が算出したバス負荷値に応じて閾値を決定する受信周期閾値計算部（１１５）と、
を備えた異常検知装置。
【０１０８】
（２）（１）の異常検知装置において、受信周期閾値計算部は、バス負荷値がバスの混雑さの程度がより高いことを示すほど、正常範囲がより広くなるように閾値を決定してもよい。
【０１０９】
（３）（１）または（２）の異常検知装置において、バス上に複数種類のデータフレームが伝送され、データフレームの種類毎にデータフレームの送信に対する優先度が異なってもよい。攻撃検知部はさらに、バス負荷値が許容値以下であるときに（Ｓ８、Ｓ３３）、攻撃があったことを検知してもよい（Ｓ１６、Ｓ３７）。許容値はデータフレームの優先度が高いほど小さな値に設定される。
【０１１０】
（４）（１）の異常検知装置において、バス負荷値（Ｌ）は、データフレームの受信時刻を含み正常周期範囲の幅を持つ期間（Ｔｅ）における、バスで通信可能なビット総数に対する受信したデータのビット総数の比率であってもよい（式（４）参照）。
【０１１１】
（５）（１）の異常検知装置において、バス負荷値（ＬＢ）は、単位時間に受信したデータフレームのビット総数であってもよい（式（６）参照）。
【０１１２】
（６）（５）の異常検知装置において、受信周期閾値計算部は、データフレームの受信が期待される時刻である期待受信時刻の経過したデータフレームについて、バス負荷値が連続して所定値を超えた時間に応じて、閾値を決定してもよい。
【０１１３】
（７）（１）〜（６）のいずれかの異常検知装置は、車両内のネットワークに接続されてもよい。
【０１１４】
（８）（７）の異常検知装置において、データフレームはＣＡＮ(Controller Area Network)プロトコルにしたがって伝送されてもよい。
【０１１５】
（９）所定の周期でデータフレームが伝送されるバスに接続され、当該バスに接続された機器への攻撃を検知する方法であって、
データフレームを受信するステップ（Ｓ１）と、
受信したデータフレームの内容に基づき、バスの混雑さの程度を示すバス負荷値を算出するステップ（Ｓ７、Ｓ３２）と、
算出したバス負荷値に基づき、データフレームの受信周期の正常範囲の閾値を決定するステップ（Ｓ９、Ｓ１１、Ｓ３４）と、
決定した閾値を用いて、検査対象のデータフレームの受信周期が正常範囲にあるか否かを判断するステップ（Ｓ１０、Ｓ１３、Ｓ５２、５３）と、
その判断結果に基づき攻撃の有無を検知するステップ（Ｓ１２、Ｓ１６、Ｓ５２、Ｓ５６）と、を含む、
異常検知方法。
【０１１６】
（１０）所定の周期でデータフレームが伝送されるバスに接続され、当該バスに接続された機器への攻撃を検知する異常検知装置を制御するプログラムであって、
当該プログラムは、異常検知装置の制御部に、
データフレームを受信するステップ（Ｓ１）と、
受信したデータフレームの内容に基づき、バスの混雑さの程度を示すバス負荷値を算出するステップ（Ｓ７、Ｓ３２）と、
算出したバス負荷値に基づき、データフレームの受信周期の正常範囲の閾値を決定するステップ（Ｓ９、Ｓ１１、Ｓ３４）と、
決定した閾値を用いて、検査対象のデータフレームの受信周期が正常範囲にあるか否かを判断するステップ（Ｓ１０、Ｓ１３、Ｓ５２、５３）と、
その判断結果に基づき攻撃の有無を検知するステップ（Ｓ１２、Ｓ１６、Ｓ５２、Ｓ５６）と、を実行させる、
プログラム。
【０１１７】
上述の実施の形態は、本開示における技術を例示するためのものであるから、特許請求の範囲またはその均等の範囲において種々の変更、置き換え、付加、省略などを行うことができる。
【符号の説明】
【０１１８】
１０  車両
１００  ゲートウェイ装置
１１０  ＣＰＵ
１１１  フレーム確認部
１１３  ビットカウント部
１２１  フレーム受信部
１２０  ＲＡＭ
１３０  ＲＯＭ
１４０  データ記憶部
１５０  第１通信インタフェース
１６０  第２通信インタフェース
２００ａ、２００ｂ、２００  車載ネットワーク
２０１ａ、２０１ｂ、２０１  バス
３００  ＥＣＵ（電子制御ユニット）
【図１】
2019200670.tif 000004
【図２】
2019200670.tif 000005
【図３】
2019200670.tif 000006
【図４】
2019200670.tif 000007
【図５】
2019200670.tif 000008
【図６】
2019200670.tif 000009
【図７】
2019200670.tif 000010
【図８】
2019200670.tif 000011
【図９】
2019200670.tif 000012
【図１０】
2019200670.tif 000013
【図１１】
2019200670.tif 000014
【図１２】
2019200670.tif 000015