説明

乱数生成装置及び乱数生成方法

【課題】 確実に品質の保証された乱数を出力することができる乱数出力装置とその方法を提供すること。
【解決手段】 データを保持する保持手段と、前記保持手段に保持されたデータを攪拌する攪拌手段と、前記保持手段に保持されたデータの乱数としての品質を評価する品質評価手段と、前記品質評価手段による評価に応じて、データの出力を制御する出力制御手段とを備える。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は乱数を生成する乱数生成装置及び乱数生成方法に関するものである。
【背景技術】
【0002】
従来、デジタルイメージング機器や遊戯機器等、様々な機器における各種信号処理に乱数が使われていた。また近年、各種機器類のネットワーク化が進むとともにセキュリティ機能が実装されるようになってきたのに伴って、より一層乱数が使われる場面が増えてきた。
【0003】
特にセキュリティ機能を実装する際に使われる乱数の場合には、安全性向上の重要な要素として、良質な乱数を豊富にもつ必要があった。そしてこの場合、乱数に必要な要素として前後関係からの予測困難性、配列の不規則性、十分に長い周期性、一様性等が従来以上に求められるようになっている。
【0004】
そこで例えば特許文献1では、乱数生成装置の内部の乱数発生器で発生した乱数を外部に出力しながら乱数生成装置に内蔵した検定回路により検定を行い、検定終了後に検定結果を追って出力する技術が開示されている。
【特許文献1】特開2003−29963号公報
【発明の開示】
【発明が解決しようとする課題】
【0005】
しかしながら上記従来例では乱数生成装置から外部へ出力された乱数の品質が十分であるか否かは、上記検定回路による検定が済むまでわからなかった。即ち、品質の保証が出来ていない乱数をも出力してしまう可能性が有った。
【0006】
例えば、乱数を使用するアプリケーションが高品質の乱数を必須とする場合には、装置外部で所定量の乱数をバッファリングし、装置内部の検定回路による検定結果を確認してから、そのバッファリングした乱数を使うか否かの判定をする等の必要があった。
【0007】
本発明はかかる事情に鑑みてなされたものであり、確実に品質の保証された乱数を出力することができる乱数出力装置とその方法を提供することを目的とする。
【課題を解決するための手段】
【0008】
上記の目的を達成するために、本発明による乱数出力装置は、データを保持する保持手段と、前記保持手段に保持されたデータを攪拌する攪拌手段と、前記保持手段に保持されたデータの乱数としての品質を評価する品質評価手段と、前記品質評価手段による評価に応じて、データの出力を制御する出力制御手段とを備えることを特徴とする。
【発明の効果】
【0009】
本発明によれば、装置外部へ、品質が保証された乱数を確実に出力することができる。
【発明を実施するための最良の形態】
【0010】
(第1の実施例)
図1は本発明を実施した乱数生成装置のブロック図を示したものである。同図において1は品質が保証された乱数を出力する乱数生成装置、2はデータ保持部内のデータの初期値を設定するための初期値設定部、3はデータを保持しておくためのデータ保持部、4はデータ保持部3に保持されたデータを取り出し撹拌するための撹拌部、5はデータ保持部3より得られるデータの品質を評価する品質評価部、6はデータ保持部3から得られるデータの出力を品質評価部5による品質評価結果に応じて制御する出力制御部である。
【0011】
101は初期値設定部2から出力された初期値を示すデータ、102は撹拌部4によって撹拌されたデータ、103はデータ101とデータ102から選択されデータ保持部3に入力するデータ、104、105、112はデータ保持部3から取り出されたデータ、106は設定された攪拌回数を示すパラメータ、108は品質評価部5によって決定された更なる撹拌回数を示すパラメータ、107は撹拌回数パラメータ105、108から選択された撹拌回数を示すパラメータ、109は設定された撹拌回数終了を示す撹拌終了信号、110、113は品質評価部5によって決定された乱数出力を制御するための出力制御信号、111は品質が保証された乱数データである。
【0012】
また、7は初期値データ101とデータ102のうち一方を選択するスイッチ、8は撹拌回数パラメータ106、108のうち一方を選択するスイッチである。
【0013】
以下、図1を用いて本発明の乱数生成装置における乱数生成動作を詳細に説明する。
【0014】
まず、初期値設定部2により初期値データ101が出力される。初期値データ101の生成方法には様々な方法があるが、ここでは擬似乱数発生器による初期値データの生成とする。なお生成方法はこれに限らず、物理乱数発生器でも可能である。
【0015】
この段階ではデータの撹拌がまだ行なわれていないため、最初、スイッチ7は、初期値データ101とデータ102のうち、初期値データ101を選択する。選択された初期値データ101は、データ103としてデータ保持部3に一時的に保持される。
【0016】
次にデータ保持部3から取り出されたデータ105は、撹拌部4で撹拌される。撹拌部4は、データ105をハッシュ関数、ブロック暗号化等を用いて必要なビット数毎に撹拌処理する。ハッシュ関数、ブロック暗号化等を用いて攪拌処理をすることにより、データ105は、そのビット間の不規則性が増加し、またエントロピーの高いデータ列となる。
【0017】
攪拌処理とは、攪拌されるデータ中のビット配列の不規則性を増加させる処理であって、乱数としての品質を向上させる処理である。それを満たす処理ならば、前記ハッシュ関数、ブロック暗号化などの処理に限らない。
【0018】
このようにして、撹拌部4はまず一度データ105を撹拌後データ102として出力する。このデータ102は、スイッチ7によりデータ保持部に書き込まれるデータ103として選択される。このようにして所定量のデータがデータ保持部3から読み出され、撹拌部4により撹拌された後、再びデータ保持部3に書き込まれる。
【0019】
データ保持部3へのデータの書き込みは、上述したデータ保持部3からのデータの読み出しと同じ順序で、行なっていく。
【0020】
撹拌部4には、所定の撹拌回数を示す撹拌回数パラメータ106及び、品質評価部5から出力され攪拌回数を示す撹拌回数パラメータ108から、選択された撹拌回数パラメータ107が与えられる。最初は撹拌回数パラメータ106が選択される。撹拌部4は、撹拌回数パラメータ106が示す回数だけ、データの撹拌を行なう。
【0021】
ここで攪拌回数とは、データ保持部3からデータが取り出され、攪拌部4でデータがハッシュ関数、ブロック暗号化等を用いて攪拌され、その攪拌後、データ102をデータ保持部3に書き込むまでを、1回の攪拌回数としている。
【0022】
このようにして所定回数分のデータの撹拌が終わると、撹拌部4は、撹拌終了信号109を出力する。
【0023】
続いて品質評価部5は、攪拌された乱数104を、所定量毎に、処理することにより乱数の品質評価を行なう。
【0024】
上記品質評価部5が行なう品質評価は様々な基準があるが、ここでは代表的なものとしてFIPS PUB 140−2に記載されている乱数検定を行なう。
【0025】
以下に乱数の品質評価(検定)の内容(検定項目)1〜4を示す。
1.The mono bit test
連続するランダムな20000ビット中の‘1’の数をXとしたとき
9725<X<10275 ・・・(1)
2.The long runs test
連続するランダムな20000ビット中の‘1’or‘0’の最長連続ビット数をXとしたとき
X<26 ・・・(2)
3.The runs test
連続するランダムな20000ビット中の‘1’or‘0’の連続ビット数をi、度数をXiとしたとき
2315<X1<2685 ・・・(3)
1114<X2<1386 ・・・(4)
527 <X3<723 ・・・(5)
240 <X4<384 ・・・(6)
103 <X5<209 ・・・(7)
103 <X6<209 ・・・(8)
4.The poker test
連続するランダムな20000ビットを4ビット毎に5000に区切り、その値(0〜15)の度数をf(i)とし、
X=(16/5000)*(Σi[f(i)]^2)−5000としたとき
2.16<X<46.17 ・・・(9)
乱数品質評価部5はこのような乱数検定を行い、上記検定項目の1〜4までの全てを合格した場合に、出力制御信号110、113により乱数の出力を許可する。
【0026】
出力制御部6は、上記出力許可を得た後、攪拌されたデータ112を所望のデータ量だけ読み出し、乱数データ111として外部に出力することができる。なお、この出力制御部6は単純に攪拌データの塊を読み出すだけではなく、別の読み出しを行なうことも可能である。
【0027】
特に、出力制御部6は、上記出力許可を得た後、攪拌されたデータ112をランダムに読み出して合成した後に、乱数データ111として出力することができる。こうすることにより、さらにビット間の不規則性が増加し、エントロピーの高いデータ列が得られる。
【0028】
図4はこのようなデータ保持部3からのデータの読み出しを示したものである。ここでは4KBのデータ保持部3が用意されており、1バイト単位でデータの読み出し及び書き込みができるようになっている。
【0029】
このデータ保持部3から8バイト分のデータを読み出す場合、最初に、アドレス0x103から1バイト分のデータがデータ保持部3から読み出される。続いて同様にアドレス0xb59から1バイト分のデータが読み出される。このとき、データ保持部3からデータを読み出す際の12ビットのアドレスはランダムに選ばれるが、各アドレスを一回ずつ読み出し、かつ、同じアドレスを二度は読み出さずに全アドレスを一巡するようになっている。このようなランダムなアドレス指定は、例えば公知のM系列の乱数生成器により乱数を発生させればよい。M系列の乱数は0x000のデータは使えないほか、乱数品質が低いが、ここでは12ビット分のアドレスが一通り重複なく1度ずつ選ばれれば十分なので、機能としては特に問題無い。
【0030】
なお、出力制御部6は、検定前に合成した乱数データを品質評価部5に出力してもよい。そうすることにより検定に合格する確率が高くなる。
【0031】
検定項目1〜4までのうち、一項目でも検定に合格しなければ、品質評価部5は、出力制御信号110により乱数の出力を許可しない。更にこの場合は、データ105の撹拌を続けて行い、乱数の品質を向上させる。
【0032】
ところでデータの撹拌回数と乱数の品質の関係は、上記検定項目1を例にとると図3に示されるようになっている。撹拌回数が増える毎にデータ104に‘1’が現れる数Xは実線で示されるように推移していく。Xの推移は、ばらつきがあるものの、概ね点線で示される範囲に90%以上入っており、式(1)を満たすためには15回程度の撹拌を続ければよい。そこで撹拌部に設定される撹拌回数パラメータ106には15を設定すれば90%以上の確率で検定項目1に合格する。
【0033】
なお、攪拌部に設定される攪拌回数パラメータ106には、ほぼ100%、検定項目1を合格するであろう攪拌回数を設定してもよい。
【0034】
もし品質評価部5で基準を満たさない場合は、Xの値に応じて更なる撹拌回数パラメータ108を設定する。
【0035】
設定方法の一つとしては、ほぼ100%、検定項目1を合格するであろう攪拌回数と、品質評価部5で基準を満たさなかった攪拌回数との差分の回数を設定する。そして攪拌部4ではその差分の回数だけ攪拌を繰り返す。そして十分な乱数品質が得られた後、出力制御部6から、乱数データ111が出力されることになる。
【0036】
このようにパラメータの設定をすることにより、2回の品質評価でほぼ確実に検定に合格することができる。
【0037】
次に図2は、本発明を実施した乱数生成装置における乱数生成の動作を示すフローチャートである。同図に従って本発明の乱数生成装置における乱数生成フローを説明する。
【0038】
ステップS201において、初期値設定部2は、データ保持部に保持するためのデータの初期値を設定する。
【0039】
ステップS202において、攪拌部4は、データ保持部3から受け取ったデータを撹拌する。
【0040】
ステップS203において、攪拌部4は撹拌回数をカウントし、設定された撹拌回数に達していない場合ステップS202に戻り、データを再攪拌する。攪拌回数が設定された撹拌回数に達している場合は、後述するステップS204に進む。
【0041】
ステップS204において、品質評価部5は、攪拌されたデータの品質評価を行なう。
【0042】
ステップS205において、品質評価の結果が基準に達していない場合、攪拌部4はデータ撹拌を続け、基準に達していれば後述するS206へ進む。
【0043】
ステップS206において、出力制御部6は、ステップS205において品質評価の結果が基準に達した乱数データを出力する。
【0044】
ステップS207において、品質評価部5は、あと何回撹拌すれば良いかを算出し、更なるデータ撹拌回数を決定する。
【0045】
また、本実施例では初期値が設定され攪拌部4で攪拌を行なうが、攪拌を行なう前に初期値データを品質評価部5で品質の評価を行なってもよい。
【0046】
また、品質評価部5による品質評価は多量の乱数を扱わなければならないため、処理に時間がかかる。よって、所望の乱数品質を得られればできるだけ少ない処理で済んだ方がよい。品質評価部5がFIPS PUB 140−2に記載されている複数の乱数の品質評価を行なう場合、基本的にデータ撹拌の回数を増やすと乱数の品質は単調に向上していくものと考えられる。よって、品質評価部5は前回不合格だった項目の検定のみ行なう。
【0047】
以上説明したようにデータ保持部に保持されたデータの品質評価を行い、あらかじめ設定された基準を満たした場合のみ乱数出力を許可することで、誤って品質の低い乱数が出力されることがなくなる。
【0048】
(第2の実施例)
本発明の第2の実施例においては、品質評価部5が、十分な品質が得られるのに必要な攪拌回数をあらかじめ設定された確率に応じて決定することで、データ撹拌及び品質評価のオーバーヘッドを最適化する。
【0049】
まずデータの撹拌について説明する。データの撹拌にかかる時間は、データ保持部3のサイズ、撹拌使用する関数等、様々な要因に依存する。よって、攪拌回数は所望の乱数品質を得られればできるだけ少ない方がよい。
【0050】
検定項目1を例にとって説明すると式(1)は以下のように変形できる。
X’<275(ただしX’=|X−10000|)・・・(10)
データの撹拌回数とこのX’の推移は図5に示される。図5によると、データの撹拌回数を増やすことによって概ね単調に乱数品質が向上していくものと考えられる。しかし乱数品質の向上スピードは、初期値の設定方法や使用するハッシュ関数のアルゴリズムによってばらつきがある。図5に示すように撹拌回数とX’の減少していくカーブがA,Bのように幅をもつとすると、基準値を満たすまでに必要なデータの撹拌回数はAでは26回、Bでは18回となり8回程度差がある。
【0051】
そこで品質評価部5では過去の攪拌回数の記録を保持しており、その結果から各検定項目について基準を満たすのに必要なデータの撹拌回数を確率別に算出する。そして、品質評価部5は、所望の確率で検定を合格する撹拌回数を出力するようにする。例えば、最初に品質評価部5は、60%の確率で検定を合格する撹拌回数を撹拌回数パラメータ106として設定する。次に、攪拌部4による所定の撹拌回数が終わった後、品質評価部5は、基準の品質に満たないと判定した場合、ほぼ100%検定を合格する撹拌回数を撹拌回数パラメータ108として設定する。こうすることにより、データの撹拌回数を最適化できる。
【0052】
図6は本発明の第2の実施例における乱数生成のフローチャートを示すものである。
【0053】
同図に従って本発明の第2の実施例における乱数生成装置による乱数生成フローを説明する。
【0054】
ステップS601において、初期値設定部2は、データ保持部に保持するためのデータの初期値を設定する。
【0055】
ステップS602において、品質評価部5は、初期値データと攪拌に使用するハッシュ関数やブロック暗号化のアルゴリズムから、品質評価に合格することができる攪拌回数を確率別に算出する。
【0056】
ステップS603において、攪拌部4は、確率別に算出された回数分データの撹拌を行なう。
【0057】
ステップS604において、攪拌部4は、撹拌回数をカウントし、品質評価部5によって設定された撹拌回数に達していない場合、ステップS603に戻り、データの再撹拌を行なう。攪拌回数が設定された撹拌回数に達している場合、後述するステップS605に進む。
【0058】
ステップS605において、品質評価部5は、攪拌された乱数の品質評価を行なう。
【0059】
ステップS606において、攪拌部4は、品質評価の結果が基準に達していない場合、データの撹拌を続け、基準に達していれば後述するS607へ進む。
【0060】
ステップS607において、出力制御部6は、ステップS606において品質評価の結果が基準に達した乱数データを出力する。
【0061】
ステップS608において、品質評価の結果が基準に達していないとき品質評価部5は、あと何回撹拌すれば良いかを算出し、更なるデータ撹拌回数を決定する。
【0062】
また、ハッシュ関数やブロック暗号化など、データ撹拌に使う関数が複数ある場合、通常はデータ撹拌の度にランダムに関数を選択し、乱数の耐タンパー性を向上させる。しかし緊急にデータを撹拌する必要がある場合には、処理時間の短い撹拌手段としてハッシュ関数を選択するようにしてもよい。こうすることによって、データ撹拌のオーバーヘッドを状況に合わせて対応させることができる。
【0063】
また、出力制御部6では、データ保持部3から所定ビットのデータを取り出し、合成した乱数データ112を品質評価部5に出力してもよい。
【0064】
また、実施例1同様に、品質評価部5は、FIPS PUB 140−2に記載されている複数の乱数の品質評価を行なう場合、前回不合格だった検定項目のみ行なうようにする。
【0065】
以上説明したように、品質評価部5はあらかじめ設定されたパラメータやデータ撹拌の緊急性の自動的な判断等からデータ撹拌の手段、回数及び品質評価の頻度、項目等を対応させることができるので、データ撹拌処理のシステムのパフォーマンスに与えるオーバーヘッド削減に効果がある。
【0066】
(第3の実施例)
第3の実施例では、乱数データを乱数生成装置外部に出力した後の動作制御についても述べる。本実施例では、乱数データを乱数生成装置外部に出力した直後、初期値設定部はデータ保持部の少なくとも一部に固定値を書き込む。データ保持部から取り出したデータの品質を意図的に低下させることによりデータ保持部に保持されたデータの撹拌を強制的に行なわせる。
【0067】
図7は本実施例を実施した乱数生成装置のブロック図を示したものである。同図において第1の実施例と同様なものは説明を省略する。114は初期値設定部2の初期値を固定値にするか変動値にするかを選択する初期値選択信号、115は外部からの乱数出力読み出し信号である。
【0068】
図7を使って本実施例の乱数生成装置における乱数生成動作を詳細に説明する。本実施例では、攪拌部4によって十分な乱数の品質を得るまでは第1の実施例と同様であるので、省略する。
【0069】
本実施例では、品質評価部5で十分な乱数品質が得られた後、出力制御部6は外部からの乱数出力読み出し信号115により乱数データ111の出力が開始される。出力制御部6は乱数データ111を出力した後、あらかじめ設定された一定量の乱数を出力するまで初期値設定部2に対して初期値選択信号114を出力する。初期値設定部2は、初期値選択信号114に応じて、初期値を擬似乱数発生器から生成された変動値から、固定値に変更し、この初期値を表す初期値データ101を出力する。
【0070】
スイッチ7は、乱数の出力を開始した後は、データ保持部3に書き込むデータ103として、初期値設定部2からの出力される初期値データ101を選択する。このようにして乱数データ111を出力した後はデータ保持部3に固定値が書き込まれていく。この初期値選択信号114の出力に応じた固定値の書き込み動作は、出力制御部6から出力される乱数データ111が設定量を超えるまで行われる。
【0071】
次に出力制御部6から出力される乱数データ111が設定量を超えた場合、品質評価部5は、データ保持部にあるデータ104を再度評価する。乱数データ111を外部に出力した後はデータ保持部3には固定値が書き込まれているため、データ保持部3から取り出したデータ104の品質は低下している。そして品質評価の基準を下回れば更なる撹拌回数パラメータ106により、データの撹拌の回数が設定される。そして攪拌部4は、設定された回数のデータ撹拌を行なう。その後、再度、品質評価部5は攪拌部4で攪拌されたデータ104を評価する。
【0072】
このようにして再び乱数データの品質の確保され、乱数データが出力可能な状態になる。
【0073】
図8は本実施例を実施した乱数生成装置における乱数生成のフローチャートを示すものである。同図に従って本実施例の乱数生成装置における乱数生成フローを説明する。
【0074】
ステップS801において、初期値設定部2は、データ保持部に保持するためのデータの初期値を設定する。
【0075】
ステップS802において、品質評価部5は、初期値データと攪拌に使用するハッシュ関数やブロック暗号化のアルゴリズムから、品質評価に合格することができる攪拌回数を確率別に算出する。
【0076】
ステップS803において、攪拌部4は、確率別に算出された回数分データの撹拌を行なう。
【0077】
ステップS804において、攪拌部4は、撹拌回数をカウントし、品質評価部5によって設定された撹拌回数に達していない場合、ステップS803に戻り、データの再撹拌を行なう。攪拌回数が設定された撹拌回数に達している場合、後述するステップS805に進む。
【0078】
ステップS805において、品質評価部5は、攪拌された乱数の品質評価を行なう。
【0079】
ステップS806において、攪拌部4は、品質評価の結果が基準に達していない場合、データの撹拌を続け、基準に達していれば後述するS808へ進む。
【0080】
ステップS807において、品質評価の結果が基準に達していない場合、品質評価部5はあと何回撹拌すれば良いかを算出し、更なるデータ撹拌回数を決定する。
【0081】
ステップS808において、品質評価の結果が基準に達している場合、出力制御部6は外部からの要請による乱数データの出力開始を待つ。
【0082】
ステップS809において、乱数データの出力を開始した直後、出力制御部6は、あらかじめ設定された量の乱数データを出力したかを判断する。
【0083】
ステップS810において、ステップS809で出力制御部6から出力される乱数データが設定量に達するまでは、初期値設定部はデータ撹拌の初期値を固定値に設定し、固定値をデータ保持部に書き込む。出力した乱数データが設定量を超えた場合、ステップS805に戻る。
【0084】
以上説明したように乱数データを乱数生成装置外部に出力後はデータ保持部に固定値を書き込み、データ保持部から取り出したデータの品質を意図的に低下させることによりデータ保持部に保持されたデータの再撹拌を行なうことができ、常に品質が高く耐タンパー性の高い乱数データを出力できるようになる。
【0085】
(第4の実施例)
図9は本発明の第4の実施例における乱数生成装置のブロック図を示したものである。同図において第3の実施例と同様なものは説明を省略する。第3の実施例では、データ攪拌の初期値を設定量だけ固定値としていたが、本実施例では装置外部から品質評価の要求が有るまで初期値を固定値とするものである。
【0086】
116は外部から乱数生成装置1に入力する、品質評価を要求する信号である。品質評価要求信号116は品質評価部6に入力する。
【0087】
図9を使って本発明の第4の実施例における乱数生成装置における乱数生成動作を詳細に説明する。なお、第3の実施例と同様の動作は省略する。
【0088】
出力制御部6が乱数データ111の出力を開始した後、乱数生成装置1の外部から入力する品質評価要求信号116により品質評価の要求があれば、品質評価部6で品質評価を行なう。品質評価の要求があるまでは、第3の実施例と同様に、初期値設定部2は、初期値を固定値に設定し、初期値データ101として固定値を出力する。
【0089】
以下第1の実施例と同様に品質評価部5の評価結果に応じて更なる撹拌回数パラメータ106を生成し、撹拌部4が所定の回数分データの撹拌を行なう。品質評価部5は品質評価を行い、十分な品質が得られるまでデータの撹拌を行なう。
【0090】
このようにして再び乱数データの品質の確保され、乱数データが出力可能な状態になる。
【0091】
図10は本発明の第4の実施例における乱数生成装置における乱数生成の動作を示すフローチャートである。同図においてS1009以外は第3の実施例と同様なので説明を省略する。
【0092】
ステップS1009において、乱数データの出力を開始した直後、外部から品質評価の要求がきたかを判定する。乱数データの出力を開始した直後から品質評価の要求が来るまではデータ撹拌の初期値を固定値に設定し、固定値をデータ保持部に書き込み続ける。そして品質評価の要求が来た場合はステップS1005に戻り、再び品質評価を行い、品質が低下して基準を下回っていれば再び更なる撹拌回数を決定し、データの撹拌を行なう。
【0093】
以上説明したように、乱数データを乱数生成装置外部に出力した後は、データ保持部に固定値を書き込み、データ保持部から取り出したデータの品質を意図的に低下させておく。品質評価部は、外部からの品質評価の要求が来たら品質評価を行なうことにより、外部アプリケーションが乱数を必要としない時にデータ撹拌を行なうことができるので、データ撹拌、品質評価のオーバーヘッドをシステムのパフォーマンスに影響を与えず、常に品質が高く耐タンパー性の高い乱数データを出力できる。
【0094】
なお、上記各実施例における品質評価部5による評価として、FIPS PUB 140−2に適合させる為に1〜4の検定項目を利用することを説明したが、本発明ではこれに限らず、例えば検定項目3のみを検定項目とする場合等に適用しても良い。また、検定項目を任意に選択、設定できるようにしても良い。
【図面の簡単な説明】
【0095】
【図1】本発明第1の実施例における乱数生成装置の機能ブロックを示した図である。
【図2】本発明第1の実施例の乱数生成アルゴリズムを示したフローチャートを示した図である。
【図3】本発明の実施形態における乱数撹拌回数と検定項目1の評価値の推移を示した図である。
【図4】本発明の実施形態におけるデータ保持部からのデータ読み出しの様子を示した図である。
【図5】本発明の実施形態におけるデータ撹拌回数と乱数評価値の推移のばらつきを示した図である。
【図6】本発明第2の実施例の乱数生成アルゴリズムを示したフローチャートを示した図である。
【図7】本発明第3の実施例における乱数生成装置の機能ブロックを示した図である。
【図8】本発明第3の実施例の乱数生成アルゴリズムを示したフローチャートを示した図である。
【図9】本発明第4の実施例における乱数生成装置の機能ブロックを示した図である。
【図10】本発明第4の実施例の乱数生成アルゴリズムを示したフローチャートを示した図である。
【符号の説明】
【0096】
1 乱数生成装置
2 初期値設定部
3 データ保持部
4 データ攪拌部
5 品質評価部
6 出力制御部

【特許請求の範囲】
【請求項1】
データを保持する保持手段と、
前記保持手段に保持されたデータを攪拌する攪拌手段と、
前記保持手段に保持されたデータの乱数としての品質を評価する品質評価手段と、
前記品質評価手段による評価に応じて、データの出力を制御する出力制御手段とを備えることを特徴とする乱数生成装置。
【請求項2】
前記出力制御手段は、前記品質評価手段による評価結果が合格だった場合にはデータの出力を許可し、不合格だった場合にはデータの出力を許可しないことを特徴とする前記請求項1記載の乱数生成装置。
【請求項3】
前記攪拌手段は、前記品質評価手段による評価結果が不合格だった場合、前記保持手段に保持されたデータをm(m>0)回撹拌することを特徴とする請求項2に記載の乱数生成装置。
【請求項4】
前記品質評価手段による乱数の検定が複数項目ある場合、前記品質評価手段は、更なる攪拌の後、前回十分な評価結果が得られなかった検定項目のみ品質評価を行なうことを特徴とする前記請求項3に記載の乱数生成装置。
【請求項5】
前記品質評価手段は、前記撹拌手段がn(n>0)回の撹拌を行なった後にデータの品質を評価するものであって、前記品質評価手段は、前記n回に満たないi(i<j<n)回目の攪拌後の評価結果と、j回目の攪拌後の評価結果を保持し、これら評価結果に基づいて、攪拌回数mを決定することを特徴とする請求項3に記載の乱数生成装置。
【請求項6】
攪拌回数mは、複数のサンプルデータを攪拌し、品質評価することにより得られたそれぞれのサンプルデータが合格する攪拌回数の統計に基づいて、決定されることを特徴とする請求項3に記載の乱数生成装置。
【請求項7】
攪拌回数mは、攪拌対象のデータとは異なるデータについての品質評価の結果に基づいて、決定されることを特徴とする前記請求項3に記載の乱数生成装置。
【請求項8】
前記出力制御手段は、前記品質評価手段による評価結果が合格だった場合、データを出力することを特徴とする前記請求項2記載の乱数生成装置。
【請求項9】
前記出力制御手段がデータを出力した場合に、前記データ保持部の少なくとも一部に固定値を書き込むことを特徴とする請求項8に記載の乱数生成装置。
【請求項10】
前記品質評価手段が前記乱数生成装置外部から品質評価の要求があるまで、前記データ保持部の少なくとも一部に固定値を書き込むことを特徴とする前記請求項9記載の乱数生成装置。
【請求項11】
前記品質評価手段は、前記撹拌手段がn(n>0)回の撹拌を行なった後にデータの品質を評価することを特徴とする前記請求項1記載の乱数生成装置。
【請求項12】
前記乱数生成装置は、前記品質評価手段による評価を合格する為に必要であると予想される撹拌回数を保持することを特徴とする前記請求項11記載の乱数生成装置。
【請求項13】
前記攪拌回数は、品質評価に合格する攪拌回数を確率別に算出することによって定められることを特徴とする前記請求項12に記載の乱数生成装置。
【請求項14】
前記品質評価手段は、乱数の品質を評価する複数の検定を行なうことを特徴とする前記請求項1記載の乱数生成装置。
【請求項15】
前記出力制御手段は、前記乱数生成装置外部からのデータの要求に応じて、該装置外部へデータの出力を行なうことを特徴とする請求項1記載の乱数生成装置。
【請求項16】
前記品質評価手段は、前記乱数生成装置外部からの品質評価の要求に応じて、品質評価を行なうことを特徴とする請求項1に記載の乱数生成装置。
【請求項17】
前記出力制御手段は、前記保持手段から所定の規則に従って部分データを複数個取り出し、取り出した複数個の部分データを合成することを特徴とする前記請求項1ないし16に記載の乱数生成装置。
【請求項18】
所定の保持手段に保持されたデータを攪拌する攪拌工程と、
前記攪拌工程によって攪拌されたデータの乱数としての品質を評価する品質評価工程と、
前記品質評価工程による評価に応じて、データの出力を制御する出力制御工程を備えることを特徴とする乱数生成方法。
【請求項19】
前記出力制御工程は、前記品質評価工程による評価結果が合格だった場合にはデータの出力を許可し、不合格だった場合にはデータの出力を許可しないことを特徴とする前記請求項18記載の乱数生成方法。
【請求項20】
前記攪拌工程は、前記品質評価工程による評価結果が不合格だった場合、前記保持手段に保持されたデータをm(m>0)回撹拌することを特徴とする請求項19に記載の乱数生成方法。
【請求項21】
前記品質評価工程は、前記撹拌工程がn(n>0)回の撹拌を行なった後にデータの品質を評価することを特徴とする前記請求項18記載の乱数生成方法。
【請求項22】
前記品質評価工程は、乱数の品質を評価する複数の検定を行なうことを特徴とする前記請求項18記載の乱数生成方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate


【公開番号】特開2007−11579(P2007−11579A)
【公開日】平成19年1月18日(2007.1.18)
【国際特許分類】
【出願番号】特願2005−189942(P2005−189942)
【出願日】平成17年6月29日(2005.6.29)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】