(57)【要約】      （修正有）【課題】システム内でおよびネットワークにおいて、情報フローを追跡し、フロー内の情報を保護する。【解決手段】ジェスチャーベースの署名認証を実装するシステム、方法、デバイス、および、機械可読媒体。ローカルコンピュータシステムのメモリに格納された保護データへのアクセスを統括するべく、アントラステッドソフトウェア環境からデータ保護ポリシーを生成することを含む。そして、このデータ保護ポリシーを、情報フローおよび追跡保護（ＩＦＴＰ）ロジックが管理するエンフォース可能なシステムレベルのデータ保護ポリシーへとマッピングする。次に、保護データを含む第１のメモリページにフラグを立てる。最後に、保護データを含む第１のメモリページについて生成されたデータ保護ポリシーを、ＩＦＴＰロジックおよびエンフォース可能なシステムレベルのデータ保護ポリシーを用いてエンフォースする。【選択図】図１
2011238218.tif 000002
【特許請求の範囲】
【請求項１】
ローカルコンピューティングデバイスのアントラステッド・ソース・ソフトウェア環境に常駐しているアプリケーションから、前記ローカルコンピューティングデバイスの複数のメモリページのうちの第１のメモリページに格納されている保護データへのアクセスを統括するデータ保護ポリシーを生成する段階と、
前記データ保護ポリシーを、前記ローカルコンピューティングデバイスの情報フロー追跡および保護（ＩＦＴＰ）ロジックが管理するエンフォース可能なシステムレベルのデータ保護ポリシーにマッピングする段階と、
前記保護データを含む前記第１のメモリページにフラグをたてる段階と、
前記保護データを含む前記第１のメモリページについて生成された前記データ保護ポリシーを、前記ＩＦＴＰロジックおよび前記エンフォース可能なシステムレベルのデータ保護ポリシーを用いてエンフォースする段階と
を備える方法。
【請求項２】
前記ローカルコンピューティングデバイスの前記複数のメモリページについての複数のタグを含むタグデータベースを維持する段階をさらに備え、
前記複数のタグのうちの各タグが前記複数のメモリページのうちの対応するメモリページに関連付けられており、前記タグデータベースは、前記複数のメモリページのうち保護されているメモリページを特定する請求項１に記載の方法。
【請求項３】
ネットワークを介して前記ローカルコンピューティングデバイスと遠隔コンピュータとの間で前記保護データを転送する段階をさらに備え、
前記保護データは、ネットワークパケットに含められて前記ネットワークを介して転送され、前記データ保護ポリシーが前記ネットワークパケットに連結されている請求項２に記載の方法。
【請求項４】
前記ネットワークパケットに、前記複数のタグのうちの、前記保護データに関連付けられている１以上のタグを連結する段階をさらに備える請求項３に記載の方法。
【請求項５】
遠隔コンピューティングデバイスに存在する遠隔ＩＦＴＰロジックで、前記ネットワークから前記ネットワークパケットを受信する段階と、
前記遠隔ＩＦＴＰロジックが、前記ネットワークパケットから前記データ保護ポリシーを切り離す段階と、
前記遠隔ＩＦＴＰロジックが、前記遠隔コンピューティングデバイス上の前記ネットワークパケットに常駐している前記データについて前記データ保護ポリシーをエンフォースする段階と
をさらに備える請求項４に記載の方法。
【請求項６】
遠隔コンピューティングデバイスに存在する遠隔ＩＦＴＰロジックで前記ネットワークから前記ネットワークパケットを受信する段階と、
前記遠隔ＩＦＴＰロジックが、前記ネットワークパケットから受け取った前記データに、前記ネットワークパケットに連結されている前記１以上のタグを関連付ける段階と
をさらに備える請求項４に記載の方法。
【請求項７】
前記アプリケーションが、前記第１のメモリページに格納されている前記保護データに対するアクセス要求を発行する段階と、
前記ローカルコンピューティングデバイスに存在するローカルＩＦＴＰロジックが、前記アクセス要求を傍受する段階と、
前記ローカルＩＦＴＰロジックが、前記第１のメモリページに関連付けられている前記システムレベルのデータ保護ポリシーをチェックする段階と、
前記ローカルＩＦＴＰロジックが、前記アプリケーションに対して、前記システムレベルのデータ保護ポリシーに基づいて前記第１のメモリページへのアクセスを許可するかを判断する段階と
をさらに備える請求項２に記載の方法。
【請求項８】
前記ＩＦＴＰロジックはハイパーバイザに常駐している請求項１に記載の方法。
【請求項９】
前記ＩＦＴＰロジックは、前記ローカルコンピューティングデバイス上のハードウェア回路に常駐している請求項１に記載の方法。
【請求項１０】
システムであって、
ネットワークと、
前記ネットワークに連結されたローカルコンピューティングデバイスと
を備え、
前記ローカルコンピューティングデバイスは、
前記ローカルコンピューティングデバイスのアントラステッド・ソース仮想マシンに常駐しているアプリケーションから、前記ローカルコンピューティングデバイスの複数のメモリページのうちの第１のメモリページに格納されている保護データへのアクセスを統括するデータ保護ポリシーを生成して、
前記データ保護ポリシーを、情報フロー追跡および保護（ＩＦＴＰ）ロジックが管理するエンフォース可能なシステムレベルのデータ保護ポリシーにマッピングして、
前記保護データを含む前記第１のメモリページにフラグをたて、
前記保護データを含む前記第１のメモリページについて生成された前記データ保護ポリシーを、前記ＩＦＴＰロジックおよび前記エンフォース可能なシステムレベルのデータ保護ポリシーを用いてエンフォースする
システム。
【請求項１１】
前記ローカルコンピューティングデバイスはさらに、前記ローカルコンピューティングデバイスの前記複数のメモリページについての複数のタグを含むタグデータベースを有し、
前記複数のタグのうちの各タグが前記複数のメモリページのうちの対応するメモリページに関連付けられており、前記タグデータベースは、前記複数のメモリページのうち保護されているメモリページを特定する請求項１０に記載のシステム。
【請求項１２】
前記ローカルコンピューティングデバイスはさらに、
ネットワークを介して前記ローカルコンピューティングデバイスと遠隔コンピュータとの間で前記保護データを転送して、
前記保護データは、ネットワークパケット内に含められて前記ネットワークを介して転送され、前記データ保護ポリシーが前記ネットワークパケットに連結されている請求項１１に記載のシステム。
【請求項１３】
前記ローカルコンピューティングデバイスはさらに、
前記ネットワークパケットに、前記複数のタグのうちの、前記保護データに関連付けられている１以上のタグを連結する請求項１２に記載のシステム。
【請求項１４】
遠隔コンピューティングデバイスをさらに備え、
前記遠隔コンピューティングデバイスは、
前記遠隔コンピューティングデバイスに存在する遠隔ＩＦＴＰロジックで、前記ネットワークから前記ネットワークパケットを受信して、
前記ネットワークパケットから前記データ保護ポリシーを切り離して、
前記遠隔コンピューティングデバイス上の前記ネットワークパケットに常駐している前記データについて前記データ保護ポリシーをエンフォースする請求項１３に記載のシステム。
【請求項１５】
遠隔コンピューティングデバイスをさらに備え、
前記遠隔コンピューティングデバイスは、
前記遠隔コンピューティングデバイスに存在する遠隔ＩＦＴＰロジックで、前記ネットワークから前記ネットワークパケットを受信して、
前記ネットワークパケットから受け取った前記データに、前記ネットワークパケットに連結されている前記１以上のタグを関連付ける請求項１３に記載のシステム。
【請求項１６】
前記ローカルコンピューティングデバイスはさらに、
前記第１のメモリページに格納されている前記保護データに対する前記ローカルコンピューティングデバイスのアプリケーションからのアクセス要求を傍受して、
前記第１のメモリページに関連付けられている前記システムレベルのデータ保護ポリシーをチェックして、
前記アプリケーションに対して、前記システムレベルのデータ保護ポリシーに基づいて前記第１のメモリページへのアクセスを許可するかを判断する
請求項１０に記載のシステム。
【請求項１７】
前記ＩＦＴＰロジックはハイパーバイザに常駐している請求項１０に記載のシステム。
【請求項１８】
中央処理装置（ＣＰＵ）をさらに備え、
前記ＩＦＴＰロジックは前記ＣＰＵ内に常駐している請求項１０に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、システム内でおよびネットワークにおいて、情報フローを追跡すること、および、フロー内の情報を保護することに係る。
【背景技術】
【０００２】
通常のエンドユーザにおけるコンピューティング環境（企業、中小企業、一般消費者家庭のものを含む）は、サイズおよび複雑度が増してきている。これらシステムの機能が高度になっているので、「標準的な」商用の既製の（ＣＯＴＳ）コンピュータシステムを、重要なインフラストラクチャに利用したり、または慎重に扱うべきデータへアクセスするクライアント等として利用したりすることも稀ではなくなる。
【０００３】
オペレーティングシステムおよびクライアントアプリケーションの複雑性が増すにつれて、スパイウェアおよびルートキット等の悪意のあるソフトウェアにとっての機会が増え、システムを危機に曝したり、場合によってはネットワークにおいて急速に伝播してしまったりするようになる。情報が盗まれたり、悪用されたりする事例が増えても当然である。
【０００４】
これら情報の盗難の多くは、単に信頼できないオペレーティングシステムから生じる。悪意のコードは簡単にオペレーティングシステムのカーネルに「フック」することができ、これにより、高度な特権を有する、悪意を持った環境がシステムの全てのアプリケーションに対するホストとして振る舞うこととなる。こうなると悪意のある攻撃はランダムに行われるものではなくて、データを盗むという特定の意図を有する場合が多い。慎重に扱うべき情報および／または制約されたリソースへのアクセスを統括するポリシーは、マルウェアが生存するものと同じ環境を利用して特定およびエンフォースが行われる、ということから危険に曝される。最後に、処理の観点からは、機密データが意図せずリークしてもそれは目に見えず、管理者が機密情報のセキュリティおよび機密ポリシーをエンフォースして、機密情報に対して制約を設ける助けとなるツールは少ない。
【０００５】
本発明の実施形態を限定ではない例示で図示しており、添付図面においては、同様の参照願号が類似した部材を示す。
【図面の簡単な説明】
【０００６】
【図１】情報フローを追跡および保護するコンピューティングシステムの一実施形態の選択された側面を示す高レベルブロック図である。
【図２】情報フローを追跡および保護する際に利用されるコンピュータシステムの特定のソフトウェア、ファームウェア、およびハードウェアコンポーネントの一実施形態を示す。
【図３】データ保護ポリシーを規定およびマッピングするプロセスの一実施形態のフロー図である。
【図４】入ってくるデータ保護ポリシーを変換およびマッピングするプロセスの一実施形態のフロー図である。
【図５】ローカルマシンにデータセキュリティポリシーをエンフォースするプロセスの一実施形態のフロー図である。
【図６】システムのトラストコプロセッサのハードウェアに実装されるＩＦＴＰロジックの一実施形態を示す。
【発明を実施するための形態】
【０００７】
実施形態は概して、情報フローを追跡および保護するシステム、方法、および装置に関する。
【０００８】
図１は、情報フローを追跡および保護するコンピューティングシステムの一実施形態の選択された側面を示す高レベルブロック図である。
【０００９】
コンピュータシステム１００が示されている。コンピュータシステムは、デスクトップ、サーバ、ワークステーション、ラップトップ、ハンドヘルド、テレビセットトップ、メディアセンター、ゲームコンソール、統合されたシステム（例えば車両内のもの等）、その他の種類のコンピュータシステムであってよい。一部の実施形態では、コンピュータシステム１００は、複数のコンポーネントを連結するシステムボード１０２（マザーボード）を含む。例えばシステムボード１０２は、配線および特定のインタフェースを利用してコンポーネント間を連結することができてよい。システムボード１０２は、連結されたコンポーネントに対して給電してよい。加えて、システムボードは、複数のコンポーネントが互いに通信できるように通信インタフェースを提供してよい。
【００１０】
システムボード１０２に連結されるコンポーネントのなかに、１以上の中央処理装置（ＣＰＵ）がある。多くの実施形態においては潜在的に多くのＣＰＵが存在するが、図１に示す実施形態では、ＣＰＵを１つだけ（ＣＰＵ１０４）示すことで明瞭性を期している。ＣＰＵ１０４は、Ｉｎｔｅｌ（登録商標）Ｃｏｒｐｏｒａｔｉｏｎ社製のＣＰＵまたは別のブランドのＣＰＵであってよい。ＣＰＵ１０４は１以上のコアを含む。示されている実施形態では、ＣＰＵ１０４は、コア１０６、コア１０８、コア１１０、およびコア１１２という４つのコアを含む。他の実施形態ではＣＰＵ１０４は、図１に示す４つのコアより大きい数のコア、または小さい数のコアを含んでもよい。多くの実施形態では、各コア（コア１０６等）が、１以上の実行ユニット、リタイヤユニット、一式の汎用および専用レジスタ等の内部機能ブロックを含む。図１に示すコアがマルチスレッドまたはハイパースレッドである場合には、各ハードウェアスレッドをコアとみなすこともできる。
【００１１】
ＣＰＵ１０４は、さらに、キャッシュ１１４等の１以上のキャッシュを含んでよい。図示されていない多くの実施形態では、キャッシュ１１４以外のさらなるキャッシュを実装して、各コアおよびメモリの実行ユニット間にキャッシュの複数のレベルが存在するようにする。異なる実施形態では、キャッシュは異なる方法で分配されてもよい。キャッシュ１１４は、異なる実施形態の数多くの異なるサイズのうちの１つであってよい。例えば、キャッシュ１１４は、８メガバイト（ＭＢ）のキャッシュ、１６ＭＢのキャッシュ等であってよい。加えて、異なる実施形態では、キャッシュは直接マッピングされたキャッシュ、フルアソシアティブ方式キャッシュ、複数の方法のセットアソシアティブ方式のキャッシュ、または、別の種類のマッピングを利用するキャッシュであってもよい。各キャッシュは、それぞれのＣＰＵの全てのコア間で共有される１つの大きな部分を含んでよく、または、複数の別個の機能スライスに分割されてもよい（例えば各コアにつき１つのスライスといった具合に）。各キャッシュも、全てのコア間で共有される１つの部分、および、コアごとに別の機能スライスである複数の他の部分を含んでよい。
【００１２】
多くの実施形態では、ＣＰＵ１０４はシステムメモリ１１６に通信可能に連結されている。システムメモリ１１６は、システムボード１０２に、または、基板に、インラインメモリモジュールの一部として物理的に接続される複数のメモリデバイスを含んでよい。多くの実施形態では、あるメモリデバイスの基本構造は、動的ＲＡＭ（ＤＲＡＭ）の構造であってよい。他の実施形態では、不揮発性メモリまたは相変化メモリ等のメモリを利用することもできる。
【００１３】
ハイブリッドメモリ１１６デバイス（１または複数）は、高速（ＨＳ）入出力リンク１１８（インターコネクトバス等）を介してＣＰＵ１０４に通信可能に連結される。異なる実施形態では、ＣＰＵ１０４およびシステムメモリ１１６は、インタフェースを介して通信してよい。例えば、完全にバッファリングされたディム（ＤＩＭＭ：dual-inline-memory-module）インタフェース、スケーラブルメモリインタフェース（ＳＭＩ）、専用のポイントツーポイントインタフェース（Ｉｎｔｅｌ（登録商標）によるＱｕｉｃｋＰａｔｈ技術等）、その他同様の高速インタフェースが挙げられる。
【００１４】
多くの実施形態では、リンク１１８は、データ、アドレス、制御および／またはクロック情報を搬送することのできる１以上の光学配線、金属配線、その他の配線（ライン）を含んでよい。多くの実施形態ではリンクは、各々がＣＰＵ１０４とシステムメモリ１１６との間でデータを搬送する複数のレーンを含む高速シリアルインタフェースである。
【００１５】
多くの実施形態では、ＣＰＵ１０４は、ＨＳリンク１１８を介して送受信される情報を変換するメモリコントローラ１２０を含む。メモリコントローラ１２０は、リンク１１８に直接アクセスするＨＳ  Ｉ／Ｏインタフェース（不図示）に連結されてよい。図示されていない他の実施形態では、メモリコントローラ１２０は、システムボード１０２に直接連結された離散デバイスであっても、システムボード１０２に連結された別のデバイス（例えばメモリコントローラハブ）内に潜在的に集積されていてもよい。
【００１６】
ＣＰＵ１０４は、入出力（Ｉ／Ｏ）ハブコンプレックス１２２に、集積Ｉ／Ｏインタフェース１２４を介して連結されてよい。Ｉ／Ｏハブコンプレックス１２２は、１以上のＩ／ＯデバイスおよびＣＰＵ１０４の間に通信インタフェースを提供する。例えばＩ／Ｏハブコンプレックス１２２は、コンピュータシステム１００を外部ネットワーク１２８（コンピュータシステム１００の外部のネットワーク）に連結するネットワークＩ／Ｏインタフェース１２６に連結されてよい。外部ネットワーク１２８の例には、家庭ネットワーク、企業内のローカルイントラネット、ワイドエリアネットワークトポロジーにわたり分散分配されたネットワーク、またはインターネットが含まれてよい。Ｉ／Ｏハブコンプレックス１２２も、任意の通信プロトコルリンク（例えばユニバーサルシリアルバス（ＵＳＢ）、ＩＥＥＥ１３９４ファイヤワイヤ、ＳＣＳＩ（スモールコンピュータシステムインタフェース）等）への通信を制御する１以上の集積ホストコントローラを有してよい。
【００１７】
多くの実施形態では、トラストコプロセッサ１３０は、Ｉ／Ｏハブコンプレックスに集積されている。一部の実施形態では、トラストコプロセッサ１３０は、Ｉｎｔｅｌ（登録商標）Ｃｏｒｐｏｒａｔｉｏｎのトラステッドプラットフォームモジュール、または、暗号鍵、セキュアなローカルストレージ、遠隔立証、その他のハードウェアセキュリティメカニズムを利用する情報保護のハードウェアレベルのセキュリティエンフォースのために設計されたその他の種類の暗号プロセッサを含む。多くの実施形態では、トラストコプロセッサ１３０は、Ｉ／Ｏハブコンプレックスに集積されているが、図示されない他の実施形態では、トラストコプロセッサ１３０がコンピュータシステム１００の他の回路に集積されていても、独立型のチップとして実装されてもよい。
【００１８】
加えて、ハイパーバイザ２００および測定されたソフトウェア環境２０２を介するものとして記載される情報フローの追跡および保護（ＩＦＴＰ）１３２ロジックからの情報は、様々な実施形態において、ハードウェアトラストコプロセッサ内の回路として、ソフトウェアで、ファームウェアで、またはこれらの種類のロジックの任意のものの組み合わせで、実装することができる。ＩＦＴＰロジックの詳細な実装が図２に示されている。
【００１９】
図２は、情報フローを追跡（トレース）および保護する際に利用されるコンピュータシステムの特定のソフトウェア、ファームウェア、およびハードウェアコンポーネントの一実施形態を示す。
【００２０】
コンピュータシステムは、図１に示すハードウェアの特定の実装等の特定のハードウェアを含んでよい。多くの実施形態においては、コンピュータシステムはハイパーバイザを含む。ハイパーバイザは、仮想マシンモニタ（ＶＭＭ）と称されることもあり、複数の動作環境がコンピュータシステム上でコンカレントに実行することを可能とする。各動作環境（例えばオペレーティングシステム（ＯＳ））をゲストＯＳと称することがある。ハイパーバイザは、各ゲストＯＳに特定のプラットフォームリソースの利用を許可することができる。例えば、各ゲストＯＳは、システムメモリの特定の部分、および、他のハードウェアコンポーネントを割り当てられ、利用することができる。多くの実施形態では、あるゲストＯＳが、１タイムスライスにおいてコンピュータシステムリソースの制御を与えられ、次いで、別のゲストＯＳが制御を与えられ、といったようにしてラウンドロビン方式で、またはその他の時間共有方式で制御を与える。コンピュータシステムリソースの制御の委譲は、ハイパーバイザにより管理される。
【００２１】
ハイパーバイザは、多くの実施形態でソフトウェア実装される。ハイパーバイザは、ハードウェアの上に直接低レベル保護モードで実行される。例えばハイパーバイザは、ＣＰＵ１０４、トラストコプロセッサ１３０、およびネットワークＩ／Ｏハードウェアインタフェース１２６と直接協同する。
【００２２】
図２に示す実施形態では、２つのゲストソフトウェア環境／ＯＳが存在している。図示されていない他の実施形態では、これ以上のゲストソフトウェア環境があってもよい。特に図２では、測定されたソフトウェア環境２０２およびアントラステッドソフトウェア環境２０４の両方がコンピュータシステム上で動作されており、潜在的に、ハイパーバイザ２００が決定した時間割り当てによってハードウェアのタイムスライスを共有する。多くの実施形態では、これらソフトウェア環境は、ハイパーバイザ２００の上で実行されてはいても、ハイパーバイザの存在に気づいていない場合がある。
【００２３】
起動時に、および潜在的には、動作中の他の時間に、セキュリティ測定の実装等により、測定されたソフトウェア環境２０２が呼び出される。測定されたソフトウェア環境２０２は、機動時に自身の整合性をチェックされてよい。カーネルおよびその他のコアＯＳ構造の実際の測定および立証は、トラステッドコプロセッサ１３０に実装されるハードウェアセキュリティプロトコルを利用することで（例えば、ハッシュテーブルを利用して公開および秘密暗号鍵を利用することで、測定された環境の現在の画像が、既に公知のクリーンな画像のバージョンに整合するかを検証することで）実行されてよい。この測定は、コンピュータシステムの起動時に行うことができるのみならず、潜在的には、コンピュータシステムが最後の測定から一定の時間が経過した後であっても動作している場合に、一定の間隔毎に行うこともできる。従って任意の時点において、測定された環境は、悪意のあるコードによる侵入がない公知の安全な動作環境となる。
【００２４】
アントラステッドソフトウェア環境２０６は、全く測定または立証を受けさせなくてもよく、セキュリティ測定を殆どまたは全く行わずに実行することもできる。この環境は、その環境下で動作するソフトウェアアプリケーションに対して、悪意のあるコードが潜在的に情報の整合性を含む場合のあるセキュリティ上のリスクを生じかねない。
【００２５】
測定された環境２０２およびアントラステッド環境２０４というこれら２つのソフトウェア環境は、ハイパーバイザ２００の上で動作して、ハイパーバイザ２００と接触するよう通信可能である。具体的には、これら２つの環境およびハイパーバイザ２００間の通信ハンドシェークを処理するアプリケーションインタフェースが存在する。メモリ・タギング・インタフェース２０６により、測定されたソフトウェア環境２０２およびハイパーバイザ２００間で通信コンタクトを生じさせることができ、アプリケーション・タギング・インタフェース２０８により、アントラステッドソフトウェア環境２０４およびハイパーバイザ２００間で通信コンタクトを生じさせることができる。これらアプリケーションインタフェースは、ハイパーバイザ２００およびソフトウェア環境が利用可能な一式の呼び出し／命令（コンピュータプラットフォーム拡張、命令セット等）を含みうる。
【００２６】
多くの実施形態では、ネットワークパケットがネットワーク１２８からハードウェアネットワークＩ／Ｏインタフェース１２６を介して到達する場合、このパケットは、測定されたソフトウェア環境２０２の、入ってくるタグ検証／生成モジュール２１０に到達する。入ってくるタグのモジュール２１０は、パケットの内容に基づく情報タグを生成する。このモジュールは、整合するパケット基準に基づき固有のタグを生成することのできる特殊パケットパーサである。多くの実施形態では、入ってくるパケットは、ネットワーク１２８においてあるコンピュータシステムから別のコンピュータシステムへと転送される一定の量のデータを含む。入ってくるタグのモジュール２１０は、データを特定して、パケットのデータを利用するためにパースして、ローカルコンピュータシステム（図１および図２に示すコンピュータシステム）に格納する。入ってくるタグのモジュール２１０はさらに、固有のタグを生成して、これらをコンピュータシステムでローカルに利用することで、入ってくるネットワークパケットからパースされた、特定されたデータの利用を追跡することができる。
【００２７】
一部の実施形態では、ネットワークパケットは、データとともに到達するだけではなく、受信側のコンピュータシステムに対して、パケットのデータの利用に関するセキュリティを知らせるためのタグを添付されて到達することもある。例えば、ローカルシステムで必要となるセキュリティレベルによっては、何のセキュリティも持たずにパケットが受信される場合もあるが、この場合には、入ってくるタグのモジュール２１０が、パケットに到達するデータの一般基本レベルのセキュリティタグを生成してよい。他方で、別のパケットが、パケット内のデータの取り扱いに最高レベルのセキュリティの確保を要求するタグを添付されて到着する場合もある。この場合には、入ってくるタグのモジュール２１０は、パケットに含められて受信されるデータについて、異なるセキュリティタグセットを生成することができる。この生成されたセキュリティタグセットは、データにアクセスするためにはローカル実体のいずれに対しても、さらなるセキュリティ測定を行う要件を課す場合があり、極端な例では、ローカルのアントラステッドソフトウェア環境２０４が、パケット内のデータには全くアクセスできないようにするものもある。
【００２８】
入ってくるタグのモジュール２１０は、入ってくるパケットに添付されているタグ情報をタグポリシーモジュール２１２に渡してよい。タグポリシーモジュール２１２は、入ってくるパケットに添付されたタグから受信された、または入ってくるタグのモジュール２１０が生成したタグポリシーが正確にエンフォースされていることを検証する。例えば、あるポリシーがパケット内の入ってくるデータの格納に利用されるローカルメモリページがコピーできるか否かを決定することができる。より制限されたタグセキュリティ設定においては、タグポリシーモジュール２１２は、入ってくるタグのモジュール２１０に、データに利用されたメモリページのコピーを禁じるタグを生成するよう通知してよい。このように生成された制限タグは、入ってくるタグのモジュール２１０からハイパーバイザ２００のメモリ追跡モジュール２１４に送信される。
【００２９】
メモリ追跡モジュール２１４は、ＣＰＵ１０４自身の拡張として、メモリ追跡およびエンフォース機能を提供する。メモリ追跡モジュール２１４は、物理メモリのタグデータベース２１６を管理する。タグデータベース２１６は、メモリ保護／管理モジュール２１８から直接アクセスされる。多くの実施形態では、システムメモリ１１６を複数のセグメントに分割する。システムメモリ１１６を分割することにより、セグメントごとに別個のセキュリティ保護が可能となる。多くの実施形態では、１セグメントのサイズは、物理的な１ページのメモリのサイズ（例えば４キロバイト）であり、他の実施形態では、１メモリセグメントのサイズは、１メモリページのサイズより小さくても大きくてもよい。多くの実施形態では、タグデータベース２１６は、セグメント毎に少なくとも１つのタグを含んでよい。他の実施形態では、タグデータベースのサイズを最小化させるために、ベースラインの保護の量を超える保護を有するセグメントのみに、追加された保護を記述するタグを含める。ベースライン保護を利用する他のセグメントにおいては（例えばタグポリシーモジュール２１２が決めるようなもの）、タグが存在せず、タグが単になくてよい（ヌルポインタ等）。
【００３０】
様々なレベルのメモリセグメント保護は、タグポリシーモジュールが決定してよい。例えば単純な方法においては、２つの保護レベルのみが存在してよい（例えば、セグメントが保護される、または保護されない、といったように）。より複雑な方法では、数多くの保護レベルが存在しており、個々のセグメントの保護レベルを、そのセグメントに格納されているデータの扱いに必要となる慎重度合いに応じて決定することができる。これよりさらに複雑な方法では、レベル０：セグメントの読み書きアクセスができる、レベル１：セグメントに読み出しアクセスのみができる、レベル２：セグメントにアクセスができない、という３つの保護レベルがあるようなものもある。これよりさらに複雑な保護方法としては、これら３つのアクセスの条件を各セグメントに設けたうえで、アクセスの条件と対応していたり、いなかったりする幾らかのユーザのアクセス権レベルがある、というものもある。例えば、未知のユーザ、登録済みユーザ、登録済み管理者等が、ユーザレベルの可能性の一部を有しているような場合である。未知のユーザは、どのセグメントにもアクセスを有しておらず、登録済みユーザは一定のセグメントに読み出しアクセスができるが、他のセグメントに対しては読み出しアクセスしかできず、登録済み管理者は全てのセグメントにフルアクセスを有する、といった次第である。
【００３１】
異なる実施形態では、入ってくるタグのモジュール２１０は、タグを含まないパケット、送信システムに特有のタグを有するパケット、または、グローバルタグを有するパケットを受信しうる。送信システムに特有のタグとは、遠隔コンピュータシステムが生成するローカル保護ポリシーに関するタグのことである。遠隔コンピュータシステムは、ローカルタグ情報を、保護すべきデータを含むパケットとともに送信してよい。この種類のタグは、ローカル保護ポリシーを用いて生成されているので、他のシステムにとっては利点があろう、ここで、このポリシーは、他のコンピュータシステムが利用するものと同じ種類のポリシーであってはならない。一部の実施形態では、入ってくるタグのモジュール２１０およびタグポリシーモジュール２１２は、この種類のタグの遠隔ポリシーを傍受して、遠隔タグをミラーするローカルタグを生成することができてよい。この種類のタグを、遠隔環境からローカル環境に変換する能力は、遠隔タグシステムがローカルシステムにどのくらい類似しているかの関数であってよい。この種類の傍受ポリシーは、コンピュータシステム間で異なる保護レベルを生じうる。他方で、グローバルタグとともに受信されたパケットは、幾つかのコンピュータシステム間で標準化されたタグポリシーを利用する。グローバルタグ保護ポリシーに準拠する全てのコンピュータシステムは、ネットワークパケットからタグを直接インポートして、ネットワークパケットに添付されたタグ内で、システム間で転送された保護ポリシーを利用することができる。標準化されたデータ保護ポリシーにより、タグ情報を交換する、全ての参加コンピュータシステム間でデータの全権保護が徹底される。
【００３２】
入ってくるタグのモジュール２１０は、入ってくるパケットを、パケット内のタグをパースすることで処理する。そして、これらタグをメモリ追跡モジュール２１４に登録する。登録プロセスによって、タグは、ネットワークパケットから受け取ったデータを格納している１以上のメモリセグメントに関連付けられる。メモリ追跡モジュール２１４は、メモリ保護／管理モジュール２１６に対して、タグデータベース２１６を更新するよう通知する。この更新は、新たに到着するデータを格納するメモリセグメントと関連付けられたタグデータベース内の特定の位置のタグセキュリティ情報からなっていてよい。例えば、高度に保護されたデータがネットワークパケットで送られてくる場合がある。このネットワークパケットは、ローカルコンピュータシステム内のアントラステッド環境にデータに対するアクセス権がないことを伝えるタグを含んでいる場合がある。次いで、データを、セグメント２４５のシステムメモリに格納する。そしてこのタグデータベースを位置２４５で更新して、関連セグメントのセキュリティレベルを上げ、いかなるアントラステッド環境もがこのセグメントにアクセスしないようにする。この後で、もしもアントラステッド環境のオペレーティングシステムのユーザがアクセスを試みると、このアクセスの試みは、メモリ保護／管理モジュール２１８により処理されて、次に、そのセグメントをタグデータベース２１６から探す。ユーザのセキュリティレベルおよびメモリセグメントのより高いセキュリティレベルが分かると、メモリ保護／管理モジュール２１８は、ユーザがこのセグメントに対するアクセス可能な程度に高いセキュリティクリアランスを有さないことを認知して、この要求を拒否する。
【００３３】
出てゆくタグ検証／生成モジュール２２０は、出てゆくパケットに関するタグ情報について利用される。出てゆくタグのモジュール２２０は、タグを、別のコンピュータシステムまたは別の仮想マシンとのセキュリティ関連付けにマッピングしてよい。言い換えると、出てゆくタグのモジュール２２０が宛先システムのセキュリティ関連付けを知っている場合には、タグを、遠隔システムに準拠するように修正することができる。出てゆくタグのモジュール２２０はさらに、現在タグ付けされているパケットのタグを外すこともできる（例えばパケットが、セキュリティタグを利用しない遠隔ネットワークまたはシステムに向けて発送された場合等）。加えて、ターゲットの宛先システムが同じデータセキュリティポリシーを実際に利用している場合には、出てゆくタグのモジュール２２０は、出てゆくパケットにタグを埋め込んで、準拠している遠隔システムで情報が追跡されるようにする。異なる実施形態では、出てゆくパケットのターゲットとなるシステムは、遠隔システム、または、ローカルシステムの別の仮想マシンであってよい。
【００３４】
入ってくる観点からは、パケットは、ネットワーク１２８から、ネットワークＩ／Ｏインタフェース１２６を介して到着してよい。パケットは、入ってくるタグのモジュール２１０で受信され、ここでパケットがパースされ、パケットのデータをタグ情報から分離させる（もしある場合には）。タグが存在していない場合には、入ってくるタグのモジュール２１０は、タグポリシーモジュール２１２に対して、利用すべき正しいセキュリティパラメータについて問い合わせた後で、データのタグを作成してよい。そして入ってくるタグのモジュール２１０からタグをメモリ追跡モジュール２１４に送信して、メモリ追跡モジュール２１４は、メモリ保護／管理モジュール２１８と通信してタグデータベース２１６にアクセスする。入ってくるタグのモジュール２１０は、パケットからデータをアントラステッドソフトウェア環境２０４に送信する。アントラステッド環境のソフトウェアで実行されているネットワークインタフェース２２２は、データを受信して、これはアントラステッド環境で実行されているアプリケーション２２４により利用されてよい。あいにく、この環境はアントラステッドであるので、マルウェア２２６等の他の悪意のあるプログラムもこのアントラステッド環境で動作することができる。アントラステッド環境のソフトウェアの未知の性質上、この特定のソフトウェアのデータへのアクセスには制限を設けてよい。アントラステッド環境に常駐している実体に許可されるアクセスレベルは、受信したデータを格納する１以上のメモリセグメントに関連するタグ情報に記述されているセキュリティポリシーが決定する。
【００３５】
出てゆく観点からは、アントラステッドソフトウェア環境２０４のアプリケーション２２４は、ネットワークパケットのデータを、外部の実体（例えばネットワーク１２８上の別のコンピュータシステム）に送信しようと試みる。アントラステッド環境は、システムメモリに格納されているデータをとって、ネットワークソフトウェアインタフェース２２２を利用してこのデータパケットを送信する。パケットは構築されており、サポートされてネットワークに送信されるが、ネットワークに達する前に、出てゆくタグのモジュール２２０に傍受される。出てゆくタグのモジュール２２０は、パケット内のデータのセキュリティレベルを、メモリ追跡モジュール２１４に問い合わせる。これを実行するべく、出てゆくタグのモジュール２２０は、パケット内のデータについてメモリ追跡モジュールに対してクエリを送信する。メモリ追跡モジュール２１４は、メモリ保護／管理モジュール２１８を利用して、タグデータベース２１６からデータのこのタグ情報を探す。タグ情報を取得して、出てゆくタグのモジュール２２０に戻し、次いで、出てゆくタグのモジュール２２０は、タグポリシーモジュールに問い合わせて、取得したタグ情報に記載されているセキュリティレベルのデータについてのポリシーを決定する。出てゆくタグのモジュール２２０およびタグポリシーモジュール２１２は、先ず、データを遠隔コンピュータシステムに送信してよいかを検証する。
【００３６】
データの送信が許可されない場合には、ネットワークパケットをブロックしてこの試みを妨害する。データの送信が許可される場合には、次に、パケットにタグ情報を添付するかの決定を行う。一部の実施形態では、パケットのターゲットである遠隔コンピュータシステムが、準拠するデータ・タギング・システムを有しているので、タグデータベースに格納されている実際のタグ（１または複数）をパケットに添付して送信することができる。多くの実施形態では、タグポリシーモジュールは、同じタグベースのデータ追跡システムを有する公知の遠隔コンピューティングシステムのデータベースに格納またはアクセスを行うことができる。他の実施形態では、遠隔コンピュータシステムは、同じタグベースのデータ追跡システムに準拠しておらず、タグポリシーモジュールが準拠している別のタグベースのシステムを利用しているような場合もある。この場合には、タグポリシーモジュール２１２は、出てゆくタグのモジュール２２０に、タグ変換情報および固有のタグが、遠隔システムに準拠しているタグで置き換えられたことを通知する。また別の実施形態では、遠隔コンピュータシステムはその素性が知られておらず、全てのタグ情報がネットワークに送り出される前にデータパケットから外される場合もある。いずれにしても、このプロセスが終了すると、出てゆくタグのモジュール２２０は、パケットをネットワーク１２８経由で遠隔システムに送信する。
【００３７】
多くの実施形態では、アントラステッド環境で実行されるアプリケーションは、実際にデータを作成して、さらに、データに関連するセキュリティレベルを示してよい。極端なシナリオでは、アントラステッドソフトウェアアプリケーションは、自身のアクセス特権よりも高いアクセスレベルを特定することができる。従ってデータを作成してシステムメモリに格納した後で、アントラステッドソフトウェアアプリケーションは、測定された環境に対して、もはや作成したデータにアクセスできないことを示してよい。
【００３８】
図２はＩＦＴＰロジックをローカルハイパーバイザの一部として詳述しているが、ＩＦＴＰロジックが、異なる実施形態では多くの異なる位置に実装可能であることは、既に述べたとおりである。この代替的な実施形態の１つが図６に示されており、ここでは、ＩＦＴＰロジックのエレメントがＣＰＵに実装されていることが分かる。
【００３９】
図３は、データ保護ポリシーを規定およびマッピングするプロセスの一実施形態のフロー図である。
【００４０】
このフロー図は、コンピュータシステム内で相互作用する一式の実体の各々のアクションを示している。示されているように、図３に示す実体は、測定されたソフトウェア（例えば特権を有するモードのソフトウェア）またはアントラステッドソフトウェアに常駐している。プロセスは、データソース（例えばアントラステッドソフトウェア環境２０４で実行されているソフトウェアアプリケーション２２４）が、自身が生成するデータを保護するアプリケーションポリシーを生成することから始まる（処理ブロック３００）。このアプリケーション特定データ保護ポリシーは、測定されたソフトウェア環境で実行されるタグポリシー変換モジュールに通信される（図２の２１２）。加えて、データソースはさらに、データの保護を要求し、「保護されている」としてマークされるべきデータの位置を提供する（処理ブロック３０２）。言い換えると、データソースは、保護スキームに影響を与えるタグデータベースに対する制御は有さないが、特権を有するモードにあるロジック（例えばハイパーバイザ）に対して、「タグデータベースを操作してデータソースが生成するデータにセキュリティタグを割り当てよ」と要求することができる。
【００４１】
タグポリシー変換モジュールは次に、アプリケーション特定ポリシーを読み出し、それをエンフォース可能なシステムレベルのポリシーにマッピングして（処理ブロック３０４）、これは次にメモリ追跡モジュールへと送られ（図２の２１４）、エンフォースされる（処理ブロック３０６）。例えば、用途特定ポリシーは、データについて最高レベルのセキュリティを要求することもできるが、エンフォース可能なシステムレベルのポリシーにマッピングする場合には、タグポリシーモジュールは、データを生成したアントラステッドソフトウェアについて最高レベルのセキュリティを利用してよい。これは、最高レベルのシステムレベルポリシーほど高くないかもしれないが、測定された環境が生成したデータについてより高いセキュリティレベルをリザーブすることは可能である。生成されたシステムレベルのポリシーは、トラストコプロセッサ１３０インタフェースによりローカルハードウェアにシールされてよい。これにより、ローカルポリシーの立証が必要となった場合には、遠隔コンピュータシステムによるポリシーの検証が可能となる。遠隔コンピュータシステムは、この保護されたデータに対するアクセスを要求することができ、データのセキュリティを検証する方法としては、遠隔システムが、トラストコプロセッサハードウェアセキュリティ測定を利用して、遠隔システムが実際に同じレベルのデータ保護をエンフォースしているかどうかを（セキュリティポリシーの遠隔立証により）検証する、というものがある。
【００４２】
メモリ追跡モジュール（図２の２１４）は、システムポリシーおよびデータの位置を受信すると、メモリ保護／管理モジュール（図２の２１８）に命令を送って、メモリ内の保護スキームのエンフォースを実現する（処理ブロック３０８）。上述した保護スキームは、タグデータベースを利用して、データを格納しているメモリのセグメントへタグをつける。タグはデータに添付されて、メモリ内のデータのアクセス権のセキュリティレベルを提供する。例えば、実体がデータへのアクセスを試みる場合、データを格納するメモリのセグメントのタグに対する、実体の相対アクセスレベルをチェックする。実体が最低限必要なセキュリティアクセスレベルを有している場合には、実体はデータにアクセスすることができる。しかし、より詳細なスキームでは、アクセス権が複数のデータアクセスレベルを含んでいる場合がある（データ読み出しが可能な低アクセスレベルから、データ全体の削除が可能な高アクセス権レベルまで）。
【００４３】
図４は、入ってくるデータ保護ポリシーを変換およびマッピングするプロセスの一実施形態のフロー図である。
【００４４】
測定されたソフトウェア環境は、ネットワークから入ってくるパケットを受信する（処理ブロック４００）。多くの実施形態では、このパケットは、データおよびデータに添付されたタグを含む。タグは、送信実体のデータ保護のための遠隔ポリシーを規定している。送信実体は、ネットワーク上の別のコンピュータシステムであっても、同じコンピュータシステム上の別の仮想マシンであってもよい。ネットワークパケットをパースして、パケット内のデータのタグを分割する（処理ブロック４０２）。パースされたタグは、測定されたソフトウェア環境により分析され、タグが利用している保護ポリシーが判断される。データパケットから受け取ったアプリケーションポリシーは、ハイパーバイザによる実装が可能なローカルシステムセキュリティポリシーへとマッピングされる（変換される）（処理ブロック４０４）。
【００４５】
一部の実施形態では、ポリシーは、ローカルハイパーバイザが利用することができるように変換される必要がある。他の実施形態では、ポリシーは、ネットワーク上の全てのコンピュータシステムが利用する均一なポリシーであってよいので、変換を直接マッピングとしてよい。データ、および、パースされたセキュリティポリシータグ情報は、測定されたソフトウェア環境からハイパーバイザへとプッシュされる。これにより、データまたはセキュリティポリシーがローカルマシンのアントラステッドソフトウェア環境に到達する前に、セキュリティポリシーが実装され、データがメモリに格納される。測定されたソフトウェアは、データの格納位置を特定し、データに関連付けられているタグを「保護されている」としてマークすることを要求する（処理ブロック４０６）。加えて、ポリシーを含むタグ情報を、測定されたソフトウェア環境からプッシュすることで、マッピングされたセキュリティポリシーおよび保護されたデータ位置を、ハイパーバイザに送り、保護プロシージャを実装することができる。ハイパーバイザのメモリ追跡モジュールは、システムポリシーおよびデータの位置を受信すると、メモリ保護／管理モジュールに対して、メモリ内の保護スキームを実際にエンフォースせよとの命令を送信する（処理ブロック４０８）。
【００４６】
図５は、ローカルマシンにデータセキュリティポリシーをエンフォースするプロセスの一実施形態のフロー図である。
【００４７】
多くの実施形態では、ローカルコンピュータシステムのアントラステッドソフトウェア環境から、データコンシューマが、メモリ内のデータへのアクセスを要求する（処理ブロック５００）。ハイパーバイザはこのアクセス要求を受信して（処理ブロック５０２）、ハイパーバイザは次に、セキュリティポリシーをチェックして、要求側装置のアクセス権を判断するためのデータを要求する（処理ブロック５０４）。チェックは、メモリ保護／管理モジュールおよびメモリ追跡モジュール（図２の２１８および２１４それぞれ）両方のロジックが実行してよい。例えば、メモリ保護モジュールは、メモリ全てのアクセス要求をモニタしており、このアクセス要求を受信する。このアクセス要求は、要求側装置と、アクセスするべきターゲット位置のメモリのデータ位置とを含む。メモリ保護／管理モジュールは、自身の維持するタグデータベース（図２の２１６）の位置を引き出して、該メモリ位置のタグ情報を取得する。
【００４８】
要求側装置とタグセキュリティ情報とは、メモリ追跡モジュールへ送られ、メモリ追跡モジュールは、データへのアクセスを要求する実体のセキュリティクリアランスレベルの追跡記録をつけており、この情報を利用して、データへのアクセスが許可されるかを判断する（処理ブロック５０６）。データコンシューマが、要求されているデータについて最低限のセキュリティクリアランスレベルに達している場合には、アクセスが許可され、データが要求側装置へと解放される（処理ブロック５０８）。一方で、データにアクセスするための最低セキュリティクリアランスレベルに達しない場合には、データを解放せず、１以上のメモリセグメントのデータを保護された状態に維持する（処理ブロック５１０）。
【００４９】
図６は、システムのＣＰＵのハードウェアに実装されるＩＦＴＰロジックの一実施形態を示す。メモリ追跡モジュール２１４、メモリ保護／管理モジュール２１８、および、タグデータベース２１６は、全て、ＣＰＵ１０４のハードウェア回路に実装されてよい。タグデータベースは、ＣＰＵ１０４内に配置されているプライベートのセキュアなメモリに実装されても、ＣＰＵ１０４により排他的に制御されてもよい。示されていない他の実施形態では、ＩＦＴＰの幾つかの部分を、ＣＰＵ１０４の外部の他のハードウェア回路に実装することもできる。
【００５０】
また、図６に示すシステムの他の部分もハードウェア実装可能である。例えば、図６には明示されていないが、入ってくるタグ検証生成モジュール２１０、タグポリシー変換モジュール２１２、および出てゆくタグ検証生成モジュール２２０も、部分的に、または完全にハードウェア回路に実装することができる。
【００５１】
本発明の実施形態のエレメントは、機械実行可能命令を格納する機械可読媒体として提供することもできる。機械可読媒体には、これらに限定はされないが、フラッシュメモリ、光学ディスク、ＣＤ−ＲＯＭ，ＤＶＤ、ＲＯＭ、ランダムアクセスメモリ（ＲＡＭ）、消去可能ＰＲＯＭ（ＥＰＲＯＭ）、電気的消去可能ＲＯＭ（ＥＥＰＲＯＭ）、磁気カードまたは光学カード、伝播媒体、その他の種類の電子命令を格納するのに適した機械可読媒体が含まれてよい。例えば、本発明の実施形態は、遠隔コンピュータ（サーバ等）から要求側のコンピュータ（例えばクライアント）へ、通信リンク（モデムまたはネットワーク接続等）を介して搬送波または他の伝播媒体に具現化されるデータ信号により転送することができるコンピュータプログラムとしてダウンロードされてもよい。
【００５２】
上述した記載においては、本発明を説明するために一定の用語が利用されている。例えば「ロジック／論理」という用語は、１以上の機能を実行するハードウェア、ファームウェア、ソフトウェア（またはこれらの任意の組み合わせ）を表している。例えば、「ハードウェア」の例には、これらに限定はされないが、集積回路、有限状態マシン、または組み合わせロジックが含まれる。集積回路は、マイクロプロセッサ、特定用途向け集積回路、デジタル信号プロセッサ、マイクロコントローラ等のプロセッサの形態をとることができる。
【００５３】
本明細書にわたり「一実施形態」「１つの実施形態」といった言い回しが利用されているが、これらはある実施形態との関連で記載された特定の特徴、構造、または特性が、本発明の少なくとも１つの実施形態に含まれていることを示す。従って、「一実施形態」「１つの実施形態」「代替的な実施形態」といった言い回しが本明細書の随所で利用されていようとも、これらが必ずしも同一の実施形態のことを表しているとは限らないことを理解されたいことを強調しておく。さらに、特定の特徴、構造、または特性は、本発明の１以上の実施形態では適宜組み合わせることができる。
【００５４】
同様に、本発明の実施形態の前述した記載では、様々な特徴を単一の実施形態、図面、または記載としている場合があるが、これは、発明の様々な側面のうち１以上の理解を助けるべく記載をまとめる意図でなされている。しかしながらこの記載の方法は、請求される主題が、各請求項に明示されているものよりも多くの特徴を含むことを必要とする、という意図を反映したものとして理解されるべきではない。むしろ以下の請求項においては、発明の側面は、上述した実施形態のうち１つのなかの全ての特徴未満のなかに存在する。従って詳細な記載に続く請求項をこの詳細な記載に組み込むことを明示する。
【図１】
2011238218.tif 000003
【図２】
2011238218.tif 000004
【図３】
2011238218.tif 000005
【図４】
2011238218.tif 000006
【図５】
2011238218.tif 000007
【図６】
2011238218.tif 000008
【外国語明細書】
2011238218000001.pdf