(57)【特許請求の範囲】
【請求項１】
ホストに接続され、前記ホストがデータを書き込むこと又はデータを読み取ることを可能にする外部記憶装置であって、
データを書き込むこと及びデータを読み取ることができるメモリモジュールと、
前記ホストからの読取り又は書込み命令を受信するように構成され、当該外部記憶装置上に記憶された１つ以上の信用証明データに基づいて前記メモリモジュールから読み出された又は前記メモリモジュールに書き込まれたデータを暗号化又は復号化するようにさらに構成され、且つ当該外部記憶装置の前記メモリモジュールに前記読取り又は書込み命令を転送することによって前記メモリモジュールからデータを読取り又は前記メモリモジュールにデータを書き込む動作を実行し、これにより当該外部記憶装置に記憶された前記１つ以上の信用証明データを用いて暗号化又は復号化されたデータを読取り又は書き込むようにさらに構成されたインターセプトモジュールと、
当該外部記憶装置上に書き込まれたファイルシステムの整合性を検査するための整合性検査モジュールと
を備え、
前記整合性検査モジュールが、
あるディレクトリに属する全てのブロックが同じキーを用いて暗号化されるかどうかを検査することと、
特定のファイルに属する全てのブロックが同じ信用証明データを用いて暗号化されるかどうかを検査することと
のうち１つ以上を実行するように構成されている、外部記憶装置。
【請求項２】
前記１つ以上の信用証明データを前記メモリモジュールの対応するセグメントに対してそれぞれマッピングして、これにより、特定のセグメント内のデータを暗号化又は復号化する前記１つ以上の信用証明データを定義するための信用証明データマッピングテーブルを備え、使用できる状態の信用証明データに対応するセグメントが前記ホストに対して外部記憶媒体として現れるとともに他のセグメントが見えなくなるようになっている、請求項１に記載の外部記憶装置。
【請求項３】
前記ホストからの読取り又は書込み命令を受信するように構成され、前記ホストに対して仮想ファイルシステムを提供するための仮想ファイルシステム用モジュールと、
読取り又は書込み命令に関連して前記仮想ファイルシステムによって受信された論理アドレスを、対応する物理的ブロックアドレスに対してマッピングするためのマッピングモジュールと、
当該外部記憶装置に記憶される又は書き込まれるデータを暗号化及び／又は復号化するために使用される少なくとも１つのアクセス用信用証明データを記憶するための信用証明データストアと、
前記マッピングモジュールによって実行されたマッピングに基づいて、前記メモリモジュール内のアドレスに対して読取り又は書込み命令を生成するためのモジュールと
をさらに備えている請求項１又は２に記載の外部記憶装置。
【請求項４】
前記信用証明データが１つ以上の対応する失効条件と一緒に記憶媒体の中に書き込まれ、
前記記憶媒体が、
前記外部記憶媒体上で実行されるファイルシステムとして前記ホストに対して現れ、かつ読取り可能及び／又は書込み可能なデータとしてこれらデータを前記ホストに提示する仮想ファイルシステムであって、前記読取り可能及び／又は書込み可能なデータが、前記失効条件がまだ満たされていないため、まだ失効していないアクセス用信用証明データが存在するようなものである、仮想ファイルシステムをさらに備えている、
請求項１ないし３のいずれか一項に記載の外部記憶装置。
【請求項５】
読取り及び書込みを行うために、１つ以上の信用証明データの中で使用できる状態の１つの信用証明データが存在し、
前記マッピングモジュールが、前記アクセス用信用証明データに応じて論理アドレスと対応する物理的アドレスとの間のマッピングを記憶するようになっている、
請求項１ないし４のいずれか一項に記載の外部記憶装置。
【請求項６】
読取り及び書込みを行うために、１つ以上の信用証明データの中で使用できる状態の１つ以上の信用証明データが存在し、
前記マッピングモジュールが、論理アドレスと、対応する物理的アドレスと、選択されたセグメントに依存するアクセス用信用証明データとの間のマッピングを記憶するようになっている、
請求項１ないし５のいずれか一項に記載の外部記憶装置。
【請求項７】
前記外部記憶媒体が幾つかのパーティションを有し、各パーティションに対して使用できる状態の信用証明データが割り当てられ、かつ、ユーザが、対応するパーティションを操作することにより前記外部記憶媒体上のファイルを暗号化又は復号化するための信用証明データを選択するようになっている、請求項１ないし６のいずれか一項に記載の外部記憶装置。
【請求項８】
書込み用に１つの使用できる状態の信用証明データがあり、また読取り用には複数の使用できる状態の信用証明データがあり、読取り用の使用できる状態の信用証明データの１つによって暗号化された全てのデータは読み取ることが可能であり、書き込まれるデータは使用できる状態の書込み用信用証明データによって暗号化される、請求項１ないし７のいずれか一項に記載の外部記憶装置。
【請求項９】
データブロックがブロックキーによって暗号化され、かつ前記ブロックキーが対応する信用証明データによって暗号化される、請求項１ないし８のいずれか一項に記載の外部記憶装置。
【請求項１０】
あるブロックと、該ブロックが暗号化されるその対応するブロックキーとの間の対応関係を維持するためのキー割当てテーブルと、
あるブロックと、その対応する信用証明データ又は対応するブロックキーを暗号化する信用証明データとの間の対応関係を維持するための信用証明データ割当てテーブルと
をさらに備えている、請求項９に記載の外部記憶装置。
【請求項１１】
前記整合性検査モジュールが、
前記ホストから当該外部記憶装置を取り外した後、
周期的に、
前記ファイルシステムに何らかの書込み動作を行った後
という条件のうち１つ以上の条件のもとで実行されるようになっている、請求項１に記載の外部記憶装置。
【請求項１２】
前記整合性検査モジュールが、ディレクトリエントリーを含むブロックのリストを保持するようになっている、請求項１に記載の外部記憶装置。
【請求項１３】
ディレクトリと該ディレクトリの内容を暗号化するために使用される信用証明データとの間のマッピングを含むデータ構造を保持するためのモジュールをさらに備え、前記内容が書き込まれるディレクトリが、書込みに対してどの信用証明データが使用されるかを表すようになっている、請求項１ないし１２のいずれか一項に記載の外部記憶装置。
【請求項１４】
暗号化されたファイル及び／又はディレクトリの真の名前を変更することによって、前記暗号化されたファイル及び／又はディレクトリの真の名前を隠すためのモジュールをさらに備えている、請求項１ないし１３のいずれか一項に記載の外部記憶装置。
【請求項１５】
請求項１ないし１４のいずれか一項の外部記憶装置に基づいて、該外部記憶装置にデータを書き込むためのホストであって、
１つ以上のアクセス用信用証明データと１つ以上の対応する失効条件とを前記外部記憶装置に書き込み、これにより前記外部記憶装置が、読取り可能及び／又は書込み可能なデータとしてこれらのデータを当該ホストに提示することが可能な書込みモジュールであって、前記読取り可能及び／又は書込み可能なデータが、前記失効条件がまだ満たされていないため、まだ失効していないアクセス用信用証明データが存在するようなものである、書込みモジュールを備えている、
ホスト。
【請求項１６】
前記外部記憶装置のセグメント、
前記外部記憶装置のパーティション、
前記外部記憶装置上の物理ブロック、
前記外部記憶装置上のファイル及びディレクトリ、
のうちの１つ以上に対して信用証明データのマッピングを実行するようになっている、請求項１５に記載のホスト。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、外部記憶装置に関する。
【背景技術】
【０００２】
ＵＳＢスティックなどの外部大容量記憶装置は、物理的な寸法が小さく、また今日では数ギガバイトの大容量を有している。このため、ネットワーク上の任意のデータをコピーして、それらを持って見つからずに会社の建物から離れることが容易なため、大容量記憶装置は、企業ネットワークにとって脅威である。大容量記憶装置は、容易に失くす可能性があるため、そのような方法で会社の機密データを失わないようにすることは、会社にとって重要な関心ごとである。他方では、これらのスティックは極めて有用であり、ファイルを同僚との間で共有する場合は、日常の事務作業を簡単なものにする。外部記憶媒体の使用を禁止することは、この問題に解決する１つの方法ではあるが、十分ではない。外部記憶媒体の内容を同時に暗号化することによって、これらのスティックの使用に関する柔軟性を維持することの方が一層説得力がある。
【０００３】
マーケット上には、外部記憶媒体の内容の暗号化を処理する種々の解決策が存在している。媒体にアクセスすることを望む装置上にインストールされるプロプライエタリ・ソフトウェア（proprietary software）を必要とするものもある。暗号化及び復号化を実行するために暗号キーを含む付加的なハードウェアのトークンを使用するものもある。このトークンは取り外すことができ、また記憶媒体から離して携帯すべきである。この場合のリスクは、これらのトークンを簡単に失くす可能性があること、又はユーザがそれらを分けて持っておかないことである。
【０００４】
この問題に対する解決策は、出願番号が２００７−１０４７０２号で「外部記憶装置（External Storage Medium）」という発明名称の本願と同じ出願人によって出願された日本特許出願の中に記載されている。この特許出願は、参照することによって本願に組み込まれる。その出願の中で、その中に記憶されたデータを自動的に暗号化し、一定の失効条件（expiration condition）が来るまで任意のホストに対して読取り可能な状態を保つように構成された外部記憶媒体が記載されている。失効条件が来た後は、アクセス用信用証明データ（例えば、データの読取りに必要なキー）の期限が切れるため、ファイルを読み出すことができなくなる。
【０００５】
アクセス用信用証明データは１つ以上の失効条件と一緒に記憶媒体上に書き込まれており、この１つ以上の失効条件の１つが満たされるかどうかにより、信用証明データによって暗号化されたデータが読取り可能になるかどうかが決まる。失効条件の例には、到達すべき一定の時間、又は経過すべき期間、データを読み出せる一定（最大）の回数などがある。このような方法で、失効条件が満たされるまで、記憶媒体に自由にアクセスすることができ、また望ましい失効条件を設定することによって、記憶媒体上のデータを要望どおりに保護することができる。
【０００６】
そのような装置は、透過的な（記憶媒体にアクセスするために付加的なハードウェア及びソフトウェアを必要としない）暗号化及び復号化スキームを備えている。
【０００７】
こうした新しい外部記憶媒体を実現する場合の問題点は、現行のシステムに対してできる限り少しの変更しか必要とされず、このため高い下位互換性（downward compatibility）が提供できるような具体的な実装を行うことにある。
【０００８】
そのような解決策は、好ましくは、今日の主流のオペレーティングシステムに付属する、大容量記憶媒体用の現行のドライバを利用できる必要がある。
【発明の開示】
【０００９】
１つの実施形態によれば、ホストに接続され、前記ホストがそこにデータを書き込むこと又はそこからデータを読み取ることを可能にする外部記憶装置が提供される。この外部記憶装置は、
データを書き込むこと及びデータを読み出すことができるメモリモジュールと、
前記ホストからの読取り又は書込み命令を受信するように構成され、当該外部記憶装置上に記憶された１つ以上の信用証明データに基づいて前記メモリモジュールから読み出された又は前記メモリモジュールに書き込まれたデータを暗号化又は復号化するようにさらに構成され、且つ当該外部記憶装置の前記メモリモジュールに前記読取り又は書込み命令を転送することによって前記メモリモジュールからデータを読取り又は前記メモリモジュールにデータを書き込む動作を実行し、これにより当該外部記憶装置に記憶された前記１つ以上の信用証明データを用いて暗号化又は復号化されたデータを読取り又は書き込むようにさらに構成されたインターセプトモジュールと
を備えている。
を具備している。
【００１０】
こうした装置を用いて、この媒体にアクセスするホストには見えない方法で、外部大容量記憶媒体上の種々の信用証明データを用いて暗号化されたファイルを記憶することができる。記憶媒体を使用するホストを用意することは要求されない。さらに、ハードウェアによる暗号化及び復号化を効率良く行うことができ、またホストのＣＰＵは暗号化及び復号化には使用されない。
【００１１】
１つの実施形態によれば、この外部記憶装置は、
１つ以上の信用証明データを前記メモリモジュールの対応するセグメントに対してそれぞれマッピングして、これにより、特定のセグメント内のデータを暗号化又は復号化する１つ以上の信用証明データを定義するための信用証明データマッピングテーブルを備え、使用できる状態（アクティブ）の信用証明データに対応するセグメントが前記ホストに対して外部記憶媒体として現れるとともに他のセグメントが見えなくなるようになっている。
【００１２】
このやり方では、記憶装置をセグメントに分割することができ、これらのセグメントはこの時別個の装置としてホストのように見える。信用証明データのマッピングはホストによって行われ、次に固定されて残り、場合によっては、セグメントはホストによって再び変更される。このやり方では、極めて低いレベル（実際の「記憶レベル」）で、ファイルシステム又は外部記憶装置上で実行されるファイルシステム用ドライバを必要とせずに、自動的な暗号化及び復号化を実行することができる。
【００１３】
１つの実施形態によれば、外部記憶装置は、
前記ホストからの読取り又は書込み命令を受信するように構成され、前記ホストに対して仮想ファイルシステムを提供するための仮想ファイルシステム用モジュールと、
読取り又は書込み命令に関連して前記仮想ファイルシステムによって受信された論理アドレスを、対応する物理的ブロックアドレスに対してマッピングするためのマッピングモジュールと、
当該外部記憶装置に記憶される又は書き込まれるデータを暗号化及び／又は復号化するために使用される少なくとも１つのアクセス用信用証明データ（access credential）を記憶するための信用証明データストア（credential store）と、
前記マッピングモジュールによって実行されたマッピングに基づいて、前記メモリモジュール内のアドレスに対して読取り又は書込み命令を生成するためのモジュールと
をさらに備えている。
【００１４】
１つの実施形態によれば、外部記憶装置は、
前記ホストから読取り又は書込み命令を受信するためのモジュールと、
前記仮想ファイルシステムによって受信された論理アドレスを対応する物理ブロックのアドレスにマッピングするためのマッピングモジュールと、
前記外部記憶装置に記憶された又は書き込まれたデータを暗号化及び／又は復号化するために使用される少なくとも１つのアクセス用信用証明データを記憶するための信用証明データストアと、
前記マッピングモジュールによって識別された前記メモリモジュール内のアドレスに読取り又は書込み命令を転送するための大容量記憶システム用ドライバと
をさらに備えている。
【００１５】
これにより、そのような暗号記憶装置を特に簡単に実現することができる。受信モジュールはホストに対して一種の「仮想大容量記憶システム」として動作し、マッピングモジュールは解釈（translation）を実行し、信用証明データストアは信用証明データを保持し、また大容量記憶システム用ドライバはマッピングモジュールによって与えられたアドレスに対して読取り／書込み命令を出力する。
【００１６】
１つの実施形態によれば、前記信用証明データが１つ以上の対応する失効条件と一緒に記憶媒体の中に書き込まれており、前記記憶媒体は、
前記外部記憶媒体上で実行されるファイルシステムとして前記ホストに対して現れ、かつ前記失効条件がまだ満たされていないことからまだ失効していないアクセス用信用証明データが存在するような読取り可能及び／又は書込み可能なデータとしてこれらのデータを前記ホストに提示するように構成された仮想ファイルシステムをさらに備えている。
【００１７】
このやり方では、記憶媒体に対するアクセスは、信用証明データに対する１つ以上の失効条件が満たされているかどうかによって行うことができるため、１つ以上の失効条件に基づいて記憶媒体上のデータを保護することができる。１つ以上の条件が満たされない限り、データは自由にアクセス可能であるが、１つ以上の失効条件が満たされると、これは対応する信用証明データが失効し、かつそれらで暗号化されたデータはもはや読取り又は書込みすることができないことを意味する。
【００１８】
１つの実施形態によれば、読取り及び書込みを行うために１つ以上の信用証明データの中で使用できる状態の１つの信用証明データがあり、
前記マッピングモジュールが、アクセス用信用証明データに応じて論理アドレスと対応する物理的アドレスとの間のマッピングを記憶するようになっている。
【００１９】
わずか１つしか有効でない複数の可能な信用証明データにより、様々な失効条件が様々な信用証明データに対して使用されることが可能にされる。それにもかかわらず、わずか１つの信用証明データしか有効ではないが、ホストはこの使用できる状態の信用証明データによって暗号化された記憶装置の部分のみを「見る」ことになる。その上、ホストは空のブロックも見得る。
【００２０】
読取り及び書込みを行うための１つの実施形態によれば、１つ以上の信用証明データの中で使用できる状態の１つ以上の信用証明データが存在し、
前記マッピングモジュールが、論理アドレスと、対応する物理的アドレスと、選択されたセグメントに依存するアクセス用信用証明データとの間のマッピングを記憶するようになっている。
【００２１】
１つの実施形態によれば、前記外部記憶媒体が幾つかのパーティションを有し、各パーティションに対して使用できる状態の信用証明データが割り当てられ、またユーザは、対応するパーティションを操作することによって外部記憶媒体上のファイルを暗号化又は復号化する信用証明データを選択する。
【００２２】
これにより、「複数の」記憶装置を１つの記憶装置上に実現することができ、対応するパーティションによって個々の記憶装置を区別することができる。
【００２３】
１つの実施形態によれば、様々な失効条件を様々なアクセス用信用証明データに割り当てることができる。
【００２４】
これにより、ユーザに対して装置の柔軟性が高められる。
【００２５】
１つの実施形態によれば、データブロックがブロックキーによって暗号化され、また前記ブロックキーが対応する信用証明データによって暗号化される。
【００２６】
１つの実施形態によれば、書込み用に１つの使用できる状態の信用証明データがあり、また読取り用には複数の使用できる状態の信用証明データがあるため、読取り用の使用できる状態の信用証明データの１つによって暗号化された全てのデータは読み取ることが可能であり、書き込まれるデータは使用できる状態の書込み用信用証明データによって暗号化される。
【００２７】
１つの実施形態によれば、この外部記憶装置は、
ブロックと、該ブロックが暗号化されるその対応するブロックキーとの間の対応関係を維持するためのキー割当てテーブルと、
ブロックと、対応するブロックキーを暗号化するその対応する信用証明データとの間の対応関係を維持するための信用証明データ割当てテーブルと
をさらに備えている。
【００２８】
これにより、外部記憶装置に対して様々なキー及び信用証明データが使用できるようにされるが、全体の記憶媒体は信用証明データが失効していない限りホストに対してアクセスすることができる。
【００２９】
１つの実施形態によれば、この外部記憶装置は、
前記外部記憶装置上に書き込まれたファイルシステムの整合性を検査するための整合性検査モジュールをさらに備えている。
【００３０】
これにより、書込み工程の間に発生する可能性がある衝突が避けられる。
【００３１】
１つの実施形態によれば、前記整合性検査モジュールは、
ディレクトリに属する全てのブロックが同じ信用証明データを用いて暗号化されるかどうかを検査することと、
特定のファイルに属する全てのブロックが同じ信用証明データを用いて暗号化されるかどうかを検査することと
のうち１つ以上を実行するように構成されている。
【００３２】
これにより、書込み工程の間に発生する可能性がある典型的な衝突に関して点検が行われる。
【００３３】
１つの実施形態によれば、前記整合性検査モジュールは、
ホストから媒体を取り外した後、
周期的に、
ファイルシステムに何らかの書込み動作を行った後
という条件のうち１つ以上の条件のもとで実行することができる。
【００３４】
１つの実施形態によれば、前記整合性検査モジュールは、ディレクトリエントリーを含むブロックのリストを保持するようになっている。
【００３５】
１つの実施形態によれば、この外部記憶装置は、ディレクトリとこのディレクトリの内容を暗号化するために使用される信用証明データとの間のマッピングを含むデータ構造を保持するためのモジュールをさらに備え、内容が書き込まれるディレクトリが、書込みに対してどの信用証明データが使用されるかを表している。
【００３６】
このことは、操作性を高めて、書込みに対して唯一の信用証明データしか存在しないが、種々のサブディレクトリに使用することができる所定の信用証明データが存在するため、それは整合性の確認を一層容易にする。
【００３７】
１つの実施形態によれば、この外部記憶装置は、暗号化されたファイル及び／又はディレクトリの真の名前を変更することによって隠すためのモジュールをさらに備えている。
【００３８】
これにより、信用証明データが失効した後であっても、ファイル／ディレクトリの重要性をそれらのファイル名から推測できないようにする。
【００３９】
１つの実施形態によれば、先行する特許請求の範囲の１つの外部記憶装置に基づいて、前記外部記憶装置にデータを書き込むためのホストが提供され、前記ホストが、
１つ以上のアクセス用信用証明データと１つ以上の対応する失効条件とを前記外部記憶装置に書き込み、これにより前記記憶媒体が、前記失効条件がまだ満たされていないことからまだ失効していないアクセス用信用証明データが存在するような読取り可能及び／又は書込み可能なデータとして、これらのデータを当該ホストに提示することが可能なように構成された書込みモジュールを備えている。
【００４０】
このやり方では、媒体上に信用証明データ（及びそれらの失効条件）を定義及び書き込むために使用される「トラステッド・ホスト（trusted host）」を実装して、これによりそれを使用するために準備すなわち初期化を行うことができる。
【００４１】
１つの実施形態によれば、前記ホストは、
記憶装置のセグメント、
記憶装置のパーティション、
記憶装置上の物理ブロック、
記憶装置上のファイル及びディレクトリ
のうちの１つ以上に対して信用証明データのマッピングを実行するようになっている。
【００４２】
本発明の実施形態を説明する前に、下記で使用される幾つかの用語を説明する。
【００４３】
ＦＡＴ＝ファイル割当てテーブル（File Allocation Table）
ＫＡＴ＝キー割当てテーブル（Key Allocation Table）
ＣＡＴ＝信用証明データ割当てテーブル（Credential Allocation Table）
ＣＴ＝信用証明データテーブル（Credential Table）
ＦＳＤ＝ファイルシステム用ドライバ（File System Driver）
【００４４】
ブロック：ブロックは、メモリの連続した部分である（例えば、パーシスタント・メモリ（persistent memory）をアドレス指定できる最小単位）。
【００４５】
論理ブロック：論理ブロックは、ホスト上のファイルシステム用ドライバによってアドレス指定される外部メモリの単位である。
【００４６】
物理ブロック：物理ブロックは、インターセプタ・モジュールによってパーシスタント・メモリ内でアドレス指定される単位である。物理ブロックにアクセスするには、駆動されるファイルシステムが、外部メモリ又はそのインターセプタ・モジュールによって提供され、次にインターセプタ・モジュールによって対応する物理ブロックのアドレスに移動される論理ブロックのアドレスにアクセスすることになる。
【００４７】
パーティション：パーティションは、ホストが実行する記憶媒体（例えば、ハードディスク）の区分である。通常、パーティション情報は、ハードディスク上のパーティションテーブルに記憶される。
【００４８】
セグメント：外部記憶装置のセグメントは、外部記憶媒体の区分又は部分、例えば外部記憶媒体における特定の記憶領域又は外部記憶媒体の中の特定の（物理）アドレスのセットである。各セグメントに対して、対応するアクセス用信用証明データ（access credential）及びさらにセグメントの物理ブロックのアドレスを対応する論理ブロックのアドレスの中にマップするマッピングテーブルが設けられている。これらの論理ブロックのアドレスは、ホストのファイルシステム用ドライバに提示され、またそのドライバによってアクセス可能である。複数のセグメントのそれぞれに対して、このような信用証明データ及びマッピングテーブルを設けることによって、唯一の信用証明データが有効（アクティブ）に設定され、またこれにより対応するマッピングテーブルのみが有効になると同時に、どのセグメントが実際に有効になるかによるが、様々なセグメントを実際に様々な外部装置があるようにホストに見えるようにすることが可能になる。その結果、複数のセグメントを含む外部記憶媒体は、ホストにとってあたかも複数の外部記憶媒体のように見えることになる。より明確に説明すると、使用できる状態（アクティブ）の信用証明データが変更されて、これにより「使用できる状態（アクティブ）」マッピングテーブルも変更されると、異なるマッピングテーブル及び異なる使用できる状態のアクセス用信用証明データが、前とは異なるデータをそこに記憶した完全に異なる物理記憶位置にアクセスできないようにするため、外部記憶装置が前に「見た」ものとは完全に異なるものであるようにホストには思われる。外部記憶媒体上のセグメントは、媒体の互いに素な部分を参照する必要はない。具体的に、２つの異なるセグメントには、同じ論理ブロックのアドレスを使用するファイルシステム用ドライバ又はホストがアクセスすることができるが、どのアクセス用信用証明データ及びこのアクセス用信用証明データに対応するどのマッピングテーブルが有効に設定されるかに応じて、これらの同じ論理ブロックのアドレスは実際に記憶装置上の異なる物理アドレスを参照する。このため、外部記憶装置のセグメントは、ハードディスクの様々なパーティションとは大いに異なっている。ハードディスクのパーティションは、ホストが隣接する論理ブロックのアドレスを通してアクセスすることができるが、同じ論理ブロックのアドレスを通してアクセスできない。
【００４９】
以下に、例えば、日本特許出願第２００７−１０４７０２号の中で説明されている外部記憶媒体のような、外部記憶媒体及びファイルシステムを説明する。
【００５０】
１つの実施形態によれば、暗号化及び復号化用のキー管理を処理する付加的なハードウェアと、必要なアクセス用信用証明データが提供されて、媒体がアクセスされている途中で暗号化及び復号化を実行するファイルシステムとを備えた外部記憶媒体が提供される。１つの実施形態によるアクセス用信用証明データは、例えば外部記憶装置に記憶されるデータを暗号化又は復号化するために使用される１つ以上のキーである。
【００５１】
このような外部記憶媒体に対して見られる典型的な使用事例は、同僚すなわち仕事のパートナーとの間でファイルを共有すること及び出張の間にファイルのバックアップを行うことである。
【００５２】
このような外部記憶媒体のファイルシステムを説明する前に、最初に外部記憶媒体自体の実施形態を説明する。１つの実施形態による信頼できる外部記憶媒体は、外部記憶媒体が通常備えている全ての構成要素（不揮発性メモリ及び例えばＵＳＢなどのインターフェース）を備えている。さらに、この外部記憶媒体は、媒体に書込み又は媒体から読み出されるデータを暗号化及び復号化するために使用される（１つ以上のキーから成る）アクセス用信用証明データを記憶できる信用証明データストアを備えている。媒体の電源プラグが抜かれたときに動作を開始するタイマが、媒体上に存在する。媒体の接続が切り離されたときに記憶媒体の動作中の構成要素が実行できるように、電源が提供される。１つの実施形態によれば、この信用証明データには存続期間がある。媒体上に暗号化データを記憶するため又は読み出される記憶されたデータを復号化するために、信用証明データを作成して媒体上に記憶する必要がある。
【００５３】
外部記憶媒体は、データの読取り及び書込みを行うためにホストに接続することができる。ホストには２つの部類がある、すなわち、１つ以上のトラステッド・ホストと別のホストである。トラステッド・ホストは、信頼できる外部記憶媒体のユーザ／所有者に属するホストである。このホストは、媒体上の信用証明データを管理するための特別なソフトウェアを備えている。「別のホスト」は、接続を確立するために、無論従来技術のインターフェースとは異なっていないＵＳＢポートなどの何らかの標準的なインターフェースが存在する場合を除いて、特別なソフトウェアを持たず、また信頼できる外部記憶媒体とデータを交換するための特に用意された手段を持たない種類のホストである。
【００５４】
ユーザは、トラステッド・ホストを用いてデータを信頼できる外部記憶媒体に記憶し、アクセス用信用証明データをデータに対して適用し、またこれらの信用証明データの失効条件を定義する。これらの条件に基づいて、データが別のホストに送られるとき、データを媒体から読み出す又は媒体に書き込むことができる。
【００５５】
１つの実施形態によれば、アクセス用信用証明データには存続期間がある、すなわち失効条件が信用証明データの存続期間である。ユーザが信用証明データを媒体に記憶されたデータに割り当てる場合、ユーザは信用証明データの存続期間も定義する。媒体がホストから切り離されると、内蔵のタイマが始動する。媒体が別のホストに取り付けられると、存続期間が失効する前でかつ信用証明データが削除される前は、媒体に記憶されたデータには誰でもアクセスすることができる。信用証明データが失効しかつ信頼できる媒体に内蔵された機構によって除去された後では、このデータにアクセスする方法はもはや存在しない。例えば、ユーザがファイルを同僚すなわち仕事のパートナーと共有している場合（例えば、会議の中で）、媒体を会議室の中で失った又は忘れて、後で許可されていないユーザがこのデータにアクセスしようとする場合は、彼らはこのデータにアクセスすることができないことは確かである。そのような場合は、わずか数分の存続期間が適当である。１つの実施形態によれば、アクセス用信用証明データが削除された場合でも、媒体のユーザが自身のトラステッド・ホストからデータにアクセスできるようにする利用可能な別の信用証明データが存在する。
【００５６】
信頼できる外部記憶媒体の別の実施形態は、日本特許出願第２００７−１０４７０２号の中で説明されている。この特許出願は、参照することによって本願に組み込まれる。
【００５７】
以下に、このような信頼できる外部記憶媒体に対する具体的な構成及びファイルシステムに関する実施形態を説明する。
【００５８】
しかしながら、最初に、図１との関連において、従来技術の動作に基づいてデータの読取り及び書込みを行うやり方を簡単に説明する。図１は、左側にはホストを、また右側には外部媒体を示している。図１には、例示的な書込み動作（Save（filename）命令によって起動される）が示されている。このセーブ命令はユーザーインターフェースに入力され、オペレーティングシステムはこの命令をシステムドライバが実行できる命令に変換する動作を担い、このシステムドライバは直接書込み動作を実行する役目を果たしている。このことは、データを特定のブロックに書き込む書込み動作によって行われる。
【００５９】
通常の大容量記憶媒体は、ホストに接続されるとオペレーティングシステムから要求を得て、セクタ又はブロック（＝一連のセクタ）を記憶装置から読み取る又は記憶装置に書き込む。ファイルシステム及びその整合性の完全な管理は、オペレーティングシステム及びその対応するファイルシステム用ドライバの役割である。その結果、オペレーティングシステムは、フォーマットされたときに媒体上に作られたファイルシステム用に適当なドライバを選択する必要がある。
【００６０】
１つの実施形態によれば、本発明によって提供されるスキームは、オペレーティングシステム及びそのファイルシステム用ドライバには作用しない。それでも、このスキームは、特定のセクタ又はブロックを読取り又はそれらに書き込むために、オペレーティングシステムによって要求を処理する必要もある。その目的のために、オペレーティングシステムの要求に基づいて内蔵の記憶装置に単に読取り及び書込みを行うことに加えて、１つの実施形態によるメカニズムは、ハードウェアで実装されたファイルシステム用ドライバを備えた大容量記憶媒体を具備している。言い換えると、記憶媒体自身がファイルシステム用ドライバを実装している。オペレーティングシステムがセクタ又はブロックを読み出す又は書き込む場合はいつも、データがオペレーティングシステムに提供される前に（読取り動作の場合）又はデータが記憶装置に書き込まれる前に、記憶媒体はデータ上で付加的なタスクを実行する。
【００６１】
このことは、図２に概略的に例示されている。図２は、右側に本発明の１つの実施形態による外部記憶装置を例示している。図１に示された従来の構成要素に加えて、「インターセプタ（interceptor）」と呼ばれるモジュールが設けられている。このインターセプタは、ホストのオペレーティングシステムのファイルシステム用ドライバからの読取り又は書込み命令を受信するように動作し、付加的な暗号化又は復号化動作を実行し、またこれにより暗号化データをパーシスタント・メモリの中に書き込むか又は復号化された後でパーシスタント・メモリから読み出されたデータをファイルシステム用ドライバに転送するようになっている。
【００６２】
さらに別の実施形態によれば、記憶装置の物理的メモリは１つ以上のセグメントを備えている。各セグメントは、この装置が取り付けられているホストに別個の記憶装置として示される。この実施形態では、各セグメントは、セグメントの内容を暗号化及び復号化するために使用される割り当てられた信用証明データを有している。これらのセグメントは、装置がトラステッド・ホストに取り付けられている間に作られる。新しいセグメントを加えること又は現行のセグメントの大きさを変えることは、装置及びファイルシステムの再配列を必要とする。装置がトラステッド・ホストに取り付けられている間に、使用できる状態の信用証明データが選択される。これにより、装置がそこに取り付けられている場合、別のホストからアクセス可能な唯一のセグメントである使用できる状態のセグメントも選択される。各セグメントに対して、論理ブロックから記憶媒体上の実際の位置までマッピングする必要がある。どのセグメントがアクセスされるかの選択は、適当な装置をアクセスすることによって行われる。
【００６３】
この実施形態における機能の修正強化は、仮想メモリマネージャがＲＡＭを用いて動作するのと同じやり方でマッピングを行うことである、すなわち、一旦論理ブロックがアクセスされると、物理ブロックがそれに割り当てられる。
【００６４】
１つの実施形態によれば、このメカニズムは、媒体上に記憶されたブロックを暗号化及び復号化することができるＦＡＴ（ファイル割当てテーブル）ファイルシステムを実行するハードウェアを備えている。１つの実施形態によれば、それは暗号化／復号化キー用のキー管理装置も備えている。
【００６５】
そのような暗号化ファイルシステムは、ＵＳＢスティック又は他の種類のメモリカード（例えば、セキュア・ディジタル・カード又はコンパクト・フラッシュ・カードなど）のような大容量記憶媒体に対して設計することができる。
【００６６】
暗号化及び復号化はユーザには気付かれないこと、また媒体がアクセスされるホストには追加のソフトウェアをインストールする必要がないことが好ましい。暗号化ファイルシステムは、これらの要求事項を実現することができる。この暗号化ファイルシステムは、ＵＳＢ大容量記憶装置などの外部記憶媒体にアクセスするために、主流のインターフェースの命令のセットの中の付加的な命令を必要としない。外部記憶装置上のファイルシステムには、ホストのファイルシステム用ドライバの通常の命令がアクセスすることができ、これらの命令が行う通信以上の、オペレーティングシステムのファイルシステム用ドライバを用いるさらに別の通信は必要としない。しかしながら、外部記憶媒体上のファイルシステムは、媒体が取り付けられているホストとは無関係である。外部記憶装置上で実行されるファイルシステム用ドライバは、原則として、インターセプトモジュール（intercepting module）が、ホストの従来のファイルシステム用ドライバの命令を外部記憶装置側のファイルシステム用ドライバの命令に翻訳することができる限り、どのような種類のファイルシステム用ドライバでも良い。
【００６７】
しかしながら、１つの実施形態によれば、外部記憶装置上で実行されるファイルシステム用ドライバは、Microsoft社が定義したようなＦＡＴ（ファイル割当てテーブル）ファイルシステム用ドライバである。
例えば、「http://www.microsoft.com/whdc/system/platform/firmware/fatgen.mspx」を参照されたい。
【００６８】
このＦＡＴファイルシステムには、全ての主流のオペレーティングシステムが対応しているため、本発明の実施形態にとって特に好適である。このことは、全てのシステムがＦＡＴファイルシステム用ドライバを有しているため、市場のほぼ全てのホストが外部記憶媒体を読み取ることができることを意味する。
【００６９】
１つの実施形態によれば、アプリケーションが、本発明による暗号化ファイルシステムを備えた外部記憶媒体にデータを書き込む又はそこからデータを読み取る場合、図２に例示されているように、２つの構成要素、すなわちオペレーティングシステムのファイルシステム用ドライバ（これは通常のＦＡＴドライバである）と外部記憶媒体のインターセプトモジュールとがデータを処理する。この図２は、書込みアクセスを例示している。
【００７０】
インターセプトモジュールは、ファイルシステム用ドライバが送出した命令を単に「見る」だけである。これらの命令は、例えば、「ブロック３２５５にデータを書き込みなさい」又は「ブロック４５２からデータを読み取りなさい」という形式である。このインターセプトモジュールは、データを読み書きするためにまたファイルシステムの整合性を維持するために、ファイルシステム用ドライバが行っていることの全体像を得ていない。このため、インターセプトモジュールは、その種の命令を処理することによって（この処理が、インターセプトモジュールが得る唯一の情報であるため）、「オンザフライ（複数の処理をまとめて行うこと）」でデータの暗号化及び復号化を実行する。
【００７１】
このため、インターセプトモジュールは、１つの実施形態によれば、通常のファイルシステム用ドライバの命令を通してアクセスすることができるファイルシステムとして、ホストのファイルシステム用ドライバに対して動作する１つのモジュールを有している。
【００７２】
このモジュールによって受け取られた命令は、次にインターセプトモジュールの中でさらに処理されるが、このさらなる処理動作には、データが外部記憶装置に書き込まれるか又はそれから読み出されるかに応じて暗号化又は復号化する機能が含まれている。データが外部記憶装置に書き込まれる場合、このさらなる機能はこれらのデータを暗号化し、次に外部記憶装置上で動作するファイルシステム用ドライバを用いて、それを外部記憶媒体上に書き込む。１つの実施形態によるこのファイルシステム用ドライバは、インターセプトモジュールの構成要素又は別個の構成要素とすることができる。
【００７３】
データがホストのファイルシステム用ドライバからの読取り命令によって外部記憶媒体から読み出された場合、この読取り命令はインターセプトモジュールのモジュールによって受け取られる。このモジュールは、ホストのファイルシステム用ドライバに対するファイルシステムとして動作する。次に、インターセプトモジュールは、外部記憶媒体上で実行されるファイルシステム用ドライバが行うデータの単なる読取りに加えて、この場合、暗号化された形式で外部媒体の中に記憶されているデータの復号化を含むさらなる機能を実行する。次に、復号化されたデータは、ホストのファイルシステム用ドライバに転送される。
【００７４】
以下に、前に説明されたように動作し、また外部記憶媒体上に記憶されたデータに対して暗号化及び復号化を行うファイルシステムを暗号化するさらに別の実施形態が説明される。１つの実施形態によれば、これによりファイルシステムの整合性が維持される。
【００７５】
１つの実施形態によれば、一度に有効になる信用証明データはただ１つである。それは読取り及び書込みを行うために使用される。データを含む記憶媒体上の全てのブロックは、暗号化される。様々な時間に様々なファイルに対して、種々の信用証明データを使用できる。オペレーティングシステムに与えられるファイルシステムは、インターセプタが生成した仮想ファイルシステムである。「仮想ファイルシステム」という用語は、外部記憶媒体と情報をやりとりするホストが通常の大容量記憶装置上で動作しているように見えると同時に、それは暗号化及び復号化、論理アドレスの物理アドレスに対するマッピング、ブロックの内容に対する変更、及びさらに別の実施形態の中で記述されるような他の動作などの、記憶装置の中で発生する全ての付加的な動作に気付かないことを意味する。この実施形態では、仮想ファイルシステムによって与えられる記憶アドレスは、「物理」アドレスではなく、単に「論理アドレス」である。この論理アドレスは物理アドレスとは異なり、記憶媒体上の特定の記憶位置にアクセスするためには、論理アドレスを「物理アドレス」に変換する必要がある。そのような実施形態では、現在使用できる状態の信用証明データによって暗号化されるこれらのブロック及び空のブロックだけが、一度にアクセス可能である。仮想ファイルシステムの中では、他の全てはオペレーティングシステムには見えてこない（その理由は、それらにとって物理アドレスから論理アドレスへのマッピングは存在しないからである）。ブロック・インターセプタは、物理ブロックと論理ブロックとの間、及び暗号化と復号化との間のマッピングを実行する。オペレーティングシステムにとって、記憶媒体は選択された信用証明データに応じて異なるように見える。使用できる状態の信用証明データが、トラステッド・ホストに対して選択される。記憶媒体上には多数の信用証明データを記憶することができるが、それらの１つだけを有効にすることができる。
【００７６】
１つの実施形態によれば、インターセプトモジュールがマッピングモジュールを備えている。このマッピングモジュール（以後ＭＡＰとも呼ぶことにする）は、現在使用できる状態の信用証明データによるが論理ブロックを物理ブロック番号にマップする。多数のアクセス用信用証明データがあるが、１回につきそれらの中で１つだけが有効になる。しかしながら、それぞれのアクセス用信用証明データに対して、暗号化されたデータをこのアクセス用信用証明データを用いて論理アドレスから物理アドレスにマップする対応するマッピングテーブルがある。様々なアクセス用信用証明データに対して、ホストの中の様々な存続期間のような選択された様々な失効条件がある。アクセス用信用証明データの１つが、「使用できる状態（アクティブ）の信用証明データ」としてトラステッド・ホストによって選択される。
【００７７】
使用できる状態の信用証明データが選択されると、対応する信用証明データは読取り及び書込み動作を行うためのある種の一定のものとして見ることができる。このため、オペレーティングシステムが信用証明データ用パラメータを提供しなくても（また提供できなくても）、読取り及び書込み動作を首尾良く実行することができる。
【００７８】
マッピングモジュールによって行われたマッピングは、下記のように表すことができる。
【数１】
0004764455.tif 000002
【００７９】
このことは、特定のアクセス用信用証明データｃｒｅｄ及び特定の論理ブロックのアドレスに対して、マッピングモジュールが対応する物理ブロックのアドレスを与えることを意味する。
【００８０】
記憶媒体上の物理ブロックは、アクセス用信用証明データを用いて暗号化される。これは、下記のように表すことができる。
【数２】
0004764455.tif 000003
【００８１】
このことは、アドレスが物理ブロックのアドレスｐｂａによって与えられる記憶媒体上の特定のブロックに対して、このブロックに記憶されるデータが信用証明データｃｒｅｄを用いて暗号化されることを意味する。
【００８２】
以下に、１つの実施形態による読取り動作を説明する。
【００８３】
オペレーティングシステムが特定の論理ブロックｌｂａに対して読取り要求を送ると、対応する物理ブロックｐｂａが（マッピングモジュールＭＡＰを参照することによって）決定され、そして使用できる状態の信用証明データｃｒｅｄを用いて復号化される。最後に、そこに記憶されたデータが、オペレーティングシステムに戻される。これは、下記のように表すことができる。
【数３】
0004764455.tif 000004
【００８４】
このことは、オペレーティングシステムのファイルシステム用ドライバによって発行され、かつ論理アドレスｌｂａに向けられた読取り要求が、インターセプトモジュールによって受け取られることを意味する。このインターセプトモジュールはマッピングモジュールを参照して、block(MAP(lba,cred))によって表されるように、対応する物理ブロックを識別する。このブロックに記憶されたデータは読み取られて、対応する物理ブロックに記憶された前述したデータに加えられる操作
【数４】
0004764455.tif 000005
によって表されるように、信用証明データcredを用いて復号化される。
【００８５】
ここで、１つの実施形態による書込み要求が、図３に関連して説明される。図３は、インターセプトモジュールがここでは「ブロック・インターセプタ」になっていることを除いて、図２に示された実施形態と同様である。その理由は、この実施形態では、インターセプトがブロックに関したベースで行われるからである。
【００８６】
オペレーティングシステムが書込み要求を特定の論理ブロックｌｂａに送ってデータｄａｔａを書き込む場合、このデータは使用できる状態の信用証明データｃｒｅｄを用いて暗号化され、マッピングモジュールＭＡＰによって行われるマッピングに基づいて、対応する物理ブロックに記憶される。このことは、下記のように表される。
【数５】
0004764455.tif 000006
【００８７】
命令write(lba,data)は、データが論理ブロックのアドレスに書き込まれることを意味し、またこの命令はホストのオペレーティングシステムのファイルシステム用ドライバによって外部記憶装置に送られる。次に、この命令は、ホストに「仮想ファイルシステム」を与えることによって、ホストに対して「ファイルシステム」として動作するインターセプトモジュールによって受け取られる。この仮想ファイルシステムは、「物理アドレス」ではなく「論理アドレス」に基づいてファイルシステムを与える。次に、仮想ファイルシステムによって受け取られた書込み命令は、インターセプトモジュールによって処理されて暗号化の機能が向上される。そのために、インターセプトモジュールは、マッピングモジュールＭＡＰを使用する。このマッピングモジュールＭＡＰは、ルックアップ動作MAP(lba,cred)を実行して、論理ブロックのアドレスｌｂａ及び使用できる状態の信用証明データcredに対応する物理ブロックのアドレスを識別する。次に、データは
【数６】
0004764455.tif 000007
によって示されるように、信用証明データcredを用いて暗号化され、次にこの暗号化されたデータはブロックに記憶される。
【００８８】
この実施形態の解決策により、記憶媒体は「仮想領域」にセグメント化される。１つの仮想領域は、特定の信用証明データに関連した記憶領域を指すマッピングモジュールＭＡＰを有する各アクセス用信用証明データに対応している。現在使用できる状態の信用証明データに対応する記憶領域のみが、「別のホスト」に対して読取り可能である。トラステッド・ホストは全ての領域にアクセス可能であり、かつ使用できる状態の信用証明データを選択及び設定することができる。
【００８９】
以下に、さらに別の実施形態を説明する。この実施形態は、多数の信用証明データを同時に有効にする。外部媒体がどの信用証明データをいつ使用するかを理解できるようにするために、この外部媒体は幾つかのパーティションを提供する。各パーティションに対して、使用できる状態の信用証明データが割り当てられる。ユーザは、対応するパーティションを操作することによって外部媒体上のファイルを暗号化することを希望する信用証明データを選択する。特定のパーティションに対して使用される信用証明データが論理ブロック番号に依存するため、外部記憶媒体はパーティションに対する読取り及び書込みのアクセスを区別することができ、このため適当な信用証明データを使用できる。
【００９０】
この解決策の背後にある基本的な概念は、前述した実施形態と同様である。相違点は、１つの物理的ファイルシステム上の１つの物理的装置の中に一体化された、前の実施形態の種類の複数の記憶媒体が同時に存在することである。インターセプトモジュールは、どの論理ブロック番号がどのパーティションに属するかを定義するパーティションテーブルを保持している。データ構造の形式仕様は、ＭＡＰが使用する信用証明データを論理ブロックの番号及びパーティションテーブルから得ることができるため、先の実施形態の形式仕様と同様である。オペレーティングシステムに提供された各パーティションは、先の実施形態に関連して説明された種類の記憶媒体として動作する。
【００９１】
前述の実施形態が外部記憶装置によって実行されることは、理解されたい。この外部記憶装置では、パーティションはこの場合も、複数のセグメントに分割され、そして次にパーティションが構成されて、前述された実施形態と同様の動作を行う、すなわち複数のセグメントがある。各セグメントは、それに関連した異なる信用証明データと、このセグメントに対して論理ブロックのアドレスのセットを対応する物理ブロックのアドレスにマップする異なるマッピングテーブルとを有している。前の実施形態におけるように、特定の「トラステッド・ホスト」又は特別なホストを通して、使用できる状態の信用証明データが変更され、これにより対応するマッピングテーブル及びこれによりホストがアクセスすることができる物理ブロックのアドレスも変更される。
【００９２】
以下に、複数の読取り用信用証明データ（read credential）と１つの書込み用信用証明データ（write credential）とを提供するさらに別の実施形態が説明される。全ての信用証明データが記憶されている信用証明データテーブルが設けられている。信用証明データテーブルの中に記憶されている全ての信用証明データは読取り用信用証明データとして使用されるため、複数の読取り用信用証明データがあると言うことができる。それらの１つは、書込み用に使用される、使用できる状態の書込み用信用証明データとしてマークされる。信用証明データテーブルに現在記憶されている信用証明データを用いて暗号化された全てのデータは、読み出すことができる。以前の実施形態とは異なり、記憶媒体は、オペレーティングシステムに対して仮想ファイルシステムを与えない。その代わり、オペレーティングシステムは、物理的ファイルシステムの全体を常に見ることになる。しかしながら、ホストのファイルシステム用ドライバによってなおも作られる読取り及び書込み命令は、インターセプトモジュールによってインターセプトされる。しかしながら、「論理」アドレスと「物理」アドレスとの間には相違はないため、アドレスを変換する必要はない。しかしながら、インターセプトモジュールは、ホストが「見る」ものがファイルシステムのように見えるという意味では、なおも「仮想ファイルシステム」を提供すると考えられるが、実際はホストから命令を受け取るインターセプトモジュールによって提供された「仮想ファイルシステム」であり、ここでこれらの命令はインターセプトモジュールによってさらに処理されて暗号化／復号化の機能を提供し、「実際の」読取り又は書込み動作が記憶媒体のファイルシステム用ドライバによって行われる。
【００９３】
この実施形態では、論理アドレスと物理アドレスとの間に相違点は存在しないため、ホストのファイルシステム用ドライバは外部媒体の全体の記憶装置を「見る」が、この場合データを符号化することはできないため、信用証明データ用の記憶装置には存在しない信用証明データを用いて暗号化されるこれらのファイルやディレクトリにはアクセスすることはできない。図４に例示されているように、この実施形態のインターセプトモジュールは、この実施形態のデータ構造にアクセスする「ファイルシステム・インターセプタ」であり、復号化を行うためにどの信用証明データを使用すべきかを決定する。
【００９４】
この実施形態では、各ブロックのデータは、新しいデータがブロックに書き込まれるときに各ブロックに対して個別に生成されるブロックキーを用いて暗号化される。このブロックキーは、書込み用信用証明データによって暗号化されたキー割当てテーブルの中に記憶される。どの信用証明データがどのブロックキーに対して使用されるかの情報を記憶する信用証明データ割当てテーブル、及び信用証明データを含む信用証明データテーブルがさらに提供される。
【００９５】
１つの実施形態によれば、外部記憶媒体（及びホスト）のファイルシステムは、ＦＡＴファイルシステムであり、このファイルシステムは暗号化／復号化の機能性によって機能が高められている。１つの実施形態によるこのような暗号化ファイルシステムは、下記の構成要素とデータ構造とを備えている。
【００９６】
ＦＡＴ：ＦＡＴ１６／３２仕様の中で規定されたファイル割当てテーブルである。それはファイルシステム上にブロックと同じ数のフィールド（＝一連のセクタ）を有する一方向性アレイ（uni-dimensional array）である。アレイ内のフィールドの位置は、ファイルシステム内の対応するブロックの数を示す。フィールドの値は、ファイル／ディレクトリがブロックの大きさを超える場合、ファイルシステム上のファイルまたはディレクトリに属する次のブロックのブロック数を記憶している。この実施形態では、ＦＡＴファイルシステムの従来のＦＡＴデータ構造に対する変更又は拡張は行わない。その構造及び操作は、
【数７】
0004764455.tif 000008
によって表すことができる。
【００９７】
ＫＡＴ：キー割当てテーブルは、ブロックの内容を復号化／暗号化するために使用される復号化／暗号化キーを記憶する。このキーは、ＫＡＴの対応するフィールドの中に記憶される。各ブロックは、それ自身のブロック暗号化／復号化キー（ブロックキー）を有する。ＦＡＴと同様に、ＫＡＴは、アレイ内の位置が対応するブロックの数であるようなアレイである。フィールドの中の値が、ＫＡＴの中に暗号化された形式で記憶されたブロックキーである。信用証明データが、ブロックキーを復号化及び暗号化するために使用される。ＫＡＴの構造及び操作は、
【数８】
0004764455.tif 000009
によって表すことができる。
【００９８】
このことは、特定のブロック数block#に対して、対応するブロックキーblockkey(block#)が存在することを意味する。後で一層詳細に説明するが、このブロックキーは、操作CAT(block#)を通して信用証明データ割当てテーブルＣＡＴを参照することによって識別することができる信用証明データによって暗号化（操作ｅｎｃ）される。この信用証明データは、ブロック数を用いてＣＡＴを調べることによって、対応する信用証明データ（又はその対応する識別子）に戻る。このように捜し出した信用証明データを用いて（又は発見された識別子を用いて信用証明データテーブルＣＴを参照することによって直接見つけられた）、ブロックに対応するブロックキーblock#を暗号化又は復号化することができる。
【００９９】
ＣＡＴ：すでに簡単に前に述べたように、信用証明データ割当てテーブルは、ブロックキーを復号化／暗号化するために使用される信用証明データを記憶する。このブロックキーは、ブロックの内容を復号化／暗号化するために使用される。ＫＡＴと同様に、ＣＡＴは、アレイの中の位置が対応するブロックの数であるアレイである。１つの実施形態によれば、フィールドの値は、信用証明データそれ自体であるか又は信用証明データの識別子である。この識別子は、対応するブロックに対するブロックキーを復号化／暗号化するために使用される。この信用証明データはＣＴの中で記憶される。ＣＡＴの構造及び操作は、
【数９】
0004764455.tif 000010
によって表される。
【０１００】
これは、各ブロックに対して、ＣＡＴが対応する信用証明データ又はその識別子を記憶することを意味する。この識別子を用いて信用証明データテーブルを参照することによって、信用証明データを見つけることができる。
【０１０１】
ＣＴ：各信用証明データテーブルのエントリーには、信用証明データと、その対応する固有の識別子と、その失効条件とが含まれる。ＣＴの構造及び操作は、
【数１０】
0004764455.tif 000011
によって表すことができる。
【０１０２】
このことは、各識別子cred#に対して、対応する信用証明データ及びその失効条件（例えば、その存続期間）が記憶されることを意味する。
【０１０３】
信用証明データ（credential）：信用証明データは、ユーザによって作られ、ＫＡＴに記憶されたブロックキーを復号化及び暗号化するために使用される。１つの実施形態によれば、それはＣＴに記憶された対称的な暗号の復号化／暗号化キーである。
【０１０４】
ブロックキー：ブロックキーは暗号化ファイルシステムによって作られ、ブロックの内容を復号化及び暗号化するために使用される。それは対称的な暗号の復号化／暗号化キーであり、新しいデータがブロックに書き込まれるときに作られる。このブロックキーは、ＫＡＴに記憶される。
【０１０５】
ＦＳＤ：一連の所定の数のセクタが、読取り及び書込み動作においてファイルシステムから読み出される又はそこに書き込まれる最小量のデータである論理ブロックに結び付けられる。ファイルシステムのインターセプトモジュールの一部又は別個の部分として、外部記憶媒体上で実行されるファイルシステム用ドライバＦＳＤを通して読取り又は書込み操作を行うことによって、それにアクセスすることができる。このブロックはファイル又はディレクトリのデータを含み、ＦＳＤはこのブロックにアクセスすることができる。ＦＳＤに関連したブロックの機能及び操作は、下記のように、すなわち
【数１１】
0004764455.tif 000012
と表すことができる。
【０１０６】
このことは、書込み又は読取り命令を用いてＦＳＤがアクセスできるブロック番号block#のブロックには、ブロック番号に対応するブロックキーによって暗号化（又は復号化）される書込み又は読取りデータblockcontentが存在することを意味する。この操作は、従来技術に対する本発明の実施形態の相違を例示的に示している。この場合、（ホストのＦＳＤによって実行された）ＦＳＤの操作は、
【数１２】
0004764455.tif 000013
によって表すことができ、これはＦＳＤの命令が直接blockcontentをアドレス指定したことを意味する。しかしながら、本発明の実施形態では、この操作はホストのＦＳＤによって行われるのではなく、外部記憶媒体（又はそのＦＳＤ）のファイル・インターセプトモジュールによって行われて、この操作は暗号化の機能性
【数１３】
0004764455.tif 000014
によって機能が高められ、一方でキーの管理に対しては、前述したようなＫＡＴ、ＣＡＴ及びＣＴなどのさらなるテーブルが使用される。
【０１０７】
以下に、この実施形態による読取り要求が、一層詳細に説明される。
【０１０８】
ホストは、特定のブロックに対する読取り要求を媒体に送る。この媒体は要求された信用証明データが利用できる場合は、このブロックの復号化された内容を戻す。データを復号化するために、媒体はＣＡＴから信用証明データ用インデックスを得て、ＣＴの中の対応する信用証明データを調査し、そして信用証明データ用インデックスに対応することが判明している信用証明データを用いて、ＫＡＴからブロックキーを復号化する。次に、それはブロックキーを用いてブロックの内容を復号化して、ブロックの内容を戻す。この操作は下記のように、すなわち、
【数１４】
0004764455.tif 000015
のように表すことができる。
【０１０９】
これは、インターセプトモジュールがホストからread(block)命令を受け取り、次にそれがFSD(block#)によって外部記憶装置のＦＳＤを用いてこの命令に対応するブロックにアクセスし、それはKAT(block#)からデータが暗号化されたブロックキーを得て、そしてそれはCAT(block#)からブロックキーが暗号化された信用証明データの信用証明データＩＤを得る。インターセプトモジュールはＣＴを用いて、信用証明データを調査し、ブロックキーを復号化し、そして次にブロックに記憶されたデータを復号化することができる。
【０１１０】
以下に、この実施形態による書込み要求を、一層詳細に説明する。
【０１１１】
ホストが、書き込まれるブロック番号と内容とを含む書込み要求を送ると、そのブロックを暗号化するために使用される新しいブロックキーが、媒体上に作られる（下記の操作ｉ））。この内容は、ブロックキーによって暗号化され、そして記憶される（下記の操作ｉｉ））。ブロックキーは、ＫＡＴに記憶され、書込み用に使用される信用証明データwcredによって暗号化される（下記の操作ｉｉｉ））。このブロックのために使用される信用証明データのインデックスは、ＣＡＴに記憶される（下記の操作ｉｖ））。
【数１５】
0004764455.tif 000016
【０１１２】
１つの実施形態によれば、データが書き込まれるブロックがすでにディレクトリを有している場合は、このブロックの書込み用信用証明データを調べるためにＣＡＴが参照され、これは書込み処理を行うために使用される。この方法では、ディレクトリ・ブロックのディレクトリエントリーが更新されるときに、このディレクトリ・ブロックが別の信用証明データを用いて「再度暗号化される」ことを避けることができる。このことは、ファイルがディレクトリに加えられるたびに、ディレクトリの内容が再度暗号化されることはないと理解される。別の場合では、それぞれが別の信用証明データを用いて暗号化された複数のファイルをディレクトリが有することが起こる可能性がある。これを避けるために、最も最近書き込まれたファイルの書込み用信用証明データを用いて、ディレクトリを常に再暗号化することができる。しかしながら、これは、ディレクトリの暗号化が絶えず変化するという影響があり、このような影響は、前述されたように、ＣＡＴ内の書込み用信用証明データを調べることによって避けることができる。
【０１１３】
ブロックがディレクトリを含まない場合は、現在の書込み用信用証明データがデータを書き込むために使用される。
【０１１４】
１つの実施形態によれば、外部記憶装置は、整合性の検査を行う整合性検査モジュールを備えている。このモジュールで実行される整合性の検査には様々な形式がある。
【０１１５】
１つの実施形態によれば、ファイルシステム上の全てのディレクトリのエンティティに対して、整合性検査モジュールは、開始ブロックを見つけて、ディレクトリの末尾のＦＡＴの中に記載された後続のブロックに従う。それは次にＣＡＴの中で、全てのこれらのブロックが暗号化するために適用される同じ信用証明データを持っていることを確認する。幾つかのブロックが異なる場合、整合性検査モジュールは、全ての他の暗号化に対して第１のブロックに使用された信用証明データを使用する。これには、同じブロックキーの再暗号化が含まれる。このことは、現行のブロックに追加されているディレクトリ・ブロック（すなわち、それらは両方とも同じディレクトリを示す）が、現行のものと同じ信用証明データを用いて暗号化されることを確認することが必要である。
【０１１６】
整合性検査モジュールが実行するさらに別の検査には、異なる書込み用信用証明データを用いて暗号化されたブロックを有するファイルがあるかどうかを確認することが含まれる。これらのファイルに対して、整合性検査モジュールは、そのようなファイルを再暗号化する現行の書込み用信用証明データを使用する。
【０１１７】
１つの実施形態によれば、整合性の検査が、プラグが抜かれた媒体上で実行される。別のやり方の又は付加的な別の可能性では、装置がホストに接続されている間に整合性の検査がバックグラウンドで実行される。整合性の検査は、周期的に実行されるか、又は特定の事象、例えばディレクトリ・ブロックが書き込まれるか又はファイルが更新されるたびに実行される。
【０１１８】
１つの実施形態によれば、ディレクトリとディレクトリの内容を暗号化するために使用される信用証明データとの間のマッピングを含むデータ構造が保持される。書き込むための信用証明データが１つだけではなく、様々なサブディレクトリに使用することができる所定の信用証明データが存在するため、これにより操作性が向上され、整合性の検査が一層容易にされる。内容が書き込まれるディレクトリは、書き込むためにどの信用証明データが使用されるかを示している。
【０１１９】
１つの実施形態によれば、ブロックキーのキャッシング（cashing）が行われる。ブロックキーが作成されるとき、現在ＣＴにおいて利用できる全ての信用証明データを用いて暗号化されるブロックキーがキャッシュされる。さらに、ディレクトリ・ブロックの位置がキャッシュされる。このために、媒体の取付け時に作成されるディレクトリエントリーを含むブロックのキャッシュが保持される。このキャッシングにより、性能が向上される。
【０１２０】
さらに別の実施形態によれば、暗号化されたファイル／ディレクトリの真の名前が隠される。そのために、ディレクトリ・ブロックが読取り操作に戻ると、暗号化されたファイル及びディレクトリのファイル名が、ブロックの内容をオペレーティングシステムに戻す前に、別の名前、例えば無作為の名前に変換される。
【０１２１】
この実施形態に関連する問題点は、ディレクトリが存在する場合、幾つかのファイルは暗号化されるが、暗号化されないファイルもあるということである。そして、幾つかの暗号化されたファイルに関して、信用証明データが失効している可能性がある。外部記憶装置がここでディレクトリの内容を示す場合、ファイル名を読むことができるユーザの中には、ファイルの内容及びその重要性を推測できるものがいる可能性がある。これを避けるために、信用証明データが失効しているファイルのファイル名を無作為化することができる。１つの可能性は、ディレクトリの中でこれらのファイルを全く示さないことであるが、ＯＳのＦＳＤはこれらのファイルが記憶されているブロックが空であると推測する羽目になるため、ＯＳがそれらの上書きをすることを防ぐ方法はない。
【０１２２】
１つの実施形態によれば、無作為化はファイルシステムのディレクトリエントリーには書き込まれないが、ＯＳが読取り要求を送ると、オンザフライでインターセプタによって行われる。この修正によって、ファイルシステムは変化しない。
【０１２３】
当業者は、さらに別の修正を推測することができる。例えば、前述された記憶媒体はＦＡＴファイルシステムだけでなく他のファイルシステムによっても実現することができる。
【０１２４】
さらに、前に本願の発明の実施形態に関連して説明された構成要素及びモジュールは、ソフトウェア又はハードウェア又はそれらの両方のいずれかによって実現できることは、当業者は理解するであろう。
【０１２５】
本発明の実施形態による外部記憶媒体は、コンピュータに接続される代わりに、ユーザのデータを書き込み又はユーザのデータを読み取り可能な任意の他の装置又はホストに接続できることは、当業者はさらに理解するであろう。そのような装置には、例えば携帯電話、スマートフォン、ＰＤＡ、又は任意の他のコンピュータ装置が含まれる。さらに、この外部記憶媒体は、ＵＳＢスティック、ＳＤカード、ＣＦメモリだけでなく、例えばハードディスク又は任意の取外し可能な記録媒体などの、そのようなホストに接続することができる任意の媒体とすることができる。
【図面の簡単な説明】
【０１２６】
【図１】従来技術に基づいて、外部記憶媒体の動作を概略的に例示した図である。
【図２】本発明の第１の実施形態に基づいて外部記憶媒体の動作を概略的に例示した図である。
【図３】本発明の第２の実施形態に基づいて外部記憶媒体の動作を概略的に例示した図である。
【図４】本発明の第３の実施形態に基づいて外部記憶媒体の動作を概略的に例示した図である。
【図１】
0004764455.tif 000017
【図２】
0004764455.tif 000018
【図３】
0004764455.tif 000019
【図４】
0004764455.tif 000020