(57)【要約】      （修正有）【課題】信頼できる真の乱数を記憶装置内の物理的パラメータを利用して高速に発生させる。【解決手段】ホストに接続されているディスクドライブを利用して、ディスクドライブのリードライトヘッドから得られる位置誤差信号サンプルの１つのグループから得られるビット列からパリティビットを生成し、そのパリティビットを連結することで乱数を生成する。更には、第２の乱数を生成するために、確定論的乱数発生器にエントロピーとして上記の第１の乱数を供給する。【選択図】図４
2011076590.tif 000002
【特許請求の範囲】
【請求項１】
記憶装置内で１つ以上の乱数を発生させる方法であって、
乱数を生成するために異なる位置誤差信号サンプルの１つのグループからパリティビットを連結する方法。
【請求項２】
第２の乱数を生成するために確定論的乱数発生器にエントロピーとして前記乱数を供給する請求項１記載の方法。
【請求項３】
前記第２の乱数を使って暗号化キーを発生する請求項２記載の方法。
【請求項４】
記憶装置に第１の乱数と第２の乱数を生成する方法であって、
第１の確定論的乱数発生器で第１の乱数を生成し、
前記記憶装置による使用のために前記第１の乱数を格納し、
第２の確定論的乱数発生器で第２の乱数を発生し、
前記記憶装置に接続されたホストによる使用のための前記第２の乱数を格納する方法。
【請求項５】
前記第１の確定論的乱数発生器と前記第２の確定論的乱数発生器は異なる構成である請求項４記載の方法。
【請求項６】
前記第１の確定論的乱数発生器と第２の確定論的乱数発生器はエントロピーの同じソースが供給される請求項４記載の方法。
【請求項７】
前記第１の確定論的乱数発生器と第２の確定論的乱数発生器はエントロピーの異なるソースが供給される請求項４記載の方法。
【請求項８】
アプリケーションからの乱数の要求に応答し、乱数が保存された記憶装置の中で実行される方法であって、
新しい乱数を生成し、
前記新しい乱数と保存された乱数を比較し、
前記２つの乱数が同じでなければ、要求しているアプリケーションに対して、前記保存されている乱数ではなく、前記新しい乱数を供給する方法。
【請求項９】
第１のバッファと第２のバッファを持つ記憶装置の中で乱数を発生させる方法であって、
エントロピーとして第１入力を使用し、確定論的乱数生成器で第１の乱数を生成し、前記第１のバッファに該第１の乱数を格納し、
前記第１のバッファの中の前記第１の乱数を前記第２のバッファにコピーし、
エントロピーとして第２入力を使用し、確定論的乱数発生器で第２の乱数を発生し、前記第１のバッファに該第２の乱数を保存する方法。
【請求項１０】
前記第１入力を生成するために位置誤差信号サンプルの第１グループから、パリティビットを連結させ、
前記第２入力を生成するために位置誤差信号サンプルの第２グループから、パリティビットを連結させる請求項９記載の方法。
【請求項１１】
前記第１の乱数が前記第１のバッファに格納されている際、前記第１の乱数と前記第２のバッファに保存された数とを比較する請求項９記載の方法。
【請求項１２】
前記第２のバッファに保存された数が確定論的乱数発生器によって以前に発生された乱数であるが、乱数を要求しているアプリケーションの中で使われていない請求項１１記載の方法。
【請求項１３】
第１ビットのエントロピーを受信し、第２ビットの乱数を発生するように構成されている確定論的乱数発生器を具備し、前記第１ビットと前記第２ビットが等しい記憶装置。
【請求項１４】
第３の乱数を発生するように構成されている第２の確定論的乱数発生器をさらに具備する請求項１３記載の記憶装置。
【請求項１５】
前記乱数の前記N２ビットが使用のために前記記憶装置のアプリケーションに供給され、前記第３の乱数が使用のために前記記憶装置に接続されたホストのアプリケーションに供給される請求項１４記載の記憶装置。
【請求項１６】
前記２つの確定論的乱数発生器が共通のエントロピー源を共有する請求項１５記載の記憶装置。
【請求項１７】
前記２つの確定論的乱数発生器が異なるエントロピー源を持つ請求項１５記載の記憶装置。
【請求項１８】
確定論的乱数発生器によって発生された乱数の前記N2ビットを格納する第１の記憶バッファと、
前記第１の記憶バッファからコピーされた第２の乱数が要求しているアプリケーションに供給されている第２の記憶バッファと、
をさらに具備する請求項１３記載の記憶装置。
【請求項１９】
多数の位置誤差信号サンプルから取り出されたパリティビットから乱数を生成するように構成された非確定論的乱数発生器によって発生された乱数は前記第１ビットのエントロピーを含む請求項１３記載の記憶装置。
【請求項２０】
取り出されたパリティビットを連結することによって前記非確定論的乱数発生器が前記乱数を生成するように構成されている請求項１９記載の記憶装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、一般的に、記憶装置において乱数を発生させるための方法に関する。
【背景技術】
【０００２】
計算において、乱数は様々なアプリケーション内で使われている。このアプリケーションには、暗号化アルゴリズムと復号化アルゴリズムを含む。対称の暗号作成法と非対称の暗号作成法の双方において、一つのホストと暗号化されたディスクドライブの間の安全な通信を確立するための暗号キーを、乱数によって発生できる。二者間の通信の完全性は、このような暗号化キーの継続した機密性次第であるので、十分なランダム性を持たない乱数発生器を使うことは、このような通信の安全性を危うくするかもしれない。ドライブ暗号化アルゴリズムとドライブ復号化アルゴリズム用のディスクドライブ内で乱数を発生させるための異なる手段が業界で知られている。異なる手段には、決定論的乱数ビット発生器と、ハードウェア乱数発生器と、ディスクドライブパラメータまたは環境のノイズを乱数に変換する方法を含む。
【０００３】
擬似乱数発生器とも呼ばれる決定論的乱数ビット発生器（Deterministic Random Bit Generator:DRBG）は、乱数の特性を近似する数の順序を発生させるためのアルゴリズムである。アルゴリズムの出力が決定論的である点で、この順序は本当にはランダムではない。例えば、決定論的乱数ビット発生器の状態と呼ばれる初期値の比較的小さなセットによって、完全には決定されない。決定論的乱数ビット発生器によって発生された数は決定論的であるので、意図した使用、特に暗号化アルゴリズムと復号化アルゴリズム、に適するに十分に“ランダム”でないかも知らない。加えて、もし決定論的乱数ビット発生器を初期化するのに使われるランダム・シードが発見されれば、決定論的乱数ビット発生器によって擬似ランダムに発生される１つのキーが決められる。それゆえに、決定論的乱数ビット発生器は高品質リアルランダムナンバーを必要とするアプリケーションに関連した使用のためには理想的ではない。
【０００４】
ハードウェア乱数発生器は物理的過程から乱数を発生する機械である。このような装置はよく温度ノイズと光電効果または他の量子現象を含む、微視的現象に基づいている。このようなプロセスは理論的に完全に予測できない。それゆえに乱数の発生のためのエントロピー、例えば、ランダムさのソースとして使うことができる。しかしながら、ロバストなハードウェア乱数発生器を正確に構築することは問題がある。このようなデバイスの欠陥モードは多く、複雑で、発見するのは困難である。例えば、多くのハードウェア乱数発生器のデザインは、もろく、“サイレントリー”に失敗することで知られている。つまり、直接的に欠陥を測定する方法はなく、デバイスが劣化するにつれて、減少する乱数をしばしば発生する。それゆえに、ハードウェア乱数発生器の出力に連続的な統計テストを行うことなく、このような装置は真の乱数の信頼できないソースになり得る。さらに、このようなハードウェアの使用は、１つのコンピュータの一部として通常は設けられない、特別な回路とその他のハードウェアを必要とし、コンピュータユーザーに追加的なコストをもたらす。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】米国特許第７１３６８８９号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ディスクドライブパラメータまたは環境ノイズを乱数に変換するための方法も業界で知られている。例えば、１つまたは多くのディスクドライブ内で、１つ以上のデスクドライブのパラメータを観測し、計測したパラメータまたは計測したパラメータの結合を乱数として使用していることが記載されている。乱数を生成するために適した観測可能なディスクドライブパラメータは選択されたトラックに関係があるトランスデューサ・ヘッドの位置誤差信号（Position Error Signal: PES）と、ディスクの上のトランスデューサ・ヘッドのフライハイト（fly-height）と、ディスクドライブの温度と、これら以外のものを含んでいる。しかしながら、暗号化とほかのアプリケーションのために、これらの手段が実用的なレートで乱数を生成する方法のために、レジスタや論理ゲートのような専用のハードウェアがディスクドライブの回路に加えられる必要があるかもしれない。これは、ディスクドライブのコストと複雑化を増加させる。
【０００７】
本発明の目的は記憶装置内で高速に乱数を生成することである。
【課題を解決するための手段】
【０００８】
１つ以上の実施形態は、記憶装置内で乱数を発生させ、管理するためのシステムと方法を提供する。その中で、連続した位置誤差信号サンプルのパリティビットは、要求されたビット数を持っている乱数を迅速に形成するように連結されている。記憶装置のファームウェアの中に含まれる決定論的乱数ビット発生器で処理されることによって、乱数はさらにランダムになるかもしれない。
【０００９】
１つの実施形態において、１つ以上の乱数を記憶装置内に発生させる方法は、１つの乱数を生成するための異なる位置誤差信号サンプルのグループからのパリティビットを連結することから構成されている。その際、第２の乱数を生成する決定論的乱数発生器に、乱数はエントロピーとして供給される。第２の乱数は記憶装置のアプリケーションまたは記憶装置に接続されたホストによって使用されるかもしれない。
【００１０】
他の実施形態において、セルフテスト要求に従う方法で、乱数は記憶装置内で発生され、長い時間間隔の間保存されないように、アプリケーションによって使われる乱数を要求する。この実施形態に従った方法では２つのバッファを要求する。第１のバッファは、決定論的乱数発生器の以前の出力を保存する。結果として生じる乱数を受け取るために、第２のバッファはアプリケーションによって提供される。その方法は第１のバッファを第２のバッファにコピーし、第１の乱数を発生させ、それを第１のバッファに保存し、第１の乱数と、セルフテスト要求に従うために第２のバッファに保存されている乱数を比較し、アプリケーションによって使われることができるように、第１の乱数を第２のバッファにコピーし、第１のバッファに保存された第１の乱数を上書きするための他の乱数を発生するステップを含む。第２のバッファの調整（例えば、キーとして使われる）はアプリケーションに残される。乱数を使い、それからこのバッファをゼロにすることはアプリケーションの標準的なやり方である。
【００１１】
エントロピー入力の第１（N1）ビットを受け取り、そこから乱数の第２（N2）ビットを発生させるように設定された決定論的乱数発生器によって、実施形態による記憶装置は構成されている。ここで、N1はN2に等しく、乱数のN2ビットのいくつかは、記憶装置内部のアプリケーションによって使われる。記憶装置に接続されたホスト上のアプリケーションによる使用のために、第３の乱数を発生させるように構成された第２の決定論的乱数発生器を、記憶装置はさらに含むかもしれない。ホストのために発生された乱数の観測が、内部に記憶装置によって使われる乱数を発生するために使われる欠陥を見せないように、２つの決定論的乱数発生器はそれぞれ構成されている。
【図面の簡単な説明】
【００１２】
【図１】図１は、実施形態に従って、乱数を発生するように構成されているかもしれないディスクドライブを描いているブロック図である。
【図２】図２は、業界の中で知られている典型的な方法で編成されたデータを伴った磁気ディスクを描いている。
【図３】図３は、図１の中で印刷された回路基板の部品を図式的に描いたブロック図である。
【図４】図４は、実施形態に従って、ホストまたはディスクドライブのアプリケーションによる使用のために、ディスクドライブの中で乱数を発生するための方法を描いているフロー図である。
【図５】図５は、１つ以上の実施形態に従う、乱数発生器を概念的に描いているブロック図である。
【発明を実施するための形態】
【００１３】
図１は、１つ以上の実施形態に従って、乱数を発生させるように構成されているかもしれないディスクドライブ１００を描いているブロック図である。ディスクドライブ１００の機械部品はスピンドル・モータ１０２によって回転された磁気ディスク１１２、サスペンションアーム１０３の端に配置されているリード・ライトヘッド１０４を含んでいる。アームアクチュエータ１０５は、磁気ディスク１１２の異なるトラックにアクセスするためにアーム１０３を望んだように動かすために、サスペンションアーム１０３に連結されている。ディスクドライブ１００の電気部品はプリント回路基板（PCB） 200と、プリアンプ１０７を含む。その後者はリード・ライトヘッド１０４に電気的に結合されている。プリアンプ１０７はリード・ライトヘッド１０４への信号、そしてリード・ライトヘッド１０４からの信号を調節し、増幅する。回路基板200はシステム・オン・チップ（system-on-chip:SoC）と、RAMと、ディスクドライブ１００を操作するための他の集積回路を含み、図３と連結して、下に描かれている。図示されるように、回路基板 200は電気的結合１０６を通して、プリアンプ１０７に電気的に接続され、電気的結合１０８を通ってスピンドル・モータ１０２に接続され、電気的結合１０９を通してアームアクチュエータ１０５に電気的に結合されている。回路基板 200はケーブル１１０を通してホスト９０と通信を行っている。ケーブル１１０はSATA、PATA、SCSIまたは他のインターフェイスであるかもしれない。ホスト９０は、LANまたはWANによって記憶装置にアクセスしているリモートコンピューティング・デバイスまたはコンピュータに含まれている暗号化可能な記憶装置の１つ以上のセクタにアクセスを要求する、セット・トップ・ボックス、テレビ、ビデオプレイヤーのような機器、デスクトップ・コンピュータ、または、ラップトップ・コンピュータであるかもしれない。
【００１４】
図２は、業界の中で知られている典型的な方法で編成されたデータを伴った、磁気ディスク１１２を描いている。磁気ディスク１１２は多数の同心データ・ストレージ・トラック２４２を含む。そのいくつかは多くのサーボ・ウェッジ２４４とデータ・フィールド２４６を含む。各々の同心データ・ストレージ・トラック２４２は、図式的に中心線として描かれている。しかしながら、各々の同心データ・ストレージ・トラック２４２は、対応する中心線について有限の幅を占めていることを理解されるべきである。磁気ディスク１１２は実質的に放射状に並べられ、同心データ・ストレージ・トラック２４２を横切り、同心データ・ストレージ・トラック２４２の中のサーボ・セクタにサーボ情報を蓄積する、サーボ・スポークとも呼ばれるサーボ・ウェッジ２４４を含む。このようなサーボ情報は、公知の振幅の矩形波のような参照信号を含み、望ましいトラック２４２上にトランスデューサ・ヘッド １２１を配置するために、読み書き操作の間、トランスデューサ・ヘッド１２１によって読まれる。サーボ・ウェッジ２４４の中のサーボ情報の種々の可能な設定は業界で知られており、この中では詳細は述べられていない。典型的に、磁気ディスク１１２上に含まれる同心データ・ストレージ・トラック２４２とサーボ・スポーク２４４の実際の数は、図２に描かれているものよりもかなり大きい。
【００１５】
図３は、図１から回路基板２００の部品を図式的に描いたブロック図である。回路基板２００はシステム・オン・チップ（SoC）３００と、システム・オン・チップ３００の内部または外部にあるかもしれないDRAM２０２と、フラッシュメモリ２０１と、スピンドル・モータ１０２とアームアクチュエータ１０５を駆動するコンボチップ２０３を含む。また、コンボチップ２０３はシステム・オン・チップ３００と、プリアンプ１０７と、システム・オン・チップ３００の中に含まれるモータコントローラのための電圧レギュレータを含む。図示されるとおり、フラッシュメモリ２０１とDRAM２０２はシステム・オン・チップ３００に接続されている。システム・オン・チップ３００はケーブル１１０を通ってホストに接続し、電気的接合１０６を通ってプリアンプ１０７に接続し、シリアル・バス２０４を通ってコンボチップ２０３に接続する。システム・オン・チップ３００は、ディスクドライブ１００と、入力・出力ブロックと、暗号化・復号化ブロックの操作を制御するように構成されているマイクロコンピュータのような、特定の機能を行うようにデザインされている多くの機能的ブロックを含むASICである。システム・オン・チップ３００のためのファームウェアは、フラッシュメモリ２０１に蓄積されており、ファームウェアコントロール下のSoC ３００は１つ以上の実施形態に従って、乱数を発生する。いくつかの実施形態において、フラッシュメモリ２０１はシステム・オン・チップ３００の中にある。他の実施形態において、変更することができないファームウェアの小さな部分が、システム・オン・チップ３００内のROMの中にあり、システム・オン・チップ３００が１つ以上の実施形態に従って乱数の発生を引き起こすための命令を含んだファームウェアのバルクが磁気ディスク１１２上にあり、ディスクドライブ１００のパワーアップの後、すぐにロードされる。
【００１６】
操作において、ディスクドライブ１００のリード・ライトヘッド１０４は、磁気ディスク１１２の特定の同心データ・ストレージ・トラック２４２からデータを読み出し、またはデータを書き込む。リード・ライトヘッド１０４の位置は、あとに続く同心データ・ストレージ・トラック２４２の中央線に関して、連続的に変化している。この変化は少なくとも一部は、磁気ディスク１１２の温度と、空気の乱れと、ディスクドライブ１００の内部の大気圧と湿度と、サスペンションアーム１０３とメディア１１２の振動のような環境ファクターによるものである。それゆえに、リード・ライトヘッド１０４の位置誤差信号は実質的にランダム・エフェクトによるものであり、連続的に変化している数である。実施形態は、ディスクドライブ内に乱数を発生させるためのシステムと方法を意味しており、その中で連続する位置誤差信号サンプルのパリティビットは、望んだビット数を持っている乱数を、すばやく作るように結合されている。位置誤差信号はドライブが、ディスクドライブ１００の通常の操作の一部としてトラック追従している間に測定されるので、追加的な機械的操作、または専門化したハードウェアは、この方法を行うためには必要とされない。結果として、追加的なハードウェアまたは回路を伴わずにディスクドライブ１００によって、非常に迅速に乱数が生成される。
【００１７】
図４は、１つの実施形態に従って、ディスクドライブの中で乱数を迅速に発生するための手段４００を描いているフロー図である。その中で、ドライブの多くの位置誤差信号サンプルのパリティビットを結合することによって、乱数は形作られている。記述の簡単のために、方法４００は図１のディスクドライブ１００と実質的に似ているディスクドライブによって描かれている。１つの実施形態の中で、方法４００を実行するためのコマンドがシステム・オン・チップ３００のためのファームウェアの中にある。
【００１８】
ステップ４０１において、コーラー（サブルーチン呼出し部）からの乱数のための要求は、ディスクドライブ１００のファームウェアの中にある乱数発生アルゴリズムによって受信される。コーラーはシステム・オン・チップ３００のためのファームウェアの中にある暗号化アルゴリズム、またはホスト９０上で動いているアプリケーションであるかもしれない。そして、乱数のための要求は暗号化アルゴリズムまたはいくつかのその他の使用のための乱数を発生させる目的であるかもしれない。例えば、ホスト９０と暗号化された通信を行うために、および／または、磁気ディスク１１２の中に蓄積されることになっているホスト９０から受信したデータの暗号化のために、ディスクドライブ１００がキーを発生するために、１つ以上の乱数はディスクドライブ１００による使用のために必要とされるかもしれない。要求された乱数はとても大きな数の形であるかもしれない。例えば、１つの実施形態の中でRSAキーは1024から4096ビットを持った数を必要とするかもしれない。そしてAESキーは256ビット数を必要とするかもしれない。加えて、１つの実施形態において、ホスト９０のアプリケーションは、大きくて３２キロバイト小さくて８ビットの乱数を求めるかもしれない。
【００１９】
ステップ４０２では、ディスクドライブ１００は、特定の同心データ・ストレージ・トラック２４２に関して、リード・ライトヘッド１０４のPESをサンプリングする。１つの実施形態において、PESをサンプルリングするために使われる特定の同心データ・ストレージ・トラック２４２は、リード・ライトヘッド１０４が現在置かれている同心データ・ストレージ・トラック２４２である。あるいは、ステップ４０１で乱数のための要求を受けると、ディスクドライブ１００は、ランダムに決められた同心データ・ストレージ・トラック２４２上で、ステップ４０２の位置誤差信号サンプリングを行うかもしれない。いずれかの場合で、各々の位置誤差信号サンプルは、現在のトラックの中心に関して、リード・ライトヘッド１０４の位置誤差の量を表わしている符号付きの数であり、ビットの束、例えば、１６ビットや３２ビットなどによって表わされる。ステップ４０２において測定された位置誤差信号サンプルの数は、ステップ４０１において要求された乱数のビット長に依存するかもしれない。ここで、１つの位置誤差信号サンプルはビットごとに得られる。例えば、ステップ４０１で、３２ビットの乱数が要求された際、ステップ４０２において、３２位置誤差信号サンプルが得られる。
【００２０】
ステップ４０３において、所望のビット数の乱数を作るために多数の位置誤差信号サンプルのパリティビットが連結されている。業界で知られているように、パリティビットの値は特定の位置誤差信号サンプルのビットを合計することによって決定される。もし、その合計が偶数であれば、パリティの値は０である。もし、合計が奇数であれば、パリティの値は１である。各々の位置誤差信号サンプルは、振動と温度と大気圧のような環境要素が原因でランダムに、連続的に変化するので、各々のパリティビットの値もまたランダムに変化する。従って、例えば、位置誤差信号パリティビットのような多数のランダム値のビットを連結することによって、所望のビット長の乱数が生成されるかもしれない。１つの実施形態において、１つのステップで要求された位置誤差信号のパリティビットの数を連結することによって、ステップ４０３において乱数が形成される。例えば、ステップ４０２において、１２８個の位置誤差信号サンプルが取得され、ステップ４０３において、１２８ビット数を生成するために、位置誤差信号サンプルから１２８個のパリティビットが連結される。他の実施形態において、ステップ４０３において、始めにより小さなビット長を形成することによって、乱数が形成される。その時、より大きな数を形成するために、より小さなビット長の数が集められる。このように、１つの連結機能は多くの異なるビット長の乱数を集めるために使われることができる。例えば、４つの３２ビットの数の束が１２８ビット乱数を形成するために集められ、８つの３２ビットの数が２５６ビットの乱数を形成するために集められる等の可能性がある。
【００２１】
また、ステップ４０１において乱数の要求を受けることより前に、ステップ４０２からステップ４０３において描かれているように、１以上の乱数が形成されるかもしれない。このような実施形態において、上に描かれているように連結されたパリティビットから１以上の乱数が形成されるが、ディスクドライブ１００の通常の操作の間に形成され、将来の使用のために、DRAM２０２内に、フラッシュメモリ２０１内に、そして/または磁気ディスク１１２上に格納されるかもしれない。このように、ステップ４０１における乱数の要求の前に、位置誤差信号のサンプリングとパリティビットの計算とパリティビットの連結が行われるかもしれないので、とても速くディスクドライブ１００によって所望のビット長の乱数が提供されるかもしれない。このような１つの実施形態において、様々なビット長の乱数が格納される。様々なビット長は、例えば、６４ビット、１２８ビット、２５６ビットなどである。他のこのような実施形態において、シングルビット長の乱数が格納される。このシングルビット長は、例えば３２ビットの十分小さなサイズであり、ステップ４０１において、ディスクドライブ１００が乱数の要求を受けた際、これらの小さなビット長の数は、より大きなサイズに組み立てられることができる。
【００２２】
ステップ４０４において、ステップ４０３において発生された乱数は、決定論的乱数ビット発生器（Deterministic random bit generator: DRBG）によって、さらに処理される。業界において、様々な決定論的乱数ビット発生器が知られており、ここでは記述されていない。ステップ４０２からステップ４０３によって発生された乱数を、決定論的乱数ビット発生器はさらにランダムにする。加えて、エントロピーのソース、例えば位置誤差信号は、乱数を生成するために直接的に使用されないので、決定論的乱数ビット発生器を用いたステップ４０２からステップ４０３における乱数を処理することによって、連邦情報処理規格（Federal Information Processing Standards: FIPS）を満たすことができる乱数を生成する。１つの実施形態において、決定論的乱数ビット発生器に与えられるエントロピーの量、それはステップ４０３において発生された乱数である、は決定論的乱数発生器によって生成された乱数と同じビット長を持つ。その結果、決定論的乱数ビット発生器の入力のランダムさを最大化することによって、本当の乱数発生器ではない決定論的乱数発生器の安全性はかなり高められる。
【００２３】
ステップ４０５において、決定論的乱数ビット発生器は連邦情報処理基準のコンプライアンスの要求するセルフテストを経る。乱数発生アルゴリズムが“ハングアップ”を持ち、同じ乱数が繰り返し発生される固定状態にロックされている状態を、このセルフテストはチェックする。このように、ステップ４０４において発生された乱数は決定論的乱数ビット発生器によって発生された直前の乱数と比較される。
【００２４】
図５はステップ４０４と、ステップ４０５と、ステップ４０６と、ステップ４０７を概念的に描いているブロック図である。始めに、DRBG出力バッファ５６０の中に存在する値はコーラー・バッファ５７０にコピーされる。その時、位置誤差信号サンプルの連結されたパリティビット５４０をエントロピーの入力として使用して乱数を発生し、その乱数をDRBG出力バッファ５６０の中に格納する（ステップ４０４）。２つのバッファ、つまりDRBG出力バッファとコーラー・バッファ５７０、の中の値はその後比較される（ステップ４０５）。もし、それらの値が異ならなければ、セルフテストは失敗し、ホスト９０に通知される。もし、セルフテストを通過すれば、アプリケーションによる使用のためのコーラー・バッファ５７０の中に、DRBG出力バッファ５６０の中の値がコピーされる（ステップ４０６）。その後、決定論的乱数ビット発生器５５０は新しい乱数を生成するために呼び出され、DRBG出力バッファ５６０の中に新しい乱数が格納される（ステップ４０７）。新しい乱数を発生させ、その乱数をDRBG出力バッファ５６０の中に格納することなしに、乱数が発見されることができ得る間の数日または数週間、乱数の要求が全く生じない際のように長時間、DRBG出力バッファ５６０の中に、アプリケーションによる使用のためにリリースされた乱数が格納されたままであるかもしれないということは、業界の一部の熟練の人は評価するだろう。
【００２５】
乱数を要求しているアプリケーションがホスト９０上のアプリケーションであった際、ステップ４０６とステップ４０７の代わりに、ステップ４１１からステップ４１４が実行される。始めに、DRBG出力バッファ５６５の中に存在している値は、コーラー・バッファ５７５にコピーされる。その際、決定論的乱数ビット発生器５５５はDRBG出力バッファ５６０の中に格納されている乱数をエントロピー入力として使用し乱数を生成し、その乱数をDRBG出力バッファ５６５の中に格納する（ステップ４１１）。２つのバッファ、つまりDRBG出力バッファ５６５とコーラー・バッファ５７５、の値は比較される（ステップ４１２）。もし、それらの値が異ならなければ、セルフテストは失敗し、ホスト９０に通知される。もし、セルフテストを通過すれば、ホスト９０で動いているコーラー５８５による使用のためにコーラー・バッファ５７５の中に、DRBG出力バッファ５６５の中の値がコピーされる（ステップ４１３）。その後、決定論的乱数ビット発生器５５５が新しい乱数を生成するために呼び出され、その新しい乱数はDRBG出力バッファ５６５の中に格納される（ステップ４１４）。これは、ドライブ１００の外部にあるコーラーへ乱数を供給するための１つの可能な構成を描いている。５４０の出力またはその他のソースから直接エントロピーの入力を受け入れるように、決定論的乱数ビット発生器５５５を構成することも可能である。
【００２６】
ステップ４０４において使用されている決定論的乱数ビット発生器（DRBG ５５５）と比較して、ステップ４１１において使用されている決定論的乱数ビット発生器（DRBG ５５０）は異なる構成を持っている。これは、外部のホストに乱数を供給するために使用されるドライブの内部で暗号化キーを発生させるための乱数を供給するために同じアルゴリズムを使用することは、ディスクドライブ暗号化キーの安全性を潜在的に危うくするからである。すなわち、外部の第三者による乱数アルゴリズムの弱点の発見、及び/または、キーを発見するために必要とされる検索を大いに減らすかもしれないアルゴリズムの特徴の推定が、ホストに供給される乱数の大きなサンプルによって可能になるかもしれない。乱数発生のためのホストによる位置誤差信号に基づいたエントロピーソースに、まだアクセス可能な間、ディスクドライブの暗号化キーアルゴリズムの暴露を、多くの決定論的乱数ビット発生器を使用することで防ぐことを、実施形態は予想している。
【００２７】
ディスクドライブの中の乱数をすばやく発生させるための手段が、方法４００によって提供される。位置誤差信号はエントロピー、例えば乱雑さ、の良いソースであり、高いサンプリングレートで位置誤差信号が測定されるので、１秒あたり１０００個の本当の乱数を、方法４００は生成することができる。加えて、ディスクドライブのファームウェアの中に、方法４００はすっかり実装されることができる。これによって、追加の論理ゲートと、追加のレジスタと、またはドライブの中のほかの特別なハードウェアのための必要性を取り除く。さらに、通常の使用において、方法４００において使用されるエントロピーのソースは、ディスクドライブにすでに利用可能な情報を当てにしている。それゆえ、ディスクドライブを遅くするかもしれない、および/またはディスクの機械的信頼性を壊すかもしれない追加的で機械的な操作または計算は全く必要とされない。
【００２８】
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。更に、異なる実施形態に亘る構成要素を適宜組み合せてもよい。
【符号の説明】
【００２９】
９０…ホスト、１００…ディスクドライブ、２００…回路基板、２０１…フラッシュメモリ、２０３…コンボチップ、３００…システム・オン・チップ、５５０，５５５…決定論的乱数ビット発生器、５６０，５６５…ＤＲＢＧ出力バッファ。
【図１】
2011076590.tif 000003
【図２】
2011076590.tif 000004
【図３】
2011076590.tif 000005
【図４】
2011076590.tif 000006
【図５】
2011076590.tif 000007