(57)【特許請求の範囲】
【請求項１】
互いに独立したランダムパルス列を少なくとも２以上生成し、互いに異なるランダムパルス列に属する二つのパルスの時間間隔を計測し、その計測値を乱数として出力する乱数取出し方法であって、前記時間間隔の測定は、前記二つのパルスのうち時間的に先に発生するパルスをカウンタのスタートパルス、後に発生するパルスをカウンタのストップパルスとして、当該カウンタにより、前記ランダムパルスよりも高い周波数を有するカウントパルスのパルス数をカウントすることによって行うことを特徴とする乱数取出し方法。
【請求項２】
互いに独立したランダムパルス列を生成する少なくとも二つのランダムパルス生成手段と、
一のランダムパルス生成手段からのパルスと、これとは異なるランダムパルス生成手段からのパルスとの間の時間間隔を計測する計時手段とを含み、
前記計時手段は、前記ランダムパルスよりも高い周波数を有するカウントパルスのパルス数をカウントするカウンタを備えており、前記異なるランダムパルス生成手段からの二つのランダムパルスのうち時間的に先に発生するパルスを前記カウンタのスタートパルス、後に発生するパルスを前記カウンタのストップパルスとして、当該カウンタにより、前記カウントパルスのパルス数をカウントすることによって前記時間間隔を計測し、前記計時手段による計測値を乱数値として出力することを特徴とする乱数生成装置。
【請求項３】
互いに独立したランダムパルス列を生成する第１から第ＮまでのＮ個（Ｎは２以上の整数）のランダムパルス生成手段と、
第１のランダムパルス生成手段からのパルスとそれ以外のランダムパルス生成手段からのパルスとの間の（Ｎ−１）個の時間間隔、第２のランダムパルス生成手段からのパルスとそれ以外のランダムパルス生成手段からのパルスとの間の（Ｎ−１）個の時間間隔、以下同様に第Ｎのランダムパルス生成手段からのパルスとそれ以外からランダムパルス生成手段からのパルスとの間の（Ｎ−１）個の時間間隔（合計でＮ（Ｎ−１）個の時間間隔）を計測する計時手段とを含み、
前記計時手段による計測値を乱数値として出力することを特徴とする乱数生成装置。
【請求項４】
前記計時手段は、ランダムパルスよりも高い周波数のカウントパルスを生成するカウントパルス生成手段及びカウンタを有し、測定する時間間隔の時間的に先行するパルスを前記カウンタのスタートパルス、時間的に後行するパルスを前記カウンタのストップパルスとして、スタートパルスとストップパルスの間に生成されるカウントパルスのパルス数をカウントするものである請求項２又は３に記載の乱数生成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、乱数発生素子から物理乱数を取り出す乱数取出し方法および当該方法を利用した乱数生成装置に関する。
【背景技術】
【０００２】
自然現象に基づいて物理乱数を取り出す方法の一つに、抵抗、ダイオード等の半導体、あるいは導体を熱雑音発生素子として用いる方法が知られている。これらの熱雑音発生素子において発生する熱雑音は、発生頻度、振幅ともランダムなので、この熱雑音に基づいて物理乱数を取り出すことができる。このような熱雑音発生素子を利用した各種の乱数生成装置は、多数の文献において開示されている。乱数生成装置においては、得られる各値の頻度の均一性（乱数としての品質の高さ）を高めることと、乱数を高速に発生させることが求められる。【０００３】
熱雑音発生素子を用いて物理乱数を生成するもっとも一般的な方法は、ある瞬間に熱雑音発生素子が出力する熱雑音を増幅してサンプリングし、その値をある閾値と比較して乱数を取り出す方法である。すなわち、熱雑音発生素子から出力される増幅された熱雑音を一定周期でサンプリングし、サンプリングされた値がある閾値を超えていれば「１」、超えていなければ「０」というルールを設定しておくことによって、物理乱数をディジタル的に取り出すことができる。【０００４】
熱雑音発生素子を用いて物理乱数を生成する他の方法として、ランダムに発生する熱雑音が、ある閾値を超えてから次にその閾値を超えるまでの時間間隔を測定し、その時間計測値をそのまま乱数値として取り出す方法が知られている。この方法による乱数生成装置の一例が、日本の特許公報である特開２００１−１３４４２２号公報において説明されている。【０００５】
この乱数生成装置では、熱雑音発生素子から出力される熱雑音を増幅し、この波形がある閾値を超える瞬間に立ち上がる方形パルスを生成する回路を構成し、これとは別にこのパルスよりも十分に周波数が高いクロックを生成する回路及びこのクロックをカウントするカウンタを設け、一つのパルスが発生してから次のパルスが発生するまでの間に生成されるクロックをカウンタでカウントし、このカウント値を乱数として取り出す。ただし、カウンタのビット数（ｎビットとする）は有限のため、２n回カウントするとカウンタはリセットされ、再び１からカウントを始めるので、実際に取り出される乱数値は２n個に制限される。この方法は、熱雑音の一発のパルスに基づいてｎビットの乱数が生成されるので、熱雑音を瞬間的にサンプリングする方法に比べて、高速に乱数を生成することができる。【０００６】
【特許文献１】特開２００１−１３４４２２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
一方、このようなパルス間の時間間隔を計測する装置の場合、乱数を高速に発生させようとして単位時間当たりに取り出すパルスの数を多くすると、パルス同士が時間的に近接して発生する確率が高くなる。この場合、増幅回路の周波数特性などに起因して時間的に近接したパルスを識別することができないことがある。このため、カウンタのカウント動作が一巡する前の小さい値の出現頻度がやや小さくなり、乱数の出現頻度の均一性に影響を与える場合がある。【０００８】
本発明は、このような技術的背景のもとでなされたものであり、乱数の出現頻度の均一性を損なうことなく、これまで以上に高速に乱数を取出することを目的とする。
【課題を解決するための手段】
【０００９】
本発明の乱数取出し方法は、互いに独立したランダムパルス列を少なくとも２以上生成し、互いに異なるランダムパルス列に属する二つのパルスの時間間隔を計測し、その計測値を乱数として出力する。ここで、前記時間間隔の測定は、前記二つのパルスのうち時間的に先に発生するパルスをカウンタのスタートパルス、後に発生するパルスをカウンタのストップパルスとして、当該カウンタにより、前記ランダムパルスよりも高い周波数を有するカウントパルスのパルス数をカウントすることによって行うことができる。【００１０】
上記方法を用いた本発明に係る乱数生成装置は、たとえば、互いに独立したランダムパルス列を生成する少なくとも二つのランダムパルス生成手段と、一のランダムパルス生成手段からのパルスと、これとは異なるランダムパルス生成手段からのパルスとの間の時間間隔を計測する計時手段とを含み、前記計時手段による計測値を乱数値として出力するものとして構成することができる。【００１１】
より具体的には、互いに独立したランダムパルス列を生成する第１から第ＮまでのＮ個（Ｎは２以上の整数）のランダムパルス生成手段と、第１のランダムパルス生成手段からのパルスとそれ以外のランダムパルス生成手段からのパルスとの間の（Ｎ−１）個の時間間隔、第２のランダムパルス生成手段からのパルスとそれ以外のランダムパルス生成手段からのパルスとの間の（Ｎ−１）個の時間間隔、以下同様に第Ｎのランダムパルス生成手段からのパルスとそれ以外からランダムパルス生成手段からのパルスとの間の（Ｎ−１）個の時間間隔（合計でＮ（Ｎ−１）個の時間間隔）を計測する計時手段とを含み、前記計時手段による計測値を乱数値として出力するものとすることができる。【００１２】
ここで、前記計時手段は、たとえば、ランダムパルスよりも高い周波数のカウントパルスを生成するカウントパルス生成手段及びカウンタを有し、測定する時間間隔の時間的に先行するパルスを前記カウンタのスタートパルス、時間的に後行するパルスを前記カウンタのストップパルスとして、スタートパルスとストップパルスの間に生成されるカウントパルスのパルス数をカウントするものである。
【発明の効果】
【００１３】
互いに独立した複数のランダムパルス列のうちの一のランダムパルス生成手段からのパルスと、これとは異なるランダムパルス生成手段からのパルスとの間の時間間隔を計測するため、パルス同士が時間的に近接しても、両者は明確に区別される。したがって、小さい値の出現頻度が小さくなることはなく、乱数の出現頻度の均一性を維持することができる。
また、本発明の方法によれば、Ｎ個の互いに独立したランダムパルス列を設けることによって互いに独立したＮ（Ｎ−１）個の乱数、すなわちほぼＮの２乗に比例する数の乱数が得られる。したがって、個々のランダムパルスの周波数がそれほど高くなくても、ランダムパルスの数を増やすことによって高速な乱数生成装置を構築することができる。
【発明を実施するための最良の形態】
【００１４】
以下に図面を参照しながら、本発明の実施形態について説明する。図１は、本発明の基本的な考え方を説明するための図である。図１のＲ1及びＲ2は、互い独立した二つのランダムパルスのパルス列を示している。ここで「ランダムパルス」とは時間的にランダムに発生する一連のパルスのことであり、「互いに独立した」とは、それぞれのパルス列が別々のランダムパルス生成器から得られることを意味する。【００１５】
本発明の基本的な発想は、あるランダムパルスのパルス列に含まれる一つのパルスをスタートパルスとし、これとは独立した別のランダムパルスのパルス列に含まれる一つのパルスをストップパルスとして、このスタートパルスとストップパルスの間の時間間隔を計測し、その値を出力するというものである。各パルスは時間的にランダムに発生するので、こうして得られる一連の数値は乱数となる。すなわち、図１において、時間間隔ｔ1〜ｔ4を計測し、その測定値（この場合は４個の数値）を乱数として取り出す。【００１６】
図１とは異なり、同一のパルス列の中で、あるパルスをスタートパルスとし、次に出現するパルスをストップパルスとして両者の時間的時間間隔を測定する方式（以下「旧方式」という）でも、ある程度良好な乱数は得られる。しかしながら、各パルスが有限の時間幅を有するため、二つのパルスが時間的に近接して発生した場合には、前述のように回路的な制約によって両者を区別することができず、このため小さい値の出現頻度が低下し、その結果全体の出現頻度の均一性が低下する。これに対して、本発明では互いに独立したパルス列に含まれる二つのパルスの一方をスタートパルス、他方をストップパルスとすることから、二つのパルスが時間的に近接しても両者を明確に区別でき、出現頻度の均一性が低下するという問題は生じない。【００１７】
ところで、図１に示す本方式で乱数を生成させる場合では、パルス列Ｒ1の中のパルスｒ1及びランダムパルスＲ2の中のパルスｒ2については乱数の生成に利用することができない。本明細書では、このようなパルスを「死にパルス」と呼ぶ。【００１８】
このような乱数の生成に利用できない「死にパルス」がパルス列の中でどういう割合で発生するかを説明する。互いに独立な二つのパルス列を考え、パルス列でのパルスの発生がポアッソン到着であり、連続して発生するパルス同士の平均時間間隔は互いに等しくなるように設定する。この平均時間間隔をｔ0とすれば、パルス列上の隣接するふたつのパルスで定まる区間幅は指数分布に従い、確率分布関数は次式で表される。
【数１】
0004486961.tif 000002
【００１９】
時間幅ｔの間に別のパルス列上に発生するパルス数はポアッソン分布に従う。時間幅ｔの中にｎ個のパルスが発生する確率は、次式で表される。
【数２】
0004486961.tif 000003
【００２０】
したがって、あるパルス列上のパルス・ペアの間に別のパルス列上のパルスがｎ個発生する確率をＤ（ｎ）とすると、
【数３】
0004486961.tif 000004
【００２１】
となる。本方式では、あるパルス列上のパルス・ペアの間に他のパルス列上のパルスが発生しない場合に乱数生成に寄与しないから、ｎ＝０としてＤ（０）＝０．５となる。言い換えると、「死にパルス」は２分の１の頻度で発生し、乱数生成に寄与するパルスは、パルス全体の半分である。【００２２】
図２は、図１をより一般化して、Ｎ個の別々のランダムパルス生成器から得られるＮ個のパルス列Ｒ1〜ＲNを設けた場合である。上記の「死にパルス」を考慮しないとすれば、パルス列Ｒ1に含まれる一つのパルスをスタートパルスとすると、残りのパルス列Ｒ2〜ＲNに含まれる（Ｎ−１）個のパルスをストップパルスとして（Ｎ−１）個の時間間隔ｔ1〜ｔN-1を計測して（Ｎ−１個）の乱数を同時に取り出すことができる。また同様に、パルス列Ｒ2に含まれる一つのパルスをスタートパルスとすれば、パルス列Ｒ1、Ｒ3〜ＲNに含まれる（Ｎ−１）個のパルスをストップパルスとして（Ｎ−１）個の乱数を同時に取り出すことができる。以下同様に考えると、各パルス列について（Ｎ−１）個の乱数を取り出すことができるから、全体としてほぼ同時に取り出すことのできる乱数の数は、Ｎ（Ｎ−１）個となる。ここで「死にパルス」を考慮すれば、実際に取り出すことが可能な乱数の数はＮ（Ｎ−１）／２個となり、ランダムパルス生成器の個数Ｎのほぼ２乗に比例して増加する。【００２３】
前記のランダムパルス生成器及びその周辺回路を、各パルス列Ｒ1〜ＲNにおいて１秒当たり平均してＭ個のパルスが発生するよう調整すれば、１秒間に得られる乱数はＭＮ（Ｎ−１）／２個となる。一方、旧方式において同じＮ個のパルス列を用意した場合は、一度に取り出すことのできる乱数の数はＭＮ個である。【００２４】
Ｎ＝２のときは、旧方式で一度に取り出すことのできる乱数は２Ｍ個であり、本方式のＭ個よりも多い。Ｎ＝３とすると、いずれの方式も３Ｍ個で同数となる。しかし、Ｎ＝４以上になると、本方式の方が旧方式よりも多くなり、Ｎの値が大きくなるに従って本方式で取り出すことのできる乱数の個数は旧方式よりも急速に増える。たとえば、Ｎ＝１０とすると、旧方式で取り出すことのできる乱数は１０Ｍ個であるが、本方式で取り出すことのできる乱数の個数は４５Ｍ個となる。Ｎ＝１００とすれば、旧方式では１００Ｍ個であるが、本方式では４９５０Ｍ個と大幅に増大する。【００２５】
これまでは、乱数を高速に生成するための方針として、主として乱数発生素子単体から単位時間当たりに取り出すことのできる乱数の数を増やすことに主眼がおかれ、一定の成果が得られてきた。しかし、乱数発生素子そのものを高速化することには技術的にもコスト的にもいずれ限界がくる。これに対して、本方式によれば、乱数発生素子そのものはそれほど高速でなくても、その数を増やすことによって全体としての乱数取出し速度は大幅に向上する。
【実施例１】
【００２６】
以下に本発明の一実施例を説明する。図３は、ランダムパルス生成回路５のブロック図、図４は図３のランダムパルス生成器５（５Ａ〜５Ｄ）を用いた乱数生成器のブロック図である。【００２７】
図３の回路において、熱雑音発生素子１０は、熱雑音に基づいてパルス状の電位変動を出力する素子であり、通常は抵抗が熱雑音発生素子として用いられることが多い。熱雑音の発生はランダムな現象であることが、一般に認められている。【００２８】
また、符号１２で示すブロックは、熱雑音発生素子１０において発生する熱雑音を増幅する増幅器であり、符号１４で示すブロックは、増幅後の熱雑音信号を予め設定された閾値と比較し、その結果をパルスＰとして出力するコンパレータである。したがって、コンパレータからの出力パルスＰは、ランダムに発生する熱雑音に基づいたランダムパルスとなる。【００２９】
図４は、図３に示したランダムパルス生成器５を４個（５Ａ〜５Ｄ）用いて構成されている。ただし、２個以上であれは、ランダムパルス生成器の数は任意である。【００３０】
ランダムパルス生成器５Ａからの出力信号Ｐａはランダムパルスのパルス列であり、リセット信号（スタート信号）としてカウンタＣａに供給されるとともに、ロード信号（ストップ信号）としてレジスタＲｂａ、Ｒｃａ、Ｒｄａに供給される。ランダムパルス生成器５Ｂ、５Ｃ、５Ｄも、同様に対応するカウンタ及びレジスタにランダムパルスＰｂ、Ｐｃ、Ｐｄを供給する。なお、ランダムパルス生成器５Ａ、５Ｂ、５Ｃ、５Ｄ及びこれらから出力されるランダムパルスＰａ、Ｐｂ、Ｐｃ、Ｐｄは相互に独立している。【００３１】
カウンタＣａは、高速に発生されるカウントパルス（少なくともランダムパルスの周波数よりも高い周波数を有することが必要である）を生成して、ランダムパルス生成器５Ｂ、５Ｃ、５Ｄにそれぞれ接続されたレジスタＲａｂ、Ｒａｃ、Ｒａｄに供給する。レジスタＲｂａは、ランダムパルス生成器５Ｂに接続されたカウンタＣｂからカウントパルスを受け取る。レジスタＲｃａは、ランダムパルス生成器５Ｃに接続されたカウンタＣｃからカウントパルスを受け取る。レジスタＲｄａは、ランダムパルス生成器５Ｄに接続されたカウンタＣｄからカウントパルスを受け取る。【００３２】
カウンタＣａ、Ｃｂ、Ｃｃ、Ｃｄは、それぞれのランダムパルス生成器からリセット信号を受け取ったときにカウントパルスの供給を開始する。各レジスタは、それぞれのランダムパルス生成器からロード信号を受け取ったときに、供給されているカウントパルスのカウント値を格納する。こうして各カウンタに格納された各カウント値が乱数値となる。【００３３】
図４の乱数生成装置には４個のランダムパルス生成器が設けられており（Ｎ＝４）、各ランダムパルス生成器が１秒間にＭ個のランダムパルスを出力するものとすると、この乱数生成装置の乱数生成速度は、前述のＭＮ（Ｎ−１）／２にこれらの値を代入して、毎秒６Ｍ個となり、旧方式の場合の４Ｍ個よりも高速になる。
【図面の簡単な説明】
【００３４】
【図１】本発明の基本的な考え方を説明するための図である。
【図２】図１をより一般化して、Ｎ個の別々のランダムパルス生成器から得られるＮ個のパルス列Ｒ1〜ＲNを設けた場合の説明するための図である。
【図３】ランダムパルス生成回路５のブロック図である。
【図４】図３のランダムパルス生成器を用いた乱数生成器のブロック図である。
【符号の説明】
【００３５】
５Ａ、５Ｂ、５Ｃ、５Ｄ      ランダムパルス生成器
１０      熱雑音発生素子
１２      増幅器
１４      コンパレータ
【図１】
0004486961.tif 000005
【図２】
0004486961.tif 000006
【図３】
0004486961.tif 000007
【図４】
0004486961.tif 000008