(57)【特許請求の範囲】
【請求項１】
セキュリティ保護された第１の実行環境およびセキュリティ保護されていない第２の実行環境を含むシステム上で、前記セキュリティ保護された第１の実行環境に安全なユーザインタフェースを提供するための方法であって、
ユーザ入力装置から暗号化されたユーザ入力を、前記第２の実行環境において受け付け、前記第１の実行環境に転送すること、
前記第１の実行環境において、前記暗号化されたユーザ入力を復号すること、
少なくとも１つのグラフィカルユーザ要素のうち、フォーカスを有するグラフィカルユーザ要素を決定すること、
前記フォーカスを有するグラフィカルユーザ要素を所有するプロセスが、前記第１の実行環境または前記第２の実行環境のいずれかに属するかを決定すること、
前記第２の実行環境に属する場合には、復号されたユーザ入力を前記第２の実行環境に転送すること、および、
前記第１の実行環境に属する場合には、前記復号されたユーザ入力の前記第１の実行環境内の特定の宛先エンティティを決定し、前記復号されたユーザ入力を前記特定の宛先エンティティに転送すること
を備えたことを特徴とする方法。
【請求項２】
前記ユーザ入力装置から暗号化されたユーザ入力を受け付けることは、安全な通信チャネルを確立して、前記ユーザ入力を受け付けることを備えたことを特徴とする請求項１に記載の方法。
【請求項３】
前記ユーザ入力装置から暗号化されたユーザ入力を受け付けることは、前記ユーザ入力を確認することを備えたことを特徴とする請求項１に記載の方法。
【請求項４】
前記復号されたユーザ入力を前記特定の宛先エンティティに転送することは、前記復号されたユーザ入力を解釈することを備えたことを特徴とする請求項１に記載の方法。
【請求項５】
前記セキュリティ保護された第１の実行環境内の特定のソースエンティティからの出力データを、前記第１の実行環境内において受け付けること、および、
前記出力データを暗号化し、該暗号化された出力データを出力装置に転送することを備えたことを特徴とする請求項１に記載の方法。
【請求項６】
前記セキュリティ保護された第１の実行環境内の特定のソースエンティティからの出力データを、前記第１の実行環境内において受け付けること、および、
前記出力データを隠されたメモリに転送することを備えたことを特徴とする請求項１に記載の方法。
【請求項７】
セキュリティ保護された第１の実行環境およびセキュリティ保護されていない第２の実行環境を含むシステム上で、前記セキュリティ保護された第１の実行環境に安全なユーザインタフェースを提供するためのコンピュータ実行可能命令を含むコンピュータ読取り可能記録媒体であって、前記コンピュータ実行可能命令は、
ユーザ入力装置から暗号化されたユーザ入力を、前記第２の実行環境において受け付け、前記第１の実行環境に転送すること、
前記第１の実行環境において、前記暗号化されたユーザ入力を復号すること、
少なくとも１つのグラフィカルユーザ要素のうち、フォーカスを有するグラフィカルユーザ要素を決定すること、
前記フォーカスを有するグラフィカルユーザ要素を所有するプロセスが、前記第１の実行環境または前記第２の実行環境のいずれかに属するかを決定すること、
前記第２の実行環境に属する場合には、復号されたユーザ入力を前記第２の実行環境に転送すること、および、
前記第１の実行環境に属する場合には、前記復号されたユーザ入力の前記第１の実行環境内の特定の宛先エンティティを決定し、前記復号されたユーザ入力を前記特定の宛先エンティティに転送すること
を備えた動作を実行することを特徴とするコンピュータ読取り可能記録媒体。
【請求項８】
前記ユーザ入力装置から暗号化されたユーザ入力を受け付けることは、安全な通信チャネルを確立して、前記ユーザ入力を受け付けることを備えたことを特徴とする請求項７に記載のコンピュータ読取り可能記録媒体。
【請求項９】
前記ユーザ入力装置から暗号化されたユーザ入力を受け付けることは、前記ユーザ入力を確認することを備えたことを特徴とする請求項７に記載のコンピュータ読取り可能記録媒体。
【請求項１０】
前記復号されたユーザ入力を前記特定の宛先エンティティに転送することは、前記復号されたユーザ入力を解釈することを備えたことを特徴とする請求項７に記載のコンピュータ読取り可能記録媒体。
【請求項１１】
前記コンピュータ実行可能命令は、
前記セキュリティ保護された第１の実行環境内の特定のソースエンティティからの出力データを、前記第１の実行環境内において受け付けること、および、
前記出力データを暗号化し、該暗号化された出力データを出力装置に転送することを備えたことを特徴とする請求項７に記載のコンピュータ読取り可能記録媒体。
【請求項１２】
前記コンピュータ実行可能命令は、
前記セキュリティ保護された第１の実行環境内の特定のソースエンティティからの出力データを、前記第１の実行環境内において受け付けること、および、
前記出力データを隠されたメモリに転送することを備えたことを特徴とする請求項７に記載のコンピュータ読取り可能記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般的には、コンピュータセキュリティの分野に関する。より具体的には、本発明は、単一のコンピューティング装置上で、複数の実行環境（オペレーティングシステムなど）を使用することに関し、また複数の実行環境のうちのより高い保証の実行環境内で、信頼できるエージェントへのデータ入出力の保全を可能にする技術を提供する。
【背景技術】
【０００２】
現代のコンピューティングでは、コンピュータ上で実施され得る多くのタスクが、何らかのセキュリティレベルを必要とする。セキュリティレベルを提供するためには、複数の選択肢がある。１つは、多分安全でないあらゆる要素から完全に分離されたコンピュータ上のすべて安全なアプリケーションを実行すること、または単一のコンピュータシステム上で実行される２つの実行環境（オペレーティングシステムなど）を完全に分離することができる、仮想マシンモニタ（ＶＭＭ：virtual machine monitor）を使用することである。しかし、これは、非実用的な可能性がある。コストまたは利便性のために、安全な実行環境が、セキュリティが保証されていないアプリケーションと、リソースを共有することを求められることがあり、またこうしたアプリケーションおよびリソースは、攻撃を受けやすいことがある。さらに、ＶＭＭが使用される場合、ＶＭＭには、マシンおよび装置のすべての仮想化が必要である（したがって、あらゆる可能な装置について、ＶＶＭがそれ自体の装置ドライバを提供することが求められる）ので、ＶＭＭは、ほとんど無制限の様々な装置をマシンに追加することができるオープンアーキテクチャのマシンには適さない。
【０００３】
２つの実行環境でリソースを共有する能力をもたらす１つのやり方は、マシン上のほとんどのプロセスおよび装置を制御する、１つの「メインの」オペレーティングシステムがあり、また第２のオペレーティングシステムが存在するコンピュータシステムを提供することである。この第２のオペレーティングシステムは、小さな、限定目的のオペレーティングシステムであり、それとともに一部の限られたタスクを実施するメインオペレーティングシステムがある。オペレーティングシステムを「小さな」または「限定目的」にする１つのやり方は、その小さいオペレーティングシステムが、特定のインフラストラクチャ（スケジュール管理、メモリマネージャ、装置ドライバなど）を、「メイン」オペレーティングシステムから借りられるようにすることである。ＶＭＭは、オペレーティングシステムを事実上互いに切り離すので、ＶＭＭを使用した、こうしたインフラストラクチャの共有は、実用的ではない。
【０００４】
他の特定の技術は、ＶＭＭを使用せずに、オペレーティングシステムが同じマシン上で並列に存在することを可能にする。こうした１つの技術は、あるオペレーティングシステムに、他のオペレーティングシステムの「ホスト」の働きをさせることである（「ホスト」がホストしているオペレーティングシステムは、しばしば、「ゲスト」と称される）。この場合、ホストオペレーティングシステムは、ゲストに、メモリやプロセッサ時間などのリソースを提供する。別のこうした技術は、「外部カーネル（ｅｘｏｋｅｒｎｅｌ）」の使用である。外部カーネルは、特定の装置（プロセッサやメモリなど）を管理し、オペレーティングシステム間の特定の型の対話をも管理するが、外部カーネルは、ＶＭＭとは異なって、マシン全体を仮想化しない。外部カーネルを使用する場合でも、外部カーネルは、あるオペレーティングシステム（「メイン」オペレーティングシステムなど）が他のオペレーティングシステムのために、大部分のインフラストラクチャを提供する場合がある。この場合、メインオペレーティングシステムは、やはり「ホスト」と称され、また小さいオペレーティングシステムを、「ゲスト」と称することができる。ホスティングモデルと外部カーネルモデルの両方が、インフラストラクチャの共有をサポートするオペレーティングシステム間の有用な型の対話を可能にする。
【０００５】
したがって、こうした技術を使用して、少なくとも２つの実行環境を含むコンピュータシステムを提供することができる。これらの１つは、「高い保証」のオペレーティングシステムであり、本明細書では、「ネクサス（nexus）」と称される。高い保証のオペレーティングシステムは、その動作に関して、ある保証レベルを提供するオペレーティングシステムである。例えば、ネクサスを使用して、ネクサスの外部に情報を漏洩しないことが保証された、隠されたメモリ（curtained memory）を提供し、また認証された特定のアプリケーションだけが、ネクサス上で実行され、隠されたメモリにアクセスできるようにすることによって、漏洩されるべきでない秘密の情報（暗号鍵など）を扱うことができる。
【０００６】
１つがネクサスである、２つの実行環境を含むコンピュータシステムでは、ネクサスが、ゲストオペレーティングシステムであり、動作に関して同じ保証レベルの対象でない第２のオペレーティングシステムが、ホストオペレーティングシステムであることが望ましいことがある。これによってネクサスを、できるだけ小さくすることができる。ネクサスが小さいことによって、ネクサスによって提供される保証の信頼レベルが高くなる。
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、ネクサスの高い保証の性質には、ネクサス上で実行されるプロセスへの入出力の高い保証が必要であり、ホストオペレーティングシステムからのプロセスまたは他のエンティティが、ユーザによって入力されるデータ、あるいはユーザに表示または出力されるデータを読み出しまたは変更しないようにする。しかし、そのプロセスのために、ホストオペレーティングシステムが入出力を処理し、ネクサスに情報を中継できるようにすると、ネクサスの高保証の性質が危険にさらされる。さらに、入力は、その入力を暗号化する信頼できるユーザ入力装置からのものであることがあり、ホストに漏洩されるべきでないネクサス内で保持される秘密を使用して、そのデータを復号することが必要となる場合がある。
【０００８】
ユーザに表示されるグラフィカルユーザインタフェース要素上のユーザイベントを、レンダリングし検出し処理するなど、入出力（Ｉ／Ｏ：input/output）機能は、しばしば、すべてのプロセスに共通のリソースによって提供される。しかし、ホストオペレーティングシステムにこの機能を設けるには、レンダリングされるデータが、レンダリングのためにホストに渡される必要がある。レンダリングのために送られるデータが、そのデータへのアクセスを有するべきでないホスト側のエンティティによって読み出されまたは変更される場合があるので、これによって、レンダリングのためにデータを渡すプロセスの高保証の性質に対して攻撃を行う可能な手段がもたらされる。ユーザイベントが発生したという通知にも、同じ脆弱性が存在する。
【０００９】
上記の内容に鑑みて、従来技術の欠点を克服するシステムが求められている。
【課題を解決するための手段】
【００１０】
信頼できるＵＩエンジンを使用して、セキュリティ保護された実行環境および第２の実行環境を含むシステムにおいて、セキュリティ保護された実行環境のセキュリティが維持される。信頼できるＵＩエンジンは、セキュリティ保護された実行環境への入力、およびセキュリティ保護された実行環境内のプロセスからの表示または出力装置への出力を裁定する。
【００１１】
一実施形態では、信頼できるＵＩエンジンの１つのコンポーネントは、信頼できる入力マネージャである。信頼できる入力装置から、暗号化された入力が届くと、信頼できる入力マネージャは、その入力を復号する。次いで、その入力がセキュリティ保護された実行環境にとどまるべきか、それとも第２の実行環境に送信されるべきかを判断する。セキュリティ保護されたユーザ環境で判断が行われた後に初めて、暗号化された入力が、第２の実行環境に渡される。
【００１２】
信頼できるＵＩエンジンの１つのコンポーネントは、信頼できる出力マネージャである。出力のセキュリティを提供するために、信頼できる出力マネージャは、セキュリティ保護された実行環境内のすべてのエンティティのための、出力装置とのコンタクトポイントとして機能する。
【００１３】
本発明の他の特徴について、以下に述べる。
【００１４】
上記の要約、および好ましい実施形態についての以下の詳細な説明を、添付の図面とともに読めば、よりよく理解される。本発明を例示するため、図面に、本発明の例示的な構成が示されている。しかし、本発明は、開示する特定の方法および手段に限定されない。
【発明を実施するための最良の形態】
【００１５】
（概要）
オペレーティングシステムなどの２つの実行環境が、単一のマシン上で、並列に実行されている場合、ユーザ入力および出力がオペレーティングシステムによってどのようにアクセスされるべきかが判断されなければならない。さらに、オペレーティングシステムのうちの１つは、第２のオペレーティングシステムまたは第２のオペレーティングシステム上で実行されるエンティティへのユーザ入力、またはそこからの出力にアクセスされないように、保護される必要がある。本発明は、ネクサス上の高い保証のエンティティに向けたまたはそこから発生するユーザ入出力を、ホストオペレーティングシステムのエンティティによる可能な検出から保護することができる技術を提供する。
【００１６】
（例示的なコンピューティング構成）
図１に、本発明の態様を実施することができる、例示的なコンピューティング環境を示す。コンピューティングシステム環境１００は、適したコンピューティング環境の一例にすぎず、本発明の使用または機能の範囲に関するどんな制限をも示唆するためのものではない。コンピューティング環境１００は、例示的なオペレーティング環境１００内に示されたコンポーネントのいずれか１つまたは組合せに関する、いずれかの依存関係または要件を有すると解釈すべきでない。
【００１７】
本発明は、他の多くの汎用または特定目的のコンピューティングシステム環境または構成で使用することができる。本発明で使用するのに適し得る周知のコンピューティングシステム、環境および／または構成は、これだけに限らないが、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルドまたはラップトップ装置、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラマブルな家電品、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータ、埋め込みシステム、上記システムまたは装置のいずれかを含む分散コンピューティング環境などを含む。
【００１８】
本発明について、コンピュータによって実行されるプロセッサモジュールなどの、コンピュータ実行可能命令の一般的な文脈で説明することができる。一般に、プログラムモジュールは、特定のタスクを実施し、または特定の抽象データ型を実装する、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造体などを含む。本発明は、タスクが、通信ネットワークまたは他のデータ伝送媒体を介してリンクされたリモート処理装置によって実施される、分散コンピューティング環境で実施することもできる。分散コンピューティング環境では、プログラムモジュールおよび他のデータは、メモリ記憶装置を含めて、ローカルとリモートの両方のコンピュータ記憶媒体内に置くことができる。
【００１９】
図１を参照すると、本発明を実施するための例示的なシステムが、コンピュータ１１０の形態の汎用コンピューティング装置を含んでいる。コンピュータ１１０のコンポーネントは、それだけに限らないが、処理装置１２０、システムメモリ１３０、およびシステムメモリを含めて、様々なシステムコンポーネントを処理装置１２０に結合するシステムバス１２１を含み得る。処理装置１２０は、マルチスレッドプロセッサ上でサポートされるものなど、複数の論理処理装置であり得る。システムバス１２１を、メモリバスまたはメモリコントローラ、周辺バス、および様々なバスアーキテクチャのいずれかを使用するローカルバスを含めて、いくつかの種類のバス構造のいずれかとすることができる。限定のためではなく、例示すると、こうしたアーキテクチャは、ＩＳＡ（Industry Standard Architecture）バス、ＭＣＡ（Micro Channel Architecture）バス、ＥＩＳＡ（Enhanced ISA）、ＶＥＳＡ（Video Electronics Standards Association）ローカルバス、および（メザニンバスとも称される）ＰＣＩ（Peripheral Component Interconnect）バスを含む。システムバス１２１は、通信装置では、２地点間接続、スイッチファブリックなどとして実装することもできる。
【００２０】
コンピュータ１１０は一般に、様々なコンピュータ読取り可能媒体を含む。コンピュータ読取り可能媒体は、コンピュータ１１０によってアクセスできる任意の使用可能媒体とすることができ、揮発性と不揮発性の両方の媒体、取外し可能と取外し不可能の両方の媒体を含む。限定のためではなく、例示すると、コンピュータ読取り可能媒体は、コンピュータ記憶媒体および通信媒体を含み得る。コンピュータ記憶媒体は、コンピュータ読取り可能命令、データ構造体、プログラムモジュールまたは他のデータなどの情報を格納するための任意の方法または技術で実装される、揮発性と不揮発性の両方、取外し可能と取外し不可能の両方の媒体を含む。コンピュータ記憶媒体は、それだけに限らないが、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリ、または他のメモリ技術、ＣＤ−ＲＯＭ、ＤＶＤまたは他の光ディスク記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置または他の磁気記憶装置、あるいは所望の情報を格納するために使用することができ、コンピュータ１１０によってアクセスすることができる他の任意の媒体を含む。通信媒体は一般に、コンピュータ読取り可能命令、データ構造体、プログラムモジュール、または搬送波や他のトランスポート機構などの変調されたデータ信号の形の他のデータを実装し、また任意の情報送達媒体を含む。用語「変調されたデータ信号」は、情報を信号に符号化するようなやり方で、１または複数の特性が設定され、または変更される信号を意味する。限定のためではなく、例示すると、通信媒体は、有線ネットワークまたは直接有線接続などの有線媒体、ならびに音響、ＲＦ、赤外線などの無線媒体、および他の無線媒体を含む。上記内容のいずれの組合せもまた、コンピュータ読取り可能媒体の範囲内に含められるべきである。
【００２１】
システムメモリ１３０は、ＲＯＭ（read only memory）１３１およびＲＡＭ（random access memory）１３２など、揮発性および／または不揮発性メモリの形のコンピュータ記憶媒体を含む。起動時などに、コンピュータ１１０内の要素間で情報を転送する助けとなる基本ルーチンを含む、ＢＩＯＳ（basic input/output system）１３３は、典型的には、ＲＯＭ１３１に格納される。ＲＡＭ１３２は、典型的には、処理装置１２０によって直接にアクセス可能であり、および／またはそれによる操作を現在受けているデータおよび／またはプログラムモジュールを含む。限定ではなく、例示するため、図１に、オペレーティングシステム１３４、アプリケーションプログラム１３５、他のプログラムモジュール１３６、およびプログラムデータ１３７を示す。
【００２２】
コンピュータ１１０は、他の取外し可能／取外し不可能、揮発性／不揮発性のコンピュータ記憶媒体を含むことができる。例示するためだけに、図１に、取外し不可能な不揮発性の磁気媒体から読み出しまたはそこに書き込むハードディスクドライブ１４０、取外し可能な不揮発性の磁気ディスク１５２から読み出しまたはそこに書き込む磁気ディスクドライブ１５１、およびＣＤ−ＲＯＭや他の光媒体などの取外し可能な不揮発性の光ディスク１５６から読み出しまたはそこに書き込む光ディスクドライブ１５５を示す。例示的なオペレーティング環境で使用することができる、他の取外し可能／取外し不可能、揮発性／不揮発性のコンピュータ記憶媒体には、それだけに限らないが、磁気テープカセット、フラッシュメモリカード、デジタル多用途ディスク、デジタルビデオテープ、ソリッドステートＲＡＭ、ソリッドステートＲＯＭなどが含まれる。ハードディスクドライブ１４１は一般に、インタフェース１４０などの取外し不可能なメモリインタフェースを介してシステムバス１２１に接続され、磁気ディスクドライブ１５１および光ディスクドライブ１５５は一般に、インタフェース１５０などの取外し可能メモリインタフェースによって、システムバス１２１に接続される。
【００２３】
上述し、また図１で示した、ドライブおよびその関連のコンピュータ記憶媒体によって、コンピュータ読取り可能命令、データ構造体、プログラムモジュール、およびコンピュータ１１０のその他のデータの記憶域がもたらされる。図１に、例えば、ハードディスクドライブ１４１は、オペレーティングシステム１４４、アプリケーションプログラム１４５、他のプログラムモジュール１４６およびプログラムデータ１４７を格納するように示されている。こうしたコンポーネントは、オペレーティングシステム１３４、アプリケーションプログラム１３５、他のプログラムモジュール１３６およびプログラムデータ１３７と同じでも、それとは異なっていてもよいことに留意されたい。少なくともそれらが異なるコピーであること示すために、オペレーティングシステム１４４、アプリケーションプログラム１４５、他のプログラムモジュール１４６およびプログラムデータ１４７に、ここでは異なる番号を付与してある。ユーザは、キーボード１６２、およびマウス、トラックボール、またはタッチパッドと一般に称されるポインティング装置１６１などの入力装置を介して、コンピュータ２０にコマンドおよび情報を入力することができる。他の入力装置（図示せず）には、マイク、ジョイスティック、ゲームパッド、パラボラアンテナ、スキャナなどが含まれ得る。これらのおよび他の入力装置は、しばしば、システムバスに結合されるユーザ入力インタフェース１６０を介して処理装置１２０に接続されるが、パラレルポート、ゲームポートまたはＵＳＢ（universal serial bus）など、他のインタフェースおよびバス構造によって接続することもできる。モニタ１９１または他のタイプのディスプレイ装置もまた、ビデオインタフェース１９０などのインタフェースを介してシステムバス１２１に接続される。モニタに加え、コンピュータは、出力周辺インタフェース１９５を介して接続され得る、スピーカ１９７およびプリンタ１９６などの他の周辺出力装置をも含み得る。
【００２４】
コンピュータ１１０は、リモートコンピュータ１８０など、１または複数のリモートコンピュータへの論理接続を使用して、ネットワーク化された環境で動作することができる。リモートコンピュータ１８０は、パーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ピアデバイスまたは他の一般のネットワークノードとすることができ、図１には、メモリ記憶装置１８１だけが示されているが、コンピュータ１１０に関して上記で述べた要素の多数またはすべてを一般に含む。図１に示す論理接続は、ＬＡＮ（local area network）１７１、およびＷＡＮ（wide area network）１７３を含むが、他のネットワークを含むこともできる。こうしたネットワーキング環境は、オフィス、企業規模のコンピュータネットワーク、イントラネットおよびインターネットでは、一般的なものである。
【００２５】
ＬＡＮネットワーキング環境で使用される場合、コンピュータ１１０は、ネットワークインタフェースまたはアダプタ１７０を介してＬＡＮ１７１に接続される。ＷＡＮネットワーキング環境で使用される場合、コンピュータ１１０は、典型的には、モデム１７２、またはインターネットなどのＷＡＮ１７３を介して通信を確立する他の手段を含む。モデム１７２は、内部にあっても、外部にあってもよく、ユーザ入力インタフェース１６０または他の適切な機構を介してシステムバス１２１に接続することができる。ネットワーク化された環境では、コンピュータ１１０に関して示したプログラムモジュール、またはその一部を、リモートメモリ記憶装置に格納することができる。限定ではなく、例示するため、図１に、メモリ装置１８１内に常駐する、リモートアプリケーションプログラム１８５を示す。図示するネットワーク接続は、例示的なものであり、コンピュータ間の通信接続を確立する他の手段が使用され得ることが理解されよう。
【００２６】
（単一マシン上の複数のコンピューティング環境）
上述したように、２つのオペレーティングシステムが、単一のマシン上で、並列に動作できることが知られている。本発明が取り組む第１の問題は、２つのオペレーティングシステム間のあるレベルの相互作用を依然として提供しながら、２つのオペレーティングシステム間のあるレベルの分離をどのように提供するかである。
【００２７】
図２に、単一のコンピュータシステム１１０上で、２つのオペレーティングシステム１３４（１）および１３４（２）が実行されるシステムを示す。オペレーティングシステム１３４（１）と１３４（２）間で、ある程度の対話２０４は許容されるが、オペレーティングシステムのうちの少なくとも１つを、他のオペレーティングシステムで発生するイベントから依然として保護することができるように、オペレーティングシステム１３４（１）と１３４（２）の間に、ある種の論理的分離２０２が存在する。図２の例では、オペレーティングシステム１３４（１）は、ホストオペレーティングシステムであり、オペレーティングシステム１３４（２）は、前述の「ネクサス」などのゲストオペレーティングシステムである、上述したように、オペレーティングシステム１３４（２）がネクサスである場合は、分離２０２を構築することが望まく、オペレーティングシステム１３４（２）は、オペレーティングシステム１３４（１）のインフラストラクチャを借用するために、オペレーティングシステム１３４（１）と対話することができるが、オペレーティングシステム１３４（１）で発生し、またオペレーティングシステム１３４（２）にその動作仕様に反するやり方で動作させる動作（悪意のあるもの、悪意のないものいずれでも）から、オペレーティングシステム１３４（２）を依然として守ることができるようする。（しかし、本発明は、オペレーティングシステム１３４（２）がネクサスである場合に限定されないことが理解されよう。）
【００２８】
オペレーティングシステム１３４（１）とオペレーティングシステム１３４（２）の間の分離２０２は、任意選択で、セキュリティモニタを用いて実施することができる。セキュリティモニタは、オペレーティングシステム１３４（１）と１３４（２）の両方の外部にあるコンポーネントであり、オペレーティングシステム１３４（２）をオペレーティングシステム１３４（１）から保護するために使用され、何らかのセキュリティサービスを提供することができる。例えば、セキュリティモニタは、特定のハードウェアへのアクセスを制御することができ、（オペレーティングシステム１３４（２）に、メモリの一部を専用させるために）メモリの使用を管理することができ、あるいはオペレーティングシステム１３４（１）からオペレーティングシステム１３４（２）へのデータの通信を、安全なやり方で容易にすることができる。セキュリティモニタの使用は、オペレーティングシステム１３４（２）がオペレーティングシステム１３４（１）からどのように保護され得るかについての１つのモデルであるが、セキュリティモニタの使用は必須ではないことに留意されたい。別の例として、オペレーティングシステム１３４（２）は、オペレーティングシステム１３４（１）から自衛するために必要なすべての機能を含むことができる。
【００２９】
図２で、オペレーティングシステム１３４（１）が「ホスト」として、またオペレーティングシステム１３４（２）が「ゲスト」として示されていることに留意されたい。一般に、この特徴付けは、こうした例では、オペレーティングシステム１３４（１）は、オペレーティングシステム１３４（１）と１３４（２）の両方によって使用される、オペレーティングシステムの特定のインフラストラクチャ（装置ドライバ、スケジューリングなど）を提供し、オペレーティングシステム１３４（２）は、このインフラストラクチャが欠如しているが、好ましくは、オペレーティングシステム１３４（１）のインフラストラクチャを使用するという意味で、「ゲスト」であるという事実に言及する。しかし、オペレーティングシステムを「ホスト」または「ゲスト」にする条件は、柔軟であることに留意されたい。さらに、「ホスト」および「ゲスト」オペレーティングシステムの従来の概念では、ホストがゲストのアクションから自衛する必要があると想定されていることに留意されたい。しかし、図２の例では、ゲストオペレーティングシステム１３４（２）が、オペレーティングシステム１３４（１）から身を守る必要がある高い保証のオペレーティングシステムであると想定されている。以下の諸例では、それらを区別するために、オペレーティングシステム１３４（１）を「ホスト」と称し、オペレーティングシステム１３４（２）を「ゲスト」または「ネクサス」と一般的に称する。本明細書で述べる技術は、同じマシン（さらには同じ１組の接続されたマシン）上で実行される任意の複数のオペレーティングシステムの対話に適用され得ることを理解されたい。
【００３０】
（信頼できるエージェントへの安全な入出力）
ネクサス、およびネクサス上で実行されるプロセスに、安全な入出力を提供するために、ネクサス側に、信頼できるユーザインタフェース（ＵＩ）エンジンモジュールが設けられる。信頼できるＵＩエンジンは、信頼できるエージェントのために、安全な入出力機能の共通リソースを提供する。
【００３１】
ユーザ入力の高い保証を提供するために、ＵＩエンジンは、信頼できるユーザ入力を受け入れる。ユーザ入力のセキュリティは、入力を暗号化することによって確保される。他の実施形態では、ユーザ入力のセキュリティが、電子署名などの他の確認手段によって確認され、または安全な信頼できるハードウェアなどの他の手段によって保証される。信頼できるＵＩエンジンは、信頼できる入力マネージャを含み、次いで、この入力マネージャは、ユーザ入力の適切な宛先を判断する。場合によっては、ユーザ入力は、ホスト側で使用されるべきである。このような場合、ユーザ入力は、ホストオペレーティングシステムのために、ホスト側の入力スタックに置かれる。しかし、場合によっては、ユーザ入力は、高い保証のものであり、信頼された入力マネージャによって、適切な宛先に、例えばネクサスに向けられる。
【００３２】
出力の高い保証を提供するために、信頼できるＵＩエンジンは、エージェントおよび他のプロセスから信頼された出力マネージャへの信頼できる出力を受け付ける。信頼できる出力マネージャは、この信頼できる出力を受信し、コンピュータシステム１１０がネクサスのために、どのように信頼できる出力を提供するかに基づく装置に依存したやり方で、信頼された出力の表示を処理する。ある実施形態では、暗号化されたメモリを使用して、専用の表示領域を示す。この暗号化されたメモリが、ホスト側に渡される。メモリが暗号化されているので、ホスト側は、メモリを復号することができず、専用表示領域については、偽の内容を作成する。別の実施形態では、隠されたメモリが、そのメモリ用に埋め込まれたビデオアダプタと共に使用される。信頼できる出力マネージャは、ネクサスのエージェントが、装置に依存しないやり方で、表示データを出力できるようにする。出力は、視覚出力として一般的に説明しているが、信頼できる出力マネージャの使用、および本明細書で述べる技術は、任意のタイプの信頼できる出力（オーディオ、プリンタまたは他の出力など）に適用することができ、本発明は、視覚出力に限定されないことを理解されたい。
【００３３】
（信頼できるＵＩエンジンの安全な入力機能）
入力に関して、本発明のある実施形態によれば、信頼できるＵＩエンジンは、信頼できる入力へのアクセスを制御する。ユーザが、高保証のオペレーティングシステムを含むコンピュータシステム上のプログラムと対話する場合、ユーザは、マウス１６１やキーボード１６２（図１）などのユーザ入力装置を用いてそれを行う。ある実施形態では、一部またはすべてのユーザ入力装置が、暗号化をサポートすることができる。こうした暗号化機能付きの装置によって、入力装置およびネクサスは、安全な接続を確立することができ、したがって、ハードウェア攻撃を回避することができる。暗号化されない他の入力装置も存在することができるが、暗号化されないユーザ入力装置からの入力は、ネクサスまたはネクサス上で実行されるエンティティのためではなく、ホストシステムのためだけに受け付けられる。
【００３４】
したがって、安全な入力を提供するために、信頼できるＵＩエンジン、および非ホスト側エンティティは、ユーザ入力の少なくとも１つのストリームの初期フローを制御する。図３は、本発明の一実施形態による入力を示す、２つの実行環境を含むコンピュータシステムのブロック図である。図３に示すように、信頼できる入力装置３００は、コンピュータシステム１１０に、暗号化されたユーザ入力データを送信する。暗号化されたデータは、ホスト側オペレーティングシステム１３４（１）の入力スタック３０５に届く。それは、暗号化されているので、ホスト側オペレーティングシステム１３４（１）によって使用することができない。したがって、それは、ホスト側での可能な攻撃から保護される。暗号化されたデータは、ネクサス１３４（２）に渡される。
【００３５】
図３では、ホスト側（論理的分離２０２の左側）とネクサス側（論理的分離２０２の右側）の両方がさらに、ユーザレベル３１０およびカーネルレベル３２０に分割されている。これらは、オペレーティングシステムのユーザレベルとカーネルレベル実行の区別に対応する。ネクサス１３４（２）が暗号化されたユーザ入力データを受信すると、それが、入力用の信頼できるサービスプロバイダ（ＴＳＰ：trusted service provider）３２５に渡され、このＴＳＰで、暗号化されたユーザ入力データが復号される。実施形態によっては、安全な入力装置３００は、コンピュータシステム１１０と通信するために、例えば共有された秘密および確認を用いて、通信チャネルを確立しなければならない。安全な入力装置３００との通信チャネルが必要である場合、ＴＳＰ３２５は、安全な入力装置との通信チャネルを確立し管理する。別の実施形態では、ユーザ入力を確認することができ、ＴＳＰ３２５は、例えばユーザ入力データのデジタル署名を確認することによって、ユーザ入力データの確認を提供する。
【００３６】
次いで、復号されたユーザ入力データは、信頼できるユーザインタフェース（ＵＩ）エンジン（ＴＵＥ：trusted user interface engine）に、具体的には信頼できる入力マネージャ３４０に渡される。ユーザ入力がホスト側に向けられるべきか、それともネクサス、またはネクサスエージェント３７５などのネクサスのエージェントに向けたものであるかの判断が、信頼できる入力マネージャによって行われる。入力がホスト側で使用するためのものであれば、ホスト側で使用するために、矢印Ｃ３９０で示すように、入力スタック３０５に向けられる。したがって、ネクサス側で判断が行われた後に初めて、復号された入力データがホスト側に届く。
【００３７】
ある実施形態では、コンピュータシステム１１０は、ユーザに、ウィンドウ、ダイアログボックス、およびアイコンなどのグラフィカルユーザインタフェース要素が並べられた、ウィンドウインタフェース環境を提示する。グラフィカルユーザインタフェース要素は、ホスト側のプロセスに関連付けられ、またはそれによって「所有される」ことができ、あるいはネクサス側のプロセスに関連付けられる。ウィンドウシステムを使用する場合、ユーザのディスプレイに、アプリケーションからの情報を表示する画面上の領域であるウィンドウが並べられる。アプリケーションは、１または複数のウィンドウを有することができる。表示されるすべてのウィンドウのうちの１つのウィンドウに、フォーカスがある。このフォーカスウィンドウを、例えばウィンドウの周りの枠が他とは異なることによって示すことができる。
【００３８】
従来のウィンドウシステムは、あるウィンドウにフォーカスがあるとき、そのウィンドウは、一般に、ユーザが入力する対象である。したがって、ユーザがキーボードを使用して情報を入力すると、多くの場合、キー入力のデータが、オペレーティングシステムによって、フォーカスがあるウィンドウを所有するアプリケーションに送信される。一部のキー入力および他の入力操作は、フォーカスがあるウィンドウを所有するアプリケーションに送信されない場合がある。例えば、ウィンドウシステムによっては、すべてのウィンドウを最小化するキー入力コマンドがある。こうしたコマンドは、ウィンドウシステムによって処理され、フォーカスがあるウィンドウを所有するアプリケーションには送信されない。フォーカスがあるウィンドウを所有するアプリケーションは、ウィンドウの最小化についての通知を受信することができる。しかし、ユーザのキー入力は、フォーカスがあるウィンドウを所有するアプリケーションではなく、ウィンドウシステムのためのものであり、そのアプリケーションには送信されない。
【００３９】
一実施形態では、信頼できるＵＩエンジンが，信頼できるウィンドウマネージャ（TWinMgr）３４５を含む。この信頼できるウィンドウマネージャ３４５は、ネクサス側のウィンドウおよびウィンドウの動作を管理する。信頼できるウィンドウマネージャ３４５は、信頼できる入力マネージャ３４０と連携して働いて、ユーザ入力がどこに渡されるべきかを判断する。ある実施形態では、この判断は、少なくとも一部は、フォーカスがあるウィンドウまたはグラフィカルユーザ要素がネクサス内のプロセスによって所有されているか、それともホスト内のプロセスによって所有されているかに基づく。
【００４０】
信頼できるウィンドウマネージャは、枠などのウィンドウの装飾を維持し、またウィンドウの最大化、最小化、サイズ変更などのウィンドウ機能のためのユーザ入力に応答し得る。ある実施形態では、信頼できるウィンドウマネージャは、ユーザ入力データの一部の解釈をも実施する。ある実施形態では、例えば、マウスボタンが押下され、またはキー入力が行われたことを表すユーザ入力の生データは、ホストウィンドウマネージャ３４６によって一般に実施される機能に類似した、ネクサスエージェント３７５などのネクサスのエージェントにとってより使用に適した形にして解釈される。
【００４１】
入力が、ネクサスエージェント３７５などのネクサスのエージェントに対するものであれば、このデータは、信頼できる入力マネージャから、正確な宛先のネクサスモードのプロセスに渡される。これは、矢印Ａ３７０によって示されており、この矢印は、ユーザ入力データがネクサスエージェント３７５に送信されることを示している。ある実施形態では、他のデータを、ＴＯＭ３５０、またはネクサス側の他のエンティティに渡すことができる。ネクサス側のグラフィカルユーザインタフェース要素の表示は、信頼できる出力マネージャ（ＴＯＭ：trusted output manager）３５０によって処理され、したがって、ネクサス側のグラフィカルユーザインタフェース要素上のマウスの動きは、矢印Ｂ３８０によって示されるように、ＴＯＭ３５０に渡される。
【００４２】
図４は、セキュリティ保護された実行環境（ネクサス）内のエンティティから、安全な入力を提供するための、本発明の一実施形態による方法のフローチャートである。ステップ４００で、ユーザ入力装置から、ユーザ入力が受け付けられる。ステップ４１０で、ユーザ入力がネクサスに向けたものであるかどうか、例えばユーザ入力がネクサス内で実行されるエージェントのためのものであるかどうかが判断される。またユーザ入力がネクサス宛てでない場合、ステップ４２０で、ユーザ入力が、ホストに転送される。
【００４３】
（信頼できるＵＩエンジンの安全な出力機能）
信頼できるＵＩエンジンの安全な出力機能は、信頼できる出力マネージャ３５０を介して信頼できるＵＩエンジン３３０によって提供される。図５は、本発明の一実施形態による出力を示す、２つの実行環境を含むコンピュータシステムのブロック図である。図５の矢印Ｄ５００で示すように、ネクサスエージェント３７５が、出力装置５２０のための出力をもつ場合、その出力は、信頼できるＵＩエンジン３３０に中継される。出力のセキュリティを提供するために、信頼できる出力マネージャ３５０は、出力用の信頼できるサービスプロバイダ（ＴＳＰ）５３０との、すなわち、矢印Ｅ５１０を見て分かるように、出力装置５２０との、ネクサス側のコンタクトポイントとして機能する。
【００４４】
上述したように、出力装置５２０をセキュリティ保護することができる、いくつかのやり方がある。ある実施形態では、暗号化が使用される。出力装置５２０が暗号化された形の出力データを受信し、この出力データが正確に復号される場合、それは、その出力データ優先し、ディスプレイ上で、それが非ネクサスの出力データを上書きできるようにする。別の実施形態では、隠されたメモリが使用される。信頼できる出力マネージャ３５０は、出力ＴＳＰ５３０と対話して、出力装置５２０のセキュリティを維持する。
【００４５】
出力上に存在するセキュリティの種類に関係なく、信頼できる出力マネージャ３５０は、信頼できるウィンドウマネージャ３４５を組み込むコンピュータシステム１１０内の、信頼できるウィンドウマネージャ３４５からのどんな出力情報をも処理することを含めて、ネクサス側と出力装置５２０の間のすべての対話を管理する。ネクサスエージェント３７５などのネクサスのエージェントによって所有されるウィンドウからの出力情報は、信頼できる出力マネージャ３５０によって処理される。さらに、ネクサスの他のいずれかのグラフィカルユーザインタフェース要素が存在する場合、こうした要素の表示は、信頼できる出力マネージャによって処理される。例えば、マウスがこうしたネクサスのウィンドウ上を移動する場合、セキュリティ問題を引き起こさずに、ホスト側にマウスを制御させることは困難である。したがって、マウスがネクサスのウィンドウ上にあるときのマウスカーソルの表示は、ネクサス側によって処理される。ネクサスのすべてのウィンドウおよびネクサスの他のグラフィカルユーザインタフェース要素の出力情報は、表示するため、信頼できる出力マネージャによって合成される。さらに、ホストウィンドウマネージャ３４６とのどんな対話もが、信頼できるＵＩエンジン３３０によって処理される。
【００４６】
（信頼できるＵＩエンジンの安全な出力機能）
一般に、ダイアログフレームワークサービスを、プロセスのために提供することができる。こうしたサービスは、表示する所望のグラフィカルユーザインタフェース要素を表すファイルを受け付ける。例えば、このファイルは、特定の質問、応答オプション、およびダイアログボックスを提示するために使用する言語を含めて、ユーザに提示するダイアログボックスを表す情報を含む、ＸＭＬファイルとすることができる。ダイアログフレームワークサービスは、正確なダイアログボックスをレンダリングする情報を含む。しかし、ホスト側のダイアログフレームワークサービスに依存することによって、セキュリティ問題がもたらされる。したがって、一実施形態では、信頼できるレンダリングインタフェースが、信頼できるＵＩエンジン３３０内に設けられる。この信頼できるレンダリングインタフェースは、ネクサスエージェント３７５などのネクサスのエージェントのために、完全なダイアログフレームワークサービスを提供する。信頼できるＵＩエンジン３３０として、信頼できるレンダリングインタフェースは、表示用のグラフィカルユーザインタフェース要素、および信頼できるレンダリングインタフェースがどのように要求されたグラフィカルユーザインタフェースをレンダリングし、それを管理するかを指定する情報を受信し、その中のアクティブなグラフィカルユーザインタフェース上でユーザイベントが発生したときに、ネクサスエージェント３７５を変更する。このようにして、信頼できるＵＩエンジン３３０は、ホスト側のローカライズサービスの使用を要求せずに、ネクサスエージェント３７５がグラフィカルユーザインタフェースのために必要とするローカライズサービスの一部を提供する。例えば信頼できるＵＩエンジン３３０は、多言語テキストサービスを提供することができる。
【００４７】
一実施形態では、信頼できるＵＩエンジン３３０内に、直接レンダリングインタフェースが設けられる。この直接レンダリングインタフェースは、信頼できるレンダリングインタフェースに加えて設けることができ、また信頼できるレンダリングインタフェースがない場合でも存在することができる。この直接レンダリングインタフェースは、それ自体のレンダリングを希望する、ネクサスエージェント３７５などのネクサスのエージェントのための最小限必要な機構を提供する。ネクサスエージェント３７５は、信頼できるＵＩエンジン３３０に依存するのではなく、それ自体のスクリーンビットマップを計算して、仕様からそれをレンダリングする。信頼できるＵＩエンジンは、信頼できる入力マネージャ３４０を介して、ユーザ入力操作についての通知を送信する。
【００４８】
図６は、セキュリティ保護された実行環境内のエンティティから安全な出力を提供するための、本発明の一実施形態による方法のフローチャートである。ステップ６００で、ネクサスなどのセキュリティ保護された実行環境内の特定のソースエンティティから、出力が受け付けられる。ステップ６１０で、出力が、出力装置に安全に転送される。
【００４９】
（結論）
上記の例は、例示するために提示されたものにすぎず、本発明を限定するものとして解釈すべきでない。本発明について、様々な実施形態を参照して説明したが、本明細書で使用した言葉は、限定ではなく、説明および例示の言葉であることが理解されよう。さらに、本明細書では、本発明について、特定の手段、材料および実施形態を参照して説明したが、本発明は、本明細書で開示した詳細に限定されるものではなく、本発明の範囲は、添付の特許請求の範囲内のものなど、機能的に等価の構造、方法、および使用に及ぶ。当業者は、本仕様の教示の助けによって、それに対する多くの修正を行うことができ、また本発明の範囲および精神から逸脱せずに、その態様を変更することができる。
【図面の簡単な説明】
【００５０】
【図１】本発明の態様を実施することができる、例示的なコンピューティング環境のブロック図である。
【図２】いくつかの相互作用およびいくつかの相互分離を維持する、２つの例示的な実行環境のブロック図である。
【図３】本発明の一実施形態にかかる入力を示す、２つの実行環境を含むコンピュータシステムのブロック図である。
【図４】セキュリティ保護された実行環境内のエンティティから安全な入力を提供するための、本発明の一実施形態にかかる方法のフローチャートである。
【図５】本発明の一実施形態にかかる出力を示す、２つの実行環境を含むコンピュータシステムのブロック図である。
【図６】セキュリティ保護された実行環境内のエンティティから安全な出力を提供するための、本発明の一実施形態にかかる方法のフローチャートである。
【符号の説明】
【００５１】
１１０  コンピュータ
１３４（１），１３４（２）  オペレーティングシステム
３００  信頼できる入力
３０５  入力スタック
３１０  ユーザレベル
３２０  カーネルレベル
３２５  入力ＴＳＰ
３４０  信頼できる入力マネージャ
３４６  ホストウィンドウマネージャ
３７５  ネクサスエージェント
【図１】
0004838505.tif 000002
【図２】
0004838505.tif 000003
【図３】
0004838505.tif 000004
【図４】
0004838505.tif 000005
【図５】
0004838505.tif 000006
【図６】
0004838505.tif 000007