(57)【要約】【課題】発振回路の性能によらず、高エントロピーのランダムデータを生成する。【解決手段】実施形態に係わる乱数生成回路は、第１乃至第Ｎの発振回路（Ｎは２以上の自然数）ＯＳＣの出力を第１のクロックＣＬＫ１によりラッチする第１乃至第Ｎのラッチ回路ＬＡ１と、第１乃至第Ｎのエクスクルーシブオア回路ＸＯＲ１の出力を第１のクロックＣＬＫ１によりラッチする第（Ｎ＋１）乃至第（２×Ｎ）のラッチ回路ＬＡ２と、第（Ｎ＋１）乃至第（２×Ｎ）のラッチ回路ＬＡ２の出力の排他的論理和を出力するＮ入力エクスクルーシブオア回路ＸＯＲ２と、Ｎ入力エクスクルーシブオア回路ＸＯＲ２から出力されるシリアルデータを第２のクロックＣＬＫ２によりＭビットのパラレルデータ（Ｍは２以上の自然数）に変換するＭビットシフトレジスタＳＲとを備える。【選択図】図１
2014102768.tif 000002
【特許請求の範囲】
【請求項１】
第１乃至第Ｎの発振回路（Ｎは２以上の自然数）と、
前記第１乃至第Ｎの発振回路の出力を、第１の周波数を持つ第１のクロックによりラッチする第１乃至第Ｎのラッチ回路と、
第１乃至第Ｎのエクスクルーシブオア回路と、
前記第１乃至第Ｎのエクスクルーシブオア回路の出力を前記第１のクロックによりラッチする第（Ｎ＋１）乃至第（２×Ｎ）のラッチ回路と、
前記第（Ｎ＋１）乃至第（２×Ｎ）のラッチ回路の出力の排他的論理和を出力する第（Ｎ＋１）のエクスクルーシブオア回路と、
前記第（Ｎ＋１）のエクスクルーシブオア回路から出力されるシリアルデータを、第２の周波数を持つ第２のクロックによりＭビットのパラレルデータ（Ｍは２以上の自然数）に変換するＭビットシフトレジスタとを具備し、
前記第ｉのエクスクルーシブオア回路の出力は、第ｉのフィードバック出力と、前記第ｉのラッチ回路の出力との排他的論理和であり（但し、ｉは、１〜Ｎのうちの１つである）、
前記第２の周波数は、前記第１の周波数と同じ又はそれよりも低い
乱数生成回路。
【請求項２】
第１乃至第Ｎの発振回路（Ｎは２以上の自然数）と、
前記第１乃至第Ｎの発振回路の出力を、第１の周波数を持つ第１のクロックによりラッチする第１乃至第Ｎのラッチ回路と、
前記第１乃至第Ｎのラッチ回路の出力の排他的論理和を出力する第１のエクスクルーシブオア回路と、
第２のエクスクルーシブオア回路と、
前記第２のエクスクルーシブオア回路の出力を前記第１のクロックによりラッチする第（Ｎ＋１）のラッチ回路と、
前記（Ｎ＋１）のラッチ回路から出力されるシリアルデータを、第２の周波数を持つ第２のクロックによりＭビットのパラレルデータ（Ｍは２以上の自然数）に変換するＭビットシフトレジスタとを具備し、
前記第２のエクスクルーシブオア回路の出力は、前記第１のエクスクルーシブオア回路の出力と、前記第（Ｎ＋１）のラッチ回路の出力との排他的論理和であり、
前記第２の周波数は、前記第１の周波数と同じ又はそれよりも低い
乱数生成回路。
【請求項３】
前記第ｉのフィードバック出力は、前記第（Ｎ＋ｉ）のラッチ回路の出力である（但し、ｉは、１〜Ｎのうちの１つである）
請求項１に記載の乱数生成回路。
【請求項４】
前記第ｉのフィードバック出力は、前記第（Ｎ＋ｉ＋１）のラッチ回路の出力であり（但し、ｉは、１〜Ｎ−１のうちの１つである）、
前記第Ｎのフィードバック出力は、前記第（Ｎ＋１）のラッチ回路の出力である
請求項１に記載の乱数生成回路。
【請求項５】
請求項１又は２に記載の乱数生成回路において、
前記第１のクロックの周波数を１／Ｘ（Ｘは自然数）に分周する分周器をさらに具備し、
前記第２のクロックは、前記分周器から出力される
乱数生成回路。
【請求項６】
前記分周器は、前記第１のクロック又はそれを１／Ｘ’（Ｘ’は２以上の自然数）に分周したクロックのうちの１つを、前記第２のクロックとして選択的に出力する
請求項５に記載の乱数生成回路。
【請求項７】
請求項５に記載の乱数生成回路において、
前記第１乃至第Ｎのラッチ回路の出力をモニタする第１乃至第Ｎのシフトレジスタをさらに具備し、
前記Ｘは、前記第１乃至第Ｎのシフトレジスタの出力に基づき決定される
乱数生成回路。
【請求項８】
前記第１乃至第Ｎの発振回路の各々は、
第１の制御信号が入力されるノア回路と、第２の制御信号及び前記ノア回路の出力が入力され、発振信号を出力するエクスクルーシブオア回路とを備え、
前記発振信号は、フィードバック信号として前記ノア回路に入力される
請求項１又は２に記載の乱数生成回路。
【請求項９】
請求項１又は２に記載の乱数生成回路において、
前記ＭビットシフトレジスタからのＭビットのうちの１つを出力選択信号により選択可能なＭ個のマルチプレクサをさらに具備し、
前記第１及び第２の周波数は、同じであり、
前記Ｍ個のマルチプレクサからのＭビットをエントロピーソースとする
乱数生成回路。
【請求項１０】
請求項１又は２に記載の乱数生成回路において、
前記第１乃至第Ｎのラッチ回路の出力に基づいてエントロピーを測定するエントロピー測定回路と、
前記エントロピー測定回路により測定された前記エントロピーに基づいて前記第２のクロックを生成するクロック制御回路とをさらに具備する
乱数生成回路。
【請求項１１】
前記Ｎの値は、奇数である請求項１乃至１３のいずれか１項に記載の乱数生成回路。
【発明の詳細な説明】
【技術分野】
【０００１】
実施形態は、乱数生成回路に関する。
【背景技術】
【０００２】
情報通信技術の発展に伴い、情報セキュリティに対する要求が強くなっている。情報セキュリティ技術における予測不可能性は、使用されるランダムデータがどの程度のランダム性を持っているかに依存する。すなわち、情報理論で言うエントロピーが高いデータを用いるほど、セキュリティ強度が強い。たとえば、５１２ビットの鍵であれば、このエントロピーが５１２に近ければ近いほど、セキュリティは強固になる。
【０００３】
ランダムデータを生成する方法として、従来、速い発振信号を、それより十分遅いクロックでラッチするという方法がある。速い発振信号にジッタが乗っている場合、クロックタイミングに対して発振信号の位相が揺らぐため、ランダムな出力を得ることが可能になる。ただし、単純にこの構成をとるだけでは、クロックタイミングと発振タイミング、ジッタの量によって、ランダムデータの生成効率がばらつき、エントロピーが小さくなってしまう。最悪の場合には、常にHighもしくはLowとなることがあり、ランダムデータが生成されない。すなわち、製造ばらつきの影響を受けて、性能にばらつきの多い回路構成となってしまう。
【０００４】
特許文献１には、連続的発振回路もしくは断続的発振回路を用いたランダムデータ生成回路と平滑回路について開示されているが、断続的発振回路を用いてもばらつきの問題は回避できない。また、常にHighもしくはLowとなる場合には、平滑回路も用を成さず、高エントロピーのデータを得ることはできない。
【０００５】
特許文献２には、複数の発振回路を用いる、もしくは、発振回路を複数回起動する技術が記載されているが、複数回路を用いることで、用意した中で最大のエントロピーを出力する発振回路の性能にすることは出来るが、それ以上のエントロピーを得ることはできない。また、同一発振回路を複数回起動する方法では、常にHighもしくはLowとなる場合では動作せず、高エントロピーデータを得ることはできない。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００４−２３４１５３号公報
【特許文献２】特開２０１２−０４８６１４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
実施形態は、製造ばらつきに強く、発振回路の性能が低エントロピーとなった場合でも、高エントロピーのランダムデータを生成可能な乱数生成回路を提案する。
【課題を解決するための手段】
【０００８】
実施形態によれば、乱数生成回路は、第１乃至第Ｎの発振回路（Ｎは２以上の自然数）と、前記第１乃至第Ｎの発振回路の出力を、第１の周波数を持つ第１のクロックによりラッチする第１乃至第Ｎのラッチ回路と、第１乃至第Ｎのエクスクルーシブオア回路と、前記第１乃至第Ｎのエクスクルーシブオア回路の出力を前記第１のクロックによりラッチする第（Ｎ＋１）乃至第（２×Ｎ）のラッチ回路と、前記第（Ｎ＋１）乃至第（２×Ｎ）のラッチ回路の出力の排他的論理和を出力するＮ入力エクスクルーシブオア回路と、前記Ｎ入力エクスクルーシブオア回路から出力されるシリアルデータを、第２の周波数を持つ第２のクロックによりＭビットのパラレルデータ（Ｍは２以上の自然数）に変換するＭビットシフトレジスタとを備え、前記第ｉのエクスクルーシブオア回路の出力は、第ｉのフィードバック出力と、前記第ｉのラッチ回路の出力との排他的論理和であり（但し、ｉは、１〜Ｎのうちの１つである）、前記第２の周波数は、前記第１の周波数と同じ又はそれよりも低い。
【図面の簡単な説明】
【０００９】
【図１】第１の実施例を示す図。
【図２】クロック数と０の確率の関係を示す図。
【図３】クロック数とエントロピーの関係を示す図。
【図４】図１の変形例を示す図。
【図５】図１の変形例を示す図。
【図６】間引き数とエントロピーの関係を示す図。
【図７】断続的発振回路の例を示す図。
【図８】第２のクロックを生成する回路を示す図。
【図９】図８の構成を具体化した回路図。
【図１０】第２の実施例を示す図。
【図１１】第３の実施例を示す図。
【図１２】第４の実施例を示す図。
【図１３】第５の実施例を示す図。
【図１４】第６の実施例を示す図。
【図１５】第７の実施例を示す図。
【図１６】図９の回路の動作を示すタイミングチャート。
【図１７】第２の実施例の変形例を示す図。
【図１８】確率とエントロピーの関係を示す図。
【発明を実施するための形態】
【００１０】
以下、図面を参照しながら乱数生成回路（エントロピーソース生成回路）の実施形態を説明する。
【００１１】
（第１の実施例）  
図１は、エントロピーソース生成回路の第１の実施例である。
【００１２】
エントロピーソース生成回路とは、情報セキュリティなどで用いられる高エントロピーなデータを出力する回路のことである。
【００１３】
第１乃至第Ｎの発振回路（Ｎは２以上の自然数）ＯＳＣは、それぞれ、ランダムにクロック（“０”/“１”信号）を出力する。第１乃至第Ｎのラッチ回路ＬＡ１は、第１乃至第Ｎの発振回路ＯＳＣの出力を、第１の周波数を持つ第１のクロックＣＬＫ１によりラッチする。第１乃至第Ｎのラッチ回路ＬＡ１の出力は、第１乃至第Ｎのエクスクルーシブオア回路ＸＯＲ１に入力される。
【００１４】
第（Ｎ＋１）乃至第（２×Ｎ）のラッチ回路ＬＡ２は、第１乃至第Ｎのエクスクルーシブオア回路ＸＯＲ１の出力を第１のクロックＣＬＫ１によりラッチする。ここで、第ｉのエクスクルーシブオア回路の出力は、第ｉのラッチ回路の出力と第（Ｎ＋ｉ）のラッチ回路の出力の排他的論理和となっている。但し、ｉは、１〜Ｎのうちの１つである。
【００１５】
Ｎ入力エクスクルーシブオア回路ＸＯＲ２は、第（Ｎ＋１）乃至第（２×Ｎ）のラッチ回路の出力の排他的論理和を出力する。ＭビットシフトレジスタＳＲは、Ｎ入力エクスクルーシブオア回路ＸＯＲ２から出力されるシリアルデータを、第２の周波数を持つ第２のクロックＣＬＫ２によりＭビットのパラレルデータ（Ｍは２以上の自然数）に変換する。
【００１６】
ここで、第２のクロックＣＬＫ２の第２の周波数は、第１のクロックの第１の周波数と同じ又はそれよりも低い。例えば、第２のクロックＣＬＫ２は、第１のクロックＣＬＫ１を１／Ｘ（Ｘは自然数）に分周したクロックとすることができる。また、１段目の第１乃至第Ｎのラッチ回路ＬＡ１、及び、２段目の第（Ｎ＋１）乃至第（２×Ｎ）のラッチ回路ＬＡ２は、それぞれ、フリップフロップ回路ＦＦとすることができる。
【００１７】
なお、Ｎ入力エクスクルーシブオア回路ＸＯＲ２は、Ｎが大きいときは、回路規模が増大し、信号遅延が大きくなる。このため、Ｎ入力エクスクルーシブオア回路ＸＯＲ２は、Ｎ’入力エクスクルーシブオア回路の多段接続に変えることも可能である。但し、Ｎ’＜Ｎである。
【００１８】
１段目のＮ個のフリップフロップ回路ＦＦは、Ｎ個の発振回路ＯＳＣの発振信号を強制的にラッチすることで、不確定なデータを出力する。ただし、このデータは、前述のとおり、ばらつきなどによって、出力エントロピーが低いことがある。
【００１９】
そこで、Ｎ個のエクスクルーシブオア回路ＸＯＲ１と２段目のＮ個のフリップフロップ回路ＦＦによる自己フィードバックにより、１段目のＮ個のフリップフロップ回路ＦＦから出力されたデータの影響を全て残すようにする。
【００２０】
たとえば、発振回路１からｎクロック目に出力されるデータをＡｎとすると、発振回路１の後段にあるエクスクルーシブオア回路の出力は、
１クロック目  Ａ０(+)Ａ１（Ａ０は２段目のＦＦの出力の初期値、(+)は排他的論理和）  
２クロック目  Ａ０(+)Ａ１(+)Ａ２  
３クロック目  Ａ０(+)Ａ１(+)Ａ２(+)Ａ３  
・・・  
となり、初期値から全てのデータの影響が保持されることになる。
【００２１】
エントロピーが低く、ランダムデータの出力確率が低い場合には、Ｎ個の発振回路ＯＳＣを何度も動かすことでランダムデータの生成の期待値を上げる必要があるが、Ｎ個のエクスクルーシブオア回路ＸＯＲ１によって、ランダムデータの取りこぼしが無くなる。
【００２２】
１段目のＮ個のフリップフロップ回路ＦＦから０が出力される確率をｑとすると、Ｎ個のエクスクルーシブオア回路ＸＯＲ１のｎクロック目の出力が０である確率をＰｎとすれば、  
Ｐｎ＋１ ＝ Ｐｎ×ｑ ＋ (１−Ｐｎ)×(１−ｑ)      …(１)  
である。
【００２３】
これは、ｎが増加するほど０.５に近づいていく（図２）。
【００２４】
１ビットのエントロピーＨｎは、  
Ｈｎ＝−(Ｐｎ × log2(Ｐｎ)＋(１−Ｐｎ) × log2(１−Ｐｎ))         …(２)  
であるので、Ｎ個の発振回路ＯＳＣを何度も動かすことによって、エントロピーを増加させることが可能である（図３）。
【００２５】
すなわち、Ｎ個の発振回路ＯＳＣと１段目のＮ個のフリップフロップ回路ＦＦの出力が低エントロピーであっても、高エントロピーな出力を得ることが可能になる。
【００２６】
ただし、Ｎ個のエクスクルーシブオア回路ＸＯＲ１と２段目のＮ個のフリップフロップ回路ＦＦによる自己フィードバックは、Ｎ個の発振回路ＯＳＣの出力が常にHighまたはLowになるときは効果がない。そこで、これらＮ個の発振回路ＯＳＣの出力の全てを排他的論理和で１ビット化する。このようにすることで、いくつかの発振回路が動かなかったとしても、１つでもランダムデータを生成できる発振回路が存在していれば、ランダムデータの生成が可能になる。
【００２７】
ここで、発振回路の数Ｎは、２以上の任意の数を用いることができる。
【００２８】
ただし、排他的論理和の性質として、完全に相関している２つの発振回路の出力の排他的論理和を取ると、その２つの発振回路によるランダムデータ生成の効果がなくなってしまうことがある。すなわち、Ｎが偶数個のときは、発振回路の出力のすべてが相関していると、ランダムデータ生成の効果が消えてしまう
そこで、Ｎの数としては、奇数個であるのが望ましい。Ｎが奇数個であれば、仮に２つの発振回路の出力が相関を持っていたとしても、必ず、少なくとも１つの発振回路については、他の発振回路との相関を避けることができるため、ランダムデータ生成の効果が消滅することはない。
【００２９】
Ｎ入力エクスクルーシブオア回路ＸＯＲ２により１ビット化されたデータは、再び、シフトレジスタＳＲによって多ビット化される。ただし、シフトレジスタＳＲによる多ビット化の場合、連続する２ビットには相関がある。たとえば、ｎクロック目と（ｎ＋１）クロック目の２ビットデータを出力する場合、総エントロピーＴＨｎは、各ビットのエントロピーの和になるが、両者には相関があるため、ｎクロック目までで蓄積されたランダム性は、（ｎ＋１）クロック目のデータからは引かねばならない。すなわち、nクロック目の１ビットのエントロピーＨｎから、  
ＴＨｎ  ＝  Ｈｎ＋Ｈ１
となる。
【００３０】
Ｎ入力エクスクルーシブオア回路ＸＯＲ２の後の１クロックで生成されるエントロピーが高いときは、シフトレジスタＳＲを第１のクロックＣＬＫ１と同じ周波数で連続出力させることが可能である。これは、Ｎ個の発振回路ＯＳＣと１段目のＮ個のフリップフロップ回路ＦＦの出力のランダム性が高い場合である。そうでない場合は、シフトレジスタＳＲを動作させる第２のクロックＣＬＫ２の周波数を、第１のクロックＣＬＫ１の周波数よりも低くする。
【００３１】
すなわち、第２のクロックＣＬＫ２の周期を第１のクロックＣＬＫ１の周期よりも長くする、たとえば、第１のクロックＣＬＫ１を１／Ｘに分周したクロック（第１のクロックＣＬＫ１のいくつかを間引いたクロック）を、第２のクロックＣＬＫ２とすることで、１ビットごとにエントロピーを蓄えたデータを出力すればよい。
【００３２】
たとえば、図４に示すように、分周器１０により、第１のクロックＣＬＫ１の周波数を１／Ｘ（Ｘは自然数）に分周する。すなわち、第１のクロックＣＬＫ１をカウンタ１１に入力し、カウンタ１１に接続されたレジスタ１２の値（Ｘ）に応じて、第１のクロックＣＬＫ１を１／Ｘに分周した第２のクロックＣＬＫ２を出力させることができる。
【００３３】
このようにすれば、レジスタ１２に設定するサイクル数（Ｘ）だけ、第１のクロックＣＬＫ１を間引いた第２のクロックＣＬＫ２を生成することができる。
【００３４】
第２のクロックＣＬＫ２をどの程度間引けば良いかは、１段目のＮ個のフリップフロップ回路ＦＦの出力をモニタし、現在生成されているエントロピーを見積もることで予測することが可能である。１段目のＮ個のフリップフロップ回路ＦＦの出力をモニタする方法としては、たとえば、図５に示すように、１段目のＮ個のフリップフロップ回路ＦＦの出力にモニタ用のシフトレジスタ１３を接続する。そして、１段目のＮ個のフリップフロップ回路ＦＦの出力の“０(Low)”/“１(High)”ばらつきを計測することで計算可能である。シフトレジスタ１３は、長ければ長いほど正確な測定が可能である。
【００３５】
図６は、間引き数が０の場合に８ビット出力のエントロピーが２.９であったときの、間引き数とエントロピー増加の様子を示した結果である。
【００３６】
間引き数が多くなるほど、すなわち、第２のクロックＣＬＫ２の周波数が第１のクロックＣＬＫ１の周波数よりも低くなるほど、エントロピーが増加することがわかる。エントロピーの増加の傾きは、１サイクルで出力されるエントロピーに依存し、間引き数ｎに対して、式(２)で計算される量のエントロピーが増加していく。すなわち、１段目のＮ個のフリップフロップ回路ＦＦの出力からエントロピーを見積もることで、間引き数をどの程度にすればよいかが予測できる。
【００３７】
式(１)より、初期状態が“０(Ｌｏｗ)“と仮定すると、
Ｐｎ ＝ ((２ｑ−１)ｎ＋１)/２      …(３)  
となる。シフトレジスタ１３から得られる０の割合を擬似的に確率ｑとして、式(３)からｎクロック目の０の確率Ｐｎを予測することができる。
【００３８】
逆に、ターゲットとなるＰｎが設定されると、(３)式より、  
ｎ ＝ log|２Ｐｎ−１|/ log|２ｑ−１|      …(４)  
により、必要なクロック数ｎを見積もることが可能になる。
【００３９】
たとえば、Ｍビット出力の場合で、要求されるエントロピーがｈであった場合、１ビットごとのデータが持っていなければならないエントロピーはｈ/Ｍと考えることができる。このとき、式(２)と図１８より、必要となる確率Ｐｎが求められる。必要な確率Ｐｎがわかると、式(４)により、必要となるクロック数ｎを見積もることが可能である。
【００４０】
すなわち、１段目のＮ個のフリップフロップ回路ＦＦの出力の“０(Low)”/“１(High)”ばらつきと、ターゲットとなるエントロピーが分かれば、必要な間引き数を予測することが可能になる。
【００４１】
Ｎ個の発振回路ＯＳＣは、連続的発振回路でも断続的発振回路でも良いが、特許文献１で示されるように、消費電力の点では、断続的発振回路が有利である。
【００４２】
図７は、断続的発振回路の例を示している。
【００４３】
この発振回路は、２入力ノア（ＮＯＲ）回路２１と２入力エクスクルーシブオア（ＸＯＲ）回路２２を備える。第１の制御信号ＣＮＴ１は、２入力ノア回路２１に入力される。第２の制御信号ＣＮＴ２及びノア回路２１の出力は、２入力エクスクルーシブオア回路２２に入力される。２入力エクスクルーシブオア回路２２の出力（発振信号）は、フィードバック信号として２入力ノア回路２１に入力される。
【００４４】
この発振回路において、第１の制御信号ＣＮＴ１が“０(Low)”のとき、ノア回路２１は、インバータと等価である。また、第１の制御信号ＣＮＴ１が“１(High)”のとき、ノア回路２１の出力は、“０（固定）”となり、発振しない。すなわち、第１の制御信号ＣＮＴ１は、発振トリガ信号として用いることができ、本例のエントロピーソース生成回路を停止させるときに使用することで、消費電力を削減することが可能になる。
【００４５】
第２の制御信号ＣＮＴ２が“０”のときは、エクスクルーシブオア回路２２は、ノア回路２１の出力をそのまま出力する。また、第２の制御信号ＣＮＴ２が“１”のときは、エクスクルーシブオア回路２２は、インバータと等価である。すなわち、第１の制御信号ＣＮＴ１が“０”のとき、第２の制御信号ＣＮＴ２によって、発振状態とラッチ状態を切り替えることが可能である。
【００４６】
たとえば、第２の制御信号ＣＮＴ２を第１のクロックＣＬＫ１と同期させた場合、発振状態をフリップフロップ回路ＦＦで強制的にラッチするランダムデータ生成方法と、発振状態から第２の制御信号ＣＮＴ２の切り替えによって強制的に発振回路内でラッチするランダムデータ生成方法の、２通りが実行可能である。
【００４７】
素子ばらつきなどで、フリップフロップ回路ＦＦによるラッチと自己ラッチでランダムデータ生成確率に差がある場合でも、本回路を用いることで生成効率を上げることが可能である。
【００４８】
第１の制御信号ＣＮＴ１と第２の制御信号ＣＮＴ２のタイミングは、Ｎ個の発振回路ＯＳＣで共通にしてもよいし、別々にしてもよい。特に、第２の制御信号ＣＮＴ２は、Ｎ個の発振回路ＯＳＣを独立に動作させるために、それぞれで位相をずらすことが効果的である。たとえば、Ｎビットの第２の制御信号ＣＮＴ２にそれぞれ別位相の信号を与えても良いし、隣り合う発振回路どうしで１８０度ずらした位相を与えても良い。
【００４９】
なお、１段目のＮ個のフリップフロップ回路ＦＦの出力のランダムデータは、互いに独立であることが望ましい。相関がある場合には、Ｎ個の発振回路ＯＳＣと１段目のＮ個のフリップフロップ回路ＦＦの組があったとしても、実質的に、それよりも少ない数の発振回路とフリップフロップ回路ＦＦのペアがあるのと等価になってしまうからである。そのためには、上述のように、第２の制御信号ＣＮＴ２の位相を変えることのほかに、それぞれの発振回路を実装する位置をチップ内で一箇所に固めず、互いになるべく離しておくことが有効である。
【００５０】
図８は、第２のクロックＣＬＫ２を生成する回路の一例である。
【００５１】
この回路は、第１のクロックＣＬＫ１の周波数を１／Ｘ（Ｘは自然数）に分周する分周器１０として機能する。分周器１０は、第１のクロックＣＬＫ又はそれを１／Ｘ’（Ｘ’は２以上の自然数）に分周したクロックのうちの１つを、第２のクロックＣＬＫ２として選択的に出力する。
【００５２】
たとえば、第１のクロックＣＬＫ１を用いてカウンタ３１を動かし、カウンタ３１により第１のクロックＣＬＫ１のクロック数をカウントする。そのカウント数とクロック設定データを比較器３２により比較する。両者が一致したとき、間引きクロックＣＬＫ３を立ち上げる。また、この間引きクロックＣＬＫ３の立ち上がりをトリガとしてカウンタ３１をリセットする。
【００５３】
そして、最終的に、第１のクロックＣＬＫ１と間引きクロックＣＬＫ３のうちの１つをマルチプレクサ３３により選択する。マルチプレクサ３３により選択されたクロックは、第２のクロックＣＬＫ２として出力される。
【００５４】
このように、マルチプレクサ３３を用いて、第１のクロックＣＬＫ１を選択できるようにしておくことで、第１のクロックＣＬＫ１の周波数と同じ周波数の第２のクロックＣＬＫ２を生成することが可能になる。また、間引きクロックＣＬＫ３を選択すれば、第１のクロックＣＬＫ１の周波数よりも低い周波数の第２のクロックＣＬＫ２を生成することができる。
【００５５】
このような構成であれば、クロック設定データをソフトウェア等で設定することにより、第２のクロックＣＬＫ２の周波数をチップ製造後に任意に設定可能となる。
【００５６】
図９は、図８の構成を具体化した回路図である。また、図１６はタイミングチャートを示す。
【００５７】
ここでは、カウンタ３１として４ビットカウンタを用いることにより、０〜１５クロックの間で、クロックを間引くことが可能な回路を示している。ただし、ここでは、第１のクロックＣＬＫ１を選択する回路として、マルチプレクサの代わりにアンド（ＡＮＤ）回路を用いている。
【００５８】
第１のクロックＣＬＫ１によってカウントアップされる４個のフリップフロップ回路ＦＦの出力とクロック設定データとを比較器３２内の４個のエクスクルーシブオア回路で比較する。また、すべてのエクスクルーシブオア回路で比較結果が一致するとき、すべてのエクスクルーシブオア回路の出力は“０”となり、かつ、比較器３２の出力としての４入力ノア回路の出力が“１”となる。
【００５９】
図１６のタイミングチャートの例では、クロック設定データは、［“０”，“１”，“０”，“１”］と仮定する。この場合、４ビットカウンタによるカウント開始から１１クロック目（時刻ｔ１）で、クロック設定データとカウンタ３１の出力とが一致する。従って、間引きクロックＣＬＫ３が生成される。
【００６０】
また、間引きクロックＣＬＫ３と第１のクロックＣＬＫ１のタイミングが一致したときに、第２のクロックＣＬＫ２を立ち上げる。
【００６１】
さらに、本回路を動作させているときは、リセット信号ＲＳが“０”であるため、間引きクロックＣＬＫ３が“１”のときに、４個のフリップフロップ回路ＦＦがリセットされる。即ち、カウンタ３１は、時刻ｔ２において、再び、１からカウントを開始する。
【００６２】
なお、本回路において、クロック設定データ（４ビット）のすべてを“０(Low)”としたときは、４個のフリップフロップ回路ＦＦは、常に初期状態（すべての出力が“０”となるリセット状態）を維持し、かつ、すべてのエクスクルーシブオア回路の出力は、常に“０”である。
【００６３】
したがって、クロック設定データ（４ビット）のすべてを“０”としたときは、間引きクロックＣＬＫ３は、常に“１(High)”の状態であるため、アンド回路から出力される第２のクロックＣＬＫ２は、第１のクロックＣＬＫ１と同じになる。
【００６４】
（第２の実施例）  
図１０は、エントロピーソース生成回路の第２の実施例である。
【００６５】
本例では、１段目のフリップフロップ回路ＦＦと２段目のフリップフロップ回路ＦＦの間のエクスクルーシブオア回路による自己フィードバックを、互いに異なるＮ個のエクスクルーシブオア回路間で行う。すなわち、ランダムデータは、次段のＮ入力エクスクルーシブオア回路ＸＯＲ２でまとめられるため、この自己フィードバックは、同じエクスクルーシブオア回路で行われる必要がない。
【００６６】
ここでは、発振回路１の後段にあるエクスクルーシブオア回路の自己フィードバックを、発振回路２の後段にあるエクスクルーシブオア回路の出力（ＦＦの出力）により行い、同様に、発振回路２〜（Ｎ−１）の後段にあるエクスクルーシブオア回路の自己フィードバックを、それぞれ、発振回路３〜Ｎの後段にあるエクスクルーシブオア回路の出力（ＦＦの出力）により行う。
【００６７】
また、発振回路Ｎの後段にあるエクスクルーシブオア回路の自己フィードバックは、発振回路１の後段にあるエクスクルーシブオア回路の出力（ＦＦの出力）により行う。
【００６８】
本例によれば、自己フィードバックによって各発振回路の出力信号をつなぐことが可能であるため、図１７に示すように、図１０のＮ入力エクスクルーシブオア回路ＸＯＲ２を省略することも可能である。この場合、図１７の例は、図１０の例に比べて、回路規模を小さくできるという効果を奏する。
【００６９】
なお、本例においては、回路設計や実装時などにおいて、この自己フィードバックの配線長をできるだけ短くすることを目的に、フィードバック先を適宜変更することが可能である。
【００７０】
（第３の実施例）  
図１１は、エントロピーソース生成回路の第３の実施例である。
【００７１】
本例では、Ｎ個の発振回路ＯＳＣの電源として、新たに、電圧制御回路１４を設ける。１段目のフリップフロップ回路ＦＦがラッチするデータがランダムになるか否かは、Ｎ個の発振回路ＯＳＣの発振タイミングと、第１のクロックＣＬＫ１のタイミングとに、それぞれ依存する。たとえば、Ｎ個の発振回路ＯＳＣの出力が遷移するタイミングで、第１のクロックＣＬＫ１が“１”になれば、後段のＮ個のフリップフロップ回路ＦＦは、メタステーブル状態となり、その出力は、不定となる。
【００７２】
しかし、Ｎ個の発振回路ＯＳＣの出力が“１(High)”または“０(Low)”のときに、第１のクロックＣＬＫ１が“１”になれば、後段のＮ個のフリップフロップ回路ＦＦは、“１”または“０”を出力することになるため、ランダムデータを得ることができない。
【００７３】
そこで、後段のＮ個のフリップフロップ回路ＦＦの出力がランダムデータとなっていないことが判明したときは、電圧制御回路１４により、Ｎ個の発振回路ＯＳＣの電源電圧を変化させる。
【００７４】
すなわち、Ｎ個の発振回路ＯＳＣの発振周波数は、電源電圧に依存するため、Ｎ個の発振回路ＯＳＣの発振周波数を変えることで、Ｎ個の発振回路ＯＳＣの出力が遷移するタイミングで、第１のクロックＣＬＫ１が“１”になるように設定することができる。これにより、ランダムデータを生成する。
【００７５】
なお、本例では、Ｎ個の発振回路ＯＳＣの電源電圧により発振周波数を制御する例を示したが、これに代えて、または、これと共に、グラウンド電圧や基板電圧などの他の要素により発振周波数を制御してもよい。
【００７６】
また、Ｎ個の発振回路ＯＳＣのすべてが共通に電圧制御回路１４に接続される必要もない。すなわち、Ｎ個の発振回路ＯＳＣの発振周波数の制御（たとえば、電源電圧の制御）を、それぞれ独立に行ってもよいし、また、複数のグループにまとめてグループごとに行ってもよい。
【００７７】
Ｎ個の発振回路ＯＳＣのすべてに共通に１つの電圧制御回路を設けるよりも、Ｎ個の発振回路ＯＳＣの各々に、独立に、たとえば、電圧制御回路を設け、Ｎ個の発振回路ＯＳＣの発振周波数を、独立かつ適切に制御できるようにしたほうが、回路規模が大きくなるものの、エントロピー生成の効果は高くなる。
【００７８】
（第４の実施例）  
図１２は、エントロピーソース生成回路の第４の実施例である。
【００７９】
本例では、Ｎ個の発振回路ＯＳＣのそれぞれに、発振動作のスタート/エンドを制御するイネーブル端子を設ける。ここで、発振回路として、たとえば、図７の断続的発振回路を用いる場合には、第１の制御信号ＣＮＴ１または第２の制御信号ＣＮＴ２を、発振動作のスタート/エンドを制御するイネーブル信号として用いることができる。
【００８０】
そして、Ｎ個の発振回路ＯＳＣのイネーブル端子にイネーブル制御回路１５を接続する。イネーブル制御回路１５は、Ｎ個の発振回路ＯＳＣのそれぞれに対してイネーブル信号を出力する。
【００８１】
上述のとおり、Ｎ個の発振回路ＯＳＣの発振周期と第１のクロックＣＬＫ１のタイミングによって、後段のＮ個のフリップフロップ回路ＦＦにラッチされるデータがランダムになるか否かが変わる。すなわち、これら発振周期やクロックタイミングが最適でないと、常に同じ値を出力することになる。
【００８２】
このような常に同じ値を出力することになってしまった発振回路については、ランダムデータを生成する効果という観点からみたとき、それが動作していても、停止していても、何らその効果に影響を与えることがない。したがって、そのような状態になってしまった発振回路は、イネーブル信号により停止状態にする。
【００８３】
これにより、エントロピーソース生成回路の消費電力を削減することができる。また、イネーブル信号を適切に設定することで、過不足ない消費電力でエントロピーを生成することが可能になる。
【００８４】
（第５の実施例）  
図１３は、エントロピーソース生成回路の第５の実施例である。
【００８５】
本例では、シフトレジスタＳＲに第１のクロックＣＬＫ１を用いる。すなわち、１段目のＮ個のフリップフロップ回路ＦＦ、２段目のＮ個のフリップフロップ回路ＦＦ、及び、シフトレジスタＳＲは、すべて同じクロック（第１のクロックＣＬＫ１）により制御される。この場合、上述の各実施例のような、第２のクロックによりデータを間引く動作を行うことができない。
【００８６】
そこで、その代わりとして、ＭビットシフトレジスタＳＲからのＭビット（Ｍは２以上の自然数）のうちの１つを、出力選択信号ＳＥＬにより選択可能なＭ’個（ただし、Ｍ’はＭ以下の自然数）のマルチプレクサ１６を設ける。Ｍ’個のマルチプレクサ１６の各々は、ＭビットシフトレジスタＳＲからのＭ’ビットをランダムに選択する。
【００８７】
これにより、Ｍ個のマルチプレクサ１６から出力されるＭ’ビットは、ランダムデータとしてエントロピーソースとすることができる。すなわち、本例では、クロックを変えてデータを間引く代わりに、シフトレジスタＳＲに蓄積されたデータを出力するときにデータを間引く手法を採用する。
【００８８】
本例によれば、シフトレジスタＳＲのビット数が多くなる、マルチプレクサが必要になるなどの追加の要素が必要になる反面、１つのクロックでエントロピーソース生成回路を制御できるというメリットを得ることができる。
【００８９】
（第６の実施例）  
図１４は、エントロピーソース生成回路の第６の実施例である。
【００９０】
本例では、エントロピー測定回路１７を用いて、１段目のＮ個のフリップフロップ回路ＦＦの出力に基づき、それらが生成するエントロピーを測定する。そして、クロック制御回路１８は、そのエントロピーに基づき、第２のクロックＣＬＫ２を生成し、これを、シフトレジスタＳＲに与える。
【００９１】
エントロピーの測定は、たとえば、１段目のＮ個のフリップフロップ回路ＦＦの出力をエントロピー測定回路１７内のシフトレジスタに保存し、“０”または“１”の割合を計測し、それを擬似的に確率Ｐとみなすことで、式(２)と図１８により計算することができる。
【００９２】
ただし、エントロピー測定回路１７内のシフトレジスタの値が“０”と“１”を周期的に繰り返す場合には、Ｐ＝０.５となり、ランダム性が認められない。
【００９３】
たとえば、Ｎ個の発振回路ＯＳＣの各々が連続的発振回路のとき、１段目のＮ個のフリップフロップ回路ＦＦの出力がランダム性を全く持たない場合として想定されるのは、それら出力が同じ値の連続である、１クロックごとに交互に“０”/“１”が繰り返される、などといった場合である。このような場合には、１段目のＮ個のフリップフロップ回路ＦＦの出力を、たとえば、２クロックおきに、シフトレジスタに保存することにより、シフトレジスタの値が“０”と“１”を周期的に繰り返す状態（Ｐ＝０.５）を避けることができる。
【００９４】
また、仮に、Ｐ＝０．５となってランダム性が認められなくなったときは、Ｐ＝０としてエントロピーを測定する。
【００９５】
同様に、Ｎ個の発振回路ＯＳＣとして図７に示す断続的発振回路を用いたときは、第２の制御信号ＣＮＴ２を第１のクロックＣＬＫ１と同じ周波数の信号と仮定すると、Ｎ個の発振回路ＯＳＣは、発振状態と保持状態を交互に繰り返すことになる。
【００９６】
これら発振状態と保持状態において、連続的発振回路と同様に、“０”と“１”が周期的に繰り返す状態があり得るので、断続的発振回路を用いたときは、１段目のＮ個のフリップフロップ回路ＦＦの出力を、たとえば、４クロックおきに、シフトレジスタに保存する。これにより、シフトレジスタの値が“０”と“１”を周期的に繰り返す状態（Ｐ＝０.５）を避けることができる。
【００９７】
また、式(２)と図１８を用いてエントロピーを計測することにより、データの間引き量、すなわち、第１のクロックＣＬＫ１の周波数と第２のクロックＣＬＫ２の周波数との差を、式(４)により自動的に設定し、高エントロピーのデータを得ることが可能になる。
【００９８】
（第７の実施例）  
図１５は、エントロピーソース生成回路の第７の実施例である。
【００９９】
本例では、自己フィードバックを行うエクスクルーシブオア回路と、Ｎ個の発振回路ＯＳＣの出力のすべての排他的論理和を取るＮ入力エクスクルーシブオア回路の順番を入れ替えた構成例を示す。
【０１００】
たとえば、Ｎ入力エクスクルーシブオア回路ＸＯＲ２は、１段目のＮ個のフリップフロップ回路ＦＦの出力の排他的論理和をとる。また、Ｎ入力エクスクルーシブオア回路ＸＯＲ２の出力は、自己フィードバックを行う２入力エクスクルーシブオア回路ＸＯＲ３に入力される。さらに、２入力エクスクルーシブオア回路ＸＯＲ３の出力は、２段目のフリップフロップ回路ＦＦ（ラッチ回路ＬＡ３）に入力され、２段目のフリップフロップ回路ＦＦの出力は、２入力エクスクルーシブオア回路ＸＯＲ３の入力にフィードバックされる。
【０１０１】
このように、排他的論理和は、演算の順番によらないため、本構成でも、第１の実施例と同様の効果を得ることが可能である。本例の構成を採用することで、各段のフリップフロップ回路ＦＦ間の演算負荷が異なる（バランスが悪くなる）反面、エントロピーソース生成回路としての回路規模が小さくなるというメリットを得ることができる。
【０１０２】
なお、第７の実施例において、図４、図８及び図９に示す分周器１０、図５に示すシフトレジスタ１３、及び、図７に示す発振回路ＯＳＣを採用することが可能である。
【０１０３】
また、第７の実施例において、第３〜第６の実施例（図１１〜図１４）を採用することも可能である。
【０１０４】
（むすび）  
上述の第１乃至第７の実施例によれば、製造ばらつきに強く、発振回路の性能が低エントロピーとなった場合でも、高エントロピーのランダムデータを生成可能なエントロピーソース生成回路を実現できる。
【０１０５】
また、第１乃至第７の実施例を相互に組み合わせて最適もしくは最大の効果を得るようにすることも可能である。
【０１０６】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０１０７】
１０：  分周器、  １１：  カウンタ、  １２：  レジスタ、  １３：  シフトレジスタ、  １４：  電圧制御回路、  １５：  イネーブル制御回路、  １６，３３：  マルチプレクサ、  １７：  エントロピー測定回路、  １８：  クロック制御回路、  ２１：  ２入力ノア回路、  ２２：  ２入力エクスクルーシブオア回路、  ３１：  カウンタ、  ３２：  比較器。
【図１】
2014102768.tif 000003
【図２】
2014102768.tif 000004
【図３】
2014102768.tif 000005
【図４】
2014102768.tif 000006
【図５】
2014102768.tif 000007
【図６】
2014102768.tif 000008
【図７】
2014102768.tif 000009
【図８】
2014102768.tif 000010
【図９】
2014102768.tif 000011
【図１０】
2014102768.tif 000012
【図１１】
2014102768.tif 000013
【図１２】
2014102768.tif 000014
【図１３】
2014102768.tif 000015
【図１４】
2014102768.tif 000016
【図１５】
2014102768.tif 000017
【図１６】
2014102768.tif 000018
【図１７】
2014102768.tif 000019
【図１８】
2014102768.tif 000020