(57)【要約】【課題】簡易な機構で、外部からの不正アクセスなどに起因する異常の発生を効率よく、安全に抑制できるシステムを提供する。【解決手段】セキュアモードとノンセキュアモードとに選択的に切り替えられ、メモリに対してモードごとに独立したアクセス権が設定されるプロセッシングユニットと、ノンセキュアモードのプロセッシングユニットで稼働する第１の異常検出ユニットと、セキュアモードのプロセッシングユニットで稼働する第２の異常検出ユニットとを有し、第１の異常検出ユニットは、ネットワークの入出力パケットを受信抑制ルールに従って破棄するパケット処理ユニットを含み、第２の異常検出ユニットは、ノンセキュアモードで稼働するプログラムの振る舞いを監視し、受信抑制ルールを更新する監視ユニットを含むシステムを提供する。【選択図】図１
2019066995.tif 000002
【特許請求の範囲】
【請求項１】
セキュアモードとノンセキュアモードとに選択的に切り替えられ、メモリに対してモードごとに独立したアクセス権が設定されるプロセッシングユニットと、
前記ノンセキュアモードの前記プロセッシングユニットで稼働する第１の異常検出ユニットと、
前記セキュアモードの前記プロセッシングユニットで稼働する第２の異常検出ユニットとを有し、
前記第１の異常検出ユニットは、ネットワークの入出力パケットを受信抑制ルールに従って破棄するパケット処理ユニットを含み、
前記第２の異常検出ユニットは、前記ノンセキュアモードで稼働するプログラムの振る舞いを監視し、前記受信抑制ルールを更新する監視ユニットを含む、システム。
【請求項２】
請求項１において、
前記プロセッシングユニットの前記セキュアモードで稼働するハイパーバイザーを有し、
前記ハイパーバイザーは、前記ノンセキュアモードで稼働する第１のＯＳと前記セキュアモードで稼働する第２のＯＳとの切り替えを行う切替制御ユニットと、
前記第２のＯＳに切り替えて前記監視ユニットで前記プログラムカウンタの値および前記スタックポインタの値を解析するタイミングを制御するユニットとを含む、システム。
【請求項３】
請求項２において、
前記切替制御ユニットは、前記第２のＯＳと共用する第１のデバイスに対する前記第１のＯＳのアクセスにより前記セキュアモードに移行し、さらに、
前記ハイパーバイザーは、前記第１のＯＳに対し前記第１のデバイスを仮想化して提供するエミュレーションユニットを含む、システム。
【請求項４】
請求項１ないし３のいずれかにおいて、
前記監視ユニットは、前記ノンセキュアモードで稼働するプログラムのプログラムカウンタおよびスタックポインタであって、前記メモリを介して提供されるプログラムカウンタの値およびスタックポインタの値を取得し、取得された前記プログラムカウンタの値およびスタックポインタの値より判断される前記プログラムの振る舞いを解析するユニットと、
前記解析するユニットより発見された異常動作の要因となった入出力パケットの情報を前記受信抑制ルールに追加して前記受信抑制ルールを更新する更新ユニットとを含む、システム。
【請求項５】
請求項４において、
前記解析するユニットは、前記取得されたプログラムカウンタの値およびスタックポインタの値を、解析対象となるプログラムに対し予めアクセスが許可されている領域によりフィルタリングし、許可されていない箇所に対するアクセスの有無を判断する第１の機能を含む、システム。
【請求項６】
請求項４または５において、
前記解析するユニットは、前記取得されたプログラムカウンタの値およびスタックポインタの値を、解析対象となるプログラムに対し予め設定されているアクセス許可リストと比較する第２の機能を含む、システム。
【請求項７】
請求項４ないし６のいずれかにおいて、
前記解析するユニットは、前記取得されたプログラムカウンタの値およびスタックポインタの値の経時変化のサイクリックなパターンを比較する第３の機能を含む、システム。
【請求項８】
請求項４ないし７のいずれかにおいて、
前記解析するユニットは、前記取得されたプログラムカウンタの値およびスタックポインタの値を周波数上に現れる離散データとみなしてフーリエ変換を行い、解析対象となるプログラムの実行可能な範囲から外れる周波数成分を検出する第４の機能を含む、システム。
【請求項９】
請求項４ないし８のいずれかにおいて、
前記更新ユニットは、前記異常動作の要因となった入出力パケットのフロー情報を前記受信抑制ルールに追加する機能を含む、システム。
【請求項１０】
セキュアモードとノンセキュアモードとに選択的に切り替えられ、メモリに対してモードごとに独立したアクセス権が設定されるプロセッシングユニットの制御方法であって、
前記ノンセキュアモードの前記プロセッシングユニットで稼働する第１の異常検出段階と、
前記セキュアモードの前記プロセッシングユニットで稼働する第２の異常検出段階とを有し、
前記第１の異常検出段階は、ネットワークの入出力パケットを受信抑制ルールに従って破棄することを含み、
前記第２の異常検出段階は、前記ノンセキュアモードで稼働するプログラムの振る舞いを監視することと、
監視結果により、前記受信抑制ルールを更新することとを含む、制御方法。
【請求項１１】
請求項１０において、
前記監視することは、ノンセキュアモードで稼働するプログラムのプログラムカウンタおよびスタックポインタであって、前記メモリを介して提供されるプログラムカウンタの値およびスタックポインタの値を取得し、取得された前記プログラムカウンタの値およびスタックポインタの値より判断される前記プログラムの振る舞いを解析することを含み、
前記更新することは、前記解析することにより発見された異常動作の要因となった入出力パケットの情報を前記受信抑制ルールに追加して前記受信抑制ルールを更新することを含む、制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、セキュアモードとノンセキュアモードとを選択的に切り替え可能なシステムに関するものである。
【背景技術】
【０００２】
特許文献１には、制御システム挙動を測定するように構成されているデバイス監視構成要素と、デバイス監視構成要素および通信ネットワークに通信可能に結合された侵入防止システムとを含むシステムが開示されている。侵入防止システムは、デバイス監視構成要素によって測定された制御システム挙動を、第１のルールセットと対照して分析して、異常が存在するか、侵入が存在するか、または両方が存在するかを判定するように構成されている制御システム分析構成要素を含む。
【０００３】
特許文献２には、支援機能によりメモリの保安領域へのアクセスが禁止された非セキュアモードと、保安領域へのアクセスが許可されたセキュアモードとを含む実行モードを備えたプロセッシングユニットと、セキュアモードで稼働するハイパーバイザーとを有するシステムが開示されている。ハイパーバイザーは、セキュアモードで稼働する第１のＯＳに対してメモリの保安領域および非保安領域へのアクセスを可能とすることを含む第１の動作条件を設定する第１の設定ユニットと、非セキュアモードで稼働する第２のＯＳに対して非保安領域に対するアクセスを可能とし、支援機能を用いて保安領域へのアクセスを不可とし、さらに、第１のＯＳと共用する第１のデバイスに対するアクセスによりセキュアモードに移行することを含む第２の動作条件を設定する第２の設定ユニットとを含む。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１４−１７９０７４号公報
【特許文献２】国際公開ＷＯ２０１７／０３４００８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
簡易な機構で、外部からの不正アクセスなどに起因する異常の発生を効率よく、安全に抑制できるシステムが要望されている。
【課題を解決するための手段】
【０００６】
本発明の一態様は、セキュアモードとノンセキュアモードとに選択的に切り替えられ、メモリに対してモードごとに独立したアクセス権が設定されるプロセッシングユニットと、ノンセキュアモードのプロセッシングユニットで稼働する第１の異常検出ユニットと、セキュアモードのプロセッシングユニットで稼働する第２の異常検出ユニットとを有するシステムである。第１の異常検出ユニットは、ネットワークの入出力パケットを受信抑制ルールに従って破棄するパケット処理ユニットを含み、第２の異常検出ユニットは、ノンセキュアモードで稼働するプログラムの振る舞いを監視し、受信抑制ルールを更新する監視ユニットを含む。
【０００７】
このシステムにおいては、ノンセキュアモードで第１の異常検出ユニットにより、受信抑制ルールに従って自律的に不正な入出力パケットを、異常が発生する前に事前に破棄できる。したがって、モードを切り替えなくても入出力パケットを継続的に監視でき、モード切替に要する負荷の発生を抑制できる。一方、セキュアモードで第２の異常検出ユニットにより定期的に、あるいは適当なイベントの発生によりプログラムの振る舞いを監視することにより、不正な入出力パケットの影響を受けないセキュアモードで、第１の異常検出ユニットでは排除されなかった不正な入出力パケットによる影響を監視でき、さらに、その監視結果により受信抑制ルールを更新することにより、未知であった不正な入出力パケットを既知として、第１の異常検出ユニットにより事前に破棄することが可能となる。
【０００８】
また、受信抑制ルールをセキュアモードで管理することにより、受信抑制ルールに対する不正な入出力パケットの影響を排除できる。したがって、セキュアモードとノンセキュアモードとを選択的に切り替えできる構成を利用して、簡易な機構で、外部からの不正アクセスなどに起因する異常の発生を効率よく、安全に抑制できるシステムを提供できる。
【０００９】
プロセッシングユニットは、セキュアモードで稼働するハイパーバイザーを有していてもよい。ハイパーバイザーは、ノンセキュアモードで稼働する第１のＯＳとセキュアモードで稼働する第２のＯＳとの切り替えを行う切替制御ユニットと、第２のＯＳに切り替えて監視ユニットでプログラムカウンタの値およびスタックポインタの値を解析するタイミングを制御するユニットとを含んでもよい。切替制御ユニットは、第２のＯＳと共用する第１のデバイスに対する第１のＯＳのアクセスによりセキュアモードに移行してもよく、ハイパーバイザーは、第１のＯＳに対し第１のデバイスを仮想化して提供するエミュレーションユニットを含んでもよい。ノンセキュア側から、仮想化して提供するデバイスにアクセスする都度、監視ユニットにより、プログラムの異常の有無を検出できるようにしてもよい。
【００１０】
監視ユニットは、ノンセキュアモードで稼働するプログラムのプログラムカウンタおよびスタックポインタであって、メモリを介して提供されるプログラムカウンタの値およびスタックポインタの値を取得し、取得されたプログラムカウンタの値およびスタックポインタの値より判断されるプログラムの振る舞いを解析するユニットと、解析するユニットより発見された異常動作の要因となった入出力パケットの情報を受信抑制ルールに追加して受信抑制ルールを更新する更新ユニットとを含んでもよい。
【００１１】
プログラムの振る舞いを解析する１つの方法は、取得されたプログラムカウンタの値およびスタックポインタの値を、解析対象となるプログラムに対し予めアクセスが許可されている領域によりフィルタリングし、許可されていない箇所に対するアクセスの有無を判断することである（第１の機能）。プログラムの振る舞いを解析する他の方法の１つは、取得されたプログラムカウンタの値およびスタックポインタの値を、解析対象となるプログラムに対し予め設定されているアクセス許可リストと比較することである（第２の機能）。プログラムの振る舞いを解析するさらに異なる他の方法の１つは、取得されたプログラムカウンタの値およびスタックポインタの値の経時変化のサイクリックなパターンを比較することである（第３の機能）。プログラムの振る舞いを解析するさらに異なる他の方法の１つは、取得されたプログラムカウンタの値およびスタックポインタの値を周波数上に現れる離散データとみなしてフーリエ変換を行い、解析対象となるプログラムの実行可能な範囲から外れる周波数成分を検出することである（第４の機能）。
【００１２】
更新ユニットは、異常動作の要因となった入出力パケットのフロー情報を受信抑制ルールに追加する機能を含んでもよい。不正な入出力パケットによる影響をさらに抑制できる。
【００１３】
本発明の他の態様の１つは、セキュアモードとノンセキュアモードとに選択的に切り替えられ、メモリに対してモードごとに独立したアクセス権が設定されるプロセッシングユニットの制御方法である。この制御方法は、ノンセキュアモードのプロセッシングユニットで稼働する第１の異常検出段階と、セキュアモードのプロセッシングユニットで稼働する第２の異常検出段階とを有する。第１の異常検出段階は、ネットワークの入出力パケットを受信抑制ルールに従って破棄することを含み、第２の異常検出段階は、ノンセキュアモードで稼働するプログラムの振る舞いを監視することと、監視結果により、受信抑制ルールを更新することとを含む。
【図面の簡単な説明】
【００１４】
【図１】システムの概略構成を示すブロック図。
【図２】異常検出システムの概略構成を示すブロック図。
【図３】異常検出システムの機能の割り当てを示すブロック図。
【図４】異常検出システムの処理の概要を示す図。
【図５】プログラムの振る舞いを検出する一例を示す図。
【図６】プログラムの振る舞いを検出する他の一例を示す図。
【図７】プログラムの振る舞いを検出する他の一例を示す図。
【図８】プログラムの振る舞いを検出する他の一例を示す図。
【図９】プログラムの振る舞いを検出する他の一例を示す図。
【図１０】異常検知をもたらしたパケットを特定する方法を示す図。
【図１１】パケットを特定する方法をさらに詳しく示す図。
【図１２】フローテーブルの動きの例を示す図。
【発明を実施するための形態】
【００１５】
図１に、ハイパーバイザーを備えたシステムの一例を示している。このシステム１は、家電製品、産業機械、プリンタ、自動車などに組み込まれるコンピュータシステムであり、典型的にはＳｏＣ（システムオンチップ）またはシングルチップマイクロコンピュータである。システム１は、プロセッサユニット１１を含むハードウェアプラットフォーム１０と、その上で稼働するハイパーバイザー２０と、ハイパーバイザー２０が提供する仮想化環境で稼働するセキュアＯＳ（第２のＯＳ）３０およびリッチＯＳ（第１のＯＳ）４１〜４３とを含む。
【００１６】
プロセッサユニット１１は、セキュアモード２とノンセキュアモード３とに選択的に切り替えられ、メモリ（主記憶媒体）１８に対してモードごとに独立したアクセス権が設定されるプロセッシングユニットである。すなわち、このプロセッシングユニット１１は、複数の実行モード（実行環境）を提供するが、本実施形態では、メモリ１８に保安領域を設定し、その保安領域へのアクセスを禁止する支援機能（メモリ保護機能）１２により実現されるセキュアモード２と、セキュアモード２より保安レベルが低い低セキュアモード（以降では非セキュアモード、ノンセキュアモードまたはノーマルモードと呼ぶ）３との２つの実行モードを想定する。非セキュアモード３においてはプロセッサユニット１１の支援機能１２によりメモリ１８の保安領域へのアクセスが禁止される。
【００１７】
システム１は、さらに、セキュアモード２で稼働するセキュアＯＳ３０の上（セキュアワールド）で動くトラステッドアプリケーション群３５と、非セキュアモード３で稼働するリッチＯＳ４１〜４３の上（非セキュアワールド、ノーマルワールド）で動くクライアントアプリケーション群４５とを有する。非セキュアモード３で稼働するリッチＯＳ４１〜４３などのＯＳを、以下においては非セキュア（ノンセキュア）なＯＳまたはノンセキュアＯＳと記載することがある。
【００１８】
ＩｏＴ（Internet of Things）を構成する組込システムの機能は、システムソフトウェアであるＯＳ（Operating System）およびＯＳ上のアプリケーションによって規定される。ハイパーバイザー２０は複数のＯＳ環境を構築できる。本願の出願人が提供するハイパーバイザー「ＦＯＸｖｉｓｏｒ」および「μＦＯＸ」は、プロセッサ（プロセッサユニット）１１がハードウェアとして持つ支援機構１２を用いて複数のＯＳを分離することができるベアメタルタイプ（タイプＩ）のハイパーバイザーである。
【００１９】
支援機能１２は、ＡＲＭ系のＩＰが組み込まれたプロセッサではＴｒｕｓｔＺｏｎｅ（以下ではＴＺ機構と呼称）を用いることができ、ＭＩＰＳ系のＩＰが組み込まれたプロセッサではＶＺ機構を用いることができ、Ｉｎｔｅｌ系のプロセッサではＶＴ機構を用いることができる。支援機能は、仮想化拡張機能を含んでいてもよく、ＡＲＭ系のＩＰが組み込まれたプロセッサではバーチャルエクステンション（Virtualization Extension）およびＬＰＡＥ（Large Physical Address Extension）を挙げることができる。
【００２０】
以降においては、支援機能（セキュア支援機能、セキュア支援機構）としてＴＺ機構１２を含んだプロセッサユニット１１を参照する。ＴＺ機構１２においては、ノーマルワールドのメモリ空間１２ａとセキュアワールドのメモリ空間１２ｂとが分離でき、ノーマルワールドからセキュアワールドのメモリ空間１２ｂが見えず、アクセスできない（アクセスが禁止された）環境を構築できる。さらに、このプロセッサユニット１１においては、メモリ空間に周辺デバイス（ペリフェラルのバッファ）やレジスタを含めたリソースがマップされる。このため、ＴＺ機構１２により、デバイスを含めたリソースの特定のアドレスに対するアクセスをトラップしてセキュアモード２に移行することが可能となる。
【００２１】
プラットフォーム１０は、セキュア支援機能を備えたプロセッサ１１と、汎用ＲＡＭ１８であるＤＤＲメモリとを含む。プロセッサユニット１１は、ＴＺ機構を制御する機能を備えたＣＰＵ１１に加え、ＤＤＲメモリのコントローラ、ＴＺ機構のアドレス空間を制御するコントローラ、セキュアキーＥＰＲＯＭ１５、セキュアブートＲＯＭ１６と、セキュアカーネルＲＡＭ１７、スタティックメモリコントローラなどを含んでいてもよい。プラットフォーム１０においては、汎用ＲＡＭのＤＤＲメモリ１８のアドレス空間のうちの保安領域（セキュア領域）１８ａは、ＴＺ機構１２により非セキュアモード（ノーマルワールド）３ではアクセスできない領域となっている。また、セキュアキーＥＰＲＯＭ１５、セキュアブートＲＯＭ１６、およびセキュアカーネルＲＡＭ１７も保安領域であり、ＴＺ機構１２により非セキュアモード３ではアクセスできない領域となっている。このプラットフォーム１０においては、ＤＤＲメモリ１８のアドレス空間領域のうちの非保安領域（非セキュア領域）１８ｂに、複数のＯＳが共通にアクセスできる共有領域１８ｃが設定される。
【００２２】
ハイパーバイザー２０は、ＯＳ切り替えを行うＯＳ切替ユニット２６と、仮想デバイスとしての機能を提供するエミュレーションユニット２７と、ＯＳ間通信をサポートするＯＳ間通信ユニット２８と、異常状態を解析するタイミングを制御するフィードバック制御ユニット２５とを含む。ハイパーバイザー２０は、システム１が起動する際に、セキュアブートＲＯＭ１６に格納されているファームウェア（プログラム、プログラム製品）１４ｈがプロセッサユニット１１のブートローダによりロードされて起動する。ハイパーバイザー２０は、非セキュアモード３で稼働する第１のＯＳ（リッチＯＳ、ノンセキュアＯＳ）４１〜４３のそれぞれの起動に際し、ノンセキュアＯＳ４１〜４３のそれぞれに対して非保安領域に対するアクセスを可能とし、支援機能であるＴＺ機構１２を用いて保安領域へのアクセスを不可とするノンセキュアな動作条件（ノーマルコンフィグレーション）２２を設定する。また、ハイパーバイザー２０は、セキュアモード２で稼働するセキュアＯＳ３０の起動に際し、セキュアＯＳ３０に対してメモリの保安領域および非保安領域へのアクセスを可能とすることを含むセキュアな動作条件（セキュアコンフィグレーション）２１を設定する。ノンセキュアな動作条件（ノーマルコンフィグレーション）２２は、さらに、セキュアＯＳ３０と共用するデバイス（第１のデバイス）に対するアクセスによりセキュアモード２に移行することを含む。これらの動作条件は、ＯＳ切替ユニット２６により管理される。
【００２３】
セキュアコンフィグレーション２１は、セキュアＯＳ３０のデバイスドライバ３６に対応してハードウェアプラットフォーム１０のセキュアな資源（デバイス）を割り当て、それらの資源にアクセス可能とする。ノーマルコンフィグレーション２２は、ノンセキュアなリッチＯＳ４１〜４３のそれぞれのデバイスドライバ４６に対応してハードウェアプラットフォーム１０のノンセキュアな資源（デバイス）を割り当てて、それらにアクセス可能とする。
【００２４】
したがって、ハイパーバイザー２０が、セキュアＯＳ３０にセキュアコンフィグレーション２１を適用した後に起動することにより、セキュアＯＳ３０の上で動くアプリケーション３５にはセキュアな動作環境を提供できる。また、ハイパーバイザー２０が、ノンセキュアなリッチＯＳ４１〜４３にノーマルコンフィグレーション２２ａ〜２２ｃを適用した後に起動することにより、リッチＯＳ４１〜４３の上で動くアプリケーション４５にはセキュアではないが汎用性の高い動作環境を提供できる。セキュアＯＳ３０およびリッチＯＳ４１〜４３は、切り替えて稼働してもよく、マルチコアのプロセッサユニット１１であれば、セキュアＯＳ３０およびノンセキュアなリッチＯＳ４１〜４３をすべて、またはそれらの一部を並列に稼働してもよい。ノンセキュアなＯＳの一例であるリッチＯＳ（第２のＯＳ）４１〜４３は、たとえば、リナックス（登録商標）、アンドロイドなどの多種多様なアプリケーションに対応した汎用ＯＳである。
【００２５】
セキュアコンフィグレーション２１は、セキュアＯＳ３０に対して、メモリのセキュアな領域（保安領域）であるセキュアキーＥＰＲＯＭ１５と、セキュアブートＲＯＭ１６と、セキュアカーネルＲＡＭ１７と、汎用ＲＡＭであるＤＤＲメモリ１８のセキュア領域１８ａとを割り当ててアクセスを可能とする。コンフィグレーション２１は、さらに、セキュアＯＳ３０に対して、ＤＤＲメモリ１８の非セキュア領域（非保安領域）１８ｂも割り当て、ノンセキュア領域１８ｂにアクセス可能とする。セキュアＯＳ３０のデバイスドライバ３６は、ＯＳ間通信を可能とするドライバ３６ｘを含み、コンフィグレーション２１は、ドライバ３６ｘに割り当てるＯＳ間通信用の共有メモリ１８ｃのマッピング情報を含む動作条件２１ｘを含む。
【００２６】
ノーマルコンフィグレーション２２は、例えば、汎用でノンセキュアなリッチＯＳ４１に対し、ＤＤＲメモリ１８の非セキュア領域１８ｂの固定されたアドレス領域と、ネットワークデバイス１９ａと、汎用インタフェースデバイス１９ｂに含まれる特定のデバイスを固定した状態で割り当て、ノンセキュアＯＳ４１の上で動くアプリケーション４５がこれらのデバイスに、非セキュアモード３で、すなわち、セキュアモード２に移行せずにアクセス可能とする。また、ノーマルコンフィグレーション２２は、セキュアＯＳ３０と共用するデバイス（第１のデバイス）、例えば、ＤＭＡＣ１１ｘおよびタイマ部１１ｔに対するアクセスによりセキュアモード２に移行する。リッチＯＳ４１は、セキュアモード２で稼働するハイパーバイザー２０の提供する仮想デバイスとしてこれらのデバイスにアクセスする。プロセッサユニット１１は、リッチＯＳ４１が共用のデバイスにアクセスする特定のアドレスに対するアクセスをトラップすると、セキュアモード２に移行し、ハイパーバイザー２０のエミュレーションユニット２７は、アクセスの対象となるデバイス、アクセスしているレジスタ、ゲストＯＳであるリッチＯＳ４１の状態を解析してエミュレーションする内容を決める。
【００２７】
ハイパーバイザー２０のＯＳ間通信ユニット２８は、それぞれのコンフィグレーション２１および２２に含まれるＯＳ間通信用の動作条件２１ｘおよび２２ｘに基づき行われるＯＳ間通信をセキュアモード２でサポートする。動作条件２１ｘおよび２２ｘにより設定される共有メモリ領域１８ｃは、非保安領域１８ｂ内なので、セキュアモード２で稼働するセキュアＯＳ３０も、非セキュアモード３で稼働するノンセキュアＯＳ４１においてもモードを移行せずにアクセスできる。ノーマルコンフィグレーション２２に含まれる動作条件２２ｘは、ノンセキュアＯＳ４１が共有のメモリ領域１８ｃに書き込むとセキュアモード２へ移行し、セキュアＯＳ３０が共有のメモリ領域１８ｃにアクセスする（読みだす）ことを含んでもよい。例えば、後述するように異常解析用のプログラムのログ５９を共有領域１８ｃに書き込むと自動的にセキュアモード２で異常解析が行われるようにしてもよい。
【００２８】
セキュアＯＳ３０のＯＳ間通信用のデバイスドライバ３６ｘは、共有のメモリ領域１８ｃに書き込むと、セキュアモード２から非セキュアモード３へは割り込みを用いて通知する。ノンセキュアＯＳ４１が並列に稼働している場合は、割り込み３６ｑによりノンセキュアＯＳ４１に通知する。ノンセキュアＯＳ４１は、非セキュアモード３で共有メモリ領域１８ｃにアクセスする（読みだす）ことによりＯＳ間通信が成立する。例えば、後述するように、不正パケットを廃棄するための受信抑制ルール５８をセキュアモード２で更新して共有領域１８ｃに書き込むことにより、非セキュアモード３において受信抑制ルール５８を用いて不正パケットを監視できる。
【００２９】
ＯＳ間通信の方法はこれに限定されないが、この通信システムは、ハイパーバイザー２０がＯＳ間通信に関する処理に関わるプロセスを抑制できるので、ＯＳ間通信に要する処理時間を短縮できる。
【００３０】
ハイパーバイザー２０において仮想デバイスとしての機能を提供するエミュレーションユニット２７は、仮想デバイスとして３つのパターン２７ａ、２７ｂおよび２７ｃを用意している。第１のパターン２７ａは、実デバイスの共有（共用）であり、複数のＯＳが各々に用意された仮想デバイスに対して行った制御を、ハイパーバイザー２０が調停して１つの実デバイスを制御・共有する形態（パターン）である。
【００３１】
第２のパターン２７ｂは機能追加である。このパターン２７ｂでは、ハイパーバイザー２０は、存在しないデバイス機能を、仮想デバイスを通じて複数のＯＳ（ゲストＯＳ）に提供する形態（パターン）である。ＯＳ間通信や仮想ネットワークが該当し、これらの機能は、実在のハードウェアは存在しないが、ハイパーバイザー２０により機能が提供される。
【００３２】
第３のパターン２７ｃは、機能拡張である。機能拡張のパターン２７ｃでは、あるデバイスに対してハイパーバイザー２０が機能を追加する。例えば、「仮想シリアル」がある。ゲストＯＳが仮想シリアルに送信したデータを、ハイパーバイザー２０や他のゲストＯＳがＴＣＰ／ＩＰに変換してネットワーク上に送信することが可能となる。逆方向のデータ送信も可能であり、ハイパーバイザー２０は、ネットワークから送られて来たＴＣＰ／ＩＰのデータをゲストＯＳ４１が仮想シリアルから受信する形でデータを読み込むことを可能にする。仮想シリアルによる、ＴＣＰ／ＩＰ変換を行うハイパーバイザー２０へのデータのシリアル送信は、具体的にはＯＳ間通信を用いて行うことができる。
【００３３】
セキュアＯＳ３０として採用されるＲＴＯＳやシンプルな組み込み用ＯＳにはＴＣＰ／ＩＰの様な複雑な機能を持たないＯＳが多く存在する。ハイパーバイザー２０やＴＣＰ／ＩＰ機能を持つ他のゲストＯＳが仮想シリアルの入出力をＴＣＰ／ＩＰの入出力に変換することにより、ＴＣＰ／ＩＰの様な複雑な機能を持たないＯＳを改修することなく、ネットワーク対応のシステムを実装することが可能となる。
【００３４】
このシステム１においては、ＯＳ起動準備、ＯＳ切替、ＯＳ間通信および仮想デバイスといった仮想化の機能を提供するハイパーバイザー２０をセキュアモード２で稼働させる。したがって、仮想化の処理、特に、セキュア側で稼働するＯＳ３０と非セキュア側で稼働するゲストＯＳ４１とに関連する仮想化の処理をセキュア側で実行することが可能となり、非セキュアな環境で稼働するゲストＯＳ４１からの干渉や攻撃の可能性を低減できる。したがって、システム１においては、外界からの干渉や攻撃に強い、安全な仮想化環境を提供できる。
【００３５】
さらにセキュアな環境を提供するために、システム１は、非セキュアな環境で稼働するクライアントアプリケーション４５およびゲストＯＳ４１の動作異常の要因を排除するとともに、それらの動作異常を監視する異常検出システム５０を含む。異常検出システム５０は、ノンセキュアモード３で稼働する第１の異常検出ユニット（フィードフォワードユニット）５１と、セキュアモード２で稼働する第２の異常検出ユニット（フィードバックユニット）５２とを含む。第１の異常検出ユニット５１は、ネットワークの入出力パケットを受信抑制ルール５８に従って破棄するパケット処理ユニット５３を含み、第２の異常検出ユニット５２は、ノンセキュアモードで稼働するプログラム、すなわち、クライアントアプリケーション４５およびゲストＯＳ４１の振る舞いを監視し、受信抑制ルール５８を更新する監視ユニット５７を含む。
【００３６】
第１の異常検出ユニット５１のパケット処理ユニット５３は、ノンセキュアモード３において、受信抑制ルール５８に従って自律的に不正な入出力パケットを、異常が発生する前に事前に破棄する。したがって、プロセッサ１０のモードを切り替えなくても入出力パケットを継続的に監視でき、モード切替に要する負荷の発生を抑制できる。したがって、第１の異常検出ユニット５１は、不正な入出力パケットによる異常の発生を事前に阻止できる、フィードフォワード機能を含む。第１の異常検出ユニット５１は、入出力パケットをできるだけ上流で処理できることが望ましい。したがって、第１の異常検出ユニット５１は、ネットワークデバイス１９ａおよび汎用インタフェースデバイス１９ｂとゲストＯＳ４１の間、ゲストＯＳ４１または、ハイパーバイザー２０に設けられていてもよい。第１の異常検出ユニット５１は、ノンセキュアモード３で使用されるネットワークデバイス１９ａおよび汎用インタフェースデバイス１９ｂが送受信する入出力パケット１９ｐ、特に入力パケットを処理してもよく、ハイパーバイザー２０により仮想化されたデバイスとの間で送受信されるパケット２９ｐを処理対象としてもよい。
【００３７】
第２の異常検出ユニット５２は、不正な入出力パケットの影響を受けないセキュアモード２において、定期的に、あるいは適当なイベントの発生によりプログラムの振る舞いを監視することにより、第１の異常検出ユニット５１では排除されなかった不正な入出力パケットによる影響を監視できる。さらに、第２の異常検出ユニット５２が、その監視結果により受信抑制ルール５８を更新することにより、未知であった不正な入出力パケットを既知として、第１の異常検出ユニット５１にフィードバックするフィードバック機能を含む。したがって、このシステム１は、第２の異常検出ユニット５２のフィードバック機能により、第１の異常検出ユニット５１を用いて、刻々と異なる不正な入出力パケットの攻撃を受けた場合でも、それらの不正な入出力パケットを事前に破棄することが可能となる。第２の異常検出ユニット５２は、セキュアＯＳ３０の上で稼働するトラステッドアプリケーション３５の１つとして実装されてもよく、ハイパーバイザー２０の一機能として実装されてもよい。
【００３８】
ハイパーバイザー２０は、ノンセキュアモード３で稼働する第１のＯＳ（ゲストＯＳ）４１とセキュアモード２で稼働する第２のＯＳ（セキュアＯＳ）３０との切り替えを行う切替制御ユニット（ＯＳ切替ユニット）２６と、セキュアモード２の第２のＯＳ３０に切り替えて、第２の異常検出ユニット５２の監視ユニット５７で、プログラムログ５９として書き出されたプログラムカウンタの値（以降においてはＰＣ値、ＰＣと記載することがある）５９ｐおよびスタックポインタの値（以降においてはＳＰ値、ＳＰと記載することがある）５９ｓを解析するタイミングを制御するユニット（フィードバック制御ユニット）２５とを含む。
【００３９】
ＯＳ切替ユニット２６は、ノンセキュア３のゲストＯＳ（第１のＯＳ）４１がセキュアＯＳ（第２のＯＳ）３０と共用する第１のデバイス、例えば、他のシステム１との内部ネットワーク（イントラネット）用のネットワークインタフェースに対するゲストＯＳ４１のアクセスによりセキュアモード２に移行し、エミュレーションユニット２７がゲストＯＳ４１に対し第１のデバイスを仮想化して提供する際に、前もって、監視ユニット５７でＰＣ値５９ｐおよびＳＰ値５９ｓの挙動からエミュレーションユニット２７を介してアクセスをトライするアプリケーションプログラム４５の健全性をチェックしてもよい。
【００４０】
監視ユニット５７は、ノンセキュアモード３で稼働するプログラム４５およびゲストＯＳ４１のＰＣ値５９ｐおよびＳＰ値５９ｓであって、共有メモリ１８ｃを介して提供されるプログラムログ５９に含まれるＰＣ値５９ｐおよびＳＰ５９値ｓを取得し、取得されたＰＣ値５９ｐおよびＳＰ値５９ｓより判断されるプログラム４５および／またはゲストＯＳ４１の振る舞いを解析するユニット（解析ユニット）５６と、解析ユニット５６より発見された振る舞いなどから異常動作の判定を行う判定ユニット５４と、異常動作の要因となった入出力パケット１９ｐの情報を受信抑制ルール５８に追加して受信抑制ルール５８を更新する更新ユニット５５とを含む。
【００４１】
図２に、異常検出システム５０の全体構成を示している。異常検出システム５０は、ノンセキュアモード３で稼働する第１の異常検出ユニット５１と、セキュアモード２で稼働する第２の異常検出ユニット５２とを含む。ノンセキュアモード３では、何らかの形で外部と入出力される入出力パケットデータ（入出力パケット）１９ｐまたは２９ｐ（以降においては符号１９ｐで代表する）が、第１の異常検出ユニット５１のバッファ５１ａに確保される。バッファ５１ａは、指定する最大ログ数により入出力パケットデータ１９ｐを保持し、バッファフルになったら古いものから上書きしていく。
【００４２】
パケット処理ユニット５３は、フィードフォワード項目として、まず、既知の不正なパケット情報をチェックする機能５３ａと、受信間隔を検証する機能５３ｂとを含む。既知の不正なパケット情報は、例えば、ＴＣＰフラグが０、ヘッダが示すデータ長が０などである。異常な受信間隔としては、パケットの受信間隔が１秒間にｎパケット以上にセットできる。さらに、パケット処理ユニット５３は、受信抑制ルール５８により不正な振る舞いをもたらしたパケットを判断する機能５３ｃと、これらの異常検知条件５３ａ、５３ｂおよび５３ｃにマッチした送受信パケット１９ｐを廃棄する機能５３ｄとを含む。
【００４３】
第２の異常検出ユニット５２の解析ユニット５６は、通常動作の中での、プログラムの振る舞いを解析する機能５６ｘと、プログラムのＣＰＵ資源（割り込みベクタやＩ／Ｏに対するアクセス）に対するアクセスを監視する機能５６ｙと、プログラムの改ざん、秘匿資源などへのアクセス状態を取集する機能５６ｚとを含む。
【００４４】
異常判定ユニット５４は、解析ユニット５６の結果、すなわち、プログラムの振る舞いによる各種の異常動作の有無を判定する。判定ユニット５４は、正常動作であれば処理を継続する機能５４ａ、異常動作と判断されたときの処理を行う異常動作対応機能５４ｂとを含む。異常動作対応機能５４ｂは、まず、更新ユニット５５により受信抑制ルール５８を更新する。次に、ノンセキュアモード３に移行して、異常動作と判断されたプログラムの後処理を行う。後処理を実行する機能５４ｘは、ノンセキュアモード３で稼働する第１の異常検出ユニット５１に含めてもよい。
【００４５】
異常検出システム５０は、第１の異常検出ユニット５１としての処理（第１の異常検出段階）と、第２の異常検出ユニット５２としての処理（第２の異常検出段階）を、プロセッサユニット（ＣＰＵ）１１で行うシステムの制御方法として提供できる。さらに具体的には、第１の異常検出段階と第２の異常検出段階をＣＰＵ１１で実行するためのプログラム（プログラム製品、ファームウェア）として提供することができ、ハイパーバイザー２０のファームウェア１４ｈにバンドルして提供することも可能である。
【００４６】
図３に、異常検出システム５０としてノンセキュアモード（ノンセキュアドメイン）３と、セキュアモード（セキュアドメイン）２とに設ける主な機能を示している。図２に説明した各機能に加え、ノンセキュアモード３の第１の異常検出ユニット５１においては、異常動作を引き起こしたＩＰテーブル、すなわち、受信抑制ルール５８を取得してパケット処理ユニット５３で利用可能とする機能５３ｄを含む。さらに、ＣＰＵ資源に対するアクセスログデータを設定する機能５１ｂと、メモリ資源に対するアクセスログデータを設定する機能５１ｃとを含む。これらの機能５１ｂおよび５１ｃにより、ＰＣ値５９ｐおよびＳＰ値５９ｓがプログラムログ５９に保存される。さらに、第１の異常検出ユニット５１は、さらに、ＰＣ値５９ｐおよびＳＰ値５９ｆの取得のタイミングを制御するプログラムの振る舞い検出機能５１ｆと、動作周期／計測区間を設定する機能５１ｄと、プログラムの振る舞い開始／終了通知の機能５１ｅとを含んでいてもよい。これらにより、ノンセキュア３の側で、セキュア２の側とは独立して、ＰＣ値５９ｐおよびＳＰ値５９ｆの取得のタイミングを制御できる。
【００４７】
セキュアモード２の第２の異常検出ユニット５２においては、さらに、サンプリング周波数の設定機能５２ａと、異常動作報告機能５２ｂと、プログラムの振る舞いデータの格納と取得機能５２ｃと、アクセス属性のチェック機能５２ｄと、指定する最大ログ数によるデータの保持機能５２ｅと、プログラムの振る舞い開始／終了通知の機能５２ｆとを含んでいてもよい。第２の異常検出ユニット５２は、さらに、ＣＰＵ資源に対するアクセスログデータの取得機能５２ｆと、メモリ資源に対するアクセスログ取得機能５２ｇとを含んでいてもよく、これらの機能５２ｆおよび５２ｇにより、ＰＣ値５９ｐおよびＳＰ値５９ｓを含むプログラムログ５９を取得してプログラムの振る舞いなどを解析できる。
【００４８】
図４に、ＰＣ値５９ｐおよびＳＰ値５９ｓより判断されるプログラム４５および／またはゲストＯＳ４１の振る舞いを解析する解析ユニット５６の基本的な仕組みを示している。フィードバック制御ユニット２５により、ステップ１０１において、セキュアモード（セキュア空間）２からノンセキュアモード（ノンセキュアモード）空間３に定周期の割り込みを発生させ、ステップ１０２において、割り込み発生時に稼働していたノンセキュア空間３のＰＣ値５９ｐとＳＰ値５９ｓを、プログラムログ５９を介して得る（割り込み発生によるスタックの内容は除外）。割り込み発生の周期は、ノンセキュア側３で自律的に行うことも可能であるが、セキュア側２から常時、割り込みマスク設定などを監視する必要がある。
【００４９】
ステップ１０３において、取得したＰＣ値５９ｐおよびＳＰ値５９ｓを格納し、取得したＰＣ値５９ｐが存在するブロックのＨＡＳＨ値の算出により改ざん検知を行う。さらに、取得したＰＣ値５９ｐおよびＳＰ値５９ｓを用いて、以下に具体的に説明するいくつかの方法により、取得したＰＣ値５９ｐおよびＳＰ値５９ｓが含まれる検査対象のプログラム４５（またはゲストＯＳ４１）の振る舞いを解析する。解析した結果は、異常があれば、受信抑制ルール５８としてノンセキュア側３にフィードバックされる。取得したＰＣ値５９ｐおよびＳＰ値５９ｓを格納可能とするサイズは定周期割り込みのレートに従って情報量が増減するが、後述する振る舞いを判定するために最低でも３セット以上のデータを取得、格納しておくことが望ましい。周波数解析を行わせるためには、１０２４セットぐらいを必要とすることがある。解析ユニット５６は、上述した、プログラムの振る舞いを解析する機能５６ｘ、プログラムのＣＰＵ資源に対するアクセスを監視する機能５６ｙ、および、プログラムの改ざん、秘匿資源などへのアクセス状態を取集する機能５６ｚを提供するために、以下に説明する第１の機能５６ａから第４の機能５６ｄのいずれかまたは複数の機能を含んでいてもよい。
【００５０】
図５に示すように、第１の機能５６ａは、取得されたＰＣ値５９ｐおよびＳＰ値５９ｓを、解析対象となるプログラムに対し予めアクセスが許可されている領域によりフィルタリングし、許可されていない箇所に対するアクセスの有無を判断する。フィルタリングした後に、未知のアクセス箇所が残り、かつ、過去のアクセス操作に履歴が存在しない場合は、異常な振る舞いとして一時的に警告フラグ類を設定し、その後、アクセス違反などを犯した場合に異常検知したことにする。
【００５１】
図６に示すように、第２の機能５６ｂは、取得されたＰＣ値５９ｐおよびＳＰ値５９ｓを、解析対象となるプログラムに対し予め設定されているアクセス許可リスト１１２と比較する。実行が許可されていない領域のアクセスであれば、異常な振る舞いとして異常検知したことにする。
【００５２】
図７に示すように、第３の機能５６ｃは、取得されたＰＣ値５９ｐおよびＳＰ値５９ｓの経時変化のサイクリックなパターンを比較する。定常（正常）状態におけるプログラムの動作は、取得したＰＣ値５９ｐが前回と同じ領域の近傍、あるいは同じパターンとして現れるはずである。異なる場合は許容できる範囲内で、かつ、過去のアクセス操作に履歴が存在しない場合は、異常な振る舞いとして一時的に警告フラグ類を設定し、その後、アクセス違反などを犯した場合に異常検知したことにする。
【００５３】
図８に示すように、これらの機能５６ａ〜５６ｃにおいて、検査対象のプログラム領域を複数のブロックに分類された該当位置を、取得したＰＣ値５９ｐおよび／またはＳＰ値５９ｓにより特定し、そのＰＣ値５９ｐおよび／またはＳＰ値５９ｓが含まれるブロックを改ざん検知のための実行箇所としてその近傍をチェック対象としてもよい。複数の機能により振る舞い検知を行う場合は、他の機能のチェック箇所と重なる領域を避けて検査することにより処理時間を短縮でき、異なる視点から、プログラムの振る舞い検知を行うことができる。
【００５４】
図９に示すように、第４の機能５６ｄは、取得されたＰＣ値５９ｐおよびＳＰ値５９ｓを周波数上に現れる離散データとみなしてフーリエ変換を行い、解析対象となるプログラムの実行可能な範囲から外れる周波数成分を検出する。その結果により得られた内容を前回、前々回と比較して差分から異常検知を行い、異常をもたらしたパケットデータをフィードバック的にＩＰテーブル的な受信抑制ルール５８に自動的に追加させて次回からドロップさせる。この機能５６ｄは、システム１のＣＰＵの処理速度、もしくはＰＣ値５９ｐ、ＳＰ値５９ｓを格納する領域に余裕がある場合に適している。また、セキュアモード２で他のサーバなどの外部リソースに接続することが可能であれば、外部リソースで処理できる。ＰＣ値５９ｐおよびＳＰ値５９ｓを周波数上に現れる離散データとみなしてＦＦＴ処理を行い、プログラム領域から外れる周波数成分が現れる場合は、異常な振る舞いとして一時的に警告フラグ類を設定し、その後、アクセス違反などを犯した場合に異常検知したことにする。
【００５５】
図１０〜図１２に、異常検知された後に、更新ユニット５５が受信抑制ルール５８を更新する機能の一例を示している。この更新機能５５ａは、異常動作の要因となった入出力パケット１９ｐのフロー情報を受信抑制ルール５８に追加する。フロー単位のフロー情報１２０は、例えば、図１０（ａ）に示すものである。受信パケット１９ｐのフロー情報１２０は、ＰＣ値５９ｐおよびＳＰ値５９ｓとともに、プログラムログ５９に格納することによりセキュアモード２で稼働する更新ユニット５５に供給できる。
【００５６】
図１０（ｂ）に示すように、この更新機能５５ａにおいては、異常動作の要因となった入出力パケット１９ｐ、例えば、受信パケットは、キャプチャデータとして扱うのではなく、フロー単位として扱いフロー情報１２０化する。さらに、更新機能５５ａは、フローテーブル１２１を、動作環境内で許容されるサイズで確保する。特定対象とするフロー情報１２０は、異常検知時点でフローテーブル１２１に登録されているフロー情報１２０を対象とする。なお、異常検知対応動作でシステムをリセットする場合は、パケットを特定する機能５５ａは働かない。パケットデータの特定を行う場合は異常検知した情報をログデータとして残すだけとなる。
【００５７】
図１１に、更新機能５５ａの基本的な処理の流れを示している。基本的には、更新機能５５ａが、パケット１９ｐを受信する都度、フロー情報１２０を抽出し、新しいフロー（全くの新規パケットか、フロー情報が全て一致しない）であれば、現在のフローテーブル１２１の空いている場所か古いものから上書きし、カウンタ値（サンプリング周期時にインクリメントする値を使用する）などを登録する。フロー情報１２０が既に登録されている場合は、受信パケット数を増加させ、以下のステップ１〜６のフローテーブル制御を行い、得られる内容から異常パケット特定処理（ステップ７）を行う。
ステップ１：登録時のカウンタ値の更新（フロー情報の最新のタイムスタンプ的に使用する）。
ステップ２：フローテーブル１２１に登録されてから、同じフロー情報１２０による受信パケットを認識できている場合はアクティブとし（ここでは単にステータスの意味）、所定の時間、例えばＭ秒以上の間、未受信状態を継続している場合はノンアクティブとする。なお、Ｍ秒は、異常検知時の頻度によって１５秒以上の値を設定可能とする（増減するステップは１秒単位）。
ステップ３：プロトコルがＴＣＰであった場合にＴＣＰフラグがＲＳＴかＦＩＮになったらノンアクティブに設定する。
ステップ４：ノンアクティブになっても削除（または上書き）されるまでの間は、サンプリングカウンタ値を書き込み続ける。
ステップ５：ノンアクティブとなってから監視機能（ＰＣ値５９ｐのサンプリングまたは改ざん検知機能）５７による異常検知の発生がなければフローテーブル１２１から削除する。
ステップ６：フローテーブル１２１が一杯になったら、ノンアクティブで古いものから削除（または上書き）する。
ステップ７：異常検知した時は、現在のフローテーブル１２１に登録されているフロー情報１２０内の異常検知した時のカウンタ値をインクリメントする。カウンタ値が所定の値Ｎ以上となったら、当該フロー情報１２０を、問題（異常検知）を引き起こしたパケットのフロー情報として受信抑制ルール（ＩＰテーブル）５８に登録し、ノンセキュア側３で破棄させ、それ以降の処理に渡さない。Ｎ値は異常検知時の頻度によって３以上の値を設定可能とする（増減するステップは１）。
ステップ８：その後、再度、パケットの受信からの処理を繰り返す。
【００５８】
図１２に、フローテーブル１２１から異常検出をもたらしたパケットデータを特定する一連の処理をさらに詳しく示している。図１２（ａ）に示すように、異常検知が発生しなければ、フローテーブル１２１内の登録制御を継続する。図１２（ｂ）に示すように、異常検知時に現在のフローテーブル１２１に登録されているフロー情報１２０全てのＮＧカウンタ値をインクリメント（＋１）する。異常検知時のフロー情報１２０は、その時点での削除条件に該当しなかったので、フローテーブルから削除されずに残っている。図１２（ｃ）に示すように、仮にＮが３とした場合に、結果としてフロー情報＃ｃが３回目だったとすると、異常検知時に３回もフローテーブル１２１内に存在していたことを示すためこれ以降、＃ｃのパケットデータを抑制（ドロップ）させる（この時、＃ｃのフロー情報はフローテーブル１２１から削除しない、図１２（ｄ））。
【００５９】
その後、＃ｃのフロー情報１２０がフローテーブル１２１上から削除され、再度、フローテーブル１２１に新規に登録されても、ドロップし続ける。システム上に流入させるためには、再度、フロー情報１２０が登録（受信）され、異常検知されずにフローテーブル１２１から削除されるか、再度、異常検知された時に＃ｃのフロー情報１２０がフローテーブル１２１上に存在しない状態がｎ回分、継続した場合に許可する。このシステムを誤検知から復帰させるための手段として用意する。図１２（ｅ）に示すように、フロー情報＃ａと＃ｎとは、フローテーブル１２１の登録制御により削除され、新しいフロー情報＃ｇと＃ｂとが登録される。
【００６０】
不正／異常検出の運用形態としては、ネットワーク上を流れるパケットを監視することで、不正、異常行為を検知するネットワーク型（ＮｅｔｗｏｒｋＢａｓｅ）と、コンピュータのログやシステム情報などを監視して、不正、異常行為を検知するホスト型（ＨｏｓｔＢａｓｅ）とがある。また、現在のトレンドは、従来のシグネチャタイプのルールだけでは、未知の手法に対する脅威に対して機能せず、そのため管理対象とするデータ（ルール）ベースが肥大化する問題があり、近年、アノマリ型を基本とした機械学習の各種の手法により異常検知を実施する傾向にある。
【００６１】
また、ＩｏＴ機器に多く採用されているマイコンレベルでは、異常検出に厳しい制約がつく。例えば、第１に、機械学習するための計算能力の不足をどうカバー出来るかである。ＲＯＭ動作の場合は速くても、おおよそ５０ＭＨｚ以下である。異常検出に計算能力を使うと、リアルタイム性の低下を招き、本来の機器制御などの目的を果たせなくなる可能性が高い。第２に、機械学習するための資源領域（メモリ容量）の不足を招かないためにはどうするかも問題である。コスト制約が厳しいＩｏＴ機器では致命的な要求となる。第３に、ＩｏＴ機器の外部へ学習データを保存できるかも問題である。学習中、あるいは学習データを再利用するためには、電源投入時にそれらのデータを損失させないために外部に格納する（システム初期化時に外部からネットワーク経由で取得）できることが望ましい。第４に、電源投入時から不正/異常検知が機能することが望ましいことである。ゼロデイ攻撃の耐性とＩｏＴ機器の性格から不正パケットなどに対する耐性が備わっていることが望ましいため、機械学習による検知機能とは異なる手段が必要となることを意味する。
【００６２】
本システム１の異常検出システム５０は、対象とする異常検知の形態としては、基本的には、ホスト型の形態を採用し、利用するデータは、ネットワークデータにより引き起こされる振る舞いに焦点を当てている。したがって、ネットワーク型とホスト型との両方の利点を含む。さらに、ネットワーク型で入出力パケットを破棄する第１の異常検出ユニット５１をネットワークデータが多く流れるノンセキュア側３に設けることにより不正パケットの処理をリアルタイムで、低負荷で実現している。一方、ホスト型で、プログラムの異常動作を検出する第２の異常検出ユニット５２をセキュア側２に設けることで、異常動作の検出自体が不正パケットにより影響を受けることを防止し、不正パケットに対し、より高い防御能力を提供している。
【００６３】
ＩｏＴ機器では、機器自体はもちろんのこと、機器の動作に対する安全性も考慮するべき項目であり、機械学習やフィルタリングなどによる検知だけではなく（誤検知を避けつつ）、不正な侵入やアクセスを厳密に防ぐ必要があり、報告だけではなく、異常検出を検知した時点で何らかの対策を講じることが可能な仕組みを用意しておく必要がある。このため、ＩｏＴ機器が備える資源へのアクセスに対する不正な振る舞いに対して、あらかじめデフォルトで動作する異常検知可能な仕組みを用意しておくことが望ましい。
【００６４】
異常検出システム５０では、パケット受信後に、第２の異常検出ユニット５２によりプログラム内の振る舞いと、アクセス属性のパラメータを用いて、アクセス違反を引き起こしたことを検知することで受信制御ルール５８を更新し、受信制御ルール５８を介して第１の異常検出ユニット５１に対しフィードバック制御的に当該パケットの受信不可設定を可能としている。したがって、計算能力の低いマイコンを利用するシステムにおいて、機械学習に近似したシステムを構築可能としている。
【００６５】
また、この異常検出システム５０では、予め異常検知可能な仕組みとして第１の異常検出ユニット５１を用意し、第２の異常検出ユニット５２において学習中でも、不正パケットの侵入を防止する機能を稼働させている。第１の異常検出ユニット５１は、フィードフォワード的な役目として、不正パケットの検出、正常な送受信間隔を認識する機能を有し、フィードバック項目である受信抑制ルール５８に基づいて不正パケットの受信を抑制する機能を含む。
【００６６】
第２の異常検出ユニット５２は、不正アクセスを引き起こしたパケットの収集を主目的とし、監視対象は、ＣＰＵ資源（割り込みベクタやＩ/Ｏに対するアクセス）に対するアクセス、およびプログラムの改ざん、秘匿資源などへのアクセス状態を監視対象とする。また、プログラムの振る舞いから不正動作の検出を、セキュア側２で行えるようにする。このため、ＰＣ値５９ｐおよびＳＰ値５９ｓといった限られたデータをＯＳ間通信などの方法によりノンセキュア側３からセキュア側２に供給することで、簡易な機構で、安全に、そして低負荷でプログラムの振る舞いをモニタできるようにしている。
【符号の説明】
【００６７】
１０  プロセッサ、  ２０  ハイパーバイザー
５０  異常検出システム
５１  第１の異常検出システム、  ５２  第２の異常検出システム
【図１】
2019066995.tif 000003
【図２】
2019066995.tif 000004
【図３】
2019066995.tif 000005
【図４】
2019066995.tif 000006
【図５】
2019066995.tif 000007
【図６】
2019066995.tif 000008
【図７】
2019066995.tif 000009
【図８】
2019066995.tif 000010
【図９】
2019066995.tif 000011
【図１０】
2019066995.tif 000012
【図１１】
2019066995.tif 000013
【図１２】
2019066995.tif 000014