(57)【要約】【課題】物理乱数列のエントロピーに変動がある場合であっても、適切なエントロピー圧縮を実行できる効率的な制御回路を備えた物理乱数生成装置を提供する。【解決手段】物理乱数生成装置は、物理乱数を生成する物理乱数生成部と、物理乱数の乱数性を判定するためのテスト処理を実行するテスト部と、テスト処理の一環として生成された統計情報に基づいて最小エントロピーを推定する最小エントロピー推定部と、物理乱数を入力として受け取りエントロピー圧縮処理を行うエントロピー圧縮部と、エントロピー圧縮部によるエントロピー圧縮処理への入力となる物理乱数の入力ビット数を最小エントロピーに基づいて制御するエントロピー制御部とを含む。【選択図】図１
2015102981.tif 000002
【特許請求の範囲】
【請求項１】
物理乱数を生成する物理乱数生成部と、
前記物理乱数の乱数性を判定するためのテスト処理を実行するテスト部と、
前記テスト処理の一環として生成された統計情報に基づいて最小エントロピーを推定する最小エントロピー推定部と、
前記物理乱数を入力として受け取りエントロピー圧縮処理を行うエントロピー圧縮部と、
前記エントロピー圧縮部による前記エントロピー圧縮処理への入力となる前記物理乱数の入力ビット数を前記最小エントロピーに基づいて制御するエントロピー制御部と
を含む物理乱数生成装置。
【請求項２】
前記統計情報は、前記物理乱数の所定数のビットのうちで先頭ビットと同値である後続ビットの数である請求項１記載の物理乱数生成装置。
【請求項３】
前記最小エントロピー推定部は、前記統計情報に応じた値と最小エントロピーの推定値とを対応付けたルックアップテーブルを含む請求項２記載の物理乱数生成装置。
【請求項４】
前記エントロピー圧縮部による前記エントロピー圧縮処理は、前記制御された入力ビット数の前記物理乱数に基づいて、前記制御された入力ビット数の大小に関わらず、固定のビット長の乱数列を出力する請求項１乃至３いずれか一項記載の物理乱数生成装置。
【請求項５】
前記所定数のビットの前記物理乱数を１セットとして複数セット分の前記物理乱数を累積していき、前記エントロピー制御部は、前記所定数と前記最小エントロピーとの積を前記複数セット分足し合わせた値が所定のエントロピー値を超えたときに、前記累積された前記物理乱数を前記エントロピー圧縮処理の入力とする請求項２記載の物理乱数生成装置。
【請求項６】
前記所定数のビットの前記物理乱数を１セットとして、前記最小エントロピーが所定値以上であるセットの前記物理乱数を複数セット分累積していき、前記エントロピー制御部は、累積したセット数が所定値を超えたときに、前記累積された前記物理乱数を前記エントロピー圧縮処理の入力とする請求項２記載の物理乱数生成装置。
【請求項７】
前記所定数のビットの前記物理乱数を１セットとして複数セット分の前記物理乱数を累積していき、前記エントロピー制御部は、前記所定数と前記最小エントロピーに応じた値との積を前記複数セット分足し合わせた値が所定の閾値を超えたときに、前記累積された前記物理乱数を前記エントロピー圧縮処理の入力とし、前記最小エントロピーに応じた値は前記最小エントロピー以下の値である請求項２記載の物理乱数生成装置。
【請求項８】
物理乱数を生成し、
前記物理乱数の乱数性を判定するためのテスト処理を実行し、
前記テスト処理の一環として生成された統計情報に基づいて最小エントロピーを推定し、
前記最小エントロピーに基づいて決定したビット数の物理乱数を蓄積し、
前記蓄積した物理乱数を入力としてエントロピー圧縮処理を行う
各段階を含む物理乱数生成方法。
【請求項９】
ＣＰＵと、
メモリと、
暗号演算装置と、
物理乱数生成装置と
を含み、前記物理乱数生成装置は、
物理乱数を生成する物理乱数生成部と、
前記物理乱数の乱数性を判定するためのテスト処理を実行するテスト部と、
前記テスト処理の一環として生成された統計情報に基づいて最小エントロピーを推定する最小エントロピー推定部と、
前記物理乱数を入力として受け取りエントロピー圧縮処理を行うエントロピー圧縮部と、
前記エントロピー圧縮部による前記エントロピー圧縮処理の入力となる前記物理乱数の入力ビット数を前記最小エントロピーに基づいて制御するエントロピー制御部と
を含む物理乱数生成システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本願開示は、物理乱数生成装置、物理乱数生成方法、及び物理乱数生成システムに関する。
【背景技術】
【０００２】
暗号方式に用いられる秘密鍵は、一般に、乱数により生成される。乱数は、その生成法によって、擬似乱数と物理乱数（真性乱数）とに大別される。擬似乱数とは、確定的な計算によって作り出された数列の一部分のことであり、擬似乱数生成アルゴリズムに、シードとよばれる初期値を与えることにより、擬似的な乱数列が生成される。擬似乱数は、その生成手法（擬似乱数生成アルゴリズム）とシードとが分かれば理論的には予測可能であり、また内部の初期値（シード）が分かれば、予め計算しておくこともできる。このため、秘密鍵を生成する手段として擬似乱数だけを用いることは、安全性に問題がある。
【０００３】
一方、物理乱数とは、デバイス中の熱雑音などのように、本質的にランダムな物理現象を利用することによって乱数を生成する手法である。この乱数は、再現性がなく、誰にも予測することが不可能であるため、秘密鍵の生成法として非常に安全性が高い。
【０００４】
しかし、物理乱数生成器は温度や電圧といった環境の変動の影響を受けてしまい、環境によっては出力される乱数の乱雑さが大きく低下することが知られている。乱雑さの低い乱数は容易に予測されてしまう危険性があるため、そのまま秘密鍵生成に使用することは避けるべきである。そこで、物理乱数の乱雑さを補正することができる回路を通したうえで、秘密鍵生成等のセキュアな用途に使用することが好ましい。
【０００５】
物理乱数の乱雑さを補正する回路としては、エントロピー圧縮装置を用いることができる。例えば、１ビット当たりのエントロピーが０．５ビットである１０ビット長の乱数列を入力として、エントロピー圧縮装置によりエントロピー圧縮することにより、１ビット当たりのエントロピーが１．０ビットである５ビット長の乱数列を出力することができる。この例では、エントロピー圧縮を行うことにより、１ビット当たりのエントロピーが０．５ビットから１．０ビットに増加している。エントロピー圧縮の前後において、出力乱数の１ビット当たりのエントロピーは入力乱数の１ビット当たりのエントロピーを上回るが、出力乱数全体のエントロピーが入力乱数全体のエントロピーを上回ることはない。最も効率が良い場合、エントロピー圧縮装置の出力乱数全体のエントロピーは、入力乱数全体のエントロピーと等しくなる。
【０００６】
物理乱数生成器が出力するＮビットの乱数列をエントロピー圧縮装置に入力し、エントロピー圧縮し、Ｌビットの乱数列をエントロピー圧縮装置から出力する場合を考える。物理乱数生成器が出力する乱数列の最小エントロピーＭを推定し、その値に応じてエントロピー圧縮装置への入力乱数列の長さＮを決定する。最小エントロピーＭが低ければ低いほど、所望のエントロピーを有するビット長Ｌの物理乱数列を生成するためには、エントロピー圧縮装置への入力として長いビット長の乱数（即ちＮの値の大きな乱数）が必要になる。エントロピー圧縮装置への入力長であるＮは、製造時に推定される１ビット当たりの最小エントロピーＭ、最終的な物理乱数列に求められる１ビット当たりのエントロピーＥ、及び出力長Ｌに基づいて、次式により決定される。
【０００７】
Ｎ＝ＥＬ／Ｍ                                                            （１）
上記のエントロピー圧縮装置への入力長Ｎは、製造時に算出されて決定される固定値である。従って、実際の実行時に物理乱数生成器が出力する乱数列のエントロピーが推定最小エントロピーＭを上回っていた場合、エントロピー圧縮装置への入力乱数列はＮビットの長さを必要としないにも関わらず、常にＮビットの乱数列が入力されてしまう。エントロピー圧縮装置の処理時間は入力長Ｎに比例するため、この場合、無駄な処理のために無駄な処理時間を費やしていることになる。
【０００８】
また実際の実行時に、物理乱数生成器が出力する乱数列のエントロピーが推定最小エントロピーＭを下回ってしまう場合もある。物理乱数生成器に対する冷却スプレー等による悪意のある冷却行為や、経年劣化等に起因して、このような現象が発生することが考えられる。この場合、エントロピー圧縮装置は、Ｎビットの入力乱数列からでは、最終的に必要なエントロピーを有するビット長Ｌの出力乱数列を生成することができない。
【０００９】
上記のように物理乱数生成器が実際に出力する乱数列のエントロピーに変動がある場合であっても、適切なエントロピー圧縮を実行できるように、何らかの制御を実行することが好ましい。その際、生成されたエントロピー圧縮後の乱数は、小型で携帯可能であるスマートカードや携帯電話等における暗号通信やデジタル署名認証に使用されることがあるので、追加の制御部分に係る回路規模は成る可く小さいことが望ましい。また適切なエントロピー圧縮を実現するために追加された制御により、エントロピー圧縮された乱数を生成するための処理の速度が成る可く低下しないことが望ましい。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特許第４５２７１２７号公報
【特許文献２】特開平８−５１２４３８号公報
【特許文献３】特表２０１１−５３０７１９号公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
以上を鑑みると、物理乱数生成器が実際に出力する乱数列のエントロピーに変動がある場合であっても、適切なエントロピー圧縮を実行できる効率的な制御回路を備えた物理乱数生成装置が望まれる。
【課題を解決するための手段】
【００１２】
物理乱数生成装置は、物理乱数を生成する物理乱数生成部と、前記物理乱数の乱数性を判定するためのテスト処理を実行するテスト部と、前記テスト処理の一環として生成された統計情報に基づいて最小エントロピーを推定する最小エントロピー推定部と、前記物理乱数を入力として受け取りエントロピー圧縮処理を行うエントロピー圧縮部と、前記エントロピー圧縮部による前記エントロピー圧縮処理への入力となる前記物理乱数の入力ビット数を前記最小エントロピーに基づいて制御するエントロピー制御部とを含む。
【００１３】
物理乱数生成方法は、物理乱数を生成し、前記物理乱数の乱数性を判定するためのテスト処理を実行し、前記テスト処理の一環として生成された統計情報に基づいて最小エントロピーを推定し、前記最小エントロピーに基づいて決定したビット数の物理乱数を蓄積し、前記蓄積した物理乱数を入力としてエントロピー圧縮処理を行う各段階を含む。
【発明の効果】
【００１４】
少なくとも１つの実施例によれば、物理乱数生成器が実際に出力する乱数列のエントロピーに変動がある場合であっても、適切なエントロピー圧縮を実行することができる。
【図面の簡単な説明】
【００１５】
【図１】物理乱数生成装置の構成の一例を示す図である。
【図２】最小エントロピー推定回路とヘルステスト回路との関係を示す図である。
【図３】最小エントロピー推定回路の構成の一例を示す図である。
【図４】物理乱数生成装置の詳細な構成の一例を示す図である。
【図５】エントロピー推定用制御回路の動作の一例を示すフローチャートである。
【図６】エントロピー推定用制御回路の動作の別の一例を示すフローチャートである。
【図７】エントロピー推定用制御回路の動作の更なる別の一例を示すフローチャートである。
【図８】最小エントロピー推定用の変換テーブルの一例を示す図である。
【図９】エントロピー圧縮装置の構成の一例を示す図である。
【図１０】図４に示すエントロピー圧縮装置の処理速度に関する効果を示す表である。
【図１１】暗号処理システムの構成の一例を示す図である。
【発明を実施するための形態】
【００１６】
以下に、本発明の実施例を添付の図面を用いて詳細に説明する。なお以降の各図において、同一又は対応する構成要素は同一又は対応する番号で参照し、その説明は適宜省略する。
【００１７】
図１は、物理乱数生成装置の構成の一例を示す図である。図１に示す物理乱数生成装置は、物理乱数生成回路１０、レジスタ１１、ヘルステスト回路１２、制御回路１３、エントロピー圧縮装置１４、最小エントロピー推定回路１５、及びエントロピー推定用制御回路１６を含む。図１及び以降の同様の図において、各ボックスで示される各回路又は機能ブロックと他の回路又は機能ブロックとの境界は、基本的には機能的な境界を示すものであり、物理的な位置の分離、電気的な信号の分離、制御論理的な分離等に対応するとは限らない。各回路又は機能ブロックは、他のブロックと物理的にある程度分離された１つのハードウェアモジュールであってもよいし、或いは他のブロックと物理的に一体となったハードウェアモジュール中の１つの機能を示したものであってもよい。
【００１８】
物理乱数生成回路１０は、物理乱数を生成する物理乱数生成部である。物理乱数生成回路１０が物理乱数を１ビットずつ生成し、生成した物理乱数をレジスタ１１に送る。レジスタ１１には、１ビットずつ供給された物理乱数の所定数のビットが格納される。
【００１９】
ヘルステスト回路１２は、物理乱数生成回路１０が生成した物理乱数の乱数性を判定するためのテスト処理を実行するテスト部である。具体的には、ヘルステスト回路１２は、物理乱数の所定数のビットに対して、乱数性を判定するためのテスト処理を実行する。なお、米国の国立標準技術研究所が定めるＳＰ８００−９０Ｂに準拠する物理乱数生成器においては、特定のヘルステストを実行することが要求されている。制御回路１３は、ヘルステスト回路１２のテスト処理の結果が良好な乱数性を示す場合、レジスタ１１に格納されている物理乱数の所定数のビットをエントロピー圧縮装置１４に供給する。制御回路１３は、ヘルステスト回路１２のテスト処理の結果が良好な乱数性を示さない場合、レジスタ１１に格納されている物理乱数の所定数のビットを破棄してよい。
【００２０】
最小エントロピー推定回路１５は、ヘルステスト回路１２により実行されるテスト処理の一環として生成された統計情報に基づいて、最小エントロピーを推定する。回路構成としては、最小エントロピー推定回路１５とヘルステスト回路１２とは、上記の統計情報を生成する処理部分を共有することになる。最小エントロピー推定回路１５とヘルステスト回路１２とで回路を共有することで、回路規模の増大を抑えることができる。また統計情報の取得をテスト処理の一環として実行すると共に、残りの最小エントロピー推定処理を残りのテスト処理の部分と並行して実行することで、最小エントロピー推定を実行することによる全体の処理速度の低下を最小限に抑えることができる。
【００２１】
エントロピー圧縮装置１４は、レジスタ１１から供給される物理乱数を入力として受け取りエントロピー圧縮処理を行う。エントロピー推定用制御回路１６は、エントロピー圧縮装置１４によるエントロピー圧縮処理への入力となる物理乱数の入力ビット数を、上記最小エントロピーに基づいて制御するエントロピー制御部である。具体的には、エントロピー推定用制御回路１６は、最小エントロピーが小さい場合には入力ビット数を相対的に多くし、最小エントロピーが大きい場合には入力ビット数を相対的に少なくする。
【００２２】
図２は、最小エントロピー推定回路とヘルステスト回路との関係を示す図である。図２に示されるように、ヘルステスト回路１２は、統計情報取得回路１２Ａとその他のヘルステスト処理１２Ｂとに分割することができる。同様に、最小エントロピー推定回路１５は、統計情報取得回路１５Ａと最小エントロピー算出回路１５Ｂとに分割することができる。ここで、統計情報取得回路１２Ａが行う統計情報取得処理と統計情報取得回路１５Ａが行う統計情報取得処理とは、同一の処理である。
図１に示す物理乱数生成装置においては、図２に示すように、統計情報取得回路１２Ａ（統計情報取得回路１５Ａと機能的に同一）を、ヘルステスト処理と最小エントロピー推定処理との２つの処理により共有する。即ち、統計情報取得回路１２Ａが生成した統計情報を用いて、その他のヘルステスト処理１２Ｂにより、ヘルステスト処理を実行する。更に、統計情報取得回路１２Ａが生成した統計情報を用いて、最小エントロピー算出回路１５Ｂにより、最小エントロピー算出処理（推定処理）を実行する。
【００２３】
図３は、最小エントロピー推定回路の構成の一例を示す図である。図３に示す最小エントロピー推定回路は、統計情報取得回路１２Ａ、統計値変換回路１５Ｂ−１、及び最小エントロピー供給回路１５Ｂ−２を含む。統計情報取得回路１２Ａは、物理乱数の所定数（ｎ個）のビットに基づいて統計情報を生成する。統計値変換回路１５Ｂ−１は、統計情報取得回路１２Ａが生成した統計情報を、当該統計情報に応じた値に変換する。最小エントロピー供給回路１５Ｂ−２は、統計情報に応じた値（図３に示す統計値）Ｃ１乃至Ｃｎ／２と最小エントロピーの推定値Ｆ（Ｃ１）乃至Ｆ（Ｃｎ／２）とを対応付けたルックアップテーブルである。最小エントロピー供給回路１５Ｂ−２に対して統計値変換回路１５Ｂ−１が出力する統計情報に応じた値を供給し、この統計情報に応じた値に対応する最小エントロピー推定値をルックアップテーブルから読み出して出力する。これにより、物理乱数の所定数（ｎ個）のビットに対する最小エントロピーを推定することができる。
【００２４】
図３に示す最小エントロピー推定回路の構成の一例では、統計情報に応じた値から最小エントロピーを求める部分をルックアップテーブル化している。このようにルックアップテーブルを用いることにより、最小エントロピー推定の処理速度を向上させることができる。
【００２５】
図４は、物理乱数生成装置の詳細な構成の一例を示す図である。物理乱数生成装置は、物理乱数生成回路１０、レジスタ１１、ヘルステスト回路１２、エントロピー圧縮装置１４、エントロピー推定用制御回路１６、統計値変換回路１５Ｂ−１、最小エントロピー供給回路１５Ｂ−２、出力回路２３、及びＡＮＤ回路２４を含む。出力回路２３及びＡＮＤ回路２４は、図１の制御回路１３に相当する。
【００２６】
ヘルステスト回路１２は、リピティション・カウント・テスト回路２１及びアダプティブ・プロポーション・テスト回路２２を含む。リピティション・カウント・テスト回路２１によるRepetition Count Test及びアダプティブ・プロポーション・テスト回路２２によるAdaptive Proportion Testは、米国の国立標準技術研究所が定めるＳＰ８００−９０Ｂに規定されるテストである。
【００２７】
Repetition Count Testは、偶然起こりうる範囲を超えて同一値が連続で出現しているか否かを判定するテストである。このテストでは乱数を１ビットずつ検査し、検査したビット値が一定回数以上連続する同一値である場合には、テストに不合格となる。Adaptive Proportion Testは、局所的な乱数の偏りを判定するテストである。乱数を１＋Ｗビット受け取り、末尾Ｗビット中に最初の１ビットと同一の値が幾つあるかを計数し、計数値が一定値以上になると、テストに不合格となる。リピティション・カウント・テスト回路２１が出力するテスト結果は、テスト合格の時に１となり、テスト不合格の時に０となってよい。
【００２８】
アダプティブ・プロポーション・テスト回路２２は、統計情報取得回路１２Ａ及び統計情報判定回路２２Ａを含む。統計情報取得回路１２Ａは、アダプティブ・プロポーション・テスト及び最小エントロピー推定において共通に用いる統計情報を生成する。この統計情報は、物理乱数の所定数のビットのうちで先頭ビットと同値である後続ビットの数であってよい。統計情報判定回路２２Ａは、この統計情報が一定値以上であるか否かを判定することにより、Adaptive Proportion Testの合否を示す結果を出力してよい。アダプティブ・プロポーション・テスト回路２２が出力するテスト結果は、テスト合格の時に１となり、テスト不合格の時に０となってよい。
【００２９】
リピティション・カウント・テスト回路２１が出力するテスト結果とアダプティブ・プロポーション・テスト回路２２が出力するテスト結果とは、ＡＮＤ回路２４に供給される。両テストの結果が合格を示すとき、ＡＮＤ回路２４の出力信号はＨＩＧＨにアサートされる。このＡＮＤ回路２４の出力信号のアサートに応じて、出力回路２３が、レジスタ１１に格納される物理乱数の所定数（ｎ個：ｎは２以上の整数）のビットをエントロピー圧縮装置１４に供給する。
【００３０】
以下に、図４の物理乱数生成装置の動作について説明する。まず物理乱数生成回路１０が物理乱数を１ビット生成する。物理乱数生成回路１０が生成した１ビットの物理乱数は、レジスタ１１、リピティション・カウント・テスト回路２１、及びアダプティブ・プロポーション・テスト回路２２の統計情報取得回路１２Ａに供給される。
【００３１】
物理乱数生成回路１０による１ビットの物理乱数生成をｎ回繰り返すことにより、加算回路１１にはｎビットの物理乱数が格納される。リピティション・カウント・テスト回路２１は、１ビットずつ供給される物理乱数に対してRepetition Count Testを実行し、テストの合否を示すテスト結果を生成する。アダプティブ・プロポーション・テスト回路２２の統計情報取得回路１２Ａは、物理乱数生成回路１０が生成したｎビットの物理乱数に対して、統計情報ｃ（先頭ビットと同値である後続ビットの数）を出力する。統計情報判定回路２２Ａは、統計情報ｃに基づいてAdaptive Proportion Testの残り部分の処理を実行し、テスト結果を示す信号を出力する。
【００３２】
統計値変換回路１５Ｂ−１は、統計情報ｃ及び所定数ｎに基づいて、ｎビットの物理乱数中で１と０との何れか出現数が多い方の出現数を統計値として求める。この計算は、ｃ＋１とｎ−ｃ＋１との何れか大きい方を選択して統計値として出力すればよい。統計値変換回路１５Ｂ−１の出力である統計値をＣｍａｘとする。最小エントロピー供給回路１５Ｂ−２は、図４に示される計算を行うことにより、所定数ｎと統計値Ｃｍａｘとから最小エントロピーの推定値を算出する。推定された最小エントロピーは、エントロピー推定用制御回路１６に供給される。この最小エントロピー供給回路１５Ｂ−２は、図３を用いて説明したように、ルックアップテーブルとして実現することが可能である。
【００３３】
ＡＮＤ回路２４は、リピティション・カウント・テスト回路２１のテスト結果とアダプティブ・プロポーション・テスト回路２２のテスト結果とのＡＮＤ演算を行い、ＡＮＤ演算の結果を出力回路２３とエントロピー推定用制御回路１６とに供給する。出力回路２３は、２つのテストのうちの少なくとも一方のテスト結果が不合格を示す場合、物理乱数をエントロピー圧縮装置１４に供給しない。出力回路２３は、両方のテスト結果が合格を示す場合、レジスタ１１に格納されるｎビットの物理乱数をエントロピー圧縮装置１４に供給する。
【００３４】
エントロピー推定用制御回路１６は、ＡＮＤ回路２４の出力がＨＩＧＨの場合（即ち両方のテスト結果が合格を示す場合）、最小エントロピー供給回路１５Ｂ−２から供給される最小エントロピーに応じてエントロピー圧縮装置１４の制御を行う。具体的には、エントロピー推定用制御回路１６は、エントロピー圧縮装置１４によるエントロピー圧縮処理への入力となる物理乱数の入力ビット数を最小エントロピーに基づいて制御する。この際、エントロピー推定用制御回路１６は、最小エントロピーが小さい場合には入力ビット数を相対的に多くし、最小エントロピーが大きい場合には入力ビット数を相対的に少なくする。エントロピー推定用制御回路１６の制御動作については後程詳細に説明する。
【００３５】
エントロピー圧縮装置１４によるエントロピー圧縮処理は、制御された入力ビット数の物理乱数に基づいて、制御された入力ビット数の大小に関わらず、固定のビット長の乱数列を出力する。即ち、最小エントロピーが小さい場合には比較的多くの入力ビット数を用いることにより、乱数列全体での適切な入力エントロピーを確保し、少なくとも所望のエントロピー値を有した固定のビット長の乱数列を出力する。また最小エントロピーが大きい場合には比較的少ない入力ビット数を用いることにより、エントロピー圧縮にかかる時間を削減しながらも、少なくとも所望のエントロピー値を有した固定のビット長の乱数列を出力する。
【００３６】
図５は、エントロピー推定用制御回路の動作の一例を示すフローチャートである。この処理では、所定数（ｎ個）のビットの物理乱数を１セットとして、複数セット分の物理乱数を累積していく。エントロピー推定用制御回路１６は、所定数と最小エントロピーとの積を複数セット分足し合わせた値が所定のエントロピー値を超えたときに、累積された物理乱数をエントロピー圧縮処理の入力とする。なお図５のフローチャートでは、ヘルステストに不合格となった物理乱数は対象としていない。即ち、ヘルステストに合格したｎビットの物理乱数及びそれに対応する最小エントロピーが、図５のフローチャートの処理の対象となっている。これは、図５以降の図６及び図７に示すフローチャートについても同様である。
【００３７】
なお図５及び以降の図において、フローチャートに記載された各ステップの実行順序は一例にすぎず、本願の意図する技術範囲が、記載された実行順番に限定されるものではない。例えば、Ａステップの次にＢステップが実行されるように本願に説明されていたとしても、Ａステップの次にＢステップを実行することが可能なだけでなく、Ｂステップの次にＡステップを実行することが、物理的且つ論理的に可能である場合がある。この場合、どちらの順番でステップを実行しても、当該フローチャートの処理に影響する全ての結果が同一であるならば、本願に開示の技術の目的のためには、Ｂステップの次にＡステップが実行されてもよいことは自明である。Ａステップの次にＢステップが実行されるように本願に説明されていたとしても、上記のような自明な場合を本願の意図する技術範囲から除外することを意図するものではなく、そのような自明な場合は、当然に本願の意図する技術範囲内に属する。
【００３８】
以下の説明において、エントロピー圧縮装置１４が出力する最終的な物理乱数列に求められる１ビット当たりのエントロピーをＥ、その出力長をＬビットとする。ステップＳ１で、エントロピー推定用制御回路１６は変数ＳＵＭをゼロに初期化する。ステップＳ２で、エントロピー推定用制御回路１６は最小エントロピー供給回路１５Ｂ−２から推定された最小エントロピーＭｅを受け取る。ステップＳ３で、出力回路２３は、ｎビットの物理乱数をエントロピー圧縮装置１４に送信する。エントロピー圧縮装置１４は、受信したｎビットの物理乱数をラッチ等に格納することにより、過去の受信分と共に累積していく。即ち、過去にｎビットの物理乱数をｍ回受信すると、ｍ回の受信により得られた物理乱数を纏めることにより、ｍ×ｎビットの物理乱数をラッチ等に格納しておく。
【００３９】
ステップＳ４で、エントロピー推定用制御回路１６は、変数ＳＵＭにｎ×Ｍｅを加算する。ステップＳ５で、エントロピー推定用制御回路１６は、変数ＳＵＭの値がＥ×Ｌよりも大きいか否かを判定する。判定結果がＮＯであれば、ステップＳ２に戻り、以降の処理を繰り返す。判定結果がＹＥＳであれば、ステップＳ６で、エントロピー推定用制御回路１６はエントロピー圧縮装置１４に入力完了信号を送信する。
【００４０】
エントロピー圧縮装置１４は、入力完了信号に応答して、ステップＳ１以降に受信した物理乱数の全てのビットを入力として、エントロピー圧縮処理を実行する。エントロピー圧縮装置１４の構成及び動作の一例については、後程詳細に説明する。
【００４１】
上記の処理手順では、推定最小エントロピーＭｅの値を常に信用し、Ｍｅの値を基準に最適な入力長を計算する。推定最小エントロピーＭｅが適切な推定値であれば、高速にエントロピー圧縮が可能であり、ＥＬ以上のエントロピーを有した物理乱数列を最終的に生成することができる。
【００４２】
図６は、エントロピー推定用制御回路の動作の別の一例を示すフローチャートである。この処理では、所定数（ｎ個）のビットの物理乱数を１セットとして、最小エントロピーが所定値以上であるセットの物理乱数を複数セット分累積していく。エントロピー推定用制御回路１６は、累積したセット数が所定値を超えたときに、累積された物理乱数をエントロピー圧縮処理の入力とする。
【００４３】
以下の説明において、エントロピー圧縮装置１４が出力する最終的な物理乱数列に求められる１ビット当たりのエントロピーをＥ、その出力長をＬビットとする。また物理乱数生成装置の製造時に行った試験により決定される値として、物理乱数生成回路１０が生成する１ビット当たりの最小エントロピーをＭとする。
【００４４】
ステップＳ１１で、変数ＮＵＭの値をＥ×Ｌ／（Ｍ×ｎ）として、メモリ等に記憶しておく。この変数ＮＵＭの値は、物理乱数生成装置の製造時に計算し、不揮発性メモリ等に記憶しておいてよい。ステップＳ１２で、エントロピー推定用制御回路１６は変数ＳＵＭをゼロに初期化する。ステップＳ１３で、エントロピー推定用制御回路１６は最小エントロピー供給回路１５Ｂ−２から推定された最小エントロピーＭｅを受け取る。ステップＳ１４で、出力回路２３は、ｎビットの物理乱数をエントロピー圧縮装置１４に送信する。エントロピー圧縮装置１４は、受信したｎビットの物理乱数をラッチ等に格納することにより、過去の受信分と共に累積していく。即ち、過去にｎビットの物理乱数をｍ回受信すると、ｍ回の受信により得られた物理乱数を纏めることにより、ｍ×ｎビットの物理乱数をラッチ等に格納しておく。
【００４５】
ステップＳ１５で、エントロピー推定用制御回路１６は、推定最小エントロピーＭｅが最小エントロピーＭよりも小さいか否かを判定する。判定結果がＮＯの場合、ステップＳ１６で、エントロピー推定用制御回路１６は、破棄を指示する制御情報をエントロピー圧縮装置１４に送り、今回受信したｎビットの物理乱数をエントロピー圧縮装置１４に破棄させる。その後、手順はステップＳ１３に戻り、以降の処理を繰り返す。判定結果がＹＥＳの場合、ステップＳ１７で、エントロピー推定用制御回路１６は、変数ＳＵＭに１を加算する。ステップＳ１８で、エントロピー推定用制御回路１６は、変数ＳＵＭの値がステップＳ１で求めた変数ＮＵＭよりも小さいか否かを判定する。判定結果がＹＥＳであれば、ステップＳ１３に戻り、以降の処理を繰り返す。判定結果がＮＯであれば、ステップＳ１９で、エントロピー推定用制御回路１６は、エントロピー圧縮装置１４に入力完了信号を送信する。
【００４６】
エントロピー圧縮装置１４は、入力完了信号に応答して、ステップＳ１２以降に受信した物理乱数の全てのビットを入力として、エントロピー圧縮処理を実行する。エントロピー圧縮装置１４の構成及び動作の一例については、後程詳細に説明する。
【００４７】
上記の処理手順では、推定最小エントロピーＭｅの値が製造時に求めた最小エントロピーＭ未満である場合、エントロピー低下が起こったと判断し、安全のためにその時の物理乱数を破棄する。図５に示した動作例と比較して、図６に示した動作例は、動作速度が劣るが、より確実にＥＬ以上のエントロピーを有する物理乱数列を最終的に生成することができる。
【００４８】
図７は、エントロピー推定用制御回路の動作の更なる別の一例を示すフローチャートである。この処理では、所定数（ｎ個）のビットの物理乱数を１セットとして、複数セット分の物理乱数を累積していく。エントロピー推定用制御回路１６は、所定数と最小エントロピーに応じた値との積を複数セット分足し合わせた値が所定の閾値を超えたときに、累積された物理乱数をエントロピー圧縮処理の入力とする。ここでいう最小エントロピーに応じた値とは、最小エントロピー以下の値である。
【００４９】
以下の説明において、エントロピー圧縮装置１４が出力する最終的な物理乱数列に求められる１ビット当たりのエントロピーをＥ、その出力長をＬビットとする。また物理乱数生成装置の製造時に行った試験により決定される値として、物理乱数生成回路１０が生成する１ビット当たりの最小エントロピーをＭとする。更に、物理乱数生成装置の製造時に決定される値として、十分大きなエントロピー値ＴＶを定めておく。ＴＶは、Ｍ≦ＴＶを満たすように任意に選択された値である。
【００５０】
ステップＳ２１で、エントロピー推定用制御回路１６は変数ＳＵＭをゼロに初期化する。ステップＳ２２で、エントロピー推定用制御回路１６は最小エントロピー供給回路１５Ｂ−２から推定された最小エントロピーＭｅを受け取る。ステップＳ２３で、出力回路２３は、ｎビットの物理乱数をエントロピー圧縮装置１４に送信する。エントロピー圧縮装置１４は、受信したｎビットの物理乱数をラッチ等に格納することにより、過去の受信分と共に累積していく。即ち、過去にｎビットの物理乱数をｍ回受信すると、ｍ回の受信により得られた物理乱数を纏めることにより、ｍ×ｎビットの物理乱数をラッチ等に格納しておく。
【００５１】
ステップＳ２４で、エントロピー推定用制御回路１６は、最小エントロピーＭ及び十分大きなエントロピー値ＴＶとに対する推定最小エントロピーＭｅの大小関係を判定する。ＭｅがＴＶ以上である場合、ステップＳ２５−１で、エントロピー推定用制御回路１６は、変数ＭｉｎＥｎｔｒｏｐｙの値をＴＶに設定する。ＭｅがＴＶ未満且つＭ以上である場合、ステップＳ２５−２で、エントロピー推定用制御回路１６は、変数ＭｉｎＥｎｔｒｏｐｙの値をＭに設定する。ＭｅがＭ未満である場合、ステップＳ２５−３で、エントロピー推定用制御回路１６は、変数ＭｉｎＥｎｔｒｏｐｙの値をＭｅに設定する。このように、Ｍｅの値が、最も下の範囲に属する場合には変数ＭｉｎＥｎｔｒｏｐｙの値としてＭｅの値を採用し、それ以外の範囲に属する場合には、変数ＭｉｎＥｎｔｒｏｐｙの値として当該範囲の最小値を採用する。
【００５２】
ステップＳ２６で、エントロピー推定用制御回路１６は、変数ＳＵＭにｎ×ＭｉｎＥｎｔｒｏｐｙを加算する。ステップＳ２７で、エントロピー推定用制御回路１６は、変数ＳＵＭの値がＥ×Ｌよりも大きいか否かを判定する。判定結果がＮＯであれば、ステップＳ２２に戻り、以降の処理を繰り返す。判定結果がＹＥＳであれば、ステップＳ２８で、エントロピー推定用制御回路１６はエントロピー圧縮装置１４に入力完了信号を送信する。
【００５３】
エントロピー圧縮装置１４は、入力完了信号に応答して、ステップＳ２１以降に受信した物理乱数の全てのビットを入力として、エントロピー圧縮処理を実行する。エントロピー圧縮装置１４の構成及び動作の一例については、後程詳細に説明する。
【００５４】
上記の処理手順では、安全を重視した処理を行っている。推定される最小エントロピーの値はあくまでも推定値であるため、常に真の最小エントロピーが得られているとは限らない。従って、所望値以上のエントロピーを有する乱数列を確実に生成したい場合には、推定された最小エントロピーよりも低めに見積ったエントロピーの値を用いることにより、安全を重視した処理を実現できる。
【００５５】
ＴＶ≦Ｍｅの条件の場合には、生成された物理乱数が十分な最小エントロピーを有すると判断するが、最小エントロピーとして安全サイドをとりＴＶとする。この場合、速度を重視すると共に、確実性も考慮していることになる。Ｍ≦Ｍｅ＜ＴＶの条件の場合には、製造時に定めた最小エントロピーＭを上回る物理乱数が生成されていると判断するが、推定ミスを避け確実性を重視するために、最小エントロピーはＭとする。この場合、確実性を重視していることになる。Ｍｅ＜Ｍの場合、製造時に定めた最小エントロピーＭが達成されていないため、エントロピー低下が起きていると判断する。最小エントロピーは実行時の実測推定値であるＭｅとする。この場合、確実性を重視していることになる。
【００５６】
このように、最小エントロピー（ＭｉｎＥｎｔｒｏｐｙ）として採用する値を段階的に設定することで、安全性と速度の両立を測ることができる。仮に、「Ｍ≦Ｍｅの場合、最小エントロピーはＭとする」という条件にした場合、十分に大きいＭｅが得られていても、最小エントロピーはＭとして処理が実行されるので、効率が低くエントロピー圧縮処理の速度が遅くなる。ＴＶをある程度大きい値に設定しておくことで、十分に大きいＭｅが得られている場合、最小エントロピーをＴＶとして処理が実行されるので、エントロピー圧縮処理の速度低下を抑制することができる。なお、十分に大きいＭｅが得られている場合には、確実性よりも速度を重視することとし、ＴＶ≦Ｍｅの条件では最小エントロピーはＭｅとする、という処理としてもよい。
【００５７】
図８は、最小エントロピー推定用の変換テーブルの一例を示す図である。即ち、図４の物理乱数生成装置において、最小エントロピー供給回路１５Ｂ−２として用いてよいルックアップテーブルの一例である。
【００５８】
図８に示される最小エントロピーの値は、統計値Ｃｍａｘの値に対して図４の最小エントロピー供給回路１５Ｂ−２に示される数式を計算して得られる値である。ルックアップテーブルのサイズは、統計情報を求める対象となる所定数ｎの半分ｎ／２となる。例えば、所定数ｎが６４の場合、６４ビットのうちで１と０との何れか出現数が多い方の数が統計値Ｃｍａｘとなり、この統計値Ｃｍａｘの値は必ず３２以上となる。従って、テーブルのエントリとしては、０〜３１に対応するテーブル要素は必要ない。図８に示されるように、乱数があまりにも偏っている場合（Ｃｍａｘが６０以上の場合）、最小エントロピーは０である、と推定される。なお実際には、このように偏っている乱数は、ヘルステストで不合格となる。
【００５９】
図９は、エントロピー圧縮装置の構成の一例を示す図である。図９に示すエントロピー圧縮装置を、図４に示す物理乱数生成装置におけるエントロピー圧縮装置１４として用いてよい。
【００６０】
図９に示すエントロピー圧縮装置１４は、ＬＦＳＲ（Linear Feedback Shift Register）制御回路４１及び線形帰還シフトレジスタ４２を含む。線形帰還シフトレジスタ４２は、２５６個のフリップフロップ５１−１乃至５１−２５６、及び、ＸＯＲ回路５２−１乃至５２−４を含む。フリップフロップ５１−１乃至５１−２５６は縦続接続され、２５６ビットのシフトレジスタを構成する。
【００６１】
エントロピー圧縮装置１４は、レジスタ１１から出力回路２３を介してｎビットの物理乱数を受け取ると、受け取った物理乱数をＬＦＳＲ制御回路４１内の内部レジスタに格納する。ＬＦＳＲ制御回路４１は、エントロピー推定用制御回路１６から入力継続を指示する制御信号を受け取ると、内部レジスタに格納してあるｎビットの物理乱数を線形帰還シフトレジスタ４２に供給し、２５６ビットのシフトレジスタに順次入力する。この時、シフトレジスタにｎビットの物理乱数を入力するために、ＬＦＳＲ制御回路４１による制御の下に、ｎ個のクロックパルスがフリップフロップ５１−１乃至５１−２５６の各々に供給されてよい。
【００６２】
ＬＦＳＲ制御回路４１は、エントロピー推定用制御回路１６から破棄を指示する制御信号を受け取ると、内部レジスタに格納してあるｎビットの物理乱数を破棄する。この場合、ＬＦＳＲ制御回路４１は、線形帰還シフトレジスタ４２に対してｎ個のクロックパルスが供給されないように制御すればよい。ＬＦＳＲ制御回路４１は、次に受信したｎビットの物理乱数を、破棄すべき物理乱数を格納したレジスタに上書きすればよい。
【００６３】
このようにして、エントロピー圧縮装置１４の線形帰還シフトレジスタ４２は、破棄されることなく順次受信したｎビットの物理乱数をシフトレジスタに格納することにより、過去の受信分と共に累積していく。即ち、過去にｎビットの物理乱数をｍ回受信すると、ｍ回の受信により得られた物理乱数を纏め、ｍ×ｎビットの物理乱数をシフトレジスタに格納することになる。
【００６４】
ＬＦＳＲ制御回路４１は、エントロピー推定用制御回路１６から入力完了を示す制御信号を受け取ると、データ有効を示すｖａｌｉｄ信号をアサートする。ＬＦＳＲ制御回路４１は、ｖａｌｉｄ信号をアサートしている期間において、線形帰還シフトレジスタ４２のシフトレジスタに格納されてる２５６ビットのデータを、エントロピー圧縮処理後の物理乱数として線形帰還シフトレジスタ４２から出力させる。
【００６５】
なおエントロピー圧縮装置としては、線形帰還シフトレジスタを用いる方式だけでなく、一方向性関数を使う方式やブロック暗号を使う方式など様々な方式が知られている。図１や図４の構成に用いるエントロピー圧縮装置１４としては、図９に示されるエントロピー圧縮装置１４に限定されるものではなく、それらの様々な方式のうちの任意のものであってよい。
【００６６】
図１０は、図４に示すエントロピー圧縮装置の処理速度に関する効果を示す表である。この表に示す処理速度を計算するにあたり、製造時に決定される最小エントロピーＭ＝０．５ビット、エントロピー圧縮処理後の物理乱数に要求されるエントロピーＥＬ＝２５６ビットとする。更に、従来技術においてエントロピー圧縮装置へ入力される物理乱数の固定入力長Ｎ＝５１２ビット（＝ＥＬ／Ｍ）とする。また、従来技術の物理乱数生成装置の回路規模は１２６５．５ゲートである。図４に示す物理乱数生成装置において、最小エントロピー推定回路（統計情報取得回路部を除く）の回路規模は１００ゲートであり、ヘルステスト回路の統計情報取得回路部の回路規模は１００ゲートであるとする。
【００６７】
図１０の表に示されるように、実行時の物理乱数１ビット当たりのエントロピー（以下実行時エントロピー）が０．５ビットから１．０ビットの場合、従来のエントロピー圧縮処理にかかる時間は一定であり、５１２サイクルである。また実行時エントロピーが０．５ビット、０．５０８ビット、０．７５ビット、１．０ビットの場合、図４の物理乱数生成装置においてエントロピー圧縮処理にかかる時間はそれぞれ、５２０サイクル、５１２サイクル、３４８サイクル、及び２６０サイクルである。なお図１０の表に示す図４の物理乱数生成装置のエントロピー圧縮処理にかかる時間には、最小エントロピー推定回路の処理にかかる時間を加えてある。
【００６８】
実行時エントロピーが０．５ビットの場合、従来のエントロピー圧縮処理の方が、図４の物理乱数生成装置のエントロピー圧縮処理よりも、僅かながらも短い時間で終了する。この場合従来例では、実行時エントロピーが最小エントロピーＭと一致するために、Nが最適な入力長と一致する。それに対して図４に示す物理乱数生成装置のエントロピー圧縮処理では、最小エントロピー推定回路の処理時間の分だけ遅くなっている。
【００６９】
しかしながら、実行時エントロピーが０．５０８ビットよりも大きい場合には、図４に示す物理乱数生成装置のエントロピー圧縮処理の方が従来のエントロピー圧縮処理よりも高速に動作する。実行時エントロピーが０．７５ビットの場合において、図４に示す物理乱数生成装置のエントロピー圧縮処理は、従来のエントロピー圧縮処理の１．４７倍高速に動作する。また実行時エントロピーが理想値である１．０ビットの場合において、図４に示す物理乱数生成装置のエントロピー圧縮処理は、従来のエントロピー圧縮処理の約２倍高速に動作する。
【００７０】
また、実行時エントロピーが最小エントロピーＭよりも小さい０．２５ビットである場合、従来例では最終的にエントロピーが１２８ビットである物理乱数を生成してしまい、要求値の２５６ビットを満たすことができない。しかし図４に示す物理乱数生成装置のエントロピー圧縮処理の場合、処理時間は長くなるものの、確実に要求を満たした物理乱数列を生成することができる。
【００７１】
次に回路規模について考える。ヘルステスト回路の一部と最小エントロピー推定回路の一部とを共用化した場合（即ち図４に示す物理乱数生成装置の場合）と共有化をしていない場合とを比較する。共用化をしない場合、最小エントロピー推定回路として２００ゲートの回路を追加することが、最小エントロピー推定処理のために必要となる。それに対して共有化をする場合、最小エントロピー推定処理のために必要となる回路の追加分は、統計情報取得回路部を除いた残りの最小エントロピー推定回路の分だけとなるため、１００ゲートの回路追加となる。
【００７２】
図１１は、暗号処理システムの構成の一例を示す図である。図１１に示す暗号処理システムは、物理乱数生成器６０、エントロピー圧縮装置１４、暗号演算装置６１、ＲＯＭ（Read Only Memory）６２、ＲＡＭ（Random Access Memory）６３、及びＣＰＵ（Central Processing Unit）６４を含む。暗号演算装置６１は、共通鍵暗号回路７１及び公開鍵暗号回路７２を含む。物理乱数生成器６０は、図４に示す物理乱数生成装置においてエントロピー圧縮装置１４以外の部分に相当する。即ち、図１１に示す物理乱数生成器６０とエントロピー圧縮装置１４とが、図４に示す物理乱数生成装置に相当する。
【００７３】
ＲＯＭ６２及びＲＡＭ６３に格納されるデータやプログラムに基づいてＣＰＵ６４が動作することにより、ＣＰＵ６４の制御の下で、乱数生成処理及び暗号用の鍵生成処理が実行される。具体的には、物理乱数生成器６０とエントロピー圧縮装置１４とにより生成されたエントロピー圧縮後の物理乱数が、バスを介して暗号演算装置６１に供給される。暗号演算装置６１では、鍵生成アルゴリズムを実行することにより、供給された物理乱数に基づいて、共通鍵暗号回路７１が共通鍵（秘密鍵）を生成し、公開鍵暗号回路７２が公開鍵を生成する。
【００７４】
以上、本発明を実施例に基づいて説明したが、本発明は上記実施例に限定されるものではなく、特許請求の範囲に記載の範囲内で様々な変形が可能である。
【符号の説明】
【００７５】
１０  物理乱数生成回路
１１  レジスタ
１２  ヘルステスト回路
１３  制御回路
１４  エントロピー圧縮装置
１５  最小エントロピー推定回路
１５Ｂ−１  統計値変換回路
１５Ｂ−２  最小エントロピー供給回路
１６  エントロピー推定用制御回路
２１  リピティション・カウント・テスト回路
２２  アダプティブ・プロポーション・テスト回路
２３  出力回路
２４  ＡＮＤ回路
【図１】
2015102981.tif 000003
【図２】
2015102981.tif 000004
【図３】
2015102981.tif 000005
【図４】
2015102981.tif 000006
【図５】
2015102981.tif 000007
【図６】
2015102981.tif 000008
【図７】
2015102981.tif 000009
【図８】
2015102981.tif 000010
【図９】
2015102981.tif 000011
【図１０】
2015102981.tif 000012
【図１１】
2015102981.tif 000013