(57)【要約】  相関計算部（２１）は、センサフュージョン部（１２ａ）からセンサデータである磁気データ及び加速度データを受信し、相関値を計算する。攻撃判定部（２２）は、相関計算部（２１）から相関値を取得し、センサフュージョン部（１２）から、センサフュージョンの過程で算出された重力ベクタの誤差と地磁気ベクタの誤差を誤差データとして取得する。攻撃判定部（２２）は、相関値と相関値に対応する閾値とを比較し、誤差データと誤差データに対応する閾値とを比較することで、傾きセンサモジュール（１ａ）への攻撃の有無を判定する。
2019207652.tif 000002
【特許請求の範囲】
【請求項１】
種類の異なる複数のセンサによって観測される複数の物理量を組み合わせて出力を計算するアルゴリズムであり、前記複数の物理量のそれぞれの中間値を計算し、それぞれの前記中間値を用いて出力を変化させるアルゴリズムであるセンサフュージョンアルゴリズムの実行中に、それぞれの前記中間値を取得する中間値取得部と、
それぞれの前記中間値と閾値である中間値閾値とを比較することにより、前記複数のセンサのうち少なくとも一つのセンサへの攻撃があるかどうかを判定する判定部と
を備える攻撃検知装置。
【請求項２】
それぞれの前記中間値は、
種類の異なる複数のセンサによって観測される複数の物理量のそれぞれの誤差データである請求項１に記載の攻撃検知装置。
【請求項３】
前記攻撃検知装置は、さらに、
前記複数のセンサのうち２つのセンサのセンサデータを取得し、２つのセンサデータの類似度を計算する類似度計算部を備え、
前記判定部は、
閾値である類似度閾値と前記類似度とを比較することにより、前記複数のセンサのうち少なくとも一つのセンサへの攻撃があるかどうかを判定する請求項１または請求項２に記載の攻撃検知装置。
【請求項４】
前記２つのセンサは
観測可能な物理量が異なる請求項３に記載の攻撃検知装置。
【請求項５】
前記類似度計算部は、
前記類似度として、相関値を計算する請求項３または請求項４に記載の攻撃検知装置。
【請求項６】
前記判定部は、
前記中間値の種類に応じて前記中間値閾値に重み付けを行い、２つのセンサデータの種類に応じて前記類似度閾値に重み付けを行う請求項３に記載の攻撃検知装置。
【請求項７】
コンピュータに、
種類の異なる複数のセンサによって観測される複数の物理量を組み合わせて出力を計算するアルゴリズムであり、前記複数の物理量のそれぞれの中間値を計算し、それぞれの前記中間値を用いて出力を変化させるアルゴリズムであるセンサフュージョンアルゴリズムの実行中に、それぞれの前記中間値を取得する処理と、
それぞれの前記中間値と閾値である中間値閾値とを比較することにより、前記複数のセンサのうち少なくとも一つのセンサへの攻撃があるかどうかを判定する処理と
を実行させる攻撃検知プログラム。
【請求項８】
コンピュータが、
種類の異なる複数のセンサによって観測される複数の物理量を組み合わせて出力を計算するアルゴリズムであり、前記複数の物理量のそれぞれの中間値を計算し、それぞれの前記中間値を用いて出力を変化させるアルゴリズムであるセンサフュージョンアルゴリズムの実行中に、それぞれの前記中間値を取得し、
それぞれの前記中間値と閾値である中間値閾値とを比較することにより、前記複数のセンサのうち少なくとも一つのセンサへの攻撃があるかどうかを判定する攻撃検知方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、攻撃検知装置、攻撃検知プログラム及び攻撃検知方法に関する。
【背景技術】
【０００２】
傾きセンサは、航空機及び重機の姿勢計測または姿勢制御のためによく用いられる。特に、ＡＨＲＳ（Ａｔｔｉｔｕｄｅ  Ｈｅａｄｉｎｇ  Ｒｅｆｅｒｅｎｃｅ  Ｓｙｓｔｅｍ）と呼ばれる傾きセンサは、慣性計測装置と呼ばれる。ＡＨＲＳは、加速度センサ、ジャイロセンサ、磁気センサ（コンパス）、プロセッサにより構成される。プロセッサでは、各種センサデータを信号処理し、傾きデータを出力する。こうした、センサとその信号処理を行うモジュールを、センサモジュールと呼ぶ。【０００３】
ＡＨＲＳを構成する各種センサは、コスト及び小型化の面で有利なＭＥＭＳ（Ｍｉｃｒｏ  Ｅｌｅｃｔｒｏ  Ｍｅｃｈａｎｉｃａｌ  Ｓｙｓｔｅｍ）センサが用いられることが多い。ＭＥＭＳセンサは、機械的な部品と電子回路とを一つに集積した構成である。【０００４】
ＡＨＲＳでは、加速度センサから得た加速度データ、ジャイロセンサから得た角速度データ、磁気センサから得た磁気データをもとに、信号処理により傾きを計算する。このように、異なるセンサデータを融合して異なる物理情報を計測するための信号処理を、センサフュージョンと呼ぶ。
非特許文献１、２では、カルマンフィルタを用いたＡＨＲＳのためのセンサフュージョンアルゴリズムを開示している。非特許文献１、２に基づくセンサフュージョンアルゴリズムでは、２種類のセンサから同じ物理量を計測し、その誤差をカルマンフィルタにより補正することで、正しい計測値を導く。具体的には、加速度センサとジャイロセンサからは重力方向が分かる。一方、磁気センサとジャイロセンサからは、地磁気が分かる。したがって、両者を組み合わせることで、世界座標での傾きが算出される。【０００５】
センサを用いた計測及び制御においては、センサデータの信頼性がシステムの信頼性に直結する。そのため、センサへの攻撃は脅威となる。マルウェアを用いて、センサデータをソフトウェア的に騙す攻撃は、従来の情報セキュリティ技術で対処可能である。【０００６】
一方で、物理的な信号をセンサに照射し、物理的にセンサの状態を変動させるハードウェア的に騙す攻撃は、従来の情報セキュリティ技術だけでは対処できない。非特許文献３、４では、超音波によりＭＥＭＳジャイロセンサとＭＥＭＳ加速度センサとをそれぞれ騙す攻撃方法を開示している。超音波攻撃では、ＭＥＭＳセンサがばねとおもりで構成されることに着目し、センサを強制的に共振させることで異常なセンサ出力を得る。【０００７】
非特許文献３では、ハードウェアでの対策として、物理的にセンサを遮蔽すること及びセンサの共振周波数を変更することを対策方式として開示している。
非特許文献４では、ハードウェアでの対策として、センサを構成する部品を超音波攻撃の影響を受けにくい部品に変更することを対策方式として開示している。さらに、非特許文献４は、ソフトウェアでの対策として、センサのサンプリング間隔を変更することを対策方式として開示している。
【先行技術文献】
【非特許文献】
【０００８】
【非特許文献１】Ｄａｎｉｅｌ  Ｒｏｅｔｅｎｂｅｒｇ，  Ｈｅｎｋ  Ｊ  Ｌｕｉｎｇｅ，  Ｃｈｒｉｓ  ＴＭ  Ｂａｔｅｎ，  ａｎｄ  Ｐｅｔｅｒ  Ｈ  Ｖｅｌｔｉｎｋ．  ２００５．  Ｃｏｍｐｅｎｓａｔｉｏｎ  ｏｆ  ｍａｇｎｅｔｉｃ  ｄｉｓｔｕｒｂａｎｃｅｓ  ｉｍｐｒｏｖｅｓ  ｉｎｅｒｔｉａｌ  ａｎｄ  ｍａｇｎｅｔｉｃ  ｓｅｎｓｉｎｇ  ｏｆ  ｈｕｍａｎ  ｂｏｄｙ  ｓｅｇｍｅｎｔ  ｏｒｉｅｎｔａｔｉｏｎ．  ＩＥＥＥ  Ｔｒａｎｓａｃｔｉｏｎｓ  ｏｎ  ｎｅｕｒａｌ  ｓｙｓｔｅｍｓ  ａｎｄ  ｒｅｈａｂｉｌｉｔａｔｉｏｎ  ｅｎｇｉｎｅｅｒｉｎｇ  １３，  ３  （２００５），  ３９５−４０５．
【非特許文献２】ＮＸＰ  Ｓｅｍｉｃｏｎｄｕｃｔｏｒｓ．  ２０１６  ＡＮ５０２３  −  Ｓｅｎｓｏｒ  Ｆｕｓｉｏｎ  Ｋａｌｍａｎ  Ｆｉｌｔｅｒｓ．
【非特許文献３】Ｓｏｎ，  Ｙｕｎｍｏｋ，  ｅｔ  ａｌ．  “Ｒｏｃｋｉｎｇ  ｄｒｏｎｅｓ  ｗｉｔｈ  ｉｎｔｅｎｔｉｏｎａｌ  ｓｏｕｎｄ  ｎｏｉｓｅ  ｏｎ  ｇｙｒｏｓｃｏｐｉｃ  ｓｅｎｓｏｒｓ．”  ２４ｔｈ  ＵＳＥＮＩＸ  Ｓｅｃｕｒｉｔｙ  Ｓｙｍｐｏｓｉｕｍ  （ＵＳＥＮＩＸ  Ｓｅｃｕｒｉｔｙ  １５）．  ２０１５．
【非特許文献４】Ｔｉｍｏｔｈｙ  Ｔｒｉｐｐｅｌ，  Ｏｆｉｒ  Ｗｅｉｓｓｅ，  Ｗｅｎｙｕａｎ  Ｘｕ，  Ｐｅｔｅｒ  Ｈｏｎｅｙｍａｎ，  ａｎｄ  Ｋｅｖｉｎ  Ｆｕ．  ２０１７．  ＷＡＬＮＵＴ：  Ｗａｇｉｎｇ  ｄｏｕｂｔ  ｏｎ  ｔｈｅ  ｉｎｔｅｇｒｉｔｙ  ｏｆ  ｍｅｍｓ  ａｃｃｅｌｅｒｏｍｅｔｅｒｓ  ｗｉｔｈ  ａｃｏｕｓｔｉｃ  ｉｎｊｅｃｔｉｏｎ  ａｔｔａｃｋｓ．  Ｉｎ  Ｓｅｃｕｒｉｔｙ  ａｎｄ  Ｐｒｉｖａｃｙ  （ＥｕｒｏＳ＆Ｐ），  ２０１７  ＩＥＥＥ  Ｅｕｒｏｐｅａｎ  Ｓｙｍｐｏｓｉｕｍ  ｏｎ．  ＩＥＥＥ，  ３−１８．
【発明の概要】
【発明が解決しようとする課題】
【０００９】
非特許文献３、４で開示されるハードウェアでの対策方式は、センサ自体を加工する必要があり、コストが高くなる。また、センサを覆う方法は、他のセンサに影響を及ぼす可能性があり、計測性能に悪影響を及ぼすおそれがある。【００１０】
非特許文献４で開示されるソフトウェアでの対策方式は、限られたセンサにしか適用できないという汎用性の課題がある。これは、対策方式の適用には、センサの利用者がセンサのサンプリング間隔を設定できることが前提となるためである。【００１１】
本発明は、センサ自体の加工を要さず、他のセンサに悪影響を及ぼさず、多くのセンサで利用可能な、センサへの攻撃検知を検知する攻撃装置の提供を目的とする。
【課題を解決するための手段】
【００１２】
本発明の攻撃検知装置は、
種類の異なる複数のセンサによって観測される複数の物理量を組み合わせて出力を計算するアルゴリズムであり、前記複数の物理量のそれぞれの中間値を計算し、それぞれの前記中間値を用いて出力を変化させるアルゴリズムであるセンサフュージョンアルゴリズムの実行中に、それぞれの前記中間値を取得する中間値取得部と、
それぞれの前記中間値と閾値である中間値閾値とを比較することにより、前記複数のセンサのうち少なくとも一つのセンサへの攻撃があるかどうかを判定する判定部と
を備える。
【発明の効果】
【００１３】
本発明によれば、センサ自体の加工を要さず、他のセンサに悪影響を及ぼさず、多くのセンサで利用可能な、センサへの攻撃検知を検知する攻撃装置を提供できる。
【図面の簡単な説明】
【００１４】
【図１】実施の形態１の図で、攻撃検知システムの構成図。
【図２】実施の形態１の図で、傾きセンサモジュールの構成を示す図。
【図３】実施の形態１の図で、攻撃検知装置のハードウェア構成図。
【図４】実施の形態１の図で、傾きセンサモジュールのハードウェア構成図。
【図５】実施の形態１の図で、正常時のセンサデータを示す図。
【図６】実施の形態１の図で、正常時の相関値を示す図。
【図７】実施の形態１の図で、異常時のセンサデータを示す図。
【図８】実施の形態１の図で、異常時の相関値を示す図。
【図９】実施の形態１の図で、センサフュージョンアルゴリズムの流れを示す図。
【図１０】実施の形態１の図で、正常時のセンサフュージョン中間値を示す図。
【図１１】実施の形態１の図で、異常時のセンサフュージョン中間値を示す図。
【図１２】実施の形態１の図で、攻撃検知システムの動作を示すシーケンス図。
【図１３】実施の形態１の図で、相関計算部の動作を示すフローチャート。
【図１４】実施の形態１の図で、攻撃判定部の動作を示すフローチャート。
【図１５】実施の形態１の図で、攻撃検知装置の電子回路よる実現を示す図。
【発明を実施するための形態】
【００１５】
実施の形態１．
＊＊＊構成の説明＊＊＊
図１は、実施の形態１の攻撃検知システム３０の構成を示す。攻撃検知システム３０は、センサモジュール１とコントローラ３を備える。センサモジュール１は、複数のセンサデータ入力部１１、信号処理部１２及び攻撃検知装置２を備える。
【００１６】
攻撃検知装置２は、相関計算部２１と攻撃判定部２２を備える。攻撃判定部２２は閾値カウンタ２２０を備えている。相関計算部２１は、類似度計算部である。攻撃判定部２２は、中間値取得部である。また攻撃判定部２２は判定部である。
【００１７】
図２は、攻撃検知システム３０におけるＡＨＲＳの具体例として傾きセンサモジュール１ａを示す。図２は、センサモジュール１を具体化した傾きセンサモジュール１ａである。傾きセンサモジュール１ａでは、複数のセンサデータ入力部１１は、ジャイロセンサ１１ａ、加速度センサ１１ｂ、磁気センサ１１ｃである。信号処理部１２は、センサフュージョン部１２ａである。傾きセンサモジュール１ａには攻撃検知装置２が組み込まれている。
【００１８】
図３は、攻撃検知装置２のハードウェア構成を示す。攻撃検知装置２は、ハードウェアとして、プロセッサ２３、メモリ２４、センサデータ入力インタフェース２５、信号処理中間値入力インタフェース２６、攻撃判定結果出力インタフェース２７を備える。また、プロセッサ２３は、機能構成として、相関計算部２１と攻撃判定部２２を持つ。攻撃判定部２２は閾値カウンタ２２０を備える。相関計算部２１、攻撃判定部２２の機能は、攻撃検知プログラムとして実現される。メモリ２４には、相関計算部２１、攻撃判定部２２の機能を実現する攻撃検知プログラムが記憶されている。そして、プロセッサ２３が、相関計算部２１、攻撃判定部２２の機能を実現する攻撃検知プログラムを実行する。なお、攻撃検知プログラムは、コンピュータ読取可能な記録媒体に格納されて提供されてもよいし、プログラムプロダクトとして提供されてもよい。
【００１９】
図４は、攻撃検知装置２を、傾きセンサモジュール１ａで信号処理を行うプロセッサ内で実現する構成である。すなわち、図４は攻撃検知機能を有する傾きセンサモジュール１ａのハードウェア構成である。傾きセンサモジュール１ａは、ハードウェアとして、ジャイロセンサ１１ａ、加速度センサ１１ｂ、磁気センサ１１ｃ、プロセッサ１３、メモリ１４、攻撃判定結果出力インタフェース１５、傾き出力インタフェース１６を備える。
また、プロセッサ１３は、機能構成として、センサフュージョン部１２ａ、相関計算部２１、攻撃判定部２２を備える。センサフュージョン部１２ａ、相関計算部２１、攻撃判定部２２の機能は、攻撃検知プログラムとして実現される。メモリ１４には、センサフュージョン部１２ａ、相関計算部２１、攻撃判定部２２の機能を実現する攻撃検知プログラムが記憶されている。そして、プロセッサ１３が、センサフュージョン部１２ａ、相関計算部２１、攻撃判定部２２の機能を実現する攻撃検知プログラムを実行する。上記のように、攻撃検知プログラムは、コンピュータ読取可能な記録媒体に格納されて提供されてもよいし、プログラムプロダクトとして提供されてもよい。
【００２０】
＊＊＊動作の説明＊＊＊
攻撃検知装置２の動作を説明する。攻撃検知装置２の動作は、攻撃検知装置２が攻撃検知プログラムを実行することによる動作である。攻撃検知装置２の動作は、攻撃検知方法である。
攻撃検知装置２の動作は、図２で示す、傾きセンサモジュール１ａを想定して説明する。攻撃検知装置２ではセンサデータ間の不整合により攻撃を検知するという特徴のもと、攻撃検知装置２は、大きく２種類の方法を用いる。
【００２１】
＜第１の方法＞
センサデータ間の不整合を検知する第１の方法は、センサデータどうしの相関を見る。
第１の方法は、ＡＨＲＳの正常な動作中は、各種センサが観測する物理状態は一致しているため、センサデータ間に高い相関が現れることを利用する。特に、加速度センサ１１ｂと磁気センサ１１ｃは、それぞれ重力と地磁気という、ある地点において一定の方向を指すという共通性がある。したがって、両者の相関は高い。
【００２２】
＜第２の方法２＞
センサデータ間の不整合を検知する第２の方法は、センサフュージョンの中間値を見る方法である。ここで単にセンサフュージョンというときは、センサフュージョンアルゴリズムを実行することを意味する。
第２の方法では、センサデータ間の誤差を計測し、その誤差に基づいて計測値を修正することで、傾きを算出するセンサフュージョンアルゴリズムを想定する。したがって、攻撃検知装置２は、センサフュージョンの誤差を見ることで、センサが観測する物理状態の不整合を見つける。
例えば、
（１）ジャイロセンサ１１ａと加速度センサ１１ｂは、ともに重力を観測することができる。
（２）ジャイロセンサ１１ａと磁気センサ１１ｃは、ともに地磁気を観測することができる。
したがって、傾きが計算される過程でセンサフュージョンアルゴリズムによって算出される重力誤差及び地磁気誤差を見ることで、これらの２種類のセンサの組み合わせの不整合を検出できる。
【００２３】
第１の方法と第２の方法を組み合わせることで、
（１）ジャイロセンサ１１ａと加速度センサ１１ｂ、
（２）ジャイロセンサ１１ａと磁気センサ１１ｃ、
（３）加速度センサ１１ｂと磁気センサ１１ｃ、
という３種類すべての組み合わせについて、不整合を検知できる。なお、以下では、実際の傾きセンサモジュール１ａを対象として、本手法の有効性及び実現性を示す。対象とする傾きセンサモジュール１ａを構成する３種類のセンサは全て、Ｘ，Ｙ，Ｚ軸の３軸を有する。
【００２４】
まず、センサデータ間の不整合を相関により検出する第１の方法を説明する。第１の方法では、加速度センサ１１ｂと磁気センサ１１ｃとの整合性を検査する。具体的に、正常動作時と、攻撃を受けた異常動作時のセンサデータの相関を比べることにより、この第１の方法の有効性を示す。
【００２５】
まず、正常動作時の相関を求める。
図５は、正常動作時のセンサデータを示す。図５は、傾きセンサモジュール１ａを手で持って動かした時のセンサデータである。左から、加速度センサ１１ｂ、磁気センサ１１ｃ、ジャイロセンサ１１ａのセンサデータを示す。図５の下に向かって、Ｘ軸、Ｙ軸、Ｚ軸のセンサデータである。各センサデータの横軸は時間であり、縦軸はセンサの計測値である。正常時では、見た目にも、加速度センサ１１ｂと磁気センサ１１ｃは時間変化の状況が似ている。
【００２６】
図６は、加速度センサ１１ｂと磁気センサ１１ｃのＸ軸、Ｙ軸、Ｚ軸について、それぞれ相関係数を計算した結果である。図６では、１サンプルずつずらしながら、ある時間窓で区切り相関を計算した。その結果、相関係数は概ね０．６を上回り、高い相関があることが分かる。７〜１２秒については、傾きセンサモジュール１ａを強く動かしたため、相関は低くなっている。なお、図６では、二つの系列ｘｉ，ｙｉ（ｉ＝１，２，．．．，ｎ）について、ピアソンの相関係数は次の相関式で求めることができる。
【数１】
2019207652.tif 000003
【数２】
2019207652.tif 000004
は、それぞれｘｉ，ｙｉの相加平均である。
【００２７】
次に、異常動作時の相関を求める。
図７は、静止した傾きセンサモジュール１ａに対して、後述する参考文献１で示される方法で攻撃を行った時のセンサデータである。図７の左から、加速度センサ１１ｂ、磁気センサ１１ｃ、ジャイロセンサ１１ａのセンサデータである。横軸及び縦軸の値、Ｘ軸、Ｙ軸、Ｚ軸のセンサデータの並びは図５と同じである。図７では、それぞれのセンサが攻撃の影響を受けている。加速度センサ１１ｂの各軸のセンサデータは正弦波状に変化し、磁気センサ１１ｃ、ジャイロセンサ１１ａのセンサデータは，バイアス状に固定される。
【００２８】
図８は、加速度センサ１１ｂと磁気センサ１１ｃのＸ軸、Ｙ軸、Ｚ軸について、それぞれ相関係数を計算した結果である。図８では、図６と同様に、１サンプルずつずらしながら、ある時間窓で区切り相関を計算した。その結果、時間全体を通して概ね相関係数が−０．５から０．５に収まり、相関がないことが分かる。図６に示す正常時の相関と、図８に示す攻撃時の相関とを比べると分かるように、相関値が一定の閾値を超えた場合に攻撃であると判断することで、攻撃の有無を判断できることが分かる。この場合、閾値に対して閾値よりも相関値が小さくなった場合に攻撃と判定できる。また、正常動作時でも、傾きセンサモジュール１ａを強く動かしたときには相関が低くなることを述べたが、これに関しては、相関が一定時間低くなることをもって攻撃と判断することで、誤差と攻撃とを区別できる。つまり、攻撃の場合は、誤差の場合に比べ相関値の低い状態が長い時間継続する。
【００２９】
このようなＡＨＲＳへの攻撃は、次の参考文献１で説明されている。
参考文献１：梨本，鈴木等、「センサフュージョンの攻撃耐性に関するセキュリティ評価」、ＳＣＩＳ２０１８  ２０１８  Ｓｙｍｐｏｓｉｕｍ  ｏｎ  Ｃｒｙｐｔｏｇｒａｒｈｙ  ａｎｄ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｓｅｃｕｒｉｔｙ  Ｎｉｉｇａｔａ，Ｊａｐａｎ，Ｊａｎ．２３−２６，２０１８，Ｔｈｅ  Ｉｎｓｔｉｔｕｔｅ  ｏｆ  Ｅｌｅｃｔｒｏｎｉｃｓ，Ｉｎｆｏｒｍａｔｉｏｎ  ａｎｄ  Ｃｏｍｍｕｎｉｃａｔｉｏｎ  Ｅｎｇｉｎｅｅｒｓ．
【００３０】
次に、センサフュージョンの中間値を用いて不整合を検出する第２の方法を説明する。そのために、まず、非特許文献２に基づき、センサフュージョンの技術を説明する。
【００３１】
図９は、センサフュージョンの流れを示す。図９はセンサフュージョン部１２ａの動作を示す。以下の説明は図２の傾きセンサモジュール１ａを想定する。入力は、ジャイロセンサ１１ａ、加速度センサ１１ｂ、磁気センサ１１ｃ、のセンサデータであり、出力は傾きである。センサデータは、それぞれＸ，Ｙ，Ｚの３軸あり、加速度センサ１１ｂ、磁気センサ１１ｃ、ジャイロセンサ１１ａの順番にベクトルで＜Ｇｋ＞，＜Ｂｋ＞，＜Ｙｋ＞と表す。なお＜＊＞の表記は、便宜的に＊がベクトルであることを示す。なお、ｋは、センサフュージョンの繰り返し処理のｋ番目であることを示す。傾きは、ロール、ピッチ、ヨーというオイラー角で与えられ、それぞれφｋ，θｋ，ψｋと表す。センサフュージョンの内部処理において、傾きは、３次元の回転行列［Ｒｋ］またはクォータニオンｑで表され、両者は相互に変換可能である。なお［＊］の表記は、便宜的に＊が行列であることを示す。＜ｑ＞はクォータニオンｑのベクトル部のみを取り出した表現である。
【００３２】
ＡＨＲＳのセンサフュージョンでは、地磁気ベクタと重力ベクタが重要な役割を持つ。地磁気ベクタ＜ｍ＞は、地球の磁場と並行な単位ベクトルであり、重力ベクタ＜ｇ＞は、地球の中心を指す単位ベクトルである。＜ｍ＞と＜ｇ＞が与えられると、傾きは一意に求まることが重要である。また、逆に、傾きから＜ｍ＞と＜ｇ＞を計算することもできる。
【００３３】
以下では、以降に必要な基本的な定義を述べる。なお、記法は非特許文献２に従う。前提として、世界座標での傾き（［Ｒｋ］）は、３次元の回転行列として次の式（１）で与えられる。
【数３】
2019207652.tif 000005
【００３４】
また、センサデータと回転行列の関係は次の式（２）のように定義される。
【数４】
2019207652.tif 000006
【００３５】
この式（２）は、以下のように説明できる。本アルゴリズムでは、特に、ＮＥＤ（Ｎｏｒｔｈ，Ｅａｓｔ，Ｄｏｗｎ）座標が採用されている。したがって、［Ｒｋ］のＺ軸は重力方向を示すことから、加速度センサ１１ｂのみから算出される。磁気センサ１１ｃは、北向きを下側に向かって示すため、＜Ｇｋ＞と＜Ｂｋ＞の外積は、Ｙ軸に沿ってＥａｓｔ方向を示す。残るＸ軸は、両者の外積として計算できる。
【００３６】
以上の基本式をもとに、図９のセンサフュージョン部の流れを説明する。図９のステップＳ３０１では、６自由度（ｓｉｘ  ｄｅｇｒｅｅ  ｏｆ  ｆｒｅｅｄｏｍ：６ＤＯＦ）のセンサデータから地磁気ベクタ＜ｍｋ６ＤＯＦ＞、重力ベクタ＜ｇｋ６ＤＯＦ＞、および観測誤差＜Ｑｋ＞を計算する。地磁気ベクタは、地球が持つ磁場を３次元空間（Ｘ，Ｙ，Ｚ座標）で表す。地磁気ベクタは、以下の式（３）である。
同様に、重力ベクタは、重力場を表す。重力ベクタは、以下の式（４）である。
すなわち、
【数５】
2019207652.tif 000007
である。
【００３７】
また、観測誤差＜Ｑｖ，ｋ＞は外乱とセンサノイズが主成分となる。
外乱は加速＜Ｑａ，ｋ＞と磁気外乱＜Ｑｄ，ｋ＞がある。
センサノイズは加速度センサでは＜ＱｖＢ，ｋ＞があり、コンパスでは＜ＱｖＧ，ｋ＞がある。
したがって、観測誤差が無いことは、次の式（５）、式（６）で表すことができる。
【数６】
2019207652.tif 000008
ここで、＜ｇ＞は重力加速度、＜Ｂ＞は周辺地磁気量を表す。
【００３８】
図９のステップＳ３０２では、ジャイロ＜Ｙｋ＞から傾きを求める。そのためには、直前の傾きの推定値ｑ＋ｋ−１に対し、ジャイロで計測した角速度を積算すればよい。まず、ジャイロはドリフトをオフセット＜ｂ−ｋ＞で補償され、次の式（７）で表される。
【数７】
2019207652.tif 000009
【００３９】
次に、傾きの事前推定値は次の式（８）のようになる。
【数８】
2019207652.tif 000010
ここで、δｔはカルマンフィルタの更新間隔である。
【００４０】
△ｑは、角度｜（ω−ｋ）｜δｔを回転に変換するクォータニオンで、次の式（９）のように表される。
【数９】
2019207652.tif 000011
【００４１】
ジャイロを用いて求めた傾きｑ−ｋを用いれば、式（２）より、重力と地磁気の向きを求めることができる。それらを、重力ベクタ＜ｇｋ−＞と地磁気ベクタ＜ｍｋ−＞と呼ぶ。
【００４２】
ここまでで、２通りの方法で求めた重力ベクタと地磁気ベクタの組
｛＜ｇｋ６ＤＯＦ＞，＜ｍｋ６ＤＯＦ＞、｝及び｛＜ｇｋ−＞，＜ｍｋ−＞｝
が得られた。
図９のステップＳ３０３では、｛＜ｇｋ６ＤＯＦ＞，＜ｍｋ６ＤＯＦ＞、｝と｛＜ｇｋ−＞，＜ｍｋ−＞｝を比較して、重力ベクタ、地磁気ベクタごとの誤差の事前推定を計算する。
＜ｇｋ６ＤＯＦ＞と＜ｇｋ−＞の誤差とは、一方をもう一方に一致させるような回転クォータニオンｑｚｇε，ｋであり、＜ｇｋ６ＤＯＦ＞と＜ｇｋ−＞から求めることができる。
【００４３】
同様にして、＜ｍｋ６ＤＯＦ＞と＜ｍｋ−＞の誤差ｑｚｍε，ｋを求める。
一般的にベクトル＜ｒ＞をもう一つのベクトル＜ｓ＞に一致させるための回転クォータニオンは、次の式（９−１）のように求めることができる。
【数１０】
2019207652.tif 000012
ここで、・とＸとは、それぞれ、ベクトルの内積と外積とを表す。
式９−１を使って、誤差を表す２種類の回転クォータニオンを計算できる。
【００４４】
図９のステップＳ３０４では、カルマンフィルタを用いて誤差の事後推定を求める。まず、カルマンゲインは、カルマンフィルタモデルの誤差＜ＱＷ，ｋ＞と観測誤差＜Ｑｖ，ｋ＞を用いて、次の式（１０）にように表される。
【数１１】
2019207652.tif 000013
【００４５】
ここで、［Ｃｋ］はカルマンフィルタにおいて、観測行列と呼ばれるものである。
観測誤差の事後推定ｘ＋ε，ｋは、次の式（１１）で与えられる。
【数１２】
2019207652.tif 000014
【００４６】
図９のステップＳ３０５では、誤差の事後推定を使って、ジャイロ由来の地磁気ベクタ、重力ベクタの事前推定を補正し、傾きの事後推定を得る。地磁気ベクタ＜ｍｋ−＞及び重力ベクタ＜ｇｋ−＞の事後推定は、事前推定を誤差量だけ回転させて次の式（１２）、式（１３）で与えられる。
【数１３】
2019207652.tif 000015
【００４７】
式１２、式１３において＊は共役を表す。
さらに、式（２）に式（１２），（１３）を代入し、傾きの事後推定［ＲＫ＋］を得る。最後に、傾き、すなわちロールφｋ、ピッチθｋ、ヨー角ψｋは次の式（１４）のように表される。
【数１４】
2019207652.tif 000016
【００４８】
以上の処理を繰り返すことで、逐次傾きを計算する。
【００４９】
攻撃検知装置２による攻撃検知では、図９のステップＳ３０３の誤差により計算される重力ベクタの誤差ｑｚｇε，ｋ、地磁気ベクタの誤差ｑｚｍε，ｋを見て、攻撃の有無を判断する。すなわち、攻撃検知装置２は回転クォータニオンのベクトル成分にのみ着目する。
【００５０】
図５、図７でそれぞれ示した正常時と異常時のセンサデータを用いて、具体的に説明する。
図１０は、正常時の地磁気ベクタの誤差、重力ベクタの誤差を示す。図１０の６つのグラフの横軸は時間であり、縦軸は誤差である。
図１１は、攻撃時の地磁気ベクタの誤差、重力ベクタの誤差を示す。図１１の６つのグラフは図１０の６つのグラフに対応する。図１０と図１１を比べると、攻撃時の方が誤差は大きい。特に重力ベクタに関して、その差は顕著である。誤差を見てセンサ間の不整合を検知する方法も、誤差が一定の閾値を超えた場合に攻撃と判断することで、攻撃の有無を判定できる。
【００５１】
以上の二つの不整合検出の方法を攻撃検知装置２に適用する。
図１２は、攻撃検知装置２を含む、攻撃検知システム３０の動作を示すシーケンスである。図１２を用いて、攻撃検知装置２の動作を説明する。
ステップＳ１１において、ジャイロセンサ１１ａは、センサフュージョン部１２ａへ角速度データを送信する。
ステップＳ１２において、加速度センサ１１ｂは、センサフュージョン部１２ａへ加速度データを送信する。
ステップＳ１３において、磁気センサ１１ｃは、センサフュージョン部１２ａへ磁気データを送信する。
ステップＳ１４において、センサフュージョン部１２ａは、加速度データ、磁気データを相関計算部２１に送信する。
【００５２】
その後、センサフュージョン部１２ａは、角速度データ、加速度データ、磁気データを用いて、図９の説明で述べたように、センサフュージョンを行う。これにより、センサフュージョン部１２ａによって、傾きが計算される。また、センサフュージョン部１２ａによる傾きの計算の過程で、各センサが計測した物理量の誤差であるセンサフュージョン部誤差データが求まる。ステップＳ１５において、センサフュージョン部１２ａは、信号処理中間値であるセンサフュージョン誤差データを、攻撃判定部２２に送信する。
【００５３】
相関計算部２１は、加速度データと磁気データとの相関を計算する。ステップＳ１６において、相関計算部２１は、計算した相関値を攻撃判定部２２へ送信する。ステップＳ１７において、攻撃判定部２２は、センサフュージョン誤差データと相関値とから、攻撃の有無を判定し、判定結果をコントローラ３に送信する。
【００５４】
図１３は、相関計算部２１の動作を示すフローチャートである。図１３を参照して相関計算部２１の動作を説明する。
ステップＳ１０１において、相関計算部２１は、センサフュージョン部１２ａから、加速度データと、磁気データを受信する。
ステップＳ１０２において、相関計算部２１は、加速度データと磁気データとの相関係数を計算する。
ステップＳ１０３において、相関計算部２１は、相関値を攻撃判定部２２に送信する。
【００５５】
このように、類似度計算部である相関計算部２１は、複数のセンサのうち２つのセンサである加速度センサ１１ｂ及び磁気センサ１１ｃのセンサデータを取得し、２つのセンサデータの相関値を類似度として計算する。後述のように、攻撃判定部２２は、類似度閾値と類似度である相関値とを比較することにより、複数のセンサのうち少なくとも一つのセンサへの攻撃があるかどうかを判定する。
なお、類似度が計算される２つのセンサは、観測可能な物理量が異なる。具体的には、加速度センサ１１ｂの観測可能な物理量は重力であり、磁気センサ１１ｃの観測可能な物理量は地磁気である。
【００５６】
図１４は、攻撃判定部２２の動作を示すフローチャートである。図１４を参照して攻撃判定部２２の動作を説明する。攻撃判定部２２は、相関値と、センサフュージョン誤差データとを用いて、それぞれが閾値を超えたかどうかをカウントし、そのカウントが閾値を超えた場合に、攻撃が有ったと判定する。以下、具体的に説明する。
【００５７】
ステップＳ２０１において、攻撃判定部２２は、閾値カウンタ２２０を初期化する。
ステップＳ２０２において、攻撃判定部２２は相関計算部２１から相関値を受信する。
【００５８】
ステップＳ２０３において、攻撃判定部２２は、各軸について、相関値があらかじめ設定した軸毎の相関値閾値を超えたかどうかを判定する。超えている場合、ステップＳ２０４において、攻撃判定部２２は、閾値カウンタ２２０をカウントアップする。３軸分あるため、相関値に関するカウンタの上限は３である。
閾値はＸ軸の閾値、Ｙ軸の閾値、Ｚ軸の閾値の３つある。これらをそれぞれ閾値１、閾値２、閾値３とする。閾値１、閾値２及び閾値３を類似度閾値と呼ぶ。閾値１はＸ軸、閾値２はＹ軸、閾値３はＺ軸の閾値である。
【００５９】
ステップＳ２０５において、攻撃判定部２２は、信号処理中間値であるセンサフュージョン誤差データをセンサフュージョン部１２ａから受信する。
【００６０】
ステップＳ２０６において、攻撃判定部２２は、重力ベクタと地磁気ベクタの２種類の物理量に関して、各軸の誤差が閾値を超えたかどうかを判定する。２種類の誤差についてそれぞれ３軸分判定を行うため、誤差に関するカウンタの上限は６である。重力ベクタについて３軸、地磁気ベクタについて３軸、計６軸あるが、各軸に閾値がある。
重力ベクタのＸ軸、Ｙ軸、Ｚ軸の閾値を閾値４、閾値５、閾値６とする。地磁気ベクタのＸ軸、Ｙ軸、Ｚ軸の閾値を閾値７、閾値８、閾値９とする。閾値４から閾値９を中間値閾値と呼ぶ。
攻撃判定部２２は、各誤差が対応する閾値を超えていれば閾値カウンタをカウントアップし、誤差が誤差閾値を超えていなければ閾値カウンタをカウントアップしない（ステップＳ２０７）。
閾値は閾値１から閾値９まであるので、ステップＳ２０３及びステップＳ２０６により、閾値カウンタ２２０は最大で９、最小で０である。
【００６１】
ステップＳ２０８において、攻撃判定部２２は、閾値カウンタ２２０が、あらかじめ規定した閾値を超えたかどうかを判定する。この閾値は閾値１から閾値９とは異なる、閾値カウンタ２２０のための閾値である。この閾値をカウンタ閾値と呼ぶ。閾値カウンタ２２０がカウンタ閾値を超えている場合には、攻撃判定部２２は攻撃ありと判断し、異常の通知をコントローラ３に送信する（ステップＳ２０９）。閾値カウンタ２２０がカウンタ閾値を超えていない場合には、攻撃判定部２２は、攻撃なしと判断し、正常の通知をコントローラ３に送信する（ステップＳ２１０）。
【００６２】
例えば、カウンタ閾値を１とすれば、閾値１から閾値９と比較される値の一つでも閾値を超えた場合、攻撃判定部２２は、攻撃ありと判定する。また、カウンタ閾値を５とすれば、閾値１から閾値９と比較される９つの値のうち６つ以上が閾値を超えた場合に、攻撃判定部２２は攻撃ありと判定する。
【００６３】
以上のように、攻撃判定部２２は、センサフュージョンアルゴリズムの実行中に、それぞれの中間値を取得する。センサフュージョン部１２ａの実行するセンサフュージョンアルゴリズムは、種類の異なる複数のセンサであるジャイロセンサ１１ａ、加速度センサ１１ｂ及び磁気センサ１１ｃによって観測される複数の物理量を組み合わせて出力を計算するアルゴリズムである。ここで複数の物理量とは重力と地磁気である。センサフュージョンアルゴリズムは、複数の物理量のそれぞれの中間値である重力ベクタの誤差ｑｚｇε，ｋ及び地磁気ベクタの誤差ｑｚｍε，ｋを計算し、それぞれの中間値を用いて出力を変化させるアルゴリズムである。
このように、それぞれの中間値は、種類の異なる複数のセンサによって観測される複数の物理量のそれぞれの誤差データである。
攻撃判定部２２は、それぞれの中間値である重力ベクタの誤差ｑｚｇε，ｋ及び地磁気ベクタの誤差ｑｚｍε，ｋと、中間値閾値である閾値４から閾値９とを比較することにより、複数のセンサのうち少なくとも一つのセンサへの攻撃があるかどうかを判定する。
【００６４】
なお、相関計算部２１は、ピアソンの相関係数の代わりに、次に示す方法で類似度を計算しても良い。
（１）相関計算部２１は、相互相関、相互情報量、または尤度を計算する。
（２）相関計算部２１は、幾何学的距離（ユークリッド距離、マハラノビス距離、マンハッタン距離、チェビシェフ距離、ミンコフスキー距離など）を計算すること。
【００６５】
攻撃判定部２２は、中間値の種類に応じて中間値閾値に重み付けを行い、２つのセンサデータの種類に応じて類似度閾値に重み付けを行うことができる。中間値閾値の重み付けは、中間値閾値を変更してもよいし、中間値を変更してもよい。同様に類似度閾値の重み付けは、類似度閾値を変更してもよいし、類似度を変更してもよい。
【００６６】
具体的には、攻撃判定部２２は、閾値カウンタ２２０を次のような方法で実現できる。
（１）相関値と誤差とで、それぞれ閾値を超えた場合にカウントする値に重み付けを行う、あるいは、閾値自体を変化させることで重み付けを行う。例えば、センサデータ間に相関が現れにくいセンサデータの組み合わせがある場合、その組み合わせから計算された相関値と比較を行う閾値の値を高く設定することで、重要度を下げる。
（２）閾値との比較を行う軸に応じて、閾値を超えた場合にカウントする値に重み付けを行う、あるいは、閾値自体を変化させることで重み付けを行う。例えば、加速度センサを有する移動ロボットで、水平方向にしか進まないことが分かっている場合、重力方向を表す軸（例えばＺ軸）に関する重力ベクタ誤差と比較を行う閾値の値を高く設定することで、重要度を下げる。
（３）相関値及び誤差と、相関値及び誤差のそれぞれ対応する閾値との差とを、閾値カウンタに格納する。
（４）上記（３）で格納する値に、相関値または誤差、あるいは軸の種類に応じて重み付けを行う。
【００６７】
信号処理部１２は、実施の形態１で述べたカルマンフィルタによるセンサフュージョンアルゴリズムの他に、次のように状態推定を行うアルゴリズムにより実現しても良い。
（１）パーティクルフィルタを用いたセンサフュージョンアルゴリズム。
（２）ベイジアンフィルタを用いたセンサフュージョンアルゴリズム。
【００６８】
＊＊＊実施の形態１の効果の説明＊＊＊
実施の形態１の攻撃検知装置２は、攻撃によりセンサ間が異なる物理状態を観測した場合、相関値が低く出ること、またセンサフュージョンの誤差が大きくなることを用いて、センサデータ間の不整合からセンサへの攻撃を検知できる。
また、内部構造の分からないブラックボックスのセンサであっても、センサデータと信号処理の中間値を取り出し、攻撃検知装置を別途接続することで、攻撃検知の仕組みを導入できる。よって、センサへの加工なしに攻撃を検知できる。
また、攻撃検知装置２は、センサによる計測とは独立して攻撃検知を行うため、センサによる計測に悪影響を及ぼすことは無い。
【００６９】
実施の形態１では、センサとしてジャイロセンサ１１ａ，加速度センサ１１ｂ、磁気センサ１１ｃを使用する傾きセンサモジュールを説明した。これに限らず、傾きセンサモジュールは、加速度センサ、ジャイロセンサ、磁気センサ、チルトセンサのうち二種以上を備えてもよい。
また、傾きセンサに限らず、加速度センサ、ジャイロセンサ、磁気センサ、超音波センサ、光センサ、カメラ、ＧＰＳセンサのうち二種以上のセンサを備える位置センサでもよい。
また、傾きセンサに限らず、レーダー、超音波センサ、光センサ、カメラのうち二種以上のセンサを備える測距センサでもよい。
また、傾きセンサに限らず、温度センサ、湿度センサ、放射線センサ、ｐＨセンサ、カメラのうち二種以上のセンサを備える土壌センサでもよい。
【００７０】
＊＊＊ハードウェア構成の説明＊＊＊
最後に、攻撃検知装置２のハードウェア構成の補足説明を行う。なお、以下の説明は、傾きセンサモジュール１ａにもあてはまる。
プロセッサ２３は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、ＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）等である。
メモリ２４は、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、フラッシュメモリ、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等である。
センサデータ入力インタフェース２５、信号処理中間値入力インタフェース２６、攻撃判定結果出力インタフェース２０４は、Ｉ２Ｃ（Ｉｎｔｅｒ−Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）インタフェース、ＳＰＩ（Ｓｅｒｉａｌ  Ｐｅｒｉｐｈｅｒａｌ  Ｉｎｔｅｒｆａｃｅ）及びＥｔｈｅｒｎｅｔ（登録商標）インタフェース等である。
【００７１】
また、信号処理部１２、相関計算部２１、攻撃判定部２２の「部」を、「回路」又は「工程」又は「手順」又は「処理」に読み替えてもよい。
また、攻撃検知装置２は、ロジックＩＣ（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）、ＧＡ（Ｇａｔｅ  Ａｒｒａｙ）、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）、ＦＰＧＡ（Ｆｉｅｌｄ−Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）といった電子回路により実現されてもよい。
なお、プロセッサ及び上記の電子回路を総称してプロセッシングサーキットリーともいう。
【００７２】
図１５は、攻撃検知装置２が電子回路９９で実現される図である。電子回路９９によって、プロセッサ２３として示す「部」の機能、メモリ２４の機能、センサデータ入力インタフェース２５の機能、信号処理中間値入力インタフェース２６及び攻撃判定結果出力インタフェース２７の機能が実現される。
電子回路９９は信号線９９ａに接続している。電子回路９９は、具体的には、単一回路、複合回路、プログラム化したプロセッサ、並列プログラム化したプロセッサ、ロジックＩＣ、ＧＡ（Ｇａｔｅ・Ａｒｒａｙ）、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ・Ｓｐｅｃｉｆｉｃ・Ｉｎｔｅｇｒａｔｅｄ・Ｃｉｒｃｕｉｔ）、又は、ＦＰＧＡ（Ｆｉｅｌｄ−Ｐｒｏｇｒａｍｍａｂｌｅ・Ｇａｔｅ・Ａｒｒａｙ）である。
【符号の説明】
【００７３】
１  センサモジュール、１ａ  傾きセンサモジュール、２  攻撃検知装置、３  コントローラ、１１  センサデータ入力部、１１ａ  ジャイロセンサ、１１ｂ  加速度センサ、１１ｃ  磁気センサ、１２  信号処理部、１２ａ  センサフュージョン部、１３  プロセッサ、１４  メモリ、１５  撃判定結果出力インタフェース、１６  傾き出力インタフェース、２１  相関計算部、２２  攻撃判定部、２３  プロセッサ、２４  メモリ、２５  センサデータ入力インタフェース、２６  信号処理中間値入力インタフェース、２７  攻撃判定結果出力インタフェース、３０  攻撃検知システム、９９  電子回路、９９ａ  信号線、２２０  閾値カウンタ。
【図１】
2019207652.tif 000017
【図２】
2019207652.tif 000018
【図３】
2019207652.tif 000019
【図４】
2019207652.tif 000020
【図５】
2019207652.tif 000021
【図６】
2019207652.tif 000022
【図７】
2019207652.tif 000023
【図８】
2019207652.tif 000024
【図９】
2019207652.tif 000025
【図１０】
2019207652.tif 000026
【図１１】
2019207652.tif 000027
【図１２】
2019207652.tif 000028
【図１３】
2019207652.tif 000029
【図１４】
2019207652.tif 000030
【図１５】
2019207652.tif 000031
【国際調査報告】
2019207652.tif 000032
2019207652.tif 000033
2019207652.tif 000034
2019207652.tif 000035