JP6034153B2 - 乱数生成回路 - Google Patents

乱数生成回路 Download PDF

Info

Publication number
JP6034153B2
JP6034153B2 JP2012255734A JP2012255734A JP6034153B2 JP 6034153 B2 JP6034153 B2 JP 6034153B2 JP 2012255734 A JP2012255734 A JP 2012255734A JP 2012255734 A JP2012255734 A JP 2012255734A JP 6034153 B2 JP6034153 B2 JP 6034153B2
Authority
JP
Japan
Prior art keywords
circuit
output
clock
exclusive
circuits
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2012255734A
Other languages
English (en)
Other versions
JP2014102768A (ja
Inventor
安田 心一
心一 安田
哲史 棚本
哲史 棚本
井上 典子
典子 井上
彰 富田
彰 富田
隆輔 村上
隆輔 村上
新保 淳
淳 新保
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Toshiba Corp
Original Assignee
Toshiba Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Toshiba Corp filed Critical Toshiba Corp
Priority to JP2012255734A priority Critical patent/JP6034153B2/ja
Priority to US14/086,389 priority patent/US9547475B2/en
Publication of JP2014102768A publication Critical patent/JP2014102768A/ja
Application granted granted Critical
Publication of JP6034153B2 publication Critical patent/JP6034153B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/58Random or pseudo-random number generators
    • G06F7/588Random number generators, i.e. based on natural stochastic processes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/58Random or pseudo-random number generators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/58Random or pseudo-random number generators
    • G06F7/582Pseudo-random number generators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/58Random or pseudo-random number generators
    • G06F7/582Pseudo-random number generators
    • G06F7/584Pseudo-random number generators using finite field arithmetic, e.g. using a linear feedback shift register

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Manipulation Of Pulses (AREA)

Description

実施形態は、乱数生成回路に関する。
情報通信技術の発展に伴い、情報セキュリティに対する要求が強くなっている。情報セキュリティ技術における予測不可能性は、使用されるランダムデータがどの程度のランダム性を持っているかに依存する。すなわち、情報理論で言うエントロピーが高いデータを用いるほど、セキュリティ強度が強い。たとえば、512ビットの鍵であれば、このエントロピーが512に近ければ近いほど、セキュリティは強固になる。
ランダムデータを生成する方法として、従来、速い発振信号を、それより十分遅いクロックでラッチするという方法がある。速い発振信号にジッタが乗っている場合、クロックタイミングに対して発振信号の位相が揺らぐため、ランダムな出力を得ることが可能になる。ただし、単純にこの構成をとるだけでは、クロックタイミングと発振タイミング、ジッタの量によって、ランダムデータの生成効率がばらつき、エントロピーが小さくなってしまう。最悪の場合には、常にHighもしくはLowとなることがあり、ランダムデータが生成されない。すなわち、製造ばらつきの影響を受けて、性能にばらつきの多い回路構成となってしまう。
特許文献1には、連続的発振回路もしくは断続的発振回路を用いたランダムデータ生成回路と平滑回路について開示されているが、断続的発振回路を用いてもばらつきの問題は回避できない。また、常にHighもしくはLowとなる場合には、平滑回路も用を成さず、高エントロピーのデータを得ることはできない。
特許文献2には、複数の発振回路を用いる、もしくは、発振回路を複数回起動する技術が記載されているが、複数回路を用いることで、用意した中で最大のエントロピーを出力する発振回路の性能にすることは出来るが、それ以上のエントロピーを得ることはできない。また、同一発振回路を複数回起動する方法では、常にHighもしくはLowとなる場合では動作せず、高エントロピーデータを得ることはできない。
特開2004−234153号公報 特開2012−048614号公報
実施形態は、製造ばらつきに強く、発振回路の性能が低エントロピーとなった場合でも、高エントロピーのランダムデータを生成可能な乱数生成回路を提案する。
実施形態によれば、乱数生成回路は、第1乃至第Nの発振回路(Nは2以上の自然数)と、前記第1乃至第Nの発振回路の出力を、第1の周波数を持つ第1のクロックによりラッチする第1乃至第Nのラッチ回路と、第1乃至第Nのエクスクルーシブオア回路と、前記第1乃至第Nのエクスクルーシブオア回路の出力を前記第1のクロックによりラッチする第(N+1)乃至第(2×N)のラッチ回路と、前記第(N+1)乃至第(2×N)のラッチ回路の出力の排他的論理和を出力する第(N+1)のエクスクルーシブオア回路と、前記第(N+1)のエクスクルーシブオア回路から出力されるシリアルデータを、第2の周波数を持つ第2のクロックによりMビットのパラレルデータ(Mは2以上の自然数)に変換するMビットシフトレジスタとを備え、前記第iのエクスクルーシブオア回路の出力は、第iのフィードバック出力と、前記第iのラッチ回路の出力との排他的論理和であり(但し、iは、1〜Nのうちの1つである)、前記第2の周波数は、前記第1の周波数と同じ又はそれよりも低く、前記第1乃至第Nの発振回路の各々は、第1の制御信号が入力されるノア回路と、第2の制御信号及び前記ノア回路の出力が入力され、発振信号を出力するエクスクルーシブオア回路とを備え、前記発振信号は、フィードバック信号として前記ノア回路に入力される
第1の実施例を示す図。 クロック数と0の確率の関係を示す図。 クロック数とエントロピーの関係を示す図。 図1の変形例を示す図。 図1の変形例を示す図。 間引き数とエントロピーの関係を示す図。 断続的発振回路の例を示す図。 第2のクロックを生成する回路を示す図。 図8の構成を具体化した回路図。 第2の実施例を示す図。 第3の実施例を示す図。 第4の実施例を示す図。 第5の実施例を示す図。 第6の実施例を示す図。 第7の実施例を示す図。 図9の回路の動作を示すタイミングチャート。 第2の実施例の変形例を示す図。 確率とエントロピーの関係を示す図。
以下、図面を参照しながら乱数生成回路(エントロピーソース生成回路)の実施形態を説明する。
(第1の実施例)
図1は、エントロピーソース生成回路の第1の実施例である。
エントロピーソース生成回路とは、情報セキュリティなどで用いられる高エントロピーなデータを出力する回路のことである。
第1乃至第Nの発振回路(Nは2以上の自然数)OSCは、それぞれ、ランダムにクロック(“0”/“1”信号)を出力する。第1乃至第Nのラッチ回路LA1は、第1乃至第Nの発振回路OSCの出力を、第1の周波数を持つ第1のクロックCLK1によりラッチする。第1乃至第Nのラッチ回路LA1の出力は、第1乃至第Nのエクスクルーシブオア回路XOR1に入力される。
第(N+1)乃至第(2×N)のラッチ回路LA2は、第1乃至第Nのエクスクルーシブオア回路XOR1の出力を第1のクロックCLK1によりラッチする。ここで、第iのエクスクルーシブオア回路の出力は、第iのラッチ回路の出力と第(N+i)のラッチ回路の出力の排他的論理和となっている。但し、iは、1〜Nのうちの1つである。
N入力エクスクルーシブオア回路XOR2は、第(N+1)乃至第(2×N)のラッチ回路の出力の排他的論理和を出力する。MビットシフトレジスタSRは、N入力エクスクルーシブオア回路XOR2から出力されるシリアルデータを、第2の周波数を持つ第2のクロックCLK2によりMビットのパラレルデータ(Mは2以上の自然数)に変換する。
ここで、第2のクロックCLK2の第2の周波数は、第1のクロックの第1の周波数と同じ又はそれよりも低い。例えば、第2のクロックCLK2は、第1のクロックCLK1を1/X(Xは自然数)に分周したクロックとすることができる。また、1段目の第1乃至第Nのラッチ回路LA1、及び、2段目の第(N+1)乃至第(2×N)のラッチ回路LA2は、それぞれ、フリップフロップ回路FFとすることができる。
なお、N入力エクスクルーシブオア回路XOR2は、Nが大きいときは、回路規模が増大し、信号遅延が大きくなる。このため、N入力エクスクルーシブオア回路XOR2は、N’入力エクスクルーシブオア回路の多段接続に変えることも可能である。但し、N’<Nである。
1段目のN個のフリップフロップ回路FFは、N個の発振回路OSCの発振信号を強制的にラッチすることで、不確定なデータを出力する。ただし、このデータは、前述のとおり、ばらつきなどによって、出力エントロピーが低いことがある。
そこで、N個のエクスクルーシブオア回路XOR1と2段目のN個のフリップフロップ回路FFによる自己フィードバックにより、1段目のN個のフリップフロップ回路FFから出力されたデータの影響を全て残すようにする。
たとえば、発振回路1からnクロック目に出力されるデータをAnとすると、発振回路1の後段にあるエクスクルーシブオア回路の出力は、
1クロック目 A0(+)A1(A0は2段目のFFの出力の初期値、(+)は排他的論理和)
2クロック目 A0(+)A1(+)A2
3クロック目 A0(+)A1(+)A2(+)A3
・・・
となり、初期値から全てのデータの影響が保持されることになる。
エントロピーが低く、ランダムデータの出力確率が低い場合には、N個の発振回路OSCを何度も動かすことでランダムデータの生成の期待値を上げる必要があるが、N個のエクスクルーシブオア回路XOR1によって、ランダムデータの取りこぼしが無くなる。
1段目のN個のフリップフロップ回路FFから0が出力される確率をqとすると、N個のエクスクルーシブオア回路XOR1のnクロック目の出力が0である確率をPnとすれば、
Pn+1 = Pn×q + (1−Pn)×(1−q) …(1)
である。
これは、nが増加するほど0.5に近づいていく(図2)。
1ビットのエントロピーHnは、
Hn=−(Pn × log2(Pn)+(1−Pn) × log2(1−Pn)) …(2)
であるので、N個の発振回路OSCを何度も動かすことによって、エントロピーを増加させることが可能である(図3)。
すなわち、N個の発振回路OSCと1段目のN個のフリップフロップ回路FFの出力が低エントロピーであっても、高エントロピーな出力を得ることが可能になる。
ただし、N個のエクスクルーシブオア回路XOR1と2段目のN個のフリップフロップ回路FFによる自己フィードバックは、N個の発振回路OSCの出力が常にHighまたはLowになるときは効果がない。そこで、これらN個の発振回路OSCの出力の全てを排他的論理和で1ビット化する。このようにすることで、いくつかの発振回路が動かなかったとしても、1つでもランダムデータを生成できる発振回路が存在していれば、ランダムデータの生成が可能になる。
ここで、発振回路の数Nは、2以上の任意の数を用いることができる。
ただし、排他的論理和の性質として、完全に相関している2つの発振回路の出力の排他的論理和を取ると、その2つの発振回路によるランダムデータ生成の効果がなくなってしまうことがある。すなわち、Nが偶数個のときは、発振回路の出力のすべてが相関していると、ランダムデータ生成の効果が消えてしまう
そこで、Nの数としては、奇数個であるのが望ましい。Nが奇数個であれば、仮に2つの発振回路の出力が相関を持っていたとしても、必ず、少なくとも1つの発振回路については、他の発振回路との相関を避けることができるため、ランダムデータ生成の効果が消滅することはない。
N入力エクスクルーシブオア回路XOR2により1ビット化されたデータは、再び、シフトレジスタSRによって多ビット化される。ただし、シフトレジスタSRによる多ビット化の場合、連続する2ビットには相関がある。たとえば、nクロック目と(n+1)クロック目の2ビットデータを出力する場合、総エントロピーTHnは、各ビットのエントロピーの和になるが、両者には相関があるため、nクロック目までで蓄積されたランダム性は、(n+1)クロック目のデータからは引かねばならない。すなわち、nクロック目の1ビットのエントロピーHnから、
THn = Hn+H1
となる。
N入力エクスクルーシブオア回路XOR2の後の1クロックで生成されるエントロピーが高いときは、シフトレジスタSRを第1のクロックCLK1と同じ周波数で連続出力させることが可能である。これは、N個の発振回路OSCと1段目のN個のフリップフロップ回路FFの出力のランダム性が高い場合である。そうでない場合は、シフトレジスタSRを動作させる第2のクロックCLK2の周波数を、第1のクロックCLK1の周波数よりも低くする。
すなわち、第2のクロックCLK2の周期を第1のクロックCLK1の周期よりも長くする、たとえば、第1のクロックCLK1を1/Xに分周したクロック(第1のクロックCLK1のいくつかを間引いたクロック)を、第2のクロックCLK2とすることで、1ビットごとにエントロピーを蓄えたデータを出力すればよい。
たとえば、図4に示すように、分周器10により、第1のクロックCLK1の周波数を1/X(Xは自然数)に分周する。すなわち、第1のクロックCLK1をカウンタ11に入力し、カウンタ11に接続されたレジスタ12の値(X)に応じて、第1のクロックCLK1を1/Xに分周した第2のクロックCLK2を出力させることができる。
このようにすれば、レジスタ12に設定するサイクル数(X)だけ、第1のクロックCLK1を間引いた第2のクロックCLK2を生成することができる。
第2のクロックCLK2をどの程度間引けば良いかは、1段目のN個のフリップフロップ回路FFの出力をモニタし、現在生成されているエントロピーを見積もることで予測することが可能である。1段目のN個のフリップフロップ回路FFの出力をモニタする方法としては、たとえば、図5に示すように、1段目のN個のフリップフロップ回路FFの出力にモニタ用のシフトレジスタ13を接続する。そして、1段目のN個のフリップフロップ回路FFの出力の“0(Low)”/“1(High)”ばらつきを計測することで計算可能である。シフトレジスタ13は、長ければ長いほど正確な測定が可能である。
図6は、間引き数が0の場合に8ビット出力のエントロピーが2.9であったときの、間引き数とエントロピー増加の様子を示した結果である。
間引き数が多くなるほど、すなわち、第2のクロックCLK2の周波数が第1のクロックCLK1の周波数よりも低くなるほど、エントロピーが増加することがわかる。エントロピーの増加の傾きは、1サイクルで出力されるエントロピーに依存し、間引き数nに対して、式(2)で計算される量のエントロピーが増加していく。すなわち、1段目のN個のフリップフロップ回路FFの出力からエントロピーを見積もることで、間引き数をどの程度にすればよいかが予測できる。
式(1)より、初期状態が“0(Low)“と仮定すると、
Pn = ((2q−1)+1)/2 …(3)
となる。シフトレジスタ13から得られる0の割合を擬似的に確率qとして、式(3)からnクロック目の0の確率Pnを予測することができる。
逆に、ターゲットとなるPnが設定されると、(3)式より、
n = log|2Pn−1|/ log|2q−1| …(4)
により、必要なクロック数nを見積もることが可能になる。
たとえば、Mビット出力の場合で、要求されるエントロピーがhであった場合、1ビットごとのデータが持っていなければならないエントロピーはh/Mと考えることができる。このとき、式(2)と図18より、必要となる確率Pnが求められる。必要な確率Pnがわかると、式(4)により、必要となるクロック数nを見積もることが可能である。
すなわち、1段目のN個のフリップフロップ回路FFの出力の“0(Low)”/“1(High)”ばらつきと、ターゲットとなるエントロピーが分かれば、必要な間引き数を予測することが可能になる。
N個の発振回路OSCは、連続的発振回路でも断続的発振回路でも良いが、特許文献1で示されるように、消費電力の点では、断続的発振回路が有利である。
図7は、断続的発振回路の例を示している。
この発振回路は、2入力ノア(NOR)回路21と2入力エクスクルーシブオア(XOR)回路22を備える。第1の制御信号CNT1は、2入力ノア回路21に入力される。第2の制御信号CNT2及びノア回路21の出力は、2入力エクスクルーシブオア回路22に入力される。2入力エクスクルーシブオア回路22の出力(発振信号)は、フィードバック信号として2入力ノア回路21に入力される。
この発振回路において、第1の制御信号CNT1が“0(Low)”のとき、ノア回路21は、インバータと等価である。また、第1の制御信号CNT1が“1(High)”のとき、ノア回路21の出力は、“0(固定)”となり、発振しない。すなわち、第1の制御信号CNT1は、発振トリガ信号として用いることができ、本例のエントロピーソース生成回路を停止させるときに使用することで、消費電力を削減することが可能になる。
第2の制御信号CNT2が“0”のときは、エクスクルーシブオア回路22は、ノア回路21の出力をそのまま出力する。また、第2の制御信号CNT2が“1”のときは、エクスクルーシブオア回路22は、インバータと等価である。すなわち、第1の制御信号CNT1が“0”のとき、第2の制御信号CNT2によって、発振状態とラッチ状態を切り替えることが可能である。
たとえば、第2の制御信号CNT2を第1のクロックCLK1と同期させた場合、発振状態をフリップフロップ回路FFで強制的にラッチするランダムデータ生成方法と、発振状態から第2の制御信号CNT2の切り替えによって強制的に発振回路内でラッチするランダムデータ生成方法の、2通りが実行可能である。
素子ばらつきなどで、フリップフロップ回路FFによるラッチと自己ラッチでランダムデータ生成確率に差がある場合でも、本回路を用いることで生成効率を上げることが可能である。
第1の制御信号CNT1と第2の制御信号CNT2のタイミングは、N個の発振回路OSCで共通にしてもよいし、別々にしてもよい。特に、第2の制御信号CNT2は、N個の発振回路OSCを独立に動作させるために、それぞれで位相をずらすことが効果的である。たとえば、Nビットの第2の制御信号CNT2にそれぞれ別位相の信号を与えても良いし、隣り合う発振回路どうしで180度ずらした位相を与えても良い。
なお、1段目のN個のフリップフロップ回路FFの出力のランダムデータは、互いに独立であることが望ましい。相関がある場合には、N個の発振回路OSCと1段目のN個のフリップフロップ回路FFの組があったとしても、実質的に、それよりも少ない数の発振回路とフリップフロップ回路FFのペアがあるのと等価になってしまうからである。そのためには、上述のように、第2の制御信号CNT2の位相を変えることのほかに、それぞれの発振回路を実装する位置をチップ内で一箇所に固めず、互いになるべく離しておくことが有効である。
図8は、第2のクロックCLK2を生成する回路の一例である。
この回路は、第1のクロックCLK1の周波数を1/X(Xは自然数)に分周する分周器10として機能する。分周器10は、第1のクロックCLK又はそれを1/X’(X’は2以上の自然数)に分周したクロックのうちの1つを、第2のクロックCLK2として選択的に出力する。
たとえば、第1のクロックCLK1を用いてカウンタ31を動かし、カウンタ31により第1のクロックCLK1のクロック数をカウントする。そのカウント数とクロック設定データを比較器32により比較する。両者が一致したとき、間引きクロックCLK3を立ち上げる。また、この間引きクロックCLK3の立ち上がりをトリガとしてカウンタ31をリセットする。
そして、最終的に、第1のクロックCLK1と間引きクロックCLK3のうちの1つをマルチプレクサ33により選択する。マルチプレクサ33により選択されたクロックは、第2のクロックCLK2として出力される。
このように、マルチプレクサ33を用いて、第1のクロックCLK1を選択できるようにしておくことで、第1のクロックCLK1の周波数と同じ周波数の第2のクロックCLK2を生成することが可能になる。また、間引きクロックCLK3を選択すれば、第1のクロックCLK1の周波数よりも低い周波数の第2のクロックCLK2を生成することができる。
このような構成であれば、クロック設定データをソフトウェア等で設定することにより、第2のクロックCLK2の周波数をチップ製造後に任意に設定可能となる。
図9は、図8の構成を具体化した回路図である。また、図16はタイミングチャートを示す。
ここでは、カウンタ31として4ビットカウンタを用いることにより、0〜15クロックの間で、クロックを間引くことが可能な回路を示している。ただし、ここでは、第1のクロックCLK1を選択する回路として、マルチプレクサの代わりにアンド(AND)回路を用いている。
第1のクロックCLK1によってカウントアップされる4個のフリップフロップ回路FFの出力とクロック設定データとを比較器32内の4個のエクスクルーシブオア回路で比較する。また、すべてのエクスクルーシブオア回路で比較結果が一致するとき、すべてのエクスクルーシブオア回路の出力は“0”となり、かつ、比較器32の出力としての4入力ノア回路の出力が“1”となる。
図16のタイミングチャートの例では、クロック設定データは、[“0”,“1”,“0”,“1”]と仮定する。この場合、4ビットカウンタによるカウント開始から11クロック目(時刻t1)で、クロック設定データとカウンタ31の出力とが一致する。従って、間引きクロックCLK3が生成される。
また、間引きクロックCLK3と第1のクロックCLK1のタイミングが一致したときに、第2のクロックCLK2を立ち上げる。
さらに、本回路を動作させているときは、リセット信号RSが“0”であるため、間引きクロックCLK3が“1”のときに、4個のフリップフロップ回路FFがリセットされる。即ち、カウンタ31は、時刻t2において、再び、1からカウントを開始する。
なお、本回路において、クロック設定データ(4ビット)のすべてを“0(Low)”としたときは、4個のフリップフロップ回路FFは、常に初期状態(すべての出力が“0”となるリセット状態)を維持し、かつ、すべてのエクスクルーシブオア回路の出力は、常に“0”である。
したがって、クロック設定データ(4ビット)のすべてを“0”としたときは、間引きクロックCLK3は、常に“1(High)”の状態であるため、アンド回路から出力される第2のクロックCLK2は、第1のクロックCLK1と同じになる。
(第2の実施例)
図10は、エントロピーソース生成回路の第2の実施例である。
本例では、1段目のフリップフロップ回路FFと2段目のフリップフロップ回路FFの間のエクスクルーシブオア回路による自己フィードバックを、互いに異なるN個のエクスクルーシブオア回路間で行う。すなわち、ランダムデータは、次段のN入力エクスクルーシブオア回路XOR2でまとめられるため、この自己フィードバックは、同じエクスクルーシブオア回路で行われる必要がない。
ここでは、発振回路1の後段にあるエクスクルーシブオア回路の自己フィードバックを、発振回路2の後段にあるエクスクルーシブオア回路の出力(FFの出力)により行い、同様に、発振回路2〜(N−1)の後段にあるエクスクルーシブオア回路の自己フィードバックを、それぞれ、発振回路3〜Nの後段にあるエクスクルーシブオア回路の出力(FFの出力)により行う。
また、発振回路Nの後段にあるエクスクルーシブオア回路の自己フィードバックは、発振回路1の後段にあるエクスクルーシブオア回路の出力(FFの出力)により行う。
本例によれば、自己フィードバックによって各発振回路の出力信号をつなぐことが可能であるため、図17に示すように、図10のN入力エクスクルーシブオア回路XOR2を省略することも可能である。この場合、図17の例は、図10の例に比べて、回路規模を小さくできるという効果を奏する。
なお、本例においては、回路設計や実装時などにおいて、この自己フィードバックの配線長をできるだけ短くすることを目的に、フィードバック先を適宜変更することが可能である。
(第3の実施例)
図11は、エントロピーソース生成回路の第3の実施例である。
本例では、N個の発振回路OSCの電源として、新たに、電圧制御回路14を設ける。1段目のフリップフロップ回路FFがラッチするデータがランダムになるか否かは、N個の発振回路OSCの発振タイミングと、第1のクロックCLK1のタイミングとに、それぞれ依存する。たとえば、N個の発振回路OSCの出力が遷移するタイミングで、第1のクロックCLK1が“1”になれば、後段のN個のフリップフロップ回路FFは、メタステーブル状態となり、その出力は、不定となる。
しかし、N個の発振回路OSCの出力が“1(High)”または“0(Low)”のときに、第1のクロックCLK1が“1”になれば、後段のN個のフリップフロップ回路FFは、“1”または“0”を出力することになるため、ランダムデータを得ることができない。
そこで、後段のN個のフリップフロップ回路FFの出力がランダムデータとなっていないことが判明したときは、電圧制御回路14により、N個の発振回路OSCの電源電圧を変化させる。
すなわち、N個の発振回路OSCの発振周波数は、電源電圧に依存するため、N個の発振回路OSCの発振周波数を変えることで、N個の発振回路OSCの出力が遷移するタイミングで、第1のクロックCLK1が“1”になるように設定することができる。これにより、ランダムデータを生成する。
なお、本例では、N個の発振回路OSCの電源電圧により発振周波数を制御する例を示したが、これに代えて、または、これと共に、グラウンド電圧や基板電圧などの他の要素により発振周波数を制御してもよい。
また、N個の発振回路OSCのすべてが共通に電圧制御回路14に接続される必要もない。すなわち、N個の発振回路OSCの発振周波数の制御(たとえば、電源電圧の制御)を、それぞれ独立に行ってもよいし、また、複数のグループにまとめてグループごとに行ってもよい。
N個の発振回路OSCのすべてに共通に1つの電圧制御回路を設けるよりも、N個の発振回路OSCの各々に、独立に、たとえば、電圧制御回路を設け、N個の発振回路OSCの発振周波数を、独立かつ適切に制御できるようにしたほうが、回路規模が大きくなるものの、エントロピー生成の効果は高くなる。
(第4の実施例)
図12は、エントロピーソース生成回路の第4の実施例である。
本例では、N個の発振回路OSCのそれぞれに、発振動作のスタート/エンドを制御するイネーブル端子を設ける。ここで、発振回路として、たとえば、図7の断続的発振回路を用いる場合には、第1の制御信号CNT1または第2の制御信号CNT2を、発振動作のスタート/エンドを制御するイネーブル信号として用いることができる。
そして、N個の発振回路OSCのイネーブル端子にイネーブル制御回路15を接続する。イネーブル制御回路15は、N個の発振回路OSCのそれぞれに対してイネーブル信号を出力する。
上述のとおり、N個の発振回路OSCの発振周期と第1のクロックCLK1のタイミングによって、後段のN個のフリップフロップ回路FFにラッチされるデータがランダムになるか否かが変わる。すなわち、これら発振周期やクロックタイミングが最適でないと、常に同じ値を出力することになる。
このような常に同じ値を出力することになってしまった発振回路については、ランダムデータを生成する効果という観点からみたとき、それが動作していても、停止していても、何らその効果に影響を与えることがない。したがって、そのような状態になってしまった発振回路は、イネーブル信号により停止状態にする。
これにより、エントロピーソース生成回路の消費電力を削減することができる。また、イネーブル信号を適切に設定することで、過不足ない消費電力でエントロピーを生成することが可能になる。
(第5の実施例)
図13は、エントロピーソース生成回路の第5の実施例である。
本例では、シフトレジスタSRに第1のクロックCLK1を用いる。すなわち、1段目のN個のフリップフロップ回路FF、2段目のN個のフリップフロップ回路FF、及び、シフトレジスタSRは、すべて同じクロック(第1のクロックCLK1)により制御される。この場合、上述の各実施例のような、第2のクロックによりデータを間引く動作を行うことができない。
そこで、その代わりとして、MビットシフトレジスタSRからのMビット(Mは2以上の自然数)のうちの1つを、出力選択信号SELにより選択可能なM’個(ただし、M’はM以下の自然数)のマルチプレクサ16を設ける。M’個のマルチプレクサ16の各々は、MビットシフトレジスタSRからのM’ビットをランダムに選択する。
これにより、M個のマルチプレクサ16から出力されるM’ビットは、ランダムデータとしてエントロピーソースとすることができる。すなわち、本例では、クロックを変えてデータを間引く代わりに、シフトレジスタSRに蓄積されたデータを出力するときにデータを間引く手法を採用する。
本例によれば、シフトレジスタSRのビット数が多くなる、マルチプレクサが必要になるなどの追加の要素が必要になる反面、1つのクロックでエントロピーソース生成回路を制御できるというメリットを得ることができる。
(第6の実施例)
図14は、エントロピーソース生成回路の第6の実施例である。
本例では、エントロピー測定回路17を用いて、1段目のN個のフリップフロップ回路FFの出力に基づき、それらが生成するエントロピーを測定する。そして、クロック制御回路18は、そのエントロピーに基づき、第2のクロックCLK2を生成し、これを、シフトレジスタSRに与える。
エントロピーの測定は、たとえば、1段目のN個のフリップフロップ回路FFの出力をエントロピー測定回路17内のシフトレジスタに保存し、“0”または“1”の割合を計測し、それを擬似的に確率Pとみなすことで、式(2)と図18により計算することができる。
ただし、エントロピー測定回路17内のシフトレジスタの値が“0”と“1”を周期的に繰り返す場合には、P=0.5となり、ランダム性が認められない。
たとえば、N個の発振回路OSCの各々が連続的発振回路のとき、1段目のN個のフリップフロップ回路FFの出力がランダム性を全く持たない場合として想定されるのは、それら出力が同じ値の連続である、1クロックごとに交互に“0”/“1”が繰り返される、などといった場合である。このような場合には、1段目のN個のフリップフロップ回路FFの出力を、たとえば、2クロックおきに、シフトレジスタに保存することにより、シフトレジスタの値が“0”と“1”を周期的に繰り返す状態(P=0.5)を避けることができる。
また、仮に、P=0.5となってランダム性が認められなくなったときは、P=0としてエントロピーを測定する。
同様に、N個の発振回路OSCとして図7に示す断続的発振回路を用いたときは、第2の制御信号CNT2を第1のクロックCLK1と同じ周波数の信号と仮定すると、N個の発振回路OSCは、発振状態と保持状態を交互に繰り返すことになる。
これら発振状態と保持状態において、連続的発振回路と同様に、“0”と“1”が周期的に繰り返す状態があり得るので、断続的発振回路を用いたときは、1段目のN個のフリップフロップ回路FFの出力を、たとえば、4クロックおきに、シフトレジスタに保存する。これにより、シフトレジスタの値が“0”と“1”を周期的に繰り返す状態(P=0.5)を避けることができる。
また、式(2)と図18を用いてエントロピーを計測することにより、データの間引き量、すなわち、第1のクロックCLK1の周波数と第2のクロックCLK2の周波数との差を、式(4)により自動的に設定し、高エントロピーのデータを得ることが可能になる。
(第7の実施例)
図15は、エントロピーソース生成回路の第7の実施例である。
本例では、自己フィードバックを行うエクスクルーシブオア回路と、N個の発振回路OSCの出力のすべての排他的論理和を取るN入力エクスクルーシブオア回路の順番を入れ替えた構成例を示す。
たとえば、N入力エクスクルーシブオア回路XOR2は、1段目のN個のフリップフロップ回路FFの出力の排他的論理和をとる。また、N入力エクスクルーシブオア回路XOR2の出力は、自己フィードバックを行う2入力エクスクルーシブオア回路XOR3に入力される。さらに、2入力エクスクルーシブオア回路XOR3の出力は、2段目のフリップフロップ回路FF(ラッチ回路LA3)に入力され、2段目のフリップフロップ回路FFの出力は、2入力エクスクルーシブオア回路XOR3の入力にフィードバックされる。
このように、排他的論理和は、演算の順番によらないため、本構成でも、第1の実施例と同様の効果を得ることが可能である。本例の構成を採用することで、各段のフリップフロップ回路FF間の演算負荷が異なる(バランスが悪くなる)反面、エントロピーソース生成回路としての回路規模が小さくなるというメリットを得ることができる。
なお、第7の実施例において、図4、図8及び図9に示す分周器10、図5に示すシフトレジスタ13、及び、図7に示す発振回路OSCを採用することが可能である。
また、第7の実施例において、第3〜第6の実施例(図11〜図14)を採用することも可能である。
(むすび)
上述の第1乃至第7の実施例によれば、製造ばらつきに強く、発振回路の性能が低エントロピーとなった場合でも、高エントロピーのランダムデータを生成可能なエントロピーソース生成回路を実現できる。
また、第1乃至第7の実施例を相互に組み合わせて最適もしくは最大の効果を得るようにすることも可能である。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
10: 分周器、 11: カウンタ、 12: レジスタ、 13: シフトレジスタ、 14: 電圧制御回路、 15: イネーブル制御回路、 16,33: マルチプレクサ、 17: エントロピー測定回路、 18: クロック制御回路、 21: 2入力ノア回路、 22: 2入力エクスクルーシブオア回路、 31: カウンタ、 32: 比較器。

Claims (10)

  1. 第1乃至第Nの発振回路(Nは2以上の自然数)と、
    前記第1乃至第Nの発振回路の出力を、第1の周波数を持つ第1のクロックによりラッチする第1乃至第Nのラッチ回路と、
    第1乃至第Nのエクスクルーシブオア回路と、
    前記第1乃至第Nのエクスクルーシブオア回路の出力を前記第1のクロックによりラッチする第(N+1)乃至第(2×N)のラッチ回路と、
    前記第(N+1)乃至第(2×N)のラッチ回路の出力の排他的論理和を出力する第(N+1)のエクスクルーシブオア回路と、
    前記第(N+1)のエクスクルーシブオア回路から出力されるシリアルデータを、第2の周波数を持つ第2のクロックによりMビットのパラレルデータ(Mは2以上の自然数)に変換するMビットシフトレジスタとを具備し、
    前記第iのエクスクルーシブオア回路の出力は、第iのフィードバック出力と、前記第iのラッチ回路の出力との排他的論理和であり(但し、iは、1〜Nのうちの1つである)、
    前記第2の周波数は、前記第1の周波数と同じ又はそれよりも低く、
    前記第1乃至第Nの発振回路の各々は、
    第1の制御信号が入力されるノア回路と、第2の制御信号及び前記ノア回路の出力が入力され、発振信号を出力するエクスクルーシブオア回路とを備え、
    前記発振信号は、フィードバック信号として前記ノア回路に入力される
    乱数生成回路。
  2. 第1乃至第Nの発振回路(Nは2以上の自然数)と、
    前記第1乃至第Nの発振回路の出力を、第1の周波数を持つ第1のクロックによりラッチする第1乃至第Nのラッチ回路と、
    前記第1乃至第Nのラッチ回路の出力の排他的論理和を出力する第1のエクスクルーシブオア回路と、
    第2のエクスクルーシブオア回路と、
    前記第2のエクスクルーシブオア回路の出力を前記第1のクロックによりラッチする第(N+1)のラッチ回路と、
    前記(N+1)のラッチ回路から出力されるシリアルデータを、第2の周波数を持つ第2のクロックによりMビットのパラレルデータ(Mは2以上の自然数)に変換するMビットシフトレジスタとを具備し、
    前記第2のエクスクルーシブオア回路の出力は、前記第1のエクスクルーシブオア回路の出力と、前記第(N+1)のラッチ回路の出力との排他的論理和であり、
    前記第2の周波数は、前記第1の周波数と同じ又はそれよりも低く、
    前記第1乃至第Nの発振回路の各々は、
    第1の制御信号が入力されるノア回路と、第2の制御信号及び前記ノア回路の出力が入力され、発振信号を出力するエクスクルーシブオア回路とを備え、
    前記発振信号は、フィードバック信号として前記ノア回路に入力される
    乱数生成回路。
  3. 前記第iのフィードバック出力は、前記第(N+i)のラッチ回路の出力である(但し、iは、1〜Nのうちの1つである)
    請求項1に記載の乱数生成回路。
  4. 前記第iのフィードバック出力は、前記第(N+i+1)のラッチ回路の出力であり(但し、iは、1〜N−1のうちの1つである)、
    前記第Nのフィードバック出力は、前記第(N+1)のラッチ回路の出力である
    請求項1に記載の乱数生成回路。
  5. 請求項1又は2に記載の乱数生成回路において、
    前記第1のクロックの周波数を1/X(Xは自然数)に分周する分周器をさらに具備し、
    前記第2のクロックは、前記分周器から出力される
    乱数生成回路。
  6. 前記分周器は、前記第1のクロック又はそれを1/X’(X’は2以上の自然数)に分周したクロックのうちの1つを、前記第2のクロックとして選択的に出力する
    請求項5に記載の乱数生成回路。
  7. 請求項5に記載の乱数生成回路において、
    前記第1乃至第Nのラッチ回路の出力をモニタする第1乃至第Nのシフトレジスタをさらに具備し、
    前記Xは、前記第1乃至第Nのシフトレジスタの出力に基づき決定される
    乱数生成回路。
  8. 請求項1又は2に記載の乱数生成回路において、
    前記MビットシフトレジスタからのMビットのうちの1つを出力選択信号により選択可能なM個のマルチプレクサをさらに具備し、
    前記第1及び第2の周波数は、同じであり、
    前記M個のマルチプレクサからのMビットをエントロピーソースとする
    乱数生成回路。
  9. 請求項1又は2に記載の乱数生成回路において、
    前記第1乃至第Nのラッチ回路の出力に基づいてエントロピーを測定するエントロピー測定回路と、
    前記エントロピー測定回路により測定された前記エントロピーに基づいて前記第2のクロックを生成するクロック制御回路とをさらに具備する
    乱数生成回路。
  10. 前記Nの値は、奇数である請求項1乃至のいずれか1項に記載の乱数生成回路。
JP2012255734A 2012-11-21 2012-11-21 乱数生成回路 Active JP6034153B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2012255734A JP6034153B2 (ja) 2012-11-21 2012-11-21 乱数生成回路
US14/086,389 US9547475B2 (en) 2012-11-21 2013-11-21 Random number generating circuit

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012255734A JP6034153B2 (ja) 2012-11-21 2012-11-21 乱数生成回路

Publications (2)

Publication Number Publication Date
JP2014102768A JP2014102768A (ja) 2014-06-05
JP6034153B2 true JP6034153B2 (ja) 2016-11-30

Family

ID=50728965

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012255734A Active JP6034153B2 (ja) 2012-11-21 2012-11-21 乱数生成回路

Country Status (2)

Country Link
US (1) US9547475B2 (ja)
JP (1) JP6034153B2 (ja)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9047152B2 (en) * 2013-01-16 2015-06-02 Skymedi Corporation Delay device, method, and random number generator using the same
DE102013213396A1 (de) * 2013-07-09 2015-01-15 Robert Bosch Gmbh Verfahren zum Nachbehandeln einer Ausgabe einer Zufallsquelle eines Zufallsgenerators
DE102014200163A1 (de) * 2014-01-09 2015-07-09 Robert Bosch Gmbh Verfahren zum Erzeugen einer Ausgabe einer Zufallsquelle eines Zufallsgenerators
JP6492467B2 (ja) * 2014-09-03 2019-04-03 株式会社ソシオネクスト 受信回路及び半導体集積回路
CN104269132B (zh) * 2014-10-29 2016-08-03 京东方科技集团股份有限公司 一种移位寄存单元、显示面板和显示装置
JP6419614B2 (ja) 2015-03-17 2018-11-07 株式会社東芝 データ生成装置および認証システム
JP6472766B2 (ja) * 2016-03-16 2019-02-20 株式会社東芝 乱数生成回路
JP6886700B2 (ja) * 2017-07-11 2021-06-16 吉川工業アールエフセミコン株式会社 乱数生成回路
US10891366B1 (en) 2017-08-18 2021-01-12 Jonetix Corporation Secure hardware signature and related methods and applications
CN108509180B (zh) * 2018-04-13 2021-04-06 太原理工大学 一种基于二输入异或门低功耗随机数产生装置
US11381394B2 (en) 2019-07-25 2022-07-05 PUFsecurity Corporation High speed encryption key generating engine
CN115079999A (zh) * 2022-06-22 2022-09-20 长鑫存储技术有限公司 随机数据生成电路及读写训练电路

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06314188A (ja) * 1993-04-28 1994-11-08 N T T Data Tsushin Kk 乱数生成装置
US6043693A (en) * 1998-06-01 2000-03-28 3Dfx Interactive, Incorporated Multiplexed synchronization circuits for switching frequency synthesized signals
US6968460B1 (en) * 2001-05-10 2005-11-22 Advanced Micro Devices, Inc. Cryptographic randomness register for computer system security
US7047262B2 (en) * 2002-08-21 2006-05-16 Koninklijke Philips Electronics N.V. Entropy estimation and decimation for improving the randomness of true random number generation
JP3696209B2 (ja) * 2003-01-29 2005-09-14 株式会社東芝 シード生成回路、乱数生成回路、半導体集積回路、icカード及び情報端末機器
US7219113B2 (en) * 2003-09-26 2007-05-15 International Business Machines Corporation Pseudo-random binary sequence checker with automatic synchronization
JP4353435B2 (ja) * 2004-02-12 2009-10-28 株式会社日立超エル・エス・アイ・システムズ 乱数発生方法と半導体集積回路装置及び電子装置
JP2009053906A (ja) * 2007-08-27 2009-03-12 Sony Corp 乱数発生装置
JP5171315B2 (ja) 2008-02-28 2013-03-27 株式会社東芝 乱数生成回路
MY146159A (en) * 2008-10-20 2012-06-29 Mimos Berhad Autocorrelation circuit for random number generator
US8886692B2 (en) * 2009-02-09 2014-11-11 Samsung Electronics Co., Ltd. Apparatus for generating random number
WO2011039846A1 (ja) * 2009-09-29 2011-04-07 株式会社 東芝 乱数生成回路
US8583711B2 (en) * 2009-12-02 2013-11-12 Seagate Technology Llc Random number generation system with ring oscillators
JP5465636B2 (ja) * 2010-08-30 2014-04-09 日本電信電話株式会社 乱数生成回路
JP5356362B2 (ja) * 2010-12-15 2013-12-04 日本電信電話株式会社 乱数生成回路

Also Published As

Publication number Publication date
US9547475B2 (en) 2017-01-17
JP2014102768A (ja) 2014-06-05
US20140143292A1 (en) 2014-05-22

Similar Documents

Publication Publication Date Title
JP6034153B2 (ja) 乱数生成回路
JP5074359B2 (ja) 乱数生成回路
US9047152B2 (en) Delay device, method, and random number generator using the same
US9377997B2 (en) Random number generator
JP3022439B2 (ja) 擬似乱数発生方法および装置
US7889581B2 (en) Digital DLL circuit
JP2007235908A (ja) リング発振回路、遅延時間測定回路、テスト回路、クロック発生回路、イメージセンサ、パルス発生回路、半導体集積回路、及び、そのテスト方法
Abu-Issa et al. Bit-swapping LFSR for low-power BIST
JP2011159873A (ja) 半導体集積回路及びそれを備えた電圧制御装置
JP5670849B2 (ja) 擬似乱数生成装置、および、擬似乱数生成方法
US8044833B2 (en) High speed serializer
WO2010004747A1 (ja) 多相クロック分周回路
EP1662375B1 (en) Random number generator and method for testing the generator
JP5465636B2 (ja) 乱数生成回路
JP5171420B2 (ja) 擬似乱数生成装置
TWI579763B (zh) 具有亂數產生模式的儲存電路
Peinado et al. Improving the period and linear span of the sequences generated by DLFSRs
US20100201409A1 (en) Frequency Divider Circuit
CN107888166B (zh) 多相位不交叠时钟信号产生电路及相应的方法
JP5356362B2 (ja) 乱数生成回路
US9116764B2 (en) Balanced pseudo-random binary sequence generator
JP4295790B2 (ja) パルス発生回路、半導体集積回路、及び、そのテスト方法
KR20120101836A (ko) 난수 발생 장치
US20150200683A1 (en) Parallel-serial converter circuit
JP2012039296A (ja) カウンタ回路

Legal Events

Date Code Title Description
RD07 Notification of extinguishment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7427

Effective date: 20140415

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150909

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160808

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160816

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160905

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20160927

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20161027

R151 Written notification of patent or utility model registration

Ref document number: 6034153

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151