(57)【要約】  従来技術よりも少ない分割パターンで、精度よくペイロードのビットアサインを推定することができるビットアサイン推定装置を提供する。通信データを受信する受信部と、受信した通信データのペイロードを分割して複数のブロックを生成するブロック生成部と、ブロックのビットアサインを固定値型、状態値型、連続値型の何れかに推定する単位ブロックビットアサイン推定部と、連続値型と推定されたブロックまたは連結ブロックのいずれかに上位ビット側で隣接するブロックが状態値型または連続値型と推定されている場合に、隣接するブロックを連続値型と推定されたブロックまたは連結ブロックに連結するブロック連結部と、連結ブロックが連続値型であるか否かを推定する連結ブロックビットアサイン推定部と、連結ブロックが連続値型でないと推定された場合に、直近に連結したブロックを対応する連結ブロックから分離するブロック分離部を含む。
2019107149.tif 000002
【特許請求の範囲】
【請求項１】
通信ネットワークにおける各電子制御装置の通信データに含まれるペイロードのビットアサインを推定するビットアサイン推定装置であって、
前記通信データを受信する受信部と、
受信した前記通信データの前記ペイロードを予め定めた固定ビット長毎に分割して複数のブロックを生成するブロック生成部と、
前記ブロック毎の統計量に基づいて、前記ブロックの前記ビットアサインを固定値型、状態値型、連続値型の何れかに推定する単位ブロックビットアサイン推定部と、
前記連続値型と推定された前記ブロック、または隣り合う前記ブロック同士を複数連結してなる連結ブロックであって前記連続値型と推定された前記連結ブロック、のいずれかに上位ビット側で隣接する前記ブロックが、前記状態値型、または前記連続値型と推定されている場合に、隣接する前記ブロックを、前記連続値型と推定された前記ブロック、または前記連結ブロックに連結するブロック連結部と、
前記連結ブロック毎の統計量に基づいて、前記連結ブロックが前記連続値型であるか否かを推定する連結ブロックビットアサイン推定部と、
前記連結ブロックが前記連続値型でないと推定された場合に、直近に連結した前記ブロックを対応する前記連結ブロックから分離するブロック分離部
を含むビットアサイン推定装置。
【請求項２】
請求項１に記載のビットアサイン推定装置であって、
前記単位ブロックビットアサイン推定部は、
前記ブロックのユニークな値の種類数、前記ブロックの値が変化した回数の割合、前記ブロックの値の変化量の差分の分散、の少なくとも何れか一つ以上に設定した閾値に基づいて、前記ブロックが前記状態値型であるか前記連続値型であるかを推定し、
前記連結ブロックビットアサイン推定部は、
前記連結ブロックのユニークな値の種類数、前記連結ブロックの値が変化した回数の割合、前記連結ブロックの値の変化量の差分の分散、の少なくとも何れか一つ以上に設定した閾値に基づいて、前記連結ブロックが前記連続値型であるか否かを推定する
ビットアサイン推定装置。
【請求項３】
請求項１または２に記載のビットアサイン推定装置であって、
前記単位ブロックビットアサイン推定部は、
前記連続値型と推定された前記ブロックを、対応する前記分散および前記分散の算出に用いた前記変化量に基づいて、符号無し連続値型、符号付き連続値型、カウンタ値型、チェックサム値型の何れかに推定する
ビットアサイン推定装置。
【請求項４】
請求項１から３の何れかに記載のビットアサイン推定装置であって、
前記単位ブロックビットアサイン推定部は、
受信した前記通信データの送信周期が予め定めたパターンに該当する場合、対応する前記ブロックが前記状態値型と推定されやすくなるように、推定に用いる閾値を変更する
ビットアサイン推定装置。
【請求項５】
通信ネットワークにおける各電子制御装置の通信データに含まれるペイロードのビットアサインを推定するビットアサイン推定方法であって、
前記通信データを受信する受信ステップと、
受信した前記通信データの前記ペイロードを予め定めた固定ビット長毎に分割して複数のブロックを生成するブロック生成ステップと、
前記ブロック毎の統計量に基づいて、前記ブロックの前記ビットアサインを固定値型、状態値型、連続値型の何れかに推定する単位ブロックビットアサイン推定ステップと、
前記連続値型と推定された前記ブロック、または隣り合う前記ブロック同士を複数連結してなる連結ブロックであって前記連続値型と推定された前記連結ブロック、のいずれかに上位ビット側で隣接する前記ブロックが、前記状態値型、または前記連続値型と推定されている場合に、隣接する前記ブロックを、前記連続値型と推定された前記ブロック、または前記連結ブロックに連結するブロック連結ステップと、
前記連結ブロック毎の統計量に基づいて、前記連結ブロックが前記連続値型であるか否かを推定する連結ブロックビットアサイン推定ステップと、
前記連結ブロックが前記連続値型でないと推定された場合に、直近に連結した前記ブロックを対応する前記連結ブロックから分離するブロック分離ステップ
を含むビットアサイン推定方法。
【請求項６】
請求項５に記載のビットアサイン推定方法であって、
前記単位ブロックビットアサイン推定ステップは、
前記ブロックのユニークな値の種類数、前記ブロックの値が変化した回数の割合、前記ブロックの値の変化量の差分の分散、の少なくとも何れか一つ以上に設定した閾値に基づいて、前記ブロックが前記状態値型であるか前記連続値型であるかを推定し、
前記連結ブロックビットアサイン推定ステップは、
前記連結ブロックのユニークな値の種類数、前記連結ブロックの値が変化した回数の割合、前記連結ブロックの値の変化量の差分の分散、の少なくとも何れか一つ以上に設定した閾値に基づいて、前記連結ブロックが前記連続値型であるか否かを推定する
ビットアサイン推定方法。
【請求項７】
請求項５または６に記載のビットアサイン推定方法であって、
前記単位ブロックビットアサイン推定ステップは、
前記連続値型と推定された前記ブロックを、対応する前記分散および前記分散の算出に用いた前記変化量に基づいて、符号無し連続値型、符号付き連続値型、カウンタ値型、チェックサム値型の何れかに推定する
ビットアサイン推定方法。
【請求項８】
コンピュータを請求項１から４の何れかに記載のビットアサイン推定装置として機能させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、例えば車両、工作機械、建設機械、農業機械等の機械類に搭載されたネットワーク、そのネットワークに接続された通信装置、および、それらで構成される通信システムにおいて、通信データに含まれるペイロードのビットアサイン（型）を推定するビットアサイン推定装置、ビットアサイン推定方法、プログラムに関する。
【背景技術】
【０００２】
車両（自動車、特殊車両、自動二輪車、自転車等）、工作機械、建設機械、農業機械等の機械類には複数の電子制御装置（ＥＣＵ：Electronic Control Unit）が搭載されているものがあり、それらＥＣＵ間の通信ネットワークに用いられる代表的なものに、コントローラエリアネットワーク（ＣＡＮ：Controller Area Network）がある。ＣＡＮのネットワーク構成は各ＥＣＵの通信線が共有される、いわゆるバス型構成をとる。ＥＣＵのバスにおける通信手順には、ＣＳＭＡ／ＣＲ(Carrier Sense Multiple Access/Collision Resolution)、即ち、通信衝突する場合には優先順位の高い通信は衝突影響をうけず、優先順位の低い通信は再送する手順が用いられる。ＣＡＮ上の各ＥＣＵの通信にはＩＤが含まれており、ＩＤは通信調停の優先順位、ペイロードの内容や送信ノード等の識別に用いられる。ペイロードの長さはＩＤ毎に１バイトから８バイトまで１バイト刻みで規定されており、ペイロードの内容は設計者が自由に指定できる。【０００３】
これらの車両機器通信ネットワークに対するサイバー攻撃の危険性が示唆されている。ネットワークへの不正なＥＣＵの接続や既存ＥＣＵの不正な動作書き換え等の手段により、攻撃対象機能と関連するＩＤの攻撃送信を挿入し、その対象機能の不正な動作を誘発可能であることが知られている。【０００４】
これらの攻撃通信を検知する方法として、ペイロードを監視することによる異常検知方法が提案されている。この方法において検知精度を向上するためには、ペイロードの内容を分析し正常状態を把握することが重要である。ＣＡＮのペイロードの内容を把握する方法として、例えば非特許文献１がある。正常な通信を基に、ペイロードのビットアサイン（型の種類。例えば、固定値、カウンタやチェックサムなどの変数）を推定する方法である。ＣＡＮの場合、複数の型が同一ペイロード内に混在している場合がある。そのため、ペイロードが何ビットの何個の型から構成されるかという分割パターンの推定と、分割された各部（フィールドと呼称する）の型の種類の推定を行う。従来技術はあり得る全ての分割パターンのフィールドに対して複数の統計量を算出し、各統計量に対して型の判別基準に合致するかどうかで分割パターンの候補を選別する。ある分割パターンがある型に推定できたら、それと矛盾する分割パターンを候補から除外し、残った分割パターンに対して別の型との合致を確認し、これを全型に対して繰り返す。最終的に残った１通りの分割パターンならびに分割された各フィールドの型の種類を推定結果とする。
【先行技術文献】
【非特許文献】
【０００５】
【非特許文献１】岸川剛、前田学、鶴見淳一、芳賀智之、高橋良太、佐々木崇光、安齋潤、松島秀樹、「車載ネットワーク異常検知システムの自動構築を実現する汎用ＣＡＮメッセージフィールド抽出手法」、SCIS2017−暗号と情報セキュリティシンポジウム、2017
【発明の概要】
【発明が解決しようとする課題】
【０００６】
まず、従来技術はあり得る全ての分割パターンに対して統計量を算出する必要がある。ＣＡＮの場合、例えばペイロードが８バイト（６４ビット）のＩＤでは【０００７】
【数１】
2019107149.tif 000003
【０００８】
通りの分割パターンが存在する。分割パターン例として、１ビット長のフィールドが６４個連なっているパターンや、６４ビット長のフィールド１つからなるパターン等が挙げられる。従来技術では、それら全分割パターンに対して取り得る値の種類数や値が変化した時の変化量の分散、値の変化割合等の統計量を算出するが、多くの分割パターンはそのフィールドがオーバーラップしているため、同一の統計値を何度も算出することになり手間がかかる。例えばペイロードが８ビットのあるＩＤについて、正解となる推定結果が上位４ビットは固定値、下位４ビットは変数であったとする。このとき従来技術では全分割パターンの取り得る値の数や値の変化量の分散、変化した割合等を算出するが、中でも下位４、５、６、７、８ビットをそれぞれ１つのフィールドとみなした場合の５通りの統計量はいずれも同一の値である。【０００９】
つぎに、各フィールドを値の変化の有無という特徴により分類すると定数（固定値型）と変数型の２種類に大別できる。変数型はさらにその変化の特徴で細分化でき、従来技術は、４種類の変数型を定義しているが、各変数型をその中の状態値型と誤って推定する場合があるという課題がある。【００１０】
従来技術の変数型は、センサから取得した物理量など連続的に値が変化する連続値型、通信のたびに値がインクリメントされ連続的に値が変化するカウンタ型、他のフィールドから所定のアルゴリズムに従い導出され誤り検出等に用いられるチェックサム値型、シフトポジションなどの車両状態やフラグなどを表す状態値型の４種類である。従来技術では、各フィールドを固定値型かどうか、カウンタ型かどうか、連続値型かどうか、あるいはチェックサム値型かどうか、分割パターンの統計量を基に条件を満たすかどうか、順に推定し、推定できなかった残りのフィールドを全て状態値型とみなす。つまり、従来技術はフィールドが状態値型かどうかを直接推定するのではなくその他の型と推定できなかった残りのフィールドを消去法的に状態値型と推定するのである。従って従来技術は、連続値型とカウンタ型、チェックサム値型という変数としての特徴が異なる型を状態値型と誤って推定する場合がある。ペイロードの内容を基に異常検知を行うためには各フィールドの特徴を精度良く推定する必要があり、フィールドの推定手順および推定基準をより適切に工夫する必要がある。【００１１】
そこで本発明では、従来技術よりも少ない分割パターンで、精度よくペイロードのビットアサインを推定することができるビットアサイン推定装置を提供することを目的とする。
【課題を解決するための手段】
【００１２】
本発明のビットアサイン推定装置は、通信ネットワークにおける各電子制御装置の通信データに含まれるペイロードのビットアサインを推定する。本発明のビットアサイン推定装置は、受信部と、ブロック生成部と、単位ブロックビットアサイン推定部と、ブロック連結部と、連結ブロックビットアサイン推定部と、ブロック分離部を含む。【００１３】
受信部は、通信データを受信する。ブロック生成部は、受信した通信データのペイロードを予め定めた固定ビット長毎に分割して複数のブロックを生成する。単位ブロックビットアサイン推定部は、ブロック毎の統計量に基づいて、ブロックのビットアサインを固定値型、状態値型、連続値型の何れかに推定する。ブロック連結部は、連続値型と推定されたブロック、または隣り合うブロック同士を複数連結してなる連結ブロックであって連続値型と推定された連結ブロック、のいずれかに上位ビット側で隣接するブロックが、状態値型、または連続値型と推定されている場合に、隣接するブロックを、連続値型と推定されたブロック、または連結ブロックに連結する。連結ブロックビットアサイン推定部は、連結ブロック毎の統計量に基づいて、連結ブロックが連続値型であるか否かを推定する。ブロック分離部は、連結ブロックが連続値型でないと推定された場合に、直近に連結したブロックを対応する連結ブロックから分離する。
【発明の効果】
【００１４】
本発明のビットアサイン推定装置によれば、従来技術よりも少ない分割パターンで、精度よくペイロードのビットアサインを推定することができる。
【図面の簡単な説明】
【００１５】
【図１】実施例１のビットアサイン推定装置の構成を示すブロック図。
【図２】実施例１のビットアサイン推定装置の動作を示すフローチャート。
【図３】実施例１のビットアサイン推定方法のステップＳ１３、Ｓ１４を説明する図。
【図４】実施例１のビットアサイン推定方法のステップＳ１５、Ｓ１６、Ｓ１７を説明する図。
【図５】実施例２のビットアサイン推定装置の構成を示すブロック図。
【図６】実施例２のビットアサイン推定装置の動作を示すフローチャート。
【発明を実施するための形態】
【００１６】
以下、本発明の実施の形態について、詳細に説明する。なお、同じ機能を有する構成部には同じ番号を付し、重複説明を省略する。
【実施例１】
【００１７】
以下、図１を参照して実施例１のビットアサイン推定装置の構成を説明する。同図に示すように、本実施例のビットアサイン推定装置１は、受信部１１と、一時保持部１２と、ブロック生成部１３と、単位ブロックビットアサイン推定部１４と、ブロック連結部１５と、連結ブロックビットアサイン推定部１６と、ブロック分離部１７と、推定用情報記憶部１８と、推定結果記憶部１９を含む。以下、図２を参照して各構成要件の動作を説明する。【００１８】
＜受信部１１＞
受信部１１は、車両機器通信ネットワークにおける各電子制御装置の通信データ、または通信の加工等により生成された通信データを受信する（Ｓ１１）。【００１９】
＜一時保持部１２＞
一時保持部１２は、ＩＤ毎に受信順序を保持したまま、受信した全てのペイロードを保持する（Ｓ１２）。【００２０】
＜ブロック生成部１３＞
ブロック生成部１３は、受信した通信データのペイロードを予め定めた固定ビット長毎に分割して複数のブロックを生成する（Ｓ１３、図３参照）。ＣＡＮの場合、最小ビット長である８ビットの約数である１、２、４、８ビットのいずれかをブロック長として定める。例えばブロック長を８ビットと定めた場合、あるＩＤのペイロードのビット長が６４ビットなら、ブロック生成部１３は、ペイロードを８個の８ビットブロックに分割する。生成したブロックについては、後述の処理によって統計量が算出される。ステップＳ１３において生成したブロックは、互いにオーバーラップしていないため、統計量を算出する回数を削減できる。【００２１】
＜単位ブロックビットアサイン推定部１４＞
単位ブロックビットアサイン推定部１４は、ブロック毎に統計量を算出し、ブロック毎の統計量に基づいて、ブロックのビットアサインを固定値型、状態値型、連続値型の何れかに推定する（Ｓ１４、図３参照）。【００２２】
≪固定値型の推定方法≫
まず単位ブロックビットアサイン推定部１４は、各ブロックが固定値型かどうか推定する。単位ブロックビットアサイン推定部１４は、正常な通信の傍受あるいは傍受により事前に得た個々のＩＤのデータ列を基に、各ブロックのユニークな値の種類数uniqiを統計量として算出する。ｉは上位ｉ番目のブロックを意味する。例えば、uniq1だけが値１だったとする。このとき、ペイロードの最上位１ブロックは１種類の値しかとらない、つまり固定値型であると推定できる。【００２３】
≪状態値型と連続値型の推定方法≫
次に単位ブロックビットアサイン推定部１４は、残ったブロックが状態値型と連続値型のいずれかであるかを推定する。例えば、単位ブロックビットアサイン推定部１４は、総メッセージ数に対する各ブロックの値が変化した回数の割合changing_ratei、変化した時の変化量の差分の分散variの２つの統計量を算出する。一般に、連続値型は状態値型よりもuniqとchanging_rateが大きく、varが小さい傾向にある。単位ブロックビットアサイン推定部１４は、この傾向に基づいてuniq、changing_rate、varの少なくとも何れか一つ以上に設定された閾値を参照し、各ブロックが状態値型か連続値型かを推定する。各閾値の設定方法、および各統計量を判定の根拠とする重み付けは任意の方法でよい。例えば、各ブロックのuniq、changing_rate、varの値を特徴量としたクラスタリングを実施して、各ブロックを状態値型か連続値型の２通りに分割する閾値を定める。クラスタリングには混合正規分布のパラメータ推定法やK-means法、ノンパラメトリックベイズモデルに基づく推定法など、適切な方法を用いればよい。その他に、対象となるＩＤに関する事前知識が存在する場合は、その事前知識を基に閾値を設定してもよい。上述したように従来技術は「推定できなかったその他の値」を消去法的に状態値型に当てはめる手順を採用していたが、本方法はこのような手順によらず、閾値等を用いて状態値型の特徴を有するブロックを状態値型と直接推定する手順を採用している。本方法によれば、uniqの値に閾値を設定することで状態数の種類数によって状態値型をさらに分割して推定することができる。【００２４】
≪連続値型の詳細な推定方法≫
次に単位ブロックビットアサイン推定部１４は、連続値型をその値の変化の特徴によって、符号無し連続値型、符号付き連続値型、カウンタ値型、チェックサム値型等に細分化する。【００２５】
符号付き連続値とは、ブロックの最上位ビットが値の正負を意味する符号になっている変数である。一方、符号無し連続値では、ブロックの最上位ビットが符号でなく、値を意味する変数になっている。カウンタ値は値が単調に増加（または単調に減少）し、かつ何らかの契機においては値が変化せず、上限値（または下限値）に到達すると初期値に戻る変数である。チェックサム値は他のフィールドから所定のアルゴリズムに従い導出され、誤り検出等に用いられる変数である。状態値型と連続値型を閾値等を基に分類した手順と同様に、これらの連続値型に属する型も閾値等を適切に設定すれば分類できる。連続値型を細分化する場合は、varだけでなくvarの算出に用いたメッセージ間の変化量を分類の判断に用いる。【００２６】
例えば、カウンタ値型は限界値から初期値に戻るとき以外は定数の増加（または減少）を繰り返すため、varが他の連続値型よりも小さい傾向にある。そのためvarが非常に小さく、またvarを基にしたある閾値を超えて値が大きく変化したとき、その変化量がブロックの最大値にほぼ等しく、このような大きな変化が定期的に発生する場合はカウンタ値と推定してよい。【００２７】
次に、符号無し連続値はvarが符号付き連続値、チェックサム値よりも小さく、またカウンタ値のように値が最大値から最小値に１メッセージで変化する場合は少なく、またカウンタ値とは異なり値の増加及び減少の両方が発生する傾向にある。【００２８】
一方、符号付き連続値は符号反転する際に値が大きく変化し、その変化量がブロックの最大値にほぼ等しくなり、またカウンタ値と符号無し連続値よりもvarが大きく、値の増加及び減少の両方が発生する傾向にある。ブロック長がbビットの場合、単位ブロックビットアサイン推定部１４は、注目しているブロックが符号付き連続値であるか否かを推定するために、以下の統計量を算出する。単位ブロックビットアサイン推定部１４は、ブロックに出現した全ての値に対して2(b-1)を加算して、2bで除算した余りを算出する。単位ブロックビットアサイン推定部１４は、この余りのデータ列に対してvarを算出する。これにより符号付き連続値の正負の基準を値ゼロから値2(b-1)付近に変更することができ、符号反転による値の急激な変化が消失する。単位ブロックビットアサイン推定部１４は、上記の処理後、余りのデータ列の値が符号無し連続値のような振る舞い（var）に変化するかどうかを確認する。単位ブロックビットアサイン推定部１４は、余りのデータ列のvarが符号無し連続値とみなせる場合は、注目しているブロックを符号付き連続値と推定する。【００２９】
最後に、単位ブロックビットアサイン推定部１４は、注目しているブロックの値が符号付き連続値同様varが大きく、前述の余りのデータ列を算出するとそのvarもまた符号無し連続値とみなせない場合、注目しているブロックをチェックサム値と推定する。また、チェックサム値はその性質からペイロードの最後（最下位）のブロックに置かれる傾向があるため、単位ブロックビットアサイン推定部１４は、この傾向等を利用して閾値を適切に設定することにより、連続値型に属する各型をその値変化の特徴に従って分類してもよい。【００３０】
単位ブロックビットアサイン推定部１４は、各ブロックの推定結果に対して統計情報を算出して推定結果と共に、所定の記憶領域に記憶してもよい。統計情報とは、例えば各ブロックのuniq、changing_rate、varの値、さらにブロック毎の値の分布の平均値や中央値、最頻値、値の分散、歪度、尖度等である。【００３１】
＜ブロック連結部１５＞
図４（Ａ）に示すように、ブロック連結部１５は、連続値型と推定されたブロックに上位ビット側で隣接するブロックが、固定値型以外（すなわち、状態値型か連続値型）と推定されている場合に、当該隣接するブロックを連続値型と推定されたブロックと連結して連結ブロック（隣り合うブロック同士を複数連結したブロック）を生成する（Ｓ１５）。【００３２】
また図４（Ｂ）に示すように、ブロック連結部１５は、連続値型と推定された連結ブロックに上位ビット側で隣接するブロックが、固定値型以外（すなわち、状態値型、または連続値型）と推定されている場合に、隣接するブロックを、連続値型と推定された連結ブロックに連結する（Ｓ１５）。【００３３】
一方、ブロック連結部１５は、連続値型と推定されたブロック、または連続値型と推定された連結ブロックに上位ビット側で隣接するブロックが、固定値型と推定されている場合に、当該隣接するブロックは、連続値型と推定されたブロックまたは連結ブロックとは独立であると推定し、連結を行わずに、各ブロックについて推定した結果を維持する。【００３４】
＜連結ブロックビットアサイン推定部１６＞
連結ブロックビットアサイン推定部１６は、連結ブロック毎の統計量に基づいて、連結ブロックが連続値型であるか否かを推定する（Ｓ１６）。例えば、連結ブロックビットアサイン推定部１６は、図４（Ａ）に示すように、連結した２つのブロックを連結ブロックとみなし、当該連結ブロックに対して統計量を算出して、その型を推定する。この場合、連結ブロックビットアサイン推定部１６は、２ブロック長の連結ブロックのuniq、changing_rate、varの少なくとも何れか一つ以上を算出し、uniq、changing_rate、varの少なくとも何れか一つ以上に設定した閾値に基づいて、連結ブロック全体が連続値型とみなせる場合には、２ブロック長からなる連結ブロックを１つの連続値型（に属する型）と推定する。【００３５】
また、例えば上位ブロックが状態値型と推定され、下位ブロックが符号無し連続値型と推定される場合において、当該二つのブロックを連結して２ブロック長の連結ブロックが生成されている場合、連結ブロックビットアサイン推定部１６は、当該連結ブロック全体が連続値型とみなせる場合には、この２ブロック長の連結ブロック全体を、符号無し連続値型と推定する。【００３６】
また、例えば連結ブロックビットアサイン推定部１６は、２ブロック長の連結ブロックのchanging_rateが１ブロック長の符号付き連続値型のブロックと等しく、かつ連結ブロックのvarが１ブロック長の符号付き連続値型のブロックより大きい場合は、２ブロック長の連結ブロック全体を符号付き連続値型か、または独立した２つの１ブロック長のブロックのいずれかと推定する。ブロック長がbビットの場合、連結ブロックビットアサイン推定部１６は、２ブロック長とみなした場合の全値に対して、2(b-1)を加算して、2bで除算した余りを算出する。連結ブロックビットアサイン推定部１６は、この余りのデータ列に対してvarを算出する。余りのデータ列のvarの値がもとの２ブロックのvarの値より小さい場合、連結ブロックビットアサイン推定部１６は、２ブロック長の連結ブロックを符号付き連続値型と推定し、それ以外の場合は独立した２つの１ブロック長のブロックと推定する。
＜ブロック分離部１７＞
図４（Ｃ）に示すように、ブロック分離部１７は、連結ブロックが連続値型でないと推定された場合に、直近に連結したブロックを対応する連結ブロックから分離し（Ｓ１７）、下位ビット側のブロックまたは連結ブロックの型を連続値型として推定を確定させる。【００３７】
＜推定用情報記憶部１８＞
推定用情報記憶部１８には、各ブロックの型を推定する際に用いる閾値やモデルが記憶されている。これらの閾値やモデルは、推定途中でビットアサイン推定装置１が算出・更新してもよいし、推定前にあらかじめ推定用情報記憶部１８に記憶しておいてもよい。【００３８】
＜再帰的な型推定＞
ビットアサイン推定装置１は、最下位ビットのブロックから上位ビットのブロックに向かう方向に、ステップＳ１５〜Ｓ１７を順次実行していく。ビットアサイン推定装置１は、ステップＳ１５〜Ｓ１７を繰り返し実行することにより、再帰的な型推定を実行する。例えばステップＳ１６において、２ブロック長の連結ブロック全体が連続値型（に属する型）と推定され、さらに左隣に固定値型以外と推定されたブロックが存在する場合には、ステップＳ１５において連結が実行され、３ブロック長の連結ブロックが生成される。その後、再びステップＳ１６において、３ブロック長の連結ブロック全体が連続値型と推定され、さらに左隣に固定値型以外と推定されたブロックが存在する場合には、ステップＳ１５において連結が実行され、４ブロック長の連結ブロックが生成される。左隣のブロックが固定値型であった場合には、このブロックより上位のブロックから再び再帰的な型推定が開始される。ビットアサイン推定装置１は、左隣のブロックが存在しない場合に、再帰的な型推定を停止する。最終的にペイロードは、固定値型、状態値型、連続値型のいずれかの組み合わせによる、ある１通りに定まる。ビットアサイン推定装置１は、最終的な推定結果を推定結果記憶部１９に記憶する（Ｓ１９）。【００３９】
上記ステップＳ１５〜Ｓ１７において、統計量を計算する回数が最も多くなるのは、例えば、最初の１ブロック長毎の推定（Ｓ１４）で全てのブロックを連続値型と推定した場合であり、全ての隣りあうブロックを連結して推定を行うため、例えばペイロードが８バイトでブロックが８ビット長ならば８＋７＝１５回であり、ペイロードが８バイトでブロックが１ビット長ならば６４＋６３＝１２７回である。【００４０】
上記ステップＳ１５〜Ｓ１７において、統計量を計算する回数が最も少なくなるのは、最初の１ブロック長毎の推定（Ｓ１４）で全てのブロックを固定値型、あるいは状態値型と推定した場合であり、例えばペイロードが８バイトでブロックが８ビット長ならば８回であり、ペイロードが８バイトでブロックが１ビット長ならば６４回である。あるＩＤのビット長をａとし、ブロック長をｂとする。従来技術は【００４１】
【数２】
2019107149.tif 000004
【００４２】
回の統計量算出を行う。一方、本実施例のステップＳ１５〜Ｓ１７において、(x|a/b≦x≦a/b+a/b-1)回の統計量算出を行う。xは常にa×(a+1)/2以下である。つまり、どのブロック長を選択しても統計量の算出回数は従来技術の算出回数以下となる。【００４３】
上述のように、隣りあうブロックを連結して再推定する手順により、ブロックの型を誤って推定する可能性を小さくすることができる。例えば、本来２ブロック長の連続値型であるペイロードの一部分を１ブロックずつに分割すると、上位１ブロックは下位１ブロックよりもchanging_rateとvarの値が小さくなる。これは上位ブロックの値の変化が下位ブロックの値の変化よりも緩慢だからである。このように、２ブロック長の連続値型における上位１ブロックのchanging_rateとvarの値は小さくなる傾向があるため、ステップＳ１４において、この上位１ブロックを状態値型と誤って推定してしまう場合がある。このような場合であっても、下位ブロックが連続値型と推定できる場合は、ステップＳ１５において、連結が実行され、ステップＳ１６において連結ブロック全体について型の再推定が実行されるため、上記の誤った推定を訂正することができる。
【実施例２】
【００４４】
ＣＡＮはメッセージの送信タイミングを規定しておらず、各機器は自身に設計されたタイミングで送信できる。このとき送信タイミングの違いによって送信周期を４通りに分類できる。それぞれ（１）一定周期で送信されるＩＤ、（２）通常は一定周期で送信されるが、ある契機で、そのときのみ、一定の周期よりも短間隔（または長間隔）で送信され、その後は元の一定周期で送信されるＩＤ、（３）通常は一定周期で送信されるが、ある契機で、そのときのみ、一定の周期よりも短間隔で送信され、一定周期の送信間隔は変化しないＩＤ、（４）一定周期では送信されず、ある契機で、そのときのみ、散発的に送信されるＩＤ、である。実施例２のビットアサイン推定装置は、上述のような送信周期の特徴の違いを考慮して、ペイロードの型を推定する各閾値の設定方法を変更した。【００４５】
図５に示すように、本実施例のビットアサイン推定装置２は、受信部１１と、一時保持部１２と、ブロック生成部１３と、単位ブロックビットアサイン推定部２４と、ブロック連結部１５と、連結ブロックビットアサイン推定部１６と、ブロック分離部１７と、推定用情報記憶部１８と、推定結果記憶部１９を含み、単位ブロックビットアサイン推定部２４以外の構成は実施例１と同じである。【００４６】
図６に示すように、単位ブロックビットアサイン推定部２４は、受信した通信データの送信周期が予め定めたパターンに該当する場合、対応するブロックが状態値型と推定されやすくなるように、推定に用いる閾値を変更して、ブロックのビットアサインを推定する（Ｓ２４）。【００４７】
例えば、送信周期（２）、（３）、（４）のパターンのＩＤの場合、機器内外の契機により一定周期から逸脱したタイミングでメッセージが送信されるため、当該契機を示す何らかの状態値型をペイロードに含んでいる可能性があると推測できる。そこで単位ブロックビットアサイン推定部２４は、推定対象のＩＤの送信周期が任意の方法で送信周期（２）、（３）、（４）のいずれかであると推定できている、あるいは確定できている場合は、状態値型か連続値型か推定する手順において、対応するブロックが状態値型と推定されやすくなるように、推定に用いる閾値を適切な値に変更する。【００４８】
＜推定結果とメーカー仕様の一致、不一致について＞
上述のビットアサイン推定装置は異常検知技術の検知精度向上のために、ペイロードの内容を分析し正常状態を推定することを利用目的としている。【００４９】
すなわち、異常検知技術の検知精度向上のためには、ある分割長のペイロードの振る舞いを精度良く推定できる事が重要なのであり、その分割長がメーカー仕様と一致しているかどうかは精度向上に必ずしも寄与しない。従って、ビットアサイン推定装置の推定結果によるペイロードの分割の切れ目とメーカーが規定したペイロードの仕様とが一致することは必須の要件ではない。【００５０】
例えば、メーカーがある４ビットの状態値型のフィールド２つから成る８ビットのペイロードを規定していたとして、実施例に係るビットアサイン推定装置がこれを８ビットの状態値型フィールド１つから成るペイロードと推定したとする。このとき実施例に係るビットアサイン推定装置はメーカーの仕様通りの推定結果を得ることはできなかったものの、８ビット全体をまとめて観測しても当該フィールドがなお状態値型としての値の振る舞いをしているのであれば、状態値型８ビットのペイロードとみなして、監視および異常の検知を実行することができる。【００５１】
また、実際に利用されているハードウェアの多くは４ないし８ビットの倍数（８、１６、３２、６４ビット）のデータ列を一度に処理するアーキテクチャである。そのため、ハードウェアの処理効率からフィールドの設計もまた８ビットの倍数であることが多く、上述のビットアサイン推定装置において上述のいずれの定数（１、２、４、８ビット）で分割したとしても、仕様による分割パターンと推定結果が著しく乖離するおそれは小さい。【００５２】
＜効果＞
上述の実施例のビットアサイン推定装置によれば、ペイロードのビットアサインが不明な車両機器通信ネットワークの通信に対して、ブロック単位の分割という従来技術よりも少ない分割パターンの統計量算出によってペイロードの型を推定することができるため、推定に要する計算コストを削減できる。【００５３】
また、上述の実施例のビットアサイン推定装置によれば、隣りあうブロックを連結して型を推定し直すことにより、各ブロックの推定精度を高めて連続値型を状態値型と誤って推定しにくくすることができるため、精度良くビットアサインを推定できる。【００５４】
また、上述の実施例のビットアサイン推定装置によれば、分類する変数型の値変化の特徴を基にした閾値設定を行うことにより、従来技術では分類できなかった連続値型の符号付き連続値と符号無し連続値とを識別できるようになるため、より子細にビットアサインを推定できる。【００５５】
＜補記＞
本発明の装置は、例えば単一のハードウェアエンティティとして、キーボードなどが接続可能な入力部、液晶ディスプレイなどが接続可能な出力部、ハードウェアエンティティの外部に通信可能な通信装置（例えば通信ケーブル）が接続可能な通信部、ＣＰＵ（Central Processing Unit、キャッシュメモリやレジスタなどを備えていてもよい）、メモリであるＲＡＭやＲＯＭ、ハードディスクである外部記憶装置並びにこれらの入力部、出力部、通信部、ＣＰＵ、ＲＡＭ、ＲＯＭ、外部記憶装置の間のデータのやり取りが可能なように接続するバスを有している。また必要に応じて、ハードウェアエンティティに、ＣＤ−ＲＯＭなどの記録媒体を読み書きできる装置（ドライブ）などを設けることとしてもよい。このようなハードウェア資源を備えた物理的実体としては、汎用コンピュータ、組込機器などがある。【００５６】
ハードウェアエンティティの外部記憶装置には、上述の機能を実現するために必要となるプログラムおよびこのプログラムの処理において必要となるデータなどが記憶されている（外部記憶装置に限らず、例えばプログラムを読み出し専用記憶装置であるＲＯＭに記憶させておくこととしてもよい）。また、これらのプログラムの処理によって得られるデータなどは、ＲＡＭや外部記憶装置などに適宜に記憶される。【００５７】
ハードウェアエンティティでは、外部記憶装置（あるいはＲＯＭなど）に記憶された各プログラムとこの各プログラムの処理に必要なデータが必要に応じてメモリに読み込まれて、適宜にＣＰＵで解釈実行・処理される。その結果、ＣＰＵが所定の機能（上記、…部、…手段などと表した各構成要件）を実現する。【００５８】
本発明は上述の実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲で適宜変更が可能である。また、上記実施形態において説明した処理は、記載の順に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されるとしてもよい。【００５９】
既述のように、上記実施形態において説明したハードウェアエンティティ（本発明の装置）における処理機能をコンピュータ、組込機器によって実現する場合、ハードウェアエンティティが有すべき機能の処理内容はプログラムによって記述される。そして、このプログラムをコンピュータ、組込機器で実行することにより、上記ハードウェアエンティティにおける処理機能がコンピュータ、組込機器上で実現される。【００６０】
この処理内容を記述したプログラムは、コンピュータ、組込機器で読み取り可能な記録媒体に記録しておくことができる。コンピュータ、組込機器で読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等どのようなものでもよい。具体的には、例えば、磁気記録装置として、ハードディスク装置、フレキシブルディスク、磁気テープ等を、光ディスクとして、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ（Random Access Memory）、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）等を、光磁気記録媒体として、ＭＯ（Magneto-Optical disc）等を、半導体メモリとしてＥＥＰ−ＲＯＭ（Electronically Erasable and Programmable-Read Only Memory）等を用いることができる。【００６１】
また、このプログラムの流通は、例えば、そのプログラムを記録したＤＶＤ、ＣＤ−ＲＯＭ等の可搬型記録媒体を販売、譲渡、貸与等することによって行う。さらに、このプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータ、組込機器にそのプログラムを転送することにより、このプログラムを流通させる構成としてもよい。【００６２】
このようなプログラムを実行するコンピュータ、組込機器は、例えば、まず、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、一旦、自己の記憶装置に格納する。そして、処理の実行時、このコンピュータ、組込機器は、自己の記録媒体に格納されたプログラムを読み取り、読み取ったプログラムに従った処理を実行する。また、このプログラムの別の実行形態として、コンピュータ、組込機器が可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することとしてもよく、さらに、このコンピュータ、組込機器にサーバコンピュータからプログラムが転送されるたびに、逐次、受け取ったプログラムに従った処理を実行することとしてもよい。また、サーバコンピュータから、このコンピュータ、組込機器へのプログラムの転送は行わず、その実行指示と結果取得のみによって処理機能を実現する、いわゆるＡＳＰ（Application Service Provider）型のサービスによって、上述の処理を実行する構成としてもよい。なお、本形態におけるプログラムには、電子計算機による処理の用に供する情報であってプログラムに準ずるもの（コンピュータ、組込機器に対する直接の指令ではないがコンピュータ、組込機器の処理を規定する性質を有するデータ等）を含むものとする。【００６３】
また、この形態では、コンピュータ、組込機器上で所定のプログラムを実行させることにより、ハードウェアエンティティを構成することとしたが、これらの処理内容の少なくとも一部をハードウェア的に実現することとしてもよい。
【図１】
2019107149.tif 000005
【図２】
2019107149.tif 000006
【図３】
2019107149.tif 000007
【図４】
2019107149.tif 000008
【図５】
2019107149.tif 000009
【図６】
2019107149.tif 000010
【手続補正書】
【提出日】令和2年4月30日(2020.4.30)
【手続補正１】
【補正対象書類名】図面
【補正対象項目名】図２
【補正方法】変更
【補正の内容】
【図２】
2019107149.tif 000011
【国際調査報告】
2019107149.tif 000012
2019107149.tif 000013