記憶装置のセキュリティを確保する方法とシステム
本発明の方法は、不揮発性記憶装置(2)の複数の個別にアドレス可能なブロック(4)の各々に対して個別の暗号化シード(IV)を与えるステップを含む。共通暗号化方法により、複数の個別のアドレス可能なブロックに記憶されるべきデータを暗号化する。一実施形態では、前記記憶装置は携帯型記憶装置である。一実施形態では、暗号化シードは初期化ベクトル(IV)である。一実施形態では、暗号化シードは、メディアシリアルナンバ及び不揮発性記憶装置の前記ブロックのそれぞれに対応する論理ブロックアドレスのうち少なくとも一方を含む。代替実施形態では、本発明の方法は記憶装置のブロックのそれぞれにおいて不揮発性記憶装置の個別のブロックの個別の暗号化シードのうち少なくとも一部を記憶するステップをさらに含む。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は不揮発性記憶装置のセキュリティに関する。
【背景技術】
【0002】
携帯型デジタル記憶装置が普及しつつある。これら装置はフラッシュメモリやハードディスク等のソリッドステートの記憶装置を含んでいる。この普及はコンパクトフラッシュ、セキュアデジタルカード、メモリースティックPRO、マルチメディアカード、フラッシュドライブ、それらの改良型等の主なフラッシュメディアにまで広がっている。これら装置は容易にギガバイトのデータを記憶することができ、その重量は数グラムであって、その大きさはクレジットカードよりも大きくない。これら装置に関する問題としては、紛失し易いことがあげられる。多くの人々が今日、大量の重要データを記憶した装置をポケットに入れたまま携行している。非常に重要なこととして、このようなデータは所有者だけが読めるように暗号化されていなくてはならないことがあげられる。
【0003】
装置に対する読み書き速度に及ぼす影響を最小限にとどめ、且つ付加的ハードウェアにかかる経費を最小限にとどめて、不揮発性記憶装置、例えば、携帯型デジタル記憶装置内のデータを保護する暗号化方式を使用するシステムと方法が必要とされている。
【発明の概要】
【0004】
本発明によれば、不揮発性記憶装置における複数の個別にアドレス可能なブロックに対してそれぞれ暗号化シードを与えるステップを含む方法であって、共通暗号化方法によって前記複数の個別にアドレス可能なブロックに記憶されるべきデータが暗号化されることを特徴とする方法が提供される。一実施形態においては、前記記憶装置は携帯型記憶装置である。一実施形態においては、前記暗号化シードは初期化ベクトル(IV)である。一実施形態においては、各暗号化シードは、メディアシリアルナンバ及び前記不揮発性記憶装置のそれぞれのブロックに対応する論理ブロックアドレスのうち少なくとも一方を含む。代替実施形態においては、当該方法は、前記不揮発性記憶装置の前記個別のブロックのそれぞれにおいて不揮発性記憶装置の個別ブロックの個別の暗号化シードの少なくとも一部を記憶するステップをさらに含む。一実施形態においては、当該方法は、システム上で実行することができ、記憶装置のセキュリティを確保する。
【0005】
共通暗号化方法として利用される多くの暗号化手法がある。一例がAES(Advanced Encryption Standard)である。
【0006】
本発明の別の態様によれば、不揮発性記憶装置のデータブロック内に記憶されたデータを復号化する方法であって、前記不揮発性記憶装置は暗号化シードのそれぞれを有する複数の個別にアドレス可能なデータブロックを含み、すべての前記ブロック内の前記データは共通暗号化方法により暗号化され、前記復号化方法は、前記ブロックの所望の1つにアクセスするステップと、そのブロックの前記暗号化シードから復号化コードを生成するステップと、そのブロックの当該生成された復号化コードを用いて前記所望のブロックの1つに関するデータを復号化するステップとを含む。
【0007】
一実施形態においては、前記暗号化シードは前記データブロックに記憶される。別の実施形態は、メディアシリアルナンバ及び前記所望のブロックの論理ブロックアドレスのうち少なくとも一方から前記復号化コードを生成するステップを含む。さらに別の実施形態は前記ブロックに記憶されている乱数と共に、メディアシリアルナンバ及び前記所望のブロックの論理ブロックアドレスのうち少なくとも一方を用いて前記復号化コードを生成するステップを含む。前記暗号化シードは前記復号化コードであってもよく、前記復号化コードは初期化ベクトルであってもよい。
【0008】
本発明の別の態様によれば、暗号化シードをそれぞれ有する複数の個別にアドレス可能なデータブロック内にデータを記憶する不揮発性データ記憶装置であって、すべての前記ブロック内の前記データが共通暗号化方法によって暗号化されることを特徴とする不揮発性データ記憶装置が提供される。
【0009】
本発明のさらなる態様によれば、暗号化シードをそれぞれ有する複数の個別にアドレス可能なデータブロック内にデータを記憶するデータキャリアであって、すべての前記ブロック内の前記データが共通暗号化方法によって暗号化されることを特徴とするデータキャリアが提供される。
【0010】
前記別の態様又は前記さらなる態様に係る実施形態においては、前記データブロックは前記ブロックの前記データの暗号化に用いられるそれぞれの暗号化シードを含む。
【0011】
さらに別の態様によれば、暗号化シードをそれぞれ有する複数の個別にアドレス可能なデータブロックにデータを記憶するデータキャリア内に記憶されたデータを復号化するように構成されたデータプロセッサであって、すべての前記ブロック内の前記データは共通暗号化方法によって暗号化され、前記データプロセッサは本発明の前記別の態様に係る方法を実行するように構成されていることを特徴とするデータプロセッサが提供される。
【0012】
本発明は、適切なプロセッサで実行されるときに前記別の態様に係る方法を実行するコンピュータプログラムと、当該コンピュータプログラムを搭載するキャリヤとを提供する。
【図面の簡単な説明】
【0013】
【図1】フラッシュメモリのデータ記憶領域の概略図である。
【図2】ブロック暗号化サイファとしてAESを使用する暗号化の暗号ブロック連鎖モードの概略図である。
【図3】本発明を実行する典型的なシステムの概略的ブロック図である。
【図4】図2の暗号化プロセスに対応する復号化プロセスの概略ブロック図である。
【図5】一実施形態に係るIVブロックの一例を示す図である。
【図6】一実施形態に係る非同期的乱数ジェネレータの単純化されたブロック図である。
【図7】典型的なメモリページを示す図である。
【図8】エラー修正データに使用される付加的データの一部を有する典型的メモリページを示す図である。
【図9】一実施形態に係る、暗号化されるべき512バイトのページを示す図である。
【図10】一実施形態に係る、2つのセクタに分割された1024バイトのデータブロックを示す図である。
【図11】一実施形態に係る非同期的乱数ジェネレータの一例のブロック図である。
【発明を実施するための形態】
【0014】
本発明をより理解するために、添付図面を参照して説明する。
【0015】
使用するフラッシュメモリは、例えば数ギガバイトの大記憶容量を有する。フラッシュメモリは消去ブロックに分割されており、その消去ブロックは1回の消去操作で消去され得るメモリの部分である。消去ブロックは、例えば、多数ページの記憶容量を有する。以下に説明するように、1ページは528バイト又はその倍数バイトを有する。
【0016】
本発明の実施例として且つ説明を容易にするために、フラッシュメモリの記憶領域は図1に示されているように複数のセグメント4に分割されている。各セグメントは例えば、1ページ当たり528バイトであってもよく、その内、512バイトはデータの記憶に使用され、残りの16バイトは付加的データのために使用される。以下の図7を参照されたい。
【0017】
本発明の実施例では、各セグメント4内のデータは暗号化されている。図2の実施例では、暗号化に関し公知のCBC(Cipher Block Chaining mode:暗号ブロック連鎖モード)方法が使用されており、当該CBC方法においてはAES(Advanced Encryption Standard)がブロックサイファ暗号化方法として使用されている。
【0018】
セグメント4のデータは、複数のプレーンテキスト部分に分割されており、それら部分の各々が128ビットを有する。第1の128ビットの部分61は排他的論理和(EX−OR:Exclusive−Or)操作81において初期化ベクトル(IV)10と論理的に結合される。AESを使用するブロック暗号化操作はキー12を使用して128ビットを暗号化して、128ビットのサイファテキスト161を生成する。そして、サイファテキストの128ビットがEX−OR操作82において次の128ビットのプレーンテキストと論理的に結合され、且つ同一のキーを使用して暗号化操作142において暗号化されて、当該チェーン(連鎖)の次のステージの別の128ビットのサイファテキストを生成する。当該チェーン(連鎖)における次のステージは同一の方法で作動する。
【0019】
本発明の実施例によれば、データセグメント4は、それぞれの異なるIV(IV10…IV21…IV41)を有する。同じ暗号化プロセスを使用するものの、異なったIVを有するセグメント内のデータが暗号化される。これらIVは、以下で説明するように本発明のいくつかの実施形態に係るフラッシュメモリ内に記憶されている。前記IVは、それぞれのデータセグメント内に記憶されてもよい。
【0020】
図3は、図1と図2を参照して説明したプロセスを実行するシステムの一例を示している。
【0021】
フラッシュメモリ22はインタフェース(I/F)24によってコンピュータに結合されている。例えば、このフラッシュメモリとインタフェースは周知のUSB記憶装置で使用されるものと同じである。例えば、コンピュータはPCであってもよい。暗号化プロセスがコンピュータ26内で実行され、暗号化されたデータがフラッシュメモリ内に記憶される。
【0022】
図3の実施例においては、コンピュータ26は、プログラム記憶装置261、プロセッサ262、非揮発性メモリ263(例えば、ディスクドライブ)を有する。暗号化プロセスをコンピュータ26の非揮発性メモリ263に適用してもよい。コンピュータ26は、PC、PDA、携帯電話又はデータ記憶部及びデータ処理部を有するいかなる他の装置であってもよい。
【0023】
この実施例では、復号化は図4に示されているように暗号化とは逆の手順で行われる。暗号化及び復号化プロセスは、同一のIV及びキーを使用する点において対称的である。この実施例における復号化プロセスは各々のセグメント4に適用される。この実施例では、1つのセグメントのIVが、セグメントから抽出されて、復号化プロセスにおいて使用される。以下に説明するように、IVの一部のみがセグメント内に記憶されてもよく、IVはその記憶された部分から生成される。IVは、メディアシリアルナンバ及び/又は論理セグメントアドレスから生成されてもよい。その際、セグメントで記憶することができる乱数を使用してもよい。
【0024】
本発明の実施例は、適切なプロセッサで動作すると、復号化方法を実行するコンピュータプログラムを含む。このコンピュータプログラムはキャリヤ(信号又は記録媒体)上にあってもよい(但し、これらに限定されない)。
【0025】
以下により詳細に説明するように、他の暗号化方法及び復号化方法を使用してもよい。
【0026】
以下に説明するように、他のサイズのデータセグメントを使用してもよい。
【0027】
以下に、IVを生成する実施例及び他の情報に関して説明する。
【0028】
IV生成
一実施形態では、AES(Advanced Encryption Standard)はデータの改良された暗号化に対していくつかのフィードバックモードを指定する。サイファーフィードバック(CFB:cipher feedback)モード、暗号ブロック連鎖(CBC)モード、及びアウトプットフィードバック(OFB:output feedback)モードの3つのモードは、初期化ベクトル(IV)を用いてデータに対して排他的論理和(XOR:Exclusive OR)操作を実行する。IVは秘密である必要はないが、CBCとCFBに関してそれは予測不可能であるべきである。IV又はIVを生成するシードは乱数であるべきである(本明細書においては、IV及びシードは互換的に使用される)。
【0029】
一実施形態では、IVを生成するのに使用されるシード又はIVは、当該IVが使用されたデータのブロックと共に記憶される。そして、IV又はシードは、データのそれぞれのブロックを復号化するプロセスにおいて使用され得る。一実施形態では、IVは128ビットのデータ又は16バイトの8ビットデータである。例えば、IVが暗号化プロセスにおいて反復されない限り、IVはより小なる乱数から生成され得る。ほとんどすべてのデバイス(パーソナルコンピュータ、家庭用装置、携帯電話等)に使用される記憶装置はセクタサイズとして512バイトを使用しているので、最適性能のために、IVは(先に本明細書においてデータブロックと称された)512バイト毎のデータにおいて固有であることが望ましい。この事により、1024バイト又は2048バイト等のより大なるデータブロックの使用は排除されない。
【0030】
フラッシュメモリは複数のブロックに分割されている(このブロックは、先に説明したデータブロックと異なり、本明細書の以下においては消去ブロックと称される)。フラッシュメモリにおける消去ブロックは、一度消去されて書き直され得る最小量のメモリのことである。例えば、典型的な消去ブロックは256ページから構成されてもよい。消去ブロックに書き込むためには、それはまず消去されて、その後に書き込まれなければならない。
【0031】
ブロックがあまりにも多数のエラーを発生させる場合、データは新たなブロックと、不良としてマークされたブロックとに移行され得る。ブロックがフラッシュのいかなる場所に設けられていたとしても、それは常に論理ナンバを保持する。一実施形態においては、論理ナンバは、その少なくとも一部が使用されて、それぞれのブロックに対してIVの一部を生成する。その結果、IVを反復する可能性が低減される。
【0032】
図5は16バイトのIVブロック100(128ビット)の一例を示している。しかしながら、NANDフラッシュの付加的データ領域内においては、4バイト(又は32ビット)の余地しかない。したがって、この32ビットの乱数から、偶発性を有する128ビットのIVブロックが生成される。一実施形態では、32ビットの乱数は論理ブロックアドレス及び/又は記憶装置の固有のシリアルナンバをそれに加えることができる。
【0033】
媒体がデータと共にIVを記憶する場所(例えば、ハードディスクドライブ)を有しない場合、記憶ユニットのシリアルナンバを伴うこともあるし伴わないこともある。IVは論理ブロックナンバであり、その上、IVのサイズに依存して、記憶ユニットのシリアルナンバを伴うこともあるし伴わないこともある。また、論理ブロックナンバに加えて付加的定数もまた使用され得る。この場合も、また、別の組合せがIVの生成に使用され得る。
【0034】
乱数生成
乱数を生成する1つの手段としては、電源が入れられた(投入された)ときにプリセットされた状態にリセットされないレジスタを含む集積回路を設けることがあげられる。そのため、レジスタの電源が入れられた後に、レジスタは予測不可能な初期のシード値を有する。いくつかの制御装置は同期的設計を有し、これは大抵の回路が電源投入時に同一値に初期化又はプリセットされることを意味している。しかし、レジスタ又はハッシュジェネレータロジックは電源投入時にプリセット値を有しないように予め設計され得る。それは予測不可能な状態で電源投入されるので、偶発性の根源となっている。
【0035】
一例として、図6を参照すると、レジスタ204は、その入力として、CRCジェネレータ又はAES暗号器等の「ハッシュ論理」装置203からの出力を受信する。この論理回路203は、入力としてレジスタからの出力を受信し、且つ例えばカウンタ等の内部事象及びUSBフレームナンバ等の外部事象に基づくナンバを受信する。USBフレームナンバはUSBホストによって生成される擬似的乱数である。このナンバは定期的に更新される。1つの問題として、事象が予測できるかもしれないということがあげられる。しかしながら、集積回路が集積回路のクロックと同期していないポートを介してホストコンピュータに接続されている場合、ホストポートを使用し、内部的に生成されたナンバに非同期なナンバが生成される。内部事象及び外部事象によって生成されたこれら2つのナンバが論理ブロックに与えられると、真の乱数が生成される。
【0036】
図6は係る非同期方式の乱数ジェネレータ200の単純化したブロック図を示している。乱数ジェネレータ200は、ハッシュ論理203と通常の同期レジスタ204とに与える内部乱数スタート値201及び外部乱数スタート値202の両方を使用して、ハッシュ論理にフィードバックを与えている。図6におけるブロック図の論理は、ハードウェアに組み込まれた論理として実装されるか、又はソフトウェア若しくはファームウェアとして実装され得る。
【0037】
IV記憶装置
図7は、528バイトのデータ301又はその倍数バイトのデータを含む(フラッシュメモリページ等の)メモリページ300の例を示している。一実施形態では、ページサイズは512バイトのデータと16バイトの付加的データ302とを記憶するように設計されている。典型的なページサイズは528、2112、4224等である。
【0038】
図8は。メモリページ400の例を示しており、付加的データの一部がエラー修正データ403として用いられる。これは典型的な構成である。なぜならば、フラッシュメモリがランダムエラーの影響を受けやすいからである。残りの付加的データ402はステータスのために使用される。
【0039】
図9は暗号化されるべき528バイトのページ500の実施例を示している。係る場合には、データを復号化する際に使用される迅速なアクセスのためにそのページ内における暗号化に使用されるIV504を記憶し、且つ2個のステータスバイト402のみを有することが望ましい。
【0040】
IVデータの4バイト(32ビット)は4.294.967.296(232)の異なったIV値を与えるであろう。フラッシュメモリはギガバイトのデータを保持できるので、より多数の乱数が、乱数を反復する可能性を低減するのに使用され得る。
【0041】
一実施形態では、図9に示されているように、4バイトの乱数を含むIVは、データブロックの始めに設けられる。これは、512バイトのデータが乱数を用いて暗号化される場合、IVを読み込むと、復号化する必要があるデータに先んじて制御装置がIVを有することができるようになるためである。乱数が例えばデータの最後に設けられた場合、制御装置は全体の512バイトを読み込んで、512バイトを暗号化するプロセス中に使用されたIVに達してから、復号化を開始しなければならないだろう。この手法で、復号化プロセスの間における貴重なサイクル(繰り返し動作)が無駄となるであろう。
【0042】
図10は、2つのセクタ601及び602に分割された1024バイトのデータブロック600を示している。IVを反復する可能性を低減する1つの手法として、各IVを2つのデータブロック又は2つのセクタに関連付けることがあげられる(その結果、ブロックサイズが増大する)。512バイトのデータ603a及び603bはアクセス可能なデータの最小チャンクとして保持されている。8バイトの604a及び604b(64ビット)のIVは264又は18446744073709551616の固有のナンバを生成することができる。
【0043】
いくつかの場合においては、他の割り当てが使用されてもよい。したがって、例えば、いくつかの場合においては、全体のIVが第1のセクタ内で保持され、且つすべてのエラー修正が第2のセクタ内に保持され得る。この場合の利点は複合化がすぐに開始するという点であるが、不利な点は、(第2のセクタが読み込まれるときに)エラーが一旦見出されると、その内のいくつかを再処理する必要がありえるという点である。さらに他の場合では、エラー修正は最初に行われてもよい。その場合、書き込みプロセスが減速するであろうが(よって、二重書込みを実質的に必要とする)、エラーなしで迅速な復号化が可能となるであろう。読出し回数が書込み回数に対してかなりの割合で勝る場合においては、それは興味深い選択であるかもしれない。いくつかの場合においては、読出し対書出しの比率に関して記録をつけてもよく、閾値を一旦越えると、メモリがダイナミック(動的)に再構成されてもよい。
【0044】
先行エラー修正
フラッシュメモリは信頼性に関する問題を有する、すなわち、個々のビットに時としてエラーが生ずる。データが暗号化される場合、エラーが生ずるとデータは復号化することができない。暗号化されない場合、データが不正確となり得る。故障ビットを修正するエラー修正方法を有するのは、一般的である。これら修正方法は1つ以上のエラーを修正できる。一実施形態におけるエラー修正方法は、5バイトのエラーまで検出し、且つ512バイトの空間内の4バイトエラーまで修正することができる。
【0045】
いくつかの場合においては、ある傾向(セクタ内の不良スポットの数が増大するという傾向)に基づいて、セクタ又はブロックが永続的に写像されてもよい(すなわち、新しいブロックにデータを移行させる)ので、大きな(悲惨な)データ損失を防止し又は最小限にとどめることができる。修正可能なエラーに関する情報は付加的な領域内に記憶され、図9に示されているようにその領域においては10バイトが512バイトのデータに対してECC値を記憶している。制御装置は、フラッシュ媒体に書き込みしながら正しいECC値を定め、且つデータを読み返しながら元のECC値をECC値と比較する。
【0046】
その結果、制御装置はエラーがデータに発生したか否かを決定でき、且つECCデータを用いてそれを修正することができる。さらに、制御装置が新しい良い領域にこのデータを写像する修正動作をなすように4バイトのエラーを修正すると、制御装置は発生直前の不良ブロックを示すことができる。
【0047】
一実施形態では、制御装置が不良になる直前のブロックを写像する(すなわち、新しいブロックにデータを移行させる)ために使用され得る利用可能な良好ブロックのトラックを憶えておく。例えば、ホストが128のセクタを読み込む要求をし、且つセクタ3、19、38が4バイトのエラーで修正されたことが見出された場合、制御装置は、データの全128のセクタをホストに移しながら、これら不良になる直前のセクタをFIFO内に保持するであろう。データ転送が完了した後に、ファームウェアはこのFIFOを読み込んで、このブロック内においていくつかのセクタがデータエラーを有すること(つまり、不良化しようとしていることを示している)を見出す。そして、ファームウェアは新しく且つ良好なブロックにセクタの全ブロックを移行させる修正動作を取るだろう。転送が完了すると、それは不良として現在のブロックをマークし、その結果、データ損失を防止することができる。一般に、N個又は場合によってはNよりも少ない数のエラーがあったとき、N個のエラーを修正できる修正方法はブロックをいつ移行させるかを示すのに用いられるであろう。
【0048】
ブートコード暗号化/認証
フラッシュメモリ記憶装置はしばしばいわゆるブートファームウェアを含む。これは、電源が印加されるとフラッシュ制御装置集積回路によってフラッシュメモリからロードされるファームウェアである。装置が製造されるときに、通常このブートファームウェアには書き込みが行われるが、このファームウェアに対するパッチは装置の寿命の間いつでも書き込まれてもよい。このコードが信頼でき且つ暗号化を破壊し得る不良ファームウェアでないことをプロセッサが認証することができるように、このブートデータは暗号化されることが望ましい。
【0049】
いくつかの場合において、以下に説明されるCD領域のホストブート部分にこの方法を適用してもよい。この手法は、ウイルスがホストブートセクションを乗っ取ることを防ぐことができる。
【0050】
装置がAESスタンダードで定義されるようなキーを割り当てられた場合、ブートデータを暗号化し且つ復号化するのにこのキーは使用され得る。しばしば、キーなしで装置が販売され、後にキーが割り当てられる。このようにキー割り当てが後になされる理由は、ユーザがマスターキーの一部であるパスワード保持をできるようにするためである(そうすれば、実質的に、キーは固有のキーとなる)。しかし、製造時点では、ブートコードが有効にされ得ることを保障するのに、マスターキーが必要とされる。ブートファームウェアのみの使用のために、製造時点では、各装置に対して固有キーが生成され得る。制御装置がワンタイムプログラムメモリ(OTP:one−time program)を有する場合、製造時に固有キーが制御装置に記憶され得る。OTPは追記型メモリ(write once memory)と同様であり、このワンタイム型の書込み後には変更できない。
【0051】
キーを変える別の手法としては、フラッシュメモリ内にマスターキーを記憶する手法があるが、装置の電源が投入される度に本発明の一実施形態に係る以下に示す方法を使用してキーを変える手法もある。その方法とは、以下の通り実行される。
【0052】
1. 現在のキーを用いて、ブートコードを復号化し且つクリアなデータをRAMにロードする。
【0053】
2. 後述の方法を使用して新たなマスターキーを生成し、現在のブートブロックを消去し、その新たなマスターキーを用いて暗号化された新たなブートコードを書き込み、この新たなブートブロックを記憶媒体に書き込む。ブートブロックは媒体内であれば、ほぼどこに設けられてもよい。
【0054】
実装実施形態
製品はCD+Publicとして出荷されるであろう。これは次のことを意味する。即ち、記憶装置がPCと接続されると、記憶装置がCDドライブ内に含まれるべき又は含むべきホストのオペレーティングシステムに対してCDドライブになってほしいという要求若しくはCDドライブを含んでほしいという要求を出すことによって、マイコンピュータ(My Computer)ウィンドウ内にCDアイコン及び記憶アイコンを形成する。CD部分には、装置が「保護されるようにする」アプリケーションがあるであろう。先に説明したように、プログラムは起動されるとユーザにパスワードの入力をうながして、マスターキー及びIVを用いて安全なパーティションを暗号化する。
【0055】
図1の説明において先に説明されたように、USBストレージシステムにおいて32ビットの乱数を生成する1つの方法としては、USBフレームナンバ(ミリ秒毎にPC等のUSBホストによって生成される乱数)と、システムクロック毎に増大され且つ予測不可能な乱数の初期値を有する制御装置内の内部カウンタと、を用いることがあげられる。
【0056】
図11は非同期的乱数ジェネレータ700の一例のブロック図を示している。このジェネレータ700は、マルチプレクサ(mux:multiplexer)に与えるフレームナンバ701及び内部カウンタ702の両方と、ハッシュ論理への通常の同期レジスタ及びフィードバックと、を使用している。その通常の同期レジスタ及びフィードバックはCRCジェネレータ704として示されており、乱数705を生成する。それは、ソフトウェア、ハードウェア又はそれらのいかなる組合せにおいても実装することができる。さらに、いくつかの場合においては、CRCジェネレータ704は、電源オン時にリセットされないので、プロセッサが電源投入される毎に不確定な値を有する。
【0057】
実行されるべき1セットの指示としてコンピュータシステムのメモリ内に先に説明されたプロセスが記憶され得る。さらに、先に説明されたプロセスを実行する指示は、磁気ディスク及び光学ディスクを含む機械可読媒体の他の形態に記憶され得る。上述のプロセスは、例えば、ディスクドライブ(コンピュータ可読媒体ドライブ)を介してアクセス可能な磁気ディスク又は光学ディスク等の機械可読媒体に記憶され得る。さらに、指示は、データネットワークを介してプログラムソース(例えば、サーバ)からコンピューターデバイスに、コンパイルされ且つリンクされた形態でダウンロードされ得る。あるいは、先に説明されたプロセスを実行する論理は、別のコンピュータ及び/または機械可読媒体に実装されてもよい。別のコンピュータ及び/または機械可読媒体とは、例えば、個別のハードウェア要素(大規模集積回路(LSI)や特定アプリケーション集積回路(ASIC))及びファームウェア(電気的消去書込み可能な読出し専用メモリ(EEPROM))である。あるいは、先に説明されたプロセスを実行する論理は、電気的、光学的、音響的形態の伝播信号及び他の形態の伝播信号(例えば、伝送波、赤外信号、デジタル信号等)に実装されてもよい。
【技術分野】
【0001】
本発明は不揮発性記憶装置のセキュリティに関する。
【背景技術】
【0002】
携帯型デジタル記憶装置が普及しつつある。これら装置はフラッシュメモリやハードディスク等のソリッドステートの記憶装置を含んでいる。この普及はコンパクトフラッシュ、セキュアデジタルカード、メモリースティックPRO、マルチメディアカード、フラッシュドライブ、それらの改良型等の主なフラッシュメディアにまで広がっている。これら装置は容易にギガバイトのデータを記憶することができ、その重量は数グラムであって、その大きさはクレジットカードよりも大きくない。これら装置に関する問題としては、紛失し易いことがあげられる。多くの人々が今日、大量の重要データを記憶した装置をポケットに入れたまま携行している。非常に重要なこととして、このようなデータは所有者だけが読めるように暗号化されていなくてはならないことがあげられる。
【0003】
装置に対する読み書き速度に及ぼす影響を最小限にとどめ、且つ付加的ハードウェアにかかる経費を最小限にとどめて、不揮発性記憶装置、例えば、携帯型デジタル記憶装置内のデータを保護する暗号化方式を使用するシステムと方法が必要とされている。
【発明の概要】
【0004】
本発明によれば、不揮発性記憶装置における複数の個別にアドレス可能なブロックに対してそれぞれ暗号化シードを与えるステップを含む方法であって、共通暗号化方法によって前記複数の個別にアドレス可能なブロックに記憶されるべきデータが暗号化されることを特徴とする方法が提供される。一実施形態においては、前記記憶装置は携帯型記憶装置である。一実施形態においては、前記暗号化シードは初期化ベクトル(IV)である。一実施形態においては、各暗号化シードは、メディアシリアルナンバ及び前記不揮発性記憶装置のそれぞれのブロックに対応する論理ブロックアドレスのうち少なくとも一方を含む。代替実施形態においては、当該方法は、前記不揮発性記憶装置の前記個別のブロックのそれぞれにおいて不揮発性記憶装置の個別ブロックの個別の暗号化シードの少なくとも一部を記憶するステップをさらに含む。一実施形態においては、当該方法は、システム上で実行することができ、記憶装置のセキュリティを確保する。
【0005】
共通暗号化方法として利用される多くの暗号化手法がある。一例がAES(Advanced Encryption Standard)である。
【0006】
本発明の別の態様によれば、不揮発性記憶装置のデータブロック内に記憶されたデータを復号化する方法であって、前記不揮発性記憶装置は暗号化シードのそれぞれを有する複数の個別にアドレス可能なデータブロックを含み、すべての前記ブロック内の前記データは共通暗号化方法により暗号化され、前記復号化方法は、前記ブロックの所望の1つにアクセスするステップと、そのブロックの前記暗号化シードから復号化コードを生成するステップと、そのブロックの当該生成された復号化コードを用いて前記所望のブロックの1つに関するデータを復号化するステップとを含む。
【0007】
一実施形態においては、前記暗号化シードは前記データブロックに記憶される。別の実施形態は、メディアシリアルナンバ及び前記所望のブロックの論理ブロックアドレスのうち少なくとも一方から前記復号化コードを生成するステップを含む。さらに別の実施形態は前記ブロックに記憶されている乱数と共に、メディアシリアルナンバ及び前記所望のブロックの論理ブロックアドレスのうち少なくとも一方を用いて前記復号化コードを生成するステップを含む。前記暗号化シードは前記復号化コードであってもよく、前記復号化コードは初期化ベクトルであってもよい。
【0008】
本発明の別の態様によれば、暗号化シードをそれぞれ有する複数の個別にアドレス可能なデータブロック内にデータを記憶する不揮発性データ記憶装置であって、すべての前記ブロック内の前記データが共通暗号化方法によって暗号化されることを特徴とする不揮発性データ記憶装置が提供される。
【0009】
本発明のさらなる態様によれば、暗号化シードをそれぞれ有する複数の個別にアドレス可能なデータブロック内にデータを記憶するデータキャリアであって、すべての前記ブロック内の前記データが共通暗号化方法によって暗号化されることを特徴とするデータキャリアが提供される。
【0010】
前記別の態様又は前記さらなる態様に係る実施形態においては、前記データブロックは前記ブロックの前記データの暗号化に用いられるそれぞれの暗号化シードを含む。
【0011】
さらに別の態様によれば、暗号化シードをそれぞれ有する複数の個別にアドレス可能なデータブロックにデータを記憶するデータキャリア内に記憶されたデータを復号化するように構成されたデータプロセッサであって、すべての前記ブロック内の前記データは共通暗号化方法によって暗号化され、前記データプロセッサは本発明の前記別の態様に係る方法を実行するように構成されていることを特徴とするデータプロセッサが提供される。
【0012】
本発明は、適切なプロセッサで実行されるときに前記別の態様に係る方法を実行するコンピュータプログラムと、当該コンピュータプログラムを搭載するキャリヤとを提供する。
【図面の簡単な説明】
【0013】
【図1】フラッシュメモリのデータ記憶領域の概略図である。
【図2】ブロック暗号化サイファとしてAESを使用する暗号化の暗号ブロック連鎖モードの概略図である。
【図3】本発明を実行する典型的なシステムの概略的ブロック図である。
【図4】図2の暗号化プロセスに対応する復号化プロセスの概略ブロック図である。
【図5】一実施形態に係るIVブロックの一例を示す図である。
【図6】一実施形態に係る非同期的乱数ジェネレータの単純化されたブロック図である。
【図7】典型的なメモリページを示す図である。
【図8】エラー修正データに使用される付加的データの一部を有する典型的メモリページを示す図である。
【図9】一実施形態に係る、暗号化されるべき512バイトのページを示す図である。
【図10】一実施形態に係る、2つのセクタに分割された1024バイトのデータブロックを示す図である。
【図11】一実施形態に係る非同期的乱数ジェネレータの一例のブロック図である。
【発明を実施するための形態】
【0014】
本発明をより理解するために、添付図面を参照して説明する。
【0015】
使用するフラッシュメモリは、例えば数ギガバイトの大記憶容量を有する。フラッシュメモリは消去ブロックに分割されており、その消去ブロックは1回の消去操作で消去され得るメモリの部分である。消去ブロックは、例えば、多数ページの記憶容量を有する。以下に説明するように、1ページは528バイト又はその倍数バイトを有する。
【0016】
本発明の実施例として且つ説明を容易にするために、フラッシュメモリの記憶領域は図1に示されているように複数のセグメント4に分割されている。各セグメントは例えば、1ページ当たり528バイトであってもよく、その内、512バイトはデータの記憶に使用され、残りの16バイトは付加的データのために使用される。以下の図7を参照されたい。
【0017】
本発明の実施例では、各セグメント4内のデータは暗号化されている。図2の実施例では、暗号化に関し公知のCBC(Cipher Block Chaining mode:暗号ブロック連鎖モード)方法が使用されており、当該CBC方法においてはAES(Advanced Encryption Standard)がブロックサイファ暗号化方法として使用されている。
【0018】
セグメント4のデータは、複数のプレーンテキスト部分に分割されており、それら部分の各々が128ビットを有する。第1の128ビットの部分61は排他的論理和(EX−OR:Exclusive−Or)操作81において初期化ベクトル(IV)10と論理的に結合される。AESを使用するブロック暗号化操作はキー12を使用して128ビットを暗号化して、128ビットのサイファテキスト161を生成する。そして、サイファテキストの128ビットがEX−OR操作82において次の128ビットのプレーンテキストと論理的に結合され、且つ同一のキーを使用して暗号化操作142において暗号化されて、当該チェーン(連鎖)の次のステージの別の128ビットのサイファテキストを生成する。当該チェーン(連鎖)における次のステージは同一の方法で作動する。
【0019】
本発明の実施例によれば、データセグメント4は、それぞれの異なるIV(IV10…IV21…IV41)を有する。同じ暗号化プロセスを使用するものの、異なったIVを有するセグメント内のデータが暗号化される。これらIVは、以下で説明するように本発明のいくつかの実施形態に係るフラッシュメモリ内に記憶されている。前記IVは、それぞれのデータセグメント内に記憶されてもよい。
【0020】
図3は、図1と図2を参照して説明したプロセスを実行するシステムの一例を示している。
【0021】
フラッシュメモリ22はインタフェース(I/F)24によってコンピュータに結合されている。例えば、このフラッシュメモリとインタフェースは周知のUSB記憶装置で使用されるものと同じである。例えば、コンピュータはPCであってもよい。暗号化プロセスがコンピュータ26内で実行され、暗号化されたデータがフラッシュメモリ内に記憶される。
【0022】
図3の実施例においては、コンピュータ26は、プログラム記憶装置261、プロセッサ262、非揮発性メモリ263(例えば、ディスクドライブ)を有する。暗号化プロセスをコンピュータ26の非揮発性メモリ263に適用してもよい。コンピュータ26は、PC、PDA、携帯電話又はデータ記憶部及びデータ処理部を有するいかなる他の装置であってもよい。
【0023】
この実施例では、復号化は図4に示されているように暗号化とは逆の手順で行われる。暗号化及び復号化プロセスは、同一のIV及びキーを使用する点において対称的である。この実施例における復号化プロセスは各々のセグメント4に適用される。この実施例では、1つのセグメントのIVが、セグメントから抽出されて、復号化プロセスにおいて使用される。以下に説明するように、IVの一部のみがセグメント内に記憶されてもよく、IVはその記憶された部分から生成される。IVは、メディアシリアルナンバ及び/又は論理セグメントアドレスから生成されてもよい。その際、セグメントで記憶することができる乱数を使用してもよい。
【0024】
本発明の実施例は、適切なプロセッサで動作すると、復号化方法を実行するコンピュータプログラムを含む。このコンピュータプログラムはキャリヤ(信号又は記録媒体)上にあってもよい(但し、これらに限定されない)。
【0025】
以下により詳細に説明するように、他の暗号化方法及び復号化方法を使用してもよい。
【0026】
以下に説明するように、他のサイズのデータセグメントを使用してもよい。
【0027】
以下に、IVを生成する実施例及び他の情報に関して説明する。
【0028】
IV生成
一実施形態では、AES(Advanced Encryption Standard)はデータの改良された暗号化に対していくつかのフィードバックモードを指定する。サイファーフィードバック(CFB:cipher feedback)モード、暗号ブロック連鎖(CBC)モード、及びアウトプットフィードバック(OFB:output feedback)モードの3つのモードは、初期化ベクトル(IV)を用いてデータに対して排他的論理和(XOR:Exclusive OR)操作を実行する。IVは秘密である必要はないが、CBCとCFBに関してそれは予測不可能であるべきである。IV又はIVを生成するシードは乱数であるべきである(本明細書においては、IV及びシードは互換的に使用される)。
【0029】
一実施形態では、IVを生成するのに使用されるシード又はIVは、当該IVが使用されたデータのブロックと共に記憶される。そして、IV又はシードは、データのそれぞれのブロックを復号化するプロセスにおいて使用され得る。一実施形態では、IVは128ビットのデータ又は16バイトの8ビットデータである。例えば、IVが暗号化プロセスにおいて反復されない限り、IVはより小なる乱数から生成され得る。ほとんどすべてのデバイス(パーソナルコンピュータ、家庭用装置、携帯電話等)に使用される記憶装置はセクタサイズとして512バイトを使用しているので、最適性能のために、IVは(先に本明細書においてデータブロックと称された)512バイト毎のデータにおいて固有であることが望ましい。この事により、1024バイト又は2048バイト等のより大なるデータブロックの使用は排除されない。
【0030】
フラッシュメモリは複数のブロックに分割されている(このブロックは、先に説明したデータブロックと異なり、本明細書の以下においては消去ブロックと称される)。フラッシュメモリにおける消去ブロックは、一度消去されて書き直され得る最小量のメモリのことである。例えば、典型的な消去ブロックは256ページから構成されてもよい。消去ブロックに書き込むためには、それはまず消去されて、その後に書き込まれなければならない。
【0031】
ブロックがあまりにも多数のエラーを発生させる場合、データは新たなブロックと、不良としてマークされたブロックとに移行され得る。ブロックがフラッシュのいかなる場所に設けられていたとしても、それは常に論理ナンバを保持する。一実施形態においては、論理ナンバは、その少なくとも一部が使用されて、それぞれのブロックに対してIVの一部を生成する。その結果、IVを反復する可能性が低減される。
【0032】
図5は16バイトのIVブロック100(128ビット)の一例を示している。しかしながら、NANDフラッシュの付加的データ領域内においては、4バイト(又は32ビット)の余地しかない。したがって、この32ビットの乱数から、偶発性を有する128ビットのIVブロックが生成される。一実施形態では、32ビットの乱数は論理ブロックアドレス及び/又は記憶装置の固有のシリアルナンバをそれに加えることができる。
【0033】
媒体がデータと共にIVを記憶する場所(例えば、ハードディスクドライブ)を有しない場合、記憶ユニットのシリアルナンバを伴うこともあるし伴わないこともある。IVは論理ブロックナンバであり、その上、IVのサイズに依存して、記憶ユニットのシリアルナンバを伴うこともあるし伴わないこともある。また、論理ブロックナンバに加えて付加的定数もまた使用され得る。この場合も、また、別の組合せがIVの生成に使用され得る。
【0034】
乱数生成
乱数を生成する1つの手段としては、電源が入れられた(投入された)ときにプリセットされた状態にリセットされないレジスタを含む集積回路を設けることがあげられる。そのため、レジスタの電源が入れられた後に、レジスタは予測不可能な初期のシード値を有する。いくつかの制御装置は同期的設計を有し、これは大抵の回路が電源投入時に同一値に初期化又はプリセットされることを意味している。しかし、レジスタ又はハッシュジェネレータロジックは電源投入時にプリセット値を有しないように予め設計され得る。それは予測不可能な状態で電源投入されるので、偶発性の根源となっている。
【0035】
一例として、図6を参照すると、レジスタ204は、その入力として、CRCジェネレータ又はAES暗号器等の「ハッシュ論理」装置203からの出力を受信する。この論理回路203は、入力としてレジスタからの出力を受信し、且つ例えばカウンタ等の内部事象及びUSBフレームナンバ等の外部事象に基づくナンバを受信する。USBフレームナンバはUSBホストによって生成される擬似的乱数である。このナンバは定期的に更新される。1つの問題として、事象が予測できるかもしれないということがあげられる。しかしながら、集積回路が集積回路のクロックと同期していないポートを介してホストコンピュータに接続されている場合、ホストポートを使用し、内部的に生成されたナンバに非同期なナンバが生成される。内部事象及び外部事象によって生成されたこれら2つのナンバが論理ブロックに与えられると、真の乱数が生成される。
【0036】
図6は係る非同期方式の乱数ジェネレータ200の単純化したブロック図を示している。乱数ジェネレータ200は、ハッシュ論理203と通常の同期レジスタ204とに与える内部乱数スタート値201及び外部乱数スタート値202の両方を使用して、ハッシュ論理にフィードバックを与えている。図6におけるブロック図の論理は、ハードウェアに組み込まれた論理として実装されるか、又はソフトウェア若しくはファームウェアとして実装され得る。
【0037】
IV記憶装置
図7は、528バイトのデータ301又はその倍数バイトのデータを含む(フラッシュメモリページ等の)メモリページ300の例を示している。一実施形態では、ページサイズは512バイトのデータと16バイトの付加的データ302とを記憶するように設計されている。典型的なページサイズは528、2112、4224等である。
【0038】
図8は。メモリページ400の例を示しており、付加的データの一部がエラー修正データ403として用いられる。これは典型的な構成である。なぜならば、フラッシュメモリがランダムエラーの影響を受けやすいからである。残りの付加的データ402はステータスのために使用される。
【0039】
図9は暗号化されるべき528バイトのページ500の実施例を示している。係る場合には、データを復号化する際に使用される迅速なアクセスのためにそのページ内における暗号化に使用されるIV504を記憶し、且つ2個のステータスバイト402のみを有することが望ましい。
【0040】
IVデータの4バイト(32ビット)は4.294.967.296(232)の異なったIV値を与えるであろう。フラッシュメモリはギガバイトのデータを保持できるので、より多数の乱数が、乱数を反復する可能性を低減するのに使用され得る。
【0041】
一実施形態では、図9に示されているように、4バイトの乱数を含むIVは、データブロックの始めに設けられる。これは、512バイトのデータが乱数を用いて暗号化される場合、IVを読み込むと、復号化する必要があるデータに先んじて制御装置がIVを有することができるようになるためである。乱数が例えばデータの最後に設けられた場合、制御装置は全体の512バイトを読み込んで、512バイトを暗号化するプロセス中に使用されたIVに達してから、復号化を開始しなければならないだろう。この手法で、復号化プロセスの間における貴重なサイクル(繰り返し動作)が無駄となるであろう。
【0042】
図10は、2つのセクタ601及び602に分割された1024バイトのデータブロック600を示している。IVを反復する可能性を低減する1つの手法として、各IVを2つのデータブロック又は2つのセクタに関連付けることがあげられる(その結果、ブロックサイズが増大する)。512バイトのデータ603a及び603bはアクセス可能なデータの最小チャンクとして保持されている。8バイトの604a及び604b(64ビット)のIVは264又は18446744073709551616の固有のナンバを生成することができる。
【0043】
いくつかの場合においては、他の割り当てが使用されてもよい。したがって、例えば、いくつかの場合においては、全体のIVが第1のセクタ内で保持され、且つすべてのエラー修正が第2のセクタ内に保持され得る。この場合の利点は複合化がすぐに開始するという点であるが、不利な点は、(第2のセクタが読み込まれるときに)エラーが一旦見出されると、その内のいくつかを再処理する必要がありえるという点である。さらに他の場合では、エラー修正は最初に行われてもよい。その場合、書き込みプロセスが減速するであろうが(よって、二重書込みを実質的に必要とする)、エラーなしで迅速な復号化が可能となるであろう。読出し回数が書込み回数に対してかなりの割合で勝る場合においては、それは興味深い選択であるかもしれない。いくつかの場合においては、読出し対書出しの比率に関して記録をつけてもよく、閾値を一旦越えると、メモリがダイナミック(動的)に再構成されてもよい。
【0044】
先行エラー修正
フラッシュメモリは信頼性に関する問題を有する、すなわち、個々のビットに時としてエラーが生ずる。データが暗号化される場合、エラーが生ずるとデータは復号化することができない。暗号化されない場合、データが不正確となり得る。故障ビットを修正するエラー修正方法を有するのは、一般的である。これら修正方法は1つ以上のエラーを修正できる。一実施形態におけるエラー修正方法は、5バイトのエラーまで検出し、且つ512バイトの空間内の4バイトエラーまで修正することができる。
【0045】
いくつかの場合においては、ある傾向(セクタ内の不良スポットの数が増大するという傾向)に基づいて、セクタ又はブロックが永続的に写像されてもよい(すなわち、新しいブロックにデータを移行させる)ので、大きな(悲惨な)データ損失を防止し又は最小限にとどめることができる。修正可能なエラーに関する情報は付加的な領域内に記憶され、図9に示されているようにその領域においては10バイトが512バイトのデータに対してECC値を記憶している。制御装置は、フラッシュ媒体に書き込みしながら正しいECC値を定め、且つデータを読み返しながら元のECC値をECC値と比較する。
【0046】
その結果、制御装置はエラーがデータに発生したか否かを決定でき、且つECCデータを用いてそれを修正することができる。さらに、制御装置が新しい良い領域にこのデータを写像する修正動作をなすように4バイトのエラーを修正すると、制御装置は発生直前の不良ブロックを示すことができる。
【0047】
一実施形態では、制御装置が不良になる直前のブロックを写像する(すなわち、新しいブロックにデータを移行させる)ために使用され得る利用可能な良好ブロックのトラックを憶えておく。例えば、ホストが128のセクタを読み込む要求をし、且つセクタ3、19、38が4バイトのエラーで修正されたことが見出された場合、制御装置は、データの全128のセクタをホストに移しながら、これら不良になる直前のセクタをFIFO内に保持するであろう。データ転送が完了した後に、ファームウェアはこのFIFOを読み込んで、このブロック内においていくつかのセクタがデータエラーを有すること(つまり、不良化しようとしていることを示している)を見出す。そして、ファームウェアは新しく且つ良好なブロックにセクタの全ブロックを移行させる修正動作を取るだろう。転送が完了すると、それは不良として現在のブロックをマークし、その結果、データ損失を防止することができる。一般に、N個又は場合によってはNよりも少ない数のエラーがあったとき、N個のエラーを修正できる修正方法はブロックをいつ移行させるかを示すのに用いられるであろう。
【0048】
ブートコード暗号化/認証
フラッシュメモリ記憶装置はしばしばいわゆるブートファームウェアを含む。これは、電源が印加されるとフラッシュ制御装置集積回路によってフラッシュメモリからロードされるファームウェアである。装置が製造されるときに、通常このブートファームウェアには書き込みが行われるが、このファームウェアに対するパッチは装置の寿命の間いつでも書き込まれてもよい。このコードが信頼でき且つ暗号化を破壊し得る不良ファームウェアでないことをプロセッサが認証することができるように、このブートデータは暗号化されることが望ましい。
【0049】
いくつかの場合において、以下に説明されるCD領域のホストブート部分にこの方法を適用してもよい。この手法は、ウイルスがホストブートセクションを乗っ取ることを防ぐことができる。
【0050】
装置がAESスタンダードで定義されるようなキーを割り当てられた場合、ブートデータを暗号化し且つ復号化するのにこのキーは使用され得る。しばしば、キーなしで装置が販売され、後にキーが割り当てられる。このようにキー割り当てが後になされる理由は、ユーザがマスターキーの一部であるパスワード保持をできるようにするためである(そうすれば、実質的に、キーは固有のキーとなる)。しかし、製造時点では、ブートコードが有効にされ得ることを保障するのに、マスターキーが必要とされる。ブートファームウェアのみの使用のために、製造時点では、各装置に対して固有キーが生成され得る。制御装置がワンタイムプログラムメモリ(OTP:one−time program)を有する場合、製造時に固有キーが制御装置に記憶され得る。OTPは追記型メモリ(write once memory)と同様であり、このワンタイム型の書込み後には変更できない。
【0051】
キーを変える別の手法としては、フラッシュメモリ内にマスターキーを記憶する手法があるが、装置の電源が投入される度に本発明の一実施形態に係る以下に示す方法を使用してキーを変える手法もある。その方法とは、以下の通り実行される。
【0052】
1. 現在のキーを用いて、ブートコードを復号化し且つクリアなデータをRAMにロードする。
【0053】
2. 後述の方法を使用して新たなマスターキーを生成し、現在のブートブロックを消去し、その新たなマスターキーを用いて暗号化された新たなブートコードを書き込み、この新たなブートブロックを記憶媒体に書き込む。ブートブロックは媒体内であれば、ほぼどこに設けられてもよい。
【0054】
実装実施形態
製品はCD+Publicとして出荷されるであろう。これは次のことを意味する。即ち、記憶装置がPCと接続されると、記憶装置がCDドライブ内に含まれるべき又は含むべきホストのオペレーティングシステムに対してCDドライブになってほしいという要求若しくはCDドライブを含んでほしいという要求を出すことによって、マイコンピュータ(My Computer)ウィンドウ内にCDアイコン及び記憶アイコンを形成する。CD部分には、装置が「保護されるようにする」アプリケーションがあるであろう。先に説明したように、プログラムは起動されるとユーザにパスワードの入力をうながして、マスターキー及びIVを用いて安全なパーティションを暗号化する。
【0055】
図1の説明において先に説明されたように、USBストレージシステムにおいて32ビットの乱数を生成する1つの方法としては、USBフレームナンバ(ミリ秒毎にPC等のUSBホストによって生成される乱数)と、システムクロック毎に増大され且つ予測不可能な乱数の初期値を有する制御装置内の内部カウンタと、を用いることがあげられる。
【0056】
図11は非同期的乱数ジェネレータ700の一例のブロック図を示している。このジェネレータ700は、マルチプレクサ(mux:multiplexer)に与えるフレームナンバ701及び内部カウンタ702の両方と、ハッシュ論理への通常の同期レジスタ及びフィードバックと、を使用している。その通常の同期レジスタ及びフィードバックはCRCジェネレータ704として示されており、乱数705を生成する。それは、ソフトウェア、ハードウェア又はそれらのいかなる組合せにおいても実装することができる。さらに、いくつかの場合においては、CRCジェネレータ704は、電源オン時にリセットされないので、プロセッサが電源投入される毎に不確定な値を有する。
【0057】
実行されるべき1セットの指示としてコンピュータシステムのメモリ内に先に説明されたプロセスが記憶され得る。さらに、先に説明されたプロセスを実行する指示は、磁気ディスク及び光学ディスクを含む機械可読媒体の他の形態に記憶され得る。上述のプロセスは、例えば、ディスクドライブ(コンピュータ可読媒体ドライブ)を介してアクセス可能な磁気ディスク又は光学ディスク等の機械可読媒体に記憶され得る。さらに、指示は、データネットワークを介してプログラムソース(例えば、サーバ)からコンピューターデバイスに、コンパイルされ且つリンクされた形態でダウンロードされ得る。あるいは、先に説明されたプロセスを実行する論理は、別のコンピュータ及び/または機械可読媒体に実装されてもよい。別のコンピュータ及び/または機械可読媒体とは、例えば、個別のハードウェア要素(大規模集積回路(LSI)や特定アプリケーション集積回路(ASIC))及びファームウェア(電気的消去書込み可能な読出し専用メモリ(EEPROM))である。あるいは、先に説明されたプロセスを実行する論理は、電気的、光学的、音響的形態の伝播信号及び他の形態の伝播信号(例えば、伝送波、赤外信号、デジタル信号等)に実装されてもよい。
【特許請求の範囲】
【請求項1】
不揮発性記憶装置における複数の個別にアドレス可能なブロックに対してそれぞれ暗号化シードを与えるステップを含む方法であって、
前記複数の個別にアドレス可能なブロックに記憶されるべきデータが共通暗号化方法によって暗号化されることを特徴とする方法。
【請求項2】
前記記憶装置は携帯型記憶装置であることを特徴とする請求項1に記載の方法。
【請求項3】
前記暗号化シードは初期化ベクトル(IV)であることを特徴とする請求項1又は2に記載の方法。
【請求項4】
前記共通暗号化方法はAES(Advanced Encryption Standard)であることを特徴とする請求項1、2又は3に記載の方法。
【請求項5】
各暗号化シードは、メディアシリアルナンバ及び前記不揮発性記憶装置のそれぞれのブロックに対応する論理ブロックアドレスのうち少なくとも一方を含むことを特徴とする請求項1乃至4のうちいずれか1つに記載の方法。
【請求項6】
前記暗号化シードのそれぞれは、乱数と、前記不揮発性記憶装置の前記ブロックのそれぞれに対応する論理ブロックアドレス及び前記記憶装置のメディアシリアルナンバのうちの1つ以上と、を含むことを特徴とする請求項1乃至4のいずれか1つに記載の方法。
【請求項7】
前記記憶装置の前記ブロックのそれぞれにおいて前記暗号化シードのそれぞれの少なくとも一部を記憶するステップを含むことを特徴とする請求項に記載の方法。
【請求項8】
前記記憶するステップは、前記不揮発性記憶装置の前記ブロックのそれぞれの少なくとも第1のアドレス可能なバイトにおいて、前記暗号化シードのそれぞれの少なくとも一部を記憶するステップをさらに含むことを特徴とする請求項7に記載の方法。
【請求項9】
前記ブロックの少なくとも1つ以上が528バイト又は528バイトの倍数のブロックであることを特徴とする請求項1乃至8のいずれか1つに記載された方法。
【請求項10】
前記記憶装置はフラッシュメモリ記憶装置を含むことを特徴とする請求項1乃至9のいずれか1つに記載の方法。
【請求項11】
前記記憶装置がハードディスクドライブであり、
前記暗号化シードは、定数と、前記不揮発性記憶装置の前記ブロックのそれぞれに対応する論理ブロックアドレス及び前記記憶装置のメディアシリアルナンバのうちの1つ以上と、から決定されることを特徴とする請求項1乃至6のいずれか1つに記載の方法。
【請求項12】
不揮発性記憶装置の2つ以上の個別にアドレス可能なブロックの複数のセットに対してそれぞれ暗号化シードを与えるステップを含む方法であって、
前記複数の個別にアドレス可能なブロックに記憶されるべきデータが共通暗号化方法によって暗号化されることを特徴とする方法。
【請求項13】
各セットの前記2つ以上の個別にアドレス可能なブロックが連続した論理アドレスを有することを特徴とする請求項12に記載の方法。
【請求項14】
各暗号化シードは、メディアシリアルナンバ及び1セットの前記2つのブロックの少なくとも1つに対応する論理ブロックアドレスのうち少なくとも一方を含むことを特徴とする請求項12又は13に記載の方法。
【請求項15】
前記記憶装置はハードディスクドライブであり、前記暗号化シードは前記ブロックのそれぞれには記憶されず、前記暗号化シードは定数をさらに含むことを特徴とする請求項14に記載の方法。
【請求項16】
前記暗号化シードは乱数をさらに含み、
前記方法は、前記不揮発性記憶装置の2つ以上の個別にアドレス可能なブロックの前記セットのそれぞれの第1のブロックにおいて乱数を記憶するステップをさらに含むことを特徴とする請求項14に記載の方法。
【請求項17】
各暗号化シードは乱数をさらに含み、
前記方法は、2つ以上の個別にアドレス可能なブロックのセットのそれぞれの第1のブロックにおいて前記乱数の少なくとも一部を各シードに対して記憶し、且つ2つ以上の個別にアドレス可能なブロックの前記セットのそれぞれの第2のブロックにおいて前記乱数の少なくとも一部を各シードに対して記憶するステップをさらに含むことを特徴とする請求項14に記載の方法。
【請求項18】
前記記憶装置はフラッシュ記憶装置であることを特徴とする請求項17に記載の方法。
【請求項19】
機械可読媒体であって、当該機械可読媒体に記憶された1セットの指示が実行されたきに請求項1乃至18のうちいずれか1つに記載の方法を実行する媒体。
【請求項20】
適切なプロセッサ上で実行されるときに請求項1乃至19のいずれか1つに記載の方法を実行するコンピュータプログラム。
【請求項21】
請求項20に記載のコンピュータプログラムを搭載するキャリヤ。
【請求項22】
コンピュータ可読媒体である請求項21に記載のキャリヤ。
【請求項23】
電気的キャリヤである請求項21に記載のキャリヤ。
【請求項24】
請求項23に記載の前記キャリヤを生成するように構成された装置。
【請求項25】
データプロセッサと、
請求項20に記載の前記コンピュータプログラムを記憶するプログラム記憶装置と、
不揮発性記憶装置と通信するインタフェースとを含むデータ処理装置であって、
前記プロセッサは、前記不揮発性記憶装置の個別にアドレス可能なブロックにおいて記憶されるべきデータを暗号化し且つ前記不揮発性記憶装置の前記個別にアドレス可能なブロックにおいて当該暗号化されたデータを記憶する前記コンピュータプログラムの制御の下で動作可能であることを特徴とするデータ処理装置。
【請求項26】
データプロセッサと、
請求項20に記載の前記コンピュータプログラムを記憶するプログラム記憶装置と、
不揮発性記憶装置とを含むデータ処理装置であって、
前記プロセッサは、前記不揮発性記憶装置の個別にアドレス可能なブロックにおいて記憶されるべきデータを暗号化し且つ前記不揮発性記憶装置の前記個別にアドレス可能なブロックにおいて当該暗号化されたデータを記憶する前記コンピュータプログラムの制御の下で動作可能であることを特徴とするデータ処理装置。
【請求項27】
不揮発性記憶装置のデータブロック内に記憶されたデータを復号化する方法であって、
前記不揮発性記憶装置は暗号化シードをそれぞれ有する複数の個別にアドレス可能なデータブロックを含み、すべての前記ブロック内の前記データは共通暗号化方法により暗号化され、
前記方法は、
前記ブロックの所望の1つにアクセスするステップと、
前記ブロックの前記暗号化シードから復号化コードを生成するステップと、
前記ブロックの当該生成された復号化コードを用いて前記所望のブロックの1つに関するデータを復号化するステップとを含むことを特徴とする復号化方法。
【請求項28】
前記暗号化シードは前記データブロック内で記憶されることを特徴とする請求項27に記載の復号化方法。
【請求項29】
メディアシリアルナンバ及び前記所望のブロックの論理ブロックアドレスのうち少なくとも一方から前記復号化コードを生成するステップを含む請求項27に記載の復号化方法。
【請求項30】
前記ブロックで記憶される乱数と共に、メディアシリアルナンバ及び前記所望のブロックの論理ブロックアドレスのうち少なくとも一方を用いて前記復号化コードを生成するステップを含む請求項27又は28に記載の復号化方法。
【請求項31】
前記暗号コードは初期化ベクトルであることを特徴とする請求項27、28、29又は30に記載の復号化方法。
【請求項32】
前記暗号化シードは前記復号化コードであることを特徴とする請求項27、28、29、30又は31に記載の復号化方法。
【請求項33】
暗号化シードをそれぞれ有する複数の個別にアドレス可能なデータブロック内にデータを記憶する不揮発性データ記憶装置であって、
すべての前記ブロック内の前記データが共通暗号化方法によって暗号化されることを特徴とする不揮発性データ記憶装置。
【請求項34】
暗号化シードをそれぞれ有する複数の個別にアドレス可能なデータブロック内にデータを記憶するデータキャリアであって、
すべての前記ブロック内の前記データが共通暗号化方法によって暗号化されることを特徴とするデータキャリア。
【請求項35】
前記データブロックは前記ブロックの前記データの暗号化に用いられるそれぞれの暗号化シードを含むことを特徴とする請求項33又は34に記載のキャリヤ。
【請求項36】
前記暗号化シードは初期化ベクトル又はその一部分であることを特徴とする請求項35に記載のキャリヤ。
【請求項37】
暗号化シードをそれぞれ有する複数の個別にアドレス可能なデータブロックにデータを記憶するデータキャリア内に記憶されたデータを復号化するように構成されたデータプロセッサであって、
すべての前記ブロック内の前記データは共通暗号化方法によって暗号化され、
前記データプロセッサは請求項27乃至32のいずれか1つに記載の方法を実行するように構成されていることを特徴とするデータプロセッサ。
【請求項38】
適切なプロセッサで実行されるときに、請求項27乃至32のいずれか1つに記載の方法を実行するコンピュータプログラム。
【請求項39】
請求項38に記載のコンピュータプログラムを搭載するキャリヤ。
【請求項1】
不揮発性記憶装置における複数の個別にアドレス可能なブロックに対してそれぞれ暗号化シードを与えるステップを含む方法であって、
前記複数の個別にアドレス可能なブロックに記憶されるべきデータが共通暗号化方法によって暗号化されることを特徴とする方法。
【請求項2】
前記記憶装置は携帯型記憶装置であることを特徴とする請求項1に記載の方法。
【請求項3】
前記暗号化シードは初期化ベクトル(IV)であることを特徴とする請求項1又は2に記載の方法。
【請求項4】
前記共通暗号化方法はAES(Advanced Encryption Standard)であることを特徴とする請求項1、2又は3に記載の方法。
【請求項5】
各暗号化シードは、メディアシリアルナンバ及び前記不揮発性記憶装置のそれぞれのブロックに対応する論理ブロックアドレスのうち少なくとも一方を含むことを特徴とする請求項1乃至4のうちいずれか1つに記載の方法。
【請求項6】
前記暗号化シードのそれぞれは、乱数と、前記不揮発性記憶装置の前記ブロックのそれぞれに対応する論理ブロックアドレス及び前記記憶装置のメディアシリアルナンバのうちの1つ以上と、を含むことを特徴とする請求項1乃至4のいずれか1つに記載の方法。
【請求項7】
前記記憶装置の前記ブロックのそれぞれにおいて前記暗号化シードのそれぞれの少なくとも一部を記憶するステップを含むことを特徴とする請求項に記載の方法。
【請求項8】
前記記憶するステップは、前記不揮発性記憶装置の前記ブロックのそれぞれの少なくとも第1のアドレス可能なバイトにおいて、前記暗号化シードのそれぞれの少なくとも一部を記憶するステップをさらに含むことを特徴とする請求項7に記載の方法。
【請求項9】
前記ブロックの少なくとも1つ以上が528バイト又は528バイトの倍数のブロックであることを特徴とする請求項1乃至8のいずれか1つに記載された方法。
【請求項10】
前記記憶装置はフラッシュメモリ記憶装置を含むことを特徴とする請求項1乃至9のいずれか1つに記載の方法。
【請求項11】
前記記憶装置がハードディスクドライブであり、
前記暗号化シードは、定数と、前記不揮発性記憶装置の前記ブロックのそれぞれに対応する論理ブロックアドレス及び前記記憶装置のメディアシリアルナンバのうちの1つ以上と、から決定されることを特徴とする請求項1乃至6のいずれか1つに記載の方法。
【請求項12】
不揮発性記憶装置の2つ以上の個別にアドレス可能なブロックの複数のセットに対してそれぞれ暗号化シードを与えるステップを含む方法であって、
前記複数の個別にアドレス可能なブロックに記憶されるべきデータが共通暗号化方法によって暗号化されることを特徴とする方法。
【請求項13】
各セットの前記2つ以上の個別にアドレス可能なブロックが連続した論理アドレスを有することを特徴とする請求項12に記載の方法。
【請求項14】
各暗号化シードは、メディアシリアルナンバ及び1セットの前記2つのブロックの少なくとも1つに対応する論理ブロックアドレスのうち少なくとも一方を含むことを特徴とする請求項12又は13に記載の方法。
【請求項15】
前記記憶装置はハードディスクドライブであり、前記暗号化シードは前記ブロックのそれぞれには記憶されず、前記暗号化シードは定数をさらに含むことを特徴とする請求項14に記載の方法。
【請求項16】
前記暗号化シードは乱数をさらに含み、
前記方法は、前記不揮発性記憶装置の2つ以上の個別にアドレス可能なブロックの前記セットのそれぞれの第1のブロックにおいて乱数を記憶するステップをさらに含むことを特徴とする請求項14に記載の方法。
【請求項17】
各暗号化シードは乱数をさらに含み、
前記方法は、2つ以上の個別にアドレス可能なブロックのセットのそれぞれの第1のブロックにおいて前記乱数の少なくとも一部を各シードに対して記憶し、且つ2つ以上の個別にアドレス可能なブロックの前記セットのそれぞれの第2のブロックにおいて前記乱数の少なくとも一部を各シードに対して記憶するステップをさらに含むことを特徴とする請求項14に記載の方法。
【請求項18】
前記記憶装置はフラッシュ記憶装置であることを特徴とする請求項17に記載の方法。
【請求項19】
機械可読媒体であって、当該機械可読媒体に記憶された1セットの指示が実行されたきに請求項1乃至18のうちいずれか1つに記載の方法を実行する媒体。
【請求項20】
適切なプロセッサ上で実行されるときに請求項1乃至19のいずれか1つに記載の方法を実行するコンピュータプログラム。
【請求項21】
請求項20に記載のコンピュータプログラムを搭載するキャリヤ。
【請求項22】
コンピュータ可読媒体である請求項21に記載のキャリヤ。
【請求項23】
電気的キャリヤである請求項21に記載のキャリヤ。
【請求項24】
請求項23に記載の前記キャリヤを生成するように構成された装置。
【請求項25】
データプロセッサと、
請求項20に記載の前記コンピュータプログラムを記憶するプログラム記憶装置と、
不揮発性記憶装置と通信するインタフェースとを含むデータ処理装置であって、
前記プロセッサは、前記不揮発性記憶装置の個別にアドレス可能なブロックにおいて記憶されるべきデータを暗号化し且つ前記不揮発性記憶装置の前記個別にアドレス可能なブロックにおいて当該暗号化されたデータを記憶する前記コンピュータプログラムの制御の下で動作可能であることを特徴とするデータ処理装置。
【請求項26】
データプロセッサと、
請求項20に記載の前記コンピュータプログラムを記憶するプログラム記憶装置と、
不揮発性記憶装置とを含むデータ処理装置であって、
前記プロセッサは、前記不揮発性記憶装置の個別にアドレス可能なブロックにおいて記憶されるべきデータを暗号化し且つ前記不揮発性記憶装置の前記個別にアドレス可能なブロックにおいて当該暗号化されたデータを記憶する前記コンピュータプログラムの制御の下で動作可能であることを特徴とするデータ処理装置。
【請求項27】
不揮発性記憶装置のデータブロック内に記憶されたデータを復号化する方法であって、
前記不揮発性記憶装置は暗号化シードをそれぞれ有する複数の個別にアドレス可能なデータブロックを含み、すべての前記ブロック内の前記データは共通暗号化方法により暗号化され、
前記方法は、
前記ブロックの所望の1つにアクセスするステップと、
前記ブロックの前記暗号化シードから復号化コードを生成するステップと、
前記ブロックの当該生成された復号化コードを用いて前記所望のブロックの1つに関するデータを復号化するステップとを含むことを特徴とする復号化方法。
【請求項28】
前記暗号化シードは前記データブロック内で記憶されることを特徴とする請求項27に記載の復号化方法。
【請求項29】
メディアシリアルナンバ及び前記所望のブロックの論理ブロックアドレスのうち少なくとも一方から前記復号化コードを生成するステップを含む請求項27に記載の復号化方法。
【請求項30】
前記ブロックで記憶される乱数と共に、メディアシリアルナンバ及び前記所望のブロックの論理ブロックアドレスのうち少なくとも一方を用いて前記復号化コードを生成するステップを含む請求項27又は28に記載の復号化方法。
【請求項31】
前記暗号コードは初期化ベクトルであることを特徴とする請求項27、28、29又は30に記載の復号化方法。
【請求項32】
前記暗号化シードは前記復号化コードであることを特徴とする請求項27、28、29、30又は31に記載の復号化方法。
【請求項33】
暗号化シードをそれぞれ有する複数の個別にアドレス可能なデータブロック内にデータを記憶する不揮発性データ記憶装置であって、
すべての前記ブロック内の前記データが共通暗号化方法によって暗号化されることを特徴とする不揮発性データ記憶装置。
【請求項34】
暗号化シードをそれぞれ有する複数の個別にアドレス可能なデータブロック内にデータを記憶するデータキャリアであって、
すべての前記ブロック内の前記データが共通暗号化方法によって暗号化されることを特徴とするデータキャリア。
【請求項35】
前記データブロックは前記ブロックの前記データの暗号化に用いられるそれぞれの暗号化シードを含むことを特徴とする請求項33又は34に記載のキャリヤ。
【請求項36】
前記暗号化シードは初期化ベクトル又はその一部分であることを特徴とする請求項35に記載のキャリヤ。
【請求項37】
暗号化シードをそれぞれ有する複数の個別にアドレス可能なデータブロックにデータを記憶するデータキャリア内に記憶されたデータを復号化するように構成されたデータプロセッサであって、
すべての前記ブロック内の前記データは共通暗号化方法によって暗号化され、
前記データプロセッサは請求項27乃至32のいずれか1つに記載の方法を実行するように構成されていることを特徴とするデータプロセッサ。
【請求項38】
適切なプロセッサで実行されるときに、請求項27乃至32のいずれか1つに記載の方法を実行するコンピュータプログラム。
【請求項39】
請求項38に記載のコンピュータプログラムを搭載するキャリヤ。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【公表番号】特表2010−509690(P2010−509690A)
【公表日】平成22年3月25日(2010.3.25)
【国際特許分類】
【出願番号】特願2009−536532(P2009−536532)
【出願日】平成19年11月12日(2007.11.12)
【国際出願番号】PCT/US2007/084446
【国際公開番号】WO2008/063965
【国際公開日】平成20年5月29日(2008.5.29)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.コンパクトフラッシュ
【出願人】(508148312)エムシーエム ポートフォリオ リミテッド ライアビリティ カンパニー (3)
【Fターム(参考)】
【公表日】平成22年3月25日(2010.3.25)
【国際特許分類】
【出願日】平成19年11月12日(2007.11.12)
【国際出願番号】PCT/US2007/084446
【国際公開番号】WO2008/063965
【国際公開日】平成20年5月29日(2008.5.29)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.コンパクトフラッシュ
【出願人】(508148312)エムシーエム ポートフォリオ リミテッド ライアビリティ カンパニー (3)
【Fターム(参考)】
[ Back to top ]