JP2006318091A - 乱数生成装置 - Google Patents
乱数生成装置 Download PDFInfo
- Publication number
- JP2006318091A JP2006318091A JP2005138415A JP2005138415A JP2006318091A JP 2006318091 A JP2006318091 A JP 2006318091A JP 2005138415 A JP2005138415 A JP 2005138415A JP 2005138415 A JP2005138415 A JP 2005138415A JP 2006318091 A JP2006318091 A JP 2006318091A
- Authority
- JP
- Japan
- Prior art keywords
- random number
- number sequence
- sequence
- test
- unit
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
Images
Abstract
【課題】 乱数検定が規定する大量の乱数列を生成・保持せずとも、検定に合格した高品質の乱数を出力する乱数生成装置を提供する。
【解決手段】 乱数生成手段2は収集したエントロピーと制御手段4が設定した初期値を用いて乱数列を生成する。乱数生成手段2が生成した乱数列は乱数列保持手段3に保持される。検定手段5は、乱数列保持手段3に保持されている乱数列と、乱数列保持手段3に保持されている乱数列を元に乱数生成手段2が生成した一時的乱数に対して検定を行う。検定の結果が合格の場合には、乱数保持手段3に保持されている乱数を出力可能な乱数とする。
【選択図】 図1
【解決手段】 乱数生成手段2は収集したエントロピーと制御手段4が設定した初期値を用いて乱数列を生成する。乱数生成手段2が生成した乱数列は乱数列保持手段3に保持される。検定手段5は、乱数列保持手段3に保持されている乱数列と、乱数列保持手段3に保持されている乱数列を元に乱数生成手段2が生成した一時的乱数に対して検定を行う。検定の結果が合格の場合には、乱数保持手段3に保持されている乱数を出力可能な乱数とする。
【選択図】 図1
Description
本発明は任意ビット数の乱数を生成する乱数生成装置に関する。
従来、様々なデジタル機器において各種信号処理に乱数が使われてきた。また近年、各種機器類のネットワーク化が進むとともにセキュリティ機能が要求されるようになってきたため、より一層乱数が使われる場面が増えている。
そしてセキュリティ機能に使われる乱数の場合には、安全性向上の重要な要素として乱数の一様性、配列の不規則性、十分に長い周期性、前後関係からの予測困難性等統計的な高品質がより求められる傾向があった。
このような乱数が要求される品質を満たしているかどうかを判定する検定には20,000ビットの乱数に対して検定を行うFIPS140-2に準拠した検定法、1Mビットの乱数を一本の乱数列とし1,000本程度の乱数列に対して検定を行うNIST SP800-22、10〜11Mバイトの乱数に対して検定を行うDIEHARD等がある。
例えば特開2004-310314ではFIPS140-2に準拠した検定法が内蔵され、チップ内部で発生した乱数を出力しながら検定回路により検定を行い、検定終了後乱数保持部から乱数を出力するようになっている。その検定内容は以下の4種類のテストから構成されている。
1. The mono bit test
連続するランダムな20,000ビット中の'1'の数を X としたとき
9,725 < X < 10,275・・・(1)
であれば合格。
連続するランダムな20,000ビット中の'1'の数を X としたとき
9,725 < X < 10,275・・・(1)
であれば合格。
2. The long runs test
連続するランダムな20,000ビット中の'1'or'0'の最長連続ビット数を X としたとき
X < 26・・・(2)
であれば合格。
連続するランダムな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)の範囲内であれば合格。
連続するランダムな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までの全ての検定に合格したとき、検定された乱数は高品質な乱数であると判断される。
特開2004−310314号公報
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までの全ての検定に合格したとき、検定された乱数は高品質な乱数であると判断される。
しかしながら、上記従来例では検定を行うたびに、検定が必要とする大量の乱数を生成しているので、検定済みの乱数を出力するためには時間がかかるという問題がある。
また、事前に乱数を生成してバッファなどに保存しておき、この保存した乱数に対して検定を行うという方法もある。この場合では、検定に必要な大量の乱数を保存する必要があるため、大容量のバッファが必要となる。しかしながら、空間コストが支配的なシステムでは、コストを削減するために大容量のバッファを持つことができず、検定に必要な大量の乱数を保持できない、という問題がある。
本発明では上記問題点に鑑み、乱数列を生成する乱数生成手段と、データの制御を行う制御手段と、乱数列を保持しておく乱数列保持手段と、乱数列の品質を検定する検定手段とを備え、前記乱数列保持手段に保持されている乱数列と前記乱数列保持手段に保持されている乱数列を元に前記乱数生成手段が生成した一時的乱数列に対して、前記検定手段が検定を行うことを特徴とする乱数生成装置。
また前記乱数生成装置において、乱数生成装置の外部に備わっている所定の暗号アルゴリズムを実行する暗号処理手段を用いて、前記一時的乱数列を生成することを特徴とする乱数生成装置。
また前記乱数生成装置において、乱数生成装置の外部に備わっている所定の暗号アルゴリズムを実行する暗号処理手段が複数個ある場合は、前記複数個の暗号処理手段から何れかの暗号処理手段を選択し、前期選択された暗号処理手段を用いて、前記一時的乱数列を生成することを特徴とする乱数生成装置。
本発明の乱数生成装置では、検定に必要な大量の規定ビット数の乱数を全て生成するのではなく、乱数列と一時的乱数列を生成して検定を行っているので、より早く検定済みの高品質な乱数を提供することができる。また、一時的乱数列は検定を行うときのみ使用し、乱数列として保持する必要がない。そのため、保持する乱数列は規定ビット数よりも少ないビット数でいいので、空間コストを削減することができる。
以下に、本発明の実施例について説明する。
図1は本発明の第1の実施例における乱数生成装置の機能ブロック図である。図1において、1は乱数列を出力する乱数生成装置、2は乱数列または一時的乱数列を生成する乱数生成手段、3は前記乱数生成手段2が生成した乱数列を保持する乱数列保持手段、4は前記乱数生成装置1の内部を流れるデータの制御を行う制御手段、5は入力された乱数列の検定を行う検定手段である。
また、101は乱数生成手段2が乱数列を生成するために収集されたエントロピー、102は制御手段4により設定された初期値及び一時的乱数列を生成するための乱数列、103は乱数生成手段2が生成した乱数列及び一時的乱数列、104は乱数生成手段が乱数列または一時的乱数列のどちらを生成するか設定するモード選択信号、105は乱数列保持手段3に書き込まれる乱数列、106は乱数列保持手段3から読み出される乱数列、107は検定が行われる乱数列、108は検定手段5によって行われた検定の結果を制御手段4に示す検定結果、109は乱数生成装置1に乱数列を要求する乱数列出力要求、110は前記109の要求に対して乱数生成装置1から出力される乱数列である。
図2は、第1の実施例における制御手段4の動作を示したフローチャート図である。図2を用いて第1の実施例における制御手段4の動作を説明する。
始めにS1において乱数列を生成・保持するために、制御手段4は信号線104を介して乱数生成手段2を攪拌モードに設定する。また、制御手段4は信号線102を介して乱数生成手段2に初期値を送信する。そして、制御手段4は乱数生成手段2が生成した乱数列Aを受信すると、乱数列Aを乱数列保持手段3に書き込む。乱数列保持手段3への書き込みは乱数列Aが乱数列保持手段3を満たすまで行われる。
次にS2において、乱数列保持手段3に保持された乱数列Aを検定するために、制御手段4は乱数列Aを読み出し、検定手段5に送信する。また、制御手段4は乱数生成手段2を一時的乱数生成モードに設定する。
次にS3において、制御手段4は検定手段5に送信した総ビット数が、検定手段5の必要としている規定ビット数以上であるか否かチェックする。もし検定手段5に送信した総ビット数の方が少なければ、S4において乱数列保持手段3から乱数列A'を読み出し乱数生成手段2に送信する。乱数列A'は、乱数列Aと同じ乱数列ではなく、乱数列保持手段3に保持されている乱数列を逆順に読み出したり、ランダムに読み出したりしている。そして、制御手段4は乱数生成手段2が乱数列A'を元に生成した一時的乱数列A'を受信し、検定手段5に送信する。このS4は、S3における総ビット数が、規定ビット数を上回るまで行われる。
次にS5において、制御手段4は検定手段5が検定を終了するまで待機する。
次にS6において、制御手段4は検定手段5から検定結果を受信する。このとき、検定結果が不合格の場合にはS1からやり直す。検定結果が合格の場合には、制御手段4は、乱数列保持手段3に保持されている乱数列Aを出力可能な乱数列とする。また、制御手段4は乱数生成手段2を撹拌モードに設定する。
次にS7において、制御手段4は乱数列出力要求を受信するまで待機する。
最後にS8において、制御手段4が乱数列出力要求を受信すると、制御手段4は乱数列保持手段3に保持されている乱数列を読み出し出力する。そしてS1に戻り、制御手段4は新しい乱数列の生成を開始する。
図3は第1の実施例における乱数生成アルゴリズムを行っている際に、各信号線を流れるデータを示した図である。図3を用いて、第1の実施例における乱数生成アルゴリズムについて説明する。
始めに、信号線104が撹拌モードに設定されると、乱数生成手段2は信号線101を介して収集したエントロピーと信号線102を介して受信した初期値を用いて乱数列Aを生成し、信号線103を介して制御手段4に乱数列Aを送信する。
乱数列Aを受信した制御手段4は、信号線105を介して乱数列Aを乱数列保持手段3に書き込む。
乱数列保持手段3が乱数列Aで満たされると、乱数列Aの検定を行う。制御手段4は信号線106を介して乱数列保持手段3から乱数列Aを読み出し、信号線107を介して検定手段5に送信する。このとき、制御手段4は信号線104を一時的乱数生成モードに設定する。また、図2のS3及びS4で説明したように、乱数列Aのビット数が検定手段5が必要とする規定ビット数より少ない場合は、信号線106を介して乱数列保持手段3から乱数列A'を読み出す。そして、制御手段4は、乱数列A'を信号線102を介して乱数生成手段2に送信する。乱数列A'を受信した乱数生成手段2は、乱数列A'を元に一時的乱数列A'を生成し、信号線103を介して制御手段4に送信する。一時的乱数列A'を受信した制御手段4は、信号線107を介して一時的乱数列A'を検定手段5に送信する。
検定手段5は乱数列A及び一時的乱数列A'を受信次第検定を行う。そして、検定手段5は検定終了後、信号線108を介して制御手段4に検定結果を送信する。
検定結果を受信した制御手段4は、信号線104を撹拌モードに設定する。検定結果が不合格の場合は、制御手段4は信号線102を介して乱数生成手段2に初期値を送信し、新しい乱数列の生成を開始する。検定結果が合格の場合は、制御手段4は信号線109を介して乱数列出力要求を受信するまで待機する。そして、制御手段4が乱数列出力要求を受信すると、制御手段4は信号線106を介して乱数列保持手段3から乱数列を読み出し、信号線110を介して読み出した乱数列を出力する。
図4は、乱数列保持手段3が新しい乱数列を保持する際に各信号線を流れるデータを示した図である。また、図5は第1の実施例における乱数列保持手段3に保持される新しい乱数列の生成を開始する際の乱数列保持手段3の状態を示した図である。また、図6は第1の実施例における新しい乱数列を検定する際の乱数列保持手段3の状態を示した図である。また、図7は第1の実施例における新しい乱数列を検定した結果が合格であった場合の乱数列保持手段3の状態を示した図である。図4〜図7を用いて、乱数列保持手段3が新しい乱数列を保持するアルゴリズムを説明する。
乱数列保持手段3は、新しい乱数列を書き込む場所を示す書き込みポインタと、乱数列を読み出す場所を示す読み出しポインタと、出力可能な乱数の上限を示す出力上限ポインタを備えている。
乱数生成装置1が乱数列を出力し、図5のように出力可能な乱数列の量が一定量より少なくなると、乱数生成手段2は信号線101を介して集めたエントロピーと信号線102を介して受信した初期値を元に新しい乱数列αを生成し、制御手段4に送信する。制御手段4は受信した乱数列αを乱数列保持手段3に書き込み、書き込んだ乱数列αのビット数分書き込みポインタを移動させる。新しい乱数列αを生成している際に乱数列出力要求109を受信した場合、要求された乱数列の量が出力可能乱数列の量より少なければ、新しい乱数列αの生成を中断し、乱数列保持手段3に保持されている出力可能な乱数列を出力し、出力した乱数列のビット数分読み出しポインタを移動する。そして、乱数列を出力した後に、再び乱数生成手段2は、新しい乱数列βを生成する。
図6のように、新しい乱数列α、βが一定量乱数列保持手段3に保持されると、乱数列保持手段3に保持されている乱数列の検定を行う。制御手段4は乱数列保持手段3に保持されるすべての乱数列Cを読み出して検定手段5に送信し、その後、制御手段4が図2のS3〜S6と同様の処理を行う。
検定に合格した場合は、制御手段4は図7のように新しい乱数列α、βを検定済みの出力可能な乱数列とし、出力上限ポインタが指し示す場所を書き込みポインタの位置まで移動させる。しかし、検定に不合格の場合には、新しい乱数列α、βを出力することができないので、制御手段4は書き込みポインタの示す場所を出力上限ポインタの示す場所まで戻し、そして再度乱数生成手段2が新しい乱数列を生成する。
以上のようにすることで、検定が必要とする規定ビット数の乱数列を生成しなくても検定を行うことができるので、高品質な乱数をより早く出力することができる。また、検定が必要とする大量の乱数列を保持しなくても、検定を行った高品質な乱数を出力することができるので、空間コストを削減することができる。
図8は本発明の第2の実施例における乱数生成装置の機能ブロック図である。図8において、21は乱数列を出力する乱数生成装置、22は乱数列を生成する乱数生成手段、23は前記乱数生成手段22が生成した乱数列を保持する乱数列保持手段、24は前記乱数生成装置21の内部を流れるデータの制御を行う制御手段、25は入力された乱数列の検定を行う検定手段、26は所定の暗号処理を行う暗号処理手段である。ここでいう所定の暗号処理とは、ストリーム暗号や、共通鍵ブロック暗号、MD(メッセージダイジェスト)演算等のことである。
また、201は乱数生成手段22が乱数列を生成するために収集されたエントロピー、202は制御手段24により設定された初期値、203は乱数生成手段22が生成した乱数列、204は乱数列保持手段23に書き込まれる乱数列、205は乱数列保持手段23から読み出される乱数列、206は制御手段24が暗号処理手段26に送信するデータ、207は暗号処理手段26が生成した一時的乱数列、208は検定が行われる乱数列、209は検定手段25によって行われた検定の結果を制御手段24に示す検定結果、210は乱数生成装置21に乱数列を要求する乱数列出力要求、211は前記210の要求に対して乱数生成装置21から出力される乱数列である。
図9は、第2の実施例における制御手段24の動作を示したフローチャート図である。図9を用いて第2の実施例における制御手段24の動作を説明する。
始めにS21において乱数列を生成・保持するために、制御手段24は信号線202を介して乱数生成手段22に初期値を送信する。そして、制御手段24は乱数生成手段22が生成した乱数列Hを受信すると、乱数列Hを乱数列保持手段23に書き込む。乱数列保持手段23への書き込みは、乱数列Hが乱数列保持手段23を満たすまで行われる。
次にS22において、乱数列保持手段23に保持された乱数列Hを検定するために、制御手段24は乱数列Hを読み出し、検定手段25に送信する。
次にS23において、制御手段24は検定手段25に送信した総ビット数が、検定手段25の必要としている規定ビット数以上であるか否かチェックする。もし検定手段25に送信した総ビット数の方が少なければ、S24において制御手段24は乱数列保持手段23から乱数列H'を読み出し暗号処理手段26に送信する。乱数列H'は、乱数列H と同じ乱数列ではなく、乱数列保持手段23に保持されている乱数列を逆順に読み出したり、ランダムに読み出したりしている。そして、制御手段24は暗号処理手段26が乱数列H'を元に生成した一時的乱数列H'を受信し、検定手段25に送信する。このS24は、S23における総ビット数が、規定ビット数を上回るまで行われる。
次にS25において、制御手段24は検定手段25が検定を終了するまで待機する。
次にS26において、制御手段24は検定手段25から検定結果を受信する。このとき、検定結果が不合格の場合にはS21からやり直す。検定結果が合格の場合には、制御手段24は、乱数列保持手段23に保持されている乱数列Hを出力可能な乱数列とする。
次にS27において、制御手段24は乱数列出力要求を受信するまで待機する。
最後にS28において、制御手段24が乱数列出力要求を受信すると、制御手段24は乱数列保持手段23に保持されている乱数列を読み出し出力する。そしてS21に戻り、制御手段24は新しい乱数列の生成を開始する。
図10は第2の実施例における乱数生成アルゴリズムを行っている際に、各信号線を流れるデータを示した図である。図10を用いて、第2の実施例における乱数生成アルゴリズムについて説明する。
始めに、乱数生成手段22は信号線201を介して収集したエントロピーと信号線202を介して受信した初期値を用いて乱数列Hを生成し、信号線203を介して制御手段24に乱数列Hを送信する。
乱数列Hを受信した制御手段24は、信号線204を介して乱数列Hを乱数列保持手段23に書き込む。
乱数列保持手段23が乱数列Hで満たされると、乱数列Hの検定を行う。制御手段24は信号線205を介して乱数列保持手段23から乱数列Hを読み出し、信号線206を介して検定手段25に送信する。この際、図9のS23及びS24で説明したように、乱数列Hのビット数が検定手段25が必要とする規定ビット数より少ない場合は、制御手段24は信号線205を介して乱数列保持手段23から乱数列H'を読み出し、信号線206を介して暗号処理手段26に送信する。乱数列H'を受信した暗号処理手段26は、乱数列H'を元に一時的乱数列H'を生成し、信号線207を介して制御手段24に送信する。一時的乱数列H' を受信した制御手段24は、信号線208を介して一時的乱数列H'を検定手段25に送信する。
検定手段25は乱数列H及び一時的乱数列H'を受信次第検定を行う。そして、検定手段25は検定終了後、信号線209を介して制御手段24に検定結果を送信する。
検定結果が不合格の場合は、制御手段24は信号線202を介して乱数生成手段22に初期値を送信し、新しい乱数列の生成を開始する。検定結果が合格の場合は、制御手段24は信号線210を介して乱数列出力要求を受信するまで待機する。そして、制御手段24が乱数列出力要求を受信すると、制御手段24は信号線205を介して乱数列保持手段23から乱数列を読み出し、信号線211を介して読み出した乱数列を出力する。
図11は、乱数列保持手段23が新しい乱数列を保持する際に各信号線を流れるデータを示した図である。また、図12は第2の実施例における乱数列保持手段23に保持される新しい乱数列の生成を開始する際の乱数列保持手段23の状態を示した図である。また、図13は第2の実施例における新しい乱数列を検定する際の乱数列保持手段23の状態を示した図である。また、図14は第2の実施例における新しい乱数列を検定した結果が合格であった場合の乱数列保持手段23の状態を示した図である。図11〜図14を用いて、乱数列保持手段23が新しい乱数列を保持するアルゴリズムを説明する。
乱数列保持手段23は、新しい乱数列を書き込む場所を示す書き込みポインタと、乱数列を読み出す場所を示す読み出しポインタと、出力可能な乱数の上限を示す出力上限ポインタを備えている。
乱数生成装置21が乱数列を出力し、図12のように出力可能な乱数列の量が一定量より少なくなると、乱数生成手段22は信号線201を介して集めたエントロピーと信号線202を介して受信した初期値を元に新しい乱数列δを生成し、制御手段24に送信する。制御手段24は受信した乱数列δを乱数列保持手段23に書き込み、書き込んだ乱数列δのビット数分書き込みポインタを移動させる。新しい乱数列δを生成している際に乱数列出力要求210を受信した場合、要求された乱数列の量が出力可能乱数列の量より少なければ、新しい乱数列δの生成を中断し、乱数列保持手段23に保持されている出力可能な乱数列を出力し、出力した乱数列のビット数分読み出しポインタを移動する。そして、乱数を出力した後に、再び乱数生成手段22は、新しい乱数列εを生成する。
図13のように、新しい乱数列δ、εが一定量乱数列保持手段23に保持されると、乱数列保持手段23に保持されている乱数列の検定を行う。制御手段24は乱数列保持手段23に保持されるすべての乱数列Jを読み出して検定手段25に送信し、その後、制御手段24が図9のS23〜S26と同様の処理を行う。そして検定に合格した場合は、図14のように新しい乱数列δ、εを検定済みの出力可能な乱数列とし、出力上限ポインタが指し示す場所を書き込みポインタの位置まで移動させる。しかし、検定に不合格の場合には、新しい乱数列δ、εは出力することができないので、制御手段24は書き込みポインタの示す場所を出力上限ポインタの示す場所まで戻し、そして再度乱数生成手段22が新しい乱数列を生成する。
以上のようにすることで、検定が必要とする規定ビット数の乱数列を生成しなくても検定を行うことができるので、高品質な乱数をより早く出力することができる。また、検定が必要とする大量の乱数列を保持しなくても、検定を行った高品質な乱数を出力することができるので、空間コストを削減することができる。
図15は本発明の第3の実施例における乱数生成装置の機能ブロック図である。図15において、41は乱数列を出力する乱数生成装置、42は乱数列を生成する乱数生成手段、43は前記乱数生成手段42が生成した乱数列を保持する乱数列保持手段、44は前記乱数生成装置41の内部を流れるデータの制御を行う制御手段、45は入力された乱数列の検定を行う検定手段、46はストリーム暗号演算を行うストリーム暗号演算手段、47はMD演算を行うMD演算手段である。
また、401は乱数生成手段42が乱数列を生成するために収集されたエントロピー、402は制御手段44により設定された初期値、403は乱数生成手段42が生成した乱数列、404は乱数列保持手段43に書き込まれる乱数列、405は乱数列保持手段43から読み出される乱数列、406は制御手段44がストリーム暗号演算手段46に送信するデータ、407はストリーム暗号演算手段46が生成した一時的乱数列、408は制御手段44がMD演算手段47に送信するデータ、409はMD演算手段47が生成した一時的乱数列、410は検定が行われる乱数列、411は検定手段45によって行われた検定の結果を制御手段44に示す検定結果、412は乱数生成装置41に乱数列を要求する乱数列出力要求、413は前記412の要求に対して乱数生成装置41から出力される乱数列である。
図16は、第3の実施例における制御手段44の動作を示したフローチャート図である。図16を用いて第3の実施例における制御手段44の動作を説明する。
始めにS41において乱数列を生成・保持するために、制御手段44は信号線402を介して乱数生成手段42に初期値を送信する。そして、制御手段44は乱数生成手段42が生成した乱数列Lを受信すると、乱数列Lを乱数列保持手段43に書き込む。乱数列保持手段43への書き込みは、乱数列Lが乱数列保持手段43を満たすまで行われる。
次にS42において、乱数列保持手段43に保持された乱数列Lを検定するために、制御手段44は乱数列Lを読み出し、検定手段45に送信する。また、制御手段44は一時的乱数列を生成するための暗号処理手段を選択する。この第3の実施例では、制御手段44はストリーム暗号演算手段46を選択している。
次にS43において、制御手段44は検定手段45に送信した総ビット数が、検定手段45の必要としている規定ビット数以上であるか否かチェックする。もし検定手段45に送信した総ビット数の方が少なければ、S44において制御手段44は乱数列保持手段43から乱数列L'を読み出しストリーム暗号演算手段46に送信する。乱数列L'は、乱数列Lと同じ乱数列ではなく、乱数列保持手段43に保持されている乱数列を逆順に読み出したり、ランダムに読み出したりしている。そして制御手段44は、ストリーム暗号演算手段46が乱数列L'を元に生成した一時的乱数列L'を受信し、検定手段45に送信する。このS44は、S43における総ビット数が、規定ビット数を上回るまで行われる。
次にS45において、制御手段44は検定手段45が検定を終了するまで待機する。
次にS46において、制御手段44は検定手段45から検定結果を受信する。このとき、検定結果が不合格の場合にはS41からやり直す。検定結果が合格の場合には、制御手段44は、乱数列保持手段43に保持されている乱数列Lを出力可能な乱数列とする。
次にS47において、制御手段44は乱数列出力要求を受信するまで待機する。
最後にS48において、制御手段44が乱数列出力要求を受信すると、制御手段44は乱数列保持手段43に保持されている乱数列を読み出し出力する。そしてS41に戻り、制御手段44は新しい乱数列の生成を開始する。
図17は第3の実施例における乱数生成アルゴリズムを行っている際に、各信号線を流れるデータを示した図である。図17を用いて、第3の実施例における乱数生成アルゴリズムについて説明する。
始めに、乱数生成手段42は信号線401を介して収集したエントロピーと信号線402を介して受信した初期値を用いて乱数列Lを生成し、信号線403を介して制御手段44に乱数列Lを送信する。
乱数列Lを受信した制御手段44は、信号線404を介して乱数列Lを乱数列保持手段43に書き込む。
乱数列保持手段43が乱数列Lで満たされると、乱数列Lの検定を行う。制御手段44は信号線405を介して乱数列保持手段43から乱数列Lを読み出し、信号線410を介して検定手段45に送信する。この際、図16のS43及びS44で説明したように、乱数列Lのビット数が検定手段45が必要とする規定ビット数より少ない場合は、制御手段44は信号線405を介して乱数列保持手段43から乱数列L'を読み出す。そして、制御手段44は、乱数列L'を信号線406を介してストリーム暗号演算手段46に送信する。乱数列L'を受信したストリーム暗号演算手段46は、乱数列L'を元に一時的乱数列L'を生成し、信号線407を介して制御手段44に送信する。一時的乱数列L'を受信した制御手段44は、信号線410を介して一時的乱数列L'を検定手段45に送信する。
検定手段45は乱数列L及び一時的乱数列L'を受信次第検定を行う。そして、検定手段45は検定終了後、信号線411を介して制御手段44に検定結果を送信する。
検定結果が不合格の場合は、制御手段44は信号線402を介して乱数生成手段42に初期値を送信し、新しい乱数列の生成を開始する。検定結果が合格の場合は、制御手段44は信号線412を介して乱数列出力要求を受信するまで待機する。そして、制御手段44が乱数列出力要求を受信すると、制御手段44は信号線405を介して乱数列保持手段43から乱数列を読み出し、信号線413を介して読み出した乱数列を出力する。
図18は、乱数列保持手段43が新しい乱数列を保持する際に各信号線を流れるデータを示した図である。また、図19は第3の実施例における乱数列保持手段43に保持される新しい乱数列の生成を開始する際の乱数列保持手段43の状態を示した図である。また、図20は第3の実施例における新しい乱数列を検定する際の乱数列保持手段43の状態を示した図である。また、図21は第3の実施例における新しい乱数列を検定した結果が合格であった場合の乱数列保持手段43の状態を示した図である。図18〜図21を用いて、乱数列保持手段43が新しい乱数列を保持するアルゴリズムを説明する。
乱数列保持手段43は、新しい乱数列を書き込む場所を示す書き込みポインタと、乱数列を読み出す場所を示す読み出しポインタと、出力可能な乱数の上限を示す出力上限ポインタを備えている。
乱数生成装置41が乱数列を出力し、図19のように出力可能な乱数列の量が一定量より少なくなると、乱数生成手段42は信号線401を介して集めたエントロピーと信号線402を介して受信した初期値を元に新しい乱数列λを生成し、制御手段44に送信する。制御手段44は受信した乱数列λを乱数列保持手段43に書き込み、書き込んだ乱数列λのビット数分書き込みポインタを移動させる。新しい乱数列λを生成している際に乱数列出力要求412を受信した場合、要求された乱数列の量が出力可能乱数列の量より少なければ、新しい乱数列λの生成を中断し、乱数列保持手段43に保持されている出力可能な乱数列を出力し、出力した乱数列のビット数分読み出しポインタを移動する。そして、乱数を出力した後に、再び乱数生成手段42は、新しい乱数列μを生成する。
図13のように、新しい乱数列λ、μが一定量乱数列保持手段43に保持されると、乱数列保持手段43に保持されている乱数列の検定を行う。制御手段44は乱数列保持手段43に保持されるすべての乱数列Nを読み出して検定手段45に送信し、その後、制御手段44が図16のS43〜S46と同様の処理を行う。そして検定に合格した場合は、図14のように新しい乱数列λ、μを検定済みの出力可能な乱数列とし、出力上限ポインタが指し示す場所を書き込みポインタの位置まで移動させる。しかし、検定に不合格の場合には、新しい乱数列λ、μは出力することができないので、制御手段44は書き込みポインタの示す場所を出力上限ポインタの示す場所まで戻し、そして再度乱数生成手段42が新しい乱数列を生成する。
以上のようにすることで、検定が必要とする規定ビット数の乱数列を生成しなくても検定を行うことができるので、高品質な乱数をより早く出力することができる。また、検定が必要とする大量の乱数列を保持しなくても、検定を行った高品質な乱数を出力することができるので、空間コストを削減することができる。
実施例3ではシステムが備える所定の暗号処理を行う暗号処理手段としてストリーム暗号演算手段とMD演算手段を用いたが、共通鍵ブロック暗号などを用いても良い。また、複数の暗号処理手段が同じ暗号処理を行っても良く、数も2つに限ったことではない。
以上の実施例1〜3は本発明の一例に過ぎず、本発明の効果は前記実施例に限ったことではない。
1 乱数生成装置
2 乱数生成手段
3 乱数列保持手段
4 制御手段
5 検定手段
21 乱数生成装置
22 乱数生成手段
23 乱数列保持手段
24 制御手段
25 検定手段
26 暗号処理手段
41 乱数生成装置
42 乱数生成手段
43 乱数列保持手段
44 制御手段
45 検定手段
46 ストリーム暗号演算手段
47 MD演算手段
2 乱数生成手段
3 乱数列保持手段
4 制御手段
5 検定手段
21 乱数生成装置
22 乱数生成手段
23 乱数列保持手段
24 制御手段
25 検定手段
26 暗号処理手段
41 乱数生成装置
42 乱数生成手段
43 乱数列保持手段
44 制御手段
45 検定手段
46 ストリーム暗号演算手段
47 MD演算手段
Claims (3)
- 乱数列を生成する乱数生成手段と、データの制御を行う制御手段と、乱数列を保持しておく乱数列保持手段と、乱数列の品質を検定する検定手段とを備え、
前記乱数列保持手段に保持されている乱数列と前記乱数列保持手段に保持されている乱数列を元に前記乱数生成手段が生成した一時的乱数列に対して、前記検定手段が検定を行うことを特徴とする乱数生成装置。 - 請求項1記載の乱数生成装置において、
乱数生成装置の外部に備わっている所定の暗号アルゴリズムを実行する暗号処理手段を用いて、前記一時的乱数列を生成することを特徴とする乱数生成装置。 - 請求項2記載の乱数生成装置において、
乱数生成装置の外部に備わっている所定の暗号アルゴリズムを実行する暗号処理手段が複数個ある場合は、前記複数個の暗号処理手段から何れかの暗号処理手段を選択し、前期選択された暗号処理手段を用いて、前記一時的乱数列を生成することを特徴とする乱数生成装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005138415A JP2006318091A (ja) | 2005-05-11 | 2005-05-11 | 乱数生成装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005138415A JP2006318091A (ja) | 2005-05-11 | 2005-05-11 | 乱数生成装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2006318091A true JP2006318091A (ja) | 2006-11-24 |
Family
ID=37538742
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2005138415A Withdrawn JP2006318091A (ja) | 2005-05-11 | 2005-05-11 | 乱数生成装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2006318091A (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008197847A (ja) * | 2007-02-09 | 2008-08-28 | Toshiba Corp | 乱数検査装置およびその検査方法 |
JP2013214050A (ja) * | 2012-03-30 | 2013-10-17 | Freescale Semiconductor Inc | ランダム値生成方法およびシステム |
KR20190049283A (ko) * | 2017-11-01 | 2019-05-09 | 국민대학교산학협력단 | 경량 난수 헬쓰 테스트 장치 |
-
2005
- 2005-05-11 JP JP2005138415A patent/JP2006318091A/ja not_active Withdrawn
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008197847A (ja) * | 2007-02-09 | 2008-08-28 | Toshiba Corp | 乱数検査装置およびその検査方法 |
JP2013214050A (ja) * | 2012-03-30 | 2013-10-17 | Freescale Semiconductor Inc | ランダム値生成方法およびシステム |
KR20190049283A (ko) * | 2017-11-01 | 2019-05-09 | 국민대학교산학협력단 | 경량 난수 헬쓰 테스트 장치 |
KR101981623B1 (ko) | 2017-11-01 | 2019-05-23 | 국민대학교산학협력단 | 경량 난수 헬쓰 테스트 장치 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101305627B1 (ko) | 암호 연산 장치 및 메모리 시스템 | |
JP4546339B2 (ja) | 乱数生成装置及び乱数生成方法 | |
CN111008407A (zh) | 用于执行虚拟加密操作的加密电路 | |
WO2006095891A1 (ja) | データ処理装置 | |
JP2006318091A (ja) | 乱数生成装置 | |
JP2010252305A (ja) | 半導体集積回路及びその制御方法 | |
US8250128B2 (en) | Apparatus and methods for autonomous testing of random number generators | |
WO2008001628A1 (fr) | Générateur et dispositif de restauration d'information distribuée | |
JP6372295B2 (ja) | 物理乱数生成回路の品質テスト方法、乱数発生器および電子装置 | |
CN1996830B (zh) | 具有高级加密标准核的集成电路及验证该标准核的外包 | |
JP4327169B2 (ja) | 暗号化装置 | |
JP2016514315A (ja) | 素数生成のための方法およびデバイス | |
CN106548098A (zh) | 用于检测故障攻击的方法和系统 | |
JP2005340892A (ja) | 暗号回路 | |
CN109993005A (zh) | 对cpu总线的数据信号加解扰的方法及装置 | |
JP4323527B2 (ja) | 半導体記憶装置 | |
US10262098B1 (en) | Field programmable gate array bitstream verification | |
JP2008299930A (ja) | 半導体記憶装置 | |
JP4647246B2 (ja) | 暗号復号回路の動作確認方法及び動作確認装置 | |
JP2011075460A (ja) | 半導体集積回路 | |
JP4438985B2 (ja) | パターン発生器及び試験装置 | |
JPH10262041A (ja) | 入力ビット列暗号化装置及び方法 | |
JP2003316263A (ja) | 演算装置および演算方法 | |
CN117992982A (zh) | 数据处理方法及装置、电子设备和计算机可读存储介质 | |
JP2008226314A (ja) | メモリ検査装置及びメモリ検査方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A300 | Application deemed to be withdrawn because no request for examination was validly filed |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20080805 |