【実施例1】
【0017】
以下、
図1を参照して実施例1のビットアサイン推定装置の構成を説明する。同図に示すように、本実施例のビットアサイン推定装置1は、受信部11と、一時保持部12と、ブロック生成部13と、単位ブロックビットアサイン推定部14と、ブロック連結部15と、連結ブロックビットアサイン推定部16と、ブロック分離部17と、推定用情報記憶部18と、推定結果記憶部19を含む。以下、
図2を参照して各構成要件の動作を説明する。
【0018】
<受信部11>
受信部11は、車両機器通信ネットワークにおける各電子制御装置の通信データ、または通信の加工等により生成された通信データを受信する(S11)。
【0019】
<一時保持部12>
一時保持部12は、ID毎に受信順序を保持したまま、受信した全てのペイロードを保持する(S12)。
【0020】
<ブロック生成部13>
ブロック生成部13は、受信した通信データのペイロードを予め定めた固定ビット長毎に分割して複数のブロックを生成する(S13、
図3参照)。CANの場合、最小ビット長である8ビットの約数である1、2、4、8ビットのいずれかをブロック長として定める。例えばブロック長を8ビットと定めた場合、あるIDのペイロードのビット長が64ビットなら、ブロック生成部13は、ペイロードを8個の8ビットブロックに分割する。生成したブロックについては、後述の処理によって統計量が算出される。ステップS13において生成したブロックは、互いにオーバーラップしていないため、統計量を算出する回数を削減できる。
【0021】
<単位ブロックビットアサイン推定部14>
単位ブロックビットアサイン推定部14は、ブロック毎に統計量を算出し、ブロック毎の統計量に基づいて、ブロックのビットアサインを固定値型、状態値型、連続値型の何れかに推定する(S14、
図3参照)。
【0022】
≪固定値型の推定方法≫
まず単位ブロックビットアサイン推定部14は、各ブロックが固定値型かどうか推定する。単位ブロックビットアサイン推定部14は、正常な通信の傍受あるいは傍受により事前に得た個々のIDのデータ列を基に、各ブロックのユニークな値の種類数uniq
iを統計量として算出する。iは上位i番目のブロックを意味する。例えば、uniq
1だけが値1だったとする。このとき、ペイロードの最上位1ブロックは1種類の値しかとらない、つまり固定値型であると推定できる。
【0023】
≪状態値型と連続値型の推定方法≫
次に単位ブロックビットアサイン推定部14は、残ったブロックが状態値型と連続値型のいずれかであるかを推定する。例えば、単位ブロックビットアサイン推定部14は、総メッセージ数に対する各ブロックの値が変化した回数の割合changing_rate
i、変化した時の変化量の差分の分散var
iの2つの統計量を算出する。一般に、連続値型は状態値型よりもuniqとchanging_rateが大きく、varが小さい傾向にある。単位ブロックビットアサイン推定部14は、この傾向に基づいてuniq、changing_rate、varの少なくとも何れか一つ以上に設定された閾値を参照し、各ブロックが状態値型か連続値型かを推定する。各閾値の設定方法、および各統計量を判定の根拠とする重み付けは任意の方法でよい。例えば、各ブロックのuniq、changing_rate、varの値を特徴量としたクラスタリングを実施して、各ブロックを状態値型か連続値型の2通りに分割する閾値を定める。クラスタリングには混合正規分布のパラメータ推定法やK-means法、ノンパラメトリックベイズモデルに基づく推定法など、適切な方法を用いればよい。その他に、対象となるIDに関する事前知識が存在する場合は、その事前知識を基に閾値を設定してもよい。上述したように従来技術は「推定できなかったその他の値」を消去法的に状態値型に当てはめる手順を採用していたが、本方法はこのような手順によらず、閾値等を用いて状態値型の特徴を有するブロックを状態値型と直接推定する手順を採用している。本方法によれば、uniqの値に閾値を設定することで状態数の種類数によって状態値型をさらに分割して推定することができる。
【0024】
≪連続値型の詳細な推定方法≫
次に単位ブロックビットアサイン推定部14は、連続値型をその値の変化の特徴によって、符号無し連続値型、符号付き連続値型、カウンタ値型、チェックサム値型等に細分化する。
【0025】
符号付き連続値とは、ブロックの最上位ビットが値の正負を意味する符号になっている変数である。一方、符号無し連続値では、ブロックの最上位ビットが符号でなく、値を意味する変数になっている。カウンタ値は値が単調に増加(または単調に減少)し、かつ何らかの契機においては値が変化せず、上限値(または下限値)に到達すると初期値に戻る変数である。チェックサム値は他のフィールドから所定のアルゴリズムに従い導出され、誤り検出等に用いられる変数である。状態値型と連続値型を閾値等を基に分類した手順と同様に、これらの連続値型に属する型も閾値等を適切に設定すれば分類できる。連続値型を細分化する場合は、varだけでなくvarの算出に用いたメッセージ間の変化量を分類の判断に用いる。
【0026】
例えば、カウンタ値型は限界値から初期値に戻るとき以外は定数の増加(または減少)を繰り返すため、varが他の連続値型よりも小さい傾向にある。そのためvarが非常に小さく、またvarを基にしたある閾値を超えて値が大きく変化したとき、その変化量がブロックの最大値にほぼ等しく、このような大きな変化が定期的に発生する場合はカウンタ値と推定してよい。
【0027】
次に、符号無し連続値はvarが符号付き連続値、チェックサム値よりも小さく、またカウンタ値のように値が最大値から最小値に1メッセージで変化する場合は少なく、またカウンタ値とは異なり値の増加及び減少の両方が発生する傾向にある。
【0028】
一方、符号付き連続値は符号反転する際に値が大きく変化し、その変化量がブロックの最大値にほぼ等しくなり、またカウンタ値と符号無し連続値よりもvarが大きく、値の増加及び減少の両方が発生する傾向にある。ブロック長がbビットの場合、単位ブロックビットアサイン推定部14は、注目しているブロックが符号付き連続値であるか否かを推定するために、以下の統計量を算出する。単位ブロックビットアサイン推定部14は、ブロックに出現した全ての値に対して2
(b-1)を加算して、2
bで除算した余りを算出する。単位ブロックビットアサイン推定部14は、この余りのデータ列に対してvarを算出する。これにより符号付き連続値の正負の基準を値ゼロから値2
(b-1)付近に変更することができ、符号反転による値の急激な変化が消失する。単位ブロックビットアサイン推定部14は、上記の処理後、余りのデータ列の値が符号無し連続値のような振る舞い(var)に変化するかどうかを確認する。単位ブロックビットアサイン推定部14は、余りのデータ列のvarが符号無し連続値とみなせる場合は、注目しているブロックを符号付き連続値と推定する。
【0029】
最後に、単位ブロックビットアサイン推定部14は、注目しているブロックの値が符号付き連続値同様varが大きく、前述の余りのデータ列を算出するとそのvarもまた符号無し連続値とみなせない場合、注目しているブロックをチェックサム値と推定する。また、チェックサム値はその性質からペイロードの最後(最下位)のブロックに置かれる傾向があるため、単位ブロックビットアサイン推定部14は、この傾向等を利用して閾値を適切に設定することにより、連続値型に属する各型をその値変化の特徴に従って分類してもよい。
【0030】
単位ブロックビットアサイン推定部14は、各ブロックの推定結果に対して統計情報を算出して推定結果と共に、所定の記憶領域に記憶してもよい。統計情報とは、例えば各ブロックのuniq、changing_rate、varの値、さらにブロック毎の値の分布の平均値や中央値、最頻値、値の分散、歪度、尖度等である。
【0031】
<ブロック連結部15>
図4(A)に示すように、ブロック連結部15は、連続値型と推定されたブロックに上位ビット側で隣接するブロックが、固定値型以外(すなわち、状態値型か連続値型)と推定されている場合に、当該隣接するブロックを連続値型と推定されたブロックと連結して連結ブロック(隣り合うブロック同士を複数連結したブロック)を生成する(S15)。
【0032】
また
図4(B)に示すように、ブロック連結部15は、連続値型と推定された連結ブロックに上位ビット側で隣接するブロックが、固定値型以外(すなわち、状態値型、または連続値型)と推定されている場合に、隣接するブロックを、連続値型と推定された連結ブロックに連結する(S15)。
【0033】
一方、ブロック連結部15は、連続値型と推定されたブロック、または連続値型と推定された連結ブロックに上位ビット側で隣接するブロックが、固定値型と推定されている場合に、当該隣接するブロックは、連続値型と推定されたブロックまたは連結ブロックとは独立であると推定し、連結を行わずに、各ブロックについて推定した結果を維持する。
【0034】
<連結ブロックビットアサイン推定部16>
連結ブロックビットアサイン推定部16は、連結ブロック毎の統計量に基づいて、連結ブロックが連続値型であるか否かを推定する(S16)。例えば、連結ブロックビットアサイン推定部16は、
図4(A)に示すように、連結した2つのブロックを連結ブロックとみなし、当該連結ブロックに対して統計量を算出して、その型を推定する。この場合、連結ブロックビットアサイン推定部16は、2ブロック長の連結ブロックのuniq、changing_rate、varの少なくとも何れか一つ以上を算出し、uniq、changing_rate、varの少なくとも何れか一つ以上に設定した閾値に基づいて、連結ブロック全体が連続値型とみなせる場合には、2ブロック長からなる連結ブロックを1つの連続値型(に属する型)と推定する。
【0035】
また、例えば上位ブロックが状態値型と推定され、下位ブロックが符号無し連続値型と推定される場合において、当該二つのブロックを連結して2ブロック長の連結ブロックが生成されている場合、連結ブロックビットアサイン推定部16は、当該連結ブロック全体が連続値型とみなせる場合には、この2ブロック長の連結ブロック全体を、符号無し連続値型と推定する。
【0036】
また、例えば連結ブロックビットアサイン推定部16は、2ブロック長の連結ブロックのchanging_rateが1ブロック長の符号付き連続値型のブロックと等しく、かつ連結ブロックのvarが1ブロック長の符号付き連続値型のブロックより大きい場合は、2ブロック長の連結ブロック全体を符号付き連続値型か、または独立した2つの1ブロック長のブロックのいずれかと推定する。ブロック長がbビットの場合、連結ブロックビットアサイン推定部16は、2ブロック長とみなした場合の全値に対して、2
(b-1)を加算して、2
bで除算した余りを算出する。連結ブロックビットアサイン推定部16は、この余りのデータ列に対してvarを算出する。余りのデータ列のvarの値がもとの2ブロックのvarの値より小さい場合、連結ブロックビットアサイン推定部16は、2ブロック長の連結ブロックを符号付き連続値型と推定し、それ以外の場合は独立した2つの1ブロック長のブロックと推定する。
<ブロック分離部17>
図4(C)に示すように、ブロック分離部17は、連結ブロックが連続値型でないと推定された場合に、直近に連結したブロックを対応する連結ブロックから分離し(S17)、下位ビット側のブロックまたは連結ブロックの型を連続値型として推定を確定させる。
【0037】
<推定用情報記憶部18>
推定用情報記憶部18には、各ブロックの型を推定する際に用いる閾値やモデルが記憶されている。これらの閾値やモデルは、推定途中でビットアサイン推定装置1が算出・更新してもよいし、推定前にあらかじめ推定用情報記憶部18に記憶しておいてもよい。
【0038】
<再帰的な型推定>
ビットアサイン推定装置1は、最下位ビットのブロックから上位ビットのブロックに向かう方向に、ステップS15〜S17を順次実行していく。ビットアサイン推定装置1は、ステップS15〜S17を繰り返し実行することにより、再帰的な型推定を実行する。例えばステップS16において、2ブロック長の連結ブロック全体が連続値型(に属する型)と推定され、さらに左隣に固定値型以外と推定されたブロックが存在する場合には、ステップS15において連結が実行され、3ブロック長の連結ブロックが生成される。その後、再びステップS16において、3ブロック長の連結ブロック全体が連続値型と推定され、さらに左隣に固定値型以外と推定されたブロックが存在する場合には、ステップS15において連結が実行され、4ブロック長の連結ブロックが生成される。左隣のブロックが固定値型であった場合には、このブロックより上位のブロックから再び再帰的な型推定が開始される。ビットアサイン推定装置1は、左隣のブロックが存在しない場合に、再帰的な型推定を停止する。最終的にペイロードは、固定値型、状態値型、連続値型のいずれかの組み合わせによる、ある1通りに定まる。ビットアサイン推定装置1は、最終的な推定結果を推定結果記憶部19に記憶する(S19)。
【0039】
上記ステップS15〜S17において、統計量を計算する回数が最も多くなるのは、例えば、最初の1ブロック長毎の推定(S14)で全てのブロックを連続値型と推定した場合であり、全ての隣りあうブロックを連結して推定を行うため、例えばペイロードが8バイトでブロックが8ビット長ならば8+7=15回であり、ペイロードが8バイトでブロックが1ビット長ならば64+63=127回である。
【0040】
上記ステップS15〜S17において、統計量を計算する回数が最も少なくなるのは、最初の1ブロック長毎の推定(S14)で全てのブロックを固定値型、あるいは状態値型と推定した場合であり、例えばペイロードが8バイトでブロックが8ビット長ならば8回であり、ペイロードが8バイトでブロックが1ビット長ならば64回である。あるIDのビット長をaとし、ブロック長をbとする。従来技術は
【0041】
【数2】
【0042】
回の統計量算出を行う。一方、本実施例のステップS15〜S17において、(x|a/b≦x≦a/b+a/b-1)回の統計量算出を行う。xは常にa×(a+1)/2以下である。つまり、どのブロック長を選択しても統計量の算出回数は従来技術の算出回数以下となる。
【0043】
上述のように、隣りあうブロックを連結して再推定する手順により、ブロックの型を誤って推定する可能性を小さくすることができる。例えば、本来2ブロック長の連続値型であるペイロードの一部分を1ブロックずつに分割すると、上位1ブロックは下位1ブロックよりもchanging_rateとvarの値が小さくなる。これは上位ブロックの値の変化が下位ブロックの値の変化よりも緩慢だからである。このように、2ブロック長の連続値型における上位1ブロックのchanging_rateとvarの値は小さくなる傾向があるため、ステップS14において、この上位1ブロックを状態値型と誤って推定してしまう場合がある。このような場合であっても、下位ブロックが連続値型と推定できる場合は、ステップS15において、連結が実行され、ステップS16において連結ブロック全体について型の再推定が実行されるため、上記の誤った推定を訂正することができる。
【実施例2】
【0044】
CANはメッセージの送信タイミングを規定しておらず、各機器は自身に設計されたタイミングで送信できる。このとき送信タイミングの違いによって送信周期を4通りに分類できる。それぞれ(1)一定周期で送信されるID、(2)通常は一定周期で送信されるが、ある契機で、そのときのみ、一定の周期よりも短間隔(または長間隔)で送信され、その後は元の一定周期で送信されるID、(3)通常は一定周期で送信されるが、ある契機で、そのときのみ、一定の周期よりも短間隔で送信され、一定周期の送信間隔は変化しないID、(4)一定周期では送信されず、ある契機で、そのときのみ、散発的に送信されるID、である。実施例2のビットアサイン推定装置は、上述のような送信周期の特徴の違いを考慮して、ペイロードの型を推定する各閾値の設定方法を変更した。
【0045】
図5に示すように、本実施例のビットアサイン推定装置2は、受信部11と、一時保持部12と、ブロック生成部13と、単位ブロックビットアサイン推定部24と、ブロック連結部15と、連結ブロックビットアサイン推定部16と、ブロック分離部17と、推定用情報記憶部18と、推定結果記憶部19を含み、単位ブロックビットアサイン推定部24以外の構成は実施例1と同じである。
【0046】
図6に示すように、単位ブロックビットアサイン推定部24は、受信した通信データの送信周期が予め定めたパターンに該当する場合、対応するブロックが状態値型と推定されやすくなるように、推定に用いる閾値を変更して、ブロックのビットアサインを推定する(S24)。
【0047】
例えば、送信周期(2)、(3)、(4)のパターンのIDの場合、機器内外の契機により一定周期から逸脱したタイミングでメッセージが送信されるため、当該契機を示す何らかの状態値型をペイロードに含んでいる可能性があると推測できる。そこで単位ブロックビットアサイン推定部24は、推定対象のIDの送信周期が任意の方法で送信周期(2)、(3)、(4)のいずれかであると推定できている、あるいは確定できている場合は、状態値型か連続値型か推定する手順において、対応するブロックが状態値型と推定されやすくなるように、推定に用いる閾値を適切な値に変更する。
【0048】
<推定結果とメーカー仕様の一致、不一致について>
上述のビットアサイン推定装置は異常検知技術の検知精度向上のために、ペイロードの内容を分析し正常状態を推定することを利用目的としている。
【0049】
すなわち、異常検知技術の検知精度向上のためには、ある分割長のペイロードの振る舞いを精度良く推定できる事が重要なのであり、その分割長がメーカー仕様と一致しているかどうかは精度向上に必ずしも寄与しない。従って、ビットアサイン推定装置の推定結果によるペイロードの分割の切れ目とメーカーが規定したペイロードの仕様とが一致することは必須の要件ではない。
【0050】
例えば、メーカーがある4ビットの状態値型のフィールド2つから成る8ビットのペイロードを規定していたとして、実施例に係るビットアサイン推定装置がこれを8ビットの状態値型フィールド1つから成るペイロードと推定したとする。このとき実施例に係るビットアサイン推定装置はメーカーの仕様通りの推定結果を得ることはできなかったものの、8ビット全体をまとめて観測しても当該フィールドがなお状態値型としての値の振る舞いをしているのであれば、状態値型8ビットのペイロードとみなして、監視および異常の検知を実行することができる。
【0051】
また、実際に利用されているハードウェアの多くは4ないし8ビットの倍数(8、16、32、64ビット)のデータ列を一度に処理するアーキテクチャである。そのため、ハードウェアの処理効率からフィールドの設計もまた8ビットの倍数であることが多く、上述のビットアサイン推定装置において上述のいずれの定数(1、2、4、8ビット)で分割したとしても、仕様による分割パターンと推定結果が著しく乖離するおそれは小さい。
【0052】
<効果>
上述の実施例のビットアサイン推定装置によれば、ペイロードのビットアサインが不明な車両機器通信ネットワークの通信に対して、ブロック単位の分割という従来技術よりも少ない分割パターンの統計量算出によってペイロードの型を推定することができるため、推定に要する計算コストを削減できる。
【0053】
また、上述の実施例のビットアサイン推定装置によれば、隣りあうブロックを連結して型を推定し直すことにより、各ブロックの推定精度を高めて連続値型を状態値型と誤って推定しにくくすることができるため、精度良くビットアサインを推定できる。
【0054】
また、上述の実施例のビットアサイン推定装置によれば、分類する変数型の値変化の特徴を基にした閾値設定を行うことにより、従来技術では分類できなかった連続値型の符号付き連続値と符号無し連続値とを識別できるようになるため、より子細にビットアサインを推定できる。
【0055】
<補記>
本発明の装置は、例えば単一のハードウェアエンティティとして、キーボードなどが接続可能な入力部、液晶ディスプレイなどが接続可能な出力部、ハードウェアエンティティの外部に通信可能な通信装置(例えば通信ケーブル)が接続可能な通信部、CPU(Central Processing Unit、キャッシュメモリやレジスタなどを備えていてもよい)、メモリであるRAMやROM、ハードディスクである外部記憶装置並びにこれらの入力部、出力部、通信部、CPU、RAM、ROM、外部記憶装置の間のデータのやり取りが可能なように接続するバスを有している。また必要に応じて、ハードウェアエンティティに、CD−ROMなどの記録媒体を読み書きできる装置(ドライブ)などを設けることとしてもよい。このようなハードウェア資源を備えた物理的実体としては、汎用コンピュータ、組込機器などがある。
【0056】
ハードウェアエンティティの外部記憶装置には、上述の機能を実現するために必要となるプログラムおよびこのプログラムの処理において必要となるデータなどが記憶されている(外部記憶装置に限らず、例えばプログラムを読み出し専用記憶装置であるROMに記憶させておくこととしてもよい)。また、これらのプログラムの処理によって得られるデータなどは、RAMや外部記憶装置などに適宜に記憶される。
【0057】
ハードウェアエンティティでは、外部記憶装置(あるいはROMなど)に記憶された各プログラムとこの各プログラムの処理に必要なデータが必要に応じてメモリに読み込まれて、適宜にCPUで解釈実行・処理される。その結果、CPUが所定の機能(上記、…部、…手段などと表した各構成要件)を実現する。
【0058】
本発明は上述の実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲で適宜変更が可能である。また、上記実施形態において説明した処理は、記載の順に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されるとしてもよい。
【0059】
既述のように、上記実施形態において説明したハードウェアエンティティ(本発明の装置)における処理機能をコンピュータ、組込機器によって実現する場合、ハードウェアエンティティが有すべき機能の処理内容はプログラムによって記述される。そして、このプログラムをコンピュータ、組込機器で実行することにより、上記ハードウェアエンティティにおける処理機能がコンピュータ、組込機器上で実現される。
【0060】
この処理内容を記述したプログラムは、コンピュータ、組込機器で読み取り可能な記録媒体に記録しておくことができる。コンピュータ、組込機器で読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等どのようなものでもよい。具体的には、例えば、磁気記録装置として、ハードディスク装置、フレキシブルディスク、磁気テープ等を、光ディスクとして、DVD(Digital Versatile Disc)、DVD−RAM(Random Access Memory)、CD−ROM(Compact Disc Read Only Memory)、CD−R(Recordable)/RW(ReWritable)等を、光磁気記録媒体として、MO(Magneto-Optical disc)等を、半導体メモリとしてEEP−ROM(Electronically Erasable and Programmable-Read Only Memory)等を用いることができる。
【0061】
また、このプログラムの流通は、例えば、そのプログラムを記録したDVD、CD−ROM等の可搬型記録媒体を販売、譲渡、貸与等することによって行う。さらに、このプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータ、組込機器にそのプログラムを転送することにより、このプログラムを流通させる構成としてもよい。
【0062】
このようなプログラムを実行するコンピュータ、組込機器は、例えば、まず、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、一旦、自己の記憶装置に格納する。そして、処理の実行時、このコンピュータ、組込機器は、自己の記録媒体に格納されたプログラムを読み取り、読み取ったプログラムに従った処理を実行する。また、このプログラムの別の実行形態として、コンピュータ、組込機器が可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することとしてもよく、さらに、このコンピュータ、組込機器にサーバコンピュータからプログラムが転送されるたびに、逐次、受け取ったプログラムに従った処理を実行することとしてもよい。また、サーバコンピュータから、このコンピュータ、組込機器へのプログラムの転送は行わず、その実行指示と結果取得のみによって処理機能を実現する、いわゆるASP(Application Service Provider)型のサービスによって、上述の処理を実行する構成としてもよい。なお、本形態におけるプログラムには、電子計算機による処理の用に供する情報であってプログラムに準ずるもの(コンピュータ、組込機器に対する直接の指令ではないがコンピュータ、組込機器の処理を規定する性質を有するデータ等)を含むものとする。
【0063】
また、この形態では、コンピュータ、組込機器上で所定のプログラムを実行させることにより、ハードウェアエンティティを構成することとしたが、これらの処理内容の少なくとも一部をハードウェア的に実現することとしてもよい。