(57)【特許請求の範囲】
【請求項１】
プロセッサを含む一台のコンピューティング装置における安全な実行環境と第２の実行環境を備えたシステム上で、前記安全な実行環境のセキュリティを保持する方法であって、
前記第２の実行環境の入力スタックが、信頼性のある入力装置から暗号化されたユーザ入力を受理するステップと、
前記入力スタックが、前記安全な実行環境の信頼性のあるサービスプロバイダに前記暗号化されたユーザ入力を渡すステップと、
前記信頼性のあるサービスプロバイダが、前記暗号化されたユーザ入力を復号化して、復号化されたユーザ入力を前記安全な実行環境の信頼できるユーザインターフェースエンジンに渡すステップと、
前記信頼できるユーザインターフェースエンジンが、前記安全な実行環境が標準入力モードにあるかどうかを判定するステップと、
前記安全な実行環境が前記標準入力モードにある場合、前記信頼できるユーザインターフェースエンジンが、前記復号化されたユーザ入力のうちの少なくとも第１の部分を前記第２の実行環境の前記入力スタックに転送するステップと
を備えたことを特徴とする方法。
【請求項２】
前記安全な実行環境がネクサス入力モードにある場合、前記信頼できるユーザインターフェースエンジンが、前記復号化されたユーザ入力の対象となる特定の処理であって、前記安全な実行環境で動作する特定の処理を決定するステップと、
前記信頼できるユーザインターフェースエンジンが、前記復号化されたユーザ入力を前記特定の処理に導くステップと
をさらに備えたことを特徴とする請求項１に記載の方法。
【請求項３】
前記信頼できるユーザインターフェースエンジンが、前記復号化されたユーザ入力に前記安全な実行環境がネクサス入力モードでなければならないというユーザＮＩＭの指示が含まれるかどうかを判断するステップと、
前記復号化されたユーザ入力がユーザＮＩＭの指示を含み、前記安全な実行環境が前記ネクサス入力モードにない場合、前記信頼できるユーザインターフェースエンジンが、前記安全な実行環境を前記ネクサス入力モードに切り替えるステップと
をさらに備えたことを特徴とする請求項１に記載の方法。
【請求項４】
前記ユーザＮＩＭの指示は、キーボード上のキーストロークの組合せを含むことを特徴とする請求項３に記載の方法。
【請求項５】
前記ユーザＮＩＭの指示は、前記安全な実行環境で動作する処理のプログラムによる起動を含むことを特徴とする請求項３に記載の方法。
【請求項６】
前記安全な実行環境で動作する第１の処理の前記プログラムによる起動は、前記処理に対応するグラフィカルユーザインターフェース要素を選択することを含むことを特徴とする請求項５に記載の方法。
【請求項７】
前記グラフィカルユーザインターフェース要素は、第２の処理を使用して表示され、前記第２の処理は、前記第２の実行環境で動作し、前記グラフィカルユーザインターフェース要素は、前記第１の処理によって表示される安全なグラフィカルユーザインターフェース要素に対応することを特徴とする請求項６に記載の方法。
【請求項８】
前記信頼できるユーザインターフェースエンジンが、前記復号化されたユーザ入力に前記安全な実行環境が前記標準入力モードでなければならないというユーザＳＩＭの指示が含まれるかどうかを判断するステップと、
前記復号化されたユーザ入力が前記ユーザＳＩＭの指示を含み、前記安全な実行環境が前記標準入力モードにない場合、前記信頼できるユーザインターフェースエンジンが、前記安全な実行環境を前記標準入力モードに切り替えるステップと
をさらに備えたことを特徴とする請求項１に記載の方法。
【請求項９】
前記ユーザＳＩＭの指示は、キーボード上のキーストロークの組合せを含むことを特徴とする請求項８に記載の方法。
【請求項１０】
前記ユーザＳＩＭの指示は、前記安全な実行環境で動作する処理に対応するグラフィカルユーザインターフェース要素のない表示を得る操作を含むことを特徴とする請求項８に記載の方法。
【請求項１１】
前記安全な実行環境が標準入力モードにあり、前記復号化されたユーザ入力の第２の部分が、前記安全な実行環境で動作する処理によって表示されるグラフィカルユーザインターフェース要素の変更に対応する場合、前記グラフィカルユーザインターフェース要素の変更が前記安全な実行環境内で実行されることを特徴とする請求項１に記載の方法。
【請求項１２】
前記安全な実行環境で動作する処理によって表示される前記グラフィカルユーザインターフェース要素の変更は、前記安全な実行環境で動作するプロセスによって表示される前記グラフィカルユーザインターフェース要素上のマウスカーソルの動作を含むことを特徴とする請求項１１に記載の方法。
【請求項１３】
パワーマネジメントの変更が検出された場合、前記信頼できるユーザインターフェースエンジンが、前記安全な実行環境をネクサス入力モードに切り替えるステップをさらに備えたことを特徴とする請求項１に記載の方法。
【請求項１４】
プロセッサを含む一台のコンピューティング装置における安全な実行環境と第２の実行環境を備えたシステム上で、前記安全な実行環境のセキュリティを保持するためのコンピュータ実行可能命令を含むコンピュータ読取可能な記録媒体であって、
前記コンピュータ実行可能命令は、前記プロセッサに、
前記第２の実行環境の入力スタックが、信頼性のある入力装置から暗号化されたユーザ入力を受理するステップと、
前記入力スタックが、前記安全な実行環境の信頼性のあるサービスプロバイダに前記暗号化されたユーザ入力を渡すステップと、
前記信頼性のあるサービスプロバイダが、前記暗号化されたユーザ入力を復号化して、復号化されたユーザ入力を前記安全な実行環境の信頼できるユーザインターフェースエンジンに渡すステップと、
前記信頼できるユーザインターフェースエンジンが、前記安全な実行環境が標準入力モードにあるかどうかを判定するステップと、
前記安全な実行環境が前記標準入力モードにある場合、前記信頼できるユーザインターフェースエンジンが、前記復号化されたユーザ入力のうちの少なくとも第１の部分を前記第２の実行環境の前記入力スタックに転送するステップと
を備えた動作を実行させることを特徴とするコンピュータ読取可能な記録媒体。
【請求項１５】
前記コンピュータ実行可能命令は、前記プロセッサに、
前記安全な実行環境がネクサス入力モードにある場合、前記信頼できるユーザインターフェースエンジンが、前記復号化されたユーザ入力の対象となる特定の処理であって、前記安全な実行環境で動作する特定の処理を決定するステップと、
前記信頼できるユーザインターフェースエンジンが、前記復号化されたユーザ入力の対象を前記特定の処理に導くステップと
をさらに含む動作を実行させるように構成されることを特徴とする請求項１４に記載のコンピュータ読取可能な記録媒体。
【請求項１６】
さらに、前記コンピュータ実行可能命令は、前記プロセッサに、
前記信頼できるユーザインターフェースエンジンが、前記復号化されたユーザ入力が前記安全な実行環境がネクサス入力モードでなければならないというユーザＮＩＭの指示を含むかどうかを判断するステップと、
前記復号化されたユーザ入力がユーザＮＩＭの指示を含み、前記安全な実行環境が前記ネクサス入力モードでない場合、前記信頼できるユーザインターフェースエンジンが、前記安全な実行環境を前記ネクサス入力モードに切り替えるステップと
をさらに含む動作を実行させるように構成されることを特徴とする請求項１４に記載のコンピュータ読取可能な記録媒体。
【請求項１７】
前記ユーザＮＩＭの指示は、キーボード上のキーストロークの組合せを含むことを特徴とする請求項１６に記載のコンピュータ読取可能な記録媒体。
【請求項１８】
前記ユーザＮＩＭの指示は、前記安全な実行環境で動作する処理のプログラムによる起動を含むことを特徴とする請求項１６に記載のコンピュータ読取可能な記録媒体。
【請求項１９】
前記安全な実行環境で動作する第１の処理の前記プログラムによる起動は、前記処理に対応するグラフィカルユーザインターフェース要素の選択を含むことを特徴とする請求項１８に記載のコンピュータ読取可能な記録媒体。
【請求項２０】
前記グラフィカルユーザインターフェース要素は、第２の処理を使用して表示され、前記第２の処理は、前記第２の実行環境で動作し、前記グラフィカルユーザインターフェース要素は、前記第１の処理によって表示される安全なグラフィカルユーザインターフェース要素に対応することを特徴とする請求項１９に記載のコンピュータ読取可能な記録媒体。
【請求項２１】
前記コンピュータ実行可能命令は、前記プロセッサに、
前記信頼できるユーザインターフェースエンジンが、前記復号化されたユーザ入力に前記安全な実行環境が標準入力モードでなければならないというユーザＳＩＭの指示が含まれるかどうかを判断するステップと、
前記復号化されたユーザ入力がユーザＳＩＭの指示を含み、前記安全な実行環境が前記標準入力モードでない場合、前記信頼できるユーザインターフェースエンジンが、前記安全な実行環境を前記標準入力モードに切り替えるステップと
をさらに含む動作を実行させるように構成されることを特徴とする請求項１４に記載のコンピュータ読取可能な記録媒体。
【請求項２２】
前記ユーザＳＩＭの指示は、キーボード上のキーストロークの組合せを含むことを特徴とする請求項２１に記載のコンピュータ読取可能な記録媒体。
【請求項２３】
前記ユーザＳＩＭの指示は、前記安全な実行環境で動作する処理に対応するグラフィカルユーザインターフェース要素のない表示を得る操作を含むことを特徴とする請求項２１に記載のコンピュータ読取可能な記録媒体。
【請求項２４】
前記安全な実行環境が標準入力モードであり、前記復号化されたユーザ入力の第２の部分が前記安全な実行環境で動作する処理によって表示されるグラフィカルユーザインターフェース要素の変更に対応する場合、前記グラフィカルユーザインターフェース要素の前記変更が前記安全な実行環境内で実行されることを特徴とする請求項１４に記載のコンピュータ読取可能な記録媒体。
【請求項２５】
前記安全な実行環境で動作する処理によって表示されるグラフィカルユーザインターフェース要素の変更は、前記安全な実行環境で動作する処理によって表示される前記グラフィカルユーザインターフェース要素におけるマウスカーソルの動作を含むことを特徴とする請求項２４に記載のコンピュータ読取可能な記録媒体。
【請求項２６】
前記コンピュータ実行可能命令は、前記プロセッサに、パワーマネジメントの変更が検出された場合、前記信頼できるユーザインターフェースエンジンが、前記安全な実行環境をネクサス入力モードに切り替えるステップをさらに含む動作を実行させるように構成されることを特徴とする請求項１４に記載のコンピュータ読取可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般にコンピュータセキュリティの分野に関する。本発明は特に、１台のコンピューティング装置上にある複数の実行環境（オペレーティングシステムなど）の使用法に関し、複数の実行環境の中からの高信頼実行環境において、入力の完全性を確保することができる技術を提供する。
【背景技術】
【０００２】
現代のコンピューティングでは、コンピュータ上で実行できる多くのタスクに、一定のレベルのセキュリティが求められている。一定のレベルのセキュリティを提供するには、いくつかの方法がある。１つは、いかなる危険性のある要素からも完全に分離したコンピュータ上で、すべての安全なアプリケーションを実行することであり、もう１つは仮想マシンモニタ（ＶＭＭ：ｖｉｒｔｕａｌ  ｍａｃｈｉｎｅ  ｍｏｎｉｔｏｒ）を使用して１つのコンピュータシステム上で動作する２つの実行環境（オペレーティングシステムなど）の間を完全に分離できるようにすることである。しかし、ＶＭＭは実用的ではない。コストや利便性のために、安全な実行環境は、セキュリティの保証されないアプリケーションとリソースを共有する必要があり、こうしたアプリケーションやリソースはアタッカーに対して脆弱となるのである。さらに、ＶＭＭを使用する場合、ＶＭＭではマシンとそのすべての装置の完全な仮想化を必要とするので（その結果、ＶＭＭは考えられるすべての装置について独自のデバイスドライバを提供する必要がある）、ＶＭＭはほとんど無制限に様々なデバイスをマシンに追加できるオープンアーキテクチャのマシンには適さない。
【０００３】
２つの実行環境間でリソースを共有する機能を提供するための１つの方法は、マシン上のほとんどの処理および装置を制御する１つの「メイン」オペレーティングシステムが存在し、および第２のオペレーティングシステムもまた存在するコンピュータシステムを提供することである。この第２のオペレーティングシステムは、メインオペレーティングシステムと並存しており、所定の限られたタスクを実行する小規模で目的を限定したオペレーティングシステムである。オペレーティングシステムを「小規模」にする、またはその「目的を限定」する１つの方法は、小規模オペレーティングシステムが「メイン」オペレーティングシステムから特定のインフラストラクチャ（例えば、スケジュール機能、メモリマネージャ、デバイスドライバなど）を借りられるようにすることである。ＶＭＭは１つのオペレーティングシステムをもう１つのオペレーティングシステムから事実上分離するので、このようにインフラストラクチャを共有する使用法はＶＭＭにとって実用的ではない。
【０００４】
ＶＭＭを使用せず、それ以外の技術によっても同一マシン上に複数のオペレーティングシステムを共存させることが可能となる。こうした技術の１つは、一方のオペレーティングシステムを他方のオペレーティングシステムの「ホスト」として動作させることである（「ホスト」によるホスティングの対象となるオペレーティングシステムを「ゲスト」と呼ぶこともある）。この場合は、ホストオペレーティングシステムがゲストにメモリやプロセッサ時間などのリソースを提供する。他のこうした技術としては、「ｅｘｏｋｅｒｎｅｌ」を使用したものがある。ｅｘｏｋｅｒｎｅｌは特定のデバイス（プロセッサやメモリなど）を管理し、オペレーティングシステム間の特定の種類の対話（ｉｎｔｅｒａｃｔｉｏｎ）も管理する。ただし、ｅｘｏｋｅｒｎｅｌはＶＭＭと異なり、マシン全体を仮想化するわけではない。ｅｘｏｋｅｒｎｅｌを使用する場合も、一方のオペレーティングシステム（「メイン」オペレーティングシステムなど）が他方のオペレーティングシステムにインフラストラクチャの多くを提供するのが実情である。この場合もメインオペレーティングシステムは「ホスト」と呼ばれ、小規模なオペレーティングシステムは「ゲスト」と呼ばれる。ホスティングモデルとｅｘｏｋｅｒｎｅｌモデルのいずれにおいても、インフラストラクチャの共有をサポートするオペレーティングシステム間の有用な対話が可能となる。
【０００５】
したがって、これらの技術を使用することによって１つのコンピュータシステムに少なくとも２つの実行環境を提供することができる。これらの１つは「高信頼」のオペレーティングシステムであり、ここでは「ネクサス（ｎｅｘｕｓ）」と呼ぶ。高信頼オペレーティングシステムは、その挙動に関して特定の信頼レベルを提供するシステムである。例えば、ネクサスを使用することによって、ネクサスの外部に情報が漏れないことが保証された外からは見えないメモリ（ｃｕｒｔａｉｎｅｄ  ｍｅｍｏｒｙ）が使用可能となり、認定された一部のアプリケーションにのみ、ネクサスの下での実行と外から見えないメモリへのアクセスを許可することで、漏洩が許されない機密情報（例えば暗号キーなど）を扱うことができる。
【０００６】
２つの実行環境をもつ１つのコンピュータシステムでは、その１つがネクサスで、ネクサスがゲストオペレーティングシステムであり、挙動に関する信頼レベルが同じであることを前提としないもう１つのオペレーティングシステムがホストオペレーティングシステムであるのが望ましい。これで、ネクサスをできるだけ小規模にすることができる。小規模のネクサスは、ネクサスが提供する保証の信頼レベルをより高くすることができる。したがって、オペレーティングシステムの機能はホストオペレーティングシステムにより実行される。
【０００７】
ホストオペレーティングシステムにより実行されるこうしたオペレーティングシステムの１つは、ウィンドウシステムである。ウィンドウシステムを使用すると、ユーザのディスプレイにはウィンドウが配置される。なお、ウィンドウとは、アプリケーションからの情報を表示する画面上の領域である。１つのアプリケーションは１つまたは複数のウィンドウを持つことができる。表示されているすべてのウィンドウの中の１つがフォーカスを持つことができる。フォーカスウィンドウは、例えば、ウィンドウの周囲を違った境界とすることで示されるかもしれない。
【発明の開示】
【発明が解決しようとする課題】
【０００８】
従来のウィンドウシステムでは、あるウィンドウがフォーカスを持つとき、通常そのウィンドウがユーザ入力の対象となる。したがって、ユーザがキーボードを使用して情報を打ち込むと、多くの場合、キーストローク（ｋｅｙｓｔｒｏｋｅ）データはフォーカスを持つウィンドウを有するアプリケーションにオペレーティングシステムにより送信される。あるキーストロークや他の入力操作は、フォーカスを持つウィンドウを有するアプリケーションには送信されない場合がある。例えば、一部のウィンドウシステムにはすべてのウィンドウを最小化するキーストロークコマンドがある。こうしたコマンドはウィンドウシステムによって処理され、フォーカスを持つウィンドウを有するアプリケーションには送信されない。フォーカスウィンドウ（ｆｏｃｕｓｅｄ−ｏｎ ｗｉｎｄｏｗ）を有しているアプリケーションは、ウィンドウ最小化の通知は受け取るが、ユーザのキーストロークはフォーカスを持つウィンドウを有しているアプリケーションでなく、ウィンドウシステムを対象としているので、このアプリケーションには送信されない。
【０００９】
ウィンドウシステムがネクサスでなくホストオペレーティングシステムによって実行される場合、ウィンドウシステムは攻撃に対して脆弱である。このことによって問題が発生する。前述のように、ウィンドウシステムでは、どのウィンドウがフォーカスを持つかを追跡するので、どのウィンドウがユーザの入力を受け取るかが特定されてしまうのである。したがって、ユーザが気付かないように、あるいはユーザが認識できる兆候を示さずにフォーカスを移動することでシステムを攻撃することができる。
【００１０】
例えば、ホスト上で動作し、フォーカスの切り替えとキーストロークの取り込みを行うプログラムを介して攻撃が行われる可能性がある。ユーザは、ユーザの入力が信頼できるエンティティ（ネクサス内で動作する、あるハードウェア、システムソフトウェア、アプリケーション、あるいはウィンドウ）に導かれる（ｄｉｒｅｃｔｅｄ）と信じ込まされる。しかし、ある時点でフォーカスが移動する。ユーザ入力は、代わりに攻撃プログラムに導かれており、このプログラムに取り込まれて後に使用されてしまう可能性があるのである。
【００１１】
このように、ウィンドウシステムはホストオペレーティングシステムの制御下にあり、ユーザ入力は、通常、入力時にフォーカスを持つウィンドウに導かれるので、ネクサスの高信頼性の本質的部が危険にさらされる。本発明はウィンドウシステムに関連して記述されているが、２つ以上の信頼レベルがあり、ユーザが情報のやりとりを行うエンティティ（アプリケーションなど）を選択できるような他のシステムも存在し得る。こうしたシステムでも、特定の入力をより信頼性の低いアプリケーションやエンティティから安全に保たれる必要があり、前述と同様の問題が発生する。
【００１２】
以上の観点から、従来技術の弱点を克服するシステムが必要である。
【課題を解決するための手段】
【００１３】
本発明の一実施形態では、安全な実行環境ともう１つの実行環境を備えるシステム上の安全な実行環境のセキュリティが、２つのモード（標準入力モードとネクサス入力モード）を使用することで保持される。一般に、信頼される入力装置からのユーザ入力は、安全な実行環境が標準入力モードのときに限り、もう１つの実行環境に転送される。ユーザ入力は、一般に、安全な実行環境がネクサス入力モードであるときに限り、安全な実行環境で動作する処理に導か（ｄｉｒｅｃｔｅｄ）れる。
【００１４】
ユーザ入力の復号化は、安全な実行環境で行われる。
【００１５】
一実施形態では、標準入力モードからネクサス入力モードへの移行は、仮定されたユーザ入力時または安全な実行環境で動作する処理のプログラムによる起動時（マウスポインタまたはキーボードコマンドを使用して、安全な実行環境で動作する処理に対応するウィンドウをフォーカスがある状態にしたとき）に行われる（ｏｃｃｕｒ）。
【００１６】
一実施形態では、ネクサス入力モードから標準入力モードへの移行は、仮定されたユーザ入力時またはグラフィカルユーザインターフェースを表示していた安全な実行環境で動作する最後の処理の終了時に行われる。
【００１７】
一実施形態では、標準入力モードにある場合でも、安全な実行環境で動作する処理に対応するグラフィカルユーザインターフェース要素に対する変更に対応するユーザ入力は、もう１つの実行環境には導かれない。
【００１８】
一実施形態では、安全な実行環境のための現在の状態（少なくとも標準入力モードの状態とネクサス入力モードの状態から）を維持するとともに、現在の状態に従ってユーザ入力のフロー（ｔｈｅ ｆｌｏｗ ｏｆ ｕｓｅｒ ｉｎｐｕｔ）を導くことでセキュリティが保持される。
【００１９】
本発明のその他の機能を以下に説明する。  
添付の図面とともに、以上の課題を解決するための手段と後述の発明を実施するための最良の形態を読むことにより、本発明をより深く理解できる。本発明を説明するために本発明の例示的な構成を図示するが、本発明は開示するこの特定の方法および手段には限定されない。
【発明を実施するための最良の形態】
【００２０】
オペレーティングシステムなどの２つの実行環境が１台のマシン上で並列に動作する場合は、複数のオペレーティングシステムによるユーザ入力へのアクセス方法を決定する必要がある。さらに、オペレーティングシステムの１つが、もう１つのオペレーティングシステムを対象とするユーザ入力にアクセスできないようにする必要がある。本発明は、ネクサス上の高信頼エンティティを対象とするユーザ入力をホストオペレーティングシステムエンティティから発見できないように保護するための技術を提供する。
【００２１】
（例示的なコンピューティング環境）
図１は、本発明の諸態様を実施することができる例示的なコンピューティング環境を示している。コンピューティングシステム環境１００は適切なコンピューティング環境の一例にすぎず、本発明の使用または機能の範囲に関するいかなる限定を示唆することも意図したものでもない。また、このコンピューティング環境１００は、例示的オペレーティング環境１００の中に示すいかなるコンポーネントの１つまたは組合せに関し、なんらかの依存性も要件ももつとは解釈されるべきではない。
【００２２】
本発明は、他の多くの汎用または専用のコンピューティングシステム環境または構成にも適用することができる。本発明の使用に適した周知のコンピューティングシステム、環境、および／または構成の例には、限定するものではないが、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルドまたはラップトップ装置、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラム可能な家庭用電化製品、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータ、埋め込みシステム、上記の任意のシステムまたは装置を含む分散コンピューティング環境などが含まれる。
【００２３】
本発明は、プログラムモジュールのようにコンピュータ実行可能命令をコンピュータが実行する一般的なコンテキストで説明することができる。一般に、プログラムモジュールにはルーチン、プログラム、オブジェクト、コンポーネント、データ構造などがあり、特定のタスクを実行するものや、特定の抽象データ型を実装するものがある。本発明は、通信ネットワークや他のデータ送信媒体を介してリンクするリモート処理装置がタスクを実行する分散コンピューティング環境でも実施できる。分散コンピューティング環境では、メモリ記憶装置を含むローカルとリモートの両方のコンピュータ記憶媒体にプログラムモジュールとそれ以外のデータを置くことができる。
【００２４】
図１を参照すると、本発明を実施する例示的なシステムは、コンピュータ１１０の形で汎用コンピューティング装置を含んでいる。コンピュータ１１０の構成部品には、限定するものではないが、処理装置１２０、システムメモリ１３０、および、システムメモリの処理装置１２０への接続を含む様々なシステム構成部品を接続するシステムバス１２１が挙げられる。処理装置１２０は、マルチスレッドプロセッサ上でサポートされるものなど、複数の論理処理装置を代表するものとすることができる。システムバス１２１は、様々なバスアーキテクチャのいずれかを使用するメモリバスまたはメモリコントローラ、周辺バス、およびローカルバスを含む各種バス構造のいずれでもよい。限定するものではないが、こうしたアーキテクチャには、例として、ＩＳＡ（Ｉｎｄｕｓｔｒｙ  Ｓｔａｎｄａｒｄ  Ａｒｃｈｉｔｅｃｔｕｒｅ）バス、ＭＣＡ（Ｍｉｃｒｏ  Ｃｈａｎｎｅｌ  Ａｒｃｈｉｔｅｃｔｕｒｅ）バス、ＥＩＳＡ（Ｅｎｈａｎｃｅｄ  ＩＳＡ）バス、ＶＥＳＡ（Ｖｉｄｅｏ  Ｅｌｅｃｔｒｏｎｉｃｓ  Ｓｔａｎｄａｒｄｓ  Ａｓｓｏｃｉａｔｉｏｎ）ローカルバス、ＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）バス（メザニン（Ｍｅｚｚａｎｉｎｅ）バスとしても知られている）が挙げられる。システムバス１２１は、通信装置間の、ポイントツーポイント接続、スイッチングファブリック（ｓｗｉｔｃｈｉｎｇ ｆａｂｒｉｃ）または同様のものとしても実現できる。
【００２５】
コンピュータ１１０には、通常は様々なコンピュータ読取可能な媒体が含まれる。コンピュータ読取可能な媒体は、コンピュータ１１０からアクセスできる任意の使用可能な媒体でよく、揮発性と不揮発性の両方、および取り外し可能と固定の両方の媒体を含む。限定するものではないが、例として、コンピュータ読取可能な媒体にはコンピュータ記憶媒体および通信媒体を含めることができる。コンピュータ記憶媒体には、コンピュータ読取可能な命令、データ構造、プログラムモジュール、またはその他のデータなどの情報の記憶のための任意の方法または技術で実装された、揮発性と不揮発性の両方、および取り外し可能と固定の両方の媒体が含まれる。コンピュータ記憶媒体には、限定するものではないが、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリなどのメモリ技術、ＣＤ  ＲＯＭ、デジタル多用途ディスク（ＤＶＤ：ｄｉｇｉｔａｌ  ｖｅｒｓａｔｉｌｅ  ｄｉｓｋｓ）などの光ディスク記憶装置、磁気カセット、磁気テープ、磁気ディスクなどの磁気記憶装置、または必要な情報を格納するのに使用することができ、コンピュータ１１０からアクセスできる他の任意の媒体が挙げられる。通信媒体は、典型的には、搬送波やその他の搬送メカニズムなどの変調されたデータ信号中のコンピュータ読取可能な命令、データ構造、プログラムモジュール、またはその他のデータなどを具現化するものであり、任意の情報伝達媒体を含む。「変調されたデータ信号」という用語は、信号内に情報を符号化するような方法で、１つまたは複数の特性が設定または変更された信号を意味する。限定するものではないが、通信媒体には、例として、有線ネットワーク、直接ワイヤ接続などの有線媒体と、音響、無線、赤外線などの無線媒体が挙げられる。上記の任意の組合せも、コンピュータ読取可能な媒体の範囲内に含まれるものとする。
【００２６】
システムメモリ１３０には、読み取り専用メモリ（ＲＯＭ：ｒｅａｄ  ｏｎｌｙ  ｍｅｍｏｒｙ）１３１やランダムアクセスメモリ（ＲＡＭ：ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）１３２などの揮発性および／または不揮発性のメモリという形をとるコンピュータ記憶媒体が含まれる。起動時などにコンピュータ１１０内の構成要素間の情報転送を支援する基本ルーチンを含む基本入出力システム１３３（ＢＩＯＳ：ｂａｓｉｃ  ｉｎｐｕｔ／ｏｕｔｐｕｔ  ｓｙｓｔｅｍ）は、通常はＲＯＭ  １３１に格納される。一方、ＲＡＭ  １３２には、通常処理装置１２０から直ちにアクセスできる、かつ／または処理装置１２０で現在操作しているデータおよび／またはプログラムモジュールが入っている。限定するものではないが、例として、図１にオペレーティングシステム１３４、アプリケーションプログラム１３５、その他のプログラムモジュール１３６、およびプログラムデータ１３７を示す。
【００２７】
コンピュータ１１０には、その他の取り外し可能／固定、揮発性／不揮発性のコンピュータ記憶媒体を含めてもよい。ほんの一例として、図１に、固定された不揮発性の磁気媒体の読み出しまたは書き込みを行うハードディスクドライブ１４０、取り外し可能な不揮発性の磁気ディスク１５２の読み出しまたは書き込みを行う磁気ディスクドライブ１５１、ＣＤ  ＲＯＭや他の光媒体などの取り外し可能な不揮発性の光ディスク１５６の読み出しまたは書き込みを行う光ディスクドライブ１５５を示す。例示的なオペレーティング環境で使用することが可能な上記以外の取り外し可能／固定、揮発性／不揮発性のコンピュータ記憶媒体には、限定するものではないが、磁気テープカセット、フラッシュメモリカード、ＤＶＤ、デジタルビデオテープ、ソリッドステートＲＡＭ、ソリッドステートＲＯＭなどが挙げられる。ハードディスクドライブ１４１は、通常インターフェース１４０などの固定のメモリインターフェースを介してシステムバス１２１に接続し、磁気ディスクドライブ１５１と光ディスクドライブ１５５は、通常インターフェース１５０などの取り外し可能なメモリインターフェースを介してシステムバス１２１に接続する。
【００２８】
図１に示す上述のドライブとこれに対応するコンピュータ記憶媒体には、コンピュータ１１０に対するコンピュータ読取可能な命令、データ構造、プログラムモジュールおよびその他のデータの記憶を提供する。例えば、図１では、ハードディスクドライブ１４１がオペレーティングシステム１４４、アプリケーションプログラム１４５、その他のプログラムモジュール１４６、およびプログラムデータ１４７を記憶しているように描かれている。ただし、こうした構成部品は、オペレーティングシステム１３４、アプリケーションプログラム１３５、その他のプログラムモジュール１３６、およびプログラムデータ１３７と同じでも、異なっていてもよい。ここでは、オペレーティングシステム１４４、アプリケーションプログラム１４５、その他のプログラムモジュール１４６、およびプログラムデータ１４７には異なる番号を付けて、少なくとも別の複製であることを示している。ユーザは、キーボード１６２やポインティングデバイス１６１（一般にマウス、トラックボール、またはタッチパッドと呼ばれる）を介してコンピュータ２０にコマンドや情報を入力できる。他の入力装置（図示せず）には、マイクロフォン、ジョイスティック、ゲームパッド、サテライトディッシュ（ｓａｔｅｌｌｉｔｅ ｄｉｓｈ）、スキャナなどが挙げられる。これらの入力装置および他の入力装置は、多くの場合システムバスに接続されたユーザ入力インターフェース１６０を介して処理装置１２０に接続するが、パラレルポート、ゲームポート、ＵＳＢ（ｕｎｉｖｅｒｓａｌ  ｓｅｒｉａｌ  ｂｕｓ）のような他のインターフェースやバス構造によって接続してもよい。モニタ１９１または他のタイプの表示装置も、ビデオインターフェース１９０などのインターフェースを介してシステムバス１２１に接続される。モニタに加えて、コンピュータはスピーカー１９７やプリンタ１９６などその他の周辺出力装置も含むことができ、これらは出力周辺インターフェース１９０を介して接続することができる。
【００２９】
コンピュータ１１０は、リモートコンピュータ１８０などの１台または複数台のリモートコンピュータへの論理接続を使用してネットワーク環境で動作することができる。リモートコンピュータ１８０は、パーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ピアデバイス（ｐｅｅｒ ｄｅｖｉｃｅ）、または他の一般のネットワークノードでよく、通常は、コンピュータ１１０に関連して上述した構成要素の多くまたはすべてが含まれるが、図１にはメモリ記憶装置１８１のみを示す。図１に示す論理接続には、ローカルエリアネットワーク（ＬＡＮ：ｌｏｃａｌ  ａｒｅａ  ｎｅｔｗｏｒｋ）１７１とワイドエリアネットワーク（ＷＡＮ：ｗｉｄｅ  ａｒｅａ  ｎｅｔｗｏｒｋ）１７３が含まれるが、他のネットワークを含めてもよい。このようなネットワーキング環境は、職場、企業規模のコンピュータネットワーク、イントラネット、およびインターネットではごく一般的である。
【００３０】
ＬＡＮネットワーキング環境で使用される場合、コンピュータ１１０はＬＡＮ  １７１にネットワークインターフェースまたはアダプタ１７０を介して接続する。ＷＡＮネットワーキング環境で使用される場合、コンピュータ１１０は通常インターネットなどのＷＡＮ  １７３を介して通信を確立するためのモデム１７２またはその他の手段を備えている。モデム１７２（内蔵または外付け）は、ユーザ入力インターフェース１６０または他の適切なメカニズムを介してシステムバス１２１に接続できる。ネットワーク環境では、コンピュータ１１０またはその一部に関連して示したプログラムモジュールは、リモートメモリ記憶装置に格納することができる。限定するものではないが、例として、図１にリモートアプリケーションプログラム１８５がメモリデバイス１８１にあるように示す。当然のことながら、図示されたネットワーク接続が例示的なものであり、コンピュータ間の通信リンクを確立する他の手段を使用してもよいことは言うまでもない。
【００３１】
（１台のマシン上の複数のコンピューティング環境）
前述のように、１台のコンピューティング装置上で２つのオペレーティングシステムを並列に実行できることは、この技術分野では周知である。本発明を使用して対処する場合問題の１つは、２つのオペレーティングシステム間にある程度の対話を可能としながらある程度の分離を可能とするにはどのようにすればよいかである。
【００３２】
図２に、２つのオペレーティングシステム１３４（１）と１３４（２）が１台のコンピュータ１１０上で動作するシステムを示す。オペレーティングシステム１３４（１）と１３４（２）の間にはある種の論理的セパレーション２０２が存在し、オペレーティングシステム１３４（１）と１３４（２）の間である程度の対話２０４が許可されるが、少なくとも一方のオペレーティングシステムを他方のオペレーティングシステムで起こるイベントから保護することができる。図２の例では、オペレーティングシステム１３４（１）はホストオペレーティングシステムであり、オペレーティングシステム１３４（２）は前述の「ネクサス」のようなゲストオペレーティングシステムである。前述のように、オペレーティングシステム１３４（２）がネクサスの場合、オペレーティングシステム１３４（２）は、オペレーティングシステム１３４（１）と相互に対話することによってオペレーティングシステム１３４（１）のインフラストラクチャを借りることができるが、オペレーティングシステム１３４（２）が、オペレーティングシステム１３４（１）で発生しオペレーティングシステム１３４（２）がその挙動に関する指定と逆に動作する結果を招くような操作（悪意の有無は問わない）から自身を保護できるように、セパレーション２０２を構成するのが望ましい（ただし、本発明はオペレーティングシステム１３４（２）がネクサスの場合には限定されないことは理解されよう）。
【００３３】
オペレーティングシステム１３４（１）と１３４（２）の間のセパレーション２０２は、状況に応じて、セキュリティモニタを利用して実施することもできる。セキュリティモニタは、１３４（１）と１３４（２）の両方のオペレーティングシステムの外部にある構成要素であり、オペレーティングシステム１３４（２）をオペレーティングシステム１３４（１）から保護するために使用できるなんらかのセキュリティサービスを提供する。例えば、セキュリティモニタは、特定のハードウェアへのアクセスを制御し、メモリの使用を管理し（オペレーティングシステム１３４（２）がメモリのある部分を排他的に使用し）、またはオペレーティングシステム１３４（１）からオペレーティングシステム１３４（２）へ安全な方法でのデータの通信を容易にすることができる。ただし、セキュリティモニタの使用はオペレーティングシステム１３４（２）をオペレーティングシステム１３４（１）から保護すると考えられる方法の１つのモデルを表しており、セキュリティモニタの使用は必須ではないことに留意されたい。別の例として、オペレーティングシステム１３４（２）は自らをオペレーティングシステム１３４（１）から保護するのに必要なすべての機能を備えるシステムが考えられる。
【００３４】
図２では、オペレーティングシステム１３４（１）を「ホスト」、オペレーティングシステム１３４（２）を「ゲスト」として示していることに留意されたい。一般に、このような割り振りにより、この例ではオペレーティングシステム１３４（１）がオペレーティングシステム１３４（１）と１３４（２）の両方が使用する所定のオペレーティングシステムインフラストラクチャ（例えば、デバイスドライバ、スケジューラなど）を提供し、オペレーティングシステム１３４（２）はこのようなインフラストラクチャを備えないことが望ましく、むしろオペレーティングシステム１３４（１）のインフラストラクチャを使用するという意味で「ゲスト」であることが示される。ただし、オペレーティングシステムを「ホスト」または「ゲスト」とする要因（ｐａｒａｍｅｔｅｒｓ）は様々であることに留意されたい。さらに、従来の「ホスト」オペレーティングシステムと「ゲスト」オペレーティングシステムという概念では、ホストがゲストの操作から自身を保護する必要があると仮定されていることにも留意されたい。しかし、図２の例では、ゲストオペレーティングシステム１３４（２）が、オペレーティングシステム１３４（１）から自身を保護する必要がある高信頼オペレーティングシステムであると仮定されている。以下の例では、一般にオペレーティングシステム１３４（１）を「ホスト」、オペレーティングシステム１３４（２）を「ゲスト」または「ネクサス」と称しこれらを区別するものとする。当然、ここに説明する技術を、同一のマシン上で（または、同一の、接続された一連のマシン上でも）動作する２つ以上の任意のオペレーティングシステムの対話に適用できることは言うまでもない。
【００３５】
（１台のマシン上の複数のコンピューティング環境のためのユーザ入力）
ユーザが高信頼オペレーティングシステムを含むコンピュータシステム上のプログラムを操作する場合、ユーザはマウス１６１やキーボード１６２（図１を参照）などのユーザ入力装置を使用する。前述のように、ホストオペレーティングシステム１３４（１）上で動作するウィンドウシステムが入力イベントのストリームの行き先を制御できるようにすると、脆弱となった（ｃｏｍｐｒｏｍｉｓｅｄ）ホストオペレーティングシステムまたはアプリケーションを使用した攻撃が可能になる。したがって、入力イベントのストリームの行き先はネクサス１３４（２）上で動作する信頼できるユーザインターフェースエンジンにより制御する。コンピュータ１１０が動作できる２つのモードが確立される。この２つのモードは標準入力モード（ＳＩＭ）とネクサス入力モード（ＮＩＭ）である。
【００３６】
以下に詳述するが、一般に、ネクサス入力モードは、ユーザ入力がネクサスモードの処理を対象とすべき場合に使用し、標準入力モードは、ユーザ入力がネクサスモードの処理を対象としない場合に使用する。したがって、これらのモードを使用すると、ユーザ入力が、ネクサス１３４（２）に接続されたエンティティを対象とする場合に、誤ってホストオペレーティングシステム１３４（１）に接続されたエンティティに対して行われることがないという信頼レベルが得られる。このような対象の誤りを回避することで、ネクサス側のデータと処理のセキュリティを向上させることができる。ＳＩＭモードとＮＩＭモードを使用することによりネクサス１３４（２）への攻撃を妨げるので、これらのモードの制御を保護する必要がある。したがって、これらのモードをネクサス１３４（２）により制御するが、コンピュータシステム１１０内にセキュリティモニタが存在する場合はセキュリティモニタで制御してもよい。
【００３７】
一般に、標準入力モードでは、ユーザ入力イベントがネクサス内で暗号化されずに、ネクサスによって標準モードの入力パイプラインに渡される。この標準モードの入力パイプラインは、ホストオペレーティングシステム１３４（１）が、自身の使用のためと、このホストオペレーティングシステム１３４（１）の下で動作するアプリケーションの使用のためにユーザ入力イベントを引き込む入力パイプラインである。しかし、所定のユーザ入力イベントは、標準入力モードからネクサス入力モード（ＮＩＭ）への切り替えのトリガとなる。したがって、入力イベントが標準モードの入力パイプラインに渡される前に、ネクサス１３４（２）上で動作する処理がこのイベントを調べ、それがネクサス入力モードへの切り替えをトリガすべきイベントかどうかを判断する。
【００３８】
ネクサス入力モードへの切り替えをトリガするイベント以外に、なんらかのマウスまたは他のユーザ入力イベントは、ネクサスによって保持され、操作され、ＳＩＭの場合でも、ホスト側には渡されない。例えば、ウィンドウシステムを使用する場合、標準入力モードでは、非ネクサスのエンティティが所有する唯一のウィンドウがフォーカスをもつことができる。一実施形態では、ウィンドウシステムを使用する場合、マウスを使用してディスプレイ上のカーソルの動きを制御し、ネクサスは、ＮＩＭとＳＩＭの両方におけるネクサス側のアプリケーションまたは他のエンティティが制御するウィンドウ上のマウスの動作の追跡と表示を制御する。このような場合、つまり入力イベントがマウスの動作の場合、ＳＩＭでは、ネクサスからホスト側に渡される入力イベントに、ネクサスユーザインターフェース要素を使用する領域上でのマウスの動作は含まれない。
【００３９】
ネクサス入力モードでは、ユーザ入力イベントはネクサス空間、すなわちコンピュータシステム１１０において、ネクサス１３４（２）を含み、論理的なセパレーション２０２によってコンピュータシステム１１０の他の部分から分離された部分で処理される。このモードの間、標準モードの入力パイプラインは、ユーザ入力イベントを受け取らない。入力イベントは、ネクサス空間内の送り先のエンティティに渡されるか、ネクサス１３４（２）によりオペレーティングシステムの機能のために使用され、また、標準入力モードへの切り替えが起きるべきかどうかを判断するためにも使用される。
【００４０】
一実施形態では、ＮＩＭにおいてもホスト１３４（１）に渡されるいくつかの例外がある。例えば、キーボード上の表示灯に関するコマンド、ボリュームコントロールコマンド、および画面のコントラストと明るさのコマンドは、一実施形態ではホスト１３４（１）に渡される。しかし、別の実施形態では、コンピュータシステムがＮＩＭである場合、これらのコマンドは単純に無視される。
【００４１】
このように、コンピュータシステム１１０の入力モードは、図３に示す状態図で説明できる。図３は、本発明の一実施形態による入力モードを示す状態図である。標準入力モードの状態３００は、標準入力モードを表しており、このモードでは、イベントがネクサス入力モードの状態３１０への移行をトリガするイベントではないことが確認されてから、標準モードの入力パイプラインに渡される。ネクサス入力モードの状態３１０は、ネクサス入力モードを表しており、このモードでは、標準入力モードはユーザ入力イベントを受け取らない。
【００４２】
（入力モード間の移行）
一実施形態においては、ＳＩＭからＮＩＭへの移行３０２は、ユーザがネクサスユーザインターフェース要素を作動させたときに生じる。ウィンドウ環境（ｗｉｎｄｏｗｉｎｇ  ｃｏｎｔｅｘｔ）では、ユーザが、ネクサス空間内のエンティティが制御するウィンドウ上で選択またはクリックした場合に移行が起こる可能性がある。これは、ユーザのフォーカスがこのウィンドウに移動したことを示している。一実施形態では、ネクサス空間内のエンティティが制御するユーザインターフェース要素の各々について、対応する「シャドウ」がホスト側に保持される。このシャドウユーザインターフェース要素を選択すると（例えば、シャドウユーザインターフェース要素のタイトルバーをクリックすることにより）、ＮＩＭへの移行が行われ、フォーカスはネクサス側のエンティティが有している対応するユーザインターフェース要素に切り替わる。
【００４３】
仮定されるユーザの操作が行われる場合にも、ＳＩＭからＮＩＭへの移行が行われる。仮定されるユーザの操作とは、コンピュータシステム１１０の環境において、必ず特定の結果になるユーザの操作である。したがって、コンピュータシステム１１０がネクサス入力モードになるという結果となる仮定されるユーザの操作があってもよい。
【００４４】
以上に示す一実施形態によるＳＩＭの状態３００からＮＩＭの状態３１０への２通りの移行について、図４でさらに詳細に説明する。図４は、本発明の一実施形態による、さらに詳細な移行情報をもつ入力モードを示す状態図である。図４では、ユーザが、ネクサス空間のエンティティ４０２にフォーカスを当てるとＳＩＭからＮＩＭへの移行が行われることを示している。これは、仮定される操作の１つである。さらに、ユーザが他のＮＩＭで仮定される操作４０４、つまり必ずコンピュータがＮＩＭの状態になるように意図された操作を実行すると、ＳＩＭからＮＩＭへの移行が行われる。ＮＩＭの状態３１０にある間、ユーザがＮＩＭで仮定される操作を実行する可能性もある。この場合は、ＮＩＭで仮定される操作４０６で示すように、状態はＮＩＭの状態３１０のままである。ＮＩＭで仮定される操作は、例えばキーストロークの一組または組合せであってもよい。例えば、ユーザが「ｃｔｒｌ」キー、「ａｌｔ」キー、および「ｔａｂ」キーのすべてを同時に押下した場合は、この一連のキーストロークによってコンピュータシステム１１０が直ちにＮＩＭの状態３１０に切り替わることが保証される。
【００４５】
一実施形態において、キーストロークの組合せの結果としてこうした移行が行われる場合、ホスト側は受信したキーストローク情報を解決するモックアップユーザ入力データを受け取る。したがって、前述の＜ＣＴＲＬ＞＜ＡＬＴ＞＜ＴＡＢ＞の例を使用して、ホスト側がｃｔｒｌキーとａｌｔキーが押下されたという情報を受け取ると、ｔａｂキーが押されたときにＮＩＭの状態３１０への移行が行われ、さらにホスト側はｃｔｒｌキーとａｌｔキーが放されたことを示すモックアップユーザ入力を受け取る。こうして、ＮＩＭへの移行が行われると、ホスト側の入力追跡がフラッシュまたはリセットされる。同様に、ＳＩＭへの移行が行われると、ホスト側は入力装置の状態に関する情報（例えば、キーボード上で現在どのキーが押されているか）を受け取り、入力装置から到着するさらなる変更に適切に対応できるようにする。
【００４６】
もう一度図３を参照すると、ＮＩＭからＳＩＭへの移行３１２も規定している。一実施形態では、図４に示すように、ネクサス空間内のエンティティの高信頼性を可能にするために、ユーザがＳＩＭで仮定される操作４１２を実行することによりこの切り替えを特に要求した場合にのみ移行が行われる。ＮＩＭの状態３１０からＳＩＭの状態３１２への移行には２通りの方法があるが、逆方向の移行は１通りのみであることがわかる。一実施形態では、ユーザがネクサス空間のエンティティにフォーカスを当てた場合に起きるＳＩＭの状態３１２からＮＩＭの状態３１０への移行４０２と「対称」であるような、ＮＩＭの状態３１０からＳＩＭの状態３１２への移行は存在しない。さらに一般的には、もう一度図３を参照すると、一実施形態において、ＳＩＭからＮＩＭ３１０への移行は、ＮＩＭからＳＩＭ３１２への移行が起きる方法と完全に対称の方法で起きるわけではない。このことは、標準入力モードへの移行が偶然ではなく必ずコンピュータシステム１１０のユーザが意図的に起こさなければならないことを保証することによって、高いセキュリティを提供することになる。
【００４７】
別の実施形態では、ＳＩＭからＮＩＭへ切り替える別の方法がある。例えば、ネクサス内で実行するユーザモードの処理（「ネクサスエージェント」）がユーザの入力を要求する点に到達すると、ＳＩＭからＮＩＭへの移行が起きる。これでセキュリティを強化することができる。例えば、ネクサスエージェントがモニタ１９１（図１を参照）に機密情報を表示している場合に、モニタ上の機密情報を保持するためにときどきパスワードを要求するようにすることができる。ネクサスエージェントがＮＩＭへの移行を強制し、このようなデータを要求することができる場合、パスワードを受信しないときは、機密情報をモニタ１９１から削除し、要求される可能性のある他の任意の操作を実行することができる。ＮＩＭモードへの移行をトリガできる他のイベントは、パワーマネジメントイベントの受信である。パワーマネジメントイベントには、電源投入、電源切断、別の形式の電源（バッテリなど）への切り替え、休止などがある。
【００４８】
別の実施形態では、ＮＩＭからＳＩＭへ切り替える別の方法がある。例えば、ウィンドウシステムを使用する場合に、ネクサスエージェントにより所有された最後のウィンドウをユーザが閉じると、この時点でＮＩＭからＳＩＭへの移行が起きる。ＮＩＭは、ネクサスエージェントへの入力のみを許可するのに使用されるので、本実施形態では、任意のネクサスエージェントに関連するすべてのウィンドウが一度閉じると、コンピュータシステム１１０はＮＩＭの状態にある必要がなく、ＳＩＭに切り替わる。
【００４９】
（複数のコンピューティング環境における信頼できる入力のパス）
一実施形態では、マウス１６１やキーボード１６２（図１を参照）などのユーザ入力装置の一部またはすべてに暗号化をサポートすることができる。こうした暗号化装置によって入力装置とネクサスは安全な接続を確立でき、したがって、ハードウェアの攻撃を防止できる。一実施形態では、ＮＩＭモードとＳＩＭモードは、暗号化装置からの入力のみに適用される。それ以外の入力装置は暗号化されないかもしれないが、非暗号化ユーザ入力装置からの入力はホストシステムのためにのみ受け取られ、ネクサスまたはネクサス上で動作するエンティティのためには受け取られない。
【００５０】
図５は、本発明の一実施形態による、互いの対話と互いのセパレーションを維持する２つの例示的な実行環境を示すブロック図である。図５に示すように、信頼できる入力装置５００は、暗号化されたユーザ入力データをコンピュータシステム１１０に送信する。暗号化されたデータが、ホスト側のオペレーティングシステム１３４（１）内の入力スタック５０５に到着する。これは暗号化されているので、ホスト側のオペレーティングシステム１３４（１）では使用できず、ネクサス１３４（２）に渡される。図５では、ホスト側（論理的なセパレーション２０２の左側）とネクサス側（論理的なセパレーション２０２の右側）がさらにユーザレベル５１０とカーネルレベル５２０に分割されている。これらは、オペレーティングシステムにおけるユーザレベルの実行とカーネルレベルの実行の区別に対応する。ネクサス１３４（２）が暗号化されたユーザ入力データを受け取ると、このデータは入力の信頼できるサービスプロバイダ（ＴＳＰ：ｔｒｕｓｔｅｄ  ｓｅｒｖｉｃｅ  ｐｒｏｖｉｄｅｒ）５２５に渡され、暗号化されたユーザ入力データがここで復号化される。
【００５１】
次に、復号化されたデータが信頼できるユーザインターフェースエンジン（ＴＵＥ：ｔｒｕｓｔｅｄ  ｕｓｅｒ  ｉｎｔｅｒｆａｃｅ  ｅｎｇｉｎｅ）５３０、具体的には入力マネージャ５４０に渡される。信頼できる入力マネージャ５４０は、信頼できるウィンドウマネージャ（ＴＷｉｎＭｇｒ：ｔｒｕｓｔｅｄ  ｗｉｎｄｏｗ  ｍａｎａｇｅｒ）５４５と共同で入力モードの状態を追跡する。信頼できる入力マネージャ５４０とＴＷｉｎＭｇｒ５４５は、ユーザ入力データが移行イベントを示しているかどうかも追跡し、それに応じてユーザ入力モードを変更する。
【００５２】
前述の実施形態では、ネクサス側のユーザインターフェース要素のそれぞれについてホスト側のシャドウユーザインターフェース要素（シャドウウィンドウなど）が作成され、シャドウユーザインターフェース要素上でフォーカスイベントを受け取ると、ＴＷｉｎＭｇｒ５４５がこのイベントの通知を受け取る。そしてこれが、ＮＩＭへの切り替えを引き起こす。ＴＷｉｎＭｇｒ５４５は、ネクサス側のユーザインターフェース要素のウィンドウマネージャとして機能する。こうして、フォーカスを要求するネクサス側のウィンドウがＴＷｉｎＭｇｒ５４５に信号を送り、ＮＩＭへの切り替えが引き起こされる。
【００５３】
入力モードがＳＩＭの場合は、ほとんどのユーザ入力データ（前述のように）が矢印Ｃ５９０に示すように、入力スタック５０５に復元され、ホスト側で使用される。１つの例外は、ネクサス側のユーザインターフェース要素上のマウスの動作に関するデータである。ネクサス側のユーザインターフェース要素の表示は、信頼できる出力マネージャ（ＴＯＭ：ｔｒｕｓｔｅｄ  ｏｕｔｐｕｔ  ｍａｎａｇｅｒ）５５０によって処理されるので、矢印Ｂ５８０で示すようにネクサス側のユーザインターフェース要素上のマウスの動作がＴＯＭ５５０に渡される。これ以外の例外には、トリガイベントと前述のイベントがあり、これらのイベントは、ネクサス側の他の場所に渡すことができる。
【００５４】
入力モードがＮＩＭの場合は、信頼できる入力マネージャから正しい送り先のネクサスモードの処理にデータが渡される。これを矢印Ａ５７０で示す。これは、ネクサスエージェント５７５に送信されているユーザ入力データを示している。他のデータはネクサス側の他のエンティティに渡すことができる。前述のように、一実施形態では、例えばボリュームコントロールデータをホスト側に渡すことができる。
【００５５】
図６は、本発明の一実施形態による安全な実行環境のセキュリティを保持する方法を示す流れ図である。図６に示すように、ステップ６００で、ユーザ入力は信頼できる入力装置に受理される。これは直接的なパスでもよいが、例えば図５に示すような間接的なパスをとってもよい。ステップ６１０で、安全な実行環境が標準入力モードにあるかどうかを判断する。標準入力モードにある場合は、ステップ６２０でユーザ入力のうちの少なくとも第１の部分が第２の実行環境に転送される。
【００５６】
（結論）
以上の例は単に説明のために示されており、本発明に関し限定を付すものであると解釈されてはならないことに留意されたい。本発明を様々な実施形態に関連して説明してきたが、ここで使用した用語は説明と例示に関する用語であり、限定するものではないことは理解されよう。さらに、本発明を特定の手段、素材、実施形態に関連して説明してきたが、本発明はここに開示する詳細に限定する意図はない。むしろ本発明は、特許請求の範囲内にあるような、機能的に同等のあらゆる構造、方法、使用方法に拡張される。本明細書の示唆する利点を理解する当業者は、これに様々な変更を加えることができる。こうした変更は、本発明の態様において本発明の範囲と精神を逸脱することなく実施することができる。
【図面の簡単な説明】
【００５７】
【図１】本発明の態様を実施できる例示的なコンピューティング環境を示すブロック図である。
【図２】互いの対話と互いの分離を維持する２つの例示的な実行環境を示すブロック図である。
【図３】本発明の一実施形態による入力モードを示す状態図である。
【図４】本発明の一実施形態による、付加的移行情報を伴う入力モードを示す状態図である。
【図５】本発明の一実施形態による、互いの対話と互いの分離を維持する２つの例示的な実行環境を示すブロック図である。
【図６】本発明の一実施形態による安全な実行環境のセキュリティを保持する方法を示す流れ図である。
【符号の説明】
【００５８】
１００  コンピューティング環境
１１０  コンピュータ
１２０  処理装置
１２１  システムバス
１３０  システムメモリ
１３１  ＲＯＭ
１３２  ＲＡＭ
１３３  ＢＩＯＳ
１３４  オペレーティングシステム
１３５  アプリケーションプログラム
１３６  その他のプログラムモジュール
１３７  プログラムデータ
１４０  固定、不揮発性のメモリ用インターフェース
１４４  オペレーティングシステム
１４５  アプリケーションプログラム
１４６  その他のプログラムモジュール
１４７  プログラムデータ
１５０  取外し可能な不揮発性のメモリ用インターフェース
１６０  ユーザ入力インターフェース
１６１  マウス
１６２  キーボード
１７０  ネットワークインターフェース
１７１  ローカルエリアネットワーク（ＬＡＮ）
１７２  モデム
１７３  ワイドエリアネットワーク（ＷＡＮ）
１８０  リモートコンピュータ
１８５  リモートアプリケーションプログラム
１９０  ビデオインターフェース
１９１  モニタ
１９５  出力周辺インターフェース
１９６  プリンタ
１９７  スピーカ
５０５  入力スタック
５２５  入力ＴＳＰ
５３０  ＴＵＥ
５４０  信頼できる入力マネージャ
５４５  ＴＷｉｎＭｇｒ
５５０  ＴＯＭ
５７５  ネクサスエージェント
【図１】
0004607529.tif 000002
【図２】
0004607529.tif 000003
【図３】
0004607529.tif 000004
【図４】
0004607529.tif 000005
【図５】
0004607529.tif 000006
【図６】
0004607529.tif 000007