本発明の実施形態を説明する前に、本発明に至った経緯および本発明の概要について説明する。
まず、ランダムノイズ生成素子の初期化の必要性について説明する。電荷トラップをノイズ生成源とするランダムノイズ生成素子の一例として、非化学量論的SiN膜のトラップ膜を有し、このSiN膜中のダングリングボンドを利用したMOSFETを挙げられる(例えば、特開2007−304730号公報参照)。なお、本発明の一実施形態においては、ランダムノイズ生成素子としては、SiN膜中のダングリングボンドを利用したMOSFETばかりでなく、RTS(Random telegraph signal)を利用した通常のMOSFET、またはNANDフラッシュメモリ等のメモリ素子であって、メモリからの電荷のリークを乱数として利用したメモリ素子も用いることができる。
本発明の一実施形態に用いられるランダムノイズ生成素子10、例えば特開2007−304730号公報に記載のMOSFETは、図1に示すように、半導体基板1のチャネル領域1a上にトンネル絶縁膜2が形成され、トンネル絶縁膜2上にトラップ絶縁膜3が形成されている。これらのトンネル絶縁膜2およびトラップ絶縁膜3によって絶縁部が形成されている。トラップ絶縁膜3は、ダングリングボンドに基づくトラップを有し、Six(SiO2)y(Si3N4)1−yMz(ただし、MはSi、O及びN以外の元素、x≧0、1≧y≧0、z≧0(x=0且つy=1且つz=0の場合は除く))なる一般式で表される。例えば、トラップ絶縁膜3は、非化学量論的なシリコン酸窒化膜で形成されている。このトラップ絶縁膜3上には制御酸化膜(制御絶縁膜)4が形成され、制御酸化膜4上にはn+型ポリシリコンで形成されたゲート電極(制御電極)5が形成されている。
このように、本発明の一実施形態におけるランダムノイズ生成素子10においては、チャネル領域1aと、ダングリングボンドに基づくトラップを有するトラップ絶縁膜3との間には、非常に薄いトンネル絶縁膜2が介在しているだけである。このため、熱揺らぎに起因した電子(電荷)のランダムな充放電が、トンネル絶縁膜2を介して、チャネル領域1とトラップ絶縁膜3との間で生じる。したがって、トラップ絶縁膜3中のトラップに捕捉された電荷の量に応じて、チャネル領域1aの導電性がランダムに変動する。すなわち、トラップに捕捉された電荷の量に応じて、ソース領域6aおよびドレイン領域6b間に流れる電流がランダムに変動する。したがって、ランダムノイズ生成素子10に後述する乱数変換回路を接続することにより、チャネル領域1aの導電性のランダムな変動に基づく物理乱数を生成することが可能である。
上記ランダムノイズ生成素子10において、ゲート電極に電圧を長時間印加した際のドレイン電流の経時変化について測定した結果を図2に示す。図2からわかるように、ドレイン電流は高速にランダムな増減を繰り返しながらも、時間とともに単位時間当たりの平均電流値が減少している。この現象は、電圧を長時間印加し続けることで、チャネル領域1とトラップ絶縁膜3との間で電荷の充放電は行われるが、一部の電荷はトラップにそのまま蓄積され、トラップされた電荷によるクーロン遮蔽効果によってキャリア電子が侵入できない領域が徐々に増え、これにより、ランダムな変化は残しながらもチャネルは高抵抗になることが原因であると本発明者達は考えた。
これは、特開2007−304730号公報に記載されたランダムノイズ生成素子だけに起こる現象ではなく、例えば特開2005−167165公報に記載されたように、何らかの電荷トラップを利用してランダムノイズを生成する場合には、どのランダムノイズ生成素子においても起こる可能性のある現象である。特開2005−167165号公報におけるランダムノイズ生成素子は、Si微結晶粒子群を電荷トラップとして用いたMOSFETであって、チャネルと、Si微結晶粒子群との間には、非常に薄いトンネル絶縁膜が介在しているだけであり、チャネルとトラップとなるSi微結晶粒子群間で熱揺らぎに起因した電子のランダムな充放電が生じる。したがって、Si微結晶粒子群に捕捉された電荷の量に応じて、チャネル領域の導電性がランダムに変動する。その結果、チャネルに流れる電流がランダムに変動し、ランダムノイズが発生する。このランダムノイズを乱数変換回路によってデジタル乱数へ変換することで、乱数を発生させることが可能である。この特開2005−167165公報に記載されたランダムノイズ生成素子も本発明の一実施形態による乱数生成装置のランダムノイズ生成素子として用いることができる。
上記乱数変換回路はランダムノイズ信号を何らかの方法を用いてデジタル乱数へ変換する回路のことであり、例えば、ある基準の電流値(もしくは電圧値)に対する入力された電流値(もしくは電圧値)の大小で出力デジタル乱数の「1」,「0」を決定する(このときの基準は概ね電流および電圧の平均値)。上述したように、ランダムノイズ生成素子においては、ドレインの平均電流が時間の経過とともにずれてしまう特性を有しているので、乱数変換回路に入力されるランダムな電流値(もしくは電圧値)が全体的に基準値と比較して下回る、もしくは上回り、乱数変換回路から出力される乱数の「1」と「0」の総数のバランスが均等ではなくなる可能性がある。
そこで、本発明者達は、ランダムノイズ生成素子の電荷トラップに蓄積された電荷を定期的に放出させて、ランダムノイズ生成素子におけるトラップ膜を初期状態に戻せば、経時変化により乱数の質が左右されず、物理乱数としての予測不可能性、再現不可能性を持ち合わせた高品質な乱数生成を可能とする乱数生成装置を実現できると考えた。すなわち、本発明の一実施形態による乱数生成装置においては、電荷トラップがノイズ生成源となるランダムノイズ生成素子を初期状態に戻すための初期化回路を備えるよう構成したものである。
(第1実施形態)
本発明の第1実施形態による乱数生成装置を図3に示す。本実施形態の乱数生成装置は、ランダムノイズ生成素子10と、最適電圧調整回路20と、乱数変換回路30と、平滑化回路40と、検定回路50と、出力回路60、初期化回路70、制御回路100とを、備えている。ランダムノイズ生成素子10は、例えば、図1に示すMOSFETである。
最適電圧調整回路20は、ランダムノイズ生成素子10がランダムノイズ(物理乱数)を発生するのに適したゲート電圧を調整する回路であって、ゲート電圧供給回路21と、ゲート電圧を切り換えるための切り換え信号SA、SB、SC、SD、SEを発生する切り換え信号発生回路25とを備えている。ゲート電圧供給回路21は、直列に接続されかつゲートに制御回路100からのゲート信号VG1を受ける例えば6個のnチャネルMOSトランジスタ22a、22b、22c、22d、22e、22fからなる直列回路と、5個のスイッチ23a、23b、23c、23d、23eと、を備えている。上記直列回路の一端は電源電圧VD1に接続され、他端は接地される。スイッチ23aは、切り換え信号SAに基づいて動作し、一端がMOSトランジスタ22aとMOSトランジスタ22bとの共通接続ノードに接続され、他端がランダムノイズ生成素子10のゲートに接続される。スイッチ23bは、切り換え信号SBに基づいて動作し、一端がMOSトランジスタ22bとMOSトランジスタ22cとの共通接続ノードに接続され、他端がランダムノイズ生成素子10のゲートに接続される。スイッチ23cは、切り換え信号SCに基づいて動作し、一端がMOSトランジスタ22cとMOSトランジスタ22dとの共通接続ノードに接続され、他端がランダムノイズ生成素子10のゲートに接続される。スイッチ23dは、切り換え信号SDに基づいて動作し、一端がMOSトランジスタ22dとMOSトランジスタ22eとの共通接続ノードに接続され、他端がランダムノイズ生成素子10のゲートに接続される。スイッチ23eは、切り換え信号SEに基づいて動作し、一端がMOSトランジスタ22eとMOSトランジスタ22fとの共通接続ノードに接続され、他端がランダムノイズ生成素子10のゲートに接続される。すなわち、ゲート電圧供給回路21は、電源電圧VD1を、6個のMOSトランジスタ22a、22b、22c、22d、22e、22fのオン抵抗によって分圧した5個の電圧を切り換え信号SA、SB、SC、SD、SEに基づいて選択し、ランダムノイズ生成素子10のゲートに印加する。
切り換え信号発生回路25は、検定回路50から出力される検定が不合格であることを示す信号S2_NGに基づいて動作する4個のD型フリップフロップ261〜264が直列に接続された4段のシフト段を有するシフトレジスタである。第1のシフト段のフリップフロップ261の入力信号(制御回路100からのオン信号S3)が切り換え信号SEであり、出力信号が切り換え信号SDである。そして、第2のシフト段のフリップフロップ262の出力信号が切り換え信号SCであり、第3のシフト段のフリップフロップ263の出力信号が切り換え信号SBであり、第4のシフト段のフリップフロップ264の出力信号が切り換え信号SAである。すなわち、制御回路100から送られてきたオン信号S3は、検定回路50から信号S2_NGが送られてくる度に、順次シフトされて、シフトされた段から切り換え信号が発生される。このシフトレジスタ25は、制御回路100から送られてくるリセット信号R2によってリセットされる。なお、シフトレジスタ25の段数と、ゲート電圧供給回路21のスイッチ23a、23b、23c、23d、23eの個数とは同じ数であり、それらの数は、ランダムノイズ生成素子10のゲートへの印加電圧を調整する上での刻み幅と数に応じて変更する。
乱数変換回路30は、制御回路100から送られてくるクロック信号CLK_1の立ち上がりまたは立ち下がりのタイミングでランダムノイズ生成素子10から発生する物理乱数(例えば、ドレイン電流値)をサンプリングし、そのサンプル値に応じて値が「0」または「1」となるデジタルランダム信号RSを出力する。
本実施形態に用いられるランダムノイズ生成素子10は、発生するランダムノイズが1/f特性(ここで、fは揺らぎの周波数)を有している。そこで、本実施形態では、この1/f特性による周期性を持たない乱数生成を行うために、平滑化回路40が設けられている。すなわち、平滑化回路40は、乱数変換回路30から出力されるデジタルランダム信号から1/f特性による周期性が除去されたデジタルランダム信号を出力する。この平滑化回路40は、乱数変換回路30に組み込まれていてもよい。また、発生するランダムノイズに1/f特性を有していないランダムノイズ生成素子を用いる場合には、平滑化回路は不要となる。
平滑化回路40の一具体例を図4に示す。この具体例の平滑化回路40は、フリップフロップからなるカウンタ回路42と、インバータ44と、フリップフロップからなるラッチ回路46と、を備えている。カウンタ回路42は、乱数変換回路30から送られてきてD端子に入力されるデジタルランダム信号RSの変化に応じて、制御回路100から送られてきてクロックイネーブル端子CEに入力される基準クロック信号CLK_0のクロックをカウントし、そのカウント値CTSを出力する。ラッチ回路46は、デジタルランダム信号RSがインバータ44によって反転されたデジタルランダム信号/RSをクロック入力端子CKに受け、このデジタルランダム信号/RSの変化に応じて、カウンタ回路42の出力CTSをラッチし、このラッチした値OUT_RSを出力する。
図4に示す平滑化回路40の動作を説明する波形図を図5に示す。まず、時刻T5において、乱数変換回路30の出力であるランダム信号RSがローレベルからハイレベルとなる。時刻T5からT6までの間、ランダム信号RSがハイレベルの状態では、カウンタ回路42は、出力端子Qからカウント信号CTSを出力する。カウント信号CTSは、クロック信号CLK_0の立ち上がりエッジ検出毎にハイレベルとローレベルを交互に切り換える。なお、ここでは、カウンタ回路42は、例示的に1カウントごとにローレベルとハイレベルが交互に切り換わる1ビットカウンタであるとする。時刻T6において、ランダム信号RSがハイレベルからローレベルとなると、インバータ44は、ハイレベルとなるランダム信号/RSを出力する。ランダム信号/RSがハイレベルとなると、ラッチ回路46は、カウンタ回路42から出力されるカウント信号CTSをラッチし、乱数信号OUT_RSを出力する。時刻T7において、再びランダム信号RSがローレベルからハイレベルとなる。すると、カウンタ回路42は、ランダム信号RSがハイレベルの状態が続く間、クロック信号CLK_0の立ち上がりエッジ検出毎に、カウント信号CTSのレベルを交互に切り替える。時刻T8において、ランダム信号RSがハイレベルからローレベルとなる。ランダム信号RSがローレベルとなると、インバータ44は、ハイレベルとなるランダム信号/RSを出力する。ランダム信号/RSがハイレベルとなると、ラッチ回路46は、カウンタ回路42から出力されるカウント信号CTSをラッチし、乱数信号OUT_RSを出力する。以後、同様にランダム信号RSの立ち下がりエッジで乱数信号OUT_RSを出力する動作を繰り返す。
図4に示す本具体例の平滑化回路40を用いることで、クロック信号CLK_0の周波数が高いほど、「0」と「1」の出現する頻度に偏りがなくなり、ランダムノイズ生成素子10が有する1/f特性を打ち消す効果がある。但し、乱数を生成する場合は、使用する乱数の特性を考慮し、クロック信号CLK_0の周波数を選定する必要がある。
このようにして、平滑化回路40によって1/f特性が打ち消された乱数は、検定回路50に送られる。そして検定回路50において、平滑化回路40から出力される乱数が、予測不可能性、再現不可能性を持ち合わせた高品質な乱数であるか否かの検定が行われる。
本実施形態に係る検定回路50の一具体例を図6に示し、本検定回路の動作のタイミングチャートを図7に示す。この具体例の検定回路50は、フリップフロップからなるカウンタ回路52と、比較回路54と、フリップフロップからなるラッチ回路56とを備えている。この具体例の検定回路はモノビット・テスト(monobit test)に由来し、平滑化回路40から出力されるデジタル乱数のうち値が「1」の個数を数える。カウンタ回路52により平滑化回路40から出力されたデジタル乱数の「1」の数を数え、カウントされた値は比較回路54において、予め定められた基準値と比較される。カウンタ回路52によりカウントされた値が上記基準値の範囲内にある場合、比較回路54は、カウンタ回路52がリセットされてから次にリセットされるまでに、必ずあるクロック間でデータ「1」を出力する。また、検定開始から、検定で用いる、定めた乱数の総数をNとするとき、Nクロック目で立ち上がる信号T1により、ラッチ回路56により、比較回路54から出力される値をラッチする。この検定回路50による検定は、上記信号T1によってラッチされたラッチ回路56の出力端子Qから出力される信号が「1」であれば合格、「0」であれば不合格とする。すなわち、検定合格の時は、ラッチ回路56の出力端子Qから出力される信号が「1」となり、検定不合格のときはラッチ回路56の出力端子/Qから出力される信号が「1」となり、それぞれの出力を、信号S2_OK、S2_NGとする。したがって、信号S2_OKは検定合格信号となり、信号S2_NGは検定不合格信号となる。
なお、図6に示す検定回路50において、平滑化回路40と、カウンタ回路52との間にインバータを設けて、平滑化回路40の出力をインバータによって反転し、このインバータの出力をカウンタ回路52のクロック端子CKに入力するように構成してもよい。この場合は、平滑化回路40の出力のうち「0」をカウントする回路構成となる。
なお、米国商務省国立標準研究所(NIST)が作成した、4つの乱数データ検定項目からなるFIPS(Federal Information Processing Standard)140−2の項目に含まれるモノビット・テストにおける基準は、総数20000ビットの乱数で検定が行われ、そのうち「1」もしくは「0」が、9654から10346までの間にあることが検定合格条件である。
図3に示すスイッチ60は、検定回路50から検定不合格を意味する信号S2_NGが出力されてときにオフ状態となり、平滑化回路40から出力されるデジタル乱数を外部に出力せず、検定回路50から検定合格を意味する信号S2_OKが出力されてときにオン状態となり、平滑化回路40から出力されるデジタル乱数を外部に出力する。
次に、本実施形態に係る初期化回路70について説明する。
一般に、初期化回路の動作条件は下記3つが挙げられる。
(1)乱数生成装置の起動時に実施する
(2)乱数の質が劣化したときに実施する
(3)使用時間もしくは使用回数に応じて定期的に実施する
上記3つの条件を少なくとも1個含むことで本発明の一実施形態の効果を得ることが可能である。
本実施形態に係る初期化回路70の一具体例を図8に示し、動作を説明する波形図を図9に示す。この具体例の初期化回路70は、電源71と、スイッチ回路72と、カウンタ回路73と、ラッチ回路74と、カウンタ回路75、77と、比較回路76、78と、OR回路79とを備えている。
初期化回路70は、回路起動時、検定回路50によって不合格とされた時、特定の時間および使用回数時に、制御回路100から送られてくるリセット信号R1によって、カウンタ回路75、77をリセットし、制御回路100から送られてくる回路起動パルス信号P1により、カウンタ回路75、77のVDD信号をオンにする。リセット信号R1がONとなった後、回路起動パルス信号P1でスイッチ回路72をオンとし、電源71の電圧をランダムノイズ生成素子10の基板に印加する。電圧の印加時間は、基準クロックCLK_0によるtクロック分を1セットとし、回路起動時のリフレッシュ時には(t×1)クロック分の時間の電圧の印加をランダムノイズ生成素子10の基板へ行う。ここで、基板へ印加を行う単位時間tクロックについては、任意に定めてかまわないが、tは数秒程度でも十分にランダムノイズ生成素子10のトラップ絶縁膜中に蓄積した電荷を引き抜く効果が期待できる。さらに検定合格1回につき、リフレッシュ時間tクロック分の印加時間を追加する。例えば、検定回路50による乱数検定にてa回合格後、不合格となった場合では、((a+1)×t)クロック分の時間の電圧印加を行う。
カウンタ73のクロック入力端子へ検定回路50からの検定合格信号S2_OKが入力され、検定回路50による合格回数をカウントし、その数をラッチ回路74で検定不合格信号S2_NGの立ち上がりのタイミングで記録する。さらに、カウンタ回路75のクロック入力端子CKへ基準クロック信号CLK_0を入力し、クロック数をカウントする。このカウント値は比較回路76に送られ、基準値tクロックと比較され、上記カウント値
が基準値tクロックとなったところで、比較回路27から値が「1」となる信号を出力される。この信号は、OR回路79に入力され、このOR回路79の出力によってカウンタ回路75のカウント値がリセットされる。また、OR回路79にはリセット信号R1も入力される。
また、比較回路76の出力は、カウンタ回路77のクロック入力端子へ入力され、カウントされる。比較回路78は、ラッチ回路74によって出力された検定回路50での合格数SOK(a)に1を足した数(ここでは(a+1))を基準値とし、この基準値と、カウンタ回路77からの出力であるカウント値とを比較する。そして、カウンタ回路77からの出力であるカウント値が(a+1)となったとき、値が「1」となるOUT1を出力し、スイッチ回路72をオフさせる。すなわち、初期化回路70から出力される信号OUT1は、ランダムノイズ生成素子10の初期化が終了したことを示す信号となる。
このような構成の初期化回路70によって、回路起動時、特定の時間および使用回数時に、電源71の電圧をランダムノイズ生成素子10の基板に印加することが可能となり、ランダムノイズ生成素子10を初期化、すなわち、リフレッシュすることができる。
次に、本実施形態に係る最適電圧調整回路20の動作を、図3および図10を参照して説明する。図10は、本実施形態に係る最適電圧調整回路20の動作を説明する波形図である。
初期化回路70から出力される、ランダムノイズ生成素子10の初期化終了を示す信号OUT1がオン状態、すなわち値が「1」になると、制御回路100から出力される制御信号S3が「1」となり、切り換え信号SEがオン状態になる。これよりスイッチ23eがオンになり、MOSトランジスタ22eとMOSトランジスタ22fとの共通接続ノードにおける電位がランダムノイズ生成素子10のゲートに印加される。上記共通接続ノードにおける電圧がゲートに印加された状態でランダムノイズ生成素子10より出力された物理乱数は、乱数変換回路30でデジタルランダム信号RSへ変換される。乱数変換回路30より出力されたデジタルランダム信号を平滑化回路40で平滑化し、この平滑化されたデジタルランダム信号を検定回路50で検定を行う。
その検定結果が合格であれば検定合格信号S2_OKによって、スイッチ60がオン状態にされ、平滑化回路40の出力であるデジタルランダム信号が乱数として、外部に出力される。検定結果が不合格の場合は、検定不合格信号S2_NGによってオフ状態とされ、平滑化回路40の出力であるデジタルランダム信号が乱数として、外部に出力されない。すなわち定期的に行われる検定回路50による乱数検定に合格し続ける限り、乱数として外部に出力され続ける。
また、検定結果が不合格であった場合には、検定不合格信号S2_NGがシフトレジスタ25のクロック端子へ入力される。これより、切り換え信号は切り換え信号SEから切り換え信号SDへ移行し、ゲート電圧供給回路21におけるスイッチ23dがオン状態になり、その他スイッチはオフ状態になる。これにより、ランダムノイズ生成素子10のゲートへは、MOSトランジスタ22dとMOSトランジスタ22eとの共通接続ノードにおける電圧が印加される。この状態でランダムノイズ生成素子10より出力された物理乱数は、乱数変換回路30でデジタルランダム信号へ変換される。スイッチ23eがオン状態だったときと同様に、乱数変換回路30より出力されたデジタルランダム信号を、平滑化回路40を介して検定回路50で乱数検定を行い、その結果が合格であればスイッチ60をオン状態にし、不合格であれば、検定不合格信号S2_NGを発生し、上述したことが繰り返される。これにより、乱数検定に合格するまで、のシフトレジスタ25およびゲート電圧供給回路21における印加電圧調整動作が続けられる。
次に、本実施形態の乱数生成装置の動作を、図11を参照して説明する。図11は本実施形態の乱数生成装置の動作を示すフローチャートである。
まず、乱数生成装置を起動し、回路起動時にランダムノイズ生成素子10を初期化(リフレッシュ)する(図11のステップS11)。この初期化は、制御回路100から初期化回路70に回路起動パルス信号P1を送り、初期化動作を開始させ、ランダムノイズ生成素子10の基板に正の電圧を印加する。この時、ランダムノイズ生成素子10のゲートに印加するに適した電圧を、最適電圧調整回路20により、調整する(ステップS12)。本実施形態では、ドレイン電圧は固定とし、ゲート電圧を調整することで許容範囲のドレイン電流を取得しているが、必要によってはドレイン電圧、ゲート電圧ともに調整することも可能である。
ここで出力ドレイン電流およびドレイン電圧が許容範囲であるか否かは、検定回路50によって平滑化回路40を介して得られる乱数変換回路30の出力について確率統計検定を行い、その合否によって判断する(ステップS13)。検定に合格すれば、現在、ランダムノイズ生成素子10へ印加されているゲート電圧値が乱数出力に際して基準を満たす印加条件と判断し、そのまま、出力乱数の使用を許可し、スイッチ60を介して外部に出力する(ステップS14)。そして、検定回路50によって出力乱数を定期的に検定する(ステップS15)。この検定に合格すれば、ステップS14に戻り、上述のことを繰り返す。ステップS15における定期的な検定に不合格の場合は、ステップS11に戻り、ランダムノイズ生成素子10をリフレッシュし、上述のことを繰り返す。
ステップS13における検定に不合格の場合は、ステップS16に進み、設定電圧ステップの1サイクルが終了したか否かの判断を行う。ここで、設定電圧ステップの1サイクルとは、最適電圧調整回路20に印加される電圧VG1を固定したときに、スイッチ23eからスイッチ23aまで順次オン状態として、ランダムノイズ生成素子10のゲートに印加する電圧(設定電圧)を順次変えて行うことを意味する。本実施形態の場合は、5種類の設定電圧を変えて行っている。設定電圧ステップの1サイクルが終了していない場合は、ステップS12に戻り、最適電圧調整回路20により、ランダムノイズ生成素子10に印加するゲート電圧を変更し、その変更したゲート電圧で再度検定を行う(ステップS13)。ステップS13にいて行われる検定に合格すれば、ステップS14に進み、上述のことが繰り返される。不合格であれば、ステップS16に進み、上述したことが繰り返される。
ステップS16において、設定電圧ステップの1サイクルが終了したと判断された場合は、サイクル数が規定値Aに達しているか否かの判断がステップS17において行われ、規定値Aに達していると判断された場合は、動作を終了する。規定値Aに達していないと判断された場合は、ステップS11に戻り、上述したことが繰り返される。なお、このとき、設定電圧ステップのサイクルを複数回繰り返すことにより、ランダムノイズ生成素子10のトラップ膜から電荷が除去される可能性が高くなり、検定に合格する可能性が高くなる。この規定値Aに関しては任意に設定することができるが、ある程度の回数この動作を繰り返しても検定に合格しない場合には、その後も検定に合格する乱数を取得できる可能性はかなり低いと判断し、規定値Aは10回程度とすることが望ましい。さらに、上記のように、ある程度の回数で最適電圧値調整回路20によって調整した後、それでも検定に合格する乱数を生成できない場合には、ランダムノイズ生成素子10が破壊されたものと判断し、そのランダムノイズ生成素子10を使用した乱数生成を中止する、もしくは、予め用意していた予備のランダムノイズ生成素子と交換するといった措置をとることが望ましい。
以上説明したように、本実施形態によれば、トラップを利用したランダムノイズ生成素子を用いても、定期的にランダムノイズ生成素子を初期化しているので、使用回数や使用頻度に関わらず、物理乱数としての予測不可能性、再現不可能性を持ち合わせた高品質な乱数を生成することができる。
(第2実施形態)
次に、本発明の第2実施形態による乱数生成装置を説明する。
本実施形態の乱数生成装置は、第1実施形態の乱数生成装置において、モノビット・テストを行う図6に示す検定回路50を、ロングラン・テストを行う図12に示す検定回路120に置き換えた構成となっている。
この検定回路120は、ある総数の乱数列中が全て「0」または「1」であったときに不合格とするものであり、その一具体例の構成を図12に示す。この具体例の検定回路120は、カウンタ回路121と、比較回路122と、カウンタ回路123と、比較回路124と、NOT回路125と、カウンタ回路126と、比較回路127と、カウンタ回路128と、比較回路129と、AND回路130と、NAND回路131と、D型フリップフロップ132とを備えている。この検定回路120は、FIPS(Federal Information Processing Standard)140−2の項目に含まれるロングラン・テストに基づいている。
この検定回路120の動作を説明する波形図を図13に示す。ロングラン・テストによる合否は、乱数20000ビット中に、「0」もしくは「1」が連続して26個出力された乱数列の組が1〜26組の場合を不合格とするテストである。
カウンタ回路121は、平滑化回路40から出力されるランダムなデジタル乱数列のうち、連続する「1」の数をカウントする。また、平滑化回路40から出力される乱数が「1」から「0」となった際は、フリップフロップ132からの信号により、カウンタ回路121はリセットされる。また、比較回路122は、カウンタ回路121がリセットされる直前のカウントされた値を読み取り、その値が26以上であったときには「1」を出力し、26未満であったときには「0」を出力する。カウンタ回路123は、比較回路122からの出力される「1」の回数をカウントし、比較回路124は、検定開始から20000ビット目で立ち上がる信号T2により、そのタイミングにおけるカウンタ回路123おける値を読み取り、その値が1〜26であったときには「1」を出力し、0もしくは27以上であったときには「0」を出力する。
また、NOT回路125は、平滑化回路40からの出力を受けて反転し、その反転した信号はカウンタ回路126に送られる。これより、カウンタ回路126は、平滑化回路40からの出力されるランダムなデジタル乱数列のうち、連続する「0」の数をカウントする。また、平滑化回路40からの出力乱数が「1」から「0」となった際は、フリップフロップ132からの信号により、カウンタ回路126はリセットされる。また、比較回路127は、カウンタ回路126がリセットされる直前のカウントされた値を読み取り、その値が26以上であったときには「1」を出力し、26未満であったときには「0」を出力する。さらに、カウンタ回路128は、比較回路127からの出力される「1」の回数をカウントし、比較回路129は、検定開始から20000ビット目で立ち上がる信号T2により、そのタイミングにおけるカウンタ回路128における値を読み取り、その値が1〜26であったときには「1」を出力し、0もしくは27以上であったときには「0」を出力する。
比較回路124からの出力は、平滑化回路40から出力される「1」の乱数列の長さと組数の評価結果であり、比較回路129からの出力は、平滑化回路40から出力される「0」の乱数列の長さと組数の評価結果である。そのため、20000ビット中に、「1」、「0」ともに相応の乱数列の長さと組数を含んでいればAND回路130の出力は「1」となり、その出力信号は検定合格信号S2_OKとして、出力される。また、「1」、「0」のどちらか一方でも合格条件を満たさなければ、AND回路130の出力は「0」となり、NAND回路131の出力が「1」となる。このNAND回路131の出力は検定不合格信号S2_NGとなり、他回路へその信号は送信される。
本実施形態の乱数生成装置は、第1実施形態の乱数生成装置とは検定方法は異なるが、第1実施形態と同様に、定期的にランダムノイズ生成素子を初期化しているので、使用回数や使用頻度に関わらず、物理乱数としての予測不可能性、再現不可能性を持ち合わせた高品質な乱数を生成することができる。
(第3実施形態)
次に、本発明の第3実施形態による乱数生成装置を説明する。
本実施形態の乱数生成装置は、第1実施形態において、図8に示す初期化回路70を、図14に示す初期化回路140に置き換えた構成となっている。図14に示す初期化回路140は、図8に示す初期化回路70において、電源71およびスイッチ回路72を、2つの電源142、144と、スイッチ回路146に置き換えた構成となっており、第1および第2の実施形態と異なり、初期化の際に、ランダムノイズ生成素子10の基板に正電圧を印加する代わりに、ゲートに負電圧を印加する構成となっている。この初期化回路140の動作を説明する波形図を図15に示す。
電源142は、乱数取得時にランダムノイズ生成素子10のゲートに電圧が与えられる最適電圧調整回路20におけるゲート電圧供給回路21の出力と同じ電圧となる電源であり、電源144は、ランダムノイズ生成素子10を初期化する際に印加する電圧用の電源である。回路起動時、検定回路50において不合格とされた時,特定の時間および使用回数時にリセット信号R1によってカウンタ回路75,77をリセットし、制御回路100より出力された回路起動パルス信号P1により、カウンタ回路75,77のVDD信号をONにする。制御回路100より出力されるリセット信号R1がONとなった後、ランダムノイズ生成素子10のトラップ絶縁膜中に蓄積されたままになっている電荷を引き抜くために、回路起動パルス信号P1でスイッチ回路82の接続が電源142から電源144へと切り替える。これにより、ランダムノイズ生成素子10のゲートに、電源142で印加する電圧とは逆符号(負)の電圧値の印加が開始される。電圧の印加時間は、クロックCLK_0によるtクロック分を1セットとし、回路起動時のリフレッシュには(t×1)クロック分の時間の電圧印加をランダムノイズ生成素子10のゲートへ行う。さらにチェックテスト合格1回につき、リフレッシュ時間tクロック分の印加時間を追加する。例えば、検定回路50による乱数検定にてa回合格後、不合格となった場合では、((a+1)×t)クロック分の時間の電圧の印加を行う。カウンタ73のクロック入力へ検定合格信号S2_OKが入力され、検定回路50による合格回数をカウントし、その数をラッチ回路74において、検定不合格信号S2_NGを受信したタイミングで記録する。さらに、カウンタ回路75のクロック入力端子CKへクロックCLK_0を入力し、tクロックとなったところで、比較回路76から信号「1」を出力し、この信号をカウンタ回路77のクロック入力端子へ入力する。比較回路78は、ラッチ回路74によって出力された検定回路50での合格数+1の数を記録し、カウンタ回路77の出力がその値と等しくなったとき、比較回路78から信号「1」を出力し、この信号をOUT1とする。そして出力信号OUT1を受け、スイッチ回路146が接続を電源144から電源142へ切り替える。
以上説明したように、本実施形態は、第1実施形態と初期化の方法が異なるが、第1実施形態と同様に、定期的にランダムノイズ生成素子を初期化しているので、使用回数や使用頻度に関わらず、物理乱数としての予測不可能性、再現不可能性を持ち合わせた高品質な乱数を生成することができる。
(第4実施形態)
次に、本発明の第4実施形態による乱数生成装置を説明する。
本実施形態の乱数生成装置は、第2実施形態の乱数生成装置において、初期化回路70を、第3実施形態で説明した図14に示す初期化回路140に置き換えた構成となっている。
本実施形態は、第2実施形態とは初期化方法は異なるが、定期的にランダムノイズ生成素子を初期化しているので、使用回数や使用頻度に関わらず、物理乱数としての予測不可能性、再現不可能性を持ち合わせた高品質な乱数を生成することができる。
(第5実施形態)
次に、本発明の第5実施形態による乱数生成装置を説明する。
本実施形態の乱数生成装置は、第1実施形態の乱数生成装置において、初期化回路70を、図16に示す初期化回路150に置き換えた構成となっている。図16に示す初期化回路150は、図8に示す初期化回路70において、電源71およびスイッチ回路72を、排他的論理和回路(以下、XOR回路ともいう)151と、カウンタ回路152と、OR回路153と、ラッチ回路154と、MOSトランジスタがダイオード接続された抵抗素子155に置き換えた構成となっている。この初期化回路150の動作を説明する波形図を図17に示す。
この初期化回路150においては、回路起動時、検定回路50において不合格とされた時、または特定の時間および使用回数時にリセット信号R1によって、カウンタ回路75、77、152、およびラッチ回路154をリセットし、カウンタ回路75、77、ラッチ回路154のVDD信号をONにする。リセット信号R1がONとなった後、回路起動パルス信号P1をラッチ回路154のクロック入力端子へ入力し、ランダムノイズ生成素子10の基板へ電圧印加を開始する。電圧の印加時間は、クロックCLK_0によるtクロック分を1セットとし、回路起動時のリフレッシュには(t×1)クロック分の時間の電圧印加をランダムノイズ生成素子10の基板へ抵抗素子155を介して行う。さらに検定合格1回につき、リフレッシュ時間tクロック分の印加時間を追加する。例えば、検定回路50による乱数検定にてa回合格後、不合格となった場合では、((a+1)×t)クロック分の時間の電圧印加を行う。カウンタ73のクロック入力端子へ検定合格信号S2_OKが入力され、検定回路50による合格回数をカウントし、その数をラッチ回路74で検定不合格信号S2_NGの受信タイミングで記録する。さらに、カウンタ75のクロック入力端子CKへクロックCLK_0を入力し、tクロックとなったところで、比較回路76から信号「1」を出力し、この信号をカウンタ回路77のクロック入力端子へ入力する。比較回路78は、ラッチ回路74によって出力された検定回路50での合格数+1の数を記録し、カウンタ回路77の出力がその値と等しくなったとき値が「1」となる信号OUT1を出力する。比較回路78より出力された信号OUT1はXOR回路151へ入力され、2ビットカウンタ152は信号OUT1が「1」となったとき、2桁目が「1」となり、ラッチ回路154をリセットし、ランダムノイズ生成素子10の基板への電圧印加は停止する。
本実施形態は、第1実施形態とは初期化方法は異なるが、定期的にランダムノイズ生成素子を初期化しているので、使用回数や使用頻度に関わらず、物理乱数としての予測不可能性、再現不可能性を持ち合わせた高品質な乱数を生成することができる。
(第6実施形態)
次に、本発明の第6実施形態による乱数生成装置を説明する。
本実施形態の乱数生成装置は、第2実施形態の乱数生成装置において、初期化回路70を、第5実施形態で説明した初期化回路150に置き換えた構成となっている。
本実施形態は、第2実施形態とは初期化方法は異なるが、定期的にランダムノイズ生成素子を初期化しているので、使用回数や使用頻度に関わらず、物理乱数としての予測不可能性、再現不可能性を持ち合わせた高品質な乱数を生成することができる。
(第7実施形態)
次に、本発明の第7実施形態による乱数生成装置を図18に示す。
本実施形態の乱数生成装置は、第1実施形態の乱数生成装置において、最適電圧調整回路20を最適電圧調整回路20Aに置き換えた構成となっている。この最適電圧調整回路20Aは、最適電圧調整回路20と同じ構成を有しているが、ゲート電圧供給回路21の出力をランダムノイズ生成素子10のゲートに印加するばかりでなく、ドレインにも印加するように構成されている。すなわち第1乃至第6実施形態では、ランダムノイズ生成素子10のドレイン電圧は固定とし、ゲート電圧のみ調整する構成であったが、本実施形態では、ランダムノイズ生成素子10のドレインとゲートを接続した構成とする。この構成を取ることにより、常にランダムノイズ生成素子10のドレインとゲートに印加される電圧が等しくなり、ドレイン電流は常に飽和領域になる。そのため、ドレイン電流の揺らぎは、線形領域のときと比べて、やや小さくはなるが、ドレイン電流の平均値の変動は抑えられると考えられる。そのため、検定回路120による検定を通る乱数取得に最適なランダムノイズ生成素子10へ印加する電圧条件を一度決定すれば、その後、ドレイン電流の平均電流の変動幅が減少し、最適電圧調整回路20Aを起動する回数を減らすことが可能となる。
本実施形態における最適電圧調整回路20Aの動作を説明する波形図を図19に示す。
本実施形態において、ランダムノイズ生成素子10の初期化終了信号OUT1がオン状態、すなわち値が「1」になると、制御回路100から出力される制御信号S3が「1」となり、切り換え信号SEがオン状態になる。これよりスイッチ23eがオン状態になり、MOSトランジスタ22eとMOSトランジスタ22fとの共通接続ノードにおける電位がランダムノイズ生成素子10のゲートとドレインに印加される。上記共通接続ノードにおける電圧がランダムノイズ生成素子10のゲートおよびドレインに印加された状態でランダムノイズ生成素子10より出力された物理乱数は、上述したように、ドレイン電流の平均値の変動は抑えられたものとなる。そして、この物理乱数は、乱数変換回路30でデジタルランダム信号RSへ変換される。乱数変換回路30より出力されたデジタルランダム信号を平滑化回路40で平滑化し、この平滑化されたデジタルランダム信号を検定回路50で検定を行う。
その検定結果が合格であれば検定合格信号S2_OKによって、スイッチ60がオン状態にされ、平滑化回路40の出力であるデジタルランダム信号が乱数として外部に出力される。上記検定結果が不合格の場合は、検定不合格信号S2_NGによってスイッチ60がオフ状態にされ、平滑化回路40の出力であるデジタルランダム信号が乱数として外部に出力されない。すなわち、定期的に行われる検定回路120による乱数検定に合格し続ける限り、乱数として外部に出力され続ける。
また、検定結果が不合格であった場合には、検定不合格信号S2_NGがシフトレジスタ25のクロック端子へ入力される。これより、切り換え信号は切り換え信号SEから切り換え信号SDへ移行し、ゲート電圧供給回路21におけるスイッチ23dがオン状態になり、その他スイッチはオフ状態になる。これにより、ランダムノイズ生成素子10のゲートへは、MOSトランジスタ22dとMOSトランジスタ22eとの共通接続ノードにおける電圧が印加される。この状態でランダムノイズ生成素子10より出力された物理乱数は、乱数変換回路30でデジタルランダム信号へ変換される。スイッチ23eがオン状態だったときと同様に、乱数変換回路30より出力されたデジタルランダム信号を、平滑化回路40を介して検定回路50で乱数検定を行い、その結果が合格であればスイッチ60をオン状態にし、不合格であれば、検定不合格信号S2_NGを発生し、上述したことが繰り返される。これにより、乱数検定に合格するまで、のシフトレジスタ25およびゲート電圧供給回路21における印加電圧の調整動作が続けられる。この印加電圧の調整動作は、乱数検定に合格するまで、続けられる。しかし、設定したすべての電圧印加条件で検定が不合格であった場合には、第1実施形態で説明したように、再度、初期化回路70にてランダムノイズ生成素子10を初期化し、最適電圧調整回路20Aの動作を初めから行う。ただし、ある回数Xだけランダムノイズ生成素子10の初期化、最適電圧調整回路20Aの調整動作を繰り返しても検定で不合格が続いた場合には、この乱数生成装置での乱数出力を停止する。この停止を決定する回数Xに関しては任意であるが、数十回この動作を繰り返しても検定に合格しない場合には、その後も検定に合格する乱数を取得できる可能性はかなり低いと判断し、高々試行回数は10回程度とすることが望ましい。
以上説明したように、本実施形態は、第1実施形態とは検定方法は異なるが、定期的にランダムノイズ生成素子を初期化しているので、使用回数や使用頻度に関わらず、物理乱数としての予測不可能性、再現不可能性を持ち合わせた高品質な乱数を生成することができる。
(第8実施形態)
次に、本発明の第8実施形態による乱数生成装置を説明する。
本実施形態の乱数生成装置は、第7実施形態の乱数生成装置において、検定回路50を第2実施形態で説明した図12に示す検定回路120に置き換えた構成となっている。
本実施形態は、第7実施形態と検定方法は異なるが、定期的にランダムノイズ生成素子を初期化しているので、使用回数や使用頻度に関わらず、物理乱数としての予測不可能性、再現不可能性を持ち合わせた高品質な乱数を生成することができる。
(第9実施形態)
次に、本発明の第9実施形態による乱数生成装置を説明する。
本実施形態の乱数生成装置は、第7実施形態の乱数生成装置において、初期化回路70を第3実施形態で説明した図14に示す初期化回路140に置き換えた構成となっている。
本実施形態は、第7実施形態と初期化方法は異なるが、定期的にランダムノイズ生成素子を初期化しているので、使用回数や使用頻度に関わらず、物理乱数としての予測不可能性、再現不可能性を持ち合わせた高品質な乱数を生成することができる。
(第10実施形態)
次に、本発明の第10実施形態による乱数生成装置を説明する。
本実施形態の乱数生成装置は、第9実施形態の乱数生成装置において、検定回路50を第2実施形態で説明した図12に示す検定回路120に置き換えた構成となっている。
本実施形態は、第9実施形態と検定方法は異なるが、定期的にランダムノイズ生成素子を初期化しているので、使用回数や使用頻度に関わらず、物理乱数としての予測不可能性、再現不可能性を持ち合わせた高品質な乱数を生成することができる。
(第11実施形態)
次に、本発明の第11実施形態による乱数生成装置を説明する。
本実施形態の乱数生成装置は、第7実施形態の乱数生成装置において、初期化回路70を第5実施形態で説明した図16に示す初期化回路150に置き換えた構成となっている。
本実施形態は、第7実施形態と初期化方法は異なるが、定期的にランダムノイズ生成素子を初期化しているので、使用回数や使用頻度に関わらず、物理乱数としての予測不可能性、再現不可能性を持ち合わせた高品質な乱数を生成することができる。
(第12実施形態)
次に、本発明の第12実施形態による乱数生成装置を説明する。
本実施形態の乱数生成装置は、第11実施形態の乱数生成装置において、検定回路50を第2実施形態で説明した図12に示す検定回路120に置き換えた構成となっている。
本実施形態は、第11実施形態と検定方法は異なるが、定期的にランダムノイズ生成素子を初期化しているので、使用回数や使用頻度に関わらず、物理乱数としての予測不可能性、再現不可能性を持ち合わせた高品質な乱数を生成することができる。
トラップ絶縁膜中に多くのトラップを有するとき、図2に示すように、ドレイン電流は高速にランダムな増減を繰り返しながらも、時間とともに単位時間当たりの平均電流値が減少する現象が見られる。これは、電圧を長時間印加し続けることで、チャネル領域1とトラップ絶縁膜3との間で電荷の充放電はされながらも、一部の電荷はトラップ絶縁膜3にそのまま蓄積され、トラップされた電荷によるクーロン遮蔽効果よってキャリア電子が侵入できない領域がトラップ絶縁膜3において徐々に増えることで、ランダムな変化は残しながらもチャネルは高抵抗になることが原因と考えられる。
以上説明したように、本発明の第1乃至第12実施形態による乱数生成装置は、トラップ源となるランダムノイズ生成素子中のトラップ膜に蓄積された電荷を定期的に放出させ、ランダムノイズ生成素子を初期化する初期化回路を備えているので、常に使用可能な範囲内の出力値を確保が可能なランダムノイズ生成素子となり、1乱数源素子の寿命の長期化を可能とし、乱数生成装置に設けられるランダムノイズ生成素子は最小限の数に抑えることができる。さらに、定期的に検定をかけ、出力乱数をモニターすることで、ランダムノイズ生成素子が正常な乱数出力が可能な状態にあるのか確認が可能となる。これら両方の機能を合わせ持つことで、常に高いセキュリティを確保し続けることの可能な乱数生成装置を得ることができる。
(第13乃至第16実施形態の概要)
上記第1乃至第12実施形態では、定期的にトラップ絶縁膜に蓄積された電荷を放出させることにより、ランダムノイズ生成素子10におけるトラップ絶縁膜を初期状態に戻すための初期化回路を設けた。しかし、図2に示すように、平均ドレイン電流は、指数関数的に減少した後、1000秒付近を境に安定してくる。そこで、以下の第13乃至第16実施形態においては、トラップ絶縁膜中のトラップに電荷を溜め込み、トラップへの電荷の出入りが平衡に達し、ドレイン電流が安定する領域になってから乱数取得を開始するために、上記第1実施形態において、ドレイン電流モニター回路が新たに設けられた乱数生成装置について説明する。
まず、第13乃至第16実施形態のいずれかによる乱数生成装置の動作の概要を、図20を参照して説明する。
まず、乱数生成装置を起動する。そして、ランダムノイズ生成素子から出力されるドレイン電流の平均値は図2に示すような指数関数的振る舞いを示し、トラップ絶縁膜のトラップへの電荷の出入りが平衡に達する付近でドレイン電流の平均値はほぼ一定となる(ステップS21)。一定の時間間隔をあけ、段階的にドレイン電流付近の電流値と比較を行うことでこのドレイン電流の平均値の変化をモニターし、ほぼ一定となるまで待つ。
そして、ランダムノイズ生成素子への入力に適した印加電圧を調整する(ステップS22)。ここではドレイン電圧は固定とし、ゲート電圧を調整することで許容範囲のドレイン電流を取得することを仮定した。必要によってはドレイン電圧、ゲート電圧ともに調整することも可能である。
ランダムノイズ生成素子から出力されたドレイン電流が許容範囲であるか否かは、乱数変換回路の後段に設けられる検定回路によって出力乱数について確率統計検定を行い、その合否によって判断する(ステップS23)。検定に合格すれば、現在、ランダムノイズ生成素子へ印加されている値が乱数の出力に際して基準を満たす印加条件と判断し、そのまま乱数の出力を開始する(ステップS24,S25)。
しかし、検定に不合格であれば、印加電圧を変更し、その変更に再度検定を行う(ステップS26、S22)。検定に合格すれば、この印加条件を採用し、不合格であれば、再度印加条件値を変更する(ステップS26,S22)。電圧印加条件の調整の際は、低電圧から高電圧へ順に確認することが望ましい。
電圧印加条件が決定し、乱数取得を開始後も、定期的に出力乱数を検定し、その乱数の質に変化がないか確認を行う(ステップS25)。確認を行う頻度は任意に設定可能とする。定期的な出力乱数の検定において、合格であればそのまま乱数の取得を継続する。不合格の場合には、再び乱数源素子のドレイン電流の安定を待ち、その値をモニターする(ステップS21)。そして、ドレイン電流の平均値がほぼ一定となれば、直前まで採用していた印加条件で乱数取得を行い、その出力乱数の検定の結果が合格であればそのまま乱数取得を継続する。検定に不合格であった場合は、再び印加条件の調整を初めから行う。この後動作は上記動作の繰り返しとなる。
ただし、ある回数Xだけランダムノイズ生成素子の平均ドレイン電流の安定待ち、最適電圧調整回路の動作(設定電圧ステップのサイクル)を繰り返しても検定で不合格が続いた場合には(ステップS26、S27)、この乱数生成装置での乱数出力を停止する。この停止を決定する回数Xに関しては任意であるが、ある程度の回数この動作を繰り返しても検定に合格しない場合には、その後も検定に合格する乱数を取得できる可能性はかなり低いと判断し、高々試行回数Xは10回程度とすることが望ましい。さらに、上記のように、ある程度の回数で最適電圧値特定回路を施行した後、それでも検定に合格する乱数を生成できない場合には、ランダムノイズ生成素子が破壊されたものと判断し、そのランダムノイズ生成素子を使用した乱数生成を中止する、もしくは、予め用意していた予備のランダムノイズ生成素子と交換することが望ましい。
(第13実施形態)
次に、本発明の第13実施形態による乱数生成装置を、図21を参照して説明する。
本実施形態の乱数生成装置は、図3に示す第1実施形態の乱数生成装置において、初期化回路70の代わりに、図21に示すドレイン電流モニター回路160を新たに設けた構成となっている。このドレイン電流モニター回路160は、ランダムノイズ生成素子10から出力されるドレイン電流の平均値の変化をモニターし、ドレイン電流の平均値の安定具合をチェックする。このドレイン電流モニター回路160は、スイッチと、抵抗の役割を担うMOSFETとで構成される電流供給回路161と、シフトレジスタ170と、コンパレータ181と、簡易検定回路182と、ラッチ回路183〜192と、AND回路193〜197と、OR回路198と、制御回路199とを備えている。
電流供給回路161は、5個のスイッチ1621〜1625と、5個のMOSトランジスタ1641〜1645とを備えている。スイッチ162i(i=1,・・・,5)と、MOSトランジスタ164iは直列に接続されている。そして、各スイッチ164i(i=1,・・・,5)は、一端が駆動電源VD2に接続され、他端がMOSトランジスタ164iのソースおよびゲートに接続され、シフトレジスタ170から送られてくる切り換え信号Si+5に基づいて開閉動作を行う。各MOSトランジスタ1641〜1645のドレインは、コンパレータ181に接続される。
このドレイン電流モニター回路160の動作を、図22乃至図24を参照して説明する。
図22および図23はドレイン電流モニター回路160の動作を説明する波形図である。まず、値が「1」の制御信号S_onが制御回路100からシフトレジスタ170に送られてきて、ドレイン電流モニター回路160が起動する。そして、電流供給回路161は、スイッチ162i(i=1,・・・,5)が切り換え信号Si+5に基づいて順にオンになる。スイッチ162i(i=1,・・・,5)が順にオンになることにより、電流供給回路161の出力は、段階的に大きくなる。すなわち、本実施形態では、電流供給回路161は、順次大きくなる5段階の電流I6、I7、I8、I9、I10を供給する。電流I6はスイッチ1621がオンしたとき、電流I7は(>I6)スイッチ1621、1622がオンしたとき、電流I8は(>I7)スイッチ1621、1622、1623がオンしたとき、電流I9は(>I8)スイッチ1621、1622、1623、1624がオンしたとき、電流I10は(>I9)スイッチ1621、1622、1623、1624、1624がオンしたときに供給される電流である。この電流供給回路161の最大電流I10は、電流供給回路161中の合成抵抗と、駆動電圧VD2によって決定される。このとき、初めに試す電流値I6は、初期状態のランダムノイズ生成素子10のドレイン電流と同等の電流値となるよう、予めMOSトランジスタ1641〜1645による抵抗値、および駆動電圧VD2およびゲート電圧VG2を調整しておく。ここでスイッチ162i(i=1,・・・,5)の個数は、シフトレジスタ170のシフト段の段数と同数であるが、この個数はランダムノイズ生成素子10のドレイン電流と比較する電流レベル刻みを決定するものであり、両者の数は任意である。比較を行う電流レベルの分布として、最大電流は、ドレイン電流の初期状態における電流値と同等の電流値とし、最小電流は、ランダムノイズ生成素子10へ電圧を長時間印加した際のドレイン電流値よりもやや小さい値とすると、コンパレータ181における電流値の比較には望ましい。
実験により取得したランダムノイズ生成素子10のドレイン電流の経時変化を示すグラフに本実施形態であるドレイン電流モニター回路160の動作における比較対象となる電流値および時間について加筆したものを図24に示す。ランダムノイズ生成素子10のドレイン電流が、切り換え信号S6およびS7をオン状態(「1」)にしたときの電流値I7と、切り換え信号S6、S7およびS8をオン状態にしたときの電流値I8との間で安定したときについて記述する。
ランダムノイズ生成素子10より出力される電流値と、スイッチ1621〜1625を含む電流供給回路161からの出力電流との比較をコンパレータ181により行う。電流供給回路161より出力される電流を基準電流としておく。コンパレータ181より出力されたデジタル信号は、簡易検定回路182へ入力される。簡易検定回路182は、上記実施形態で説明した検定回路よりも簡易的かつ目的が異なる。ここでは、決められた長さの乱数列の中での「1」と「0」の個数のどちらが優位(多い)かのみを感知し、コンパレータ181における電流値の比較の結果をシフトレジスタ170に送出することを目的とする。この簡易検定回路182については後で記述する。
このような動作をする簡易検定回路182においては、簡易検定回路182からの出力は、コンパレータ181による出力値が「1」が優位のとき「1」を出力する信号S_W1、「0」が優位のとき「1」を出力する信号S_W0とする。このとき、信号S_W0が「1」であれば、基準値のほうがドレイン電流よりも大きいことになる。スイッチ1621のみがオンであったとき、コンパレータ181より出力される信号S_compを基準クロック信号CLK_0のタイミングでデジタル乱数を取得した際に、データ「1」のほうがデータ「0」よりも多かった場合には、簡易検定回路182からの出力信号S_W1が「1」となる。この信号S_W1は、シフトレジスタ170のクロック入力端子に入力される。信号S_W1が「1」となるタイミングで、信号S_on(S6a)が信号S7aへシフトする。電流供給回路161に含まれるスイッチ1621〜1625はそれぞれ、切り換え信号S6〜S10がオン状態(「1」の状態)のときに、オンとなる。また、シフトレジスタ170の出力信号S6a〜S10aは、フリップフロップ183、185、187、189、191に送られるとともに制御回路199にも送られる。そして、制御回路199は、それぞれの信号S6a〜S10aが「1」となったら、リセット信号R3が「1」になるまで、それらの値を保持する切り換え信号S6〜S10を出力し、スイッチ1621〜1625に送出する。
スイッチ1621のみがオンであって、かつ信号S_W1が「1」となったとき、電流供給回路161、シフトレジスタ170により、スイッチ1621に加えスイッチ1622もオンとなる。この後の動作は、スイッチ1621がオンのときと同様に、基準電流I7と、ランダムノイズ生成素子10のドレイン電流とがコンパレータ181において比較され、その後、簡易検定回路182において検定が行われる。この電流モニター回路160の動作説明では、ランダムノイズ生成素子10のドレイン電流が、電流供給回路161から供給される電流値I7と、電流値I8との間で安定すると仮定しているので、コンパレータ181の出力信号S_compは「1」が多くなる。このため、簡易検定回路182による検定は、出力信号S_W1が「1」となる結果が得られる。この信号S_W1がシフトレジスタ170のクロック入力端子に入力されると、シフトレジスタ170から信号S8aが出力される。制御回路199は、入力された信号S8aに基づいて、リセット信号R3がオン状態(「1」)となるまで、信号S8aを保持し続ける信号S8を出力し、スイッチ1623をオンにする。このとき、電流供給回路161においては、3個のスイッチ1621、1622、1623がオンとなっている。したがって、電流供給回路161からは電流I8がコンパレータ181に供給される。そして、コンパレータ181においては、この電流I8を基準電流として、ランダムノイズ生成素子10のドレイン電流と比較される。すると、図24に示すように、コンパレータ181の出力値は「0」が優位となり、検定回路182の出力はS_W0が「1」となる。この信号を制御回路199が受けることで、ランダムノイズ生成素子10への電圧の印加はそのままに、t3クロック分の時間だけ、乱数生成装置の動作を一時中断する。簡易検定の結果、コンパレータ181からの出力S_compの「1」と「0」との割合が「0」のほうが大きくなったとき、信号S_W0は「1」となる。信号S_W0がオン状態(「1」)となってから、t3クロック後、再び、スイッチ1621をオンにする切り換え信号S6を制御回路101から出力し、同様の動作を繰り返す。同様の動作を繰り返した結果、前のルーチンと同じスイッチをオンとしたときと同様のスイッチ(本例ではスイッチ1623)をオンにしたときに、検定結果が初めて「1」が優位な結果から「0」が優位な結果に変わった場合、今回出力された信号S_W0をラッチ回路183,185,187,189,191が保持し、今回のルーチンよりも一つ前のルーチンにおける結果をラッチ回路184,186,188,190,192で保持している。本例ではスイッチ1623のときに連続するルーチンでS_W1が「1」となったため、AND回路195の出力は「1」となり、OR回路198の出力OUT2も「1」となる。出力OUT2が「1」となるとき、ランダムノイズ生成素子10のドレイン電流は安定したとみなし、ドレイン電流モニター回路160の動作を終了し、最適電圧調整回路20の動作を開始する。
(簡易検定回路)
次に、簡易検定回路182の動作について説明する。トラップを利用したランダムノイズ生成素子10を利用した乱数生成装置において、ノイズ信号の発生源となるトラップへ電荷の一部が長時間蓄積したままとなることで、スクリーニング効果により、ランダムノイズ生成素子10から出力されるドレイン電流は、図3に示すような指数関数的な減少が見られる。しかし、図3からわかるように、ある程度時間が経つことでドレイン電流の平均値が安定する。そこで、ドレイン電流の平均値が時間に対し変化が少なく安定してから乱数取得を始めることで、一度その分の時間を待てば、ランダムノイズ生成素子10をリフレッシュ(初期化)することなく乱数取得を行うことができる。
ここで簡易検定回路182は上記で紹介した検定回路よりも簡易的なもので十分とする。ここでは、決められた長さの乱数列の中での「1」と「0」の個数のどちらが優位(多い)かのみを感知し、その結果を返す回路とした。
図25は本実施形態における簡易検定回路182を示す回路図、図26はそのタイミングチャートである。
本実施形態における簡易検定回路182は、カウンタ回路182aと、比較回路182bとを備えている。カウンタ182aの入力端子Dには乱数列、ここではドレイン電流モニター回路160のコンパレータ181からの出力信号S_compが入力され、カウンタ182aのクロック入力端子へは基準クロックCLK_0が入力される。そしてそのカウント値は比較回路182bの入力端子Dへ入力される。カウント開始からt4クロック後に立ち上がる信号をS_t4とし、その区間でのカウント値をS_countとすると、t4クロック間で得られた乱数のうち過半数が「1」ならば、比較回路182bの出力信号S_W1は「1」、過半数が「0」ならば、比較回路182bの出力信号S_W0は「1」となる信号を出力する。ここで、制御回路199から出力される、比較対象の乱数列の長さT4は任意である。検定に必要な乱数列として、例えば、FIPS140−2における検定では必要な乱数列は20000ビットであるが、この簡易検定回路182では、乱数性の良し悪しを判定するわけではなく、ランダムノイズ生成素子10のドレイン電流がその時間においてどの程度の大きさにあるかがわかれば良いので、検定対象となる乱数列がその1/10程度の長さであってもその効果は十分である。
なお、本実施形態においては、図3に示す出力回路60は、ドレイン電流モニター回路160によってランダムノイズ生成素子のドレイン電流が安定し、かつ検定回路50によって検定結果が合格とされた場合に、オンとなり、乱数を外部に出力する。
以上説明したように、本実施形態によれば、トラップを利用したランダムノイズ生成素子を用いても、ランダムノイズ生成素子のドレイン電流をモニターし、ドレイン電流が安定してから乱数の取得を始めるので、使用回数や使用頻度に関わらず、物理乱数としての予測不可能性、再現不可能性を持ち合わせた高品質な乱数を生成することができる。
(第14実施形態)
次に、本発明の第14実施形態による乱数生成装置を説明する。本実施形態の乱数生成装置は、第13実施形態の乱数生成装置において、第1実施形態で説明した検定回路50を第2実施形態で説明した検定回路120に置き換えた構成となっている。
本実施形態も第13実施形態と同様に、トラップを利用したランダムノイズ生成素子を用いても、ランダムノイズ生成素子のドレイン電流をモニターし、ドレイン電流が安定してから乱数の取得を始めるので、使用回数や使用頻度に関わらず、物理乱数としての予測不可能性、再現不可能性を持ち合わせた高品質な乱数を生成することができる。
(第15実施形態)
次に、本発明の第15実施形態による乱数生成装置を説明する。本実施形態の乱数生成装置は、第13実施形態の乱数生成装置において、第1実施形態で説明した最適電圧調整回路20を、第7実施形態で説明した最適電圧調整回路20Aに置き換えた構成となっている。
本実施形態も第13実施形態と同様に、トラップを利用したランダムノイズ生成素子を用いても、ランダムノイズ生成素子のドレイン電流をモニターし、ドレイン電流が安定してから乱数の取得を始めるので、使用回数や使用頻度に関わらず、物理乱数としての予測不可能性、再現不可能性を持ち合わせた高品質な乱数を生成することができる。
(第16実施形態)
次に、本発明の第16実施形態の乱数生成装置を説明する。本実施形態の乱数生成装置は、第15実施形態の乱数生成装置において、第1実施形態で説明した検定回路50を第2実施形態で説明した検定回路120に置き換えた構成となっている。
本実施形態も第15実施形態と同様に、トラップを利用したランダムノイズ生成素子を用いても、ランダムノイズ生成素子のドレイン電流をモニターし、ドレイン電流が安定してから乱数の取得を始めるので、使用回数や使用頻度に関わらず、物理乱数としての予測不可能性、再現不可能性を持ち合わせた高品質な乱数を生成することができる。
なお、上記実施形態においては、検定回路としては、第1実施形態で説明した検定回路50、または第2実施形態で説明した検定回路120を用いたが、これらの検定回路に用いられた検定方法以外の検定方法を用いることができる。例えば、FIPS140−2を構成するランテスト(run test)やポーカーテスト(poker test)などもその1つである。さらに、乱数検定を行う検定回路として、特開2007−164434号公報に記載のような自己相関を用いた乱数検定回路を用いてもよい。
そして、さらに信頼性の高い乱数であることを示すには、エントロピーテストなども行うことが望ましい。用いるテストの採用種類は任意であり、より多くの検定を実施したほうが信頼性は高くなる。
また、最適電圧調整回路の動作条件は、初期化回路の動作後に必ず起動させることが好ましい。そして、検定回路については、幾つかの検定パターンが考えられる。出力乱数の検定は、ハードウェアで実施するだけではなく、ソフトウェアの検定プログラムを適用させてもよい。
また、上記実施形態において、ランダムノイズ生成素子として、非化学量論的SiNのトラップ膜を有するMOSFETを用いた例について説明してきたが、非化学量論的SiNのトラップ膜を有するMOSFETの代わりに通常のMOSFETを使用すれば、RTS(Random telegraph signal)の量を調整する方法として適用できる。
また、上記ランダムノイズ生成素子はトラップ膜の膜厚が薄いMOSFETであったが、このMOSFETは、トンネル絶縁膜を厚くすれば、NANDフラッシュメモリとして用いられるNOMOS型メモリ、そしてフローティングゲートをポリシリコン等で利用したメモリのメモリセルとして用いることができる。