(57)【要約】【課題】  ファイルロッカー、およびファイルロッカーを提供し使用するための機構を提供する。【解決手段】  ファイルロッカーは、ソフトウェアオブジェクトの保護されたデータの格納および使用を管理する。保護された環境は、暗号および分離のインフラストラクチャを維持して、信頼されたエージェントによって使用されるように、データ項目の密封をサポートする。ファイルロッカーは保護された環境の密封機能を使用して、ファイルロッカーの排他的なアクセスのためにデータ項目を密封する。ファイルロッカーはソフトウェアオブジェクトから受信したファイルをそれ自体のために密封し、そのファイルを、要求に応じて、また要求者の信頼性、認証、および／または識別の十分な証明の後で提供する。【選択図】  図３
2005310122.tif 000002
【特許請求の範囲】
【請求項１】
ファイル管理構成要素を使用してファイルを保護する方法であって、
ファイルをオブジェクトから受信するステップと、
データストレージシステムを使用してファイル管理構成要素のためにファイルを密封するステップであって、前記データストレージシステムは、指定されたカテゴリの構成要素からデータを受信し、受信されたデータがそのために密封されたのではない任意の構成要素によって前記データを密封解除できないように、前記データを前記構成要素のうちの１つまたは複数のために密封することができ、前記ファイル管理構成要素は、前記指定されたカテゴリの構成要素のうちの１つであるステップと、
ファイルの要求を発行するオブジェクトが前記ファイルを開くことを許可されるかどうかに基づいて前記ファイルへのアクセスを制限するステップであって、前記要求を発行する前記オブジェクトが許可されるかどうかに関する決定は、前記要求を発行する前記オブジェクトが前記ファイルを開くことを許可された場合に前記データストレージシステムから前記ファイルを密封解除する前記ファイル管理構成要素によってなされるステップと
を含むことを特徴とする方法。
【請求項２】
前記ファイルが前記オブジェクトによって使用されている間、前記オブジェクトの挙動を監視し、かつ／または制御するステップ
をさらに含むことを特徴とする請求項１に記載の方法。
【請求項３】
前記オブジェクトは前記オブジェクトを識別する証明ベクトルに関連付けられており、アクセスを制限する前記動作は、前記オブジェクトの関連する証明ベクトルのチェックに基づいていることを特徴とする請求項１に記載の方法。
【請求項４】
前記オブジェクトは、ファイルを開くインターフェース呼出を介して前記ファイルを開くプログラムを含み、前記ファイルを開くインターフェース呼出は、前記ファイル管理構成要素を介して前記ファイルを要求するように構成されており、それによって前記ファイル管理構成要素の使用が前記オブジェクトには見えないことを特徴とする請求項１に記載の方法。
【請求項５】
前記オブジェクトはプログラムが稼働可能な第１の動作環境を含むことを特徴とする請求項１に記載の方法。
【請求項６】
前記方法は２つ以上の動作環境を同時に提供するコンピューティング構成で行われ、前記環境のうちの第１のものはそれが前記第１の環境の予想された挙動に一致することの第１のレベルの保証を提供する高保証環境であり、前記環境のうちの第２のものは前記第２の環境が前記第２の環境の予想された挙動に一致することの第２のレベルの保証を提供する相対的に低い保証環境であり、前記第２のレベルの保証は前記第１のレベルより相対的に低く、前記データストレージ機関にデータを密封する機能は前記第１の環境の特徴であり、前記ファイル管理構成要素は前記第１の環境で稼働し、前記オブジェクトは前記第２の環境で稼働することを特徴とする請求項１に記載の方法。
【請求項７】
前記指定されたカテゴリは前記第１の環境で稼働する構成要素に限定されることを特徴とする請求項６に記載の方法。
【請求項８】
前記ファイルの要求を発行する前記オブジェクトは、前記ファイルがそこから受信された前記オブジェクトとは異なり、前記要求を発行する前記オブジェクトは、前記ファイルを開くことが許可されることを特徴とする請求項１に記載の方法。
【請求項９】
前記ファイルがそこから受信された前記オブジェクトは前記ファイルの使用に規則を課すことを特徴とする請求項１に記載の方法。
【請求項１０】
前記規則は
前記ファイルの前のバージョンのすべてが記録され、それによって前記ファイルロッカーに保存されている前のバージョンのファイルを復元することができる要件と、
前記ユーザはファイルロッカーによって前記ファイルを格納する前に、前記ファイルロッカーとの入力セッションに従事し、前記セッションは、前記ユーザが前記ファイルを保存する要求を肯定的に表明し、前記ユーザによって表示される前記ファイルの表示が前記ファイルおよび加えられた変更を正しく表示することの相対的に高度の保証を提供する状況で、前記ユーザに前記ファイルへの任意の変更を表示する機会を与えることを確実にする方法で行われる要件と
のうちの少なくとも１つであることを特徴とする請求項９に記載の方法。
【請求項１１】
前記ファイルに関する概要情報を格納するステップであって、前記ファイル管理構成要素は、前記ファイルへのアクセスが許可されない少なくとも１つの状況で前記概要情報へのアクセスを許可するステップ
をさらに含むことを特徴とする請求項９に記載の方法。
【請求項１２】
ファイルを受信し、前記ファイルがファイルロッカーによってのみ密封解除できるように前記ファイルを前記ファイルロッカーのために密封し、オブジェクトから前記ファイルの要求を受信し、前記オブジェクトが前記ファイルを受信する権限を与えられていることを確認し、前記オブジェクトが前記ファイルを受信する権限を与えられているかどうかに従って前記ファイルを前記オブジェクトに提供する、または提供しないロジックを含むことを特徴とするファイルロッカー。
【請求項１３】
前記ファイルロッカーは、２つ以上の動作環境を提供するコンピューティング構成上で動作し、前記環境のうちの第１のもので動作することを特徴とする請求項１２に記載のファイルロッカー。
【請求項１４】
前記オブジェクトは第２の環境であることを特徴とする請求項１３に記載のファイルロッカー。
【請求項１５】
前記オブジェクトは前記環境のうちの第２の環境で動作することを特徴とする請求項１３に記載のファイルロッカー。
【請求項１６】
前記第１の環境は、脅威からの、前記第２の環境より相対的に高いレベルの保護を提供することを特徴とする請求項１５に記載のファイルロッカー。
【請求項１７】
構成要素は、前記ファイルが前記オブジェクトによって使用されている間に前記オブジェクトの挙動を監視し、かつ／または制御する前記第１の環境で実行されることを特徴とする請求項１６に記載のファイルロッカー。
【請求項１８】
前記ファイルの密封を解除するのに必要な暗号化キーがあり、前記第１の環境は前記暗号化キーを前記第１の環境の外で使用することができないことのあるレベルの保証を提供することを特徴とする請求項１６に記載のファイルロッカー。
【請求項１９】
前記オブジェクトは、前記オブジェクトを識別する証明ベクトルに関連付けられており、前記ロジックは前記証明ベクトルの妥当性を検査し、前記証明ベクトルを確証できない場合、前記オブジェクトへのアクセスを拒否することを特徴とする請求項１２に記載のファイルロッカー。
【請求項２０】
前記要求がそこから受信される前記オブジェクトは、前記ファイルがそこから受信されるオブジェクトとは異なり、前記要求がそこから受信される前記オブジェクトは、前記ファイルを受信する権限を与えられていることを特徴とする請求項１２に記載のファイルロッカー。
【請求項２１】
前記ファイルロッカーは、前記ファイルロッカーによって受信され、格納されている前記ファイルのすべてのバージョンを記録することを特徴とする請求項１２に記載のファイルロッカー。
【請求項２２】
前記ファイルロッカーは、前記ファイルが受信された時点でユーザとの対話セッションに従事し、前記セッションは、前記ファイルの現在のバージョンの格納の要求を主張することを前記ユーザに要求し、前記セッションは、前記ファイルロッカーと前記ユーザとの間の通信が危険にさらされていないことの相対的に高レベルの保証を提供する状況で行われる前記ファイルロッカーと前記ユーザとの間の通信を含むことを特徴とする請求項１２に記載のファイルロッカー。
【請求項２３】
ファイル管理構成要素でファイルを受信するステップと、
前記ファイルを前記ファイル管理構成要素のために密封するステップと、
前記ファイルの要求を要求者から受信するステップと、
前記要求者は前記ファイルを受信する権限を与えられていることを確認するステップと、
前記要求者が前記ファイルを受信する権限を与えられている場合は前記ファイルの密封を解除し、前記ファイルを前記要求者に提供し、そうでない場合は前記ファイルの密封を解除せず、前記ファイルを前記要求者に提供しないステップと
を含むことを特徴とする方法を実行するコンピュータ実行可能命令でエンコードされたコンピュータ可読媒体。
【請求項２４】
前記要求者からの要求が受信され、前記要求者が前記ファイルを受信する権限を与えられていることが確認されたときを除いて、前記ファイルをアクセスから保護するステップ
をさらに含むことを特徴とする請求項２３に記載のコンピュータ可読媒体。
【請求項２５】
前記ファイルは前記ファイル管理構成要素で前記要求者から受信されることを特徴とする請求項２３に記載のコンピュータ可読媒体。
【請求項２６】
前記要求者は前記ファイルを生成し、または操作するソフトウェアオブジェクトであることを特徴とする請求項２３に記載のコンピュータ可読媒体。
【請求項２７】
前記要求者は前記ファイル管理構成要素の存在または使用を前記要求者には見えないようにするインターフェースを介して前記ファイルを前記ファイル構成要素に提供することを特徴とする請求項２６に記載のコンピュータ可読媒体。
【請求項２８】
前記ファイル管理構成要素は第１の環境で動作し、前記要求者は第２の環境で動作し、前記第１の環境は、定義された組の脅威からの、前記第２の環境より相対的に高いレベルの分離または保護を提供することを特徴とする請求項２６に記載のコンピュータ可読媒体。
【請求項２９】
前記ファイル管理構成要素は、前記第１の環境で動作するエンティティから使用可能であり、前記第１の環境以外の任意の環境で動作するエンティティからは使用できないデータストレージ機関を使用して前記ファイルを前記ファイル管理構成要素のために密封することを特徴とする請求項２８に記載のコンピュータ可読媒体。
【請求項３０】
前記方法は、
前記第１の環境で構成要素を使用して、前記ファイルが前記要求者によって使用されている間に前記要求者の挙動を監視し、かつ／または制御し、それによって前記ファイルの密封が解除されている間に前記ファイルが悪用から保護されるステップ
をさらに含むことを特徴とする請求項２８に記載のコンピュータ可読媒体。
【請求項３１】
前記ファイルの新しいバージョンを前記ファイル管理構成要素に保存する前に前記ファイルのすべてのバージョンを記録し、それによって前記ファイルの前のバージョンを取り出すことができる要件と、
前記ファイルの新しいバージョンを前記ファイル構成要素に保存する前に、前記ファイル管理構成要素およびユーザが通信に従事し、前記通信は、前記通信が危険にさらされていないことの相対的に高度の保証を提供する状況で行われる要件と
のうちの少なくとも１つを含む規則を前記ファイルの使用に課すステップ
をさらに含むことを特徴とする請求項２３に記載のコンピュータ可読媒体。
【請求項３２】
前記通信は、前記ファイル管理構成要素に保存しようとする前記ファイルの新しいバージョンを前記ユーザに対して表示し、前記ユーザに、前記新しいバージョンが前記ユーザにとって許容可能であることを確認することを求めるステップを含むことを特徴とする請求項３１に記載のコンピュータ可読媒体。
【請求項３３】
前記ファイル管理構成要素に前記ファイルを保存する前に、前記ファイルがあらかじめ決定された標準に一致することを確認するステップ
をさらに含むことを特徴とする請求項２３に記載のコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は一般にコンピューティングの分野に関し、より詳細には、データの格納および取り出しの機構に関する。
【背景技術】
【０００２】
コンピュータセキュリティシステムの１つの側面は、データの機密を保護することができる能力である。データは、暗号化によって保護することができ、正しく機能しているコンピュータセキュリティシステムは、データが信頼された空間外で、暗号化されていない明瞭な形で表示されるのを防ぐ必要がある。
【０００３】
このタイプのデータ保護を実施する１つの方法は、信頼されたプログラム、または「エージェント」が稼働することができる信頼されたオペレーティングシステムを提供し、データを信頼されたエージェントのために密封することができるデータ密封機関（ｄａｔａ  ｓｅａｌｉｎｇ  ｆａｃｉｌｉｔｙ）を提供することである。信頼された環境で稼働するエージェントは、データをそれ自体のために密封することができ、信頼された環境は、データをそのために密封するエージェント以外の誰かのためにデータの密封を解除することを拒否する。さらに、動作環境は、耐改ざん（ｔａｍｐｅｒ−ｒｅｓｉｓｔａｎｃｅ）機構および分離機構を使用して密封の回避を阻止する。したがって、密封されたデータは、次の範囲まで保護される。（１）密封機関を備える環境は、密封が破られるのを防ぐものと信頼できる、（２）データをそのために密封するエージェントは、データの密封が解除されるときにデータが悪用されることから守るものと信頼できる。
【０００４】
上記の密封機構に関する問題は、密封機関は、信頼されたエージェントにしか使用できないことである。したがって、信頼された環境の密封機関でデータ、例えばファイルなどを保護したい任意のソフトウェアオブジェクトは、信頼された環境で稼働し、ファイルの格納および密封を管理する密封機構と対話する機能を含む信頼されたエージェントを有する、またはそうしたエージェントである必要がある。このことは、特に、従来のアプリケーション、例えば従来の安全ではないオペレーティングシステム下で稼働するように設計されているワードプロセッサまたはスプレッドシートなどでは問題がある。というのは、一般にこれらのプログラムは、一般にその挙動を予想でき、信頼することができる小さいプログラムのみを稼働させる信頼された環境で稼働することができないからである。安全ではないアプリケーションを、セキュリティ関連の機能のために協働する専用の信頼されたエージェントを備えるように書くことはできる。しかし、従来のアプリケーション、特にその実装が特定の安全なコンピューティングプラットフォーム以前のものは、一般に信頼されたエージェントを有していない。さらに、信頼されたコンピューティングを念頭に設計されたアプリケーションでさえ、こうした各アプリケーションが密封されたファイルを管理する機能を含むことはわずらわしい。様々なソフトウェアオブジェクト、例えば従来のアプリケーション、オペレーティングシステム、仮想マシンなどによって機関を使用することができる、保護し、管理するための信頼された環境の密封機能を使用する一般の機関を提供することが好ましい。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
上記を鑑み、従来技術の欠点を克服する機構が必要である。
【課題を解決するための手段】
【０００６】
本発明は、データ密封機関を使用して、他のエンティティの代わりにファイルを保護するファイルロッカーを提供する。ファイルの保護を望むエンティティは、ファイルをファイルロッカーに提供する。次いでファイルロッカーは、データ密封機関を使用してファイルをそれ自体のために密封し、それによってファイルをファイルロッカーの「保護監督」下に置く。ファイルロッカーの保護監督下にあるファイルを取り出したいエンティティは、ファイルロッカーにファイルを要求することができる。要求されたファイルに対する要求側エンティティの資格の十分な証拠を基に、ファイルロッカーはファイルの密封を解除し、ファイルを要求側エンティティに提供する。
【０００７】
好ましい実施形態では、ファイルロッカーは、例えばその挙動に関する保証が低い「オープンな」環境から、その挙動に関する保証が高い「信頼された」環境まで多岐にわたる様々な信頼度を有する環境の同時の使用をサポートするプラットフォーム上で稼働する。こうしたプラットフォームでは、データ密封機関は、信頼された環境のインフラストラクションの一部とすることができる。つまり信頼された環境は、データが、封に示されたエージェントによってのみ取り出すことができるように、その環境で稼働するプログラムまたは「エージェント」がデータを密封できるようにすることができ、信頼された環境は、暗号技術、メモリ分離、耐改ざんなどの機構で密封を実施することができる。さらにこうしたプラットフォームでは、ファイルロッカーは、信頼された環境で稼働しているエージェントとすることができ、ファイルを受信し、こうしたファイルをそれ自体のために密封することによって、信頼された環境の内外の他のエンティティにファイル保護サービスを提供することができる。
【０００８】
ファイルロッカーを使用するエンティティは、例えば、信頼された環境で稼働するプログラム、他の信頼性が低い環境で稼働するプログラム、または他のプログラムが稼働する環境全体とすることができる。ファイルの保護を望むエンティティは、ファイルをファイルロッカーに提供し、ファイルロッカーは、ファイルをそれ自体のために密封する。エンティティは、ファイルを要求することができる。この場合、ファイルロッカーは、エンティティがファイルの受信を許可されていることを確認し、他の任意の妥当性検査を要求側エンティティに対して行うことができる。次いでファイルロッカーは、ファイルを要求側エンティティに提供する。
【０００９】
ファイルロッカーの使用は、ファイルロッカーにファイルを要求するエンティティには見えないようにすることができる。例えば、アプリケーションは、標準アプリケーションプログラミングインターフェース（ＡＰＩ）、またはシステムコールを使用してファイルを開き、どのファイルが信頼されたエリアに格納され、どのファイルがそうでないかがわかるようにＡＰＩまたはシステムコールを改良することができる。ファイルが信頼されたエリアに格納されると、ＡＰＩは、ファイルロッカーと通信してファイルを取り出す。
【００１０】
任意選択で、ファイルロッカーまたは協働しているエージェントは、ファイルがそのエンティティにチェックアウトされている間、ファイルを要求するエンティティの挙動を監視することができる。例えば、ファイルが信頼性のない環境でアプリケーションにチェックアウトされると、ファイルロッカーまたは協働しているエージェントは、アプリケーションを観察し、かつ／またはアプリケーションに対する制御を行使して、ファイルがファイルロッカーの保護監督下にない間にファイルが決して悪用されないようにすることができる。
【００１１】
本発明の他の特徴を下記に述べる。
【００１２】
前記概要、および次の好ましい実施形態の詳細な説明は、添付の図面と併せ読めばよりよく理解できる。本発明の説明上、本発明の構築例を図面に示している。しかし本発明は、開示された特定の方法および手段に限定されない。
【発明を実施するための最良の形態】
【００１３】
（コンピューティング構成の例）
図１は、本発明の態様を実施できるコンピューティング環境例を示している。コンピューティングシステム環境１００は、適したコンピューティング環境の一例にすぎず、本発明の使用または機能の範囲に関する限定を示唆するものではない。また、コンピューティング環境１００を、動作環境１００の例に示した構成要素のいずれか１つ、またはその組合せに関連する依存性または必要条件を有しているものと解釈すべきではない。
【００１４】
本発明は、他の多くの汎用または専用コンピューティングシステム環境または構成で動作可能である。本発明との使用に適したよく知られているコンピューティングシステム、環境、および／または構成の例には、それだけには限定されないが、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルドまたはラップトップ装置、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラム可能家庭用電化製品、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータ、組み込みシステム、上記の任意のシステムまたは装置を含む分散コンピューティング環境などがある。
【００１５】
本発明は、コンピュータによって実行されるプログラムモジュールなどのコンピュータ実行可能命令の一般的な文脈で説明することができる。一般にプログラムモジュールは、特定のタスクを実行する、または特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、構成要素、データ構造などを含む。また、本発明は、タスクが通信ネットワークまたは他のデータ通信媒体によってリンクされているリモート処理装置によって実行される分散コンピューティング環境でも実施することができる。分散コンピューティング環境では、プログラムモジュールおよび他のデータを、メモリストレージ装置を含むローカルおよびリモートのコンピュータストレージ媒体に置くことができる。
【００１６】
図１を参照すると、本発明を実施するシステムの例は、汎用コンピューティング装置をコンピュータ１１０の形で含んでいる。コンピュータ１１０の構成要素は、それだけには限定されないが、処理ユニット１２０、システムメモリ１３０、およびシステムメモリを含む様々なシステム構成要素を処理ユニット１２０に結合するシステムバス１２１を含み得る。処理ユニット１２０は、マルチスレッドプロセッサ上でサポートされるものなど、複数の論理処理ユニットを表し得る。システムバス１２１は、様々なバスアーキテクチャのうちの任意のものを使用するメモリバスまたはメモリコントローラ、周辺バス、およびローカルバスを含むいくつかのタイプのバス構造のうちどんなものでもよい。こうしたアーキテクチャには、それだけには限定されないが一例として、業界標準アーキテクチャ（ＩＳＡ）バス、マイクロチャネルアーキテクチャ（ＭＣＡ）バス、拡張ＩＳＡ（ＥＩＳＡ）バス、ビデオ電子装置規格化協会（ＶＥＳＡ）ローカルバス、およびメザニンバスとしても知られている周辺部品相互接続（ＰＣＩ）バスなどがある。システムバス１２１は、通信装置間のポイントツーポイント接続、スイッチングファブリック、ｐｃｉ−ｅｘｐｒｅｓなどとして実装することもできる。
【００１７】
コンピュータ１１０は、一般に様々なコンピュータ可読媒体を含む。コンピュータ可読媒体は、コンピュータ１１０からアクセスできる使用可能な任意の媒体とすることができ、揮発性および不揮発性媒体、取外式および固定式媒体を含む。コンピュータ可読媒体は、それだけには限定されないが一例として、コンピュータストレージ媒体および通信媒体を含み得る。コンピュータストレージ媒体には、コンピュータ可読命令、データ構造、プログラムモジュール、他のデータなど、情報を格納するための任意の方法または技術で実施される揮発性および不揮発性の取外式および固定式媒体がある。コンピュータストレージ媒体には、それだけには限定されないが、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリまたは他のメモリ技術、ＣＤ−ＲＯＭ、デジタル多用途ディスク（ＤＶＤ）または他の光ディスクストレージ、磁気カセット、磁気テープ、磁気ディスクストレージ装置または他の磁気ストレージ装置、または所望の情報の格納に使用でき、コンピュータ１１０からアクセスできる他の任意の媒体などがある。通信媒体は一般に、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータを搬送波または他の移送機構などの変調されたデータ信号に組み込む。これには任意の情報配送媒体がある。「変調されたデータ信号」という用語は、信号に情報を符号化するように１つまたは複数のその特性が設定または変更された信号を意味する。通信媒体には、それだけには限定されないが一例として、有線ネットワーク、直接配線された接続などの有線媒体、および音響、ＲＦ、赤外線、その他の無線媒体などの無線媒体がある。また、上記のどんな組合せでもコンピュータ可読媒体の範囲内に含まれるものとする。
【００１８】
システムメモリ１３０は、読み取り専用メモリ（ＲＯＭ）１３１やランダムアクセスメモリ（ＲＡＭ）１３２など、揮発性および／または不揮発性メモリの形のコンピュータストレージ媒体を含む。基本入出力システム１３３（ＢＩＯＳ）は、例えば起動中など、コンピュータ１１０内の要素間での情報の転送を助ける基本ルーチンを含み、一般にＲＯＭ１３１に格納されている。ＲＡＭ１３２は一般に、処理ユニット１２０から直接アクセス可能な、かつ／または処理ユニット１２０が現在処理しているデータおよび／またはプログラムモジュールを含む。図１は、それだけには限定されないが一例として、オペレーティングシステム１３４、アプリケーションプログラム１３５、他のプログラムモジュール１３６、およびプログラムデータ１３７を示している。
【００１９】
コンピュータ１１０は、他の取外式／固定式、揮発性／不揮発性コンピュータストレージ媒体を含むこともできる。一例にすぎないが、図１は、固定式不揮発性磁気媒体から読み取り、あるいはそこに書き込むハードディスクドライブ１４０、取外式不揮発性磁気ディスク１５２から読み取り、あるいはそこに書き込む磁気ディスクドライブ１５１、およびＣＤ−ＲＯＭや他の光媒体など、取外式不揮発性光ディスク１５６から読み取り、あるいはそこに書き込む光ディスクドライブ１５５を示している。動作環境の例で使用できる他の取外式／固定式、揮発性／不揮発性コンピュータストレージ媒体には、それだけには限定されないが、磁気テープカセット、フラッシュメモリカード、デジタル多用途ディスク、デジタルビデオテープ、半導体ＲＡＭ、半導体ＲＯＭなどがある。ハードディスクドライブ１４１は一般に、インターフェース１４０などの固定式メモリインターフェースを介してシステムバス１２１に接続され、磁気ディスクドライブ１５１および光ディスクドライブ１５５は一般に、インターフェース１５０などの取外式メモリインターフェースによってシステムバス１２１に接続される。
【００２０】
上述し、図１に示したドライブおよびその関連のコンピュータストレージ媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、およびコンピュータ１１０の他のデータのストレージを提供する。図１では例えば、ハードディスクドライブ１４１は、オペレーティングシステム１４４、アプリケーションプログラム１４５、他のプログラムモジュール１４６、およびプログラムデータ１４７を格納するものとして示されている。これらの構成要素は、オペレーティングシステム１３４、アプリケーションプログラム１３５、他のプログラムモジュール１３６、およびプログラムデータ１３７と同じであっても、異なっていてもよいことに留意されたい。オペレーティングシステム１４４、アプリケーションプログラム１４５、他のプログラムモジュール１４６、およびプログラムデータ１４７は少なくとも異なるコピーであることを示すために、ここではそれらに異なる番号を付している。ユーザは、キーボード１６２、および一般にマウス、トラックボール、またはタッチパッドと呼ばれるポインティング装置１６１などの入力装置を介してコマンドおよび情報をコンピュータ２０に入力することができる。図には示していないが、他の入力装置には、マイクロフォン、ジョイスティック、ゲームパッド、衛星パラボラアンテナ、スキャナなどがある。これらおよび他の入力装置は、しばしばシステムバスに結合されているユーザ入力インターフェース１６０を介して処理ユニット１２０に接続されるが、パラレルポートやゲームポート、ユニバーサルシリアルバス（ＵＳＢ）など他のインターフェースおよびバス構造で接続してもよい。モニタ１９１または他のタイプの表示装置もまた、ビデオインターフェース１９０などのインターフェースを介してシステムバス１２１に接続される。モニタに加えて、コンピュータは、出力周辺インターフェース１９５を介して接続できるスピーカ１９７、プリンタ１９６などの他の周辺出力装置を含むこともできる。
【００２１】
コンピュータ１１０は、リモートコンピュータ１８０など１つまたは複数のリモートコンピュータへの論理接続を使用してネットワーク式環境で動作することができる。リモートコンピュータ１８０は、パーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ピア装置、または他の一般のネットワークノードでよく、一般にコンピュータ１１０に関連して上述した多くまたはすべての要素を含むが、図１にはメモリストレージ装置１８１のみを示している。図１に示した論理接続は、ローカルエリアネットワーク（ＬＡＮ）１７１および広域ネットワーク（ＷＡＮ）１７３を含むが、他のネットワークを含んでいてもよい。こうしたネットワーキング環境は、オフィス、全社規模のコンピュータネットワーク、イントラネット、およびインターネットではごく一般的である。
【００２２】
ＬＡＮネットワーキング環境で使用する場合、コンピュータ１１０は、ネットワークインターフェースまたはアダプタ１７０を介してＬＡＮ１７１に接続される。ＷＡＮネットワーキング環境で使用する場合、コンピュータ１１０は一般に、モデム１７２、またはインターネットなどＷＡＮ１７３を介して通信を確立する他の手段を含む。モデム１７２は、内蔵のものでも外付けのものでもよく、ユーザ入力インターフェース１６０または他の適切な機構を介してシステムバス１２１に接続することができる。ネットワーク式環境では、コンピュータ１１０に関連して示したプログラムモジュール、またはその一部をリモートメモリストレージ装置に格納することができる。図１は、それだけには限定されないが一例として、リモートアプリケーションプログラム１８５をメモリ装置１８１上に存在するものとして示している。図示したネットワーク接続は例であり、コンピュータ間の通信リンクを確立する他の手段を使用してもよいことは理解されよう。
【００２３】
（保護されたストレージ）
本発明の一態様は、エンティティがその機関にデータを預けて密封することができる保護されたストレージ機関を使用する。データが密封されると、データがそのために密封されたエンティティ以外のエンティティからはデータにアクセスすることができない。図２は、こうした保護されたストレージ機関２０６、およびその使用を示している。
【００２４】
保護されたストレージ機関２０６は、１つまたは複数のエンティティからデータを受信し、受信したデータをエンティティのために格納することができる。例えば、エンティティ２０２（１）、２０２（２）、．．．２０２（ｎ）はそれぞれ保護されたストレージ機関２０６と通信して、保護されたストレージ機関２０６にデータを預ける。図２の例では、エンティティ２０２（１）、２０２（２）、．．．２０２（ｎ）は、データ２０４（１）、２０４（２）、．．．２０４（ｎ）をそれぞれ保護されたストレージ機関２０６に提供する。エンティティ２０２（１）から２０２（ｎ）のそれぞれは、格納されているデータをそれ自体のために密封し、保護されたストレージ機関２０６は、こうした密封を行う機能を提供する。データをあるエンティティのために「密封」することは、そのエンティティに対してのみ解放することができるようにデータを格納することを意味する。データの密封は通常、暗号化、すなわちデータの解読に必要なキーを、データがそのために密封されたエンティティからのみ使用できるようにデータを暗号化することによって行われる。図２に示すように、各データ２０４（１）、２０４（２）、．．．２０４（ｎ）は、それぞれエンティティ２０２（１）、２０２（２）、．．．２０２（ｎ）のために密封される。
【００２５】
データが保護されたストレージ機関２０６に格納され、密封された後、エンティティは、保護されたストレージ機関２０６が密封されたデータを要求側エンティティに戻すことを要求することができる。データの密封を解除する前に、保護されたストレージ機関は、要求側エンティティが主張している者であることを決定するために、要求側エンティティの検証２１０を行うことが好ましい。例えばデータ２０４（１）は、エンティティ２０２（１）のために密封され、したがってエンティティ２０２（１）以外のどんなエンティティにも提供されてはならない。したがって、データ２０４（１）の要求が保護されたストレージ機関２０６に入るとき、保護されたストレージ機関は、例えばエンティティ２０２（１）の証明書をチェックする、エンティティ２０２（１）のハッシュまたはチェックサムを計算する、または他の任意のタイプのテストをエンティティ２０２（１）に対して行うなどによって要求側エンティティが本当にエンティティ２０２（１）であることを確認する。一例では、エンティティ２０２（１）は、証明ベクトル（ａｔｔｅｓｔａｔｉｏｎ  ｖｅｃｔｏｒ）２０８に関連付けられている。証明ベクトルは、エンティティ２０２（１）の様々なセキュリティ属性を指定し、また、エンティティ２０２（１）の証明書またはデジタル署名を含むこともできる。この証明ベクトルを使用して、エンティティ２０２（１）が本当に主張しているエンティティであることを確認することができる。こうした証明ベクトル、署名、証明書などを、認証／識別チェックの一部として確認することができる方法は、当業者には知られており、したがって本明細書では説明しない。
【００２６】
一般に、ソフトウェアオブジェクト、ユーザなど、何らかの方法で識別することができる任意のエンティティは、データをそれ自体のために密封することができる。一般に、データの密封された格納を要求するエンティティは、例えばアプリケーション、エージェント、装置ドライバなどのソフトウェアオブジェクトである。
【００２７】
図２のために、データをあるエンティティのために密封することができ、また、データがそのために密封されたエンティティ以外の任意のエンティティによって要求されたときに、その密封されたデータへのアクセスを拒否することができる何らかの保護されたストレージ機関があると仮定する。さらに、保護されたストレージ機関２０６は、あるエンティティのために密封されたデータがそのエンティティからのみアクセスできるという機能を実施するために、分離、耐改ざんなどの十分な機能を有している、またはその機能を有する環境で動作すると仮定する。こうした保護されたストレージ機関を実施する方法は、当業者には明らかであり、したがって本明細書では詳述しない。一例で、保護されたストレージ機関は、メモリ分離、安全な起動、およびプラットフォーム当たりの暗号化キーのハードウェアによって実施される機密保持を提供する環境で稼働することができる。
【００２８】
（密封されたストレージを使用するエンティティとしてのファイルロッカー）
密封されたストレージを使用することができる１つのタイプのエンティティは、ファイルロッカーである。ファイルロッカーは、ソフトウェアからファイルを受信し、保護されたストレージ機関を使用してこうしたファイルをそれ自体のために密封する。次いでファイルロッカーは、ファイルの要求を受信し、こうしたファイルを要求側ソフトウェアオブジェクトに提供することができる様々なポリシーを管理する。例えば、ファイルの要求が受信されると、ファイルロッカーは、要求者が要求されたファイルへのアクセス権を有しているかどうかを決定し、こうした権利が存在する場合にのみ、保護されたストレージからファイルの密封を解除することができる。さらに、要求者がファイルへのアクセス権を有している場合、ファイルロッカーは、そのエンティティによるファイルの悪用から保護するために、ファイルが「ロッカー」外にある間、要求側ソフトウェアオブジェクトの挙動が監視されることを要求することができる。
【００２９】
図３は、ソフトウェアオブジェクトからファイルを受信し、保護されたストレージ機関を使用してこうしたファイルをそれ自体のために密封するファイルロッカー３０２を示している。図３の例では、ソフトウェアオブジェクト３１０は、ファイルに書きたい何らかのデータ３０１を有する。次いでデータ３０１は、ファイル３０６に書き込まれ、そのファイルは、保護するためにファイルロッカー３０２に提供される。ソフトウェアオブジェクト３１０は、ファイルをファイルロッカー３０６に提供していることを知っている場合も知らない場合もあることに留意されたい。ある例では、ソフトウェアオブジェクト３１０は、明示的かつ意図的にファイルロッカー３０６を使用してファイルを保護し、別の例では、ソフトウェアオブジェクト３１０は、単に標準ファイル書き込みＡＰＩを使用し、書き込まれたファイルをファイルロッカーに格納する機能は、そのＡＰＩに組み込まれている。ファイルロッカーの使用が行われ得る様々なシナリオ例は、「シナリオ例」セクションで後述する。
【００３０】
ファイルロッカー３０２は、ファイル３０６を受信すると、ファイル３０６を保護されたストレージ機関２０６に格納する。次いでファイルロッカー３０２はファイル３０６をそれ自体のために密封する。好ましい実施形態では、ファイルロッカー３０２に提供されて格納される任意のファイルは、ファイルロッカー３０２のために密封されるのであり、そのファイルの元のソースのために密封されるのではないことに留意されたい。例えばファイル３０６はファイルロッカー３０２のために密封され、ソフトウェアオブジェクト３１０のために密封されるのではない。上述したように、ソフトウェアオブジェクト３１０は、ファイルロッカー３０２を使用していることを知らない場合があり、また密封されたストレージを直接使用することができない場合もあり、したがってファイルロッカー３０２は、すべてのファイルをそれ自体のために密封することによって、密封されたストレージを直接使用することができないソフトウェアオブジェクトが密封されたストレージの何らかの保護から恩恵を受けることができるようにする。
【００３１】
ファイルロッカー３０２は、ファイル３０６を保護されたストレージ機関２０６に格納する。ファイルロッカー３０２は、識別子３０４をファイル３０６に関連付けることが好ましい。識別子は、ファイルを識別し、最終的にどのソフトウェアオブジェクトがそのファイルにアクセスすることができるかを示すことが好ましい。識別子３０４は、必ずしも密封されたストレージに格納されているとは限らないが、ファイルロッカー３０２からアクセス可能なインデックスに格納することができる。特に、こうしたファイルの要求が入ってくると、密封されたストレージからどのファイルを取り出す必要があるか、また密封を解除する前にどんな条件が満たされなければならないかを決定するために、ファイルロッカー３０２は、密封されたストレージの外部の識別子にアクセスすることができなければならない。
【００３２】
ファイルロッカー３０２は、ファイルロッカー３０２の保護監督下にあるファイルの要求を受信すると、検証３１２を行う。検証３１２は、任意の特定のタイプの検証に限定されない。一例では、検証３１２は、要求者に対して行われる。例えば図３では、ソフトウェアオブジェクト３１０は、ファイル、例えば以前にファイルロッカー３０２の保護監督下に提供された同じファイル３０６などを要求し、ファイルロッカー３０２は、ファイルロッカー３０２が実施するセキュリティの一部として、要求されたファイルを提供する前提条件として何らかのタイプの検証３１２を行う。本発明は、任意の特定のタイプの検証３１２には限定されないが、いくつかの例には、例えばソフトウェアオブジェクト３１０の証明書をチェックする、ソフトウェアオブジェクト３１０のチェックサムまたはハッシュを計算し、計算された値を格納されている値と比較するなど、ソフトウェアオブジェクト３１０の識別をチェックする、またはソフトウェアオブジェクト３１０またはソフトウェアオブジェクト３１０のコールスタックの認証をチェックするチェックなどがある。しかし多くの場合、要求者自体に対する検証を行うことができず、したがってファイルロッカー３０２は、例えば安全な入力／出力を介して特定のファイルを編集しようとしていることを確認することをユーザに求めることによる、またはファイルの所有者として登録されている人間のユーザが現在ファイルロッカーにログインしている、またはファイルロッカーが稼働する安全な環境にログインしていることを確認することによるなど、他の何らかのタイプの検証を行うことができる。ファイルロッカー３０２は、ファイルを要求側ソフトウェアオブジェクトに提供する前に、いくつかのセキュリティパラメータが満たされていることを確認するように設計されているが、本発明は、こうしたパラメータが満たされているかどうかを決定するための任意の特定のセキュリティパラメータの組、または任意の特定の機構に限定されない。
【００３３】
検証３１２の結果が好ましい場合、すなわち関連のセキュリティパラメータが満たされている場合、ファイルロッカー３０２は、ソフトウェアオブジェクト３１０が要求されたファイルを取り出す権利を与えられていると決定する。次いでファイルロッカー３０２は、保護されたストレージ機関２０６と通信して、ファイル３０６の密封を解除し、それを取り出す。次いでファイルロッカー３０２は、ファイル３０６をソフトウェアオブジェクト３１０に戻す。
【００３４】
ソフトウェアオブジェクト３１０は、ファイル３０６を終了した後、ソフトウェアオブジェクト３１０が加えた任意の変更を含むファイルをファイルロッカー３０２の保護監督下に送り返すことによって取り出されたファイルを「チェックイン」することができる。
【００３５】
ソフトウェアオブジェクト３１０は、任意の特定のタイプのソフトウェアに限定されないことに留意されたい。一例として、ソフトウェアオブジェクト３１０は、アプリケーションプログラム、アプリケーションプログラムのサービス提供エージェント、他のプログラムが稼働するオペレーティングシステム、オペレーティングシステムが稼働できる仮想マシンなどとすることができる。
【００３６】
（ファイルロッカーが動作し得るシナリオ例）
ファイルロッカーが動作し得るシナリオ例は、異なるレベルのセキュリティまたは保護を備える複数の環境が同時に稼働するシステムにある。図４は、こうしたシナリオを示している。
【００３７】
図４では、同時に動作する複数の環境、「環境１」、「環境２」、「環境３」、「環境４」がある。これらの環境は、単一のマシン上、または分散されたマシン群の上で動作することができる。各環境は、オペレーティングシステム、仮想マシン、または何らかのタイプのコードの実行が行われ得る他の任意のタイプの環境とすることができる。異なる環境は、何らかのレベルの相互の分離を維持する。すなわち、必ずしも絶対に確実な程度までとは限らないが少なくともある程度まで、ある環境における動作が別の環境からの干渉無しに行われることが可能でなければならない。異なる環境は、異なるレベルのセキュリティを提供し得る。例えば環境１は、非常に限られた組のプログラムのみが稼働することができ、相対的にほとんど機能を提供しないが、その環境で行われる機能が正しく行われ、他の環境で行われるイベントからの侵入を受けないことの高度の保証も提供する高セキュリティまたは高保証環境とすることができる。範囲(spectrum)の他端にある環境４は、任意のコードが稼働することが許可され、しかし、別の環境から始まる侵入または改ざんに対する保証をほとんど提供しない、完全にオープンな環境とすることができる。ハイパーバイザーまたは仮想マシンモニタ４０４、または何らかの同様の構成要素は、これらの環境の同時の動作を管理することができ、また、ある環境を他方の環境と分離するのに必要なサービスを提供することもできる。
【００３８】
環境１が高セキュリティまたは高度保証環境である例では、ファイルロッカー３０２は、その環境でソフトウェアオブジェクトとして稼働する。環境１で動作する封印されたストレージをオブジェクトに提供する能力は、環境１の特徴である。すなわち環境１は、オブジェクトが環境１で、図２および３に示した保護されたストレージ機関２０６の一部または同じものとすることができる密封されたストレージ機関４０２にデータを格納し、そのデータをそれら自体のために密封するのに使用することができる密封されたストレージインターフェース４０６を提供する。密封されたストレージ機関４０２は、環境１の一部である場合は一例にすぎず、代替として、密封されたストレージ機関を、仮想マシンモニタ／ハイパーバイザー４０４、または十分なセキュリティの特徴を有する他の任意の構成要素によって提供することができることに留意されたい。
【００３９】
様々なタイプのソフトウェアオブジェクトは、ファイルロッカー３０２を使用してファイルを格納することができる。例えば、この例では環境３で稼働しているアプリケーション４１２は、ファイルロッカー３０２にファイルを格納することができる。別の例では、環境３は、それ自体、ファイルロッカー３０２にファイルを格納することができるソフトウェアオブジェクトとすることができる。例えば環境３は、格納するファイルをアプリケーションから受け付け、ファイルロッカー３０２に格納することによって、ファイルロッカー３０２の存在を、環境３で稼働するアプリケーションには見えないようにすることができる。さらに別の例として、エージェント４１０、すなわち低保証環境で稼働しているアプリケーションにセキュリティサービスを提供するために高保証環境で稼働する小さいアプリケーションは、ファイルロッカー３０２を使用してファイルを格納することができる。エージェント４１０は、それ自体のために密封されたストレージインターフェース４０６を使用することができ、しかし、エージェント４１０がそれ自体でサービスを重複的に実施するのではなく、ファイルロッカー３０２によって提供されたファイルロッカー３０２のサービス、例えばファイル管理サービスなどを使用することがより便利となり得る環境１で稼働していることに留意されたい。
【００４０】
ファイルがファイルロッカー３０２から、またはアプリケーション４０２によって使用する環境３に解放されると、エンジェル（ａｎｇｅｌ）４０８は、任意選択で、アプリケーション４０２または環境３の挙動を監視して、ファイルがファイルロッカー３０２の保護監督外にある間、ファイルが決して悪用されないようにすることができる。エンジェル４０８は、環境１で動作するエージェントであり、その機能は、ソフトウェアオブジェクトの挙動を監視し、場合によっては制御することによって、セキュリティがより低い環境で稼働するソフトウェアオブジェクトをより安全にすることである。ファイルロッカー３０２の保護監督外にある間、ファイルの使用を監視することが有用となり得るが、すべてのセキュリティモデルがこうした監視を必要とするわけではない。多くのセキュリティモデルでは、ファイルがいったんファイルロッカー３０２の保護監督下に戻されると、改ざん、悪用、または干渉がないようにファイルを保証することができる限り、ファイルロッカー３０２の保護監督外のファイルがこうした改ざん、悪用、および干渉を受けやすくなることを許容できる。
【００４１】
ファイルロッカー３０２を使用できるいくつかのシナリオ例について、下記で説明する。
【００４２】
（ファイルロッカーを使用できるシナリオ例）
ファイルロッカーを使用できるシナリオ例は次の通りである。
【００４３】
１．手動のロック解除。あらゆる標準システム規則、またはファイルロッカーのユーザインターフェースへの直接のログインによって決定された許可されたユーザは、ファイルのロックを解除することをファイルロッカーに求める。ファイルロッカーは通常、元のファイルを保持している間にユーザが使用するようにファイルのロック解除された、暗号化されていないコピーを提供する。あるいは、ユーザに、ソースファイルへの直接のアクセスを許可することができる。ファイルロッカーは、ユーザにキーを提供せず、単に、ユーザが表示、編集などを行うようにファイルのプレーンテキストを提供する。
【００４４】
ファイルをロック解除すると、ユーザは、通常のツール／アプリケーションを使用してファイルを操作する。
【００４５】
操作を行うと、ユーザは、変更したファイルをファイルロッカーに送信する。次いでファイルロッカーは、ファイルを暗号化し、密封する。
【００４６】
任意選択で、ファイルがファイルホルダ、例えばサーバなどに送り返される前に、ユーザに、ダウンロードしたファイルと送信するファイルとの間のファイル差異リストを閲覧するよう求めることができる。この差異リストは、安全なビデオ、すなわち、ビデオ出力の傍受が潜在的なセキュリティホールを提示するため、ファイルロッカーから画面上に表示する差異が実際にユーザが閲覧する差異であるという高度の保証があるビデオを使用して表示されることが好ましい。
【００４７】
ユーザは、ファイルをファイルロッカーに送り返す前に、ファイルを任意の回数編集することができる、またはまったく編集することができない、または、ユーザがファイルロッカーにファイルを決して送り返さない場合もあり得る。
【００４８】
このモデルで、ファイルロッカーは、ファイルが危険にさらされることなく、または変更されることなくユーザのマシンに届くことを保証することができる。また、ユーザが明示的にファイルの使用を要求するまで、確実にファイルを読めない、または変更できないようにするので、ファイルの任意の違反またはその内容への攻撃は、ファイルが「開いている間」、すなわちファイルがファイルロッカーの制御および保護監督の外にあることがわかっているユーザ側で行われるはずである。
【００４９】
ユーザがこれらのファイルをロック解除すること、またそれらをウィルスまたは他のセキュリティリスクにさらすことを決定する前に、ファイルロッカー内のファイルを安全に読むことができるように、ファイルロッカーは、少なくとも一部のファイル形式をユーザに表示することができる機能を有することができる。
【００５０】
２．投影されたロック解除（ｐｒｏｊｅｃｔｅｄ  ｕｎｌｏｃｋ）。投影されたロック解除では、ファイルロッカーは、ファイルを、そのコードＩＤが承認されたリスト上にある特定のバイナリにのみ示す。また、ファイルがバイナリとユーザの正しい組合せのみに解放されるように、ユーザはログインを求められることが好ましい。高保証環境で稼働しないソフトウェアオブジェクトのコードＩＤを計算するために、何らかの形式の「投影（ｐｒｏｊｅｃｔｉｏｎ）」が使用される。この文脈での「投影」とは、非高保証ソフトウェアオブジェクトの挙動に関してある程度のセキュリティを提供するために、高保証環境で稼働するエージェントは、非高保証環境で稼働するソフトウェアオブジェトの挙動を監視し、かつ／またはそれに影響を与える場合を指す。この例では、ファイルロッカーは、エンジェル、すなわち特定の非高保証アプリケーションの場合に上述した投影を実行するエージェント、またはおそらくＡｒｃｈＡｎｇｅｌ、すなわち特定のアプリケーションまたはアプリケーションの組ではなく、一般にアプリケーションの場合に投影を実行するエージェントのためにデータを密封解除し、示す場合があり得る。好ましい実施形態では、次いでエンジェルは、アプリケーションアドレス空間にデータを直接投入する。例えば、非高保証環境で稼働しているＭＩＣＲＯＳＯＦＴ  ＥＸＣＥＬスプレッドシートは、そのバージョンおよびコードＩＤを計算し、次いで高保証環境を呼び出したライブラリを呼び出す。高保証環境は、バージョンおよびコードＩＤの妥当性検査を行うことになる。高保証環境は、非高保証環境、または少なくともＥＸＣＥＬプログラムに投影を適用しているため、コードＩＤはかなり耐久性があり、すなわち人がＥＸＣＥＬのコードを編集することは難しい。次いでＥＸＣＥＬは、再度ライブラリを呼び出して、ファイルデータを読み取り、データがＥＸＣＥＬのアドレス空間に表示される。非高保証環境からの何らかの協力で、エンジェルは、ページがページアウトされる前にＥＸＣＥＬの空間内でページを暗号化することができる。また、ＥＸＣＥＬをデバッグしようとする試行を阻止する場合もある。
【００５１】
したがって、このモデルでは、ローカルおよびリモートの委託側（ｔｒｕｓｔｏｒ）は、ファイルロッカーおよび承認されたバージョンのＥＸＣＥＬ、つまりウィルスまたは他の承認されていない挙動のないもののみがプレーンテキストを表示できるようになることを確信することができる。さらに投影の取り組みにより、ＥＸＣＥＬのそのバージョンは耐久性があり、データはディスク上のプレーンテキストにはない。
【００５２】
このシナリオは、例えばＥＸＣＥＬなど特定のアプリケーションの挙動に関する不確実性を許容することができ、保護されるべき主な脅威が他のソフトウェアである場合に十分なセキュリティを提供する。これは、一般的な脅威モデルである。安全なビデオによって表示する特徴、および再ロック前の差異の比較を可能にする特徴は、このシナリオで使用することができる。
【００５３】
３．ファイルロッカーとボトリング（ｂｏｔｔｌｉｎｇ）との併用。「ボトリング」とは、あるレベルの挙動予測可能性および他のボトルからの分離が維持される場合、１組のアプリケーションがコンテナ、パーティション、または「ボトル」内で稼働する場合を指す。例えば、ボトルは、何らかの制約付きのオペレーティングシステム、例えばＷＩＮＤＯＷＳ（登録商標）ＸＰの小さい構成、またはゲストが何らかのオペレーティングシステムを稼働させる仮想マシンでも、またはそれを含むものでもよい。コンテナ、コンテナオペレーティングシステム、およびコンテナで稼働するアプリケーションまたはアプリケーションの組はすべて「ボトル」である。投影を使用して、ボトル内に保護を適用することができる。
【００５４】
ボトルが与えられると、ファイルロッカーは、ボトルまたはボトル内の何らかの特定のアプリケーションに対してファイルを解放し、データをボトル内でのみプレーンテキスト形式で具体化するように設定することができ、全体としてボトルは、例えば暗号によりページ化（ｃｒｙｐｔｏ  ｐａｇｅｄ）され、そのためデータは、いったんボトル内に入ると、ボトルの外部のすべてのものから安全である。
【００５５】
シナリオ＃３は本質的に、＃２をより強力に分離したバージョンである。これは、動的リンクライブラリのツリーなどのツリーを備えるＭＩＣＲＯＳＯＦＴ  ＯＦＦＩＣＥのアプリケーションスイートなどのアプリケーションの組とよく働き、ボトル化されたアプリケーション下のオペレーティングシステムについての相対的に強力なステートメントを作成する。つまり、ボトル内のオペレーティングシステムは、望ましくは、制約され、証明された小型のオペレーティングシステムであるため、例えば、何らかの不正を働くドライバが、オペレーティングシステムの上で稼働しているアプリケーションからデータを盗まないというかなりの信頼があり得る。というのは、こうした不正を働くドライバは、ボトル内では許可されないからである。
【００５６】
４．ファイルをファイルロッカーに送信する第１のソフトウェアオブジェクトは、ローカルまたはリモートでよく、ファイルを暗号化された形式、または暗号化されていない形式で送信することができる。例えばサーバは、ファイルをファイルロッカーに、あらかじめ暗号されて、または送信のために暗号化され、しかしファイルロッカーがそれを再度暗号化する形式で送信することができる。ファイルを使用するソフトウェアオブジェクトは、もともとファイルをロッカーに入れたソフトウェアオブジェクトとは異なっていてもよい。すなわち、ファイルはあるオブジェクトからロッカーに来て、後で異なるオブジェクトによって使用することができる。次いでファイルを、第１のオブジェクトまたはさらに異なる何らかのオブジェクトに送り返す、または送り返さないことができる。
【００５７】
５．ファイルをファイルロッカーに送信する第１のソフトウェアオブジェクトは、ファイルロッカーがファイルに対して実施することになっているローカル規則を指定することができる。こうした規則は、次のような要件を含むことができる。（１）ファイルのすべてのバージョンは記録されるため、別の環境、例えば信頼されない環境で異なるソフトウェアオブジェクトによってどんな変更が加えられても、変更は常に元に戻すことができる。（２）すべての変更は、ある種のブラウザ／異なるビューアによる安全な入力および安全な出力などで人間のユーザによって見直され、人間によって「意図通り」または意図通りではないとして証明されることが必要であり、この証明書は変更とともに格納される。この技術は、ファイルを扱う第２のソフトウェアオブジェクトが不完全に制御された場合に有用となり得る。基本的な概念は、ファイルロッカーは、例えばＷｏｒｄの．ｄｏｃファイルのすべてのバージョンを保存することである。ファイルがＷｏｒｄなどのアプリケーションで編集され、ファイルロッカーにおそらく透過的に再度書き込まれた後、ファイルロッカーは、ユーザに確認を要求する。ユーザは、信頼された環境で稼働することができる、．ｄｏｃファイルの簡単な「ビューア」を使用することができ、これらの変更はユーザが意図したものであることを、安全な入力を介してファイルロッカーに直接知らせることができる。この方法は、ウィルスが基礎を成すアプリケーション、例えばＷｏｒｄなどを予期せぬように挙動させ、ファイルを予期せぬ方法で編集した場合でさえ、ユーザは、ファイルロッカーを使用して、こうした任意の変更を元に戻す、またはユーザが意図した変更のみが「記録」されることを確実にすることができる。
【００５８】
６．ファイルロッカーは、第１のソフトウェアオブジェクトまたはローカルユーザの代わりに、様々な整合性チェックをファイルに適用することができる。例えば、アプリケーションによって書かれたファイル上でウィルスおよび正当性チェッカを走らせることができる。基本的な概念は、ファイルの変更は保存され、しかしファイルがウィルスを持っていない、破損されていないことなどがわかるまで、「公式として記録」されないことである。この技術は、＃５で上述した技術と組み合わせることができる。
【００５９】
７．安全な入力を使用する人間のユーザがそうすることは許容されると言う限り、ファイルロッカーは、所与のソフトウェアオブジェクトがファイルにアクセスすることができるようにする。これは、例えば、ユーザ「ｆｒｅｄ」がファイルロッカーにログインした場合、任意のツールがｆｒｅｄのロックされたファイルを表示することができる一般的なベース、または、例えばＷｏｒｄがｆｒｅｄのファイル「ｍｙ  ｔａｘｅｓ  ２００３」にアクセスしようとしたとき、ファイルロッカーは、これがＯＫであるかどうかをｆｒｅｄに直接尋ねる特定のベースで行われ得る。さらにユーザは、すべての、または特定のファイルを「あらかじめロック解除」することができる。そのためユーザは、ファイルロッカーに行き、ファイルａ．ｄｏｃおよびｂ．ｄｏｃを使用したいことを伝える。これらのファイルは、証明ベクトルチェック有り、または、なしで、アクセスが許可される。「アクセス許可された」ビットのすべては、ユーザがログオフすると、またはある一定のタイムアウトの後に期限切れになる。さらに、ユーザは、読み取り、または読み取り−書き込みのためにファイルをロック解除することができる。ユーザは、特定の組の変更が記録される、またはバージョン化されることを指定することができる。
【００６０】
８．ファイルロッカーは、２つのステークホルダに基づいて、バージョン履歴を記録する、記録しない、保持する、または保持しないことができる。ファイルロッカーは、一定のポリシーとして、またはファイル作成時にダイアログに応答して人間のユーザの命令でそれを行うことができる。または、１番目のオブジェクトによってファイルが作成されたときに、ファイルとともに送信された行動の命令に応答してそれを行うことができる。そのため、賢明なクライアントは、ファイル作成時に「バージョンの保持、変更の記録、変更の証明書の要求」を設定することができる。
【００６１】
９．ファイルロッカーは、ファイルが開かれた時点で、常に最後に証明されたバージョンのファイルを透過的に戻すことができる。
【００６２】
１０．ファイルロッカーは、ファイル名、作成者、ファイルのサムネイルなど、ファイルのパブリック概要情報とともに格納することができる。この概要情報の一部は、ファイル名など、デフォルトで得られるものであり、他の概要情報は、ファイルが作成されたときにそれに添付されたものであり、さらに別の概要情報は、ファイルロッカーについてファイルを検査した何らかの信頼されたツールによって計算されることになる。次いでファイルロッカーは、あまり信頼されない環境からのいくつかのサービスコールが概要情報を見ることができるようにし、他のコールは、ファイルがロック解除されている場合を除いて何も見えない。例えば、．ｔｉｆｆファイルがファイルロッカーに入れられたとき、ファイルロッカーに入っていくソフトウェアオブジェクトは、ファイルロッカーに対してファイルのサムネイルを宣言することができる。おそらく異なる関連のファイル、またはストリームなどのサムネイルは、要求に応じて、それを要求する第２のソフトウェアオブジェクトに提供される。これは、例えば、通常の信頼されていない仮想マシンまたは他の環境で稼働するファイルエクスプローラアプリケーションがサムネイル、ファイル名、Ｗｏｒｄ．ｄｏｃ概要データなどを表示することができるようにする。これは、キーワード検索を許可する場合もある。しかし、実際のデータをファイルから読み取ることは、ユーザがそれらを読み取るためにロック解除する、または読み取る／書き込むためにロック解除することを必要とし、または第２のソフトウェアオブジェクトが権利証明ベクトルを有することを必要とすることになる。
【００６３】
１１．一例では、攻撃のタイプは、ファイルに不要情報を書き込む、またバックアップバージョンを削除するために、Ｗｏｒｄなどのアプリケーションが何らかの方法で変更される場合がある。このタイプの攻撃を停止するために、ファイルロッカーは、最後の証明されたバージョンに対するそれ以上の編集を許可する前にファイルへの証明されたすべての変更がリモートファイルストア、またはローカルの信頼されたファイルストアに確実に保存されるようにすることができる。したがって、ユーザが信頼された環境で稼働するプログラムを使用して、その変更が正当であることを証明するたびに、ファイルロッカーは、そのファイルの暗号化／鍵付きハッシュ化（ｈｍａｃ’ｄ）され、また任意選択で署名されたバージョンを信頼されたストアまたはリモートストアに送信する。これが成功したことがわかると、ファイルを再度編集することができる。この環境では、ウィルスまたはクライアントコンピュータへの他の攻撃者は、ユーザが現在開いている／証明されていない編集を削除し、ユーザに、最後にチェックインされたバージョンのファイルをリモートの／信頼されたストアに要求させることができるだけである。ファイルを暗号化し、課されるどんな要求についてもファイルロッカーが満されるまで解放を拒否するファイルロッカーの機能は、こうした規則を実施するための特異な力を与える。
【００６４】
（ファイルロッカーを使用するプロセス例）
図５は、ファイルロッカーがファイルを格納し、取り出すために使用されるプロセスの例を示す。最初に、ファイルをファイルロッカーの保護監督下に置くために、ソフトウェアオブジェクトはファイルをファイルロッカーに提供する（５０２）。次いでファイルロッカーは、密封されたストレージ機関にファイルをそれ自体のために密封する（５０４）。
【００６５】
ある時間量が経過した後、ソフトウェアオブジェクトは、ファイルロッカーがファイルをソフトウェアオブジェクトに戻すことを要求することができる（５０６）。ファイルロッカーは、ソフトウェアオブジェクトのある種の検証を行う（５０８）。上述したように、本発明は、特定のタイプの検証に限定されないが、検証は、要求側ソフトウェアオブジェクトの識別、認証などのチェックを含み得る。
【００６６】
検証がパスした場合（５１０）、要求されたファイルがソフトウェアオブジェクトに提供される（５１４）。ソフトウェアオブジェクトがファイルを所有している間、ファイルロッカー、またはファイルロッカーと協働する何らかの構成要素は、任意選択で、ファイルロッカーからチェックアウトしている間、ファイルが決して悪用されないようにするために、要求側ソフトウェアオブジェクトの挙動を監視し、かつ／または制御する（５１６）。要求側ソフトウェアオブジェクトがファイルを処理すると、ファイルはファイルロッカーの保護監督下に戻される（５１８）。
【００６７】
５１０で、検証がパスしなかった場合、ファイルロッカーは、ファイルの密封を解除せず、ファイルは、要求側エンティティに提供されない（５１２）。
【００６８】
５１６と同様に、ファイルがファイルロッカーの保護監督外にある間にファイルを悪用から保護することは必須ではないことに留意されたい。ファイルロッカーは、ファイルがファイルロッカーの保護監督外にあるとき、悪用を防ごうと試行するように実施され得るが、ファイルロッカーが単にファイルはファイルロッカーの保護監督下にある間改ざんされないことを保証し、ファイルロッカーの保護監督外のファイルに起こることについて保証しない許容可能なセキュリティモデルでもある。また、人間のユーザ、または許可された人間のユーザがそうすべきであると言うと、ファイルがその保護監督下から出ることを保証するものでもある。
【００６９】
「信頼されたストア」無しのシステムでは、攻撃者は、ファイルロッカーの保護監督下にある暗号化されたファイルを削除し、したがってファイルを破壊し、他の場所に保存されていない作業が失われる場合がある。たとえそうであっても、ファイルロッカーは、こうした環境で有用である。というのは、これは、（ａ）これらのファイルへの不意の変更がないことがわかり、承認される前に任意の変更が安全に見直されることを実施することができ、（ｂ）ファイルの内容がアクティブに使用されていない間、任意の方法で示されるのを防ぐことができるからである。「信頼されたストア」を備えるシステムでは、ファイルロッカーは、それを使用して、ファイルが保護監督下にある間、ファイルを削除できず、その保護監督外にあるときでさえ、ファイルへの最近の変更のみが失われるように、記録されたバージョンを保持することができることをさらに保証することができる。
【００７０】
上記の例は、単に説明の目的で示したものであり、決して本発明を限定するものとして解釈されるものではないことに留意されたい。様々な実施形態を参照して本発明を説明してきたが、本明細書で使用された単語は、限定の単語ではなく、説明および例示の単語であることを理解されたい。さらに、本発明は、本明細書で特定の手段、材料、および実施形態を参照して説明してきたが、本明細書に開示した詳細に限定されるものではなく、むしろ本発明は、添付の特許請求の範囲内に含まれるような構造、方法、および使用に等しいすべての機能まで拡大される。本明細書の教示の利益を得る当業者は、それに多数の修正を加えることができ、本発明のその態様の範囲および意図から逸脱することなく、変更を加えることができる。
【図面の簡単な説明】
【００７１】
【図１】本発明の態様を実施できるコンピューティング環境例を示すブロック図である。
【図２】複数のエンティティによって使用可能であり、データをエンティティのために密封するために使用することができるストレージ機関を示すブロック図である。
【図３】密封されたストレージを使用してソフトウェアオブジェクトの代わりにファイルを保護するファイルロッカーを示すブロック図である。
【図４】ファイルロッカーがファイルを保護するように動作し得るシナリオ例を示すブロック図である。
【図５】本発明の一態様によるファイルを保護する方法例を示すフロー図である。
【符号の説明】
【００７２】
１００  コンピューティング環境
１２０  処理ユニット
１２１  システムバス
１３１  システムメモリ
１３４  オペレーティングシステム
１３５  アプリケーションプログラム
１３６  他のプログラムモジュール
１３７  プログラムデータ
１４０  固定式不揮発性メモリインターフェース
１４４  オペレーティングシステム
１４５  アプリケーションプログラム
１４６  他のプログラムモジュール
１４７  プログラムデータ
１５０  取外式不揮発性メモリインターフェース
１６０  ユーザ入力インターフェース
１６１  マウス
１６２  キーボード
１７０  ネットワークインターフェース
１７１  ローカルエリアネットワーク
１７２  モデム
１７３  広域ネットワーク
１８０  リモートコンピュータ
１８５  リモートアプリケーションプログラム
１９０  ビデオインターフェース
１９１  モニタ
１９５  出力周辺インターフェース
１９６  プリンタ
１９７  スピーカ
２０２（１）  エンティティ
２０４（１）  データ
２０４（２）  データ
２０４（ｎ）  データ
２０６  保護されたストレージ機関
２０８  証明ベクトル
３０６  保護されたストレージ機関
３０１  データ
３０２  ファイルロッカー
３０４  識別子
３１０  ソフトウェアオブジェクト
４０２  密封されたストレージ機関
４０４  ハイパーバイザー／ＶＭＭ
４０６  密封されたストレージインターフェース
４０８  エンジェル
４１０  エージェント
４１２  アプリケーション
【図１】
2005310122.tif 000003
【図２】
2005310122.tif 000004
【図３】
2005310122.tif 000005
【図４】
2005310122.tif 000006
【図５】
2005310122.tif 000007