(57)【要約】【課題】方法で真正な乱数を簡単に取り出すことができる物理乱数生成装置及び物理乱数生成回路を提供する。【解決手段】出力レベルがランダムに変動するノイズ源からの信号を所定の周期でサンプリングしてディジタル値に変換するＡ／Ｄ変換手段と、前記Ａ／Ｄ変換手段によってサンプリングされたディジタル値を所定期間にわたり保持するディジタル値保持手段と、前記ディジタル値保持手段に保持されている値と、その後にサンプリングされたディジタル値との差を算出する演算手段と、前記演算手段による演算結果を乱数値として出力する出力手段とを具備する。ノイズ源から出力される信号をあるタイミングでサンプリングしたときに、その値から前回サンプリングされた値を差し引いた値が乱数値として出力され、真正度の高い乱数が得られる。【選択図】図３
2011238268.tif 000002
【特許請求の範囲】
【請求項１】
出力レベルがランダムに変動するノイズ源からの信号を所定の周期でサンプリングしてディジタル値に変換するＡ／Ｄ変換手段と、
前記Ａ／Ｄ変換手段によってサンプリングされたディジタル値を所定期間にわたり保持するディジタル値保持手段と、
前記ディジタル値保持手段に保持されている値と、その後にサンプリングされたディジタル値との差を算出する演算手段と、
前記演算手段による演算結果を乱数値として出力する出力手段と、
を具備することを特徴とする物理乱数生成装置。
【請求項２】
ノイズ源と、
第１のクロック信号によって開閉する第１のスイッチを介して、前記ノイズ源からの信号を入力されるアンプと、
前記アンプの入力とグランドとの間に接続された第１のコンデンサと、
前記アンプの出力に直列に接続された第２のコンデンサと、
前記第２のコンデンサの前記アンプとは反対の側に接続され、第３のクロックによってサンプリング動作を行うＡ／Ｄコンバータと、
前記Ａ／Ｄコンバータの入力とグランドとの間に接続され、第２のクロック信号によって開閉する第２のスイッチとを含んでおり、
前記第１、第３、第２の各スイッチがこの順番で所定期間閉じる動作を繰り返すよう前記第１、第２、第３のクロックを供給して、前記Ａ／Ｄコンバータから乱数値を取り出すことを特徴とする物理乱数生成回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ランダムに発生する物理現象に基づいて乱数を生成する物理乱数生成装置及び物理乱数生成回路に関する。
【背景技術】
【０００２】
自然現象に基づいて物理乱数を取り出す方法の一つに、抵抗、ダイオード等の半導体、あるいは導体を熱雑音発生素子として用いる方法が知られている。これらの熱雑音発生素子において発生する熱雑音信号は、発生頻度、振幅ともランダムであるため、この熱雑音に基づいて物理乱数を取り出すことができる。例えば、熱雑音発生素子から発生される信号を一定周期でサンプリングしてＡ／Ｄ変換すれば、得られたディジタル値は、熱雑音発生素子の内部においてランダムに起こる事象に起因した乱数と考えることができる。
【０００３】
上記の考え方に基づいて物理乱数を生成する装置及び方法が、特許文献１に記載されている。この文献記載の方法及び装置は、ノイズ源からのノイズ信号から、コンデンサなどによる交流結合によって、ノイズ信号の直流成分を通過させないようにしつつ増幅を行うことを特徴としている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特許第２９８０５７６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上記のようにして得られるディジタル値は、熱雑音発生素子の内部で起こったランダムな事象に起因するものの、これを電気信号として取り出す場合には、ある時点における電圧値又は電流値は、その直前の電圧値又は電流値の影響を全く受けていないとは言えない。例えば、熱雑音発生素子から出力され、これを増幅した電圧信号を一定のサンプリング周期でサンプリングした場合には、あるタイミングでサンプリングした値がその一つ前にサンプリングされた値に全く影響を受けていないとは言えないので、このようにして得られたディジタル値をそのまま出力しただけでは、真正な乱数とは言えない可能性がある。
【０００６】
また、上記特許文献１のように、交流結合を介在させるのは、ノイズ信号から直流成分を除去して信号の振幅の中心点をゼロに移動させることを目的としている。しかしながら、このように信号振幅の中心点をゼロに移動させるだけでは直前の影響を除去することはできず、交流結合を通過したあとのノイズ信号においても信号の各時点における電圧値又は電流値にはやはりその直前の影響が残る。
【０００７】
さらに、得られたディジタル値を人為的に加工して、その加工後の値を乱数値とした場合、その頻度分布が正規分布から外れるあるいは規則的な乱れが生じるなどというように乱数性自体に問題が生じることもある。
【０００８】
本発明は、新たな方法で真正な乱数を簡単に取り出すことができる物理乱数生成装置及び物理乱数生成回路を提供することを目的とする。
【課題を解決するための手段】
【０００９】
上記の目的を達成するために、第１の発明に係る物理乱数生成装置は、出力レベルがランダムに変動するノイズ源からの信号を所定の周期でサンプリングしてディジタル値に変換するＡ／Ｄ変換手段と、前記Ａ／Ｄ変換手段によってサンプリングされたディジタル値を所定期間にわたり保持するディジタル値保持手段と、前記ディジタル値保持手段に保持されている値と、その後にサンプリングされたディジタル値との差を算出する演算手段と、前記演算手段による演算結果を乱数値として出力する出力手段とを具備することを特徴とする。
【００１０】
上記の目的を達成するために、第２の発明に係る物理乱数生成装置は、出力レベルがランダムに変動するノイズ源からの信号を所定の周期でサンプリングしてディジタル値に変換するＡ／Ｄ変換手段と、前記Ａ／Ｄ変換手段によってサンプリングされたディジタル値を所定期間にわたり保持するディジタル値保持手段と、前記ディジタル値保持手段に保持されている一つ前にサンプリングされた値と、現時点でサンプリングされたディジタル値との差を算出する演算手段と、前記演算によって得られた差を所定の閾値と比較し、前記差が前記閾値を超えている期間に所定の信号を出力する比較手段と、前記比較手段から前記所定の信号が出力されている時間を計時しこれを乱数値として出力する計時手段とを具備することを特徴とする。
【００１１】
上記の目的を達成するために、第３の発明に係る物理乱数生成回路は、ノイズ源と、第１のクロック信号によって開閉する第１のスイッチを介して、前記ノイズ源からの信号を入力されるアンプと、前記アンプの入力とグランドとの間に接続された第１のコンデンサと、前記アンプの出力に直列に接続された第２のコンデンサと、前記第２のコンデンサの前記アンプとは反対の側に接続され、第３のクロックによってサンプリング動作を行うＡ／Ｄコンバータと、前記Ａ／Ｄコンバータの入力とグランドとの間に接続され、第２のクロック信号によって開閉する第２のスイッチとを含んでおり、前記第１、第３、第２の各スイッチがこの順番で所定期間閉じる動作を繰り返すよう前記第１、第２、第３のクロック信号を供給して、前記Ａ／Ｄコンバータから乱数値を取り出すことを特徴とする。
【００１２】
上記の目的を達成するために、第４の発明に係る物理乱数生成回路は、ノイズ源と、第１のクロック信号によって開閉する第１のスイッチを介して、前記ノイズ源からの信号を入力されるアンプと、前記アンプの入力とグランドとの間に接続された第１のコンデンサと、前記アンプの出力に直列に接続された第２のコンデンサと、前記第２のコンデンサの前記アンプとは反対の側に接続され、前記第２のコンデンサが接続された入力端子に入力される信号のレベルを所定の閾値と比較し、前記レベルが前記閾値を超えたときにその旨の信号を出力するコンパレータと、前記コンパレータの入力とグランドとの間に接続され、第２のクロック信号によって開閉する第２のスイッチとを含んでおり、前記コンパレータの入力とグランドとの間に接続され、第２のクロック信号によって開閉する第２のスイッチとを含んでおり、前記第１、第２の各スイッチがこの順番で所定期間閉じる動作を繰り返すよう前記第１、第２のクロック信号を供給し、前記コンパレータから信号が出力される期間を計時し、その時間値を乱数として値を取り出すことを特徴とする。
【発明の効果】
【００１３】
上記の第１及び第３の発明によれば、ノイズ源から出力される信号をあるタイミングでサンプリングしたときに、その値から、前回サンプリングされた値を差し引いた値が乱数値として出力される。このため、ある時点においてサンプリングされた値が、前回サンプリングされた値の影響を受けていたとしても、この影響が排除されることになるので、このようにして得られる乱数値は、真正度の高い乱数となる。
【００１４】
上記第２及び第４の発明によれば、ノイズ源から出力される信号をあるタイミングでサンプリングしたときに、その値から、前回サンプリングされた値を差し引いた値が所定の閾値を超えたときに、その超えている期間の時間の長さが乱数値として出力される。このため、ある時点においてサンプリングされた値が、前回サンプリングされた値の影響を受けていたとしても、この影響が排除されることになるので、このようにして得られる乱数値は、真正度の高い乱数となる。
【図面の簡単な説明】
【００１５】
【図１】第１の実施形態に係る乱数生成を行うためのハードウェア構成を示したブロック図である。
【図２】図１に示したハードウェア上でソフトウェア的に乱数生成を実行するアルゴリズムを示したフローチャートである。
【図３】本発明の第２の実施形態であるハードウェア的に乱数を取得する回路のブロック図である。
【図４】図３に示したノイズ源Ｒ１の出力電圧からクロック信号φ１、φ２、φ３を制御して乱数値を取り出すタイミングを示したタイミングチャートである。
【図５】図４（ａ）に示したクロック信号φ１、φ２、φ３の点線で囲んだ部分だけを時間的に拡大して示した図である。
【図６】第３実施形態に係る、ソフトウェア的に乱数生成を実行するアルゴリズムを示したフローチャートである。
【図７】本発明の第４の実施形態である、ハードウェア的に乱数を取得する回路のブロック図である。
【図８】図７に示したノイズ源Ｒ１の出力電圧からクロック信号φ１、φ２、φ３を制御して乱数値を取り出すタイミングを示したタイミングチャートである。
【発明を実施するための形態】
【００１６】
［第１実施形態］
以下に図面を参照して、本発明の実施の形態について説明する。前述のように、本発明の基本的な思想は、物理現象によってランダムに変化する電位（ノイズ電位）を一定周期でサンプリングし、そのサンプリングされた電位から、一つ前にサンプリングされた電位を差し引いて得られる差分を、乱数値として取得するという点にある。第１の実施形態を示した図１は、この考え方をコンピュータを使ってソフトウェア的に実現するためのブロック図であり、図２は、図１のブロック図で実現するアルゴリズムを示したフローチャートである。
【００１７】
図１において、ノイズ源Ｒ１は、例えば熱雑音によって出力レベルがランダムに変動する微少電圧を出力する抵抗や半導体などからなる熱雑音素子である。この熱雑音素子Ｒ１からの出力は、アナログ／ディジタルコンバータ（Ａ／Ｄコンバータ）２０に入力される。なお、必要に応じて、熱雑音素子Ｒ１からの出力を増幅するためのアンプを、熱雑音素子Ｒ１とＡ／Ｄコンバータ２０との間に挿入してもよい。Ａ／Ｄコンバータ２０は、Ｒ１からの出力電圧を一定周期でサンプリングし、ディジタル値に変換する。マイコン２２は、Ａ／Ｄコンバータ２０が出力するディジタル値を後述のようにソフトウェア的に処理することで、乱数を出力する。なお、Ａ／Ｄコンバータ２０がサンプリングを行う周期は、ノイズ源Ｒ１からの出力される信号レベルの変動の周波数に応じた適切な値とする。
【００１８】
マイコン２２は、図２に示した処理を行う。まず、変数ＣＲＲ、ＰＲＶを予め用意しておく。ここで、変数ＣＲＲは、現在時点においてサンプリングされたノイズの電圧値を示し、変数ＰＲＶは、一つ前にサンプリングされたノイズの電圧値を示している。最初にＰＲＶに値「０」を代入する（ステップ１０１）。続いて、最初のノイズの電圧のアナログ値をＡ／Ｄコンバータ２０でサンプリングしてディジタル値に変換し（Ｓ１０２）、このディジタル値を変数ＣＲＲに代入する（Ｓ１０３）。そして、ＣＲＲの値からＰＲＶの値を引き算し、その結果を乱数値として出力する（Ｓ１０４）。最後にこれまでＣＲＲに代入されていた値を変数ＰＲＶに代入する（Ｓ１０５）。
【００１９】
図２において、当初におけるＰＲＶの値は「０」であるから最初の乱数値は、そのときのＣＲＲの値そのものであるが、次回以降は、現時点においてサンプリングされた電圧値から前回にサンプリングされた電圧値を差し引いた値が乱数値として出力される。すなわち、前回のサンプリング時点からの変化分だけを乱数値として利用する。このため、たとえ現時点における電圧値に、前回のランプリング時点における電圧の影響があったとしても、図２のような処理を行うことによって、今回のサンプリングにおいて想定される前回のランプリング時点における電圧の影響を排除することができ、完全に独立した事象に基づいて乱数を得ていることになる。したがって、得られる乱数の真正度が高く、より質の高い乱数が得られる。
【００２０】
［第２実施形態］
図３は、本発明の第２の実施形態である、ハードウェア的に乱数を取得する回路のブロック図である。同図において、Ｒ１は、図１と同様、熱雑音によってランダムに変動する微少電圧を出力する抵抗や半導体などからなる熱雑音素子である。図３において、ＳＷ１、ＳＷ２はそれぞれ、不図示のクロック発生回路からのクロック信号φ１、φ２がハイ（Ｈ）レベルのときにオンとなり、ロー（Ｌ）レベルのときオフとなるスイッチである。Ｃ１、Ｃ２はコンデンサであり、２４はゲイン（増幅度）が１倍のアンプであり、２６は不図示のクロック信号φ３の立ち上がりで動作するＡ／Ｄコンバータである。
【００２１】
φ１がＨレベルのときにスイッチＳＷ１はオンとなり、コンデンサＣ１の両端の電圧は、その時点におけるノイズ源Ｒ１の出力電圧と等しくなる。φ１がＬレベルとなってスイッチＳＷ１がオフになると、コンデンサＣ１は、スイッチＳＷ１がオフとなった時点におけるノイズ源Ｒ１の電圧を保持する。すなわちＣ１の電圧は、クロック信号φ１の立ち下がりのタイミングでＲ１の電圧をサンプリングする。
【００２２】
クロック信号φ２がＨレベルのときはＳＷ２がオンとなり、このときコンデンサＣ２はアンプ２４の出力によって充電され、その両端間電圧はアンプ２４の出力電圧に等しくなる。スイッチＳＷ２がオフになると、コンデンサＣ２の両端間には、スイッチＳＷ２が前回オンとなったときにアンプ２４の出力によって充電されたときの電位差が保持される。したがって、このときＡ／Ｄコンバータ２６の入力には、アンプ２４の出力電圧からコンデンサＣ２の両端間の電圧を差し引いた電圧が入力される。この状態でクロック信号φ３が立ち上がると、Ａ／Ｄコンバータ２６は、この電圧値のサンプリングとＡ／Ｄ変換を行い、こうして得られるディジタル値を乱数値として出力する。
【００２３】
図４は、図３に示したノイズ源Ｒ１の出力電圧からクロック信号φ１、φ２、φ３を制御して乱数値を取り出すタイミングを示したタイミングチャートであり、図５は、図４（ａ）に示したクロック信号φ１、φ２、φ３の点線で囲んだ部分だけを時間的に拡大して示した図である。図４において、（ｂ）はノイズ源Ｒ１の出力電圧を示しており、ここに示すように、Ｒ１の出力レベルは物理現象に基づいて不規則に変動する。（ｃ）は、（ｂ）のように変動する電圧値に基づいて、ある時点のサンプリング電圧から１つ前のサンプリング電圧を差し引いた値が乱数値として出力される様子を示している。
【００２４】
このように、ある時点のサンプリング電圧から１つ前のサンプリング電圧を差し引くことにより、たとえ現時点における電圧値に、前回のランプリング時点における電圧の影響があったとしても、今回のサンプリングにおいて想定される前回のランプリング時点における電圧の影響を排除することができ、完全に独立した事象に基づいて乱数を得ることができる。
【００２５】
［第３実施形態］
これまでの実施形態では、サンプルされた電位から一つ前にサンプルされた電位を差し引いて得られる差分を乱数値として出力したが、本実施形態では、サンプルされた電位から一つ前にサンプルされた電位を差し引いて得られる差分が所定の閾値を超えたときに、その時点から次ぎに閾値を超えるまでの時間を計測し、この時間値を乱数値として出力する。図６は、この第３実施形態の考え方をマイコンなどでソフトウェア的に実現するアルゴリズムを示したフローチャートである。なお、ハードウェア的には図１と同様の構成となる。
【００２６】
図６において、まず、変数ＣＲＲ、ＰＲＶ、ＴＨを予め用意しておく。ここで、変数ＣＲＲは、現在時点においてサンプリングされたノイズの電圧値を示し、変数ＰＲＶは、一つ前にサンプリングされたノイズの電圧値を示し、ＴＨは予め決定しておく閾値を示している。最初にＰＲＶに値「０」を、またＴＨに予め決定した当該閾値を代入する（ステップ６０１）。続いて、最初のノイズの電圧のアナログ値をＡ／Ｄコンバータ２０でサンプリングしてディジタル値に変換し（Ｓ６０２）、このディジタル値を変数ＣＲＲに代入する（Ｓ６０３）。そして、ＣＲＲの値からＰＲＶの値を引き算し、その差が閾値ＴＨよりも大きいか否かを判定する（Ｓ６０４）。これが閾値ＴＨよりも小さい場合（Ｓ６０４でＮｏの場合）は「現象なし」とする（Ｓ６０５）。一方、閾値ＴＨよりも大きい場合（Ｓ６０５でＹｅｓの場合）は「現象あり」とする（Ｓ６０６）。この「現象あり」の場合には、「現象あり」のサンプリング期間が継続する数をカウントする（Ｓ６０７）。例えば、例えば、この「現象あり」の期間が１０サンプリング期間継続し、次のサンプリング期間で「現象なし」となった場合には、値１０を乱数として出力する。「最後にこれまでＣＲＲに代入されていた値を変数ＰＲＶに代入する（Ｓ１０５）。
【００２７】
図６に示すアルゴリズムを実行すると、「現象あり」のサンプリング期間同士は互いに独立した事象と考えることができ、また、最初にある時点のサンプリング電圧から１つ前のサンプリング電圧を差し引いているので、直前の影響は排除されており、したがってこれが継続するサンプリング期間の数は真正度の高い乱数となる。
【００２８】
［第４実施形態］
図７は、本発明の第４の実施形態である、ハードウェア的に乱数を取得する回路のブロック図である。本実施形態の考え方は、基本的に第３実施形態のそれと同じである。図７において、図３の回路と同様の構成部分には同一の符号を付し、その説明を省略する。符号２８はコンパレータ、符号３０はコンパレータ２６の閾値を設定するためのＤ／Ａコンバータ、符号３２はクロック信号φ３の立ち上がりで動作するＤフリップ・フロップをそれぞれ示している。
【００２９】
図７において、クロック信号φ１がＨレベルのときにスイッチＳＷ１はオンとなり、コンデンサＣ１の両端の電圧は、その時点におけるノイズ源Ｒ１の出力電圧と等しくなる。φ１がＬレベルとなってスイッチＳＷ１がオフになると、コンデンサＣ１は、スイッチＳＷ１がオフとなった時点におけるノイズ源Ｒ１の電圧を保持する。すなわちＣ１の電圧は、クロック信号φ１の立ち下がりタイミングでＲ１の電圧をサンプリングする。
【００３０】
クロック信号φ２がＨレベルのときはＳＷ２がオンとなり、このときコンデンサＣ２はアンプ２４の出力によって充電され、その両端間電圧はアンプ２４の出力電圧に等しくなる。スイッチＳＷ２がオフになると、コンデンサＣ２の両端間には、スイッチＳＷ２が前回オンとなったときにアンプ２４の出力によって充電されたときの電位差が保持される。したがって、このときコンパレータ２８の非反転（＋）入力には、アンプ２４の出力電圧からコンデンサＣ２の両端間の電圧を差し引いた電圧が入力される。コンパレータ２８の反転（−）入力には、Ｄ／Ａコンバータ３０から閾値が入力されている。
【００３１】
コンパレータ２８は、非反転入力の値が反転入力の値よりも大きいときにＨレベルの信号を出力し、これはＤフリップ・フロップ３２にデータ入力端子に入力される。Ｄフリップ・フロップ３２は、クロック信号φ３が立ち下がる時点においてデータ入力端子に入力されている入力データを出力する。また、クロック信号φ２がＨレベルになるとスイッチＳＷ２はオンとなり、そのときコンデンサＣ２の両端間の電圧はアンプ２４の出力電圧と同じくなる。
【００３２】
図８は、図７に示したノイズ源Ｒ１の出力電圧からクロック信号φ１、φ２、φ３を制御して乱数値を取り出すタイミングを示したタイミングチャートである。φ１、φ２、φ３相互の時間的な関係は、図５と同様である。図８において、（ａ）〜（ｃ）は、図４（ａ）〜（ｃ）と同じである。図８（ｄ）はコンパレータ２８の出力信号を示しており、コンパレータ２８の入力が閾値ＴＨよりも大きいときのみＨレベルとなっている。この（ｄ）に示す信号の時間幅は、Ｒ１の出力電圧が物理現象に基づいて不規則に変動することに起因して不規則な長さとなる。また、最初にある時点のサンプリング電圧から１つ前のサンプリング電圧を差し引いているので、直前の影響は排除されている。したがってこの時間幅（Ｈレベルとなっている連続するサンプリング時間）をカウントし、これを乱数として出力することにより、真正度の高い乱数が得られる。
【符号の説明】
【００３３】
２０、２６、３０    Ａ／Ｄコンバータ
２２    マイコン
２４    アンプ
２８    コンパレータ
３２    Ｄフリップ・フロップ
【図１】
2011238268.tif 000003
【図２】
2011238268.tif 000004
【図３】
2011238268.tif 000005
【図４】
2011238268.tif 000006
【図５】
2011238268.tif 000007
【図６】
2011238268.tif 000008
【図７】
2011238268.tif 000009
【図８】
2011238268.tif 000010