(57)【要約】  真性度の高い乱数を生成するときの電力消費量とノイズ生成量とを低減する。このために、乱数生成器に、排他的論理和回路と、乱数判定部と、乱数生成指示禁止部と備える。排他的論理和回路は、複数のデジタル回路の各々の出力の排他的論理和を得る。また、乱数判定部は、該複数のデジタル回路の各々に対し、乱数の生成の指示に応じて生成される出力が乱数であるか否かの判定を行う。そして、乱数生成指示禁止部は、該複数のデジタル回路のうち該指示に応じて生成される出力が乱数でないと該乱数判定部が判定したものに対する乱数の生成の指示を禁止する。
2011117929.tif 000002
【特許請求の範囲】
【請求項１】
複数のデジタル回路の各々の出力の排他的論理和を得る排他的論理和回路と、
該複数のデジタル回路の各々に関して、乱数の生成の指示に応じて生成される出力が乱数であるか否かの判定を行う乱数判定部と、
該複数のデジタル回路のうち該指示に応じて生成される出力が乱数でないと該乱数判定部が判定したデジタル回路に対する乱数の生成の指示を禁止する乱数生成指示禁止部と、
を有することを特徴とする乱数生成器。
【請求項２】
該複数のデジタル回路は複数のＲＳラッチ回路であり、
該乱数生成部は、該ＲＳラッチ回路をメタステーブル状態とする入力を乱数の生成の指示として該ＲＳラッチ回路に入力したときの該ＲＳラッチ回路の出力が乱数であるか否かの判定を、該複数のＲＳラッチ回路の各々に対して行う、
ことを特徴とする請求項１に記載の乱数生成回路。
【請求項３】
該乱数判定部は、該ＲＳラッチ回路をメタステーブル状態とする入力を入力しているときにおける該ＲＳラッチ回路の該メタステーブル状態を経た後の出力の観測を繰り返し、観測された出力の論理が所定回数連続して変化しないときには、該ＲＳラッチ回路の出力は乱数ではないとの判定を下すことを特徴とする請求項２に記載の乱数生成器。
【請求項４】
該乱数生成指示禁止部は、出力が乱数ではないと該乱数判定部が判定したデジタル回路に対し、該デジタル回路の出力の論理を不変のまま保持する値の入力を継続するようにして、乱数の生成の指示を禁止することを特徴とする請求項１に記載の乱数生成器。
【請求項５】
該乱数判定部の判定結果を保持する判定結果保持部を更に有しており、
該乱数生成指示禁止部は、該判定結果保持部が保持している該乱数判定部の判定結果を該判定結果保持部から受け取り、出力が乱数ではないと該乱数判定部が判定したデジタル回路に対し該受け取った判定結果を与えるようにして、該デジタル回路の出力の論理を不変のまま保持する値の入力を継続する、
ことを特徴とする請求項４に記載の乱数生成器。
【請求項６】
請求項１から５のうちのいずれか一項に記載の乱数生成器と、
該乱数生成器が生成した乱数列を暗号鍵として用いて、情報の暗号化処理を行う暗号化処理部と、
を有することを特徴とする暗号化装置。
【請求項７】
請求項１から５のうちのいずれか一項に記載の乱数生成器と、
認証対象装置との間で通信を行って各種の情報の授受を行う通信部と、
暗号化されている情報に対し、正規の認証対象装置との間で共有されている所定の暗号鍵を用いて復号処理を施す復号処理部と、
該復号処理部による復号処理によって得られた情報に基づいて該認証対象装置に対する認証処理を行う認証処理部と、
を有し、
該通信部は、該乱数生成器が生成した乱数列を該認証対象装置へ送信したときに該乱数列を受信した該認証対象装置から送られてくる、該乱数列に対して該認証対象装置で施された暗号化処理により得られた暗号化情報を受信し、
該復号処理部は、該通信部が受信した暗号化情報に対して該復号処理を施し、
該認証処理部は、該認証処理において、該通信部が受信した暗号化情報に対して該復号処理部が該復号処理を施して得られた復号情報が、該認証対象装置へ送信した乱数列と一致するか否かの判定を行い、該復号情報と該欄数列とが一致すると判定したときに、該認証対象装置が正規のものであるとの認証結果を得る、
ことを特徴とする認証装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書で議論される実施態様は、乱数の生成技術に関する。
【背景技術】
【０００２】
情報化社会の発展に伴い、電子決済や住民基本台帳ネットワークなどの、情報ネットワークを利用したサービスが今後普及すると予想される。これらのサービスを安全に運用するためには情報セキュリティ技術が必須である。【０００３】
情報セキュリティの基盤技術として、様々な暗号方式が利用されている。暗号方式は、公開鍵暗号方式と共通鍵暗号方式に大別される。公開鍵暗号方式とは、情報の暗号化と復号とで異なる鍵を用いる方式であり、暗号化に用いる鍵（公開鍵）を一般に公開する一方で、暗号文の復号に用いる鍵（秘密鍵）を受信者のみの秘密情報とすることで安全性を保つ方式である。これに対し、共通鍵暗号方式とは、情報の暗号化と復号とで共通の鍵（秘密鍵）を用いる方式であり、この秘密鍵を送信者及び受信者を除く第三者には秘密の情報とすることで安全性を保つ方式である。【０００４】
これらの暗号方式の安全性は、秘密鍵の安全性に依存している。つまり、秘密鍵が何らかの手段で第三者に予測されてしまうと、暗号方式の安全性は崩壊する。そこで、秘密鍵は、第三者の予測を不可能にするために、乱数を用いて生成されることが一般的である。【０００５】
乱数は、その生成法によって、擬似乱数と真性乱数（物理乱数）との２つに大別される。
擬似乱数とは、確定的な計算によって作り出された数列の一部分のことであり、擬似乱数生成アルゴリズムに、シード（seed）と呼ばれる種を初期値として与えることによって生成される、擬似的な乱数である。擬似乱数は、その生成手法（擬似乱数生成アルゴリズム）が分かってしまうと理論的には予測可能であり、内部の初期値（前述したシード）も分かってしまうと、先に計算しておくこともできてしまう。このため、秘密鍵の生成に擬似乱数を用いることは、暗号の安全性に問題が生じることがある。しかしながら、擬似乱数は計算により生成されるので、擬似乱数の生成に専用の装置は必須ではなく、汎用の演算装置等でも生成が可能という利点がある。【０００６】
一方、真性乱数（物理乱数）とは、例えば電子デバイス中の熱雑音のように、本質的にランダムな性質を有する物理現象を利用することによって生成される乱数である。このようにして生成される乱数には、再現性がなく、誰にも予測することが不可能であるので、真性乱数を用いて生成した秘密鍵を用いて行う暗号化は、安全性が高い。【０００７】
ところで、電子決済や住民基本台帳ネットワークなどのサービスを利用する際におけるエンドユーザ側のデバイスとして、スマートカードが知られている。
スマートカードは、ＩＣ（集積回路）チップを搭載したカードである。このＩＣチップ内部のメモリ領域には、ユーザに与えられた秘密鍵が格納されている。スマートカードのＩＣチップには、暗号化機能やデジタル署名／認証機能などの各種機能を提供する演算処理装置が搭載されているものもある。これらの機能が使用される際には、ユーザの秘密鍵が用いられる。【０００８】
前述したように、これらの秘密鍵は真性乱数を用いて生成することが、安全上望ましい。そこで、上述したスマートカードのような小型機器に、乱数を生成するための専用の乱数生成器を備えることが行われている。【０００９】
このような乱数生成器のひとつに、ラッチ回路やフリップフロップ回路等のデジタル回路におけるメタステーブルを利用するものが提案されている。
まず、メタステーブルについて、図１Ａ及び図１Ｂを用いて説明する。【００１０】
図１Ａには、ＲＳラッチの回路構成例が図解されている。このＲＳラッチ１０は、ＮＡＮＤ（否定論理積）ゲート１１及び１２を用いて構成されている。
このＲＳラッチ１０の入力は負論理である。【００１１】
なお、本明細書では、電位の異なる２値の論理レベルにおけるハイ・レベルを値「１」と表現し、ロー・レベルを値「０」と表現することとする。また、図面においては、負論理の信号を信号名の上にオーバーバーを付すことで表現しているが、本明細書においては、負論理の信号を“＃”で表記するものとする。従って、例えば、ＲＳラッチ１０のセット入力は“＃Ｓ”と表記し、ＲＳラッチ１０のリセット入力は“＃Ｒ”と表記する。【００１２】
ＮＡＮＤゲート１１の２つの入力には、それぞれ、セット入力“＃Ｓ”と、ＮＡＮＤゲート１２の出力とが入力される。また、ＮＡＮＤゲート１２の２つの入力には、それぞれ、リセット入力“＃Ｒ”と、ＮＡＮＤゲート１１の出力とが入力される。また、ＮＡＮＤゲート１１の出力がＲＳラッチ１０の出力Ｑとなる。なお、ＮＡＮＤゲート１２の出力からは、出力“＃Ｑ”が出力される。【００１３】
図１Ｂは、このＲＳラッチ１０の真理値表である。なお、この真理値表においては、セット入力Ｓ及びリセット入力Ｒを正論理で表記している。
真理値表からも分かるように、ＲＳラッチ１０は、入力Ｓ＝０且つ入力Ｒ＝０のときには、出力値はそのまま保持されるので、Ｑ＝Ｑとなり、“＃Ｑ”＝“＃Ｑ”となる。また、ＲＳラッチ１０は、入力Ｓ＝０且つ入力Ｒ＝１のときには出力値はリセットされて、Ｑ＝０となり、“＃Ｑ”＝１となる。更に、ＲＳラッチ１０は、入力Ｓ＝１且つ入力Ｒ＝０のときには出力値はセットされて、Ｑ＝１、“＃Ｑ”＝０となる。【００１４】
ＲＳラッチ１０は、以上の入力の組み合わせのいずれかであれば、出力の論理は安定している。ところが、ＲＳラッチ１０は、入力Ｓ＝１且つ入力Ｒ＝１のときには、Ｑ＝“＃Ｑ”＝１となってしまう。つまり、この場合には、本来は反対の論理を示すはずであるＱの論理値と“＃Ｑ”の論理値とが、揃って「１」となってしまう。このとき、ＲＳラッチ１０の出力は、どちらも、中間電位の不安定な状態となっている。このような、デジタル回路としては異常である不安定な状態が、メタステーブル（metastable）と呼ばれている。一般的には、このようなメタステーブルの状態を回避するために、ＲＳラッチ１０に対するＳ＝１且つＲ＝１の入力は禁止される。【００１５】
次に、このようなＲＳラッチ１０のメタステーブルを用いた乱数生成器について、図２Ａ及び図２Ｂを用いて説明する。
まず、図２Ａについて説明する。図２Ａは、ＲＳラッチ１０を用いた乱数生成器の回路構成の第一の例である。【００１６】
この乱数生成器２０は、ＲＳラッチ１０のセット入力“＃Ｓ”及びリセット入力“＃Ｒ”の両方に同一の値Ａを入力するように構成したものである。ここで、この乱数生成器２０の出力である、ＲＳラッチ１０の出力Ｑ及び出力“＃Ｑ”を、それぞれ、Ｂ及びＣとする。【００１７】
この乱数生成器２０は、入力Ａ＝０のときは、出力Ｂ及び出力Ｃはどちらも１となり、この状態で出力の値は安定している。ところが、ここで、値Ａを０から１に変化させると、出力Ｂが１であって出力Ｃが０である状態と、出力Ｂが０であって出力Ｃが１である状態とが生じて、出力が不定となる。これは、ＲＳラッチ１０がメタステーブルの状態に置かれており、その出力が不確定の状態になっているためである。乱数生成器２０は、この不確定性を乱数生成に利用する。【００１８】
次に図２Ｂについて説明する。図２Ｂは、この乱数生成器２０の入出力波形例であり、入力Ａとして、０と１との交番信号（クロック信号）を入力した場合の出力Ｂの波形を描いたものである。【００１９】
この出力Ｂの波形に注目すると、入力Ａが０から１へと変化するとき（すなわち、クロック信号の立ち上がり時）において、ＲＳラッチ１０がメタステーブルの状態に陥り、出力Ｂの値は安定しない状態となる。このメタステーブルの状態は、クロック信号の立ち上がり時からある一定の時間Ｔｄの期間継続し、その後、出力Ｂの値は、０及び１のうちのどちらかに収束するが、そのどちらに収束するかは不定である。乱数生成器２０は、このメタステーブルの状態の後に収束する出力Ｂの値を、乱数の生成結果とする。【００２０】
このような、デジタル回路のメタステーブルを利用して乱数を生成する手法は広く知られている。しかしながら、このような構成を有する乱数生成器２０を実装しても、実際には乱数を発生しない場合も少なくない。【００２１】
まず、ＲＳラッチ１０を構成するＮＡＮＤゲート１１とＮＡＮＤゲート１２とのドライブ能力に差があると、出力値が２値のうちの一方に偏ってしまう。このため、乱数を生成するには、この両者のドライブ能力ほぼ同一である必要がある。【００２２】
更に、入力信号Ａは、ＮＡＮＤゲート１１とＮＡＮＤゲート１２とに同時に入力される必要があり、この入力信号Ａの入力タイミングが異なれば、出力値に偏りが生じてしまう。つまり、ＮＡＮＤゲート１１とＮＡＮＤゲート１２とに入力信号Ａが到着する時刻のずれ（スキュー）が小さい必要がある。【００２３】
このように、ＲＳラッチ１０の個体差に起因して乱数生成器２０が乱数を発生しない場合がある。しかしながら、上述した要件を満たすことのできるＲＳラッチ１０を得ることは容易ではない。例えば、あるＦＰＧＡ（Field Programmable Gate Array ）に実装されていた６４個のＲＳラッチ１０の各々を用いて乱数生成器２０を構成したところ、実際に乱数を発生させたものはわずか４個（確率１／１６）であった。【００２４】
次に図３について説明する。図３は、ＲＳラッチ１０を用いた乱数生成器の回路構成の第二の例である。
図３の乱数生成器３０は、ｎ個（ｎは２以上の整数）のＲＳラッチ１０−１、…、１０−ｎとＸＯＲ（排他的論理和）ゲート３１とを備えて構成されている。【００２５】
ＲＳラッチ１０−１、…、１０−ｎは、各々のセット入力“＃Ｓ”及びリセット入力“＃Ｒ”に同一のクロック信号が入力される。ＸＯＲゲート３１は、ＲＳラッチ１０−１、…、１０−ｎの各々の出力Ｑが入力されて、その排他的論理和を、乱数生成器３０での乱数の生成結果として出力する。【００２６】
このように、乱数生成器３０では、ｎ個のＲＳラッチ１０−１、…、１０−ｎを使用して図２Ａの乱数生成器２０をｎ個構成し、これらの出力の排他的論理和を求めて１ビットに集約して、乱数生成器３０での乱数の生成結果としている。このようにすることで、前述したような原因によって乱数を生成しない乱数生成器２０が含まれていても、真性度の高い乱数を得ることができる。【００２７】
この図３の乱数生成器３０のように多数のラッチを実装した上で、各ラッチのメタステーブルを利用して乱数の生成を行う手法は、少ない回路規模で真性度の高い乱数を得ることができることもあり、広く利用されている。【００２８】
なお、乱数生成器３０をＩＣチップ上に実装する場合に、ＲＳラッチ１０−１、…、１０−ｎをＩＣチップ上で分散して配置する手法が採られることがある。ＲＳラッチ１０−１、…、１０−ｎをＩＣチップ上で集中配置すると、その配置位置の周辺に配置された他の回路から発せられるノイズがＲＳラッチ１０−１、…、１０−ｎの各々に対し与える影響は同様のものになる。これに対し、上述のような分散配置を行うと、ＲＳラッチ１０−１、…、１０−ｎの各々が受けるＩＣチップ上の様々な回路から発せられるノイズの影響が異なるものとなるので、得られる乱数の真性度の向上が期待できる。ＲＳラッチ１０−１、…、１０−ｎのＩＣチップ上での分散配置は、このような理由により行われている。【００２９】
なお、この他の背景技術として、デジタル入力値に対して一義的に決定されないデジタル出力値を得ると共に、このデジタル出力値における「０」と「１」の出現頻度を均等にするという乱数生成の技術も知られている。
【先行技術文献】
【特許文献】
【００３０】
【特許文献１】特許第３６０４６７４号公報
【発明の概要】
【発明が解決しようとする課題】
【００３１】
前述したように、これらの秘密鍵は、真性乱数を用いて生成することが安全上望ましい。しかしながら、上述したスマートカードのような小型機器に真性乱数を生成するための専用の乱数生成器を備えるには、幾つかの問題点がある。すなわち、このような小型機器では、使用できるハードウェアリソースが限られている。また、このような小型機器では、電源電圧も低いことが多いため、消費電力の低い乱数生成器が求められる。更には、このような小型機器に搭載されるＩＣチップはそのサイズが小さいため、チップ上に構成される他の回路に影響を及ぼさないように、発生するノイズが少ない乱数生成器であることが望ましい。つまり、スマートカードなどの小型機器では、低ノイズ・低消費電力で高品質な乱数（予測が困難である乱数）を生成する乱数生成器が求められる。【００３２】
図３に構成を図解した乱数生成器３０を、前述したようにＲＳラッチ１０−１、…、１０−ｎのＩＣチップ上で分散配置して実装すると、今度は、ＲＳラッチ１０−１、…、１０−ｎがメタステーブルの状態で発生させるノイズの他の回路への影響が問題となる。【００３３】
メタステーブルによって発生するノイズは、発振回路が発生させるものに比べれば格段に小さい。また、前述したように、ＲＳラッチ１０−１、…、１０−ｎのうちメタステーブルとなって実際に乱数を発生するものはそのうちの一部のみである。このような事情から、ＲＳラッチ１０−１、…、１０−ｎをＩＣチップ上で分散配置したときにＲＳラッチ１０−１、…、１０−ｎが発するノイズの影響は、大きな問題としては把握されていなかった。【００３４】
ここで図４について説明する。図４は、図３の乱数生成器３０の入出力波形の観測例である。
図４において、上側の波形は乱数生成器３０に入力されるクロック信号の観測波形であり、下側の波形は、乱数生成器３０の出力（すなわち、生成された乱数）の観測波形である。【００３５】
この図４における下側の観測波形に注目すると、乱数生成器３０の出力が発振のような異常状態となっており、また、この下側の観測波形の山谷のタイミングが、上側の観測波形とほぼ一致していることが分かる。つまり、この発振様の異常状態を発信源とするノイズが、入力のクロック信号にまで影響を及ぼしていることが、この観測波形から推定される。乱数生成器３０に入力されるクロック信号にノイズが多く含まれると、そのノイズがクロック信号の伝送線を経る等して届くことで、他の回路が誤動作する可能性がある。【００３６】
乱数生成器３０の出力がこのような発振様の異常状態を呈する原因について、図５Ａ、図５Ｂ、及び図５Ｃを用いて説明する。
図５Ａは、図２Ａの乱数生成器２０であって、実際に乱数を発生するものについての入出力波形の例である。【００３７】
図５Ａにおいて、上段の波形は、入力Ａの信号波形であり、クロック信号が入力されている。また、中段及び下段の波形は、どちらも出力Ｂの信号波形である。但し、中段の波形を出力する乱数生成器２０は、下段の波形を出力する乱数生成器２０とは、使用されているＲＳラッチ１０についてのメタステーブルの状態の継続時間Ｔｄが異なっている。【００３８】
このように、図３の乱数生成器３０を構成するｎ個の乱数生成器２０のうち実際に乱数を生成するものの間では、メタステーブルの状態の継続時間Ｔｄが異なっている。
次に図５Ｂについて説明する。図５Ｂも、図２Ａの乱数生成器２０ではあるが、実際には乱数を発生しないものについての入出力波形の例である。なお、この例は、入力Ａが０から１へと変化すると、使用されているＲＳラッチ１０がメタステーブルの状態となるが、その後に出力Ｂが常に０となってしまう乱数生成器２０についてのものである。【００３９】
図５Ｂにおいて、上段の波形は、入力Ａの信号波形であり、クロック信号が入力されている。また、中段及び下段の波形は、どちらも出力Ｂの信号波形である。但し、図５Ｂの波形例と同様に、中段の波形を出力する乱数生成器２０と、下段の波形を出力する乱数生成器２０との間で、使用されているＲＳラッチ１０についてのメタステーブルの状態の継続時間Ｔｄが異なっている。【００４０】
このように、図３の乱数生成器３０を構成するｎ個の乱数生成器２０のうち実際に乱数を生成しないものの間でも、メタステーブルの状態の継続時間Ｔｄが異なっている。
次に図５Ｃについて説明する。図５Ｃは、図３の乱数生成器３０の各部の信号波形例である。なお、この波形例は、４個のＲＳラッチ１０−１〜１０−４を備えて乱数生成器３０が構成されている場合のものである。【００４１】
図５Ｃにおいて、最上段である一番目の波形は、入力Ａの信号波形であり、クロック信号が入力されている。また、二番目から五番目の波形は、それぞれ、ＲＳラッチ１０−１、１０−２、１０−３、及び１０−４の出力Ｂの信号波形であり、メタステーブルの状態の継続時間Ｔｄが互いに異なっている様子を表現している。そして、最下段である六番目の波形は、乱数生成器３０により生成された乱数を表している、ＸＯＲゲート３１の出力信号の波形である。【００４２】
このように、ＲＳラッチ１０−１、１０−２、１０−３、及び１０−４のメタステーブルの状態の継続時間Ｔｄが互いに異なっていると、ＸＯＲゲート３１の出力信号が発振様の異常状態を呈することが分かる。【００４３】
以上のように、図３の乱数生成器３０では、乱数を生成する・生成しないに関わらず、各ＲＳラッチ１０−１、…、１０−ｎのメタステーブルの状態の継続時間Ｔｄの違いが前述の異常状態を生じさせ、その結果としてノイズを発生させることになる。また、この各ＲＳラッチ１０−１、…、１０−ｎのメタステーブルの状態自体も当然ノイズ源となり得る。従って、このような動作を行わせるＲＳラッチ１０−１、…、１０−ｎをＩＣチップ上で分散配置すれば、他の回路の誤動作を誘引しかねない。【００４４】
また、前述したように、図３の乱数生成器３０では、ＲＳラッチ１０−１、…、１０−ｎのうちで実際には乱数を発生しないものでもメタステーブルの状態を生じさせているが、このための電力消費は乱数の生成には全く寄与しておらず、無駄である。このような電力消費の無駄は、スマートカードのような前述した小型機器では深刻な問題である。
本発明は上述した問題に鑑みてなされたものであり、その解決しようとする課題は、真性度の高い乱数を生成するときの電力消費量とノイズ生成量とを低減することである。
【課題を解決するための手段】
【００４５】
本明細書で後述する乱数生成器に、排他的論理和回路と、乱数判定部と、乱数生成指示禁止部とを有するというものがある。ここで、排他的論理和回路は、複数のデジタル回路の各々の出力の排他的論理和を得る。また、乱数判定部は、該複数のデジタル回路の各々に対し、乱数の生成の指示に応じて生成される出力が乱数であるか否かの判定を行う。そして、乱数生成指示禁止部は、該複数のデジタル回路のうち該指示に応じて生成される出力が乱数でないと該乱数判定部が判定したものに対する乱数の生成の指示を禁止する。【００４６】
また、本明細書で後述する暗号化装置に、上述した乱数生成器と、暗号化処理部とを有するというものがある。ここで、暗号化処理部は、該乱数生成器が生成した乱数列を暗号鍵として用いて、情報の暗号化処理を行う。【００４７】
また、本明細書で後述する復号装置に、本明細書で後述する暗号化装置に、上述した乱数生成器と、通信部と、復号処理部と、認証処理部とを有するというものがある。ここで、通信部は、認証対象装置との間で通信を行って各種の情報の授受を行う。また、復号処理部は、暗号化されている情報に対し、正規の認証対象装置との間で共有されている所定の暗号鍵を用いて復号処理を施す。そして、認証処理部は、該復号処理部による復号処理によって得られた情報に基づいて該認証対象装置に対する認証処理を行う。この構成において、該通信部は、該乱数生成器が生成した乱数列を該認証対象装置へ送信したときに該乱数列を受信した該認証対象装置から送られてくる、該乱数列に対して該認証対象装置で施された暗号化処理により得られた暗号化情報を受信する。また、該復号処理部は、該通信部が受信した暗号化情報に対して該復号処理を施す。そして、該認証処理部は、該認証処理において、該通信部が受信した暗号化情報に対して該復号処理部が該復号処理を施して得られた復号情報が、該認証対象装置へ送信した乱数列と一致するか否かの判定を行う。ここで、該復号情報と該欄数列とが一致すると判定したときには、該認証処理部は、該認証対象装置が正規のものであるとの認証結果を得る。
【発明の効果】
【００４８】
本明細書で後述する乱数生成器は、少ない電力消費量及び少ないノイズ生成量で、真性度の高い乱数を生成することができる。
【図面の簡単な説明】
【００４９】
【図１Ａ】ＲＳラッチの回路構成例である。
【図１Ｂ】図１ＡのＲＳラッチの真理値表である。
【図２Ａ】図１ＡのＲＳラッチを用いた従来の乱数生成器の回路構成の第一の例である。
【図２Ｂ】図２Ａの乱数生成器の入出力波形例である。
【図３】図１ＡのＲＳラッチを用いた従来の乱数生成器の回路構成の第二の例である。
【図４】図３の乱数生成器の入出力波形の観測例である。
【図５Ａ】図３の乱数生成器の出力が異常状態となる原因の説明図（その１）である。
【図５Ｂ】図３の乱数生成器の出力が異常状態となる原因の説明図（その２）である。
【図５Ｃ】図３の乱数生成器の出力が異常状態となる原因の説明図（その３）である。
【図６】本実施形態に係る乱数生成器の回路構成例である。
【図７】図６の乱数生成器の入出力波形の観測例である。
【図８】図６の乱数生成器を備えた電子機器の構成例である。
【発明を実施するための形態】
【００５０】
まず図６について説明する。図６は、本実施形態に係る乱数生成器の回路構成例が図解されている。
この乱数生成器１００は、ｎ個（ｎは２以上の整数）の乱数生成回路１１０−１、…、１１０−ｎ、ＸＯＲゲート１２０、マルチプレクサ１３０、乱数判定部１４０、及び判定結果保持部１５０を備えて構成されている。
【００５１】
乱数生成回路１１０−１、…、１１０−ｎは、それぞれ、２入力のＮＡＮＤゲート１１１−１ａ、１１１−１ｂ、…、１１１−ｎａ、１１１−ｎｂと、２入力のＡＮＤ（論理積）ゲート１１２−１、…、１１２−ｎと、を備えて構成されているデジタル回路である。なお、乱数生成回路１１０−１、…、１１０−ｎは構成が同一である。そこで、ここでは、乱数生成回路１１０−１の構成についてのみ説明する。
【００５２】
乱数生成回路１１０−１において、ＮＡＮＤゲート１１１−１ａの２つの入力には、それぞれ、ＡＮＤゲート１１２−１の出力と、ＮＡＮＤゲート１１１−１ｂの出力とが接続されている。また、ＮＡＮＤゲート１１１−１ｂの２つの入力には、それぞれ、ＡＮＤゲート１１２−１の出力と、ＮＡＮＤゲート１１１−１ａの出力とが接続されている。
【００５３】
つまり、ＮＡＮＤゲート１１１−１ａとＮＡＮＤゲート１１１−１ｂとでＲＳラッチ回路が構成されており、このＲＳラッチ回路のセット入力及びリセット入力の両方に、ＡＮＤゲート１１２−１の出力信号が入力されるように構成されている。そして、ＮＡＮＤゲート１１１−１ａの出力が、この乱数生成回路１１０−１の出力となっている。
【００５４】
乱数生成回路１１０−１は以上のように構成されている。つまり、乱数生成回路１１０−１は、図２Ａの乱数生成器２０と同一の回路構成を備えているのである。
ＡＮＤゲート１１２−１は、乱数生成回路１１０−１内の上述したＲＳラッチ回路のセット入力及びリセット入力へのクロック信号の入力のゲーティングを行うためのものである。このＡＮＤゲート１１２−１の動作をより具体的に説明する。
【００５５】
ＡＮＤゲート１１２−１は、その一方の入力に、他の回路から送られてくるクロック信号（例えば図２Ｂにおける入力信号Ａのような、０と１との交番信号）が入力され、その他方の入力に、後述する判定結果保持部１５０のｎ個の出力のうちの１つが入力される。ＡＮＤゲート１１２−１は、この２つの入力の論理積を求めて出力する。従って、ＡＮＤゲート１１２−１は、判定結果保持部１５０からの入力が１である期間は、他の回路から送られてくるクロック信号を出力して、上述したＲＳラッチ回路のセット入力及びリセット入力の両方に入力する。すなわち、ＡＮＤゲート１１２−１は、判定結果保持部１５０からの入力が１である期間は、他の回路から送られてくるクロック信号を、上述したＲＳラッチ回路に入力する。
【００５６】
一方、ＡＮＤゲート１１２−１は、判定結果保持部１５０からの入力が０である期間は、クロック信号の論理とは無関係に０を出力して、上述したＲＳラッチ回路のセット入力及びリセット入力の両方に入力する。ＡＮＤゲート１１２−１は、判定結果保持部１５０からの入力が０である期間は、このようにして、上述したＲＳラッチ回路に０を入力することで、乱数生成回路１１０−１に対する、乱数の生成の指示を禁止する。
【００５７】
ＸＯＲゲート１２０は、上述した構成を各自備えている乱数生成回路１１０−１、…、１１０−ｎの出力の排他的論理和を求めて出力する排他的論理和回路である。
マルチプレクサ１３０は、乱数生成回路１１０−１、…、１１０−ｎの各々の出力信号のうちのいずれかを、乱数判定回路１４０から送られてくる選択指示信号Ｉ＿ＳＥＬによる選択指示に従ってひとつずつ選択し、選択された信号を出力する選択部である。マルチプレクサ１３０により選択された出力信号は乱数判定部１４０に送られる。
【００５８】
乱数判定部１４０は、判定結果保持部１５０を制御して、乱数生成回路１１０−１、…、１１０−ｎの各々に対し、乱数の生成の指示を与える。より具体的には、乱数判定部１４０は、乱数生成回路１１０−１、…、１１０−ｎの上述したＲＳラッチ回路の各々に対し、当該ＲＳラッチ回路がメタステーブル状態となって出力を不定状態（乱数）とするような入力（このような入力を「不定状態入力」と称することとする）を、乱数の生成の指示として入力する。そして、乱数生成回路１１０−１、…、１１０−ｎのうち乱数の生成の指示を与えたものの出力、すなわち、前述した不定状態入力を入力したＲＳラッチ回路の出力が、乱数であるか否かを、乱数判定部１４０は判定し、その判定結果を判定結果保持部１５０に出力する。
【００５９】
判定結果保持部１５０は、乱数生成回路１１０−１、…、１１０−ｎにひとつずつ対応付けられているｎ個のＤフリップフロップ（以下、「Ｄ−ＦＦ」と称することとする）１５０−１、…、１５０−ｎを備えて構成されている。Ｄ−ＦＦ１５０−１、…、１５０−ｎは、その各々の入力に、乱数判定部１４０からのｎ個の出力が１つずつ入力されており、その出力、すなわち、乱数判定部１４０による判定結果の保持を行う。また、Ｄ−ＦＦ１５０−１、…、１５０−ｎの各々の出力は、判定結果保持部１５０の出力として、それぞれ、乱数生成回路１１０−１、…、１１０−ｎの各々のＡＮＤゲート１１２−１、…、１１２−ｎに入力される。
【００６０】
なお、Ｄ−ＦＦ１５０−１、…、１５０−ｎを、ｎ個のＤラッチで置き換えて判定結果保持部１５０を構成することもできる。一般に、ＤラッチはＤフリップフロップよりも回路規模が小さいので、Ｄラッチで判定結果保持部１５０を構成することにより、乱数生成器１００の回路規模が小さくなる。
【００６１】
以上のように構成されている図６の乱数生成器１００の動作について説明する。
まず、この乱数生成器１００に対して電力の供給が開始されると、判定結果保持部１５０のＤ−ＦＦ１５０−１、…、１５０−ｎは、リセットされ、初期値として０が格納されるものとする。すると、このとき、ＡＮＤゲート１１２−１、…、１１−ｎの出力はいずれも０となって、乱数生成回路１１０−１、…、１１０−ｎの出力は１となる。その後、Ｄ−ＦＦ１５０−１、…、１５０−ｎの格納値が０である限り、乱数生成回路１１０−１、…、１１０−ｎの出力は不変（値１）のまま保持される。
【００６２】
電力供給開始時における以上の初期化動作が完了すると、次に、乱数判定部１４０は、乱数生成回路１１０−１、…、１１０−ｎの各々に対し、乱数の生成の指示に応じて生成される出力が乱数であるか否かの判定を行う。そして、乱数判定部１４０は、この判定結果を判定結果保持部１５０に保持させる。なお、このために乱数判定部１４０が行う動作は、乱数生成回路１１０−１、…、１１０−ｎの各々に対して同一であるので、ここでは、乱数生成回路１１０−１に対して乱数判定部１４０が行う動作のみを詳細に説明する。
【００６３】
まず、乱数判定部１４０は、マルチプレクサ１３０を制御して乱数生成回路１１０−１の出力を選択させると共に、Ｄ−ＦＦ１５０−１に１を格納する。すると、このとき、ＡＮＤゲート１１２−１は、他の回路から送られてくるクロック信号を出力するようになり、このクロック信号が、乱数生成回路１１０−１が備えているＲＳラッチ回路におけるセット入力とリセット入力とに入力される。
【００６４】
ここで、ＡＮＤゲート１１２−１から入力されるクロック信号が０から１へと変化すると、ＡＮＤゲート１１２−１の出力も０から１へと変化し、不定状態入力を乱数生成回路１１０−１のＲＳラッチ回路に入力するようになる。つまり、ＡＮＤゲート１１２−１は、このとき、乱数の生成の指示を乱数生成回路１１０−１に与えることになって、乱数生成回路１１０−１が有するＲＳラッチ回路はメタステーブルの状態に陥り、出力の値が安定しない状態となる。
【００６５】
その後、ＡＮＤゲート１１２−１から入力されるクロック信号の立ち上がりから一定の時間Ｔｄの期間継続すると、乱数生成回路１１０−１の出力（すなわちＲＳラッチ回路の出力）が、０及び１のうちのどちらかに収束する。この出力は、マルチプレクサ１３０を経て乱数判定部１４０に入力される。
【００６６】
乱数判定部１４０は、乱数生成回路１１０−１のＲＳラッチ回路に不定状態入力を入力しているときにおける、そのＲＳラッチ回路の該メタステーブル状態を経た後の出力の観測を行う。なお、この観測は、ＡＮＤゲート１１２−１から入力されるクロック信号の所定クロック数分繰り返される。
【００６７】
このとき、乱数判定部１４０は、クロック信号の当該所定クロック数分に亘り繰り返して観測された当該出力において、出力の論理が所定回数連続して変化しない状態が生じているか否かを判定する。ここで、乱数判定部１４０は、出力の論理が当該所定回数連続して変化しない状態が当該観測の結果に含まれている場合には、乱数生成回路１１０−１のＲＳラッチ回路の出力は乱数ではない（すなわち、このＲＳラッチ回路は乱数を生成しない）との判定を下す。一方、乱数判定部１４０は、当該観測の結果において、出力の論理が当該所定回数連続するまでに変化していた場合には、乱数生成回路１１０−１のＲＳラッチ回路の出力は乱数である（すなわち、このＲＳラッチ回路は乱数を生成する）との判定を下す。
【００６８】
次に、乱数判定部１４０は、乱数生成回路１１０−１のＲＳラッチ回路の出力が乱数ではないと判定した場合には、判定結果保持部１５０のＤ−ＦＦ１５０−１に０を格納する。ＡＮＤゲート１１２−１は、Ｄ−ＦＦ１５０−１で保持されているこの判定結果を受け取ると、この判定結果をそのまま出力する。つまり、ＡＮＤゲート１１２−１は、Ｄ−ＦＦ１５０−１で保持されている値が０である場合には、この値をそのまま乱数生成回路１１０−１に与える。従って、このときの乱数生成回路１１０−１の出力は１となる。その後、Ｄ−ＦＦ１５０−１の格納値が０である限り、ＡＮＤゲート１１２−１から乱数生成回路１１０−１への入力値が０である状態が継続されるので、乱数生成回路１１０−１の出力は不変（値１）のまま保持される。つまり、判定結果保持部１５０のＤ−ＦＦ１５０−１に０が格納された場合には、ＡＮＤゲート１１２−１は、乱数生成回路１１０−１に対する乱数の生成の指示を禁止する動作を行う。
【００６９】
その一方で、乱数判定部１４０は、乱数生成回路１１０−１のＲＳラッチ回路の出力は乱数であると判定した場合には、Ｄ−ＦＦ１５０−１に格納されている値１をそのまま維持する。従って、この場合には、乱数生成回路１１０−１のＲＳラッチ回路による乱数の生成が継続される。
【００７０】
乱数判定部１４０は、マルチプレクサ１３０と判定結果保持部１５０とを以上のように制御して、乱数の生成の指示に応じて乱数生成回路１１０−１のＲＳラッチ回路で生成される出力が乱数であるか否かの判定動作と、その判定結果の保持動作とを行う。乱数判定部１４０は、マルチプレクサ１３０を制御して乱数生成回路１１０−１、…、１１０−ｎの各々の出力の選択をひとつずつ切り換えながら、上述した動作を、乱数生成回路１１０−１、…、１１０−ｎの各々に対して順次行う。
【００７１】
その後、乱数生成回路１１０−１、…、１１０−ｎの各々に対しての上述した動作が完了すると、乱数判定部１４０は、自身動作を停止させると共にマルチプレクサ１３０の動作も停止させてそれ以上の電力消費を抑制する。すると、その後は、乱数生成回路１１０−１、…、１１０−ｎのうち、乱数の生成の指示に応じて生成される出力が乱数であると乱数判定部１４０が判定したもののみが乱数の生成動作を行い、その出力がＸＯＲ１２０に入力されるようになる。その一方、乱数生成回路１１０−１、…、１１０−ｎのうち、乱数の生成指示に応じて生成される出力が乱数ではないと乱数判定部１４０が判定したものに対しては、ＲＳラッチ回路をメタステーブル状態とする不定状態入力が禁止され、値１を常に出力させる。この結果、乱数生成回路１１０−１、…、１１０−ｎのうち乱数の生成指示に応じて生成される出力が乱数でないと乱数判定部１４０が判定したもののＲＳラッチ回路をメタステーブル状態とすることで発生するノイズが抑えられ、また、電力消費も抑制される。
【００７２】
ここで図７について説明する。図７は、図６の乱数生成器１００の入出力波形の観測例である。
図７において、上側の波形は乱数生成器１００に入力されるクロック信号の観測波形であり、下側の波形は、乱数生成器１００の出力（すなわち、生成された乱数）の観測波形である。
【００７３】
この図７の波形を図４の波形と対比すると、図６の乱数生成器１００では、図３の乱数生成器３０に対して、発振様の異常状態が格段に減少していることが分かり、また、これに伴い、クロック信号に影響を与えるノイズも顕著に減少していることが分かる。
【００７４】
ここで、図６の乱数生成器１００によるノイズ及び消費電力の削減効果の定量的な見積もりを試みる。
あるＦＰＧＡでは、実装したＲＳラッチ回路のうち、乱数を発生させることのできたものは、全体の１／１６であった。つまり、図６の乱数生成器１００では、実装したＲＳラッチ回路のうちの１５／１６について、乱数の生成動作を停止させることになる。従って単純に考えると、図６の乱数生成器１００は、従来のもの（例えば図３の乱数生成器３０）に比べ、ノイズの発生量は約１／１６になることが期待される。
【００７５】
次に、消費電力について検討する。ＲＳラッチ回路の消費電力をαと仮定し、Ｄ型フリップフロップ回路の消費電力をＲＳラッチの２倍である２αと仮定する。ＲＳラッチを１２８個実装することを想定すると、従来のもの（例えば図３の乱数生成器３０）の消費電力は、１２８個のＲＳラッチ回路の消費電力を考慮して、１２８αとなる。これに対し、図６の乱数生成器１００による消費電力は、乱数を生成する８個のＲＳラッチ回路と、８個のＲＳラッチ回路の入力に接続されている８個のＤ型フリップフロップ回路の消費電力を考慮して、８α＋８×２α＝２４αとなる。従って、２４α／１２８α＝３／１６より、図６の乱数生成器１００は、従来のものに比べて、消費電力が約３／１６になることが期待される。
【００７６】
また、図６の乱数生成器１００は、乱数生成回路１１０−１、…、１１０−ｎに対する乱数の生成の指示を禁止する場合には、判定結果保持部１５０のＤ−ＦＦ１５０−１、…、１５０−ｎには値０が格納されるように構成されている。また、Ｄ−ＦＦ１５０−１、…、１５０−ｎは、この値０を、乱数生成回路１１０−１、…、１１０−ｎのＡＮＤゲート１１２−１、…、１１２−ｎに出力している。更に、このとき、ＡＮＤゲート１１２−１、…、１１２−ｎは、Ｄ−ＦＦ１５０−１、…、１５０−ｎからの入力値が０である場合には、値０を、乱数生成回路１１０−１、…、１１０−ｎのＲＳラッチ回路に出力している。
【００７７】
Ｄ−ＦＦ１５０−１、…、１５０−ｎは、電位の異なる２値の論理レベルにおけるロー・レベルの電位（すなわち値０）を出力する方が、ハイ・レベルの電位（すなわち値１）を出力するよりも消費電力が少ない。また、ＡＮＤゲート１１２−１、…、１１２−ｎも同様であり、電位の異なる２値の論理レベルにおけるロー・レベルの電位を出力する方が、ハイ・レベルの電位を出力するよりも消費電力が少ない。ここで、メタステーブル状態を利用してＲＳラッチ回路に乱数を生成させても、実際には乱数を発生させないものの方が、乱数を発生させるものよりも格段に多いことは先に説明した。従って、乱数の生成指示の禁止に、Ｄ−ＦＦ１５０−１、…、１５０−ｎの出力に値１ではなく値０を割り当て、また、ＡＮＤゲート１１２−１、…、１１２−ｎの出力にも値１ではなく値０を割り当てたことで、図６の乱数生成器１００の電力消費が削減される。
【００７８】
次に、図６の乱数生成器１００の用途について説明する。
乱数の生成を必要とする機能として代表的なものに暗号機能があり、この乱数生成器１００は、この暗号機能を利用する電子機器に用いることができる。暗号機能を利用する電子機器の具体例としては、前述したスマートカードがあり、乱数生成器１００は、このスマートカードで利用することができる。また、無線通信の秘匿を保証するために、携帯電話装置や無線インターネット接続の端末装置などにも暗号機能が求められており、このような電子機器でも乱数生成器１００を利用することができる。更に、近年では、印刷装置に使用するインクカートリッジ、電池駆動の電子機器用の専用電池、ゲーム機のプログラムが収められているプログラムカートリッジなどといった電子機器についての模造品が出回っている。これらの模造品の広範な流通を阻止するために、正規の製品に対する認証機能が利用されることがある。この認証機能の実現に乱数の生成が用いられることがあり、乱数生成器１００は、このような認証機能を利用する電子機器に用いることもできる。
【００７９】
ここで図８について説明する。図８は、図６の乱数生成器１００を備えた電子機器２００の構成例を図解したものである。この電子機器２００は、暗号化装置として機能させることができ、また、認証装置としても機能させることができる。
【００８０】
この電子機器２００は、図６に図解した乱数生成器１００と、ＣＰＵ３００、暗号演算器４００、ＲＯＭ５００、ＲＡＭ６００、及び通信部７００とを備えて構成されている。なお、これらの各構成要素はバスライン８００にいずれも接続されており、ＣＰＵ３００による管理の下で各種のデータを相互に授受することができるように構成されている。
【００８１】
ＣＰＵ（Central Processing Unit ）３００は、この電子機器２００の各構成要素の動作を管理する中央演算部である。
暗号演算器４００は、各種の情報の暗号化処理や、暗号化されているデータの復号処理を行う。なお、本実施形態では、暗号演算器４００は、公開鍵コプロセッサ４１０と共通鍵コプロセッサ４２０とを備えている。ここで、公開鍵コプロセッサ４１０は、代表的な公開鍵暗号方式であるＲＳＡ暗号や楕円曲線暗号等を用いて暗号化及び復号の処理を行う。また、共通鍵コプロセッサ４２０は、代表的な共通鍵暗号方式であるＡＥＳ暗号等を用いて暗号化及び復号の処理を行う。なお、暗号演算器４００を電子機器２００に備える代わりに、暗号演算器４００により行われる暗号化及び復号の処理を、ＣＰＵ３００に行わせることに構成してもよい。
【００８２】
ＲＯＭ（Read Only Memory）５００には、ＣＰＵ３００により実行される制御プログラムや、暗号演算器４００が暗号化や復号の処理において使用する固有のパラメータが予め格納されている不揮発性半導体メモリである。ＣＰＵ３００は、電子機器２００への電力供給が開始されたときに、この制御プログラムをＲＯＭ５００から読み出してその実行を開始することで、電子機器２００の各構成要素の動作管理を行えるようになる。
【００８３】
ＲＡＭ（Random Access Memory）６００は、ＣＰＵ３００や暗号演算器４００が各種の処理を行う際に、必要に応じて作業用記憶領域として使用する揮発性半導体メモリである。
【００８４】
通信部７００は、各種のデータの送受信を行って、同一の構成を有する他の電子機器２００との間で、各種のデータの授受を行う。
この電子機器２００を暗号化装置として機能させる場合、乱数生成器１００は、暗号演算器４００が情報の暗号化処理を行うときにおける暗号鍵の生成に用いられる。なお、暗号化処理に用いた暗号鍵は例えばＲＡＭ６００に格納して保持しておくようにし、その後に暗号演算器４００が暗号化情報に対して行う復号処理に使用する。
【００８５】
なお、乱数生成器１００で生成される乱数列を暗号鍵の生成に用いる際に、生成された乱数列の乱数としての真性度を更に向上させるために、後処理（Post Processing ）を行ってもよい。このために行われる後処理の一例として、線形フィードバックシフトレジスタ（ＬＦＳＲ）の使用を挙げることができる。ＬＦＳＲは、排他的論理和回路で帰還をかけたシフトレジスタによって構成されるカウンタであり、乱数列を入力すると、乱数列が圧縮されて、乱数としての真性度を向上させた乱数列が得られることが知られている。従って、ＬＦＳＲの出力から得られる乱数列を用いて暗号鍵の生成を行うようにすることで、より真性度の高い乱数列を暗号鍵とすることが可能になる。なお、ＬＦＳＲは、専用のハードウェアを構成して用いるようにしてもよく、また、ＣＰＵ３００を用いてソフトウェアにより実現するようにしてもよい。
また、この電子機器２００を用いて、前述した認証機能を提供することができる。
【００８６】
装置間で行われる認証の手順について説明する。なお、ここでは、装置Ｃを認証対象装置として装置Ｐを認証装置とし、装置Ｃが正規のものであるか否かを装置Ｐが検証する場合を例にして認証の手順を説明する。
【００８７】
認証装置である装置Ｐと認証対象装置である装置Ｃとの各々には、図８の電子機器２００と同一の構成要素を備えておくようにする。また、装置Ｐと正規の装置Ｃとの間では、共通の暗号鍵（秘密鍵）Ｋを事前に共有しておくようにし、例えば、この暗号鍵Ｋを装置Ｐ及び装置Ｃの各々のＲＯＭ５００に予め格納しておく。
【００８８】
認証を行う場合には、まず、装置Ｐが乱数生成器１００を用いて乱数ｒを生成し、生成した乱数ｒを、通信部７００を用いて装置Ｃへ送信する。装置Ｃは、通信部７００を用いて乱数ｒを受信すると、この乱数ｒに対し、装置Ｐとの間で共有している暗号鍵Ｋを用いて暗号演算器４００で暗号化処理を行い、得られた暗号化情報を、通信部７００を用いて装置Ｐに返信する。装置Ｐは、この暗号化情報の返信を、通信部７００を用いて受信すると、装置Ｃとの間で共有している暗号鍵Ｋを用いて、受信した暗号化情報を暗号演算器４００で復号処理を施す。そして、この復号処理により得られた情報が、装置Ｃへ送信した乱数ｒと一致するか否かを、装置ＰのＣＰＵ３００が判定する。ここで、復号処理により得られた情報が乱数ｒと一致した場合には、装置Ｃが正規のものであるとの認証結果を装置ＰのＣＰＵ３００が得る。一方、復号処理により得られた情報が乱数ｒと一致しなかった場合には、装置Ｃが正規のものではないとの認証結果を装置ＰのＣＰＵ３００が得る。
【００８９】
以上のプロセスを、装置Ｐと装置Ｃとで行うことで、装置Ｃの認証を装置Ｐで行うことができる。なお、以上のプロセスを行うための専用のハードウェアを装置Ｐ及び装置Ｃに備えるようにしてもよい。
【００９０】
なお、上記の手順において装置Ｃから装置Ｐへ返信される暗号化情報の収集結果を利用して装置Ｃに成りすます攻撃（「リプレイアタック」等）を考慮すると、この認証機能に使用する乱数ｒは、乱数としての真性度が高いものを使用することが好ましい。
【００９１】
なお、以上までに説明した実施形態に関し、更に以下の付記を開示する。
（付記１）
複数のデジタル回路の各々の出力の排他的論理和を得る排他的論理和回路と、
該複数のデジタル回路の各々に関して、乱数の生成の指示に応じて生成される出力が乱数であるか否かの判定を行う乱数判定部と、
該複数のデジタル回路のうち該指示に応じて生成される出力が乱数でないと該乱数判定部が判定したデジタル回路に対する乱数の生成の指示を禁止する乱数生成指示禁止部と、を有することを特徴とする乱数生成器。
（付記２）
該複数のデジタル回路は複数のＲＳラッチ回路であり、
該乱数生成部は、該ＲＳラッチ回路をメタステーブル状態とする入力を乱数の生成の指示として該ＲＳラッチ回路に入力したときの該ＲＳラッチ回路の出力が乱数であるか否かの判定を、該複数のＲＳラッチ回路の各々に対して行う、
ことを特徴とする付記１に記載の乱数生成回路。
（付記３）
該乱数判定部は、該ＲＳラッチ回路をメタステーブル状態とする入力を入力しているときにおける該ＲＳラッチ回路の該メタステーブル状態を経た後の出力の観測を繰り返し、観測された出力の論理が所定回数連続して変化しないときには、該ＲＳラッチ回路の出力は乱数ではないとの判定を下すことを特徴とする付記２に記載の乱数生成器。
（付記４）
該乱数生成指示禁止部は、出力が乱数ではないと該乱数判定部が判定したデジタル回路に対し、該デジタル回路の出力の論理を不変のまま保持する値の入力を継続するようにして、乱数の生成の指示を禁止することを特徴とする付記１に記載の乱数生成器。
（付記５）
該乱数判定部の判定結果を保持する判定結果保持部を更に有しており、
該乱数生成指示禁止部は、該判定結果保持部が保持している該乱数判定部の判定結果を該判定結果保持部から受け取り、出力が乱数ではないと該乱数判定部が判定したデジタル回路に対し該受け取った判定結果を与えるようにして、該デジタル回路の出力の論理を不変のまま保持する値の入力を継続する、
ことを特徴とする付記４に記載の乱数生成器。
（付記６）
該複数のデジタル回路の各々の出力をひとつずつ選択して出力する選択部を更に有しており、
該判定結果保持部は、該複数のデジタル回路にひとつずつ対応付けられており、該乱数判定部の判定結果を保持する複数のＤ型フリップフロップ回路を備えており、
該乱数判定部は、該選択部により出力が選択されたデジタル回路に対して該判定を行い、該判定結果を、該判定結果保持部における該デジタル回路に対応付けられているＤ型フリップフロップ回路に保持させる、
ことを特徴とする付記５に記載の乱数生成器。
（付記７）
該判定結果保持部における、出力が乱数ではないと該乱数判定部が判定したデジタル回路に対応付けられているＤ型フリップフロップ回路は、電位の異なる２値の論理レベルにおけるロー・レベルの電位を、該乱数生成指示禁止部に出力することを特徴とする付記６に記載の乱数生成器。
（付記８）
該乱数生成指示禁止部は、クロック信号と該Ｄ型フリップフロップ回路の出力との論理積を得る論理積回路を備えており、該論理積回路の出力を、該Ｄ型フリップフロップ回路に対応付けられているデジタル回路に入力するようにして、出力が乱数ではないと該乱数判定部が判定したデジタル回路に対する、該デジタル回路の出力の論理を不変のまま保持する値の入力を継続することを特徴とする付記７に記載の乱数生成器。
（付記９）
該複数のデジタル回路の各々の出力をひとつずつ選択して出力する選択部を更に有しており、
該判定結果保持部は、該複数のデジタル回路にひとつずつ対応付けられており、該乱数判定部の判定結果を保持する複数のＤ型ラッチ回路を備えており、
該乱数判定部は、該選択部により出力が選択されたデジタル回路に対して該判定を行い、該判定結果を、該判定結果保持部における該デジタル回路に対応付けられているＤ型ラッチ回路に保持させる、
ことを特徴とする付記５に記載の乱数生成器。
（付記１０）
付記１から９のうちのいずれか一項に記載の乱数生成器と、
該乱数生成器が生成した乱数列を暗号鍵として用いて、情報の暗号化処理を行う暗号化処理部と、
を有することを特徴とする暗号化装置。
（付記１１）
付記１から９のうちのいずれか一項に記載の乱数生成器と、
認証対象装置との間で通信を行って各種の情報の授受を行う通信部と、
暗号化されている情報に対し、正規の認証対象装置との間で共有されている所定の暗号鍵を用いて復号処理を施す復号処理部と、
該復号処理部による復号処理によって得られた情報に基づいて該認証対象装置に対する認証処理を行う認証処理部と、
を有し、
該通信部は、該乱数生成器が生成した乱数列を該認証対象装置へ送信したときに該乱数列を受信した該認証対象装置から送られてくる、該乱数列に対して該認証対象装置で施された暗号化処理により得られた暗号化情報を受信し、
該復号処理部は、該通信部が受信した暗号化情報に対して該復号処理を施し、
該認証処理部は、該認証処理において、該通信部が受信した暗号化情報に対して該復号処理部が該復号処理を施して得られた復号情報が、該認証対象装置へ送信した乱数列と一致するか否かの判定を行い、該復号情報と該欄数列とが一致すると判定したときに、該認証対象装置が正規のものであるとの認証結果を得る、
ことを特徴とする認証装置。
【符号の説明】
【００９２】
１０、１０−１、１０−ｎ  ＲＳラッチ
１１、１２、１１１−１ａ、１１１−１ｂ、１１１−ｎａ、１１１−ｎｂ
ＮＡＮＤゲート
２０、３０、１００  乱数生成器
３１、１２０  ＸＯＲゲート
１１０−１、１１０−ｎ  乱数生成回路
１１２−１、１１２−ｎ  ＡＮＤゲート
１３０  マルチプレクサ
１４０  乱数判定部
１５０  判定結果保持部
１５０−１、１５０−ｎ  Ｄフリップフロップ
２００  電子機器
３００  ＣＰＵ
４００  暗号演算器
４１０  公開鍵コプロセッサ
４２０  共通鍵コプロセッサ
５００  ＲＯＭ
６００  ＲＡＭ
７００  通信部
８００  バスライン
【図１Ａ】
2011117929.tif 000003
【図１Ｂ】
2011117929.tif 000004
【図２Ａ】
2011117929.tif 000005
【図２Ｂ】
2011117929.tif 000006
【図３】
2011117929.tif 000007
【図４】
2011117929.tif 000008
【図５Ａ】
2011117929.tif 000009
【図５Ｂ】
2011117929.tif 000010
【図５Ｃ】
2011117929.tif 000011
【図６】
2011117929.tif 000012
【図７】
2011117929.tif 000013
【図８】
2011117929.tif 000014
【国際調査報告】
2011117929.tif 000015
2011117929.tif 000016
2011117929.tif 000017
2011117929.tif 000018