(57)【特許請求の範囲】
【請求項１】
ローダおよびフォールトハンドラを持つコンピューティングシステムにおいて、ゲストＯＳにおいて実行されているオペレーティングシステム（ＯＳ）非依存性のウイルス対策（ＡＶ）アプリケーションにセキュリティポリシーを実施する方法であって、
前記ＡＶアプリケーションによって、フォールトハンドラコード画像、フォールトハンドラマニフェスト、前記ＡＶアプリケーションのメモリ位置、および、ＡＶアプリケーションマニフェストを特定する段階と、
前記ローダによって、前記フォールトハンドラコード画像および前記フォールトハンドラマニフェストを認証する段階と、
前記ローダによって、第１のセキュリティレベルを持つ第１のセキュリティドメインを作成して、前記フォールトハンドラコード画像を前記第１のセキュリティドメインに対応付けられているメモリに複製して、前記フォールトハンドラの実行を開始する段階と、
前記ローダによって、前記ＡＶアプリケーションのために確保されている前記ゲストＯＳ内のメモリページをロックするよう要求する段階と、
前記フォールトハンドラによって、ゲストＯＳメモリページ内の選択されたコードセグメントに対してトラップを設定することによって、ゲストＯＳメモリ内にロードされている前記ＡＶアプリケーションの実行可能なコード画像をロックする段階と、
前記ローダによって、ＡＶアプリケーションメモリを測定して、測定結果を前記ＡＶアプリケーションマニフェストと比較する段階と、
前記測定および前記比較によって前記ＡＶアプリケーションの認証が成功した場合に、前記ローダによって、前記ＡＶアプリケーションを前記第１のセキュリティドメインに対して進める段階と
を備える方法。
【請求項２】
前記ローダおよび前記フォールトハンドラは、前記コンピューティングシステム内の保護実行環境内で実行される請求項１に記載の方法。
【請求項３】
前記ゲストＯＳで実行されている他のアプリケーションは、第２のセキュリティレベルを持つ第２のセキュリティドメイン内にあり、前記第１のセキュリティレベルは前記第２のセキュリティレベルよりも高い請求項１または２に記載の方法。
【請求項４】
前記第２のセキュリティドメインで実行されているアプリケーションは、前記フォールトハンドラが検出したトラップをトリガすることなく前記第１のセキュリティドメインでメモリを修正することはできない請求項３に記載の方法。
【請求項５】
前記第２のセキュリティドメインで実行されているゲストＯＳカーネルコードは、前記フォールトハンドラが検出したトラップをトリガすることなく前記第１のセキュリティドメインでメモリを修正することはできない請求項３または４に記載の方法。
【請求項６】
前記コンピューティングシステムにおいてマルウェアが存在するか否かをスキャンするべく前記ＡＶアプリケーションを実行する段階をさらに備える請求項１から５のいずれか一項に記載の方法。
【請求項７】
前記フォールトハンドラによって、前記ＡＶアプリケーションからのメッセージが、ロックされた前記ゲストＯＳメモリから生じていると確認する段階をさらに備える請求項１から６のいずれか一項に記載の方法。
【請求項８】
前記第１のセキュリティドメインへのアクセスは、前記コンピューティングシステムのプロセッサのリソースマネージャロジックによって制御される請求項１から７のいずれか一項に記載の方法。
【請求項９】
前記ＡＶアプリケーションは、仮想マシンマネージャ（ＶＭＭ）が制御する仮想マシン内で実行される請求項１から８のいずれか一項に記載の方法。
【請求項１０】
ローダおよびフォールトハンドラを持つコンピューティングシステムに、
ウイルス対策（ＡＶ）アプリケーションによって、フォールトハンドラコード画像、フォールトハンドラマニフェスト、前記ＡＶアプリケーションのメモリ位置、および、ＡＶアプリケーションマニフェストを特定する手順と、
前記ローダによって、前記フォールトハンドラコード画像および前記フォールトハンドラマニフェストを認証する手順と、
前記ローダによって、第１のセキュリティレベルを持つ第１のセキュリティドメインを作成して、前記フォールトハンドラコード画像を前記第１のセキュリティドメインに対応付けられているメモリに複製して、前記フォールトハンドラの実行を開始する手順と、
前記ローダによって、前記ＡＶアプリケーションのために確保されているゲストＯＳ内のメモリページをロックするよう要求する手順と、
前記フォールトハンドラによって、ゲストＯＳメモリページ内の選択されたコードセグメントに対してトラップを設定することによって、ゲストＯＳメモリ内にロードされている前記ＡＶアプリケーションの実行可能なコード画像をロックする手順と、
前記ローダによって、ＡＶアプリケーションメモリを測定して、測定結果を前記ＡＶアプリケーションマニフェストと比較する手順と、
前記測定および前記比較によって前記ＡＶアプリケーションの認証が成功すると、前記ローダによって、前記ＡＶアプリケーションを前記第１のセキュリティドメインに対して進める手順と
を実行させるためのプログラム。
【請求項１１】
前記ローダおよび前記フォールトハンドラは、前記コンピューティングシステム内の保護実行環境内で実行される請求項１０に記載のプログラム。
【請求項１２】
前記ゲストＯＳで実行されている他のアプリケーションは、第２のセキュリティレベルを持つ第２のセキュリティドメイン内にあり、前記第１のセキュリティレベルは前記第２のセキュリティレベルよりも高い請求項１０または１１に記載のプログラム。
【請求項１３】
前記第２のセキュリティドメインで実行されているアプリケーションは、前記フォールトハンドラが検出したトラップをトリガすることなく前記第１のセキュリティドメインでメモリを修正することはできない請求項１２に記載のプログラム。
【請求項１４】
前記第２のセキュリティドメインで実行されているゲストＯＳカーネルコードは、前記フォールトハンドラが検出したトラップをトリガすることなく前記第１のセキュリティドメインでメモリを修正することはできない請求項１２または１３に記載のプログラム。
【請求項１５】
前記コンピューティングシステムに、マルウェアが存在するか否かをスキャンするべく前記ＡＶアプリケーションを実行させる手順をさらに実行させる請求項１０から１４のいずれか一項に記載のプログラム。
【請求項１６】
前記コンピューティングシステムにさらに、前記ＡＶアプリケーションからのメッセージが、ロックされた前記ゲストＯＳメモリから生じていると前記フォールトハンドラによって確認する手順をさらに実行させる請求項１０から１５のいずれか一項に記載のプログラム。
【請求項１７】
コンピューティングシステムであって、
前記コンピューティングシステムについてのセキュリティポリシーを実施する命令を実行するプロセッサであって、複数のセキュリティドメインへのアクセスを制御するリソースマネージャロジックを有するプロセッサと、
ローダおよびフォールトハンドラを有する実行コンテナと、
ウイルス対策（ＡＶ）アプリケーションを有するゲストオペレーティングシステム（ＯＳ）と
を備え、
前記ＡＶアプリケーションは、フォールトハンドラコード画像、フォールトハンドラマニフェスト、前記ＡＶアプリケーションのメモリ位置、および、ＡＶアプリケーションマニフェストを特定し、
前記ローダは、前記フォールトハンドラコード画像および前記フォールトハンドラマニフェストを認証し、第１のセキュリティレベルを持つ第１のセキュリティドメインを作成し、前記フォールトハンドラコード画像を前記第１のセキュリティドメインに対応付けられているメモリに複製し、前記プロセッサによって前記フォールトハンドラの実行を開始し、前記ＡＶアプリケーションのために確保されているゲストＯＳ内のメモリページをロックするよう要求し、
前記フォールトハンドラは、ゲストＯＳメモリページ内の選択されたコードセグメントに対してトラップを設定することによって、ゲストＯＳメモリ内にロードされている前記ＡＶアプリケーションの実行可能なコード画像をロックし、
前記ローダは、ＡＶアプリケーションメモリを測定し、測定結果を前記ＡＶアプリケーションマニフェストと比較し、前記測定および前記比較に基づいた前記ＡＶアプリケーションの認証が成功すると、前記ＡＶアプリケーションを前記第１のセキュリティドメインに対して進めるコンピューティングシステム。
【請求項１８】
前記ゲストＯＳで実行されている他のアプリケーションは、第２のセキュリティレベルを持つ第２のセキュリティドメイン内にあり、前記第１のセキュリティレベルは前記第２のセキュリティレベルよりも高い請求項１７に記載のコンピューティングシステム。
【請求項１９】
前記第２のセキュリティドメインで実行されているアプリケーションは、前記フォールトハンドラが検出したトラップをトリガすることなく前記第１のセキュリティドメインでメモリを修正することはできない請求項１８に記載のコンピューティングシステム。
【請求項２０】
前記第２のセキュリティドメインで実行されているゲストＯＳカーネルコードは、前記フォールトハンドラが検出したトラップをトリガすることなく前記第１のセキュリティドメインでメモリを修正することはできない請求項１８または１９に記載のコンピューティングシステム。
【請求項２１】
前記コンピューティングシステムにおいてマルウェアが存在するか否かをスキャンするべく前記ＡＶアプリケーションを実行する請求項１７から２０のいずれか一項に記載のコンピューティングシステム。
【請求項２２】
前記フォールトハンドラは、前記ＡＶアプリケーションからのメッセージが、ロックされた前記ゲストＯＳメモリから生じていると確認する請求項１７から２１のいずれか一項に記載のコンピューティングシステム。
【請求項２３】
仮想マシンをインスタンス化するべく前記ゲストＯＳに設けられている仮想マシンマネージャ（ＶＭＭ）をさらに備え、
前記ＡＶアプリケーションは、前記仮想マシン内で実行されている請求項１７から２２のいずれか一項に記載のコンピューティングシステム。
【請求項２４】
前記実行コンテナは、保護実行環境を含む請求項１７から２３のいずれか一項に記載のコンピューティングシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は概して、コンピューティングの分野に関する。具体的には、本発明の一実施形態は、コンピューティングシステムで実行されているウイルス対策スキャンエージェントについて強制的なセキュリティポリシーを実施することに関する。
【背景技術】
【０００２】
ウイルス対策（ＡＶ）スキャンエージェントアプリケーションプログラムは通常、オペレーティングシステム（ＯＳ）プロセスとして実行される。ＡＶスキャンエージェントは、マルウェアが利用しているステルス技術と同じものを利用して、マルウェア攻撃／ルートキット攻撃から自身を保護する。ＯＳ構成に対する最新の変更として、インテグリティを低、中、高に分類してプロセスにタグ付けする強制的アクセス制御（ＭＡＣ）ラベルを利用するようになった点が挙げられる。レベルが異なるプロセス同士は、互いに修正／アクセスが許可されていない。しかし、ＭＡＣレベルのセマンティクスは、ＯＳのリング０（カーネル特権）で実施される。リング０が侵害されると、ＭＡＣ実施メカニズムが侵害されることになるので、リング３（ユーザ特権）およびリング０で実行されているＡＶスキャンエージェントが侵害される。また、仮想メモリマネージャ（ＶＭＭ）（用いられる場合）が侵害されると、ユーザＯＳ（ＵＯＳ）ＭＡＣメカニズムが侵害されることになるとしてよい。ＯＳでＭＡＣメカニズムを利用することによって、ＡＶスキャンエージェントは、ＡＶスキャンエージェントコードを狙ったマルウェアから隠れることが難しくなる。このため、ＡＶスキャンエージェントコードは、ＯＳセキュリティが改善されているにもかかわらず、より脆弱になっている。
【図面の簡単な説明】
【０００３】
添付図面を参照しつつ詳細に説明する。複数の図面にわたって同じ参照番号を利用する場合、同様または同一の構成要素を指している。
【図１】本発明の一部の実施形態に係る、実行コンテナインテグリティモデルを示す図である。
【図２】本発明の一実施形態に係る、ゲストＯＳを持つ実行コンテナインテグリティモデルを示す。
【図３】本発明の一実施形態に係る、ＡＶアプリケーションを持つゲストＯＳを持つ実行コンテナインテグリティモデルを示す図である。
【図４】本発明の一実施形態に係る、Ｃドメインを構築する場合のフローチャートである。
【図５】本発明の一実施形態に係る、一連のリソーストラップメカニズムに対応する縦列接続されたＢｉｂａレベルを説明するための図である。
【図６】本発明の一実施形態に係るサブＣドメインの構築を説明するためのフローチャートである。
【図７】本発明の一実施形態に係るアプリケーショントラップの設定を説明するためのフローチャートである。
【図８】本発明の別の実施形態に係る、アプリケーショントラップの設定を説明するためのフローチャートである。
【図９】本発明の一実施形態に係るトラップの実行を説明するためのフローチャートである。
【図１０】本発明の別の実施形態に係る、仮想マシンマネージャ（ＶＭＭ）に適用される場合の、ゲストＯＳを持つ実行コンテナインテグリティモデルを示す図である。
【図１１】本発明の一実施形態に係る、仮想マシンがＡＶアプリケーションを含んでおり、ＶＭＭに適用される場合の、ゲストＯＳを持つ実行コンテナインテグリティモデルを示す図である。
【図１２】本明細書で説明する一部の実施形態を実施するために利用されるコンピューティングシステムの実施形態を示すブロック図である。
【図１３】本明細書で説明する一部の実施形態を実施するために利用されるコンピューティングシステムの実施形態を示すブロック図である。
【発明を実施するための形態】
【０００４】
以下に記載する説明では、さまざまな実施形態を深く理解していただくべく、具体的且つ詳細な内容を数多く記載している。しかし、本発明のさまざまな実施形態は、記載する具体的且つ詳細な内容を利用しなくても実施し得る。また、公知の方法、手順、構成要素および回路は、本発明の具体的な実施形態をあいまいにしないよう、詳細な説明を省略している。さらに、本発明の実施形態のさまざまな側面は、さまざまな手段、例えば、集積化された半導体回路（ハードウェア）、コンピュータ可読格納媒体に格納されている１以上のプログラムに編成されたコンピュータ可読命令（ソフトウェア）、または、ハードウェアおよびソフトウェアの組み合わせを利用して、実施し得る。本開示の目的を考慮すると、「ロジック」という表現は、ハードウェア、ソフトウェア（例えば、プロセッサの動作を制御するマイクロコードを含む）、ファームウェア、または、これらに組み合わせのいずれかを意味するものとする。
【０００５】
ある実施形態によると、ＡＶスキャンエージェントアプリケーションプログラムは、コンピューティングシステム内の保護実行環境で実行され得る。この場合、ＡＶスキャンエージェントには、ユーザオペレーティングシステム（ＵＯＳ）（または、仮想マシンマネージャ（ＶＭＭ））が利用するＭＡＣ特権を支配するＭＡＣ特権が割り当てられるとしてよい。ＡＶスキャンエージェントは、保護実行環境を利用して保護されている、ＵＯＳエージェントを含むメモリページを構成する。このようなメモリページは、ＵＯＳ（またはＶＭＭ）によって付与された最も高い特権を超える有効ＭＡＣ特権を持つので、ＵＯＳが侵害されても、ＵＯＳ内のＡＶスキャンエージェントが侵害されることにはならない。
【０００６】
本発明の実施形態は、少なくとも２つの技術、すなわち、保護実行環境マイクロコードと、オペレーティングシステムＭＡＣ抽象化とは別個のハードウェアレベルで適用されるＭＡＣラベルを組み合わせて利用する。保護実行環境内の実行コンテナによって、可能な限り最高レベルであるＯＳのリング０レベルよりも「高い」セキュリティレベルで動作しているＡＶスキャンエージェントランタイムについて実行を分離する。このレベルは、保護実行環境によって実施される。保護実行環境はＭＡＣセキュリティモデルを考慮するので、保護実行環境は、ＯＳファイルシステムオブジェクトへの読出アクセスを依然として許可しつつ、ＡＶスキャンエージェントランタイムに対する悪意ある修正を防止し得る。本発明の実施形態は、ゲストＯＳリソースにトラップを設定しつつ、ＭＡＣラベルを均一に対応付ける。ある実施形態に係る方法では、ゲストリソースおよびページにわたって再帰的に、ＡＶスキャンエージェントアプリケーションおよび対応付けられたデータが保護されるまで、ラベル割当とトラップ割当とを直列接続する。マルウェアによる保護されたリソースを修正しようという試みは、コンピューティングシステムのプロセッサによって検出され防止されるとしてよい。検出された攻撃から回復するには、システムインテグリティモデルに違反することなく、保護実行環境からより高いインテグリティレベルで実行されているハンドラエージェントプログラムを利用するとしてよい。
【０００７】
ＭＡＣセキュリティモデルは、システム内のオブジェクトおよびサブジェクトにセキュリティラベルを割り当てることによって、情報を保護する。このようなＭＡＣセキュリティモデルの１つとして、Ｂｉｂａ、Ｋ．Ｊ．、「Ｉｎｔｅｇｒｉｔｙ  Ｃｏｎｓｉｄｅｒａｔｉｏｎｓ  ｆｏｒ  Ｓｅｃｕｒｅ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍｓ」、ＭＴＲ−３１５３、Ｔｈｅ  Ｍｉｔｒｅ  Ｃｏｒｐｏｒａｔｉｏｎ、１９７７年４月に記載されているようなＢｉｂａモデルがある。Ｂｉｂａインテグリティモデルは、データインテグリティを保証するように設定される一連のアクセス制御ルールを記載しているコンピュータシステムセキュリティポリシーの形式的なステート遷移システムである。データおよびサブジェクトは、所定順序に並べられたインテグリティレベルに応じてグループ分けされる。このモデルは、サブジェクトが、当該サブジェクトより高いランクのレベルのデータを破損させないように構成されるか、または、当該サブサブジェクトより低いレベルのデータによって破損させられないように構成されている。概して、データインテグリティを維持することには、権限を持たない第三者によるデータ修正を防止し、権限を持つ第三者による不正データ修正を防止し、内部コンシステンシーおよび外部コンシステンシーを保持する（つまり、データは実世界を反映）という目標がある。このセキュリティモデルは、データインテグリティを対象としてものであり、「下方向への読出および上方向への書込は行わない」という表現で表される特徴を持つ。Ｂｉｂａ  ＭＡＣルールは、以下のように要約され得る。
１）リソース（サブジェクトおよびオブジェクト）にはＢｉｂａインテグリティラベルが付与され、より高いレベルがより低いレベルを「支配」できる。オブジェクトまたは他のサブジェクトを支配するサブジェクトは、そのリソースに「下方向の書込」が可能である。
２）より低いレベルのリソースは、より高いレベルのリソースに対して「上方向の読出」が可能である。
【０００８】
Ｂｉｂａモデルは、保護実行環境に適用され、デバイス、メモリ、ダイレクトメモリアクセス（ＤＭＡ）バッファ、割り込みおよび構成スペースをＢｉｂａラベルで定型化して、Ｂｉｂａアクセスルールを平等に適用できるようにするとしてよい。実行コンテナで実行されているＯＳがＢｉｂａセキュリティモデルを実施する保護実行環境で実行されるアプリケーションは、ＭＡＣラベル制約に対応する仮想化リソースが割り当てられているとしてよい。保護実行環境のリソースマネージャコンポーネントは、実行コンテナ（保護メモリ）とデバイスリソースとの間のハードウェアインターフェース境界を越えて特権セマンティックスを実施するよう、信頼されているとしてよい。
【０００９】
図１は、本発明の一部の実施形態に係る実行コンテナインテグリティモデルを示す図である。保護実行環境は、実行コンテナ１００で実行されているアプリケーションに対してＢｉｂａセキュリティポリシーを実施するとしてよい。実行コンテナは、普通のＯＳ環境から分離されているコンピューティングシステム内のアプリケーション環境を含む。ある実施形態によると、実行コンテナは、機能に制約があるとしてよい。実行コンテナは、フル機能のＯＳを含まないとしてよい。ある実施形態によると、実行コンテナは、アプリケーション（Ａｐｐ）ポリシーマネージャコンポーネント１０２と、１以上のアプリケーションプログラムとを含む。図１に示す例では、実行コンテナは、第１のインテグリティレベルでのアプリケーション（Ａｐｐ  Ｌ１、１０４）と、第２のインテグリティレベルでのアプリケーション（Ａｐｐ  Ｌ２  １０６）と、第３のインテグリティレベルでのアプリケーション（Ａｐｐ  Ｌ３  １０８）とを備える。
【００１０】
ある実施形態によると、保護実行環境は、プラットフォームリソース（中央演算処理装置（ＣＰＵ）、メモリ、チップセット、フラッシュ等）を、これらのリソースへのアクセスを抽象化するハードウェアサポートを利用してパーティション化することによって、コンピューティングシステムにおいて実行コンテナを形成するためのメカニズムを提供する。これは、ユーザＯＳ（ＵＯＳ）のためのコンテナに加えて、ＵＯＳは省電力を目的として動作が少ない間はコアをオフラインにするので、利用されていないマルチコアプロセッサ内のコアでのサイクルを通常は利用して、他の独立した動作環境を実現し得ることを目的としている。このことが消費電力および性能に与える影響はわずかであるが、ＵＯＳのアウトオブバンド（ＯＯＢ）動作、例えば、セキュリティ、管理、セキュアな商取引、または、ライセンス供与等に利用され得るプログラムを実行するための環境が得られる。ＯＯＢ実行環境では、これらのコンテナで実行されているアプリケーションは、ユーザの改ざん、マルウェアに対して安全であり、ＯＳエラーに対する耐性を持つ。この機能を可能なものとするべく、幾つか新しいハードウェアの特徴をプロセッサに追加するとしてよい（例えば、タイマ、デバイスフィルタリング、スケジューリングバッファ、ページテーブル、割り込みマッピングサポート、フラッシュメモリ内のスペース）。大規模なソフトウェアスタックがさらに必要となるとしてよく（カーネル、ＵＯＳドライバ、カーネルドライバ、ファームウェア等）、コアが無いパッチングサポートもまた必要になるとしてよい。各実行コンテナは、別箇に設けられているメモリ（個別の拡張ページテーブル（ＥＰＴ）を含む）、自分のステート、プロセッサで実行するために必要なタイムスライスを制御する方法、および、ハードウェアデバイスに対する専用アクセスの可能性を持つ（デバイスフィルタリング、ローカルアドバンスドプログラマブルインタラプトコントローラ（ＡＰＩＣ）、および、割り込み再マッピングによって実施される）。保護実行環境およびコンピューティングシステムにおける電力効率を改善するための利用モデルの一例は、Ｋｕｍａｒ他、「Ｍｅｔｈｏｄ  ａｎｄ  Ａｐｐａｒａｔｕｓ  ｆｏｒ  Ｃｏｓｔ  ａｎｄ  Ｐｏｗｅｒ  Ｅｆｆｉｃｉｅｎｔ  Ｓｃａｌａｂｌｅ  ＯＳ―Ｉｎｄｅｐｅｎｄｅｎｔ  Ｓｅｒｖｉｃｅｓ」、出願日：２００７年１２月２６日、整理番号：第１１／９６４，４３９に記載されている。当該特許文献は、本願の譲受人に譲渡されているので、参照により本願に組み込まれる。
【００１１】
ある実施形態によると、アプリケーションは、保護実行環境リソースマネージャ（ＲＭ）１１０との間で通信を行う。ある実施形態によると、ＲＭは、コンピューティングシステムのプロセッサにおいてマイクロコードとして実施されるとしてよく、さまざまなインテグリティレベルで実行するスレッドを作成するとしてよい。ある実施形態によると、ＲＭは、リング０またはリング３のプロセスによってアクセス不可能な別箇のハイパースレッドとして実行されるとしてよい。保護されたＲＭのハイパースレッドは、システムブート処理においてインスタンス化されるとしてよく、ＯＳによってスケジューリングはされるが、修正はされないとしてよい。実行コンテナ１００で実行されるアプリケーションに対してＢｉｂａセキュリティポリシーを実行するべく、ＲＭ１１０を実行コンテナよりも高いインテグリティレベルで動作させ、ＲＭを修正または破壊するような実行コンテナによる試みは、セキュリティポリシーの違反と見なされるとしてよい。ＲＭは、実行コンテナにおいてＯＳをロードおよび認証する処理の一部として、実行コンテナにおいて信頼を構築することができる。ある実施形態によると、実行コンテナの制御ポリシー開始によって、実行コンテナの機能にＢｉｂａセキュリティルールを実施する機能が含まれていると主張する。
【００１２】
ＲＭのドメインポリシーマネージャ１１２は、一定範囲のＢｉｂａラベル（つまり、特権）をアプリケーションポリシーマネージャ１０２に割り当てる。ドメインポリシーマネージャは、ラベルの記録を取り、ドメインがプロセッサで実行されるようにする。実行コンテナは、供給された範囲に応じて、Ｂｉｂａルールを実施する。アプリケーションポリシーマネージャはこの後、この範囲の特権を、実行コンテナアプリケーションに割り当てる。これによって、実行コンテナが全てのコンピューティングプラットフォームリソースをグローバルに見ていないとしても、システム全体でＢｉｂａレベルのセマンティックスの一貫性が維持される。ＲＭ１１０は、複数のセキュリティドメインを提供する。ある実施形態によると、ドメインは、メモリ、ディスクストレージデバイスまたはネットワークインターフェースデバイス等の物理的リソースの一部である。この一部は、リソースマネージャによって付与されるＢｉｂａラベルに応じて分類されたデータを含む。図１に示す例では、カテゴリＹ１におけるインテグリティレベルがＸ１のドメインＡ１１４と、カテゴリＹ２におけるインテグリティレベルがＸ２のドメインＢ１１６という２つのドメインがある。物理的メモリおよびデバイス１１８等、コンピューティングシステムのさまざまな構成要素は、ドメインのうち１つに割り当てられるとしてよい。例えば、デバイス１２０および１２２は、ドメインＡに割り当てられるとしてよく、デバイス１２４および１２６はドメインＢに割り当てられるとしてよい。例えば、ダイレクトメモリアクセス（ＤＭＡ）バッファに含まれるＢｉｂａラベル（Ｘ１：Ｙ１）で指定されたメモリページは、Ｂｉｂａラベル方式に応じてトラックがパーティション化されているディスクストレージデバイスに書き込まれるとしてよい。尚、ディスクストレージデバイスのトラック０−ｎは、ラベル（Ｘ１:Ｙ１）に対応し、トラック（ｎ＋１）−ｍはラベルＸ２：Ｙ２に対応し、以降は同様に設定される。また、ＤＭＡメモリに対して仮想化方法テーブルが作成され、一の仮想化方法レーンはラベル（Ｘ１：Ｙ２）に対応し、第２の仮想化方法レーンは別のラベルＸ２：Ｙ２に対応し、以降は同様に設定される。
【００１３】
図１はさらに、アプリケーション間で試行された読出および書込のフロー管理を示す。インテグリティレベルが高いドメインＡのアプリケーション１２８は、Ａｐｐ  Ｌ１のインテグリティレベルＸ１が高インテグリティレベル以下である場合に、Ａｐｐ  Ｌ１  １０４に対して下方向に書込を行うとしてよい。ドメインＡのアプリケーションはさらに、Ａｐｐ  Ｌ１から読み出すとしてもよい。Ａｐｐ  Ｌ１は、ドメインＡ内のアプリケーションから読み出すとしてもよい。Ａｐｐ  Ｌ１  １０４は、Ａｐｐ  Ｌ２  １０６に対して下方向に書き込みを行うとしてよい。これは、Ａｐｐ  Ｌ２のインテグリティレベルＸ２が、Ａｐｐ  Ｌ１のインテグリティレベルＸ１以下であるためである。Ａｐｐ  Ｌ１はさらに、Ａｐｐ  Ｌ２から読み出すとしてもよい。Ａｐｐ  Ｌ２は、Ａｐｐ  Ｌ１から読み出すとしてよい。Ａｐｐ  Ｌ２  １０６は、Ａｐｐ  Ｌ３  １０８に対して下方向に書き込みを行うとしてよい。これは、Ａｐｐ  Ｌ３のインテグリティレベルＸ３が、Ａｐｐ  Ｌ２のインテグリティレベルＸ２以下であるためである。Ａｐｐ  Ｌ２はさらに、Ａｐｐ  Ｌ３から読み出すとしてもよい。Ａｐｐ  Ｌ３は、Ａｐｐ  Ｌ２から読み出すとしてよい。Ａｐｐ  Ｌ３  １０８は、ドメインＢ１３０内のアプリケーションに対して下方向に書き込みを行うとしてよい。これは、ドメインＢ内のアプリケーションのインテグリティレベルは低く、Ａｐｐ  Ｌ３のインテグリティレベルＸ３以下であるためである。Ａｐｐ  Ｌ３はさらに、ドメインＢ内のアプリケーションから読み出すとしてもよい。ドメインＢ内のアプリケーションは、Ａｐｐ  Ｌ３から読み出すとしてよい。
【００１４】
図２は、本発明の一実施形態に係る、ゲストＯＳを持つ実行コンテナインテグリティモデルを示す図である。信頼がおけるＢｉｂａ認識カーネルを持たないゲストＯＳ２００は、ＲＭ１１０によって、グローバルＢｉｂａ特権が割り当てられ得る。この特権は、ゲストＯＳが初期化される際に、対応付けられる。この後のハードウェアに対するアクセスは、ＲＭマイクロコードによって監視される。この結果、実行コンテナで実行されているアプリケーションとの間で共有するデバイスおよびメモリリソースは、ポリシーインピーダンス不整合のために、脅威が増加することはない。しかし、ゲストＯＳアプリケーション（この例ではＡｐｐ  Ｌ３  １０８等）は、アクセスがシステムのインテグリティに対して脅威となる場合を除いては、デバイスおよびシステムリソースに対するＢｉｂａセキュリティモデル制約を認識することなく、通常は機能し続けることができる。ある実施形態によると、ＲＭは、ＢｉｂａモデルをゲストＯＳアクセスに適用するべく、グローバルゲスト特権割り当て部２０２を有する。例えば、ＣＰＵハイパースレッドから成るＢｉｂａ認識実行コンテナ１００が、それぞれＢｉｂａラベル（Ｘ１：Ｙ１）およびＢｉｂａラベル（Ｘ２：Ｌ２）が割り当てられている２つのアプリケーションＬ２  １０４およびＬ２  １０６を持つ場合、そして、Ｂｉｂａ認識しないゲストＯＳ２００（第２のＣＰＵハイパースレッド内で実行）内の第３のアプリケーションＬ３  １０８が、リソースマネージャが割り当てたリソースを利用する必要がある場合を考える。ゲストＯＳに割り当てられるリソースについてデフォルトマッピングを作成するグローバルゲスト特権割り当てが行われると、リソースマネージャがＢｉｂａラベルの支配の程度を算出することにより、明確な結果が得られる。Ｂｉｂａ認識しないゲストＯＳは、ゲストＯＳがアクセスした場合に、Ｂｉｂａラベルが付与されたリソースによって混乱することはない。
【００１５】
ＡＶスキャンエージェントを含むゲストＯＳにおけるメモリページを保護する新たな方法によって、ゲストＯＳ内のマルウェアによる攻撃に対してこれらのページを「硬化」するとしてよい。保護実行環境を用いてこのようなメモリページ保護構成およびランタイムソフトウェアを実行することによって、ゲストＯＳに含まれる保護構成要素の動作時のセキュリティレベルを高くすることができ、そのセキュリティポリシーはシステム全体のポリシーと一致する。
【００１６】
図３は、本発明の実施形態に係る、ＡＶアプリケーションを持つゲストＯＳを備える実行コンテナインテグリティモデルを示す図である。ある実施形態によると、ＡＶスキャンエージェントのインテグリティを保護できるよう、コンピューティングシステムによって一連のドメインを構築するとしてよい。ある実施形態によると、一連のドメインは、変更があるか否か監視されるゲストＯＳメモリについて作成されるとしてよい。一部のドメインは、ゲストＯＳ２００内の保護リソース３０３を含むとしてよい。少なくとも１つのドメインは、ゲストＯＳ２００内の非保護リソース３０６を含むとしてよい。ある実施形態によると、ドメインは、プロセッサ内のマイクロオペレーション（μｏｐ）スレッドと対応付けられているとしてよい。
【００１７】
ドメインＡ１１４：最も高いインテグリティレベル（ＳＹＳ＿ＨＩ）
このドメインは、コンピューティングシステムによって構築されるとしてよく、最も高いインテグリティレベルを持つ。これは、コンピューティングハードウェア（レジスタ、メモリ）、ＲＭ１１０およびＲＭ制御デバイス、ならびに、メモリのマニフェストおよび領域を受け取って、メモリの当該領域が当該マニフェストに一致すると確認し、アプリケーションポリシーマネージャ内に格納されているルートオブトラスト（Ｒｏｏｔ  ｏｆ  Ｔｒｕｓｔ）に基づいて署名の有効性を検証することができるアプリケーションポリシーマネージャ１０２から成る。
【００１８】
ドメインＢ：１１６（ドメインＢ＜ドメインＡ）
ドメインＢは、ＡＶスキャンエージェント保護メカニズムをサポートするために実行されている保護実行環境１００のアプリケーションを含む。これらのアプリケーションは、実行コンテナ１００で実行されている他のプログラムと共に、ＲＭ１１０によって検証されるとしてよい。構成要素は、ランタイム／軽量ＯＳ（不図示）、ローダ３０２、フォールトハンドラ３０４、ドメインＣ  ＡＶアプリケーション３００にサービスを提供するＡｐｐマニフェスト３２２およびＡｐｐポリシーマネージャ１０２を含み、ドメインＣ  ＡＶアプリケーション３００を認証し、実行コンテナ１００にＡＶアプリケーションをインストールする。
【００１９】
ドメインＣ３１０：（ドメインＣ＜ドメインＢ）
これは、ＡＶアプリケーションが実行されるドメインである。ドメインＣのＡＶアプリケーションは、実行コンテナ１００のアプリケーションよりもインテグリティレベルが低いが、コンピューティングシステムの残りよりはインテグリティレベルが高い。これは、このドメインにおけるアプリケーションのインテグリティは、デジタル署名およびドメインＡのアプリケーションポリシーマネージャ１０２によって認証されるからである。ある実施形態によると、このドメイン、実行コンテナ１００で実行されているフォールトハンドラ３０４、および、保護ページ内のユーザ（ゲストＯＳ２００で実行されているＡＶアプリケーション３００で、には少なくとも２つのアプリケーションがあるとしてよい。ＡＶアプリケーションは、ゲストＯＳ固有情報を持つが、ドメインＤよりも高いＢｉｂａモードで保護する必要があるとしてよい。
【００２０】
ドメインＣ−１、Ｃ−２、Ｃ−ｎ：（ｉ＞ｊの場合、ドメインＣ−ｉ＜ドメインＣ−ｊ。ドメインＣ−２＜ドメインＣ−１＜ドメインＣ）
ドメインＣのアプリケーション（ＡＶアプリケーション３００およびフォールトハンドラ３０４）は、ドメインＣの下方に、高い粒度の一連のドメインを形成する。書込トラップがこれらのメモリ領域の周囲に配置されているので、ゲストＯＳ内のメモリをこれらのドメインに配置する。これらのドメインは、メモリ領域内の値はマルウェアが無いか否かについては分からないという点でドメインＣよりもインテグリティレベルが低いが、トラップが設定されてから変化していないことが分かっている。これは、含まれているソフトウェアがマニフェストによって署名されており、当該ソフトウェアが作成されてから当該ソフトウェアが変化していないことを示すドメインＣとは対照的である。また、ドメインＤ内においてメモリはいつでも変更可能であるという点において、ドメインＤ（以下で説明する、つまり、ゲストＯＳ環境）とも対照的である。ある実施形態によると、これらのドメインは、ＡＶアプリケーションが保護アイテムにおけるインテグリティレベルの違いを識別できるように、利用されるとしてよい。例えば、プロセッサのグローバル記述子テーブルレジスタ（ＧＤＴＲ）内の値は、ＧＤＴＲがドメインＡのハードウェアに格納されているので、高い確率で知ることができる。一方、物理メモリのマッピングの値の線形性は、先に構築されたドメインＣ−ｉに格納されている値に応じて決まるとしてよい。このため、ドメインＣ−ｉと同じインテグリティレベルで値を構築することができない。このため、独自のドメインＣ−（ｉ＋１）を持つ必要がある。
【００２１】
ドメインＤ３１２：（ドメインＤ＜ドメインＣ−ｎ＜ドメインＣ）ある実施形態によると、ドメインＤは、ゲストアプリケーション３０８がアクセス可能な非保護リソース３０６の全てに割り当てられているグローバルドメインであるとしてよい。ドメインＤは、ゲストのリング０のアプリケーションおよびカーネルを含む。また、リング３のアプリケーションソフトウェアを全て含む。ゲストＯＳストレージリソースは、物理的ストレージデバイスの一パーティションから割り当てられる。尚、パーティション３２０は、ドメインＤ内のラベル（Ｘ４：Ｙ）のトラックｔ０−ｔｎから成る。
【００２２】
保護ゲストＯＳメモリページ３０３に含まれているＡＶアプリケーション（３００）は、メモリページトラップを持つ。メモリページトラップは、デリファレンスされると、フォールトハンドラ３０４にＢｉｂａ  ＭＡＣポリシーを参照させて、デフォルトゲストＯＳ  Ｂｉｂａ  ＭＡＣラベルは、ドメインＣを含むデフォルトラベルを支配するラベルで無効にされ得る。これらのメモリページはまとめて３１８と示している。
【００２３】
実行コンテナ１００が消費する物理リソースは、メモリおよびストレージリソース３１４および３１６から割り当てられる。実行コンテナ１００は、これらのリソースに対して、ラベル分離およびパーティション化によって実施される排他的なアクセスを持つ。アプリケーションマニフェスト３２２は、ドメインＡ１１４に一致するラベルが割り当てられた実行コンテナストレージ３１４に格納されているとしてよい。
【００２４】
図４は、本発明の一実施形態に係る、Ｃドメインを構築するためのフローチャート４００を示す図である。ブロック４０２において、ＡＶアプリケーションコンポーネント３００が、プロセッサ命令を用いて、フォールトハンドラコンポーネント３０４のコード画像、フォールトハンドラのマニフェスト、ＡＶアプリケーションのメモリ位置、および、ＡＶアプリケーションマニフェスト３２２を特定する。ブロック４０４において、ローダコンポーネント３０２は、アプリケーションポリシーマネージャ１０２との間で、フォールトハンドラ３０４のコード画像およびアプリケーションマニフェスト３２２の認証を行う。アプリケーションマニフェストおよびフォールトハンドラの認証に成功すると、処理を続ける。ローダは、ドメインＣ３１０を作成し、フォールトハンドラコード画像をドメインＣに対応付けられているメモリに複製し、プロセッサによるフォールトハンドラコードの実行を開始する。ブロック４０６において、ローダ３０２は、フォールトハンドラ３０４に対して、ＡＶアプリケーション３００について確保されているゲストＯＳ２００内のメモリページをロックするように要求する。ブロック４０８において、フォールトハンドラは、ゲストＯＳメモリ３１８内の選択されたコードセグメントに対してトラップを設定することによって、ゲストメモリに現在ロードされているＡＶアプリケーション３００の実行可能コード画像をロックする。ゲストＯＳの保護されたページは、最初はドメインＤにある。ブロック４１０において、ローダは、ＡＶアプリケーションメモリを測定して、ＡＶアプリケーションマニフェスト３２２と比較する。ゲストＯＳ内の攻撃者が間違ったページアドレスを供給してフォールトハンドラを既にスプーフィングしている場合、インテグリティチェックは失敗するはずである。このため、ローダは、インテグリティチェックを実行する際にドメインＤ内のページテーブルに依存することはなく、ドメインＡで実行されているアプリケーションポリシーマネージャ１０２によって認証されているマニフェストに依存する。
【００２５】
ブロック４１２において、ローダがＡＶアプリケーション画像のインテグリティを認証して条件を設定し、他のゲストＯＳアプリケーション（または、ゲストＯＳカーネルコード）がページトラップをトリガすることなく当該画像を修正できない（フォールトハンドラが検出可能）ようにすると、ローダはＡＶアプリケーションをドメインＣに進める。ある実施形態によると、この時点でフォールトハンドラ３０４およびＡＶアプリケーション３００が同じドメイン内にあり、プロセッサを介して、ハードウェア実装されたＳｅｎｄＭｅｓｓａｇｅコマンドをやり取りすることができる。ブロック４１４において、フォールトハンドラは、ＡＶアプリケーションから受信したメッセージが全て、上述したように定義およびロックされたメモリ領域内から生じていることを確認する。コードセグメントおよびデータセグメントの両方をドメインＣに含まれている。メッセージ用のコードセグメントは、フォールトハンドラのコードセグメントで、ロックされると共にドメインＣに配置され、ＡＶアプリケーションはこれらのページに対するアクセスする許可が与えられるとしてよい。
【００２６】
この時点において、ドメインＣが構築されている。ドメインＣは、実行コンテナ１００で実行されているフォールトハンドラと、ゲストＯＳ２００で実行されているＡＶアプリケーション３００とから成る。これらのコンポーネントは共に、マニフェストによる認証が済んでおり、メモリトラップはソフトウェア画像のインテグリティを維持する。ＡＶアプリケーションはこの時点で、マルウェアの有無を確認するべくスキャンを行うべく実行されるとしてよい。
【００２７】
図５は、本発明の一実施形態に係る、一連のリソーストラップメカニズムに対応する縦列接続されたＢｉｂａセキュリティレベルを示す図である。最初のカーネルトラップを設定することは、ドメインＣ−１、Ｃ−２等を構築または変更することを含む。リソースを異なる複数のドメインに入れることによって、システム全体のセキュリティが改善される。図５は、図４のブロック４０８の詳細な内容をさらに示す図である。ゲストＯＳ２００は、ドメインＣ用の保護リソース領域５００を含むとしてよい。保護リソース領域５００は、ある実施形態によると、ＡＶ設定プログラム５１０を含む。ゲストＯＳはさらに、ドメインＤ用の非保護リソース領域３０６、および、ドメインＤ用の保護リソース領域５０８を持つとしてよい。非保護リソース領域３０６は、ある実施形態によると、非保護ページ５２０を含む。ドメインＣ−１  ５０２は、サブＣドメインの中で最も高いインテグリティレベルを持つ。これは、外部の認証者によって署名されたマニフェストで認証されていないので、マルウェアを含んでいないと保証することはできない。サブＣドメインについては、トラップが設定された時点からは非認証ソフトウェアによる値の変更はないと主張される（しかし、トラップを設定する前に非認証ソフトウェアが情報を変更していないという保証はない）。
【００２８】
ある実施形態によると、ドメインＣ−１  ５０２は、最初に構築されるとしてよく、保護すべきレジスタ５１２にあるカーネル要素全てから構成される。ドメインＣ−２  ５０４はこの後、正しいアドレスを取得するべく、ドメインＣ−１の要素を用いて構築されるとしてよい。ドメインＣ−１は、非認可の変更があるか否かを監視する必要があるシステムのレジスタ５１４を含む（ＳＹＳＥＮＴＥＲ  ＭＳＲ、ＣＲ３等）。そして、ドメインＣ−２は、アドレス変換ページテーブル（ＰＴ）およびページフォールトハンドラ（ＰＦＨ）５１４から成る。これらのドメインが構築されると、ドメインＣ−１およびＣ−２のインテグリティに左右されるＣ−ｉドメイン（例えば、ドメインＣ−Ｎ５０６）がさらに形成されるとしてよい。更なるドメインｎは、ＡＶスキャナ５１８等、ページフォールトトラップを利用してそれらのページを保護するデバイスドライバ５１６およびアプリケーションを含むとしてもよい。
【００２９】
図６は、本発明の一実施形態に係る、サブＣドメインの構築を説明するためのフローチャート６００である。ブロック６０２において、ＡＶアプリケーション３００は、トラップすべきカーネルレジスタ５１２、および、これらのレジスタを修正可能なカーネル内のコード位置、例えば、ＣＲ３の値をゲストＯＳ２００のコンテクストのために変更可能なスケジューリングソフトウェア等を特定する。ブロック６０４において、ＡＶアプリケーションは、選択されたレジスタにトラップを設定するべくフォールトハンドラ３０４にメッセージとレジスタを修正可能なコード位置のリストとを送る。ブロック６０６において、フォールトハンドラは、レジスタおよびコード位置を、ドメインＣ−１  ５０２に入れて、レジスタおよび認証されたコード位置に対して書込トラップを設定する。この時点において、レジスタに対する非認証アクセスは全て、ドメインＤ３０６からドメインＣ−１  ５０２への書き込みであるので、保護実行環境システム内でトラップを生成し、Ｂｉｂａ違反を生成する。ブロック６０８において、ＡＶアプリケーションは、ドメインＣ−１内のレジスタの値を利用して、ドメインＣ−２  ５０４内で保護を必要とするシステムのページテーブル５１４を特定する。ブロック６１０において、ＡＶアプリケーションは、選択されたページテーブルエントリに対してトラップを設定するべくフォールトハンドラにメッセージを送り、これらの位置を修正可能な位置のリストを含める（例えば、ページフォールトハンドラ）。ブロック６１２において、フォールトハンドラは、選択されたページテーブルエントリ、ページテーブルを修正するよう認証されたコード位置に対してトラップを設定し、メモリおよびコード位置をドメインＣ−２  ５０４に入れる。この時点において、ページテーブルへの非認証アクセスは全て、ドメインＤ３０６からドメインＣ−２  ５０４への書き込みであるので、保護実行環境システムにおいてトラップを生成し、Ｂｉｂａ違反を生成する。認証される処理は全て、ドメインＣ−２  ５０４からドメインＣ−２またはドメインＣ−２からドメインＤ  ３０６への書き込みである。この時点において、コアシステム（カーネル）レジスタおよびページテーブルは、保護されている。これによって、システムは、コア要素に対してより複雑なトラップを構築することができる。
【００３０】
図７は、本発明の一実施形態に係る、アプリケーショントラップの設定を説明するためのフローチャート７００である。図７は、ドメインＣ−ｉを構築または変更するべく、図６のブロック６０４の実施形態をさらに詳細に説明するための図である。この処理は、ＡＶアプリケーションがカーネルまたはユーザメモリの一領域を保護しなければならないと判断すると常に、または、システム状態が変化して、特定のメモリ領域に対するアクセスを持たなかったコードの一領域が今や、当該領域へのアクセスを必要とする場合に行われる。ブロック７０２において、ＡＶアプリケーション３００は、保護する必要があるカーネルまたはアプリケーションメモリ内の位置を決定する。ＡＶアプリケーションは、ゲストＯＳハードウェアレジスタ５１２およびページテーブル５１４を読出し、トラップの位置を算出する。これらの値は、ドメインＣ−１  ５０２またはドメインＣ−２  ５０４にある。ブロック７０４において、ＡＶアプリケーションは、必要なメモリ位置にトラップを設定するべくフォールトハンドラ３０４にメッセージと、これらのメモリ位置を修正可能なコード位置のリストを送信する。ブロック７０６において、フォールトハンドラは、メモリ位置、および、このメモリ位置を修正する権利を持つ全てのコード位置に対して、書込トラップを設定する。フォールトハンドラはこの後、これらの要素をドメインＣ−ｉに入れる。「ｉ」は、「ｊ」がトラップの位置およびアドレスの算出に用いられる最も高いドメインレベルである場合、ｊ−１と定義される。保護されていない領域からの非認証アクセスは全て、ドメインＤ３０６からドメインＣ−ｉへの書込であるので、Ｂｉｂａ違反を生成する。しかし、ドメインＣ−ｉでの書込は、ドメイン内に複数の領域がある場合、識別する必要がある（一のメモリ領域への書込の権限が与えられている位置からの書込は、ドメインの全ての領域には許可できない）。
【００３１】
図８は、本発明の別の実施形態に係る、アプリケーショントラップの設定を説明するためのフローチャート８００である。このプロセスは、図７のプロセスの代わりとして利用されるとしてよい。ブロック８０２において、ＡＶアプリケーションは、カーネルまたはアプリケーションコード内の一の位置がドメインＣ−ｉ内のメモリ位置へのアクセスを必要としていると判断する。これは、新しいドライバまたはその他のソフトウェアのインストールが原因であるとしてよい。ブロック８０４において、ＡＶアプリケーションは、コード領域をドメインＣ−ｉ内に含めるよう求めるメッセージをフォールトハンドラに送る。ブロック８０６において、フォールトハンドラは、コード位置に対して書込トラップを設定し、コード位置をドメインＣ−ｉに入れる。
【００３２】
これまで、ＡＶアプリケーションは、保護実行環境システム内の一のエンティティとして説明してきたが、ある実施形態によると、ＡＶアプリケーションは、複数の部分から構成されており、これらの部分はシステム内の複数のドメインに分散しているとしてもよい。例えば、ある実施形態によると、ＡＶアプリケーションは、ゲストＯＳオブジェクトに対してトラップを設定するＡＶ設定（Ｃｏｎｆｉｇ）アプリケーション５１０、および、マルウェア感染を検索するべく保護されていないページおよびファイルを読出すＡＶスキャナアプリケーション５１８という２つのコンポーネントから成るとしてよい。この分割モデルでは、ＡＶ設定コンポーネントはドメインＣ５００に上昇させるが、ＡＶスキャナ５１８は相対的に低いドメインに留まるとしてよい。一実施形態によると、ＡＶスキャナは、サブＣドメインのうち最も低いサブＣドメイン、ドメインＣ−ｎ５０６に入れられるとしてよく、ＡＶスキャナは、相対的に高いドメインの全てのインテグリティに左右されるが、ドメインＤのマルウェアによるＡＶスキャナへの書込はＢｉｂａフォールトを生成するので、ドメインＤ  ３０６のマルウェアからの攻撃からは隔離される。
【００３３】
Ｂｉｂａを「リング」モードで用いる場合、ＡＶスキャナ５１８は、ドメインＣ−ｎ５０６で動作している間、ドメインＤのオブジェクトを読み出すことが許可される。感染したオブジェクトが検出されると、ＡＶスキャナはドメインＤにおいてサブプロセスを生成して、感染したオブジェクトを削除または隔離するとしてよい。ＡＶスキャナは、ドメインＣ−ｎでは実行できないので、マルウェアを攻撃することによって脅威を感じることはない。ＡＶスキャナは、新しいラベルをハードディスクドライブ（ＨＤＤ）またはソリッドステートドライブ（ＳＳＤ）３２０またはＡＶスキャンに合格したメモリページに割り当てるとしてよい。この新しいラベルは、Ｄよりも上のドメインであり、ドメインＣ−ｎよりも下のドメインである。リソースマネージャ（ＲＭ）１１０は、ページトラップがアクティブ化されている間にラベル変更要求がＡＶスキャナページから生成されたこと、および、ＡＶスキャナラベルがドメインＣ−ｎ以上のドメインにあることを確認することで、ＡＶスキャナが信頼されており（例えば、ページトラップ保護が実行されている）ラベル変更をスキャン済みのオブジェクトに対して実行することを確認する。
【００３４】
「低ウォーターマーク」モードでＢｉｂａを用いる場合、ＡＶスキャナは、自動的にラベルをドメインＤに切り替えてスキャンを実行する。感染したオブジェクトが検出されると、スキャナは即座に削除または隔離を行うとしてよいが、クリーンなオブジェクトのラベルは変更しないとしてよい。しかし、ＡＶスキャナは、上述したように、ＡＶスキャナがドメインＣ−ｎの要件を満たしていると主張することによって、自身のラベルをドメインＣ−ｎに変更するとしてよい。この要件とは、トラップが全てのクリティカルコードおよびデータ領域に配置済みであること、および、これらのトラップは、ＡＶスキャナがドメインＤで動作している間に配置されている、というものである。ＡＶスキャナ５１８は、リソーストラップのみでドメインＤのマルウェアに対して保護されている。Ｂｉｂａ制約は課されていない。Ｂｉｂａを「厳密」モードで利用する場合、ＡＶスキャナは、オブジェクトスキャンを実行し、隔離する前にドメインＤへのラベル変更を要求しなければならない。そして、完了すると、ＡＶスキャナは、クリーンなオブジェクトにラベルを付与し直すべく、ドメインＣ−ｎへのラベル変更を要求しなければならない。
【００３５】
ある実施形態によると、ＡＶスキャナをドメインＣ−ｎに入れるには、以下のような処理を行うとしてよい。ＡＶ設定アプリケーション５１０が、保護が必要なＡＶスキャナアプリケーション５１８内の位置を決定する。ＡＶ設定アプリケーションは、フォールトハンドラ３０４に対して、適切なＡＶスキャナアプリケーションの位置にトラップを配置するよう信号を送る。フォールトハンドラは、適切なトラップを設定し、位置をドメインＣ−ｎ５０６内に入れる。これは、ドメインＣ−ｎが他の全てのサブＣドメインに依存しているためである。
【００３６】
図９は、本発明の実施形態に係る、トラップの実行を説明するためのフローチャート９００である。いずれかの時点において、トラップが設定された位置に対して書込が発生する。これによって、フォールトが生成される（ＡＶスキャナメカニズムによって、または、相対的に低いインテグリティのドメインから相対的に高いインテグリティのドメインへの書込によるＢｉｂａ違反によって生成される）。ブロック９０２において、ゲストＯＳ２００のアプリケーションまたはカーネルが、トラップが設定されているメモリに書き込む場合、ページアクセスはＲＭ１１０によってフラグが立てられ、フォールトハンドラ３０４が呼び出される。ブロック９０４において、ＲＭはレジスタから一連のシステムステートテーブルを生成する。ブロック９０６において、ＲＭはフォールトハンドラを呼び出して、システムステートテーブルをフォールトハンドラに渡す。ステートテーブルは、正しく構築されていると信頼されている。ブロック９０８において、フォールトハンドラは、アクセスを試みるメモリのドメイン、および、メモリにアクセスしているコードのドメインを決定する。ブロック９１０において、試みたメモリアクセスがこのメモリのドメインと同じかそれより高いドメインからのアクセスであり、メモリにアクセスしようと試みているコード位置が当該メモリ位置を変更することが許可されている範囲に含まれている場合、フォールトハンドラは処理を許可する。ブロック９１２において、試みたメモリアクセスがこのメモリのドメインよりも低いドメインからのアクセスである場合、フォールトハンドラはこのアクセスでメモリを変更することを許可しない。
【００３７】
図１０は、本発明の別の実施形態に係る、仮想マシンマネージャ（ＶＭＭ）１００２に適用される場合の、ゲストＯＳを持つ実行コンテナインテグリティモデルを示す図である。ＶＭＭは、仮想化技術の分野で良く知られているので、利用されるとしてよい。ある実施形態によると、ＶＭＭは、一般的に理解されているＢｉｂａセキュリティポリシーを実施することができる。ＲＭ１１０は、ＶＭＭよりも高いインテグリティレベルで動作し、ＶＭＭによるＲＭを修正または破損させようという試みはセキュリティポリシーの違反となる。ＲＭは、ＶＭＭのロード処理の一環としてＶＭＭ内で信頼を構築することができ、ＶＭＭ機能をアサートする開始制御ポリシーはＢｉｂａセキュリティルールを実施する機能を含むことを確認することができる。ＲＭ内のドメインポリシーマネージャ１１２は、所与の範囲のＢｉｂａラベル（つまり、特権）を、ＶＭＭ内のＶＭポリシーマネージャ１００４に割り当てる。ＶＭＭは、供給された範囲に応じてＢｉｂａルールを実施する。ＶＭＭ内のＶＭポリシーマネージャはこの後、この範囲の特権をＶＭコンテナに割り当てる。これによって、ＶＭＭは全てのコンピューティングプラットフォームリソースをグローバルに見ていないとしても、システム全体でＢｉｂａレベルのセマンティックスの一貫性が保証される。
【００３８】
例えば、実行コンテナ１００内のＡｐｐ  Ｌ１  １０４等のアプリケーションプログラムが特権としてドメインＡ１１４を割り当てられており、ゲストＶＭ１  １００８で実行されているＡｐｐ  Ｇ１  １００６等のアプリケーションが特権としてドメインＡ１１４を割り当てられている場合、両方のアプリケーションは同様の特権を用いて動作する。さらに、Ａｐｐ  Ｌ１  １０４がＡｐｐ  Ｌ２  １０６によって利用できるように情報の格下げを行うと、Ａｐｐ  Ｌ２は、システム全体のセキュリティポリシーに違反することなく、ゲストＯＳ２００環境内のゲストＶＭ２  １０１２で実行されるＡｐｐ  Ｇ２  １０１０にこの情報を通信することができる。同様に、Ａｐｐ  Ｇ２  １０１０は、情報の格下げを行って、セキュリティポリシーに違反することなく、ゲストＶＭ３  １０１６で実行されておりドメインＣ３１０を持つＡｐｐ  Ｇ３  １０１４、および／または、Ａｐｐ  Ｌ３  １０８と共有することができる。
【００３９】
セキュリティポリシーモデルが共通して理解されているので、システム構成要素同士のやり取りを柔軟に行うことができる一方、システムのセキュリティを守るという目的は変わらず維持される。保護実行環境よりも低い最高レベルの信頼性をゲストＯＳ環境が持つと判断される場合、ＲＭは、所与の範囲のうち、ＶＭＭ環境に割り当てられていない上位にある特権レベルを確保する。ＶＭＭが侵害され、割り当てられた範囲外の特権を割り当てられている場合、ＲＭは、メモリおよびデバイスアクセスに対して範囲チェックを実行して不正行為を検出することができる。ＶＭＭ環境がセキュア開始方式（例えば、トラステッドエグゼキューションテクノロジ（ＴＸＴ））を利用して開始される場合、ＲＭは、ＶＭＭを信用してＶＭページに対する範囲チェックを実施させるとしてよい。これによって、性能に良い影響が出るとしてよい。
【００４０】
Ｂｉｂａセキュリティポリシーの一貫性をシステム全体で維持しつつ、保護実行環境と仮想化とを組み合わせるとしてよい。図１１は、本発明の実施形態に係る、仮想マシンがＡＶアプリケーションを含み、ＶＭＭ１００２に適用される場合の、ゲストＯＳ２００を備える実行コンテナインテグリティモデルを示す図である。保護実行環境は、ＶＭ１  １００８内の相対的に高い特権のＡｐｐにドメイン境界を実施するために利用されるとしてよい。ＶＭ１は、同じ特権レベルでＶＭＭによって信頼されている（例えば、ドメイン０は、ＶＭＭとして動作するＶＭである）。しかし、ＶＭが侵害されると、ＶＭはＶＭＭの動作に悪影響を与える可能性がある。
【００４１】
図１１は、メモリサンドボックス技術を利用して保護されているＶＭ１  １００８にアプリケーション（Ａｐｐ  Ｇ１  １００６）をポピュレートするべく利用される実行環境１０２２を示す図である。ＶＭＭは、ＲＭ１１０のドメインポリシーマネージャ１１２によって管理され、一般的に理解されるポリシーシンタックスおよびポリシーセマンティックスを利用して、ＶＭに対してＢｉｂａ特権を実施する。さらなるページ保護がＶＭ１  １００８内のＡｐｐ  Ｇ１  １００６に適用され得る。アプリケーションポリシーマネージャ１０２は、Ｂｉｂａポリシーが割り当てられるとしてよく、Ａｐｐ  Ｇ１  １００６に割り当てられるＢｉｂａラベルは、ＶＭＭポリシーマネージャ１００４がＶＭ１  １００８に割り当てたラベル範囲内に入っている。
【００４２】
Ｂｉｂａを認識しないＶＭ１００８内のゲストＯＳの場合、アプリケーション１００６のページ１０１８は、ＶＭＭ１００２によってＶＭＥｘｉｔトラップを生成するように登録され得るので、ＶＭマニフェスト１０２０は、ＶＭＥｘｉｔトラップを構築するためのポリシーを含み、Ｂｉｂａを認識するＶＭＭ１００２によって割り当てられるデフォルトラベルを無効化するＢｉｂａラベル割り当てを含む。
【００４３】
Ｂｉｂａを認識するＶＭ１０１２および１０１６内のゲストＯＳの場合、ＶＭは、ＶＭが作成したラベル割り当てに応じてメモリページを割り当てる。
【００４４】
本発明の実施形態は、プロセッサのマイクロコードによって実施される強制インテグリティポリシーを実装することによって、保護実行環境を提供する。インテグリティルールは、形式が定められ（例えば、Ｂｉｂａ）、検証およびセキュリティ評価を簡略化する。プロセッサハードウェア（マイクロコード）で実施することによって、侵害されたＯＳは容易にセキュリティポリシーを無効化できないことになる。本発明の実施形態は、仮想化環境および非仮想化環境の両方に適用されるとしてよく、任意のオペレーティングシステム環境で適用されるとしてよい。
【００４５】
図１２は、コンピューティングシステム１２００の実施形態を示すブロック図である。さまざまな実施形態によると、システム１２００の構成要素のうち１以上は、本発明の一部の実施形態を参照しつつ本明細書で説明する処理のうち１以上を実行可能なさまざまな電子デバイスで提供されるとしてよい。例えば、システム１２００の構成要素のうち１以上は、本明細書で説明した処理に応じて、例えば、命令を処理することによって、サブルーチンを実行することによって等、図１から図１１を参照しつつ説明した処理を実行するべく利用されるとしてよい。また、（例えば、図１２および／または図１３を参照して）本明細書で説明するさまざまなストレージデバイスは、データ、演算結果等を格納するべく利用されるとしてよい。一実施形態によると、ネットワーク１２０３を介して（例えば、ネットワークインターフェースデバイス１２３０および／または１３３０を介して）受信するデータは、プロセッサ１２０２（および／または図１３の１３０２）にあるキャッシュ（例えば、ある実施形態ではＬ１キャッシュ）に格納されるとしてよい。これらのプロセッサは、本発明のさまざまな実施形態に応じた本明細書で説明する処理を適用するとしてよい。
【００４６】
より具体的には、コンピューティングシステム１２００は、相互接続ネットワーク（またはバス）１２０４を介して通信を行う１以上の中央演算処理装置（ＣＰＵ）１２０２またはプロセッサを備えるとしてよい。このため、本明細書で説明したさまざまな処理は、一部の実施形態において、プロセッサによって実行されるとしてよい。さらに、プロセッサ１２０２は、汎用プロセッサ、ネットワークプロセッサ（コンピュータネットワーク１２０３を介してやり取りされたデータを処理するもの）、または、他の種類のプロセッサ（縮小命令セットコンピュータ（ＲＩＳＣ）プロセッサまたは複合命令セットコンピュータ（ＣＩＳＣ）プロセッサを含む）を含むとしてよい。さらに、プロセッサ１２０２は、シングルコア構成またはマルチコア構成であってよい。マルチコア構成のプロセッサ１２０２は、同一集積回路（ＩＣ）ダイ上にさまざまな種類のプロセッサコアが集積化されているとしてよい。また、マルチコア構成のプロセッサ１２０２は、対称マルチプロセッサまたは非対称マルチプロセッサとして実現されるとしてよい。さらに、図１から図１１を参照しつつ説明した処理は、システム１２００の１以上の構成要素によって実行されるとしてよい。ある実施形態によると、プロセッサ（例えば、プロセッサ１  １２０２−１）は、ハードワイヤードロジック（例えば、回路）またはマイクロコードとしてリソースマネージャ（ＲＭ）１１０を構成するとしてよい。
【００４７】
チップセット１２０６はさらに、相互接続ネットワーク１２０４との間で通信を行うとしてよい。チップセット１２０６は、グラフィクスおよびメモリ制御ハブ（ＧＭＣＨ）１２０８を含むとしてよい。ＧＭＣＨ１２０８は、メモリ１２１２と通信を行うメモリコントローラ１２１０を含むとしてよい。メモリ１２１２は、プロセッサ１２０２またはコンピューティングシステム１２００内の任意のその他のデバイスによって実行される命令シーケンスを含むデータを格納するとしてよい。さらに、メモリ１２１２は、本明細書で説明するプログラムまたはアルゴリズムのうち１以上、例えば、実行コンテナ１００、ゲストＯＳ２００、コンパイラ１２１３、実行ファイルに対応する命令、マッピング等を格納するとしてよい。このデータ（命令を含む）と同じもの、または、少なくともその一部は、ディスクドライブ１２２８、および／または、プロセッサ１２０２内の１以上のキャッシュに格納されているとしてよい。本発明の一実施形態によると、メモリ１２１２は、１以上の揮発性ストレージ（またはメモリ）デバイス、例えば、ランダムアクセスメモリ（ＲＡＭ）、ダイナミックＲＡＭ（ＤＲＡＭ）、シンクロナスＤＲＡＭ（ＳＤＲＡＭ）、スタティックＲＡＭ（ＳＲＡＭ）、または、その他の種類のストレージデバイスを含むとしてよい。ハードディスク等の不揮発性メモリはさらに、利用されるとしてよい。複数のプロセッサおよび／または複数のシステムメモリ等、他のデバイスがさらに、相互接続ネットワーク１２０４を介して通信を行うとしてよい。
【００４８】
ＧＭＣＨ１２０８はさらに、ディスプレイ１２１６と通信を行うグラフィクスインターフェース１２１４を有するとしてよい。本発明の一実施形態によると、グラフィクスインターフェース１２１４は、アクセラレーテッドグラフィクスポート（ＡＧＰ）を介して、ディスプレイ１２１６との間で通信を行うとしてよい。本発明の一実施形態によると、ディスプレイ１２１６は、例えば、ビデオメモリまたはシステムメモリ等のストレージデバイスに格納されている画像をデジタル形式からディスプレイ１２１６で解釈および表示される表示信号に変換する信号変換器を介してグラフィクスインターフェース１２１４との間で通信を行うフラットパネルディスプレイであってよい。インターフェース１２１４が生成する表示信号は、ディスプレイ１２１６で解釈された後に表示される前に、さまざまな制御デバイスを通過するとしてよい。
【００４９】
ハブインターフェース１２１８によって、ＧＭＣＨ１２０８および入出力（Ｉ／Ｏ）制御ハブ（ＩＣＨ）１２２０が通信できるようになるとしてよい。ＩＣＨ１２２０は、コンピューティングシステム１２００と通信するＩ／Ｏデバイスに対するインターフェースとなるとしてよい。ＩＣＨ１２２０は、ペリフェラルコンポーネントインターコネクト（ＰＣＩ）ブリッジ、ユニバーサルシリアルバス（ＵＳＢ）コントローラ、または、その他の種類の周辺機器であるブリッジまたはコントローラ等、周辺機器であるブリッジ（またはコントローラ）１２２４を介して、バス１２２２と通信を行うとしてよい。ブリッジ１２２４は、プロセッサ１２０２と周辺デバイスとの間のデータ経路を提供するとしてよい。他の種類のトポロジーを利用するとしてもよい。また、複数のバスは、例えば、複数のブリッジまたはコントローラを介して、ＩＣＨ１２２０と通信を行うとしてよい。さらに、ＩＣＨ１２２０と通信を行う他の周辺機器には、本発明のさまざまな実施形態によると、インテグレーテッドドライブエレクトロニクス（ＩＤＥ）または小型計算機システムインターフェース（ＳＣＳＩ）ハードドライブ、ＵＳＢポート、キーボード、マウス、パラレルポート、シリアルポート、フロッピー（登録商標）ディスクドライブ、デジタルアウトプットサポート（例えば、デジタルビデオインターフェース（ＤＶＩ））または他のデバイスが含まれるとしてよい。
【００５０】
バス１２２２は、コンピュータネットワーク１２０３と通信を行うオーディオデバイス１２２６、１以上のディスクドライブ１２２８およびネットワークインターフェースデバイス１２３０と通信を行うとしてよい。ある実施形態によると、デバイス１２３０は、有線通信または無線通信を実行可能なネットワークインターフェースコントローラ（ＮＩＣ）であってよい。他のデバイスは、バス１２２２を介して通信を行うとしてよい。また、さまざまな構成要素（例えば、ネットワークインターフェースデバイス１２３０）は、本発明の一部の実施形態によると、ＧＭＣＨ１２０８と通信を行うとしてよい。また、プロセッサ１２０２、ＧＭＣＨ１２０８、および／または、グラフィクスインターフェース１２１４を組み合わせて一のチップを形成するとしてよい。
【００５１】
さらに、コンピューティングシステム１２００は、揮発性メモリおよび／または不揮発性メモリ（またはストレージ）を備えるとしてよい。例えば、不揮発性メモリは、リードオンリーメモリ（ＲＯＭ）、プログラマブルＲＯＭ（ＰＲＯＭ）、消去可能ＰＲＯＭ（ＥＰＲＯＭ）、電気的ＥＰＲＯＭ（ＥＥＰＲＯＭ）、ディスクドライブ（例えば、１２２８）、フロッピー（登録商標）ディスク、コンパクトディスクＲＯＭ（ＣＤ−ＲＯＭ）、デジタルバーサティルディスク（ＤＶＤ）、フラッシュメモリ、光磁気ディスク、または、電子データ（命令を含む）を格納可能な他の種類の不揮発性機械可読媒体のうち１以上を含むとしてよい。
【００５２】
ある実施形態によると、システム１２００の構成要素は、図１３を参照しつつ説明するように、ポイントツーポイント（ＰｔＰ）構成にしたがって構成されるとしてよい。例えば、プロセッサ、メモリおよび／または入出力デバイスは、多くのポイントツーポイントインターフェースで相互接続するとしてよい。
【００５３】
より具体的には、図１３は、本発明の一実施形態に係る、ポイントツーポイント（ＰｔＰ）構成にしたがって構成されているコンピューティングシステム１３００を示す図である。具体的には、図１３は、プロセッサ、メモリおよび入出力デバイスが多くのポイントツーポイントインターフェースで相互接続されているシステムを示す。図１から図１２を参照しつつ説明した処理は、システム１３００の１以上の構成要素によって実行されるとしてよい。
【００５４】
図１３に示すように、システム１３００は、複数のプロセッサを備えるとしてよい。分かり易いように、このうち２つのみ、プロセッサ１３０２および１３０４を図示している。プロセッサ１３０２および６０４はそれぞれ、メモリ１３１０および１３１２と結合されるべく、ローカルメモリコントローラハブ（ＭＣＨ）１３０６および１３０８（一部の実施形態では、図１２のＧＭＣＨ１２０８と同一または同様であってよい）を有するとしてよい。メモリ１３１０および／または１３１２は、図１３のメモリ１２１２を参照しつつ説明したようなさまざまなデータを格納するとしてよい。
【００５５】
プロセッサ１３０２および１３０４は、図１３のプロセッサ１３０２を参照しつつ説明したような任意の適切なプロセッサであってよい。プロセッサ１３０２および１３０４はそれぞれ、ＰｔＰインターフェース回路１３１６および１３１８を用いて、ポイントツーポイント（ＰｔＰ）インターフェース１３１４を介してデータのやり取りを行うとしてよい。プロセッサ１３０２および１３０４はそれぞれ、ポイントツーポイントインターフェース回路１３２６、１３２８、１３３０および１３３２を用いて、それぞれのＰｔＰインターフェース１３２２および１３２４を介して、チップセット１３２０との間でデータのやり取りを行うとしてよい。チップセット１３２０はさらに、ＰｔＰインターフェース回路１３３７を用いて、高性能グラフィクスインターフェース１３３６を介して、高性能グラフィクス回路１３３４との間でデータのやり取りを行うとしてよい。
【００５６】
本発明の少なくとも１つの実施形態は、プロセッサ１３０２および１３０４を用いることによって提供されるとしてよい。例えば、プロセッサ１３０２および／または１３０４は、図１から図１１の処理のうち１以上を実行するとしてよい。しかし、本発明の他の実施形態は、図１３のシステム１３００内の他の回路、ロジックユニット、またはデバイスで実現されるとしてもよい。さらに、本発明の他の実施形態は、図１３に示す複数の回路、ロジックユニットまたはデバイスに分散して設けられているとしてもよい。
【００５７】
チップセット１３２０は、ＰｔＰインターフェース回路１３４１を用いて、バス１３４０に結合されるとしてよい。バス１３４０は、バスブリッジ１３４２およびＩ／Ｏデバイス１３４３等、１以上のデバイスが結合されているとしてよい。バス１３４４を介して、バスブリッジ１３４３は、キーボード／マウス１３４５、図１２を参照しつつ説明したネットワークインターフェースデバイス１３３０（コンピュータネットワーク１３０３に結合され得るモデム、ネットワークインターフェースカード（ＮＩＣ）等）、オーディオＩ／Ｏデバイス１３４７、および／または、データストレージデバイス１３４８等、他のデバイスに結合されるとしてよい。データストレージデバイス１３４８は、プロセッサ１３０２および／または１３０４によって実行されるコード１３４９を格納するとしてよい。
【００５８】
本発明のさまざまな実施形態によると、本明細書、例えば、図１から図１３で説明した処理は、ハードウェア（例えば、ロジック回路）、ソフトウェア（例えば、図１２および図１３を参照しつつ説明したプロセッサ等のプロセッサの処理を制御するマイクロコードを含む）、ファームウェアまたはこれらの組み合わせで実現されるとしてよい。これらのハードウェア、ソフトウェアおよびファームウェアは、コンピュータプログラム製品として、例えば、コンピュータ（例えば、プロセッサまたはコンピューティングデバイスの他のロジック）をプログラミングして本明細書で説明した処理を実行させるために用いられる命令（または、ソフトウェア手順）を格納した有形の機械可読媒体またはコンピュータ可読媒体として提供されるとしてよい。機械可読媒体は、本明細書で説明したようなストレージデバイスを含むとしてよい。
【００５９】
本明細書において「一実施形態」または「ある実施形態」という表現は、当該実施形態に関連付けて説明している特定の特徴、構造または特性が少なくとも１つの実施例に含まれることを意味する。「一実施形態において」という表現は何度も本明細書で見られるが、全てが同じ実施形態を必ずしも意味しているわけではないとしてよい。
【００６０】
また、明細書および請求項において、「結合」および「接続」という用語を用いている場合がある。本発明の一部の実施形態では、「接続」は、２つ以上の構成要素が直接的に物理的または電気的に接触していることを意味するために用いられる用語であるとしてよい。「結合」は、２つ以上の構成要素が直接的に物理的または電気的に接触していることを意味する用語であるとしてよい。しかし、「結合」は、２つ以上の構成要素が互いに直接接触していないが、互いに協働またはインタラクションすることも意味するとしてよい。
【００６１】
さらに、このようなコンピュータ可読媒体は、コンピュータプログラム製品としてダウンロードされるとしてよい。このプログラムは、通信リンク（例えば、バス、モデムまたはネットワーク接続）を介して、データ信号を利用して、リモートコンピュータ（例えば、サーバ）から要求元のコンピュータ（例えば、クライアント）へと転送されるとしてよい。
【００６２】
このように、本発明の実施形態は構造上の特徴および／または方法を構成する動作に特有の表現で説明したが、請求の主題は説明した具体的な特徴または動作に限定されるものではないと理解されたい。さらに、具体的な特徴および動作は、請求の主題を実施するための形態の一例として開示されている。
【図１】
0005487479.tif 000002
【図２】
0005487479.tif 000003
【図３】
0005487479.tif 000004
【図４】
0005487479.tif 000005
【図５】
0005487479.tif 000006
【図６】
0005487479.tif 000007
【図７】
0005487479.tif 000008
【図８】
0005487479.tif 000009
【図９】
0005487479.tif 000010
【図１０】
0005487479.tif 000011
【図１１】
0005487479.tif 000012
【図１２】
0005487479.tif 000013
【図１３】
0005487479.tif 000014