(57)【要約】【課題】真性乱数生成器の実装面積あたりのスループットを悪化させずに、生成される乱数品質を向上させることが可能な、オシレータのゆらぎ増幅装置を提供する。【解決手段】本発明に係る、２つの入力信号間の時間の変動であるゆらぎを増幅するゆらぎ増幅装置１００は、２つの入力信号が入力され、２つの入力信号とは異なる外部信号である制御信号によって定まる第１の遅延時間だけ２つの入力信号の各々を遅延させて出力する可変バッファ１０１と、可変バッファ１０１へ制御信号を出力することで、第１の遅延時間を制御する遅延制御部１０２とを備える。【選択図】図４
2012155388.tif 000002
【特許請求の範囲】
【請求項１】
２つの入力信号間の時間の変動であるゆらぎを増幅するゆらぎ増幅装置であって、
前記２つの入力信号が入力され、前記２つの入力信号とは異なる外部信号である制御信号によって定まる第１の遅延時間だけ前記２つの入力信号の各々を遅延させて出力する可変バッファと、
前記可変バッファへ、前記制御信号を出力することで、前記第１の遅延時間を制御する遅延制御部とを備える
ゆらぎ増幅装置。
【請求項２】
前記遅延制御部は、前記２つの入力信号間の時間が短いほど、前記２つの入力信号のうち後の入力信号の、前記可変バッファによる前記第１の遅延時間が、より小さくなるように、前記制御信号を出力する
請求項１に記載のゆらぎ増幅装置。
【請求項３】
前記遅延制御部は、前記２つの入力信号のうち先の入力信号を取得してから、事前に定められた第２の遅延時間が経過した後に、前記制御信号を出力し、
前記第２の遅延時間は、前記２つの入力信号のうち後の入力信号が前記可変バッファに入力されて以後、出力されるまでの間に、前記先の入力信号に対応する前記制御信号が出力されるように定められる
請求項２に記載のゆらぎ増幅装置。
【請求項４】
前記可変バッファは、第１の動作モードと、前記第１の動作モードよりも遅延時間の大きい第２の動作モードとを有し、前記制御信号を取得すると、前記第１の動作モードから前記第２の動作モードへと動作モードを切り替える
請求項１〜３のいずれか１項に記載のゆらぎ増幅装置。
【請求項５】
前記可変バッファは、直列に接続された複数の遅延素子を備え、
前記複数の遅延素子の各々は、前記可変バッファが（Ａ）前記第１の動作モードの場合には、前記入力信号を第３の遅延時間だけ遅延させて伝播させ、（Ｂ）前記第２の動作モードの場合には、前記入力信号を前記第３の遅延時間よりも大きい第４の遅延時間だけ遅延させて伝播させる
請求項４に記載のゆらぎ増幅装置。
【請求項６】
前記可変バッファは、前記第１の動作モードでは、前記第２の動作モードよりも高い電源電圧を前記複数の遅延素子の各々に印加して動作させる
請求項５に記載のゆらぎ増幅装置。
【請求項７】
請求項１〜請求項６のいずれか１項に記載のゆらぎ増幅装置と、
前記ゆらぎを乱数に変換して出力する乱数変換装置とを備える
真性乱数生成器。
【請求項８】
前記乱数変換装置は、
高速発振信号を出力する高速オシレータと、
前記高速発振信号よりも周期の長い発振信号である低速発振信号を出力する低速オシレータと、
前記低速発振信号をクロックとして使用することで前記高速発振信号の値をサンプリングし、前記サンプリングされた値と、事前に定められた閾値との大小を比較することで、前記サンプリングされた値を２値化し、２値化された値を出力するサンプル装置とを備える
請求項７に記載の真性乱数生成器。
【請求項９】
２つの入力信号間の時間の変動であるゆらぎを増幅する集積回路であって、
前記２つの入力信号が入力され、前記２つの入力信号とは異なる外部信号である制御信号によって定まる第１の遅延時間だけ前記２つの入力信号の各々を遅延させて出力する可変バッファと、
前記可変バッファへ、前記制御信号を出力することで、前記第１の遅延時間を制御する遅延制御部とを備える
集積回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ゆらぎ増幅装置に関し、特に、真性乱数の生成に用いられるオシレータのゆらぎ増幅装置に関する。
【背景技術】
【０００２】
乱数の生成技術は、高いセキュリティ性能を有する暗号の実現に不可欠な基盤技術として重要である。
【０００３】
一般に、乱数は、（１）疑似乱数、又は、（２）真性乱数に分類される。
【０００４】
疑似乱数は、計算機で実行可能な疑似乱数の生成アルゴリズム（例えば、非特許文献１を参照）に初期値を与えることで、確定的に算出される周期的な数列である。よって、疑似乱数は再現性を有し、再現性が重要となるコンピュータシミュレーション等において、広く利用されている。
【０００５】
しかし、再現性を有することは、セキュリティ分野への適用においては好ましくない。例えば、暗号化された通信を傍受する第三者は、通信の送信装置が使用する疑似乱数の生成アルゴリズムと、送信装置の内部状態を知ることで、以後、全ての疑似乱数を知ることができ、暗号化された通信を復号できてしまう。
【０００６】
そこで、高いセキュリティを実現するためには、再現性を有しない乱数列が必要とされる。こうした真性乱数を得る手段として、通常、専用のハードウェア（以後、真性乱数生成器とよぶ）が使用される。
【０００７】
真性乱数生成器としては、ユーザーのマウスの動作を用いるもの（非特許文献２を参照）、アメリシウムの崩壊を利用するもの（非特許文献３参照）、オシレータの周期ゆらぎを用いるもの（非特許文献４参照）等が知られている。
【０００８】
この中で、オシレータの周期ゆらぎを用いるもの（非特許文献４；以後、オシレータサンプリング方式という）は、高速と低速の２つのオシレータを使用し、内部雑音により生じるオシレータの周期ゆらぎを利用して乱数列を生成する。この方式は、実装が容易であり、実装面積を小さくでき、かつ、消費電力が小さいという利点が知られている。こうした利点は、例えば、真性乱数生成器をモバイル端末等へ実装する際には不可欠となる。
【先行技術文献】
【非特許文献】
【０００９】
【非特許文献１】M. Matsumoto and T. Nishimura, “Mersenne twister: a 623-dimensionally equidistributed uniform pseudorandom number generator”, ACM transaction on modeling and computer simulation, Jan., 1998, vol. 8, no. 1, p. 3-30
【非特許文献２】Y. Hu, X. Liao, K. Wong and Q. Zhou, “A true random number generator based on mouse movement and chaotic cryptography”, Chaos, Solitons & Fractals, Oct. 2007
【非特許文献３】M. Rohe, “A true-random generator based on radioactive decay”, security and cryptography research group, saarlanduniversity, 2003
【非特許文献４】B. Jun and P. Kocher, “The Intel random number generator”, cryptography research inc., white paper prepared for Intel corporation, Apr., 1999
【発明の概要】
【発明が解決しようとする課題】
【００１０】
しかしながら、従来、オシレータサンプリング方式により生成される乱数の統計的なランダム性（すなわち、乱数の品質）は低く、実用に耐えうる品質の乱数を生成させるためには、実装面積あたりの乱数生成のスループットを悪化させざるを得ないという課題があった。
【００１１】
具体的には、オシレータサンプリング方式により生成される乱数の品質を向上させるためには、（１）真性乱数生成器により生成された乱数列に対して、後から情報処理を施すことで乱数品質を向上させる、（２）オシレータの周期ゆらぎを大きくすることで真性乱数生成器により生成される乱数の品質を向上させる、という２つの手段が考えられる。
【００１２】
また、オシレータの周期ゆらぎを大きくするためには、（２−ａ）オシレータの出力側に長いインバータチェーンを追加する、（２−ｂ）オシレータの出力側に分周期を追加する、という２つの具体的手段が知られている。
【００１３】
しかし、（１）の乱数列に後処理を施す手段では、利用可能な品質の乱数を生成しようとすると、乱数生成のスループットが著しく（数分の一にまで）低下する。
【００１４】
また、（２−ａ）のインバータチェーンを用いる手段では、乱数生成のスループットは低下しないものの、周期ゆらぎをＡ倍にするために必要なオシレータの（すなわち、真性乱数生成器の）実装面積は、Ο（Ａ２）倍となる。
【００１５】
さらにまた、（２−ｂ）の分周期を用いる手段では、オシレータの実装面積は、ほぼ変わらないものの、周期ゆらぎをＡ倍にするためには、乱数生成のスループットが、Ο（１／Ａ２）となる。
【００１６】
したがって、いずれの手段を用いたとしても、実装面積あたりの乱数生成のスループットは、著しく悪化してしまう。その結果、実用上必要な品質及び乱数生成のスループットを満たそうとすると、真性乱数生成器の消費電力が増える。その結果、例えば、前述したようなモバイル端末等の小型の電子機器への真性乱数生成器の組み込みが困難となる。
【００１７】
そこで、本発明は、真性乱数生成器の実装面積あたりのスループットを悪化させずに、生成される乱数品質を向上させることが可能な、オシレータのゆらぎ増幅装置を提供することを目的とする。
【課題を解決するための手段】
【００１８】
本発明のある局面に係るゆらぎ増幅装置は、２つの入力信号間の時間の変動であるゆらぎを増幅するゆらぎ増幅装置であって、２つの入力信号が入力され、２つの入力信号とは異なる外部信号である制御信号によって定まる第１の遅延時間だけ２つの入力信号の各々を遅延させて出力する可変バッファと、可変バッファへ、制御信号を出力することで、第１の遅延時間を制御する遅延制御部とを備える。
【００１９】
この構成によると、入力信号が可変バッファに入力されてから出力されるまでの時間が入力信号ごとに異なる。その結果、ゆらぎ増幅装置から出力される入力信号のゆらぎは、ゆらぎ増幅装置へ入力される以前と比較して、大きくなる。また、この構成では分周器を使用しないため、乱数生成のスループットが悪化せず、かつ、長いインバータチェーンを使用しないため、実装面積が抑えることができる。したがって、真性乱数生成器の実装面積あたりのスループットを悪化させずに、生成される乱数品質を向上させることが可能な、オシレータのゆらぎ増幅装置を提供できる。
【００２０】
具体的には、遅延制御部は、２つの入力信号間の時間が短いほど、２つの入力信号のうち後の入力信号の、可変バッファによる第１の遅延時間が、より小さくなるように制御信号を出力してもよい。
【００２１】
これにより、ゆらぎの影響で定刻（すなわち、仮に入力信号にゆらぎがないとした場合に、入力信号が入力されるべき時刻）よりも早く可変バッファに入力された入力信号は、より早く出力され、定刻よりも遅く可変バッファに入力された入力信号は、より遅く出力される。その結果、入力信号のゆらぎが増幅されて出力される。
【００２２】
また、遅延制御部は、２つの入力信号のうち先の入力信号を取得してから、事前に定められた第２の遅延時間が経過した後に、制御信号を出力し、第２の遅延時間は、２つの入力信号のうち後の入力信号が可変バッファに入力されて以後、出力されるまでの間に、先の入力信号に対応する制御信号が出力されるように定められるとしてもよい。
【００２３】
また、可変バッファは、第１の動作モードと、第１の動作モードよりも遅延時間の大きい第２の動作モードとを有し、制御信号を取得すると、第１の動作モードから第２の動作モードへと動作モードを切り替えるとしてもよい。
【００２４】
この構成によると、より早く入力された入力信号ほど、より長い時間、遅延時間の小さい第１の動作モードで動作する可変バッファ内を伝播される。逆に、より遅く入力された入力信号ほど、より長い時間、遅延時間の大きい第２の動作モードで動作する可変バッファ内を伝播される。よって、ゆらぎの影響で定刻よりも早く可変バッファに入力された入力信号は、より早く出力され、定刻よりも遅く可変バッファに入力された入力信号は、より遅く出力される。その結果、入力信号のゆらぎが増幅されて出力される。
【００２５】
具体的には、可変バッファは、直列に接続された複数の遅延素子を備え、複数の遅延素子の各々は、可変バッファが（Ａ）第１の動作モードの場合には、入力信号を第３の遅延時間だけ遅延させて伝播させ、（Ｂ）第２の動作モードの場合には、入力信号を第３の遅延時間よりも大きい第４の遅延時間だけ遅延させて伝播させるとしてもよい。
【００２６】
より具体的には、可変バッファは、第１の動作モードでは、第２の動作モードよりも高い電源電圧を複数の遅延素子の各々に印加して動作させてもよい。
【００２７】
本発明の他の局面に係る真性乱数生成器は、高速発振信号を出力する高速オシレータと、高速発振信号よりも周期の長い発振信号である低速発振信号を出力する低速オシレータと、低速発振信号をクロックとして使用することで高速発振信号の値をサンプリングし、サンプリングされた値と、事前に定められた閾値との大小を比較することで、サンプリングされた値を２値化し、２値化された値を出力するサンプル装置とを備える。
【００２８】
この構成によると、オシレータが出力する発振信号のゆらぎを実装面積の小さいゆらぎ増幅装置を用いて増幅することで、真性乱数生成器の実装面積あたりのスループットを悪化させずに、生成される乱数品質を向上させることができる。
【００２９】
なお、本発明は、このようなゆらぎ増幅装置として実現できるだけでなく、ゆらぎ増幅装置に含まれる特徴的な手段をステップとするゆらぎ増幅方法として実現したり、そのような特徴的なステップをコンピュータに実行させるプログラムとして実現したりすることもできる。そして、そのようなプログラムは、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）等の記録媒体及びインターネット等の伝送媒体を介して流通させることができるのはいうまでもない。
【００３０】
さらに、本発明は、このようなゆらぎ増幅装置の機能の一部又は全てを実現する半導体集積回路（ＬＳＩ）として実現したり、このようなゆらぎ増幅装置を含む真性乱数生成器として実現したりできる。
【発明の効果】
【００３１】
以上より、本発明は、真性乱数生成器の実装面積あたりのスループットを悪化させずに、生成される乱数品質を向上させることが可能な、オシレータのゆらぎ増幅装置を提供できる。
【図面の簡単な説明】
【００３２】
【図１】関連技術に係る真性乱数生成器の概念図である。
【図２】同時刻における高速発振信号の波形と低速発振信号の波形とを比較する概念図である。
【図３】実施の形態に係るゆらぎ増幅装置を備える、真性乱数生成器の構成を示すブロック図である。
【図４】実施の形態に係るゆらぎ増幅装置の構成を示すブロック図である。
【図５】実施の形態に係る可変バッファの動作を説明する概念図である。
【図６】通常の遅延バッファの機能を説明する図である。
【図７】実施の形態に係る可変バッファの機能を説明する第１の図である。
【図８】実施の形態に係るゆらぎ増幅装置の処理の流れを示すフローチャートである。
【図９】実施の形態に係る遅延制御部の処理の流れを示すフローチャートである。
【図１０】実施の形態に係るゆらぎ増幅装置の実装例を示す図である。
【図１１】実施の形態に係る可変バッファの機能を説明する第２の図である。
【図１２】実施の形態に係るゆらぎ増幅装置を備える真性乱数生成器を実装したチップの外観図である。
【図１３】半導体チップ上に実装されたゆらぎ増幅装置によるゆらぎの利得を示す図である。
【図１４】半導体チップ上に実装された真性乱数生成器により生成された乱数列の品質評価結果を示す図である。
【図１５】実施の形態に係るゆらぎ増幅装置による、乱数生成における面積あたりスループットの改善効果を示す図である。
【発明を実施するための形態】
【００３３】
まず、図１及び図２を用いて、オシレータサンプリング方式を用いた乱数の生成方法を説明する。
【００３４】
図１は、関連技術に係る真性乱数生成器９００の概念図である。真性乱数生成器９００は、オシレータサンプリング方式を用いて、乱数を生成する。
【００３５】
図１に示されるように、真性乱数生成器９００は、高速オシレータ１１０と、低速オシレータ１２０と、サンプル装置１３０とを備える。
【００３６】
高速オシレータ１１０は、後述する低速オシレータよりも高速な（すなわち、周期の短い）発振信号を出力する発振回路である。
【００３７】
低速オシレータ１２０は、高速オシレータ１１０よりも低速な（すなわち、周期の長い）発振信号を出力する発振回路である。
【００３８】
サンプル装置１３０は、高速オシレータ１１０から出力される高速発振信号１１１の値を、低速オシレータ１２０から出力される低速発振信号１２１のタイミングでサンプリングし、その結果を、例えば、１又は０として２値化したものを乱数として順次出力する。
【００３９】
図２は、同時刻における高速発振信号１１１の波形と低速発振信号１２１の波形とを比較する概念図である。図２に示されるように、周期信号である高速発振信号１１１及び低速発振信号１２１は、Ｌｏｗ又はＨｉｇｈのいずれかの値を交互にとる。
【００４０】
オシレータから出力される発振信号の周期には、ゆらぎが存在する。ここで、ゆらぎとは、発振信号に含まれる「連続する」２つの入力信号間の時間の変動をいう。
【００４１】
なお、以後、「発振信号」という用語は、連続した複数の信号の総称として用いる。一方、「入力信号」という用語は、発振信号に含まれる個々の入力信号の意味で用いる。
【００４２】
なお、ここでいう「連続する」２つの入力信号とは、必ずしも発振信号において連続して出現する２つの入力信号である必要はない。例えば、発振信号から奇数個又は偶数個ごとにサンプリングされた入力信号のうち隣接する信号でもよく、複数の入力信号に演算処理を施すことで新たに生成される信号のうち隣接する信号でもよい。すなわち、オシレータから出力される発振信号に対して、事前に定められた任意の処理を加えることで一意に特定される信号列において連続する状態を、以後「連続する」と記載する。
【００４３】
また、発振信号に含まれる「入力信号」は、例えば、発振信号における立ち上がり又は立ち下がりをもって特定されてもよい。また、発振信号の値が事前に定められた閾値以上変動することをもって「入力信号」が特定されてもよい。本実施の形態においては、発振信号における立ち上がり部分を、入力信号として特定する。このとき、図２を参照して、時刻ｔ０で立ち上がった入力信号５５１が、次に立ち上がる時刻は、一定の範囲で不確定にばらつく。例えば、時刻ｔ１で再度立ち上がった場合、連続する入力信号である入力信号５５１から入力信号５５２までの時間はＴ１である。一方、時刻ｔ２で再度立ち上がった場合、入力信号５５１から入力信号５５２までの時間はＴ２である。このＴ１とＴ２との差が、ゆらぎである。
【００４４】
また、ゆらぎは、発振回路の内外に常に存在するノイズ（例えば、熱雑音、ショット雑音、外部雑音等）に起因する。よって、高速発振信号１１１もゆらぎを有する。しかし、高速発振信号１１１のゆらぎは等価的に低速発振信号１２１のゆらぎに換算して考えることができる。よって、以後説明のため、特に断らない場合には、低速発振信号１２１に含まれるゆらぎのみに着目して説明する。
【００４５】
再度、図２を参照して、低速発振信号１２１が時刻ｔ１で立ち上がった場合、対応する高速発振信号１１１の値はＬｏｗである。このとき、サンプル装置１３０は０を出力する。また、低速発振信号１２１が時刻ｔ２で立ち上がった場合、対応する高速発振信号１１１の値はＨｉｇｈである。このとき、サンプル装置１３０は１を出力する。
【００４６】
このように、低速発振信号１２１がゆらぎを有するため、サンプル装置１３０の出力結果が変化する。これが、オシレータサンプリング方式を用いた乱数の生成原理である。
【００４７】
ここで、低速発振信号１２１に含まれるゆらぎが小さいと、サンプル装置１３０は、ほぼ等間隔クロックで高速発振信号１１１をサンプルすることになり、サンプル装置１３０から出力される乱数の一様性が低下し、乱数の品質が低下する。
【００４８】
以下、真性乱数生成器の実装面積あたりのスループットを悪化させずに、生成される乱数品質を向上させることが可能な、本発明に係るゆらぎ増幅装置１００について説明する。
【００４９】
図３は、本発明の実施の形態に係るゆらぎ増幅装置１００を備える、真性乱数生成器２００の構成を示すブロック図である。真性乱数生成器２００は、オシレータサンプリング方式により真性乱数を生成する。
【００５０】
図３に示されるように、真性乱数生成器２００は、ゆらぎ増幅装置１００と、乱数変換装置１９０とを備える。
【００５１】
ゆらぎ増幅装置１００は、２つの入力信号間の時間の変動であるゆらぎを増幅する。具体的には、低速オシレータ１２０が出力する低速発振信号１２１を取得し、低速発振信号１２１に含まれるゆらぎを増幅させた信号である増幅発振信号１２２を出力する。詳細は後述する。
【００５２】
乱数変換装置１９０は、ゆらぎ増幅装置１００から出力されるゆらぎを乱数に変換して出力する。乱数変換装置１９０は、高速オシレータ１１０と、低速オシレータ１２０と、サンプル装置１３０とを備える。
【００５３】
高速オシレータ１１０は、高速発振信号１１１を出力するオシレータである。高速オシレータ１１０は、任意の発振回路を使用することにより実現できるが、例えば、水晶振動子等の固体振動子を用いた発振回路、コンデンサと抵抗を用いたＣＲ発振回路、コイルとコンデンサを用いたＬＣ発振回路等、リングオシレータなどで実現できる。
【００５４】
本実施の形態においては、リングオシレータを使用する。
【００５５】
リングオシレータは、奇数段の論理ゲート（例えば、ＮＯＴゲート）がリング状に結合された構成を有する発振回路である。リングオシレータは、ノイズによる位相のずれが蓄積されるため、個体振動子を用いた発振回路や、ＣＲ回路等の共振現象を利用した発振回路等と比較し、発振信号に含まれるゆらぎが大きくなる性質を有する。前述のように、オシレータサンプリング方式を用いた乱数生成においては、ゆらぎがもつランダム性から乱数を生成するため、発振回路として、例えばリングオシレータが適する。
【００５６】
低速オシレータ１２０は、高速発振信号１１１よりも周期の長い発振信号である低速発振信号１２１を出力するオシレータである。低速オシレータ１２０としては、高速オシレータ１１０と同様、任意の発振回路を使用できるが、高速オシレータ１１０と同様の理由により、例えばリングオシレータを使用することが好ましい。
【００５７】
サンプル装置１３０は、低速発振信号をクロックとして使用することで高速発振信号の値をサンプリングする。さらに、サンプリングされた値と、事前に定められた閾値との大小を比較することで、サンプリングされた値を２値化し、２値化された値を出力する。
【００５８】
例えば、サンプル装置１３０としてＤフリップフロップ回路を使用してもよい。データ信号として高速発振信号１１１を、クロック信号として低速発振信号１２１をＤフリップフロップ回路へ入力した場合の出力が、真性乱数生成器２００が生成する乱数列となる。
【００５９】
図４は、本実施の形態に係るゆらぎ増幅装置の構成を示すブロック図である。
【００６０】
図４に示されるように、ゆらぎ増幅装置１００は、可変バッファ１０１と、遅延制御部１０２とを備える。
【００６１】
可変バッファ１０１は、本来は周期性を有するが、その周期がゆらぐ２つの入力信号が入力されると、２つの入力信号とは異なる外部信号である制御信号によって定まる第１の遅延時間だけ２つの入力信号の各々を遅延させて出力する、一種のディレイ回路である。可変バッファ１０１は、例えば、直列に接続された複数の遅延素子を備える構成として実現できる。遅延素子としては、例えばトランジスタを使用すること等が考えられる。
【００６２】
可変バッファ１０１は、第１の動作モードと、第１の動作モードとは遅延時間の異なる第２の動作モードとを有し、後述する遅延制御部１０２から出力される制御信号を取得すると、第１の動作モード及び第２の動作モードのうちの一方から、他方へと切り替える。例えば、可変バッファ１０１は、遅延制御部１０２から出力される制御信号を取得すると、第１の動作モードから第２の動作モードへと、動作モードを切り替える。
【００６３】
ここでは、可変バッファ１０１が備える複数の遅延素子の各々は、可変バッファ１０１が第１の動作モードの場合には、入力信号を第３の遅延時間だけ遅延させて、次の遅延素子へと伝播させるとする。また、第２の動作モードの場合には、入力信号を第３の遅延時間よりも大きい第４の遅延時間だけ遅延させて伝播させるとする。すなわち、可変バッファ１０１が有する複数の遅延素子１０６の各々は、第１の動作モードによる動作時の方が、第２の動作モードによる動作時と比較し、より高速に入力信号を伝播させる。以上のことから、以後、第１の動作モードを高速バッファモード５０１ともよび、第２の動作モードを低速バッファモード５０２ともよぶ。
【００６４】
より具体的には、可変バッファ１０１は、第１の動作モードでは、第２の動作モードよりも高い電源電圧を複数の遅延素子の各々に印加して動作させることで、伝達速度を変更する。より詳細には後述する。
【００６５】
遅延制御部１０２は、可変バッファ１０１へ制御信号を出力することで、第１の遅延時間を制御する。具体的には、遅延制御部１０２は、入力信号が可変バッファ１０１に入力されて以後、出力されるまでに制御信号１２３を可変バッファ１０１へ出力することにより、ゆらぎを増幅する。
【００６６】
例えば、遅延制御部１０２は、（１）入力信号が可変バッファ１０１へ入力されると、可変バッファ１０１の動作モードを高速バッファモード５０１に設定し、（２）その後、入力信号が、可変バッファ１０１の内部を伝達されている間に、可変バッファ１０１の動作モードを低速バッファモード５０２へ切り替えるための制御信号１２３を出力することが考えられる。
【００６７】
図５は、本実施の形態に係る可変バッファ１０１の動作を説明する概念図である。
【００６８】
前述の通り、本実施の形態に係る可変バッファ１０１は、第１の動作モード（高速バッファモード５０１ともいう）と、第２の動作モード（低速バッファモード５０２ともいう）の２つの動作モードを有する。
【００６９】
高速バッファモード５０１と低速バッファモード５０２との違いは、可変バッファ１０１に入力された入力信号が出力されるまでの時間である。すなわち、高速バッファモード５０１における遅延素子１０６の方が、低速バッファモード５０２における遅延素子１０６よりも速く、取得した入力信号を次の遅延素子に伝播させる。
【００７０】
図５に示されるように、高速バッファモード５０１と低速バッファモード５０２とは、遅延制御部１０２から可変バッファ１０１へ送信される制御信号によって、切り替えられる。具体的には、高速バッファモード５０１で動作する可変バッファ１０１が、遅延制御部１０２から送信された制御信号１２３ａを受信すると、可変バッファ１０１は、自身が備える複数の遅延素子１０６の各々が、次の遅延素子へ信号を伝播させる速度を、一斉に速くする。逆に、低速バッファモード５０２で動作する可変バッファ１０１が、遅延制御部１０２から送信された制御信号１２３ｂを受信すると、可変バッファ１０１は、自身が備える複数の遅延素子１０６の各々が、次の遅延素子へ信号を伝播させる速度を、一斉に遅くする。
【００７１】
この可変バッファ１０１を用いて、本実施の形態に係るゆらぎ増幅装置１００が、入力信号のゆらぎを増幅する仕組みについて、図６〜図７を用いて説明する。
【００７２】
図６は、従来の（遅延時間が変化しない）遅延バッファの機能を説明する図である。
【００７３】
図６に示されるように、時刻４０３に立ち上がる入力信号Ｓ１を遅延バッファに入力すると、時刻４０４に入力信号Ｓ１が遅延バッファから出力される。すなわち、遅延バッファは、時間４０５だけ、入力信号を遅延させて出力する。
【００７４】
次に、時刻４０３よりも早い時刻４０８に立ち上がる入力信号Ｓ２を、同じ遅延バッファに入力した場合、時刻４０９に入力信号Ｓ２が遅延バッファから出力される。すなわち、遅延バッファは、入力信号Ｓ１を入力した場合と同じ、時間４０５だけ入力信号を遅延させて出力する。
【００７５】
このように、通常の遅延バッファは、入力信号が入力されるタイミングにかかわらず、常に一定時間だけ入力信号を遅延させて出力する。
【００７６】
これに対し、図７は、本実施の形態に係る可変バッファ１０１の機能を説明する第１の図である。
【００７７】
図７に示されるように、時刻４２３に立ち上がる入力信号Ｓ１を可変バッファ１０１に入力すると、時刻４２４に入力信号Ｓ１が可変バッファ１０１より出力される。
【００７８】
ここで、遅延制御部１０２から可変バッファ１０１へ送信された制御信号１２３を、可変バッファ１０１が時刻４５０に受信したとする。また、制御信号１２３を受信する前の可変バッファ１０１は、高速バッファモード５０１で動作し、制御信号１２３を受信した後の可変バッファ１０１は、低速バッファモード５０２で動作するものとする。
【００７９】
この場合、入力信号Ｓ１は、時刻４２３から時刻４２４まで可変バッファ１０１の内部を（直列に接続された複数の遅延素子間のバケツリレーにより）伝播されるが、その際、高速バッファモード５０１である時刻４５０までは高速に伝播され、低速バッファモード５０２である時刻４５０から時刻４２４までは低速に伝播される。
【００８０】
その結果、可変バッファ１０１は、入力信号Ｓ１を時間４２５だけ遅延させて出力する。
【００８１】
これに対し、可変バッファ１０１に、時刻４２３よりも早い時刻４２８で立ち上がる入力信号Ｓ２を入力すると、時刻４２９に入力信号Ｓ２が可変バッファ１０１より出力される。
【００８２】
ここで、遅延制御部１０２から可変バッファ１０１へ送信された制御信号１２３を、可変バッファ１０１が時刻４５０に受信したとする。その結果、入力信号Ｓ２は、可変バッファ１０１の内部を、高速バッファモード５０１である時刻４２８から時刻４５０までは高速に伝播され、低速バッファモード５０２である時刻４５０から時刻４２９までは低速に伝播される。その結果、入力信号Ｓ２は、入力信号Ｓ１よりも、長い時間、可変バッファ１０１内部を高速バッファモード５０１で伝播される。
【００８３】
よって、可変バッファ１０１による入力信号Ｓ２の遅延時間４３０は、入力信号Ｓ１の遅延時間４２５よりも小さくなる。すなわち、可変バッファ１０１は、早く入力された入力信号ほど、遅延時間（第１の遅延時間）を小さく（逆に、遅く入力された入力信号ほど、遅延時間（第１の遅延時間）を大きく）する。これは、入力信号のゆらぎが増幅されることを意味する。
【００８４】
以上述べた、本実施の形態に係るゆらぎ増幅装置１００による入力信号の遅延時間をより厳密に求めると、以下の通りとなる。
【００８５】
可変バッファ１０１が備える遅延素子の個数（段数）をＮとし、高速バッファモード５０１における遅延素子１個あたりの入力信号の遅延時間（第３の遅延時間）をｔｄｆとし、低速バッファモード５０２における遅延素子１個あたりの入力信号の遅延時間（第４の遅延時間）をｔｄｓとする。また、高速バッファモード５０１において可変バッファ１０１の内部を入力信号が伝達される時間の理論値（すなわち、入力信号にゆらぎが存在しないと仮定した場合の値）をＴｓｔとし、入力信号が立ち上がる時刻と制御信号１２３が立ち上がる時刻との間の時間のゆらぎをＴｌａｇとする。この場合、可変バッファ１０１による入力信号の遅延時間（第１の遅延時間）は、以下の数式１で求められる。
【００８６】
【数１】
2012155388.tif 000003
【００８７】
数式１の右辺１行目第１項は、入力信号が可変バッファ１０１内を高速バッファモード５０１で実際に伝達された時間を表す。また、数式１の右辺１行目第２項は、入力信号が可変バッファ１０１内を低速バッファモード５０２で実際に伝達された時間を表す。
【００８８】
次に、Ｔｌａｇの標準偏差をσｌａｇとし、連続する２つの入力信号間の立ち上がり時刻の時間差の標準偏差をσｉｎとし、入力信号の立ち上がり時刻から制御信号１２３の立ち上がり時刻までの時間の標準偏差をσｔｇとし、σｉｎに対するσｌａｇの比（すなわち、σｌａｇ／σｉｎ）をａとする。σｉｎ２は、入力信号として可変バッファ１０１に入力される低速発振信号１２１の性質によって、また、σｔｇ２は遅延制御部１０２によって、それぞれ独立に定まる値であり、共に正規分布に従うと考えられる。よって、σｌａｇ２＝σｉｎ２＋σｔｇ２となり、ａ＝（１＋σｔｇ２／σｉｎ２）１／２となる。
【００８９】
したがって、ゆらぎ増幅装置１００の利得（Ｇａｉｎ）は、次の数式２により得られる。なお、利得は、ゆらぎ増幅装置１００に入力された信号の、入力前のゆらぎに対する出力後のゆらぎの比と定義する。
【００９０】
【数２】
2012155388.tif 000004
【００９１】
数式２より、ゆらぎ増幅装置１００の利得は、ｔｄｆ及びｔｄｓの比率により決定されることがわかる。
【００９２】
図８は、以上述べた、本実施の形態に係るゆらぎ増幅装置１００の処理の流れを示すフローチャートである。
【００９３】
ゆらぎ増幅装置１００は、低速オシレータ１２０から低速発振信号１２１を取得すると（Ｓ２０１）、取得した低速発振信号１２１を自身が備える可変バッファ１０１へ入力する（Ｓ２０３）。
【００９４】
次に、遅延制御部１０２は、低速発振信号１２１が可変バッファ１０１の内部で伝播されている時間内に、可変バッファ１０１の動作モードを切り替える制御信号１２３を、可変バッファ１０１へ出力する（Ｓ２０５）。
【００９５】
最後に、ゆらぎ増幅装置１００は、可変バッファ１０１から出力される、ゆらぎが増幅された入力信号を、サンプル装置１３０へ出力する（Ｓ２０７）。
【００９６】
その後、サンプル装置１３０は、高速オシレータ１１０から出力される高速発振信号１１１を、ゆらぎ増幅装置１００から出力される、ゆらぎが増幅された低速発振信号１２１である増幅発振信号１２２でサンプリングして得られる値を、乱数列として出力する。
【００９７】
図９は、本実施の形態に係る遅延制御部１０２の処理の流れを示すフローチャートである。
【００９８】
まず、遅延制御部１０２は、新たな入力信号が入力された場合には（Ｓ２１０でＹｅｓ）、可変バッファ１０１の動作モードを第１の動作モードに切り替える（Ｓ２１２）。また、新たな入力信号が入力されていない場合には（Ｓ２１０でＮｏ）、動作モードを切り替えない。
【００９９】
次に、遅延制御部１０２は、所定時間が経過したか否かを判定する（Ｓ２１４）。ここで、所定時間が経過した場合には（Ｓ２１４でＹｅｓ）、可変バッファ１０１を第２の動作モードに設定する（Ｓ２１６）。また、所定時間が経過していなければ（Ｓ２１４でＮｏ）、動作モードを切り替えない。なお、ステップＳ２１４における所定時間の決め方については、後述する。
【０１００】
図１０は、本実施の形態に係るゆらぎ増幅装置１００の実装の一例を示す図である。
【０１０１】
遅延制御部１０２は、８３段ｒｏ（ｒｉｎｇ  ｏｓｃｉｌｌａｔｏｒ；リングオシレータ）１０３ａ及び８３段ｒｏ１０３ｂと、カウント部１０４ａ及びカウント部１０４ｂと、パルス発生部１０５ａ及びパルス発生部１０５ｂとを備える。以後、８３段ｒｏ１０３ａ及び８３段ｒｏ１０３ｂを総称して８３段ｒｏ１０３という。また、カウント部１０４ａ及びカウント部１０４ｂを総称してカウント部１０４という。また、パルス発生部１０５ａ及びパルス発生部１０５ｂを総称してパルス発生部１０５という。
【０１０２】
８３段ｒｏ１０３及びカウント部１０４は、遅延制御部１０２に入力された低速発振信号１２１の立ち上がりによって特定される入力信号が遅延制御部１０２に入力された時刻からの経過時間をカウントする回路である。なお、リングオシレータの段数は、あくまで例示であり、８３段以外の任意の奇数段の段数として構成されても同様の発明の効果を奏する。
【０１０３】
カウント部１０４ａは、カウンタ１０７ａを有し、カウント部１０４ｂは、カウンタ１０７ｂを有する。以後、カウンタ１０７ａ及びカウンタ１０７ｂを総称してカウンタ１０７という。
【０１０４】
カウント部１０４は、低速発振信号１２１の立ち上がりをきっかけに、自身が有するカウンタ１０７を０にリセットし、以後、８３段ｒｏ１０３から出力されるクロック信号を取得するごとに、カウンタ１０７をカウントアップする。
【０１０５】
より詳細には、カウント部１０４ａは、８３段ｒｏ１０３ａから出力される発振信号の回数を、カウンタ１０７ａによりカウントアップする。また、カウント部１０４ｂは、８３段ｒｏ１０３ｂから出力される発振信号の回数を、カウンタ１０７ｂによりカウントアップする。
【０１０６】
パルス発生部１０５は、自身が参照するカウント部１０４が有するカウンタ１０７の値が、事前に定められた遅延条件内（例えば、事前に定められた閾値以上）であるときに、Ｈｉｇｈとなるパルス信号を出力する。すなわち、パルス発生部１０５は、遅延制御部１０２に入力信号が入力されてから、事前に定められた第２の遅延時間の経過後に、パルス信号を出力する。なお、パルス発生部１０５ａは、カウント部１０４ａが有するカウンタ１０７ａを参照し、パルス発生部１０５ｂは、カウント部１０４ｂが有するカウンタ１０７ｂを参照する。
【０１０７】
ここで、遅延制御部１０２へ連続して入力される２つの入力信号のうち、先の入力信号に対応したパルスの生成をパルス発生部１０５が完了させるのは、後の入力信号が遅延制御部１０２に入力された後となる。すなわち、本実施の形態に係る遅延制御部１０２は、２つの入力信号のうち先の入力信号を取得してから、事前に定められた第２の遅延時間が経過した後に、パルス発生部１０５から制御信号１２３であるパルス信号を出力する。この第２の遅延時間は、２つの入力信号のうち後の入力信号が可変バッファ１０１に入力されて以後、出力されるまでの間に、制御信号１２３が出力されるように定められる。
【０１０８】
遅延制御部１０２をこのように構成する理由を以下に述べる。
【０１０９】
ゆらぎ増幅装置１００は、入力信号が可変バッファ１０１内部を伝播されている間に、その伝播される速度を高速から低速へ切り替えることにより、入力信号のゆらぎを増幅する。したがって、遅延制御部１０２は、入力信号の各々が可変バッファ１０１内部を伝播されている期間内に、制御信号１２３を可変バッファ１０１へ出力する必要がある。
【０１１０】
ここで、遅延制御部１０２は、入力信号が可変バッファ１０１へ入力された時刻を知ることができれば、その時刻以後、所定の遅延時間が経過した後に、可変バッファ１０１へ制御信号１２３を出力すればよい。
【０１１１】
そこで、遅延制御部１０２は、可変バッファ１０１と同時に入力信号を取得し、８３段ｒｏ１０３及びカウント部１０４により、入力信号を取得した時刻からの経過時間をカウントする。その後、所定の遅延時間（第２の遅延時間）が経過した後、パルス発生部１０５はパルス波を出力する。
【０１１２】
ここで、遅延制御部１０２が、２つの入力信号のうち先の入力信号がまだ可変バッファ１０１内部を伝播されているうちに、先の入力信号が入力された時刻に対応する（すなわち、先の入力信号を所定の遅延時間だけ遅延させた）制御信号１２３を出力すると、遅延制御部１０２は、入力信号が可変バッファ１０１に入力されてから、常に同じ時間が経過した後に、制御信号１２３を出力することになる。すなわち、全ての入力信号について、高速バッファモード５０１として伝達される時間、及び、低速バッファモード５０２として伝達される時間が一致してしまう。これでは、数式２における係数ａが０となり、ゆらぎ増幅装置１００は、ゆらぎを増幅することができない。
【０１１３】
すなわち、制御信号１２３が出力される時刻は、可変バッファ１０１内を現在、伝達されている入力信号が可変バッファ１０１に入力された時刻とは独立に決定されなければならない。
【０１１４】
ここで、低速オシレータ１２０が出力する低速発振信号１２１の周期は、ゆらぎを有しており、そのゆらぎは周期ごとに独立となる。そこで、遅延制御部１０２は、２つの入力信号のうち先の入力信号が入力された時刻から、低速発振信号１２１の１周期以上に相当する時間が経過し、後の入力信号が可変バッファ１０１内部を伝播されているタイミングで、先の入力信号が入力された時刻に対応するパルス信号を発生させ、これを制御信号１２３として出力する。
【０１１５】
このように、遅延制御部１０２が制御信号１２３の出力タイミングの決定に、現在、可変バッファ１０１内を伝播されている入力信号の１つ前にゆらぎ増幅装置１００へ入力された入力信号を一定時間遅延させて使用することにより、２つの入力信号間の時間が短いほど（すなわち、２つの入力信号のうち先の入力信号の入力時刻が早いほど）、２つの入力信号のうち後の入力信号の可変バッファ１０１による遅延時間（第１の遅延時間）が、より小さくなるように、遅延制御部１０２が遅延時間を制御する効果が生じる。
【０１１６】
なお、遅延制御部１０２が備えるカウンタが１つでは、パルス発生部１０５がパルス生成を完了する前に、遅延制御部１０２へ次の入力信号が入力され、カウンタの値が０にリセットされてしまう。よって、本実施の形態に係る遅延制御部１０２では、カウンタ１０７ａ及びカウンタ１０７ｂという２つのカウンタを、入力信号ごとに交互に使用することで、パルス生成が完了する前にカウンタの値がリセットされることを防ぐ。例えば、入力信号の偶数回目の立ち上がりに関してカウンタ１０７ａがリセットされ、入力信号の奇数回目の立ち上がりに関してカウンタ１０７ｂがリセットされる。
【０１１７】
再び図１０を参照し、可変バッファ１０１は、複数の遅延素子１０６と、可変バッファ１０１の電源１０８とを備える。
【０１１８】
複数の遅延素子１０６として、ここでは、１０００段のインバータチェーンを使用する。
【０１１９】
電源１０８は、電源電圧ＶＤＢＵＦＨと、電源電圧ＶＤＢＵＦＬと、切替スイッチ１０９とを備える。切替スイッチ１０９は、インバータである遅延素子１０６に印加する電源電圧を、電源電圧ＶＤＢＵＦＨと、電源電圧ＶＤＢＵＦＬのうち一方から選択できるように構成されたスイッチである。切替スイッチ１０９として、例えば図１０に示されるように、２つのＭＯＳＦＥＴ（Metal Oxide Semiconductor Field Effect Transistor）を組み合わせて使用すること等が考えられる。
【０１２０】
電源電圧ＶＤＢＵＦＨは、電源電圧ＶＤＢＵＦＬよりも高電位であるため、遅延素子１０６に電源電圧ＶＤＢＵＦＨを印加した場合が、入力信号の伝播速度が速い高速バッファモード５０１に対応する。逆に、遅延素子１０６に電源電圧ＶＤＢＵＦＬを印加した場合が、低速バッファモード５０２に対応する。
【０１２１】
すなわち、可変バッファ１０１は、第１の動作モードでは、第２の動作モードよりも高い電源電圧を複数の遅延素子１０６の各々に印加することで、入力信号の遅延時間を変更することができる。
【０１２２】
なお、本実施の形態に係る可変バッファ１０１の電源１０８は、図１０に示されるように、制御信号１２３の値がＬｏｗの場合には、電源電圧ＶＤＢＵＦＨを遅延素子１０６へ印加し、制御信号１２３の値がＨｉｇｈの場合には、電源電圧ＶＤＢＵＦＬを遅延素子１０６へ印加する。
【０１２３】
次に、図１１を参照して、本実施の形態に係る遅延制御部１０２が制御信号１２３を出力するタイミングについて、より具体的に説明する。
【０１２４】
まず時刻４６０にゆらぎ増幅装置１００へ入力された最初の入力信号Ｓ０は、可変バッファ１０１及び遅延制御部１０２へ入力される。
【０１２５】
可変バッファ１０１へ入力された入力信号Ｓ０は、高速バッファモード５０１で複数の遅延素子間を伝播される。
【０１２６】
一方、遅延制御部１０２へ入力された入力信号Ｓ０は、カウント部１０４ｂへ入力される。カウント部１０４ｂは、入力信号Ｓ０が入力されると、８３段ｒｏ１０３ｂへ発振信号の出力を指示し、カウンタ１０７ｂを０にリセットする。以後、カウント部１０４ｂは、８３段ｒｏ１０３ｂから出力される発振信号の立ち上がり回数のカウントを開始する。
【０１２７】
その後、入力信号Ｓ０が時刻４７０に可変バッファ１０１から出力され、次の入力信号Ｓ１が時刻４２３に、ゆらぎ増幅装置１００へ入力される。入力信号Ｓ１は、可変バッファ１０１及び遅延制御部１０２へ入力される。
【０１２８】
可変バッファ１０１へ入力された入力信号Ｓ１は、高速バッファモード５０１で複数の遅延素子間を伝播される。
【０１２９】
一方、遅延制御部１０２へ入力された入力信号Ｓ１は、カウント部１０４ａへ入力される。カウント部１０４ａは、入力信号Ｓ１が入力されると、８３段ｒｏ１０３ａへ発振信号の出力を指示し、カウンタ１０７ａを０にリセットする。以後、カウンタ１０７ａは、８３段ｒｏ１０３ａから出力される発振信号の立ち上がり回数のカウントを開始する。
【０１３０】
その後、時刻４５０で、カウント部１０４ｂが有するカウンタ１０７ｂの値が、事前に定められた閾値を超えたとする。このとき、パルス発生部１０５ｂは、出力する信号の値をＬｏｗからＨｉｇｈへ切り替える。その結果、可変バッファ１０１へ制御信号１２３であるＨｉｇｈレベルのパルス信号が出力され、電源１０８は、遅延素子１０６へ印加する電源電圧を、ＶＤＢＵＦＨからＶＤＢＵＦＬへ切り替える。
【０１３１】
その結果、時刻４５０以降、可変バッファ１０１は低速バッファモード５０２で動作する。よって、入力信号Ｓ１は、時刻４２３から時刻４５０までは高速バッファモード５０１で伝播され、時刻４５０から時刻４２４までは低速バッファモード５０２で伝播される。
【０１３２】
その後、さらに、新たな入力信号Ｓ２が、時刻４７２にゆらぎ増幅装置１００へ入力されると、入力信号Ｓ２は、可変バッファ１０１及び遅延制御部１０２へ入力される。
【０１３３】
遅延制御部１０２へ入力された入力信号Ｓ２は、カウント部１０４ｂへ入力される。ここで、カウント部１０４ｂは、入力信号Ｓ２が入力されると、８３段ｒｏ１０３ｂへ発振信号の出力を指示し、カウンタ１０７ｂを０にリセットする。その結果、パルス発生部１０５ｂはＨｉｇｈレベルの信号の出力を停止する。その結果、電源１０８は遅延素子１０６に印加する電源電圧を、ＶＤＢＵＦＬからＶＤＢＵＦＨへ切り替える。その結果、可変バッファ１０１は高速バッファモード５０１で動作する。
【０１３４】
また、可変バッファ１０１へ入力された入力信号Ｓ１は、高速バッファモード５０１で複数の遅延素子間を伝播される。
【０１３５】
ここで、入力信号Ｓ０、Ｓ１及びＳ２は、それぞれゆらぎを有しているため、隣り合う入力信号間の時間は、それぞれ異なる。よって、数式２における係数ａが０ではなく、ゆらぎ増幅装置１００は、入力信号のゆらぎを増幅することができる。
【０１３６】
図１２は、本実施の形態に係るゆらぎ増幅装置１００を備える真性乱数生成器２００を６５ｎｍプロセスを用いて実装した半導体チップの外観図である。
【０１３７】
実装した真性乱数生成器２００では、高速オシレータ１１０を、７、１５及び３１段リングオシレータの中から選択できる。また、低速発振信号１２１として、２５１段リングオシレータからの出力信号を、１６、６４、２５６及び１０２４分周のうち、いずれかで分周したものを選択できる。
【０１３８】
図１２に示されるように、本実施の形態に係るゆらぎ増幅装置１００の実装面積は、１辺が数十μｍ以内の矩形領域に収まるほど小さくすることが可能である。
【０１３９】
図１３は、半導体チップ上に実装されたゆらぎ増幅装置１００により得られたゆらぎの利得を示す図である。横軸は低速バッファモード５０２において遅延素子１０６に印加された電源電圧ＶＤＢＵＦＬの電圧［Ｖ］に対応し、縦軸は、ゆらぎ増幅装置１００への入力前後におけるゆらぎの利得に対応する。また、各種の点によるプロットは、実装されたゆらぎ増幅装置１００による実測値を表し、曲線は数式２を用いて算出された見積もり値を示す。
【０１４０】
より詳細には、図１３は、低速発振信号１２１として２５１段リングオシレータを６４分周したものを使用し、電源電圧ＶＤＢＵＦＨを１．２Ｖに固定し、ＶＤＢＵＦＬを１．２Ｖから０．６５Ｖまで、０．０５Ｖずつ変化させた場合に計測した利得を、計測時の温度ごとにプロットしたグラフである。
【０１４１】
図１３に示されるように、ＶＤＢＵＦＬが小さい、すなわち、高速バッファモード５０１で遅延素子１０６に印加される電源電圧と、低速バッファモード５０２で遅延素子１０６に印加される電源電圧との差が大きいほど、ゆらぎ増幅装置１００による得られる利得が大きくなる。例えば、２０度Ｃにおいては、ＶＤＢＵＦＬが０．６５Ｖのとき、ゆらぎが８．４倍に増幅されている。
【０１４２】
また、温度が低くなるほど、可変バッファ１０１における遅延時間の電源電圧に対する感度が大きくなる性質があるため、利得がより大きくなっている。
【０１４３】
数式２については、温度が室温以上（特に２５度Ｃ以上）の場合には、実測値との差がほとんどなく、利得をよく見積もれているが、温度が低くなるほど実測値よりも低いゲインを見積もっている。
【０１４４】
次に、実装したゆらぎ増幅装置１００を備える真性乱数生成器２００が生成する乱数列の品質について行った評価結果を述べる。
【０１４５】
乱数品質の評価における真性乱数生成器２００の使用条件は以下の通りである。すなわち、温度は２５度Ｃであり、高速発振信号１１１は３１段リングオシレータの出力であり、低速発振信号１２１は２５１段リングオシレータの出力を６４分周した信号であり、ＶＤＢＵＦＨは１．２Ｖであり、ＶＤＢＵＦＬを０．７Ｖである。
【０１４６】
この条件の下で生成された、乱数量１Ｍｂｉｔの乱数列を１系列とし、これを１０００系列生成した。
【０１４７】
この１０００系列の乱数列について、ＮＩＳＴ（National Institute of Standards and Technology）ＳＰ８００−２２において定められた１４種類の乱数品質テスト（以下、ＮＩＳＴテストという）を行った。ＮＩＳＴテストは、極めて厳格な基準による乱数品質の評価テスト群である。
【０１４８】
図１４は、本実施の形態に係る真性乱数生成器２００により生成された乱数列について、ＮＩＳＴテストを行った結果を示す。
【０１４９】
列８５０は、本実施の形態に係るゆらぎ増幅装置１００の機能をＯＦＦにして生成された乱数列についてのＮＩＳＴテストの結果である。すなわち、低速オシレータ１２０により生成された低速発振信号１２１をそのままクロックとして使用して生成された乱数列である。１４種類のＮＩＳＴテストのうち、４種類のみ合格し、１０種類については不合格となっている。
【０１５０】
一方、列８５１は、本実施の形態に係るゆらぎ増幅装置１００の機能をＯＮにして生成された乱数列についてのＮＩＳＴテストの結果である。１４種類のＮＩＳＴテストのうち、１２種類について合格している。
【０１５１】
次に、本実施の形態に係るゆらぎ増幅装置１００による面積あたりの乱数生成スループットの改善効果について、インバータチェーン及び分周器を用いる方法と比較して詳細に説明する。
【０１５２】
なお、面積とスループットの評価を行うためのパラメータとして次の値を用いた。インバータの面積を１．０８μｍ２とし、２入力ＮＡＮＤの面積を１．４４μｍ２とし、Ｄフリップフロップの面積を７．９２μｍ２とし、ゆらぎ増幅装置１００の面積を３０００μｍ２とした。また、高速発振信号１１１の周期の平均及び標準偏差をそれぞれ９３０ｐｓ、９．２ｐｓとし、低速発振信号１２１の周期の平均及び標準偏差をそれぞれ４６０ｎｓ、２１０ｐｓとした。ここで、低速発振信号１２１の周期の平均及び標準偏差、並びに、高速発振信号１１１の周期の標準偏差は、６５ｎｍプロセスにおける２５１段リングオシレータ６４分周の実測値から見積もり、高速発振信号１１１の平均周期は６５ｎｍプロセスにおける３１段リングオシレータのシミュレーションから求めた。
【０１５３】
なお、以下の評価では厳密を期すため、低速発振信号１２１の周期ゆらぎに加えて高速発振信号１１１の周期ゆらぎを考慮する。図２を参照して、オシレータサンプリング方式のランダム性は、高速発振信号１１１から見た低速発振信号１２１の立ち上がりタイミングのゆらぎによって獲得される。ここでは、高速発振信号１１１に対する低速発振信号１２１の立ち上がりタイミングのゆらぎを「相対的周期ゆらぎ」とよぶ。高速発振信号１１１に周期ゆらぎがある場合、相対的周期ゆらぎは低速発振信号１２１の１周期中に蓄積される高速発振信号１１１の周期ゆらぎ分だけ増加する。よって、相対的周期ゆらぎは、低速発振信号１２１で生じる周期分散と、低速発振信号１２１の１周期中に蓄積される高速発振信号１１１の周期分散の和の平方根として定義できる。
【０１５４】
以上の前提において、図１５は、本実施の形態に係るゆらぎ増幅装置１００による、乱数生成における面積あたりスループットの改善効果を、インバータチェーン及び分周器を用いる方法と比較して示す図である。
【０１５５】
図１５（ａ）は、要求される相対的周期ゆらぎを得るために必要な回路の面積を示す図である。縦軸は回路の実装に必要な面積［μｍ２］であり、横軸は得られる相対的周器ゆらぎの大きさ［ｎｓ］である。
【０１５６】
図１５（ａ）に示されるように、分周器を用いる手法が最も面積が小さく、相対的周期ゆらぎの量が大きくなっても、面積はほとんど増加しない。また、本実施の形態に係るゆらぎ増幅装置１００によっても、回路の面積は相対的周期ゆらぎの大きさに依存しないが、分周器を用いる手法よりも回路の面積は大きくなる。また、インバータチェーンを用いる手法は、相対的周期ゆらぎが大きくなるほど、必要とされるインバータチェーンの段数が急激に増加するため、非常に大きな面積が必要となる。
【０１５７】
次に、相対的周期ゆらぎと、乱数生成のスループットの関係を図１５（ｂ）に示す。縦軸は、乱数生成のスループット［ｋｂｐｓ］であり、横軸は得られる相対的周器ゆらぎの大きさ［ｎｓ］である。
【０１５８】
図１５（ｂ）に示されるように、インバータチェーンを用いる手法及び本実施の形態に係るゆらぎ増幅装置１００では、相対的周期ゆらぎの大きさにかかわらず、スループットは一定である。一方、分周器を用いる手法では、相対的周期ゆらぎが大きくなるほど、必要な分周回数が大きくなるので、スループットが急激に減少する。
【０１５９】
次に、相対的周期ゆらぎの大きさに対する面積あたりスループットを図１５（ｃ）に示す。縦軸は、乱数生成における面積あたりのスループット［ｋｂｐｓ］であり、横軸は得られる相対的周期ゆらぎの大きさ［ｎｓ］である。
【０１６０】
図１５（ｃ）に示されるように、相対的周期ゆらぎが小さい場合、本実施の形態に係るゆらぎ増幅装置１００は他の２つの手法よりも面積あたりスループットが小さいが、相対的周期ゆらぎが大きくなっても面積あたりスループットは減少しない。そのため、要求される周期ゆらぎが大きい場合、本実施の形態に係るゆらぎ増幅装置１００は面積あたりスループットの面で有利となる。
【０１６１】
ここで、前述したＮＩＳＴテストを実施した際の条件は、ＶＤＢＵＦＨが１．２Ｖであり、ＶＤＢＵＦＬが０．７Ｖであったので、このとき、増幅発振信号１２２の周期ゆらぎは、１．２３［ｎｓ］と見積もることができる。また、低速発振信号１２１の１周期中に蓄積される高速発振信号１１１の周期分散は、（９．２［ｐｓ］）２×（４６０［ｎｓ］／９３０［ｐｓ］）＝０．０４２［ｎｓ２］と算出されるため、相対的周期ゆらぎは、（１．２３２＋０．０４２）１／２＝１．２５［ｎｓ］となる。
【０１６２】
よって、後処理を用いずに、ＮＩＳＴテストに合格する程度の高品質乱数を生成するためには少なくとも１．２５［ｎｓ］の相対的周期ゆらぎが必要と考えられる。このとき、図１５（ｃ）を参照して、本実施の形態に係るゆらぎ増幅装置１００によれば、分周器を用いる手法と比較し、面積あたりのスループットが９４％改善することがわかる。
【０１６３】
以上の検証から、本実施の形態に係るゆらぎ増幅装置１００は、真性乱数生成器２００の実装面積あたりのスループットを悪化させずに、生成される乱数品質を向上させることが可能であることが示される。
【０１６４】
以上、本発明の実施の形態に係るゆらぎ増幅装置１００について説明したが、本発明は、この実施の形態に限定されるものではない。
【０１６５】
上記実施の形態に係るゆらぎ増幅装置１００及び真性乱数生成器２００に含まれる各処理部は典型的には集積回路であるＬＳＩとして実現される。これらは個別に１チップ化されてもよいし、一部又は全てを含むように１チップ化されてもよい。
【０１６６】
ここでは、ＬＳＩとしたが、集積度の違いにより、ＩＣ、システムＬＳＩ、スーパーＬＳＩ、ウルトラＬＳＩと呼称されることもある。
【０１６７】
また、集積回路化はＬＳＩに限るものではなく、専用回路又は汎用プロセッサで実現してもよい。ＬＳＩ製造後にプログラムすることが可能なＦＰＧＡ（Field Programmable Gate Array）、又はＬＳＩ内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサを利用してもよい。
【０１６８】
さらには、半導体技術の進歩又は派生する別技術によりＬＳＩに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて各処理部の集積化を行ってもよい。
【０１６９】
また、本発明の実施の形態に係る、ゆらぎ増幅装置１００及び真性乱数生成器２００の機能の一部又は全てを、ＣＰＵ等のプロセッサがプログラムを実行することにより実現してもよい。
【０１７０】
さらに、本発明は上記プログラムであってもよいし、上記プログラムが記録された記録媒体であってもよい。また、上記プログラムは、インターネット等の伝送媒体を介して流通させることができるのはいうまでもない。
【０１７１】
また、上記実施の形態に係る、ゆらぎ増幅装置１００及びその変形例の機能のうち少なくとも一部を組み合わせてもよい。
【０１７２】
さらに、本発明の主旨を逸脱しない限り、本実施の形態に対して当業者が思いつく範囲内の変更を施した各種変形例も本発明に含まれる。
【０１７３】
また、上記で用いた数字は、全て本発明を具体的に説明するために例示するものであり、本発明は例示された数字に制限されない。さらに、Ｈｉｇｈ／Ｌｏｗにより表される論理レベル又はオン／オフにより表されるスイッチング状態は、本発明を具体的に説明するために例示するものであり、例示された論理レベル又はスイッチング状態の異なる組み合わせにより、同等な結果を得ることも可能である。さらに、上で示した論理回路の構成は本発明を具体的に説明するために例示するものであり、異なる構成の論理回路により同等の入出力関係を実現することも可能である。また、トランジスタ等のｎ型及びｐ型等は、本発明を具体的に説明するために例示するものであり、これらを反転させることで、同等の結果を得ることも可能である。また、構成要素間の接続関係は、本発明を具体的に説明するために例示するものであり、本発明の機能を実現する接続関係はこれに限定されない。
【０１７４】
また、上記説明では、ＭＯＳトランジスタを用いた例を示したが、バイポーラトランジスタ等の他のトランジスタを用いてもよい。
【０１７５】
また、上記ゆらぎ増幅装置１００の構成は、本発明を具体的に説明するために例示するためのものであり、本発明に係るゆらぎ増幅装置１００は、上記構成の全てを必ずしも備える必要はない。言い換えると、本発明に係るゆらぎ増幅装置１００は、本発明の効果を実現できる最小限の構成のみを備えればよい。
【０１７６】
また、本実施の形態に係る遅延制御部１０２は、２組の８３段ｒｏ１０３、カウント部１０４及びパルス発生部１０５を備えるとしたが、必ずしもこの構成に限定されない。
【０１７７】
例えば、遅延制御部１０２は、８３段ｒｏ１０３、カウント部１０４及びパルス発生部１０５を３組以上備えてもよい。この構成により、遅延制御部１０２による第２の遅延時間が低速発振信号１２１の周期の２倍を超える場合であっても、パルス発生部１０５によるパルス発生の完了前にカウンタ１０７がリセットされることを防ぐことができる。
【０１７８】
また、遅延制御部１０２は、複数の８３段ｒｏ１０３、カウンタ１０７を除く複数のカウント部１０４、及び、複数のパルス発生部１０５のうち、２つ以上を共有してもよい。例えば、図１０に示されるゆらぎ増幅装置１００において、遅延制御部１０２は、１つのパルス発生部１０５と、１つの８３段ｒｏ１０３と、１つのカウント部１０４とを備え、カウント部１０４が２つのカウンタ（カウンタ１０７ａ及びカウンタ１０７ｂ）を有するように構成してもよい。この構成により、ゆらぎ増幅装置１００の実装面積、消費電力及びコストをさらに低減することができる。
【０１７９】
また、遅延制御部１０２は、１つの８３段ｒｏ１０３、１つのカウント部１０４、及び、１つのパルス発生部１０５のみを備え、低速発振信号１２１がゆらぎ増幅装置１００に入力された時刻とは無関係に、低速オシレータ１２０の周期とほぼ同間隔で定期的に制御信号１２３を送信する構成としてもよい。これにより、ゆらぎ増幅装置１００の構成を簡易なものとできる利点がある。
【０１８０】
なお、本実施の形態においては、入力信号が入力される際に、可変バッファ１０１は常に高速バッファモード５０１で動作しており、入力信号の伝播中に低速バッファモード５０２に切り替えられるものとして説明したが、これに限られるものではない。例えば、入力信号は、常に低速バッファモード５０２で動作する可変バッファ１０１に入力され、途中で高速バッファモード５０１に変更されるものとしてもよい。
【０１８１】
さらに、入力信号が入力される際の可変バッファ１０１の動作モードとして、高速バッファモード５０１と低速バッファモード５０２が交互に使用されてもよく、さらにまた、入力信号が入力される際の可変バッファ１０１の動作モードが無作為に選択されてもよい。すなわち、遅延制御部１０２は、入力信号が可変バッファ１０１内を伝播されている間に、なんらかの形で、可変バッファ１０１の第１の遅延時間を変更させることで、同様の発明の効果を奏する。
【０１８２】
また、本実施の形態に係る可変バッファ１０１は、第１の遅延時間を変化させるために、遅延素子であるインバータ（トランジスタ）の電源電圧の値を切り替える構成とした。しかし、可変バッファ１０１は、入力信号が伝播される遅延素子の段数を変化させることで、第１の遅延時間を変化させてもよい。例えば、直列に接続された複数の遅延素子１０６の列において複数のショートカットを設けることで、出力されるまでの段数が異なる複数の経路をつくることができる。よって、ゆらぎ増幅装置１００に入力された入力信号を例えば順番に、あるいは、無作為に、複数のショートカットのいずれかから入力することで、入力信号ごとに第１の遅延時間を切り替えることができ、上記実施の形態と同様の発明の効果を奏することができる。
【産業上の利用可能性】
【０１８３】
本発明は、ゆらぎ増幅装置に適用でき、特にオシレータの周期ゆらぎを利用した真性乱数生成器が備えるゆらぎ増幅装置に適用できる。
【符号の説明】
【０１８４】
１００  ゆらぎ増幅装置
１０１  可変バッファ
１０２  遅延制御部
１０３、１０３ａ、１０３ｂ  ８３段ｒｏ
１０４、１０４ａ、１０４ｂ  カウント部
１０５、１０５ａ、１０５ｂ  パルス発生部
１０６  遅延素子
１０７、１０７ａ、１０７ｂ  カウンタ
１０８  電源
１０９  切替スイッチ
１１０  高速オシレータ
１１１  高速発振信号
１２０  低速オシレータ
１２１  低速発振信号
１２２  増幅発振信号
１２３、１２３ａ、１２３ｂ  制御信号
１３０  サンプル装置
１９０  乱数変換装置
２００、９００  真性乱数生成器
５０１  高速バッファモード
５０２  低速バッファモード
５５１、５５２、Ｓ１、Ｓ２  入力信号
【図１】
2012155388.tif 000005
【図２】
2012155388.tif 000006
【図３】
2012155388.tif 000007
【図４】
2012155388.tif 000008
【図５】
2012155388.tif 000009
【図６】
2012155388.tif 000010
【図７】
2012155388.tif 000011
【図８】
2012155388.tif 000012
【図９】
2012155388.tif 000013
【図１０】
2012155388.tif 000014
【図１１】
2012155388.tif 000015
【図１３】
2012155388.tif 000016
【図１４】
2012155388.tif 000017
【図１５】
2012155388.tif 000018
【図１２】
2012155388.tif 000019