(57)【要約】本発明は乱数発生器によって生成された乱数をリアルタイムにてテストする方法及び装置に係る。乱数が生成される度に、一度に１つのｋビット重複ブロックに指数カウント演算が施される。このカウント動作においては、前のｋビットブロックからの最も左のビットを脱落し、新たなランダムビットをこの右に加えることで、新たなｋビットブロックが形成され、こうしてブロックのサイズが維持される。このｋビットの二進値を用いて、オーバラッピングカウント動作のためのアキュムレータが選択される。これら指数平均の全ての出力を所定の許容範囲と比較することで、乱数発生器によって生成されたビットが十分にランダムであるか否か決定される。
2005518047.tif 000002
【特許請求の範囲】
【請求項１】
乱数を生成する際にランダム性をテストする方法であって、
二進ビットのランダムシーケンスを生成するステップと、
前記生成されたダンダムシーケンスに関して、一度に所定のｋビットブロック区間について指数オーバラッピングカウント演算を施すことで、これら所定の各ブロックに対する発生の平均数を計算するステップと、
前記指数オーバラッピングカウント演算の出力を所定の許容範囲と比較することで、前記生成されたランダムシーケンスが十分にランダムであるか否か決定するステップと、
を含むことを特徴とする方法。
【請求項２】
更に、前記指数オーバラッピングカウント演算の出力が前記所定の許容範囲の間に入る場合は、前記生成されたシーケンスは十分にランダムであるものと決定するステップを含むことを特徴とする請求項１記載の方法。
【請求項３】
更に、前記指数カウント演算の出力が前記所定の許容範囲の外にある場合は、前記生成されたランダムシーケンスが十分にランダムではない旨通知するステップを含むことを特徴とする請求項１記載の方法。
【請求項４】
更に、前記指数カウント演算の出力が前記所定の許容範囲の外にある場合は、ランダムシーケンスの新たな組を生成するステップを含むことを特徴とする請求項３記載の方法。
【請求項５】
前記指数平均カウント演算（Ａ）は式：
Ａｎｅｗ  ＝  α・Ａｏｌｄ  ＋  ｂ
に従って更新され、
ここで、α＝１−１／ｎであり、αは０と１の間の値（０＜α＜１）であり、ｂはｋビットブロックの二進値が発生した場合は１であり発生しなかった場合は０であることを特徴とする請求項１記載の方法。
【請求項６】
指数オーバラッピングカウント演算は、新たなランダムビットが生成される度に、前記所定のｋビットブロックから最も左のビットを脱落させ、前記新たなビットを前記所定のｋビットブロックの右に付加することで遂行されることを特徴とする請求項１記載の方法。
【請求項７】
前記所定の許容範囲は：
［ｎ／２ｋ＋１−ｃ・√ｎ／２ｋ＋１、ｎ／２ｋ＋１＋ｃ・√ｎ／２ｋ＋１  ］    
として定義され、ｃは所望のセキュリティ閾値レベルが達成されるように選択されることを特徴とする請求項５記載の方法。
【請求項８】
乱数発生器の出力をテストする方法であって、
（ａ）前記乱数発生器を用いて二進ビットの連続ストリームを生成するステップと、
（ｂ）所定のｋビットブロックに関して、各ビットに対する所定の時間期間において、オーバラッピング指数カウント演算を遂行及び追跡することで、対応する頻度値を得るステップと、
（ｃ）全ての前記計算された指数平均値を所定の許容範囲と比較するステップと、
（ｄ）前記計算された指数平均値のいずれかが前記所定の許容範囲の外にある場合、前記生成された二進数はランダムでないことを決定するステップと、
を含むことを特徴とする方法。
【請求項９】
更に、前記ステップ（ａ）から（ｃ）を、前記計算された指数平均値のいずれかが前記所定の許容範囲の外にあるようになるまで繰り返すステップを含むことを特徴とする請求項８記載の方法。
【請求項１０】
更に、前記計算された指数平均が前記所定の許容範囲から所定の回数より多く繰返して外れた場合、非ランダムな数が生成された旨通知するステップを含むことを特徴とする請求項９記載の方法。
【請求項１１】
更に、前記計算された指数平均が前記所定の許容範囲から所定の閾値の値より多く繰返して外れた場合、乱数の新たな組を生成するステップを含むことを特徴とする請求項９記載の方法。
【請求項１２】
前記乱数発生器がスマートカード内に埋設されることを特徴とする請求項８記載の方法。
【請求項１３】
前記指数平均演算（Ａ）は式：
Ａｎｅｗ  ＝  α・Ａｏｌｄ  ＋  ｂ
によって定義され、
ここで、α＝１−１／ｎであり、αは０と１の間の値（０＜α＜１）であり、ｂは前記ｋビットブロックの二進値が前記ステップ（ｂ）において発生した場合は１であり発生しなかった場合は０であることを特徴とする請求項８記載の方法。
【請求項１４】
前記オーバラッピングカウント演算は、新たなランダムビットが生成される度に、前記所定のｋビットブロックから最も左のビットを脱落させ、前記新たなビットを前記所定のｋビットブロックの右に付加することで遂行されることを特徴とする請求項８記載の方法。
【請求項１５】
前記所定の許容範囲は
［ｎ／２ｋ＋１−ｃ・√ｎ／２ｋ＋１、ｎ／２ｋ＋１＋ｃ・√ｎ／２ｋ＋１  ］    
として定義され、ｃは所望のセキュリティ閾値レベルが達成されるように選択されることを特徴とする請求項１３記載の方法。
【請求項１６】
乱数シーケンスのランダム性をテストする装置であって、
二進ビットの実質的にランダムなシーケンスを生成するランダム発生器ユニットと、
前記ランダム発生器ユニットの出力に結合され、前記生成されたランダムシーケンスが十分にランダムであるか否かを検出する検出器ユニットとを備え、
前記生成されたダンダムシーケンスに関して、所定のｋビットブロック区間毎に指数オーバラッピングカウント演算を施すことで、各所定のブロックに対する発生の平均数が計算され、前記指数オーバラッピングカウント演算の出力が所定の許容範囲の外にある場合は、前記生成されたランダムシーケンスは十分にランダムではないと決定されることを特徴とする装置。
【請求項１７】
更に、前記ランダム発生器ユニット及び前記検出器ユニットの出力に結合され、前記生成されたランダムシーケンスが十分にランダムであると決定された場合、前記生成されたランダムシーケンスを下流のアプリケーションに向けて通過させるためのスイッチユニットを備えることを特徴とする請求項１６記載の装置。
【請求項１８】
更に、前記指数オーバラッピングカウント演算の出力が前記所定の許容範囲の外にある場合、警告信号を送信するための手段を備えることを特徴とする請求項１６記載の装置。
【請求項１９】
前記指数オーバラッピングカウント演算Ａは式：
Ａｎｅｗ  ＝  α・Ａｏｌｄ  ＋  ｂ
に従って計算され、
ここで、α＝１−１／ｎであり、αは０と１の間の値（０＜α＜１）であり、ｂは前記ｋビットブロックの二進値が発生した場合は１であり発生しなかった場合は０であり、Ａｏｌｄは、オペレータによって初期設定されることを特徴とする請求項１６記載の装置。
【請求項２０】
前記所定の許容範囲は
［ｎ／２ｋ＋１−ｃ・√ｎ／２ｋ＋１、ｎ／２ｋ＋１＋ｃ・√ｎ／２ｋ＋１  ］    
として定義され、ｃは所望のセキュリティ閾値レベルが達成されるように選択されることを特徴とする請求項１９記載の方法。
【請求項２１】
その上に格納されたインストラクションのシーケンスを表すデータを含むマシーンにて読出し可能な媒体であって、前記インストラクションのシーケンスが、プロセッサによって実行された場合、そのプロセッサに対して
二進ビットの乱数のストリームを生成させ、
所定のｋビットブロックに関して各ビットに対する所定の時間期間において指数オーバラッピングカウント演算を計算及び追跡することで、対応する二進値を得させ、
全ての前記計算された指数平均を所定の許容範囲と比較することで、前記生成された二進数が十分にランダムであるか決定させる
ことを特徴とするマシーンにて読出し可能な媒体。
【請求項２２】
前記計算された前記指数平均が前記所定の許容範囲の外にある場合、前記生成された二進数は十分にランダムではないことを特徴とする請求項２１記載のマシーンにて読出し可能な媒体。
【請求項２３】
前記指数平均は式
Ａｎｅｗ  ＝  α・Ａｏｌｄ  ＋  ｂ
によって定義され、
ここで、α＝１−１／ｎであり、αは０と１の間の値（０＜α＜１）であり、ｂは前記ｋビットブロックの二進値が発生した場合は１であり発生しなかった場合は０であることを特徴とする請求項２１記載のマシーンにて読出し可能な媒体。
【請求項２４】
オーバラッピングカウント演算は、新たなランダムビットが生成される度に、前記所定のｋビットブロックから最も左のビットを脱落させ、前記新たなビットを前記所定のｋビットブロックの右に付加することで遂行されることを特徴とする請求項２１記載のマシーンにて読出し可能な媒体。
【請求項２５】
前記所定の許容範囲は
［ｎ／２ｋ＋１−ｃ・√ｎ／２ｋ＋１、ｎ／２ｋ＋１＋ｃ・√ｎ／２ｋ＋１  ］    
として定義され、ｃは所望のセキュリティ閾値レベルが達成されるように選択される、ことを特徴とする請求項２３記載のマシーンにて読出し可能な媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、乱数発生器の分野、より詳細には、生成された乱数の統計的特性をリアルタイムにて分析するデジタルデータ処理装置及び方法に関する。
【背景技術】
【０００２】
スマートカードは典型的にはクレジットカードと同サイズのプラスチックカードから成り、その上に埋設された多様のトランザクションを可能にするためにマイクロプロセッサを含む。このカードは、他のインタフェース、つまり、カード読出し端末との間で情報を交換するための、多様な暗号アルゴリズムを遂行するための暗号モジュール（encryption module）を含む。この暗号モジュールを介して、カードからの信号はカードの外側の複数の金属接点（metal contacts）に導かれるが、これらはカード読出し端末の類似の接点と物理的に接触する。
【０００３】
暗号モードの際には、幾つかの形態の暗号法において、乱数発生器が、意図された受信端のみが正当な送信端によって送信されたメッセージ（つまり、音声或いはデータ）を理解するできるようにするために用いられる。ただし、不当な受信者及び不当な送信者による、メッセージの暗号化において用いられる乱数の生成プロセスの破壊（breaking）はより巧妙化しており、安全な通信のために予測不能な乱数を生成することの要請は一層大きくなっている。
【０００４】
不正者によるセキュリティの破壊に加えて、乱数発生器は動作の最中に非ランダムな数（non-random numbers）を生成することがある。乱数発生器がある時間期間に渡って一連の１及び０を生成する場合、典型的には、乱数発生器のハードウェア要素内には、熱が生成される。例えば、１なるビットを生成するためには、０なるビットよりも多くの電力が消費される。１なるビットの長いシーケンスが生成された場合、この電気回路は熱くなる。この回路がそれが熱いときに１なるビットを生成した場合、この回路は、”ラッチアップ（latch up）”し、１なるビットのみを生成することとなる。この回路が熱いとき、０なるビットが生成された場合は、異なる効果が発生する。この場合は、１なるビットの長いサブシーケンスは極めて稀れとなり、これは非ランダム性（non-random property）を与える。暗号アプリケーションの場合、これらの任意の非ランダム性は致命的な結果、つまりセキュリティの破壊をもたらしかねない。従って、ランダム性のテストを行うときは、ハードウェアの不正な変更（hardware tampering）と要素の故障（component failure）の両方を検出することが必要となる。
【発明の開示】
【０００５】
本発明は、生成された乱数が不当な者による暗号解析に対してより強くなるように、オンラインランダム性のテスト（on-line randomness test）を行うための方法及び装置を提供することで、上述の問題を克服し、特別の利点を提供することに向けられる。
【０００６】
本発明の一つの態様によると、乱数を生成する際にランダム性をテストする方法が提供される。この方法は、二進ビットのランダムシーケンスを生成するステップと、所定のｋビットブロック毎にオーバラッピングカウント演算を施すことで、可能な各ｋビット長のブロックに対する発生の平均数を計算するステップと、各ｋビットブロックに対する発生の頻度が所定の許容範囲内にあるか否かを決定するステップと、を含む。この方法は、更に、これら所定のｋビットブロックの少なくとも一つの発生の頻度が所定の許容範囲の外にある場合は、それら生成されたランダムシーケンスは十分にランダムではない旨通知するステップと、これら所定のｋビットブロックの少なくとも一つの発生の頻度がこの所定の許容範囲の外にある場合は、乱数の新たな組を生成するステップを含む。
【０００７】
本発明のもう一つの態様によると、乱数発生器の出力をテストする方法が提供される。この方法は、（ａ）乱数発生器を用いて一連のビットを生成するステップと、（ｂ）可能な各所定のｋビットブロックに関して、所定の時間において、オーバラッピングカウント演算を遂行及び追跡するステップと、（ｃ）追跡されたオーバラッピングカウント演算の各々に対して、指数平均Ａを、所定の時間において計算するステップと、（ｄ）計算された指数平均を所定の許容範囲と比較するステップと、（ｅ）計算された指数平均が所定の許容範囲内に収まる場合は、生成された二進数は十分にランダムであることを決定するステップと、を含む。この方法は、更に、上述のステップ（ａ）から（ｄ）を、これら計算された指数平均が前記所定の許容範囲から所定の回数より多く外れるまで繰り返すステップと、ステップ（ｄ）におけるテストに閾値の値より多く繰返して失敗した場合、非ランダムな数が生成された旨通知するステップと、ステップ（ｄ）におけるテストに所定の回数より多く繰返して失敗した場合、新たなセットの乱数を生成するステップ、とを含む。
【０００８】
本発明の更にもう一つの態様においては、乱数のシーケンスのランダム性をテストする装置が提供される。この装置は、 二進ビットの実質的にランダムなシーケンスを生成するための乱数発生器ユニットと、このランダム発生器ユニットの出力に接続され、生成されたランダムシーケンスが十分に予測不能であるか否かを検出するための検出器ユニットとを備える。所定のｋビットブロック毎に、オーバラッピング指数カウント演算を施すことで、各可能なｋビットブロックの発生の平均数が計算され、これら指数アキュムレータＡのいずれかの出力がその所定の許容範囲の外にある場合は、生成されたランダムシーケンスはランダムではないと決定される。この装置は、更に、これらランダム発生器ユニット及び検出器ユニットの出力に接続され、生成されたランダムシーケンスが十分にランダムであると決定された場合、生成されたランダムシーケンスを下流のアプリケーションに向けて通過させるためのスイッチユニットと、指数アキュムレータＡのいずれかの値がその所定の許容範囲の外にある場合、警告信号を送信するための手段を備える。
【０００９】
さらにもう一つの態様においては、本発明は、特定の用途に合わせて、ハードウェア、ソフトウェア、或いはハードウェアとソフトウェアの組合せにて実現される。
【００１０】
さらにもう一つの態様においては、本発明は、単純な、信頼性の高く、かつ、安価な装置として実現される。
【００１１】
さらにもう一つの態様においては、本発明は、スマートカード内に埋設された乱数発生器の機密性を増加させる。
【００１２】
これら及び更なる長所が以下の詳細な説明を添付の図面を参照しながら読むことで一層明白となるものである。
【発明を実施するための最良の形態】
【００１３】
以下の説明においては、本発明の完全な理解が得られるように、制限ではなく解説の目的で、特定のアーキテクチャ、インタフェース、技術等が具体的に詳細に説明される。ただし、当業者においては明らかなように、本発明は、これら個々の細部とは離れた他の態様として実現することもできる。単純かつ明快さの目的で、公知のデバイス、回路、及び方法の詳細な説明は、本発明の説明が不要な詳細のためにかえって妨げられないように省かれている。
【００１４】
図１は、本発明の一つの実施例による生成された乱数の幾つかの統計量をリアルタイムにてテストするため乱数発生システム１０の機能ブロック図である。システム１０は、乱数発生モジュール（RG）１２、検出器１４、及びスイッチ１６を備える。乱数発生モジュール（RG）１２は、一連の乱数を出力する。乱数の発生は当分野において周知であり、様々なやり方にて遂行できることに注意する。検出器１４は、RG１２によって出力された乱数を、それらのランダム性について所定の基準（後に説明する）に従ってテストし、それらがテストに合格した場合は、スイッチ１６は、それら生成された乱数が、下流アプリケーション、例えば、RG１２によって供給されたこれら乱数を用いる、任意の回路、システム、プロセス、アプリケーション等に送られることを許す。スイッチ１６は、検出器１４の制御下で、生成された乱数が十分にランダムではないと判断された場合には、生成された乱数の送信を停止するために不能にされる。スイッチ１６は、暗号（cryptography）システム、オーディオ或いはビデオ雑音発生器、コンピュータプログラム、或いは他のデバイス及びプロセスへの入力を表す。例えば、乱数発生システム（random number generating system）１０は、暗号プロトコル（cryptographic protocols）において、公知のDiffie-Hellman機密共有プロトコルにおけるやり方と同様に、送信端と受信端との間の機密通信（confidential communication）に対する暗号キーを確立するために用いられる機密データを提供する。これら乱数は、意図された受信者が送信されたメッセージの内容を理解できるようするために、メッセージのセグメントの暗号化或いは解読のための暗号キーを生成するために用いることが考えられる。暗号化された信号の形成に加えて、本発明による技術による乱数のテストは、そこにおいて乱数が利用される他の実現、つまり、ギャンブリング、シミュレーション、統計的サンプリング等に用いることもできる。
【００１５】
乱数発生器は、１つ或いは複数の乱数が与えられたとき、生成されたランダムシーケンスの任意の他のビットが５０％以上の確率にて予測することが不可能な場合は安全であると見なされる。従って、本発明の基本原理は、１つ或いは複数の乱数が与えられたとき、RGモジュール１２をテストすることを伴う。より具体的には、生成されたランダムシーケンスの出力が、検出器１４によって分析され、生成された乱数が無許可の者によって予測不能であることが確保される。
【００１６】
以下では、乱数シーケンスの統計的特性のテストに関して図２及び３を参照しながら詳細に説明する。
【００１７】
図２の説明に移るが、これら乱数は、本発明の一つの実施例に従って、RGモジュール１２が動作している最中に、それら生成された乱数が適切であることを確保するためにリアルタイムにてテストされる。本発明は、例えば、スマートカードのように、デバイス内にマイクロプロセッサとランダムシーケンス発生器が組み込まれている場合は、ソフトウェアとして容易に実現することができ、これらテストのためには、数行の追加コードと僅かなメモリが要求されるのみである。乱数のテストは、指数平均アキュムレータを初期化することから開始される。図２に示されるように、RGモジュール１２によって生成されたランダム値の連続するストリームには、オーバラッピングカウント動作（overlapping count operation）が施されるが、この動作においては指数平均計算（exponential-average computation）の遂行を助けるために、予めセットされたビットのブロックｋが、リングバッファ内に入れられる。ランダムシーケンスの各ｋビットブロックに対する発生の平均数は、対応するアキュムレータAには１を加え、他のアキュムレータには０を加え、同時に、これらの全てを一定のファクタα（後に説明）だけ低減することによって一度に更新される。こうして、本発明は、全ての可能な異なるｋビットブロックに対する発生の頻度を含む複数のアキュムレータを用いる。各アキュムレータには、初期値が割当てられることに注意する。例えば、ｋ＝３の場合、ランダムシーケンスの第一のブロックは（０、１、１）、対応する二進値は３となる。ｋの値は、単に解説の目的で、３とセットされることに注意する。こうして、図面に示されるｋの値は、本発明の範囲に制限を課すものではないことに注意する。このランダムシーケンスの第二のブロックは（１、１、０）、対応する二進値は６となる。（１、０、１）なるこのランダムシーケンスの第三のブロックについては、対応する二進値は５となる。新たなビットが生成される度に、前に集められたこれらビットのブロックは右にシフトされ、最も左のビットは脱落され、新たなビットが右に加えられる。こうして、ｋビットのオーバラッピングブロック（overlapping blocks）が決定され、これらを用いて、各ｋビットブロックに対して発生の数を計算するために用
いられるアキュムレータが選択される。
【００１８】
この実施例においては、新たなｋビットブロックが生成され、対応する二進インデックス値（binary indexing value）が計算され、指定された（indexed）アキュムレータAが更新される度に、生成された乱数が十分にランダムであるか否か、つまり、ブロック発生の数が概ね等しいか否か、決定される。つまり、全ての可能なk−ビットワードが、そのシーケンス内に概ね同一の頻度にて現れることが要求される。これを達成するために、各アキュムレータの値はある所定の範囲値と比較される。任意のアキュムレータの値が、この指数平均計算の際に、この所定の範囲から外れた場合、それら生成された乱数は、無許可の者によって予測可能であると見なされる。
【００１９】
本発明は、ランダムシーケンスをリアルタイムにてテストすることを目指すために、古いブロックのカウンティング値は、低減された或いは零なる寄与を有することを必要とされることに注意する。つまり、 ランダムシーケンスの統計的特性を評価するためのテストは絶えず実行され、このため、これらカウンタは定期的にクリアされることを必要とされる。本発明の教示から逸脱することなく用いることができる様々なカウンティング方法が存在するが、ただし、好ましくは、後の説明するように、オーバラッピングカウンティング動作（overlapping counting operation）の際には指数平均法（exponential averaging）が用いられる。
【００２０】
アキュムレータAが平均発生値（average occurrence value）を得るために用いられるものとすると、乱数が生成される度に、０と１との間とされる係数α（０＜α＜１）がアキュムレータＡに乗算され、次にインジケータ値（indicator value）ｂが加えられる。つまり、Anew＝α・Aold＋ｂが計算される。この計算アプリケーション（counting applications）においては、事象が発生した場合は、ｂ＝１とセットされ、他の場合は０とセットされる。有効な平均化効果（averaging effects）を得るためには、αに対する値は、１に接近するように選択される。つまり、α＝１−1/n、ｎ＞＞１とされる。この場合は、logα≒−１/nとなり、平均化されたビットの半減期（half-life）は、k≒n・log2≒0.30103・ｎとなる。nビットの後、最も古いビットの重みは、(1-1/n）ｎ≒1/e≒0.367879となる。ここでｅは、自然対数の底（オイラー定数）であり、このため、この項ｎはビットの自然寿命（natural life）と呼ばれる。仮に、全ての値が１である場合は、アキュムレータ値は、1+α+α2+...=1/(1-α)=nとなり、他方、全てのビットが０の場合は、アキュムレータ値は０となる。指数平均（exponential average）の期待値（expected value）は、個々のビットの期待値の指数平均：つまり、1/2+1/2α+1/2α2+...＝n/2となることに注意する。１が１ビットおきに現れた場合は、アキュムレータ値は、1+α2+α4+...=1/(1-α2)とα＋α3+α5+...=α/(1-α2)との間で交互し、これらは、1/2アパート[n/(2n-1)]に非常に接近するが、この平均値も、(1+α)/2(1-α2)=n/2となることに注意する。
【００２１】
上述のように、指数平均化は、アキュムレータはある０＜α＜１なるファクタにて低減するため、カウンタをクリアする働きを有し、このため、アキュムレータが動作モードの際に決して大きくなりすぎることは決してない。各アキュムレータに対していったん指数平均が遂行されると、この指数平均の値が、後に説明するやり方にて得られる所定の許容範囲と比較される。
【００２２】
シーケンスRが真にランダムである場合は、長さｎのシーケンス内のある特定のk‐ビットブロックに対する発生の数は、μ＝ｎ/2k+1、δ＝√n/2k+1を有する正規分布に接近することが容易にわかる。単一のバイアスのないランダムビットの標準偏差はδ＝1/2であることに注意する。こうして、標準モーメンタム（standard momentum）の二乗D2は、以下のような線形関数となる：
D2(bo+αb1+α2b2+...)=D2(b0)+αD2(b1)+α2D2(b2)+...=1/4+1/4α+1/4α2+.. =n/4
従って、ランダムな0/1ビットのパラメータα＝1-1/n（自然寿命n）を有する指数平均の標準偏差はδ＝√n/2となり、これは、ｎ個の要素の算術平均の標準偏差と等しくなる。
【００２３】
従って、各ブロックの発生の数は、
【表１】
2005518047.tif 000003
なる確率にて、以下の区間内に入るべきである：
[n/2k+1−c・√n/2k+1、n/2k+1＋c・√n/2k+1 ]                   (1)
【００２４】
ランダムシーケンスのテストにおいては、ブロック発生の数（number of block occurrences）は、大体同一であるべきであることに注意する。ここで”大体（roughly）”とは、ｎ個のサンプルを考えた場合、それらのブロックの発生（block occurrences）は、 [n/2k+1−c・√n/2k+1、n/2k+1＋c・√n/2k+1 ] の範囲内に入るべきことを意味する。ここで、定数ｃは、全てのシーケンスの内のなんパーセントが、その区間に入るかを制御し、c/2=1とした場合は68.3％が、c/2=2とした場合は95.5％が、そしてc/2=3とした場合は99.7%が、その区間内に入るべきことを期待される。ｋ及びｎの値は、オペレータによって、複雑さとテストの強力さとの間の良好なトレードオフが得られるように、選択することも、或いは予め固定することもできる。非ランダム性をテストするために用いられる[n/2k+1−c・√n/2k+1、n/2k+1＋c・√n/2k+1 ] の所定の範囲は、乱数の良好な既知のソースを用いての広範なシミュレーションに基づいて決定される。
【００２５】
指数平均アキュムレータが所定の範囲から外れた場合、これは、そのシーケンスは、不規則なワード分布（irregular word distribution）示すことを示唆する。この場合は、ユーザに、そのシーケンスがランダムではないこと、或いは無許可の者による不当な暗号解析を受け易いことを知らせる警告が送くられる。代替として、テストに繰返して何度失敗したらユーザに通知を送るかの閾値を設定することもできる。こうして、指数平均が限界内に入るか否かのテストが、セットのランダムシーケンスに関して開始され、生成されたランダムシーケンスが許容範囲内に収まるか否か決定される。この許容範囲は、オペレータによって、生成されたランダムシーケンスが無許可の者にとって予測不能であるか否かを決定できるようにセットされる。加えて、ランダム性をテストするための更なるステップを、計算された指数平均値の、所定の許容範囲上の分布に基づいて達成（遂行）することもできる。つまり、指数平均値は、所定の許容範囲内に一様に分布することを要求される。指数平均値が計算される度に、それが、許容範囲のどの部分に落ちるか、例えば、それが、許容範囲の左半分に落ちるか、或いは右半分に落ちるか、監視される。左半分内に落ちる頻度が右半分に落ちる頻度と概ね等しい場合、このパラメータは、生成された乱数が予測不能であるとの指標として用いることができる。
【００２６】
図３は、本発明によるランダムシーケンスの統計的品質（ランダム性）をテストするための動作ステップを解説する流れ図である。長方形の要素は、コンピュータソフトウェアインストラクションを示し、菱形の要素は、長方形のブロックによって表されるコンピュータソフトウェアインストラクションの実行に影響を与えるコンピュータソフトウェアインストラクションを表す。代替として、これら処理及び判定ブロックは、機能的に等価な回路、例えば、デジタル信号プロセッサ回路或いは特定用途向け集積回路（ASIC）によって遂行されるステップを表すものと考えることもできる。多くのお決まりのプログラム要素、例えば、ループ及び変数の初期化及び一時的数値変数（temporary variables）の使用は示されていないことに注意する。当業者においては理解できるように、特に示されてない限り、ここで説明されるこれらステップの特定の順番は単に解説のためのものであり、本発明の精神から逸脱することなく変更することが可能である。
【００２７】
最初に、ステップ１００において、（式１内の）k、ｎ及びｃに対する値が事前に固定されか、或いはオペレータによって予め選択され、カウンタがリセットされる。次に、ステップ１１０において、k-ビットブロックが得られ、その後、ステップ１２０において、指数平均カウンティングが遂行される。新たなランダムビットが生成される度に、前に集められたビットのブロックが右にシフトされ、最も左のビットは脱落され、新たなビットが右に付加される。結果としての、二進数としてのブロックを用いて、2k個のアキュムレータの中から、（比較のための）アキュムレータAが割り出される（指定される）。ステップ１４０において、その指数平均アキュムレータの値がステップ１００において選択された許容範囲の外にある場合は、ステップ１６０において、そのランダムシーケンス内に不規則な分布（irregular distribution）が発生したことが決定され、カウンタが１だけ増分される。発生しない場合は、ステップ１５０においてカウンタがリセットされ、ステップ１１０に戻る。ステップ１８０において不規則な分布が所定の閾値回数よりも多く発生した場合は、ステップ２００においてこのような失敗に関する通知がなされる。代替として、それら生成された乱数を破棄し、新たな乱数を生成するための全プロセスを開始することもできる。
【００２８】
上述の様々なステップは、これらをアプリケーションプログラム内に組み込まれたファンクション内にプログラミングすることで実現することができる。当分野において通常の知識を有するプログラマであれば、これらは、通常のプログラミング技術を用いて、C、Visual Basic、Java（登録商標）、Perl、C++等の言語にて、実現できるものである。一つの実施例においては、図３に示される方法は、（Cプログラミング言語を用いて）実現される：
付録  MS Visual Cコード
【表２】
2005518047.tif 000004
【表３】
2005518047.tif 000005
【表４】
2005518047.tif 000006
上では本発明の幾つかの好ましい実施例について解説されたが、当業者においては理解できるように、本発明の真の範囲から逸脱することなく、様々な変更及び修正や、説明された要素の、同等物での置換が可能である。加えて、多くの修正を、本発明の中心範囲から逸脱することなく、本発明の教示に従って、特定の状況に合わせて、行うことも可能である。従って、本発明は、本発明を実施するために考えられる最良の形態として開示された上述の特定の実施例に限定されるものでなく、本発明は、添付のクレームの範囲に入る全ての形態を包含するものである。
【図面の簡単な説明】
【００２９】
【図１】本発明の一つの実施例による、乱数発生モジュールの略ブロック図である。
【図２】本発明の一つの実施例による、ランダムシーケンスのオーバラッピングカウンティングを示す図である。
【図３】本発明の一つの実施例による、生成された乱数の統計量をテストする動作ステップを解説する流れ図である。
【符号の説明】
【００３０】
１０  システム
１２  乱数発生器（RG）
１４  検出器
１６  スイッチ
【図１】
2005518047.tif 000007
【図２】
2005518047.tif 000008
【図３】
2005518047.tif 000009
【国際調査報告】
2005518047.tif 000010
2005518047.tif 000011
2005518047.tif 000012
2005518047.tif 000013
2005518047.tif 000014