(57)【要約】【課題】  乱数検定が規定する大量の乱数列を生成・保持せずとも、検定に合格した高品質の乱数を出力する乱数生成装置を提供する。【解決手段】  乱数生成手段２は収集したエントロピーと制御手段４が設定した初期値を用いて乱数列を生成する。乱数生成手段２が生成した乱数列は乱数列保持手段３に保持される。検定手段５は、乱数列保持手段３に保持されている乱数列と、乱数列保持手段３に保持されている乱数列を元に乱数生成手段２が生成した一時的乱数に対して検定を行う。検定の結果が合格の場合には、乱数保持手段３に保持されている乱数を出力可能な乱数とする。【選択図】  図１
2006318091.tif 000002
【特許請求の範囲】
【請求項１】
乱数列を生成する乱数生成手段と、データの制御を行う制御手段と、乱数列を保持しておく乱数列保持手段と、乱数列の品質を検定する検定手段とを備え、
前記乱数列保持手段に保持されている乱数列と前記乱数列保持手段に保持されている乱数列を元に前記乱数生成手段が生成した一時的乱数列に対して、前記検定手段が検定を行うことを特徴とする乱数生成装置。
【請求項２】
請求項１記載の乱数生成装置において、
乱数生成装置の外部に備わっている所定の暗号アルゴリズムを実行する暗号処理手段を用いて、前記一時的乱数列を生成することを特徴とする乱数生成装置。
【請求項３】
請求項２記載の乱数生成装置において、
乱数生成装置の外部に備わっている所定の暗号アルゴリズムを実行する暗号処理手段が複数個ある場合は、前記複数個の暗号処理手段から何れかの暗号処理手段を選択し、前期選択された暗号処理手段を用いて、前記一時的乱数列を生成することを特徴とする乱数生成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は任意ビット数の乱数を生成する乱数生成装置に関する。
【背景技術】
【０００２】
従来、様々なデジタル機器において各種信号処理に乱数が使われてきた。また近年、各種機器類のネットワーク化が進むとともにセキュリティ機能が要求されるようになってきたため、より一層乱数が使われる場面が増えている。
【０００３】
そしてセキュリティ機能に使われる乱数の場合には、安全性向上の重要な要素として乱数の一様性、配列の不規則性、十分に長い周期性、前後関係からの予測困難性等統計的な高品質がより求められる傾向があった。
【０００４】
このような乱数が要求される品質を満たしているかどうかを判定する検定には20,000ビットの乱数に対して検定を行うFIPS140-2に準拠した検定法、1Ｍビットの乱数を一本の乱数列とし1,000本程度の乱数列に対して検定を行うNIST SP800-22、10〜11Ｍバイトの乱数に対して検定を行うDIEHARD等がある。
【０００５】
例えば特開2004-310314ではFIPS140-2に準拠した検定法が内蔵され、チップ内部で発生した乱数を出力しながら検定回路により検定を行い、検定終了後乱数保持部から乱数を出力するようになっている。その検定内容は以下の4種類のテストから構成されている。
【０００６】
1. The mono bit test
連続するランダムな20,000ビット中の'1'の数を X としたとき
9,725 < X < 10,275・・・(1)
であれば合格。
【０００７】
2. The long runs test
連続するランダムな20,000ビット中の'1'or'0'の最長連続ビット数を X としたとき
X < 26・・・(2)
であれば合格。
【０００８】
3. The runs test
連続するランダムな20,000ビット中の'1'or'0'の連続ビット数をi、度数をXiとする。ただし、i ≧ 6 の場合 i = 6 とし、iの範囲は 1 ≦ i ≦ 6 とする。Xiの度数計算を'1'と'0'で行い、両方とも Xi が下記(3)〜(8)の範囲内であれば合格。
【０００９】
2,315 ≦ X1 ≦ 2,685・・・(3)
1,114 ≦ X2 ≦ 1,386・・・(4)
527  ≦ X3 ≦ 723   ・・・(5)
240  ≦ X4 ≦ 384   ・・・(6)
103  ≦ X5 ≦ 209   ・・・(7)
103  ≦ X6 ≦ 209   ・・・(8)
4. The poker test
連続するランダムな20,000ビットを4ビット毎に5,000に区切り、その値(0〜15)の度数をf(i)とし、
X = (16/5000)*(Σ[f(i)]^2)-5000 としたとき
2.16 < X < 46.17 ・・・(9)
この検定1〜4までの全ての検定に合格したとき、検定された乱数は高品質な乱数であると判断される。
【特許文献１】特開２００４−３１０３１４号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
しかしながら、上記従来例では検定を行うたびに、検定が必要とする大量の乱数を生成しているので、検定済みの乱数を出力するためには時間がかかるという問題がある。
【００１１】
また、事前に乱数を生成してバッファなどに保存しておき、この保存した乱数に対して検定を行うという方法もある。この場合では、検定に必要な大量の乱数を保存する必要があるため、大容量のバッファが必要となる。しかしながら、空間コストが支配的なシステムでは、コストを削減するために大容量のバッファを持つことができず、検定に必要な大量の乱数を保持できない、という問題がある。
【課題を解決するための手段】
【００１２】
本発明では上記問題点に鑑み、乱数列を生成する乱数生成手段と、データの制御を行う制御手段と、乱数列を保持しておく乱数列保持手段と、乱数列の品質を検定する検定手段とを備え、前記乱数列保持手段に保持されている乱数列と前記乱数列保持手段に保持されている乱数列を元に前記乱数生成手段が生成した一時的乱数列に対して、前記検定手段が検定を行うことを特徴とする乱数生成装置。
【００１３】
また前記乱数生成装置において、乱数生成装置の外部に備わっている所定の暗号アルゴリズムを実行する暗号処理手段を用いて、前記一時的乱数列を生成することを特徴とする乱数生成装置。
【００１４】
また前記乱数生成装置において、乱数生成装置の外部に備わっている所定の暗号アルゴリズムを実行する暗号処理手段が複数個ある場合は、前記複数個の暗号処理手段から何れかの暗号処理手段を選択し、前期選択された暗号処理手段を用いて、前記一時的乱数列を生成することを特徴とする乱数生成装置。
【発明の効果】
【００１５】
本発明の乱数生成装置では、検定に必要な大量の規定ビット数の乱数を全て生成するのではなく、乱数列と一時的乱数列を生成して検定を行っているので、より早く検定済みの高品質な乱数を提供することができる。また、一時的乱数列は検定を行うときのみ使用し、乱数列として保持する必要がない。そのため、保持する乱数列は規定ビット数よりも少ないビット数でいいので、空間コストを削減することができる。
【発明を実施するための最良の形態】
【００１６】
以下に、本発明の実施例について説明する。
【実施例１】
【００１７】
図１は本発明の第１の実施例における乱数生成装置の機能ブロック図である。図１において、１は乱数列を出力する乱数生成装置、２は乱数列または一時的乱数列を生成する乱数生成手段、３は前記乱数生成手段２が生成した乱数列を保持する乱数列保持手段、４は前記乱数生成装置１の内部を流れるデータの制御を行う制御手段、５は入力された乱数列の検定を行う検定手段である。
【００１８】
また、１０１は乱数生成手段２が乱数列を生成するために収集されたエントロピー、１０２は制御手段４により設定された初期値及び一時的乱数列を生成するための乱数列、１０３は乱数生成手段２が生成した乱数列及び一時的乱数列、１０４は乱数生成手段が乱数列または一時的乱数列のどちらを生成するか設定するモード選択信号、１０５は乱数列保持手段３に書き込まれる乱数列、１０６は乱数列保持手段３から読み出される乱数列、１０７は検定が行われる乱数列、１０８は検定手段５によって行われた検定の結果を制御手段４に示す検定結果、１０９は乱数生成装置１に乱数列を要求する乱数列出力要求、１１０は前記１０９の要求に対して乱数生成装置１から出力される乱数列である。
【００１９】
図２は、第１の実施例における制御手段４の動作を示したフローチャート図である。図２を用いて第１の実施例における制御手段４の動作を説明する。
【００２０】
始めにS１において乱数列を生成・保持するために、制御手段４は信号線１０４を介して乱数生成手段２を攪拌モードに設定する。また、制御手段４は信号線１０２を介して乱数生成手段２に初期値を送信する。そして、制御手段４は乱数生成手段２が生成した乱数列Aを受信すると、乱数列Aを乱数列保持手段３に書き込む。乱数列保持手段３への書き込みは乱数列Aが乱数列保持手段３を満たすまで行われる。
【００２１】
次にS２において、乱数列保持手段３に保持された乱数列Aを検定するために、制御手段４は乱数列Aを読み出し、検定手段５に送信する。また、制御手段４は乱数生成手段２を一時的乱数生成モードに設定する。
【００２２】
次にS３において、制御手段４は検定手段５に送信した総ビット数が、検定手段５の必要としている規定ビット数以上であるか否かチェックする。もし検定手段５に送信した総ビット数の方が少なければ、S４において乱数列保持手段３から乱数列A'を読み出し乱数生成手段２に送信する。乱数列A'は、乱数列Aと同じ乱数列ではなく、乱数列保持手段３に保持されている乱数列を逆順に読み出したり、ランダムに読み出したりしている。そして、制御手段４は乱数生成手段２が乱数列A'を元に生成した一時的乱数列A'を受信し、検定手段５に送信する。このS４は、S３における総ビット数が、規定ビット数を上回るまで行われる。
【００２３】
次にS５において、制御手段４は検定手段５が検定を終了するまで待機する。
【００２４】
次にS６において、制御手段４は検定手段５から検定結果を受信する。このとき、検定結果が不合格の場合にはS１からやり直す。検定結果が合格の場合には、制御手段４は、乱数列保持手段３に保持されている乱数列Aを出力可能な乱数列とする。また、制御手段４は乱数生成手段２を撹拌モードに設定する。
【００２５】
次にS７において、制御手段４は乱数列出力要求を受信するまで待機する。
【００２６】
最後にS８において、制御手段４が乱数列出力要求を受信すると、制御手段４は乱数列保持手段３に保持されている乱数列を読み出し出力する。そしてS１に戻り、制御手段４は新しい乱数列の生成を開始する。
【００２７】
図３は第１の実施例における乱数生成アルゴリズムを行っている際に、各信号線を流れるデータを示した図である。図３を用いて、第１の実施例における乱数生成アルゴリズムについて説明する。
【００２８】
始めに、信号線１０４が撹拌モードに設定されると、乱数生成手段２は信号線１０１を介して収集したエントロピーと信号線１０２を介して受信した初期値を用いて乱数列Aを生成し、信号線１０３を介して制御手段４に乱数列Aを送信する。
【００２９】
乱数列Aを受信した制御手段４は、信号線１０５を介して乱数列Aを乱数列保持手段３に書き込む。
【００３０】
乱数列保持手段３が乱数列Aで満たされると、乱数列Aの検定を行う。制御手段４は信号線１０６を介して乱数列保持手段３から乱数列Aを読み出し、信号線１０７を介して検定手段５に送信する。このとき、制御手段４は信号線１０４を一時的乱数生成モードに設定する。また、図２のS３及びS４で説明したように、乱数列Aのビット数が検定手段５が必要とする規定ビット数より少ない場合は、信号線１０６を介して乱数列保持手段３から乱数列A'を読み出す。そして、制御手段４は、乱数列A'を信号線１０２を介して乱数生成手段２に送信する。乱数列A'を受信した乱数生成手段２は、乱数列A'を元に一時的乱数列A'を生成し、信号線１０３を介して制御手段４に送信する。一時的乱数列A'を受信した制御手段４は、信号線１０７を介して一時的乱数列A'を検定手段５に送信する。
【００３１】
検定手段５は乱数列A及び一時的乱数列A'を受信次第検定を行う。そして、検定手段５は検定終了後、信号線１０８を介して制御手段４に検定結果を送信する。
【００３２】
検定結果を受信した制御手段４は、信号線１０４を撹拌モードに設定する。検定結果が不合格の場合は、制御手段４は信号線１０２を介して乱数生成手段２に初期値を送信し、新しい乱数列の生成を開始する。検定結果が合格の場合は、制御手段４は信号線１０９を介して乱数列出力要求を受信するまで待機する。そして、制御手段４が乱数列出力要求を受信すると、制御手段４は信号線１０６を介して乱数列保持手段３から乱数列を読み出し、信号線１１０を介して読み出した乱数列を出力する。
【００３３】
図４は、乱数列保持手段３が新しい乱数列を保持する際に各信号線を流れるデータを示した図である。また、図５は第１の実施例における乱数列保持手段３に保持される新しい乱数列の生成を開始する際の乱数列保持手段３の状態を示した図である。また、図６は第１の実施例における新しい乱数列を検定する際の乱数列保持手段３の状態を示した図である。また、図７は第１の実施例における新しい乱数列を検定した結果が合格であった場合の乱数列保持手段３の状態を示した図である。図４〜図７を用いて、乱数列保持手段３が新しい乱数列を保持するアルゴリズムを説明する。
【００３４】
乱数列保持手段３は、新しい乱数列を書き込む場所を示す書き込みポインタと、乱数列を読み出す場所を示す読み出しポインタと、出力可能な乱数の上限を示す出力上限ポインタを備えている。
【００３５】
乱数生成装置１が乱数列を出力し、図５のように出力可能な乱数列の量が一定量より少なくなると、乱数生成手段２は信号線１０１を介して集めたエントロピーと信号線１０２を介して受信した初期値を元に新しい乱数列αを生成し、制御手段４に送信する。制御手段４は受信した乱数列αを乱数列保持手段３に書き込み、書き込んだ乱数列αのビット数分書き込みポインタを移動させる。新しい乱数列αを生成している際に乱数列出力要求１０９を受信した場合、要求された乱数列の量が出力可能乱数列の量より少なければ、新しい乱数列αの生成を中断し、乱数列保持手段３に保持されている出力可能な乱数列を出力し、出力した乱数列のビット数分読み出しポインタを移動する。そして、乱数列を出力した後に、再び乱数生成手段２は、新しい乱数列βを生成する。
【００３６】
図６のように、新しい乱数列α、βが一定量乱数列保持手段３に保持されると、乱数列保持手段３に保持されている乱数列の検定を行う。制御手段４は乱数列保持手段３に保持されるすべての乱数列Cを読み出して検定手段５に送信し、その後、制御手段４が図２のS３〜S６と同様の処理を行う。
【００３７】
検定に合格した場合は、制御手段４は図７のように新しい乱数列α、βを検定済みの出力可能な乱数列とし、出力上限ポインタが指し示す場所を書き込みポインタの位置まで移動させる。しかし、検定に不合格の場合には、新しい乱数列α、βを出力することができないので、制御手段４は書き込みポインタの示す場所を出力上限ポインタの示す場所まで戻し、そして再度乱数生成手段２が新しい乱数列を生成する。
【００３８】
以上のようにすることで、検定が必要とする規定ビット数の乱数列を生成しなくても検定を行うことができるので、高品質な乱数をより早く出力することができる。また、検定が必要とする大量の乱数列を保持しなくても、検定を行った高品質な乱数を出力することができるので、空間コストを削減することができる。
【実施例２】
【００３９】
図８は本発明の第２の実施例における乱数生成装置の機能ブロック図である。図８において、２１は乱数列を出力する乱数生成装置、２２は乱数列を生成する乱数生成手段、２３は前記乱数生成手段２２が生成した乱数列を保持する乱数列保持手段、２４は前記乱数生成装置２１の内部を流れるデータの制御を行う制御手段、２５は入力された乱数列の検定を行う検定手段、２６は所定の暗号処理を行う暗号処理手段である。ここでいう所定の暗号処理とは、ストリーム暗号や、共通鍵ブロック暗号、MD(メッセージダイジェスト)演算等のことである。
【００４０】
また、２０１は乱数生成手段２２が乱数列を生成するために収集されたエントロピー、２０２は制御手段２４により設定された初期値、２０３は乱数生成手段２２が生成した乱数列、２０４は乱数列保持手段２３に書き込まれる乱数列、２０５は乱数列保持手段２３から読み出される乱数列、２０６は制御手段２４が暗号処理手段２６に送信するデータ、２０７は暗号処理手段２６が生成した一時的乱数列、２０８は検定が行われる乱数列、２０９は検定手段２５によって行われた検定の結果を制御手段２４に示す検定結果、２１０は乱数生成装置２１に乱数列を要求する乱数列出力要求、２１１は前記２１０の要求に対して乱数生成装置２１から出力される乱数列である。
【００４１】
図９は、第２の実施例における制御手段２４の動作を示したフローチャート図である。図９を用いて第２の実施例における制御手段２４の動作を説明する。
【００４２】
始めにS２１において乱数列を生成・保持するために、制御手段２４は信号線２０２を介して乱数生成手段２２に初期値を送信する。そして、制御手段２４は乱数生成手段２２が生成した乱数列Hを受信すると、乱数列Hを乱数列保持手段２３に書き込む。乱数列保持手段２３への書き込みは、乱数列Hが乱数列保持手段２３を満たすまで行われる。
【００４３】
次にS２２において、乱数列保持手段２３に保持された乱数列Hを検定するために、制御手段２４は乱数列Hを読み出し、検定手段２５に送信する。
【００４４】
次にS２３において、制御手段２４は検定手段２５に送信した総ビット数が、検定手段２５の必要としている規定ビット数以上であるか否かチェックする。もし検定手段２５に送信した総ビット数の方が少なければ、S２４において制御手段２４は乱数列保持手段２３から乱数列H'を読み出し暗号処理手段２６に送信する。乱数列H'は、乱数列H と同じ乱数列ではなく、乱数列保持手段２３に保持されている乱数列を逆順に読み出したり、ランダムに読み出したりしている。そして、制御手段２４は暗号処理手段２６が乱数列H'を元に生成した一時的乱数列H'を受信し、検定手段２５に送信する。このS２４は、S２３における総ビット数が、規定ビット数を上回るまで行われる。
【００４５】
次にS２５において、制御手段２４は検定手段２５が検定を終了するまで待機する。
【００４６】
次にS２６において、制御手段２４は検定手段２５から検定結果を受信する。このとき、検定結果が不合格の場合にはS２１からやり直す。検定結果が合格の場合には、制御手段２４は、乱数列保持手段２３に保持されている乱数列Hを出力可能な乱数列とする。
【００４７】
次にS２７において、制御手段２４は乱数列出力要求を受信するまで待機する。
【００４８】
最後にS２８において、制御手段２４が乱数列出力要求を受信すると、制御手段２４は乱数列保持手段２３に保持されている乱数列を読み出し出力する。そしてS２１に戻り、制御手段２４は新しい乱数列の生成を開始する。
【００４９】
図１０は第２の実施例における乱数生成アルゴリズムを行っている際に、各信号線を流れるデータを示した図である。図１０を用いて、第２の実施例における乱数生成アルゴリズムについて説明する。
【００５０】
始めに、乱数生成手段２２は信号線２０１を介して収集したエントロピーと信号線２０２を介して受信した初期値を用いて乱数列Hを生成し、信号線２０３を介して制御手段２４に乱数列Hを送信する。
【００５１】
乱数列Hを受信した制御手段２４は、信号線２０４を介して乱数列Hを乱数列保持手段２３に書き込む。
【００５２】
乱数列保持手段２３が乱数列Hで満たされると、乱数列Hの検定を行う。制御手段２４は信号線２０５を介して乱数列保持手段２３から乱数列Hを読み出し、信号線２０６を介して検定手段２５に送信する。この際、図９のS２３及びS２４で説明したように、乱数列Hのビット数が検定手段２５が必要とする規定ビット数より少ない場合は、制御手段２４は信号線２０５を介して乱数列保持手段２３から乱数列H'を読み出し、信号線２０６を介して暗号処理手段２６に送信する。乱数列H'を受信した暗号処理手段２６は、乱数列H'を元に一時的乱数列H'を生成し、信号線２０７を介して制御手段２４に送信する。一時的乱数列H' を受信した制御手段２４は、信号線２０８を介して一時的乱数列H'を検定手段２５に送信する。
【００５３】
検定手段２５は乱数列H及び一時的乱数列H'を受信次第検定を行う。そして、検定手段２５は検定終了後、信号線２０９を介して制御手段２４に検定結果を送信する。
【００５４】
検定結果が不合格の場合は、制御手段２４は信号線２０２を介して乱数生成手段２２に初期値を送信し、新しい乱数列の生成を開始する。検定結果が合格の場合は、制御手段２４は信号線２１０を介して乱数列出力要求を受信するまで待機する。そして、制御手段２４が乱数列出力要求を受信すると、制御手段２４は信号線２０５を介して乱数列保持手段２３から乱数列を読み出し、信号線２１１を介して読み出した乱数列を出力する。
【００５５】
図１１は、乱数列保持手段２３が新しい乱数列を保持する際に各信号線を流れるデータを示した図である。また、図１２は第２の実施例における乱数列保持手段２３に保持される新しい乱数列の生成を開始する際の乱数列保持手段２３の状態を示した図である。また、図１３は第２の実施例における新しい乱数列を検定する際の乱数列保持手段２３の状態を示した図である。また、図１４は第２の実施例における新しい乱数列を検定した結果が合格であった場合の乱数列保持手段２３の状態を示した図である。図１１〜図１４を用いて、乱数列保持手段２３が新しい乱数列を保持するアルゴリズムを説明する。
【００５６】
乱数列保持手段２３は、新しい乱数列を書き込む場所を示す書き込みポインタと、乱数列を読み出す場所を示す読み出しポインタと、出力可能な乱数の上限を示す出力上限ポインタを備えている。
【００５７】
乱数生成装置２１が乱数列を出力し、図１２のように出力可能な乱数列の量が一定量より少なくなると、乱数生成手段２２は信号線２０１を介して集めたエントロピーと信号線２０２を介して受信した初期値を元に新しい乱数列δを生成し、制御手段２４に送信する。制御手段２４は受信した乱数列δを乱数列保持手段２３に書き込み、書き込んだ乱数列δのビット数分書き込みポインタを移動させる。新しい乱数列δを生成している際に乱数列出力要求２１０を受信した場合、要求された乱数列の量が出力可能乱数列の量より少なければ、新しい乱数列δの生成を中断し、乱数列保持手段２３に保持されている出力可能な乱数列を出力し、出力した乱数列のビット数分読み出しポインタを移動する。そして、乱数を出力した後に、再び乱数生成手段２２は、新しい乱数列εを生成する。
【００５８】
図１３のように、新しい乱数列δ、εが一定量乱数列保持手段２３に保持されると、乱数列保持手段２３に保持されている乱数列の検定を行う。制御手段２４は乱数列保持手段２３に保持されるすべての乱数列Jを読み出して検定手段２５に送信し、その後、制御手段２４が図９のS２３〜S２６と同様の処理を行う。そして検定に合格した場合は、図１４のように新しい乱数列δ、εを検定済みの出力可能な乱数列とし、出力上限ポインタが指し示す場所を書き込みポインタの位置まで移動させる。しかし、検定に不合格の場合には、新しい乱数列δ、εは出力することができないので、制御手段２４は書き込みポインタの示す場所を出力上限ポインタの示す場所まで戻し、そして再度乱数生成手段２２が新しい乱数列を生成する。
【００５９】
以上のようにすることで、検定が必要とする規定ビット数の乱数列を生成しなくても検定を行うことができるので、高品質な乱数をより早く出力することができる。また、検定が必要とする大量の乱数列を保持しなくても、検定を行った高品質な乱数を出力することができるので、空間コストを削減することができる。
【実施例３】
【００６０】
図１５は本発明の第３の実施例における乱数生成装置の機能ブロック図である。図１５において、４１は乱数列を出力する乱数生成装置、４２は乱数列を生成する乱数生成手段、４３は前記乱数生成手段４２が生成した乱数列を保持する乱数列保持手段、４４は前記乱数生成装置４１の内部を流れるデータの制御を行う制御手段、４５は入力された乱数列の検定を行う検定手段、４６はストリーム暗号演算を行うストリーム暗号演算手段、４７はMD演算を行うMD演算手段である。
【００６１】
また、４０１は乱数生成手段４２が乱数列を生成するために収集されたエントロピー、４０２は制御手段４４により設定された初期値、４０３は乱数生成手段４２が生成した乱数列、４０４は乱数列保持手段４３に書き込まれる乱数列、４０５は乱数列保持手段４３から読み出される乱数列、４０６は制御手段４４がストリーム暗号演算手段４６に送信するデータ、４０７はストリーム暗号演算手段４６が生成した一時的乱数列、４０８は制御手段４４がMD演算手段４７に送信するデータ、４０９はMD演算手段４７が生成した一時的乱数列、４１０は検定が行われる乱数列、４１１は検定手段４５によって行われた検定の結果を制御手段４４に示す検定結果、４１２は乱数生成装置４１に乱数列を要求する乱数列出力要求、４１３は前記４１２の要求に対して乱数生成装置４１から出力される乱数列である。
【００６２】
図１６は、第３の実施例における制御手段４４の動作を示したフローチャート図である。図１６を用いて第３の実施例における制御手段４４の動作を説明する。
【００６３】
始めにS４１において乱数列を生成・保持するために、制御手段４４は信号線４０２を介して乱数生成手段４２に初期値を送信する。そして、制御手段４４は乱数生成手段４２が生成した乱数列Lを受信すると、乱数列Lを乱数列保持手段４３に書き込む。乱数列保持手段４３への書き込みは、乱数列Lが乱数列保持手段４３を満たすまで行われる。
【００６４】
次にS４２において、乱数列保持手段４３に保持された乱数列Lを検定するために、制御手段４４は乱数列Lを読み出し、検定手段４５に送信する。また、制御手段４４は一時的乱数列を生成するための暗号処理手段を選択する。この第３の実施例では、制御手段４４はストリーム暗号演算手段４６を選択している。
【００６５】
次にS４３において、制御手段４４は検定手段４５に送信した総ビット数が、検定手段４５の必要としている規定ビット数以上であるか否かチェックする。もし検定手段４５に送信した総ビット数の方が少なければ、S４４において制御手段４４は乱数列保持手段４３から乱数列L'を読み出しストリーム暗号演算手段４６に送信する。乱数列L'は、乱数列Lと同じ乱数列ではなく、乱数列保持手段４３に保持されている乱数列を逆順に読み出したり、ランダムに読み出したりしている。そして制御手段４４は、ストリーム暗号演算手段４６が乱数列L'を元に生成した一時的乱数列L'を受信し、検定手段４５に送信する。このS４４は、S４３における総ビット数が、規定ビット数を上回るまで行われる。
【００６６】
次にS４５において、制御手段４４は検定手段４５が検定を終了するまで待機する。
【００６７】
次にS４６において、制御手段４４は検定手段４５から検定結果を受信する。このとき、検定結果が不合格の場合にはS４１からやり直す。検定結果が合格の場合には、制御手段４４は、乱数列保持手段４３に保持されている乱数列Lを出力可能な乱数列とする。
【００６８】
次にS４７において、制御手段４４は乱数列出力要求を受信するまで待機する。
【００６９】
最後にS４８において、制御手段４４が乱数列出力要求を受信すると、制御手段４４は乱数列保持手段４３に保持されている乱数列を読み出し出力する。そしてS４１に戻り、制御手段４４は新しい乱数列の生成を開始する。
【００７０】
図１７は第３の実施例における乱数生成アルゴリズムを行っている際に、各信号線を流れるデータを示した図である。図１７を用いて、第３の実施例における乱数生成アルゴリズムについて説明する。
【００７１】
始めに、乱数生成手段４２は信号線４０１を介して収集したエントロピーと信号線４０２を介して受信した初期値を用いて乱数列Lを生成し、信号線４０３を介して制御手段４４に乱数列Lを送信する。
【００７２】
乱数列Lを受信した制御手段４４は、信号線４０４を介して乱数列Lを乱数列保持手段４３に書き込む。
【００７３】
乱数列保持手段４３が乱数列Lで満たされると、乱数列Lの検定を行う。制御手段４４は信号線４０５を介して乱数列保持手段４３から乱数列Lを読み出し、信号線４１０を介して検定手段４５に送信する。この際、図１６のS４３及びS４４で説明したように、乱数列Lのビット数が検定手段４５が必要とする規定ビット数より少ない場合は、制御手段４４は信号線４０５を介して乱数列保持手段４３から乱数列L'を読み出す。そして、制御手段４４は、乱数列L'を信号線４０６を介してストリーム暗号演算手段４６に送信する。乱数列L'を受信したストリーム暗号演算手段４６は、乱数列L'を元に一時的乱数列L'を生成し、信号線４０７を介して制御手段４４に送信する。一時的乱数列L'を受信した制御手段４４は、信号線４１０を介して一時的乱数列L'を検定手段４５に送信する。
【００７４】
検定手段４５は乱数列L及び一時的乱数列L'を受信次第検定を行う。そして、検定手段４５は検定終了後、信号線４１１を介して制御手段４４に検定結果を送信する。
【００７５】
検定結果が不合格の場合は、制御手段４４は信号線４０２を介して乱数生成手段４２に初期値を送信し、新しい乱数列の生成を開始する。検定結果が合格の場合は、制御手段４４は信号線４１２を介して乱数列出力要求を受信するまで待機する。そして、制御手段４４が乱数列出力要求を受信すると、制御手段４４は信号線４０５を介して乱数列保持手段４３から乱数列を読み出し、信号線４１３を介して読み出した乱数列を出力する。
【００７６】
図１８は、乱数列保持手段４３が新しい乱数列を保持する際に各信号線を流れるデータを示した図である。また、図１９は第３の実施例における乱数列保持手段４３に保持される新しい乱数列の生成を開始する際の乱数列保持手段４３の状態を示した図である。また、図２０は第３の実施例における新しい乱数列を検定する際の乱数列保持手段４３の状態を示した図である。また、図２１は第３の実施例における新しい乱数列を検定した結果が合格であった場合の乱数列保持手段４３の状態を示した図である。図１８〜図２１を用いて、乱数列保持手段４３が新しい乱数列を保持するアルゴリズムを説明する。
【００７７】
乱数列保持手段４３は、新しい乱数列を書き込む場所を示す書き込みポインタと、乱数列を読み出す場所を示す読み出しポインタと、出力可能な乱数の上限を示す出力上限ポインタを備えている。
【００７８】
乱数生成装置４１が乱数列を出力し、図１９のように出力可能な乱数列の量が一定量より少なくなると、乱数生成手段４２は信号線４０１を介して集めたエントロピーと信号線４０２を介して受信した初期値を元に新しい乱数列λを生成し、制御手段４４に送信する。制御手段４４は受信した乱数列λを乱数列保持手段４３に書き込み、書き込んだ乱数列λのビット数分書き込みポインタを移動させる。新しい乱数列λを生成している際に乱数列出力要求４１２を受信した場合、要求された乱数列の量が出力可能乱数列の量より少なければ、新しい乱数列λの生成を中断し、乱数列保持手段４３に保持されている出力可能な乱数列を出力し、出力した乱数列のビット数分読み出しポインタを移動する。そして、乱数を出力した後に、再び乱数生成手段４２は、新しい乱数列μを生成する。
【００７９】
図１３のように、新しい乱数列λ、μが一定量乱数列保持手段４３に保持されると、乱数列保持手段４３に保持されている乱数列の検定を行う。制御手段４４は乱数列保持手段４３に保持されるすべての乱数列Nを読み出して検定手段４５に送信し、その後、制御手段４４が図１６のS４３〜S４６と同様の処理を行う。そして検定に合格した場合は、図１４のように新しい乱数列λ、μを検定済みの出力可能な乱数列とし、出力上限ポインタが指し示す場所を書き込みポインタの位置まで移動させる。しかし、検定に不合格の場合には、新しい乱数列λ、μは出力することができないので、制御手段４４は書き込みポインタの示す場所を出力上限ポインタの示す場所まで戻し、そして再度乱数生成手段４２が新しい乱数列を生成する。
【００８０】
以上のようにすることで、検定が必要とする規定ビット数の乱数列を生成しなくても検定を行うことができるので、高品質な乱数をより早く出力することができる。また、検定が必要とする大量の乱数列を保持しなくても、検定を行った高品質な乱数を出力することができるので、空間コストを削減することができる。
【００８１】
実施例３ではシステムが備える所定の暗号処理を行う暗号処理手段としてストリーム暗号演算手段とMD演算手段を用いたが、共通鍵ブロック暗号などを用いても良い。また、複数の暗号処理手段が同じ暗号処理を行っても良く、数も２つに限ったことではない。
【００８２】
以上の実施例１〜３は本発明の一例に過ぎず、本発明の効果は前記実施例に限ったことではない。
【図面の簡単な説明】
【００８３】
【図１】本発明の第１の実施例における乱数生成装置の機能ブロック図。
【図２】本発明の第１の実施例における制御手段４の動作を示したフローチャート図。
【図３】本発明の第１の実施例における乱数列を生成する際に各信号線を流れるデータを示した図。
【図４】本発明の第１の実施例における乱数列保持手段３が新しい乱数列を保持する際に各信号線を流れるデータを示した図。
【図５】本発明の第１の実施例における新しい乱数列を生成する前の乱数列保持手段３を示した図。
【図６】本発明の第１の実施例における新しい乱数列の検定を行う前の乱数列保持手段３を示した図。
【図７】本発明の第１の実施例における新しい乱数列の検定を行い、検定に合格した場合の乱数列保持手段３を示した図。
【図８】本発明の第２の実施例における乱数生成装置の機能ブロック図。
【図９】本発明の第２の実施例における制御手段２４の動作を示したフローチャート図。
【図１０】本発明の第２の実施例における乱数列を生成する際に各信号線を流れるデータを示した図。
【図１１】本発明の第２の実施例における乱数列保持手段２３が新しい乱数列を保持する際に各信号線を流れるデータを示した図。
【図１２】本発明の第２の実施例における新しい乱数列を生成する前の乱数列保持手段２３を示した図。
【図１３】本発明の第２の実施例における新しい乱数列の検定を行う前の乱数列保持手段２３を示した図。
【図１４】本発明の第２の実施例における新しい乱数列の検定を行い、検定に合格した場合の乱数列保持手段２３を示した図。
【図１５】本発明の第３の実施例における乱数生成装置の機能ブロック図。
【図１６】本発明の第３の実施例における制御手段４４の動作を示したフローチャート図。
【図１７】本発明の第３の実施例における乱数列を生成する際に各信号線を流れるデータを示した図。
【図１８】本発明の第３の実施例における乱数列保持手段４３が新しい乱数列を保持する際に各信号線を流れるデータを示した図。
【図１９】本発明の第３の実施例における新しい乱数列を生成する前の乱数列保持手段４３を示した図。
【図２０】本発明の第３の実施例における新しい乱数列の検定を行う前の乱数列保持手段４３を示した図。
【図２１】本発明の第３の実施例における新しい乱数列の検定を行い、検定に合格した場合の乱数列保持手段４３を示した図。
【符号の説明】
【００８４】
１  乱数生成装置
２  乱数生成手段
３  乱数列保持手段
４  制御手段
５  検定手段
２１  乱数生成装置
２２  乱数生成手段
２３  乱数列保持手段
２４  制御手段
２５  検定手段
２６  暗号処理手段
４１  乱数生成装置
４２  乱数生成手段
４３  乱数列保持手段
４４  制御手段
４５  検定手段
４６  ストリーム暗号演算手段
４７  MD演算手段
【図１】
2006318091.tif 000003
【図２】
2006318091.tif 000004
【図３】
2006318091.tif 000005
【図４】
2006318091.tif 000006
【図５】
2006318091.tif 000007
【図６】
2006318091.tif 000008
【図７】
2006318091.tif 000009
【図８】
2006318091.tif 000010
【図９】
2006318091.tif 000011
【図１０】
2006318091.tif 000012
【図１１】
2006318091.tif 000013
【図１２】
2006318091.tif 000014
【図１３】
2006318091.tif 000015
【図１４】
2006318091.tif 000016
【図１５】
2006318091.tif 000017
【図１６】
2006318091.tif 000018
【図１７】
2006318091.tif 000019
【図１８】
2006318091.tif 000020
【図１９】
2006318091.tif 000021
【図２０】
2006318091.tif 000022
【図２１】
2006318091.tif 000023