(57)【特許請求の範囲】
【請求項１】
熱雑音発生源からの熱雑音に基づいて乱数を発生させる乱数発生方法であって、
前記熱雑音の電圧レベルを増幅するステップと、
前記増幅された熱雑音の電圧レベルと、基準電圧レベルとを比較してランダムパルスを生成するステップと、
前記ランダムパルスのパルス間の時間間隔を計測するステップと、
前記時間間隔が所定時間以内であれば、該所定時間内に発生した前記ランダムパルスを排除するステップと、
前記時間間隔が前記所定時間を超えていれば、該所定時間を超えたパルス間の時間間隔に基づいて乱数を発生させるステップとを備えることを特徴とする乱数発生方法。
【請求項２】
前記時間間隔の計測は、前記ランダムパルスを受けて起動するカウンタのカウント数に基づいて行われ、該カウント数が一定値以内のときに発生したランダムパルスを排除することを特徴とする請求項１記載の乱数発生方法。
【請求項３】
前記所定時間は、前記カウンタによる計数が一周するカウント数に対応していることを特徴とする請求項２記載の乱数発生方法。
【請求項４】
さらに、前記ランダムパルスに対して波形整形を施すステップを備えることを特徴とする請求項１記載の乱数発生方法。
【請求項５】
熱雑音発生源からの熱雑音に基づいて乱数を発生させる乱数発生装置であって、
前記熱雑音の電圧レベルを増幅する手段と、
前記増幅された熱雑音の電圧レベルと基準電圧レベルとを比較してランダムパルスを生成する手段と、
前記ランダムパルスのパルス間の時間間隔を計測する計測手段と、
前記時間間隔が所定時間以内であれば、該所定時間以内に発生した前記ランダムパルスを排除し、前記時間間隔が該所定時間を超えていれば、前記ランダムパルスを通過させるパルス制御手段と、
前記通過したランダムパルスのパルス間の時間間隔に基づいて乱数を発生させる手段とを備えることを特徴とする乱数発生装置。
【請求項６】
前記計測手段は、前記ランダムパルスによって起動するカウンタであり、該カウンタのカウント数に基づいて前記時間間隔の計測を行い、前記パルス制御手段は、該カウント数が一定値以内のときに発生したランダムパルスを排除することを特徴とする請求項５記載の乱数発生装置。
【請求項７】
前記カウンタのカウント数は、該カウンタの構成ビット数に依存し、前記時間間隔の計測は、該カウンタの動作周波数に依存することを特徴とする請求項６記載の乱数発生装置。
【請求項８】
前記所定時間は、前記カウンタによる計数が一周するカウント数に対応していることを特徴とする請求項７記載の乱数発生装置。
【請求項９】
さらに、前記ランダムパルスに対して波形整形を施す手段を備えることを特徴とする請求項５記載の乱数発生装置。
【請求項１０】
熱雑音発生源からの熱雑音を増幅して得られた該熱雑音の電圧レベルと基準電圧レベルとを比較してランダムパルスを生成し、該ランダムパルスの時間間隔に基づいて乱数を生成する処理をコンピュータに実行させるためのプログラムであって、
前記ランダムパルスのパルス間の時間間隔を計測する処理と、
前記時間間隔が所定時間以内であれば、該所定時間内に発生した前記ランダムパルスを排除する処理と、
前記時間間隔が前記所定時間を超えていれば、該所定時間を超えた時間間隔に基づいて乱数を発生させる処理とをコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、熱雑音発生源からの熱雑音に基づいて自然乱数、あるいは物理乱数を生成する乱数発生方法及び装置に関する。
【０００２】
【従来の技術】
自然界におけるランダムな事象を検出して乱数を生成する様々な装置や方法が、従来より提案されている。この種の装置として、例えば、原子核の崩壊を利用した乱数生成器があるが、放射線を扱うことによる装置固有の問題があるため、現在では、抵抗体やダイオード等から発せられる熱雑音を利用した乱数発生装置へと、その主流が移行している。
【０００３】
熱雑音を利用して乱数を発生する装置としては、例えば、特開２００１−１３４４２２号公報に記載の乱数生成装置がある。図９は、特開２００１−１３４４２２号公報に開示された熱雑音物理乱数生成装置の構成を示すブロック図である。同図に示す熱雑音物理乱数生成装置１００では、抵抗やダイオード等の熱雑音発生素子１０１から発生した熱雑音電圧が、アナログ増幅器である前置増幅器１０２、及び主増幅器１０３で増幅され、増幅後のアナログパルス信号の波高値を、波高弁別器１０４が閾値で選択する。
【０００４】
このように選択されたパルスは、波形整形器１０５によって矩形波に整形され、かかる整形によって得られた矩形波は、時間計測器１０６に送られる。この時間計測器１０６は、時計パルス発生器１０７から発生されたクロックパルスをもとに、パルス間の時間間隔を計測し、所定ビット単位でパルス数を計測する。そして、計測されたビット数を乱数値として、乱数生成器１０８で取り出し、それらを乱数貯蔵器・コントローラ１０９に格納する。
【０００５】
ところで、この種の乱数生成装置で用いる増幅器（例えば、上記の前置増幅器１０２、主増幅器１０３）が理想的な増幅を行うとした場合、入力の各瞬時値が独立であれば、その出力の瞬時値も独立となる。従って、その値を一定電圧と比較してパルスを生成した場合、そのパルス間隔は理想的にふるまう。この一定電圧が、増幅後の電圧値の実効値（ＲＭＳ値）に比べて、十分に高い場合、増幅された熱雑音との比較から生成されるパルスの発生確率は、ポアソン分布に従い、それらのパルス間隔は、指数分布に従う。そして、この時間間隔をＮビットのビットカウンタで測定すると、そのカウント値は、パルスの発生頻度やカウンタのクロック周波数、カウンタのビット数等が、ある一定の条件を満たす場合に、一様乱数となる。
【０００６】
【発明が解決しようとする課題】
しかしながら、実際の増幅器や増幅回路では、応答時間が有限となることが不可避であり、その帯域も有限である。そのため、入力の各瞬時値が独立であっても、その出力の各瞬時値は独立とはならない。従って、増幅後の電圧を一定電圧と比較してパルスを生成した場合、前の電圧値に影響を受けた電圧値で比較が行われるため、パルス間隔は指数分布に従わず、本来の指数分布に従うパルスに加えて、不正なパルスがまとわりつく（換言すれば、不正なパルスが混入する）ようになる。
【０００７】
図１０の（ａ）は、増幅器が理想的であるとした場合の増幅後の信号波形を示しており、振幅の大きい電圧の山の直後に電圧の小さい山がくる様子を示している。この信号波形に対して、点線２０１で示す閾値を基準に振幅の大小を比較すると、それによって生成されるパルスは、同図の（ｂ）に示すように、大きい電圧の山でのみパルス２０２が発生する。
【０００８】
これに対して、実際の増幅器において、増幅後の信号波形が、前の電圧値を引きずるような場合、図１１の（ａ）に示すように、大きい電圧の山の直後にある小さな山は、理想的な増幅の場合に比べて、大きくなる。従って、点線２０５で示す閾値を基準に振幅の大小比較を行っても、入力時には大きい電圧の山より小さい山であるにもかかわらず、それがパルス生成に関与してしまい、図１１の（ｂ）に示すような、本来望まれるパルス２０６以外の不正なパルス２０７が生成される。
【０００９】
上述したように、図１１の（ａ）に示す波形からランダムパルスを生成した場合、本来生成されるべきパルスに加えて、上述した不正パルスが混入してしまうため、乱数値の一様性が乱される。つまり、上記従来の熱雑音物理乱数生成装置では、増幅器の応答特性が乱数生成に影響を与えており、不正パルスの混入したパルスをそのまま使用して乱数を生成している。そのため、乱数コードの小さなものが、他のコードよりも多く出現してしまい、出力乱数の一様性が確保できないという問題がある。
【００１０】
このように、出現する乱数コードに偏りがあることは、乱数発生装置としては、致命的な問題を抱えることになり、かかる乱数発生装置を、真の乱数を必要とする他の装置に搭載した場合、その装置では、所望の結果が得られないという、二次的な問題もある。
【００１１】
この発明は、上述の事情に鑑みてなされたもので、雑音増幅時の回路応答によって発生する、乱数性への影響を排除して、一様乱数を発生する乱数発生方法及び装置を提供することを目的としている。
【００１２】
また、この発明は、熱雑音源から得られたランダムパルスの内、正規のパルスのパルス時間間隔に基づいて乱数を発生させる乱数発生方法及び装置を提供することを目的としている。
【００１３】
【課題を解決するための手段】
上記課題を解決するために、請求項１記載の発明は、熱雑音発生源からの熱雑音に基づいて乱数を発生させる乱数発生方法であって、上記熱雑音の電圧レベルを増幅するステップと、上記増幅された熱雑音の電圧レベルと基準電圧レベルとを比較してランダムパルスを生成するステップと、上記ランダムパルスのパルス間の時間間隔を計測するステップと、上記時間間隔が所定時間以内であれば、該所定時間内に発生した上記ランダムパルスを排除するステップと、上記時間間隔が上記所定時間を超えていれば、該所定時間を超えたパルス間の時間間隔に基づいて乱数を発生させるステップとを備えることを特徴としている。
【００１４】
また、請求項２記載の発明は、請求項１記載の乱数発生方法に係り、上記時間間隔の計測は、上記ランダムパルスを受けて起動するカウンタのカウント数に基づいて行われ、該カウント数が一定値以内のときに発生したランダムパルスを排除することを特徴としている。
【００１５】
請求項３記載の発明は、請求項２記載の乱数発生方法に係り、上記所定時間は、上記カウンタによる計数が一周するカウント数に対応していることを特徴としている。
【００１６】
また、請求項５記載の発明は、熱雑音発生源からの熱雑音に基づいて乱数を発生させる乱数発生装置であって、上記熱雑音の電圧レベルを増幅する手段と、上記増幅された熱雑音の電圧レベルと基準電圧レベルとを比較してランダムパルスを生成する手段と、上記ランダムパルスのパルス間の時間間隔を計測する計測手段と、上記時間間隔が所定時間以内であれば、該所定時間以内に発生した上記ランダムパルスを排除し、上記時間間隔が該所定時間を超えていれば、上記ランダムパルスを通過させるパルス制御手段と、上記通過したランダムパルスのパルス間の時間間隔に基づいて乱数を発生させる手段とを備えることを特徴としている。
【００１７】
請求項６記載の発明は、請求項５記載の乱数発生装置に係り、上記計測手段は、上記ランダムパルスによって起動するカウンタであり、該カウンタのカウント数に基づいて上記時間間隔の計測を行い、上記パルス制御手段は、該カウント数が一定値以内のときに発生したランダムパルスを排除することを特徴としている。
【００１８】
請求項７記載の発明は、請求項６記載の乱数発生装置に係り、上記カウンタのカウント数は、該カウンタの構成ビット数に依存し、上記時間間隔の計測は、該カウンタの動作周波数に依存することを特徴としている。
【００１９】
さらには、請求項８記載の発明は、請求項７記載の乱数発生装置に係り、上記所定時間は、上記カウンタによる計数が一周するカウント数に対応していることを特徴としている。
【００２０】
【発明の実施の形態】
以下、図面を参照して、この発明の実施の形態について詳細に説明する。図１は、この発明の実施の形態に係る乱数発生装置の全体構成を示すブロック図である。同図に示す乱数発生装置１０は、自然界の雑音を増幅し、増幅後の雑音の電圧値と一定電圧を比較することでランダムパルスを生成して、そのパルスの時間間隔を計測することにより乱数を発生する。その際、後述する方法によって、増幅時の回路応答が原因となって発生する乱数性への影響を取り除いて、一様乱数を発生させる。
【００２１】
そこで、この実施の形態に係る乱数発生装置の具体的な構成、及び動作について説明する。図１に示すように、この実施の形態に係る乱数発生装置１０は、熱雑音発生素子１２、増幅器１３、比較器１４、及び基準電圧源１５からなる、ランダムパルスの発生源としてのランダムパルス発生器１１を有する。これらの構成要素の内、熱雑音発生素子１２は、例えば、抵抗等の導体、ダイオード等の半導体素子であり、この熱雑音発生素子１２から発生した熱雑音電圧Ｖ１（例えば、マイクロボルト・オーダーの電圧）が、増幅器１３によって増幅され、雑音電圧Ｖ２として、比較器１４へ入力される。
【００２２】
なお、熱雑音発生素子１２から発生する熱雑音は、不規則で周期性のない、広帯域な雑音（不規則性雑音、あるいは白色雑音ともいう）であるが、その発生現象（発生メカニズム）については公知であるため、ここでは、その説明を省略する。
【００２３】
比較器１４は、増幅後の雑音電圧Ｖ２と、基準電圧源１５によって生成された一定電圧Ｖ４とを比較して、ランダムパルスＶ３を得る。すなわち、一定電圧Ｖ４を閾値として、雑音電圧Ｖ２が、この閾値を超えている場合に論理Highの信号を出力し、閾値以下であれば、論理Lowの信号を出力することで、ランダムパルスＶ３を生成している。また、波形整形器１６は、クロック発生器１９からのクロック信号Ｖ９（具体的な信号周波数については、後述する）を用いてランダムパルスＶ３を打ち直し、それを矩形波Ｖ５に整形する。このようにすることで、後段のカウンタにおけるカウント動作が容易になるようにしている。
【００２４】
波形整形器１６による整形で得られたパルス信号Ｖ５は、パルス制御器１７を介して、カウンタ１８に送られる。そして、カウンタ１８は、パルス信号Ｖ５の所定パルス間の時間間隔を計測する。より具体的には、クロック発生器１９からのクロック信号Ｖ９を受けて動作するカウンタ１８は、パルス制御器１７から送られてくるパルスＶＸ１の立ち上がり部分でカウントを開始し、そのカウント数が一定値を超えているかどうかを判別する。
【００２５】
上記の判別結果は、制御信号ＶＸ２として、カウンタ１８からパルス制御器１７へ送られる。パルス制御器１７は、この制御信号ＶＸ２をもとに、カウンタ１８によるカウント開始後の所定時間内に発生したパルスを遮断（無視、あるいは排除と同義）し、パルス時間間隔が所定の時間以上である場合のみ、カウンタ１８にパルスＶＸ１を送出する。パルスＶＸ１を受けたカウンタ１８は、このようにパルス制御器１７を通過してきたパルス間の時間間隔をカウント値Ｖ６として求め、それを乱数生成器２１に対して出力する。
【００２６】
乱数生成器２１は、入力されたカウント値Ｖ６から、乱数値として所望のビット数を取り出し、それを乱数値Ｖ７として、コントローラ・貯蔵器２２に格納する。コントローラ・貯蔵器２２は、不図示の制御部（例えば、マイクロプロセッサからなる中央制御装置（ＣＰＵ））からの制御を受けて、乱数発生装置１０の外部へ乱数値Ｖ８（自然乱数、あるいは物理乱数）を出力する。
【００２７】
なお、コントローラ・貯蔵器２２における乱数値Ｖ７の格納は、例えば、先入れ先出し方式（ＦＩＦＯ）で行い、新たに発生した乱数が、以前に生成、及び格納された乱数を逐次、追い出す構成になっている。
【００２８】
図２は、この実施の形態に係る乱数発生装置のパルス制御器１７、及びカウンタ１８の内部構成の一例を示すブロック図である。上述したように、カウンタ１８は、パルスＶＸ１の立ち上がり部分で開始したカウント数が一定値を超えているかどうかを判別する。そのため、カウンタ１８は比較器２５を内臓しており、その比較器２５によって、カウント数Ｎｃが所定値Ａを超えたと判定された場合（Ｎｃ>Ａ）、カウンタ１８からパルス制御器１７へは、論理”１”の制御信号ＶＸ２が出力される。しかし、カウント数Ｎｃが所定値Ａ以下の場合（Ｎｃ≦Ａ）、カウンタ１８からは、論理”０”の制御信号ＶＸ２が出力される。
【００２９】
パルス制御器１７は、論理積（ＡＮＤ）をとる動作をするゲート２６を有しており、制御信号ＶＸ２が論理”１”のとき、ゲート２６をＯＮ状態にして、波形整形器１６からのパルス信号Ｖ５を通過させ（つまり、スルー状態にする）、パルス信号Ｖ５が、そのままパルスＶＸ１としてカウンタ１８へ送られるようにする。一方、制御信号ＶＸ２が論理”０”のときには、パルス制御器１７からカウンタ１８へパルス信号Ｖ５が送られるのを阻止するため、ゲート２６がＯＦＦ状態となるよう動作する。別言すれば、パルス制御器１７は、制御信号ＶＸ２をフラグとして、パルスの通過／阻止動作をする。
【００３０】
次に、この実施の形態に係る乱数発生装置１０において、増幅時の回路応答が原因となって発生する乱数性への影響を取り除き、一様乱数を生成するための方法について、その原理を含めて詳細に説明する。既に述べたように、増幅器（例えば、図１の増幅器１３）が理想的な増幅器ではなく、増幅後の信号波形が、前の電圧値を引きずる場合、その波形本来の大きな電圧の山によるパルス生成は、理想的な増幅の場合よりも、時間的に遅れるが、それらの誤差はランダムであり、後述する本来のパルス間の時間間隔に影響はない。しかし、本来現れてはならない不正パルスが、発生する乱数に悪影響を及ぼすことは、上述の通りである。
【００３１】
図３は、増幅器が理想的な場合と実際の場合とにおける、波形整形器１６からの発生パルス（矩形波Ｖ５）に現れる違いを模式的に示している。同図の（ａ）は、理想状態に対応する発生パルスであり、（ｂ）は、実際の増幅器による増幅後の信号に基づく発生パルスである。すなわち、図３の（ａ）におけるパルス間隔Ｔ１，Ｔ２は、本来計測すべき、正規なパルス間の時間間隔であるが、同図（ｂ）のＴ１０，Ｔ１２，Ｔ１３，Ｔ１５は、本来の時間間隔よりも明らかに短い状態で現れた不正パルスのパルス間隔である。
【００３２】
従って、本来の時間間隔よりも短い間隔を有するパルスをもとに乱数を発生させると、乱数コードとして値の小さいコードが異常に多く発生することになる。それは、波形整形器の後段で行うパルス計測において、余分なパルス時間間隔（Ｔ１０，Ｔ１２，Ｔ１３等）を見てしまい、実際にカウントされるべきではないパルス間隔がカウントされるからである。そこで、この発明に係る乱数発生装置１０では、正規のパルスにまとわりつくように発生する、所定の時間よりも明らかに短い時間間隔で生じた不正パルスを排除して、正規のパルスのみで乱数を発生させる。
【００３３】
なお、図３では、パルスの時間間隔を、個々のパルスの立ち上がり部分を見て計測しているが、これに限定されるものではなく、各々のパルスの立ち下り部分の間隔を計測しても、事情は全く変わらない。
【００３４】
一般的に、発生確率がポアソン分布となるランダムパルス間の時間をカウンタで測定し、それをもとに乱数を発生させる場合、そのランダムパルスの発生頻度が高いと、乱数の度数分布に偏りが生じる。今、カウンタのビット数をＮ[ｂｉｔ]、カウンタの動作周波数をｆ[Ｈｚ]、ランダムパルスの生成頻度をλ[ＣＰＳ]とすると、最小の乱数コードと最大の乱数コードについての出現度数の比は、以下の式で表すことができる。
【００３５】
【数１】
0004467216.tif 000002
【００３６】
なお、ランダムパルスの生成頻度は、閾値電圧（例えば、図１０、図１１の点線２０１，２０５で示される閾値）の大小で調節される。
【００３７】
発生する乱数が一様であると言えるためには、上記の式で示される比が、できる限り１に近いことが必須の要件となる。例えば、カウンタのビット数がＮ＝８[ｂｉｔ]、動作周波数がｆ＝１６[ＭＨｚ]、ランダムパルスの生成頻度がλ＝２０００[ＣＰＳ]の場合、この比は０．９７となる。よって、この比を１近傍に維持するには、生成頻度λを大きくできないことが分かる。このことは、パルス生成のための閾値（例えば、図１に示す一定電圧Ｖ４）は、できるだけ高く設定した方がよいことを意味する。
【００３８】
従って、パルス間の平均時間間隔は、カウンタの動作クロック単位で計測すると相当大きくなる。上記の例では、生成頻度λが２０００[ＣＰＳ]であるから、パルス間隔は、平均して８０００クロック分になる。
【００３９】
正規のパルスに対して、不正なパルスは、上述したように所定時間よりも明らかに短い時間間隔で生じるため、これらの不正パルスを排除すれば、正規のパルスのみで乱数を発生できることになる。そこで、この実施の形態に係る乱数発生装置１０では、図１に示すカウンタ１８を８ビット構成にして、あるパルスを検知した後、カウンタ１８のカウントが一周するまでの間に、その次に到来するパルスを検出した場合、そのパルスを無視するよう動作する。
【００４０】
具体的には、８ビット構成のカウンタ１８は、２５６クロックでカウントを一周するので、２５６クロック以内に到来したパルスを全て排除する。この例では、正規のパルスが、平均して８０００クロック分のパルス間隔を有しているため、２５６クロック以内に出現するパルスを排除したとしても、正規のパルスを除外してしまう確率は、非常に低い。
【００４１】
図１に示すカウンタ１８は、クロック発生器１９が発生した１６[ＭＨｚ]のクロック信号Ｖ９をもとにカウント動作する。このカウンタ１８は、パルス制御器１７からのパルスＶＸ１の立ち上がり部分を見てカウントを開始し、そのカウント値が一定値（上記の２５６クロック分）を超えているかどうかを判別する。この判別結果は、その結果に対応した所定の論理状態を有する制御信号ＶＸ２として、カウンタ１８からパルス制御器１７へ送られるため、上述したゲート機能（ゲートのＯＮ／ＯＦＦ）を有するパルス制御器１７は、カウンタ１８によるカウント値が一定値を超えていない時間内に入力されたパルスを排除する。
【００４２】
また、パルス制御器１７は、制御信号ＶＸ２の論理状態をもとに、カウンタ１８がパルスのカウントを開始してから所定時間以上経過したことを認識したときに、カウンタ１８に対してパルスＶＸ１を送出する。その結果、所定時間内に発生したパルスによっては、乱数が発生せず、所定時間以上のパルス間隔を有するパルス（正規のパルス）によってのみ乱数が発生するため、乱数生成器２１からは、一様乱数が出力されることになる。
【００４３】
図４は、この実施の形態に係る乱数発生装置の動作手順、特に、パルス制御器１７、及びカウンタ１８における制御手順を示すフローチャートである。同図のステップＳ１では、最初のパルスの有無が判定される。このステップで、パルスの到来が検出されれば、続くステップＳ２において、カウンタ１８でのカウント動作が起動する。そして、ステップＳ３で、そのカウンタ１８でのカウント値が一周したかどうかを見る。
【００４４】
すなわち、ステップＳ３では、カウンタ１８のカウント値と所定の値Ａとの比較を行い、そのカウント値が所定値Ａを超えていれば、カウント値が一周したと判断する。なお、カウント値の一周とは、既に述べたように、カウンタ１８が８ビット構成の場合、２５６クロック分のカウントを意味する。
【００４５】
ステップＳ４で、カウント値が一周したと判断されれば、次のステップＳ５において、カウンタ１８からパルス制御器１７に、論理状態が”１”の制御信号ＶＸ２が出力される。続くステップＳ６では、ステップＳ１で検出されたパルスの次に到来するパルス（以降において適宜、「次パルス」ともいう）を検出する。
【００４６】
ステップＳ６で、次パルスが検出されたならば、そのときの制御信号ＶＸ２の論理状態は、上記のように”１”であるから、最初のパルスと次パルスとの時間間隔が所定時間以上あることを意味している。そこで、ステップＳ７において、パルス制御器１７は、その到来したパルス（上記の「次パルス」）を通過させて、カウンタ１８へ送る。
【００４７】
なお、ステップＳ１で検出されたパルスは、最初のパルスであるから、パルス制御器１７からカウンタ１８へは、無条件に送られる。
【００４８】
上記の「次のパルス」を受けると、カウンタ１８は、ステップＳ８において、先のパルスと次パルスのパルス時間間隔を計測する。その計測結果は、カウンタ１８からカウント値Ｖ６として出力されるため、ステップＳ９で、乱数生成器２１によって、そのカウント値Ｖ６に基づいて乱数が生成される。ステップＳ９における乱数生成後、処理は、再びステップＳ２に戻り、カウンタ１８を起動（再起動）する。
【００４９】
一方、カウンタ１８のカウント値が一周していない場合（ステップＳ３で、ＮＯと判断された場合）は、ステップＳ１１において、カウンタ１８からパルス制御器１７へ、論理状態が”０”の制御信号ＶＸ２が出力される。そして、次のステップＳ１２で、上記ステップＳ１で検出されたパルスに続くパルス（すなわち、「次パルス」）の有無を検出する。ここで、次パルスが検出されなければ、ステップＳ３に戻って、カウンタ１８のカウント値が一周したかどうかを再度、見る。
【００５０】
これに対して、ステップＳ１２で、次のパルスが検出されたならば、そのパルスは、カウンタ１８におけるカウント値が一定値を超えていない（つまり、カウント値≦所定値Ａで、カウント値が一周していない）時間内に出現したパルスであるため、ステップＳ１３で、パルス制御器１７は、そのパルスを無視（排除）する。このように、「次パルス」を無視する処理をすることで、前のパルスから所定時間内に発生した後のパルスによって、乱数値を発生させない。
【００５１】
上記のステップＳ１３の後、処理をステップＳ３に戻して、カウンタ１８におけるカウントが一周しているか否かを判定する。そして、この判定結果に応じて、上述した処理と同じ処理を実行する。
【００５２】
次に、上述した、この発明に係る乱数の発生アルゴリズムが、期待した効果を奏するかどうかを確認するために行ったシミュレーションについて説明する。図５は、Ｃ言語によるシミュレーションに使用した回路構成を示している。同図のＲＮＤ５１は、乱数関数（一様乱数関数）から得られた乱数値を足し合わせて、正規分布となる乱数値を生成しており、それによって、熱雑音に似せた乱数を生成している。
【００５３】
ここでは、これら生成された乱数を、低域通過フィルタ（ＬＰＦ）５２，５４、及び高域通過フィルタ（ＨＰＦ）５３，５５からなる、２段構成のデジタル・フィルタを通過させた場合と、生成された乱数から、そのままパルス生成した場合とを比較した。なお、ここで使用した乱数値は１６メガ・サンプル毎秒であり、デジタル・フィルタのカットオフ周波数は、ＬＰＦは３ＫＨｚ、ＨＰＦは１２０ＫＨｚである。また、デジタル・フィルタは、簡単のため、バタワース型フィルタにしている。そして、パルスの出現頻度は、約２０００[ＣＰＳ]となるように、増幅器５６における閾値Ｖｔの調整を行った。
【００５４】
図６〜図８は、シミュレーション結果をグラフ化したもの（度数分布）であり、横軸は乱数コード、縦軸は乱数の発生度数である。仮に、図５のシミュレーション回路において、フィルタを介さず、かつ、増幅器５６が理想的に働いた場合を想定してシミュレーションすると、図６に示す結果が得られる。同図に示す度数は、度数分布に使用した乱数値が８１９２個で、乱数コードが８ビットであるため、期待値３２を中心に振れている。
【００５５】
それに対して、図５に示すシミュレーション回路のフィルタを介して得たパルスをもとに乱数を発生させると、図７に示すように、明らかに、乱数コードの小さな部分（乱数コード０〜５０の範囲）の度数が他より突出して、一様な分布からずれて発生することが分かる。そこで、カウンタの一周分に相当する２５６クロック以内の短い時間間隔で発生したパルスを排除すると、図８に示すように、図７の場合に比べて、乱数コードの小さい部分の度数が正常になる、つまり、一様な分布を呈することが分かる。これは、この発明に係る乱数の発生アルゴリズムを適用することで、一様乱数が得られることに他ならない。
【００５６】
なお、上述した実施の形態に係る乱数発生装置は、より一様性の高い乱数を必要とする機器、例えば、暗号化装置、ＩＣカード、確率が勝敗を左右するゲーム機や遊技機、本人認証装置等に適用することができる。
【００５７】
このように、この実施の形態によれば、最初のパルスを検出後、カウンタのカウント数が所定値を超えた場合、カウンタのカウントが一周したとして、次の到来パルスを通過させてカウンタへ送り、それらのパルス間の時間間隔に基づく乱数を発生させるが、カウント数が所定値以下の場合には、カウンタへパルス信号が送られるのを阻止して、そのパルスが乱数発生には関与しない構成とすることで、パルス検出後の所定時間内に発生した次パルスによっては、乱数が発生しないため、本来現れてはならない不正パルスが、生成する乱数に悪影響を及ぼすことを回避できる。
【００５８】
すなわち、増幅時の回路応答により発生する不正パルスを無視するよう構成することで、それら不正パルスによる、生成乱数の乱数性への悪影響を取り除くことができ、ランダムパルスの内、正規のパルスのパルス間隔に基づいて乱数が発生するため、出現率に偏りのない一様乱数（自然乱数、あるいは物理乱数）を得ることができる。
【００５９】
なお、この発明の具体的な構成は、上記の実施の形態に限られるものではなく、この発明の趣旨を逸脱しない範囲における種々の設計変更等も、この発明に含まれる。例えば、上述した実施の形態において、図４に示す乱数発生処理では、検出された次パルスをステップＳ１３で無視した後、ステップ３に戻って、再度、カウンタの一周が終了したか否かを判定しているが、かかる不正パルスを無視した後、カウント値の一周していないカウンタ１８をリセットしてから、ステップ３の処理に戻るようにしてもよい。
【００６０】
また、上述した実施の形態の乱数発生処理では、正常なパルスの立ち上がり部分に同期させてカウンタを起動した後は、不正パルスが検出されても、本来の正常な次パルスが検出されるまで、カウンタのカウント動作を継続させているが、これに限定されず、以下のように動作させてもよい。例えば、図３の（ｂ）に示すように、真のパルス到来後、タイミングｔａ，ｔｂ，ｔｃ等で不正パルスを検出する度にカウンタ１８をリセットする。
【００６１】
この場合、同図のＴ１１，Ｔ１４等が乱数発生のためのパルス時間間隔となる。しかし、このようなカウント処理をしても、上述のように、正規なパルスの時間間隔に対して、不正パルスが短い時間間隔で生じるため、発生する乱数の一様性に影響はない。
【００６２】
さらに、上記の実施の形態に係る乱数発生装置では、パルスの通過／遮断を制御するパルス制御器１７と、パルス間の時間間隔を計測するカウンタ１８とを個別に設ける構成にしているが、カウンタ１８内にパルス制御器１７を内臓して、カウンタ１８自身がパルス制御機能を有するようにしてもよい。
【００６３】
また、上記の実施の形態に係る乱数発生装置全体を制御する、不図示の中央制御装置（ＣＰＵ）によって、基準電圧源１５、及びクロック発生器１９を制御する構成をとり、それによって、基準電圧源１５で生成される電圧Ｖ４やクロック発生器１９からのクロック信号Ｖ９を適宜、可変するようにしてもよい。
【００６４】
さらには、上記の実施の形態に係る乱数発生装置において、例えば、図１に示す波形整形器１６以降における制御の一部、あるいは全部をソフトウエア制御で置き換えてもよい。すなわち、パルスの通過／遮断制御、パルス時間間隔の計測、乱数値の取り出し等に対して、上述したハードウエア構成によるパルス操作と同じ動作をソフトウエア制御で行うようにしても、上記と同じ結果（一様性の高い乱数）が得られる。
【００６５】
【発明の効果】
以上説明したように、この発明の構成によれば、熱雑音発生源からの熱雑音の電圧レベルを増幅して得た電圧レベルと基準電圧レベルとを比較してランダムパルスを生成し、それらランダムパルスのパルス間の時間間隔が所定時間以内であれば、その所定時間内に発生したランダムパルスを排除するが、時間間隔が所定時間を超えていれば、その所定時間を超えたパルス間の時間間隔に基づいて乱数を発生させる。つまり、所定時間よりも明らかに短い時間間隔で生じた不正パルスを排除して、正規のパルスの時間間隔でのみで乱数を発生させているため、これら不正パルスによる、生成乱数の乱数性への悪影響を取り除いて、一様乱数を発生させることができる。
【００６６】
また、ランダムパルスを排除する所定時間を、パルス間の時間間隔を計測するカウンタによる計数が一周するカウント数に対応させることで、そのカウンタの取り扱いが容易になり、カウンタの構成ビット数に合わせた制御ができる。
【図面の簡単な説明】
【図１】この発明の実施の形態に係る乱数発生装置の全体構成を示すブロック図である。
【図２】実施の形態に係る乱数発生装置のパルス制御器、及びカウンタの内部構成の一例を示すブロック図である。
【図３】増幅器が理想的な場合と実際の場合とにおける波形整形器からの発生パルスの違いを模式的に示す図である。
【図４】実施の形態に係る乱数発生装置の動作手順を示すフローチャートである。
【図５】乱数の発生のシミュレーションに使用した回路構成を示す図である。
【図６】理想状態におけるシミュレーション結果を示す図である。
【図７】フィルタがある場合におけるシミュレーション結果を示す図である。
【図８】短時間間隔でのパルスを排除したシミュレーション結果を示す図である。
【図９】従来の熱雑音物理乱数生成装置の構成を示すブロック図である。
【図１０】増幅器が理想的であるとした場合の増幅信号及び生成パルス波形を示す図である。
【図１１】実際の増幅器における増幅信号及び生成パルス波形を示す図である。
【符号の説明】
１０    乱数発生装置
１１    ランダムパルス発生器（ランダムパルスを生成する手段）
１２    熱雑音発生素子（熱雑音発生源）
１３    増幅器（増幅する手段）
１４    比較器
１５    基準電圧源
１６    波形整形器
１７    パルス制御器（パルス制御手段）
１８    カウンタ（計測手段）
１９    クロック発生器
２１    乱数生成器（乱数を発生させる手段）
２２    コントローラ・貯蔵器
２５    比較器
２６    ゲート
【図１】
0004467216.tif 000003
【図２】
0004467216.tif 000004
【図３】
0004467216.tif 000005
【図４】
0004467216.tif 000006
【図５】
0004467216.tif 000007
【図６】
0004467216.tif 000008
【図７】
0004467216.tif 000009
【図８】
0004467216.tif 000010
【図９】
0004467216.tif 000011
【図１０】
0004467216.tif 000012
【図１１】
0004467216.tif 000013