説明

情報フローの追跡および保護

【課題】システム内でおよびネットワークにおいて、情報フローを追跡し、フロー内の情報を保護する。
【解決手段】ジェスチャーベースの署名認証を実装するシステム、方法、デバイス、および、機械可読媒体。ローカルコンピュータシステムのメモリに格納された保護データへのアクセスを統括するべく、アントラステッドソフトウェア環境からデータ保護ポリシーを生成することを含む。そして、このデータ保護ポリシーを、情報フローおよび追跡保護(IFTP)ロジックが管理するエンフォース可能なシステムレベルのデータ保護ポリシーへとマッピングする。次に、保護データを含む第1のメモリページにフラグを立てる。最後に、保護データを含む第1のメモリページについて生成されたデータ保護ポリシーを、IFTPロジックおよびエンフォース可能なシステムレベルのデータ保護ポリシーを用いてエンフォースする。

【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、システム内でおよびネットワークにおいて、情報フローを追跡すること、および、フロー内の情報を保護することに係る。
【背景技術】
【0002】
通常のエンドユーザにおけるコンピューティング環境(企業、中小企業、一般消費者家庭のものを含む)は、サイズおよび複雑度が増してきている。これらシステムの機能が高度になっているので、「標準的な」商用の既製の(COTS)コンピュータシステムを、重要なインフラストラクチャに利用したり、または慎重に扱うべきデータへアクセスするクライアント等として利用したりすることも稀ではなくなる。
【0003】
オペレーティングシステムおよびクライアントアプリケーションの複雑性が増すにつれて、スパイウェアおよびルートキット等の悪意のあるソフトウェアにとっての機会が増え、システムを危機に曝したり、場合によってはネットワークにおいて急速に伝播してしまったりするようになる。情報が盗まれたり、悪用されたりする事例が増えても当然である。
【0004】
これら情報の盗難の多くは、単に信頼できないオペレーティングシステムから生じる。悪意のコードは簡単にオペレーティングシステムのカーネルに「フック」することができ、これにより、高度な特権を有する、悪意を持った環境がシステムの全てのアプリケーションに対するホストとして振る舞うこととなる。こうなると悪意のある攻撃はランダムに行われるものではなくて、データを盗むという特定の意図を有する場合が多い。慎重に扱うべき情報および/または制約されたリソースへのアクセスを統括するポリシーは、マルウェアが生存するものと同じ環境を利用して特定およびエンフォースが行われる、ということから危険に曝される。最後に、処理の観点からは、機密データが意図せずリークしてもそれは目に見えず、管理者が機密情報のセキュリティおよび機密ポリシーをエンフォースして、機密情報に対して制約を設ける助けとなるツールは少ない。
【0005】
本発明の実施形態を限定ではない例示で図示しており、添付図面においては、同様の参照願号が類似した部材を示す。
【図面の簡単な説明】
【0006】
【図1】情報フローを追跡および保護するコンピューティングシステムの一実施形態の選択された側面を示す高レベルブロック図である。
【図2】情報フローを追跡および保護する際に利用されるコンピュータシステムの特定のソフトウェア、ファームウェア、およびハードウェアコンポーネントの一実施形態を示す。
【図3】データ保護ポリシーを規定およびマッピングするプロセスの一実施形態のフロー図である。
【図4】入ってくるデータ保護ポリシーを変換およびマッピングするプロセスの一実施形態のフロー図である。
【図5】ローカルマシンにデータセキュリティポリシーをエンフォースするプロセスの一実施形態のフロー図である。
【図6】システムのトラストコプロセッサのハードウェアに実装されるIFTPロジックの一実施形態を示す。
【発明を実施するための形態】
【0007】
実施形態は概して、情報フローを追跡および保護するシステム、方法、および装置に関する。
【0008】
図1は、情報フローを追跡および保護するコンピューティングシステムの一実施形態の選択された側面を示す高レベルブロック図である。
【0009】
コンピュータシステム100が示されている。コンピュータシステムは、デスクトップ、サーバ、ワークステーション、ラップトップ、ハンドヘルド、テレビセットトップ、メディアセンター、ゲームコンソール、統合されたシステム(例えば車両内のもの等)、その他の種類のコンピュータシステムであってよい。一部の実施形態では、コンピュータシステム100は、複数のコンポーネントを連結するシステムボード102(マザーボード)を含む。例えばシステムボード102は、配線および特定のインタフェースを利用してコンポーネント間を連結することができてよい。システムボード102は、連結されたコンポーネントに対して給電してよい。加えて、システムボードは、複数のコンポーネントが互いに通信できるように通信インタフェースを提供してよい。
【0010】
システムボード102に連結されるコンポーネントのなかに、1以上の中央処理装置(CPU)がある。多くの実施形態においては潜在的に多くのCPUが存在するが、図1に示す実施形態では、CPUを1つだけ(CPU104)示すことで明瞭性を期している。CPU104は、Intel(登録商標)Corporation社製のCPUまたは別のブランドのCPUであってよい。CPU104は1以上のコアを含む。示されている実施形態では、CPU104は、コア106、コア108、コア110、およびコア112という4つのコアを含む。他の実施形態ではCPU104は、図1に示す4つのコアより大きい数のコア、または小さい数のコアを含んでもよい。多くの実施形態では、各コア(コア106等)が、1以上の実行ユニット、リタイヤユニット、一式の汎用および専用レジスタ等の内部機能ブロックを含む。図1に示すコアがマルチスレッドまたはハイパースレッドである場合には、各ハードウェアスレッドをコアとみなすこともできる。
【0011】
CPU104は、さらに、キャッシュ114等の1以上のキャッシュを含んでよい。図示されていない多くの実施形態では、キャッシュ114以外のさらなるキャッシュを実装して、各コアおよびメモリの実行ユニット間にキャッシュの複数のレベルが存在するようにする。異なる実施形態では、キャッシュは異なる方法で分配されてもよい。キャッシュ114は、異なる実施形態の数多くの異なるサイズのうちの1つであってよい。例えば、キャッシュ114は、8メガバイト(MB)のキャッシュ、16MBのキャッシュ等であってよい。加えて、異なる実施形態では、キャッシュは直接マッピングされたキャッシュ、フルアソシアティブ方式キャッシュ、複数の方法のセットアソシアティブ方式のキャッシュ、または、別の種類のマッピングを利用するキャッシュであってもよい。各キャッシュは、それぞれのCPUの全てのコア間で共有される1つの大きな部分を含んでよく、または、複数の別個の機能スライスに分割されてもよい(例えば各コアにつき1つのスライスといった具合に)。各キャッシュも、全てのコア間で共有される1つの部分、および、コアごとに別の機能スライスである複数の他の部分を含んでよい。
【0012】
多くの実施形態では、CPU104はシステムメモリ116に通信可能に連結されている。システムメモリ116は、システムボード102に、または、基板に、インラインメモリモジュールの一部として物理的に接続される複数のメモリデバイスを含んでよい。多くの実施形態では、あるメモリデバイスの基本構造は、動的RAM(DRAM)の構造であってよい。他の実施形態では、不揮発性メモリまたは相変化メモリ等のメモリを利用することもできる。
【0013】
ハイブリッドメモリ116デバイス(1または複数)は、高速(HS)入出力リンク118(インターコネクトバス等)を介してCPU104に通信可能に連結される。異なる実施形態では、CPU104およびシステムメモリ116は、インタフェースを介して通信してよい。例えば、完全にバッファリングされたディム(DIMM:dual-inline-memory-module)インタフェース、スケーラブルメモリインタフェース(SMI)、専用のポイントツーポイントインタフェース(Intel(登録商標)によるQuickPath技術等)、その他同様の高速インタフェースが挙げられる。
【0014】
多くの実施形態では、リンク118は、データ、アドレス、制御および/またはクロック情報を搬送することのできる1以上の光学配線、金属配線、その他の配線(ライン)を含んでよい。多くの実施形態ではリンクは、各々がCPU104とシステムメモリ116との間でデータを搬送する複数のレーンを含む高速シリアルインタフェースである。
【0015】
多くの実施形態では、CPU104は、HSリンク118を介して送受信される情報を変換するメモリコントローラ120を含む。メモリコントローラ120は、リンク118に直接アクセスするHS I/Oインタフェース(不図示)に連結されてよい。図示されていない他の実施形態では、メモリコントローラ120は、システムボード102に直接連結された離散デバイスであっても、システムボード102に連結された別のデバイス(例えばメモリコントローラハブ)内に潜在的に集積されていてもよい。
【0016】
CPU104は、入出力(I/O)ハブコンプレックス122に、集積I/Oインタフェース124を介して連結されてよい。I/Oハブコンプレックス122は、1以上のI/OデバイスおよびCPU104の間に通信インタフェースを提供する。例えばI/Oハブコンプレックス122は、コンピュータシステム100を外部ネットワーク128(コンピュータシステム100の外部のネットワーク)に連結するネットワークI/Oインタフェース126に連結されてよい。外部ネットワーク128の例には、家庭ネットワーク、企業内のローカルイントラネット、ワイドエリアネットワークトポロジーにわたり分散分配されたネットワーク、またはインターネットが含まれてよい。I/Oハブコンプレックス122も、任意の通信プロトコルリンク(例えばユニバーサルシリアルバス(USB)、IEEE1394ファイヤワイヤ、SCSI(スモールコンピュータシステムインタフェース)等)への通信を制御する1以上の集積ホストコントローラを有してよい。
【0017】
多くの実施形態では、トラストコプロセッサ130は、I/Oハブコンプレックスに集積されている。一部の実施形態では、トラストコプロセッサ130は、Intel(登録商標)Corporationのトラステッドプラットフォームモジュール、または、暗号鍵、セキュアなローカルストレージ、遠隔立証、その他のハードウェアセキュリティメカニズムを利用する情報保護のハードウェアレベルのセキュリティエンフォースのために設計されたその他の種類の暗号プロセッサを含む。多くの実施形態では、トラストコプロセッサ130は、I/Oハブコンプレックスに集積されているが、図示されない他の実施形態では、トラストコプロセッサ130がコンピュータシステム100の他の回路に集積されていても、独立型のチップとして実装されてもよい。
【0018】
加えて、ハイパーバイザ200および測定されたソフトウェア環境202を介するものとして記載される情報フローの追跡および保護(IFTP)132ロジックからの情報は、様々な実施形態において、ハードウェアトラストコプロセッサ内の回路として、ソフトウェアで、ファームウェアで、またはこれらの種類のロジックの任意のものの組み合わせで、実装することができる。IFTPロジックの詳細な実装が図2に示されている。
【0019】
図2は、情報フローを追跡(トレース)および保護する際に利用されるコンピュータシステムの特定のソフトウェア、ファームウェア、およびハードウェアコンポーネントの一実施形態を示す。
【0020】
コンピュータシステムは、図1に示すハードウェアの特定の実装等の特定のハードウェアを含んでよい。多くの実施形態においては、コンピュータシステムはハイパーバイザを含む。ハイパーバイザは、仮想マシンモニタ(VMM)と称されることもあり、複数の動作環境がコンピュータシステム上でコンカレントに実行することを可能とする。各動作環境(例えばオペレーティングシステム(OS))をゲストOSと称することがある。ハイパーバイザは、各ゲストOSに特定のプラットフォームリソースの利用を許可することができる。例えば、各ゲストOSは、システムメモリの特定の部分、および、他のハードウェアコンポーネントを割り当てられ、利用することができる。多くの実施形態では、あるゲストOSが、1タイムスライスにおいてコンピュータシステムリソースの制御を与えられ、次いで、別のゲストOSが制御を与えられ、といったようにしてラウンドロビン方式で、またはその他の時間共有方式で制御を与える。コンピュータシステムリソースの制御の委譲は、ハイパーバイザにより管理される。
【0021】
ハイパーバイザは、多くの実施形態でソフトウェア実装される。ハイパーバイザは、ハードウェアの上に直接低レベル保護モードで実行される。例えばハイパーバイザは、CPU104、トラストコプロセッサ130、およびネットワークI/Oハードウェアインタフェース126と直接協同する。
【0022】
図2に示す実施形態では、2つのゲストソフトウェア環境/OSが存在している。図示されていない他の実施形態では、これ以上のゲストソフトウェア環境があってもよい。特に図2では、測定されたソフトウェア環境202およびアントラステッドソフトウェア環境204の両方がコンピュータシステム上で動作されており、潜在的に、ハイパーバイザ200が決定した時間割り当てによってハードウェアのタイムスライスを共有する。多くの実施形態では、これらソフトウェア環境は、ハイパーバイザ200の上で実行されてはいても、ハイパーバイザの存在に気づいていない場合がある。
【0023】
起動時に、および潜在的には、動作中の他の時間に、セキュリティ測定の実装等により、測定されたソフトウェア環境202が呼び出される。測定されたソフトウェア環境202は、機動時に自身の整合性をチェックされてよい。カーネルおよびその他のコアOS構造の実際の測定および立証は、トラステッドコプロセッサ130に実装されるハードウェアセキュリティプロトコルを利用することで(例えば、ハッシュテーブルを利用して公開および秘密暗号鍵を利用することで、測定された環境の現在の画像が、既に公知のクリーンな画像のバージョンに整合するかを検証することで)実行されてよい。この測定は、コンピュータシステムの起動時に行うことができるのみならず、潜在的には、コンピュータシステムが最後の測定から一定の時間が経過した後であっても動作している場合に、一定の間隔毎に行うこともできる。従って任意の時点において、測定された環境は、悪意のあるコードによる侵入がない公知の安全な動作環境となる。
【0024】
アントラステッドソフトウェア環境206は、全く測定または立証を受けさせなくてもよく、セキュリティ測定を殆どまたは全く行わずに実行することもできる。この環境は、その環境下で動作するソフトウェアアプリケーションに対して、悪意のあるコードが潜在的に情報の整合性を含む場合のあるセキュリティ上のリスクを生じかねない。
【0025】
測定された環境202およびアントラステッド環境204というこれら2つのソフトウェア環境は、ハイパーバイザ200の上で動作して、ハイパーバイザ200と接触するよう通信可能である。具体的には、これら2つの環境およびハイパーバイザ200間の通信ハンドシェークを処理するアプリケーションインタフェースが存在する。メモリ・タギング・インタフェース206により、測定されたソフトウェア環境202およびハイパーバイザ200間で通信コンタクトを生じさせることができ、アプリケーション・タギング・インタフェース208により、アントラステッドソフトウェア環境204およびハイパーバイザ200間で通信コンタクトを生じさせることができる。これらアプリケーションインタフェースは、ハイパーバイザ200およびソフトウェア環境が利用可能な一式の呼び出し/命令(コンピュータプラットフォーム拡張、命令セット等)を含みうる。
【0026】
多くの実施形態では、ネットワークパケットがネットワーク128からハードウェアネットワークI/Oインタフェース126を介して到達する場合、このパケットは、測定されたソフトウェア環境202の、入ってくるタグ検証/生成モジュール210に到達する。入ってくるタグのモジュール210は、パケットの内容に基づく情報タグを生成する。このモジュールは、整合するパケット基準に基づき固有のタグを生成することのできる特殊パケットパーサである。多くの実施形態では、入ってくるパケットは、ネットワーク128においてあるコンピュータシステムから別のコンピュータシステムへと転送される一定の量のデータを含む。入ってくるタグのモジュール210は、データを特定して、パケットのデータを利用するためにパースして、ローカルコンピュータシステム(図1および図2に示すコンピュータシステム)に格納する。入ってくるタグのモジュール210はさらに、固有のタグを生成して、これらをコンピュータシステムでローカルに利用することで、入ってくるネットワークパケットからパースされた、特定されたデータの利用を追跡することができる。
【0027】
一部の実施形態では、ネットワークパケットは、データとともに到達するだけではなく、受信側のコンピュータシステムに対して、パケットのデータの利用に関するセキュリティを知らせるためのタグを添付されて到達することもある。例えば、ローカルシステムで必要となるセキュリティレベルによっては、何のセキュリティも持たずにパケットが受信される場合もあるが、この場合には、入ってくるタグのモジュール210が、パケットに到達するデータの一般基本レベルのセキュリティタグを生成してよい。他方で、別のパケットが、パケット内のデータの取り扱いに最高レベルのセキュリティの確保を要求するタグを添付されて到着する場合もある。この場合には、入ってくるタグのモジュール210は、パケットに含められて受信されるデータについて、異なるセキュリティタグセットを生成することができる。この生成されたセキュリティタグセットは、データにアクセスするためにはローカル実体のいずれに対しても、さらなるセキュリティ測定を行う要件を課す場合があり、極端な例では、ローカルのアントラステッドソフトウェア環境204が、パケット内のデータには全くアクセスできないようにするものもある。
【0028】
入ってくるタグのモジュール210は、入ってくるパケットに添付されているタグ情報をタグポリシーモジュール212に渡してよい。タグポリシーモジュール212は、入ってくるパケットに添付されたタグから受信された、または入ってくるタグのモジュール210が生成したタグポリシーが正確にエンフォースされていることを検証する。例えば、あるポリシーがパケット内の入ってくるデータの格納に利用されるローカルメモリページがコピーできるか否かを決定することができる。より制限されたタグセキュリティ設定においては、タグポリシーモジュール212は、入ってくるタグのモジュール210に、データに利用されたメモリページのコピーを禁じるタグを生成するよう通知してよい。このように生成された制限タグは、入ってくるタグのモジュール210からハイパーバイザ200のメモリ追跡モジュール214に送信される。
【0029】
メモリ追跡モジュール214は、CPU104自身の拡張として、メモリ追跡およびエンフォース機能を提供する。メモリ追跡モジュール214は、物理メモリのタグデータベース216を管理する。タグデータベース216は、メモリ保護/管理モジュール218から直接アクセスされる。多くの実施形態では、システムメモリ116を複数のセグメントに分割する。システムメモリ116を分割することにより、セグメントごとに別個のセキュリティ保護が可能となる。多くの実施形態では、1セグメントのサイズは、物理的な1ページのメモリのサイズ(例えば4キロバイト)であり、他の実施形態では、1メモリセグメントのサイズは、1メモリページのサイズより小さくても大きくてもよい。多くの実施形態では、タグデータベース216は、セグメント毎に少なくとも1つのタグを含んでよい。他の実施形態では、タグデータベースのサイズを最小化させるために、ベースラインの保護の量を超える保護を有するセグメントのみに、追加された保護を記述するタグを含める。ベースライン保護を利用する他のセグメントにおいては(例えばタグポリシーモジュール212が決めるようなもの)、タグが存在せず、タグが単になくてよい(ヌルポインタ等)。
【0030】
様々なレベルのメモリセグメント保護は、タグポリシーモジュールが決定してよい。例えば単純な方法においては、2つの保護レベルのみが存在してよい(例えば、セグメントが保護される、または保護されない、といったように)。より複雑な方法では、数多くの保護レベルが存在しており、個々のセグメントの保護レベルを、そのセグメントに格納されているデータの扱いに必要となる慎重度合いに応じて決定することができる。これよりさらに複雑な方法では、レベル0:セグメントの読み書きアクセスができる、レベル1:セグメントに読み出しアクセスのみができる、レベル2:セグメントにアクセスができない、という3つの保護レベルがあるようなものもある。これよりさらに複雑な保護方法としては、これら3つのアクセスの条件を各セグメントに設けたうえで、アクセスの条件と対応していたり、いなかったりする幾らかのユーザのアクセス権レベルがある、というものもある。例えば、未知のユーザ、登録済みユーザ、登録済み管理者等が、ユーザレベルの可能性の一部を有しているような場合である。未知のユーザは、どのセグメントにもアクセスを有しておらず、登録済みユーザは一定のセグメントに読み出しアクセスができるが、他のセグメントに対しては読み出しアクセスしかできず、登録済み管理者は全てのセグメントにフルアクセスを有する、といった次第である。
【0031】
異なる実施形態では、入ってくるタグのモジュール210は、タグを含まないパケット、送信システムに特有のタグを有するパケット、または、グローバルタグを有するパケットを受信しうる。送信システムに特有のタグとは、遠隔コンピュータシステムが生成するローカル保護ポリシーに関するタグのことである。遠隔コンピュータシステムは、ローカルタグ情報を、保護すべきデータを含むパケットとともに送信してよい。この種類のタグは、ローカル保護ポリシーを用いて生成されているので、他のシステムにとっては利点があろう、ここで、このポリシーは、他のコンピュータシステムが利用するものと同じ種類のポリシーであってはならない。一部の実施形態では、入ってくるタグのモジュール210およびタグポリシーモジュール212は、この種類のタグの遠隔ポリシーを傍受して、遠隔タグをミラーするローカルタグを生成することができてよい。この種類のタグを、遠隔環境からローカル環境に変換する能力は、遠隔タグシステムがローカルシステムにどのくらい類似しているかの関数であってよい。この種類の傍受ポリシーは、コンピュータシステム間で異なる保護レベルを生じうる。他方で、グローバルタグとともに受信されたパケットは、幾つかのコンピュータシステム間で標準化されたタグポリシーを利用する。グローバルタグ保護ポリシーに準拠する全てのコンピュータシステムは、ネットワークパケットからタグを直接インポートして、ネットワークパケットに添付されたタグ内で、システム間で転送された保護ポリシーを利用することができる。標準化されたデータ保護ポリシーにより、タグ情報を交換する、全ての参加コンピュータシステム間でデータの全権保護が徹底される。
【0032】
入ってくるタグのモジュール210は、入ってくるパケットを、パケット内のタグをパースすることで処理する。そして、これらタグをメモリ追跡モジュール214に登録する。登録プロセスによって、タグは、ネットワークパケットから受け取ったデータを格納している1以上のメモリセグメントに関連付けられる。メモリ追跡モジュール214は、メモリ保護/管理モジュール216に対して、タグデータベース216を更新するよう通知する。この更新は、新たに到着するデータを格納するメモリセグメントと関連付けられたタグデータベース内の特定の位置のタグセキュリティ情報からなっていてよい。例えば、高度に保護されたデータがネットワークパケットで送られてくる場合がある。このネットワークパケットは、ローカルコンピュータシステム内のアントラステッド環境にデータに対するアクセス権がないことを伝えるタグを含んでいる場合がある。次いで、データを、セグメント245のシステムメモリに格納する。そしてこのタグデータベースを位置245で更新して、関連セグメントのセキュリティレベルを上げ、いかなるアントラステッド環境もがこのセグメントにアクセスしないようにする。この後で、もしもアントラステッド環境のオペレーティングシステムのユーザがアクセスを試みると、このアクセスの試みは、メモリ保護/管理モジュール218により処理されて、次に、そのセグメントをタグデータベース216から探す。ユーザのセキュリティレベルおよびメモリセグメントのより高いセキュリティレベルが分かると、メモリ保護/管理モジュール218は、ユーザがこのセグメントに対するアクセス可能な程度に高いセキュリティクリアランスを有さないことを認知して、この要求を拒否する。
【0033】
出てゆくタグ検証/生成モジュール220は、出てゆくパケットに関するタグ情報について利用される。出てゆくタグのモジュール220は、タグを、別のコンピュータシステムまたは別の仮想マシンとのセキュリティ関連付けにマッピングしてよい。言い換えると、出てゆくタグのモジュール220が宛先システムのセキュリティ関連付けを知っている場合には、タグを、遠隔システムに準拠するように修正することができる。出てゆくタグのモジュール220はさらに、現在タグ付けされているパケットのタグを外すこともできる(例えばパケットが、セキュリティタグを利用しない遠隔ネットワークまたはシステムに向けて発送された場合等)。加えて、ターゲットの宛先システムが同じデータセキュリティポリシーを実際に利用している場合には、出てゆくタグのモジュール220は、出てゆくパケットにタグを埋め込んで、準拠している遠隔システムで情報が追跡されるようにする。異なる実施形態では、出てゆくパケットのターゲットとなるシステムは、遠隔システム、または、ローカルシステムの別の仮想マシンであってよい。
【0034】
入ってくる観点からは、パケットは、ネットワーク128から、ネットワークI/Oインタフェース126を介して到着してよい。パケットは、入ってくるタグのモジュール210で受信され、ここでパケットがパースされ、パケットのデータをタグ情報から分離させる(もしある場合には)。タグが存在していない場合には、入ってくるタグのモジュール210は、タグポリシーモジュール212に対して、利用すべき正しいセキュリティパラメータについて問い合わせた後で、データのタグを作成してよい。そして入ってくるタグのモジュール210からタグをメモリ追跡モジュール214に送信して、メモリ追跡モジュール214は、メモリ保護/管理モジュール218と通信してタグデータベース216にアクセスする。入ってくるタグのモジュール210は、パケットからデータをアントラステッドソフトウェア環境204に送信する。アントラステッド環境のソフトウェアで実行されているネットワークインタフェース222は、データを受信して、これはアントラステッド環境で実行されているアプリケーション224により利用されてよい。あいにく、この環境はアントラステッドであるので、マルウェア226等の他の悪意のあるプログラムもこのアントラステッド環境で動作することができる。アントラステッド環境のソフトウェアの未知の性質上、この特定のソフトウェアのデータへのアクセスには制限を設けてよい。アントラステッド環境に常駐している実体に許可されるアクセスレベルは、受信したデータを格納する1以上のメモリセグメントに関連するタグ情報に記述されているセキュリティポリシーが決定する。
【0035】
出てゆく観点からは、アントラステッドソフトウェア環境204のアプリケーション224は、ネットワークパケットのデータを、外部の実体(例えばネットワーク128上の別のコンピュータシステム)に送信しようと試みる。アントラステッド環境は、システムメモリに格納されているデータをとって、ネットワークソフトウェアインタフェース222を利用してこのデータパケットを送信する。パケットは構築されており、サポートされてネットワークに送信されるが、ネットワークに達する前に、出てゆくタグのモジュール220に傍受される。出てゆくタグのモジュール220は、パケット内のデータのセキュリティレベルを、メモリ追跡モジュール214に問い合わせる。これを実行するべく、出てゆくタグのモジュール220は、パケット内のデータについてメモリ追跡モジュールに対してクエリを送信する。メモリ追跡モジュール214は、メモリ保護/管理モジュール218を利用して、タグデータベース216からデータのこのタグ情報を探す。タグ情報を取得して、出てゆくタグのモジュール220に戻し、次いで、出てゆくタグのモジュール220は、タグポリシーモジュールに問い合わせて、取得したタグ情報に記載されているセキュリティレベルのデータについてのポリシーを決定する。出てゆくタグのモジュール220およびタグポリシーモジュール212は、先ず、データを遠隔コンピュータシステムに送信してよいかを検証する。
【0036】
データの送信が許可されない場合には、ネットワークパケットをブロックしてこの試みを妨害する。データの送信が許可される場合には、次に、パケットにタグ情報を添付するかの決定を行う。一部の実施形態では、パケットのターゲットである遠隔コンピュータシステムが、準拠するデータ・タギング・システムを有しているので、タグデータベースに格納されている実際のタグ(1または複数)をパケットに添付して送信することができる。多くの実施形態では、タグポリシーモジュールは、同じタグベースのデータ追跡システムを有する公知の遠隔コンピューティングシステムのデータベースに格納またはアクセスを行うことができる。他の実施形態では、遠隔コンピュータシステムは、同じタグベースのデータ追跡システムに準拠しておらず、タグポリシーモジュールが準拠している別のタグベースのシステムを利用しているような場合もある。この場合には、タグポリシーモジュール212は、出てゆくタグのモジュール220に、タグ変換情報および固有のタグが、遠隔システムに準拠しているタグで置き換えられたことを通知する。また別の実施形態では、遠隔コンピュータシステムはその素性が知られておらず、全てのタグ情報がネットワークに送り出される前にデータパケットから外される場合もある。いずれにしても、このプロセスが終了すると、出てゆくタグのモジュール220は、パケットをネットワーク128経由で遠隔システムに送信する。
【0037】
多くの実施形態では、アントラステッド環境で実行されるアプリケーションは、実際にデータを作成して、さらに、データに関連するセキュリティレベルを示してよい。極端なシナリオでは、アントラステッドソフトウェアアプリケーションは、自身のアクセス特権よりも高いアクセスレベルを特定することができる。従ってデータを作成してシステムメモリに格納した後で、アントラステッドソフトウェアアプリケーションは、測定された環境に対して、もはや作成したデータにアクセスできないことを示してよい。
【0038】
図2はIFTPロジックをローカルハイパーバイザの一部として詳述しているが、IFTPロジックが、異なる実施形態では多くの異なる位置に実装可能であることは、既に述べたとおりである。この代替的な実施形態の1つが図6に示されており、ここでは、IFTPロジックのエレメントがCPUに実装されていることが分かる。
【0039】
図3は、データ保護ポリシーを規定およびマッピングするプロセスの一実施形態のフロー図である。
【0040】
このフロー図は、コンピュータシステム内で相互作用する一式の実体の各々のアクションを示している。示されているように、図3に示す実体は、測定されたソフトウェア(例えば特権を有するモードのソフトウェア)またはアントラステッドソフトウェアに常駐している。プロセスは、データソース(例えばアントラステッドソフトウェア環境204で実行されているソフトウェアアプリケーション224)が、自身が生成するデータを保護するアプリケーションポリシーを生成することから始まる(処理ブロック300)。このアプリケーション特定データ保護ポリシーは、測定されたソフトウェア環境で実行されるタグポリシー変換モジュールに通信される(図2の212)。加えて、データソースはさらに、データの保護を要求し、「保護されている」としてマークされるべきデータの位置を提供する(処理ブロック302)。言い換えると、データソースは、保護スキームに影響を与えるタグデータベースに対する制御は有さないが、特権を有するモードにあるロジック(例えばハイパーバイザ)に対して、「タグデータベースを操作してデータソースが生成するデータにセキュリティタグを割り当てよ」と要求することができる。
【0041】
タグポリシー変換モジュールは次に、アプリケーション特定ポリシーを読み出し、それをエンフォース可能なシステムレベルのポリシーにマッピングして(処理ブロック304)、これは次にメモリ追跡モジュールへと送られ(図2の214)、エンフォースされる(処理ブロック306)。例えば、用途特定ポリシーは、データについて最高レベルのセキュリティを要求することもできるが、エンフォース可能なシステムレベルのポリシーにマッピングする場合には、タグポリシーモジュールは、データを生成したアントラステッドソフトウェアについて最高レベルのセキュリティを利用してよい。これは、最高レベルのシステムレベルポリシーほど高くないかもしれないが、測定された環境が生成したデータについてより高いセキュリティレベルをリザーブすることは可能である。生成されたシステムレベルのポリシーは、トラストコプロセッサ130インタフェースによりローカルハードウェアにシールされてよい。これにより、ローカルポリシーの立証が必要となった場合には、遠隔コンピュータシステムによるポリシーの検証が可能となる。遠隔コンピュータシステムは、この保護されたデータに対するアクセスを要求することができ、データのセキュリティを検証する方法としては、遠隔システムが、トラストコプロセッサハードウェアセキュリティ測定を利用して、遠隔システムが実際に同じレベルのデータ保護をエンフォースしているかどうかを(セキュリティポリシーの遠隔立証により)検証する、というものがある。
【0042】
メモリ追跡モジュール(図2の214)は、システムポリシーおよびデータの位置を受信すると、メモリ保護/管理モジュール(図2の218)に命令を送って、メモリ内の保護スキームのエンフォースを実現する(処理ブロック308)。上述した保護スキームは、タグデータベースを利用して、データを格納しているメモリのセグメントへタグをつける。タグはデータに添付されて、メモリ内のデータのアクセス権のセキュリティレベルを提供する。例えば、実体がデータへのアクセスを試みる場合、データを格納するメモリのセグメントのタグに対する、実体の相対アクセスレベルをチェックする。実体が最低限必要なセキュリティアクセスレベルを有している場合には、実体はデータにアクセスすることができる。しかし、より詳細なスキームでは、アクセス権が複数のデータアクセスレベルを含んでいる場合がある(データ読み出しが可能な低アクセスレベルから、データ全体の削除が可能な高アクセス権レベルまで)。
【0043】
図4は、入ってくるデータ保護ポリシーを変換およびマッピングするプロセスの一実施形態のフロー図である。
【0044】
測定されたソフトウェア環境は、ネットワークから入ってくるパケットを受信する(処理ブロック400)。多くの実施形態では、このパケットは、データおよびデータに添付されたタグを含む。タグは、送信実体のデータ保護のための遠隔ポリシーを規定している。送信実体は、ネットワーク上の別のコンピュータシステムであっても、同じコンピュータシステム上の別の仮想マシンであってもよい。ネットワークパケットをパースして、パケット内のデータのタグを分割する(処理ブロック402)。パースされたタグは、測定されたソフトウェア環境により分析され、タグが利用している保護ポリシーが判断される。データパケットから受け取ったアプリケーションポリシーは、ハイパーバイザによる実装が可能なローカルシステムセキュリティポリシーへとマッピングされる(変換される)(処理ブロック404)。
【0045】
一部の実施形態では、ポリシーは、ローカルハイパーバイザが利用することができるように変換される必要がある。他の実施形態では、ポリシーは、ネットワーク上の全てのコンピュータシステムが利用する均一なポリシーであってよいので、変換を直接マッピングとしてよい。データ、および、パースされたセキュリティポリシータグ情報は、測定されたソフトウェア環境からハイパーバイザへとプッシュされる。これにより、データまたはセキュリティポリシーがローカルマシンのアントラステッドソフトウェア環境に到達する前に、セキュリティポリシーが実装され、データがメモリに格納される。測定されたソフトウェアは、データの格納位置を特定し、データに関連付けられているタグを「保護されている」としてマークすることを要求する(処理ブロック406)。加えて、ポリシーを含むタグ情報を、測定されたソフトウェア環境からプッシュすることで、マッピングされたセキュリティポリシーおよび保護されたデータ位置を、ハイパーバイザに送り、保護プロシージャを実装することができる。ハイパーバイザのメモリ追跡モジュールは、システムポリシーおよびデータの位置を受信すると、メモリ保護/管理モジュールに対して、メモリ内の保護スキームを実際にエンフォースせよとの命令を送信する(処理ブロック408)。
【0046】
図5は、ローカルマシンにデータセキュリティポリシーをエンフォースするプロセスの一実施形態のフロー図である。
【0047】
多くの実施形態では、ローカルコンピュータシステムのアントラステッドソフトウェア環境から、データコンシューマが、メモリ内のデータへのアクセスを要求する(処理ブロック500)。ハイパーバイザはこのアクセス要求を受信して(処理ブロック502)、ハイパーバイザは次に、セキュリティポリシーをチェックして、要求側装置のアクセス権を判断するためのデータを要求する(処理ブロック504)。チェックは、メモリ保護/管理モジュールおよびメモリ追跡モジュール(図2の218および214それぞれ)両方のロジックが実行してよい。例えば、メモリ保護モジュールは、メモリ全てのアクセス要求をモニタしており、このアクセス要求を受信する。このアクセス要求は、要求側装置と、アクセスするべきターゲット位置のメモリのデータ位置とを含む。メモリ保護/管理モジュールは、自身の維持するタグデータベース(図2の216)の位置を引き出して、該メモリ位置のタグ情報を取得する。
【0048】
要求側装置とタグセキュリティ情報とは、メモリ追跡モジュールへ送られ、メモリ追跡モジュールは、データへのアクセスを要求する実体のセキュリティクリアランスレベルの追跡記録をつけており、この情報を利用して、データへのアクセスが許可されるかを判断する(処理ブロック506)。データコンシューマが、要求されているデータについて最低限のセキュリティクリアランスレベルに達している場合には、アクセスが許可され、データが要求側装置へと解放される(処理ブロック508)。一方で、データにアクセスするための最低セキュリティクリアランスレベルに達しない場合には、データを解放せず、1以上のメモリセグメントのデータを保護された状態に維持する(処理ブロック510)。
【0049】
図6は、システムのCPUのハードウェアに実装されるIFTPロジックの一実施形態を示す。メモリ追跡モジュール214、メモリ保護/管理モジュール218、および、タグデータベース216は、全て、CPU104のハードウェア回路に実装されてよい。タグデータベースは、CPU104内に配置されているプライベートのセキュアなメモリに実装されても、CPU104により排他的に制御されてもよい。示されていない他の実施形態では、IFTPの幾つかの部分を、CPU104の外部の他のハードウェア回路に実装することもできる。
【0050】
また、図6に示すシステムの他の部分もハードウェア実装可能である。例えば、図6には明示されていないが、入ってくるタグ検証生成モジュール210、タグポリシー変換モジュール212、および出てゆくタグ検証生成モジュール220も、部分的に、または完全にハードウェア回路に実装することができる。
【0051】
本発明の実施形態のエレメントは、機械実行可能命令を格納する機械可読媒体として提供することもできる。機械可読媒体には、これらに限定はされないが、フラッシュメモリ、光学ディスク、CD−ROM,DVD、ROM、ランダムアクセスメモリ(RAM)、消去可能PROM(EPROM)、電気的消去可能ROM(EEPROM)、磁気カードまたは光学カード、伝播媒体、その他の種類の電子命令を格納するのに適した機械可読媒体が含まれてよい。例えば、本発明の実施形態は、遠隔コンピュータ(サーバ等)から要求側のコンピュータ(例えばクライアント)へ、通信リンク(モデムまたはネットワーク接続等)を介して搬送波または他の伝播媒体に具現化されるデータ信号により転送することができるコンピュータプログラムとしてダウンロードされてもよい。
【0052】
上述した記載においては、本発明を説明するために一定の用語が利用されている。例えば「ロジック/論理」という用語は、1以上の機能を実行するハードウェア、ファームウェア、ソフトウェア(またはこれらの任意の組み合わせ)を表している。例えば、「ハードウェア」の例には、これらに限定はされないが、集積回路、有限状態マシン、または組み合わせロジックが含まれる。集積回路は、マイクロプロセッサ、特定用途向け集積回路、デジタル信号プロセッサ、マイクロコントローラ等のプロセッサの形態をとることができる。
【0053】
本明細書にわたり「一実施形態」「1つの実施形態」といった言い回しが利用されているが、これらはある実施形態との関連で記載された特定の特徴、構造、または特性が、本発明の少なくとも1つの実施形態に含まれていることを示す。従って、「一実施形態」「1つの実施形態」「代替的な実施形態」といった言い回しが本明細書の随所で利用されていようとも、これらが必ずしも同一の実施形態のことを表しているとは限らないことを理解されたいことを強調しておく。さらに、特定の特徴、構造、または特性は、本発明の1以上の実施形態では適宜組み合わせることができる。
【0054】
同様に、本発明の実施形態の前述した記載では、様々な特徴を単一の実施形態、図面、または記載としている場合があるが、これは、発明の様々な側面のうち1以上の理解を助けるべく記載をまとめる意図でなされている。しかしながらこの記載の方法は、請求される主題が、各請求項に明示されているものよりも多くの特徴を含むことを必要とする、という意図を反映したものとして理解されるべきではない。むしろ以下の請求項においては、発明の側面は、上述した実施形態のうち1つのなかの全ての特徴未満のなかに存在する。従って詳細な記載に続く請求項をこの詳細な記載に組み込むことを明示する。

【特許請求の範囲】
【請求項1】
ローカルコンピューティングデバイスのアントラステッド・ソース・ソフトウェア環境に常駐しているアプリケーションから、前記ローカルコンピューティングデバイスの複数のメモリページのうちの第1のメモリページに格納されている保護データへのアクセスを統括するデータ保護ポリシーを生成する段階と、
前記データ保護ポリシーを、前記ローカルコンピューティングデバイスの情報フロー追跡および保護(IFTP)ロジックが管理するエンフォース可能なシステムレベルのデータ保護ポリシーにマッピングする段階と、
前記保護データを含む前記第1のメモリページにフラグをたてる段階と、
前記保護データを含む前記第1のメモリページについて生成された前記データ保護ポリシーを、前記IFTPロジックおよび前記エンフォース可能なシステムレベルのデータ保護ポリシーを用いてエンフォースする段階と
を備える方法。
【請求項2】
前記ローカルコンピューティングデバイスの前記複数のメモリページについての複数のタグを含むタグデータベースを維持する段階をさらに備え、
前記複数のタグのうちの各タグが前記複数のメモリページのうちの対応するメモリページに関連付けられており、前記タグデータベースは、前記複数のメモリページのうち保護されているメモリページを特定する請求項1に記載の方法。
【請求項3】
ネットワークを介して前記ローカルコンピューティングデバイスと遠隔コンピュータとの間で前記保護データを転送する段階をさらに備え、
前記保護データは、ネットワークパケットに含められて前記ネットワークを介して転送され、前記データ保護ポリシーが前記ネットワークパケットに連結されている請求項2に記載の方法。
【請求項4】
前記ネットワークパケットに、前記複数のタグのうちの、前記保護データに関連付けられている1以上のタグを連結する段階をさらに備える請求項3に記載の方法。
【請求項5】
遠隔コンピューティングデバイスに存在する遠隔IFTPロジックで、前記ネットワークから前記ネットワークパケットを受信する段階と、
前記遠隔IFTPロジックが、前記ネットワークパケットから前記データ保護ポリシーを切り離す段階と、
前記遠隔IFTPロジックが、前記遠隔コンピューティングデバイス上の前記ネットワークパケットに常駐している前記データについて前記データ保護ポリシーをエンフォースする段階と
をさらに備える請求項4に記載の方法。
【請求項6】
遠隔コンピューティングデバイスに存在する遠隔IFTPロジックで前記ネットワークから前記ネットワークパケットを受信する段階と、
前記遠隔IFTPロジックが、前記ネットワークパケットから受け取った前記データに、前記ネットワークパケットに連結されている前記1以上のタグを関連付ける段階と
をさらに備える請求項4に記載の方法。
【請求項7】
前記アプリケーションが、前記第1のメモリページに格納されている前記保護データに対するアクセス要求を発行する段階と、
前記ローカルコンピューティングデバイスに存在するローカルIFTPロジックが、前記アクセス要求を傍受する段階と、
前記ローカルIFTPロジックが、前記第1のメモリページに関連付けられている前記システムレベルのデータ保護ポリシーをチェックする段階と、
前記ローカルIFTPロジックが、前記アプリケーションに対して、前記システムレベルのデータ保護ポリシーに基づいて前記第1のメモリページへのアクセスを許可するかを判断する段階と
をさらに備える請求項2に記載の方法。
【請求項8】
前記IFTPロジックはハイパーバイザに常駐している請求項1に記載の方法。
【請求項9】
前記IFTPロジックは、前記ローカルコンピューティングデバイス上のハードウェア回路に常駐している請求項1に記載の方法。
【請求項10】
システムであって、
ネットワークと、
前記ネットワークに連結されたローカルコンピューティングデバイスと
を備え、
前記ローカルコンピューティングデバイスは、
前記ローカルコンピューティングデバイスのアントラステッド・ソース仮想マシンに常駐しているアプリケーションから、前記ローカルコンピューティングデバイスの複数のメモリページのうちの第1のメモリページに格納されている保護データへのアクセスを統括するデータ保護ポリシーを生成して、
前記データ保護ポリシーを、情報フロー追跡および保護(IFTP)ロジックが管理するエンフォース可能なシステムレベルのデータ保護ポリシーにマッピングして、
前記保護データを含む前記第1のメモリページにフラグをたて、
前記保護データを含む前記第1のメモリページについて生成された前記データ保護ポリシーを、前記IFTPロジックおよび前記エンフォース可能なシステムレベルのデータ保護ポリシーを用いてエンフォースする
システム。
【請求項11】
前記ローカルコンピューティングデバイスはさらに、前記ローカルコンピューティングデバイスの前記複数のメモリページについての複数のタグを含むタグデータベースを有し、
前記複数のタグのうちの各タグが前記複数のメモリページのうちの対応するメモリページに関連付けられており、前記タグデータベースは、前記複数のメモリページのうち保護されているメモリページを特定する請求項10に記載のシステム。
【請求項12】
前記ローカルコンピューティングデバイスはさらに、
ネットワークを介して前記ローカルコンピューティングデバイスと遠隔コンピュータとの間で前記保護データを転送して、
前記保護データは、ネットワークパケット内に含められて前記ネットワークを介して転送され、前記データ保護ポリシーが前記ネットワークパケットに連結されている請求項11に記載のシステム。
【請求項13】
前記ローカルコンピューティングデバイスはさらに、
前記ネットワークパケットに、前記複数のタグのうちの、前記保護データに関連付けられている1以上のタグを連結する請求項12に記載のシステム。
【請求項14】
遠隔コンピューティングデバイスをさらに備え、
前記遠隔コンピューティングデバイスは、
前記遠隔コンピューティングデバイスに存在する遠隔IFTPロジックで、前記ネットワークから前記ネットワークパケットを受信して、
前記ネットワークパケットから前記データ保護ポリシーを切り離して、
前記遠隔コンピューティングデバイス上の前記ネットワークパケットに常駐している前記データについて前記データ保護ポリシーをエンフォースする請求項13に記載のシステム。
【請求項15】
遠隔コンピューティングデバイスをさらに備え、
前記遠隔コンピューティングデバイスは、
前記遠隔コンピューティングデバイスに存在する遠隔IFTPロジックで、前記ネットワークから前記ネットワークパケットを受信して、
前記ネットワークパケットから受け取った前記データに、前記ネットワークパケットに連結されている前記1以上のタグを関連付ける請求項13に記載のシステム。
【請求項16】
前記ローカルコンピューティングデバイスはさらに、
前記第1のメモリページに格納されている前記保護データに対する前記ローカルコンピューティングデバイスのアプリケーションからのアクセス要求を傍受して、
前記第1のメモリページに関連付けられている前記システムレベルのデータ保護ポリシーをチェックして、
前記アプリケーションに対して、前記システムレベルのデータ保護ポリシーに基づいて前記第1のメモリページへのアクセスを許可するかを判断する
請求項10に記載のシステム。
【請求項17】
前記IFTPロジックはハイパーバイザに常駐している請求項10に記載のシステム。
【請求項18】
中央処理装置(CPU)をさらに備え、
前記IFTPロジックは前記CPU内に常駐している請求項10に記載のシステム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate