(57)【要約】【課題】    乱数出力の周期性を簡便に検査する乱数検査回路とこれを搭載した乱数生成回路およびこの乱数生成回路を用いた半導体集積装置、ＩＣカードおよび情報機器端末を提供する。【解決手段】    乱数出力中に「１」「０」の連が何種類あるかに着目し、乱数列中の連をカウントして連の種類を調べることにより、乱数列の周期性を検査し異常を判定する。すなわち、乱数列中で同じ値が連続する回数を数える第１の手段と、前記第１の手段の出力に基づいて、前記乱数列中で同じ値が連続する回数の種類を調べる第２の手段と、前記第２の手段の出力に基づいて、前記乱数列の判定を実施する第３の手段と、を備えたことを特徴とする乱数検査回路を提供する。【選択図】    図１
2005249969.tif 000002
【特許請求の範囲】
【請求項１】
乱数列中で同じ値が連続する回数を数える第１の手段と、
前記第１の手段の出力に基づいて、前記乱数列中で同じ値が連続する回数の種類を調べる第２の手段と、
前記第２の手段の出力に基づいて、前記乱数列の判定を実施する第３の手段と、
を備えたことを特徴とする乱数検査回路。
【請求項２】
乱数列が入力され、前記乱数列中の「１」もしくは「０」を検知する検知回路と、
前記検知回路の出力に基づいて、前記乱数列中の連続する「１」もしくは「０」を保持するシフトレジスタ回路と、
前記検知回路の出力に基づいて、前記乱数列中の「１」もしくは「０」が切り替わる際に前記シフトレジスタ回路の内容を保持するレジスタ回路と、
前記レジスタ回路の出力に基づいて、前記乱数列中の連の種類を判定する判定回路と、
を備えたことを特徴とする乱数検査回路。
【請求項３】
乱数列が入力され、乱数列中の「１」および「０」を検知する検知回路と、
前記検知回路の出力に基づいて、前記乱数列中の連続する「１」および「０」をそれぞれ保持するシフトレジスタ回路と、
前記検知回路の出力に基づいて、前記乱数列中の「１」および「０」が切り替わる際に前記シフトレジスタ回路の内容を保持するレジスタ回路と、
前記レジスタ回路の出力より、前記乱数列中の連の種類を判定する判定回路と、
を備えたことを特徴とする乱数検査回路。
【請求項４】
前記判定回路は、信号選択回路により構成されることを特徴とする請求項２または３に記載の乱数検査回路。
【請求項５】
前記判定回路は、加算回路により構成されることを特徴とする請求項２または３に記載の乱数検査回路。
【請求項６】
前記判定回路は、カウンタ回路により構成されることを特徴とする請求項２または３に記載の乱数検査回路。
【請求項７】
乱数列を生成する乱数生成部と、
前記乱数生成部から出力された乱数列を検査する、請求項１〜６のいずれか１つに記載の乱数検査回路と、
を備えたことを特徴とする乱数生成回路。
【請求項８】
請求項７記載の乱数生成回路を備え、前記乱数生成部から出力される前記乱数列の出力端子と前記乱数生成部から出力される判定信号の出力端子とを内蔵することを特徴とする半導体集積装置。
【請求項９】
請求項８記載の半導体集積装置を備えたことを特徴とするＩＣカード。
【請求項１０】
請求項８記載の半導体集積装置を備えたことを特徴とする情報端末機器。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、簡便かつ正確に乱数出力を検査できる乱数検査回路、乱数生成回路、半導体集積装置、ＩＣカード、情報端末機器に関する。
【背景技術】
【０００２】
科学技術計算、ゲーム、暗号分野など、多くの場面で乱数が使用される。特に近年、情報セキュリティ技術の重要性が高まるにつれ、乱数を生成する回路に対する要求も強くなってきている。従来は小型の回路で乱数生成回路を実現するために、ある計算式から算出される擬似乱数生成回路が用いられてきた。しかし、擬似乱数生成回路は、ある決まった演算を元にしているため、それが出力する乱数は確定論的であり、周期性や規則性を持つといった問題があった。これに対して、物理現象やノイズなどを利用することによって、周期性や規則性のない高品質な乱数を出力可能とし、さらに回路規模もそれ程大きくない乱数回路が提案され始めている。
【０００３】
ところが、こういった乱数生成回路をチップに実装しようとした場合、検査工程において従来とは違った方法をとらざるを得なくなる。  
図２０は、実際の回路中での信号伝達の様子を例示する模式図である。  
通常、回路中では、クロックタイミングを揃えたり順序回路を用いたりするため、レジスタで値を保持することと、演算と、が交互に行われる。演算が、従来の擬似乱数回路を含めた通常のロジックである場合、入力に対して出力は一意に決まるため、レジスタ１の値が決まればレジスタ２の値は決まり、回路中全てのレジスタの値を照合することで、演算部分の検査を行うことができる。しかし、乱数生成回路のように、演算部分にある種のアナログ成分があって、値が確定しないような工夫が成されている場合、前後のレジスタの値を見ても演算が正しく動作しているのか、それともエラーが起きているのかの判別がつかない。
【０００４】
そこで、この種の乱数生成回路を検査するためには、出力のデータを取得して統計検定などの、乱数検定を行わなければならなかった（例えば、特許文献１）。
【特許文献１】特開２００３−１９６０８１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかし、乱数出力の統計検定を実施するためには、乱数生成回路そのもののデータを取得するために、限られた出力ピンを乱数出力のために割り当てなければならず、また、他の回路とは違った独立の作業を必要とするため、回路規模が大きくなるなどの問題があった。
【０００６】
携帯用の機器などにおいて品質の高い乱数を利用するためには、乱数検査はなるべく簡便なものでなければならない。  
従来の簡便な検査方法としては、米国商務省の機関であるNational Institute of Standards and Technologyが発行している、NIST SP 800-22に記載されたCumulative Sums Test (Cu-Sum Test)という方法が知られている。これは、出力が「１」なら検査値をプラス１、「０」ならマイナス１して合計が閾値を越えたところで異常とする、という方法である。この方法は「０」「１」のバランスが悪い場合に効果を発揮するが、例えば、「０００１１１０００１１１・・・」といった、ある周期で同じ値が繰り返すような出力の場合には効果がない。
【０００７】
これを回避するためには、値の繰り返しを検査するための、別のテストが必要になる。例えば、人間が検査する、自己相関関数やフーリエ変換などをおこなう、「０」「１」の連続した数（以下、連とする）を記録して比べる、といったことが挙げられる。しかし、人間が検査する、自己相関関数やフーリエ変換を行うなどといった方法は手間の軽減にはつながらず、また、自己相関関数、フーリエ変換、連を記録する方法では、どの程度の長さのデータに対して行えばよいのかに問題を残す。また、実際に乱数は常時出力されつづけるよりは、６４ビット、１２８ビットといった、決まったビット長で使われることが多いが、こういった場合に対応する汎用性が自己相関関数、フーリエ変換、連の記録、では得られない。
【０００８】
また、もしその検査回路が乱数回路本体に邪魔にならない程度に小型であるならば、検査回路自体を内蔵させて、検査信号だけを出力することでピン数を軽減する、といったことも考えられるが、Cu-Sum Testとこれらの検定を内蔵するには、やはり回路規模が大きくなりすぎてしまう。
【０００９】
以上説明したように、従来の技術によれば、乱数出力の周期性を簡便に検査することは容易ではなかった。
【００１０】
本発明は、かかる課題の認識に基づいてなされたものであり、その目的は、乱数出力の周期性を簡便に検査する乱数検査回路とこれを搭載した乱数生成回路およびこの乱数生成回路を用いた半導体集積装置、ＩＣカードおよび情報機器端末を提供することにある。
【課題を解決するための手段】
【００１１】
本発明では、乱数出力中に「１」「０」の「連」が何種類あるかに着目する。ここで、「連」とは、同じ種類の数が連続する回数を表す。例えば、
００１１０１００１００１０１１００１１１１０１０
という出力の場合には、「１」の連は１、２、４の３種類と考える。また、例えば、
１１００１１００１１００１１００１１００１１００
という出力の場合には、「１」の連は２のみの１種類と考える。「０」「１」の両者とも１種類の場合には、出力に周期性があると考える。
【００１２】
このように、本発明によれば、第１の手段により乱数列中の連をカウントし、第２手段により連の種類を調べる、第３手段により連の種類を用いて乱数列の周期性を検査し異常を判定する。
【００１３】
すなわち、本発明によれば、乱数列中で同じ値が連続する回数を数える第１の手段と、前記第１の手段の出力に基づいて、前記乱数列中で同じ値が連続する回数の種類を調べる第２の手段と、前記第２の手段の出力に基づいて、前記乱数列の判定を実施する第３の手段と、を備えたことを特徴とする乱数検査回路が提供される。
【００１４】
または、本発明によれば、乱数列が入力され、前記乱数列中の「１」もしくは「０」を検知する検知回路と、前記検知回路の出力に基づいて、前記乱数列中の連続する「１」もしくは「０」を保持するシフトレジスタ回路と、前記検知回路の出力に基づいて、前記乱数列中の「１」もしくは「０」が切り替わる際に前記シフトレジスタ回路の内容を保持するレジスタ回路と、前記レジスタ回路の出力に基づいて、前記乱数列中の連の種類を判定する判定回路と、を備えたことを特徴とする乱数検査回路が提供される。
【００１５】
または、本発明によれば、乱数列が入力され、乱数列中の「１」および「０」を検知する検知回路と、前記検知回路の出力に基づいて、前記乱数列中の連続する「１」および「０」をそれぞれ保持するシフトレジスタ回路と、前記検知回路の出力に基づいて、前記乱数列中の「１」および「０」が切り替わる際に前記シフトレジスタ回路の内容を保持するレジスタ回路と、前記レジスタ回路の出力より、前記乱数列中の連の種類を判定する判定回路と、を備えたことを特徴とする乱数検査回路が提供される。
【００１６】
ここで、前記判定回路は、信号選択回路により構成されるものとすることができる。  
または、前記判定回路は、加算回路により構成されるものとすることができる。  
または、前記判定回路は、カウンタ回路により構成されるものとすることができる。
【００１７】
一方、本発明によれば、乱数列を生成する乱数生成部と、前記乱数生成部から出力された乱数列を検査する、上記のいずれかの乱数検査回路と、を備えたことを特徴とする乱数生成回路が提供される。
【００１８】
また、本発明によれば、上記の乱数生成回路を備え、前記乱数生成部から出力される前記乱数列の出力端子と前記乱数生成部から出力される判定信号の出力端子とを内蔵することを特徴とする半導体集積装置が提供される。
【００１９】
また、本発明によれば、上記の半導体集積装置を備えたことを特徴とするＩＣカードが提供される。  
また、本発明によれば、上記の半導体集積装置を備えたことを特徴とする情報端末機器が提供される。
【発明の効果】
【００２０】
本発明によれば、乱数出力の周期性を簡便に検査する回路およびこの乱数検査回路に内蔵する乱数生成回路を実現できる。その結果として、例えばＩＣカードや情報端末機器などに応用してセキュリティーの確実な安価なシステムを実現できる点で産業上のメリットは多大である。  
【発明を実施するための最良の形態】
【００２１】
以下、図面を参照しつつ本発明の実施の形態について説明する。
【００２２】
まず、本発明の基本動作を２４ビットの乱数列
００１１０１００１００１０１１００１１１１０１０
に対して「１」の連を数える場合を例に説明する。
【００２３】
図１は、本発明の乱数検査回路において実施される処理を説明するための模式図である。
【００２４】
すなわち、本発明の乱数検査回路は、シフトレジスタ１０１と、その値を「０」がきた時にラッチするためのレジスタ１０２と、を有する。初期値は、全てのレジスタで「０」とすることができる。
【００２５】
検査回路に乱数列
００１１０１００１００１０１１００１１１１０１０
が下位ビットから順に入力されると、最初は「０」なので、シフトレジスタ１０１の値をレジスタ１０２に移すのだが、シフトレジスタ１０１の値は全て「０」なので、何も変わらない。
【００２６】
次は「１」であるので、シフトレジスタ１０１の先頭に１を与える。
【００２７】
その次は「０」であるので、シフトレジスタ１０１の「１」の値をレジスタ１０２に移し、シフトレジスタ１０１の値は全て「０」とする。レジスタ１０２の先頭に「１」が与えられる。
【００２８】
次は「１」であるので、シフトレジスタ１０１の先頭に「１」を与える。  
【００２９】
乱数出力が「１」である間は、順にシフトレジスタ１０１の「１」をシフトさせていく。
【００３０】
「０」が来たときに、シフトレジスタ１０１の「１」の値をレジスタ１０２に移す。このときに、それより前にレジスタ１０２に格納されていた１はそのままで、新たな「１」の位置のみをレジスタ１０２に加える。シフトレジスタ１０１の値はクリアされる。この段階でレジスタ１０２内には先頭と４段目にそれぞれ「１」が与えられている。
【００３１】
順次、「１」と「０」によってシフトとラッチを繰り返す。シフトレジスタ１０１からレジスタ１０２に値を移すときに、レジスタ１０１の同じ場所に既に「１」が存在した場合は、そのまま値を「１」としておく。
【００３２】
乱数出力終了後レジスタ１０２内の「１」の数を見ると、レジスタ１０２内の「１」の位置は、乱数出力の連の種類に対応している。この場合、レジスタ１０２の1番目、２番目、４番目に「１」が入っているので、乱数の連は１、２、４の３種類であったことがわかる。
【００３３】
以上説明したように、シフトレジスタ１０１とレジスタ１０２を上述の如き使い方をすることで、連の種類が何通りあったのかを判定することができる。連が1種類であった場合、これは乱数としては不自然であるので「異常」と判定できる。もちろん、２種類でも「異常」と判定するなど、目的に応じてより厳しく閾値を設定することもできる。シフトレジスタ１０１やレジスタ１０２の大きさは、出力する乱数列の長さに依存する。乱数列と同じであれば問題ないが、必ずしもそうする必要はない。
【００３４】
図２は、本実施形態の乱数検査回路の構成を例示する模式図である。  
図示しない乱数生成回路から出力された乱数は、シフトレジスタ１０１に入力される。シフトレジスタ１０１は、乱数列の「０」と「１」で定められた動作を行い、値をレジスタ１０２に移す。ある時間経過後、または所望の長さの乱数を出力し終わったところで、判定回路２０１はレジスタ１０２の値を読み、乱数列にエラーがあればエラー信号を出力する。
【００３５】
以下、本発明の実施形態について、上記基本構成を元にさらに詳しく説明する。
【００３６】
図３は、本発明の第１の実施例を説明する模式図である。すなわち、本実施例においては、判定回路としてカウンタ３０１を利用して連の種類判別を行う。  
乱数出力終了後、レジスタ１０２の値をシフトさせて、順次カウンタ３０１に入力し、カウンタの値によって検査信号を出力する。レジスタ１０２をシフトさせる方法としては、例えば、各レジスタの入力にセレクタを用いることで容易に実現できる。また、同一のシフトレジスタを再利用するか、あるいはもう一つのシフトレジスタを用意し、乱数出力終了後に、そのシフトレジスタに値を移すようにしてもよい。
【００３７】
図４は、本発明の第１の実施例の具体例を示す模式図である。  
すなわち、本具体例は、「１」「０」検出回路４０１、シフトレジスタ１０１、転送回路４０２、レジスタ１０２カウンタ３０１より構成される。ここでは「１」の連を数える回路構成となっている。
【００３８】
リセット信号は、回路中のフリップフロップの値やカウンタ３０１の値をクリアするために用いられる。乱数の検査を開始する前に、まず以前の履歴を消去する必要があるからである。「１」「０」検出回路４０１は、乱数列信号の立ち上がりエッジと立ち下がりエッジ、すなわち、「１」の始まりと「０」の始まりとを検出する。  
シフトレジスタ１０１は、６段の例を示しているが、もちろんこれは６段に限るものではない。シフトレジスタ１０１を構成するフリップフロップのＣＥ端子(クロックイネーブル端子)と接続している検査イネーブル信号がオンである間シフトレジスタ１０１が機能し、本検査回路が機能する。  
乱数列が「０」から「１」になると、「１」「０」検出回路４０１から立ち上がり信号がシフトレジスタ１０１に送られ、シフトレジスタ１０１の先頭のフリップフロップに１が書き込まれる。次に、乱数列が「１」から「０」になり、立ち下がり信号が「１」「０」検出回路４０１から送られるまで、書き込まれた１の値がクロックに応じて、シフトレジスタ１０１中の次のフリップフロップに移動していく。立ち下がり信号が検出されると、シフトレジスタ１０１は、その値を転送回路４０２を通じてレジスタ１０２に移動し、シフトレジスタ１０１の値はクリアされ、次の立ち上がり信号が検出されるまで待機する。
【００３９】
転送回路４０２は、レジスタ１０１の値をレジスタ１０２に重ね書きするために設けられており、「１」「０」検出回路４０１の立ち下り信号とシフトレジスタ１０１の出力、および判定モード切り替え信号の反転信号とのＡＮＤ回路で構成される。判定モード切り替え信号がオフの時、立ち下がり信号が検出されるとシフトレジスタ１０１の値はクリアされるが、それには遅延があるため、１を保持するフリップフロップに接続される転送回路４０２は、その遅延時間の間、１を出力する。反転モード切り替え信号はレジスタ１０２のＣＥ端子（クロックイネーブル端子）とも接続しており、このときレジスタ１０２の値は、非同期セット端子と非同期クリア端子の値で決まる。
レジスタ１０２は、「１」「０」検出回路４０１で立ち下がり信号が検出されるタイミングでシフトレジスタ１０１の値を自身に取り込む。判定モード切り替え信号がオンの時、レジスタ１０２はシフトレジスタ１０１とは切り離され、自身がシフトレジスタとして機能し、蓄えていた値を、順次のカウンタ３０１に送る。カウンタ３０１では、レジスタ１０２から送られてくる値が１の時、カウント値をプラス１することでレジスタ１０２内の１の数をカウントする。本具体例においては、６段のシフトレジスタを用いているので、検出できる連の種類は最大で６、すなわち２進数では「１１０」であるので、カウンタの後段に３入力のＡＮＤ回路とインバータを用いて、カウント値がエラーであるかないかを判定している。
【００４０】
カウンタ値が「００１」の時にＡＮＤ回路とインバータの組み合わせは「１」を出力するように構成する。カウンタ値が「００１」であることは、レジスタ１０２に「１」が一つしかなかったことを示しており、すなわち、乱数列において「１」の連の種類が１種類しかなかったことを意味する。最後に出力要求信号がオンの時に、最終的なエラー信号が外に出力される。
【００４１】
これは一例であり、当然同様の機能を持った、多数の変型例が存在する。例えば、フリップフロップはＤ型である必要はないし、カウンタもバイナリ−カウンタである必要もない。立ち下がり信号は「１」「０」検出回路４０１を通さずに、乱数入力の反転信号を利用することもできる。シフトレジスタの大きさが変われば、カウンタ回路の大きさやエラー検出のＡＮＤ回路の入力数なども、当然それに応じて変わる必要がある。シフトレジスタで、もし最後のフリップフロップまで値が送られた場合にエラー信号を出力するならば、その最後のフリップフロップからエラー信号の出力端子をとればよい。その場合レジスタの最終段を使用しないという構成も可能である。
【００４２】
図５は、本発明の第２の実施例を表す模式図である。  
すなわち、本実施例は、判定回路として信号選択回路５０１を利用して連の種類判別を行う例である。
【００４３】
乱数出力終了後、レジスタ１０２の値を選択信号にして信号選択回路５０１用い選択される信号が１つのときのみ、検査信号として異常信号を出力できる。
【００４４】
図６は第２の実施例の具体例を示す模式図である。  
本具体例の乱数検査回路は、「１」「０」検出回路６０１、シフトレジスタ１０１、レジスタ１０２、信号選択回路６０２より構成される。図６の「１」「０」検出回路６０１、シフトレジスタ１０１の構成と機能は図４の場合と同じであるので、説明を省略する。
レジスタ１０２は図４の場合と構成を変えたものを示した。すなわち、シフトレジスタ１０１の出力がレジスタ１０２の入力とＣＥ端子（クロックイネーブル端子）に接続され、「１」「０」検出回路４０１の立ち下がり信号がレジスタ１０２のクロックとして接続される。シフトレジスタ１０１の中の１を保持するフリップフロップに接続されるレジスタのみ動作し、立ち下がり信号のタイミングで１が書き込まれる。
信号選択回路６０２では、それぞれ、最初、２番目、３番目、４番目、５番目、最後のレジスタの値が「１」のときのみ、「１」を出力する６種類のＡＮＤ回路とインバータの組み合わせが並べられている。乱数取得後、このうちのどれかが「１」を出力した場合、それはレジスタ内に「１」は一つしかなかったことを意味しており、すなわち、乱数列中「１」の連の種類が１種類しかなかったことを意味する。最後に出力要求信号がオンの時に、最終的なエラー信号が出力される。
【００４５】
図６に表した具体例に関しても、同様の機能を満たす回路構成は、この回路に限定されない。レジスタ１０２を図４の構成で用いることも可能である。信号選択回路の代わりに比較回路を用いても同様のことができる。
【００４６】
図４のように判定回路にカウンタを利用した場合は、回路数を比較的小さくできるものの、レジスタ１０１をシフトレジスタ１０２に切り替えて、値を順にカウンタに送り込むため、判定までに多少時間を必要とする。高速で動作させたい場合は、直接レジスタの値を判定する、図６の回路構成の方が適している。また、シフトレジスタの段数が少ない場合は、カウンタを用いるより直接読んでしまった方が逆に回路を小さくできるメリットがある。
【００４７】
図７は、本発明の第３の実施例を表す模式図である。  
すなわち、本実施例は、判定回路として加算器７０１を利用して連の種類判別を行う例である。乱数出力終了後、加算器７０１によりレジスタ１０２の値を加算し、その値により検査信号を出力する。異常への閾値となる連の種類を２つ以上とする場合にも対応することができる。
【００４８】
第１乃至第３の実施例はいずれも構成で示した例は、「１」の連のみを検出する方法であったが、同じようにして「０」の連を検出することもできる。  
図８は、本発明の第４の実施例を表す模式図であり、「１」の連と「０」の連とを両方組み合わせて検査する具体例を表す。「１」の連を検査するシフトレジスタ１０１Ａとレジスタ１０２Ａ、「２」の連を検査するシフトレジスタ１０１Ｂとレジスタ１０２Ｂとで構成される。
【００４９】
「１」の連のみの検査でも、その連が１種類しかないということで十分検査可能であるが、図８のように両方組み合わせて検査を行うことで、より詳細な検査が可能である。例えば、
１１０００１１０００１１０００・・・
といった、出力異常を検出することができる。
【００５０】
図９は、本発明の第５の実施例を表す模式図である。すなわち、本実施例はり、図８に表した構成をより簡便にして、「１」と「０」でレジスタ１０２を共有した構成を有する。この場合、「１」と「０」で連の種類が1種類で、なおかつその長さが同じであることを検出できる。たとえば、
１１００１１００１１００１１００・・・
といった出力は、本実施例の乱数検査回路で判定できる。連の種類が２種類の時も異常とするなど、検査の閾値を上げることも、もちろん可能である。この場合、第４の実施例と比べて、「１」「０」どちらの連かの判別はできないが、レジスタの数を少なくすることができる。
【００５１】
図９に表したものとほぼ同様の構成で、シフトレジスタの部分を「１」の場合と「０」の場合で共有することも、もちろん可能である。その場合、最終的にレジスタの値から判定される結果は、図９に表したものと同様である。
【００５２】
図１０は、本発明の第６の実施例の乱数検査回路を説明するための模式図である。  
使用する乱数のビット列が短い場合、連の種類が１種類であっても、必ずしも異常であるとは言えない場合がある。例えば、２４ビットの乱数列を用いる場合において、
０００００００１１１１１１１１１００００００００
という出力が得られたとすると、こういった乱数列も、乱数であるがゆえに起こりうる。この場合にも、図１０のような実施の形態をとることにより、対応が可能となる。
【００５３】
図１０の例における乱数出力のように、ある長さの乱数列において、その内の多くの割合を一つの連で占める場合には、最終的に検出される連の種類は、問題の無い乱数回路においても１種類になることがある。このことを考慮に入れる場合は、乱数出力後レジスタ内の値を調べる際に、あるレベルから上位ビットの値を無視すればよい。
【００５４】
これは、読み出し方法として例えば、第１の実施例では、その上位ビットをシフトレジスタにする部分から外せばよく、第２乃至第３の実施例では、次の回路への値の受け渡しを行わなければよい。
【００５５】
図１１は、本発明の第７の実施例の乱数検査回路を説明するための模式図である。
【００５６】
連が長すぎても、問題になる場合がある。例えば、ある乱数列を得たときに、その値がほとんど「１」であるといった、「０」「１」のバランスが著しく損なわれている異常を考える。この場合は、従来技術のCu-Sum Testで判別が可能であるが、本発明においても図９の実施の形態を用いることで、検査することができる。
【００５７】
図１１では、シフトレジスタの長さにより、許される連の長さが規定される。連が長すぎてシフトレジスタの最上位ビットまで到達した場合は、そこで検査信号を出力することで判定を行う。この場合、レジスタは使用されない。
【００５８】
図１２は、本発明の乱数検査回路を乱数生成部と組み合わせて、乱数の自己検査を実行可能とした乱数生成回路を表す模式図である。
【００５９】
乱数生成部１２０１で生成された乱数列を出力端子１２０２、および検査回路１２０３の入力に接続する。検査回路１２０３でエラーが検出された場合、エラー信号もエラー信号出力端子１２０４に出力される。
【００６０】
このように乱数検査回路１２０３を乱数生成回路１２０１に内蔵することで、乱数回路の異常を検査信号という形で出力することができ、検査にかける手間を大幅に縮小することができる。
【００６１】
乱数生成器の一例としては、図１３に示すように、周波数の異なるクロックや正弦波、三角波などを組み合わせて、そこに何らかのノイズ成分を加味することで、出力をランダムにするという方法がある（R. C. Fairfield et al., in Proc. CRYPTO’84, pp. 203 - 230, (1984). ）。この乱数生成方法では、ノイズ成分を加味する部分に何らかのエラーが発生すると、出力はある周期をもった「０」と「１」の繰り返しになることが予想される。そういった場合、本回路を用いることでエラーを簡便に検出することが可能になる。
【００６２】
本検査回路は、「０」と「１」の繰り返しを検査するだけではなく、「０」や「１」が連続して出てしまうといった、デジタル回路中でしばしば見かけられるエラーを検出することができる。また、最終の乱数出力に対して適用できるため、値をデジタルデータとして取り出す、全ての乱数生成回路に適用できる。例えば、熱雑音を増幅しＡ／Ｄ変換する乱数生成回路や、原子核崩壊を利用した乱数生成回路、量子力学的な不確定性を利用した乱数生成回路、揺らいだ矩形波の周期揺らぎを利用する乱数生成回路、そしてある算術から計算される擬似乱数生成回路など、従来知られている乱数生成回路で、回路にエラーがあった場合には、本回路によって、完全ではないが簡便にエラーを検出することができる。
【００６３】
図１４は、本発明の乱数生成回路１４０１を具備した半導体集積装置の要部構成を表す模式図である。この半導体集積装置２０００は、例えばＩＣカードなどに搭載することができるＩＣであり、演算部（ＭＰＵ）、メモリ（ＲＡＭ，ＲＯＭ，ＥＥＰＲＯＭ）、補助演算部（Co-processor）、乱数生成回路１４０１を有する。ここで、補助演算部（Co-processor）は、暗号処理を実行する役割を有する。
【００６４】
乱数生成回路１４０１は、図１２に例示した乱数生成器と、検査回路を含んでいる。そして、乱数生成回路１４０１は、回路内部にエラーが起きた場合にエラー信号を出力できる。この検査回路つき乱数生成回路を使用することで、演算部（ＭＰＵ）や暗号処理を行う補助円残部（Co-processor）の使う乱数が常に高品質の乱数であることが保証される。また、高品質な乱数を提供することができるので、暗号鍵をＩＣの消費電流信号から読み出すハッキング技術に対する対策として、乱数を使って消費電流の変化を撹乱させることにも使え、高度な暗号セキュリティが実現可能となる。
【００６５】
図１５は、本発明の半導体集積装置２０００の回路規模を説明するための概念図である。すなわち、本発明の乱数検査回路１４０１は、全てＣＭＯＳ論理回路のみで構成できる。しかも論理ゲートの数は、わずか数１００程度で済むので、各種のＩＣに搭載可能である。その回路規模は、図１５に例示した程度あるいはそれ以下であり、ＩＣ２０００の全体サイズを大幅に増大させるという問題も生じない。
【００６６】
例えば、本発明の半導体集積装置１６０１は、図１６に例示するようにインターネットや無線通信のサーバ３０００に搭載して、暗号処理などにその乱数を使用することができる。乱数生成回路から生成された乱数は、検査回路によって高品質であることが保証されているため、高度な暗号セキュリティを実現することができる。
【００６７】
その他にも、本発明の半導体集積装置１７０１は、図１７に例示するように計算機４０００やＤＶＤ機器やゲーム機器５０００などに搭載することができる。これにより、暗号処理のみならず、乱数生成回路を利用して、モンテカルロシミュレーションのような計算処理やゲーム機能に、乱数を使用することができる。
【００６８】
また、本回路は回路サイズが小さいことから、ＩＣカードや携帯電話などのモバイル機器にも搭載可能である。
【００６９】
図１８は、本発明の半導体集積回路１８０２を搭載したＩＣカード及び情報端末機器を表す模式図である。すわなち、同図において１８０１は、本具体例のＩＣカードまたは情報端末機器を表す。ＩＣカードとしては、例えば、銀行の預金カードや各種のプリペイドカード、企業などにおける社員証、入門セキュリティカードなどを挙げることができる。また、情報端末機器としては、例えば、携帯電話や、その他の携帯型端末を挙げることができる。このような携帯型端末は、例えば、ワードプロセッサ、表計算、スケジューラ、ゲーム、電子メールの送受信、静止画や動画の撮影、などの各種の機能のうちのいずれかを備えたものを挙げることができる。
【００７０】
例えば、図１９に示す携帯電話１９０１においても、本発明の半導体集積装置１９０２を搭載することができる。またこれと類似した携帯型情報端末においても同様である。
【００７１】
以上、具体例を例示しつつ本発明の実施の形態について説明した。しかし、本発明は、これらの具体例に限定されるものではない。  
例えば、本発明において用いるシフトレジスタ、レジスタ、判定回路、信号選択回路、加算器、乱数生成回路などの具体的な構成に関しては、上記の具体例に限定されず、その機能あるいは作用が同様な全ての回路に置換したものも本発明の範囲に包含される。また、ここではシフトレジスタ、レジスタ内で１の値を動かすことにより、乱数の検査を行う方法を例示したが、同様に０を動かすことによる構成も可能である。
【００７２】
例えば、出力が不確定なフリップフロップを複数個、並列もしくは直列に並べた論理回路を乱数生成回路として用いることもできる。
【００７３】
また、本発明において用いるフリップフロップとしては、具体例に表したＤ型フリップフロップに限定されず、その他の各種の形式のフリップフロップを用いることができる。
【００７４】
また、本発明の乱数生成回路によって作られたデジタル乱数は、そのまま使用することもできるが、これを算術による乱数回路のシードとして用いることにより、新たな乱数を生成することもできる。
【図面の簡単な説明】
【００７５】
【図１】本発明の基本構成を示す図である。
【図２】本発明の検査回路の構成を示す図である。
【図３】本発明の第１の実施例の構成を示す図である。
【図４】本発明の第１の実施例の具体例を示す模式図である。
【図５】本発明の第２の実施例の構成を示す図である。
【図６】本発明の第２の実施例の具体例を示す模式図である。
【図７】本発明の第３の実施例の構成を示す図である。
【図８】本発明の第４の実施例の構成を示す図である。
【図９】本発明の第５の実施例の構成を示す図である。
【図１０】本発明の第６の実施例の構成を示す図である。
【図１１】本発明の第７の実施例の構成を示す図である。
【図１２】本発明の検査回路を乱数生成回路と組み合わせ、乱数の自己検査を行うときの構成図である。
【図１３】周波数の異なるクロックを用いた乱数生成方法を示すブロック図である。
【図１４】乱数生成回路を具備した半導体集積装置の要部構成を示す図である。
【図１５】本発明の半導体集積装置の回路規模を説明するための概念図である。
【図１６】本発明の半導体集積装置をインターネットや無線通信のサーバに搭載した場合のイメージ図である。
【図１７】本発明の半導体集積装置を計算機やＤＶＤ端末やゲーム機器に搭載した場合のイメージ図である。
【図１８】本発明のＩＣカードおよび情報端末機器を示す図である。
【図１９】本発明の半導体集積回路を携帯電話に搭載した場合のイメージ図である。
【図２０】回路中での信号伝達の様子を示した図である。
【符号の説明】
【００７６】
１０１、１０１Ａ、１０１Ｂ    シフトレジスタ
１０２、１０２Ａ、１０２Ｂ    レジスタ
４０１、６０１    「１」「０」検出回路
４０２    転送回路
６０２    信号選択回路
１２０１、１４０１    乱数生成回路
１２０２    乱数出力端子
１２０３    検査回路
１２０４    エラー信号出力端子
１８０１    ＩＣカードまたは情報端末機器
１６０１、１７０１、１８０２、１９０２    本発明の半導体集積回路
１９０１    携帯電話
【図１】
2005249969.tif 000003
【図２】
2005249969.tif 000004
【図３】
2005249969.tif 000005
【図４】
2005249969.tif 000006
【図５】
2005249969.tif 000007
【図６】
2005249969.tif 000008
【図７】
2005249969.tif 000009
【図８】
2005249969.tif 000010
【図９】
2005249969.tif 000011
【図１０】
2005249969.tif 000012
【図１１】
2005249969.tif 000013
【図１２】
2005249969.tif 000014
【図１３】
2005249969.tif 000015
【図１４】
2005249969.tif 000016
【図１５】
2005249969.tif 000017
【図１６】
2005249969.tif 000018
【図１７】
2005249969.tif 000019
【図１８】
2005249969.tif 000020
【図１９】
2005249969.tif 000021
【図２０】
2005249969.tif 000022