(57)【要約】【課題】簡易な方式でランダム性の高い乱数を保証することが可能な乱数生成器を提供する。【解決手段】乱数生成器は、物理乱数発生部と、乱数検定部と、圧縮部とを備える。物理乱数発生部は、第１の乱数生成の指示に従って物理現象に起因して乱数を生成する。乱数検定部は、物理乱数発生部で生成された所定長の第１の乱数列に対して乱数検定処理を実行する。圧縮部は、乱数検定処理の検定結果に基づいて前記物理乱数発生部で生成された前記所定長の第１の乱数列を第２の乱数列に圧縮して出力する。【選択図】図１
2014075082.tif 000002
【特許請求の範囲】
【請求項１】
第１の乱数生成の指示に従って物理現象に起因して乱数を生成するための物理乱数発生部と、
前記物理乱数発生部で生成された所定長の第１の乱数列に対して乱数検定処理を実行するための乱数検定部と、
前記乱数検定処理の検定結果に基づいて前記物理乱数発生部で生成された前記所定長の第１の乱数列を第２の乱数列に圧縮して出力するための圧縮部とを備える、乱数生成器。
【請求項２】
前記圧縮部で圧縮された第２の乱数列に基づいて所定のアルゴリズムに従う第３の乱数列を生成するための決定論的乱数生成部をさらに備える、請求項１記載の乱数生成器。
【請求項３】
前記決定論的乱数生成部は、第２の乱数生成の指示に従って、生成された第３の乱数列に基づいて第４の乱数列を生成する、請求項２記載の乱数生成器。
【請求項４】
前記圧縮部は、前記所定長の第１の乱数列に対して暗号化処理した第２の乱数列を出力する暗号回路を含み、
前記暗号回路は、共通鍵暗号方式のＣＢＣ(Cipher Block Chaining)モードに従う暗号化処理を実行する、請求項１記載の乱数生成器。
【請求項５】
前記圧縮部は、前記所定長の第１の乱数列に対してハッシュ演算処理により第２の乱数列を出力するハッシュ演算回路を含む、請求項１記載の乱数生成器。
【請求項６】
乱数生成器における乱数生成方法であって、
第１の乱数生成の指示に従って物理現象に起因して乱数を生成するステップと、
生成された所定長の第１の乱数列に対して乱数検定処理を実行するステップと、
前記乱数検定処理の検定結果に基づいて生成された前記所定長の第１の乱数列を第２の乱数列に圧縮して出力するステップとを備える、乱数生成方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、乱数を生成する乱数生成器および乱数生成方法に関する。
【背景技術】
【０００２】
乱数生成器は、暗号解読を試みる攻撃者が推定、および、再現できない情報を生成する目的で使用される。たとえば、セキュリティの分野では、公開鍵、秘密鍵、又は一度限り有効な鍵を含む共通鍵などの鍵生成や、暗号通信時に通信相手のみに送信する秘密情報の生成など、様々な暗号プロトコルに乱数生成器は用いられている。
【０００３】
理想的な乱数には、ランダムな現象が求められる。ここでランダムな現象とは、ある現象において、それぞれの事象が他の事象とは独立に発生することを言う。
【０００４】
一般的に、このランダムな現象を作り出す乱数生成器として、放射線や熱雑音や、温度、電圧、周波数などの物理現象を使用したものを真性乱数生成器、乱数のように見えるが実際には暗号理論を使用して確定的な計算によって生成する擬似乱数生成器（特許文献１）などが用いられる。
【０００５】
この点、擬似乱数生成器は、ある入力値に対して一意に確定する値を生成する。したがって、高度なセキュリティが要求される場合には利用しにくいという問題点がある。一方、真性乱数生成器は、ランダム性を物理現象に求めるため、乱数に高いランダム性を得ることが可能である。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００９−３４９５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
一方、真性乱数生成器は、物理現象に律速して乱数が生成されるため、当該乱数生成器を利用する際の環境条件（規定動作範囲）が設けられている。温度や電圧、周波数に代表される環境条件を変化させて規定動作範囲外で乱数生成器を動作させた場合、その出力値は偏る可能性があるため環境条件を監視するセンサ回路を設けて乱数を保証している。
【０００８】
しかしながら、当該環境条件を監視するためのセンサ回路を設けることはチップのコストを増大させることになる。
【０００９】
上記のような問題を解決するためになされたものであって、簡易な方式でランダム性の高い乱数を保証することが可能な乱数生成器および乱数生成方法を提供することを目的とする。
【００１０】
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【００１１】
一実施例によれば、乱数生成器は、物理乱数発生部と、乱数検定部と、圧縮部とを備える。物理乱数発生部は、第１の乱数生成の指示に従って物理現象に起因して乱数を生成する。乱数検定部は、物理乱数発生部で生成された所定長の第１の乱数列に対して乱数検定処理を実行する。圧縮部は、乱数検定処理の検定結果に基づいて前記物理乱数発生部で生成された前記所定長の第１の乱数列を第２の乱数列に圧縮して出力する。
【発明の効果】
【００１２】
一実施例によれば、物理乱数発生部で生成された所定長の第１の乱数列に対して乱数検定処理を実行し、その検定結果に基づいて圧縮した第２の乱数列を出力するためランダム性の高い乱数を保証することが可能である。
【図面の簡単な説明】
【００１３】
【図１】本実施の形態１に従う乱数生成システムの構成を説明する図である。
【図２】本実施の形態１に従う乱数生成システムの乱数生成のフローについて説明するフロー図である。
【図３】本実施の形態２に従う乱数生成システムの構成を説明する図である。
【図４】本実施の形態２に従う乱数生成システムの乱数生成のフローについて説明するフロー図である。
【発明を実施するための形態】
【００１４】
本実施の形態について図面を参照しながら詳細に説明する。なお、図中同一または相当部分には同一符号を付し、その説明は繰り返さない。
【００１５】
（実施の形態１）
図１は、本実施の形態１に従う乱数生成システムの構成を説明する図である。
【００１６】
図１を参照して、本実施の形態１に従う乱数生成システムは、ＣＰＵ（Central Processing Unit）１０と、乱数を生成して出力する乱数生成ユニット２０と、メモリ１５と、バス５とを含む。
【００１７】
ＣＰＵ１０は、バス５を介して乱数生成ユニット２０、メモリ１５とデータの授受が可能に設けられている。
【００１８】
メモリ１５には、ＣＰＵ１０が当該乱数生成システムを制御するために必要なプログラムが格納されており、当該プログラムを読み込むことにより各種の処理が実行される。
【００１９】
ＣＰＵ１０は、乱数生成ユニット２０を制御し、乱数の生成が必要な場合に乱数生成ユニット２０に対して物理乱数生成コマンドおよび乱数検定コマンドを出力する。
【００２０】
乱数生成ユニット２０は、物理乱数生成コマンドおよび乱数検定コマンドを受けて乱数を生成および検定し、ＣＰＵ１０に所望の乱数列を出力する。
【００２１】
乱数生成ユニット２０は、乱数生成ユニット２０内の各部を制御する制御回路２２と、物理乱数生成器２４と、圧縮回路２６と、乱数検定回路２８とを含む。
【００２２】
制御回路２２は、ＣＰＵ１０からのバス５を介する物理乱数生成コマンドを受けて物理乱数生成器２４に乱数生成要求を出力する。また、制御回路２２は、ＣＰＵ１０からのバス５を介する乱数検定コマンドを受けて乱数検定回路２８に乱数検定要求を出力する。制御回路２２はステータスレジスタを有しており、このステータスレジスタを通して物理乱数生成器２４と乱数検定回路２８のステータスをＣＰＵ１０が知ることが出来る。ステータスレジスタは乱数生成完了フラグ、乱数検定完了フラグにより構成されている。
【００２３】
物理乱数生成器２４は、温度、電圧、周波数などの物理現象を利用した乱数発生器（真性乱数生成器）であり、制御回路２２からの乱数生成要求に応じて乱数生成を開始し、乱数生成が完了するとその旨を制御回路２２に通知する。本例においては、一例として２万ビットの乱数列（第１の乱数列）を生成する。
【００２４】
圧縮回路２６は、物理乱数生成器２４で生成された乱数列の入力を受けて、入力されたデータを任意の長さに圧縮する機能を有し、圧縮結果を内部のレジスタに保存する。
【００２５】
乱数検定回路２８は、物理乱数生成器２４で生成された乱数列の入力を受けて、入力されたデータを統計処理して内部のレジスタに保存し、制御回路２２からの乱数検定要求に従って乱数検定処理を実行する機能を有し、所定の検定結果を保存する。
【００２６】
次に、本実施の形態１に従う乱数生成ユニット２０の動作について説明する。
制御回路２２は、ＣＰＵ１０からの物理乱数生成コマンドおよび乱数検定コマンドに従って、乱数生成要求および乱数検定要求をそれぞれ物理乱数生成器２４および乱数検定回路２８に出力する。
【００２７】
物理乱数生成器２４は、乱数生成要求に従って乱数を生成し、生成された乱数列は、圧縮回路２６と乱数検定回路２８とに入力される。また、物理乱数生成器２４は、乱数生成完了を制御回路２２に通知する。これにより、制御回路２２のステータスレジスタは、乱数生成完了フラグを有効とする。
【００２８】
圧縮回路２６は、入力された第１の乱数列全体に対して所定の圧縮処理を実行して所望の長さの第２の乱数列に圧縮する。
【００２９】
乱数検定回路２８は、物理乱数生成器２４で生成された乱数の入力を受けて、乱数検定に必要な統計処理結果を内部のレジスタに保存するとともに、乱数検定要求に従い所定の検定方式に基づく乱数検定処理を実行して、その検定結果を保存する。そして、統計処理に基づく所定の乱数検定が終了するとその旨を制御回路２２に通知する。
【００３０】
制御回路２２は、乱数検定回路２８からの乱数検定の終了の通知を受けて、ステータスレジスタ内の乱数検定完了フラグを有効とする。
【００３１】
ＣＰＵ１０は、ステータスレジスタの乱数検定完了フラグが有効であることを確認し、乱数検定結果の読み出しコマンドを出力する。制御回路２２は、乱数検定結果の読み出しコマンドの要求に従って読み出し要求を乱数検定回路２８に出力する。乱数検定回路２８は、制御回路２２からの指示に従い検定結果をバス５を介してＣＰＵ１０に出力する。
【００３２】
図２は、本実施の形態１に従う乱数生成システムの乱数生成のフローについて説明するフロー図である。ここでは、ＣＰＵ１０における処理が示されている。当該処理は、例えば、乱数を使用するアプリ（例えば、データ通信する際の鍵生成用）からの要求に従って開始されるものとする。なお、当該フローを実行するためのプログラムは、メモリ１５に格納されているものとし、当該メモリ１５に格納されているプログラムを読み込むことにより実現されるものとする。
【００３３】
図２を参照して、まず、ＣＰＵ１０は、物理乱数生成コマンドおよび乱数検定コマンドを発行する（ステップＳ２）。具体的には、ＣＰＵ１０は、、物理乱数生成コマンドおよび乱数検定コマンドを発行して、バス５を介して乱数生成ユニット２０に出力する。
【００３４】
次に、ＣＰＵ１０は、乱数検定が完了したかどうかを判断する（ステップＳ４）。具体的には、ＣＰＵ１０が制御回路２２のステータスレジスタ内の乱数検定完了フラグを読み出して、検定が完了しているかどうかを判断する。
【００３５】
ＣＰＵ１０は、乱数検定が完了したと判断した場合（ステップＳ４においてＹＥＳ）には、次のステップＳ６に進む。
【００３６】
次に、ＣＰＵ１０は、乱数検定結果がＯＫかＮＧかを判断する（ステップＳ６）。具体的には、ＣＰＵ１０は、乱数検定回路２８からの乱数検定結果の読み出しを実行するように制御回路２２に対して乱数検定結果の読み出しコマンドを出力する。制御回路２２は、乱数検定結果の読み出しコマンドの要求に従って乱数検定回路２８に対して乱数検定結果をＣＰＵ１０に対して出力するように読み出し要求を出力する。乱数検定回路２８は、制御回路２２からの読み出し要求に従ってＣＰＵ１０に対して乱数検定結果をバス５を介して出力する。ＣＰＵ１０は、これにより乱数検定結果を判断する。
【００３７】
ステップＳ６において、ＣＰＵ１０は、乱数検定結果がＯＫである場合には、乱数の読み出しを実行する（ステップＳ８）。そして処理を終了する（エンド）。
【００３８】
具体的には、ＣＰＵ１０は、制御回路２２に対して乱数を出力するように読み出しコマンドを出力する。制御回路２２は、ＣＰＵ１０からの読み出しコマンドの要求に従って、圧縮回路２６に対してＣＰＵ１０に対して圧縮した乱数列（第２の乱数列）を出力するように読み出し要求を出力する。
【００３９】
圧縮回路２６は、制御回路２２からの読み出し要求に従ってＣＰＵ１０に対して圧縮した乱数列（第２の乱数列）をバス５を介して出力する。
【００４０】
ＣＰＵ１０は、圧縮回路２６から出力された乱数列を受けて、アプリと協働して使用する。具体的には、当該乱数列（第２の乱数列）を一例として、データ通信用の鍵として用いることが可能である。
【００４１】
一方、ステップＳ６において、ＣＰＵ１０は、乱数検定結果がＮＧである場合には、ＮＧが規定回数に達したかどうかを判断する（ステップＳ１０）。
【００４２】
ステップＳ１０において、ＣＰＵ１０は、ＮＧが規定回数に達したと判断した場合（ステップＳ１０においてＹＥＳ）には、動作不可と判断する（ステップＳ１２）。そして、処理を終了する（エンド）。この場合には、乱数の生成が適正にできないとして処理を終了する。
【００４３】
ステップＳ１０において、ＣＰＵ１０は、ＮＧが規定回数に達していないと判断した場合（ステップＳ１０においてＮＯ）には、ステップＳ２に戻り、上記の乱数生成の処理を再開する。なお、規定回数は予め所定回数に定められているものとする。
【００４４】
また、ステップＳ１０の判断をすることなく動作不可と判断するようにしても良い。
本実施の形態１に従う方式は、物理乱数生成器２４で生成された乱数列（第１の乱数列）に対して乱数検定回路２８で乱数検定をパス（ＯＫ判定）した場合に圧縮回路２６で圧縮された第２の乱数列がＣＰＵ１０に出力される。
【００４５】
すなわち、乱数検定をパスした第１の乱数列を圧縮した第２の乱数列であるためランダム性の高い乱数を保証することが可能であり、真性乱数生成器が正常に動作しているかどうかを判断するためのセンサ回路を設ける必要がなく簡易な構成で実現することが可能である。
【００４６】
なお、本例においては、ＣＰＵ１０が制御回路２２に乱数生成コマンドおよび乱数検定コマンドをともに出力して物理乱数生成器２４における乱数生成と、乱数検定回路２８における乱数検定を並列的に実行する場合について説明したが、物理乱数生成器２４における乱数生成が完了した後に、乱数検定回路２８における乱数検定を実行するようにしても良い。その場合には、例えば、ＣＰＵ１０は、制御回路２２に乱数検定コマンドを出力して、制御回路２２における乱数生成完了フラグが有効であることを確認した後に、次に、制御回路２２に乱数検定コマンドを出力するようにしても良い。以降の実施例についても同様である。
【００４７】
なお、本例においては、乱数検定回路２８で乱数検定処理を実行する場合について説明したが、たとえば、ＣＰＵ１０と協働して乱数検定処理を実行するようにしても良い。具体的には、乱数の統計的データを検出する検出回路を乱数生成ユニット２０側に設け、当該統計的データを用いて乱数検定処理の判定部分についてはＣＰＵ１０を用いてソフト的（メモリ１５に格納されている乱数検定用のプログラムを用いて）に実行するようにしても良い。当該構成により、種々の検定方式をＣＰＵ１０が実行することにより乱数生成ユニット２０の構成を簡易にすることが可能である。また、各種の検定を実行するための乱数検定用のプログラムをメモリ１５に複数格納しておくことにより、乱数の使用用途のセキュリティレベルに従って検定方式を選択することも可能である。以降の実施例についても同様である。
【００４８】
また、本例においては、乱数生成ユニット２０の外部にＣＰＵ１０がバス５を介して接続され、ＣＰＵ１０の指示に従って制御回路２２を介して圧縮回路２６から乱数が出力される構成について説明したが、例えば、ＣＰＵ１０の機能と制御回路２２の機能とを合わせて１つの制御回路として乱数生成ユニット２０内に設ける構成とすることも可能である。あるいは、乱数生成ユニット２０内の制御回路２２の機能をＣＰＵ１０が実行するようにしても良い。
【００４９】
＜乱数検定処理＞
乱数検定回路２８で実行される種々の乱数検定処理について説明する。なお、全ての乱数検定を実行する必要は無く使用用途等に応じて適切な検定を適宜実行するようにすればよい。
【００５０】
具体的には、情報処理設備調達基準ＦＩＰＳ（Federal Information Processing Standards）のうち、ＦＩＰＳ  ＰＵＢ１４０−２が挙げられる。当該基準には、２値数列２００００ビット中に現れる、１の値の数を数えて統計量を判定するモノビットテストがある。また、２値数列２００００ビットを４ビットずつのセルに区切り、全部で５０００個のセルを作り、そして、セルのパターン０〜１５についての出現数をカウントして統計量を判定するポーカーテストがある。また、２値数列２００００ビット内に現れた同じ数値の続き（連）の個数をカウントして、統計量を判定するランズテストがある。また、２値数列２００００ビット中に現れる連のうち最長の連の長さを調べるロングランズテスト等の検定方式が種々ある。
【００５１】
また、別の乱数検定処理として、米国商務省標準技術局（ＮＩＳＴ）が公開しているＮＩＳＴ  Ｓｐｅｃｉａｌ  Ｐｕｂｌｉｃａｔｉｏｎ  ８００−２２を用いることも可能である。乱数列の０と１との割合がおおよそ同じになっているかを調べる頻度検定、乱数列が生成した行列のランクの偏りを調べる２値行列ランク検定がある。また、０と１からなる乱数列を±１の実数値系列と見なし、離散フーリエ変換を行い、周波数成分に分解する。そして、その各周波数成分の絶対値が閾値を超えない割合を求めることにより乱数列のランダム性を調べるＤＦＴ検定がある。乱数列をブロック毎に分割し、テンプレートが適合する回数を調べるテンプレート適合検定、乱数列の一様性を調べるユニバーサル統計量検定、線形複雑度を求めて乱数列の周期性を調べる線形複雑度検定、ｍビットパターンが均等に現われているかを検定するエントロピー検定等、その他規格に基づく種々の検定方式を適用することが可能である。
【００５２】
＜圧縮処理＞
圧縮回路２６における圧縮処理について説明する。
【００５３】
具体的には、ラングレス符号化、ハフマン符号化、Ｌｅｍｐｅｌ−Ｚｉｖ圧縮方式等を用いて圧縮することが可能である。
【００５４】
また、暗号化回路を用いて第１の乱数列を圧縮させることも可能である。具体的には、共通鍵暗号方式の暗号ブロック連鎖（ＣＢＣ（Cipher Block Chaining））モードに従う暗号化処理を実行して第１の乱数列を圧縮させる。
【００５５】
暗号ブロック連鎖モードとは、２値数列をブロック毎に分割し、１つ前の暗号化したブロックと暗号化対象の現在の平文のブロックとの排他的ＯＲ論理演算をとってから暗号化鍵でこのブロックの暗号化を行う。そして、結果の暗号文は次のブロックとの排他的ＯＲ論理演算に使われる。このように前のブロックと次々に連鎖させて暗号データを生成する方式である。なお、ブロックの最初はその前のブロックがないので初期ベクトル（IV：Initial Vector）を与えて排他的ＯＲ論理演算を実行する。また、圧縮長に応じてブロック長を変化させるようにしても良い。
【００５６】
また、ハッシュ演算回路を用いて第１の乱数列を圧縮させることも可能である。具体的には、所望のビット長を出力するためのハッシュ関数を予め用意し、当該ハッシュ関数に第１の乱数列を入力してハッシュ演算処理により圧縮させるようにしても良い。
【００５７】
（実施の形態２）
図３は、本実施の形態２に従う乱数生成システムの構成を説明する図である。
【００５８】
図３を参照して、本実施の形態２に従う乱数生成システムは、乱数生成ユニット２０を乱数生成ユニット２１に置換した点が異なる。
【００５９】
乱数生成ユニット２１は、乱数生成ユニット２０と比較して、さらに決定論的乱数生成器３０を含めるとともに制御回路２２を制御回路２３に置換した点が異なる。その他の構成については図１で説明した内容と同様であるのでその詳細な説明は繰り返さない。
【００６０】
決定論的乱数生成器３０は、計算式を用いて入力値を撹拌し、その結果を内部のレジスタに保存する。入力値としては、圧縮回路２６のレジスタの値と、決定論的乱数生成器のレジスタの値とのいずれかより選択可能に設けられている。
【００６１】
次に、本実施の形態２に従う乱数生成ユニット２１の動作について説明する。
制御回路２３は、ＣＰＵ１０からの物理乱数生成コマンドに従って、乱数生成要求を物理乱数生成器２４に出力する。また、制御回路２３は、ＣＰＵ１０からのバス５を介する乱数検定コマンドを受けて乱数検定回路２８に乱数検定要求を出力する。制御回路２３はステータスレジスタを有しており、このステータスレジスタを通して物理乱数生成器２４と乱数検定回路２８のステータスをＣＰＵ１０が知ることが出来る。ステータスレジスタは乱数生成完了フラグ、乱数検定完了フラグにより構成されている。
【００６２】
物理乱数生成器２４は、乱数生成要求に従って乱数を生成し、生成された乱数列は、圧縮回路２６と乱数検定回路２８とに入力される。また、物理乱数生成器２４は、乱数生成完了を制御回路２３に通知する。
【００６３】
圧縮回路２６は、入力された第１の乱数列全体に対して所定の圧縮処理を実行して所望の長さの第２の乱数列に圧縮する。
【００６４】
乱数検定回路２８は、物理乱数生成器２４で生成された乱数の入力を受けて、乱数検定に必要な統計処理結果を内部のレジスタに保存し、制御回路２３からの乱数検定要求に従い所定の検定方式に基づく乱数検定処理を実行して、その検定結果を保存する。そして、統計処理に基づく所定の乱数検定が終了するとその旨を制御回路２２に通知する。制御回路２３は、乱数検定回路２８からの乱数検定の終了の通知を受けて、ステータスレジスタ内の乱数検定完了フラグを有効とする。
【００６５】
ＣＰＵ１０は、ステータスレジスタの乱数検定完了フラグが有効であることを確認し、乱数検定結果の読み出しコマンドを出力する。制御回路２３は、乱数検定結果の読み出しコマンドの要求に従って読み出し要求を乱数検定回路２８に出力する。乱数検定回路２８は、制御回路２３からの指示に従い検定結果をバス５を介してＣＰＵ１０に出力する。
【００６６】
図４は、本実施の形態２に従う乱数生成システムの乱数生成のフローについて説明するフロー図である。ここでは、ＣＰＵ１０における処理が示されている。当該処理は、例えば、乱数を使用するアプリ（例えば、データ通信する際の鍵生成用）からの要求に従って開始されるものとする。なお、当該フローを実行するためのプログラムは、メモリ１５に格納されているものとし、当該メモリ１５に格納されているプログラムを読み込むことにより実現されるものとする。
【００６７】
図４を参照して、まず、ＣＰＵ１０は、物理乱数生成コマンドおよび乱数検定コマンドを発行する（ステップＳ２）。具体的には、ＣＰＵ１０は、物理乱数生成コマンドおよび乱数検定コマンドを発行して、バス５を介して乱数生成ユニット２０に出力する。
【００６８】
次に、ＣＰＵ１０は、乱数検定が完了したかどうかを判断する（ステップＳ４）。具体的には、ＣＰＵ１０が制御回路２２のステータスレジスタ内の乱数検定完了フラグを読み出して、検定が完了しているかどうかを判断する。
【００６９】
ＣＰＵ１０は、乱数検定が完了したと判断した場合（ステップＳ４においてＹＥＳ）には、次のステップＳ６に進む。
【００７０】
そして、次に、ＣＰＵ１０は、乱数検定結果がＯＫかＮＧかを判断する（ステップＳ６）。具体的には、ＣＰＵ１０は、乱数検定回路２８からの乱数検定結果の読み出しを実行するように制御回路２３に対して乱数検定結果の読み出しコマンドを出力する。制御回路２３は、乱数検定結果の読み出しコマンドの要求に従って乱数検定回路２８に対して乱数検定結果をＣＰＵ１０に対して出力するように読み出し要求を出力する。乱数検定回路２８は、制御回路２３からの読み出し要求に従ってＣＰＵ１０に対して乱数検定結果をバス５を介して出力する。ＣＰＵ１０は、これにより乱数検定結果を判断する。
【００７１】
ステップＳ６において、ＣＰＵ１０は、乱数検定結果がＯＫである場合には、決定論的乱数生成コマンドを発行する（ステップＳ２０）。具体的には、ＣＰＵ１０は、決定論的乱数生成コマンドを発行して、バス５を介して乱数生成ユニット２１に出力する。制御回路２３は、ＣＰＵ１０からの決定論的乱数生成コマンドに従って、圧縮回路２６に圧縮した乱数列を出力するように指示するとともに、乱数生成要求を決定論的乱数生成器３０に出力する。これにより決定論的乱数生成器３０は、圧縮回路２６からの乱数列の入力を受けて乱数を生成する。
【００７２】
そして、次に、ＣＰＵ１０は、乱数の読み出しを実行する（ステップＳ２２）。具体的には、ＣＰＵ１０は、制御回路２３に対して乱数を出力するように読み出しコマンドを出力する。制御回路２２は、ＣＰＵ１０からの読み出しコマンドの要求に従って、決定論的乱数生成器３０に対してＣＰＵ１０に対して圧縮した乱数列（第３の乱数列）を出力するように読み出し要求を出力する。
【００７３】
決定論的乱数生成器３０は、制御回路２３からの読み出し要求に従ってＣＰＵ１０に対して生成した乱数列（第３の乱数列）をバス５を介して出力する。
【００７４】
ＣＰＵ１０は、決定論的乱数生成器３０から出力された乱数列を受けて、アプリと協働して使用する。具体的には、当該乱数列（第２の乱数列）を一例として、データ通信用の鍵として用いることが可能である。
【００７５】
次に、ＣＰＵ１０は、乱数生成の要求が有るかどうかを判断する（ステップＳ２４）。具体的には、例えば、乱数を使用するアプリ（例えば、データ通信する際の鍵生成用）から再び乱数生成の要求が有るかどうかを判断する。
【００７６】
ステップＳ２４において、乱数生成の要求が有ると判断した場合（ステップＳ２４においてＹＥＳ）には、ステップＳ２０に戻る。すなわち、決定論的乱数生成コマンドを発行する。具体的には、ＣＰＵ１０は、決定論的乱数生成コマンドを発行して、バス５を介して乱数生成ユニット２１に出力する。制御回路２３は、ＣＰＵ１０からの決定論的乱数生成コマンドに従って、決定論的乱数生成器３０の内部のレジスタに格納されている値を入力値として指示するとともに、乱数生成要求を決定論的乱数生成器３０に出力する。これにより決定論的乱数生成器３０は、内部のレジスタに格納されている値を入力値として乱数を再生成する。以降の処理については上記で説明したのと同様である。
【００７７】
すなわち、ＣＰＵ１０は、乱数の読み出しを実行し、ＣＰＵ１０は、決定論的乱数生成器３０から出力された乱数列をアプリと協働して使用する。
【００７８】
一方、ステップＳ６において、ＣＰＵ１０は、乱数検定結果がＮＧである場合には、ＮＧが規定回数に達したかどうかを判断する（ステップＳ１０）。
【００７９】
ステップＳ１０において、ＣＰＵ１０は、ＮＧが規定回数に達したと判断した場合（ステップＳ１０においてＹＥＳ）には、動作不可と判断する（ステップＳ１２）。そして、処理を終了する（エンド）。乱数の生成が適正にできないとして処理を終了する。
【００８０】
ステップＳ１０において、ＣＰＵ１０は、ＮＧが規定回数に達していないと判断した場合（ステップＳ１０においてＮＯ）には、ステップＳ２に戻り、上記の乱数生成の処理を再開する。なお、規定回数は予め所定回数に定められているものとする。
【００８１】
また、ステップＳ１０の判断をすることなく動作不可と判断するようにしても良い。
すなわち、１回目の乱数生成については、圧縮回路２６で圧縮された乱数列を入力として決定論的乱数生成器３０で乱数を生成するが、２回目以降については、決定論的乱数生成器３０で生成された乱数列を入力値として用いて、新たな乱数を生成するため２回目以降の乱数の生成に関しては高速な乱数列の生成が可能である。
【００８２】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は、実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
【符号の説明】
【００８３】
５  バス、１０  ＣＰＵ、１５  メモリ、２０，２１  乱数生成ユニット、２２，２３  制御回路、２４  物理乱数生成器、２６  圧縮回路、２８  乱数検定回路、３０  決定論的乱数生成器。
【図１】
2014075082.tif 000003
【図２】
2014075082.tif 000004
【図３】
2014075082.tif 000005
【図４】
2014075082.tif 000006