JP6472766B2 - 乱数生成回路 - Google Patents

乱数生成回路 Download PDF

Info

Publication number
JP6472766B2
JP6472766B2 JP2016052320A JP2016052320A JP6472766B2 JP 6472766 B2 JP6472766 B2 JP 6472766B2 JP 2016052320 A JP2016052320 A JP 2016052320A JP 2016052320 A JP2016052320 A JP 2016052320A JP 6472766 B2 JP6472766 B2 JP 6472766B2
Authority
JP
Japan
Prior art keywords
circuit
oscillation signal
duty ratio
duty
random number
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
JP2016052320A
Other languages
English (en)
Other versions
JP2017167799A (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 JP2016052320A priority Critical patent/JP6472766B2/ja
Priority to US15/263,972 priority patent/US10459692B2/en
Publication of JP2017167799A publication Critical patent/JP2017167799A/ja
Application granted granted Critical
Publication of JP6472766B2 publication Critical patent/JP6472766B2/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
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/72Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in cryptographic circuits
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K3/00Circuits for generating electric pulses; Monostable, bistable or multistable circuits
    • H03K3/02Generators characterised by the type of circuit or by the means used for producing pulses
    • H03K3/027Generators characterised by the type of circuit or by the means used for producing pulses by the use of logic circuits, with internal or external positive feedback
    • H03K3/03Astable circuits
    • H03K3/0315Ring oscillators
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K3/00Circuits for generating electric pulses; Monostable, bistable or multistable circuits
    • H03K3/84Generating pulses having a predetermined statistical distribution of a parameter, e.g. random pulse generators
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0869Generation of secret information including derivation or calculation of cryptographic keys or passwords involving random numbers or seeds
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/08Randomization, e.g. dummy operations or using noise

Description

実施形態は、乱数生成回路に関する。
情報通信技術の発展と、クレジットカードや交通系ICカードなどの普及とに伴い、これらのカード類に使用されるICチップのセキュリティ性が重要視されている。悪意のある攻撃者から情報を守るためには、暗号鍵などの生成に使用される乱数に十分な乱雑さ、即ち、エントロピー(乱数性)が求められる。
特許第5074359号公報 特開2005−174206号公報 米国特許第8341201号明細書
Sanu K.Mathew et.al., "2.4 Gbps, 7mW All-Digital PVT-Variation Tolerant True Random Number Generator for 45 nm CMOS High-Performance Microprocessors", IEEE JOURNAL OF SOLID-STATE CIRCUITS, VOL.47, NO.11, NOVEMBER 2012, pp.2807-2821
実施形態は、高エントロピーのランダムデータを生成可能な乱数生成回路(RNG: Random Number Generator)を提案する。
実施形態によれば、乱数生成回路は、第1の発振信号が入力され、所定のデューティー比を有する第2の発振信号を出力する第1の回路と、第2の発振信号と前記第2の発振信号の周波数よりも低い周波数を有するクロックとに基づき複数の値をラッチする第2の回路と、前記複数の値に基づき制御信号を出力する第3の回路と、前記制御信号に基づき前記第1の回路を制御する第4の回路と、を備える。
乱数生成回路の実施例を示す図。 発振信号のデューティー比と0/1の出現頻度との関係を示す図。 0/1の出現頻度と処理内容とを示す図。 発振信号のデューティー比と0/1の出現頻度との関係を示す図。 発振信号のデューティー比と0/1の出現頻度との関係を示す図。 乱数生成回路の回路例を示す図。 セレクタの第1の例を示す図。 NANDゲート回路、インバータ回路、及び、NORゲート回路の例を示す図。 選択信号、信号経路、及び、デューティー比(増減)の関係を示す図。 セレクタの第2の例を示す図。 選択信号、信号経路、及び、デューティー比(増減)の関係を示す図。 セレクタの第3の例を示す図。 選択信号、信号経路、及び、デューティー比(増減)の関係を示す図。 コントローラが出力する選択信号の例を示す図。 セレクタの第4の例を示す図。 選択信号、インバータ回路の駆動力、及び、デューティー比(増減)の関係を示す図。 偏り検出ユニットの第1の例を示す図。 乱数の偏りと制御信号との関係を示す図。 偏り検出ユニットの第2の例を示す図。 乱数の偏りと制御信号との関係を示す図。 コントローラによるデューティー比の制御例を示す図。 デューティー比の増減と選択信号との関係を示す図。 乱数生成装置の例を示す図。 Post-processingの例を示す図。 システムの例を示す図。
(実施例)
以下、図面を参照しながら乱数生成回路(エントロピーソース生成回路)の実施例を説明する。乱数生成回路とは、情報セキュリティなどで用いられる高エントロピーな乱数(0又は1)を生成する回路のことである。
乱数を生成する方法は、大きく2つに分けられる。1つは、アルゴリズムによって何らかの初期値から疑似的に乱数を生成する方法である。もう1つは、乱数生成回路が持つ物理的な不確定要因に基づいて乱数を生成する方法である。前者の方法は、初期値が同じであるときに同じ結果を出力してしまう場合があるため、後者の方法は、前者の手法に比べて、より高いエントロピーを持つ乱数を生成できると考えられる。そこで、本実施例では、後者の方法を前提とする。
後者の方法において、物理的な不確定要因は、例えば、発振回路からの発振信号(0又は1)をその発振周波数よりも十分に低い周波数を持つサンプリングクロックの立ち上がりエッジ(0→1)又は立ち下がりエッジ(1→0)でラッチすることにより得ることができる。
例えば、発振回路(リングオシレータ)からの高周波数の発振信号をD型フリップフロップ回路のD-入力端子に入力することにより、D型フリップフロップ回路が0と1のいずれもラッチ可能なメタステーブル状態(metastable state)を作り出す。この場合、低周波数のサンプリングクロックをC-入力端子に入力すると、サンプリングクロックの立ち上がり時点のD-入力端子の値が、D型フリップフロップ回路内にラッチされ、かつ、Q-出力端子に出力される。即ち、D-入力端子に入力される0と1の割合が半々(1:1)であれば、D型フリップフロップ回路内に0がラッチされる確率と1がラッチされる確率も半々となり、これが物理的な不確定要因となる。
しかし、物理的な不確定要因は、このような発振回路の発振周波数とサンプリングクロックの周波数との関係以外にも、温度、ノイズなどの環境的要素や、デバイスの製造ばらつきなどの製造的要素など、によっても生じる。しかも、これら環境的要素や製造的要素などは、0及び1の一方に有利となる方向、例えば、D型フリップフロップ回路内に0又は1の一方がラッチされ易くなる方向に、物理的な不確定要因に偏りを生じさせる場合がある。これでは、高エントロピーの乱数(ランダムデータ)を生成することができない。
そこで、本実施例では、第一に、物理的な不確定要因に偏りが発生しているか否かを検出する偏り検出ユニットを設け、第二に、物理的な不確定要因に偏りが発生しているときは、これを発振回路にフィードバックし、第三に、発振回路において物理的な不確定要因の偏りをなくす処理を行う技術を提案する。
例えば、図1に示すように、発振回路10と、発振回路10からの高周波数(例えば、100MHz〜2GHz)の発振信号を低周波数(例えば、1MHz〜10MHz)のサンプリングクロックの立ち上がりエッジ又は立ち下がりエッジによりラッチ可能なラッチ回路11と、を備える乱数生成回路を考える。発振回路10は、例えば、リングオシレータであり、ラッチ回路11は、例えば、D型フリップフロップ回路である。
この場合、発振信号のデューティー比(duty ratio)R_dutyが50%であれば、ラッチ回路11の出力信号が0となる確率は50%となり、ラッチ回路11の出力信号が1となる確率も50%となる。従って、高エントロピーのランダムデータを生成できる。但し、本実施例において、デューティー比R_dutyとは、発振信号の1周期の期間と発振信号が1である期間との比、即ち、発振信号が1である期間を発振信号の1周期の期間で割った値に100を掛けた値を意味するものとする。
図2は、発振信号のデューティー比R_duty(=B/A×100)が50%である場合に、ラッチ回路11の出力信号が0又は1となる確率(probability)を示している。
サンプリングクロックは、発振信号が1である期間w_1のセンターで立ち上がり、かつ、サンプリングクロックの立ち上がりは、ばらつき(ジッタ)を有する、と仮定すると、ラッチ回路11の出力信号が0又は1となる確率は、正規分布に従う。例えば、発振信号が1である期間w_1においてサンプリングクロックが立ち上がると、ラッチ回路11の出力信号は、1となり、発振信号が0である期間w_0においてサンプリングクロックが立ち上がると、ラッチ回路11の出力信号は、0となる。
1回のサンプリングにおいて、ラッチ回路11が1をラッチする確率P1は、正規分布上の網掛け部(1)の面積の和と見なすことができ、ラッチ回路11が0をラッチする確率P0は、正規分布上の白抜き部(0)の面積の和と見なすことができる。発振信号の位相とサンプリングクロックの位相が一定であると仮定すると、網掛け部(1)の面積は、正規分布全体の面積の50%となり、白抜き部(0)の面積は、正規分布全体の面積の50%となる。
従って、発振信号のデューティー比R_dutyが50%である場合、ラッチ回路11が1をラッチする確率P1と、ラッチ回路11が0をラッチする確率P0とは、それぞれ、50%となる。
しかし、上述のように、物理的な不確定要因に偏りが発生すると、確率P1と確率P0とは同じにならない。即ち、高エントロピーのランダムデータを生成できない。そこで、偏り検出ユニット12を用いて、物理的な不確定要因に偏りが発生しているか否かを、リアルタイムに、又は、所定時期に、検出する。
物理的な不確定要因に偏りが発生しているか否かは、ラッチ回路11の出力信号、即ち、乱数(0又は1)の値をモニターすることにより判断可能である。
例えば、偏り検出ユニット12は、ラッチ回路11の出力信号が0となる頻度(0の出現頻度)、ラッチ回路11の出力信号が1となる頻度(1の出現頻度)、又は、その両方をモニターする。偏り検出ユニット12は、0の出現頻度と1の出現頻度が同じ又はそれら出現頻度の差が一定範囲内であれば、物理的な不確定要因の偏りはないと判断できる。また、それ以外の場合、偏り検出ユニット12は、物理的な不確定要因の偏りがあると判断できる。
偏り検出ユニット12が、物理的な不確定要因に偏りが発生していると判断したときは、これを発振回路10にフィードバックする。発振回路10は、偏り検出ユニット12からの情報に基づき、物理的な不確定要因の偏りをなくす処理を行う。
例えば、図3に示すように、0の出現頻度f_0が1の出現頻度f_1よりも大きい場合(f_0 > f_1)、図4に示すように、発振信号のデューティー比R_duty(=B/A×100)は、環境的要素や製造的要素などによって、50%よりも小さくなっていると考えられる。この場合、発振回路10は、発振信号のデューティー比R_dutyを大きくする処理を行う。
また、図3に示すように、0の出現頻度f_0と1の出現頻度f_1とが同じ場合(f_0 = f_1)、図2に示すように、発振信号のデューティー比R_duty(=B/A×100)は、50%であると考えられる。この場合、発振回路10は、そのまま発振信号を出力し続ける。
さらに、図3に示すように、1の出現頻度f_1が0の出現頻度f_0よりも大きい場合(f_0 < f_1)、図5に示すように、発振信号のデューティー比R_duty(=B/A×100)は、環境的要素や製造的要素などによって、50%よりも大きくなっていると考えられる。この場合、発振回路10は、発振信号のデューティー比R_dutyを小さくする処理を行う。
このように、本実施例によれば、乱数(0又は1)の値をモニターし、それに基づいて、発振回路が出力する発振信号のデューティー比を制御することにより、高エントロピーのランダムデータを生成可能となる。
(回路例)
図6は、乱数生成回路の回路例を示している。
ラッチ回路11は、サンプリングクロックに基づき、発振信号OSC_1から乱数としての複数の値(例えば、4つの値)Qn, Q(n-1), Q(n-2), Q(n-3)をラッチする。サンプリングクロックの周波数は、発振信号OSC_1の周波数よりも十分に低い。この場合、ラッチ回路11は、例えば、複数の値Qn, Q(n-1), Q(n-2), Q(n-3)をラッチ可能な複数のラッチ部(例えば、4つのラッチ部)11n, 11(n-1), 11(n-2), 11(n-3)を備える。
各ラッチ部11n, 11(n-1), 11(n-2), 11(n-3)は、例えば、D型フリップフロップ回路である。また、複数のラッチ部11n, 11(n-1), 11(n-2), 11(n-3)は、直列接続される。
例えば、発振信号OSC_1は、1段目のラッチ部11nのD-入力端子に入力される。1段目のラッチ部11nのQ-出力端子は、2段目のラッチ部11(n-1)のD-入力端子に接続される。2段目のラッチ部11(n-1)のQ-出力端子は、3段目のラッチ部11(n-2)のD-入力端子に接続される。3段目のラッチ部11(n-2)のQ-出力端子は、4段目のラッチ部11(n-3)のD-入力端子に接続される。乱数は、4段目のラッチ部11(n-3)のQ-出力端子から出力される。また、サンプリングクロックは、複数のラッチ部11n, 11(n-1), 11(n-2), 11(n-3)のC-入力端子に入力される。
1つ目の値(0又は1)は、サンプリングクロックの1つ目の立ち上がりエッジにより1段目のラッチ部11n内にラッチされる。2つ目の値(0又は1)は、サンプリングクロックの2つ目の立ち上がりエッジにより1段目のラッチ部11n内にラッチされる。この時、1つ目の値は、2段目のラッチ部11(n-1)内にラッチされる。
同様に、3つ目の値(0又は1)は、サンプリングクロックの3つ目の立ち上がりエッジにより1段目のラッチ部11n内にラッチされる。この時、2つ目の値及び1つ目の値は、それぞれ、2段目のラッチ部11(n-1)内及び3段目のラッチ部11(n-2)内にラッチされる。また、4つ目の値(0又は1)は、サンプリングクロックの4つ目の立ち上がりエッジにより1段目のラッチ部11n内にラッチされる。この時、3つ目の値、2つ目の値、及び、1つ目の値は、それぞれ、2段目のラッチ部11(n-1)内、3段目のラッチ部11(n-2)内、及び、4段目のラッチ部11(n-3)内にラッチされる。
偏り検出ユニット12は、ラッチ回路11内にラッチされる複数の値Qn, Q(n-1), Q(n-2), Q(n-3)に基づき、0の数(0の出現頻度)、1の数(1の出現頻度)、又は、その両方をモニターする。偏り検出ユニット12は、例えば、0の数と1の数とが同じであれば、物理的な不確定要因の偏りがないことを示す制御信号TUNE0, TUNE1を出力する。また、偏り検出ユニット12は、例えば、0の数と1の数とが異なれば、物理的な不確定要因の偏りがあることを示す制御信号TUNE0, TUNE1を出力する。
制御信号TUNE0, TUNE1は、発振回路10にフィードバックされる。
発振回路10は、例えば、発振信号OSC_0を生成する発振器13と、選択信号SELに基づき発振信号OSC_0のデューティー比R_dutyを変更し、これを発振信号OSC_1として出力するセレクタ14と、制御信号TUNE0, TUNE1に基づき選択信号SELを出力するコントローラ15と、を備える。
発振器13は、例えば、リングオシレータである。発振器13からの発振信号OSC_0のデューティー比R_dutyは、環境的要素や製造的要素などに起因する物理的な不確定要因の偏りによって変化する。コントローラ15は、制御信号TUNE0, TUNE1に基づき、この物理的な不確定要因の偏りを取り除く処理を制御する。
例えば、制御信号TUNE0, TUNE1が、乱数としての複数の値Qn, Q(n-1), Q(n-2), Q(n-3)に関して0の数が1の数よりも多いことを示すとき、発振信号OSC_0のデューティー比R_dutyは、50%よりも小さくなっていると考えられる。この場合、コントローラ15は、発振信号OSC_0のデューティー比R_dutyを大きくする選択信号SELを出力する。
また、制御信号TUNE0, TUNE1が、乱数としての複数の値Qn, Q(n-1), Q(n-2), Q(n-3)に関して1の数が0の数よりも多いことを示すとき、発振信号OSC_0のデューティー比R_dutyは、50%よりも大きくなっていると考えられる。この場合、コントローラ15は、発振信号OSC_0のデューティー比R_dutyを小さくする選択信号SELを出力する。
セレクタ14は、発振信号OSC_0のデューティー比R_dutyを変更又は維持する複数のオプションを備える。セレクタ14は、選択信号SELに基づき、複数のオプションのうちの1つを選択する。セレクタ14から出力される発振信号OSC_1は、50%又はそれに近いデューティー比R_dutyを持つ発振信号である。
(セレクタ)
図6の乱数生成回路内のセレクタの例を説明する。
図7は、セレクタの第1の例を示している。
セレクタ14は、発振信号OSC_0が入力され、発振信号OSC_0の位相を反転させた反転発振信号を出力するインバータ回路14_I0と、共通接続される複数の入力端子を備えるNANDゲート回路14_NANDと、1つの入力端子を備えるインバータ回路14_I1と、共通接続される複数の入力端子を備えるNORゲート回路14_NORと、NANDゲート回路14_NAND、インバータ回路14_I1、及び、NORゲート回路14_NORからの出力信号を選択し、発振信号OSC_1を出力するマルチプレクサ14_MUXと、を備える。
NANDゲート回路14_NAND、インバータ回路14_I1、及び、NORゲート回路14_NORは、それぞれ、発振信号OSC_0のデューティー比R_dutyを変更又は維持する複数のオプションである。
NANDゲート回路14_NANDは、例えば、2つの入力端子を備える2入力NANDゲート回路である。従って、インバータ回路14_I0からの反転発振信号は、NANDゲート回路14_NANDの2つの入力端子に入力される。
NANDゲート回路14_NANDは、例えば、図8に示すように、電源端子Vdd及び出力端子OUT間に並列接続される2つのPチャネルFETs (Field Effect Transistors)と、出力端子OUT及び電源端子Vss間に直列接続される2つのNチャネルFETsと、を備える。また、入力端子INは、全てのFETsのゲートに接続される。この場合、NANDゲート回路14_NANDは、PチャネルFETsのトータル駆動力(チャネル幅)がNチャネルFETsのトータル駆動力(チャネル幅)よりも大きなインバータ回路と等価となる。
従って、NANDゲート回路14_NANDが選択される場合、NANDゲート回路14_NANDは、0よりも1を出力し易くなる。これは、デューティー比R_dutyを大きくする(1の位相を長くする)ことを意味する。即ち、発振信号OSC_0のデューティー比R_dutyが50%よりも小さくなっていると想定されるときは、NANDゲート回路14_NANDを選択し、デューティー比R_dutyを大きくする補正処理を行う。その結果、発振信号OSC_1は、デューティー比R_dutyが50%又はそれに近い値の発振信号となる。
インバータ回路14_I1は、例えば、図8に示すように、電源端子Vdd及び出力端子OUT間に接続される1つのPチャネルFETと、出力端子OUT及び電源端子Vss間に接続される1つのNチャネルFETと、を備える。この場合、インバータ回路14_I1は、PチャネルFETの駆動力(チャネル幅)とNチャネルFETの駆動力(チャネル幅)とが等しいインバータ回路(デフォルト)となる。
従って、インバータ回路14_I1が選択される場合、インバータ回路14_I1は、入力信号のデューティー比R_dutyを変えずに、これをそのまま出力信号として出力する。即ち、発振信号OSC_0のデューティー比R_dutyが50%又はそれに近いときは、インバータ回路14_I1を選択し、デューティー比R_dutyを変化させない。
NORゲート回路14_NORは、例えば、2つの入力端子を備える2入力NORゲート回路である。従って、インバータ回路14_I0からの反転発振信号は、NORゲート回路14_NORの2つの入力端子に入力される。
NORゲート回路14_NORは、例えば、図8に示すように、電源端子Vdd及び出力端子OUT間に直列接続される2つのPチャネルFETsと、出力端子OUT及び電源端子Vss間に並列接続される2つのNチャネルFETsと、を備える。また、入力端子INは、全てのFETsのゲートに接続される。この場合、NORゲート回路14_NORは、NチャネルFETsのトータル駆動力(チャネル幅)がPチャネルFETsのトータル駆動力(チャネル幅)よりも大きなインバータ回路と等価となる。
従って、NORゲート回路14_NORが選択される場合、NORゲート回路14_NORは、1よりも0を出力し易くなる。これは、デューティー比R_dutyを小さくする(0の位相を長くする)ことを意味する。即ち、発振信号OSC_0のデューティー比R_dutyが50%よりも大きくなっていると想定されるときは、NORゲート回路14_NORを選択し、デューティー比R_dutyを小さくする補正処理を行う。その結果、発振信号OSC_1は、デューティー比R_dutyが50%又はそれに近い値の発振信号となる。
図9は、図7のセレクタにおいて、選択信号、信号経路、及び、デューティー比(増減)の関係を示している。
選択信号は、例えば、2ビットデータSEL[1:0]=SEL[1], SEL[0]を使用可能である。選択信号SEL[1:0]は、図7のマルチプレクサ14_MUXに入力される。
例えば、選択信号SEL[1:0]が00のとき、NANDゲート回路14_NANDが選択される。NANDゲート回路14_NANDは、例えば、2入力NANDゲート回路であり、発振信号OSC_0のデューティー比R_dutyを+5%増やす。マルチプレクサ14_MUXは、選択信号SEL[1:0]が00のとき、NANDゲート回路14_NANDの出力信号を発振信号OSC_1として出力する。
また、選択信号SEL[1:0]が01のとき、インバータ回路14_I1が選択される。インバータ回路14_I1は、発振信号OSC_0のデューティー比R_dutyを変化させない(±0%)。マルチプレクサ14_MUXは、選択信号SEL[1:0]が01のとき、インバータ回路14_I1の出力信号を発振信号OSC_1として出力する。
さらに、選択信号SEL[1:0]が10のとき、NORゲート回路14_NORが選択される。NORゲート回路14_NORは、例えば、2入力NORゲート回路であり、発振信号OSC_0のデューティー比R_dutyを-5%減らす。マルチプレクサ14_MUXは、選択信号SEL[1:0]が10のとき、NORゲート回路14_NORの出力信号を発振信号OSC_1として出力する。
図7、図8、及び、図9の例では、デューティー比R_dutyを変更する複数のオプションは、3つであるが、複数のオプションの数は、変更可能である。一般的に、複数のオプションの数が多ければ、デューティー比R_dutyを高精度に制御可能となる。しかし、この場合、セレクタ14の回路規模が大きくなる。
従って、複数のオプションの数は、システムが要求するエントロピーや、乱数生成回路が形成されるチップのフロアプランなどを参考に、最適な数を選択すればよい。
図10は、セレクタの第2の例を示している。
第2の例は、デューティー比R_dutyを変更する複数のオプションの数が6種類ある例である。
セレクタ14は、発振信号OSC_0が入力され、発振信号OSC_0の位相を反転させた反転発振信号を出力するインバータ回路14_I0を備える。
セレクタ14は、6種類のオプションとして、共通接続される2つの入力端子を備えるNANDゲート回路14_NAND0と、共通接続される3つの入力端子を備えるNANDゲート回路14_NAND1と、共通接続される4つの入力端子を備えるNANDゲート回路14_NAND2と、1つの入力端子を備えるインバータ回路14_I1と、共通接続される2つの入力端子を備えるNORゲート回路14_NOR0と、共通接続される3つの入力端子を備えるNORゲート回路14_NOR1と、を備える。
セレクタ14は、さらに、3つのNANDゲート回路14_NAND0, 14_NAND1, 14_NAND2、インバータ回路14_I1、及び、2つのNORゲート回路14_NOR0, 14_NOR1からの出力信号を選択し、発振信号OSC_1を出力するマルチプレクサ14_MUXを備える。
3つのNANDゲート回路14_NAND0, 14_NAND1, 14_NAND2、インバータ回路14_I1、及び、2つのNORゲート回路14_NOR0, 14_NOR1の回路例は、第1の例(図8の回路例)から容易に類推可能であるため、ここでの説明を省略する。
図11は、図10のセレクタにおいて、選択信号、信号経路、及び、デューティー比(増減)の関係を示している。
選択信号は、例えば、3ビットデータSEL[2:0]=SEL[2], SEL[1], SEL[0]を使用可能である。選択信号SEL[2:0]は、図10のマルチプレクサ14_MUXに入力される。
例えば、選択信号SEL[2:0]が001のとき、NANDゲート回路14_NAND2が選択される。NANDゲート回路14_NAND2は、例えば、4入力NANDゲート回路であり、発振信号OSC_0のデューティー比R_dutyを+15%増やす。マルチプレクサ14_MUXは、選択信号SEL[2:0]が001のとき、NANDゲート回路14_NAND2の出力信号を発振信号OSC_1として出力する。
選択信号SEL[2:0]が010のとき、NANDゲート回路14_NAND1が選択される。NANDゲート回路14_NAND1は、例えば、3入力NANDゲート回路であり、発振信号OSC_0のデューティー比R_dutyを+10%増やす。マルチプレクサ14_MUXは、選択信号SEL[2:0]が010のとき、NANDゲート回路14_NAND1の出力信号を発振信号OSC_1として出力する。
選択信号SEL[2:0]が011のとき、NANDゲート回路14_NAND0が選択される。NANDゲート回路14_NAND0は、例えば、2入力NANDゲート回路であり、発振信号OSC_0のデューティー比R_dutyを+5%増やす。マルチプレクサ14_MUXは、選択信号SEL[2:0]が011のとき、NANDゲート回路14_NAND0の出力信号を発振信号OSC_1として出力する。
選択信号SEL[2:0]が100のとき、インバータ回路14_I1が選択される。インバータ回路14_I1は、発振信号OSC_0のデューティー比R_dutyを変化させない(±0%)。マルチプレクサ14_MUXは、選択信号SEL[2:0]が100のとき、インバータ回路14_I1の出力信号を発振信号OSC_1として出力する。
選択信号SEL[2:0]が101のとき、NORゲート回路14_NOR0が選択される。NORゲート回路14_NOR0は、例えば、2入力NORゲート回路であり、発振信号OSC_0のデューティー比R_dutyを-5%減らす。マルチプレクサ14_MUXは、選択信号SEL[2:0]が101のとき、NORゲート回路14_NOR0の出力信号を発振信号OSC_1として出力する。
選択信号SEL[2:0]が110のとき、NORゲート回路14_NOR1が選択される。NORゲート回路14_NOR1は、例えば、3入力NORゲート回路であり、発振信号OSC_0のデューティー比R_dutyを-10%減らす。マルチプレクサ14_MUXは、選択信号SEL[2:0]が110のとき、NORゲート回路14_NOR1の出力信号を発振信号OSC_1として出力する。
図12は、セレクタの第3の例を示している。
第3の例は、第1の例(図7〜図9)において、2入力NANDゲート回路を、PチャネルFETの駆動力(チャネル幅)DFPがNチャネルFETの駆動力(チャネル幅)DFNの2倍であるインバータ回路14_I2に置き換え、かつ、2入力NORゲート回路を、NチャネルFETの駆動力(チャネル幅)DFNがPチャネルFETの駆動力(チャネル幅)DFPの2倍であるインバータ回路14_I3に置き換えた例である。但し、PチャネルFETのチャネル幅WPとNチャネルFETのチャネル幅WNは、等しいものとする。
インバータ回路14_I2は、駆動力(チャネル幅)がDFP=2WPであるPチャネルFETと、駆動力(チャネル幅)がDFN=WNであるNチャネルFETと、を備える。PチャネルFETは、チャネル幅が2WPである1つのトランジスタであってもよいし、チャネル幅がWPである2つのトランジスタを並列接続してもよい。
インバータ回路14_I3は、駆動力(チャネル幅)がDFP=WPであるPチャネルFETと、駆動力(チャネル幅)がDFN=2WNであるNチャネルFETと、を備える。NチャネルFETは、チャネル幅が2WNである1つのトランジスタであってもよいし、チャネル幅がWNである2つのトランジスタを並列接続してもよい。
尚、2つのインバータ回路14_I0, 14_I1は、第1の例と同じであるため、ここでの説明を省略する。
図13は、図11のセレクタにおいて、選択信号、信号経路、及び、デューティー比(増減)の関係を示している。
選択信号は、例えば、2ビットデータSEL[1:0]=SEL[1], SEL[0]を使用可能である。選択信号SEL[1:0]は、図12のマルチプレクサ14_MUXに入力される。
例えば、選択信号SEL[1:0]が00のとき、インバータ回路14_I2が選択される。インバータ回路14_I2は、PチャネルFETの駆動力DFPがNチャネルFETの駆動力DFNよりも大きいため、発振信号OSC_0のデューティー比R_dutyを+5%増やす。マルチプレクサ14_MUXは、選択信号SEL[1:0]が00のとき、インバータ回路14_I2の出力信号を発振信号OSC_1として出力する。
また、選択信号SEL[1:0]が01のとき、インバータ回路(デフォルト)14_I1が選択される。インバータ回路14_I1は、発振信号OSC_0のデューティー比R_dutyを変化させない(±0%)。マルチプレクサ14_MUXは、選択信号SEL[1:0]が01のとき、インバータ回路14_I1の出力信号を発振信号OSC_1として出力する。
さらに、選択信号SEL[1:0]が10のとき、インバータ回路14_I3が選択される。インバータ回路14_I3は、NチャネルFETの駆動力DFNがPチャネルFETの駆動力DFPよりも大きいため、発振信号OSC_0のデューティー比R_dutyを-5%減らす。マルチプレクサ14_MUXは、選択信号SEL[1:0]が10のとき、インバータ回路14_I3の出力信号を発振信号OSC_1として出力する。
尚、セレクタの第1の例(図7〜図9)、第2の例(図10〜図11)、及び、第3の例(図12〜図13)において、不選択のオプションをインバータ回路14_I0の出力端子から切断するゲート回路を追加してもよい。この場合、不選択のオプションを非動作状態にすることが可能なため、低消費電力化に有効である。
図15は、セレクタの第4の例を示している。
第4の例は、第1の例(図7〜図9)において、バッファ回路としてのインバータ回路14_I0, 14_I1を常に選択し、マルチプレクサを省略し、インバータ回路14_I1のPチャネルFETの駆動力(チャネル幅)又はNチャネルFETの駆動力(チャネル幅)を実質的に変更することが可能な補助回路14_sub0, 14_sub1を新たに追加する例である。
本例では、セレクタ14の選択信号として、PE0, PE1, NE0, NE1を使用する。従って、図14に示すように、コントローラ15は、選択信号PE0, PE1, NE0, NE1を出力する。
補助回路14_sub0は、電源端子Vdd及び出力端子OUT間に直列接続される2つのPチャネルFETsと、出力端子OUT及び電源端子Vss間に直列接続される2つのNチャネルFETsと、を備える。インバータ回路14_I0からの反転発振信号は、2つのPチャネルFETsの一方のゲート端子、及び、2つのNチャネルFETsの一方のゲート端子に、それぞれ入力される。選択信号PE0は、2つのPチャネルFETsの他方のゲート端子に入力され、選択信号NE0は、2つのNチャネルFETsの他方のゲート端子に入力される。
同様に、補助回路14_sub1は、電源端子Vdd及び出力端子OUT間に直列接続される2つのPチャネルFETsと、出力端子OUT及び電源端子Vss間に直列接続される2つのNチャネルFETsと、を備える。インバータ回路14_I0からの反転発振信号は、2つのPチャネルFETsの一方のゲート端子、及び、2つのNチャネルFETsの一方のゲート端子に、それぞれ入力される。選択信号PE1は、2つのPチャネルFETsの他方のゲート端子に入力され、選択信号NE1は、2つのNチャネルFETsの他方のゲート端子に入力される。
インバータ回路14_I1内のPチャネルFETの駆動力(チャネル幅)DFP、補助回路14_sub0内の2つのPチャネルFETの駆動力(チャネル幅)DFP、及び、補助回路14_sub1内の2つのPチャネルFETの駆動力(チャネル幅)DFPは、例えば、等しく、かつ、WPである。また、インバータ回路14_I1内のNチャネルFETの駆動力(チャネル幅)DFN、補助回路14_sub0内の2つのNチャネルFETの駆動力(チャネル幅)DFN、及び、補助回路14_sub1内の2つのNチャネルFETの駆動力(チャネル幅)DFNも、例えば、等しく、かつ、WNである。さらに、PチャネルFETのチャネル幅WPとNチャネルFETのチャネル幅WNは、例えば、互いに等しい。
図16は、図15のセレクタにおいて、選択信号、信号経路、及び、デューティー比(増減)の関係を示している。
例えば、選択信号PE0, PE1が共に1であり、選択信号NE0, NE1が共に0であるとき、2つの補助回路14_sub0, 14_sub1は、非動作状態である。この場合、インバータ回路14_I1内のPチャネルFETの駆動力DFP(=WP)とNチャネルFETの駆動力DFN(=WN)は、互いに等しいため、発振信号OSC_0のデューティー比R_dutyは変化せず、発振信号OSC_0が発振信号OSC_1として出力される(±0%)。
選択信号PE1が1であり、選択信号PE0, NE0, NE1が0であるとき、補助回路14_sub0において、制御信号PE0が入力されるPチャネルFETがオン状態となる。また、補助回路14_sub1は、非動作状態である。この場合、インバータ回路14_I1内のPチャネルFETの駆動力DFPが実質的に2WPとなる。即ち、インバータ回路14_I1内のPチャネルFETの駆動力DFPは、インバータ回路14_I1内のNチャネルFETの駆動力DFNの2倍となる。
従って、セレクタ14は、発振信号OSC_0のデューティー比R_dutyを+5%増やし、これを発振信号OSC_1として出力する。
選択信号PE0, PE1, NE0, NE1が全て0であるとき、2つの補助回路14_sub0, 14_sub1において、制御信号PE0, PE1が入力される2つのPチャネルFETがそれぞれオン状態となる。この場合、インバータ回路14_I1内のPチャネルFETの駆動力DFPが実質的に3WPとなる。即ち、インバータ回路14_I1内のPチャネルFETの駆動力DFPは、インバータ回路14_I1内のNチャネルFETの駆動力DFNの3倍となる。
従って、セレクタ14は、発振信号OSC_0のデューティー比R_dutyを+10%増やし、これを発振信号OSC_1として出力する。
選択信号PE0, PE1, NE0が1であり、選択信号NE1が0であるとき、補助回路14_sub0において、制御信号NE0が入力されるNチャネルFETがオン状態となる。また、補助回路14_sub1は、非動作状態である。この場合、インバータ回路14_I1内のNチャネルFETの駆動力DFNが実質的に2WNとなる。即ち、インバータ回路14_I1内のNチャネルFETの駆動力DFNは、インバータ回路14_I1内のPチャネルFETの駆動力DFPの2倍となる。
従って、セレクタ14は、発振信号OSC_0のデューティー比R_dutyを-5%減らし、これを発振信号OSC_1として出力する。
選択信号PE0, PE1, NE0, NE1が全て1であるとき、2つの補助回路14_sub0, 14_sub1において、制御信号NE0, NE1が入力される2つのNチャネルFETがそれぞれオン状態となる。この場合、インバータ回路14_I1内のNチャネルFETの駆動力DFNが実質的に3WNとなる。即ち、インバータ回路14_I1内のNチャネルFETの駆動力DFNは、インバータ回路14_I1内のPチャネルFETの駆動力DFPの3倍となる。
従って、セレクタ14は、発振信号OSC_0のデューティー比R_dutyを-10%減らし、これを発振信号OSC_1として出力する。
(偏り検出ユニット)
図6の乱数生成回路内の偏り検出ユニットの例を説明する。
図17は、偏り検出ユニットの第1の例を示している。
偏り検出ユニット12は、乱数としての複数の値Qn, Q(n-1), Q(n-2), Q(n-3)が入力され、制御信号TUNE0を出力するAND回路12_0と、複数の値Qn, Q(n-1), Q(n-2), Q(n-3)の反転信号が入力され、制御信号TUNE1を出力するAND回路12_1と、を備える。制御信号TUNE0, TUNE1は、コントローラ15に入力される。
この場合、例えば、図18に示すように、乱数としての複数の値Qn, Q(n-1), Q(n-2), Q(n-3)の全てが0のとき、制御信号TUNE1が1となる。
複数の値Qn, Q(n-1), Q(n-2), Q(n-3)の全てが0であるということは、0の出現頻度が多いことを意味する。0の出現頻度が多いということは、発振信号のデューティー比R_dutyが50%よりも小さいと考えられる。従って、偏り検出ユニット12は、発振信号のデューティー比R_dutyを大きくする指示として、制御信号TUNE1(=1)を出力する。
また、例えば、図18に示すように、乱数としての複数の値Qn, Q(n-1), Q(n-2), Q(n-3)の全てが1のとき、制御信号TUNE0が1となる。
複数の値Qn, Q(n-1), Q(n-2), Q(n-3)の全てが1であるということは、1の出現頻度が多いことを意味する。1の出現頻度が多いということは、発振信号のデューティー比R_dutyが50%よりも大きいと考えられる。従って、偏り検出ユニット12は、発振信号のデューティー比R_dutyを小さくする指示として、制御信号TUNE0(=1)を出力する。
さらに、複数の値Qn, Q(n-1), Q(n-2), Q(n-3)が、全て0でなく、かつ、全て1でない場合、2つの制御信号TUNE0, TUNE1は、共に0となる。
本例では、複数の値Qn, Q(n-1), Q(n-2), Q(n-3)が、全て0でなく、かつ、全て1でない場合、乱数(0又は1)の生成に大きな偏りはないと判断し、現在の発振信号のデューティー比R_dutyをそのまま維持する。
図19は、偏り検出ユニットの第2の例を示している。
第2の例は、乱数としての複数の値Qn, Q(n-1), Q(n-2), Q(n-3), …Q(n-7)に関し、1の数が閾値(下限)N_lower又はそれよりも小さいか、及び、1の数が閾値(上限)N_higher又はそれよりも大きいか、を判断することにより、制御信号TUNE0, TUNE1を決定する例である。本例では、1の数を対象とするが、これに代えて、0の数を対象としてもよい。
偏り検出ユニット12は、乱数としての複数の値Qn, Q(n-1), Q(n-2), Q(n-3) , …Q(n-7)が入力され、制御信号TUNE0を出力する論理回路12_0’と、複数の値Qn, Q(n-1), Q(n-2), Q(n-3) , …Q(n-7)が入力され、制御信号TUNE1を出力する論理回路12_1’と、を備える。制御信号TUNE0, TUNE1は、コントローラ15に入力される。
この場合、例えば、図20に示すように、論理回路12_1’は、乱数としての複数の値Qn, Q(n-1), Q(n-2), Q(n-3) , …Q(n-7)のうち、1の数の合計Total_1が閾値(例えば、1)N_lowerと同じ又はそれよりも少ないと判断すると、制御信号TUNE1を1にする。
複数の値Qn, Q(n-1), Q(n-2), Q(n-3) , …Q(n-7)のうち、1の数の合計Total_1が閾値N_lowerと同じ又はそれよりも少ないということは、0の出現頻度が多いことを意味する。0の出現頻度が多いということは、発振信号のデューティー比R_dutyが50%よりも小さいと考えられる。従って、偏り検出ユニット12は、発振信号のデューティー比R_dutyを大きくする指示として、制御信号TUNE1(=1)を出力する。
また、例えば、図20に示すように、論理回路12_0’は、乱数としての複数の値Qn, Q(n-1), Q(n-2), Q(n-3) , …Q(n-7)のうち、1の数の合計Total_1が閾値(例えば、7)N_higherと同じ又はそれよりも多いと判断すると、制御信号TUNE0を1にする。
複数の値Qn, Q(n-1), Q(n-2), Q(n-3) , …Q(n-7)のうち、1の数の合計Total_1が閾値N_higherと同じ又はそれよりも多いということは、1の出現頻度が多いことを意味する。1の出現頻度が多いということは、発振信号のデューティー比R_dutyが50%よりも大きいと考えられる。従って、偏り検出ユニット12は、発振信号のデューティー比R_dutyを小さくする指示として、制御信号TUNE0(=1)を出力する。
本例では、複数の値Qn, Q(n-1), Q(n-2), Q(n-3) , …Q(n-7)のうち、1の数の合計Total_1が、N_lower<Total_1<N_higherであるときは、乱数(0又は1)の生成に大きな偏りはないと判断し、現在の発振信号のデューティー比R_dutyをそのまま維持する。即ち、制御信号TUNE0, TUNE1は、共に0となる。
(コントローラ)
図21は、コントローラによるデューティー比の制御例を示している。図22は、図21の制御例における選択信号の状態を示している。
コントローラは、図6、図14、図17、及び、図19のコントローラ15である。コントローラは、偏り検出ユニットからの制御信号TUNE0, TUNE1に基づき、発振信号のデューティー比R_dutyの増減を制御する。
例えば、制御信号TUNE1が1(0の出現頻度が多い)を示しているとき、コントローラは、発振信号のデューティー比R_dutyを+5%増やす選択信号SEL[1:0]=00を出力する。
また、デューティー比R_dutyが+5%増加している状態において、さらに、制御信号TUNE1が1を示すとき、コントローラは、発振信号のデューティー比R_dutyをさらに増やすか、又は、この状態(+5%)を維持する選択信号を出力する。いずれを選択するかは、セレクタ内の複数のオプションの数に依存する。例えば、図7又は図12のセレクタを採用する場合、複数のオプションの数は、3つである。
従って、図21及び図22に示すように、デューティー比R_dutyが+5%増加している状態において、さらに、制御信号TUNE1が1を示すとき、コントローラは、発振信号のデューティー比R_dutyを+5%増加のまま維持する選択信号SEL[1:0]=00を出力する。
また、デューティー比R_dutyが+5%増加している状態において、制御信号TUNE0, TUNE1が共に0を示すときも、コントローラは、発振信号のデューティー比R_dutyを+5%増加のまま維持する選択信号SEL[1:0]=00を出力する。
さらに、デューティー比R_dutyが+5%増加している状態において、制御信号TUNE0が1を示すとき、コントローラは、発振信号のデューティー比R_dutyを減らす、即ち、デューティー比R_dutyの増減を±0%に戻す選択信号SEL[1:0]=01を出力する。デューティー比R_dutyの増減が±0%の状態において、制御信号TUNE0, TUNE1が共に0を示すとき、コントローラは、発振信号のデューティー比R_dutyの増減が±0%の状態を維持する選択信号SEL[1:0]=01を出力する。
また、デューティー比R_dutyの増減が±0%の状態において、制御信号TUNE0が1を示すとき、コントローラは、発振信号のデューティー比R_dutyを-5%減らす選択信号SEL[1:0]=10を出力する。デューティー比R_dutyが-5%減少している状態において、さらに、制御信号TUNE0が1を示すとき、及び、制御信号TUNE0, TUNE1が共に0を示すとき、コントローラは、発振信号のデューティー比R_dutyを-5%減少のまま維持する選択信号SEL[1:0]=10を出力する。
さらに、デューティー比R_dutyが-5%減少している状態において、制御信号TUNE1が1を示すとき、コントローラは、発振信号のデューティー比R_dutyを増やす、即ち、デューティー比R_dutyの増減を±0%に戻す選択信号SEL[1:0]=01を出力する。
(乱数生成装置)
上述の乱数生成回路を用いた乱数生成装置の例を説明する。
図23は、乱数生成装置の例を示している。
乱数生成装置30は、複数の乱数生成回路RNG_0, RNG_1, …RNG_n(nは2以上の自然数)と、複数の乱数生成回路RNG_0, RNG_1, …RNG_nの出力信号ROSC_0, ROSC1, …ROSC_nが入力され、乱数を出力するポストプロセッシング(Post-processing)20と、を備える。
各乱数生成回路RNG_0, RNG_1, …RNG_nは、上述の乱数生成回路である。ポストプロセッシング20は、複数の乱数生成回路RNG_0, RNG_1, …RNG_nからの出力信号(乱数)ROSC_0, ROSC1, …ROSC_nに、さらに論理的な処理を加え、さらに高エントロピーの乱数を生成するための回路である。
ポストプロセッシング20は、例えば、図24に示すように、攪拌回路21と、LFSR (Linear Feedback Shift Register) 22と、加算器23と、ビットシフト回路24と、自己平滑回路25と、シフトレジスタ26と、を備える。
攪拌回路21は、出力信号ROSC_0, ROSC1, …ROSC_nをランダムに選択し、選択された複数の出力信号を攪拌関数により互いに結合し、複数ビットを出力する。LFSR22は、自己平滑回路25からの複数ビットをフィードバックすることにより、出力データ(乱数)の周期性を取り除き、より高いエントロピーを実現する回路である。加算器23は、攪拌回路21からの複数ビットとLFSR22からの複数ビットを加算する。
ビットシフト回路24は、加算器23からの複数ビットをシフトし、自己平滑回路25に出力する。自己平滑回路25は、ビットシフト回路24からの複数ビットに対して、0/1の出現頻度を均等化する処理を行い、0/1の出現頻度が均等化された複数ビットを出力する回路である。シフトレジスタ26は、自己平滑回路25からの複数ビットに基づき、最終的な乱数を出力する。
(システム)
上述の乱数生成回路を利用したシステムの例を説明する。
図25は、システムの例を示している。
このシステムは、無線通信などの情報通信において高いセキュリティ性が求められるシステム、例えば、クレジットカードやICカードなどに搭載されるシステムである。
プロセッサ31は、例えば、情報通信におけるデータ転送などを制御する。バッファメモリ32は、例えば、RAM (Random Access Memory)などの揮発性メモリであり、データを一時的に記憶する。ストレージメモリ33は、例えば、NANDフラッシュメモリなどの不揮発性メモリであり、ファームウェアを記憶する。
セキュリティモジュール34は、例えば、情報通信においてデータの暗号化に使用される暗号鍵を生成し、データを暗号化(encrypt)/復号化(decrypt)する。乱数生成装置30は、例えば、暗号鍵の生成に使用される乱数を出力する。乱数生成装置30は、例えば、図23の乱数生成装置である。通信モジュール35は、例えば、情報通信においてデータの送受信(transmitting/receiving)を制御する。
システムバス36は、乱数生成装置30、プロセッサ31、バッファメモリ32、ストレージメモリ33、セキュリティモジュール34、及び、通信モジュール35を互いに接続する。
(むすび)
以上、本実施例によれば、発振回路が出力する発振信号のデューティー比を制御することにより高エントロピーの乱数(ランダムデータ)を生成できる。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
10: 発振回路、 11: ラッチ回路、 11n, 11(n-1), 11(n-2), 11(n-3): ラッチ部(フリップフロップ回路)、 12: 偏り検出ユニット、 13: 発振器、 14: セレクタ、 15: コントローラ、 20: Post-processing、 21: 攪拌回路、 22: LFSR、 23: 加算器、 24: ビットシフト回路、 25: 自己平滑回路、 26: シフトレジスタ、 30: 乱数生成装置、 31: プロセッサ、 32: バッファメモリ、 33: ストレージメモリ、 34: セキュリティモジュール、 35: 通信モジュール。

Claims (5)

  1. 第1の発振信号が入力され、所定のデューティー比を有する第2の発振信号を出力する第1の回路と、
    第2の発振信号と前記第2の発振信号の周波数よりも低い周波数を有するクロックとに基づき複数の値をラッチする第2の回路と、
    前記複数の値に基づき制御信号を出力する第3の回路と、
    前記制御信号に基づき、前記所定のデューティー比が50%よりも小さくなっているときには前記所定のデューティー比を大きくし、前記所定のデューティー比が50%よりも大きくなっているときには前記所定のデューティー比を小さくするように前記第1の回路を制御する第4の回路と、
    を具備する乱数生成回路。
  2. 前記第1の発振信号を生成する第5の回路をさらに備える、請求項1に記載の乱数生成回路。
  3. 前記第2の回路は、直列接続される複数のラッチ部を備え、前記複数の値は、前記複数のラッチ部にラッチされる、請求項1又は2に記載の乱数生成回路。
  4. 前記第1の回路は、複数の入力端子を備えるNANDゲート回路と、入力端子を備えるインバータ回路と、複数の入力端子を備えるNORゲート回路と、を備え、
    前記第4の回路は、前記NANDゲート回路、インバータ回路、及び、NORゲート回路のうちの1つの選択を制御する、
    請求項1乃至3のいずれか1項に記載の乱数生成回路。
  5. 前記第1の回路は、入力端子をそれぞれ備えるPチャネルFET及びNチャネルFETを含み、
    前記第4の回路は、前記PチャネルFETとNチャネルFETのうち少なくともいずれかの駆動力の変更を制御する、
    請求項1乃至3のいずれか1項に記載の乱数生成回路。
JP2016052320A 2016-03-16 2016-03-16 乱数生成回路 Active JP6472766B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2016052320A JP6472766B2 (ja) 2016-03-16 2016-03-16 乱数生成回路
US15/263,972 US10459692B2 (en) 2016-03-16 2016-09-13 Random number generator

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2016052320A JP6472766B2 (ja) 2016-03-16 2016-03-16 乱数生成回路

Publications (2)

Publication Number Publication Date
JP2017167799A JP2017167799A (ja) 2017-09-21
JP6472766B2 true JP6472766B2 (ja) 2019-02-20

Family

ID=59855577

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016052320A Active JP6472766B2 (ja) 2016-03-16 2016-03-16 乱数生成回路

Country Status (2)

Country Link
US (1) US10459692B2 (ja)
JP (1) JP6472766B2 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104702281B (zh) * 2015-03-11 2017-12-05 华为技术有限公司 一种采样时钟产生电路及模数转换器
EP3729317B1 (en) * 2017-12-22 2021-10-20 Koninklijke Philips N.V. A computer-implemented method of applying a first function to each data element in a data set, and a worker node for implementing the same
CN110489351B (zh) * 2018-05-14 2021-03-09 英韧科技(上海)有限公司 芯片指纹管理装置及安全芯片
CN110045947B (zh) * 2019-04-22 2021-09-17 湖南国科微电子股份有限公司 一种随机数发生单元与装置
US11349462B1 (en) * 2021-03-05 2022-05-31 Taiwan Semiconductor Manufacturing Company, Ltd. Selector-based random number generator and method thereof

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5524281B2 (ja) * 1973-10-31 1980-06-27
JPS61265914A (ja) * 1985-05-20 1986-11-25 Nec Ic Microcomput Syst Ltd デユ−テイ比調整回路
JP3372858B2 (ja) * 1997-02-27 2003-02-04 エヌイーシーマイクロシステム株式会社 カウンタ
US5937024A (en) 1997-02-27 1999-08-10 Nec Corporation Counter for counting high frequency
JP3788881B2 (ja) 1999-03-09 2006-06-21 株式会社ルネサステクノロジ Icカードと半導体集積回路装置
US6862605B2 (en) * 2001-08-15 2005-03-01 Scott A. Wilber True random number generator and entropy calculation device and method
JP3604658B2 (ja) * 2001-09-26 2004-12-22 株式会社東芝 乱数生成回路
US7406267B2 (en) * 2002-11-06 2008-07-29 Finisar Corporation Method and apparatus for transmitting a signal using thermal chirp management of a directly modulated transmitter
JP3696209B2 (ja) 2003-01-29 2005-09-14 株式会社東芝 シード生成回路、乱数生成回路、半導体集積回路、icカード及び情報端末機器
JP2005033089A (ja) * 2003-07-10 2005-02-03 Matsushita Electric Ind Co Ltd 半導体装置
JP2005174206A (ja) * 2003-12-15 2005-06-30 Sony Corp 真性乱数生成装置または真性乱数生成方法
JP4982750B2 (ja) 2007-01-22 2012-07-25 国立大学法人電気通信大学 乱数発生器及び乱数発生器の作成方法
US8676870B2 (en) * 2007-09-18 2014-03-18 Seagate Technology Llc Active test and alteration of sample times for a ring based random number generator
KR101481572B1 (ko) * 2007-10-19 2015-01-26 삼성전자주식회사 난수 발생 장치
JP5074359B2 (ja) 2008-11-12 2012-11-14 日本電信電話株式会社 乱数生成回路
JP5259830B2 (ja) 2009-09-29 2013-08-07 株式会社東芝 乱数生成回路
JP5465636B2 (ja) 2010-08-30 2014-04-09 日本電信電話株式会社 乱数生成回路
JP6034153B2 (ja) * 2012-11-21 2016-11-30 株式会社東芝 乱数生成回路

Also Published As

Publication number Publication date
JP2017167799A (ja) 2017-09-21
US10459692B2 (en) 2019-10-29
US20170269904A1 (en) 2017-09-21

Similar Documents

Publication Publication Date Title
JP6472766B2 (ja) 乱数生成回路
US8054098B2 (en) Lightweight secure physically unclonable functions
US6954770B1 (en) Random number generator
US11568116B2 (en) Flip-flop based true random number generator (TRNG) structure and compiler for same
US8260835B2 (en) Random number generator with ring oscillation circuit
US7797361B2 (en) System and method for generating random numbers using parity feedback
EP3709157B1 (en) Random number generator
US20130129083A1 (en) Tamper-resistant memory integrated circuit and encryption circuit using same
US10095477B2 (en) Self-timed random number generator
KR101987141B1 (ko) 난수 발생기
Lu et al. 1.32 GHz high-throughput charge-recovery AES core with resistance to DPA attacks
US9195434B2 (en) Power supply for ring-oscillator based true random number generator and method of generating true random numbers
TW201626717A (zh) 具有減少的動態功率消耗之循序邏輯電路
US7602219B2 (en) Inverting cell
CN107797788B (zh) 一种随机数发生装置、真随机数发生器及系统级芯片
US20090327381A1 (en) True random number generator
US9525457B1 (en) Spread spectrum clock generation using a tapped delay line and entropy injection
TWI579763B (zh) 具有亂數產生模式的儲存電路
US10198683B2 (en) Device and method for managing the current consumption of an integrated module
US8750497B2 (en) Cryptographic device for implementing S-box
Acar et al. A random number generator based on irregular sampling and transient effect ring oscillators
JP2007122560A (ja) 乱数生成回路
EP2933719B1 (en) Digital methods and devices for generating true random numbers
Anchana et al. Design of PUF Based Chaotic Random Number Generator
Nyathi et al. A high performance, hybrid wave-pipelined linear feedback shift register with skew tolerant clocks

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180222

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180911

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180925

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20181126

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: 20181225

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190123

R151 Written notification of patent or utility model registration

Ref document number: 6472766

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151