(57)【特許請求の範囲】
【請求項１】
コンピュータに実装される方法であって、
ソフトウェア・アプリケーションによって、第１セットのデータを第１バッファに書き込むステップと、
前記第１バッファに記憶された前記データを暗号化ファイル・システムが保存することをリクエストするステップと、
前記第１バッファがロック解除されるまで前記第１バッファにさらなるデータが書き込まれないように、前記リクエストの後に前記第１バッファをロックするステップと、
前記暗号化ファイル・システムによって、前記第１セットのデータを暗号化するステップであって、結果として第１セットの暗号化データが生じ、前記第１セットの暗号化データは、第２バッファに記憶される、前記暗号化するステップと、
前記暗号化ファイル・システムによって、前記第１セットの暗号化データを前記第２バッファから不揮発性記憶領域に書き込むステップと、
前記第１バッファをロック解除するステップであって、前記ロック解除は、前記暗号化の後、ただし前記第１セットの暗号化データすべてが前記第２バッファから前記不揮発性記憶領域に書き込まれる前に実行される、前記解除するステップと、
前記ソフトウェア・アプリケーションによって、第２セットのデータを前記第１バッファに書き込むステップであって、前記第２セットのデータは、前記第１セットの暗号化データの前記第２バッファから前記不揮発性記憶領域への書き込みを前記暗号化ファイル・システムが完了する前に、前記第１バッファに書き込まれ、前記ソフトウェア・アプリケーションは、前記第１バッファがロック解除されるまで、前記第２セットのデータの前記第１バッファへの書き込みを待機する、前記書き込むステップと
を含む、前記方法。
【請求項２】
オペレーティング・システム・カーネル・プロセスが、前記暗号化と、前記第１セットの暗号化データの前記不揮発性記憶領域への前記書き込みとを実行する、請求項１に記載の方法。
【請求項３】
前記第１セットのデータを前記第１バッファに書き込む前に、前記第１バッファが前記ソフトウェア・アプリケーションによって所有されるよう前記第１バッファを割り当てるステップであって、前記リクエストするステップは、前記第１バッファのアドレスを前記暗号化ファイル・システムに送るステップを含む、前記割り当てるステップと、
前記ソフトウェア・アプリケーションから前記リクエストを受けた後に、前記暗号化ファイル・システムによって前記第１バッファをロックするステップであって、前記ロックは、前記ソフトウェア・アプリケーションを含め、コンピュータ・システムにおいて実行されているいずれのソフトウェア・アプリケーションもデータを前記第１バッファに書き込むことができないようにする、前記ロックするステップと
をさらに含む、請求項１又は２に記載の方法。
【請求項４】
前記暗号化を実行する前に、前記暗号化ファイル・システムによって前記第２バッファを割り当てるステップと、
前記第１セットのデータを前記第１バッファから読み出すステップと、
前記第１セットのデータを前記第２バッファに書き込むステップと、
前記第１セットのデータが前記第２バッファに書き込まれた後に、前記第１バッファをロック解除するステップと、
前記第２バッファに書き込まれた前記データをその場で暗号化するステップであって、結果として前記第１セットの暗号化データが前記第２バッファに記憶される、前記暗号化するステップと
をさらに含む、請求項３に記載の方法。
【請求項５】
前記第１バッファがロック解除されたという通知を、前記ソフトウェア・アプリケーションにて受けるステップと、
前記第１セットのデータの前記暗号化が前記暗号化ファイル・システムによって完了される前に、前記ソフトウェア・アプリケーションによって前記第２セットのデータを前記第１バッファに書き込むステップと
をさらに含む、請求項４に記載の方法。
【請求項６】
情報処理システムであって、
１つ以上のプロセッサと、
前記プロセッサのうちの少なくとも１つによってアクセス可能なメモリと、
前記プロセッサのうちの１つ以上によってアクセス可能な不揮発性記憶デバイスと、
前記プロセッサによって実行されるオペレーティング・システムであって、前記オペレーティング・システムは、暗号化データを前記不揮発性記憶デバイスに記憶する暗号化ファイル・システムを含む、前記オペレーティング・システムと、
前記オペレーティング・システムによって管理され、前記プロセッサのうちの１つ以上によって実行されるソフトウェア・アプリケーションと、
命令のセットであって、以下のアクション：
前記ソフトウェア・アプリケーションによって、第１セットのデータを、前記メモリに記憶される第１バッファに書き込むこと、
前記第１バッファに記憶された前記データを前記暗号化ファイル・システムが保存することをリクエストすること、
前記第１バッファがロック解除されるまで前記第１バッファにさらなるデータが書き込まれないように、前記リクエストの後に前記第１バッファをロックすること、
前記暗号化ファイル・システムによって、前記第１セットのデータを暗号化することであって、結果として第１セットの暗号化データが生じ、前記第１セットの暗号化データは、前記メモリに記憶される第２バッファに記憶される、前記暗号化すること、
前記暗号化ファイル・システムによって、前記第１セットの暗号化データを前記第２バッファから前記不揮発性記憶デバイスに書き込むこと、
前記第１バッファをロック解除することであって、前記ロック解除は、前記暗号化の後、ただし前記第１セットの暗号化データすべてが前記第２バッファから前記不揮発性記憶領域に書き込まれる前に実行される、前記解除すること、および
前記ソフトウェア・アプリケーションによって、第２セットのデータを前記第１バッファに書き込むことであって、前記第２セットのデータは、前記第１セットの暗号化データの前記第２バッファから前記不揮発性記憶デバイスへの書き込みを前記暗号化ファイル・システムが完了する前に、前記第１バッファに書き込まれ、前記ソフトウェア・アプリケーションは、前記第１バッファがロック解除されるまで、前記第２セットのデータの前記第１バッファへの書き込みを待機する、前記書き込むこと
を実行するために、メモリにロードされて前記プロセッサのうちの少なくとも１つによって実行される、前記命令のセットと
を含む、前記情報処理システム。
【請求項７】
前記プロセッサのうちの少なくとも１つによって実行される前記命令は、
前記第１セットのデータを前記第１バッファに書き込む前に、前記第１バッファが前記ソフトウェア・アプリケーションによって所有されるよう前記メモリ内の前記第１バッファを割り当てることであって、前記リクエストすることは、前記第１バッファのアドレスを前記暗号化ファイル・システムに送ることを含む、前記割り当てること、および
前記ソフトウェア・アプリケーションから前記リクエストを受けた後に、前記暗号化ファイル・システムによって前記第１バッファをロックすることであって、前記ロックは、前記ソフトウェア・アプリケーションを含め、前記オペレーティング・システムにおいて実行されているいずれのソフトウェア・アプリケーションもデータを前記第１バッファに書き込むことができないようにする、前記ロックすること
を含むさらなるアクションを実行する、請求項６に記載の情報処理システム。
【請求項８】
前記プロセッサのうちの少なくとも１つによって実行される前記命令は、
前記暗号化を実行する前に、前記暗号化ファイル・システムによって前記第２バッファを割り当てること、
前記第１セットのデータを前記第１バッファから読み出すこと、
前記第１セットのデータを前記第２バッファに書き込むこと、
前記第１セットのデータが前記第２バッファに書き込まれた後に、前記第１バッファをロック解除すること、および
前記第２バッファに書き込まれた前記データをその場で暗号化することであって、結果として前記第１セットの暗号化データが前記第２バッファに記憶される、前記暗号化すること
を含むさらなるアクションを実行する、請求項７に記載の情報処理システム。
【請求項９】
前記プロセッサのうちの少なくとも１つによって実行される前記命令は、
前記第１バッファがロック解除されたという通知を、前記ソフトウェア・アプリケーションにて受けること、および
前記第１セットのデータの前記暗号化が前記暗号化ファイル・システムによって完了される前に、前記ソフトウェア・アプリケーションによって前記第２セットのデータを前記第１バッファに書き込むこと
を含むさらなるアクションを実行する、請求項８に記載の情報処理システム。
【請求項１０】
情報処理システムであって、
１つ以上のプロセッサと、
前記プロセッサのうちの少なくとも１つによってアクセス可能なメモリと、
前記プロセッサのうちの１つ以上によってアクセス可能な不揮発性記憶デバイスと、
前記プロセッサによって実行されるオペレーティング・システムであって、前記オペレーティング・システムは、暗号化データを前記不揮発性記憶デバイスに記憶する暗号化ファイル・システムを含む、前記オペレーティング・システムと、
前記オペレーティング・システムによって管理され、前記プロセッサのうちの１つ以上によって実行されるソフトウェア・アプリケーションと、
命令のセットであって、請求項１〜５のいずれか一項に記載の方法の各ステップを実行するために、メモリにロードされて前記プロセッサのうちの少なくとも１つによって実行される、前記命令のセットと
を含む、前記情報処理システム。
【請求項１１】
コンピュータ可読媒体であって、コンピュータに請求項１〜５のいずれか一項に記載の方法の各ステップを実行させるコンピュータ・プログラムを記録した前記コンピュータ可読媒体。
【請求項１２】
コンピュータに、請求項１〜５のいずれか一項に記載の方法の各ステップを実行させる、コンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、暗号化ファイル・システム（ｅｎｃｒｙｐｔｅｄ  ｆｉｌｅ  ｓｙｓｔｅｍ）における入出力制御および効率を改善する手法に関する。特に本発明は、暗号化ファイル・システムにデータを記憶する間にアプリケーションが待機しなければならない時間を短縮する手法を提供する。
【背景技術】
【０００２】
暗号化ファイル・システムには、「フル・ディスク暗号化」（「ディスク全体暗号化」としても既知である）ならびにファイル・システム・レベル暗号化（「フォルダ暗号化」としても既知である）がある。名前が示すように、フル・ディスク暗号化では、スワップ・ファイルおよび一時ファイルを含むほぼすべてのファイルが暗号化される。ほぼすべてが暗号化されるため、ユーザは通常、どのファイルを暗号化するかを決定することはできない。一方、ファイル・システム・レベル暗号化は、ディスク暗号化の一形態であり、個々のファイル、ディレクトリ（フォルダ）、またはファイル・システム自体が暗号化される。典型的には、ファイル・システム・レベル暗号化の方が、特にファイルおよびディレクトリの暗号化に使用される暗号鍵に関して柔軟性がある。一般に、ファイル・システム・レベル暗号化ではファイル・システム・メタデータ（例えば、ディレクトリ構造、ファイル名など）は暗号化されず、その一方でフル・ディスク暗号化のもとでは従来、このメタデータは暗号化される。暗号化ファイル・システムの特定のタイプにかかわらず、暗号化ファイル・システムには入出力制御ならびに効率の面で課題がある。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
暗号化ファイル・システムは、非暗号化データを、暗号化アルゴリズムを用いて暗号化形式に暗号化してから、その暗号化データをハード・ドライブなどの不揮発性記憶デバイス上に記憶する。データを暗号化形式に暗号化して、それからその暗号化データを不揮発性記憶デバイスに書き込むには、比較的時間がかかる。１つの課題は、ソフトウェア・アプリケーションが続行するのが、暗号化ファイル・システムによるデータの暗号化および記憶を待ってからになるということである。これは、暗号化ファイル・システム、ならびに暗号化ファイル・システムを使用するシステムにおいて実行されるソフトウェア・アプリケーション両方に関して効率低下をもたらす。
【課題を解決するための手段】
【０００４】
本発明は、ソフトウェア・アプリケーションが、第１バッファにデータを書き込み、次に不揮発性記憶デバイス上に暗号化ファイル・システムがデータを保存することをリクエストする手法を使用して、前述の課題を解決しようとするものである。暗号化ファイル・システムは、データを暗号化して、暗号化データを第２バッファに記憶し、次に、暗号化データを第２バッファから不揮発性記憶領域に書き込む。その一方でソフトウェア・アプリケーションは、データがまだ不揮発性記憶領域に書き込まれていなくても、データが第２バッファにコピーされた後、さらなるデータのバッファへの書き込みを再開できる。
【０００５】
以下、単なる例として、添付の図面を参照して本発明の実施形態について記載する。
【図面の簡単な説明】
【０００６】
【図１】本願明細書に記載される方法を実装することができるデータ処理システムのブロック図である。
【図２】図１に示された情報処理システム環境の拡張を提供し、本願明細書に記載される方法が、ネットワーク環境で動作する多種多様な情報処理システム上で実行可能であることを示す。
【図３】アプリケーションのデータを暗号化ファイル・システムにセキュアに保存するためのアプリケーションと暗号化ファイル・システムとの間のインターフェースの図である。
【図４】暗号化ファイル・システムをデータの暗号化に使用中、アプリケーションが新たなデータの書き込みを待機する必要がないように、アプリケーションがそのデータを、暗号化ファイル・システムを使用して保存することを示す流れ図である。
【発明を実施するための形態】
【０００７】
以下の記載および図面には、具体的な特定の詳細事項を記載し、本発明の様々な実施形態の完全な理解を提供する。なお、本発明の様々な実施形態を不必要に曖昧にしないよう、コンピューティングおよびソフトウェアの技術に関連することの多い特定の周知の詳細事項は以下の開示には記載されない。さらに、当業者には当然のことであるが、以下に記載される詳細事項の１つ以上を用いずに本発明の他の実施形態を実践することができる。最後に、以下の開示では、ステップおよびシーケンスを参照して様々な方法が記載されるが、そのような記載は、本発明の実施形態の明確な実装を提供するものであり、ステップおよびステップのシーケンスは、本発明の実践に必須と受け取られてはならない。それどころか、下記の事項は、本発明の例の詳細な記載を提供することを目的としており、本発明自体を限定するものと受け取られてはならない。むしろ、様々な変形物が、本記載に続く特許請求の範囲により定義される本発明の範囲内に入ると考えられる。
【０００８】
以下の詳細な説明は、全般的に上記の本発明の概要に従い、必要に応じて、本発明の様々な側面および実施形態の定義をさらに説明し、拡大する。この目的を達成するために、この詳細な説明では、まず、本発明に関連するソフトウェアまたはハードウェア、あるいはその両方の技術を実装するのに適した図１のコンピューティング環境について記載する。現代のコンピューティング技術が、複数の別々のデバイスにまたがって実行可能であることを強調するために、図２には、基本的なコンピューティング環境の拡張としてネットワーク化環境が示されている。
【０００９】
図１は、情報処理システム１００を示し、これは、本願明細書に記載されるコンピューティング動作を実行することができるコンピュータ・システムの単純化した例である。情報処理システム１００は、プロセッサ・インターフェース・バス１１２に結合された１つ以上のプロセッサ１１０を含む。プロセッサ・インターフェース・バス１１２は、プロセッサ１１０を、メモリ・コントローラ・ハブ（ＭＣＨ：Ｍｅｍｏｒｙ  Ｃｏｎｔｒｏｌｌｅｒ  Ｈｕｂ）としても既知であるノースブリッジ１１５に接続する。ノースブリッジ１１５は、システム・メモリ１２０に接続されており、プロセッサ（単数または複数）１１０がシステム・メモリにアクセスする手段を提供する。グラフィックス・コントローラ１２５もノースブリッジ１１５に接続されている。一実施形態では、ＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ：周辺コンポーネント・インターコネクト）Ｅｘｐｒｅｓｓ（Ｒ）バス１１８が、ノースブリッジ１１５をグラフィックス・コントローラ１２５に接続するために使用されている。グラフィックス・コントローラ１２５は、コンピュータ・モニタなどのディスプレイ・デバイス１３０に接続されている。
【００１０】
ノースブリッジ１１５およびサウスブリッジ１３５は、バス１１９を使用して相互に接続されている。一実施形態では、バスは、ノースブリッジ１１５とサウスブリッジ１３５との間で各方向にデータを高速転送するダイレクト・メディア・インターフェース（ＤＭＩ：Ｄｉｒｅｃｔ  Ｍｅｄｉａ  Ｉｎｔｅｒｆａｃｅ）バスである。別の実施形態では、周辺コンポーネント・インターコネクト（ＰＣＩ）バスが、ノースブリッジと、サウスブリッジとを接続するために使用されている。Ｉ／Ｏコントローラ・ハブ（ＩＣＨ：Ｉ／Ｏ  Ｃｏｎｔｒｏｌｌｅｒ  Ｈｕｂ）としても既知であるサウスブリッジ１３５は、一般に、ノースブリッジによって提供される能力よりも低速で動作する能力を実装するチップである。サウスブリッジ１３５は通常、様々なコンポーネントの接続に使用される様々なバスを提供する。このバスには、ＰＣＩおよびＰＣＩ  Ｅｘｐｒｅｓｓバス、ＩＳＡバス、システム管理バス（ＳＭＢｕｓまたはＳＭＢ（Ｓｙｓｔｅｍ  Ｍａｎａｇｅｍｅｎｔ  Ｂｕｓ））、ロー・ピン・カウント（ＬＰＣ：Ｌｏｗ  Ｐｉｎ  Ｃｏｕｎｔ）バスが含まれ得る。ＬＰＣバスは、ブートＲＯＭ１９６および「レガシー」Ｉ／Ｏデバイス（「スーパーＩ／Ｏ」チップを使用する）などの低帯域幅デバイスを接続するために使用されることが多い。「レガシー」Ｉ／Ｏデバイス（１９８）には、シリアルおよびパラレル・ポート、キーボード、マウス、フレキシブル・ディスク・コントローラが含まれ得る。さらにＬＰＣバスが、サウスブリッジ１３５をトラステッド・プラットフォーム・モジュール（ＴＰＭ：Ｔｒｕｓｔｅｄ  Ｐｌａｔｆｏｒｍ  Ｍｏｄｕｌｅ）１９５に接続するために使用される。サウスブリッジ１３５に含まれることの多いその他のコンポーネントには、ダイレクト・メモリ・アクセス（ＤＭＡ：Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）コントローラ、プログラマブル・インタラプト・コントローラ（ＰＩＣ：Ｐｒｏｇｒａｍｍａｂｌｅ  Ｉｎｔｅｒｒｕｐｔ  Ｃｏｎｔｒｏｌｌｅｒ）、および、サウスブリッジ１３５をハイブリッド・ハード・ディスク・ドライブなどの不揮発性記憶デバイス３００にバス１８４を使用して接続する記憶デバイス・コントローラがある。
【００１１】
ＥｘｐｒｅｓｓＣａｒｄ（Ｒ）１５５は、ホットプラグ可能なデバイスを情報処理システムに接続するために使用されるスロットである。ＥｘｐｒｅｓｓＣａｒｄ１５５は、ユニバーサル・シリアル・バス（ＵＳＢ：Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）、ＰＣＩ  Ｅｘｐｒｅｓｓバスの両方を使用してサウスブリッジ１３５に接続されるため、ＰＣＩ  ＥｘｐｒｅｓｓおよびＵＳＢ両方の接続性をサポートする。サウスブリッジ１３５は、ＵＳＢに接続するデバイスにＵＳＢ接続性を提供するＵＳＢコントローラ１４０を含む。こうしたデバイスには、ウェブカメラ（カメラ）１５０、赤外線（ＩＲ：ｉｎｆｒａｒｅｄ）受信機１４８、ワイヤレス・パーソナル・エリア・ネットワーク（ＰＡＮｓ：ｐｅｒｓｏｎａｌ  ａｒｅａ  ｎｅｔｗｏｒｋｓ）を提供するＢｌｕｅｔｏｏｔｈ（Ｒ）デバイス１４６、キーボードおよびトラックパッド１４４、ならびにそのほか、マウス、リムーバブル不揮発性記憶デバイス１４５、モデム、ネットワーク・カード、ＩＳＤＮコネクタ、ファックス、プリンタ、ＵＳＢハブ、およびその他多数のタイプのＵＳＢ接続デバイスなど、種々のＵＳＢ接続デバイス１４２が含まれる。リムーバブル不揮発性記憶デバイス１４５は、ＵＳＢ接続デバイスとして示されているが、リムーバブル不揮発性記憶デバイス１４５は、例えばＦｉｒｅｗｉｒｅ（Ｒ）インターフェースなどの別のインターフェースを使用して接続されてもよいであろう。リムーバブル記憶デバイス１４５は、図３〜６に示されているハイブリッド・ディスク・ドライブ３００などのハイブリッド・ディスク・ドライブとすることもできる。
【００１２】
ワイヤレス・ローカル・エリア・ネットワーク（ＬＡＮ：Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）デバイス１７５が、ＰＣＩまたはＰＣＩ  Ｅｘｐｒｅｓｓバス１７２を介してサウスブリッジ１３５に接続されている。ＬＡＮデバイス１７５は、典型的には、情報処理システム１００と、別のコンピュータ・システムまたはデバイスとの間でのワイヤレス通信にすべてが同じプロトコルを使用する無線変調技術のＩＥＥＥ８０２．１１標準のうちの１つを実装する。光学記憶デバイス１９０は、シリアルＡＴＡ（ＳＡＴＡ：Ｓｅｒｉａｌ  ＡＴＡ）バス１８８を使用してサウスブリッジ１３５に接続されている。シリアルＡＴＡアダプタおよびデバイスは、高速シリアル・リンク上で通信する。シリアルＡＴＡバスは、サウスブリッジ１３５を、ハード・ディスク・ドライブなどの他の形態の記憶デバイスに接続するためにも使用されている。サウンド・カードなどの音声回路１６０が、バス１５８を介してサウスブリッジ１３５に接続されている。音声回路１６０は、音声ライン入力および光デジタル音声入力ポート１６２、光デジタル出力およびヘッドホン・ジャック１６４、内蔵スピーカ１６６、ならびに内蔵マイク１６８などの機能性を提供するために使用される。イーサネット（Ｒ）コントローラ１７０が、ＰＣＩまたはＰＣＩ  Ｅｘｐｒｅｓｓバスなどのバスを使用してサウスブリッジ１３５に接続されている。イーサネット・コントローラ１７０は、情報処理システム１００を、ローカル・エリア・ネットワーク（ＬＡＮ）、インターネット、およびその他のパブリックおよびプライベート・コンピュータ・ネットワークなどのコンピュータ・ネットワークと接続するために使用されている。
【００１３】
図１は１つの情報処理システムを示すが、情報処理システムは多数の形態をとり得る。例えば、情報処理システムは、デスクトップ、サーバ、携帯用、ラップトップ、ノート型、またはその他のフォーム・ファクタのコンピュータもしくはデータ処理システムの形態をとり得る。さらに情報処理システムは、携帯情報端末（ＰＤＡ：ｐｅｒｓｏｎａｌ  ｄｉｇｉｔａｌ  ａｓｓｉｓｔａｎｔ）、ゲーム・デバイス、ＡＴＭ機、携帯用電話デバイス、通信デバイス、またはプロセッサとメモリとを含んだその他のデバイスなど、他のフォーム・ファクタをとることもできる。
【００１４】
図１に示され本願明細書に記載されている、セキュリティ機能を提供するトラステッド・プラットフォーム・モジュール（ＴＰＭ１９５）は、ハードウェア・セキュリティ・モジュール（ＨＳＭ：ｈａｒｄｗａｒｅ  ｓｅｃｕｒｉｔｙ  ｍｏｄｕｌｅ）の一例にすぎない。したがって、本願明細書に記載され、請求されるＴＰＭは、任意のタイプのＨＳＭを含み、次に限定はされないが、「トラステッド・プラットフォーム・モジュール（ＴＰＭ）規格バージョン１．２」という題の、トラステッド・コンピューティング・グループ（ＴＣＧ：Ｔｒｕｓｔｅｄ  Ｃｏｍｐｕｔｉｎｇ  Ｇｒｏｕｐｓ）標準に準拠するハードウェア・セキュリティ・デバイスを含む。ＴＰＭは、図２に略図が示されているものなどの様々な情報処理システムに組み込まれ得るハードウェア・セキュリティ・サブシステムである。
【００１５】
図２は、図１に示された情報処理システム環境の拡張を提供し、本願明細書に記載される方法が、ネットワーク環境で動作する多種多様な情報処理システム上で実行可能であることを示す。情報処理システムのタイプは、ハンドヘルド・コンピュータ／移動電話２１０などの小型のハンドヘルド・デバイスから、メインフレーム・コンピュータ２７０などの大型メインフレーム・システムまで多岐にわたる。ハンドヘルド・コンピュータ２１０の例には、携帯情報端末（ＰＤＡ）、ＭＰ３プレーヤ、携帯用テレビ、およびコンパクト・ディスク・プレーヤなどの個人用娯楽デバイスがある。情報処理システムの他の例には、ペン、すなわちタブレット・コンピュータ２２０、ラップトップ、すなわちノート型コンピュータ２３０、ワークステーション２４０、パーソナル・コンピュータ・システム２５０、およびサーバ２６０がある。図２に個別に示されていない他のタイプの情報処理システムは、情報処理システム２８０によって表されている。図のように、コンピュータ・ネットワーク２００を使用して、様々な情報処理システムをともにネットワーク化することが可能である。様々な情報処理システムを相互接続するために使用できるコンピュータ・ネットワークのタイプには、ローカル・エリア・ネットワーク（ＬＡＮ）、ワイヤレス・ローカル・エリア・ネットワーク（ＷＬＡＮ：Ｗｉｒｅｌｅｓｓ  Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、インターネット、公衆交換電話網（ＰＳＴＮ：Ｐｕｂｌｉｃ  Ｓｗｉｔｃｈｅｄ  Ｔｅｌｅｐｈｏｎｅ  Ｎｅｔｗｏｒｋ）、その他のワイヤレス・ネットワーク、および情報処理システムを相互接続するために使用可能なその他任意のネットワーク・トポロジが含まれる。情報処理システムの多くは、ハード・ドライブまたは不揮発性メモリ、あるいはその両方などの不揮発性データ・ストアを含む。図２に示されている情報処理システムの一部は、独立した不揮発性データ・ストアとともに示されている（サーバ２６０は不揮発性データ・ストア２６５とともに示されており、メインフレーム・コンピュータ２７０は不揮発性データ・ストア２７５とともに示されており、さらに情報処理システム２８０は不揮発性データ・ストア２８５とともに示されている）。不揮発性データ・ストアは、様々な情報処理システムに外付けされるコンポーネントとされても、情報処理システムのうちの１つに内蔵されてもよい。さらに、リムーバブル不揮発性記憶デバイス１４５を情報処理システムのＵＳＢポートまたはその他のコネクタに接続するなど、様々な技術を使用して、リムーバブル不揮発性記憶デバイス１４５を２つ以上の情報処理システム間で共有することが可能である。
【００１６】
図３は、アプリケーションのデータを暗号化ファイル・システムにセキュアに保存するためのアプリケーションと暗号化ファイル・システムとの間のインターフェースの図である。アプリケーション３００は、データ３１０を第１バッファ３２０に書き込む。図のように、第１バッファは、アプリケーション３００により使用または生成される暗号化データの記憶に使用される。バッファ３２０が一杯になったときなど、ある時点で、データを暗号化ファイル・システム３７５に書き込むよう暗号化ファイル・システム・プロセス３３０にリクエストが行われる。一実施形態では、暗号化ファイル・システム・プロセスは、オペレーティング・システムのカーネル内で実行されるカーネル・プロセスである。
【００１７】
暗号化ファイル・システム・プロセス３３０は、第１バッファ３２０からデータを読み出し、暗号化データ３４０を第２バッファ３５０に書き込む。一実施形態では、データは、第１バッファ３２０から読み出されて暗号化され、結果として生じる暗号化データ３４０が第２バッファ３５０に記憶される。別の実施形態では、データは、第１バッファ３２０から読み出され、第２バッファ３５０に書き込まれて、次に第２バッファにおいてその場で（ｉｎ  ｐｌａｃｅ）暗号化される。暗号化データ３４０が作成されて第２バッファ３５０に記憶された後（例えば、上述の実施形態のうちの１つを使用）、続いて暗号化ファイル・システム・プロセス３３０はディスク書き込み３６０を実行し、その結果、暗号化データが第２バッファ３５０から読み出されて、暗号化ファイル・システムの一部である不揮発性データ・ストア３７０に記憶される。
【００１８】
アプリケーション３００は、暗号化ファイル・システム・プロセス３３０によって、データが第１バッファ３２０から読み出された後、さらなるデータを第１バッファ３２０に書き込むことができる。一実施形態では、暗号化ファイル・システム・プロセスは、アプリケーション３００からリクエストを受けると、第１バッファ３２０をロックする。暗号化ファイル・システム・プロセス３３０は、データの読み出しを終えると、アプリケーション３００が第１バッファへのデータの書き込みを再開できるよう第１バッファ３２０をロック解除（ｕｎｌｏｃｋ）する。このように、アプリケーション３００は、第２バッファ３５０に記憶されている暗号化データのすべてが暗号化データ・ストア３７０に書き込まれる前に、第１バッファ３００に対するデータの書き込みを再開することができる。
【００１９】
図４は、暗号化ファイル・システムをデータの暗号化に使用中、アプリケーションが新たなデータの書き込みを待機する必要がないように、アプリケーションがそのデータを、暗号化ファイル・システムを使用して保存すること示す流れ図である。ソフトウェア・アプリケーションの処理は３００にて開始し、その後ステップ４１０でソフトウェア・アプリケーションは、非暗号化データを、ソフトウェア・アプリケーションが実行されている情報処理システムのメモリに記憶される第１バッファ３２０に書き込む。ある時点で（例えば、第１バッファ３２０が一杯になったときまたはほぼ一杯になったときなど）、バッファに書き込まれたデータを、暗号化ファイル・システムにより管理されている不揮発性記憶装置に保存するようリクエストが行われる（ステップ４２０）。一実施形態では、リクエストは、第１バッファ３２０のポインタまたはアドレス、ならびに暗号化ファイル・システム内でデータが記憶されるべき任意のファイル特性（例えば、ファイル名、ファイル位置、ディレクトリなど）を含む。ステップ４２５で、ソフトウェア・アプリケーションは、暗号化ファイル・システム・プロセスにより第１バッファがロック解除されるまで、第１バッファ３２０に対するさらなるデータの書き込みを待機する。
【００２０】
暗号化ファイル・システム処理（例えば、オペレーティング・システム・カーネル・プロセスにより実行される）が、３３０にて開始するよう示されており、その後ステップ４３０にて暗号化ファイル・システム・プロセスは、データを不揮発性記憶装置に保存するリクエストを受ける。ステップ４４０にて、暗号化ファイル・システムは、暗号化データの記憶に使用されることになる既存の第２バッファを、割り当てまたは使用する。ステップ４５０にて、暗号化ファイル・システム・プロセスが第１バッファ３２０からデータを読み出している間、第１バッファはロックされ、ソフトウェア・アプリケーション（または他のソフトウェア・アプリケーション）が、暗号化ファイル・システム・プロセスによるデータの読み出し中に第１バッファにデータを書き込めないようにする。第１実施形態では、ステップ４６０にて、非暗号化データが第１バッファ３２０から読み出され、暗号化ファイル・システム・プロセスにより暗号化され、暗号化データが第２バッファ３５０に記憶される。第２実施形態では、ステップ４６０にて、非暗号化データが第１バッファ３２０から読み出され、第２バッファ３５０に書き込まれ、その場で暗号化される。一方、第３実施形態では、ステップ４６０にて、非暗号化データが第１バッファ３２０から読み出され、別のバッファ（第３バッファ）に書き込まれ、次に第３バッファ内のデータが読み出されて暗号化され、結果として生じる暗号化データが第２バッファ３５０に記憶される。いずれの場合でも、ステップ４７０にて暗号化ファイル・システム・プロセスは、第１バッファからすべてのデータが読み出された後、第１バッファをロック解除する。第１実施形態を使用すると、第１バッファ３２０からすべてのデータが読み出され、結果として生じる暗号化データが第２バッファ３５０に書き込まれると、第１バッファがロック解除される。第２実施形態を用いると、すべての非暗号化データが第１バッファ３２０から読み出されて第２バッファ３５０に書き込まれると、第１バッファがロック解除される（すなわち、その場で暗号化が実行される前）。最後に、第３実施形態を使用すると、第１バッファは、第１バッファ３２０からすべての非暗号化データが読み出されて、「第３」バッファに書き込まれるとロック解除される（データが暗号化され第２バッファ３５０に書き込まれる前）。
【００２１】
第１バッファ３２０がロック解除されると、ステップ４７５にて、ソフトウェア・アプリケーションが通知を受け、ソフトウェア・アプリケーションは、結果として生じる暗号化データが実際に不揮発性記憶装置に書き込まれるのを待つ必要なく、第１バッファ３２０を使用してデータの読み出しおよび書き込みを再開することができる。ステップ４７５と同時に、ステップ４８０にて、暗号化ファイル・システム・プロセスによる、第２バッファ３５０に記憶された暗号化データの、暗号化ファイル・システムにより管理されている不揮発性記憶装置３７０への書き込みが行われる。上記のように、暗号化ファイル・システム・プロセスが暗号化データをデータ・ストア３７０に書き込んでいる間、暗号化ファイル・システムにより管理されている不揮発性記憶装置に最終的に書き込まれるデータの第１バッファ３２０への書き込みを、ソフトウェア・アプリケーションが自由に再開できる。ステップ４９０にて、暗号化データが不揮発性記憶装置に書き込まれた後、第２バッファの記憶に使用されているメモリを解放するために、第２バッファが割り当て解除（解放）される。暗号化ファイル・システム処理は、ソフトウェア・アプリケーションによって、さらなるデータを読み出すよう、またはそれを暗号化ファイル・システムにより管理されている不揮発性記憶領域に書き込むよう暗号化ファイル・システムがリクエストされるまで、４９５にて終了する。
【００２２】
本発明の好適な実装の１つは、クライアント・アプリケーション、すなわち、例えばコンピュータのランダム・アクセス・メモリに常駐するとよいコード・モジュール内の命令のセット（プログラム・コード）またはその他の機能的記述情報（ｆｕｎｃｔｉｏｎａｌ  ｄｅｓｃｒｉｐｔｉｖｅ  ｍａｔｅｒｉａｌ）である。命令セットは、コンピュータによって要求されるまで、例えばハード・ディスク・ドライブ内などの別のコンピュータ・メモリ、または光ディスク（最終的にＣＤ  ＲＯＭにおいて使用される）もしくはフレキシブル・ディスク（最終的にフレキシブル・ディスク・ドライブにおいて使用される）などのリムーバブル・メモリなどに記憶されていても、またはインターネットもしくはその他のコンピュータ・ネットワークを介してダウンロードされてもよい。したがって、本発明は、コンピュータ用のコンピュータ・プログラム製品として実装されてもよい。さらに、記載された様々な方法は、都合のよいことに、ソフトウェアによって選択的に有効化または再設定される汎用コンピュータによって実装されるが、当該の方法が、ハードウェア、ファームウェア、または要求される方法ステップを実行するよう構築された、より特殊な装置において実行され得ることも、当業者には当然のことである。機能的記述情報は、機能性を機械に与える情報である。機能的記述情報は、次に限定されるものではないが、コンピュータ・プログラム、命令、ルール、ファクト（ｆａｃｔ）、計算可能関数の定義、オブジェクト、データ構造を含む。
【００２３】
本発明の特定の実施形態を示し説明したが、当業者には当然のことながら、本願明細書の教示に基づき、本発明およびそのより広範な側面から逸脱することなく、変更を加えることおよび改変することができる。したがって、添付の特許請求の範囲は、そのような変更および改変すべてを、本発明の範囲内にあるものとしてその範囲内に含むものとする。さらに、当然のことながら、本発明は添付の特許請求の範囲のみによって定義される。当業者には当然のことながら、導入される請求項の構成要素の特定数が意図される場合、そのような意図は請求項内で明確に述べられ、そのように述べられていなければそのような限定は存在しない。理解するための支援として非限定的な例を挙げると、以下の添付の特許請求の範囲は、請求項の構成要素を導入するために、前置き表現「少なくとも１つの」および「１つ以上の」の利用を含む。しかし、そのような表現の使用は、不定冠詞「ａ」または「ａｎ」による請求項の構成要素の導入が、当該の導入された請求項の構成要素を含む特定の請求項を、当該構成要素を１つのみ含む発明に制限することを意味すると解釈されるべきではない。これは、同じ請求項が前置き表現「１つ以上の」または「少なくとも１つの」と、「ａ」または「ａｎ」などの不定冠詞とを含む場合であっても同じである。請求項における定冠詞の使用についても同じことが言える。
【図１】
0005476381.tif 000002
【図２】
0005476381.tif 000003
【図３】
0005476381.tif 000004
【図４】
0005476381.tif 000005