(57)【要約】  本発明の方法は、不揮発性記憶装置（２）の複数の個別にアドレス可能なブロック（４）の各々に対して個別の暗号化シード（ＩＶ）を与えるステップを含む。共通暗号化方法により、複数の個別のアドレス可能なブロックに記憶されるべきデータを暗号化する。一実施形態では、前記記憶装置は携帯型記憶装置である。一実施形態では、暗号化シードは初期化ベクトル（ＩＶ）である。一実施形態では、暗号化シードは、メディアシリアルナンバ及び不揮発性記憶装置の前記ブロックのそれぞれに対応する論理ブロックアドレスのうち少なくとも一方を含む。代替実施形態では、本発明の方法は記憶装置のブロックのそれぞれにおいて不揮発性記憶装置の個別のブロックの個別の暗号化シードのうち少なくとも一部を記憶するステップをさらに含む。
2010509690.tif 000002
【特許請求の範囲】
【請求項１】
不揮発性記憶装置における複数の個別にアドレス可能なブロックに対してそれぞれ暗号化シードを与えるステップを含む方法であって、
前記複数の個別にアドレス可能なブロックに記憶されるべきデータが共通暗号化方法によって暗号化されることを特徴とする方法。
【請求項２】
前記記憶装置は携帯型記憶装置であることを特徴とする請求項１に記載の方法。
【請求項３】
前記暗号化シードは初期化ベクトル（ＩＶ）であることを特徴とする請求項１又は２に記載の方法。
【請求項４】
前記共通暗号化方法はＡＥＳ（Ａｄｖａｎｃｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）であることを特徴とする請求項１、２又は３に記載の方法。
【請求項５】
各暗号化シードは、メディアシリアルナンバ及び前記不揮発性記憶装置のそれぞれのブロックに対応する論理ブロックアドレスのうち少なくとも一方を含むことを特徴とする請求項１乃至４のうちいずれか１つに記載の方法。
【請求項６】
前記暗号化シードのそれぞれは、乱数と、前記不揮発性記憶装置の前記ブロックのそれぞれに対応する論理ブロックアドレス及び前記記憶装置のメディアシリアルナンバのうちの１つ以上と、を含むことを特徴とする請求項１乃至４のいずれか１つに記載の方法。
【請求項７】
前記記憶装置の前記ブロックのそれぞれにおいて前記暗号化シードのそれぞれの少なくとも一部を記憶するステップを含むことを特徴とする請求項に記載の方法。
【請求項８】
前記記憶するステップは、前記不揮発性記憶装置の前記ブロックのそれぞれの少なくとも第１のアドレス可能なバイトにおいて、前記暗号化シードのそれぞれの少なくとも一部を記憶するステップをさらに含むことを特徴とする請求項７に記載の方法。
【請求項９】
前記ブロックの少なくとも１つ以上が５２８バイト又は５２８バイトの倍数のブロックであることを特徴とする請求項１乃至８のいずれか１つに記載された方法。
【請求項１０】
前記記憶装置はフラッシュメモリ記憶装置を含むことを特徴とする請求項１乃至９のいずれか１つに記載の方法。
【請求項１１】
前記記憶装置がハードディスクドライブであり、
前記暗号化シードは、定数と、前記不揮発性記憶装置の前記ブロックのそれぞれに対応する論理ブロックアドレス及び前記記憶装置のメディアシリアルナンバのうちの１つ以上と、から決定されることを特徴とする請求項１乃至６のいずれか１つに記載の方法。
【請求項１２】
不揮発性記憶装置の２つ以上の個別にアドレス可能なブロックの複数のセットに対してそれぞれ暗号化シードを与えるステップを含む方法であって、
前記複数の個別にアドレス可能なブロックに記憶されるべきデータが共通暗号化方法によって暗号化されることを特徴とする方法。
【請求項１３】
各セットの前記２つ以上の個別にアドレス可能なブロックが連続した論理アドレスを有することを特徴とする請求項１２に記載の方法。
【請求項１４】
各暗号化シードは、メディアシリアルナンバ及び１セットの前記２つのブロックの少なくとも１つに対応する論理ブロックアドレスのうち少なくとも一方を含むことを特徴とする請求項１２又は１３に記載の方法。
【請求項１５】
前記記憶装置はハードディスクドライブであり、前記暗号化シードは前記ブロックのそれぞれには記憶されず、前記暗号化シードは定数をさらに含むことを特徴とする請求項１４に記載の方法。
【請求項１６】
前記暗号化シードは乱数をさらに含み、
前記方法は、前記不揮発性記憶装置の２つ以上の個別にアドレス可能なブロックの前記セットのそれぞれの第１のブロックにおいて乱数を記憶するステップをさらに含むことを特徴とする請求項１４に記載の方法。
【請求項１７】
各暗号化シードは乱数をさらに含み、
前記方法は、２つ以上の個別にアドレス可能なブロックのセットのそれぞれの第１のブロックにおいて前記乱数の少なくとも一部を各シードに対して記憶し、且つ２つ以上の個別にアドレス可能なブロックの前記セットのそれぞれの第２のブロックにおいて前記乱数の少なくとも一部を各シードに対して記憶するステップをさらに含むことを特徴とする請求項１４に記載の方法。
【請求項１８】
前記記憶装置はフラッシュ記憶装置であることを特徴とする請求項１７に記載の方法。
【請求項１９】
機械可読媒体であって、当該機械可読媒体に記憶された１セットの指示が実行されたきに請求項１乃至１８のうちいずれか１つに記載の方法を実行する媒体。
【請求項２０】
適切なプロセッサ上で実行されるときに請求項１乃至１９のいずれか１つに記載の方法を実行するコンピュータプログラム。
【請求項２１】
請求項２０に記載のコンピュータプログラムを搭載するキャリヤ。
【請求項２２】
コンピュータ可読媒体である請求項２１に記載のキャリヤ。
【請求項２３】
電気的キャリヤである請求項２１に記載のキャリヤ。
【請求項２４】
請求項２３に記載の前記キャリヤを生成するように構成された装置。
【請求項２５】
データプロセッサと、
請求項２０に記載の前記コンピュータプログラムを記憶するプログラム記憶装置と、
不揮発性記憶装置と通信するインタフェースとを含むデータ処理装置であって、
前記プロセッサは、前記不揮発性記憶装置の個別にアドレス可能なブロックにおいて記憶されるべきデータを暗号化し且つ前記不揮発性記憶装置の前記個別にアドレス可能なブロックにおいて当該暗号化されたデータを記憶する前記コンピュータプログラムの制御の下で動作可能であることを特徴とするデータ処理装置。
【請求項２６】
データプロセッサと、
請求項２０に記載の前記コンピュータプログラムを記憶するプログラム記憶装置と、
不揮発性記憶装置とを含むデータ処理装置であって、
前記プロセッサは、前記不揮発性記憶装置の個別にアドレス可能なブロックにおいて記憶されるべきデータを暗号化し且つ前記不揮発性記憶装置の前記個別にアドレス可能なブロックにおいて当該暗号化されたデータを記憶する前記コンピュータプログラムの制御の下で動作可能であることを特徴とするデータ処理装置。
【請求項２７】
不揮発性記憶装置のデータブロック内に記憶されたデータを復号化する方法であって、
前記不揮発性記憶装置は暗号化シードをそれぞれ有する複数の個別にアドレス可能なデータブロックを含み、すべての前記ブロック内の前記データは共通暗号化方法により暗号化され、
前記方法は、
前記ブロックの所望の１つにアクセスするステップと、
前記ブロックの前記暗号化シードから復号化コードを生成するステップと、
前記ブロックの当該生成された復号化コードを用いて前記所望のブロックの１つに関するデータを復号化するステップとを含むことを特徴とする復号化方法。
【請求項２８】
前記暗号化シードは前記データブロック内で記憶されることを特徴とする請求項２７に記載の復号化方法。
【請求項２９】
メディアシリアルナンバ及び前記所望のブロックの論理ブロックアドレスのうち少なくとも一方から前記復号化コードを生成するステップを含む請求項２７に記載の復号化方法。
【請求項３０】
前記ブロックで記憶される乱数と共に、メディアシリアルナンバ及び前記所望のブロックの論理ブロックアドレスのうち少なくとも一方を用いて前記復号化コードを生成するステップを含む請求項２７又は２８に記載の復号化方法。
【請求項３１】
前記暗号コードは初期化ベクトルであることを特徴とする請求項２７、２８、２９又は３０に記載の復号化方法。
【請求項３２】
前記暗号化シードは前記復号化コードであることを特徴とする請求項２７、２８、２９、３０又は３１に記載の復号化方法。
【請求項３３】
暗号化シードをそれぞれ有する複数の個別にアドレス可能なデータブロック内にデータを記憶する不揮発性データ記憶装置であって、
すべての前記ブロック内の前記データが共通暗号化方法によって暗号化されることを特徴とする不揮発性データ記憶装置。
【請求項３４】
暗号化シードをそれぞれ有する複数の個別にアドレス可能なデータブロック内にデータを記憶するデータキャリアであって、
すべての前記ブロック内の前記データが共通暗号化方法によって暗号化されることを特徴とするデータキャリア。
【請求項３５】
前記データブロックは前記ブロックの前記データの暗号化に用いられるそれぞれの暗号化シードを含むことを特徴とする請求項３３又は３４に記載のキャリヤ。
【請求項３６】
前記暗号化シードは初期化ベクトル又はその一部分であることを特徴とする請求項３５に記載のキャリヤ。
【請求項３７】
暗号化シードをそれぞれ有する複数の個別にアドレス可能なデータブロックにデータを記憶するデータキャリア内に記憶されたデータを復号化するように構成されたデータプロセッサであって、
すべての前記ブロック内の前記データは共通暗号化方法によって暗号化され、
前記データプロセッサは請求項２７乃至３２のいずれか１つに記載の方法を実行するように構成されていることを特徴とするデータプロセッサ。
【請求項３８】
適切なプロセッサで実行されるときに、請求項２７乃至３２のいずれか１つに記載の方法を実行するコンピュータプログラム。
【請求項３９】
請求項３８に記載のコンピュータプログラムを搭載するキャリヤ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は不揮発性記憶装置のセキュリティに関する。
【背景技術】
【０００２】
携帯型デジタル記憶装置が普及しつつある。これら装置はフラッシュメモリやハードディスク等のソリッドステートの記憶装置を含んでいる。この普及はコンパクトフラッシュ、セキュアデジタルカード、メモリースティックＰＲＯ、マルチメディアカード、フラッシュドライブ、それらの改良型等の主なフラッシュメディアにまで広がっている。これら装置は容易にギガバイトのデータを記憶することができ、その重量は数グラムであって、その大きさはクレジットカードよりも大きくない。これら装置に関する問題としては、紛失し易いことがあげられる。多くの人々が今日、大量の重要データを記憶した装置をポケットに入れたまま携行している。非常に重要なこととして、このようなデータは所有者だけが読めるように暗号化されていなくてはならないことがあげられる。
【０００３】
装置に対する読み書き速度に及ぼす影響を最小限にとどめ、且つ付加的ハードウェアにかかる経費を最小限にとどめて、不揮発性記憶装置、例えば、携帯型デジタル記憶装置内のデータを保護する暗号化方式を使用するシステムと方法が必要とされている。
【発明の概要】
【０００４】
本発明によれば、不揮発性記憶装置における複数の個別にアドレス可能なブロックに対してそれぞれ暗号化シードを与えるステップを含む方法であって、共通暗号化方法によって前記複数の個別にアドレス可能なブロックに記憶されるべきデータが暗号化されることを特徴とする方法が提供される。一実施形態においては、前記記憶装置は携帯型記憶装置である。一実施形態においては、前記暗号化シードは初期化ベクトル（ＩＶ）である。一実施形態においては、各暗号化シードは、メディアシリアルナンバ及び前記不揮発性記憶装置のそれぞれのブロックに対応する論理ブロックアドレスのうち少なくとも一方を含む。代替実施形態においては、当該方法は、前記不揮発性記憶装置の前記個別のブロックのそれぞれにおいて不揮発性記憶装置の個別ブロックの個別の暗号化シードの少なくとも一部を記憶するステップをさらに含む。一実施形態においては、当該方法は、システム上で実行することができ、記憶装置のセキュリティを確保する。
【０００５】
共通暗号化方法として利用される多くの暗号化手法がある。一例がＡＥＳ（Ａｄｖａｎｃｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）である。
【０００６】
本発明の別の態様によれば、不揮発性記憶装置のデータブロック内に記憶されたデータを復号化する方法であって、前記不揮発性記憶装置は暗号化シードのそれぞれを有する複数の個別にアドレス可能なデータブロックを含み、すべての前記ブロック内の前記データは共通暗号化方法により暗号化され、前記復号化方法は、前記ブロックの所望の１つにアクセスするステップと、そのブロックの前記暗号化シードから復号化コードを生成するステップと、そのブロックの当該生成された復号化コードを用いて前記所望のブロックの１つに関するデータを復号化するステップとを含む。
【０００７】
一実施形態においては、前記暗号化シードは前記データブロックに記憶される。別の実施形態は、メディアシリアルナンバ及び前記所望のブロックの論理ブロックアドレスのうち少なくとも一方から前記復号化コードを生成するステップを含む。さらに別の実施形態は前記ブロックに記憶されている乱数と共に、メディアシリアルナンバ及び前記所望のブロックの論理ブロックアドレスのうち少なくとも一方を用いて前記復号化コードを生成するステップを含む。前記暗号化シードは前記復号化コードであってもよく、前記復号化コードは初期化ベクトルであってもよい。
【０００８】
本発明の別の態様によれば、暗号化シードをそれぞれ有する複数の個別にアドレス可能なデータブロック内にデータを記憶する不揮発性データ記憶装置であって、すべての前記ブロック内の前記データが共通暗号化方法によって暗号化されることを特徴とする不揮発性データ記憶装置が提供される。
【０００９】
本発明のさらなる態様によれば、暗号化シードをそれぞれ有する複数の個別にアドレス可能なデータブロック内にデータを記憶するデータキャリアであって、すべての前記ブロック内の前記データが共通暗号化方法によって暗号化されることを特徴とするデータキャリアが提供される。
【００１０】
前記別の態様又は前記さらなる態様に係る実施形態においては、前記データブロックは前記ブロックの前記データの暗号化に用いられるそれぞれの暗号化シードを含む。
【００１１】
さらに別の態様によれば、暗号化シードをそれぞれ有する複数の個別にアドレス可能なデータブロックにデータを記憶するデータキャリア内に記憶されたデータを復号化するように構成されたデータプロセッサであって、すべての前記ブロック内の前記データは共通暗号化方法によって暗号化され、前記データプロセッサは本発明の前記別の態様に係る方法を実行するように構成されていることを特徴とするデータプロセッサが提供される。
【００１２】
本発明は、適切なプロセッサで実行されるときに前記別の態様に係る方法を実行するコンピュータプログラムと、当該コンピュータプログラムを搭載するキャリヤとを提供する。
【図面の簡単な説明】
【００１３】
【図１】フラッシュメモリのデータ記憶領域の概略図である。
【図２】ブロック暗号化サイファとしてＡＥＳを使用する暗号化の暗号ブロック連鎖モードの概略図である。
【図３】本発明を実行する典型的なシステムの概略的ブロック図である。
【図４】図２の暗号化プロセスに対応する復号化プロセスの概略ブロック図である。
【図５】一実施形態に係るＩＶブロックの一例を示す図である。
【図６】一実施形態に係る非同期的乱数ジェネレータの単純化されたブロック図である。
【図７】典型的なメモリページを示す図である。
【図８】エラー修正データに使用される付加的データの一部を有する典型的メモリページを示す図である。
【図９】一実施形態に係る、暗号化されるべき５１２バイトのページを示す図である。
【図１０】一実施形態に係る、２つのセクタに分割された１０２４バイトのデータブロックを示す図である。
【図１１】一実施形態に係る非同期的乱数ジェネレータの一例のブロック図である。
【発明を実施するための形態】
【００１４】
本発明をより理解するために、添付図面を参照して説明する。
【００１５】
使用するフラッシュメモリは、例えば数ギガバイトの大記憶容量を有する。フラッシュメモリは消去ブロックに分割されており、その消去ブロックは１回の消去操作で消去され得るメモリの部分である。消去ブロックは、例えば、多数ページの記憶容量を有する。以下に説明するように、１ページは５２８バイト又はその倍数バイトを有する。
【００１６】
本発明の実施例として且つ説明を容易にするために、フラッシュメモリの記憶領域は図１に示されているように複数のセグメント４に分割されている。各セグメントは例えば、１ページ当たり５２８バイトであってもよく、その内、５１２バイトはデータの記憶に使用され、残りの１６バイトは付加的データのために使用される。以下の図７を参照されたい。
【００１７】
本発明の実施例では、各セグメント４内のデータは暗号化されている。図２の実施例では、暗号化に関し公知のＣＢＣ（Ｃｉｐｈｅｒ  Ｂｌｏｃｋ  Ｃｈａｉｎｉｎｇ  ｍｏｄｅ：暗号ブロック連鎖モード）方法が使用されており、当該ＣＢＣ方法においてはＡＥＳ（Ａｄｖａｎｃｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）がブロックサイファ暗号化方法として使用されている。
【００１８】
セグメント４のデータは、複数のプレーンテキスト部分に分割されており、それら部分の各々が１２８ビットを有する。第１の１２８ビットの部分６１は排他的論理和（ＥＸ−ＯＲ：Ｅｘｃｌｕｓｉｖｅ−Ｏｒ）操作８１において初期化ベクトル（ＩＶ）１０と論理的に結合される。ＡＥＳを使用するブロック暗号化操作はキー１２を使用して１２８ビットを暗号化して、１２８ビットのサイファテキスト１６１を生成する。そして、サイファテキストの１２８ビットがＥＸ−ＯＲ操作８２において次の１２８ビットのプレーンテキストと論理的に結合され、且つ同一のキーを使用して暗号化操作１４２において暗号化されて、当該チェーン（連鎖）の次のステージの別の１２８ビットのサイファテキストを生成する。当該チェーン（連鎖）における次のステージは同一の方法で作動する。
【００１９】
本発明の実施例によれば、データセグメント４は、それぞれの異なるＩＶ（ＩＶ１０…ＩＶ２１…ＩＶ４１）を有する。同じ暗号化プロセスを使用するものの、異なったＩＶを有するセグメント内のデータが暗号化される。これらＩＶは、以下で説明するように本発明のいくつかの実施形態に係るフラッシュメモリ内に記憶されている。前記ＩＶは、それぞれのデータセグメント内に記憶されてもよい。
【００２０】
図３は、図１と図２を参照して説明したプロセスを実行するシステムの一例を示している。
【００２１】
フラッシュメモリ２２はインタフェース（Ｉ／Ｆ）２４によってコンピュータに結合されている。例えば、このフラッシュメモリとインタフェースは周知のＵＳＢ記憶装置で使用されるものと同じである。例えば、コンピュータはＰＣであってもよい。暗号化プロセスがコンピュータ２６内で実行され、暗号化されたデータがフラッシュメモリ内に記憶される。
【００２２】
図３の実施例においては、コンピュータ２６は、プログラム記憶装置２６１、プロセッサ２６２、非揮発性メモリ２６３（例えば、ディスクドライブ）を有する。暗号化プロセスをコンピュータ２６の非揮発性メモリ２６３に適用してもよい。コンピュータ２６は、ＰＣ、ＰＤＡ、携帯電話又はデータ記憶部及びデータ処理部を有するいかなる他の装置であってもよい。
【００２３】
この実施例では、復号化は図４に示されているように暗号化とは逆の手順で行われる。暗号化及び復号化プロセスは、同一のＩＶ及びキーを使用する点において対称的である。この実施例における復号化プロセスは各々のセグメント４に適用される。この実施例では、１つのセグメントのＩＶが、セグメントから抽出されて、復号化プロセスにおいて使用される。以下に説明するように、ＩＶの一部のみがセグメント内に記憶されてもよく、ＩＶはその記憶された部分から生成される。ＩＶは、メディアシリアルナンバ及び／又は論理セグメントアドレスから生成されてもよい。その際、セグメントで記憶することができる乱数を使用してもよい。
【００２４】
本発明の実施例は、適切なプロセッサで動作すると、復号化方法を実行するコンピュータプログラムを含む。このコンピュータプログラムはキャリヤ（信号又は記録媒体）上にあってもよい（但し、これらに限定されない）。
【００２５】
以下により詳細に説明するように、他の暗号化方法及び復号化方法を使用してもよい。
【００２６】
以下に説明するように、他のサイズのデータセグメントを使用してもよい。
【００２７】
以下に、ＩＶを生成する実施例及び他の情報に関して説明する。
【００２８】
ＩＶ生成
一実施形態では、ＡＥＳ（Ａｄｖａｎｃｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）はデータの改良された暗号化に対していくつかのフィードバックモードを指定する。サイファーフィードバック（ＣＦＢ：ｃｉｐｈｅｒ  ｆｅｅｄｂａｃｋ）モード、暗号ブロック連鎖（ＣＢＣ）モード、及びアウトプットフィードバック（ＯＦＢ：ｏｕｔｐｕｔ  ｆｅｅｄｂａｃｋ）モードの３つのモードは、初期化ベクトル（ＩＶ）を用いてデータに対して排他的論理和（ＸＯＲ：Ｅｘｃｌｕｓｉｖｅ  ＯＲ）操作を実行する。ＩＶは秘密である必要はないが、ＣＢＣとＣＦＢに関してそれは予測不可能であるべきである。ＩＶ又はＩＶを生成するシードは乱数であるべきである（本明細書においては、ＩＶ及びシードは互換的に使用される）。
【００２９】
一実施形態では、ＩＶを生成するのに使用されるシード又はＩＶは、当該ＩＶが使用されたデータのブロックと共に記憶される。そして、ＩＶ又はシードは、データのそれぞれのブロックを復号化するプロセスにおいて使用され得る。一実施形態では、ＩＶは１２８ビットのデータ又は１６バイトの８ビットデータである。例えば、ＩＶが暗号化プロセスにおいて反復されない限り、ＩＶはより小なる乱数から生成され得る。ほとんどすべてのデバイス（パーソナルコンピュータ、家庭用装置、携帯電話等）に使用される記憶装置はセクタサイズとして５１２バイトを使用しているので、最適性能のために、ＩＶは（先に本明細書においてデータブロックと称された）５１２バイト毎のデータにおいて固有であることが望ましい。この事により、１０２４バイト又は２０４８バイト等のより大なるデータブロックの使用は排除されない。
【００３０】
フラッシュメモリは複数のブロックに分割されている（このブロックは、先に説明したデータブロックと異なり、本明細書の以下においては消去ブロックと称される）。フラッシュメモリにおける消去ブロックは、一度消去されて書き直され得る最小量のメモリのことである。例えば、典型的な消去ブロックは２５６ページから構成されてもよい。消去ブロックに書き込むためには、それはまず消去されて、その後に書き込まれなければならない。
【００３１】
ブロックがあまりにも多数のエラーを発生させる場合、データは新たなブロックと、不良としてマークされたブロックとに移行され得る。ブロックがフラッシュのいかなる場所に設けられていたとしても、それは常に論理ナンバを保持する。一実施形態においては、論理ナンバは、その少なくとも一部が使用されて、それぞれのブロックに対してＩＶの一部を生成する。その結果、ＩＶを反復する可能性が低減される。
【００３２】
図５は１６バイトのＩＶブロック１００（１２８ビット）の一例を示している。しかしながら、ＮＡＮＤフラッシュの付加的データ領域内においては、４バイト（又は３２ビット）の余地しかない。したがって、この３２ビットの乱数から、偶発性を有する１２８ビットのＩＶブロックが生成される。一実施形態では、３２ビットの乱数は論理ブロックアドレス及び／又は記憶装置の固有のシリアルナンバをそれに加えることができる。
【００３３】
媒体がデータと共にＩＶを記憶する場所（例えば、ハードディスクドライブ）を有しない場合、記憶ユニットのシリアルナンバを伴うこともあるし伴わないこともある。ＩＶは論理ブロックナンバであり、その上、ＩＶのサイズに依存して、記憶ユニットのシリアルナンバを伴うこともあるし伴わないこともある。また、論理ブロックナンバに加えて付加的定数もまた使用され得る。この場合も、また、別の組合せがＩＶの生成に使用され得る。
【００３４】
乱数生成
乱数を生成する１つの手段としては、電源が入れられた（投入された）ときにプリセットされた状態にリセットされないレジスタを含む集積回路を設けることがあげられる。そのため、レジスタの電源が入れられた後に、レジスタは予測不可能な初期のシード値を有する。いくつかの制御装置は同期的設計を有し、これは大抵の回路が電源投入時に同一値に初期化又はプリセットされることを意味している。しかし、レジスタ又はハッシュジェネレータロジックは電源投入時にプリセット値を有しないように予め設計され得る。それは予測不可能な状態で電源投入されるので、偶発性の根源となっている。
【００３５】
一例として、図６を参照すると、レジスタ２０４は、その入力として、ＣＲＣジェネレータ又はＡＥＳ暗号器等の「ハッシュ論理」装置２０３からの出力を受信する。この論理回路２０３は、入力としてレジスタからの出力を受信し、且つ例えばカウンタ等の内部事象及びＵＳＢフレームナンバ等の外部事象に基づくナンバを受信する。ＵＳＢフレームナンバはＵＳＢホストによって生成される擬似的乱数である。このナンバは定期的に更新される。１つの問題として、事象が予測できるかもしれないということがあげられる。しかしながら、集積回路が集積回路のクロックと同期していないポートを介してホストコンピュータに接続されている場合、ホストポートを使用し、内部的に生成されたナンバに非同期なナンバが生成される。内部事象及び外部事象によって生成されたこれら２つのナンバが論理ブロックに与えられると、真の乱数が生成される。
【００３６】
図６は係る非同期方式の乱数ジェネレータ２００の単純化したブロック図を示している。乱数ジェネレータ２００は、ハッシュ論理２０３と通常の同期レジスタ２０４とに与える内部乱数スタート値２０１及び外部乱数スタート値２０２の両方を使用して、ハッシュ論理にフィードバックを与えている。図６におけるブロック図の論理は、ハードウェアに組み込まれた論理として実装されるか、又はソフトウェア若しくはファームウェアとして実装され得る。
【００３７】
ＩＶ記憶装置
図７は、５２８バイトのデータ３０１又はその倍数バイトのデータを含む（フラッシュメモリページ等の）メモリページ３００の例を示している。一実施形態では、ページサイズは５１２バイトのデータと１６バイトの付加的データ３０２とを記憶するように設計されている。典型的なページサイズは５２８、２１１２、４２２４等である。
【００３８】
図８は。メモリページ４００の例を示しており、付加的データの一部がエラー修正データ４０３として用いられる。これは典型的な構成である。なぜならば、フラッシュメモリがランダムエラーの影響を受けやすいからである。残りの付加的データ４０２はステータスのために使用される。
【００３９】
図９は暗号化されるべき５２８バイトのページ５００の実施例を示している。係る場合には、データを復号化する際に使用される迅速なアクセスのためにそのページ内における暗号化に使用されるＩＶ５０４を記憶し、且つ２個のステータスバイト４０２のみを有することが望ましい。
【００４０】
ＩＶデータの４バイト（３２ビット）は４．２９４．９６７．２９６（２３２）の異なったＩＶ値を与えるであろう。フラッシュメモリはギガバイトのデータを保持できるので、より多数の乱数が、乱数を反復する可能性を低減するのに使用され得る。
【００４１】
一実施形態では、図９に示されているように、４バイトの乱数を含むＩＶは、データブロックの始めに設けられる。これは、５１２バイトのデータが乱数を用いて暗号化される場合、ＩＶを読み込むと、復号化する必要があるデータに先んじて制御装置がＩＶを有することができるようになるためである。乱数が例えばデータの最後に設けられた場合、制御装置は全体の５１２バイトを読み込んで、５１２バイトを暗号化するプロセス中に使用されたＩＶに達してから、復号化を開始しなければならないだろう。この手法で、復号化プロセスの間における貴重なサイクル（繰り返し動作）が無駄となるであろう。
【００４２】
図１０は、２つのセクタ６０１及び６０２に分割された１０２４バイトのデータブロック６００を示している。ＩＶを反復する可能性を低減する１つの手法として、各ＩＶを２つのデータブロック又は２つのセクタに関連付けることがあげられる（その結果、ブロックサイズが増大する）。５１２バイトのデータ６０３ａ及び６０３ｂはアクセス可能なデータの最小チャンクとして保持されている。８バイトの６０４ａ及び６０４ｂ（６４ビット）のＩＶは２６４又は１８４４６７４４０７３７０９５５１６１６の固有のナンバを生成することができる。
【００４３】
いくつかの場合においては、他の割り当てが使用されてもよい。したがって、例えば、いくつかの場合においては、全体のＩＶが第１のセクタ内で保持され、且つすべてのエラー修正が第２のセクタ内に保持され得る。この場合の利点は複合化がすぐに開始するという点であるが、不利な点は、（第２のセクタが読み込まれるときに）エラーが一旦見出されると、その内のいくつかを再処理する必要がありえるという点である。さらに他の場合では、エラー修正は最初に行われてもよい。その場合、書き込みプロセスが減速するであろうが（よって、二重書込みを実質的に必要とする）、エラーなしで迅速な復号化が可能となるであろう。読出し回数が書込み回数に対してかなりの割合で勝る場合においては、それは興味深い選択であるかもしれない。いくつかの場合においては、読出し対書出しの比率に関して記録をつけてもよく、閾値を一旦越えると、メモリがダイナミック（動的）に再構成されてもよい。
【００４４】
先行エラー修正
フラッシュメモリは信頼性に関する問題を有する、すなわち、個々のビットに時としてエラーが生ずる。データが暗号化される場合、エラーが生ずるとデータは復号化することができない。暗号化されない場合、データが不正確となり得る。故障ビットを修正するエラー修正方法を有するのは、一般的である。これら修正方法は１つ以上のエラーを修正できる。一実施形態におけるエラー修正方法は、５バイトのエラーまで検出し、且つ５１２バイトの空間内の４バイトエラーまで修正することができる。
【００４５】
いくつかの場合においては、ある傾向（セクタ内の不良スポットの数が増大するという傾向）に基づいて、セクタ又はブロックが永続的に写像されてもよい（すなわち、新しいブロックにデータを移行させる）ので、大きな（悲惨な）データ損失を防止し又は最小限にとどめることができる。修正可能なエラーに関する情報は付加的な領域内に記憶され、図９に示されているようにその領域においては１０バイトが５１２バイトのデータに対してＥＣＣ値を記憶している。制御装置は、フラッシュ媒体に書き込みしながら正しいＥＣＣ値を定め、且つデータを読み返しながら元のＥＣＣ値をＥＣＣ値と比較する。
【００４６】
その結果、制御装置はエラーがデータに発生したか否かを決定でき、且つＥＣＣデータを用いてそれを修正することができる。さらに、制御装置が新しい良い領域にこのデータを写像する修正動作をなすように４バイトのエラーを修正すると、制御装置は発生直前の不良ブロックを示すことができる。
【００４７】
一実施形態では、制御装置が不良になる直前のブロックを写像する（すなわち、新しいブロックにデータを移行させる）ために使用され得る利用可能な良好ブロックのトラックを憶えておく。例えば、ホストが１２８のセクタを読み込む要求をし、且つセクタ３、１９、３８が４バイトのエラーで修正されたことが見出された場合、制御装置は、データの全１２８のセクタをホストに移しながら、これら不良になる直前のセクタをＦＩＦＯ内に保持するであろう。データ転送が完了した後に、ファームウェアはこのＦＩＦＯを読み込んで、このブロック内においていくつかのセクタがデータエラーを有すること（つまり、不良化しようとしていることを示している）を見出す。そして、ファームウェアは新しく且つ良好なブロックにセクタの全ブロックを移行させる修正動作を取るだろう。転送が完了すると、それは不良として現在のブロックをマークし、その結果、データ損失を防止することができる。一般に、Ｎ個又は場合によってはＮよりも少ない数のエラーがあったとき、Ｎ個のエラーを修正できる修正方法はブロックをいつ移行させるかを示すのに用いられるであろう。
【００４８】
ブートコード暗号化／認証
フラッシュメモリ記憶装置はしばしばいわゆるブートファームウェアを含む。これは、電源が印加されるとフラッシュ制御装置集積回路によってフラッシュメモリからロードされるファームウェアである。装置が製造されるときに、通常このブートファームウェアには書き込みが行われるが、このファームウェアに対するパッチは装置の寿命の間いつでも書き込まれてもよい。このコードが信頼でき且つ暗号化を破壊し得る不良ファームウェアでないことをプロセッサが認証することができるように、このブートデータは暗号化されることが望ましい。
【００４９】
いくつかの場合において、以下に説明されるＣＤ領域のホストブート部分にこの方法を適用してもよい。この手法は、ウイルスがホストブートセクションを乗っ取ることを防ぐことができる。
【００５０】
装置がＡＥＳスタンダードで定義されるようなキーを割り当てられた場合、ブートデータを暗号化し且つ復号化するのにこのキーは使用され得る。しばしば、キーなしで装置が販売され、後にキーが割り当てられる。このようにキー割り当てが後になされる理由は、ユーザがマスターキーの一部であるパスワード保持をできるようにするためである（そうすれば、実質的に、キーは固有のキーとなる）。しかし、製造時点では、ブートコードが有効にされ得ることを保障するのに、マスターキーが必要とされる。ブートファームウェアのみの使用のために、製造時点では、各装置に対して固有キーが生成され得る。制御装置がワンタイムプログラムメモリ（ＯＴＰ：ｏｎｅ−ｔｉｍｅ  ｐｒｏｇｒａｍ）を有する場合、製造時に固有キーが制御装置に記憶され得る。ＯＴＰは追記型メモリ（ｗｒｉｔｅ  ｏｎｃｅ  ｍｅｍｏｒｙ）と同様であり、このワンタイム型の書込み後には変更できない。
【００５１】
キーを変える別の手法としては、フラッシュメモリ内にマスターキーを記憶する手法があるが、装置の電源が投入される度に本発明の一実施形態に係る以下に示す方法を使用してキーを変える手法もある。その方法とは、以下の通り実行される。
【００５２】
１．  現在のキーを用いて、ブートコードを復号化し且つクリアなデータをＲＡＭにロードする。
【００５３】
２．  後述の方法を使用して新たなマスターキーを生成し、現在のブートブロックを消去し、その新たなマスターキーを用いて暗号化された新たなブートコードを書き込み、この新たなブートブロックを記憶媒体に書き込む。ブートブロックは媒体内であれば、ほぼどこに設けられてもよい。
【００５４】
実装実施形態
製品はＣＤ＋Ｐｕｂｌｉｃとして出荷されるであろう。これは次のことを意味する。即ち、記憶装置がＰＣと接続されると、記憶装置がＣＤドライブ内に含まれるべき又は含むべきホストのオペレーティングシステムに対してＣＤドライブになってほしいという要求若しくはＣＤドライブを含んでほしいという要求を出すことによって、マイコンピュータ（Ｍｙ  Ｃｏｍｐｕｔｅｒ）ウィンドウ内にＣＤアイコン及び記憶アイコンを形成する。ＣＤ部分には、装置が「保護されるようにする」アプリケーションがあるであろう。先に説明したように、プログラムは起動されるとユーザにパスワードの入力をうながして、マスターキー及びＩＶを用いて安全なパーティションを暗号化する。
【００５５】
図１の説明において先に説明されたように、ＵＳＢストレージシステムにおいて３２ビットの乱数を生成する１つの方法としては、ＵＳＢフレームナンバ（ミリ秒毎にＰＣ等のＵＳＢホストによって生成される乱数）と、システムクロック毎に増大され且つ予測不可能な乱数の初期値を有する制御装置内の内部カウンタと、を用いることがあげられる。
【００５６】
図１１は非同期的乱数ジェネレータ７００の一例のブロック図を示している。このジェネレータ７００は、マルチプレクサ（ｍｕｘ：ｍｕｌｔｉｐｌｅｘｅｒ）に与えるフレームナンバ７０１及び内部カウンタ７０２の両方と、ハッシュ論理への通常の同期レジスタ及びフィードバックと、を使用している。その通常の同期レジスタ及びフィードバックはＣＲＣジェネレータ７０４として示されており、乱数７０５を生成する。それは、ソフトウェア、ハードウェア又はそれらのいかなる組合せにおいても実装することができる。さらに、いくつかの場合においては、ＣＲＣジェネレータ７０４は、電源オン時にリセットされないので、プロセッサが電源投入される毎に不確定な値を有する。
【００５７】
実行されるべき１セットの指示としてコンピュータシステムのメモリ内に先に説明されたプロセスが記憶され得る。さらに、先に説明されたプロセスを実行する指示は、磁気ディスク及び光学ディスクを含む機械可読媒体の他の形態に記憶され得る。上述のプロセスは、例えば、ディスクドライブ（コンピュータ可読媒体ドライブ）を介してアクセス可能な磁気ディスク又は光学ディスク等の機械可読媒体に記憶され得る。さらに、指示は、データネットワークを介してプログラムソース（例えば、サーバ）からコンピューターデバイスに、コンパイルされ且つリンクされた形態でダウンロードされ得る。あるいは、先に説明されたプロセスを実行する論理は、別のコンピュータ及び／または機械可読媒体に実装されてもよい。別のコンピュータ及び／または機械可読媒体とは、例えば、個別のハードウェア要素（大規模集積回路（ＬＳＩ）や特定アプリケーション集積回路（ＡＳＩＣ））及びファームウェア（電気的消去書込み可能な読出し専用メモリ（ＥＥＰＲＯＭ））である。あるいは、先に説明されたプロセスを実行する論理は、電気的、光学的、音響的形態の伝播信号及び他の形態の伝播信号（例えば、伝送波、赤外信号、デジタル信号等）に実装されてもよい。
【図１】
2010509690.tif 000003
【図２】
2010509690.tif 000004
【図３】
2010509690.tif 000005
【図４】
2010509690.tif 000006
【図５】
2010509690.tif 000007
【図６】
2010509690.tif 000008
【図７】
2010509690.tif 000009
【図８】
2010509690.tif 000010
【図９】
2010509690.tif 000011
【図１０】
2010509690.tif 000012
【図１１】
2010509690.tif 000013
【国際調査報告】
2010509690.tif 000014
2010509690.tif 000015
2010509690.tif 000016