(57)【特許請求の範囲】
【請求項１】
物理乱数生成回路の品質テスト方法であって、
初期乱数列をシャッフリングすることにより生成された複数の変異乱数列それぞれの複数種類のスコアについて、種類毎にスコアの分布範囲を規定する上限値と下限値を記憶し、
複数の検証乱数列を生成し、
前記複数の検証乱数列のそれぞれについて前記複数種類のスコアを計算し、
前記検証乱数列の前記複数スコアを、前対応する種類の前記上限値及び前記下限値と比較し、
前記種類毎に、前記検証乱数列の前記複数スコアが、前記分布範囲内に分布する頻度を判定し、
前記分布する頻度に基づいて、品質が不良であるか否かを判定し、
前記初期乱数列のシャッフリングにより生成した複数の変異乱数列の複数のスコアについての前記上限値及び下限値の生成および記憶は、前記物理乱数生成回路の製造時に行い、
前記検証乱数列の生成および品質の判定は、前記物理乱数生成回路の出荷後の通常使用時に行うことを特徴とする物理乱数生成回路の品質テスト方法。
【請求項２】
前記検証乱数列の前記複数スコアの値の計算を行うごとに、各スコアについての前記分布範囲に対して分布するか否かを判定し、
複数回の判定結果から品質が不良であるか否かの判定が完了した時点で、前記検証乱数列の生成を停止する請求項１に記載の物理乱数生成回路の品質テスト方法。
【請求項３】
前記初期乱数列は、１００万ビット以上の乱数列であり、
前記初期乱数列を１０等分した乱数列の複数種類のスコアの分布範囲を規定する１０セットの値を記憶する請求項１または２に記載の物理乱数生成回路の品質テスト方法。
【請求項４】
前記変異乱数列は、１０００個生成され、
スコアは、１１種類であり、
各種類について１０００個のスコア値の分布が計算され、前記分布の上位５％および下位５％の境界値がそれぞれ前記上限値及び下限値として記憶され、
前記検証乱数列は１０回生成され、
スコア種類について、８個の値が、前記上位５％の境界値より大きいかまたは前記下位５％の境界値より小さい場合に、不良であると判定する請求項１から３のいずれか１項に記載の物理乱数生成回路の品質テスト方法。
【請求項５】
物理乱数生成回路と、
前記物理乱数生成回路が生成した初期乱数列をシャッフリングすることにより生成された複数の変異乱数列それぞれの複数種類のスコアについて、前記種類ごとにスコアの分布範囲を規定する上限値及び下限値を記憶するスコアリスト格納部と、
前記物理乱数生成回路が生成した検証乱数列を記憶するサブセット乱数格納部と、
前記サブセット乱数格納部に記憶された前記検証乱数列の前記複数種類のそれぞれについてスコアを計算するスコア計算回路と、
前記スコア計算回路により計算された複数の前記検証乱数列の前記複数スコアの値を、前記スコアリスト格納部に記憶された前記上限値及び下限値と比較し、前記種類毎に、前記検証乱数列の前記複数スコアが、前記分布範囲に対して分布する頻度を判定する比較回路と、
前記比較回路の比較結果に基づいて、前記物理乱数生成回路の品質が不良であるか否かを判定する合否判定回路と、を有し、
前記スコアリスト格納部への値の記憶は、当該物理乱数生成回路の製造時に行うことを特徴とする乱数生成器。
【請求項６】
前記比較回路は、前記検証乱数列の前記複数スコアの値の演算を行うごとに、各スコアについての前記分布範囲に対して分布するか否かを判定し、
前記合否判定回路は、複数回の判定結果から品質が不良であるか否かの判定が完了した時点で、前記検証乱数列の生成を停止する請求項５に記載の乱数生成器。
【請求項７】
前記初期乱数列は、１００万ビット以上の乱数列であり、前記初期乱数列を１０等分した前記複数の変異乱数列の複数種類のスコアについて、前記種類毎の前記分布範囲を規定する１０セットの値を記憶する請求項５または６に記載の乱数生成器。
【請求項８】
前記変異乱数列は、１０００個生成され、
スコアは、１１種類であり、
前記スコアリスト格納部は、各種類について１０００個のスコア値の分布が演算され、前記分布の上位５％および下位５％の境界の値を、前記分布範囲を規定する値として記憶し、
前記検証乱数列は１０回生成され、
前記合否判定回路は、各種類について、８個の値が、前記上位５％の境界値より大きいかまたは前記下位５％の境界値より小さい場合に、不良であると判定する請求項５から７のいずれか１項に記載の乱数生成器。
【請求項９】
乱数生成器と、
前記乱数生成器の生成した乱数を利用した処理を行う処理部と、を有し、
前記乱数生成器は、
物理乱数生成回路と、
前記物理乱数生成回路が生成した初期乱数列をシャッフリングすることにより生成された複数の変異乱数列それぞれの複数種類のスコアについて、前記種類ごとにスコアの分布範囲を規定する上限値及び下限値を記憶するスコアリスト格納部と、
前記物理乱数生成回路が生成した検証乱数列を記憶するサブセット乱数格納部と、
前記サブセット乱数格納部に記憶された前記検証乱数列の前記複数種類のそれぞれについてスコアを計算するスコア計算回路と、
前記スコア計算回路により計算された複数の前記検証乱数列の前記複数スコアの値を、前記スコアリスト格納部に記憶された前記上限値及び下限値と比較し、前記種類毎に、前記検証乱数列の前記複数スコアが、前記分布範囲に対して分布する頻度を判定する比較回路と、
前記比較回路の比較結果に基づいて、前記物理乱数生成回路の品質が不良であるか否かを判定する合否判定回路と、を有し、
前記スコアリスト格納部への値の記憶は、当該物理乱数生成回路の製造時に行うことを特徴とする電子装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、物理乱数生成回路の品質テスト方法、乱数発生器および電子装置に関する。
【背景技術】
【０００２】
近年，情報化社会の発展に伴い、電子決済やクラウドストレージなどの情報ネットワークを利用したサービスが普及してきた。これらのサービスを安全に運用するためには情報セキュリティ技術による安全性の確保が必須である。近年、情報セキュリティの基盤技術として、様々な暗号方式が利用されている。
【０００３】
暗号方式とはデータ（平文と呼ぶ）を第三者が見ても理解できないデータ（暗号文と呼ぶ）に変換する技術である。暗号方式は、おおきくは公開鍵暗号方式と共通鍵暗号方式と呼ばれる二つの方式に分けることができる。公開鍵暗号方式は、暗号化と復号においてそれぞれ異なる鍵を使う暗号方式である。暗号化を行うための鍵（公開鍵と呼ぶ）を一般に公開し、暗号文を復号するための鍵（秘密鍵と呼ぶ）を受信者のみの秘密情報とすることで、誰でも受信者にしかわからない暗号文を作成できるようになる。
【０００４】
これに対し、共通鍵暗号方式と呼ばれる暗号方式は、暗号化と復号で同一の鍵（秘密鍵と呼ぶ）を用いる方式である。この秘密鍵を送信者と受信者以外の第三者に対して秘密にすることで、データの安全性を保つ。共通鍵暗号方式の暗号文は、この秘密鍵を知っている者だけが解読することはできる。
【０００５】
これら暗号方式の安全性は、秘密鍵の安全性に依存している。もしも秘密鍵が何らかの方法で第三者に予測されてしまうと、第三者が暗号文を解読できるようになってしまうため、データを安全に保護することができない。これを防ぐために、秘密鍵は第三者に予測不可能な乱数によって生成することが一般的である。
【０００６】
乱数は、その生成法によって擬似乱数と物理乱数（真性乱数）に大別される。擬似乱数は、確定的な計算によって作り出された数列の一部分のことである。擬似乱数生成アルゴリズムに初期値（シード：ｓｅｅｄと呼ぶ)を与えることにより、擬似乱数を生成することができる。擬似乱数は、その擬似乱数生成アルゴリズムとｓｅｅｄが分かれば予測可能であるという性質がある。このため、秘密鍵を生成する手段として擬似乱数と予測可能なｓｅｅｄを用いることは、安全性に大きな問題がある。しかしながら、擬似乱数は計算によって生成されるため、特殊なデバイスを必要とせずＣＰＵのみで生成できるという利点がある。一方、物理乱数は、デバイス中の熱雑音などのように、本質的にランダムな物理現象から抽出されたものである。良い物理乱数は再現性がなく、予測することが不可能であるため、擬似乱数生成器のｓｅｅｄ生成方式として安全性が高い。良い物理乱数をｓｅｅｄとして使う擬似乱数生成器は、予測不可能な擬似乱数を生成するため、秘密鍵の生成に適している。
【０００７】
しかし、物理乱数の質が悪く乱数性が低い場合は、秘密鍵の安全性が著しく低下してしまう。物理乱数生成器は、温度や電圧の変化、年月の経過等の環境変動の影響を受け、生成する物理乱数の乱数性が大きく低下してしまう場合があることが知られている。乱数性の低い物理乱数は容易に予測されてしまうため、それを元に秘密鍵を生成することは危険である。物理乱数生成器は、スマートカードや携帯電話といった、安全性が求められるデバイスの暗号通信やデジタル署名認証にも使われるが、これらのデバイスは小型で持ち運びが可能なため、容易に悪い環境に晒されうる。そのため、物理乱数の乱数性の悪化により脆弱な秘密鍵を生成することを避けるために、物理乱数の乱数性（エントロピー）を動的に計測する技術が求められている。
【０００８】
物理乱数生成器のエントロピーに関する望ましい仕様について、米国の物理乱数生成器に関する文書[SP800-90B]が知られている。そこには、ヘルステストとＩＩＤテストが記載されている。ヘルステストは、Repetition Count TestおよびAdaptive Proportion Testを含み、ヘルステストを行う自己検定回路を搭載することは必須とされ、発生した乱数の乱数性がヘルステストにより低いと判断された場合、その乱数列は出力することが許されない。したがって、ヘルステストは、物理乱数生成器を実際に使用する際に毎回行われ、ヘルステストにより、物理乱数生成回路が同一値を極端に連続して出力し続けるといった事態を検出することができる。
【０００９】
一方、ＩＩＤテストは、物理乱数生成器の製造時に行う、厳密な乱数性を検査するテストであり、シャッフリングテストおよび統計テストを含み、双方ともに合格の場合にＩＩＤテスト合格とする。ＩＩＤテストは、ヘルステストでは検出できない類の乱数性の低い乱数列についても検出することができる。しかし、ＩＩＤテストに含まれるシャッフリングテストは、処理コストが大きい。そのため、ＩＩＤテストは、物理乱数生成器の使用時ではなく、製造時にのみ解析マシン上などで実施し、乱数性の低い不良な物理乱数生成器を排除するために実行される。文書[SP800-90B]も、物理乱数生成器にＩＩＤテストを行う機構を設けることを要求していない。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開２００８−１９７８４７号公報
【特許文献２】特開２００６−３１８０９２号公報
【特許文献３】特開２００４−３１０３１４号公報
【非特許文献】
【００１１】
【非特許文献１】NIST DRAFR Special Publication 800-90B, "Recommendation for the Entropy Sources Used for Random Bit Generation", Elaine Barker, John Kelsey
【発明の概要】
【発明が解決しようとする課題】
【００１２】
物理乱数生成器は、環境変動や年月の経過によって出力する乱数の乱数性が低下することが起こり得る。ＩＩＤテストのように厳密なテストを製造時にしか行わない場合、出荷後の実使用時に乱数性が下がったとしてもそれを検出することはできない。こういった事態を回避するためには、テストをオンチップで実行可能にすることが重要であるが、ＩＩＤテストは、処理コストが大きく、ＩＩＤテストを実行するテスト回路を物理乱数生成器に搭載するのは難しい。
【００１３】
１つの側面では、本発明は、回路規模を抑えた物理乱数生成器を提供することを目的とする。
【課題を解決するための手段】
【００１４】
第１の態様によれば、物理乱数生成回路の品質テスト方法であって、初期乱数列をシャッフリングすることにより生成された複数の変異乱数列それぞれの複数種類のスコアについて、種類毎にスコアの分布範囲を規定する上限値と下限値を記憶し、複数の検証乱数列を生成し、前記複数の検証乱数列のそれぞれについて前記複数種類のスコアを計算し、前記検証乱数列の前記複数スコアを、前対応する種類の前記上限値及び前記下限値と比較し、前記種類毎に、前記検証乱数列の前記複数スコアが、前記分布範囲内に分布する頻度を判定し、前記分布する頻度に基づいて、品質が不良であるか否かを判定し、前記初期乱数列のシャッフリングにより生成した複数の変異乱数列の複数のスコアについての前記上限値及び下限値の生成および記憶は、前記物理乱数生成回路の製造時に行い、前記検証乱数列の生成および品質の判定は、前記物理乱数生成回路の出荷後の通常使用時に行う物理乱数生成回路の品質テスト方法が提供される。
【００１５】
第２の態様によれば、物理乱数生成回路と、前記物理乱数生成回路が生成した初期乱数列をシャッフリングすることにより生成された複数の変異乱数列それぞれの複数種類のスコアについて、前記種類ごとにスコアの分布範囲を規定する上限値及び下限値を記憶するスコアリスト格納部と、前記物理乱数生成回路が生成した検証乱数列を記憶するサブセット乱数格納部と、前記サブセット乱数格納部に記憶された前記検証乱数列の前記複数種類のそれぞれについてスコアを計算するスコア計算回路と、前記スコア計算回路により計算された複数の前記検証乱数列の前記複数スコアの値を、前記スコアリスト格納部に記憶された前記上限値及び下限値と比較し、前記種類毎に、前記検証乱数列の前記複数スコアが、前記分布範囲に対して分布する頻度を判定する比較回路と、前記比較回路の比較結果に基づいて、前記物理乱数生成回路の品質が不良であるか否かを判定する合否判定回路と、を有し、前記スコアリスト格納部への値の記憶は、当該物理乱数生成回路の製造時に行う乱数生成器が提供される。
【００１６】
第３の態様によれば、乱数生成器と、前記乱数生成器の生成した乱数を利用した処理を行う処理部と、を有し、前記乱数生成器は、物理乱数生成回路と、前記物理乱数生成回路が生成した初期乱数列をシャッフリングすることにより生成された複数の変異乱数列それぞれの複数種類のスコアについて、前記種類ごとにスコアの分布範囲を規定する上限値及び下限値を記憶するスコアリスト格納部と、前記物理乱数生成回路が生成した検証乱数列を記憶するサブセット乱数格納部と、前記サブセット乱数格納部に記憶された前記検証乱数列の前記複数種類のそれぞれについてスコアを計算するスコア計算回路と、前記スコア計算回路により計算された複数の前記検証乱数列の前記複数スコアの値を、前記スコアリスト格納部に記憶された前記上限値及び下限値と比較し、前記種類毎に、前記検証乱数列の前記複数スコアが、前記分布範囲に対して分布する頻度を判定する比較回路と、前記比較回路の比較結果に基づいて、前記物理乱数生成回路の品質が不良であるか否かを判定する合否判定回路と、を有し、前記スコアリスト格納部への値の記憶は、当該物理乱数生成回路の製造時に行う電子装置が提供される。
【発明の効果】
【００１７】
実施形態によれば、回路規模を抑えた物理乱数生成器が実現される。
【図面の簡単な説明】
【００１８】
【図１】図１は、米国の物理乱数生成器に関する文書[SP800-90B]に準拠した一般的な物理乱数生成器の構成を示す図である。
【図２】図２は、ＩＩＤテストを実行する解析マシンの機能ブロック図である。
【図３】図３は、シャッフリングテストの大まかな処理手順を示すフローチャートである。
【図４】図４は、物理乱数生成器に、上記のシャッフリングテストを実行するための回路をオンチップ実装した場合の回路構成例を示す図である。
【図５】図５は、図４の回路構成をオンチップ実装した場合のメモリコスト（容量）を示す図である。
【図６】図６は、第１実施形態の物理乱数生成器の概略構成を示す図である。
【図７】図７は、第１実施形態の物理乱数生成器のシャッフリングテスト部の機能ブロック図である。
【図８】図８は、スコアリスト格納部において、１０組の１１種のスコア群を記憶する構成を示す図である。
【図９】図９は、第１実施形態の物理乱数生成器が、出荷後、利用者によって物理乱数生成を求められたときに実行する手順を示すフローチャートである。
【図１０】図１０は、第２実施形態の物理乱数生成器が、出荷後、利用者によって物理乱数生成を求められたときに実行する手順を示すフローチャートである。
【図１１】図１１は、物理乱数生成器を使用した暗号演算機能を持つ電子装置の構成例を示す図である。
【発明を実施するための形態】
【００１９】
図１は、米国の物理乱数生成器に関する文書[SP800-90B]に準拠した一般的な物理乱数生成器の構成を示す図である。
【００２０】
図１の物理乱数生成器１０は、物理乱数生成回路１１と、レジスタ１２と、Repetition Count Test（繰り返しカウントテスト）回路１３と、Adaptive Proportion Test (適応比例テスト）回路１４と、制御回路１５と、を有する。物理乱数生成回路１１は、熱雑音やＲＳラッチ等の公知の任意の方法で物理乱数を生成する。レジスタ１２は、物理乱数生成回路１１の生成した乱数を一時保存する。Repetition Count Test回路１３およびAdaptive Proportion Test回路１４は、受け取った乱数列の乱数性を簡易的に検定するヘルステスト回路を形成する。ヘルステスト回路は、レジスタ１２に記憶された乱数列に対して、[SP800-90B]に準拠したヘルステストと呼ばれる自己検定を行い、受け取った乱数列の乱数性を簡易的に検定する。制御回路１５は、両方のテストに合格した場合に乱数性が高いと判断し、レジスタ１２にその乱数列を出力するように指令し、一方のテストに合格しなかった場合に乱数性が低いと判断し、レジスタ１２にその乱数列を出力せずに破棄するように指令する。このように、両方のヘルステストに合格した場合のみ乱数を出力することが許される。Repetition Count Test回路１３およびAdaptive Proportion Test回路１４におけるヘルステストについては、説明を省略する。
【００２１】
[SP800-90B]では、図１のヘルステスト回路は必須とされている。ヘルステストは、物理乱数生成器１０を実際に使用する際に毎回行われる。このヘルステストにより、物理乱数生成回路が同一値を極端に連続して出力し続けるといった事態を検出することができる。
【００２２】
[SP800-90B]には、物理乱数生成器の製造時に行う厳密な乱数性のテストとして、ＩＩＤテスト(IID Test[SP800-90B])が存在する。このテストは、前述のヘルステストでは検出できない類の乱数性の低い乱数列についても検出することができる。
【００２３】
図２は、ＩＩＤテストを実行する解析マシンの機能ブロック図である。
解析マシン２０は、コンピュータ装置で実現される。解析マシン２０は、シャッフリングテストを行うシャッフリングテスト部２１と、統計テストを行う統計テスト部２２と、判定部２３と、を有する。解析マシン２０は、テスト対象の物理乱数生成器１０から乱数を１００万ビット以上取得し、この乱数をシャッフリングテストおよび統計テストにかけ、両方ともに合格の場合ＩＩＤテスト合格とする。
【００２４】
図３は、シャッフリングテストの大まかな処理手順を示すフローチャートである。
ステップＳ１０で、物理乱数生成器１０の生成する１００万ビット以上（ここでは１００万ビットとする）の乱数列を取得する。
【００２５】
ステップＳ１１で、取得した１００万ビット以上の乱数列を１０等分して、１０個の１０万ビット乱数列を生成する。
ステップＳ１２で、１０等分した各乱数列（１０万ビット乱数列）に対して、それぞれステップＳ２３までの以下の処理を実行するための設定を行う。
【００２６】
ステップＳ１３で、１１種のスコアを計算し、記憶する。１１種のスコアは、 [SP800-90B]に記載されているCompression Score，Over/Under Runs Score×2，Excursion Score，Directional Runs Score×3，Covariance Score，Collision Score×3である。
ステップＳ１４で、ステップＳ１８までの以下の処理を１０００回繰り返すための設定を行う。
【００２７】
ステップＳ１５で、１０万ビット乱数列を所定の手順でシャッフルし、変異乱数列を生成する。
ステップＳ１６で、シャッフルして生成した変異乱数列の１１種のスコアを計算する。
【００２８】
ステップＳ１７で、１１種のスコアをスコアリストに格納する。
ステップＳ１８で、繰り返し回数が１０００回になったかを判定し、１０００回になるまでＳ１４からＳ１５を繰り返す。
【００２９】
したがって、Ｓ１４からＳ１８を１０００回繰り返すことにより、シャッフルが１０００回行われ、１０００個の変異乱数列が生成され、１１種のスコアが１０００組計算され、スコアリストに格納される。
【００３０】
ステップＳ１９で、スコアリストに格納された１０００組のスコアを、スコアの種類ごとに昇順ソートする。
ステップＳ２０で、ステップＳ１３で計算したシャッフル前の１０万ビット乱数列の各スコア（ここでは原スコア）と、昇順ソートした各種のリストを比較する。
【００３１】
ステップＳ２１で、１１種の原スコアのうち、リストの５１位〜９４９位中に入るか判定し、入ればステップＳ２３に進み、入らなければステップＳ２２に進む。
ステップＳ２２で、５１位〜９４９位中に入らなかった原スコアにマークする。言い換えれば、１０００個のスコアのリストにおいて、原スコアが、５１位〜９４９位の範囲であればマークを付さず、５０位以下または９５０位以上であればマークを付す。
【００３２】
ステップＳ２３で、繰り返し回数が１０回になったかを判定し、１０回になるまでＳ１２からＳ２３を繰り返す。
以上のようにして、各種の１０個の原スコアについて、マークを付すか否かの処理が完了する。
【００３３】
ステップＳ２４で、各種について、１０個の原スコアの内８個以上でマークが付されているか判定し、８個以上でマークが付されていればステップＳ２６に進み、それ以外であれば、すなわち３個以上でマークを付されていなければステップＳ２５に進む。
【００３４】
ステップＳ２５で、テスト対象の物理乱数生成器１０を合格と判定し、ステップＳ２７に進み、終了する。
ステップＳ２６で、テスト対象の物理乱数生成器１０を不合格と判定し、ステップＳ２７に進み、終了する。
【００３５】
また、ＩＩＤテストとして記載されている統計テストでは、二種類のカイ二乗検定を行う。統計テストは、シャッフリングテストに比べて簡単なテストであり、処理コストは小さい。
【００３６】
ＩＩＤテストは、処理コストが大きいため、物理乱数生成器の使用時ではなく、製造時にのみ解析マシン上などで実施し、乱数性の低い不良な物理乱数生成器が出荷されるのを排除するために実行される。
【００３７】
以上説明したように、ヘルステスト回路は、物理乱数生成器を使用中に乱雑さが低下していないかを検知するための回路であり、[SP800-90B]準拠の物理乱数生成器であれば必ず搭載されている。しかし、ヘルステスト回路は単純な回路であるため、明らかに乱雑でないにも関わらずヘルステストによる検出を逃れる数列が存在する。例えば、010101010101010101…や、0011001100110011…や、00000000001111111111…などである。ヘルステストで検知できる偏った数列とは、同一値が極端に連続している数列や、0/1比率があまりに偏っている数列である。例に挙げた数列はこのどちらにも当てはまらないため、ヘルステストで検出することはできない。
【００３８】
このように、ヘルステストでは検出できない偏った数列が存在することが、ヘルステスト回路のみを搭載した物理乱数生成器の１つの課題である。
【００３９】
物理乱数生成器は、環境変動や年月の経過によって出力する乱数の乱数性が低下しうる。ＩＩＤテストのように厳密なテストを製造時にしか行わない場合、出荷後の実使用時に乱数性が下がったとしてもそれを検出することはできない。こういった事態を回避するためには、ＩＩＤテストに相当する厳密なテストをオンチップで実行可能にすることが重要である。厳密なテストを実行可能なテスト回路をオンチップ搭載することで、物理乱数生成装置の利用者は様々な環境下でも安全な物理乱数を得ることができ、情報セキュリティ技術を使用する製品の安全性の向上につながる。
【００４０】
前述のＩＩＤテストは、上記の課題として挙げたような偏った数列を検出することができる。しかし、ＩＩＤテストは、ヘルステストと異なり通常は物理乱数生成器の製造時に解析マシン上で実行するテストであり、テストには多くのメモリと処理時間が必要である。
【００４１】
図４は、物理乱数生成器に、上記のシャッフリングテストを実行するための回路をオンチップ実装した場合の回路構成例を示す図であり、物理乱数生成回路を合わせて示している。
物理乱数生成器は、サブセット乱数格納部３１と、シャッフル回路３２と、シャッフル乱数格納部３３と、スコア計算回路３４と、スコア格納部３５と、ソート回路３６と、スコアリスト格納部３７と、合否判定回路３８と、を有する。これらは、オンチップのコンピュータシステムで実現される。
【００４２】
上記のように、１００万ビットの乱数列を取得したのちＩＩＤテストを実行する場合、１００万ビットの乱数列を記憶する必要があり、メモリのサイズが大きくなる。そこで、図４の回路構成では、サブセット乱数格納部３１は、１０万ビットの容量を有し、サブセット乱数格納部３１に１０万ビットの乱数列が貯まるごとに、図３のＳ１４からＳ２２までを行うようにした。Ｓ１４からＳ２２までの処理が終了すると、新たに１０万ビットの乱数列を取得する。これを合計１０回繰り返す。物理乱数生成回路１１の乱数性が良好であれば、時間をおいて１０回生成した１０万ビットの乱数列は、連続して生成された１００万ビットの乱数列を１０等分に分割した乱数列と、同等のエントロピーであると考えられ、ＩＩＤテストと同等であると想定できる。これにより、物理乱数生成回路１１の生成した乱数列を記憶するメモリの容量が１／１０になる。
【００４３】
シャッフル乱数格納部３３は、１０万ビットの容量を有する。スコア格納部３５は、１１種のスコアが１０回生成され、それを記憶するため、１１種スコア(11records)（４４８ビット）×１０＝４，４８０ビットの容量を有する。
【００４４】
スコアリスト格納部３７は、シャッフルして生成した１０００個の乱数列に対してそれぞれ１１種のスコアを計算して保存し、それを１０回繰り返すので、１０００×１１種スコア(11records)×１０＝４，４８０，０００ビットの容量を有する。
【００４５】
図５は、図４の回路構成をオンチップ実装した場合のメモリコスト（容量）を示す図である。
図５に示すように、４，６８７，４８０ビットの容量が必要であり、大きなメモリコストとなる。
【００４６】
また、高性能のコンピュータを利用した解析マシン上でＩＩＤテストを実行する場合でも大きな処理コスト（時間）（例えば、１５分）が必要であり、オンチップ実装した図４の回路では、さらに処理時間が長くなる。
【００４７】
処理コストは、例えば、次の通りである。
ステップＳ１５のシャッフル計算の合計が、１０回×乱数１，０００個＝１０，０００回である。
ステップＳ１３およびＳ１６のスコア計算の合計が、１０回×乱数１，００１個×スコア１１種＝１１０，１１０回である。
【００４８】
このように、解析マシン上でなく、図４のようにオンチップ実装された回路で、物理乱数生成器の使用時にオンチップでＩＩＤテストを実行しようとした場合、多大なメモリコストおよび処理コストを要する。
【００４９】
以下に説明する実施形態の物理乱数生成器は、セルフテストでは検出できない乱数性の低い乱数の発生を検出するテストを、短時間で且つオンチップで実行する。
【００５０】
図６は、第１実施形態の物理乱数生成器の概略構成を示す図である。
第１実施形態の物理乱数生成器４０は、物理乱数生成回路４１と、レジスタ４２と、Repetition Count Test回路４３と、Adaptive Proportion Test回路４４と、制御回路４５と、解析テスト部４６と、を有する。物理乱数生成回路４１、レジスタ４２、Repetition Count Test回路４３、Adaptive Proportion Test回路４４および制御回路４５は、図１で説明した対応する要素と同じであり、説明は省略する。
【００５１】
解析テスト部４６は、オンチップのコンピュータシステムで実現され、物理乱数生成回路４１以外の他の部分と共通に実現してもよい。解析テスト部４６は、シャッフリングテスト部４７と、統計テスト部４８と、判定部４９と、を含む処理機能部を有する。統計テスト部４８および判定部４９は、図２で説明した対応する要素と同じであり、説明は省略する。シャッフリングテスト部４７は、図２で説明した対応する要素が実行するシャッフリングテストに類似のテストを行うが、ハードウエア構成および処理内容が異なり、図４のＩＩＤテストを実行する回路に比べてメモリコストおよび処理コストが小さい。
【００５２】
第１実施形態の物理乱数生成器４０は、[SP800-90B]のＩＩＤテストに類似したテストを行う解析テスト部４６を物理乱数生成器４０に組み込み、物理乱数生成回路４１が生成した物理乱数を毎回この解析テスト部４６でテストする。これによりヘルステストの問題点を補うことができるが、[SP800-90B]のＩＩＤテストと同じテストを行うのでは、前述のように、メモリコスト（容量）および処理コスト（時間）が大きくなり、オンチップ実装は難しい。例えば、シャッフリングテストの処理は高速のコンピュータで形成された解析マシン上で実行したとしても、１５分前後かかる。仮に物理乱数生成器が解析マシン並みに高性能な装置だったとしても、物理乱数が必要なときに毎回１５分待機することは現実的ではない。ましてや、スマートフォンやスマートカードに搭載される物理乱数生成器となると、その計算性能は解析マシンと比べて遥かに劣るため、テストを終えるまでにさらに長い時間を必要とすることになる。
【００５３】
そこで、物理乱数生成器の製造時に、物理乱数生成器が生成した元の乱数列をシャッフルして作った変異乱数列のスコアリストを計算し、あらかじめ不揮発性メモリ（スコアリスト格納部）に書き込んでおくことが考えられる。シャッフリングテストをオンチップ実行するときは、新たに生成した乱数列に対するスコア計算のみを行い、そのスコアとあらかじめ保存しておいたスコアリストと比較して合否判定を行う。シャッフリングテストの処理時間の長さは、シャッフルによる変異乱数の生成とそのスコア計算に起因するため、それをあらかじめ実行しておくことで処理時間を大幅に減らすことができる。
【００５４】
しかし、この手法を単純に適用した場合、変異乱数の膨大なスコアデータをすべて不揮発性メモリに保存しておく必要があり、小型の組み込み機器用の物理乱数生成器などに、そのような大容量の不揮発性メモリを搭載することは現実には難しい。
【００５５】
そこで、第１実施形態の物理乱数生成器では、さらにスコアリスト格納部の小規模化を行っている。「元々の乱数列の乱数性が高いならば、それをランダムシャッフルして生成した変異乱数列の乱数性も同様に高い。したがって、元々の乱数列のスコアと変異乱数列のスコアには有意な差がないはずである。」と想定される。シャッフリングテストの手順の意味は、この想定を確かめることにあると考えられる。乱数性の高い乱数のスコアが、変異乱数列のスコアリストと比較したときに極端に上位または極端に下位に該当する確率は低く、それが８回発生する確率は、前記の確率のマイナス８乗となる。このような現象が発生したときに、シャッフリングテストはこの物理乱数生成器の乱数性を低いものと判断し、不合格とする。
【００５６】
第１実施形態の物理乱数生成器は、元の乱数列の変異乱数列のスコアリストの、例えば上位５％および下位５％の境界スコアのみをスコアリスト格納部に保存しておく。そして、この二つの値と元々の乱数列のスコアを比較する回路を追加することで、元の乱数列のスコアが変異乱数列のスコアリストの両側５％に該当しているか否かを判別する。両側の５％に１０回中８回以上該当する確率は約１０のマイナス８乗であり、このような状態が発生したならば、元々の乱数列の乱数性が低いと断じることができる。第１実施形態の物理乱数生成器は、このようにしてＩＩＤテストのシャッフリングテストと同等レベルの判定を行う。なお、統計テストを実行するのに要するメモリコストおよび処理コストは、シャッフリングテストに比べて無視できるので、統計テストをオンチップで実行することに特に問題はないので、説明は省略する。
【００５７】
図７は、第１実施形態の物理乱数生成器４０のシャッフリングテスト部４７の機能ブロック図であり、物理乱数生成回路４１を合わせて示している。
【００５８】
第１実施形態の物理乱数生成器４０のシャッフリングテスト部４７は、サブセット乱数格納部５１と、スコア計算回路５２と、スコア格納部５３と、スコアリスト格納部５４と、スコア比較回路５５と、合否判定回路５６と、を有する。これらは、オンチップのコンピュータシステムで実現される。
【００５９】
図４の構成と比較すると、第１実施形態の物理乱数生成器４０のシャッフリングテスト部４７は、シャッフル回路３２、シャッフル乱数格納部（１０万ビット）３３およびソート回路３６が除かれ、スコア比較回路５５が追加されている。さらに、スコアリスト格納部５４のサイズが、１０×１０００×１１種スコア(11records)から１０×２×１１種スコア(11records)へ小規模化した。すなわち、スコアリスト格納部のサイズは、図４に比べて１／５００になった。スコアリスト格納部５４の詳細については後述する。
【００６０】
次に、第１実施形態の物理乱数生成器４０の製造時の処理手順および使用時の動作について説明する。
【００６１】
物理乱数生成器４０の製造時に、メーカーは次の手順を実行する。
物理乱数生成器４０に対して、図３に手順を示したシャッフリングテストを含む[SP800-90B]のＩＩＤテストを実行する。ＩＩＤテストの結果が不合格であれば、物理乱数生成器４０は破棄され、出荷されない。ＩＩＤテストの結果が合格であれば、図３のステップＳ１９で得られたソート済みの変異乱数列のスコアリストの上から５１番目および９４９番目をスコア種別ごとに取得し、物理乱数生成器４０のスコアリスト格納部５４に書き込む。スコアリストは、１０×１０万ビット乱数列に対して生成されるので、１０組のスコア群が生成される。以下、上から５１番目のスコア群を上位境界スコア、９４９番目のスコア群を下位境界スコアと呼ぶ。
【００６２】
図８は、スコアリスト格納部５４において、１０組の１１種のスコア群を記憶する構成を示す図である。
スコア群６０−１は、スコアセット０１を記憶し、スコアセット０１の１１種のスコア群Score_01〜Score_11の上位境界スコア６１−１および６２−１と、下位境界スコア６３−１および６３−１とを記憶する。言い換えれば、１１種の上位境界スコアと１１種の下位境界スコアを記憶する。他のスコア群６０−２〜６０−１０も同様である。
【００６３】
スコアは種別によってデータ長が異なり、１１種のスコアの合計データ長は４４８ビットである。１つのスコアセットは、上位・下位それぞれ１１種のスコアを持つため、合計データ長は４４８×２＝８９６ビットである。スコアリスト格納部５４は、１０個のスコアセットを保持するので、合計データ長は８９６×１０＝８９６０ビットとなる。
【００６４】
図９は、第１実施形態の物理乱数生成器４０が、出荷後、利用者によって物理乱数生成を求められたときに実行する手順を示すフローチャートである。
【００６５】
ステップＳ３０で、処理を開始する。
ステップＳ３１で、ステップＳ３５までの処理を１０回繰り返すための初期設定を行う。
ステップＳ３２で、物理乱数生成回路４１が１０万ビットの乱数列を生成し、レジスタ４２に格納する。
【００６６】
ステップＳ３３で、スコア計算回路５２が、得られた１０万ビットの乱数列に対して１１種のスコアを算出する。
ステップＳ３４で、スコア計算回路５２が、計算したスコアをスコア格納部５３に格納する。
【００６７】
ステップＳ３５で、繰り返し回数が１０回になったかを判定し、１０回になるまでＳ３１からＳ３５を繰り返す。
以上の処理により、スコア格納部５３に、１１種のスコアが１０セット格納される。
【００６８】
ステップＳ３６で、ステップＳ４０までの処理を１０回繰り返すための初期設定を行う。
ステップＳ３７で、スコア比較回路５５が、スコアリスト格納部５４から上位境界スコア（１１種）・下位境界スコア（１１種）を１セット取り出し、スコア格納部５３に格納された１セットの１１種のスコアを取出し、比較する。
【００６９】
ステップＳ３８で、スコア比較回路５５は、スコア格納部５３から取出した１セットの各種のスコアが上位境界スコアと下位境界スコアの間であればステップＳ４０に進み、それ以外であれば、ステップＳ３９に進む。
ステップＳ３９で、スコア比較回路５５は、上位境界スコアと下位境界スコアの間でなかったスコアにマークを付す。
ステップＳ４０で、繰り返し回数が１０回になったかを判定し、１０回になるまでＳ３６からＳ４０を繰り返す。
【００７０】
ステップＳ４１で、合否判定回路５６は、同種のスコアが８回以上マークされたか判定し、８回以上マークされた場合、ステップＳ４３に進み、７回以下、すなわち同種のスコアで３回以上マークが付されていない場合、ステップＳ４２に進む。
ステップＳ４２で、合否判定回路５６は、合格と判定し、ステップＳ４４に進んで終了する。
ステップＳ４３で、合否判定回路５６は、不合格と判定し、ステップＳ４４に進んで終了する。
【００７１】
以上の処理により、シャッフリングテストに合格したか判定され、合格した場合には、さらに統計テストを行い、統計テストが合格の場合、第１実施形態の物理乱数生成器４０は正常であると判定される。もし、シャッフリングテストが不合格か、シャッフリングテストは合格だが統計テストが不合格の場合、第１実施形態の物理乱数生成器４０は不正常であると判定され、その旨利用者に通知される。なお、第１実施形態では、統計テストを行うものとして説明したが、統計テストを行うか否かは任意である。
【００７２】
シャッフリングテストについては、図３に示した処理手順の場合に比べて、１／１０００になった。
【００７３】
第１実施形態の物理乱数生成器４０は、正常であると判定されると、物理乱数生成回路４１が乱数を発生し、レジスタ４２に記憶され、その乱数に対してヘルステストが行われ、不合格であれば、乱数は破棄され、合格であれば、乱数は出力される。
【００７４】
第１実施形態では、１０万ビットの乱数列を１０回生成し、１０回生成した乱数列について１１種のスコアを計算してマークを付すか否か判定し、その後１０回のうち８回、同種のスコアがマークされた場合不合格とした。これは、１０回中３回，同種のスコアがマークされなければ，そのスコアはもう計算する必要はないということである。そこで、次に説明する第２実施形態の物理乱数生成器４０は、利用者によって物理乱数生成を求められたときに実行する手順を変更して、正常であることが判明した場合には、シャッフリングテストを打ち切る。
【００７５】
第２実施形態の物理乱数生成器は、第１実施形態の物理乱数生成器４０と同じ構成を有し、合格数レジスタを設けたこと、および利用者によって物理乱数生成を求められたときに実行する手順が異なる。
図１０は、第２実施形態の物理乱数生成器４０が、出荷後、利用者によって物理乱数生成を求められたときに実行する手順を示すフローチャートである。
【００７６】
ステップＳ５０で、処理を開始する。
ステップＳ５２で、スコア別の合格数レジスタをすべてゼロにリセットする。
ステップＳ５２で、ステップＳ６０までの処理を１０回繰り返すための初期設定を行う。
ステップＳ５３で、物理乱数生成回路４１が１０万ビットの乱数列を生成し、レジスタ４２に格納する。
【００７７】
ステップＳ５４で、スコア計算回路５２が、得られた１０万ビットの乱数列に対して１１種のスコアを算出する。
ステップＳ５５で、スコア比較回路５５が、スコアリスト格納部５４から上位境界スコア（１１種）・下位境界スコア（１１種）を１セット取り出し、計算した１１種のスコアを、上位境界スコア・下位境界スコアと比較する。
【００７８】
ステップＳ５６で、スコア比較回路５５は、計算した各種のスコアが上位境界スコアと下位境界スコアの間であればステップＳ５８に進み、それ以外であれば、ステップＳ５７に進む。
ステップＳ５７で、スコア比較回路５５は、スコアごとに、上位境界スコアと下位境界スコアの間でなかった場合、合格数レジスタを１増加する。
【００７９】
ステップＳ５８で、すべてのスコアで合格数レジスタの値が３以上であるか判定し、３未満であればステップＳ６０に進み、３以上であればステップＳ５９に進み、Ｓ５２からＳ６０のループを抜ける。
ステップＳ５９で、合否判定回路５６は、合格と判定し、ステップＳ６２に進んで終了する。
【００８０】
ステップＳ６０で、繰り返し回数が１０回になったかを判定し、１０回になるまでＳ５２からＳ６０を繰り返す。
ステップＳ６１で、合否判定回路５６は、不合格と判定し、ステップＳ６２に進んで終了する。
【００８１】
これ以降の処理は、第１実施形態と同じである。
以上説明したように、第２実施形態では、すべてのスコアについて３回以上合格が出た場合には正常であることが判明するので、シャッフリングテストを打ち切ることにより、テスト速度を向上させることができる。
【００８２】
以上、第１および第２実施形態を説明したが、各種の変形例があり得る。例えば、スコアリスト格納部５４に格納するスコアは５１番目および９４９番目に限定されない。例えば、境界値および境界値で規定される範囲に入る頻度を適宜設定し、合否を判定することが可能である。
【００８３】
以上説明したように、第１および第２実施形態の物理乱数生成器は、ヘルステストに比べてより高精度に、偏った乱数列を検出することができる。前述のように、ヘルステストは01010101などといった固定パターンの繰り替えしといった数列を検出することはアルゴリズム上不可能であったが、第１および第２実施形態の物理乱数生成器は、このような数列が検出できる。さらに、第１および第２実施形態の物理乱数生成器は、[SP800-90B]のＩＩＤテストに従っているため、0/1比率の極端な偏りや同一値の極端な連続だけでなく、乱数列の各要素がそれぞれ独立で出現しているかどうかといった高度な検定を実施できる。
【００８４】
第１および第２実施形態の物理乱数生成器は、偏った乱数列（例：同一パターンの繰り返し、0/1比率が極端に偏っている（エントロピーが低い）、各要素間に相関関係があるなど）を検出する。これにより、物理乱数生成器の利用者に安全な物理乱数を提供する。安全な物理乱数をシード(seed)とすることにより、安全な秘密鍵を生成することができるため、暗号などの情報セキュリティ技術を使用する製品の安全性を向上させることができる。
【００８５】
物理乱数生成器は、環境変動や年月の経過によって出力する乱数の乱数性が低下しうる。[SP800-90B]に記載されるようにＩＩＤテストのように厳密なテストは製造時にのみ行う場合、出荷後の実使用時に乱数性が下がったとしてもそれを検出することはできない。こういった事態を回避するためには、厳密なテストをオンチップで実行可能にすることが重要である。第１および第２実施形態の物理乱数生成器は、厳密なテストをオンチップ実行可能であり、物理乱数生成器の利用者は様々な環境下でも安全な物理乱数を得ることができ、情報セキュリティ技術を使用する製品の安全性の向上につながる。
【００８６】
ここで、第１および第２実施形態の物理乱数生成器を使用する電子装置の例を説明する。
図１１は、物理乱数生成器を使用した暗号演算機能を持つ電子装置の構成例を示す図である。
【００８７】
電子装置は、物理乱数生成器４０と、擬似乱数生成装置７１と、暗号演算装置７２と、ＣＰＵ７５と、ＲＯＭ７６と、ＲＡＭ７７と、を有する。暗号演算装置７２は、共通鍵暗号回路７３と、公開鍵暗号回路７４と、を有する。物理乱数生成器４０は、第１または第２実施形態の物理乱数生成器である。擬似乱数生成装置７１は、物理乱数生成器４０の生成した物理乱数をシード(seed)として擬似乱数列を生成する。
【００８８】
暗号演算装置７２は、この擬似乱数生成装置７１を使って秘密鍵を生成し、利用者に安全な秘密鍵に基づく暗号機能を提供する。ここでは、暗号演算装置７２は、共通鍵暗号回路７３により共通鍵を生成すると共に、共通鍵に関係する暗号処理を行い、公開鍵暗号回路７４により公開鍵を生成すると共に、公開鍵に関係する暗号処理を行う。擬似乱数生成装置７１および暗号演算装置７２は、広く知られている技術により実現され、特に限定されない。
【００８９】
ＣＰＵ７５、ＲＯＭ７６およびＲＡＭ７７は、コンピュータを形成し、電子装置の処理を行う。
物理乱数生成器を必要とする電子装置は、主に暗号機能を含む製品であり、そのような電子装置では、コンピュータが暗号演算装置７２の生成する暗号を使用した処理、例えば認証処理の認証結果に応じた処理を行う。暗号機能を含む製品の具体例としてが、携帯電話、スマートカード、コンピュータ、プリンタ等が挙げられる、さらに、ゲーム機なども生成した物理乱数を利用しており、ゲーム機などの電子装置でも、第１および第２実施形態の物理乱数生成器の使用が有効である。
【００９０】
以上、実施形態を説明したが、ここに記載したすべての例や条件は、発明および技術に適用する発明の概念の理解を助ける目的で記載されたものである。特に記載された例や条件は発明の範囲を制限することを意図するものではなく、明細書のそのような例の構成は発明の利点および欠点を示すものではない。発明の実施形態を詳細に記載したが、各種の変更、置き換え、変形が発明の精神および範囲を逸脱することなく行えることが理解されるべきである。
【符号の説明】
【００９１】
４０    物理乱数生成器
４１    物理乱数生成回路
４２    レジスタ
４３    Repetition Count Test回路
４４    Adaptive Proportion Test 回路
４５    制御回路
４６    解析テスト部
４７    シャッフリングテスト部
４８    統計テスト部
４９    判定部
５１    サブセット乱数格納部
５２    スコア計算回路
５３    スコア格納部
５４    スコアリスト格納部
５５    スコア比較回路
５６    合否判定回路
【図１】
0006372295.tif 000002
【図２】
0006372295.tif 000003
【図３】
0006372295.tif 000004
【図４】
0006372295.tif 000005
【図５】
0006372295.tif 000006
【図６】
0006372295.tif 000007
【図７】
0006372295.tif 000008
【図８】
0006372295.tif 000009
【図９】
0006372295.tif 000010
【図１０】
0006372295.tif 000011
【図１１】
0006372295.tif 000012