説明

外部記憶装置

【課題】大容量記憶媒体用の現行のドライバから記憶媒体の透過的な暗号化及び復号化スキームを実現する外部記憶装置を提供する。
【解決手段】ホストに接続され、ホストがデータを書き込むこと又はデータを読み取ることを可能にする外部記憶装置であって、外部記憶装置が、データを書き込むこと及びデータを読み取ることができるメモリモジュールと、ホストからの読取り又は書込み命令を受信するように構成され、外部記憶装置上に記憶された1つ以上の信用証明データに基づいてメモリモジュールから読み出された又はメモリモジュールに書き込まれたデータを暗号化又は復号化するようにさらに構成され、かつ当該外部記憶装置の中で実装されるファイルシステム用ドライバによって、メモリモジュールからデータを読み取る又はメモリモジュールにデータを書き込むようにさらに構成されたインターセプトモジュールとを備えている。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、外部記憶装置に関する。
【背景技術】
【0002】
USBスティックなどの外部大容量記憶装置は、物理的な寸法が小さく、また今日では数ギガバイトの大容量を有している。このため、ネットワーク上の任意のデータをコピーして、それらを持って見つからずに会社の建物から離れることが容易なため、大容量記憶装置は、企業ネットワークにとって脅威である。大容量記憶装置は、容易に失くす可能性があるため、そのような方法で会社の機密データを失わないようにすることは、会社にとって重要な関心ごとである。他方では、これらのスティックは極めて有用であり、ファイルを同僚との間で共有する場合は、日常の事務作業を簡単なものにする。外部記憶媒体の使用を禁止することは、この問題に解決する1つの方法ではあるが、十分ではない。外部記憶媒体の内容を同時に暗号化することによって、これらのスティックの使用に関する柔軟性を維持することの方が一層説得力がある。
【0003】
マーケット上には、外部記憶媒体の内容の暗号化を処理する種々の解決策が存在している。媒体にアクセスすることを望む装置上にインストールされるプロプライエタリ・ソフトウェア(proprietary software)を必要とするものもある。暗号化及び復号化を実行するために暗号キーを含む付加的なハードウェアのトークンを使用するものもある。このトークンは取り外すことができ、また記憶媒体から離して携帯すべきである。この場合のリスクは、これらのトークンを簡単に失くす可能性があること、又はユーザがそれらを分けて持っておかないことである。
【0004】
この問題に対する解決策は、出願番号が2007−104702号で「外部記憶装置(External Storage Medium)」という発明名称の本願と同じ出願人によって出願された日本特許出願の中に記載されている。この特許出願は、参照することによって本願に組み込まれる。その出願の中で、その中に記憶されたデータを自動的に暗号化し、一定の失効条件(expiration condition)が来るまで任意のホストに対して読取り可能な状態を保つように構成された外部記憶媒体が記載されている。失効条件が来た後は、アクセス用信用証明データ(例えば、データの読取りに必要なキー)の期限が切れるため、ファイルを読み出すことができなくなる。
【0005】
アクセス用信用証明データは1つ以上の失効条件と一緒に記憶媒体上に書き込まれており、この1つ以上の失効条件の1つが満たされるかどうかにより、信用証明データによって暗号化されたデータが読取り可能になるかどうかが決まる。失効条件の例には、到達すべき一定の時間、又は経過すべき期間、データを読み出せる一定(最大)の回数などがある。このような方法で、失効条件が満たされるまで、記憶媒体に自由にアクセスすることができ、また望ましい失効条件を設定することによって、記憶媒体上のデータを要望どおりに保護することができる。
【0006】
そのような装置は、透過的な(記憶媒体にアクセスするために付加的なハードウェア及びソフトウェアを必要としない)暗号化及び復号化スキームを備えている。
【0007】
こうした新しい外部記憶媒体を実現する場合の問題点は、現行のシステムに対してできる限り少しの変更しか必要とされず、このため高い下位互換性(downward compatibility)が提供できるような具体的な実装を行うことにある。
【0008】
そのような解決策は、好ましくは、今日の主流のオペレーティングシステムに付属する、大容量記憶媒体用の現行のドライバを利用できる必要がある。
【発明の開示】
【0009】
1つの実施形態によれば、ホストに接続され、前記ホストがそこにデータを書き込むこと又はそこからデータを読み取ることを可能にする外部記憶装置が提供される。この外部記憶装置は、
データを書き込むこと及びデータを読み出すことができるメモリモジュールと、
前記ホストからの読取り又は書込み命令を受信するように構成され、当該外部記憶装置上に記憶された1つ以上の信用証明データに基づいて前記メモリモジュールから読み出された又は前記メモリモジュールに書き込まれたデータを暗号化又は復号化するようにさらに構成され、且つ当該外部記憶装置の前記メモリモジュールに前記読取り又は書込み命令を転送することによって前記メモリモジュールからデータを読取り又は前記メモリモジュールにデータを書き込む動作を実行し、これにより当該外部記憶装置に記憶された前記1つ以上の信用証明データを用いて暗号化又は復号化されたデータを読取り又は書き込むようにさらに構成されたインターセプトモジュールと
を備えている。
を具備している。
【0010】
こうした装置を用いて、この媒体にアクセスするホストには見えない方法で、外部大容量記憶媒体上の種々の信用証明データを用いて暗号化されたファイルを記憶することができる。記憶媒体を使用するホストを用意することは要求されない。さらに、ハードウェアによる暗号化及び復号化を効率良く行うことができ、またホストのCPUは暗号化及び復号化には使用されない。
【0011】
1つの実施形態によれば、この外部記憶装置は、
1つ以上の信用証明データを前記メモリモジュールの対応するセグメントに対してそれぞれマッピングして、これにより、特定のセグメント内のデータを暗号化又は復号化する1つ以上の信用証明データを定義するための信用証明データマッピングテーブルを備え、使用できる状態(アクティブ)の信用証明データに対応するセグメントが前記ホストに対して外部記憶媒体として現れるとともに他のセグメントが見えなくなるようになっている。
【0012】
このやり方では、記憶装置をセグメントに分割することができ、これらのセグメントはこの時別個の装置としてホストのように見える。信用証明データのマッピングはホストによって行われ、次に固定されて残り、場合によっては、セグメントはホストによって再び変更される。このやり方では、極めて低いレベル(実際の「記憶レベル」)で、ファイルシステム又は外部記憶装置上で実行されるファイルシステム用ドライバを必要とせずに、自動的な暗号化及び復号化を実行することができる。
【0013】
1つの実施形態によれば、外部記憶装置は、
前記ホストからの読取り又は書込み命令を受信するように構成され、前記ホストに対して仮想ファイルシステムを提供するための仮想ファイルシステム用モジュールと、
読取り又は書込み命令に関連して前記仮想ファイルシステムによって受信された論理アドレスを、対応する物理的ブロックアドレスに対してマッピングするためのマッピングモジュールと、
当該外部記憶装置に記憶される又は書き込まれるデータを暗号化及び/又は復号化するために使用される少なくとも1つのアクセス用信用証明データ(access credential)を記憶するための信用証明データストア(credential store)と、
前記マッピングモジュールによって実行されたマッピングに基づいて、前記メモリモジュール内のアドレスに対して読取り又は書込み命令を生成するためのモジュールと
をさらに備えている。
【0014】
1つの実施形態によれば、外部記憶装置は、
前記ホストから読取り又は書込み命令を受信するためのモジュールと、
前記仮想ファイルシステムによって受信された論理アドレスを対応する物理ブロックのアドレスにマッピングするためのマッピングモジュールと、
前記外部記憶装置に記憶された又は書き込まれたデータを暗号化及び/又は復号化するために使用される少なくとも1つのアクセス用信用証明データを記憶するための信用証明データストアと、
前記マッピングモジュールによって識別された前記メモリモジュール内のアドレスに読取り又は書込み命令を転送するための大容量記憶システム用ドライバと
をさらに備えている。
【0015】
これにより、そのような暗号記憶装置を特に簡単に実現することができる。受信モジュールはホストに対して一種の「仮想大容量記憶システム」として動作し、マッピングモジュールは解釈(translation)を実行し、信用証明データストアは信用証明データを保持し、また大容量記憶システム用ドライバはマッピングモジュールによって与えられたアドレスに対して読取り/書込み命令を出力する。
【0016】
1つの実施形態によれば、前記信用証明データが1つ以上の対応する失効条件と一緒に記憶媒体の中に書き込まれており、前記記憶媒体は、
前記外部記憶媒体上で実行されるファイルシステムとして前記ホストに対して現れ、かつ前記失効条件がまだ満たされていないことからまだ失効していないアクセス用信用証明データが存在するような読取り可能及び/又は書込み可能なデータとしてこれらのデータを前記ホストに提示するように構成された仮想ファイルシステムをさらに備えている。
【0017】
このやり方では、記憶媒体に対するアクセスは、信用証明データに対する1つ以上の失効条件が満たされているかどうかによって行うことができるため、1つ以上の失効条件に基づいて記憶媒体上のデータを保護することができる。1つ以上の条件が満たされない限り、データは自由にアクセス可能であるが、1つ以上の失効条件が満たされると、これは対応する信用証明データが失効し、かつそれらで暗号化されたデータはもはや読取り又は書込みすることができないことを意味する。
【0018】
1つの実施形態によれば、読取り及び書込みを行うために1つ以上の信用証明データの中で使用できる状態の1つの信用証明データがあり、
前記マッピングモジュールが、アクセス用信用証明データに応じて論理アドレスと対応する物理的アドレスとの間のマッピングを記憶するようになっている。
【0019】
わずか1つしか有効でない複数の可能な信用証明データにより、様々な失効条件が様々な信用証明データに対して使用されることが可能にされる。それにもかかわらず、わずか1つの信用証明データしか有効ではないが、ホストはこの使用できる状態の信用証明データによって暗号化された記憶装置の部分のみを「見る」ことになる。その上、ホストは空のブロックも見得る。
【0020】
読取り及び書込みを行うための1つの実施形態によれば、1つ以上の信用証明データの中で使用できる状態の1つ以上の信用証明データが存在し、
前記マッピングモジュールが、論理アドレスと、対応する物理的アドレスと、選択されたセグメントに依存するアクセス用信用証明データとの間のマッピングを記憶するようになっている。
【0021】
1つの実施形態によれば、前記外部記憶媒体が幾つかのパーティションを有し、各パーティションに対して使用できる状態の信用証明データが割り当てられ、またユーザは、対応するパーティションを操作することによって外部記憶媒体上のファイルを暗号化又は復号化する信用証明データを選択する。
【0022】
これにより、「複数の」記憶装置を1つの記憶装置上に実現することができ、対応するパーティションによって個々の記憶装置を区別することができる。
【0023】
1つの実施形態によれば、様々な失効条件を様々なアクセス用信用証明データに割り当てることができる。
【0024】
これにより、ユーザに対して装置の柔軟性が高められる。
【0025】
1つの実施形態によれば、データブロックがブロックキーによって暗号化され、また前記ブロックキーが対応する信用証明データによって暗号化される。
【0026】
1つの実施形態によれば、書込み用に1つの使用できる状態の信用証明データがあり、また読取り用には複数の使用できる状態の信用証明データがあるため、読取り用の使用できる状態の信用証明データの1つによって暗号化された全てのデータは読み取ることが可能であり、書き込まれるデータは使用できる状態の書込み用信用証明データによって暗号化される。
【0027】
1つの実施形態によれば、この外部記憶装置は、
ブロックと、該ブロックが暗号化されるその対応するブロックキーとの間の対応関係を維持するためのキー割当てテーブルと、
ブロックと、対応するブロックキーを暗号化するその対応する信用証明データとの間の対応関係を維持するための信用証明データ割当てテーブルと
をさらに備えている。
【0028】
これにより、外部記憶装置に対して様々なキー及び信用証明データが使用できるようにされるが、全体の記憶媒体は信用証明データが失効していない限りホストに対してアクセスすることができる。
【0029】
1つの実施形態によれば、この外部記憶装置は、
前記外部記憶装置上に書き込まれたファイルシステムの整合性を検査するための整合性検査モジュールをさらに備えている。
【0030】
これにより、書込み工程の間に発生する可能性がある衝突が避けられる。
【0031】
1つの実施形態によれば、前記整合性検査モジュールは、
ディレクトリに属する全てのブロックが同じ信用証明データを用いて暗号化されるかどうかを検査することと、
特定のファイルに属する全てのブロックが同じ信用証明データを用いて暗号化されるかどうかを検査することと
のうち1つ以上を実行するように構成されている。
【0032】
これにより、書込み工程の間に発生する可能性がある典型的な衝突に関して点検が行われる。
【0033】
1つの実施形態によれば、前記整合性検査モジュールは、
ホストから媒体を取り外した後、
周期的に、
ファイルシステムに何らかの書込み動作を行った後
という条件のうち1つ以上の条件のもとで実行することができる。
【0034】
1つの実施形態によれば、前記整合性検査モジュールは、ディレクトリエントリーを含むブロックのリストを保持するようになっている。
【0035】
1つの実施形態によれば、この外部記憶装置は、ディレクトリとこのディレクトリの内容を暗号化するために使用される信用証明データとの間のマッピングを含むデータ構造を保持するためのモジュールをさらに備え、内容が書き込まれるディレクトリが、書込みに対してどの信用証明データが使用されるかを表している。
【0036】
このことは、操作性を高めて、書込みに対して唯一の信用証明データしか存在しないが、種々のサブディレクトリに使用することができる所定の信用証明データが存在するため、それは整合性の確認を一層容易にする。
【0037】
1つの実施形態によれば、この外部記憶装置は、暗号化されたファイル及び/又はディレクトリの真の名前を変更することによって隠すためのモジュールをさらに備えている。
【0038】
これにより、信用証明データが失効した後であっても、ファイル/ディレクトリの重要性をそれらのファイル名から推測できないようにする。
【0039】
1つの実施形態によれば、先行する特許請求の範囲の1つの外部記憶装置に基づいて、前記外部記憶装置にデータを書き込むためのホストが提供され、前記ホストが、
1つ以上のアクセス用信用証明データと1つ以上の対応する失効条件とを前記外部記憶装置に書き込み、これにより前記記憶媒体が、前記失効条件がまだ満たされていないことからまだ失効していないアクセス用信用証明データが存在するような読取り可能及び/又は書込み可能なデータとして、これらのデータを当該ホストに提示することが可能なように構成された書込みモジュールを備えている。
【0040】
このやり方では、媒体上に信用証明データ(及びそれらの失効条件)を定義及び書き込むために使用される「トラステッド・ホスト(trusted host)」を実装して、これによりそれを使用するために準備すなわち初期化を行うことができる。
【0041】
1つの実施形態によれば、前記ホストは、
記憶装置のセグメント、
記憶装置のパーティション、
記憶装置上の物理ブロック、
記憶装置上のファイル及びディレクトリ
のうちの1つ以上に対して信用証明データのマッピングを実行するようになっている。
【0042】
本発明の実施形態を説明する前に、下記で使用される幾つかの用語を説明する。
【0043】
FAT=ファイル割当てテーブル(File Allocation Table)
KAT=キー割当てテーブル(Key Allocation Table)
CAT=信用証明データ割当てテーブル(Credential Allocation Table)
CT=信用証明データテーブル(Credential Table)
FSD=ファイルシステム用ドライバ(File System Driver)
【0044】
ブロック:ブロックは、メモリの連続した部分である(例えば、パーシスタント・メモリ(persistent memory)をアドレス指定できる最小単位)。
【0045】
論理ブロック:論理ブロックは、ホスト上のファイルシステム用ドライバによってアドレス指定される外部メモリの単位である。
【0046】
物理ブロック:物理ブロックは、インターセプタ・モジュールによってパーシスタント・メモリ内でアドレス指定される単位である。物理ブロックにアクセスするには、駆動されるファイルシステムが、外部メモリ又はそのインターセプタ・モジュールによって提供され、次にインターセプタ・モジュールによって対応する物理ブロックのアドレスに移動される論理ブロックのアドレスにアクセスすることになる。
【0047】
パーティション:パーティションは、ホストが実行する記憶媒体(例えば、ハードディスク)の区分である。通常、パーティション情報は、ハードディスク上のパーティションテーブルに記憶される。
【0048】
セグメント:外部記憶装置のセグメントは、外部記憶媒体の区分又は部分、例えば外部記憶媒体における特定の記憶領域又は外部記憶媒体の中の特定の(物理)アドレスのセットである。各セグメントに対して、対応するアクセス用信用証明データ(access credential)及びさらにセグメントの物理ブロックのアドレスを対応する論理ブロックのアドレスの中にマップするマッピングテーブルが設けられている。これらの論理ブロックのアドレスは、ホストのファイルシステム用ドライバに提示され、またそのドライバによってアクセス可能である。複数のセグメントのそれぞれに対して、このような信用証明データ及びマッピングテーブルを設けることによって、唯一の信用証明データが有効(アクティブ)に設定され、またこれにより対応するマッピングテーブルのみが有効になると同時に、どのセグメントが実際に有効になるかによるが、様々なセグメントを実際に様々な外部装置があるようにホストに見えるようにすることが可能になる。その結果、複数のセグメントを含む外部記憶媒体は、ホストにとってあたかも複数の外部記憶媒体のように見えることになる。より明確に説明すると、使用できる状態(アクティブ)の信用証明データが変更されて、これにより「使用できる状態(アクティブ)」マッピングテーブルも変更されると、異なるマッピングテーブル及び異なる使用できる状態のアクセス用信用証明データが、前とは異なるデータをそこに記憶した完全に異なる物理記憶位置にアクセスできないようにするため、外部記憶装置が前に「見た」ものとは完全に異なるものであるようにホストには思われる。外部記憶媒体上のセグメントは、媒体の互いに素な部分を参照する必要はない。具体的に、2つの異なるセグメントには、同じ論理ブロックのアドレスを使用するファイルシステム用ドライバ又はホストがアクセスすることができるが、どのアクセス用信用証明データ及びこのアクセス用信用証明データに対応するどのマッピングテーブルが有効に設定されるかに応じて、これらの同じ論理ブロックのアドレスは実際に記憶装置上の異なる物理アドレスを参照する。このため、外部記憶装置のセグメントは、ハードディスクの様々なパーティションとは大いに異なっている。ハードディスクのパーティションは、ホストが隣接する論理ブロックのアドレスを通してアクセスすることができるが、同じ論理ブロックのアドレスを通してアクセスできない。
【0049】
以下に、例えば、日本特許出願第2007−104702号の中で説明されている外部記憶媒体のような、外部記憶媒体及びファイルシステムを説明する。
【0050】
1つの実施形態によれば、暗号化及び復号化用のキー管理を処理する付加的なハードウェアと、必要なアクセス用信用証明データが提供されて、媒体がアクセスされている途中で暗号化及び復号化を実行するファイルシステムとを備えた外部記憶媒体が提供される。1つの実施形態によるアクセス用信用証明データは、例えば外部記憶装置に記憶されるデータを暗号化又は復号化するために使用される1つ以上のキーである。
【0051】
このような外部記憶媒体に対して見られる典型的な使用事例は、同僚すなわち仕事のパートナーとの間でファイルを共有すること及び出張の間にファイルのバックアップを行うことである。
【0052】
このような外部記憶媒体のファイルシステムを説明する前に、最初に外部記憶媒体自体の実施形態を説明する。1つの実施形態による信頼できる外部記憶媒体は、外部記憶媒体が通常備えている全ての構成要素(不揮発性メモリ及び例えばUSBなどのインターフェース)を備えている。さらに、この外部記憶媒体は、媒体に書込み又は媒体から読み出されるデータを暗号化及び復号化するために使用される(1つ以上のキーから成る)アクセス用信用証明データを記憶できる信用証明データストアを備えている。媒体の電源プラグが抜かれたときに動作を開始するタイマが、媒体上に存在する。媒体の接続が切り離されたときに記憶媒体の動作中の構成要素が実行できるように、電源が提供される。1つの実施形態によれば、この信用証明データには存続期間がある。媒体上に暗号化データを記憶するため又は読み出される記憶されたデータを復号化するために、信用証明データを作成して媒体上に記憶する必要がある。
【0053】
外部記憶媒体は、データの読取り及び書込みを行うためにホストに接続することができる。ホストには2つの部類がある、すなわち、1つ以上のトラステッド・ホストと別のホストである。トラステッド・ホストは、信頼できる外部記憶媒体のユーザ/所有者に属するホストである。このホストは、媒体上の信用証明データを管理するための特別なソフトウェアを備えている。「別のホスト」は、接続を確立するために、無論従来技術のインターフェースとは異なっていないUSBポートなどの何らかの標準的なインターフェースが存在する場合を除いて、特別なソフトウェアを持たず、また信頼できる外部記憶媒体とデータを交換するための特に用意された手段を持たない種類のホストである。
【0054】
ユーザは、トラステッド・ホストを用いてデータを信頼できる外部記憶媒体に記憶し、アクセス用信用証明データをデータに対して適用し、またこれらの信用証明データの失効条件を定義する。これらの条件に基づいて、データが別のホストに送られるとき、データを媒体から読み出す又は媒体に書き込むことができる。
【0055】
1つの実施形態によれば、アクセス用信用証明データには存続期間がある、すなわち失効条件が信用証明データの存続期間である。ユーザが信用証明データを媒体に記憶されたデータに割り当てる場合、ユーザは信用証明データの存続期間も定義する。媒体がホストから切り離されると、内蔵のタイマが始動する。媒体が別のホストに取り付けられると、存続期間が失効する前でかつ信用証明データが削除される前は、媒体に記憶されたデータには誰でもアクセスすることができる。信用証明データが失効しかつ信頼できる媒体に内蔵された機構によって除去された後では、このデータにアクセスする方法はもはや存在しない。例えば、ユーザがファイルを同僚すなわち仕事のパートナーと共有している場合(例えば、会議の中で)、媒体を会議室の中で失った又は忘れて、後で許可されていないユーザがこのデータにアクセスしようとする場合は、彼らはこのデータにアクセスすることができないことは確かである。そのような場合は、わずか数分の存続期間が適当である。1つの実施形態によれば、アクセス用信用証明データが削除された場合でも、媒体のユーザが自身のトラステッド・ホストからデータにアクセスできるようにする利用可能な別の信用証明データが存在する。
【0056】
信頼できる外部記憶媒体の別の実施形態は、日本特許出願第2007−104702号の中で説明されている。この特許出願は、参照することによって本願に組み込まれる。
【0057】
以下に、このような信頼できる外部記憶媒体に対する具体的な構成及びファイルシステムに関する実施形態を説明する。
【0058】
しかしながら、最初に、図1との関連において、従来技術の動作に基づいてデータの読取り及び書込みを行うやり方を簡単に説明する。図1は、左側にはホストを、また右側には外部媒体を示している。図1には、例示的な書込み動作(Save(filename)命令によって起動される)が示されている。このセーブ命令はユーザーインターフェースに入力され、オペレーティングシステムはこの命令をシステムドライバが実行できる命令に変換する動作を担い、このシステムドライバは直接書込み動作を実行する役目を果たしている。このことは、データを特定のブロックに書き込む書込み動作によって行われる。
【0059】
通常の大容量記憶媒体は、ホストに接続されるとオペレーティングシステムから要求を得て、セクタ又はブロック(=一連のセクタ)を記憶装置から読み取る又は記憶装置に書き込む。ファイルシステム及びその整合性の完全な管理は、オペレーティングシステム及びその対応するファイルシステム用ドライバの役割である。その結果、オペレーティングシステムは、フォーマットされたときに媒体上に作られたファイルシステム用に適当なドライバを選択する必要がある。
【0060】
1つの実施形態によれば、本発明によって提供されるスキームは、オペレーティングシステム及びそのファイルシステム用ドライバには作用しない。それでも、このスキームは、特定のセクタ又はブロックを読取り又はそれらに書き込むために、オペレーティングシステムによって要求を処理する必要もある。その目的のために、オペレーティングシステムの要求に基づいて内蔵の記憶装置に単に読取り及び書込みを行うことに加えて、1つの実施形態によるメカニズムは、ハードウェアで実装されたファイルシステム用ドライバを備えた大容量記憶媒体を具備している。言い換えると、記憶媒体自身がファイルシステム用ドライバを実装している。オペレーティングシステムがセクタ又はブロックを読み出す又は書き込む場合はいつも、データがオペレーティングシステムに提供される前に(読取り動作の場合)又はデータが記憶装置に書き込まれる前に、記憶媒体はデータ上で付加的なタスクを実行する。
【0061】
このことは、図2に概略的に例示されている。図2は、右側に本発明の1つの実施形態による外部記憶装置を例示している。図1に示された従来の構成要素に加えて、「インターセプタ(interceptor)」と呼ばれるモジュールが設けられている。このインターセプタは、ホストのオペレーティングシステムのファイルシステム用ドライバからの読取り又は書込み命令を受信するように動作し、付加的な暗号化又は復号化動作を実行し、またこれにより暗号化データをパーシスタント・メモリの中に書き込むか又は復号化された後でパーシスタント・メモリから読み出されたデータをファイルシステム用ドライバに転送するようになっている。
【0062】
さらに別の実施形態によれば、記憶装置の物理的メモリは1つ以上のセグメントを備えている。各セグメントは、この装置が取り付けられているホストに別個の記憶装置として示される。この実施形態では、各セグメントは、セグメントの内容を暗号化及び復号化するために使用される割り当てられた信用証明データを有している。これらのセグメントは、装置がトラステッド・ホストに取り付けられている間に作られる。新しいセグメントを加えること又は現行のセグメントの大きさを変えることは、装置及びファイルシステムの再配列を必要とする。装置がトラステッド・ホストに取り付けられている間に、使用できる状態の信用証明データが選択される。これにより、装置がそこに取り付けられている場合、別のホストからアクセス可能な唯一のセグメントである使用できる状態のセグメントも選択される。各セグメントに対して、論理ブロックから記憶媒体上の実際の位置までマッピングする必要がある。どのセグメントがアクセスされるかの選択は、適当な装置をアクセスすることによって行われる。
【0063】
この実施形態における機能の修正強化は、仮想メモリマネージャがRAMを用いて動作するのと同じやり方でマッピングを行うことである、すなわち、一旦論理ブロックがアクセスされると、物理ブロックがそれに割り当てられる。
【0064】
1つの実施形態によれば、このメカニズムは、媒体上に記憶されたブロックを暗号化及び復号化することができるFAT(ファイル割当てテーブル)ファイルシステムを実行するハードウェアを備えている。1つの実施形態によれば、それは暗号化/復号化キー用のキー管理装置も備えている。
【0065】
そのような暗号化ファイルシステムは、USBスティック又は他の種類のメモリカード(例えば、セキュア・ディジタル・カード又はコンパクト・フラッシュ・カードなど)のような大容量記憶媒体に対して設計することができる。
【0066】
暗号化及び復号化はユーザには気付かれないこと、また媒体がアクセスされるホストには追加のソフトウェアをインストールする必要がないことが好ましい。暗号化ファイルシステムは、これらの要求事項を実現することができる。この暗号化ファイルシステムは、USB大容量記憶装置などの外部記憶媒体にアクセスするために、主流のインターフェースの命令のセットの中の付加的な命令を必要としない。外部記憶装置上のファイルシステムには、ホストのファイルシステム用ドライバの通常の命令がアクセスすることができ、これらの命令が行う通信以上の、オペレーティングシステムのファイルシステム用ドライバを用いるさらに別の通信は必要としない。しかしながら、外部記憶媒体上のファイルシステムは、媒体が取り付けられているホストとは無関係である。外部記憶装置上で実行されるファイルシステム用ドライバは、原則として、インターセプトモジュール(intercepting module)が、ホストの従来のファイルシステム用ドライバの命令を外部記憶装置側のファイルシステム用ドライバの命令に翻訳することができる限り、どのような種類のファイルシステム用ドライバでも良い。
【0067】
しかしながら、1つの実施形態によれば、外部記憶装置上で実行されるファイルシステム用ドライバは、Microsoft社が定義したようなFAT(ファイル割当てテーブル)ファイルシステム用ドライバである。
例えば、「http://www.microsoft.com/whdc/system/platform/firmware/fatgen.mspx」を参照されたい。
【0068】
このFATファイルシステムには、全ての主流のオペレーティングシステムが対応しているため、本発明の実施形態にとって特に好適である。このことは、全てのシステムがFATファイルシステム用ドライバを有しているため、市場のほぼ全てのホストが外部記憶媒体を読み取ることができることを意味する。
【0069】
1つの実施形態によれば、アプリケーションが、本発明による暗号化ファイルシステムを備えた外部記憶媒体にデータを書き込む又はそこからデータを読み取る場合、図2に例示されているように、2つの構成要素、すなわちオペレーティングシステムのファイルシステム用ドライバ(これは通常のFATドライバである)と外部記憶媒体のインターセプトモジュールとがデータを処理する。この図2は、書込みアクセスを例示している。
【0070】
インターセプトモジュールは、ファイルシステム用ドライバが送出した命令を単に「見る」だけである。これらの命令は、例えば、「ブロック3255にデータを書き込みなさい」又は「ブロック452からデータを読み取りなさい」という形式である。このインターセプトモジュールは、データを読み書きするためにまたファイルシステムの整合性を維持するために、ファイルシステム用ドライバが行っていることの全体像を得ていない。このため、インターセプトモジュールは、その種の命令を処理することによって(この処理が、インターセプトモジュールが得る唯一の情報であるため)、「オンザフライ(複数の処理をまとめて行うこと)」でデータの暗号化及び復号化を実行する。
【0071】
このため、インターセプトモジュールは、1つの実施形態によれば、通常のファイルシステム用ドライバの命令を通してアクセスすることができるファイルシステムとして、ホストのファイルシステム用ドライバに対して動作する1つのモジュールを有している。
【0072】
このモジュールによって受け取られた命令は、次にインターセプトモジュールの中でさらに処理されるが、このさらなる処理動作には、データが外部記憶装置に書き込まれるか又はそれから読み出されるかに応じて暗号化又は復号化する機能が含まれている。データが外部記憶装置に書き込まれる場合、このさらなる機能はこれらのデータを暗号化し、次に外部記憶装置上で動作するファイルシステム用ドライバを用いて、それを外部記憶媒体上に書き込む。1つの実施形態によるこのファイルシステム用ドライバは、インターセプトモジュールの構成要素又は別個の構成要素とすることができる。
【0073】
データがホストのファイルシステム用ドライバからの読取り命令によって外部記憶媒体から読み出された場合、この読取り命令はインターセプトモジュールのモジュールによって受け取られる。このモジュールは、ホストのファイルシステム用ドライバに対するファイルシステムとして動作する。次に、インターセプトモジュールは、外部記憶媒体上で実行されるファイルシステム用ドライバが行うデータの単なる読取りに加えて、この場合、暗号化された形式で外部媒体の中に記憶されているデータの復号化を含むさらなる機能を実行する。次に、復号化されたデータは、ホストのファイルシステム用ドライバに転送される。
【0074】
以下に、前に説明されたように動作し、また外部記憶媒体上に記憶されたデータに対して暗号化及び復号化を行うファイルシステムを暗号化するさらに別の実施形態が説明される。1つの実施形態によれば、これによりファイルシステムの整合性が維持される。
【0075】
1つの実施形態によれば、一度に有効になる信用証明データはただ1つである。それは読取り及び書込みを行うために使用される。データを含む記憶媒体上の全てのブロックは、暗号化される。様々な時間に様々なファイルに対して、種々の信用証明データを使用できる。オペレーティングシステムに与えられるファイルシステムは、インターセプタが生成した仮想ファイルシステムである。「仮想ファイルシステム」という用語は、外部記憶媒体と情報をやりとりするホストが通常の大容量記憶装置上で動作しているように見えると同時に、それは暗号化及び復号化、論理アドレスの物理アドレスに対するマッピング、ブロックの内容に対する変更、及びさらに別の実施形態の中で記述されるような他の動作などの、記憶装置の中で発生する全ての付加的な動作に気付かないことを意味する。この実施形態では、仮想ファイルシステムによって与えられる記憶アドレスは、「物理」アドレスではなく、単に「論理アドレス」である。この論理アドレスは物理アドレスとは異なり、記憶媒体上の特定の記憶位置にアクセスするためには、論理アドレスを「物理アドレス」に変換する必要がある。そのような実施形態では、現在使用できる状態の信用証明データによって暗号化されるこれらのブロック及び空のブロックだけが、一度にアクセス可能である。仮想ファイルシステムの中では、他の全てはオペレーティングシステムには見えてこない(その理由は、それらにとって物理アドレスから論理アドレスへのマッピングは存在しないからである)。ブロック・インターセプタは、物理ブロックと論理ブロックとの間、及び暗号化と復号化との間のマッピングを実行する。オペレーティングシステムにとって、記憶媒体は選択された信用証明データに応じて異なるように見える。使用できる状態の信用証明データが、トラステッド・ホストに対して選択される。記憶媒体上には多数の信用証明データを記憶することができるが、それらの1つだけを有効にすることができる。
【0076】
1つの実施形態によれば、インターセプトモジュールがマッピングモジュールを備えている。このマッピングモジュール(以後MAPとも呼ぶことにする)は、現在使用できる状態の信用証明データによるが論理ブロックを物理ブロック番号にマップする。多数のアクセス用信用証明データがあるが、1回につきそれらの中で1つだけが有効になる。しかしながら、それぞれのアクセス用信用証明データに対して、暗号化されたデータをこのアクセス用信用証明データを用いて論理アドレスから物理アドレスにマップする対応するマッピングテーブルがある。様々なアクセス用信用証明データに対して、ホストの中の様々な存続期間のような選択された様々な失効条件がある。アクセス用信用証明データの1つが、「使用できる状態(アクティブ)の信用証明データ」としてトラステッド・ホストによって選択される。
【0077】
使用できる状態の信用証明データが選択されると、対応する信用証明データは読取り及び書込み動作を行うためのある種の一定のものとして見ることができる。このため、オペレーティングシステムが信用証明データ用パラメータを提供しなくても(また提供できなくても)、読取り及び書込み動作を首尾良く実行することができる。
【0078】
マッピングモジュールによって行われたマッピングは、下記のように表すことができる。
【数1】

【0079】
このことは、特定のアクセス用信用証明データcred及び特定の論理ブロックのアドレスに対して、マッピングモジュールが対応する物理ブロックのアドレスを与えることを意味する。
【0080】
記憶媒体上の物理ブロックは、アクセス用信用証明データを用いて暗号化される。これは、下記のように表すことができる。
【数2】

【0081】
このことは、アドレスが物理ブロックのアドレスpbaによって与えられる記憶媒体上の特定のブロックに対して、このブロックに記憶されるデータが信用証明データcredを用いて暗号化されることを意味する。
【0082】
以下に、1つの実施形態による読取り動作を説明する。
【0083】
オペレーティングシステムが特定の論理ブロックlbaに対して読取り要求を送ると、対応する物理ブロックpbaが(マッピングモジュールMAPを参照することによって)決定され、そして使用できる状態の信用証明データcredを用いて復号化される。最後に、そこに記憶されたデータが、オペレーティングシステムに戻される。これは、下記のように表すことができる。
【数3】

【0084】
このことは、オペレーティングシステムのファイルシステム用ドライバによって発行され、かつ論理アドレスlbaに向けられた読取り要求が、インターセプトモジュールによって受け取られることを意味する。このインターセプトモジュールはマッピングモジュールを参照して、block(MAP(lba,cred))によって表されるように、対応する物理ブロックを識別する。このブロックに記憶されたデータは読み取られて、対応する物理ブロックに記憶された前述したデータに加えられる操作
【数4】

によって表されるように、信用証明データcredを用いて復号化される。
【0085】
ここで、1つの実施形態による書込み要求が、図3に関連して説明される。図3は、インターセプトモジュールがここでは「ブロック・インターセプタ」になっていることを除いて、図2に示された実施形態と同様である。その理由は、この実施形態では、インターセプトがブロックに関したベースで行われるからである。
【0086】
オペレーティングシステムが書込み要求を特定の論理ブロックlbaに送ってデータdataを書き込む場合、このデータは使用できる状態の信用証明データcredを用いて暗号化され、マッピングモジュールMAPによって行われるマッピングに基づいて、対応する物理ブロックに記憶される。このことは、下記のように表される。
【数5】

【0087】
命令write(lba,data)は、データが論理ブロックのアドレスに書き込まれることを意味し、またこの命令はホストのオペレーティングシステムのファイルシステム用ドライバによって外部記憶装置に送られる。次に、この命令は、ホストに「仮想ファイルシステム」を与えることによって、ホストに対して「ファイルシステム」として動作するインターセプトモジュールによって受け取られる。この仮想ファイルシステムは、「物理アドレス」ではなく「論理アドレス」に基づいてファイルシステムを与える。次に、仮想ファイルシステムによって受け取られた書込み命令は、インターセプトモジュールによって処理されて暗号化の機能が向上される。そのために、インターセプトモジュールは、マッピングモジュールMAPを使用する。このマッピングモジュールMAPは、ルックアップ動作MAP(lba,cred)を実行して、論理ブロックのアドレスlba及び使用できる状態の信用証明データcredに対応する物理ブロックのアドレスを識別する。次に、データは
【数6】

によって示されるように、信用証明データcredを用いて暗号化され、次にこの暗号化されたデータはブロックに記憶される。
【0088】
この実施形態の解決策により、記憶媒体は「仮想領域」にセグメント化される。1つの仮想領域は、特定の信用証明データに関連した記憶領域を指すマッピングモジュールMAPを有する各アクセス用信用証明データに対応している。現在使用できる状態の信用証明データに対応する記憶領域のみが、「別のホスト」に対して読取り可能である。トラステッド・ホストは全ての領域にアクセス可能であり、かつ使用できる状態の信用証明データを選択及び設定することができる。
【0089】
以下に、さらに別の実施形態を説明する。この実施形態は、多数の信用証明データを同時に有効にする。外部媒体がどの信用証明データをいつ使用するかを理解できるようにするために、この外部媒体は幾つかのパーティションを提供する。各パーティションに対して、使用できる状態の信用証明データが割り当てられる。ユーザは、対応するパーティションを操作することによって外部媒体上のファイルを暗号化することを希望する信用証明データを選択する。特定のパーティションに対して使用される信用証明データが論理ブロック番号に依存するため、外部記憶媒体はパーティションに対する読取り及び書込みのアクセスを区別することができ、このため適当な信用証明データを使用できる。
【0090】
この解決策の背後にある基本的な概念は、前述した実施形態と同様である。相違点は、1つの物理的ファイルシステム上の1つの物理的装置の中に一体化された、前の実施形態の種類の複数の記憶媒体が同時に存在することである。インターセプトモジュールは、どの論理ブロック番号がどのパーティションに属するかを定義するパーティションテーブルを保持している。データ構造の形式仕様は、MAPが使用する信用証明データを論理ブロックの番号及びパーティションテーブルから得ることができるため、先の実施形態の形式仕様と同様である。オペレーティングシステムに提供された各パーティションは、先の実施形態に関連して説明された種類の記憶媒体として動作する。
【0091】
前述の実施形態が外部記憶装置によって実行されることは、理解されたい。この外部記憶装置では、パーティションはこの場合も、複数のセグメントに分割され、そして次にパーティションが構成されて、前述された実施形態と同様の動作を行う、すなわち複数のセグメントがある。各セグメントは、それに関連した異なる信用証明データと、このセグメントに対して論理ブロックのアドレスのセットを対応する物理ブロックのアドレスにマップする異なるマッピングテーブルとを有している。前の実施形態におけるように、特定の「トラステッド・ホスト」又は特別なホストを通して、使用できる状態の信用証明データが変更され、これにより対応するマッピングテーブル及びこれによりホストがアクセスすることができる物理ブロックのアドレスも変更される。
【0092】
以下に、複数の読取り用信用証明データ(read credential)と1つの書込み用信用証明データ(write credential)とを提供するさらに別の実施形態が説明される。全ての信用証明データが記憶されている信用証明データテーブルが設けられている。信用証明データテーブルの中に記憶されている全ての信用証明データは読取り用信用証明データとして使用されるため、複数の読取り用信用証明データがあると言うことができる。それらの1つは、書込み用に使用される、使用できる状態の書込み用信用証明データとしてマークされる。信用証明データテーブルに現在記憶されている信用証明データを用いて暗号化された全てのデータは、読み出すことができる。以前の実施形態とは異なり、記憶媒体は、オペレーティングシステムに対して仮想ファイルシステムを与えない。その代わり、オペレーティングシステムは、物理的ファイルシステムの全体を常に見ることになる。しかしながら、ホストのファイルシステム用ドライバによってなおも作られる読取り及び書込み命令は、インターセプトモジュールによってインターセプトされる。しかしながら、「論理」アドレスと「物理」アドレスとの間には相違はないため、アドレスを変換する必要はない。しかしながら、インターセプトモジュールは、ホストが「見る」ものがファイルシステムのように見えるという意味では、なおも「仮想ファイルシステム」を提供すると考えられるが、実際はホストから命令を受け取るインターセプトモジュールによって提供された「仮想ファイルシステム」であり、ここでこれらの命令はインターセプトモジュールによってさらに処理されて暗号化/復号化の機能を提供し、「実際の」読取り又は書込み動作が記憶媒体のファイルシステム用ドライバによって行われる。
【0093】
この実施形態では、論理アドレスと物理アドレスとの間に相違点は存在しないため、ホストのファイルシステム用ドライバは外部媒体の全体の記憶装置を「見る」が、この場合データを符号化することはできないため、信用証明データ用の記憶装置には存在しない信用証明データを用いて暗号化されるこれらのファイルやディレクトリにはアクセスすることはできない。図4に例示されているように、この実施形態のインターセプトモジュールは、この実施形態のデータ構造にアクセスする「ファイルシステム・インターセプタ」であり、復号化を行うためにどの信用証明データを使用すべきかを決定する。
【0094】
この実施形態では、各ブロックのデータは、新しいデータがブロックに書き込まれるときに各ブロックに対して個別に生成されるブロックキーを用いて暗号化される。このブロックキーは、書込み用信用証明データによって暗号化されたキー割当てテーブルの中に記憶される。どの信用証明データがどのブロックキーに対して使用されるかの情報を記憶する信用証明データ割当てテーブル、及び信用証明データを含む信用証明データテーブルがさらに提供される。
【0095】
1つの実施形態によれば、外部記憶媒体(及びホスト)のファイルシステムは、FATファイルシステムであり、このファイルシステムは暗号化/復号化の機能性によって機能が高められている。1つの実施形態によるこのような暗号化ファイルシステムは、下記の構成要素とデータ構造とを備えている。
【0096】
FAT:FAT16/32仕様の中で規定されたファイル割当てテーブルである。それはファイルシステム上にブロックと同じ数のフィールド(=一連のセクタ)を有する一方向性アレイ(uni-dimensional array)である。アレイ内のフィールドの位置は、ファイルシステム内の対応するブロックの数を示す。フィールドの値は、ファイル/ディレクトリがブロックの大きさを超える場合、ファイルシステム上のファイルまたはディレクトリに属する次のブロックのブロック数を記憶している。この実施形態では、FATファイルシステムの従来のFATデータ構造に対する変更又は拡張は行わない。その構造及び操作は、
【数7】

によって表すことができる。
【0097】
KAT:キー割当てテーブルは、ブロックの内容を復号化/暗号化するために使用される復号化/暗号化キーを記憶する。このキーは、KATの対応するフィールドの中に記憶される。各ブロックは、それ自身のブロック暗号化/復号化キー(ブロックキー)を有する。FATと同様に、KATは、アレイ内の位置が対応するブロックの数であるようなアレイである。フィールドの中の値が、KATの中に暗号化された形式で記憶されたブロックキーである。信用証明データが、ブロックキーを復号化及び暗号化するために使用される。KATの構造及び操作は、
【数8】

によって表すことができる。
【0098】
このことは、特定のブロック数block#に対して、対応するブロックキーblockkey(block#)が存在することを意味する。後で一層詳細に説明するが、このブロックキーは、操作CAT(block#)を通して信用証明データ割当てテーブルCATを参照することによって識別することができる信用証明データによって暗号化(操作enc)される。この信用証明データは、ブロック数を用いてCATを調べることによって、対応する信用証明データ(又はその対応する識別子)に戻る。このように捜し出した信用証明データを用いて(又は発見された識別子を用いて信用証明データテーブルCTを参照することによって直接見つけられた)、ブロックに対応するブロックキーblock#を暗号化又は復号化することができる。
【0099】
CAT:すでに簡単に前に述べたように、信用証明データ割当てテーブルは、ブロックキーを復号化/暗号化するために使用される信用証明データを記憶する。このブロックキーは、ブロックの内容を復号化/暗号化するために使用される。KATと同様に、CATは、アレイの中の位置が対応するブロックの数であるアレイである。1つの実施形態によれば、フィールドの値は、信用証明データそれ自体であるか又は信用証明データの識別子である。この識別子は、対応するブロックに対するブロックキーを復号化/暗号化するために使用される。この信用証明データはCTの中で記憶される。CATの構造及び操作は、
【数9】

によって表される。
【0100】
これは、各ブロックに対して、CATが対応する信用証明データ又はその識別子を記憶することを意味する。この識別子を用いて信用証明データテーブルを参照することによって、信用証明データを見つけることができる。
【0101】
CT:各信用証明データテーブルのエントリーには、信用証明データと、その対応する固有の識別子と、その失効条件とが含まれる。CTの構造及び操作は、
【数10】

によって表すことができる。
【0102】
このことは、各識別子cred#に対して、対応する信用証明データ及びその失効条件(例えば、その存続期間)が記憶されることを意味する。
【0103】
信用証明データ(credential):信用証明データは、ユーザによって作られ、KATに記憶されたブロックキーを復号化及び暗号化するために使用される。1つの実施形態によれば、それはCTに記憶された対称的な暗号の復号化/暗号化キーである。
【0104】
ブロックキー:ブロックキーは暗号化ファイルシステムによって作られ、ブロックの内容を復号化及び暗号化するために使用される。それは対称的な暗号の復号化/暗号化キーであり、新しいデータがブロックに書き込まれるときに作られる。このブロックキーは、KATに記憶される。
【0105】
FSD:一連の所定の数のセクタが、読取り及び書込み動作においてファイルシステムから読み出される又はそこに書き込まれる最小量のデータである論理ブロックに結び付けられる。ファイルシステムのインターセプトモジュールの一部又は別個の部分として、外部記憶媒体上で実行されるファイルシステム用ドライバFSDを通して読取り又は書込み操作を行うことによって、それにアクセスすることができる。このブロックはファイル又はディレクトリのデータを含み、FSDはこのブロックにアクセスすることができる。FSDに関連したブロックの機能及び操作は、下記のように、すなわち
【数11】

と表すことができる。
【0106】
このことは、書込み又は読取り命令を用いてFSDがアクセスできるブロック番号block#のブロックには、ブロック番号に対応するブロックキーによって暗号化(又は復号化)される書込み又は読取りデータblockcontentが存在することを意味する。この操作は、従来技術に対する本発明の実施形態の相違を例示的に示している。この場合、(ホストのFSDによって実行された)FSDの操作は、
【数12】

によって表すことができ、これはFSDの命令が直接blockcontentをアドレス指定したことを意味する。しかしながら、本発明の実施形態では、この操作はホストのFSDによって行われるのではなく、外部記憶媒体(又はそのFSD)のファイル・インターセプトモジュールによって行われて、この操作は暗号化の機能性
【数13】

によって機能が高められ、一方でキーの管理に対しては、前述したようなKAT、CAT及びCTなどのさらなるテーブルが使用される。
【0107】
以下に、この実施形態による読取り要求が、一層詳細に説明される。
【0108】
ホストは、特定のブロックに対する読取り要求を媒体に送る。この媒体は要求された信用証明データが利用できる場合は、このブロックの復号化された内容を戻す。データを復号化するために、媒体はCATから信用証明データ用インデックスを得て、CTの中の対応する信用証明データを調査し、そして信用証明データ用インデックスに対応することが判明している信用証明データを用いて、KATからブロックキーを復号化する。次に、それはブロックキーを用いてブロックの内容を復号化して、ブロックの内容を戻す。この操作は下記のように、すなわち、
【数14】

のように表すことができる。
【0109】
これは、インターセプトモジュールがホストからread(block)命令を受け取り、次にそれがFSD(block#)によって外部記憶装置のFSDを用いてこの命令に対応するブロックにアクセスし、それはKAT(block#)からデータが暗号化されたブロックキーを得て、そしてそれはCAT(block#)からブロックキーが暗号化された信用証明データの信用証明データIDを得る。インターセプトモジュールはCTを用いて、信用証明データを調査し、ブロックキーを復号化し、そして次にブロックに記憶されたデータを復号化することができる。
【0110】
以下に、この実施形態による書込み要求を、一層詳細に説明する。
【0111】
ホストが、書き込まれるブロック番号と内容とを含む書込み要求を送ると、そのブロックを暗号化するために使用される新しいブロックキーが、媒体上に作られる(下記の操作i))。この内容は、ブロックキーによって暗号化され、そして記憶される(下記の操作ii))。ブロックキーは、KATに記憶され、書込み用に使用される信用証明データwcredによって暗号化される(下記の操作iii))。このブロックのために使用される信用証明データのインデックスは、CATに記憶される(下記の操作iv))。
【数15】

【0112】
1つの実施形態によれば、データが書き込まれるブロックがすでにディレクトリを有している場合は、このブロックの書込み用信用証明データを調べるためにCATが参照され、これは書込み処理を行うために使用される。この方法では、ディレクトリ・ブロックのディレクトリエントリーが更新されるときに、このディレクトリ・ブロックが別の信用証明データを用いて「再度暗号化される」ことを避けることができる。このことは、ファイルがディレクトリに加えられるたびに、ディレクトリの内容が再度暗号化されることはないと理解される。別の場合では、それぞれが別の信用証明データを用いて暗号化された複数のファイルをディレクトリが有することが起こる可能性がある。これを避けるために、最も最近書き込まれたファイルの書込み用信用証明データを用いて、ディレクトリを常に再暗号化することができる。しかしながら、これは、ディレクトリの暗号化が絶えず変化するという影響があり、このような影響は、前述されたように、CAT内の書込み用信用証明データを調べることによって避けることができる。
【0113】
ブロックがディレクトリを含まない場合は、現在の書込み用信用証明データがデータを書き込むために使用される。
【0114】
1つの実施形態によれば、外部記憶装置は、整合性の検査を行う整合性検査モジュールを備えている。このモジュールで実行される整合性の検査には様々な形式がある。
【0115】
1つの実施形態によれば、ファイルシステム上の全てのディレクトリのエンティティに対して、整合性検査モジュールは、開始ブロックを見つけて、ディレクトリの末尾のFATの中に記載された後続のブロックに従う。それは次にCATの中で、全てのこれらのブロックが暗号化するために適用される同じ信用証明データを持っていることを確認する。幾つかのブロックが異なる場合、整合性検査モジュールは、全ての他の暗号化に対して第1のブロックに使用された信用証明データを使用する。これには、同じブロックキーの再暗号化が含まれる。このことは、現行のブロックに追加されているディレクトリ・ブロック(すなわち、それらは両方とも同じディレクトリを示す)が、現行のものと同じ信用証明データを用いて暗号化されることを確認することが必要である。
【0116】
整合性検査モジュールが実行するさらに別の検査には、異なる書込み用信用証明データを用いて暗号化されたブロックを有するファイルがあるかどうかを確認することが含まれる。これらのファイルに対して、整合性検査モジュールは、そのようなファイルを再暗号化する現行の書込み用信用証明データを使用する。
【0117】
1つの実施形態によれば、整合性の検査が、プラグが抜かれた媒体上で実行される。別のやり方の又は付加的な別の可能性では、装置がホストに接続されている間に整合性の検査がバックグラウンドで実行される。整合性の検査は、周期的に実行されるか、又は特定の事象、例えばディレクトリ・ブロックが書き込まれるか又はファイルが更新されるたびに実行される。
【0118】
1つの実施形態によれば、ディレクトリとディレクトリの内容を暗号化するために使用される信用証明データとの間のマッピングを含むデータ構造が保持される。書き込むための信用証明データが1つだけではなく、様々なサブディレクトリに使用することができる所定の信用証明データが存在するため、これにより操作性が向上され、整合性の検査が一層容易にされる。内容が書き込まれるディレクトリは、書き込むためにどの信用証明データが使用されるかを示している。
【0119】
1つの実施形態によれば、ブロックキーのキャッシング(cashing)が行われる。ブロックキーが作成されるとき、現在CTにおいて利用できる全ての信用証明データを用いて暗号化されるブロックキーがキャッシュされる。さらに、ディレクトリ・ブロックの位置がキャッシュされる。このために、媒体の取付け時に作成されるディレクトリエントリーを含むブロックのキャッシュが保持される。このキャッシングにより、性能が向上される。
【0120】
さらに別の実施形態によれば、暗号化されたファイル/ディレクトリの真の名前が隠される。そのために、ディレクトリ・ブロックが読取り操作に戻ると、暗号化されたファイル及びディレクトリのファイル名が、ブロックの内容をオペレーティングシステムに戻す前に、別の名前、例えば無作為の名前に変換される。
【0121】
この実施形態に関連する問題点は、ディレクトリが存在する場合、幾つかのファイルは暗号化されるが、暗号化されないファイルもあるということである。そして、幾つかの暗号化されたファイルに関して、信用証明データが失効している可能性がある。外部記憶装置がここでディレクトリの内容を示す場合、ファイル名を読むことができるユーザの中には、ファイルの内容及びその重要性を推測できるものがいる可能性がある。これを避けるために、信用証明データが失効しているファイルのファイル名を無作為化することができる。1つの可能性は、ディレクトリの中でこれらのファイルを全く示さないことであるが、OSのFSDはこれらのファイルが記憶されているブロックが空であると推測する羽目になるため、OSがそれらの上書きをすることを防ぐ方法はない。
【0122】
1つの実施形態によれば、無作為化はファイルシステムのディレクトリエントリーには書き込まれないが、OSが読取り要求を送ると、オンザフライでインターセプタによって行われる。この修正によって、ファイルシステムは変化しない。
【0123】
当業者は、さらに別の修正を推測することができる。例えば、前述された記憶媒体はFATファイルシステムだけでなく他のファイルシステムによっても実現することができる。
【0124】
さらに、前に本願の発明の実施形態に関連して説明された構成要素及びモジュールは、ソフトウェア又はハードウェア又はそれらの両方のいずれかによって実現できることは、当業者は理解するであろう。
【0125】
本発明の実施形態による外部記憶媒体は、コンピュータに接続される代わりに、ユーザのデータを書き込み又はユーザのデータを読み取り可能な任意の他の装置又はホストに接続できることは、当業者はさらに理解するであろう。そのような装置には、例えば携帯電話、スマートフォン、PDA、又は任意の他のコンピュータ装置が含まれる。さらに、この外部記憶媒体は、USBスティック、SDカード、CFメモリだけでなく、例えばハードディスク又は任意の取外し可能な記録媒体などの、そのようなホストに接続することができる任意の媒体とすることができる。
【図面の簡単な説明】
【0126】
【図1】従来技術に基づいて、外部記憶媒体の動作を概略的に例示した図である。
【図2】本発明の第1の実施形態に基づいて外部記憶媒体の動作を概略的に例示した図である。
【図3】本発明の第2の実施形態に基づいて外部記憶媒体の動作を概略的に例示した図である。
【図4】本発明の第3の実施形態に基づいて外部記憶媒体の動作を概略的に例示した図である。

【特許請求の範囲】
【請求項1】
ホストに接続され、前記ホストがデータを書き込むこと又はデータを読み取ることを可能にする外部記憶装置であって、
データを書き込むこと及びデータを読み取ることができるメモリモジュールと、
前記ホストからの読取り又は書込み命令を受信するように構成され、当該外部記憶装置上に記憶された1つ以上の信用証明データに基づいて前記メモリモジュールから読み出された又は前記メモリモジュールに書き込まれたデータを暗号化又は復号化するようにさらに構成され、且つ当該外部記憶装置の前記メモリモジュールに前記読取り又は書込み命令を転送することによって前記メモリモジュールからデータを読取り又は前記メモリモジュールにデータを書き込む動作を実行し、これにより当該外部記憶装置に記憶された前記1つ以上の信用証明データを用いて暗号化又は復号化されたデータを読取り又は書き込むようにさらに構成されたインターセプトモジュールと
を備えている外部記憶装置。
【請求項2】
前記1つ以上の信用証明データを前記メモリモジュールの対応するセグメントに対してそれぞれマッピングして、これにより、特定のセグメント内のデータを暗号化又は復号化する前記1つ以上の信用証明データを定義するための信用証明データマッピングテーブルを備え、使用できる状態の信用証明データに対応するセグメントが前記ホストに対して外部記憶媒体として現れるとともに他のセグメントが見えなくなるようになっている、請求項1に記載の外部記憶装置。
【請求項3】
前記ホストからの読取り又は書込み命令を受信するように構成され、前記ホストに対して仮想ファイルシステムを提供するための仮想ファイルシステム用モジュールと、
読取り又は書込み命令に関連して前記仮想ファイルシステムによって受信された論理アドレスを、対応する物理的ブロックアドレスに対してマッピングするためのマッピングモジュールと、
当該外部記憶装置に記憶される又は書き込まれるデータを暗号化及び/又は復号化するために使用される少なくとも1つのアクセス用信用証明データを記憶するための信用証明データストアと、
前記マッピングモジュールによって実行されたマッピングに基づいて、前記メモリモジュール内のアドレスに対して読取り又は書込み命令を生成するためのモジュールと
をさらに備えている請求項1又は2に記載の外部記憶装置。
【請求項4】
前記信用証明データが1つ以上の対応する失効条件と一緒に記憶媒体の中に書き込まれ、
前記記憶媒体が、
前記外部記憶媒体上で実行されるファイルシステムとして前記ホストに対して現れ、かつ読取り可能及び/又は書込み可能なデータとしてこれらデータを前記ホストに提示する仮想ファイルシステムであって、前記読取り可能及び/又は書込み可能なデータが、前記失効条件がまだ満たされていないため、まだ失効していないアクセス用信用証明データが存在するようなものである、仮想ファイルシステムをさらに備えている、
請求項1ないし3のいずれか一項に記載の外部記憶装置。
【請求項5】
読取り及び書込みを行うために、1つ以上の信用証明データの中で使用できる状態の1つの信用証明データが存在し、
前記マッピングモジュールが、前記アクセス用信用証明データに応じて論理アドレスと対応する物理的アドレスとの間のマッピングを記憶するようになっている、
請求項1ないし4のいずれか一項に記載の外部記憶装置。
【請求項6】
読取り及び書込みを行うために、1つ以上の信用証明データの中で使用できる状態の1つ以上の信用証明データが存在し、
前記マッピングモジュールが、論理アドレスと、対応する物理的アドレスと、選択されたセグメントに依存するアクセス用信用証明データとの間のマッピングを記憶するようになっている、
請求項1ないし5のいずれか一項に記載の外部記憶装置。
【請求項7】
前記外部記憶媒体が幾つかのパーティションを有し、各パーティションに対して使用できる状態の信用証明データが割り当てられ、かつ、ユーザが、対応するパーティションを操作することにより前記外部記憶媒体上のファイルを暗号化又は復号化するための信用証明データを選択するようになっている、請求項1ないし6のいずれか一項に記載の外部記憶装置。
【請求項8】
書込み用に1つの使用できる状態の信用証明データがあり、また読取り用には複数の使用できる状態の信用証明データがあり、読取り用の使用できる状態の信用証明データの1つによって暗号化された全てのデータは読み取ることが可能であり、書き込まれるデータは使用できる状態の書込み用信用証明データによって暗号化される、請求項1ないし7のいずれか一項に記載の外部記憶装置。
【請求項9】
データブロックがブロックキーによって暗号化され、かつ前記ブロックキーが対応する信用証明データによって暗号化される、請求項1ないし8のいずれか一項に記載の外部記憶装置。
【請求項10】
あるブロックと、該ブロックが暗号化されるその対応するブロックキーとの間の対応関係を維持するためのキー割当てテーブルと、
あるブロックと、その対応する信用証明データ又は対応するブロックキーを暗号化する信用証明データとの間の対応関係を維持するための信用証明データ割当てテーブルと
をさらに備えている、請求項9に記載の外部記憶装置。
【請求項11】
当該外部記憶装置上に書き込まれたファイルシステムの整合性を検査するための整合性検査モジュールをさらに備えている、請求項1ないし10のいずれか一項に記載の外部記憶装置。
【請求項12】
前記整合性検査モジュールが、
あるディレクトリに属する全てのブロックが同じキーを用いて暗号化されるかどうかを検査することと、
特定のファイルに属する全てのブロックが同じ信用証明データを用いて暗号化されるかどうかを検査することと
のうち1つ以上を実行するように構成されている、請求項11に記載の外部記憶装置。
【請求項13】
前記整合性検査モジュールが、
前記ホストから当該外部記憶装置を取り外した後、
周期的に、
前記ファイルシステムに何らかの書込み動作を行った後
という条件のうち1つ以上の条件のもとで実行されるようになっている、請求項11ないし12のいずれか一項に記載の外部記憶装置。
【請求項14】
前記整合性検査モジュールが、ディレクトリエントリーを含むブロックのリストを保持するようになっている、請求項11ないし13のいずれか一項に記載の外部記憶装置。
【請求項15】
ディレクトリと該ディレクトリの内容を暗号化するために使用される信用証明データとの間のマッピングを含むデータ構造を保持するためのモジュールをさらに備え、前記内容が書き込まれるディレクトリが、書込みに対してどの信用証明データが使用されるかを表すようになっている、請求項1ないし14のいずれか一項に記載の外部記憶装置。
【請求項16】
暗号化されたファイル及び/又はディレクトリの真の名前を変更することによって、前記暗号化されたファイル及び/又はディレクトリの真の名前を隠すためのモジュールをさらに備えている、請求項1ないし15のいずれか一項に記載の外部記憶装置。
【請求項17】
請求項1ないし16のいずれか一項の外部記憶装置に基づいて、該外部記憶装置にデータを書き込むためのホストであって、
1つ以上のアクセス用信用証明データと1つ以上の対応する失効条件とを前記外部記憶装置に書き込み、これにより前記外部記憶装置が、読取り可能及び/又は書込み可能なデータとしてこれらのデータを当該ホストに提示することが可能な書込みモジュールであって、前記読取り可能及び/又は書込み可能なデータが、前記失効条件がまだ満たされていないため、まだ失効していないアクセス用信用証明データが存在するようなものである、書込みモジュールを備えている、
ホスト。
【請求項18】
前記外部記憶装置のセグメント、
前記外部記憶装置のパーティション、
前記外部記憶装置上の物理ブロック、
前記外部記憶装置上のファイル及びディレクトリ、
のうちの1つ以上に対して信用証明データのマッピングを実行するようになっている、請求項17に記載のホスト。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate


【公開番号】特開2009−20871(P2009−20871A)
【公開日】平成21年1月29日(2009.1.29)
【国際特許分類】
【外国語出願】
【出願番号】特願2008−144626(P2008−144626)
【出願日】平成20年6月2日(2008.6.2)
【出願人】(392026693)株式会社エヌ・ティ・ティ・ドコモ (5,876)
【Fターム(参考)】