JP6423277B2 - 乱数生成装置及び乱数生成方法 - Google Patents

乱数生成装置及び乱数生成方法 Download PDF

Info

Publication number
JP6423277B2
JP6423277B2 JP2015003677A JP2015003677A JP6423277B2 JP 6423277 B2 JP6423277 B2 JP 6423277B2 JP 2015003677 A JP2015003677 A JP 2015003677A JP 2015003677 A JP2015003677 A JP 2015003677A JP 6423277 B2 JP6423277 B2 JP 6423277B2
Authority
JP
Japan
Prior art keywords
failure
random number
logic gate
logic
circuit
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
JP2015003677A
Other languages
English (en)
Other versions
JP2016128999A (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.)
MegaChips Corp
Original Assignee
MegaChips 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 MegaChips Corp filed Critical MegaChips Corp
Priority to JP2015003677A priority Critical patent/JP6423277B2/ja
Priority to US14/974,081 priority patent/US20160179472A1/en
Publication of JP2016128999A publication Critical patent/JP2016128999A/ja
Application granted granted Critical
Publication of JP6423277B2 publication Critical patent/JP6423277B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

本発明は、乱数生成装置及び乱数生成方法に関し、特に、真性乱数の生成装置及び生成方法に関する。
近年における情報技術の発達に伴い、第三者による盗聴、改ざん、なりすまし等の犯罪が増加する傾向にある。そのため、暗号化による情報セキュリティが重要になってきており、暗号化において乱数の利用は不可欠である。
従来は、関数の組み合わせによる計算式を用いた演算によって生成される擬似乱数が多く使用されていたが、関数や初期設定が人為的に漏洩する危険性や、第三者によって乱数生成パターンが予測され得る可能性があった。そのため、擬似乱数に代えて、再現不可能性及び予測不可能性の高い真性乱数が求められるようになった。
一般的な真性乱数生成器では、二値論理の「0」と「1」とが交互に繰り返される出力値をリング発振器から出力し、その出力値をシフトレジスタで所定のサンプリングクロックを用いてサンプリングすることによって、真性乱数が生成される。
なお、下記特許文献1には、乱数出力レジスタから出力された乱数出力に基づいてシステムクロックの整数倍のサンプリングクロックを生成し、当該サンプリングクロックを用いて発振器の出力値をサンプリングすることにより、乱数出力レジスタで乱数を生成する真性乱数生成装置が開示されている。
特開2005−174206号公報
上記の通り一般的な真性乱数生成器では、リング発振器からの出力値をシフトレジスタでサンプリングすることによって、真性乱数が生成される。しかし、リング発振器を構成する複数の論理ゲートのうちのいずれかの論理ゲートが故障すれば、リング発振器は発振しなくなり、リング発振器からの出力値は「0」又は「1」に固定される。従って、そのような出力値をサンプリングしても乱数の生成は不可能であるため、論理ゲートが故障した状態で乱数生成器の使用を継続するのは、セキュリティ上、深刻な脅威になるおそれがある。
本発明はかかる事情に鑑みて成されたものであり、適正な乱数を生成し得ない状態で継続して使用されることを回避することが可能な、乱数生成装置及び乱数生成方法を得ることを目的とするものである。
本発明の第1の態様に係る乱数生成装置は、直列に接続された複数奇数個の論理ゲートを含む論理ゲート列を有し、二値論理の「0」と「1」とが交互に繰り返される出力値を出力する発振回路と、前記発振回路の出力値を所定のタイミングでサンプリングすることにより、乱数を生成する乱数生成回路と、前記論理ゲート列に含まれる複数の論理ゲートのうちいずれかの論理ゲートが故障している場合に、その故障を検出する検出回路と、を備え、前記検出回路は、前記論理ゲート列に含まれる複数の論理ゲートの各々について、論理ゲートの出力値が所定方向にトグルしていないことを検出することにより、論理ゲートの故障を検出することを特徴とするものである。
第1の態様に係る乱数生成装置によれば、検出回路は、論理ゲート列に含まれる複数の論理ゲートのうちいずれかの論理ゲートが故障している場合に、その故障を検出する。従って、検出回路がいずれかの論理ゲートの故障を検出した場合には、乱数を使用する外部装置に対してその旨を通知することにより、あるいは、乱数生成装置内でその故障を補正することにより、適正な乱数を生成し得ない状態で乱数生成装置が継続して使用されることを回避できる。
また、第1の態様に係る乱数生成装置によれば、検出回路は、論理ゲート列に含まれる複数の論理ゲートの各々について、論理ゲートの出力値が所定方向にトグルしていないことを検出することにより、論理ゲートの故障を検出する。これにより、論理ゲートの故障を簡易かつ確実に検出することが可能となる。
本発明の第2の態様に係る乱数生成装置は、直列に接続された複数奇数個の論理ゲートを含む論理ゲート列を有し、二値論理の「0」と「1」とが交互に繰り返される出力値を出力する発振回路と、前記発振回路の出力値を所定のタイミングでサンプリングすることにより、乱数を生成する乱数生成回路と、前記論理ゲート列に含まれる複数の論理ゲートのうちいずれかの論理ゲートが故障している場合に、その故障を検出する検出回路と、前記検出回路がいずれかの論理ゲートの故障を検出した場合に、前記乱数生成装置の出力値が無効であることを示す通知信号を出力する故障通知部と、を備えることを特徴とするものである。
第2の態様に係る乱数生成装置によれば、検出回路は、論理ゲート列に含まれる複数の論理ゲートのうちいずれかの論理ゲートが故障している場合に、その故障を検出する。従って、検出回路がいずれかの論理ゲートの故障を検出した場合には、乱数を使用する外部装置に対してその旨を通知することにより、あるいは、乱数生成装置内でその故障を補正することにより、適正な乱数を生成し得ない状態で乱数生成装置が継続して使用されることを回避できる。
また、第2の態様に係る乱数生成装置によれば、故障通知部は、検出回路がいずれかの論理ゲートの故障を検出した場合に、乱数生成装置の出力値が無効であることを示す通知信号を出力する。従って、乱数を使用する外部装置は、故障通知部から当該通知信号が入力されることにより、乱数の使用を直ちに停止することが可能となる。
本発明の第3の態様に係る乱数生成装置は、直列に接続された複数奇数個の論理ゲートを含む論理ゲート列を有し、二値論理の「0」と「1」とが交互に繰り返される出力値を出力する発振回路と、前記発振回路の出力値を所定のタイミングでサンプリングすることにより、乱数を生成する乱数生成回路と、前記論理ゲート列に含まれる複数の論理ゲートのうちいずれかの論理ゲートが故障している場合に、その故障を検出する検出回路と、前記検出回路がいずれかの論理ゲートの故障を検出した場合に、その故障を補正する故障補正回路と、を備えることを特徴とするものである。
第3の態様に係る乱数生成装置によれば、検出回路は、論理ゲート列に含まれる複数の論理ゲートのうちいずれかの論理ゲートが故障している場合に、その故障を検出する。従って、検出回路がいずれかの論理ゲートの故障を検出した場合には、乱数を使用する外部装置に対してその旨を通知することにより、あるいは、乱数生成装置内でその故障を補正することにより、適正な乱数を生成し得ない状態で乱数生成装置が継続して使用されることを回避できる。
また、第3の態様に係る乱数生成装置によれば、故障補正回路は、検出回路がいずれかの論理ゲートの故障を検出した場合に、その故障を補正する。従って、故障補正回路が論理ゲートの故障を補正することによって発振回路は適正な出力値を出力するため、乱数生成回路は当該適正な出力値に基づいて適正な乱数を生成できる。その結果、適正な乱数を生成し得ない状態で乱数生成装置が継続して使用されることを回避できる。
本発明の第4の態様に係る乱数生成装置は、直列に接続された複数奇数個の論理ゲートを含む論理ゲート列を有し、二値論理の「0」と「1」とが交互に繰り返される出力値を出力する発振回路と、前記発振回路の出力値を所定のタイミングでサンプリングすることにより、乱数を生成する乱数生成回路と、前記論理ゲート列に含まれる複数の論理ゲートのうちいずれかの論理ゲートが故障している場合に、その故障を補正する故障補正回路と、を備えることを特徴とするものである。
第4の態様に係る乱数生成装置によれば、故障補正回路は、論理ゲート列に含まれる複数の論理ゲートのうちいずれかの論理ゲートが故障している場合に、その故障を補正する。従って、故障補正回路が論理ゲートの故障を補正することによって発振回路は適正な出力値を出力するため、乱数生成回路は当該適正な出力値に基づいて適正な乱数を生成できる。その結果、適正な乱数を生成し得ない状態で乱数生成装置が継続して使用されることを回避できる。
本発明の第5の態様に係る乱数生成装置は、第3又は第4の態様に係る乱数生成装置において特に、前記故障補正回路は、故障論理ゲートを含む偶数個の論理ゲートを前記論理ゲート列から除外することにより、故障を補正することを特徴とするものである。
第5の態様に係る乱数生成装置によれば、故障補正回路は、故障論理ゲートを含む偶数個の論理ゲートを論理ゲート列から除外することにより、故障を補正する。このように、バイパスにより故障論理ゲートを論理ゲート列から除外するという簡易な手法によって、論理ゲートの故障を簡易に補正することが可能となる。また、偶数個の論理ゲートを除外することにより、除外後の論理ゲート列は奇数個の論理ゲートによって構成されるため、発振回路の出力値を正しく発振させることが可能となる。
本発明の第6の態様に係る乱数生成装置は、第5の態様に係る乱数生成装置において特に、前記発振回路は、複数の予備論理ゲートをさらに有し、前記故障補正回路が前記論理ゲート列から除外した論理ゲートの個数と同数の予備論理ゲートを、前記論理ゲート列に追加する、周波数補正回路をさらに備えることを特徴とするものである。
第6の態様に係る乱数生成装置によれば、周波数補正回路は、故障補正回路が論理ゲート列から除外した論理ゲートの個数と同数の予備論理ゲートを、論理ゲート列に追加する。従って、論理ゲート列を構成する論理ゲートの段数は除外処理の前後で変わらないため、発振回路の発振周波数を維持することが可能となる。
本発明の第7の態様に係る乱数生成方法は、(A)直列に接続された複数奇数個の論理ゲートを含む論理ゲート列を用いて、二値論理の「0」と「1」とが交互に繰り返される出力値を生成するステップと、(B)前記ステップ(A)で生成された出力値を所定のタイミングでサンプリングすることにより、乱数を生成するステップと、(C)前記論理ゲート列に含まれる複数の論理ゲートのうちいずれかの論理ゲートが故障している場合に、その故障を検出するステップと、を備え、前記ステップ(C)においては、前記論理ゲート列に含まれる複数の論理ゲートの各々について、論理ゲートの出力値が所定方向にトグルしていないことを検出することにより、論理ゲートの故障が検出されることを特徴とするものである。
第7の態様に係る乱数生成方法によれば、ステップ(C)では、論理ゲート列に含まれる複数の論理ゲートのうちいずれかの論理ゲートが故障している場合に、その故障が検出される。従って、ステップ(C)においていずれかの論理ゲートの故障が検出された場合には、乱数を使用する外部装置に対してその旨を通知することにより、あるいは、乱数生成装置内でその故障を補正することにより、適正な乱数を生成し得ない状態で乱数生成装置が継続して使用されることを回避できる。
また、第7の態様に係る乱数生成方法によれば、ステップ(C)においては、論理ゲート列に含まれる複数の論理ゲートの各々について、論理ゲートの出力値が所定方向にトグルしていないことを検出することにより、論理ゲートの故障が検出される。これにより、論理ゲートの故障を簡易かつ確実に検出することが可能となる。
本発明の第8の態様に係る乱数生成方法は、(A)直列に接続された複数奇数個の論理ゲートを含む論理ゲート列を用いて、二値論理の「0」と「1」とが交互に繰り返される出力値を生成するステップと、(B)前記ステップ(A)で生成された出力値を所定のタイミングでサンプリングすることにより、乱数を生成するステップと、(C)前記論理ゲート列に含まれる複数の論理ゲートのうちいずれかの論理ゲートが故障している場合に、その故障を検出するステップと、(D)前記ステップ(C)においていずれかの論理ゲートの故障が検出された場合に、前記ステップ(B)で生成された出力値が無効であることを示す通知信号を出力するステップと、を備えることを特徴とするものである。
第8の態様に係る乱数生成方法によれば、ステップ(C)では、論理ゲート列に含まれる複数の論理ゲートのうちいずれかの論理ゲートが故障している場合に、その故障が検出される。従って、ステップ(C)においていずれかの論理ゲートの故障が検出された場合には、乱数を使用する外部装置に対してその旨を通知することにより、あるいは、乱数生成装置内でその故障を補正することにより、適正な乱数を生成し得ない状態で乱数生成装置が継続して使用されることを回避できる。
また、第8の態様に係る乱数生成方法によれば、ステップ(D)では、ステップ(C)においていずれかの論理ゲートの故障が検出された場合に、ステップ(B)で生成された出力値が無効であることを示す通知信号が出力される。従って、乱数を使用する外部装置は、ステップ(D)で出力された当該通知信号が入力されることにより、乱数の使用を直ちに停止することが可能となる。
本発明の第9の態様に係る乱数生成方法は、(A)直列に接続された複数奇数個の論理ゲートを含む論理ゲート列を用いて、二値論理の「0」と「1」とが交互に繰り返される出力値を生成するステップと、(B)前記ステップ(A)で生成された出力値を所定のタイミングでサンプリングすることにより、乱数を生成するステップと、(C)前記論理ゲート列に含まれる複数の論理ゲートのうちいずれかの論理ゲートが故障している場合に、その故障を補正するステップと、を備えることを特徴とするものである。
第9の態様に係る乱数生成方法によれば、ステップ(C)では、論理ゲート列に含まれる複数の論理ゲートのうちいずれかの論理ゲートが故障している場合に、その故障が補正される。従って、ステップ(C)で論理ゲートの故障を補正することによってステップ(A)で適正な出力値を出力できるため、ステップ(B)では当該適正な出力値に基づいて適正な乱数を生成できる。その結果、適正な乱数を生成し得ない状態で乱数生成装置が継続して使用されることを回避できる。
本発明によれば、適正な乱数を生成し得ない状態で乱数生成装置が継続して使用されることを回避することが可能となる。
本発明の実施の形態1に係る乱数生成装置の構成を示す図である。 発振回路の構成を示す図である。 サンプリング回路の構成を示す図である。 故障処理部の構成を示す図である。 検出回路の具体的な構成を示す図である。 故障補正回路の具体的な構成を示す図である。 判定回路の具体的な構成を示す図である。 検出回路によるトグルの検出結果を示す図である。 故障補正回路によって生成された故障補正信号を示す図である。 検出回路によるトグルの検出結果を示す図である。 本発明の実施の形態2に係る乱数生成装置の構成を示す図である。 発振回路の構成を示す図である。 故障処理部の構成を示す図である。 周波数補正回路の具体的な構成を示す図である。 検出回路によるトグルの検出結果を示す図である。 故障補正回路によって生成された故障補正信号を示す図である。 周波数補正回路によって生成された周波数補正信号を示す図である。 検出回路によるトグルの検出結果を示す図である。
以下、本発明の実施の形態について、図面を用いて詳細に説明する。なお、異なる図面において同一の符号を付した要素は、同一又は相応する要素を示すものとする。
<実施の形態1>
図1は、本発明の実施の形態1に係る乱数生成装置1の構成を示す図である。図1の接続関係で示すように、乱数生成装置1は、発振回路2、サンプリング回路3、及び故障処理部4を備えて構成されている。
発振回路2は、二値論理の「0」と「1」とが交互に繰り返される出力値S2を出力する。サンプリング回路3は、乱数生成回路として機能し、システムクロックSCをサンプリングクロックとして用いて発振回路2の出力値S2をサンプリングすることにより、真性乱数S3を生成する。
図2は、発振回路2の構成を示す図である。図2の接続関係で示すように、発振回路2は、複数の論理ゲートG0〜G10と複数のセレクタL1〜L9とを備えて構成されている。発振回路2は、複数の奇数個の論理ゲートが直列に接続された論理ゲート列を有している。本実施の形態の例では、9個の論理ゲートG1〜G9がセレクタL1〜L8を介して直列に接続されており、最終段の論理ゲートG9の出力は、セレクタL9及び論理ゲートG0を介して初段の論理ゲートG1に入力されている。これにより、9段の論理ゲートG1〜G9によってリングオシレータが構成されている。セレクタL9からの出力値として、発振回路2の出力値S2が得られる。
論理ゲートG10は、論理ゲートG1の故障時にそれを代替するための論理ゲートである。セレクタL1の入力端子T0には論理ゲートG1の出力が接続されており、入力端子T1には論理ゲートG10の出力が接続されている。セレクタL1が故障補正値S50に基づいて入力端子T0,T1の一方を選択することにより、論理ゲートG1,G10が切り替えられる。
セレクタL2〜L9は、入力端子T0,T1をそれぞれ有している。論理ゲートG2〜G9の出力は、対応するセレクタL2〜L9の入力端子T0にそれぞれ接続されている。セレクタL2〜L9の入力端子T1には、対応する論理ゲートG2〜G9をバイパスするための配線がそれぞれ接続されている。
セレクタL2,L3は故障補正値S51に基づいて、セレクタL4,L5は故障補正値S52に基づいて、セレクタL6,L7は故障補正値S53に基づいて、セレクタL8,L9は故障補正値S54に基づいて、それぞれ入力端子T0,T1の一方を選択する。例えば、セレクタL2,L3が入力端子T0を選択した場合には、上記論理ゲート列内に論理ゲートG2,G3が含まれ、一方、入力端子T1を選択した場合には、バイパスによって上記論理ゲート列から論理ゲートG2,G3が除外される。
図3は、サンプリング回路3の構成を示す図である。サンプリング回路3は、複数M個のフリップフロップ5(1)〜5(M)が直列に接続された構成を有している。各フリップフロップ5には、システムクロックSCが共通に入力される。
初段のフリップフロップ5(1)のD端子には、発振回路2から出力値S2が入力される。二段目以降のフリップフロップ5(2)〜5(M)のD端子には、前段のフリップフロップ5(1)〜5(M−1)のQ端子からの出力が入力される。M個のフリップフロップ5(1)〜5(M)が直列に接続され、各フリップフロップ5からの出力が配列されることによって、合計Mビットの真性乱数S3がサンプリング回路3から出力される。
図4は、故障処理部4の構成を示す図である。故障処理部4は、検出回路11、故障補正回路12、及び判定回路13を有している。検出回路11は、論理ゲートG1〜G9のいずれかが故障している場合に、その故障を検出する。故障補正回路12は、検出回路11が論理ゲートG1〜G9のいずれかの故障を検出した場合に、その故障を補正する。判定回路13は、故障通知部として機能し、検出回路11が論理ゲートG1〜G9のいずれかの故障を検出した場合に、乱数生成装置1の出力値(乱数S3)が無効であることを示す通知信号S6を出力する。
図5は、検出回路11の具体的な構成を示す図である。図5の接続関係で示すように、検出回路11は、フリップフロップF1〜F9を備えて構成されている。
図6は、故障補正回路12の具体的な構成を示す図である。図6の接続関係で示すように、故障補正回路12は、論理ゲートA1〜A8,B1〜B9,C1〜C4及び補正値出力回路15を備えて構成されている。
図7は、判定回路13の具体的な構成を示す図である。図7の接続関係で示すように、判定回路13は、レジスタ21,22及び比較器23を備えて構成されている。
以下、本実施の形態1に係る乱数生成装置1の動作について説明する。以下の例では、3段目の論理ゲートG3が故障している場合の動作について説明する。なお、故障補正値S50〜S54の初期値はいずれも「0」に設定されている。また、レジスタ21の初期値はオール「0」に設定されており、レジスタ22の初期値はオール「1」に設定されている。
図1を参照して、まず、イネーブル信号S1をアサートすることにより、発振回路2は発振動作を開始する。これにより、発振回路2から出力値S2が出力される。出力値S2は、サンプリング回路3に入力される。
サンプリング回路3は、システムクロックSCに同期して出力値S2をサンプリングする。図3を参照して、サンプリングされた出力値S2は初段のフリップフロップ5(1)に入力され、保持される。サンプリング回路3は、次のシステムクロックSCが入力されることにより、その時点で発振回路2が出力している出力値S2をサンプリングする。サンプリングされた出力値S2は初段のフリップフロップ5(1)に入力され、保持される。また、初段のフリップフロップ5(1)がそれまで保持していた出力値S2(前回のシステムクロックSCに基づいてサンプリングした出力値S2)は、初段のフリップフロップ5(1)から二段目のフリップフロップ5(2)にシフトされる。上記と同様の動作をM回繰り返すことにより、M個のフリップフロップ5(1)〜5(M)の各々に出力値S2が保持される。そして、各フリップフロップ5(1)〜5(M)が保持している出力値S2を各々のQ端子から出力し、これらM個の出力値S2を配列することによって、合計Mビットの乱数S3がサンプリング回路3から出力される。なお、サンプリング回路3は、システムクロックSCに代えて、所定のサンプリングイネーブル信号(図示しない)が入力されたタイミングで出力値S2をサンプリングしても良い。
また、図1を参照して、イネーブル信号S1がアサートされることにより、故障処理部4は故障診断を開始する。図5を参照して、発振回路2の論理ゲートG1〜G9からの出力値S41〜S49は、検出回路11のフリップフロップF1〜F9にそれぞれ入力される。ここでは、出力値S41,S43,S45,S47,S49がHレベルからLレベルへトグルし、出力値S42,S44,S46,S48がLレベルからHレベルへトグルするタイミングで、出力値S41〜S49がフリップフロップF1〜F9に入力される。検出回路11は、出力値S41〜S49が上記の所定方向にトグルしているか否かを検出する。
図8は、検出回路11によるトグルの検出結果を示す図である。フリップフロップF1,F3,F5,F7,F9は、出力値S41,S43,S45,S47,S49に関して、HレベルからLレベルへのトグル方向(N)を検出した場合には、「1」の検出結果を検出信号S71,S73,S75,S77,S79としてそれぞれ出力する。また、フリップフロップF2,F4,F6,F8は、出力値S42,S44,S46,S48に関して、LレベルからHレベルへのトグル方向(P)を検出した場合には、「1」の検出結果を検出信号S72,S74,S76,S78としてそれぞれ出力する。この例では論理ゲートG3が故障しているため、論理ゲートG3の出力値S43以降の出力値S43〜S49に関しては、所定方向のトグルが検出されず、検出結果は「0」となっている。
図5,6を参照して、検出信号S71〜S79は、検出回路11から故障補正回路12に入力される。故障補正回路12は、検出信号S71〜S79のうち最初に値が「0」となる検出信号に対応する論理ゲートを、故障論理ゲートと特定する。この例では、最初に値が「0」となる検出信号S73に対応する論理ゲートG3を、故障論理ゲートと特定する。故障補正回路12は、故障論理ゲートの特定結果に基づいて、故障補正信号S5を生成する。
図9は、故障補正回路12によって生成された故障補正信号S5(故障補正値S50〜S54)を示す図である。故障補正回路12は、論理ゲートG1〜G9がいずれも故障していない場合には、故障補正値S50〜S54を全て「0」に設定する。また、論理ゲートG1が故障している場合には、故障補正値S50を「1」に設定する。同様に、論理ゲートG2又はG3が故障している場合には故障補正値S51を、論理ゲートG4又はG5が故障している場合には故障補正値S52を、論理ゲートG6又はG7が故障している場合には故障補正値S53を、論理ゲートG8又はG9が故障している場合には故障補正値S54を、それぞれ「1」に設定する。この例では論理ゲートG3が故障しているため、故障補正値S51は「1」に設定され、故障補正値S50,S52〜S54は「0」に設定される。
図7を参照して、故障補正値S50〜S54を含む故障補正信号S5は、故障補正回路12から判定回路13に入力される。故障補正信号S5は、レジスタ21に入力され、保持される。また、判定回路13は、故障補正値S50〜S54のいずれかが「1」に設定されている場合には、上記論理ゲート列内に故障論理ゲートが含まれていると判定し、乱数生成装置1の出力値(乱数S3)が無効であることを示す通知信号S6を出力する。この例では故障補正値S51が「1」に設定されているため、出力値の無効を示す通知信号S6が出力される。具体的には、通知信号S6をネゲートすることにより、値が「0」の通知信号S6を出力する。なお、故障補正値S50〜S54がいずれも「0」に設定されている場合には、判定回路13は、通知信号S6をアサートすることにより、値が「1」の通知信号S6を出力する。
また、図2,6を参照して、故障補正値S50〜S54を含む故障補正信号S5は、補正値出力回路15から発振回路2に入力される。図2を参照して、セレクタL1〜L9は、故障補正値S50〜S54に基づいて入力端子T0,T1の一方をそれぞれ選択する。この例では、故障補正値S51は「1」に設定され、故障補正値S50,S52〜S54は「0」に設定されているため、セレクタL2,L3は入力端子T1を選択し、セレクタL1,L4〜L9は入力端子T0を選択する。セレクタL2,L3が入力端子T1を選択したことにより、バイパスによって論理ゲートG2,G3は上記論理ゲート列から除外される。その結果、故障補正後は、7段の論理ゲートG1,G4〜G9によってリングオシレータが構成される。
論理ゲートG3より後段の論理ゲートG4〜G9が故障しているか否かを判定するために、論理ゲートG3の故障補正後も故障処理部4による故障診断は継続される。上記と同様に、論理ゲートG1〜G9からの出力値S41〜S49は、検出回路11のフリップフロップF1〜F9にそれぞれ入力される。検出回路11は、上記と同様に、出力値S41〜S49が所定方向にトグルしているか否かを検出する。
図10は、検出回路11によるトグルの検出結果を示す図である。故障補正によって論理ゲートG3を論理ゲート列から除外したことにより、図8に示した状態から、出力値S44〜S49に関する検出結果が「1」に変化している。
図5,6を参照して、検出信号S71〜S79は、検出回路11から故障補正回路12に入力される。故障補正回路12は、上記と同様に、検出信号S71〜S79に基づいて故障補正信号S5を生成する。この例では、論理ゲートG3は故障しており、その他の論理ゲートG1,G2,G4〜G9は故障していないため、故障補正値S51は「1」に設定され、故障補正値S50,S52〜S54は「0」に設定される。
図7を参照して、故障補正値S50〜S54を含む故障補正信号S5は、故障補正回路12から判定回路13に入力される。故障補正信号S5は、レジスタ21に入力され、保持される。また、それまでレジスタ21が保持していた前回の故障補正信号S5は、レジスタ21からレジスタ22にシフトされる。比較器23は、レジスタ21に格納されている今回の故障補正信号S5と、レジスタ22に格納されている前回の故障補正信号S5とを比較する。そして、両者が同一である場合には、通知信号S6をアサートすることにより、値が「1」の通知信号S6を出力し、一方、両者が同一でない場合には、通知信号S6のネゲートを維持することにより、値が「0」の通知信号S6を出力する。なお、両者が同一でない場合に、別途エラー信号を出力しても良い。この例では、両者は同一となるため、値が「1」の通知信号S6が比較器23から出力される。つまり、乱数生成装置1の出力値(乱数S3)が有効であることを示す通知信号S6が出力される。
このように本実施の形態に係る乱数生成装置1によれば、検出回路11は、論理ゲート列に含まれる複数の論理ゲートG1〜G9のうちいずれかの論理ゲートが故障している場合に、その故障を検出する。従って、検出回路11がいずれかの論理ゲートの故障を検出した場合には、乱数S3を使用する外部装置に対してその旨を通知することにより、あるいは、乱数生成装置1内でその故障を補正することにより、適正な乱数S3を生成し得ない状態で乱数生成装置1が継続して使用されることを回避できる。
また、本実施の形態に係る乱数生成装置1によれば、検出回路11は、論理ゲート列に含まれる複数の論理ゲートG1〜G9の各々について、論理ゲートの出力値S41〜S49が所定方向にトグルしていないことを検出することにより、論理ゲートの故障を検出する。これにより、論理ゲートの故障を簡易かつ確実に検出することが可能となる。
また、本実施の形態に係る乱数生成装置1によれば、判定回路13(故障通知部)は、検出回路11がいずれかの論理ゲートの故障を検出した場合に、乱数生成装置1の出力値(乱数S3)が無効であることを示す通知信号S6を出力する。従って、乱数S3を使用する外部装置は、判定回路13から当該通知信号S6が入力されることにより、乱数S3の使用を直ちに停止することが可能となる。
また、本実施の形態に係る乱数生成装置1によれば、故障補正回路12は、検出回路11がいずれかの論理ゲートの故障を検出した場合に、その故障を補正する。従って、故障補正回路12が論理ゲートの故障を補正することによって発振回路2は適正な出力値S2を出力するため、サンプリング回路3は当該適正な出力値S2に基づいて適正な乱数S3を生成できる。その結果、適正な乱数S3を生成し得ない状態で乱数生成装置1が継続して使用されることを回避できる。
また、本実施の形態に係る乱数生成装置1によれば、故障補正回路12は、故障論理ゲートG3を含む偶数個の論理ゲート(上記の例では2個の論理ゲートG2,G3)を論理ゲート列から除外することにより、故障を補正する。このように、バイパスにより故障論理ゲートG3を論理ゲート列から除外するという簡易な手法によって、論理ゲートG3の故障を簡易に補正することが可能となる。また、偶数個の論理ゲートを除外することにより、除外後の論理ゲート列は奇数個の論理ゲートによって構成されるため、発振回路2の出力値S2を正しく発振させることが可能となる。
<実施の形態2>
図11は、本発明の実施の形態2に係る乱数生成装置1の構成を示す図である。図11の接続関係で示すように、乱数生成装置1は、発振回路2、サンプリング回路3、及び故障処理部4を備えて構成されている。故障補正信号S5に加えて周波数補正信号S10が、故障処理部10から発振回路2に入力される。
図12は、発振回路2の構成を示す図である。図2に示した構成に、セレクタ30が追加されている。セレクタ30は、入力端子T0〜T3を有している。入力端子T0はセレクタL3の出力に、入力端子T1はセレクタL5の出力に、入力端子T2はセレクタL7の出力に、入力端子T3はセレクタL9の出力に、それぞれ接続されている。
セレクタ30は、周波数補正信号S10に基づいて入力端子T0〜T3を切り替える。具体的にセレクタ30は、周波数補正信号S10の値が「00」である場合には入力端子T0を、「01」である場合には入力端子T1を、「10」である場合には入力端子T2を、「11」である場合には入力端子T3を、それぞれ選択する。セレクタ30の出力は、論理ゲートG0を介して論理ゲートG1,G10の入力に接続されている。
初期状態では周波数補正信号S10の値は「00」に設定されており、セレクタ30は入力端子T0を選択する。これにより、3段の論理ゲートG1〜G3を含む論理ゲート列によって、リングオシレータが構成される。論理ゲートG4〜G9は、予備論理ゲートとして機能する。
図13は、故障処理部4の構成を示す図である。図4に示した構成に、周波数補正回路31が追加されている。周波数補正回路31は、故障補正回路12が故障補正時に上記論理ゲート列から除外した論理ゲートの個数と同数の予備論理ゲートを、上記論理ゲート列に追加する。検出回路11、故障補正回路12、及び判定回路13の構成は、図5〜7に示した上記実施の形態1と同様である。
図14は、周波数補正回路31の具体的な構成を示す図である。周波数補正回路31は、故障補正信号S5に含まれる故障補正値S51〜S54を加算するビット加算器32を有している。
以下、本実施の形態2に係る乱数生成装置1の動作について説明する。以下の例では、3段目の論理ゲートG3が故障している場合の動作について説明する。なお、故障補正値S50〜S54の初期値はいずれも「0」に設定されている。また、レジスタ21の初期値はオール「0」に設定されており、レジスタ22の初期値はオール「1」に設定されている。
図11を参照して、まず、イネーブル信号S1をアサートすることにより、発振回路2は発振動作を開始する。これにより、発振回路2から出力値S2が出力される。出力値S2は、サンプリング回路3に入力される。
サンプリング回路3は、システムクロックSC(又は図示しないサンプリングイネーブル信号)に同期して出力値S2をサンプリングする。
また、イネーブル信号S1がアサートされることにより、故障処理部4は故障診断を開始する。図5を参照して、初期状態の上記論理ゲート列を構成する論理ゲートG1〜G3からの出力値S41〜S43は、検出回路11のフリップフロップF1〜F3にそれぞれ入力される。ここでは、出力値S41,S43がHレベルからLレベルへトグルし、出力値S42がLレベルからHレベルへトグルするタイミングで、出力値S41〜S43がフリップフロップF1〜F3に入力される。検出回路11は、出力値S41〜S43が上記の所定方向にトグルしているか否かを検出する。
図15は、検出回路11によるトグルの検出結果を示す図である。フリップフロップF1,F3は、出力値S41,S43に関して、HレベルからLレベルへのトグル方向(N)を検出した場合には、「1」の検出結果を検出信号S71,S73としてそれぞれ出力する。また、フリップフロップF2は、出力値S42に関して、LレベルからHレベルへのトグル方向(P)を検出した場合には、「1」の検出結果を検出信号S72として出力する。この例では論理ゲートG3が故障しているため、論理ゲートG3の出力値S43に関しては、所定方向のトグルが検出されず、検出結果は「0」となっている。
図5,6を参照して、検出信号S71〜S73は、検出回路11から故障補正回路12に入力される。故障補正回路12は、検出信号S71〜S73のうち最初に値が「0」となる検出信号に対応する論理ゲートを、故障論理ゲートと特定する。この例では、最初に値が「0」となる検出信号S73に対応する論理ゲートG3を、故障論理ゲートと特定する。故障補正回路12は、故障論理ゲートの特定結果に基づいて、故障補正信号S5を生成する。
図16は、故障補正回路12によって生成された故障補正信号S5(故障補正値S50〜S54)を示す図である。この例では、論理ゲートG1は故障していないため、故障補正値S50は「0」に設定される。また、論理ゲートG3は故障しているため、故障補正値S51は「1」に設定される。また、故障補正値S52〜S54は初期値の「0」に設定される。
図7を参照して、故障補正値S50〜S54を含む故障補正信号S5は、故障補正回路12から判定回路13に入力される。故障補正信号S5は、レジスタ21に入力され、保持される。また、判定回路13は、故障補正値S50,S51のいずれかが「1」に設定されている場合には、初期状態の上記論理ゲート列内に故障論理ゲートが含まれていると判定し、乱数生成装置1の出力値(乱数S3)が無効であることを示す通知信号S6を出力する。この例では故障補正値S51が「1」に設定されているため、出力値の無効を示す通知信号S6が出力される。
また、図14を参照して、故障補正値S50〜S54を含む故障補正信号S5は、故障補正回路12から周波数補正回路31に入力される。
図17は、周波数補正回路31によって生成された周波数補正信号S10を示す図である。周波数補正回路31は、ビット加算器32によって故障補正値S51〜S54を加算することにより、周波数補正値を生成する。この例では、故障補正値S51は「1」であり、故障補正値S52〜S54は「0」であるため、周波数補正値は2ビットの「01」となる。周波数補正値「01」を含む周波数補正信号S10は、周波数補正回路31から発振回路2に入力される。
また、図12,6を参照して、故障補正値S50〜S54を含む故障補正信号S5は、補正値出力回路15から発振回路2に入力される。図12を参照して、セレクタL1〜L9は、故障補正値S50〜S54に基づいて入力端子T0,T1の一方をそれぞれ選択する。この例では、故障補正値S51は「1」に設定され、故障補正値S50,S52〜S54は「0」に設定されているため、セレクタL2,L3は入力端子T1を選択し、セレクタL1,L4〜L9は入力端子T0を選択する。セレクタL2,L3が入力端子T1を選択したことにより、バイパスによって論理ゲートG2,G3は初期状態の上記論理ゲート列から除外される。また、周波数補正値「01」を含む周波数補正信号S10が入力されることにより、セレクタ30は入力端子T1を選択する。その結果、3段の論理ゲートG1,G4,G5によってリングオシレータが構成される。つまり、初期状態の論理ゲート列から故障補正によって論理ゲートG2,G3が除外され、代わりに周波数補正によって論理ゲートG4,G5が追加されることにより、リングオシレータの段数及び発振周波数が維持される。
追加された論理ゲートG4,G5が故障しているか否かを判定するために、故障補正及び周波数補正後も故障処理部4による故障診断は継続される。上記と同様に、論理ゲートG1〜G5からの出力値S41〜S45が、検出回路11のフリップフロップF1〜F5にそれぞれ入力される。検出回路11は、上記と同様に、出力値S41〜S45が所定方向にトグルしているか否かを検出する。
図18は、検出回路11によるトグルの検出結果を示す図である。この例では、論理ゲートG4,G5は故障していないため、出力値S44,S45に関する検出結果は「1」となっている。
図5,6を参照して、検出信号S71〜S75は、検出回路11から故障補正回路12に入力される。故障補正回路12は、上記と同様に、検出信号S71〜S75に基づいて故障補正信号S5を生成する。この例では、論理ゲートG3は故障しており、その他の論理ゲートG1,G2,G4,G5は故障していないため、故障補正値S51は「1」に設定され、故障補正値S50,S52は「0」に設定される。また、故障補正値S53,S54は初期値の「0」に設定される。
図7を参照して、故障補正値S50〜S54を含む故障補正信号S5は、故障補正回路12から判定回路13に入力される。故障補正信号S5は、レジスタ21に入力され、保持される。また、それまでレジスタ21が保持していた前回の故障補正信号S5は、レジスタ21からレジスタ22にシフトされる。比較器23は、レジスタ21に格納されている今回の故障補正信号S5と、レジスタ22に格納されている前回の故障補正信号S5とを比較する。そして、両者が同一である場合には、通知信号S6をアサートすることにより、値が「1」の通知信号S6を出力し、一方、両者が同一でない場合には、通知信号S6のネゲートを維持することにより、値が「0」の通知信号S6を出力する。この例では、両者は同一となるため、値が「1」の通知信号S6が比較器23から出力される。つまり、乱数生成装置1の出力値(乱数S3)が有効であることを示す通知信号S6が出力される。
このように本実施の形態に係る乱数生成装置1によれば、周波数補正回路31は、故障補正回路4が論理ゲート列から除外した論理ゲート(上記の例では論理ゲートG2,G3)の個数と同数の予備論理ゲート(上記の例では論理ゲートG4,5)を、論理ゲート列に追加する。従って、論理ゲート列を構成する論理ゲートの段数は除外処理の前後で変わらないため、発振回路2の発振周波数を維持することが可能となる。
1 乱数生成装置
2 発振回路
3 サンプリング回路
4 故障処理部
11 検出回路
12 故障補正回路
13 判定回路
31 周波数補正回路

Claims (9)

  1. 直列に接続された複数奇数個の論理ゲートを含む論理ゲート列を有し、二値論理の「0」と「1」とが交互に繰り返される出力値を出力する発振回路と、
    前記発振回路の出力値を所定のタイミングでサンプリングすることにより、乱数を生成する乱数生成回路と、
    前記論理ゲート列に含まれる複数の論理ゲートのうちいずれかの論理ゲートが故障している場合に、その故障を検出する検出回路と、
    を備え
    前記検出回路は、前記論理ゲート列に含まれる複数の論理ゲートの各々について、論理ゲートの出力値が所定方向にトグルしていないことを検出することにより、論理ゲートの故障を検出する、乱数生成装置。
  2. 直列に接続された複数奇数個の論理ゲートを含む論理ゲート列を有し、二値論理の「0」と「1」とが交互に繰り返される出力値を出力する発振回路と、
    前記発振回路の出力値を所定のタイミングでサンプリングすることにより、乱数を生成する乱数生成回路と、
    前記論理ゲート列に含まれる複数の論理ゲートのうちいずれかの論理ゲートが故障している場合に、その故障を検出する検出回路と、
    前記検出回路がいずれかの論理ゲートの故障を検出した場合に、前記乱数生成装置の出力値が無効であることを示す通知信号を出力する故障通知部と、
    を備える、乱数生成装置。
  3. 直列に接続された複数奇数個の論理ゲートを含む論理ゲート列を有し、二値論理の「0」と「1」とが交互に繰り返される出力値を出力する発振回路と、
    前記発振回路の出力値を所定のタイミングでサンプリングすることにより、乱数を生成する乱数生成回路と、
    前記論理ゲート列に含まれる複数の論理ゲートのうちいずれかの論理ゲートが故障している場合に、その故障を検出する検出回路と、
    前記検出回路がいずれかの論理ゲートの故障を検出した場合に、その故障を補正する故障補正回路と、
    を備える、乱数生成装置。
  4. 直列に接続された複数奇数個の論理ゲートを含む論理ゲート列を有し、二値論理の「0」と「1」とが交互に繰り返される出力値を出力する発振回路と、
    前記発振回路の出力値を所定のタイミングでサンプリングすることにより、乱数を生成する乱数生成回路と、
    前記論理ゲート列に含まれる複数の論理ゲートのうちいずれかの論理ゲートが故障している場合に、その故障を補正する故障補正回路と、
    を備える、乱数生成装置。
  5. 前記故障補正回路は、故障論理ゲートを含む偶数個の論理ゲートを前記論理ゲート列から除外することにより、故障を補正する、請求項3又は4に記載の乱数生成装置。
  6. 前記発振回路は、複数の予備論理ゲートをさらに有し、
    前記故障補正回路が前記論理ゲート列から除外した論理ゲートの個数と同数の予備論理ゲートを、前記論理ゲート列に追加する、周波数補正回路をさらに備える、請求項5に記載の乱数生成装置。
  7. (A)直列に接続された複数奇数個の論理ゲートを含む論理ゲート列を用いて、二値論理の「0」と「1」とが交互に繰り返される出力値を生成するステップと、
    (B)前記ステップ(A)で生成された出力値を所定のタイミングでサンプリングすることにより、乱数を生成するステップと、
    (C)前記論理ゲート列に含まれる複数の論理ゲートのうちいずれかの論理ゲートが故障している場合に、その故障を検出するステップと、
    を備え、
    前記ステップ(C)においては、前記論理ゲート列に含まれる複数の論理ゲートの各々について、論理ゲートの出力値が所定方向にトグルしていないことを検出することにより、論理ゲートの故障が検出される、乱数生成方法。
  8. (A)直列に接続された複数奇数個の論理ゲートを含む論理ゲート列を用いて、二値論理の「0」と「1」とが交互に繰り返される出力値を生成するステップと、
    (B)前記ステップ(A)で生成された出力値を所定のタイミングでサンプリングすることにより、乱数を生成するステップと、
    (C)前記論理ゲート列に含まれる複数の論理ゲートのうちいずれかの論理ゲートが故障している場合に、その故障を検出するステップと、
    (D)前記ステップ(C)においていずれかの論理ゲートの故障が検出された場合に、前記ステップ(B)で生成された出力値が無効であることを示す通知信号を出力するステップと、
    を備える、乱数生成方法。
  9. (A)直列に接続された複数奇数個の論理ゲートを含む論理ゲート列を用いて、二値論理の「0」と「1」とが交互に繰り返される出力値を生成するステップと、
    (B)前記ステップ(A)で生成された出力値を所定のタイミングでサンプリングすることにより、乱数を生成するステップと、
    (C)前記論理ゲート列に含まれる複数の論理ゲートのうちいずれかの論理ゲートが故障している場合に、その故障を補正するステップと、
    を備える、乱数生成方法。
JP2015003677A 2014-12-19 2015-01-09 乱数生成装置及び乱数生成方法 Active JP6423277B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2015003677A JP6423277B2 (ja) 2015-01-09 2015-01-09 乱数生成装置及び乱数生成方法
US14/974,081 US20160179472A1 (en) 2014-12-19 2015-12-18 Random number generation device and method for generating random number

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015003677A JP6423277B2 (ja) 2015-01-09 2015-01-09 乱数生成装置及び乱数生成方法

Publications (2)

Publication Number Publication Date
JP2016128999A JP2016128999A (ja) 2016-07-14
JP6423277B2 true JP6423277B2 (ja) 2018-11-14

Family

ID=56384359

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015003677A Active JP6423277B2 (ja) 2014-12-19 2015-01-09 乱数生成装置及び乱数生成方法

Country Status (1)

Country Link
JP (1) JP6423277B2 (ja)

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS60185173A (ja) * 1984-03-05 1985-09-20 Hitachi Ltd 論理回路の接続状態検出方法
JP4248950B2 (ja) * 2003-06-24 2009-04-02 株式会社ルネサステクノロジ 乱数発生装置
JP4471901B2 (ja) * 2005-07-28 2010-06-02 株式会社ルネサステクノロジ 乱数発生装置
JP4678335B2 (ja) * 2006-05-30 2011-04-27 Fdk株式会社 物理乱数生成装置
JP5074359B2 (ja) * 2008-11-12 2012-11-14 日本電信電話株式会社 乱数生成回路
US8841974B2 (en) * 2012-09-06 2014-09-23 Silicon Image, Inc. Test solution for ring oscillators
KR101987141B1 (ko) * 2013-03-04 2019-10-01 삼성전자주식회사 난수 발생기

Also Published As

Publication number Publication date
JP2016128999A (ja) 2016-07-14

Similar Documents

Publication Publication Date Title
US20160179472A1 (en) Random number generation device and method for generating random number
Lou et al. Convolutional-code-specific CRC code design
US7734672B2 (en) Checking of a bit flow
US9619206B2 (en) Pseudo-random bit sequence generator
JP6423270B2 (ja) 乱数生成装置及び乱数生成方法
Wang et al. Reliable and secure memories based on algebraic manipulation correction codes
JP2011130333A (ja) 巡回冗長検査符号生成回路及び巡回冗長検査符号生成方法
JP5449623B2 (ja) 信号処理装置
JP6423277B2 (ja) 乱数生成装置及び乱数生成方法
Kareem et al. Xilinx FPGA-based ring oscillator PUFs: design challenges and solutions
JP6379032B2 (ja) 乱数生成装置及び乱数生成方法
US20140223568A1 (en) Method for securely checking a code
JP4869879B2 (ja) 半導体集積回路
JPH05227041A (ja) Crc演算に基づく1ビット誤り訂正回路
JP2009122009A (ja) テスト回路
JP2010114581A (ja) カウンタ回路、カウンタ回路の制御方法
Cid et al. Cryptanalysis of Pomaranch
JP4916475B2 (ja) パラレル/シリアル変換回路
CN110045947B (zh) 一种随机数发生单元与装置
JP2618723B2 (ja) テスト回路
US20190369964A1 (en) True random number generation device and generation method thereof
JP6794851B2 (ja) 発振回路、発振回路の制御方法及びサーモコード訂正回路
US7401106B2 (en) Maximum change data pattern
JP6386904B2 (ja) 乱数生成装置及び乱数生成方法
CN108694987B (zh) 半导体存储装置及其测试方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20171207

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180608

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180713

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180906

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20181018

R150 Certificate of patent or registration of utility model

Ref document number: 6423277

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250