(57)【特許請求の範囲】
【請求項１】
電子装置のシステムインテグリティを検証する方法であって、前記方法は、
前記電子装置内のセキュア環境の中で提供される検証モジュールにより、チャレンジを生成するステップと、
前記検証モジュールから、前記電子装置内の通常環境の中で提供されるスキャナモジュールへ、前記チャレンジを送信するステップであって、前記チャレンジは、前記スキャナモジュールに、前記通常環境の中でインテグリティ検証機能を実行して、応答を生成するよう指示し、前記インテグリティ検証機能は、既知の悪意コードについてカーネル内のコードをスキャンすること、プロセスリストをスキャンすること、ルート又はジェイルブレイクの痕跡についてメモリを調ること、メモリのページテーブルをスキャンすること、カーネル又はアプリケーションの状態及び特権パラメータを調べること、のうちの少なくとも１つである、ステップと、
前記スキャナモジュールにより、前記スキャナモジュール内に設けられた公開鍵又はプライベート鍵を用いて前記応答を暗号化し、及び前記暗号化した応答を前記検証モジュールへ送信するステップと、
前記検証モジュールにより、前記暗号化された応答の復号化に成功するか否かに基づき、前記スキャナモジュールのインテグリティを検証し、
前記スキャナモジュールの前記インテグリティが検証されたことの決定に応答して、前記検証モジュールにより、前記応答を、前記セキュア環境の中で提供されるセキュアデータベースに含まれるデータと照合し、一致が見付かるか否かに基づき前記応答が有効か否かを決定し、
前記応答が無効であることの決定に応答して、前記検証モジュールにより、前記システムインテグリティが検証されなかったと決定して、軽減措置を実行する、ステップと、
を含む方法。
【請求項２】
前記検証モジュールを用いて前記チャレンジを生成する前記ステップの前に、前記方法は、
前記検証モジュールにより、前記通常環境の中で提供される前記スキャナモジュールのインテグリティを検証するステップ、
を含む請求項１に記載の方法。
【請求項３】
前記通常環境の中で提供される前記スキャナモジュールの前記インテグリティを検証する前記ステップは、
前記検証モジュールにより、検証応答要求を生成し、前記検証応答要求を前記検証モジュールから前記スキャナモジュールへ送信するステップであって、前記検証応答要求は、前記スキャナモジュールに、暗号化した検証応答を生成し及び前記暗号化した検証応答を前記検証モジュールへ送信するよう指示する、ステップと、
前記検証モジュールにより、前記暗号化された検証応答が有効か否かを決定するステップであって、それにより、前記応答が無効であることの決定に応答して、前記軽減措置を実行する、ステップと、
を含む、請求項２に記載の方法。
【請求項４】
前記暗号化された検証応答が有効か否かを決定する前記ステップは、
前記検証モジュールにより、前記暗号化した検証応答を復号するステップであって、それにより、前記検証応答が復号化されることの決定に応答して、前記復号化した検証応答を前記セキュア環境の中で提供されるセキュアデータベースに含まれる検証データと照合し、一致が見付からないとき、前記検証応答は無効として決定される、ステップ、
を含む、請求項３に記載の方法。
【請求項５】
前記軽減措置は、
前記通常環境の中で提供されるソフトウェアモジュールの実行を抑制するステップ、
を含む、請求項１乃至４のいずれか一項に記載の方法。
【請求項６】
前記電子装置における前記セキュア環境は、前記電子装置のセキュアワールド仮想プロセッサを有し、前記電子装置における前記通常環境は、前記電子装置の通常ワールド仮想プロセッサを有し、前記セキュア環境は、前記通常環境とハードウェア独立である、請求項１乃至５のいずれか一項に記載の方法。
【請求項７】
プリセット時間間隔が経過したか否かを決定するステップと、
前記プリセット時間間隔が経過すると、前記電子装置の前記システムインテグリティを検証する前記方法を繰り返すステップと、
更に含む請求項１乃至６のいずれか一項に記載の方法。
【請求項８】
電子装置のシステムインテグリティを検証するシステムであって、前記システムは、
セキュア環境と通常環境とを有する処理ユニットと、
前記処理ユニットにより読み取り可能な非一時的媒体と、
を含み、前記媒体は、前記処理ユニットにより実行されると、前記処理ユニットに、
前記セキュア環境の中で提供される検証モジュールを用いて、チャレンジを生成させ、
前記検証モジュールから、前記通常環境の中で提供されるスキャナモジュールへ、前記チャレンジを送信させ、前記チャレンジは、前記スキャナモジュールに、前記通常環境の中でインテグリティ検証機能を実行して、応答を生成するよう指示し、前記インテグリティ検証機能は、既知の悪意コードについてカーネル内のコードをスキャンすること、プロセスリストをスキャンすること、ルート又はジェイルブレイクの痕跡についてメモリを調べること、メモリのページテーブルをスキャンすること、カーネル又はアプリケーションの状態及び特権パラメータを調べること、のうちの少なくとも１つであり、
前記スキャナモジュールを用いて、前記スキャナモジュール内に設けられた公開鍵又はプライベート鍵を用いて前記応答を暗号化させ、及び前記暗号化した応答を前記検証モジュールへ送信させ、
前記検証モジュールを用いて、前記暗号化された応答の復号化に成功するか否かに基づき、前記スキャナモジュールのインテグリティを検証させ、
前記スキャナモジュールの前記インテグリティが検証されたことの決定に応答して、前記検証モジュールを用いて、前記応答を、前記セキュア環境の中で提供されるセキュアデータベースに含まれるデータと照合し、一致が見付かるか否かに基づき前記応答が有効か否かを決定させ、
前記応答が無効であることの決定に応答して、前記システムインテグリティが検証されなかったと決定して、軽減措置を実行させる、
命令を格納する、システム。
【請求項９】
前記検証モジュールを用いて前記チャレンジを生成させる前記命令の前に、前記媒体は、
前記処理ユニットに、
前記セキュア環境の中で提供される前記検証モジュールを用いて、前記通常環境の中で提供される前記スキャナモジュールのインテグリティを検証する、
よう指示する命令を格納する、請求項８に記載のシステム。
【請求項１０】
前記通常環境の中で提供される前記スキャナモジュールの前記インテグリティを検証させる前記命令は、
前記処理ユニットに、
前記検証モジュールを用いて、検証応答要求を生成し、前記検証応答要求を前記検証モジュールから前記スキャナモジュールへ送信し、前記検証応答要求は、前記スキャナモジュールに、暗号化した検証応答を生成し及び前記暗号化した検証応答を前記検証モジュールへ送信するよう指示し、
前記検証モジュールを用いて、前記暗号化された検証応答が有効か否かを決定し、それにより、前記応答が無効であることの決定に応答して、前記軽減措置を実行する、
よう指示する命令を含む、請求項９に記載のシステム。
【請求項１１】
前記暗号化した検証応答が有効かどうかを決定させる前記命令は、
前記処理ユニットに、
前記検証モジュールを用いて、前記暗号化された検証応答を復号し、それにより、前記検証応答が復号化されることの決定に応答して、前記復号化した検証応答を前記セキュア環境の中で提供されるセキュアデータベースに含まれる検証データと照合し、一致が見付からないとき、前記検証応答は無効として決定される、
よう指示する命令を含む、請求項１０に記載のシステム。
【請求項１２】
前記軽減措置は、
前記処理ユニットに、前記通常環境の中で提供されるソフトウェアモジュールの実行を抑制するよう指示する命令、
を含む、請求項８乃至１１のいずれか一項に記載のシステム。
【請求項１３】
前記電子装置における前記セキュア環境は、前記電子装置のセキュアワールド仮想プロセッサを有し、前記電子装置における前記通常環境は、前記電子装置の通常ワールド仮想プロセッサを有し、前記セキュア環境は、前記通常環境とハードウェア独立である、請求項８乃至１２のいずれか一項に記載のシステム。
【請求項１４】
前記媒体は、
前記処理ユニットに、
プリセット時間間隔が経過したか否かを決定し、
前記プリセット時間間隔が経過すると、前記電子装置の前記システムインテグリティを検証することを繰り返す、
よう指示する命令を更に格納する、請求項８乃至１３のいずれか一項に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電子装置のシステムインテグリティを検証するシステム及び方法に関する。電子装置は、電子装置のセキュア環境の中で提供される検証モジュールと、電子装置の通常環境の中で提供されるスキャナモジュールとを含み、それにより、セキュア環境は通常環境にあるハードウェアと独立したハードウェアを含み、つまり、これら２つの環境はハードウェア独立である。電子装置のインテグリティ検証の間、検証モジュールは、通常環境においてインストールされたスキャナモジュール及びオペレーティングシステムの両方のインテグリティを検証する。
【背景技術】
【０００２】
スーパーユーザ及び／又は管理者アクセスを得る又は電子装置からの全ユーザ制限の削除を目的として電子装置に行われる権限のない変更、例えば、Ａｄｎｒｏｉｄオペレーティングシステムのルーティング又はｉＰｈｏｎｅオペレーティングシステムのジェイルブレイクは、電子装置をセキュリティ違反に対して脆弱にし、装置の全体的セキュリティを危険にさらす。電子装置内の重要な又は特権のあるモジュールは、装置のオペレーティングシステム（Operating  System、ＯＳ）カーネル内で又は装置のシステム内で実行されるシステムの重要プロセス又はシステムの管理デーモンを含む。
【０００３】
電子装置に対する大部分の権限のない変更は、装置のオペレーティングシステムに何らかの痕跡を残す。例えば、Ｌｉｎｕｘ装置では、このような装置がルートされるとき、ルーティングプロセスは、ＳＵコマンドモジュール（つまり、権限のないアプリケーションがより高い特権を獲得できるようにするモジュール）を生成する、又は特定プロセスに与えられる特権を段階的に拡大する。したがって、装置がルートされているか否かを検証する方法は、ＳＵコマンドモジュールについて又は特定プロセスの特権の段階的拡大について、装置をスキャンすることを含む。装置のインテグリティを検証する他の方法は、ルート／システム権限を有する不明プロセスについて、装置のファイルシステムを調べること、特定カーネルコードの固定メモリ位置を調べること、又は装置のメモリの動的部分を調べること、を含む。当然、悪意ある攻撃者は、これらのスキャニング技術に適応し、彼らの足跡をカバーし、それにより検出を回避する新しい方法を絶えず考え出すだろう。
【０００４】
このようなアンチマルウェアソリューションの直面する共通問題は、検出／保護プログラムが、通常、保護されるべきオペレーティングシステムにインストールされることである。したがって、攻撃者がシステム内で実行しているこのようなアンチマルウェアソリューションの存在に気付く場合、攻撃者は、アンチマルウェアソリューションを変更させる攻撃を実施し、それによりソリューションの有用性を効果的に無効にすることができる。要するに、通常動作空間の中にインストールされたアンチマルウェアソリューションは、常に、良く設計された攻撃に対して脆弱である。
【０００５】
装置のインテグリティを決定する提案される方法は、装置カーネルのデータを元のカーネルに含まれるデータと定期的に照らし合わせることを含む。この方法を実行するモジュールは、装置のセキュア状態の中で提供される。理論的には、スーパーユーザ又はシステム管理者のみが、このようなセキュア領域内に設けられたモジュールにアクセスし又は変更を行うことができるので、検証モジュールは、標準的に、このようなセキュア領域の範囲内にインストールされる。これは、このようなセキュア領域内にインストールされたモジュールが、攻撃及び権限のない変更から隔離されることを保証する。
【０００６】
これを行う従来知られたソリューションは、Ｔｒｕｓｔ  Ｚｏｎｅ−ｂａｓｅｄ  Ｉｎｔｅｇｒｉｔｙ  Ｍｅａｓｕｒｅｍｅｎｔ  Ａｒｃｈｉｔｅｃｔｕｒｅ（ＴＩＭＡ）ソリューションである。ＴＩＭＡソリューションは、完全に信頼できる環境で実行し、その結果、いかなる攻撃もＴＩＭＡメカニズムを変更できない。しかしながら、通常オペレーティングシステム内にインストールされたアプリケーションはＴＩＭＡソリューションの中で利用されないので、これは、ＴＩＭＡソリューションが単純な攻撃痕跡しか調べることができないことを意味する。例えば、それは、カーネルコードが変更されているか否かを（つまり、既知のメモリ領域のデジタルハッシュを計算し及び結果を所定値と比較することにより）調べることができるだけであり、信頼できる環境に格納された秘密鍵によりモジュールの署名を検証することができるだけである。結果として、それは、変更されているデータ、変更されているプロセス特権、等のような、装置又は装置のオペレーティングシステムに対する複雑な変化を検出できない。実際に、検出されずにＴＩＭＡ実装装置を攻撃するために使用できる幾つかの攻撃ツール、例えば、「towelroot」、「pingpong  root」、及び「kingroot」が存在する。さらに、信頼できる環境内にインストールされたアプリケーション又はモジュールに対して更新を実施することは一層困難である。結果として、信頼できる環境内のこれらのモジュールは、これらのモジュールの更新の非効率及び困難により、最新攻撃を扱うことができない。
【０００７】
装置のインテグリティを検証する又は装置を攻撃から保護する他の提案される方法は、リモートサーバにより絶えず更新される情報を利用することを含む。攻撃サンプルを分析することにより、リモートサーバは、検証／保護プロセスの精度及び効率を向上でき、この更新された情報は、定期的に装置に更新される。セキュアなブート／信頼できるブート／ｄｍ−ｖｅｒｉｔｙは、検証されたコンポーネントのみがロードされ及びシステム内で実行されることを許される場合に、全部ではないが大部分の攻撃が検出され解決されるという思想による他のソリューションである。これを達成するために、これらのソリューションは、ロードされるべきモジュールが、プレインストールされたモジュールにより検証されることを必要とする。それにより、プレインストールされたモジュールは、ハードウェア検証モジュールにより最初に検証される。さらに、セキュアなブートソリューションは、重要コンポーネントが、「ｂｏｏｔ−ｃｈａｉｎ」として知られる技術を用いて、システム起動により実行されることも保証する。例えば、Ｌｉｎｕｘオペレーティングシステムでは、提案されるセキュアなｂｏｏｔ−ｃｈａｉｎソリューションは、装置が最初に電源を入れられるとき、以下のブートシーケンスを実施する。
【０００８】
１）装置のプロセッサは、装置が製造された後に編集できない所定位置からブートローダプログラムをロードする、
２）ブートローダプログラムは、ＢＩＯＳがパーソナルコンピュータに対して行うことと類似する装置の基本入力及び出力プロセスを扱う「ｕ−ｂｏｏｔ」又は汎用ブートローダを検証しロードする、
３）ｕ−ｂｏｏｔは、次に、Ａｎｄｒｏｉｄシステムをロードするカーネルをロードする。
【０００９】
以上に提案されたセキュアなブートソリューションは、ハードウェアコンポーネントを用いて検証を実行させる。しかしながら、これらの検証は、モジュールが最初にロードされるときに実行されるだけであり、それ以降更なる検証ステップは実行されない。結果として、このソリューションは、上述の攻撃ツールのようなランタイム攻撃に対してオペレーティングシステムを保護しない。
【００１０】
上述の理由から、当業者は、効率的且つ信頼できる方法で電子装置のシステムインテグリティを検証するシステム及び方法を提案するよう絶えず努力している。
【発明の概要】
【００１１】
本発明による実施形態により提供されるシステム及び方法により、上述の及び他の問題が解決され、及び業界における進歩が成される。
【００１２】
本発明によるシステム及び方法の実施形態の第１の利点は、電子装置のシステムのインテグリティを検証する前に、装置の通常オペレーティングシステム内に提供されるスキャナモジュールのインテグリティが、装置の信頼できる環境内にインストールされた検証モジュールにより検証されることである。この追加検証レイヤは、システムの信頼性が危険にさらされないことを保証する。
【００１３】
本発明によるシステム及び方法の実施形態の第２の利点は、スキャナモジュールのインテグリティの検証が（そのために、このモジュールは、通常オペレーティングシステム内で提供される）、装置のシステムインテグリティの検証ステップと結合でき、それにより、検証ステップに費やす追加時間の必要を打ち消すことである。
【００１４】
本発明によるシステム及び方法の実施形態の第３の利点は、応答が検証モジュールによってのみ復号化できる暗号化方法を用いて暗号化されるので、スキャナモジュールにより生成される応答が、偽造され、ハッキングされ、又は変更され得えないことである。
【００１５】
本発明によるシステム及び方法の実施形態の第４の利点は、装置のシステムインテグリティの検証が、定期的に実行でき、装置の電源投入又はブートアップのときのみに限られないことである。
【００１６】
本発明によるシステム及び方法の実施形態の第５の利点は、検証モジュールと異なり、スキャナモジュールが通常環境内にインストールされるので、最新アンチマルウェア、アンチルーティング、又はアンチジェイルブレイクプログラムにより、スキャナモジュールが容易に且つ絶えず更新できることである。
【００１７】
上述の利点は、以下の方法で動作する本発明による方法の実施形態により提供される。
【００１８】
本発明の第１の態様によると、電子装置のシステムインテグリティを検証する方法は、前記電子装置内のセキュア環境の中で提供される検証モジュールにより、チャレンジを生成するステップと、前記検証モジュールから、前記電子装置内の通常環境の中で提供されるスキャナモジュールへ、前記チャレンジを送信するステップであって、前記チャレンジは、前記スキャナモジュールに、前記通常環境の中でインテグリティ検証機能を実行して応答を生成するよう指示する、ステップと、前記スキャナモジュールにより、前記応答を暗号化し、及び前記暗号化した応答を前記検証モジュールへ送信するステップと、前記検証モジュールにより、前記スキャナモジュールのインテグリティを検証し、それにより、前記スキャナモジュールの前記インテグリティが検証されたことの決定に応答して、前記検証モジュールにより、前記応答が有効か否かを決定し、それにより、前記応答が無効であることの決定に応答して、軽減措置を実行する、ステップと、を含む。
【００１９】
第１の態様を参照して、第１の態様の第１の可能な実装方法では、前記スキャナモジュールの前記インテグリティを検証する前記ステップは、前記検証モジュールにより、前記暗号化した応答を復号化するステップであって、それにより、前記暗号化した応答の復号化の成功に応答して、前記スキャナモジュールの前記インテグリティを検証する、ステップと、を含む。
【００２０】
第１の態様又は第１の態様の第１の可能な実装方法を参照して、第１の態様の第２の可能な実装方法では、前記電子装置内の前記セキュア環境は、前記電子装置のセキュアワールド仮想プロセッサを含む。
【００２１】
第１の態様、第１の態様の第１又は第２の可能な実装方法を参照して、第１の態様の第３の可能な実装方法では、前記電子装置内の前記通常環境は、前記電子装置の通常ワールド仮想プロセッサを含む。
【００２２】
第１の態様、第１の態様の第１、第２又は第３の可能な実装方法を参照して、第１の態様の第４の可能な実装方法では、前記検証機能は、カーネルのスキャン、プロセスリストのスキャン、メモリページテーブルのスキャン、又はカーネル保護メカニズムの状態及びパラメータのチェック、を含む。
【００２３】
第１の態様、第１の態様の第１、第２、第３又は第４の可能な実装方法を参照して、第１の態様の第５の可能な実装方法では、前記応答を暗号化する前記ステップは、プライベート又は公開鍵により前記応答を暗号化するステップであって、前記プライベート又は公開鍵は、前記スキャナ及び検証モジュールの中で提供される、ステップ、を含む。
【００２４】
第１の態様、又は第１の態様の第１、第２、第３、第４又は第５の可能な実装方法を参照して、第１の態様の第６の可能な実装方法では、前記応答が有効かどうかを決定する前記ステップは、前記応答を、前記セキュア環境内で提供されるセキュアデータベースに含まれるデータと照合するステップであって、一致が見付からない場合、前記応答は無効として決定される、ステップ、を含む。
【００２５】
第１の態様、又は第１の態様の第１、第２、第３、第４、第５又は第６の可能な実装方法を参照して、第１の態様の第７の可能な実装方法では、前記検証モジュールを用いて前記チャレンジを生成する前記ステップの前に、前記方法は、前記検証モジュールにより、前記通常環境の中で提供される前記スキャナモジュールのインテグリティを検証するステップ、を含む。
【００２６】
第１の態様の第７の可能な実装方法を参照して、第１の態様の第８の可能な実装方法では、前記通常環境の中で提供される前記スキャナモジュールの前記インテグリティを検証する前記ステップは、前記検証モジュールにより、検証応答要求を生成し、前記検証応答要求を前記検証モジュールからスキャナモジュールへ送信するステップであって、前記検証応答要求は、前記スキャナモジュールに、暗号化した検証応答を生成し及び前記暗号化した検証応答を前記検証モジュールへ送信するよう指示する、ステップと、前記検証モジュールにより、前記暗号化した検証応答が有効か否かを決定するステップであって、それにより、前記応答が無効であることの決定に応答して、前記軽減措置を実行する、ステップと、を含む。
【００２７】
第１の態様の第８の可能な実装方法を参照して、第１の態様の第９の可能な実装方法では、前記暗号化した検証応答が有効か否かを決定する前記ステップは、前記検証モジュールにより、前記暗号化した検証応答を復号するステップであって、それにより、前記検証応答が復号化されることの決定に応答して、前記復号化した検証応答を前記セキュア環境の中で提供されるセキュアデータベースに含まれる検証データと照合し、一致が見付からないとき、前記検証応答は無効として決定される、ステップ、を含む。
【００２８】
第１の態様、又は第１の態様の第１、第２、第３、第４、第５、第６、又は第７の可能な実装方法を参照して、第１の態様の第１０の可能な実装方法では、前記軽減措置は、前記通常環境内で提供されるソフトウェアモジュールの実行を抑制するステップを含む。
【００２９】
本発明の第１の態様を参照して、第１の態様の第１１の可能な実装方法では、前記セキュア環境は前記通常環境とハードウェア独立である。
【００３０】
第１の態様、又は第１の態様の第１、第２、第３、又は第４の可能な実装方法を参照して、第１の態様の第１２の可能な実装方法では、前記スキャナモジュール内の前記検証機能は難読化される。
【００３１】
本発明の第１の態様を参照して、第１の態様の第１３の可能な実装方法では、前記検証モジュールを用いて前記チャレンジを生成する前記ステップの前に、前記方法は、前記電子装置により、前記電子装置の電源投入を検出するステップと、前記電子装置内の前記セキュア環境内の前記検証されたモジュールをロードするステップと、を含む。
【００３２】
本発明の第１の態様、又は第１の態様の第１３の可能な実装方法を参照して、第１の態様の第１４の可能な実装方法では、前記方法は、プリセット時間間隔が経過したか否かを決定するステップと、前記プリセット時間間隔が経過すると、前記電子装置の前記システムインテグリティを検証する前記方法を繰り返すステップと、を更に含む。
【００３３】
本発明の第２の態様によると、電子装置のシステムインテグリティを検証するシステムであって、前記システムは、セキュア環境と通常環境とを有する処理ユニットと、前記処理ユニットにより読み取り可能な非一時的媒体と、を含み、前記媒体は、前記処理ユニットにより実行されると、前記処理ユニットに、前記セキュア環境の中で提供される検証モジュールを用いて、チャレンジを生成させ、前記検証モジュールから、前記通常環境の中で提供されるスキャナモジュールへ、前記チャレンジを送信させ、前記チャレンジは、前記スキャナモジュールに、前記通常環境の中でインテグリティ検証機能を実行して応答を生成するよう指示し、前記スキャナモジュールを用いて前記応答を暗号化させ、及び前記暗号化した応答を前記検証モジュールへ送信させ、前記検証モジュールを用いて前記スキャナモジュールのインテグリティを検証させ、それにより、前記スキャナモジュールの前記インテグリティが検証されたことの決定に応答して、前記検証モジュールを用いて、前記応答が有効か否かを決定させ、それにより、前記応答が無効であることの決定に応答して、軽減措置を実行させる、命令を格納する、システム。
【００３４】
第２の態様を参照して、第２の態様の第１の可能な実装方法では、前記スキャナモジュールの前記インテグリティを検証させる前記命令は、前記処理ユニットに、前記検証モジュールを用いて前記暗号化した応答を復号化し、それにより、前記暗号化した応答の復号化の成功に応答して、前記スキャナモジュールの前記インテグリティを検証する、よう指示する命令を含む。
【００３５】
第２の態様又は第２の態様の第１の可能な実装方法を参照して、第２の態様の第２の可能な実装方法では、前記処理ユニット内の前記セキュア環境は、セキュアワールド仮想プロセッサを含む。
【００３６】
第２の態様、第２の態様の第１又は第２の可能な実装方法を参照して、第２の態様の第３の可能な実装方法では、前記処理ユニット内の前記通常環境は、通常ワールド仮想プロセッサを含む。
【００３７】
第２の態様、第２の態様の第１、第２又は第３の可能な実装方法を参照して、第２の態様の第４の可能な実装方法では、前記検証機能は、カーネルをスキャンし、プロセスリストをスキャンし、メモリページテーブルをスキャンし、又はカーネル保護メカニズムの状態及びパラメータをチェックする、よう前記処理ユニットに指示する命令を含む。
【００３８】
第２の態様、第２の態様の第１、第２、第３又は第４の可能な実装方法を参照して、第２の態様の第５の可能な実装方法では、前記応答を暗号化するための前記命令は、プライベート又は公開鍵により前記応答を暗号化し、前記プライベート又は公開鍵は、前記スキャナ及び検証モジュールの中で提供される、よう前記処理ユニットに指示する命令を含む。
【００３９】
第２の態様、又は第２の態様の第１、第２、第３、第４又は第５の可能な実装方法を参照して、第２の態様の第６の可能な実装方法では、前記応答が有効かどうかを決定するための前記命令は、前記応答を、前記セキュア環境内で提供されるセキュアデータベースに含まれるデータと照合し、一致が見付からない場合、前記応答は無効として決定される、よう前記処理ユニットに指示する命令を含む。
【００４０】
第２の態様、又は第２の態様の第１、第２、第３、第４、第５又は第６の可能な実装方法を参照して、第２の態様の第７の可能な実装方法では、前記検証モジュールを用いて前記チャレンジを生成するための前記命令の前に、前記命令は、前記セキュア環境の中で提供される前記検証モジュールを用いて、前記通常環境の中で提供される前記スキャナモジュールのインテグリティを検証する、よう前記処理ユニットに指示する命令を含む。
【００４１】
第２の態様の第７の可能な実装方法を参照して、第２の態様の第８の可能な実装方法では、前記通常環境の中で提供される前記スキャナモジュールの前記インテグリティを検証させる前記命令は、前記処理ユニットに、前記検証モジュールを用いて、検証応答要求を生成し、前記検証応答要求を前記検証モジュールから前記スキャナモジュールへ送信し、前記検証応答要求は、前記スキャナモジュールに、暗号化した検証応答を生成し及び前記暗号化した検証応答を前記検証モジュールへ送信するよう指示し、前記検証モジュールを用いて、前記暗号化した検証応答が有効か否かを決定し、それにより、前記応答が無効であることの決定に応答して、前記軽減措置を実行する、よう指示する命令を含む。
【００４２】
第２の態様の第８の可能な実装方法を参照して、第２の態様の第９の可能な実装方法では、前記暗号化した検証応答が有効かどうかを決定する前記命令は、前記処理ユニットに、前記検証モジュールを用いて、前記暗号化した検証応答を復号し、それにより、前記検証応答が復号化されることの決定に応答して、前記復号化した検証応答を前記セキュア環境の中で提供されるセキュアデータベースに含まれる検証データと照合し、一致が見付からないとき、前記検証応答は無効として決定される、よう指示する命令を含む。
【００４３】
第２の態様、又は第２の態様の第１、第２、第３、第４、第５、第６、又は第７の可能な実装方法を参照して、第２の態様の第１０の可能な実装方法では、前記軽減措置は、前記処理ユニットに、前記通常環境内で提供されるソフトウェアモジュールの実行を抑制するよう指示する命令を含む。
【００４４】
本発明の第２の態様を参照して、第２の態様の第１１の可能な実装方法では、前記セキュア環境は前記通常環境とハードウェア独立である。
【００４５】
第２の態様、又は第２の態様の第１、第２、第３、又は第４の可能な実装方法を参照して、第２の態様の第１２の可能な実装方法では、前記スキャナモジュール内の前記検証機能は難読化される。
【００４６】
本発明の第２の態様を参照して、第２の態様の第１３の可能な実装方法では、前記検証モジュールを用いて前記チャレンジを生成することを指示する前に、前記システムは、前記処理ユニットに、前記電子装置の電源投入を検出し、前記電子装置内の前記セキュア環境内の前記検証されたモジュールをロードする、よう指示する命令を含む。
【００４７】
第２の態様又は第２の態様の第１３の可能な実装方法を参照して、第２の態様の第１４の可能な実装方法では、前記スキャナモジュールは難読化される。
【図面の簡単な説明】
【００４８】
本発明による上述の利点及び特徴は、以下の詳細な説明に記載され、及び以下の図面に示される。
【図１】本発明の実施形態による、実施形態を実装する電子装置内のコンポーネントを表すブロック図を示す。
【図２】本発明の実施形態による、プロセッサのセキュア環境及び通常環境の例示的ブロック図を示す。
【図３】本発明の実施形態による、電子装置のインテグリティの検証のためのタイミング図を示す。
【図４】本発明の実施形態による、電子装置のインテグリティ検証のための検証モジュールで実行されるプロセスのフロー図を示す。
【図５】本発明の実施形態による、通常環境の中で提供されるスキャナモジュールのインテグリティを検証するプロセスのフロー図を示す。
【図６】本発明の実施形態による、スキャナモジュール及び電子装置のインテグリティの検証のための暗号化応答を生成するスキャナモジュールで実行されるプロセスのフロー図を示す。
【発明を実施するための形態】
【００４９】
本発明は、電子装置のシステムインテグリティを検証するシステム及び方法に関する。電子装置は、電子装置のセキュア環境の中にインストールされる検証モジュールと、電子装置の通常環境の中にインストールされるスキャナモジュールとを設けられ、それにより、セキュア環境は通常環境にあるハードウェアと独立したハードウェアを含み、つまり、これら２つの環境はハードウェア独立である。
【００５０】
図１は、本発明の実施形態による、実施形態を実施する電子装置１００に含まれて良い処理システム及び処理システムのコンポーネントを示すブロック図を示す。電子装置１００は、限定ではないが、スマートフォン、タブレットコンピュータ、モバイルコンピュータ、ノートブック、スマートウォッチのようなウェアラブル電子装置、等のような通信機能を実行可能な任意の装置を含んで良い。当業者は、各電子装置の正確な構成が異なって良く、各電子装置の正確な構成が変化して良く、及び図１が単に例として与えられることを理解する。
【００５１】
本発明の実施形態では、電子装置１００は、制御部１０１と、ユーザインタフェース１０２と、を含む。ユーザインタフェース１０２は、ユーザと電子装置１００との間の手動相互作用を可能にするよう構成され、この目的のために、ユーザが電子装置１００を制御するため命令を入力するために必要な入力／出力コンポーネントを含む。当業者は、ユーザインタフェース１０２のコンポーネントが実施形態毎に変化して良いが、標準的に、ディスプレイ１４０、キーボード１３５、及びトラックパッド１３６のうちの１又は複数を含むことを認識する。
【００５２】
制御部１０１は、バス１１５を介してユーザインタフェース１０２とデータ通信し、メモリ１２０、本実施形態の方法を実行するために命令及びデータを処理する回路基板に搭載される中央処理ユニット（Central  Processing  Unit、ＣＰＵ）１０５、オペレーティングシステム１０６、ユーザインタフェース１０２及び本実施形態ではネットワークカード１５０の形式の通信インタフェースと通信する入力／出力（Ｉ／Ｏ）インタフェース１３０、を含む。ネットワークカード１５０は、例えば、電子装置１００から有線又は無線ネットワークを介して他の処理装置へデータを送信するため、又は有線又は無線ネットワークを介してデータを受信するために利用されて良い。ネットワークカード１５０により利用され得る無線ネットワークは、限定ではないが、Ｗｉｒｅｌｅｓｓ−Ｆｉｄｅｌｉｔｙ（Ｗｉ−Ｆｉ）、Ｂｌｕｅｔｏｏｔｈ、Ｎｅａｒ  Ｆｉｅｌｄ  Ｃｏｍｍｕｎｉｃａｔｉｏｎ（ＮＦＣ）、セルラネットワーク、衛星ネットワーク、電信ネットワーク、広域ネットワーク（Wide  Area  Networks、ＷＡＮ）、等を含んで良い。
【００５３】
メモリ１２０及びオペレーティングシステム１０６は、バス１１０を介してＣＰＵ１０５とデータ通信する。メモリコンポーネントは、揮発性及び不揮発性メモリの両方、並びに、ランダムアクセスメモリ（Random  Access  Memory、ＲＡＭ）１２０、読み出し専用メモリ（Read  Only  Memory、ＲＯＭ）１２５、及び１又は複数の固体ドライブ（solid−state  drive、ＳＳＤ）を含む大容量記憶装置１４５、を含む１より多くの各種類のメモリを含む。当業者は、メモリコンポーネントが非一時的コンピュータ可読媒体を含み、一時的な伝搬信号を除く全てのコンピュータ可読媒体を含むと解釈されるべきであることを認識する。標準的に、命令は、メモリコンポーネント内のプログラムコードとして格納されるが、ハードウェアによっても実現できる。メモリ１２０は、揮発性又は不揮発性メモリに格納されて良いソフトウェアアプリケーションのようなカーネル及び／又はプログラミングモジュールを含んで良い。
【００５４】
ここで、用語「ＣＰＵ」は、概して、このような命令を処理できる任意の装置又はコンポーネントを表すために使用され、マイクロプロセッサ、マイクロコントローラ、プログラマブル論理装置、又は他の計算装置を含んで良い。つまり、ＣＰＵ１０５は、入力を受信し、メモリに格納された命令に従いそれらを処理し、及び（例えばメモリコンポーネントへの又はディスプレイ１４０上の）出力を生成する、任意の適切な論理回路により提供されて良い。本実施形態では、ＣＰＵ１０５は、メモリアドレス可能空間を有するシングルコア又はマルチコアプロセッサであって良い。一例では、ＣＰＵ１０５は、例えば８コアＣＰＵを含むマルチコアであって良い。
【００５５】
図２は、本発明の実施形態による、セキュア環境仮想プロセッサ２１０（以後、「セキュア環境」として知られる）と通常環境仮想プロセッサ２０５（以後、「通常環境」として知られる）とを提供するプロセッサ１０５の例示的なブロック図を示す。通常環境２０５は、最小限のセキュリティ設定により通常モードで動作するよう構成されている、オペレーティングシステム２０６、カーネル２２２、アプリケーション２２４、及びスキャナ２２０を含んで良い。これに対し、セキュア環境２１０は、セキュアオペレーティングシステム、セキュアカーネル、セキュアデータベース２３５、及びセキュア検証モジュール２３０により提供されて良い。
【００５６】
セキュア環境２１０は、通常環境２０５からハードウェア分離されて良く、それにより、通常環境内に置かれるアプリケーション、カーネル、モジュール及びオペレーティングシステムが、セキュア環境内で提案されるアプリケーション、カーネル、モジュール及びオペレーティングシステムにアクセスできないことを保証する。このようなハードウェアに基づく分離は、限定ではないが、Ａｄｖａｎｃｅｄ  ＲＩＳＣ  Ｍａｃｈｉｎｅｓ（ＡＲＭ）により提供されるプロセッサアーキテクチャにより提供されて良い。ＡＲＭプロセッサでは、このようなハードウェアに基づく分離は、Ｔｒｕｓｔ  Ｚｏｎｅ技術として実装される。ＡＲＭプロセッサのＴｒｕｓｔ  Ｚｏｎｅ技術は、単一の物理プロセッサコアにおけるコード実行を２つの環境であるセキュア環境と通常環境とに分けるハードウェアに基づく分離を可能にする。当業者は、セキュア２１０及び通常２０５環境にインストールされる図２に示すソフトウェア又はモジュールが、このようなオペレーティングシステムの開発コードを用いて記述されて良く、又は以下に記載するような各モジュールにより必要とされるプロセスを実行するために、このようなオペレーティングシステムのためにコーディングされた既存クラス又はコンポーネントから変更されて良いこと、並びに、データ又は情報がこれらのモジュール間で必要に応じて転送されて良いことを理解する。
【００５７】
セキュア環境内にインストールされたコンポーネントは、厳しいセキュリティ要件を課され、結果として、限られた機能を実行でき、装置の製造者又は装置のスーパーユーザによりアクセスされ又は変更されることができるだけである。これは、セキュア環境内のアプリケーション、モジュール又はカーネルの更新をうんざりする非現実的な選択肢にしてしまう。
【００５８】
通常環境２０５内で提供されるオペレーティングシステム２０６は、Ａｎｄｒｏｉｄ、Ｌｉｎｕｘ、ＩＰｈｏｎｅ  ＯＳ（ｉＯＳ）又は電子装置１００若しくはモバイル装置での使用に適する任意の他のオペレーティングシステムのような、任意のオペレーティングシステムを含み得る。カーネル２２２及び／又はアプリケーション２２４は、電子装置１００のリソースを管理するための命令を実行して良い。通常環境２０５内で提供されるスキャナモジュール２２０は、オペレーティングシステム２０６、カーネル２２２、又はアプリケーション２２４へ命令又はコマンドを提供するよう構成されて良く、更にこれらのコンポーネントの各々から応答を受信するように構成されて良い。しかしながら、留意すべきことに、通常環境２０５内のコンポーネントは、データベース２３５又は検証器２３０のようなセキュア環境内で提供されるコンポーネントにアクセスし又はそれを制御してはならない。通常環境内にインストールされたコンポーネントは、しかしながら、セキュア環境２１０内にインストールされたコンポーネントへデータを送信し又はそれから命令を受信して良い。通常環境２０５のコンポーネントから送信されるデータは、セキュア環境２１０内のコンポーネントにより処理されないような特性のデータとしてコマンド又は命令を含んではならない。
【００５９】
図３は、本発明の実施形態による、電子装置１００のインテグリティの検証のためのタイミング図を示す。図２に先に示したように、検証モジュール２３０は、セキュア環境２１０内で提供される。検証モジュール２１０は、次に通常環境２０５内のコンポーネントへ送信される、検証要求のような命令（以後、「チャレンジ」として知られる）又は種々の要求を生成するよう構成されるアプリケーション又はセキュアプログラムを含んで良い。図２に示すシステムは、以下の方法で動作する。検証器２３０は、先ず、スキャナモジュール２２０により実行されるべき特定命令を含むチャレンジを生成する。本発明の実施形態では、このチャレンジは、公開鍵又はプライベート鍵暗号化を用いて暗号化されて良く、そのために、対応する公開又はプライベート鍵は予めスキャナモジュール２２０に提供されている。ステップ３０５で、生成されたチャレンジは、次に、スキャナモジュール２２０へ送信される。チャレンジを受信すると、スキャナモジュール２２０は、チャレンジ内に含まれる命令を実行する。チャレンジが暗号化されている場合、スキャナモジュール２２０は、適切な復号鍵を用いてチャレンジを復号化し、次にその中に含まれる命令を実行する。これは、チャレンジ、チャレンジに含まれる命令、及び命令の中で指定されるスキャン機能／目標が、全ての他のモジュール及び／又はプロセスから秘密にされることを保証する。
【００６０】
命令は、オペレーティングシステム２０６のインテグリティを検証するステップを実行するための、スキャナモジュール２２０に対するコマンドを含んで良く、これは、オペレーティングシステム２０６により提供されるデフォルト機能及び関数を用いることにより行われて良い。本発明の実施形態では、命令は、限定ではないが、既知の悪意コードについてカーネル２２２内のコードをスキャンし、プロセスリストをスキャンし、ルート又はジェイルブレイクの痕跡についてメモリ１２０を調べ、メモリ１２０のページテーブルをスキャンし、カーネル２２２又はアプリケーション２２４の状態及び特権パラメータを調べるアルゴリズムを実行するための、スキャナモジュール２２０に対するコマンドを含んで良い。全てのこれらのインテグリティ検証アルゴリズムは、スキャナモジュール２２０内に格納されて良い。本発明の実施形態では、スキャナモジュール２２０内に含まれるインテグリティ検証アルゴリズム及び／又はスキャナモジュール２２０は、難読化されて良く、それによりスキャナモジュール２２０及びこれらのコードが悪意ある攻撃者により読み取られ及び／又は分析されることを防ぐ。留意すべきことに、難読化されたスキャナモジュール２２０は、依然として、検証モジュール２１０から受信した命令を実行できる。言い換えると、スキャンモジュール２２０は、スキャナモジュール２２０が受信した命令を実行できる前に、難読化解除される必要がない。したがって、難読化されたスキャナモジュール２２０は、常に、常時難読化されたままである。検証命令を暗号化させることにより、及びスキャナモジュール２２０を難読化させることにより、これは、通常動作環境２０５内で提供されるスキャナモジュール２２０が通常環境２０５内の他のモジュールからの権限のないアクセスから二重に隠蔽されることを保証する。当業者は、本発明から逸脱することなく、新たに発見された悪意コード又は攻撃を解決するために新しい更新が開発されるとき、新しい検証アルゴリズムがスキャナモジュール２２０に提供され得ることを理解する。これらの更新は、モジュールが通常動作環境２０５内にインストールされるので、スキャナモジュール２２０に容易にインストールできる。スキャナモジュール２２０によるインテグリティ検証アルゴリズムの実行は、ステップ３１０で行われる。
【００６１】
検証機能が実行された後、個々のカーネル、アプリケーション及び／又はモジュールからの検証結果及び応答は、次に、スキャナモジュール２２０へ返される。これは、ステップ３１５で行われる。応答は、スキャナモジュール２２０において全て照合される。スキャナモジュール２２０は、次に、スキャナモジュール２２０内に設けられた公開又はプライベート鍵を用いて照合された応答を暗号化することに進む。当業者は、他の暗号化又は場合によっては難読化技術さえも、本発明から逸脱することなく、照合された応答を暗号化するために利用されて良いことを理解する。暗号化された照合された応答は、次に、ステップ３２０で、検証モジュール２３０へ送信される。
【００６２】
検証モジュール２３０は、次に、暗号化された応答を用いて、スキャナモジュール２２０のインテグリティを検証する。本発明の実施形態では、検証モジュール２３０が暗号化された応答の復号化に成功した場合、これは、応答を暗号化するために同じ暗号鍵及び／又はアルゴリズムが使用されたので、スキャナモジュール２２０のインテグリティが危険にさらされていないことを意味する。暗号化された応答を復号化するために、検証モジュール２３０は、セキュアデータベース２３５から秘密公開／プライベート鍵を読み出す必要がある。これは、ステップ３２５で行われる。
【００６３】
データベース２３５は、検証モジュール２３０による要求を分析し、要求が有効な要求か否か、つまり、要求された秘密鍵がそのレコードに含まれるか否かを決定する。要求された秘密鍵が利用可能でない場合、これは、システムのインテグリティが危険にさらされていることの警告をトリガして良い。反対に、秘密鍵が読み出しに成功し得る場合、この秘密鍵は、次に、ステップ３３０で検証モジュール２３０へ転送される。
【００６４】
検証モジュール２３０は、次に、暗号化された応答を復号化するために秘密鍵を利用する。応答が復号化できない場合、又は復号化が無意味な結果を生じた場合、これは、スキャナモジュール２２０が危険にさらされていることを強く示唆し、次に検証モジュール２３０により軽減措置が実行され得る。本発明の実施形態では、軽減措置は、電子装置のロック、それにより更なるアプリケーションが実行することを防ぎ、電子装置の電源断、及び／又は軽減措置が電子装置において開始されていることをサーバに通知する、リモートサーバへの警報の送信、を含み得る。当業者は、本発明から逸脱することなく他の軽減ステップが取られて良いことを理解する。代替で、応答が復号化に成功した場合、これは、スキャナモジュール２２０のインテグリティが無傷であることを意味し、応答は次に検証モジュール２３０により更に分析される。
【００６５】
先に生成されたチャレンジに含まれるコマンドに基づき、検証モジュール２３０は、次に、セキュアデータベース２３５から期待結果セットを読み出す。データベース２３５から読み出された結果は、次に、復号化された応答に含まれる結果と比較される。両方の結果セットが内部チェックリストと一致する又はそれを満たす場合、次に応答は有効として決定され、次に検証モジュール２３０は、電子装置１００のインテグリティが危険にさらされていないことを決定する。代替で、結果セットが一致しない場合、又はチェックリストの全部の内容が満たされない場合、これは、電子装置１００のインテグリティが脅かされており、次に軽減措置が検証モジュール２３０により実行される必要があることを意味する。上述のように、検証モジュール２３０により取られ得る軽減措置は、限定ではないが、電子装置のロック、それにより更にアプリケーションが実行することを防ぎ、電子装置の電源断、及び／又は軽減措置が電子装置において開始されていることをサーバに通知する、リモートサーバへの警報の送信、を含む。
【００６６】
本発明の例示的な実施形態では、本発明のシステムは、Ｂｒｉｎｇ−Ｙｏｕｒ−Ｏｗｎ−Ｄｅｖｉｃｅ（ＢＹＯＤ）システム内の装置のためのアンチルーティング検出システムとして実装されて良い。ＢＹＯＤシステムでは、従業員は、彼ら自身の電子装置を用いて彼らの会社の機密データを閲覧することを許可される。これらのデータの機密性が脅かされないことを保証するために、会社は、電子装置が無傷のオペレーティングシステム（ＯＳ）、つまりルート又はジェイルブレイクされていないＯＳを有することを保証する必要がある。纏めると、会社は、装置のオペレーティングシステムにより実装されるセキュリティ手段が無傷のままであること、そのためにユーザが制御特権への限定アクセスを許可されるだけであることを確かめる必要がある。
【００６７】
本発明の本実施形態では、２つのプログラム又はモジュールは、先ず、従業員が彼らの装置をＢＹＯＤシステムに追加するとき、電子装置にインストールされる。第１プログラム又はモジュールは、装置の信頼できる実行環境（Trusted  Execution  Environment、ＴＥＥ）又はその等価なセキュア環境にインストールされるべき検証モジュールであり、第２プログラムは、装置の豊かな実行環境（Rich  Execution  Environment、ＲＥＥ）又はその等価な通常環境にインストールされるべきスキャナモジュールである。
【００６８】
検証モジュールは、検証モジュールがスキャナモジュールに例えばカーネルコードをスキャンし、プロセスリストをスキャンし、ＳＵモジュールについて調べ、メモリページテーブルをスキャンし、カーネル保護メカニズムの状態及びパラメータを調べ、及び多くの他のことを実行することを依頼して良いタスクリストを含み得る。これらのタスクは、検証モジュール内で提供される要求送信側プログラムを用いて選択されて良く、そのために、このプログラムは、目標／コマンドセットを含む検証要求又はチャレンジをスキャナモジュールへ送信する。本発明の実施形態では、要求送信側プログラムは、タイマ及び関数コールバックハンドラを備えられて良く、要求送信側プログラムが定期的に及び／又は重要なＢＹＯＤ機能が開始されようとしているときに、開始できるようにする。
【００６９】
検証モジュールは、スキャナモジュールにより返送される応答を復号化し検証するために検証アルゴリズムにより使用できるプライベート鍵（これは、対称復号鍵でもあり得る）も含んで良い。上述に加え、検証モジュールは、無効化された応答の受信又は応答の復号化の失敗に応答して、電話機のロック、電話機のシャットダウン、及び／又は応答当局への通知のような軽減措置を実行するよう構成される応答ハンドラも含む。
【００７０】
ＲＥＥ環境にインストールされるスキャナモジュールは、検証モジュールへ送信されるべき応答を暗号化するために使用され得る公開鍵（これは対称暗号鍵でもあり得る）を含み、公開鍵は難読化及びホワイトボックス技術により保護されて良い。スキャナモジュールは、検証モジュールから受信した命令又はコマンドを実行するために使用されるスキャニングアルゴリズムセットも含み、これらのアルゴリズムも難読化されて良い。スキャナモジュールは、暗号化した結果を検証器へ返送する前に、スキャニングアルゴリズムの結果を暗号化するために公開鍵を利用する応答アルゴリズムも含む。本発明の実施形態では、スキャナモジュールは、オペレーティングシステムのシステムモジュールとして実装され、例えば、オペレーティングシステムがＡｎｄｒｏｉｄオペレーティングシステムである場合、スキャナモジュールは、Ａｎｄｒｏｉｄカーネルによりロードされ得るＡｎｄｒｏｉｄシステムモジュールとして実装されるだろう。
【００７１】
本発明の実施形態では、検証モジュールは、（汎用ブートがロードされる前又はその直後に）電子装置がブートアップする又は電源投入される度に自動的にロードされて良い。このブートシーケンスは、従来知られているセキュアブートチェーン技術と類似している。検証モジュールは、ロードされた後に、装置のＴＥＥに留まり、したがって、ハードウェア独立によりＲＥＥにインストールされたアプリケーションから隠蔽される。これは、検証モジュールが実行中のときに、悪意ある攻撃者がモジュールをアンロードすること又はその設定を変更することができないことを意味する。同様に、セキュアブートチェーンは、カーネルをＲＥＥにロードした後に、スキャナモジュールをＲＥＥ又は通常環境にロードする。スキャナモジュールがロードされた直後、及びオペレーティングシステムがロードされる前に、スキャナモジュールは、カーネルをスキャンし、検証器へ正しいカーネルの参照を送信する。その後、ＲＥＥ内のオペレーティングシステムがロードされ、通常通り実行する。
【００７２】
本発明の他の実施形態では、検証モジュールは、５分乃至１時間の間のランダムな時間間隔で定期的に実行されて良い。これは、検証モジュールが、スキャナモジュールに、システムインテグリティスキャンを定期的に要求することを意味する。図３に示すようなステップ３０５〜３３０は、このシステムインテグリティスキャンの間、実行される。ランダムな間隔は、装置の性能と装置のセキュリティとの間の平衡を達成するために調整される。効率を更に向上するために、検証モジュールは、装置の電源状態、装置の充電状態、装置のＣＰＵ作業負荷、１日のうちの時間、等に基づき、実行時間間隔を調整して良い。留意すべきことに、検証モジュールにより要求される全ての必要な情報は、ＴＥＥ又は装置のセキュア官許に含まれるカーネル及びアプリケーションから得られて良い。
【００７３】
本発明の別の例示的な実施形態では、本発明のシステムは、オンライントランザクションアプリケーションが電子装置と金融機関との間で実行され得る前に装置のインテグリティを検証するプレオンライントランザクションシステムとして実装されて良い。本実施形態では、システムは、装置に含まれる金融データのような機密データがオンライントランザクション中に保護されることを保証する。さらに、システムは、トランザクションがユーザにより実際に権限付与されることも保証する。さらに、本実施形態では、システムは、鍵ロガーアプリケーションが、ユーザのパスワード又は任意の他の機密情報を盗もうとする装置のシステム内で実行中でないことも検証する。
【００７４】
同様に、検証モジュールは、装置の信頼できる実行環境（Trusted  Execution  Environment、ＴＥＥ）又はその等価なセキュア環境内にインストールされ、スキャナモジュールは、装置の豊かな実行環境（Rich  Execution  Environment、ＲＥＥ）又はその等価な通常環境にインストールされる。
【００７５】
本実施形態では、検証器がチャレンジを生成しスキャナモジュールへ送信する前に、つまりステップ３０５の前に、検証モジュールは、先ず、スキャナモジュールのインテグリティを検証する。これは、スキャナモジュールのデジタル署名を検証することにより、又はスキャナモジュールのメモリ内容をチェックすることにより、行うことができる。例えば、対応する金融機関は、認可スキャナモジュールのデジタル署名を計算するために使用されるプライベート鍵を有し、検証モジュールは、スキャナモジュールが本当に銀行によりデジタル署名されている適正バージョンであることを検証するために使用される対応する公開鍵を有する。公開鍵は、標準的にＴＥＥ内に提供されるセキュアデータベースに格納される。金融機関に関連付けられるプログラムがスキャナモジュールが更新されること（例えば、新しい機能をサポートすること、又は許可プロセスリストを編集すること、等）を要求するときはいつも、金融機関は、スキャナモジュールの新しいバージョンを、対応するデジタル署名と一緒に（例えば、オンラインポータルを介して）、リリースする。ユーザは、次に、かれらの装置に更新をダウンロードし及びインストールしなければならない。検証器は、ユーザの秘密データ（例えば、パスワード）が新しい悪意プログラム／攻撃によりロギングされ又はキャプチャされることを防ぐために、モジュールのデジタル署名を用いてスキャナモジュールのインテグリティを定期的に調べる。検証モジュールが更新することは一層困難なので、元の検証モジュールが依然としてスキャナモジュールにより実行される更新されたスキャニング動作の応答を検証できるような方法で、新しい検証対象がスキャナモジュールに追加される。これがどのように達成できるかの一例は、スキャナモジュールからの応答が、銀行のプライベート鍵を用いてデジタル署名されている期待結果を含むことである。
【００７６】
スキャナモジュールのインテグリティが危険にさらされている場合、又はスキャナモジュールにより生成された応答が検証されていない、つまり、システムが危険にさらされている場合、検証モジュールは、対応するモジュール又はシステムのインテグリティが危険にさらされていることを金融機関に通知するような、軽減措置を実行する。幾つかのシナリオでは、このような通知を装置から受信しても、金融機関がリスクは許容可能であると決定した場合、トランザクションは依然として進むことを許可されることがある。したがって、金融機関が適正な脅威評価分析を実行するために、検証モジュールは、金融機関へ通知を送信するとき、インテグリティ検証エラーに関する詳細事項、例えば実行中アプリケーション、適合されなかった目標、スキャナモジュールから返された結果、等に関する詳細事項も提供しなければならない。
【００７７】
本発明の一実施形態によると、電子装置のシステムインテグリティを検証する方法は、以下の４つのステップを含む：
ステップ１、電子装置内のセキュア環境の中で提供される検証モジュールにより、チャレンジを生成するステップ；
ステップ２、検証モジュールから、電子装置の通常環境の中で提供されるスキャナモジュールへ、チャレンジを送信するステップであって、チャレンジは、スキャナモジュールに、通常環境内でインテグリティ検証機能を実行し、応答を生成するよう指示する、ステップ；
ステップ３、スキャナモジュールにより、応答を暗号化し、暗号化した応答を検証モジュールへ送信するステップ；
ステップ４、検証モジュールにより、スキャナモジュールのインテグリティを検証するステップであって、それにより、スキャナモジュールのインテグリティが検証されたという決定に応答して、検証モジュールにより、応答が有効かどうかを決定し、それにより、応答が無効であるという決定に応答して、軽減措置を実行する、ステップ。
【００７８】
このようなシステム又は方法を提供するために、装置のセキュア環境内にインストールされた検証モジュール及び装置の通常環境内にインストールされたスキャナモジュールを用いて電子装置のシステムインテグリティを検証するプロセスが必要である。以下の記載及び図４〜６は、本発明によるプロセスを提供するプロセスの実施形態を記載する。
【００７９】
図４は、本発明の実施形態による、装置のシステムインテグリティを検証するために電子装置のセキュア環境内にインストールされた検証モジュールにより実行されるプロセス４００を示す。プロセス４００は、ステップ４０５で、電子装置の通常環境内で提供されるスキャナモジュールへ送信されるべきチャレンジを生成することにより、開始する。チャレンジは、システムのインテグリティを検証するために、スキャナモジュールにより実行されるべき特定の命令を含む。チャレンジが生成されると、チャレンジは、次に、送信され、スキャナモジュールにより実行される。プロセス４００は、次に、ステップ４１０で、スキャナモジュールから暗号化された応答を受信する。応答は、次に、ステップ４１５で、プロセス４００により復号化される。プロセス４００は、検証モジュール内に格納されたプライベート及び／又は公開鍵を用いて暗号化された応答を復号化して良く、プロセス４００は、必要な秘密鍵をセキュア環境内で提供されるセキュアデータベースから読み出して良い。暗号化された応答が復号化に成功しなかった場合、プロセス４００は、ステップ４２０に進み、それにより、プロセス４００は、次に、必要な軽減措置を実行するために進行する。次に、プロセス４００は終了する。
【００８０】
代替で、ステップ４１５で応答が復号化に成功した場合、プロセス４００はステップ４２５へ進む。ステップ４２５で、プロセス４００は、セキュアデータベースから読み出されるべき所要データ又はチェックリストを決定するために応答をレビューする。プロセス４００は、次に、読み出したデータを、復号化された応答の中に含まれるデータと比較して、応答の有効性を決定する。これは、ステップ４３０で行われる。プロセス４００が応答は有効であると決定した場合、これは、システムのインテグリティが無傷であることを意味し、プロセス４００はステップＡに進む。反対に、応答が無効であると決定された場合、プロセス４００は、代わりにステップ４２０へ進み、それにより、軽減措置がプロセス４００により実行される。次に、プロセス４００は終了する。
【００８１】
本発明の更なる実施形態では、ステップＡで検証モジュールが、電子装置は電源断され及び電源投入された（つまり、ブートアップ）ことの指示を受信した場合、検証モジュールは、任意の他のプロセスが実行される及びプロセス４００を実行する前に、最初に開始する。プロセス４００は、次に、通常環境内でカーネル又はオペレーティングシステムが開始され得る前に、ステップ４０５〜４３０を繰り返させる。本発明の更に別の実施形態では、ステップＡで、プリセット時間間隔又は期間が経過した後に、プロセス４００は、電子装置のシステムインテグリティを検証するためにステップ４０５〜４３０を繰り返させる。
【００８２】
本発明の別の実施形態では、プロセス４００がステップ４０５でチャレンジを生成する前に、プロセス４００は、先ず、通常環境にインストールされたスキャナモジュールのインテグリティを検証する。この事前チャレンジ検証ステップは、図４のステップＢで行われる。図５は、本発明の実施形態による、スキャナモジュールのインテグリティを検証するために検証モジュールにより実行されるプロセス５００を示す。プロセス５００は、ステップ５０５で開始し、それにより、検証応答要求が生成される。検証応答要求は、スキャナモジュールに、検証及びスキャナモジュールの両方に知られている秘密鍵（例えば、プライベート鍵又は公開鍵）を用いて暗号化された応答を生成させる。要求が生成されると、要求は、次に、スキャナモジュールへ送信される。スキャナモジュールは、受信した要求に含まれる命令を実行する。プロセス５００は、次に、ステップ５１０で、スキャナモジュールから暗号化された検証応答を受信する。プロセス５００は、次に、ステップ５１５で、受信した応答を検証することに進む。応答の検証は、暗号化された応答の復号化を含んで良く、それにより、応答が復号化に成功した場合、これは、プロセス５００に応答が有効であることを示す。反対に、応答が復号化に成功できなかった場合、これは、応答が無効であることを示す。ステップ５１５で応答が有効であるとプロセス５００により決定された場合、プロセス５００は次に終了する。しかしながら、ステップ５１５で応答が無効であると決定された場合、プロセス５００は、ステップ５２０へ進み、それにより、軽減措置が実行される。次に、プロセス５００は終了する。
【００８３】
図６は、本発明の実施形態による、スキャナモジュール及び電子装置のインテグリティの検証について暗号化された応答を生成する、電子装置の通常環境の中でスキャナモジュールにより実行されるプロセス６００を示す。プロセス６００は、ステップ６０５で開始し、それにより、プロセス６００は検証モジュールからチャレンジを受信する。簡単に纏めるために、チャレンジは、プロセス６００により実行されるべき全ての検証ステップを含む。プロセス６００は、次に、ステップ６１０で、チャレンジの中で示されるような全ての検証機能を実行するために進行する。各機能が完了した後に、プロセス６００は、各特定機能について生成された応答を収集し、全ての応答を単一の統一応答に順に並べる。統一応答は、次に、ステップ６１５で、秘密鍵（例えば、プライベート鍵又は公開鍵）を用いて暗号化される。この暗号化された応答は、次に、ステップ６２０で検証モジュールへ送信され、プロセス６００は次に終了する。
【００８４】
以上は、以下の請求項に記載されるような本発明によるシステム及びプロセスの実施形態の説明である。他者が以下の請求項の範囲に包含される代替を設計でき及びそうし得ることが想定される。
【図１】
0006556864.tif 000002
【図２】
0006556864.tif 000003
【図３】
0006556864.tif 000004
【図４】
0006556864.tif 000005
【図５】
0006556864.tif 000006
【図６】
0006556864.tif 000007