(57)【要約】【課題】セキュリティーなどの用途に用いる物理乱数発生装置において、単体での乱数利用効率を高め、複数の物理乱数ＩＣを組み上げて乱数を高速に発生させ、乱数の質を容易に確認できるようにする。【解決手段】物理乱数発生器１を有する物理乱数発生装置であって、物理乱数発生器１が、基準クロック信号に応じてシリアル乱数を生成するシリアル物理乱数発生器２を備える。シリアル乱数をパラレル乱数に変換するシフトレジスター４を備え、パラレル乱数を保持しうる複数個のレジスター５を備える。パラレル乱数が生成される度にレジスター５に順次パラレル乱数を保持し、かつ、読出しクロック信号に応じてレジスター５からパラレル乱数を読み出して出力するとともに、読み出しの終了したレジスター５に他のレジスター５からパラレル乱数をシフトさせて内容を逐次更新する制御回路６を備える。【選択図】      図２
2004310314.tif 000002
【特許請求の範囲】
【請求項１】
物理乱数発生器を有する物理乱数発生装置であって、
前記物理乱数発生器が、
基準クロック信号に応じてシリアル乱数を生成するシリアル物理乱数発生器を備え、
シリアル乱数をパラレル乱数に変換するシリアル／パラレル変換部を備え、
パラレル乱数を保持しうる複数個のレジスターを備え、
前記シリアル／パラレル変換部によってパラレル乱数が生成される度に前記レジスターに順次パラレル乱数を保持し、かつ、読出しクロック信号に応じて前記レジスターからパラレル乱数を読み出して出力するとともに、読み出しの終了したレジスターに他のレジスターからパラレル乱数をシフトさせて内容を逐次更新する制御回路を備えたことを特徴とする物理乱数発生装置。
【請求項２】
前記物理乱数発生器が、
複数個のレジスターのうちパラレル乱数を保持すべきレジスターを決めて書き込みアドレスを出力するアップ／ダウンカウンターを備え、
前記アップ／ダウンカウンターが出力した書き込みアドレスに基づき、パラレル乱数を保持すべきレジスターを選択してロード信号を出力するセレクターを備え、
前記セレクターからのロード信号に基づいて前記シリアル／パラレル変換部内のパラレル乱数を前記レジスターのうち後段のレジスターから前段のレジスターへ順次保持し、かつ、読出しクロック信号に応じて前記レジスターのうち最後段からパラレル乱数を読み出して出力するとともに、このレジスターより前段にある各レジスター内のパラレル乱数を後段へ順次シフトする制御回路を備えたことを特徴とする請求項１に記載の物理乱数発生装置。
【請求項３】
前記物理乱数発生器が、
前記シリアル物理乱数発生器が生成したシリアル乱数の総数をカウントする総数カウンターを備え、
前記総数カウンターがカウントしたシリアル乱数の総数が所定のビット数に達したとき、これらのシリアル乱数に基づいてその一様性を検証する乱数検証回路を備えたことを特徴とする請求項１または請求項２に記載の物理乱数発生装置。
【請求項４】
前記乱数検証回路の乱数検証方法として、
乱数値“０”または“１”の出現度数をカウントし、これを規定値と比較することによって乱数の一様性を検証する乱数検証方法を採用したことを特徴とする請求項３に記載の物理乱数発生装置。
【請求項５】
前記乱数検証回路の乱数検証方法として、
４ビットで一つの乱数値とし、各々の乱数値の出現度数に基づいて算出されたχ二乗値を規定値と比較することによって乱数の一様性を検証する乱数検証方法を採用したことを特徴とする請求項３に記載の物理乱数発生装置。
【請求項６】
前記乱数検証回路の乱数検証方法として、
連の長さ別にその出現度数をカウントし、これらを規定値と比較することによって乱数の一様性を検証する乱数検証方法を採用したことを特徴とする請求項３に記載の物理乱数発生装置。
【請求項７】
前記乱数検証回路の乱数検証方法として、
所定ビット数の乱数中に出現した最長の連の長さを規定値と比較することによって乱数の一様性を検証する乱数検証方法を採用したことを特徴とする請求項３に記載の物理乱数発生装置。
【請求項８】
チップセレクトと出力イネーブル機能とそれに対応した端子を備え、出力部のバッファー機能を３ステートとしたことを特徴とする請求項１から請求項７までのいずれかに記載の物理乱数発生装置。
【請求項９】
前記物理乱数発生器を複数個用意し、セレクターのセレクト信号に基づき、前記物理乱数発生器の中から一つを選択して乱数または乱数検証データを出力するようにしたことを特徴とする請求項１から請求項８までのいずれかに記載の物理乱数発生装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、各種の用途に用いるに好適な物理乱数発生装置に関するものであり、その具体的な用途としては、セキュリティー、暗号、認証、施錠、暗号化通信、スマートカード（例えば、電子マネー、クレジットカード、診察券）、ホームセキュリティー、カーセキュリティー、キーレスエントリー、確率、抽選、ゲーム、アミューズメント（例えば、パチンコ、パチスロ）、シミュレーション（例えば、気象・学術計算・株価におけるモンテカルロ）、グラフィックス（例えば、ＣＧ、自動作曲）、制御、計測、ＦＡ、ロボット制御（人工知能）などが挙げられる。
【０００２】
【従来の技術】
従来この種の物理乱数発生装置としては、半導体内で発生するノイズを用いたものが多く、パソコンに外部から接続して使用するよう構成される規模の大きなものや、ＩＣチップ単体で乱数を発生させるものがあった。また、アミューズメント用には、時間的にランダムであると見なせる信号が発生した時に、備えられた高速カウンターの値を参照し、それを乱数として用いるものがあった。
【０００３】
【発明が解決しようとする課題】
一般に物理乱数発生器は高速に乱数を発生することは難しく、時としてその乱数発生速度以上の大量の乱数が必要となる事が起こる。そのため、記憶媒体を設けて乱数を貯めておいたり、複数の物理乱数発生装置を用いで乱数の発生量を増やしたりすることが考えられるが、これを実現するためには複雑な回路を利用者側で組む必要が生じる。
【０００４】
また、一般に物理乱数は使用環境によって乱数の質が変化する可能性があり、利用者がこれら物理乱数発生装置の発生した乱数が真正乱数として使用することができるか否かを確認することは有益なことである。しかしながら、乱数の検定を行うには専用の測定装置を構築しなければならず、一般の物理乱数発生装置利用者にとっては、このような余計なコストと手間がかかるような作業は受け入れ難い。また、乱数検定は大量のデータを扱うので、それを貯めておく記憶装置は大容量のものが必要となるとともに、検定のための計算処理にも時間がかかる。
【０００５】
本発明は、このような事情に鑑み、物理乱数発生装置単体での乱数利用効率が高く、かつ複数の物理乱数ＩＣを組み上げて乱数を高速に発生させることが容易であり、さらに、乱数の質を容易に確認して使用することが可能な物理乱数発生装置を提供することを目的とする。
【０００６】
【課題を解決するための手段】
まず、本発明のうち請求項１に係る発明は、物理乱数発生器を有する物理乱数発生装置であって、前記物理乱数発生器が、基準クロック信号に応じてシリアル乱数を生成するシリアル物理乱数発生器を備え、シリアル乱数をパラレル乱数に変換するシリアル／パラレル変換部を備え、パラレル乱数を保持しうる複数個のレジスターを備え、前記シリアル／パラレル変換部によってパラレル乱数が生成される度に前記レジスターに順次パラレル乱数を保持し、かつ、読出しクロック信号に応じて前記レジスターからパラレル乱数を読み出して出力するとともに、読み出しの終了したレジスターに他のレジスターからパラレル乱数をシフトさせて内容を逐次更新する制御回路を備えて構成される。ここで、読出しクロックは基準クロックとは別に入力されるものである。
【０００７】
また、本発明のうち請求項２に係る発明は、前記物理乱数発生器が、複数個のレジスターのうちパラレル乱数を保持すべきレジスターを決めて書き込みアドレスを出力するアップ／ダウンカウンターを備え、前記アップ／ダウンカウンターが出力した書き込みアドレスに基づき、パラレル乱数を保持すべきレジスターを選択してロード信号を出力するセレクターを備え、前記セレクターからのロード信号に基づいて前記シリアル／パラレル変換部内のパラレル乱数を前記レジスターのうち後段のレジスターから前段のレジスターへ順次保持し、かつ、読出しクロック信号に応じて前記レジスターのうち最後段からパラレル乱数を読み出して出力するとともに、このレジスターより前段にある各レジスター内のパラレル乱数を後段へ順次シフトする制御回路を備えて構成される。
【０００８】
また、本発明のうち請求項３に係る発明は、前記物理乱数発生器が、前記シリアル物理乱数発生器が生成したシリアル乱数の総数をカウントする総数カウンターを備え、前記総数カウンターがカウントしたシリアル乱数の総数が所定のビット数に達したとき、これらのシリアル乱数に基づいてその一様性を検証する乱数検証回路を備えて構成される。
【０００９】
また、本発明のうち請求項４に係る発明は、前記乱数検証回路の乱数検証方法として、乱数値“０”または“１”の出現度数をカウントし、これを規定値と比較することによって乱数の一様性を検証する乱数検証方法を採用して構成される。
【００１０】
また、本発明のうち請求項５に係る発明は、前記乱数検証回路の乱数検証方法として、４ビットで一つの乱数値とし、各々の乱数値の出現度数に基づいて算出されたχ二乗値を規定値と比較することによって乱数の一様性を検証する乱数検証方法を採用して構成される。
【００１１】
また、本発明のうち請求項６に係る発明は、前記乱数検証回路の乱数検証方法として、連の長さ別にその出現度数をカウントし、これらを規定値と比較することによって乱数の一様性を検証する乱数検証方法を採用して構成される。
【００１２】
また、本発明のうち請求項７に係る発明は、前記乱数検証回路の乱数検証方法として、所定ビット数の乱数中に出現した最長の連の長さを規定値と比較することによって乱数の一様性を検証する乱数検証方法を採用して構成される。
【００１３】
また、本発明のうち請求項８に係る発明は、チップセレクトと出力イネーブル機能とそれに対応した端子を備え、出力部のバッファー機能を３ステートとして構成される。
【００１４】
さらに、本発明のうち請求項９に係る発明は、前記物理乱数発生器を複数個用意し、セレクターのセレクト信号に基づき、前記物理乱数発生器の中から一つを選択して乱数または乱数検証データを出力するようにして構成される。
【００１５】
【発明の実施の形態】
以下、本発明の実施形態を図面に基づいて説明する。
図１は本発明に係る物理乱数発生装置の第１の実施形態を示す回路図、
図２は図１に示す物理乱数発生装置の物理乱数発生器の詳細を示す回路図、
図３は図２に示す物理乱数発生器の各部の出力波形を示す波形図、
図４は図２に示す物理乱数発生器の各部の出力波形を示す波形図、
図５は図１に示す物理乱数発生装置の乱数検証回路のＭｏｎｏｂｉｔＴｅｓｔに関する部分の回路図、
図６は図１に示す物理乱数発生装置の乱数検証回路のＰｏｋｅｒＴｅｓｔに関する部分の回路図、
図７は図１に示す物理乱数発生装置の乱数検証回路のＲｕｎｓＴｅｓｔに関する部分の回路図、
図８は図１に示す物理乱数発生装置の乱数検証回路のＲｕｎｓＴｅｓｔに関する部分の回路図、
図９は図１に示す物理乱数発生装置の乱数検証回路のＬｏｎｇＲｕｎｓＴｅｓｔに関する部分の回路図である。
【００１６】
この物理乱数発生装置９１は、図１に示すように、物理乱数発生器１、乱数検証回路２１、制御回路９４、カウンター９５、第１セレクター９６、第２セレクター９７から構成されており、物理乱数発生器１は、図２に示すように、シリアル物理乱数発生器２、カウンター３、シフトレジスター４、複数個（図２ではｍ個）のレジスター５、制御回路６、アップ／ダウンカウンター７、セレクター８、基準クロック側の２個の遅延回路９および読出しクロック側の２個の遅延回路１０から構成されている。
【００１７】
他方、乱数検証回路２１は、図５から図９までに示すように、乱数検定規格ＦＩＰＳ１４０−２に準拠した４種類の検定方法（ＭｏｎｏｂｉｔＴｅｓｔ、ＰｏｋｅｒＴｅｓｔ、ＲｕｎｓＴｅｓｔおよびＬｏｎｇＲｕｎｓＴｅｓｔ）に対応する部分から構成されている。すなわち、ＭｏｎｏｂｉｔＴｅｓｔに関する部分は、図５に示すように、第１カウンター２３、第２カウンター２４、レジスター２５、制御回路２６および比較器２７から構成されており、ＰｏｋｅｒＴｅｓｔに関する部分は、図６に示すように、第１カウンター３３、シフトレジスター３４、デコーダー３５、複数個（図６では１６個）のカウンター３６、制御回路３７、セレクター３８、掛算器３９、加算器４０、レジスター４１および比較器４２から構成されている。また、ＲｕｎｓＴｅｓｔに関する部分はさらに乱数出力が“１”の場合と乱数出力が“０”の場合とに二分され、前者は、図７に示すように、第１カウンター５３、比較器５４、データ保持器５５、第２カウンター５６、制御回路５７、デコーダー５８、６個のカウンター５９および６個の比較器６０から構成されており、後者は、図８に示すように、物理乱数発生器１のシリアル物理乱数発生器２からデコーダー５８への出力線上にインバータが設けられて出力が反転する点を除き、前者と同じ構成を有している。さらに、ＬｏｎｇＲｕｎｓＴｅｓｔに関する部分は、図９に示すように、第１カウンター７３、比較器７４、データ保持器７５、制御回路７６、第２カウンター７７、第１比較器７８、レジスター７９および第２比較器８０から構成されている。
【００１８】
物理乱数発生装置９１は以上のような構成を有するので、この物理乱数発生装置９１を作動させると、まず物理乱数発生器１で、シリアル乱数が出力されるとともに、パラレル乱数が保持されて必要に応じて出力できる状態となる。
【００１９】
すなわち、基準クロック（ＣＬＫ＿０）でシリアル物理乱数発生器２より生成されたシリアル乱数（ＳＲＮＤ）をカウンター３のキャリーアウト（ＣＯ）に同期して、シフトレジスター４でシリアルからパラレルに変換したｎビットの乱数（ＣＲＮＤ）をセレクター８で選択されたレジスター５にロードしてパラレル乱数を保持する。
【００２０】
このとき、セレクター８はアップ／ダウンカウンター７の出力の書込みアドレス（ＡＤＤＲＥＳＳ）で指定されたレジスター５を選択し、カウンター３のキャリーアウト（ＣＯ）に同期してパラレル乱数（ＣＲＮＤ）をレジスター５にロードし、ロードごとにアップ／ダウンカウンター７をカウントアップし、アップ／ダウンカウンター７の出力の書込みアドレス（ＡＤＤＲＥＳＳ）がｍになった時点で、アップ／ダウンカウンター７はカウントアップとパラレル乱数のロードを中止し、以降その状態を維持する。
【００２１】
パラレル乱数の出力（ＰＲＮＤ）は最下位のレジスター５の出力とし、読み出し後に読出しクロック（ＣＬＫ＿Ｒ）を入力し、読出しクロックにてアップ／ダウンカウンター７のカウントダウンとすべてのレジスター５内のデータを上位から下位へシフトし、パラレル乱数（ＰＲＮＤ）はその都度更新される。アップ／ダウンカウンター７の出力の書込みアドレス（ＡＤＤＲＥＳＳ）がゼロになった時点で、アップ／ダウンカウンター７はカウントダウンとデータシフトを中止し、以降その状態を維持する。
【００２２】
アップ／ダウンカウンター７の出力の書込みアドレス（ＡＤＤＲＥＳＳ）は外部に出力され、すべてのレジスター５に保持されているパラレル乱数の数を逐次モニター可能とする。
【００２３】
遅延回路９、１０は各クロックのエッジ（例えば、立上りエッジ）を取り出し、非常に短いパルス波形（例えば、１０ｎｓ）を生成し、アップ／ダウンカウンター７とすべてのレジスター５のクロック信号（ＣＬＯＣＫ）、アップ／ダウンカウンター７のＥＮＡＢＬＥ信号、すべてのレジスター５のＳＨＩＦＴ信号とＬＯＡＤ（０）〜ＬＯＡＤ（ｍ−１）を生成する。これにより、基準クロック（ＣＬＫ＿０）と読出しクロック（ＣＬＫ＿Ｒ）が非同期または同期式で動作するときに、基準クロック（ＣＬＫ＿０）のエッジ（例えば、立上りエッジ）に対する読出しクロック（ＣＬＫ＿Ｒ）のエッジ（例えば、立上りエッジ）の禁止域（ｔｄ＿Ｒａ＋ｔｄ＿０ａ＋２×ｔｄ＿ｍｇ）を非常に小さくして基準クロック（ＣＬＫ＿０）と読出しクロック（ＣＬＫ＿Ｒ）との干渉を最小限とすることができる。なお、ＣＬＫ＿０ｂとＣＬＫ＿Ｒｂがクロック信号（ＣＬＯＣＫ）を生成し、ＣＬＫ＿０ａとＣＬＫ＿ＲａがＥＮＡＢＬＥ信号、ＳＨＩＦＴ信号とＬＯＡＤ（０）〜ＬＯＡＤ（ｍ−１）を生成する。
【００２４】
制御回路６はカウンター３のキャリーアウト（ＣＯ）の同期信号（ＳＹＮＣ）、ＣＬＫ＿０ａ、ＣＬＫ＿Ｒａ、アップ／ダウンカウンター７のＯＶＥＲ信号とＺＥＲＯ信号より、アップ／ダウンカウンター７のＵＰ／ＤＯＷＮ信号とＥＮＡＢＬＥ信号、すべてのレジスター５のＳＨＩＦＴ信号とＬＯＡＤ（０）〜ＬＯＡＤ（ｍ−１）用のＬＯＡＤ信号を生成する。
【００２５】
こうすることにより、基準クロックに同期してシリアル物理乱数発生器２で生成されたシリアル乱数よりｎ倍の周期で最大ｍ個のｎビットのパラレル乱数を保持することができる。それ以降のシリアル乱数は読み出し操作（ＣＬＫ＿Ｒの入力）をするまでは保持されない。こうして保持された最大ｍ個のパラレル乱数は読出しクロックで必要なときに必要な量（最大ｍ個）を短時間に集中して読み出すことができ、読み出された量のパラレル乱数は逐次補充される。基準クロック（ＣＬＫ＿０）のエッジに対する読出しクロックのエッジの禁止域が非常に狭く、非同期または同期式でタイミングよく、かつ効率的に読み出すことができる。書込みアドレスを読み出すことで、その時点で保持されたパラレル乱数の量を確認することが可能となり、乱数を効率的に活用することができる。
【００２６】
ところで、こうしてシリアル物理乱数発生器２で生成されたシリアル乱数は、乱数検定規格ＦＩＰＳ１４０−２に準拠した４種類の検定方法（ＭｏｎｏｂｉｔＴｅｓｔ、ＰｏｋｅｒＴｅｓｔ、ＲｕｎｓＴｅｓｔおよびＬｏｎｇＲｕｎｓＴｅｓｔ）でその一様性が検証される。
【００２７】
まず、ＭｏｎｏｂｉｔＴｅｓｔによる検証が行われる。すなわち、図５に示すように、第１カウンター２３はスタート信号（ＳＴＡＲＴ）と基準クロック（ＣＬＫ＿０）より制御回路２６を介して生成された信号ＳＴＡＲＴ＿Ｃでカウントを開始し、２０，０００カウント時に信号ＯＵＴ＿Ｃを出力する。第２カウンター２４は制御回路２６の出力信号ＣＬＲ＿Ｃ２でスタート信号（ＳＴＡＲＴ）が入った時点に初期化を行い、シリアル乱数（ＳＲＮＤ）の“１”または“０”をカウントする。レジスター２５は制御回路２６の出力信号ＬＯＡＤ＿Ｒでスタート信号（ＳＴＡＲＴ）が入った時点より２０，０００クロック時の第２カウンター２４のカウント値をロードして保持し、ＭｏｎｏｂｉｔＤａｔａ（ＭＯＮＤ）を出力する。比較器２７はレジスター２５の出力ＭｏｎｏｂｉｔＤａｔａ（ＭＯＮＤ）と上限比較データ（例えば、１０，２７５ｂｉｔ）および下限比較データ（例えば、９，７２５ｂｉｔ）とを比較し、ＭｏｎｏｂｉｔＪｕｄｇｅ（ＭＯＮＪ）信号を出力する。これにより、基準クロックに同期して生成されたシリアル乱数について、スタート信号から２０，０００クロック後にＭｏｎｏｂｉｔＤａｔａとＭｏｎｏｂｉｔＪｕｄｇｅを検証することができる。
【００２８】
次に、ＰｏｋｅｒＴｅｓｔによる検証が行われる。すなわち、図６に示すように、第１カウンター３３はスタート信号（ＳＴＡＲＴ）と基準クロック（ＣＬＫ＿０）より制御回路３７を介して生成された信号ＳＴＡＲＴ＿Ｃでカウントを開始し、２０，０００カウント時に信号ＯＵＴ＿Ｃを出力する。シフトレジスター３４はシリアル乱数（ＳＲＮＤ）を基準クロック（ＣＬＫ＿０）にて逐次４ビットのパラレル乱数（ＰＲＮＤ＿４Ｂ）に変換する。デコーダー３５は、スタート信号（ＳＴＡＲＴ）と基準クロック（ＣＬＫ＿０）より制御回路３７を介して生成されたＥＮＡＢＬＥ信号がアクティブのとき（４クロックごとに１回）にパラレル乱数（ＰＲＮＤ＿４Ｂ）で指定された出力部（ＳＥ＿０〜ＳＥ＿１５）に出力される。カウンター３６は制御回路３７の出力信号ＣＬＲ＿ＣＲでスタート信号（ＳＴＡＲＴ）が入った時点に初期化を行い、ＥＮＡＢＬＥ信号がアクティブのとき（４クロックごとに１回）にパラレル乱数（ＰＲＮＤ＿４Ｂ）のデータにてデコーダー３５で指定されたカウンター３６をカウントアップする。すべてのカウンター３６の総計は５，０００カウントとなり、基準クロックに同期して生成されたシリアル乱数について、スタート信号から２０，０００クロック後にその間の４ビットごとのパラレル乱数（ＰＲＮＤ＿４Ｂ）のデータ（０〜１５）の度数分布データ（ＰｏｋｅｒＤａｔａ０〜ＰｏｋｅｒＤａｔａ１５）を取得する。レジスター４１は、制御回路３７の出力信号ＣＬＲ＿ＣＲでスタート信号（ＳＴＡＲＴ）が入った時点に初期化（ＰＯＫＤ＝０）を行い、度数分布データ（ＰｏｋｅｒＤａｔａ０〜ＰｏｋｅｒＤａｔａ１５）を取得した後、セレクター３８、掛算器３９、加算器４０を介して度数分布データ（ＰｏｋｅｒＤａｔａ０〜ＰｏｋｅｒＤａｔａ１５）の１６個の二乗和を求めることでＰｏｋｅｒＤａｔａ（ＰＯＫＤ）を取得する。比較器４２はレジスター４１の出力ＰｏｋｅｒＤａｔａ（ＰＯＫＤ）と上限比較データ（例えば、１，５７６，９２８）および下限比較データ（例えば、１，５６３，１７５）とを比較し、ＰｏｋｅｒＪｕｄｇｅ（ＰＯＫＪ）信号を出力する。これにより、基準クロックに同期して生成されたシリアル乱数について、スタート信号から２０，０００＋１６クロック後にＰｏｋｅｒＤａｔａとＰｏｋｅｒＪｕｄｇｅを検証することができる。
【００２９】
次いで、ＲｕｎｓＴｅｓｔによる検証が行われる。すなわち、図７および図８に示すように、第１カウンター５３はスタート信号（ＳＴＡＲＴ）と基準クロック（ＣＬＫ＿０）より制御回路５７を介して生成された信号ＳＴＡＲＴ＿Ｃでカウントを開始し、２０，０００カウント時に信号ＯＵＴ＿Ｃを出力する。データ保持器５５はシリアル乱数（ＳＲＮＤ）を基準クロック（ＣＬＫ＿０）にて逐次１ビット保持し、比較器５４はシリアル乱数（ＳＲＮＤ）とデータ保持器５５で保持された乱数を比較し、１クロック前の乱数と今回の乱数が変化したときに信号ＣＨＡＮＧＥを出力する。第２カウンター５６は、信号ＣＨＡＮＧＥが出力されてから次の出力がされるまでのクロックをカウントし、信号ＲＵＮＳ＿Ｄを出力する。信号ＲＵＮＳ＿Ｄと同一信号の長さ（Ｌ）の関係はＬ＝ＲＵＮＳ＿Ｄ＋１となる。第２カウンター５６は、制御回路５７の出力信号ＣＬＲ＿ＣＣでスタート信号（ＳＴＡＲＴ）が入ったときと信号ＣＨＡＮＧＥが出力されたときに初期化（ＲＵＮＳ＿Ｄ＝０）を行う。デコーダー５８は、スタート信号（ＳＴＡＲＴ）、基準クロック（ＣＬＫ＿０）、第１カウンター５３の出力（ＯＵＴ＿Ｃ）と比較器５４の出力（ＣＨＡＮＧＥ）より制御回路５７を介して生成されたＥＮＡＢＬＥ信号がアクティブ（ＣＨＡＮＧＥがアクティブ）のときで、図７ではシリアル乱数（ＳＲＮＤ）が“１”のとき、図８ではシリアル乱数（ＳＲＮＤ）が“０”のとき、第２カウンター５６の出力（ＲＵＮＳ＿Ｄ）で選択された出力（ＳＥ＿１〜ＳＥ＿６＋）をアクティブにする。なお、Ｌ＝１→ＳＥ＿１、Ｌ＝２→ＳＥ＿２、…、Ｌ＝６＋→ＳＥ＿６＋となる。すべてのカウンター５９は、制御回路５７の出力信号ＣＬＲ＿Ｃでスタート信号（ＳＴＡＲＴ）が入った時点に初期化を行い、デコーダー５８の出力（ＳＥ＿１〜ＳＥ＿６＋）で指定されたカウンター５９をカウントアップし、１〜６＋の同一信号の長さ（Ｌ）の出現回数（図７ではＲｕｎｓＤａｔａ１Ｈ〜ＲｕｎｓＤａｔａ６＋Ｈ、図８ではＲｕｎｓＤａｔａ１Ｌ〜ＲｕｎｓＤａｔａ６＋Ｌ）を取得する。各比較器６０は各カウンター５９の出力（図７ではＲｕｎｓＤａｔａ１Ｈ〜ＲｕｎｓＤａｔａ６＋Ｈ、図８ではＲｕｎｓＤａｔａ１Ｌ〜ＲｕｎｓＤａｔａ６＋Ｌ）とそれぞれの上限比較データ（例えば、２，６８５、１，３８６、７２３、３８４、２０９、２０９）および下限比較データ（例えば、２，３１５、１，１１４、５２７、２４０、１０３、１０３）とを比較し、判定信号（図７ではＲｕｎｓＪｕｄｇｅ１Ｈ〜ＲｕｎｓＪｕｄｇｅ６＋Ｈ、図８ではＲｕｎｓＪｕｄｇｅ１Ｌ〜ＲｕｎｓＪｕｄｇｅ６＋Ｌ）を出力する。これにより、基準クロックに同期して生成されたシリアル乱数について、スタート信号から２０，０００クロック後にＲｕｎｓＴｅｓｔのデータと判定を検証することができる。
【００３０】
最後に、ＬｏｎｇＲｕｎｓＴｅｓｔによる検証が行われる。すなわち、図９に示すように、第１カウンター７３はスタート信号（ＳＴＡＲＴ）と基準クロック（ＣＬＫ＿０）より制御回路５７を介して生成された信号ＳＴＡＲＴ＿Ｃでカウントを開始し、２０，０００カウント時に信号ＯＵＴ＿Ｃを出力する。データ保持器７５はシリアル乱数（ＳＲＮＤ）を基準クロック（ＣＬＫ＿０）にて逐次１ビット保持し、比較器７４はシリアル乱数（ＳＲＮＤ）とデータ保持器７５で保持された乱数を比較し、１クロック前の乱数と今回の乱数が変化したときに信号ＣＨＡＮＧＥを出力する。第２カウンター７７は、信号ＣＨＡＮＧＥが出力されてから次の出力がされるまでのクロックをカウントし、信号ＬＲＵＮＳ＿Ｄを出力する。第２カウンター７７は、制御回路７６の出力信号ＣＬＲ＿ＣＣでスタート信号（ＳＴＡＲＴ）が入ったときと信号ＣＨＡＮＧＥが出力されたときに初期化（ＬＲＵＮＳ＿Ｄ＝０）を行う。レジスター７９は、制御回路７６の出力信号ＣＬＲ＿Ｒでスタート信号（ＳＴＡＲＴ）が入ったときに初期化（ＬＲＵＮＳ＿Ｄ＝０）を行う。レジスター７９の出力信号ＬｏｎｇＲｕｎｓＤａｔａ（ＬＲＮＤ）と第２カウンター７７の出力信号（ＬＲＵＮＳ＿Ｄ）を第１比較器７８で比較し、ＬＲＮＤ＜ＬＲＵＮＳ＿Ｄのときに第１比較器７８は出力信号ＣＯＭＰ＿Ｕを出力し、制御回路７６を介してレジスター７９にＬＯＡＤ＿Ｒ信号を出力して、レジスター７９に逐次ＬＲＵＮＳ＿Ｄの最大値を保持する。第２比較器８０は上限比較データ（例えば、２６）と比較し、判定信号ＬｏｎｇＲｕｎｓＪｕｄｇｅ（ＬＲＮＪ）を出力する。信号ＬＲＵＮＳ＿Ｄ、ＬＲＮＤと同一信号の長さ（Ｌ）の関係はＬ＝ＬＲＵＮＳ＿Ｄ＋１、Ｌ（ｍａｘ）＝ＬＲＮＤ＋１＝ＬＲＵＮＳ＿Ｄ（ｍａｘ）＋１となる。これにより、基準クロックに同期して生成されたシリアル乱数について、スタート信号から２０，０００クロック後にＬｏｎｇＲｕｎｓＴｅｓｔのデータと判定を検証することができる。
【００３１】
そして、こうして４種類の検定方法で検証された一様性乱数の検証データは、図１に示すように、第２セレクター９７に保持され、使用者の要望に応じて出力される。選択信号（Ａ０、Ａ１）と動作テーブルを表１に示す。
【表１】
2004310314.tif 000003
【００３２】
すなわち、物理乱数発生器１は、選択信号（Ａ１）の状態（“０”または“１”）により、読出しクロック（ＣＬＫ＿Ｒ）でのパラレル乱数の更新（アップ／ダウンカウンター７のカウントダウン）または非更新とする。出力のパラレル乱数（ＰＲＮＤ）は第２セレクター９７のＤＡＴＡ＿０に接続される。出力（ＣＯＮＤ＿Ｒ）には書込みアドレス（ＡＤＤＲＥＳＳ）などの物理乱数生成時およびパラレル乱数変換時に生成される各種データやフラグを出力し、第２セレクター９７のＤＡＴＡ＿１に接続される。
【００３３】
乱数検証回路２１は、選択信号（Ａ０、Ａ１）が２（ＡＤＤＲＥ＿Ｓ）のときに制御回路９４を介して読出しクロック（ＣＬＫ＿Ｒ）信号で検証を開始し、ＭｏｎｏｂｉｔＴｅｓｔ、ＰｏｋｅｒＴｅｓｔ、ＲｕｎｓＴｅｓｔおよびＬｏｎｇＲｕｎｓＴｅｓｔを基準クロック（ＣＬＫ＿０）で２０，０００＋１６サイクルで完了し、判定結果、判定データ、ＰｏｋｅｒＴｅｓｔの生データを出力して第１セレクター９６に接続される。その詳細を表２に示す。
【表２】
2004310314.tif 000004
【００３４】
なお、総合判定はすべての判定結果が合格のときに出力される。出力（ＣＯＮＤ＿Ｔ）には、乱数検証時に生成される各種データやフラグを出力し、第２セレクター９７のＤＡＴＡ＿２にカウンター出力のモニターアドレス（ＳＥＬ＿ＡＤＤ）とともに接続される。また、検証のスタート信号にてパラレル乱数生成用のカウンター３、シフトレジスター４、アップ／ダウンカウンター７とすべてのレジスター５は初期化され、検証された物理乱数を保持して検証後の物理乱数を使用することができる。
【００３５】
カウンター９５は第１セレクター９６のモニターアドレス（ＳＥＬ＿ＡＤＤ）を生成する。カウンター９５は、制御回路９４の出力信号（ＣＬＲ＿Ｃ）で選択信号（Ａ０、Ａ１）が２（ＡＤＤＲＥ＿Ｓ）のときに読出しクロック（ＣＬＫ＿Ｒ）信号で検証を開始し、この開始時に初期化を行い、制御回路９４の出力信号（ＣＬＫ＿Ｃ）で選択信号（Ａ０、Ａ１）が３（ＡＤＤＲＥ＿Ｓ）のときに読出しクロック（ＣＬＫ＿Ｒ）信号でカウンター９５のカウントアップ（更新）を行う。
【００３６】
これにより、基準クロックに同期して生成されたシリアル乱数（ＳＲＮＤ）と逐次補充されるパラレル乱数（ＰＲＮＤ）の生成および一様性の検証を逐次行うことができる。
【００３７】
こうすることにより、物理乱数発生器１の検証およびデータの確認が容易となり、検証後の乱数を活用することができる。選択信号（Ａ０、Ａ１）と第２セレクター９７を用いることで入出力端子を大幅に減らすことができる。選択信号（Ａ０、Ａ１）、読出しクロック（ＣＬＫ＿Ｒ）、カウンター９５と第２セレクター９７で、参照できる有効な検証データを拡大することができる。
【００３８】
なお、図１０に示すように、物理乱数発生器１にチップセレクト（ＣＳ）と出力イネーブル（ＯＥ）の入力を付加し、パラレル乱数［ＰＲＮＤ（０）〜ＰＲＮＤ（ｎ−１）］の出力形態を３ステート（“０”、“１”、ｏｆｆ）にすることもできる。
【００３９】
また、図１１および図１２に示すように、複数個（図１１ではｐ個）の物理乱数発生器１とセレクター１２とで高速（図１１ではｐ倍）の乱数生成スピードを獲得することも可能である。ここで、基準クロック（ＣＬＫ＿０）のエッジ（例えば、立上りエッジ）に対する読出しクロック（ＣＬＫ＿Ｒ）のエッジ（例えば、立上りエッジ）の禁止域（ｔｄ＿Ｒａ＋ｔｄ＿０ａ＋２×ｔｄ＿ｍｇ）を非常に狭く考慮することのみで非同期または同期式の高速乱数発生を容易に実現することができる。
【００４０】
このように、チップセレクト（ＣＳ）と出力イネーブル（ＯＥ）を有することで、物理乱数発生器１を複数個接続することが容易となり、乱数生成の高速化が可能となる。また、チップセレクト（ＣＳ）と出力イネーブル（ＯＥ）を有することで、ＣＰＵを使用したシステムに物理乱数発生器１を容易に接続することができる。
【００４１】
なお、上述の実施形態では、基準クロック（ＣＬＫ＿０）のエッジに対する読出しクロック（ＣＬＫ＿Ｒ）のエッジの禁止域（ｔｄ＿Ｒａ＋ｔｄ＿０ａ＋２×ｔｄ＿ｍｇ）を非常に小さくして基準クロック（ＣＬＫ＿０）と読出しクロック（ＣＬＫ＿Ｒ）との干渉を最小限とするため、基準クロック側および読出しクロック側にそれぞれ２個の遅延回路９、１０を設けた場合について説明したが、基準クロック側と読出しクロック側のいずれか一方にだけ遅延回路９、１０を設けてもよく、遅延回路９、１０の個数も１個以上であれば何個でも構わない。或いはまた、遅延回路９、１０に代えて波形成形回路（例えば、単安定マルチバイブレータ）を付加しても、同じ効果を得ることができる。
【００４２】
（付記１）物理乱数発生器を有する物理乱数発生装置であって、前記物理乱数発生器が、基準クロック信号に応じてシリアル乱数を生成するシリアル物理乱数発生器を備え、シリアル乱数をパラレル乱数に変換するシリアル／パラレル変換部を備え、パラレル乱数を保持しうる複数個のレジスターを備え、前記シリアル／パラレル変換部によってパラレル乱数が生成される度に前記レジスターに順次パラレル乱数を保持し、かつ、読出しクロック信号に応じて前記レジスターからパラレル乱数を読み出して出力するとともに、読み出しの終了したレジスターに他のレジスターからパラレル乱数をシフトさせて内容を逐次更新する制御回路を備えたことを特徴とする物理乱数発生装置。
【００４３】
（付記２）前記物理乱数発生器が、複数個のレジスターのうちパラレル乱数を保持すべきレジスターを決めて書き込みアドレスを出力するアップ／ダウンカウンターを備え、前記アップ／ダウンカウンターが出力した書き込みアドレスに基づき、パラレル乱数を保持すべきレジスターを選択してロード信号を出力するセレクターを備え、前記セレクターからのロード信号に基づいて前記シリアル／パラレル変換部内のパラレル乱数を前記レジスターのうち後段のレジスターから前段のレジスターへ順次保持し、かつ、読出しクロック信号に応じて前記レジスターのうち最後段からパラレル乱数を読み出して出力するとともに、このレジスターより前段にある各レジスター内のパラレル乱数を後段へ順次シフトする制御回路を備えたことを特徴とする請求項１に記載の物理乱数発生装置。
【００４４】
（付記３）前記物理乱数発生器が、前記シリアル物理乱数発生器が生成したシリアル乱数の総数をカウントする総数カウンターを備え、前記総数カウンターがカウントしたシリアル乱数の総数が所定のビット数に達したとき、これらのシリアル乱数に基づいてその一様性を検証する乱数検証回路を備えたことを特徴とする請求項１または請求項２に記載の物理乱数発生装置。
【００４５】
（付記４）付記１〜３に記載の物理乱数発生装置において、乱数生成用の基準クロックと読出しクロックのいずれか一方または双方に遅延回路または波形成形回路を付加してクロックのエッジを抽出して基準クロックのエッジに対する読出しクロックのエッジの禁止域を最小にするようにしたことを特徴とする物理乱数発生装置。
【００４６】
（付記５）前記乱数検証回路の乱数検証方法として、乱数値“０”または“１”の出現度数をカウントし、これを規定値と比較することによって乱数の一様性を検証する乱数検証方法を採用したことを特徴とする請求項３に記載の物理乱数発生装置。
【００４７】
（付記６）前記乱数検証回路の乱数検証方法として、４ビットで一つの乱数値とし、各々の乱数値の出現度数に基づいて算出されたχ二乗値を規定値と比較することによって乱数の一様性を検証する乱数検証方法を採用したことを特徴とする請求項３に記載の物理乱数発生装置。
【００４８】
（付記７）前記乱数検証回路の乱数検証方法として、連の長さ別にその出現度数をカウントし、これらを規定値と比較することによって乱数の一様性を検証する乱数検証方法を採用したことを特徴とする請求項３に記載の物理乱数発生装置。
【００４９】
（付記８）前記乱数検証回路の乱数検証方法として、所定ビット数の乱数中に出現した最長の連の長さを規定値と比較することによって乱数の一様性を検証する乱数検証方法を採用したことを特徴とする請求項３に記載の物理乱数発生装置。
【００５０】
（付記９）チップセレクトと出力イネーブル機能とそれに対応した端子を備え、出力部のバッファー機能を３ステートとしたことを特徴とする請求項１から請求項７までのいずれかに記載の物理乱数発生装置。
【００５１】
（付記１０）付記９に記載の物理乱数発生装置において、第１セレクター、カウンターを有して選択信号（Ａ０＝“０”、Ａ１＝“１”）の時には乱数検証状態とモニターアドレスを出力し、選択信号（Ａ０＝“１”、Ａ１＝“１”）の時には乱数の判定結果と検証データを出力し、読出しクロックでモニターアドレスの更新を行なうようにしたことを特徴とする物理乱数発生装置。
【００５２】
（付記１１）付記１０に記載の物理乱数発生装置において、一様性乱数のＰｏｋｅｒＴｅｓｔの度数分布データを出力するようにしたことを特徴とする物理乱数発生装置。
【００５３】
（付記１２）付記９〜１１に記載の物理乱数発生装置において、読出しクロックにて一様性乱数検証のスタート時にパラレル乱数の保持に関連した回路（カウンター、シフトレジスター、アップ／ダウンカウンター、レジスター）の初期化を行い、すべての保持されたパラレル乱数が一様性乱数の検証済みの乱数を出力するようにしたことを特徴とする物理乱数発生装置。
【００５４】
（付記１３）前記物理乱数発生器を複数個用意し、セレクターのセレクト信号に基づき、前記物理乱数発生器の中から一つを選択して乱数または乱数検証データを出力することを特徴とする請求項１から請求項８までのいずれかに記載の物理乱数発生装置。
【００５５】
【発明の効果】
以上説明したように、本発明のうち請求項１〜７に係る発明によれば、生成された物理乱数を効率よく利用することができるとともに、その乱数の一様性を容易に検定して使用することができ、かつ、簡単な回路構成によりこれらを実現することが可能となる。
【００５６】
また、本発明のうち請求項８、９に係る発明によれば、複数個の物理乱数発生ＩＣを用いて高速に乱数を発生させることが容易となり、かつ、Ｄａｔａ  Ｂｕｓに直接接続できるようになるため、物理乱数発生装置の使いやすさが格段に向上する。
【図面の簡単な説明】
【図１】本発明に係る物理乱数発生装置の第１の実施形態を示す回路図である。
【図２】図１に示す物理乱数発生装置の物理乱数発生器の詳細を示す回路図である。
【図３】図２に示す物理乱数発生器の各部の出力波形を示す波形図である。
【図４】図２に示す物理乱数発生器の各部の出力波形を示す波形図である。
【図５】図１に示す物理乱数発生装置の乱数検証回路のＭｏｎｏｂｉｔＴｅｓｔに関する部分の回路図である。
【図６】図１に示す物理乱数発生装置の乱数検証回路のＰｏｋｅｒＴｅｓｔに関する部分の回路図である。
【図７】図１に示す物理乱数発生装置の乱数検証回路のＲｕｎｓＴｅｓｔに関する部分の回路図である。
【図８】図１に示す物理乱数発生装置の乱数検証回路のＲｕｎｓＴｅｓｔに関する部分の回路図である。
【図９】図１に示す物理乱数発生装置の乱数検証回路のＬｏｎｇＲｕｎｓＴｅｓｔに関する部分の回路図である。
【図１０】本発明に係る物理乱数発生装置の第２の実施形態を示す回路図である。
【図１１】本発明に係る物理乱数発生装置の第３の実施形態を示す回路図である。
【図１２】図１１に示す物理乱数発生装置の各部の出力波形を示す波形図である。
【符号の説明】
１……物理乱数発生器
２……シリアル物理乱数発生器
４……シリアル／パラレル変換部（シフトレジスター）
５……レジスター
６……制御回路
７……アップ／ダウンカウンター
８、１２……セレクター
２３、３３、５３、７３……総数カウンター（第１カウンター）
２６、３７、５７、７６……乱数検証回路（制御回路）
９１……物理乱数発生装置
【図１】
2004310314.tif 000005
【図２】
2004310314.tif 000006
【図３】
2004310314.tif 000007
【図４】
2004310314.tif 000008
【図５】
2004310314.tif 000009
【図６】
2004310314.tif 000010
【図７】
2004310314.tif 000011
【図８】
2004310314.tif 000012
【図９】
2004310314.tif 000013
【図１０】
2004310314.tif 000014
【図１１】
2004310314.tif 000015
【図１２】
2004310314.tif 000016