(57)【特許請求の範囲】
【請求項１】
光源と、
上記光源からの光を２等分して第１の光および第２の光を得る光分割部と、
上記光分割部で得られた第１の光を検出する第１の光検出器と、
上記光分割部で得られた第２の光を検出する第２の光検出器と、
上記第１の光検出器の検出出力と上記第２の光検出器の検出出力との差分を得る差分器と、
上記差分器の出力に基づいて乱数列を生成する乱数生成部と
を備えることを特徴とする乱数生成装置。
【請求項２】
上記乱数生成部は、
上記差分器の出力を所定の閾値と比較し、比較結果を任意のクロックでサンプリングして２値の乱数列を生成する
ことを特徴とする請求項１に記載の乱数生成装置。
【請求項３】
上記光源は、
上記任意のクロックに同期して間欠的に発光する
ことを特徴とする請求項２に記載の乱数生成装置。
【請求項４】
上記乱数生成部で生成された２値の乱数列を２ビットずつ区切り、２ビットのデータが互いに異なる第１のパターンにあるとき２値を構成する一方の値を出力し、２ビットのデータが互いに異なる第２のパターンにあるとき２値を構成する他方の値を出力し、０，１の出現頻度を等しくした新たな２値の乱数列を生成する乱数補正部をさらに備える
ことを特徴とする請求項２に記載の乱数生成装置。
【請求項５】
上記乱数生成部で生成された乱数列または上記乱数補正部で生成された乱数列を選択的に出力するスイッチ部をさらに備える
ことを特徴とする請求項４に記載の乱数生成装置。
【請求項６】
上記乱数生成部は、
上記差分器の出力を複数の閾値と比較し、複数の比較結果を任意のクロックでサンプリングし、複数のサンプリング結果を多値データにマッピングして多値の乱数列を生成する
ことを特徴とする請求項１に記載の乱数生成装置。
【請求項７】
上記光源は、
上記任意のクロックに同期して間欠的に発光する
ことを特徴とする請求項６に記載の乱数生成装置。
【請求項８】
光源の光を２分して第１の光および第２の光を得る分光ステップと、
上記分光ステップで得られた第１の光を検出する第１の光検出ステップと、
上記分光ステップで得られた第２の光を検出する第２の光検出ステップと、
上記第１の光検出ステップで得られた検出出力と上記第２の光検出ステップで得られた検出出力との差分を得る差分ステップと、
上記差分ステップの出力に基づいて乱数列を生成する乱数生成ステップと
を備えることを特徴とする乱数生成方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、物理乱数(真性乱数)を発生する乱数生成方法および乱数生成方法に関する。詳しくは、この発明は、光源からの光を２等分し、各光の検出出力の差分に基づいて乱数列を生成することにより、安価な構成で、物理乱数を高速に生成できるようにした乱数生成装置および乱数生成方法に係るものである。
【背景技術】
【０００２】
偏りのない乱数は、暗号の種、あるいは、シミュレーションにおいてパラメータを振るために使用されている。現代では高速な暗号通信や、より大規模なシミュレーションのために、乱数を高速に生成することが強く求められている。
【０００３】
乱数は、シフトレジスタなどを使って生成される擬似乱数と、自然の雑音を利用した物理乱数(真性乱数)に分けられている。擬似乱数は長い間観測するとその統計性に偏りが生じ、その乱数を使用する暗号の秘匿性に問題が発生したり、シミュレーション結果にバイアスが生じたりすることになる。そこで、通信の秘匿性を確保し、あるいは、正確なシミュレーション結果を得るために、物理乱数を高速に生成することが必要となる。
【０００４】
従来、物理乱数の生成装置として、電気回路中の熱雑音を利用した乱数生成装置が知られている。例えば、図１２に示すような接続構成として熱雑音発生抵抗で発生された熱雑音を増幅器で増幅してランダムな電圧値を発生させ、図示していないが、このランダムな電圧値を所定の閾値と比較し、比較結果を任意のクロックでサンプリングして２値の乱数列を生成する、ようにされる。
【０００５】
このように電気回路中の熱雑音を利用して物理乱数を生成するものにあっては、回路の電圧変動や気温などの外部環境の影響が抵抗値や抵抗に流れる電流を揺動させ、その影響が出力に出てしまうこと、広帯域の増幅器が使われると内部のフィードバック回路が雑音の癖に影響を与える可能性があること、などの問題点がある。
【０００６】
そこで、従来、より本質的なランダム性を使用した物理乱数の生成装置として、単一光子を使った乱数生成装置が知られている（例えば、特許文献１参照）。図１３は、この乱数生成装置の典型的な構成例を示している。反射、透過が５０％ずつのハーフビームスプリッタ（ＨＢＳ）に単一光子が入射すると、その反射面で、透過するか、反射するかは、他の何物にも影響されない、まったくのランダムな事象になる。そのため、光検出器１で検出されるか、光検出器２で検出されるかをそれぞれ０，１としておけば、２値の乱数列が得られる。
【特許文献１】特開２００３−３６１６８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
上述した単一光子を使って物理乱数を生成する乱数生成装置にあっては、単一光子の発生が難しい、という問題点がある。光源からの光を減衰器で弱めて使用するが、この状態の光は平均光子数が１個であっても、ある時は、０個、１個、それ以上など、時々によってばらつく。そのため、乱数の生成速度を上げることができない。また、単一光子を使って物理乱数を生成するものにあっては、単一光子の光検出器が必要であるが、これは非常に高価で、応答速度も遅い、という問題点がある。
【０００８】
この発明の目的は、安価な構成で、物理乱数を高速に生成可能とすることにある。
【課題を解決するための手段】
【０００９】
この発明の概念は、
光源と、
上記光源からの光を２等分して第１の光および第２の光を得る光分割部と、
上記光分割部で得られた第１の光を検出する第１の光検出器と、
上記光分割部で得られた第２の光を検出する第２の光検出器と、
上記第１の光検出器の検出出力と上記第２の光検出器の検出出力との差分を得る差分器と、
上記差分器の出力に基づいて乱数列を生成する乱数生成部と
を備えることを特徴とする乱数生成装置にある。
【００１０】
この発明において、光源からの光は、光分割部で２等分されて、第１の光および第２の光が得られる。光分割部は、光を２等分するものであればよく、例えば、ハーフビームスプリッタ（ＨＢＳ）、分岐導波路等で構成される。第１の光は第１の光検出器で検出され、第２の光は第２の光検出器で検出される。そして、差分器により、第１の光検出器の検出出力と第２の光検出器の検出出力との差分が得られる。この差分器の出力には、乱数列の生成の基礎とできる、量子揺らぎが現れる。
【００１１】
この差分器の出力に基づいて、乱数生成部により、乱数列が生成される。例えば、乱数生成部では、差分器の出力が所定の閾値と比較され、比較結果が任意のクロックでサンプリングされて２値の乱数列が生成される。また、例えば、乱数生成部では、差分器の出力が複数の閾値と比較され、複数の比較結果が任意のクロックでサンプリングされ、複数のサンプリング結果が多値データにマッピングされて多値の乱数列が生成される。
【００１２】
この場合、光源は、定常発光ではなく、パルス発光とされて、消費電力の低減を図ることができる。すなわち、光源は、上述したように比較結果をサンプリングするクロックに同期して間欠的に発光される。
【００１３】
このように、この発明においては、光源からの光を２等分し、各光の検出出力の差分（量子揺らぎが現れる）を求め、この差分に基づいて乱数列を生成するものであり、単一光子発生器や単一光子検出器等の特殊な装置を必要とせず、安価な構成で、物理乱数を高速に生成できる。
【００１４】
また、この発明において、例えば、乱数生成部で生成された２値の乱数列を２ビットずつ区切り、２ビットのデータが互いに異なる第１のパターンにあるとき２値を構成する一方の値を出力し、２ビットのデータが互いに異なる第２のパターンにあるとき２値を構成する他方の値を出力し、０，１の出現頻度を等しくした新たな２値の乱数列を生成する乱数補正部をさらに備える、ようにされてもよい。この場合、０，１の出現頻度が等しい２値の乱数列を得ることができる。
【００１５】
なお、乱数補正部で生成される２値の乱数列の生成レートは、上述の乱数生成部における２値の乱数列の生成レートの約半分となる。そこで、この発明において、例えば、乱数生成部で生成された乱数列または乱数補正部で生成された乱数列を選択的に出力するスイッチ部をさらに備える、ようにされてもよい。この場合、高速な乱数列が必要なときは、スイッチ部から乱数生成部で生成された乱数列を出力させることができる。
【発明の効果】
【００１６】
この発明によれば、光源からの光を２等分し、各光の検出出力の差分に基づいて乱数列を生成するものであり、単一光子発生器や単一光子検出器等の特殊な装置を必要とせず、安価な構成で、物理乱数を高速に生成できる。
【発明を実施するための最良の形態】
【００１７】
以下、図面を参照しながら、この発明の実施の形態について説明する。図１は、実施の形態としての乱数生成装置１００の構成例を示している。
【００１８】
この乱数生成装置１００は、光源１０１と、ハーフビームスプリッタ（ＨＢＳ）１０２と、光検出器１０３，１０４と、差分器１０５と、乱数生成部１０６と、出力端子１０７とを有している。
【００１９】
光源１０１は、光を出力する。この光源１０１は、ＬＥＤ(Light Emitting Diode)、ＬＤ(Laser Diode)等で構成される。ハーフビームスプリッタ（ＨＢＳ）１０２は、反射、透過がほぼ５０％のビームスプリッタである。このハーフビームスプリッタ１０２は、光分割部を構成しており、光源１０１からの光Ｌ０を２等分して、第１の光Ｌ１と、第２の光Ｌ２を得る。ここで、２等分は、上述したようにハーフビームスプリッタ１０２は、反射、透過がほぼ５０％のビームスプリッタであることから、厳密な意味での２等分ではなく、ほぼ２等分という意味である。
【００２０】
光検出器１０３は、ハーフビームスプリッタ１０２で得られた第１の光Ｌ１を検出する。光検出器１０４は、ハーフビームスプリッタ１０２で得られた第２の光Ｌ２を検出する。これら光検出器１０３は、光量を電圧に変換するものであり、フォトダイオード等の光検出素子で構成される。差分器１０５は、光検出器１０３の検出出力と光検出器１０４の検出出力との差分を得る。この差分器１０５は、例えば差動増幅器等で構成される。乱数生成装置１００では、差分器１０５の出力に現れる量子揺らぎを基礎として、乱数列が生成される。
【００２１】
ここで、差分器１０５の出力について、さらに説明する。
光源１０１の光Ｌ０がハーフビームスプリッタ１０２に入射される場合、反射膜１０２ａ上における各光子の振る舞いは、透過するか反射するか、それぞれ５０％の確率になっている。このような各光子について独立で離散的な過程は、ポアソン過程となる。その結果、透過光（第１の光Ｌ１）、反射光（第２の光Ｌ２）の光量は、光Ｌ０の光子数をＮとすると、Ｎ／２であり、その標準偏差は√（Ｎ／２）となる。
【００２２】
光量を電圧に変換する光検出器１０３，１０４を通すと、それぞれの電圧値は、平均値がＶ／２、標準偏差が√（Ｖ／２）となる。ただし、電圧値Ｖ／２は、光子数Ｎ／２の光を入力した場合における、光検出器１０３，１０４の出力電圧値である。この電圧値を差分器１０５に入れると、その出力は平均値が０、標準偏差が√Ｖとなる。
【００２３】
図２は、差分器１０５の出力の様子を示している。この図２において、横軸が出力電圧で、縦軸が頻度である。差分器１０５の出力（差分出力）、図示のように、０の周りで揺らぐ。この揺らぎは、一つ一つの光子がハーフビームスプリッタ１０２の反射膜１０２ａ上で、それぞれが透過するか反射するかの揺らぎに起因しており、きわめて本質的で、周囲環境に影響されない。
【００２４】
乱数生成装置１００では、この揺らぎを乱数列の生成の基礎として用いる。ポアソン過程でのこの揺らぎは、ガウス分布になり、平均値の周りに対称に分布し、従って、平均値の＋側も−側も同じ頻度になる。そのため、差分器１０５の出力を、０の閾値で比較し、例えば、＋側を“１”、−側を“０”に割り振ることで、０，１の２値の乱数列を生成できる。
【００２５】
図１に戻って、乱数生成部１０６は、差分器１０５の出力に基づいて、２値の乱数列を生成する。すなわち、乱数生成部１０６は、差分器１０５の出力を、平均値に対応した閾値Ｖref＝０と比較し、比較結果（２値出力）を任意のクロックＣＬＫでサンプリングして、０，１の２値の乱数列を生成する。この乱数列のビット周波数は、クロックＣＬＫの周波数と等しくなる。出力端子１０７は、乱数生成部１０６で生成された乱数列を出力する。
【００２６】
図１に示す乱数生成装置１００の動作を説明する。
光源１０１から出力される光Ｌ０は、ハーフビームスプリッタ１０２で２等分され、第１の光Ｌ１および第２の光Ｌ２とされる。第１の光Ｌ１は、光検出器１０３に入力される。この光検出器１０３からは、第１の光Ｌ１の光量に対応した値の電圧が、検出出力として得られる。また、第２の光Ｌ２は、光検出器１０４に入力される。この光検出器１０４からは、第２の光Ｌ２の光量に対応した値の電圧が、検出出力として得られる。
【００２７】
光検出器１０３，１０４の検出出力は差分器１０５に供給される。この差分器１０５では、光検出器１０３の検出出力と光検出器１０４の検出出力との差分が得られる。この差分器１０５の出力（差分出力）は、乱数生成部１０６に供給される。乱数生成部１０６では、差分器１０５の出力が、閾値Ｖref＝０と比較され、比較結果（２値出力）が任意のクロックＣＬＫでサンプリングされて、０，１の２値の乱数列が生成される。この乱数列は、出力端子１０７に出力される。
【００２８】
図１に示す乱数生成装置１００においては、光源１０１からの光Ｌ０が２等分され、各光Ｌ１，Ｌ２の検出出力の差分（量子揺らぎが現れる）が求められ、この差分に基づいて乱数列が生成されるものである。したがって、単一光子発生器や単一光子検出器等の特殊な装置を必要とせず、安価な構成で、物理乱数を高速に生成できる。
【００２９】
なお、図１に示す乱数生成装置１００においては、光源１０１からの光Ｌ０が直接ハーフビームスプリッタ１０２に入力され、また、ハーフビームスプリッタ１０２からの光Ｌ１，Ｌ２が直接光検出器１０３，１０４に入力されるものを示した。図３に示すように、光源１０１とハーフビームスプリッタ１０２との間、ハーフビームスプリッタ１０２と光検出器１０３，１０４との間に、レンズ１１０を挿入した構成とし、ハーフビームスプリッタ１０２や光検出器１０３，１０４に、効率よく光を送り込むようにしてもよい。
【００３０】
また、図１に示す乱数生成装置１００においては、光源１０１からの光Ｌ０を２等分する光分割部をハーフビームスプリッタ１０２で構成したものを示した。このハーフビームスプリッタ１０２の代わりに、図４に示すように、光源１０１からの光Ｌ０を２等分する分岐導波路１０９等を用いて構成してもよい。
【００３１】
また、図１に示す乱数生成装置１００において、光源１０１は、ＬＥＤ(Light Emitting Diode)、ＬＤ(Laser Diode)等で構成されることを述べたが、白熱灯のようなスペクトル幅の広いものは、広帯域に渡り、反射率、透過率をほぼ５０％に保持できるハーフビームスプリッタ１０２の設計が難しいので不向きである。ただし、白熱灯のようなスペクトル幅の広いものにあっても、周波数フィルタなどを通してスペクトル幅を制限すれば使用できる。
【００３２】
また、図１に示す乱数生成装置１００において、光源１０１からの光の光量変動などで、差分器１０５の出力の平均値は変わらなくても、その分散量は変化することがある。その場合にあっても、差分器１０５の出力の平均値で判別する０，１の出現確率にはなんら変化を及ぼさない。しかし、分布の分散値が変化するのが困るような乱数の使用用途には、出力の和を別にとってそれで、差動出力を規格化してやることで、分散の変化を抑えることができる。
【００３３】
次に、この発明の他の実施の形態について説明する。図５は、他の実施の形態としての乱数生成装置１００Ａの構成例を示している。この図５において、図１と対応する部分には同一符号を付し、その詳細説明は省略する。
【００３４】
乱数生成装置１００Ａは、図１に示す乱数生成装置１００の光源１０１の代わりに、光源１０１Ａが配置された構成とされている。光源１０１は定常発光をするものであるが、光源１０１Ａはパルス発光をする。すなわち、この光源１０１Ａは、上述した乱数生成部１０６に供給される、比較結果をサンプリングするためのクロックＣＬＫに同期して、間欠的に発光するようにされる。
【００３５】
ここで、平均Ｐワットの光をΔｔ時間だけ発光させた場合の光子数Ｎは、プランク定数をｈ、光の振動数をｆとすると、以下の（１）式で表される。
【００３６】
Ｎ＝Ｐ・Δｔ／ｈ・ｆ      ・・・（１）
【００３７】
いま、光波長が８００ｎメートル、Ｐ＝１０ｍワット、Δｔ＝１ｎ秒とすると、Ｎ＝４×１０７個となる。したがって、この光を入力したときの差分出力は√Ｎ個に比例するので、その揺らぎを仕事に換算すると１．６μＷ（−１８ｄＢｍ）相当の出力になる。これは充分に処理可能な光量である。
【００３８】
図５に示す乱数生成装置１００Ａのその他の構成および動作は、図１に示す乱数生成装置１００と同様であるので、その説明は省略する。
【００３９】
この図５に示す乱数生成装置１００Ａにおいては、図１に示す乱数生成装置１００と同様の効果を得ることができ、さらに、光源１０１Ａが乱数列のビット周波数に合わせてパルス発光を行うため、消費電力の低減を図ることができる。
【００４０】
次に、この発明のさらに他の実施の形態について説明する。図６は、他の実施の形態としての乱数生成装置１００Ｂの構成例を示している。この図６において、図１と対応する部分には同一符号を付し、その詳細説明は省略する。
【００４１】
上述した図１に示す乱数生成装置１００においては、光源１０１からの光Ｌ０を２等分し、差分器１０５では各光Ｌ１，Ｌ２の検出出力の差分をとっているため、光源１０１の変動などは、キャンセルされて出力に影響を与えないという利点がある。しかし、上述したように、ハーフビームスプリッタ１０２の反射、透過はほぼ５０％であり、当該ハーフビームスプリッタ１０２の透過、反射が５０％ずつであるという保証はない。
【００４２】
ハーフビームスプリッタ１０２の反射、透過の５０％からのずれによる、差分出力の平均値０からのずれをキャンセルするために、閾値Ｖrefのオフセット調整などを乱数生成部１０６に設けることは充分効果的である。しかし、調整値をどのようにするかが問題となる。充分に長い間観測して、オフセットをつけるが、物理乱数の性質上その周期以上の乱数を発生させることはできなくなる。同じように、平均値をモニタして、それが零になるようにオフセットにフィードバックをかけるのも、うまくいかない。フィードバックの時定数より長い周期の乱数は発生できなくなるからである。そこで、乱数生成部１０６の後に、差分出力の平均値が０からずれることによる、乱数列における０，１の偏りを正す回路を配置することが考えられる。
【００４３】
図６に示す乱数生成装置１００Ｂは、乱数生成部１０６の後に、乱数列における０，１の偏りを正す回路である乱数補正部１１０を配置したものである。
【００４４】
この乱数補正部１１０は、乱数生成部１０６で生成された２値の乱数列を２ビットずつ区切り、２ビットのデータが互いに異なる第１のパターンにあるとき２値を構成する一方の値を出力し、２ビットのデータが互いに異なる第２のパターンにあるとき２値を構成する他方の値を出力し、０，１の出現頻度を等しくした新たな２値の乱数列を生成する。
【００４５】
この乱数補正部１１０は、フォンノイマンバランシング(もしくはフォンノイマンバイアシング)と呼ばれる原理を用いる。この原理は、０の出る確率をｐ、１の出る確率をｑとしたときに、２ビットの連接確率は、００＝ｐｐ、０１＝ｐｑ、１０＝ｑｐ、１１＝ｑｑとなり、０１,１０の出る確率は、ｐ、ｑが如何なるものであっても、同じものとなる、という事実を基にしている。すなわち、入力の０，１の信号列を２ビットずつ分割し、それが、００，１１なら捨てる、１０，０１ならどちらかを０、どちらかを１と定義して、乱数列とする、というものである。これにより、乱数の生成レートは約１／４に落ちるが、完全に偏りのない、乱数列がフィードバックなしに生成できる。
【００４６】
この乱数補正部１１０は、２ビットのシフトレジスタ１１１と、ＥＸＯＲ（エクスクルーシブオア）回路１１２と、アンド回路１１３と、１／２分周器１１４と、バッファメモリ１１５とから構成されている。
【００４７】
乱数生成部１０６で生成された２値の乱数列は、２ビットのシフトレジスタ１１１に入力される。このシフトレジスタ１１１には、乱数生成部１０６で比較結果をサンプリングするために用いられたクロックＣＬＫが、動作クロックとして供給される。シフトレジスタ１１１の１番目のレジスタｂ０および２番目のレジスタｂ１の出力はＥＸＯＲ回路１１２に入力され、このＥＸＯＲ回路１１２の出力はアンド回路１１３の一方の入力側に入力される。
【００４８】
また、クロックＣＬＫは１／２分周器１１４に入力される。この１／２分周器１１４からは、クロックＣＬＫが１／２分周されたクロックＣＬＫ′が出力される。このクロックＣＬＫ′はアンド回路１１３の他方の入力側に供給される。アンド回路１１３の出力は、バッファメモリ１１５に書き込みクロックとして供給される。このバッファメモリ１１５には、シフトレジスタ１１１の２番目のレジスタｂ１の出力が、書き込みデータとして供給されている。また、このバッファメモリ１１５には、読み出しクロックＣＬＫ２が供給される。
【００４９】
バッファメモリ１１５は、例えば２ポートバッファの一種であるリングバッファで構成されている。このリングバッファは、書き込みと読み出しとを同時に行えるリング状のバッファであり、後側に順次書き込まれていくと共に、前側から順次読み出されていく。読み出しクロックＣＬＫ２は、例えば、乱数列を必要とする図示しないシステムから供給される。ここで、重要な点は、読み出しが書き込みに追いつかないように、充分大きなバッファを用いて、読み出しクロックＣＬＫ２の平均レートが書き込みクロックの平均レートを上回らないようにすることである。
【００５０】
この乱数補正部１１０においては、アンド回路１１３にクロックＣＬＫを１／２分周したクロックＣＬＫ′が入力されることで、乱数生成部１０６で生成された２値の乱数列が２ビットずつ区切られて、バッファメモリ１１５に対する書き込み処理が行われる。
【００５１】
すなわち、２ビットのデータ「b0b1」が互いに異なる第１のパターン、例えば「１０」にあるとき、ＥＸＯＲ回路１１２の出力は「１」となることから、アンド回路１１３からバッファメモリ１１５に書き込みクロックが供給され、当該バッファメモリ１１５には、シフトレジスタ１１１の２番目のレジスタｂ１に保持されているデータ「０」が書き込まれる。
【００５２】
また、２ビットのデータ「b0b1」が互いに異なる第２のパターン、例えば「０１」にあるとき、ＥＸＯＲ回路１１２の出力は「１」となることから、アンド回路１１３からバッファメモリ１１５に書き込みクロックが供給され、当該バッファメモリ１１５には、シフトレジスタ１１１の２番目のレジスタｂ１に保持されているデータ「１」が書き込まれる。
【００５３】
なお、２ビットのデータ「b0b1」が「００」あるいは「１１」にあるときは、ＥＸＯＲ回路１１２の出力は「０」となることから、バッファメモリ１１５に書き込みクロックが供給されることはなく、当該バッファメモリ１１５にデータの書き込みは行われない。
【００５４】
乱数補正部１１０では、バッファメモリ１１５に対する書き込み処理が上述したように行われることで、バッファメモリ１１５から読み出される乱数列は、０，１の出現頻度が等しいものとなる。バッファメモリ１１５から読み出された乱数列は、出力端子１０７に出力される。
【００５５】
図７は、乱数生成部１０６から乱数補正部１１０に供給される乱数列が「１０１００１１１０１０」であった場合のタイミングチャートを示している。図７（ａ）はクロックＣＬＫを示し、図７（ｂ）はシフトレジスタ１１１に保持される２ビットのデータを示し、図７（ｃ）はＥＸＯＲ回路１１２の出力を示し、図７（ｄ）はクロックＣＬＫ′を示し、図７（ｅ）はアンド回路１１３の出力を示し、図７（ｆ）はバッファメモリ１１５に書き込まれるデータ列（乱数列）を示している。図示のように、バッファメモリ１１５に書き込まれるデータ列は、入力を２ビットずつ取り出し、それが異なっていたときの前のビットを拾い出したものと同じになっている。
【００５６】
図６に示す乱数生成装置１００Ｂのその他の構成および動作は、図１に示す乱数生成装置１００と同様であるので、その説明は省略する。この図６に示す乱数生成装置１００Ｂにおいては、図１に示す乱数生成装置１００と同様の効果を得ることができ、さらに、最終的に出力端子１０７に０，１の出現頻度が等しくされた２値の乱数列を得ることができる。
【００５７】
次に、この発明の別の実施の形態について説明する。図８は、別の実施の形態としての乱数生成装置１００Ｃの構成例を示している。この図８において、図６と対応する部分には同一符号を付し、その詳細説明は省略する。
【００５８】
上述した図６に示す乱数生成装置１００Ｂにおいては、出力端子１０７に出力される２値の乱数列は０，１の出現頻度が等しくされたものとなるが、当該２値の乱数列の生成レートは、乱数生成部１０６における２値の乱数列の生成レートの約半分となる。そのため、乱数生成部１０６で生成された乱数列または乱数補正部１１０で生成された乱数列を、選択的に、出力できれば便利である。
【００５９】
図８に示す乱数生成装置１００Ｃは、乱数生成部１０６で生成された乱数列または乱数補正部１１０で生成された乱数列を、選択的に、出力可能に構成されている。
【００６０】
すなわち、乱数生成部１０６で生成された乱数列またはシフトレジスタ１１１の２番目のレジスタｂ１に保持されているデータがスイッチ１２１で取り出されてバッファメモリ１１５に書き込みデータとして供給される。また、クロックＣＬＫまたはアンド回路１１３の出力Ｓ２がスイッチ１２２で取り出されてバッファメモリ１１５に書き込みクロックとして供給される。また、クロックＣＬＫまたはクロックＣＬＫ２がスイッチ１２３で取り出されてバッファメモリ１１５に読み出しクロックとして供給される。スイッチ１２１〜１２３の切り替えは、ユーザ操作部１２５からのユーザの指示に基づいて、制御部１２４によって制御される。
【００６１】
ユーザにより乱数生成部１０６で生成された乱数列の出力が指示されるとき、制御部１２４の制御のもと、スイッチ１２１では乱数生成部１０６で生成された乱数列が取り出され、スイッチ１２２ではクロックＣＬＫが取り出され、スイッチ１２３ではクロックＣＬＫが取り出される。この場合、乱数生成部１０６で生成された乱数列が、バッファメモリ１１５を介して、出力端子１０７に得られる。
【００６２】
一方、ユーザにより乱数補正部１１０で生成された乱数列の出力が指示されるとき、制御部１２４の制御のもと、スイッチ１２１ではシフトレジスタ１１１の２番目のレジスタｂ１の保持データが取り出され、スイッチ１２２ではアンド回路１１３の出力Ｓ２が取り出され、スイッチ１２３ではクロックＣＬＫ２が取り出される。この場合、乱数生成部１０６で生成された乱数列が乱数生成部１１０に供給され、当該乱数補正部１１０で生成された乱数列が、出力端子１０７に得られる。
【００６３】
このように、図８に示す乱数生成装置１００Ｃにおいては、乱数生成部１０６で生成された乱数列または乱数補正部１１０で生成された乱数列を、選択的に、出力できる。したがって、高速な乱数列が必要なときは、出力端子１０７に、乱数生成部１０６で生成された乱数列を出力させることができる。一方、０，１の出現頻度が等しい乱数列が必要なときは、出力端子１０７に、乱数補正部１１０で生成された乱数列を出力させることができる。
【００６４】
次に、この発明のさらに別の実施の形態について説明する。図９は、さらに別の実施の形態としての乱数生成装置１００Ｄの構成例を示している。この図９において、図１と対応する部分には同一符号を付し、その詳細説明は省略する。
【００６５】
この乱数生成装置１００Ｄにおいては、図１の乱数生成装置１００における乱数生成部１０６の代わりに、乱数生成部１３０が配置されている。乱数生成部１３０は、差分器１０５の出力に基づいて、多値、この実施の形態においては、４値の乱数列を生成する。すなわち、乱数生成部１３０は、差分器１０５の出力を、３つの閾値Ｖref1，Ｖref2，Ｖref3と比較し、３つの比較結果を任意のクロックＣＬＫでサンプリングし、そのサンプリング結果を４値データ（２ビットデータ）にマッピングして４値の乱数列を生成する。この乱数列のビット周波数は、クロックＣＬＫの周波数と等しくなる。出力端子１０７は、乱数生成部１３０で生成された乱数列を出力する。
【００６６】
図１０は、乱数生成部１３０の構成例を示している。この乱数生成部１３０は、差分器１０５の出力Ｓinを、閾値Ｖref1，Ｖref2，Ｖref3と比較する３つの比較器１３１，１３２，１３３と、これら比較器１３１〜１３３の比較結果をクロックＣＬＫでサンプリングし、そのサンプリング結果を４値データＳoutにマッピングするマッピング回路１３４とを有している。マッピング回路１３４において、サンプリング結果を４値データＳoutにマッピングする部分は、例えば、サンプリング結果を入力として４値データにＳoutを読み出すメモリで構成できる。
【００６７】
ここで、閾値Ｖref1，Ｖref2，Ｖref3は、図１１に示すように、ガウス分布を等面積に分割するように設定される。これにより、差分器１０５の出力が各領域に落ちる頻度をほぼ等しくできる。マッピング回路１３４では、比較器１３１〜１３３の出力に基づいて、差分器１０５の出力がどの領域にあるかが判定され、Ｉ，II，III，IVの各領域に対して、例えば、マッピング１で示されるように、４値データ「００」、「０１」、「１０」「１１」がマッピングされる。
【００６８】
この場合、厳密に等面積にできなかったり、分布の幅が変わったりすると各領域に等確率で電圧値が落ちなくなる。このような場合には、領域とデータのマッピングを、図１１に示すように、マッピング１〜マッピング４のように適時変化させることで、ある時間平均では等確率になるようにできる。
【００６９】
図９に示す乱数生成装置１００Ｄのその他の構成および動作は、図１に示す乱数生成装置１００と同様であるので、その説明は省略する。この図９に示す乱数生成装置１００Ｄにおいては、図１に示す乱数生成装置１００と同様の効果を得ることができる。なお、この図９に示す乱数生成装置１００Ｄは、４値の乱数列を生成するものを示したが、同様にして、８値、１６値等の多値の乱数列を生成できる。また、図９の乱数生成装置１００Ｄの光源１０１を、図５に示す乱数生成装置１００Ａの光源１０１Ａと同様に、パルス発光させて、消費電力の低減を図るようにしてもよい。
【００７０】
なお、上述実施の形態における光源１０１としては、高速なパルス発振を考えると、レーザを使用するのが望ましい。また、レーザは光量を多くとれ、結果的に分散の幅を大きくでき検出がしやすくなる。さらに、小型化のためには半導体レーザが好ましく、安価に構成するにはシリコンのフォトダイオードで受光できる、４００〜９００ｎｍ帯であることが好ましい。
【産業上の利用可能性】
【００７１】
この発明は、安価な構成で、物理乱数を高速に生成できるものであり、暗号の種、あるいは、シミュレーションにおいてパラメータを振るために使用される乱数列を生成する乱数生成装置に適用できる。
【図面の簡単な説明】
【００７２】
【図１】この発明の実施の形態としての乱数生成装置の構成例を示すブロック図である。
【図２】差分器の出力の様子を示す図である。
【図３】光源とハーフビームスプリッタとの間、ハーフビームスプリッタと光検出器との間に、レンズを挿入した構成を示す図である。
【図４】光源からの光Ｌ０を２等分するために、ハーフビームスプリッタの代わりに、分岐導波路１０９を用いて構成を示す図である。
【図５】この発明の他の実施の形態としての乱数生成装置の構成例を示すブロック図である。
【図６】この発明のさらに他の実施の形態としての乱数生成装置の構成例を示すブロック図である。
【図７】乱数補正部の動作を説明するためのタイミングチャートである。
【図８】この発明の別の実施の形態としての乱数生成装置の構成例を示すブロック図である。
【図９】この発明のさらに別の実施の形態としての乱数生成装置の構成例を示すブロック図である。
【図１０】４値の乱数列を生成する乱数生成部の構成例を示すブロック図である。
【図１１】４値の乱数列を生成する乱数生成部において閾値Ｖref1，Ｖref2，Ｖref3の設定を説明するための図である。
【図１２】従来の電気回路中の熱雑音を利用した乱数生成装置を説明するための図である。
【図１３】従来の単一光子を使った乱数生成装置を説明するための図である。
【符号の説明】
【００７３】
１００，１００Ａ〜１００Ｄ・・・乱数生成装置、１０１・・・光源、１０２・・・ハーフビームスプリッタ、１０２ａ・・・反射膜、１０３，１０４・・・光検出器、１０５・・・差分器、１０６・・・乱数生成部、１０７・・・出力端子、１０８・・・レンズ、１０９・・・分岐導波路、１１０・・・乱数補正部、１１１・・・２ビットのシフトレジスタ、１１２・・・エクスクルーシブオア回路、１１３・・・アンド回路、１１４・・・１／２分周器、１１５・・・バッファメモリ、１２１〜１２３・・・スイッチ、１３０・・・乱数生成部
【図１】
0004952461.tif 000002
【図２】
0004952461.tif 000003
【図３】
0004952461.tif 000004
【図４】
0004952461.tif 000005
【図５】
0004952461.tif 000006
【図６】
0004952461.tif 000007
【図７】
0004952461.tif 000008
【図８】
0004952461.tif 000009
【図９】
0004952461.tif 000010
【図１０】
0004952461.tif 000011
【図１１】
0004952461.tif 000012
【図１２】
0004952461.tif 000013
【図１３】
0004952461.tif 000014