近年、自動運転などの先進機能を利用者へ提供するため、車載システムが複雑化している。複雑化に伴って増大する開発期間やコストの課題を解消するため、従来複数のECU(Electronic Control Unit)に分かれて搭載されていた機能を1つのECUへ統合する動きがある。ECUの統合において、1つのECUに複数の仮想的なコンピュータを動作させるために仮想化技術が利用されている。その仮想的なコンピュータは仮想マシンと呼ばれ、複数の仮想マシンを動作させる仮想化基盤となるソフトウェアはハイパーバイザと呼ばれる。
ハイパーバイザ内の仮想ソフトウェアまたはデバイスドライバに含まれる脆弱性や仕様の不具合が顕著化した場合、ハイパーバイザまたは仮想マシンに割り当てられるメモリ領域が改ざんされ得るという問題がある。その対策として、特許文献1には、仮想ソフトウェア上に、監視用の仮想マシンと監視対象となる仮想マシンを配置し、監視用の仮想マシンから監視対象を監視することで、監視対象における異常を検知する方法が記載されている。
ところで、車両システムにおいて、第三者のアプリケーションを自由にインストール可能なIVI(In-Vehicle Infotainment)システムと、車両の走る、止まる、曲がるなどの制御を指示することで自動運転を支援するADAS(Advanced Driver Assistance System)とを1つのECUに統合する場合、第三者の悪意のあるアプリケーションによってADASの制御方法に関連するメモリ領域が改ざんされると、車両の運転に支障をきたす恐れがある。
しかしながら、特許文献1の方法は、監視用の仮想マシンが改ざんされていない場合は監視対象の異常を検知可能であるが、監視用の仮想マシン自体が第三者の悪意のあるアプリケーションによって改ざんされた場合は、異常を検知できない課題がある。
上記課題を解決するために、本開示の一態様に係る監視装置は、それぞれがソフトウェア及び通信ログの少なくとも1つを監視対象として監視する3以上の監視部を備え、前記3以上の監視部は、第一の実行権限にて動作する第一の監視部と、前記第一の実行権限よりも信頼性が低い第二の実行権限にて動作する第二の監視部と、前記第二の実行権限と信頼性が同じ、または、前記第二の実行権限よりも信頼性が低い第三の実行権限にて動作する第三の監視部とを含み、前記第一の監視部は、前記第二の監視部のソフトウェアを監視し、前記第一の監視部及び前記第二の監視部の少なくとも1つは、前記第三の監視部のソフトウェアを監視する。
これにより、システムに侵入した攻撃者は弱い第三の実行権限を獲得後、より強い第二の実行権限、第一の実行権限の獲得を目指すと想定できるため、第二の実行権限よりも弱い第三の実行権限が乗っ取られた後、第三の監視部のソフトウェアを改ざんすることで監視を回避しようと試みた場合であっても、第一の監視部または第二の監視部から第三の監視部のソフトウェアの異常を検知できる効果がある。また、強い実行権限でプログラムを動作させる環境とは弱い実行権限でプログラムを動作させる環境は分離されると想定できるため、実行権限が異なる3段階の監視部を用いることによって、3種類の環境に渡って広い範囲の監視対象を監視できる効果がある。また、強い実行権限で動作するソフトウェアは脆弱性を含まないように単純なアルゴリズムで実装されると想定できるため、強い実行権限で動作する監視部には単純なアルゴリズムを採用し、弱い実行権限で動作する監視部には高度で複雑なアルゴリズムを採用できる効果がある。
また、前記3以上の監視部は、4以上の監視部を備え、前記4以上の監視部は、前記第一の監視部と、前記第二の監視部と、前記第三の監視部と、前記第三の実行権限と信頼性が同じ、または、前記第三の実行権限よりも信頼性が低い第四の実行権限にて動作する第四の監視部とを含み、前記第一の監視部、前記第二の監視部、及び、前記第三の監視部の少なくとも1つは、前記第四の監視部のソフトウェアを監視してもよい。
これにより、システムに侵入した攻撃者は弱い第四の実行権限を獲得後、より強い第三の実行権限、強い第二の実行権限、第一の実行権限の獲得を目指すと想定できるため、第三の実行権限よりも弱い第四の実行権限が乗っ取られた後、第四の監視部のソフトウェアを改ざんすることで監視を回避しようと試みた場合であっても、第一の監視部または第二の監視部、第三の監視部から第四の監視部のソフトウェアの異常を検知できる効果がある。また、強い実行権限でプログラムを動作させる環境とは弱い実行権限でプログラムを動作させる環境は分離されると想定できるため、実行権限が異なる4段階の監視部を用いることによって、4種類の環境に渡って広い範囲の監視対象を監視できる効果がある。また、強い実行権限で動作するソフトウェアは脆弱性を含まないように単純なアルゴリズムで実装されると想定できるため、強い実行権限で動作する監視部には単純なアルゴリズムを採用し、弱い実行権限で動作する監視部には高度で複雑なアルゴリズムを採用できる効果がある。
また、前記監視装置は、セキュアアプリ、仮想ソフトウェア基盤、及び、1以上の仮想マシン上にて動作し、前記第一の実行権限は、セキュアアプリの実行権限、仮想ソフトウェア基盤の実行権限、及び、仮想マシンのカーネル実行権限のうちの1つであり、前記第二の実行権限は、前記仮想ソフトウェア基盤の実行権限、前記仮想マシンのカーネル実行権限、及び、前記仮想マシンのユーザ権限のうちの1つであり、前記第三の実行権限は、前記仮想マシンのカーネル実行権限、及び、前記仮想マシンのユーザ権限のうちの1つであり、前記セキュアアプリの実行権限は、前記仮想ソフトウェア基盤の実行権限よりも信頼性が高く、前記仮想ソフトウェア基盤の実行権限は、前記仮想マシンのカーネル実行権限よりも信頼性が高く、前記仮想マシンのカーネル実行権限は、前記仮想マシンのユーザ権限よりも信頼性が高くてもよい。
これにより、仮想マシンのユーザアプリの脆弱性をついて仮想マシンのユーザ権限を獲得した攻撃者は、仮想マシンのカーネル権限、ハイパーバイザの実行権限、セキュアアプリの実行権限の獲得を目指すと想定できるため、仮想マシンのユーザ権限、仮想マシンのカーネル権限、ハイパーバイザの実行権限を乗っ取られた後、乗っ取った実行権限で動作する監視部のソフトウェアを改ざんして監視を回避しようと試みた場合であっても、より強い実行権限の監視部から弱い実行権限の監視部の異常を検知できる効果がある。また、セキュアアプリの実行権限やハイパーバイザの実行権限では、仮想マシンのユーザ空間のソフトウェアや、仮想マシンのユーザ空間のネットワークログ、仮想マシンのユーザ空間とカーネル空間の間のシステムコールといった通信ログの取得が困難であると想定できるため、実行権限ごとに監視部を分離することによって、より広い範囲の監視対象を監視できる効果ある。また、セキュアアプリの実行権限とハイパーバイザの実行権限、仮想マシンのカーネル権限で動作するソフトウェアは脆弱性を含まないように単純なアルゴリズムで実装されると想定できるため、強い実行権限で動作する監視部には単純なアルゴリズムを採用し、弱い実行権限で動作する監視部には高度で複雑なアルゴリズムを採用できる効果がある。
また、前記監視装置は、仮想ソフトウェア基盤及び2以上の仮想マシン上にて動作し、前記仮想マシンに割り当てられた実行権限にて動作する監視部が2以上存在する場合、前記仮想マシンに割り当てられた実行権限にて動作する2以上の監視部のうちの第一の仮想マシンの監視部は、前記2以上の監視部のうちの第二の仮想マシンの監視部のソフトウェアを監視対象に含み、前記2以上の仮想マシンは、攻撃者によって改ざんされる可能性に応じて前記第一の仮想マシン及び前記第二の仮想マシンのいずれかに分類されてもよい。
これにより、外部ネットワークからシステムに侵入し、外部ネットワークと接続される仮想マシンのユーザ権限及びカーネル権限を獲得した攻撃者は、他の仮想マシンの機能獲得を目指すと想定できるため、外部ネットワークと接続される改ざんリスクの高い第二の仮想マシンの監視部が乗っ取られた場合であっても、外部ネットワークと接続しない改ざんリスクの低い第一の仮想マシンの監視部から第二の仮想マシンの監視部のソフトウェアの異常を検知できる効果がある。また、車両の制御機能を有する仮想マシンは、改ざんされた場合の安全性への影響が大きく、攻撃者の対象になりやすいため、より信頼可能な仮想マシンの監視部から監視することで、安全性を維持できる効果がある。もしくは、車両の制御機能を有する仮想マシンは、外部ネットワークから隔離されており、高い機能安全レベルの要求を満たすためにセキュアな設計と実装が十分考慮されていると想定できるため、車両の制御機能を有する仮想マシンは信頼可能な第一の仮想マシンとして扱うことができる効果がある。また、実行権限だけを考慮すると、改ざんリスクの高い第二の監視マシンの監視部は、セキュアアプリまたはハイパーバイザの実行権限から監視する必要があるが、実行権限が同一である第一の監視マシンの監視部から第二の監視マシンの監視部を監視できるため、セキュアアプリの実行権限とハイパーバイザの実行権限で動作するソフトウェアを単純化できる効果がある。また、外部ネットワークからシステムに侵入し、特定の仮想マシンのユーザ権限及びカーネル権限を獲得した攻撃者は、他の仮想マシンの機能獲得を目指すと想定できるため、第一の仮想マシンの監視部と、第二の仮想マシンが相互監視または巡回監視を行うことによって、特定の仮想マシンが乗っ取られた場合であっても、それ以外の仮想マシンの監視部から特定の仮想マシンの異常を検知できる効果がある。
また、前記監視装置は、セキュアアプリ、ホストオペレーティングシステム、1以上の仮想ソフトウェア基盤、及び、1以上の仮想マシン上、または、1以上のコンテナ仮想化基盤及び2以上のコンテナ上にて動作し、前記第一の実行権限と、前記第二の実行権限と、前記第三の実行権限と、前記第四の実行権限とは、セキュアアプリの実行権限と、ホストオペレーティングシステムの実行権限と、仮想ソフトウェア基盤の実行権限と、仮想マシンのカーネル実行権限と、仮想マシンのユーザ実行権限と、コンテナの実行権限とのうちの1つであり、同一の実行権限にて動作する仮想マシンの監視部が2以上存在する場合、前記同一の実行権限にて動作する2以上の仮想マシンの2以上の監視部のうちの第一の仮想マシンの監視部は、前記2以上の仮想マシンの前記2以上の監視部のうちの第二の仮想マシンの監視部のソフトウェアを監視対象に含み、前記2以上の仮想マシンは、攻撃者によって改ざんされる可能性に応じて前記第一の仮想マシン及び前記第二の仮想マシンのいずれかに分類され、同一の実行権限にて動作するコンテナの監視部が2以上存在する場合、前記同一の実行権限にて動作する2以上のコンテナの2以上の監視部のうちの第一のコンテナの監視部は、前記2以上のコンテナの前記2以上の監視部のうちの第二のコンテナの監視部のソフトウェアを監視対象に含み、前記2以上のコンテナは、攻撃者によって改ざんされる可能性に応じて前記第一のコンテナ及び前記第二のコンテナのいずれかに分類されてもよい。
これにより、ホストとなるオペレーティングシステムが、仮想ソフトウェア基盤であるハイパーバイザを用いて、複数の仮想マシンを実行及び管理する場合や、DockerやKubernetesなどに代表されるコンテナ仮想化基盤を用いて複数のコンテナを実行及び管理する場合であっても、外部ネットワークとの接続機能の有無など改ざんされる可能性に応じて仮想マシンまたはコンテナの信頼度は異なると想定できるため、複数の監視部を監視の信頼チェーンを構築することで、信頼度の低い第二の仮想マシンまたは第二のコンテナの監視部が乗っ取られた場合であっても、信頼度の高い第一の仮想マシンの監視部または第一のコンテナの監視部から異常を検知できる効果がある。
また、前記3以上の監視部のそれぞれは、所定の時間経過、所定の外部ネットワーク接続時間経過、システム起動、システム再起動、外部ネットワーク接続確立、及び、外部デバイス接続、のうち少なくとも1つを含むイベントが発生したタイミングに応じて、前記監視対象の監視を開始してもよい。
これにより、システム起動時にソフトウェアの完全性を検証するセキュアブートのように前段の監視部によって完全性が検証された監視部が、後段の監視部を検証するといった直列的な監視方法ではなく、非同期でソフトウェアの改ざんリスクが高いイベントに応じて監視を実施することで、監視処理の割り込み時間を短縮できる効果がある。さらに、仮想マシンごとのCPUの空き時間を活用して監視処理を行うなど、システムに負荷をかけることなく柔軟に監視処理の負担を配分できる効果がある。
また、前記監視装置は、車載システム上において動作し、前記3以上の監視部のそれぞれは、所定の走行時間経過、所定の停止時間経過、所定の走行距離経過、走行モードの切り替え、給油または給電の終了、車両診断の実施、及び、緊急アラートの発呼、のうち少なくとも1つを含むイベントが発生したタイミングに応じて、前記監視対象の監視を開始してもよい。
これにより、車載システムにおいて、ソフトウェアの改ざんリスクが高いイベントが発生するごとに、監視対象を監視することで、効率的に非同期監視を実施できる効果がある。
また、前記3以上の監視部のそれぞれは、他の監視部の監視処理の実行回数、監視処理において異常と判定された回数、及び、監視処理において正常と判定された回数、のうち少なくとも1つの回数に到達したタイミングに応じて、前記監視対象の監視を開始してもよい。
これにより、例えば、第一の監視部の監視対象である第二の監視部がすべての監視対象の数だけ監視処理を実行した後に、第一の監視部が第二の監視部のソフトウェアの監視処理を実施することで、第二の監視部の監視結果をすべて信頼するための監視処理の回数を1回に削減できる効果がある。また、例えば、第一の監視部の監視対象である第二の監視部が異常を1回検知した場合に、第一の監視部が第二の監視部のソフトウェアの監視処理を実行することで、第二の監視部の監視対象に異常が発生した場合にのみ監視処理を実行でき、監視処理の回数を削減できる効果がある。また、例えば、第一の監視部の監視対象である第二の監視部が正常を5回検出した場合に、第一の監視部が第二の監視部のソフトウェアの監視処理を1回実行することで、第一の監視部の監視処理を少なくでき、監視処理の回数を削減できる効果がある。これは、強い実行権限のソフトウェアを動作させるためには実行モードの切り替えが必要である場合が想定できるため、実行モードの切り替え回数を削減することでのオーバーヘッドを削減できる効果がある。
また、前記3以上の監視部のそれぞれは、前記監視対象がソフトウェアである場合、メモリまたはストレージに記憶されている前記監視対象であるソフトウェアのハッシュ値、マスク値、及び、複製値のうち少なくとも1つの情報を取得値として取得し、事前に定義された正解値である期待値と前記取得値とを比較し、前記期待値と前記取得値とが一致する場合に前記ソフトウェアが正常であると判定し、前記期待値と前記取得値とが一致しない場合に前記ソフトウェアが異常であると判定してもよい。
これにより、ソフトウェアの改ざんが行われた場合は、期待値と取得値が異なるため、ソフトウェア改ざんの有無を判定できる効果がある。また、ハッシュ値を用いることで、複製値よりも効率的に改ざんを判定でき、マスク値を用いることで複製値よりも効率的に改ざんの有無を判定できる効果がある。また、複製値を用いることで、ハッシュ値よりも正確に改ざんを判定でき、マスク値を用いることで、ハッシュ値よりも正確に改ざんを判定できる効果がある。
また、前記ソフトウェアは、仮想ソフトウェア基盤のプログラム及び設定ファイルの組み合わせと、仮想マシンのカーネルプログラム及び設定ファイルの組み合わせと、仮想マシン上のユーザアプリのプログラム及び設定ファイルの組み合わせと、前記3以上の監視部のそれぞれのプログラム及び設定ファイルの組み合わせとのうち少なくとも1つの組み合わせを含んでもよい。
これにより、ハイパーバイザと仮想マシンとユーザアプリと監視部に関連するソフトウェアの改ざんの有無を判定できる。
また、前記3以上の監視部のそれぞれは、前記監視対象が通信ログである場合、通信ログを取得し、許可リストと、拒否リストと、正常時の統計情報とのうち少なくとも1つを用いて前記通信ログを検証し、(i)前記許可リストに含まれる場合に前記通信ログが正常であると判定し、前記許可リストに含まれない場合に前記通信ログが異常であると判定する第一判定、(ii)前記拒否リストに含まれない場合に前記通信ログが正常であると判定し、前記拒否リストに含まれる場合に前記通信ログが異常であると判定する第二判定、及び、(iii)前記正常時の統計情報から逸脱していない場合に前記通信ログが正常であると判定し、前記正常時の統計情報から逸脱している場合に前記通信ログが異常であると判定する第三判定、のいずれか1つの判定を行ってもよい。
これにより、異常な通信が送受信された場合は許可リストに含まれず、拒否リストに含まれ、正常時の統計情報から逸脱するため、通信の異常を判定できる。さらに、異常な通信の送信元や宛先情報を取得でき、送信元のソフトウェアが改ざんされている可能性が高く、宛先のソフトウェアが次の攻撃の対象になっている可能性が高いと把握できる効果がある。
また、前記通信ログは、イーサネットと、CANプロトコルと、FlexRayプロトコルと、SOME/IPプロトコルと、SOME/IP-SDプロトコルと、システムコールと、ハイパーコールとのうち少なくとも一つを含んでもよい。
これにより、車載システムに搭載されるネットワークプロトコルを監視対象とすることで、プロトコル特有のパラメータを用いて通信の異常を判定できる効果がある。さらに、異常と判定された通信ログから送信元と宛先を取得でき、異常が発生しうる監視部や監視対象を特定できる効果がある。さらに、特権命令であるシステムコールや、ハイパーコールを監視対象とすることで、実行権限の境界にて発生する異常を判定でき、異常が発生しうる監視部や監視対象を特定できる効果がある。
また、前記3以上の監視部のそれぞれは、前記監視対象ごとに設定された優先度に応じて、前記監視対象の監視頻度と、前記監視対象の検証方法と、前記監視対象の選択方法のうち少なくとも1つを変更してもよい。
これにより、監視対象ごとに改ざんされる可能性と改ざんされた場合の影響の大きさには差があると想定できるため、監視対象ごとに適切な優先度を設定することで、限られたリソース内で改ざんリスクの高い監視対象を重点的に監視できる効果がある。
また、前記優先度は、前記監視対象の実行権限と、前記3以上の監視部のうちの1つの監視部または前記監視が動作する仮想マシンが外部ネットワーク接続機能を有するか否かと、前記1つの監視部または前記監視が動作する仮想マシンが車両制御機能を有するか否かとのうち少なくとも1つに応じて設定されてもよい。
これにより、強い実行権限で動作するソフトウェアは脆弱性を含まないように単純なアルゴリズムで実装されると想定できるため、改ざんされる可能性が低いため優先度を低く設定できる効果がある。また、外部ネットワークと接続されない仮想マシンや、信頼可能な車両の制御機能をもつ仮想マシンは改ざんされる可能性が低いため、優先度を低く設定できる効果がある。
また、前記監視装置は、さらに、前記監視装置が動作するシステムの状態またはイベントに応じて、監視情報に含まれる優先度と、前記監視対象に含まれる監視担当及び監視対象の組み合わせである監視構成とのうち少なくとも1つを変更する管理部を含んでもよい。
これにより、システムの状態またはイベントによって監視対象の重要度に差がある場合、監視情報を適切な固定値として設定することは困難であると想定できるため、システム起動後であっても監視情報と監視構成を柔軟に変更することで、効果的に監視できる効果がある。例えば、優先度を柔軟に変更し、優先度に応じて監視対象の監視頻度と監視精度と監視手段を変更することで、限られたリソース内で改ざんリスクの高い監視対象を重点的に監視できる効果がある。また、一つの仮想マシンが再起動するなど、一部の監視部が動作できない状態になった場合に他の監視部が動作できない監視対象の監視を引き継ぐように監視情報を変更することで、監視対象を継続的に監視できる効果がある。また、例えば、一つの仮想マシンが異常と判定された場合に他の監視部が監視対象の監視を引き継ぐことで、監視対象を信頼できる監視部から監視できる効果がある。また、例えば、一つの仮想マシンが異常と判定された場合に他の監視部が監視対象の監視を追加で実施することで、複数の監視部によって監視を強化できる効果がある。また、例えば、一つの仮想マシンのCPUやメモリのリソースが圧迫している場合、他の監視部が監視対象の監視を引き継ぐことで、リソースが圧迫によるシステム影響を低減できる効果がある。
また、前記管理部は、外部ネットワーク接続中か否かと、外部ネットワーク接続確立イベントの発生の有無と、監視マシンのシステム状態と、前記監視部の監視結果と、異常を検知した監視部の実行権限と、異常を検知したソフトウェアの実行権限と、異常を検知した通信ログの宛先または送信元とのうち少なくとも1つに応じて、前記優先度を変更してもよい。
これにより、ネットワーク接続に関する状態は攻撃可能性に影響するため、監視対象の攻撃可能性の変化に応じて優先度を変更できる効果がある。さらに、ソフトウェアの異常が判定された場合、異常ソフトウェアと同じ仮想マシンのソフトウェアや、同じ実行権限で動作するソフトウェアや、異常を判定した監視部のソフトウェアにおいて、攻撃が発生する可能性が高いと想定できるため、攻撃可能性の変化に応じて優先度を変更できる効果がある。さらに、通信の異常を判定した場合、通信の送信元に異常が発生している可能性が高く、通信の送信先に攻撃が発展する可能性が高いため、攻撃可能性の変化に応じて優先度を変更できる効果がある。
また、前記監視装置は、車載システム上において動作し、前記管理部は、車両の走行状態に応じて、車両の制御機能を有する仮想マシンで動作する監視対象の優先度を変更し、車両の走行状態は、停止中、手動運転中、高度運転支援中、及び、自動運転中のうちいずれかであってもよい。
これにより、自動運転中や高度運転支援中の場合、車両の制御機能を有する制御仮想マシンのソフトウェアから、車両の走る、曲がる、止まるに関わる制御コマンドが送信され、エンジン、ステアリング、ブレーキなど制御する制御ECUが制御コマンドに従うと想定でき、ソフトウェア改ざんの影響が大きいため、車両の制御機能を有する制御仮想マシンのソフトウェアの優先度を上げて重点的に監視できる効果がある。一方で、停止中または手動走行中の場合、制御ECUが制御コマンドに従わない状態であると想定でき、ソフトウェア改ざんの影響が小さいため、車両の制御機能を有する制御仮想マシンのソフトウェアの監視の優先度を下げることで、他の監視対象の監視処理を優先できる効果がある。
また、前記管理部は、前記監視構成の変更後であっても、信頼度の低い監視部のソフトウェアを前記信頼度の低い監視部よりも信頼度の高い監視部が監視する監視の信頼チェーンを構築できるように、監視構成を変更してもよい。
これにより、監視構成を変更したとしても、強い実行権限の監視部から弱い実行権限の監視部のソフトウェアを監視することができ、改ざんされる可能性が低い仮想マシンの監視部から改ざんされる可能性の高い仮想マシンの監視部のソフトウェアを監視できるため、いずれかの弱い実行権限監視部が乗っ取られた場合であっても、異常を判定できる効果がある。
また、前記管理部は、外部ネットワーク接続中か否かと、外部ネットワーク接続確立イベントの発生の有無と、仮想マシンのシステム状態と、前記監視部の監視結果と、異常を検知した監視部の実行権限と、異常を検知したソフトウェアの実行権限と、異常を検知した通信ログの宛先または送信元とのうち少なくとも1つに応じて、監視構成を変更してもよい。
これにより、ネットワーク接続に関する状態は攻撃可能性に影響するため、監視対象の攻撃可能性の変化に応じて監視構成を変更できる効果がある。また、一つの仮想マシンが再起動するなど、一部の監視部が無効化状態になった場合に他の監視部が監視対象の監視を引き継ぐことで、監視対象を継続的に監視できる効果がある。さらに、一つの仮想マシンが異常と判定された場合に他の監視部が監視対象の監視を引き継ぐことで、監視対象を信頼できる監視部から監視できる効果がある。さらに、一つの仮想マシンが異常と判定された場合に他の監視部が監視対象の監視を追加で実施することで、複数の監視部によって監視を強化できる効果がある。さらに、一つの仮想マシンのCPUやメモリのリソースが圧迫している場合、他の監視部が監視対象の監視を引き継ぐことで、リソースが圧迫によるシステム影響を削減できる効果がある。
また、前記監視装置は、車載システム上において動作し、前記管理部は、車両の走行状態に応じて、車両の制御機能を有する仮想マシンに関係する監視構成を変更し、前記車両の走行状態は、停止中、手動運転中、高度運転支援中、自動運転中のうちいずれかであってもよい。
これにより、自動運転中や高度運転支援中の場合、車両の制御機能を有する制御仮想マシンのソフトウェアから、車両の走る、曲がる、止まるに関わる制御コマンドが送信され、エンジン、ステアリング、ブレーキなど制御する制御ECUが制御コマンドに従うと想定でき、ソフトウェア改ざんの影響が大きいため、複数の監視部によって制御仮想マシンのソフトウェアを監視するよう監視構成を変更できる効果がある。停止中または手動走行中の場合、制御ECUが制御コマンドに従わない状態であると想定でき、ソフトウェア改ざんの影響が小さいため、一つのみの監視部によって負荷の小さい通常の監視を実施できる効果がある。
また、前記管理部は、(i)予め定義された2以上の監視構成から一つを選択する手段と、(ii)2以上の監視部を頂点とし、監視担当を道の始点とし、監視対象を道の終点とする有向グラフとして前記監視構成を記憶し、所定のアルゴリズムで有向グラフを再構築する手段と、(iii)前記2以上の監視部をノードとし、前記監視担当を親ノードとし、前記監視対象を子ノードとするツリー構造として前記監視構成を記憶し、所定のアルゴリズムでツリー構造を再構築する手段と、のうち少なくとも1つの手段で前記監視構成を変更してもよい。
これにより、複数の監視構成のパターンから、現在のシステム状況及びイベントに応じて適切な監視構成に変更できる効果がある。また、監視構成を有向グラフのデータ構造で保持することで、一部の監視部が無効化または一部の監視部において異常が判定されたなどの場合に、少なくとも1つの監視部が監視対象を監視できるよう監視構成を再計算可能にする効果がある。また、前記管理部は、監視部をノードとし、監視担当を親ノードとし、監視対象を子ノードとするツリー構造として前記監視構成を記憶し、所定のアルゴリズムでツリー構造を再構築することで、前記監視構成を変更する、監視装置である。また、監視構成をツリー構造のデータ構造で保持することで、一部の監視部が無効化または一部の監視部において異常が判定されたなどの場合に、少なくとも1つの監視部が監視対象を監視できるよう監視構成を再計算可能にする効果がある。
また、前記監視装置は、さらに、監視サーバーへ監視結果を通知する監視サーバー通信部を備えてもよい。
これにより、監視サーバーを介して監視結果をセキュリティ分析官へ通知でき、異常が発生した場合にはソフトウェアの更新など対策を検討できる効果がある。
本開示の一態様に係る監視システムは、監視装置と監視サーバーとで構成される監視システムであって、前記監視装置は、それぞれがソフトウェア及び通信ログの少なくとも1つを監視対象として監視する3以上の監視部と、監視部識別子と、監視対象識別子と、正常判定時刻と、異常判定時刻と、のうち少なくとも2つを監視結果として前記監視サーバーへ送信する監視サーバー通信部と、を備え、前記3以上の監視部は、第一の実行権限にて動作する第一の監視部と、前記第一の実行権限よりも信頼性が低い第二の実行権限にて動作する第二の監視部と、前記第二の実行権限と信頼性が同じ、または、前記第二の実行権限よりも信頼性が低い第三の実行権限にて動作する第三の監視部とを含み、前記第一の監視部は、前記第二の監視部のソフトウェアを監視し、前記第一の監視部及び前記第二の監視部の少なくとも1つは、前記第三の監視部のソフトウェアを監視し、前記監視サーバーは、前記監視結果を受信し、グラフィカルユーザーインターフェース上に前記監視結果を表示する監視結果表示部を備える。
これにより、セキュリティ分析官は監視結果を視覚的に把握することができ、異常が発生した場合にはソフトウェアの更新など対策を迅速に検討できる効果がある。
また、前記監視結果表示部は、システムアーキテクチャに関連付けて前記監視結果を表示し、異常を検知した監視部または異常が検知された監視対象を強調する手段と、所定のタイムラインに関連付けて監視結果を表示し、正常判定時刻または異常判定時刻を強調する手段とのうち少なくとも1つの手段でグラフィカルユーザーインターフェース上に監視結果を表示してもよい。
これにより、セキュリティ分析官は監視部の場所と、監視対象の場所、監視結果を直感的に把握することができ、異常が発生した場合にはソフトウェアの更新など対策をより迅速に検討できる効果がある。また、セキュリティ分析官は監視結果の時系列を直感的に把握することができ、異常が発生した場合にはソフトウェアの更新など対策をより迅速に検討できる効果がある。
また、前記監視サーバーは、さらに、前記監視対象と、前記監視対象を監視する監視部と、前記監視対象の優先度と、前記優先度に対応した監視方法とのうち少なくとも1つの監視情報の変更を受け付け、前記監視装置に前記変更を要求する監視情報変更部を備え、前記監視装置は、さらに、前記監視情報変更部の要求に応じて前記監視情報を更新する監視情報更新部を備えてもよい。
これにより、セキュリティ分析官は監視結果を分析した結果、監視対象や監視部、優先度、優先度ごとの監視方法などの修正が必要であると判断した場合に、迅速にシステムに修正を反映することができる効果がある。
本開示の一態様に係る監視方法は、3以上の監視部を備える監視装置によって実行される監視方法であって、前記3以上の監視部は、第一の実行権限にて動作する第一の監視部と、前記第一の実行権限よりも信頼性が低い第二の実行権限にて動作する第二の監視部と、前記第二の実行権限と信頼性が同じ、または、前記第二の実行権限よりも信頼性が低い第三の実行権限にて動作する第三の監視部とを含み、前記第一の監視部は、前記第二の監視部のソフトウェアを監視し、前記第一の監視部及び前記第二の監視部の少なくとも1つは、前記第三の監視部のソフトウェアを監視する。
これにより、システムに侵入した攻撃者は弱い第三の実行権限を獲得後、より強い第二の実行権限、第一の実行権限の獲得を目指すと想定できるため、第二の実行権限よりも弱い第三の実行権限が乗っ取られた後、第三の監視部のソフトウェアを改ざんすることで監視を回避しようと試みた場合であっても、第一の監視部または第二の監視部から第三の監視部のソフトウェアの異常を検知できる効果がある。また、強い実行権限でプログラムを動作させる環境とは弱い実行権限でプログラムを動作させる環境は分離されると想定できるため、実行権限が異なる3段階の監視部を用いることによって、3種類の環境に渡って広い範囲の監視対象を監視できる効果がある。また、強い実行権限で動作するソフトウェアは脆弱性を含まないように単純なアルゴリズムで実装されると想定できるため、強い実行権限で動作する監視部には単純なアルゴリズムを採用し、弱い実行権限で動作する監視部には高度で複雑なアルゴリズムを採用できる効果がある。
なお、これらの全般的又は具体的な態様は、システム、方法、集積回路、コンピュータプログラム又はコンピュータで読み取り可能なCD-ROM等の記録媒体で実現されても良く、システム、方法、集積回路、コンピュータプログラム又は記録媒体の任意な組み合わせで実現されてもよい。
以下、実施の形態に係る監視装置について図面を参照しながら説明する。ここで示す実施の形態は、いずれも本開示の一具体例を示すものである。従って、以下の実施の形態で示される数値、構成要素、構成要素の配置及び接続形態、並びに、処理の要素としてのステップ及びステップの順序等は、一例であって本開示を限定するものではない。以下の実施の形態における構成要素のうち、独立請求項に記載されていない構成要素については、任意に付加可能な構成要素である。また、各図は、模式図であり、必ずしも厳密に図示されたものではない。
(実施の形態)
[監視システムの全体構成図]
図1は、実施の形態における監視システムの全体構成図である。
監視システムは、監視サーバー10と、車載システム20とを備える。監視サーバー10と車載システム20とは、外部ネットワーク30を介して接続される。
外部ネットワーク30は、例えば、インターネットである。外部ネットワーク30の通信方法は、有線であっても無線であってもよい。また、無線通信方式は既存技術であるWi-Fi(登録商標)や、3G/LTE(Long Term Evolution)やBluetooth(登録商標)、V2X通信方式であってもよい。
監視サーバー10は、車載システム20から車載システム20のセキュリティ状態に関する情報である監視結果を取得して、グラフィカルユーザーインターフェースを用いて監視結果を表示する装置である。監視サーバー10は、例えば、セキュリティオペレーションセンターにて、セキュリティ分析官が監視結果を確認して、車載システム20において異常が発生した場合にソフトウェア更新などの対策を検討する際に利用される。
車載システム20は、通信の制御、車両の制御、及び、映像の出力などを実施し、車載システム20のセキュリティ状態を監視し、監視サーバー10へセキュリティ状態の監視結果を通知する装置である。図1では、車載システム20は1台のみ記載しているが、1以上の車載システム20それぞれが、監視サーバー10へセキュリティ状態の監視結果を送信する。車載システム20の詳細は後述する。
[車載システム20の全体構成図]
図2は、実施の形態における車載システムの構成図を示す図である。
車載システム20は、統合ECU200と、ゲートウェイECU300と、ステアリングECU400aと、ブレーキECU400bと、ZoneECU500と、フロントカメラECU600aと、リアカメラECU600bとを備える。
統合ECU200と、ゲートウェイECU300とは、ネットワークプロトコルの一種のCAN(Control Area Network)であるCAN40を介して接続される。ここで利用されるネットワークプロトコルは、CANに限らずに、CAN-FDや、FlexRayプロトコルなどの車載システムで利用されるネットワークプロトコルであってもよい。
また、ゲートウェイECU300と、ステアリングECU400aと、ブレーキECU400bとは、CAN41を介して接続される。
また、統合ECU200と、ZoneECU500とは、ネットワークプロトコルの一種のEthernet(商標登録)のプロトコルであるイーサネット50を介して接続される。イーサネット50は、例えば、SOME/IP(Scalable Service-Oriented MiddlewarE over IP)プロトコルである。ここで利用されるネットワークプロトコルは、SOME/IPでなくとも、SOME/IP-SDや、CAN-XLなど車載システムで利用されるネットワークプロトコルであってもよい。
また、ZoneECU500と、フロントカメラECU600aと、リアカメラECU600bとは、イーサネット51を介して接続される。イーサネット51は、イーサネット50と同じネットワークプロトコルであってもよいし、異なるネットワークプロトコルであってもよい。
また、統合ECU200と、監視サーバー10とは、外部ネットワーク30を介して接続される。
統合ECU200は、外部ネットワーク30、CAN40及びイーサネット50を介してメッセージを送受信する通信制御と、CAN40及びイーサネット50を介してゲートウェイECU300及びZoneECU500へ車両の制御を指示する車両制御と、インフォテイメントシステムやインストルメントパネルへの映像出力とを実施するECUである。また、統合ECU200は、統合ECU200のセキュリティ状態を監視し、監視サーバー10へ監視結果を通知するECUである。統合ECU200の詳細は後述する。
ゲートウェイECU300は、統合ECU200と、ステアリングECU400a及びブレーキECU400bとの間で送受信されるメッセージを仲介するECUである。
ステアリングECU400aは、車両に搭載されるステアリングによる操舵を制御するECUである。
ブレーキECU400bは、車両に搭載されるブレーキを制御するECUである。
車載システム20は、ステアリングECU400a及びブレーキECU400bの他に、車両のエンジンやボディを制御するECUを用いて車両の走る、曲がる、止まるといった制御を実現する。
ZoneECU500は、統合ECU200と、フロントカメラECU600a及びリアカメラECU600bとの間で送受信されるメッセージを仲介するECUである。
フロントカメラECU600aは、車両の前方に搭載され、車両の前方を撮影するカメラの映像を取得するECUである。
リアカメラECU600bは、車両の後方に搭載され、車両の後方を撮影するカメラの映像を取得するECUである。
図2では、フロントカメラECUとリアカメラECUのみを記載しているが、GPSなどの各種センサー情報を収集するECUを用いて、自動運転やアダプティブクルーズコントロール、自動駐車などの先進運転支援機能を実現する。
[統合ECUの構成図]
図3は、実施の形態における統合ECU200の構成図である。統合ECU200は、外部アプリA100と、制御アプリA200と、映像アプリA300と、外部仮想マシンVM100と、制御仮想マシンVM200と、映像仮想マシンVM300と、ハイパーバイザHV100と、セキュアアプリSA100と、セキュアオペレーティングシステムSOS100とを備える。なお、以下では、外部アプリA100と、制御アプリA200と、映像アプリA300を総称してアプリケーションと呼ぶことがある。また、外部仮想マシンVM100と、制御仮想マシンVM200と、映像仮想マシンVM300を総称して仮想マシンと呼ぶことがある。統合ECU200は、監視装置の一例である。
ハイパーバイザHV100は、ハイパーバイザ等の仮想ソフトウェア基盤であり、1以上の仮想マシンを実行及び管理するソフトウェアである。一般に、ハイパーバイザは、タイプ1と呼ばれるベアメタル型ハイパーバイザと、タイプ2と呼ばれるホスト型とに区別される。組み込みシステムでは、一般に、ハイパーバイザによる処理のオーバーヘッドを考慮して、タイプ1が用いられる。タイプ1のハイパーバイザは、コードサイズが小さいため、脆弱性を含む可能性が低く、アプリケーションや仮想マシンと比較して信頼できると想定できる。
実施の形態では、仮想化システムがタイプ1のハイパーバイザにより実現される例について説明するが、仮想化システムは、タイプ2のハイパーバイザにより実現されてもよいし、コンテナ型の仮想化アプリケーションにより実現されてもよい。
セキュアオペレーティングシステムSOS100は、脆弱性を含まないように実装された信頼可能なオペレーティングシステムである。さらに、システム起動時に信頼可能なハードウェアのRoot Of Trustからオペレーティングシステムのソフトウェアは検証されるため、アプリケーション、仮想マシン、及び、ハイパーバイザHV100の中で最も信頼できると想定できる。セキュアオペレーティングシステムSOS100は、例えば、TEE(Trusted Execution Environment)と呼ばれる実行環境の制御を用いて実現される。また、セキュアオペレーティングシステムSOS100は、例えば、ARM系のCPU(Central Processing Unit)におけるCortex-Aファミリでは標準機能の1つであるTrustZone機構により実現され得る。また、セキュアオペレーティングシステムSOS100は、AppleのSEP(Secure Enclave Processor)、または、GoogleのTitanMなどによっても実現され得る。
セキュアアプリSA100は、脆弱性を含まないように実装された信頼可能なアプリケーションである。セキュアアプリSA100は、信頼できるセキュアオペレーティングシステムSOS100の上で動作するため、アプリケーション、仮想マシン、及び、ハイパーバイザHV100より信頼できると想定できる。一方で、セキュアアプリSA100は、脆弱性を含まない実装が求められるため、セキュアアプリSA100のプログラムは単純であることが要求される。
外部アプリA100は、外部ネットワーク30を介して監視サーバー10と通信するアプリケーションである。外部アプリA100は、攻撃者の侵入口となりうる外部ネットワーク30と接続されるため、外部ネットワーク30と接続されていない制御アプリA200及び映像アプリA300に比べて脆弱であると想定できる。
外部仮想マシンVM100は、外部アプリA100を動作させるオペレーティングシステムである。外部仮想マシンVM100は、攻撃者の侵入口となりうる外部アプリA100を動作させているため、制御仮想マシンVM200及び映像仮想マシンVM300に比べて脆弱であると想定できる。
制御アプリA200は、CAN40を介してゲートウェイECU300と通信し、車載システム20を備える車両の走行に関する動作を制御するアプリケーションである。制御アプリA200は、外部ネットワーク30と接続されていないため、外部アプリA100に比べて信頼できると想定できる。さらに、制御アプリA200は、車両の走行に関する動作の制御に関わるソフトウェア開発では、機能安全規格に適用するため、セキュアな設計及び実装がなされる。このため、制御アプリA200は、外部アプリA100に比べて信頼できると想定できる。ただし、制御アプリA200は、乗っ取られた場合、車両の走行に関する動作の制御の機能を攻撃者が使えるため、車両の走行に関する動作への影響が大きいと想定できる。
制御仮想マシンVM200は、制御アプリA200を動作させるオペレーティングシステムである。制御仮想マシンVM200は、外部ネットワーク30と接続されていないため、攻撃者の侵入口となりうる可能性は低いと想定できる。さらに、制御仮想マシンVM200は、車両の走行に関する動作の制御に関わるソフトウェア開発では、機能安全規格に適用するため、セキュアな設計及び実装がなされる。このため、制御仮想マシンVM200は、外部アプリA100または外部仮想マシンVM100に比べて信頼できると想定できる。ただし、制御仮想マシンVM200は、乗っ取られた場合、車両の走行に関する動作の制御の機能を攻撃者が使えるため、外部仮想マシンVM100または映像仮想マシンVM300が乗っ取られた場合と比較して、影響が大きいと想定できる。
映像アプリA300は、イーサネット50を介してZoneECU500と通信し、カメラの映像などを取得し、インフォテイメントシステムやインストルメントパネル、ヘッドアップディスプレイに映像を出力するアプリケーションである。また、カメラ映像は自動運転などの先進運転支援機能を実現するための情報としても利用される。映像アプリA300は、外部ネットワーク30と接続されていないため、攻撃者の侵入口となる可能性が低く、外部アプリA100に比べて信頼できると想定できる。また、映像アプリA300は、乗っ取られた場合、車両の走行に関する動作の制御の機能を攻撃者は使えないため、制御仮想マシンVM200が乗っ取られた場合と比較して、車両の走行に関する動作への影響が小さいと想定できる。
映像仮想マシンVM300は、映像アプリA300を動作させるオペレーティングシステムである。映像仮想マシンVM300は、外部ネットワーク30と接続されていないため、攻撃者の侵入口となる可能性が低く、外部アプリA100に比べて信頼できると想定できる。また、映像仮想マシンVM300は、乗っ取られた場合、車両の走行に関する動作の制御の機能を攻撃者は使えないため、制御仮想マシンVM200が乗っ取られた場合と比較して、車両の走行に関する動作への影響が小さいと想定できる。
ここで、各プログラムの実行権限について説明する。一般に、CPUは複数の特権レベルを各プログラムに割り当てることができる。例えば、ARM系のCPUでは、EL(Exception Level)に対応し、Intel系のCPUでは、Protection Ringに対応する。さらに、CPUは、TEEを用いてセキュアワールドとノーマルワールドの2種類の実行環境の制御することで、セキュアにプログラムを実行することができる。一般に、この特権レベルと2種類の実行環境の制御によって、5種類の実行権限が使い分けられる。実施の形態においては、セキュアオペレーティングシステムSOS100に、最も強いセキュアな実行権限(PL4)を割り当て、オペレーティングシステム上のアプリケーション(つまり、セキュアアプリSA100)に次に強いセキュアな実行権限(PL3)を割り当て、ハイパーバイザHV100に次に強い実行権限(PL2)を割り当て、仮想マシン(つまり、外部仮想マシンVM100、制御仮想マシンVM200及び映像仮想マシンVM300)に次に強い実行権限(PL1)を割り当て、仮想マシン上のアプリケーション(つまり、外部アプリA100、制御アプリA200及び映像アプリA300)に最も弱い実行権限(PL0)を割り当てる。また、弱い実行権限で動作するプログラムから、強い実行権限で動作するソフトウェアが改ざんされることは基本的には困難である。しかし、実行権限が強い場合であっても、脆弱性や設計不備によってソフトウェアを改ざんされる可能性があるため、強い実行権限で動作するソフトウェアはシンプルなプログラムであること要求される。
上述した通り、外部アプリA100が改ざんされる可能性が最も高いため信頼度が低く、制御アプリA200、映像アプリA300、外部仮想マシンVM100、制御仮想マシンVM200、映像仮想マシンVM300、ハイパーバイザHV100、セキュアアプリSA100、及び、セキュアオペレーティングシステムSOS100の順番に、改ざんされる可能性が低くなる。改ざんされる可能性が低いことは信頼度が高いことを意味する。
ここで、攻撃者の攻撃シナリオについて説明する。攻撃者は、外部アプリA100の脆弱性を悪用して、外部ネットワーク30から外部仮想マシンVM100へ侵入し、ユーザ権限を獲得する。そして、外部仮想マシンVM100のシステムコール等の脆弱性を突いて、外部仮想マシンVM100のカーネル権限を獲得する。そして、ハイパーバイザHV100のハイパーコール等の脆弱性を突いて、ハイパーバイザHV100の権限または制御仮想マシンVM200や映像仮想マシンVM300の権限を獲得する。ここで、ハイパーコールとは、例えば、仮想マシン間の内部通信と、仮想マシンの起動や終了を指示する特権命令である。
上述した攻撃シナリオにおいて、攻撃者の振る舞いを正確に捕捉するために、アプリケーション、仮想マシン、ハイパーバイザHV100、及び、セキュアアプリSA100それぞれにセキュリティ対策機構が導入されることが想定される。セキュリティ対策機構は後述するアプリケーション監視部、仮想マシン監視部、HV監視部HV110、及び、SA監視部SA110を含む。
なお、図3では記載が省略されているが、燃料や給電状態、給油状態を管理する機能、事故などシステム異常が発生した場合に緊急アラートを発呼する機能、車両診断を制御する機能、外部デバイス接続を監視する機能が統合ECU200に搭載される。
[統合ECUの構成図の詳細]
図4は、実施の形態における統合ECUの構成図の詳細を示す図である。
外部アプリA100は外部通信とアプリ領域のソフトウェアとを監視するアプリ監視部A110を備え、制御アプリA200はCAN通信とアプリ領域のソフトウェアとを監視するアプリ監視部A210を備え、映像アプリA300はイーサネット通信とアプリ領域のソフトウェアとを監視するアプリ監視部A310を備える。なお、アプリ領域のソフトウェアとは、ユーザ領域のソフトウェアである。以下、アプリ監視部A110と、アプリ監視部A210と、アプリ監視部A310とを総称してアプリケーション監視部と呼ぶことがある。また、外部仮想マシンVM100はシステムコールとハイパーコールとVM領域(OS領域またはカーネル領域とも呼ぶ)のソフトウェアとアプリ領域のソフトウェアとを監視するVM監視部VM110を備え、制御仮想マシンVM200はシステムコールとハイパーコールとVM領域(OS領域またはカーネル領域とも呼ぶ)のソフトウェアとアプリ領域のソフトウェアとを監視するVM監視部VM210を備え、映像仮想マシンVM300はシステムコールとハイパーコールとVM領域(OS領域またはカーネル領域とも呼ぶ)のソフトウェアとアプリ領域のソフトウェアとを監視するVM監視部VM310を備える。以下、VM監視部VM110と、VM監視部VM210と、VM監視部VM310とを総称して仮想マシン監視部と呼ぶことがある。また、ハイパーバイザHV100はHV領域のソフトウェアとVM領域のソフトウェアとを監視するHV監視部HV110を備える。また、セキュアアプリSA100はHV領域のソフトウェアとVM領域のソフトウェアとを監視するSA監視部SA110と、監視情報を管理する管理部SA120を備える。以下、アプリケーション監視部と、仮想マシン監視部と、HV監視部HV110と、SA監視部SA110とを総称して多層監視部と呼ぶことがある。監視情報の詳細は後述する。アプリケーションと、アプリケーション監視部と、仮想マシンと、仮想マシン監視部と、ハイパーバイザHV100と、HV監視部HV110と、セキュアアプリSA100と、SA監視部SA110との詳細は後述する。
このように、攻撃者の振る舞いを正確に捕捉するために、アプリケーション、仮想マシン、ハイパーバイザHV100、及び、セキュアアプリSA100のそれぞれにセキュリティ対策機構であるアプリケーション監視部と、仮想マシン監視部と、HV監視部HV110と、SA監視部SA110とが導入された構成の統合ECU200が想定される。しかし、攻撃者は獲得した実行権限において実行されるセキュリティ対策機構のソフトウェアを改ざんすることで、セキュリティ対策機構を無効化できるため、単純にセキュリティ対策機構を導入するだけでは不十分である。
また、セキュリティ対策機構を改ざんされる可能性が低いセキュアアプリSA100やセキュアオペレーティングシステムSOS100にすべてのセキュリティ対策機構を実装することが想定されるが、上述の通り、脆弱性が含まれないシンプルなプログラムが要求されるため、複雑なアルゴリズムがセキュリティ対策機構に必要とされる場合、すべてのセキュリティ対策機構の実装は困難である。例えば、ネットワークの異常検知に利用される通信ログの蓄積処理や統計処理、機械学習による処理は、セキュアアプリSA100やセキュアオペレーティングシステムSOS100では実施できない場合がある。また、実行環境の分離によって、セキュアアプリSA100やセキュアオペレーティングシステムSOS100がアクセス可能なストレージ領域及びメモリ領域は限定されるため、セキュリティ対策機構に必要な対象を取得できない場合、セキュリティ対策機構の実装は困難である。例えば、セキュアアプリSA100やセキュアオペレーティングシステムSOS100からは、アプリケーションのソフトウェアや、アプリケーションが利用する通信を取得できない場合がある。
上記2つの理由から、アプリケーション、仮想マシン、ハイパーバイザHV100、及び、セキュアアプリSA100のそれぞれにセキュリティ対策機構を導入することが望ましいが、セキュリティ対策機構自体が改ざんされるリスクが課題となる。そこで、例えば、SA監視部SA110がHV監視部HV110のソフトウェアを監視し、HV監視部HV110が仮想マシン監視部のソフトウェアを監視し、仮想マシン監視部がアプリケーション監視部のソフトウェアを監視する構成が考えられる。これにより、アプリケーション監視部が改ざんされた場合であっても仮想マシン監視部が異常を検知でき、仮想マシン監視部のソフトウェアが改ざんされた場合であってもHV監視部HV110が異常を検知でき、HV監視部HV110のソフトウェアが改ざんされた場合であってもSA監視部SA110が異常を検知できる。このように、それぞれの監視部を、より強い実行権限またはより高い信頼度で動作する少なくとも1つの多層監視部から監視することで、一つの監視部が改ざんされて無効化された場合であっても他の監視部から異常を検知できる。そして、信頼可能なソフトウェアであるSA監視部SA110から、ハイパーバイザHV100、仮想マシン、アプリケーションまで監視を連鎖させるため、攻撃者はすべての監視を回避することは困難である。上記のように、多層監視部において、より強い実行権限またはより高い信頼度を有する監視部から、弱い実行権限または低い信頼度を有する監視部を監視する連鎖を構築することを監視の信頼チェーンを構築すると呼ぶ。
[外部アプリの構成図]
図5は、実施の形態における外部アプリの構成図を示す図である。
外部アプリA100は、外部通信部A101と、外部アプリ実行部A102と、アプリ領域記憶部A103と、アプリ監視部A110とを備える。外部通信部A101は、外部ネットワーク30を介して通信する。外部アプリ実行部A102は、外部通信及びシステムコールを用いて、ナビゲーション情報の取得、音楽やビデオなどのストリーミング情報の取得、及び、更新ソフトウェアのダウンロードを実施する。アプリ領域記憶部A103は、外部アプリのプログラムと設定ファイルを記憶するストレージ及びメモリである。
アプリ監視部A110は、監視対象取得部A111と、システム状態取得部A112と、監視部A113と、監視情報記憶部A114と、監視情報更新部A115と、監視結果通知部A116とを備える。
監視対象取得部A111は、アプリ領域記憶部A103から監視対象であるソフトウェアに関する情報を取得し、外部通信部A101から外部通信ログに関する情報を取得する機能を有する。
システム状態取得部A112は、外部通信部A101からインターネット接続状態をシステム状態として取得する機能と、監視部A113からセキュリティ状態をシステム状態として取得する機能とを有する。
監視部A113は、監視対象取得部A111にて取得したソフトウェアに関する情報の取得値と、監視情報記憶部A114が記憶する監視情報に含まれる期待値とを比較し、取得値と期待値とが異なる場合にソフトウェアに関する情報が異常であると判定し、取得値と期待値とが一致する場合にソフトウェアに関する情報が正常であると判定する機能を有する。さらに、監視部A113は、監視対象取得部A111にて取得した外部通信ログを、許可リストまたは拒否リスト、及び、通常時の統計情報を用いて、外部通信ログに含まれる特定のメッセージが異常であるか否かを判定する機能を有する。
監視情報記憶部A114は、監視担当と、監視対象と、期待値と、優先度とが含まれる監視情報を記憶する機能を有する。
監視情報更新部A115は、管理部SA120からの要求に応じて監視情報を更新する機能を有する。
監視結果通知部A116は、管理部SA120へ監視結果とシステム状態を通知する機能を有する。
監視情報の詳細は後述する。
このように、アプリ監視部A110はアプリ領域のソフトウェア及び外部通信を監視でき、インターネット接続状態と外部アプリA100のセキュリティ状態を取得できる。外部通信の監視は統計情報を用いた複雑なアルゴリズムになると想定される。
[制御アプリの構成図]
図6は、実施の形態における制御アプリの構成図を示す図である。
制御アプリA200は、CAN通信部A201と、制御アプリ実行部A202と、アプリ領域記憶部A203と、アプリ監視部A210とを備える。CAN通信部A201は、CAN40を介してゲートウェイECU300と通信する。制御アプリ実行部A202は、CAN通信とシステムコールを用いて、VM100の車両の走る、曲がる、止まるなどの車両の走行に関する制御を指示する。アプリ領域記憶部A203は、制御アプリのプログラムと設定ファイルとを記憶するストレージ及びメモリである。
アプリ監視部A210は、監視対象取得部A211と、システム状態取得部A212と、監視部A213と、監視情報記憶部A214と、監視情報更新部A215と、監視結果通知部A216とを備える。
監視対象取得部A211は、アプリ領域記憶部A203から監視対象であるソフトウェアに関する情報を取得し、CAN通信部A201からCAN通信ログに関する情報を取得する機能を有する。
システム状態取得部A212は、制御アプリ実行部A202から、走行状態や起動からの走行距離、起動からの経過時間など車両の状態をシステム状態として取得する機能と、監視部A213からセキュリティ状態をシステム状態として取得する機能とを有する。
監視部A213は、監視対象取得部A211にて取得したソフトウェアに関する情報の取得値と、監視情報記憶部A214が記憶する監視情報に含まれる期待値とを比較し、取得値と期待値とが異なる場合にソフトウェアに関する情報が異常であると判定し、取得値と期待値とが一致する場合にソフトウェアに関する情報が正常であると判定する機能を有する。さらに、監視部A213は、監視対象取得部A211にて取得したCAN通信ログを、許可リストまたは拒否リスト、及び、通常時の統計情報を用いて、CANログに含まれる特定のメッセージが異常であるか否かを判定する機能を有する。
監視情報記憶部A214は、監視担当と、監視対象と、期待値と、優先度とが含まれる監視情報を記憶する機能を有する。
監視情報更新部A215は、管理部SA120からの要求に応じて監視情報を更新する機能を有する。
監視結果通知部A216は、管理部SA120へ監視結果とシステム状態を通知する機能を有する。
このように、アプリ監視部A210はアプリ領域のソフトウェア及びCAN通信を監視でき、車両の状態と制御アプリA200のセキュリティ状態を取得できる。CAN通信の監視は統計情報を用いた複雑なアルゴリズムになると想定される。
[映像アプリの構成図]
図7は、実施の形態における映像アプリの構成図を示す図である。
映像アプリA300は、イーサネット通信部A301と、映像アプリ実行部A302と、アプリ領域記憶部A303と、アプリ監視部A310とを備える。イーサネット通信部A301は、イーサネット50を介してZoneECU500と通信する。映像アプリ実行部A302は、イーサネット通信とシステムコールとを用いて、カメラ映像を取得して、ディスプレイへ映像出力する。アプリ領域記憶部A303は、映像アプリのプログラムと設定ファイルを記憶するストレージ及びメモリである。
アプリ監視部A310は、監視対象取得部A311と、システム状態取得部A312と、監視部A313と、監視情報記憶部A314と、監視情報更新部A315と、監視結果通知部A316とを備える。
監視対象取得部A311は、アプリ領域記憶部A303から監視対象であるソフトウェアに関する情報を取得し、イーサネット通信部A301からイーサネット通信ログに関する情報を取得する機能を有する。
システム状態取得部A312は、監視部A313からセキュリティ状態をシステム状態として取得する機能を有する。
監視部A313は、監視対象取得部A311にて取得したソフトウェアに関する情報の取得値と、監視情報記憶部A314が記憶する監視情報に含まれる期待値とを比較し、取得値と期待値とが異なる場合にソフトウェアに関する情報が異常であると判定し、取得値と期待値とが一致する場合にソフトウェアに関する情報が正常であると判定する機能を有する。さらに、監視対象取得部A311にて取得したイーサネット通信ログを、許可リストまたは拒否リスト、及び、通常時の統計情報を用いて、イーサネット通信ログに含まれる特定のメッセージが異常であるか否かを判定する機能を有する。
監視情報記憶部A314は、監視担当と、監視対象と、期待値と、優先度とが含まれる監視情報を記憶する機能を有する。
監視情報更新部A315は、管理部SA120からの要求に応じて監視情報を更新する機能を有する。
監視結果通知部A316は、管理部SA120へ監視結果とシステム状態を通知する機能を有する。
このように、アプリ監視部A310はアプリ領域のソフトウェア及びイーサネット通信を監視でき、映像アプリA300のセキュリティ状態を取得できる。イーサネット通信の監視は統計情報を用いた複雑なアルゴリズムになると想定される。
[外部仮想マシンの構成図]
図8は、実施の形態における外部仮想マシンの構成図を示す図である。
外部仮想マシンVM100は、アプリ通信部VM101と、システムコール制御部VM102と、VM領域記憶部VM103と、ハイパーコール呼出部VM104と、VM監視部VM110とを備える。アプリ通信部VM101は、外部アプリ実行部A102からシステムコールを受信する。システムコール制御部VM102は、システムコールを実行する。VM領域記憶部VM103は、外部仮想マシンVM100のプログラムと、ミドルウェアと、設定ファイルとを記憶するストレージ及びメモリである。ハイパーコール呼出部VM104は、ハイパーコールを呼び出す。
VM監視部VM110は、監視対象取得部VM111と、システム状態取得部VM112と、監視部VM113と、監視情報記憶部VM114と、監視情報更新部VM115と、監視結果通知部VM116とを備える。
監視対象取得部VM111は、VM領域記憶部VM103とアプリ領域記憶部A103とから監視対象であるソフトウェアに関する情報を取得し、アプリ通信部VM101からシステムコールに関する情報を取得する機能を有する。
システム状態取得部VM112は、監視部VM113からセキュリティ状態を、システム状態として取得する機能を有する。
監視部VM113は、監視対象取得部VM111にて取得したソフトウェアに関する情報の取得値と、監視情報記憶部VM114が記憶する監視情報に含まれる期待値とを比較し、取得値と期待値とが異なる場合にソフトウェアに関する情報が異常であると判定し、取得値と期待値とが一致する場合にソフトウェアに関する情報が正常であると判定する機能を有する。さらに、監視部VM113は、監視対象取得部VM111にて取得したシステムコールログを、許可リストまたは拒否リスト、及び、通常時の統計情報を用いて、システムコールログに含まれる特定のシステムコールが異常であるか否かを判定する機能を有する。
監視情報記憶部VM114は、監視担当と、監視対象と、期待値と、優先度とが含まれる監視情報を記憶する機能を有する。
監視情報更新部VM115は、管理部SA120からの要求に応じて監視情報を更新する機能を有する。
監視結果通知部VM116は、管理部SA120へ監視結果とシステム状態を通知する機能を有する。
このように、VM監視部VM110はアプリ領域とVM領域のソフトウェア及びシステムコールを監視でき、外部仮想マシンVM100と外部アプリA100のセキュリティ状態を取得できる。システムコールの監視は統計情報を用いた複雑なアルゴリズムになると想定される。
[制御仮想マシンの構成図]
図9は、実施の形態における制御仮想マシンの構成図を示す図である。
制御仮想マシンVM200は、アプリ通信部VM201と、システムコール制御部VM202と、VM領域記憶部VM203と、ハイパーコール呼出部VM204と、VM監視部VM210とを備える。アプリ通信部VM201は、制御アプリ実行部A202からシステムコールを受信する。システムコール制御部VM202は、システムコールを実行する。VM領域記憶部VM203は、制御仮想マシンVM200のプログラムと、ミドルウェアと、設定ファイルを記憶するストレージ及びメモリである。ハイパーコール呼出部VM204は、ハイパーコールを呼び出す。
VM監視部VM210は、監視対象取得部VM211と、システム状態取得部VM212と、監視部VM213と、監視情報記憶部VM214と、監視情報更新部VM215と、監視結果通知部VM216とを備える。
監視対象取得部VM211は、VM領域記憶部VM203とアプリ領域記憶部A103とから監視対象であるソフトウェアに関する情報を取得し、アプリ通信部VM201からシステムコールに関する情報を取得する機能を有し、さらに、ハイパーコール制御部HV102からハイパーコールに関する情報を取得する機能を有する。
システム状態取得部VM212は、監視部VM213からセキュリティ状態を、システム状態として取得する機能を有する。
監視部VM213は、監視対象取得部VM211にて取得したソフトウェアに関する情報の取得値と、監視情報記憶部VM214が記憶する監視情報に含まれる期待値とを比較し、取得値と期待値とが異なる場合にソフトウェアに関する情報が異常であると判定し、取得値と期待値とが一致する場合にソフトウェアに関する情報が正常であると判定する機能を有する。さらに、監視部VM213は、監視対象取得部VM211にて取得したシステムコールログを、許可リストまたは拒否リスト、及び、通常時の統計情報を用いて、システムコールログに含まれる特定のシステムコールが異常であるか否かを判定する機能を有する。さらに、監視部VM213は、監視対象取得部VM211にて取得したハイパーコールログを、許可リストまたは拒否リスト、及び、通常時の統計情報を用いて、ハイパーコールログに含まれる特定のハイパーコールが異常であるか否かを判定する機能を有する。
監視情報記憶部VM214は、監視担当と、監視対象と、期待値と、優先度とが含まれる監視情報を記憶する機能を有する。
監視情報更新部VM215は、管理部SA120からの要求に応じて監視情報を更新する機能を有する。
監視結果通知部VM216は、管理部SA120へ監視結果とシステム状態を通知する機能を有する。
このように、VM監視部VM210はアプリ領域とVM領域のソフトウェア及びシステムコール、ハイパーコールを監視でき、制御仮想マシンVM200と制御アプリA200のセキュリティ状態を取得できる。システムコールとハイパーコールの監視は統計情報を用いた複雑なアルゴリズムになると想定される。
ここで、ハイパーコールの監視は制御仮想マシンVM200にて実行されると記載しているが、ハイパーバイザHV100にて実行されもよい。
[映像仮想マシンの構成図]
図10は、実施の形態における映像仮想マシンの構成図を示す図である。
映像仮想マシンVM300は、アプリ通信部VM301と、システムコール制御部VM302と、VM領域記憶部VM303と、ハイパーコール呼出部VM304と、VM監視部VM310とを備える。アプリ通信部VM301は、映像アプリ実行部A302からシステムコールを受信する。システムコール制御部VM302は、システムコールを実行する。VM領域記憶部VM303は、映像仮想マシンVM300のプログラムと、ミドルウェアと、設定ファイルを記憶するストレージ及びメモリである。ハイパーコール呼出部VM304は、ハイパーコールを呼び出す。
VM監視部VM310は、監視対象取得部VM311と、システム状態取得部VM312と、監視部VM313と、監視情報記憶部VM314と、監視情報更新部VM315と、監視結果通知部VM316とを備える。
監視対象取得部VM311は、VM領域記憶部VM303とアプリ領域記憶部A303とから監視対象であるソフトウェアに関する情報を取得し、アプリ通信部VM301からシステムコールに関する情報を取得する機能を有する。
システム状態取得部VM312は、監視部VM313からセキュリティ状態を、システム状態として取得する機能を有する。
監視部VM313は、監視対象取得部VM311にて取得したソフトウェアに関する情報の取得値と、監視情報記憶部VM314が記憶する監視情報に含まれる期待値とを比較し、取得値と期待値とが異なる場合にソフトウェアに関する情報が異常であると判定し、取得値と期待値とが一致する場合にソフトウェアに関する情報が正常であると判定する機能を有する。さらに、監視部VM313は、監視対象取得部VM311にて取得したシステムコールログを、許可リストまたは拒否リスト、及び、通常時の統計情報を用いて、システムコールログに含まれる特定のシステムコールが異常であるか否かを判定する機能を有する。
監視情報記憶部VM314は、監視担当と、監視対象と、期待値と、優先度とが含まれる監視情報を記憶する機能を有する。
監視情報更新部VM315は、管理部SA120からの要求に応じて監視情報を更新する機能を有する。
監視結果通知部VM316は、管理部SA120へ監視結果とシステム状態を通知する機能を有する。
このように、VM監視部VM310はアプリ領域とVM領域のソフトウェア及びシステムコールを監視でき、映像仮想マシンVM300と映像アプリA300のセキュリティ状態を取得できる。システムコールの監視は統計情報を用いた複雑なアルゴリズムになると想定される。
[ハイパーバイザの構成図]
図11は、実施の形態におけるハイパーバイザの構成図を示す図である。
ハイパーバイザHV100は、仮想マシン通信部HV101と、ハイパーコール制御部HV102と、HV領域記憶部HV103と、HV監視部HV110とを備える。仮想マシン通信部HV101は、ハイパーコール呼出部VM104、VM204、VM304からハイパーコールを受信する。ハイパーコール制御部HV102は、ハイパーコールを実行する。HV領域記憶部HV103は、ハイパーバイザHV100のプログラムと、設定ファイルを記憶するストレージ及びメモリである。
HV監視部HV110は、監視対象取得部HV111と、システム状態取得部HV112と、監視部HV113と、監視情報記憶部HV114と、監視情報更新部HV115と、監視結果通知部HV116とを備える。
監視対象取得部HV111は、HV領域記憶部HV103と、VM領域記憶部VM103と、VM領域記憶部VM203と、VM領域記憶部VM303と、から監視対象であるソフトウェアに関する情報を取得する機能を有する。
システム状態取得部HV112は、仮想マシンのシステム状態と、CPU利用率と、メモリ利用率と、監視部HV113とからセキュリティ状態を、システム状態として取得する機能を有する。
監視部HV113は、監視対象取得部HV111にて取得したソフトウェアに関する情報の取得値と、監視情報記憶部HV114が記憶する監視情報に含まれる期待値とを比較し、取得値と期待値とが異なる場合にソフトウェアに関する情報が異常であると判定し、取得値と期待値とが一致する場合にソフトウェアに関する情報が正常であると判定する機能を有する。
監視情報記憶部HV114は、監視担当と、監視対象と、期待値と、優先度とが含まれる監視情報を記憶する機能を有する。
監視情報更新部HV115は、管理部SA120からの要求に応じて監視情報を更新する機能を有する。
監視結果通知部HV116は、管理部SA120へ監視結果とシステム状態を通知する機能を有する。
このように、HV監視部HV110は、外部仮想マシンVM100と制御仮想マシンVM200と映像仮想マシンVM300と、HV領域のソフトウェアを監視でき、外部仮想マシンVM100と制御仮想マシンVM200と映像仮想マシンVM300のシステム状態とセキュリティ状態を取得できる。
[セキュアアプリの構成図]
図12は、実施の形態におけるセキュアアプリの構成図を示す図である。
セキュアアプリSA100は、SA監視部SA110と、管理部SA120とを備える。
SA監視部SA110は、監視対象取得部SA111と、システム状態取得部SA112と、監視部SA113と、監視情報記憶部SA114と、監視情報更新部SA115と、監視結果通知部SA116とを備える。
監視対象取得部SA111は、HV領域記憶部HV103と、VM領域記憶部VM103と、VM領域記憶部VM203と、VM領域記憶部VM303とから監視対象であるソフトウェアに関する情報を取得する機能を有する。
システム状態取得部SA112は、監視部SA113からセキュリティ状態を、システム状態として取得する機能を有する。
監視部SA113は、監視対象取得部SA111にて取得したソフトウェアに関する情報の取得値と、監視情報記憶部SA114が記憶する監視情報に含まれる期待値とを比較し、取得値と期待値とが異なる場合にソフトウェアに関する情報が異常であると判定し、取得値と期待値とが一致する場合にソフトウェアに関する情報が正常であると判定する機能を有する。
監視情報記憶部SA114は、監視担当と、監視対象と、期待値と、優先度とが含まれる監視情報を記憶する機能を有する。
監視情報更新部SA115は、管理部SA120からの要求に応じて監視情報を更新する機能を有する。
監視結果通知部SA116は、管理部SA120へ監視結果とシステム状態を通知する機能を有する。
管理部SA120は、監視結果取得部SA121と、システム状態取得部SA122と、監視構成記憶部SA123と、監視変更ルール記憶部SA124と、監視情報変更部SA125と、監視サーバー通信部SA126とを備える。
監視結果取得部SA121は、監視結果通知部A116、A216、A316、VM116、VM216、VM316、HV116、SA116から監視結果を受信する機能を有する。
システム状態取得部SA122は、監視結果通知部A116、A216、A316、VM116、VM216、VM316、HV116、SA116からシステム状態を受信する機能を有する。
監視構成記憶部SA123は、複数の多層監視部の信頼チェーン構成パターンを含む監視構成を記憶する機能を有する。
監視変更ルール記憶部SA124は、システム状態に応じて監視情報に含まれる優先度と監視構成を変更するルールを含む監視変更ルールを記憶する機能を有する。
監視情報変更部SA125は、監視情報更新部SA115へ監視情報の変更を要求する機能を有する。
監視サーバー通信部SA126は、監視サーバー10へ監視結果を通知し、監視サーバー10から監視情報の変更と監視構成の変更内容と、監視変更ルールの変更の要求とを受信し、要求に応答する機能を有する。
監視構成と監視変更ルールの詳細は後述する。
このように、SA監視部SA110は、外部仮想マシンVM100と制御仮想マシンVM200と映像仮想マシンVM300とHV領域のソフトウェアとを監視でき、外部仮想マシンVM100と制御仮想マシンVM200と映像仮想マシンVM300とのセキュリティ状態を取得できる。また、管理部SA120は、システム状態に応じて、適切な監視構成及び監視情報に変更できる。
[監視サーバーの構成図]
図13は、実施の形態における監視サーバーの構成図を示す図である。
監視サーバー10は、車載システム通信部11と、監視結果表示部12と、監視構成変更部13と、監視変更ルール変更部14と、監視情報変更部15とを備える。
車載システム通信部11は、車載システム20の外部通信部A101と通信する機能を有する。
監視結果表示部12は、車載システム通信部11を介して、車載システム20の外部通信部A101から監視結果を受信し、監視結果の情報をグラフィカルユーザーインターフェース上に表示する機能を有する。
監視構成変更部13は、監視構成の変更を受け付け、変更の要求を監視サーバー通信部SA126へ送信する。
監視変更ルール変更部14は、監視変更ルールの変更を受け付け、変更の要求を監視サーバー通信部SA126へ送信する。
監視情報変更部15は、監視情報の変更を受け付け、変更の要求を監視サーバー通信部SA126へ送信する。
[監視情報の一例]
図14及び図15は、監視情報の一例を示す図である。
監視情報は、多層監視部のそれぞれが自身の監視対象を確認し、ソフトウェア及び通信ログの監視を実施するための情報が記載される。
図14において、監視情報は、番号、監視担当、監視対象、メモリ番地、期待値、及び、優先度を含む。番号は、監視情報を識別するために利用される。監視担当は、監視対象の監視を行う主体者を認識するために利用される。監視対象は、監視の対象となるソフトウェア及び通信ログを認識するために利用される。メモリ番地は、監視対象を取得するため監視対象が格納されるメモリ番地を認識するために利用される。期待値は、監視対象に関する情報の正常な値を認識するために利用される。優先度は、優先度が高い監視対象ほど重点的に監視するために利用される。優先度の詳細は後述する。
図14では、アプリ監視部A110は外部アプリ監視部、アプリ監視部A210は制御アプリ監視部、アプリ監視部A310は映像アプリ監視部、VM監視部VM110は外部VM監視部、VM監視部VM210は制御VM監視部、VM監視部VM310は映像VM監視部として記載しており、以下でもこの記載を用いることがある。
例えば、番号が7である監視情報は、監視担当が外部VM監視部であり、監視対象がVMプログラム1であり、メモリ番地はVM領域B10であり、期待値はB10であり、優先度は高である。これは、外部VM監視部はVMプログラム1を重点的に監視し、VM領域B10に格納されるVMプログラム1のハッシュ値がB10と一致する場合にVMプログラム1が正常であると判定でき、一致しない場合にVMプログラム1が異常であると判定できる。
また、例えば、番号が15である監視情報は、監視担当が制御VM監視部であり、監視対象がハイパーコールログであり、メモリ番地は「―」であり、期待値は「―」であり、優先度は「―」である。これは、制御VM監視部は、ハイパーコールログを監視するが、メモリ番地や期待値、優先度は指定する必要がないことを示している。
上述の通り、外部通信ログと、CAN通信ログと、イーサネット通信ログと、システムコールログと、ハイパーコールログとは、例えば、許可リストと拒否リストと正常時の統計情報とを用いてそれぞれの異常が判定され得る。
このように、監視情報を用いることで、多層監視部のそれぞれが自身の監視対象を確認し、ソフトウェア及び通信ログの監視を実施できる。また、監視対象に多層監視部のソフトウェアを含めることによって、多層監視部の監視の信頼チェーンを構築できる。
図14において、SA監視部SA110がHV監視部HV110のソフトウェアを監視し、HV監視部HV110がVM監視部VM210のソフトウェアを監視し、VM監視部VM210がVM監視部VM110及びVM監視部VM310のソフトウェアを監視し、VM監視部VM110がアプリ監視部A110のソフトウェアを監視し、VM監視部VM210がアプリ監視部A110のソフトウェアを監視し、VM監視部VM310がアプリ監視部A310のソフトウェアを監視することで、多層監視部が信頼可能なSA監視部SA110からアプリケーション監視部まで連結しており、監視の信頼チェーンを構築できていることが分かる。
図15には、優先度に応じて、ソフトウェアの監視方法を変更するための情報が記載される。図15において、優先度、監視周期(分)、検証方法、及び、監視対象選択方法が対応付けられている。優先度は、高、中、低の3種類のうちの一種類が記載され、優先度を識別するために利用される。監視周期(分)は、監視対象の監視処理を行う周期を認識するために利用される。検証方法は、監視対象の監視処理を行う方法を認識するために利用される。監視対象選択方法は、監視対象が複数存在する場合に選択する方法を認識するために利用される。
例えば、優先度が高である場合は、監視周期(分)が1であり、検証方法が複製値であり、監視対象選択方法が固定である。これは、固定の監視対象を1分間隔で複製値を用いて検証することを示している。固定とは、監視周期で定められる監視タイミングが訪れる毎に、予め決められた1以上の監視対象をすべて監視することであり、複製値とはメモリに格納された監視対象の生データを用いて検証することである。
これにより、優先度が高い監視対象に対して、精度の高い監視を実施できる。
また、例えば、優先度が中である場合は、監視対象を特定の順番で、10分間隔で複製値ではなく複製値にマスクをかけた値であるマスク値を用いて検証することを示している。順番とは、監視周期で定められる監視タイミングが訪れる毎に、1以上の監視対象を1つずつ特定の順番で選択し、選択した監視対象を監視することである。
また、例えば、優先度が低である場合は、監視対象をランダムの順番で、100分間隔で複製値のハッシュ値を用いて検証することを示している。ランダムとは、監視周期で定められる監視タイミングが訪れる毎に、1以上の監視対象を1つずつランダムに選択し、選択した監視対象を監視することである。
ここで、優先度が低である場合、メモリ領域を2以上のブロックに分割し、分割ブロックをランダムで選択して監視対象としてもよい。これにより、処理の負荷を低減できる。
また、特定の監視周期を設定して、前回の監視から周期が経過したタイミングで監視を即座に実行するのではなく、周期が経過したタイミング以降のCPUの空き時間に監視を実行してもよい。この場合、監視タイミングは毎回異なるものの、リアルタイム性が重要視されるシステムへの負担を低減できる。
また、少なくとも1回の監視が実行される期間を設定してもよい。この場合、所定の期間の間にCPUの空き時間を利用して監視を実行できる。
また、特定のイベントや特定の監視部の検証結果に応じて、監視タイミングを定義してもよい。例えば、インターネット接続のタイミングで、アプリ監視部A110のソフトウェアを監視してもよいし、車両の走行状態が自動走行に変更されたタイミングで制御仮想マシンのソフトウェアを監視してもよいし、セキュリティ異常が1回判定されたタイミングで異常と関連する多層監視部のソフトウェアを監視してもよいし、セキュリティ異常がなく正常と2回判定されたタイミングで連結する監視部のソフトウェアを監視してもよい。
また、通信ログに対する監視においても、メモリ番地にログが含まれる領域が指定されてもよく、期待値に許可リストが指定されてもよく、優先度が指定されてもよい。この場合、優先度に応じて、通信ログの監視方法が変更されてもよい。
例えば、優先度が高い場合は、高い精度が期待できるすべてのメッセージのペイロード情報を用いて異常を検知する方法が適用され、優先度が低い場合は、処理負荷の低減が期待できるサンプリングしたメッセージのヘッダ情報を用いて異常を検知する方法が適用されてもよい。これにより、優先度に応じて通信ログを重点的に監視できる。
このように、監視対象に応じて優先度を変更することで、改ざんリスクの高い監視対象を重点的に監視でき、改ざんリスクの低い監視対象は処理負荷を下げて監視できる。
[システム状態の一例]
図16は、システム状態の一例を示す図である。
システム状態は、管理部SA120が統合ECU200のシステム状態を把握するために利用される。図16において、システム情報は、番号、分類、システム状態、及び、パラメータを含む。番号は、システム状態を識別するために利用される。分類は、ネットワーク、VM、セキュリティ、車両の4種類であり、システム状態を区分するために利用される。例えば、システム状態は、具体的なシステム状態の名称が記載され、パラメータはシステム状態を特定するためのパラメータが記載される。
例えば、番号が5であるシステム状態は、分類がVMであり、システム状態がVM状態であり、パラメータが、VM識別子、オンとオフと再起動中とのいずれか一つ、及び、時刻である。つまり、システムの異常やソフトウェアの更新の理由で、特定の仮想マシンが再起動する場合、パラメータには、特定の仮想マシンを識別する識別子と、再起動中という状態、状態を判定した時刻が記載される。
このように、例えば、番号が1であるシステム状態を確認すれば、統合ECU200がインターネットに接続しているか否かの状態を把握でき、番号が9であるシステム状態は車両の走行状態を確認すれば、自動運転か否かの状態を把握でき、番号が7であるシステム状態を確認すれば、ソフトウェア検証の結果として異常と判定された監視対象のソフトウェアの情報を把握できる。
また、システム状態を統合ECU200に搭載されるタイマー、センサー、及び、その他の機能から収集して参照することで、所定の時間経過と、所定の外部ネットワーク接続時間経過と、システム起動と、システム再起動と、外部ネットワーク接続確立と、外部デバイス接続と、走行モードの切り替えと、給油または給電の終了と、車両診断の実施と、緊急アラートの発呼とを含むシステム状態を取得できる。
ここで、図16のシステム状態は、システム状態のリストと、パラメータに記載すべき項目とを示している。管理部SA120は、リストに含まれるシステム状態を取得した場合に、番号とパラメータを他のプログラムへ通知するまたはログに残すことで、他のプログラムとシステム状態を共有できる。
[監視構成の一例]
図17~図20は、監視構成の一例を示す図である。
監視構成は、多層監視部を連結させて監視の信頼チェーンを変更するために利用される。図17~図20では、矢印の元のブロックが監視を実行する監視部が示され、矢印の先のブロックが監視の対象となる監視部が示される。
図17において、監視構成は、番号と、監視構成を含む。番号は、監視構成を識別するために利用され、監視構成は多層監視部の連結パターンが記載される。
図17の番号1の監視構成は、SA監視部SA110がHV監視部HV110のソフトウェアを監視し、HV監視部HV110がVM監視部VM210のソフトウェアを監視し、VM監視部VM210がVM監視部VM110とVM監視部VM310のソフトウェアを監視し、VM監視部VM110がアプリ監視部A110のソフトウェアを監視し、VM監視部VM210がアプリ監視部A110のソフトウェアを監視し、VM監視部VM310がアプリ監視部A310のソフトウェアを監視することで、多層監視部が信頼可能なSA監視部SA110からアプリケーション監視部まで連結しており、監視の信頼チェーンを構築できていることが分かる。
ここで、制御仮想マシンVM200は、外部ネットワークと直接接続されていないため、外部仮想マシンVM100よりも信頼できると想定できるため、より信頼度の高い監視部として扱うことができる。
また、図17の番号2の監視構成は、SA監視部SA110がHV監視部HV110の代わりにVM監視部VM210のソフトウェアを監視し、それ以外は番号1の管理構成と同等である。番号1の監視構成と比較すると、SA監視部SA110の処理とプログラムの複雑性が増加するものの、信頼可能なSA監視部SA110から監視することで、VM監視部VM210のソフトウェアの信頼度を高めることができる。
また、図18の番号3の監視構成は、制御仮想マシンVM200がシステムダウンした場合であっても監視の信頼チェーン監視を維持可能な監視構成である。もし、制御仮想マシンVM200がシステムダウンした場合に番号1や番号2の監視構成を継続すると、VM監視部VM110やVM監視部VM310を監視対象とする監視担当が不在になり、監視の信頼チェーンを維持できない。
また、図18の番号4の監視構成は、制御仮想マシンVM200にて異常が検知された場合であっても、VM監視部VM210の監視対象を限定してHV監視部HV110へ引き継ぐことで、アプリ監視部A210以外の監視の信頼チェーン監視を維持可能な監視構成である。もし、制御仮想マシンVM200にてセキュリティ異常が検知された場合に番号1や番号2の監視構成を継続すると、制御仮想VMマシン210がVM監視部VM110やVM監視部VM310のソフトウェアの監視担当であるが、制御仮想マシンVM200が改ざんされる可能性が高いため、監視の信頼チェーンを維持できない。
また、図19の番号5の監視構成は、制御仮想マシンVM200にて異常が検知された場合や制御仮想マシンVM200が改ざんされた場合のリスクが大きい場合に、監視を強化できる監視構成である。SA監視部SA110とHV監視部HV110の双方からVM監視部VM210のソフトウェアを検証することによって、監視の頻度及び信頼度を高めることができる。ここで、2つの監視結果が異なる場合は、信頼度が高いSA監視部SA110の監視結果を採用することができる。
また、図19の番号6の監視構成は、制御仮想マシンVM200にて異常が検知された場合であっても、VM監視部VM210を監視担当から完全に外し、他の仮想マシン監視部にアプリ監視部A110の監視を引き継ぐことで、監視の信頼チェーン監視を維持可能な監視構成である。もし、制御仮想マシンVM200にてセキュリティ異常が検知された場合に番号1や番号2の監視構成を継続すると、制御仮想マシンVM200がVM監視部VM110やVM監視部VM310のソフトウェアの監視担当であるが、制御仮想マシンVM200が改ざんされる可能性が高いため、監視の信頼チェーンを維持できない。
また、図20の番号7の監視構成は、インターネット接続状態など外部仮想マシンVM100が改ざんされる可能性が高い場合に、監視を強化できる監視構成である。HV監視部HV110及びVM監視部VM210の双方から、VM監視部VM110のソフトウェアを検証することによって、監視の頻度、信頼度を高めることができる。ここで、2つの監視結果が異なる場合は、信頼度が高いHV監視部HV110の監視結果を採用することができる。
このように、複数の監視構成を保持して、システム状態に応じて監視構成を切り替えることによって、VM異常やセキュリティ異常が発生された場合であっても監視の信頼チェーンの維持が可能であり、システム状態に応じた特定の監視対象の監視の重点化が可能である。
また、図17~図20では閉路のない監視構成のみを記載しているが、VM監視部VM210がVM監視部VM310のソフトウェアを監視し、VM監視部VM310がVM監視部VM110のソフトウェアを監視し、VM監視部VM110がVM監視部VM210のソフトウェアを監視するといった巡回監視の監視構成にしてもよいし、各仮想マシン監視部がその他の仮想マシン監視部のソフトウェアを監視するといった相互監視の監視構成にしてもよい。
また、監視構成を他の監視構成に切り替える場合、複数の監視構成を事前に定義して切り替えるのではなく、動的に監視構成を算出して変更してもよい。例えば、監視部を頂点とし、監視担当を道の始点とし、監視対象を道の終点とする有向グラフとして前記監視構成を記憶し、所定のアルゴリズムで有向グラフを再構築することで、前記監視構成を変更できる。また、例えば、監視部をノードとし、監視担当を親ノードとし、監視対象を子ノードとするツリー構造として前記監視構成を記憶し、所定のアルゴリズムでツリー構造を再構築することで、前記監視構成を変更できる。
[監視変更ルールの一例]
図21は、監視変更ルールの一例を示す図である。
監視変更ルールは、管理部SA120がシステム状態に応じて監視情報の優先度及び監視構成を変更するために利用される。
図21において、監視変更ルールは、番号、変更条件、及び、変更処理を含む。番号は、監視変更ルールを識別するために利用される。変更条件は、変更処理を行うシステム状態であるかを判断するために利用される。変更処理は、変更条件が満たされた場合に実行される、監視構成の変更内容について記載される。
例えば、番号が3である監視変更ルールは、変更条件がインターネット接続確立であり、変更処理がVM監視部VM110及びアプリ監視部A110に対する監視優先度を一時的に上げるである。つまり、統合ECU200を不正なネットワークに接続させて、不正なソフトウェアをダウンロードさせる攻撃を想定すると、インターネット接続確立の直後はVM監視部VM110とアプリ監視部A110のソフトウェアを改ざんされる可能性が高くなる。そのため、管理部SA120は、VM監視部VM110及びアプリ監視部A110に対する監視優先度を一時的に上げる。これにより、これらの監視部に対する高頻度で高精度な監視が実行され得る。所定時間経過または所定の監視処理が完了した後、一時的に上げた優先度は元の値に戻される。
また、例えば、番号が10である監視変更ルールでは、特定の通信において異常が発生した場合、異常通信の送信元を監視する監視部、異常通信の宛先を監視する監視部、異常通信を検知した監視部のそれぞれの優先度を上げることが示される。送信元のソフトウェアに異常が発生している可能性が高く、宛先のソフトウェアへ攻撃が展開される可能性が高く、通信の異常を判定した監視部も無効化される可能性が高いため、管理部SA120は、異常通信の送信元を監視する監視部、異常通信の宛先を監視する監視部、異常通信を検知した監視部のそれぞれの優先度を上げる。これにより、これらの監視部に対する重点的な監視が実行され得る。さらに、管理部SA120は、監視構成を変更することで、複数の監視部から改ざんされる可能性の高いソフトウェアの監視が実行され得る。
また、例えば、番号が6である監視変更ルールでは、特定のVMのCPU使用率が低い場合に、該当VMの処理負荷が大きい監視構成に変更することが示される。これにより、CPU使用率が高い仮想マシンに配置された仮想マシン監視部にて多くの監視処理を実施することは他の主要機能へ影響を与える可能性がある。そこで、CPU使用率が低い仮想マシン上で動作する仮想マシン監視部が監視を実行することで、リアルタイム性が重要なシステムへの負担を低減できる。
このように、管理部SA120は、外部ネットワーク接続中か否かと、外部ネットワーク接続確立イベントの発生と、仮想マシンのシステム状態と、多層監視部の監視結果と、異常を検知した監視部の実行権限と、異常を検知したソフトウェアの実行権限と、異常を検知した通信ログの宛先または送信元とに応じて、優先度及び監視構成を変更できる。
[監視結果表示の一例]
図22及び図23は、監視結果表示の一例を示す図である。
監視結果表示は、セキュリティ分析官へ監視情報を伝達するために利用される。監視結果表示は、監視サーバー10が車載システム20から監視結果を受信することで監視サーバーにより生成される。監視結果表示は、監視結果がグラフィカルユーザーインターフェースにおいて表現された表示である。
車載システム20から受信する監視結果は、システム状態の分類セキュリティの項目と同じである。監視結果は、ソフトウェアが正常であった場合には、監視部を特定する識別子と、監視対象のソフトウェアを特定する識別子と、正常判定した時刻とを含む。監視結果は、ソフトウェアが異常であった場合には、監視部を特定する識別子と、監視対象のソフトウェアを特定する識別子と、異常判定した時刻とを含む。監視結果は、通信ログが正常であった場合には、監視部を特定する識別子と、通信プロトコルを特定する識別子と、正常な通信メッセージと、正常判定した時刻とを含む。監視結果は、通信ログが異常であった場合には、監視部を特定する識別子と、通信プロトコルを特定する識別子と、正常な通信メッセージと、異常判定した時刻とを含む。また、統合ECU200を識別するために、車両を識別する車両IDとECUを識別するECUIDとが監視結果に付与されて監視サーバー10へ送信されてもよい。
なお、図22において、太枠のブロックは正常であると判定された監視対象のソフトウェアを示し、細枠のブロックは異常であると判定された監視対象のソフトウェアを示す。
図22において、統合ECU200の抽象化されたシステムアーキテクチャが表示されており、異常及び正常の構成要素が強調されて区別できるように表現されており、構成要素の下部に対応する監視結果が表示されている。これにより、セキュリティ分析官は直感的に異常が発生した構成要素を理解することができるため、セキュリティ異常の解析を迅速に実施できる。
また、図22において監視構成変更及び監視情報変更のボタンがグラフィカルユーザーインターフェースの下部に配置されている。これによって、セキュリティ分析官が監視構成や監視情報の不備やより適切な監視構成を発見した場合に、迅速に車載システム20へ適用できる。例えば、セキュリティ分析官により監視構成変更のボタンへの入力を受け付けると、監視サーバー10は、監視構成の変更を受け付けるグラフィカルユーザーインターフェースを表示してもよい。つまり、監視サーバー10は、監視対象と、監視対象を監視する監視部と、監視対象の優先度と、優先度に対応した監視方法とのうち少なくとも1つの監視情報の変更を受け付け、統合ECU200に変更を要求してもよい。
また、図23において、異常が発生した時刻の前後のタイムラインが表示されており、異常と正常の構成要素が強調されて区別できるように表現されており、多層監視部の連結関係を矢印で表現している。これにより、セキュリティ分析官は直感的に異常が発生した時系列を理解することができるため、セキュリティ異常の解析を迅速に実施できる。図23では、具体的には、時刻T1においてSA監視部からHV監視部への監視が実行されたことが示され、時刻T2においてVM監視部1からアプリ監視部1への監視が実行されたことが示され、時刻T3においてHV監視部からVM監視部1への監視が実行されたことが示される。
[アプリ監視部の処理のシーケンス]
図24は、実施の形態におけるアプリ監視部の監視処理のシーケンスを示す図である。
図24は、アプリ監視部A110の監視対象取得部A111が外部通信ログとアプリ領域のソフトウェア(SW)のハッシュ値とを取得してから、監視結果取得部SA121へ監視結果を通知するまでの処理シーケンスを示している。図24では、外部アプリA100を例に上げて説明するが、制御アプリA200、映像アプリA300の場合は通信ログの種類が異なる以外は同様の処理のシーケンスであるため説明を割愛する。
(S2401)アプリ監視部A110の監視対象取得部A111は、外部通信部A101から外部通信ログである通信ログを取得し、監視部A113へ送信する。
(S2402)監視部A113は、通信ログに異常が含まれているかを判定し、監視結果通知部A116へ監視結果を通知する。ここで、監視結果には、ソフトウェアが正常であった場合には、監視部を特定する識別子と、監視対象のソフトウェアを特定する識別子と、判定時刻とが含まれる。また、監視結果には、ソフトウェアが異常であった場合には、監視部を特定する識別子と、監視対象のソフトウェアを特定する識別子と、判定時刻とが含まれる。また、監視結果には、通信が正常であった場合には、監視部を特定する識別子と、通信プロトコルを特定する識別子と、判定時刻とが含まれる。
(S2403)監視結果通知部A116は、監視結果取得部SA121へ監視結果を通知する。
(S2404)監視結果取得部SA121は、監視結果を取得する。
(S2405)監視対象取得部A111は、監視情報記憶部A114に記載された監視対象の優先度に従って、一定の時間が経過する度に、アプリ領域記憶部A103に格納されたソフトウェアのハッシュ値を取得し、監視情報記憶部A114に格納されたソフトウェアのハッシュ値の期待値を取得し、監視部A113へ送信する。
(S2406)監視部A113は、各ソフトウェアについて、取得値と期待値とが一致する場合は正常と判定し、一致しない場合は異常と判定し、監視結果通知部A116へ監視結果を通知する。
(S2407)監視結果通知部A116は、監視結果取得部SA121へ監視結果を通知する。
(S2408)監視結果取得部SA121は、監視結果を取得する。
[仮想マシン監視部の処理のシーケンス]
図25は、実施の形態における仮想マシン監視部の監視処理のシーケンスを示す図である。
図25は、VM監視部VM210の監視対象取得部VM211がシステムコールとハイパーコールとアプリ領域のソフトウェアとVM領域のソフトウェアのハッシュ値とを取得してから、監視結果取得部SA121へ監視結果を通知するまでの処理シーケンスを示している。
図25では、VM監視部VM210を例に上げて説明するが、VM監視部VM110及びVM監視部VM310の場合はハイパーコールを取得しない点以外は同様の処理のシーケンスであるため説明を割愛する。
(S2501)VM監視部VM210の監視対象取得部VM211は、システムコール制御部VM202とハイパーバイザHV100のハイパーコール制御部HV102とから、それぞれシステムコール及びハイパーコールである、通信ログを取得し、監視部VM213へ送信する。
(S2502)監視部VM213は、通信ログに異常が含まれているかを判定し、監視結果通知部VM216へ監視結果を通知する。
(S2503)監視結果通知部VM216は、監視結果取得部SA121へ監視結果を通知する。
(S2504)監視結果取得部SA121は、監視結果を取得する。
(S2505)監視対象取得部VM211は、監視情報記憶部VM214に記載された監視対象の優先度に従って、一定の時間が経過する度に、VM領域記憶部VM103、VM203、VM303に格納されたソフトウェアのハッシュ値を取得し、監視情報記憶部VM214に格納されたソフトウェアのハッシュ値の期待値を取得し、監視部VM213へ送信する。
(S2506)監視部VM213は、各ソフトウェアについて、取得値と期待値とが一致する場合は正常と判定し、一致しない場合は異常と判定し、監視結果通知部VM216へ監視結果を通知する。
(S2507)監視結果通知部VM216は、監視結果取得部SA121へ監視結果を通知する。
(S2508)監視結果取得部SA121は、監視結果を取得する。
[ハイパーバイザ監視部の処理のシーケンス]
図26は、実施の形態におけるハイパーバイザの監視処理のシーケンスを示す図である。
図26は、HV監視部HV110の監視対象取得部HV111が、VM領域のソフトウェアとHV領域のソフトウェアのハッシュ値とを取得してから、監視結果取得部SA121へ監視結果を通知するまでの処理シーケンスを示している。
(S2601)HV監視部HV110の監視対象取得部HV111は、監視情報記憶部HV114に記載された監視対象の優先度に従って、一定の時間が経過する度に、VM領域記憶部VM103、VM203、VM303とHV領域記憶部HV103に格納されたソフトウェアのハッシュ値を取得し、監視情報記憶部HV114に格納されたソフトウェアのハッシュ値の期待値を取得し、監視部HV113へ送信する。
(S2602)監視部HV113は、各ソフトウェアについて、取得値と期待値とが一致する場合は正常と判定し、一致しない場合は異常と判定し、監視結果通知部HV116へ監視結果を通知する。
(S2603)監視結果通知部HV116は、監視結果取得部SA121へ監視結果を通知する。
(S2604)監視結果取得部SA121は、監視結果を取得する。
[セキュアアプリ監視部の処理のシーケンス]
図27は、実施の形態におけるセキュアアプリの監視処理のシーケンスを示す図である。
図27は、SA監視部SA110の監視対象取得部SA111が、VM領域のソフトウェアとHV領域のソフトウェアのハッシュ値とを取得してから、監視結果取得部SA121へ監視結果を通知するまでの処理シーケンスを示している。
(S2701)SA監視部SA110の監視対象取得部SA111は、監視情報記憶部SA114に記載された監視対象の優先度に従って、一定の時間が経過する度に、VM領域記憶部VM103、VM203、VM303とHV領域記憶部HV103に格納されたソフトウェアのハッシュ値を取得し、監視情報記憶部SA114に格納されたソフトウェアのハッシュ値の期待値を取得し、監視部SA113へ送信する。
(S2702)監視部SA113は、各ソフトウェアについて、取得値と期待値とが一致する場合は正常と判定し、一致しない場合は異常と判定し、監視結果通知部SA116へ監視結果を通知する。
(S2703)監視結果通知部SA116は、監視結果取得部SA121へ監視結果を通知する。
(S2704)監視結果取得部SA121は、監視結果を取得する。
[監視サーバー通知処理のシーケンス]
図28は、実施の形態における監視サーバー通知処理のシーケンスを示す図である。
図28は、SA監視部SA110の監視結果取得部SA121が、アプリケーション監視部、仮想マシン監視部、HV監視部HV110、及び、SA監視部SA110から監視結果を取得し、監視サーバー10の監視結果表示部12が監視結果を表示するまでの処理シーケンスを示している。
(S2801)SA監視部SA110の監視結果取得部SA121が、アプリケーション監視部、仮想マシン監視部、HV監視部HV110、及び、SA監視部SA110から監視結果を取得し、監視サーバー通信部SA126へ送信する。
(S2802)監視サーバー通信部SA126は、外部通信部A101を介して、監視サーバー10の車載システム通信部11へ監視結果を通知する。
(S2803)車載システム通信部11は、監視結果を受信して、監視結果表示部12へ送信する。
(S2804)監視結果表示部12は、監視結果を表示する。
[監視情報変更処理のシーケンス]
図29は、実施の形態における監視情報変更処理のシーケンスを示す図である。
図29は、SA監視部SA110のシステム状態取得部SA122が、アプリケーション監視部、仮想マシン監視部、HV監視部HV110、及び、SA監視部SA110からセキュリティ状態を取得し、アプリケーション監視部、仮想マシン監視部、HV監視部HV110、及び、SA監視部SA110の監視情報を更新するまでの処理シーケンスを示している。
(S2901)SA監視部SA110のシステム状態取得部SA122が、アプリケーション監視部、仮想マシン監視部、HV監視部HV110、及び、SA監視部SA110からシステム状態としてのセキュリティ状態を取得し、監視情報変更部SA125へ送信する。
(S2902)監視情報変更部SA125は、監視変更ルール記憶部SA124に格納された監視変更ルールを確認し、システム状態が監視変更ルールの変更条件を満たす場合、変更処理を実施し、監視情報更新部A115、A215、A315、VM115、VM215、VM315、HV115、SA115へ変更を要求する。
(S2903)監視情報更新部A115、A215、A315、VM115、VM215、VM315、HV115、SA115は監視情報を更新する。
ここで、監視情報及び監視構成は、監視サーバー10によっても変更可能である。その場合、監視サーバー通信部SA126は、監視サーバー10から変更情報を受信し、監視情報変更部SA125へ送信する。そして、監視情報変更部SA125が、監視構成記憶部SA123に含まれる構成情報を更新し、監視情報更新部A115、A215、A315、VM115、VM215、VM315、HV115、SA115のへ監視情報の変更を要求することで実現する。
[監視処理のフローチャート]
図30に、実施の形態における監視処理のフローチャートを示す。
図30では、アプリ監視部A110を例に挙げて説明するが、他のアプリケーション監視部、仮想マシン監視部、HV監視部HV110、及び、SA監視部SA110であっても通信ログの種類と、ソフトウェアの種類とが異なる以外は同様である。
(S3001)アプリ監視部A110の監視対象取得部A111は監視対象である外部通信ログとソフトウェアのハッシュ値を取得し、ステップS3002及びステップS3005を実施する。
(S3002)監視部A113は、ステップS3001にて取得した外部通信ログに異常が含まれるか否かを判定し、異常が含まれる場合(S3002でYes)にステップS3003を実施し、異常が含まれない場合(S3002でNo)にステップS3004を実施する。
(S3003)監視部A113は、監視対象の通信が異常であるとしてシステム状態を更新し、ステップS3005を実施する。
(S3004)監視部A113は、監視対象の通信が正常であるとしてシステム状態を更新し、ステップS3005を実施する。
(S3005)監視結果通知部A116は、監視結果とシステム状態を監視結果取得部SA121へ通知し、終了する。
(S3006)監視部A113は、ソフトウェアに異常が含まれるか否かを判定し、異常が含まれる場合(S3006でYes)、ステップS3007を実施し、異常が含まれない場合(S3006でNo)、ステップS3008を実施する。
(S3007)監視部A113は、監視対象のソフトウェアが異常であるとしてシステム状態を更新し、ステップS3005を実施する。
(S3008)監視部A113は、監視対象のソフトウェアが正常であるとしてシステム状態を更新し、ステップS3005を実施する。
[監視変更処理のフローチャート]
図31に、実施の形態における監視変更処理のフローチャートを示す。
(S3101)管理部SA120のシステム状態取得部SA122はシステム状態を取得し、ステップS3102を実施する。
(S3102)監視情報変更部SA125は、監視変更ルール記憶部SA124に格納される監視変更ルールを確認し、ステップS3101にて取得したシステム状態が、監視変更ルールの変更条件を満たすか否かを判定し、変更条件を満たす場合(S3102でYes)にステップS3103を実施し、変更条件を満たさない場合(S3102でNo)に終了する。
(S3103)監視情報変更部SA125は、ステップS3102にて条件が満たされた変更条件が監視変更ルールにおいて対応する変更処理を実施し、監視情報更新部A115、A215、A315、VM115、VM215、VM315、HV115、SA115のへ監視情報の変更を要求し、終了する。
[効果など]
本実施の形態に係る監視装置としての統合ECU200は、それぞれがソフトウェア及び通信ログの少なくとも1つを監視対象として監視する3以上の監視部を備える。3以上の監視部は、第一の実行権限にて動作する第一の監視部と、第一の実行権限よりも信頼性が低い第二の実行権限にて動作する第二の監視部と、第二の実行権限と信頼性が同じ、または、第二の実行権限よりも信頼性が低い第三の実行権限にて動作する第三の監視部とを含む。統合ECU200は、信頼度の低い監視部のソフトウェアを少なくとも1つの信頼度の高い監視部から監視する監視の信頼チェーンを構築できるように、第一の監視部は、第二の監視部のソフトウェアを監視し、第一の監視部及び第二の監視部の少なくとも1つは、第三の監視部のソフトウェアを監視する。
これにより、システムに侵入した攻撃者は弱い第三の実行権限を獲得後、より強い第二の実行権限、第一の実行権限の獲得を目指すと想定できるため、第二の実行権限よりも弱い第三の実行権限が乗っ取られた後、第三の監視部のソフトウェアを改ざんすることで監視を回避しようと試みた場合であっても、第一の監視部または第二の監視部から第三の監視部のソフトウェアの異常を検知できる効果がある。また、強い実行権限でプログラムを動作させる環境とは弱い実行権限でプログラムを動作させる環境は分離されると想定できるため、実行権限が異なる3段階の監視部を用いることによって、3種類の環境に渡って広い範囲の監視対象を監視できる効果がある。また、強い実行権限で動作するソフトウェアは脆弱性を含まないように単純なアルゴリズムで実装されると想定できるため、強い実行権限で動作する監視部には単純なアルゴリズムを採用し、弱い実行権限で動作する監視部には高度で複雑なアルゴリズムを採用できる効果がある。
また、本実施の形態に係る統合ECU200において、3以上の監視部は、4以上の監視部を備える。4以上の監視部は、第一の監視部と、第二の監視部と、第三の監視部と、第三の実行権限と信頼性が同じ、または、第三の実行権限よりも信頼性が低い第四の実行権限にて動作する第四の監視部とを含む。統合ECU200は、信頼度の低い監視部のソフトウェアを少なくとも1つの信頼度の高い監視部から監視する監視の信頼チェーンを構築できるように、第一の監視部、第二の監視部、及び、第三の監視部の少なくとも1つは、第四の監視部のソフトウェアを監視する。
これにより、システムに侵入した攻撃者は弱い第四の実行権限を獲得後、より強い第三の実行権限、強い第二の実行権限、第一の実行権限の獲得を目指すと想定できるため、第三の実行権限よりも弱い第四の実行権限が乗っ取られた後、第四の監視部のソフトウェアを改ざんすることで監視を回避しようと試みた場合であっても、第一の監視部または第二の監視部、第三の監視部から第四の監視部のソフトウェアの異常を検知できる効果がある。また、強い実行権限でプログラムを動作させる環境とは弱い実行権限でプログラムを動作させる環境は分離されると想定できるため、実行権限が異なる4段階の監視部を用いることによって、4種類の環境に渡って広い範囲の監視対象を監視できる効果がある。また、強い実行権限で動作するソフトウェアは脆弱性を含まないように単純なアルゴリズムで実装されると想定できるため、強い実行権限で動作する監視部には単純なアルゴリズムを採用し、弱い実行権限で動作する監視部には高度で複雑なアルゴリズムを採用できる効果がある。
また、本実施の形態に係る統合ECU200において、統合ECU200は、セキュアアプリ、仮想ソフトウェア基盤、及び、1以上の仮想マシン上にて動作する。第一の実行権限は、セキュアアプリの実行権限、仮想ソフトウェア基盤の実行権限、及び、仮想マシンのカーネル実行権限のうちの1つである。第二の実行権限は、仮想ソフトウェア基盤の実行権限、仮想マシンのカーネル実行権限、及び、仮想マシンのユーザ権限のうちの1つである。第三の実行権限は、仮想マシンのカーネル実行権限、及び、仮想マシンのユーザ権限のうちの1つである。セキュアアプリの実行権限は、仮想ソフトウェア基盤の実行権限よりも信頼性が高い。仮想ソフトウェア基盤の実行権限は、仮想マシンのカーネル実行権限よりも信頼性が高い。仮想マシンのカーネル実行権限は、仮想マシンのユーザ権限よりも信頼性が高い。
これにより、仮想マシンのユーザアプリの脆弱性をついて仮想マシンのユーザ権限を獲得した攻撃者は、仮想マシンのカーネル権限、ハイパーバイザの実行権限、セキュアアプリの実行権限の獲得を目指すと想定できるため、仮想マシンのユーザ権限、仮想マシンのカーネル権限、ハイパーバイザの実行権限を乗っ取られた後、乗っ取った実行権限で動作する監視部のソフトウェアを改ざんして監視を回避しようと試みた場合であっても、より強い実行権限の監視部から弱い実行権限の監視部の異常を検知できる効果がある。また、セキュアアプリの実行権限やハイパーバイザの実行権限では、仮想マシンのユーザ空間のソフトウェアや、仮想マシンのユーザ空間のネットワークログ、仮想マシンのユーザ空間とカーネル空間の間のシステムコールといった通信ログの取得が困難であると想定できるため、実行権限ごとに監視部を分離することによって、より広い範囲の監視対象を監視できる効果ある。また、セキュアアプリの実行権限とハイパーバイザの実行権限、仮想マシンのカーネル権限で動作するソフトウェアは脆弱性を含まないように単純なアルゴリズムで実装されると想定できるため、強い実行権限で動作する監視部には単純なアルゴリズムを採用し、弱い実行権限で動作する監視部には高度で複雑なアルゴリズムを採用できる効果がある。
また、本実施の形態に係る統合ECU200において、監視装置は、仮想ソフトウェア基盤及び2以上の仮想マシン上にて動作する。仮想マシンに割り当てられた実行権限にて動作する監視部が2以上存在する場合、(i)仮想マシンに割り当てられた実行権限にて動作する2以上の監視部のうちの第一の仮想マシンの監視部は、2以上の監視部のうちの第二の仮想マシンの監視部のソフトウェアを監視対象に含み、(ii)2以上の仮想マシンは、攻撃者によって改ざんされる可能性に応じて第一の仮想マシン及び第二の仮想マシンのいずれかに分類される。
これにより、外部ネットワークからシステムに侵入し、外部ネットワークと接続される仮想マシンのユーザ権限及びカーネル権限を獲得した攻撃者は、他の仮想マシンの機能獲得を目指すと想定できるため、外部ネットワークと接続される改ざんリスクの高い第二の仮想マシンの監視部が乗っ取られた場合であっても、外部ネットワークと接続しない改ざんリスクの低い第一の仮想マシンの監視部から第二の仮想マシンの監視部のソフトウェアの異常を検知できる効果がある。また、車両の制御機能を有する仮想マシンは、改ざんされた場合の安全性への影響が大きく、攻撃者の対象になりやすいため、より信頼可能な仮想マシンの監視部から監視することで、安全性を維持できる効果がある。もしくは、車両の制御機能を有する仮想マシンは、外部ネットワークから隔離されており、高い機能安全レベルの要求を満たすためにセキュアな設計と実装が十分考慮されていると想定できるため、車両の制御機能を有する仮想マシンは信頼可能な第一の仮想マシンとして扱うことができる効果がある。また、実行権限だけを考慮すると、改ざんリスクの高い第二の監視マシンの監視部は、セキュアアプリまたはハイパーバイザの実行権限から監視する必要があるが、実行権限が同一である第一の監視マシンの監視部から第二の監視マシンの監視部を監視できるため、セキュアアプリの実行権限とハイパーバイザの実行権限で動作するソフトウェアを単純化できる効果がある。また、外部ネットワークからシステムに侵入し、特定の仮想マシンのユーザ権限及びカーネル権限を獲得した攻撃者は、他の仮想マシンの機能獲得を目指すと想定できるため、第一の仮想マシンの監視部と、第二の仮想マシンが相互監視または巡回監視を行うことによって、特定の仮想マシンが乗っ取られた場合であっても、それ以外の仮想マシンの監視部から特定の仮想マシンの異常を検知できる効果がある。
また、本実施の形態に係る統合ECU200において、3以上の監視部のそれぞれは、所定の時間経過、所定の外部ネットワーク接続時間経過、システム起動、システム再起動、外部ネットワーク接続確立、及び、外部デバイス接続、のうち少なくとも1つを含むイベントが発生したタイミングに応じて、監視対象の監視を開始する。
これにより、システム起動時にソフトウェアの完全性を検証するセキュアブートのように前段の監視部によって完全性が検証された監視部が、後段の監視部を検証するといった直列的な監視方法ではなく、非同期でソフトウェアの改ざんリスクが高いイベントに応じて監視を実施することで、監視処理の割り込み時間を短縮できる効果がある。さらに、仮想マシンごとのCPUの空き時間を活用して監視処理を行うなど、システムに負荷をかけることなく柔軟に監視処理の負担を配分できる効果がある。
また、本実施の形態に係る統合ECU200において、監視装置は、車載システム上において動作する。3以上の監視部のそれぞれは、所定の走行時間経過、所定の停止時間経過、所定の走行距離経過、走行モードの切り替え、給油または給電の終了、車両診断の実施、及び、緊急アラートの発呼、のうち少なくとも1つを含むイベントが発生したタイミングに応じて、監視対象の監視を開始する。
これにより、車載システムにおいて、ソフトウェアの改ざんリスクが高いイベントが発生するごとに、監視対象を監視することで、効率的に非同期監視を実施できる効果がある。
また、本実施の形態に係る統合ECU200において、3以上の監視部のそれぞれは、他の監視部の監視処理の実行回数、監視処理において異常と判定された回数、及び、監視処理において正常と判定された回数、のうち少なくとも1つの回数に到達したタイミングに応じて、監視対象の監視を開始する。
これにより、例えば、第一の監視部の監視対象である第二の監視部がすべての監視対象の数だけ監視処理を実行した後に、第一の監視部が第二の監視部のソフトウェアの監視処理を実施することで、第二の監視部の監視結果をすべて信頼するための監視処理の回数を1回に削減できる効果がある。また、例えば、第一の監視部の監視対象である第二の監視部が異常を1回検知した場合に、第一の監視部が第二の監視部のソフトウェアの監視処理を実行することで、第二の監視部の監視対象に異常が発生した場合にのみ監視処理を実行でき、監視処理の回数を削減できる効果がある。また、例えば、第一の監視部の監視対象である第二の監視部が正常を5回検出した場合に、第一の監視部が第二の監視部のソフトウェアの監視処理を1回実行することで、第一の監視部の監視処理を少なくでき、監視処理の回数を削減できる効果がある。これは、強い実行権限のソフトウェアを動作させるためには実行モードの切り替えが必要である場合が想定できるため、実行モードの切り替え回数を削減することでのオーバーヘッドを削減できる効果がある。
また、本実施の形態に係る統合ECU200において、3以上の監視部のそれぞれは、監視対象がソフトウェアである場合、メモリまたはストレージに記憶されている監視対象であるソフトウェアのハッシュ値、マスク値、及び、複製値のうち少なくとも1つの情報を取得値として取得し、事前に定義された正解値である期待値と取得値とを比較し、期待値と取得値とが一致する場合にソフトウェアが正常であると判定し、期待値と取得値とが一致しない場合にソフトウェアが異常であると判定する。
これにより、ソフトウェアの改ざんが行われた場合は、期待値と取得値が異なるため、ソフトウェア改ざんの有無を判定できる効果がある。また、ハッシュ値を用いることで、複製値よりも効率的に改ざんを判定でき、マスク値を用いることで複製値よりも効率的に改ざんの有無を判定できる効果がある。また、複製値を用いることで、ハッシュ値よりも正確に改ざんを判定でき、マスク値を用いることで、ハッシュ値よりも正確に改ざんを判定できる効果がある。
また、本実施の形態に係る統合ECU200において、ソフトウェアは、仮想ソフトウェア基盤のプログラム及び設定ファイルの組み合わせと、仮想マシンのカーネルプログラム及び設定ファイルの組み合わせと、仮想マシン上のユーザアプリのプログラム及び設定ファイルの組み合わせと、3以上の監視部のそれぞれのプログラム及び設定ファイルの組み合わせとのうち少なくとも1つの組み合わせを含む。
これにより、ハイパーバイザと仮想マシンとユーザアプリと監視部に関連するソフトウェアの改ざんの有無を判定できる。
また、本実施の形態に係る統合ECU200において、3以上の監視部のそれぞれは、監視対象が通信ログである場合、通信ログを取得し、許可リストと、拒否リストと、正常時の統計情報とのうち少なくとも1つを用いて通信ログを検証し、(i)許可リストに含まれる場合に通信ログが正常であると判定し、許可リストに含まれない場合に通信ログが異常であると判定する第一判定、(ii)拒否リストに含まれない場合に通信ログが正常であると判定し、拒否リストに含まれる場合に通信ログが異常であると判定する第二判定、及び、(iii)正常時の統計情報から逸脱していない場合に通信ログが正常であると判定し、正常時の統計情報から逸脱している場合に通信ログが異常であると判定する第三判定、のいずれか1つの判定を行う。
これにより、異常な通信が送受信された場合は許可リストに含まれず、拒否リストに含まれ、正常時の統計情報から逸脱するため、通信の異常を判定できる。さらに、異常な通信の送信元や宛先情報を取得でき、送信元のソフトウェアが改ざんされている可能性が高く、宛先のソフトウェアが次の攻撃の対象になっている可能性が高いと把握できる効果がある。
また、本実施の形態に係る統合ECU200において、通信ログは、イーサネットと、CANプロトコルと、FlexRayプロトコルと、SOME/IPプロトコルと、SOME/IP-SDプロトコルと、システムコールと、ハイパーコールとのうち少なくとも一つを含んでもよい。
これにより、車載システムに搭載されるネットワークプロトコルを監視対象とすることで、プロトコル特有のパラメータを用いて通信の異常を判定できる効果がある。さらに、異常と判定された通信ログから送信元と宛先を取得でき、異常が発生しうる監視部や監視対象を特定できる効果がある。さらに、特権命令であるシステムコールや、ハイパーコールを監視対象とすることで、実行権限の境界にて発生する異常を判定でき、異常が発生しうる監視部や監視対象を特定できる効果がある。
また、本実施の形態に係る統合ECU200において、3以上の監視部のそれぞれは、監視対象ごとに設定された優先度に応じて、監視対象の監視頻度と、監視対象の検証方法と、監視対象の選択方法のうち少なくとも1つを変更する。
これにより、監視対象ごとに改ざんされる可能性と改ざんされた場合の影響の大きさには差があると想定できるため、監視対象ごとに適切な優先度を設定することで、限られたリソース内で改ざんリスクの高い監視対象を重点的に監視できる効果がある。
また、本実施の形態に係る統合ECU200において、優先度は、監視対象の実行権限と、3以上の監視部のうちの1つの監視部または監視が動作する仮想マシンが外部ネットワーク接続機能を有するか否かと、1つの監視部または監視が動作する仮想マシンが車両制御機能を有するか否かとのうち少なくとも1つに応じて設定される。
これにより、強い実行権限で動作するソフトウェアは脆弱性を含まないように単純なアルゴリズムで実装されると想定できるため、改ざんされる可能性が低いため優先度を低く設定できる効果がある。また、外部ネットワークと接続されない仮想マシンや、信頼可能な車両の制御機能をもつ仮想マシンは改ざんされる可能性が低いため、優先度を低く設定できる効果がある。
また、本実施の形態に係る統合ECU200において、統合ECU200は、さらに、監視装置が動作するシステムの状態またはイベントに応じて、監視情報に含まれる優先度と、監視対象に含まれる監視担当及び監視対象の組み合わせである監視構成とのうち少なくとも1つを変更する管理部を含む。
これにより、システムの状態またはイベントによって監視対象の重要度に差がある場合、監視情報を適切な固定値として設定することは困難であると想定できるため、システム起動後であっても監視情報と監視構成を柔軟に変更することで、効果的に監視できる効果がある。例えば、優先度を柔軟に変更し、優先度に応じて監視対象の監視頻度と監視精度と監視手段を変更することで、限られたリソース内で改ざんリスクの高い監視対象を重点的に監視できる効果がある。また、一つの仮想マシンが再起動するなど、一部の監視部が動作できない状態になった場合に他の監視部が動作できない監視対象の監視を引き継ぐように監視情報を変更することで、監視対象を継続的に監視できる効果がある。また、例えば、一つの仮想マシンが異常と判定された場合に他の監視部が監視対象の監視を引き継ぐことで、監視対象を信頼できる監視部から監視できる効果がある。また、例えば、一つの仮想マシンが異常と判定された場合に他の監視部が監視対象の監視を追加で実施することで、複数の監視部によって監視を強化できる効果がある。また、例えば、一つの仮想マシンのCPUやメモリのリソースが圧迫している場合、他の監視部が監視対象の監視を引き継ぐことで、リソースが圧迫によるシステム影響を低減できる効果がある。
また、本実施の形態に係る統合ECU200において、管理部は、外部ネットワーク接続中か否かと、外部ネットワーク接続確立イベントの発生の有無と、監視マシンのシステム状態と、監視部の監視結果と、異常を検知した監視部の実行権限と、異常を検知したソフトウェアの実行権限と、異常を検知した通信ログの宛先または送信元とのうち少なくとも1つに応じて、優先度を変更する。
これにより、ネットワーク接続に関する状態は攻撃可能性に影響するため、監視対象の攻撃可能性の変化に応じて優先度を変更できる効果がある。さらに、ソフトウェアの異常が判定された場合、異常ソフトウェアと同じ仮想マシンのソフトウェアや、同じ実行権限で動作するソフトウェアや、異常を判定した監視部のソフトウェアにおいて、攻撃が発生する可能性が高いと想定できるため、攻撃可能性の変化に応じて優先度を変更できる効果がある。さらに、通信の異常を判定した場合、通信の送信元に異常が発生している可能性が高く、通信の送信先に攻撃が発展する可能性が高いため、攻撃可能性の変化に応じて優先度を変更できる効果がある。
また、本実施の形態に係る統合ECU200において、統合ECU200は、車載システム上において動作する。管理部は、車両の走行状態に応じて、車両の制御機能を有する仮想マシンで動作する監視対象の優先度を変更する。車両の走行状態は、停止中、手動運転中、高度運転支援中、及び、自動運転中のうちいずれかである。
これにより、自動運転中や高度運転支援中の場合、車両の制御機能を有する制御仮想マシンのソフトウェアから、車両の走る、曲がる、止まるに関わる制御コマンドが送信され、エンジン、ステアリング、ブレーキなど制御する制御ECUが制御コマンドに従うと想定でき、ソフトウェア改ざんの影響が大きいため、車両の制御機能を有する制御仮想マシンのソフトウェアの優先度を上げて重点的に監視できる効果がある。一方で、停止中または手動走行中の場合、制御ECUが制御コマンドに従わない状態であると想定でき、ソフトウェア改ざんの影響が小さいため、車両の制御機能を有する制御仮想マシンのソフトウェアの監視の優先度を下げることで、他の監視対象の監視処理を優先できる効果がある。
また、本実施の形態に係る統合ECU200において、管理部は、監視構成の変更後であっても、信頼度の低い監視部のソフトウェアを信頼度の低い監視部よりも信頼度の高い監視部が監視する監視の信頼チェーンを構築できるように、監視構成を変更する。
これにより、監視構成を変更したとしても、強い実行権限の監視部から弱い実行権限の監視部のソフトウェアを監視することができ、改ざんされる可能性が低い仮想マシンの監視部から改ざんされる可能性の高い仮想マシンの監視部のソフトウェアを監視できるため、いずれかの弱い実行権限監視部が乗っ取られた場合であっても、異常を判定できる効果がある。
また、本実施の形態に係る統合ECU200において、管理部は、外部ネットワーク接続中か否かと、外部ネットワーク接続確立イベントの発生の有無と、仮想マシンのシステム状態と、監視部の監視結果と、異常を検知した監視部の実行権限と、異常を検知したソフトウェアの実行権限と、異常を検知した通信ログの宛先または送信元とのうち少なくとも1つに応じて、監視構成を変更する。
これにより、ネットワーク接続に関する状態は攻撃可能性に影響するため、監視対象の攻撃可能性の変化に応じて監視構成を変更できる効果がある。また、一つの仮想マシンが再起動するなど、一部の監視部が無効化状態になった場合に他の監視部が監視対象の監視を引き継ぐことで、監視対象を継続的に監視できる効果がある。さらに、一つの仮想マシンが異常と判定された場合に他の監視部が監視対象の監視を引き継ぐことで、監視対象を信頼できる監視部から監視できる効果がある。さらに、一つの仮想マシンが異常と判定された場合に他の監視部が監視対象の監視を追加で実施することで、複数の監視部によって監視を強化できる効果がある。さらに、一つの仮想マシンのCPUやメモリのリソースが圧迫している場合、他の監視部が監視対象の監視を引き継ぐことで、リソースが圧迫によるシステム影響を削減できる効果がある。
また、本実施の形態に係る統合ECU200において、統合ECU200は、車載システム上において動作する。管理部は、車両の走行状態に応じて、車両の制御機能を有する仮想マシンに関係する監視構成を変更する。車両の走行状態は、停止中、手動運転中、高度運転支援中、自動運転中のうちいずれかである。
これにより、自動運転中や高度運転支援中の場合、車両の制御機能を有する制御仮想マシンのソフトウェアから、車両の走る、曲がる、止まるに関わる制御コマンドが送信され、エンジン、ステアリング、ブレーキなど制御する制御ECUが制御コマンドに従うと想定でき、ソフトウェア改ざんの影響が大きいため、複数の監視部によって制御仮想マシンのソフトウェアを監視するよう監視構成を変更できる効果がある。停止中または手動走行中の場合、制御ECUが制御コマンドに従わない状態であると想定でき、ソフトウェア改ざんの影響が小さいため、一つのみの監視部によって負荷の小さい通常の監視を実施できる効果がある。
また、本実施の形態に係る統合ECU200において、管理部は、(i)予め定義された2以上の監視構成から一つを選択する手段と、(ii)2以上の監視部を頂点とし、監視担当を道の始点とし、監視対象を道の終点とする有向グラフとして監視構成を記憶し、所定のアルゴリズムで有向グラフを再構築する手段と、(iii)2以上の監視部をノードとし、監視担当を親ノードとし、監視対象を子ノードとするツリー構造として監視構成を記憶し、所定のアルゴリズムでツリー構造を再構築する手段と、のうち少なくとも1つの手段で監視構成を変更する。
これにより、複数の監視構成のパターンから、現在のシステム状況及びイベントに応じて適切な監視構成に変更できる効果がある。また、監視構成を有向グラフのデータ構造で保持することで、一部の監視部が無効化または一部の監視部において異常が判定されたなどの場合に、少なくとも1つの監視部が監視対象を監視できるよう監視構成を再計算可能にする効果がある。また、管理部は、監視部をノードとし、監視担当を親ノードとし、監視対象を子ノードとするツリー構造として監視構成を記憶し、所定のアルゴリズムでツリー構造を再構築することで、監視構成を変更する、監視装置である。また、監視構成をツリー構造のデータ構造で保持することで、一部の監視部が無効化または一部の監視部において異常が判定されたなどの場合に、少なくとも1つの監視部が監視対象を監視できるよう監視構成を再計算可能にする効果がある。
また、本実施の形態に係る統合ECU200において、統合ECU200は、さらに、監視サーバーへ監視結果を通知する監視サーバー通信部を備える。
これにより、監視サーバーを介して監視結果をセキュリティ分析官へ通知でき、異常が発生した場合にはソフトウェアの更新など対策を検討できる効果がある。
また、本実施の形態に係る監視システムは、監視装置と監視サーバーとで構成される監視システムであって、監視装置は、それぞれがソフトウェア及び通信ログの少なくとも1つを監視対象として監視する3以上の監視部と、監視部識別子と、監視対象識別子と、正常判定時刻と、異常判定時刻と、のうち少なくとも2つを監視結果として監視サーバーへ送信する監視サーバー通信部と、を備える。3以上の監視部は、第一の実行権限にて動作する第一の監視部と、第一の実行権限よりも信頼性が低い第二の実行権限にて動作する第二の監視部と、第二の実行権限と信頼性が同じ、または、第二の実行権限よりも信頼性が低い第三の実行権限にて動作する第三の監視部とを含む。信頼度の低い監視部のソフトウェアを少なくとも1つの信頼度の高い監視部から監視する監視の信頼チェーンを構築できるように、第一の監視部は、第二の監視部のソフトウェアを監視し、第一の監視部及び第二の監視部の少なくとも1つは、第三の監視部のソフトウェアを監視する。監視サーバーは、監視結果を受信し、グラフィカルユーザーインターフェース上に監視結果を表示する監視結果表示部を備える。
これにより、セキュリティ分析官は監視結果を視覚的に把握することができ、異常が発生した場合にはソフトウェアの更新など対策を迅速に検討できる効果がある。
また、本実施の形態に係る監視システムにおいて、監視結果表示部は、システムアーキテクチャに関連付けて監視結果を表示し、異常を検知した監視部または異常が検知された監視対象を強調する手段と、所定のタイムラインに関連付けて監視結果を表示し、正常判定時刻または異常判定時刻を強調する手段とのうち少なくとも1つの手段でグラフィカルユーザーインターフェース上に監視結果を表示する。
これにより、セキュリティ分析官は監視部の場所と、監視対象の場所、監視結果を直感的に把握することができ、異常が発生した場合にはソフトウェアの更新など対策をより迅速に検討できる効果がある。また、セキュリティ分析官は監視結果の時系列を直感的に把握することができ、異常が発生した場合にはソフトウェアの更新など対策をより迅速に検討できる効果がある。
また、本実施の形態に係る監視システムにおいて、監視サーバーは、さらに、監視対象と、監視対象を監視する監視部と、監視対象の優先度と、優先度に対応した監視方法とのうち少なくとも1つの監視情報の変更を受け付け、監視装置に変更を要求する監視情報変更部を備える。監視装置は、さらに、監視情報変更部の要求に応じて監視情報を更新する監視情報更新部を備える。
これにより、セキュリティ分析官は監視結果を分析した結果、監視対象や監視部、優先度、優先度ごとの監視方法などの修正が必要であると判断した場合に、迅速にシステムに修正を反映することができる効果がある。
[統合ECUの構成図の詳細の変形例1]
図32は、実施の形態における統合ECUの構成図の詳細の変形例1を示す図である。図4では、仮想ソフトウェア基盤としてタイプ1のハイパーバイザHV100の利用を想定して記載しているが、タイプ2のハイパーバイザHV200を用いてもよい。この場合、ホストオペレーティングシステムHOS100がハイパーバイザHV200を起動し、ハイパーバイザHV200が仮想マシンを起動する。
ハイパーバイザHV200は、HV領域のソフトウェアとVM領域のソフトウェアとを監視するHV監視部HV210を備える。ホストオペレーティングシステムHOS100は、ホストOS領域のソフトウェアとHV領域のソフトウェアとVM領域のソフトウェアとシステムコールとを監視するホストOS監視部HOS110を備える。
各プログラムの実行権限について説明する。図4と同様に、セキュアオペレーティングシステムに、最も強いセキュアな実行権限(PL4)を割り当て、オペレーティングシステム上のアプリケーションに次に強いセキュアな実行権限(PL3)を割り当てる。図4とは異なり、ホストオペレーティングシステムHOS100に強い実行権限(PL1)を割り当て、ハイパーバイザHV200と、仮想マシンにホストオペレーティングシステムHOS100と同じ実行権限(PL1)を割り当てる。そして、図4と同様に、仮想マシン上のアプリケーション(PL0)に最も弱い実行権限を割り当てる。なお、実行権限は、強い順にPL4、PL3、PL2、PL1、PL0である。
この場合、外部ネットワークと接続される外部アプリA100が改ざんされる可能性が最も高いため信頼度が最も低く、次に実行権限が弱い制御アプリA200及び映像アプリA300の信頼度が低く、次に実行権限が弱い外部仮想マシンVM100、制御仮想マシンVM200、映像仮想マシンVM300、ハイパーバイザHV200、及び、ホストオペレーティングシステムHOS100の信頼度が低く、セキュアアプリSA100及びセキュアオペレーティングシステムSOS100の信頼度が最も高いと想定できる。また、ホストオペレーティングシステムHOS100は外部仮想マシンへ外部ネットワークインタフェースをブリッジなどの手段で提供する場合、ホストオペレーティングシステムHOS100は外部ネットワークと接続される可能性があり、ホストオペレーティングシステムHOS100から仮想マシンへ提供するストレージへアクセスできる可能性もあることから、図4におけるハイパーバイザHV200とは異なり、ホストオペレーティングシステムHOS100のソフトウェアの信頼度は低い。そのため、セキュアアプリは、ホストオペレーティングシステムHOS100だけでなく、ハイパーバイザHV200及び仮想マシンのソフトウェアを監視することが望ましい。
アプリケーション、仮想マシン、ハイパーバイザHV200、ホストオペレーティングシステムHOS100、及び、セキュアアプリSA100のそれぞれにセキュリティ対策機構を導入することが望ましいが、セキュリティ対策機構自体が改ざんされるリスクが課題となる。そこで、例えば、SA監視部SA110がホストOS監視部HOS110のソフトウェアと、HV監視部HV210のソフトウェアと、仮想マシンのソフトウェアとを監視し、仮想マシン監視部がアプリケーション監視部を監視してもよい。
このように、それぞれの監視部を、より強い実行権限で動作する少なくとも1つの多層監視部から監視することで、監視の信頼チェーンを構築できる。これによって、ホストオペレーティングシステムHOS100やハイパーバイザHV200が乗っ取られた場合であっても、SA監視部SA110から異常を検知できる。
なお、ハイパーバイザHV200にホストオペレーティングシステムHOS100より強い実行権限(PL2)を割り当ててもよい。この場合、実行権限と信頼度と監視の信頼チェーンについては図4の説明と同様になる。
[統合ECUの構成図の詳細の変形例2]
図33は、実施の形態における統合ECUの構成図の詳細の変形例2を示す図である。図4では、ハイパーバイザHV100が3種類の仮想マシンを実行及び監視を実施する記載しているが、ハイパーバイザHV100がホストするコンテナ仮想マシンVM400がコンテナ仮想化基盤であるコンテナエンジンCE100を用いて、アプリケーション層を仮想化して、コンテナアプリCA100とコンテナアプリCA200とを動作させてもよい。
コンテナ仮想マシンVM400は、コンテナエンジンCE100のソフトウェアと、コンテナアプリCA100のソフトウェア及び設定と、コンテナアプリCA200のソフトウェア及び設定とを含むVM領域のソフトウェアを監視するVM監視部VM410を備える。コンテナアプリCA200は、アプリ領域のソフトウェアと、コンテナアプリCA100と、コンテナ間通信とを監視するコンテナアプリ監視部CA210を備える。
各プログラムの実行権限について説明する。図4と同様に、セキュアオペレーティングシステムに、最も強いセキュアな実行権限(PL4)を割り当て、オペレーティングシステム上のアプリケーションに次に強いセキュアな実行権限(PL3)を割り当て、ハイパーバイザHV100に次に強い実行権限(PL2)を割り当て、仮想マシンに次に強い実行権限(PL1)を割り当てる。コンテナエンジンCE100と、コンテナアプリCA100と、コンテナアプリCA200には最も弱い実行権限を割り当てる。なお、実行権限は、強い順にPL4、PL3、PL2、PL1、PL0である。
ここで、同じ実行権限で動作する複数のコンテナは信頼度が異なってもよい。例えば、コンテナアプリCA100がWi-FiやBluetoothなどの近接ネットワークと通信する機能を有し、コンテナアプリCA200が車両の制御機能を有する場合、ソフトウェアが改ざんされる可能性を考慮すると、コンテナアプリCA100よりコンテナアプリCA200の信頼度が高いと考えられる。この場合、コンテナアプリ監視部CA210がコンテナアプリCA100のソフトウェアを監視することで、監視の信頼チェーンを同一の実行権限で動作するコンテナ間であっても構築できる。
この場合、外部ネットワークと接続される外部アプリA100が改ざんされる可能性が最も高いため信頼度が最も低く、次に実行権限が弱いが近接ネットワークを介した通信を直接行うコンテナアプリCA200の信頼度が低く、次に実行権限は同じであるがネットワークを介した通信を直接行わないコンテナアプリCA100と、コンテナエンジンCE100の信頼度が低く、次に実行権限が弱い外部仮想マシンVM100、及び、コンテナ仮想マシンVM400の信頼度が低く、次に実行権限が弱いハイパーバイザHV100の信頼度が低く、セキュアアプリSA100、及び、セキュアオペレーティングシステムSOS100の信頼度が最も高いと想定できる。
アプリケーション、仮想マシン、ハイパーバイザHV100、コンテナ仮想マシンVM400、コンテナアプリCA100、及び、コンテナアプリCA200のそれぞれに対策機構を導入することが望ましいが、セキュリティ対策機構自体が改ざんされるリスクが課題となる。そこで、例えば、SA監視部SA110がHV監視部HV110のソフトウェア及び仮想マシンのソフトウェアを監視し、VM監視部VM410がコンテナエンジンCE100、コンテナアプリCA100、コンテナアプリCA200、及び、コンテナアプリ監視部CA210を監視し、コンテナアプリ監視部CA210がアプリ監視のソフトウェアと、コンテナアプリCA100と、コンテナ間通信とを監視することで、それぞれの監視部を、より強い実行権限またはより高い信頼度で動作する少なくとも1つの多層監視部から監視できるため、監視の信頼チェーンを構築できる。
なお、ハイパーバイザHV100を用いることは必須でなく、ホストとなるオペレーティングシステムが、アプリケーションをコンテナエンジンCE100によって仮想化して、コンテナアプリCA100とコンテナアプリCA200を動作させてもよい。この場合、実行権限と信頼度と監視の信頼チェーンについては、ハイパーバイザHV100を削除し、コンテナ仮想マシンVM400にホストとなるオペレーティングシステムに置き換えることで、図33の説明と同様に説明できる。
以上の変形例1及び変形例2のように、監視装置は、セキュアアプリ、ホストオペレーティングシステム、1以上の仮想ソフトウェア基盤、及び、1以上の仮想マシン上、または、1以上のコンテナ仮想化基盤及び2以上のコンテナ上にて動作する。第一の実行権限と、第二の実行権限と、第三の実行権限と、第四の実行権限とは、セキュアアプリの実行権限と、ホストオペレーティングシステムの実行権限と、仮想ソフトウェア基盤の実行権限と、仮想マシンのカーネル実行権限と、仮想マシンのユーザ実行権限と、コンテナの実行権限とのうちの1つである。同一の実行権限にて動作する仮想マシンの監視部が2以上存在する場合、同一の実行権限にて動作する2以上の仮想マシンの2以上の監視部のうちの第一の仮想マシンの監視部は、2以上の仮想マシンの2以上の監視部のうちの第二の仮想マシンの監視部のソフトウェアを監視対象に含み、2以上の仮想マシンは、攻撃者によって改ざんされる可能性に応じて第一の仮想マシン及び第二の仮想マシンのいずれかに分類される。また、同一の実行権限にて動作するコンテナの監視部が2以上存在する場合、同一の実行権限にて動作する2以上のコンテナの2以上の監視部のうちの第一のコンテナの監視部は、2以上のコンテナの2以上の監視部のうちの第二のコンテナの監視部のソフトウェアを監視対象に含み、2以上のコンテナは、攻撃者によって改ざんされる可能性に応じて第一のコンテナ及び第二のコンテナのいずれかに分類される。
これにより、ホストとなるオペレーティングシステムが、仮想ソフトウェア基盤であるハイパーバイザを用いて、複数の仮想マシンを実行及び管理する場合や、DockerやKubernetesなどに代表されるコンテナ仮想化基盤を用いて複数のコンテナを実行及び管理する場合であっても、外部ネットワークとの接続機能の有無など改ざんされる可能性に応じて仮想マシンまたはコンテナの信頼度は異なると想定できるため、複数の監視部を監視の信頼チェーンを構築することで、信頼度の低い第二の仮想マシンまたは第二のコンテナの監視部が乗っ取られた場合であっても、信頼度の高い第一の仮想マシンの監視部または第一のコンテナの監視部から異常を検知できる効果がある。
(他の実施の形態)
以上のように、本開示に係る技術の例示として実施の形態を説明した。しかしながら、本開示に係る技術は、これに限定されず、適宜、変更、置き換え、付加、省略等を行った実施の形態にも適用可能である。例えば、以下のような変形例も本開示の一実施態様に含まれる。
(1)上記の実施の形態では、自動車に搭載される車載システムにおけるセキュリティ対策として説明したが、適用範囲はこれに限られない。自動車に限らず、建機、農機、船舶、鉄道、飛行機などのモビリティにも適用してもよい。すなわち、モビリティシステムにおけるセキュリティ対策として適用可能である。また、工場やビルなどの産業制御システムに適用してもよい。
(2)上記の実施の形態では、通信ログとしてセキュアアプリの通信に利用されるセキュアモニタコールを用いていないが、セキュアモニタコールは、VM監視部VM210、HV監視部HV110またはSA監視部SA110による監視対象とされてもよい。これにより、セキュアアプリ及びセキュアOSが記憶する秘密情報への攻撃試行を補足できる効果がある。
(3)上記の実施の形態では、セキュアオペレーティングシステムSOS100に監視部を実装しない構成のみを記載しているが、監視部を実装してもよい。この場合、セキュアオペレーティングシステムSOS100では、脆弱性を含まない実装が求められるため、セキュアアプリのソフトウェアを検証するだけの単純なアルゴリズムの実装が望ましい。
(4)上記の実施の形態では、ハイパーバイザHV100は、実行及び管理の対象となる仮想マシンの種類は3種類であるとしたが、3種類でなくともよく、3種類未満の仮想マシンであっても、4種類以上の仮想マシンであってもよい。
(5)上記の実施の形態では、割り当てる実行権限を4種類の実行権限としたが、4種類の実行権限でなくともよく、4種類未満の実行権限であっても、5種類以上の実行権限であってもよい。
(6)上記の実施の形態では、外部ネットワークへの接続または、車両の制御の機能の有無に応じて、仮想マシンの信頼度が異なると説明しているが、ユーザログイン機能の有無または、第三者アプリのダウンロード機能の有無に応じて仮想マシンの信頼度が異なってもよい。この場合、ユーザログイン機能を有する場合は、不正ログインされる可能性があるため信頼度は低く、第三者アプリのダウンロード機能を有する場合は、不正ソフトウェアをダウンロードされる可能性があるため信頼度は低いと想定できる。
(7)上記の実施の形態では、すべての仮想マシンとすべてのアプリケーションとハイパーバイザHV100とセキュアアプリSA100に監視部を配置するとして記載しているが、これらの配置は必須でなく、実行権限または仮想マシンの信頼度が異なる2以上の監視部が配置されていればよい。
(8)上記実施の形態における各装置を構成する構成要素の一部又は全部は、1個のシステムLSI(Large Scale Integration:大規模集積回路)から構成されているとしても良い。システムLSIは、複数の構成部を1個のチップ上に集積して製造された超多機能LSIであり、具体的には、マイクロプロセッサ、ROM、RAM等を含んで構成されるコンピュータシステムである。RAMには、コンピュータプログラムが記録されている。マイクロプロセッサが、コンピュータプログラムに従って動作することにより、システムLSIは、その機能を達成する。また、上記各装置を構成する構成要素の各部は、個別に1チップ化されていても良いし、一部又は全部を含むように1チップ化されても良い。また、ここでは、システムLSIとしたが、集積度の違いにより、IC、LSI、スーパーLSI、ウルトラLSIと呼称されることもある。また、集積回路化の手法はLSIに限るものではなく、専用回路又は汎用プロセッサで実現しても良い。LSI製造後に、プログラムすることが可能なFPGA(Field Programmable Gate Array)や、LSI内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサを利用しても良い。更には、半導体技術の進歩又は派生する別技術によりLSIに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積化を行っても良い。バイオ技術の適用等が可能性としてあり得る。
(9)上記各装置を構成する構成要素の一部又は全部は、各装置に脱着可能なICカード又は単体のモジュールから構成されているとしても良い。ICカード又はモジュールは、マイクロプロセッサ、ROM、RAM等から構成されるコンピュータシステムである。ICカード又はモジュールは、上記の超多機能LSIを含むとしても良い。マイクロプロセッサが、コンピュータプログラムに従って動作することにより、ICカード又はモジュールは、その機能を達成する。このICカード又はこのモジュールは、耐タンパ性を有するとしてもよい。
(10)本開示の一態様としては、異常検知の方法をコンピュータにより実現するプログラム(コンピュータプログラム)であるとしても良いし、コンピュータプログラムからなるデジタル信号であるとしても良い。また、本開示の一態様としては、コンピュータプログラム又はデジタル信号をコンピュータで読み取り可能な記録媒体、例えば、フレキシブルディスク、ハードディスク、CD-ROM、MO、DVD、DVD-ROM、DVD-RAM、BD(Blu―ray(登録商標) Disc)、半導体メモリ等に記録したものとしても良い。また、これらの記録媒体に記録されているデジタル信号であるとしても良い。また、本開示の一態様としては、コンピュータプログラム又はデジタル信号を、電気通信回線、無線又は有線通信回線、インターネットを代表とするネットワーク、データ放送等を経由して伝送するものとしても良い。また、本開示の一態様としては、マイクロプロセッサとメモリを備えたコンピュータシステムであって、メモリは、上記コンピュータプログラムを記録しており、マイクロプロセッサは、コンピュータプログラムに従って動作するとしても良い。また、プログラム若しくはデジタル信号を記録媒体に記録して移送することにより、又は、プログラム若しくはデジタル信号を、ネットワーク等を経由して移送することにより、独立した他のコンピュータシステムにより実施するとしてもよい。
(11)上記実施の形態及び上記変形例で示した各構成要素及び機能を任意に組み合わせることで実現される形態も本開示の範囲に含まれる。