(57)【要約】  非接触ＩＣカードに搭載された場合のように、外部の影響を受けやすい環境においても乱数性が確保された乱数の生成を目的とする。乱数を生成する乱数生成手段と、乱数生成手段に乱数生成用のパラメータを与える乱数生成制御手段と、生成された乱数の乱数性を判定する乱数性判定手段とを備え、生成された乱数の乱数性があらかじめ定められた条件を満足しないとき、乱数生成制御手段が乱数生成用パラメータを更新して乱数生成手段に乱数の再生成を行わせる。【特許請求の範囲】
【請求項１】
乱数を生成する乱数生成手段と、
該乱数生成手段に乱数を生成するためのパラメータを与える乱数生成制御手段と、
該生成された乱数の乱数性を判定する乱数性判定手段とを備え、
生成された乱数の乱数性があらかじめ定められた条件を満足しないとき、前記乱数生成制御手段が前記乱数生成のためのパラメータを更新して乱数生成手段に乱数の再生成を行わせることを特徴とする乱数生成装置。
【請求項２】
請求の範囲１記載の乱数生成装置において、
該乱数生成装置の起動時に乱数生成のために使用されるべき前記パラメータとしてのデフォルトパラメータを記憶するパラメータ記憶手段をさらに備え、
前記乱数生成制御手段が、該乱数生成器の起動時に該デフォルトパラメータを前記乱数生成手段に与えることを特徴とする乱数生成装置。
【請求項３】
請求の範囲２記載の乱数生成装置において、
前記パラメータ記憶手段が、前記デフォルトパラメータを用いて生成された乱数の乱数性が前記あらかじめ定められた条件を満足しないとき、前記乱数生成制御手段による前記パラメータ更新に用いられるべき更新用パラメータをさらに記憶することを特徴とする乱数生成装置。
【請求項４】
請求の範囲３記載の乱数生成装置において、
前記パラメータ記憶手段が、０と１のいずれに乱数が偏る可能性があるかを示す乱数性情報に対応させて前記更新用パラメータを複数個記憶するとともに、
前記乱数性判定手段が、生成された乱数が０と１のいずれに偏っているかを示す判定情報を前記乱数生成制御手段に与え、該乱数生成制御手段が該与えられた判定情報と前記乱数性情報とに対応してパラメータ記憶手段に記憶されている更新用パラメータを選択することを特徴とする乱数生成装置。
【請求項５】
請求の範囲２記載の乱数生成装置において、
前記乱数生成手段によって再生成された乱数の乱数性が前記あらかじめ定められた条件を満足したとき、前記乱数生成制御手段が前記パラメータ記憶手段に格納されているデフォルトパラメータを該乱数再生成に用いられたパラメータに書き換えることを特徴とする乱数生成装置。
【請求項６】
請求の範囲２記載の乱数生成装置において、
前記パラメータ記憶手段が不揮発性メモリによって構成されることを特徴とする乱数生成装置。
【請求項７】
請求の範囲１記載の乱数生成装置において、
前記乱数の再生成が行われるとき、該再生成を示すフラグを格納する再生成フラグ格納手段をさらに備えることを特徴とする乱数生成装置。
【請求項８】
請求の範囲１記載の乱数生成装置において、
前記乱数生成のためのパラメータが、前記乱数生成手段に対する電源電圧印加後の経過時間、および乱数生成のためのサンプリングの周波数を含むことを特徴とする乱数生成装置。
【請求項９】
請求の範囲１記載の乱数生成装置が、非接触で外部から電源の供給を受けるＩＣカードに搭載されることを特徴とする乱数生成装置。
【請求項１０】
乱数生成のためのパラメータをメモリから読出し、
該パラメータを用いて乱数を生成し、
該生成された乱数の乱数性があらかじめ定められた条件を満足するか否かを判定し、
該条件を満足しないとき、乱数生成のためのパラメータとして更新用パラメータを読出し、
該更新用パラメータを用いて乱数を再生成し、該再生成された乱数の乱数性判定以降を繰り返すことを特徴とする乱数生成方法。
【請求項１１】
乱数を生成する計算機によって使用されるプログラムであって、
乱数生成のためのパラメータをメモリから読出す手順と、
該パラメータを用いて乱数を生成する手順と、
該生成された乱数の乱数性があらかじめ定められた条件を満足するか否かを判定する手順と、
該条件を満足しないとき、乱数生成のためのパラメータとして更新用パラメータを読出す手順と、
該更新用パラメータを用いて乱数を再生成し、該再生成された乱数の乱数性判定以降を繰り返す手順とを計算機に実行させるプログラム。
【請求項１２】
２００００ビットより小さいビット数の乱数を生成する乱数生成器の評価方法であって、
該乱数生成器による乱数の生成と、該生成された乱数のメモリへの格納とを繰返し、
該メモリに格納された乱数の合計ビット数が２００００ビットを超えたとき、該２００００ビット以上のサンプルを対象として乱数性の判定を行い、
該乱数性の判定結果に応じて前記乱数生成器の評価を行うことを特徴とする乱数生成器評価方法。
【請求項１３】
バイト長単位で使用される乱数の使用方法であって、
生成した乱数をバイト単位でのデータ読み書き可能な不揮発性メモリに格納し、
乱数を演算に使用するとき、必要なバイト長単位の未使用の乱数を該不揮発性メモリから読み出して使用することを特徴とする乱数使用方法。
【請求項１４】
請求の範囲１３記載の乱数使用方法において、
前記不揮発性メモリが強誘電体メモリによって構成されることを特徴とする乱数使用方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は乱数の生成方式に係り、さらに詳しくは、例えば非接触で電源の供給を受ける非接触ＩＣカードに搭載され、外部からの影響を受けやすい乱数生成装置、および乱数生成方法などに関する。
【背景技術】
【０００２】
本発明が対象とするＩＣカードにおけるデータ処理装置では乱数を使用する場合が多い。ＩＣカードは住民基本台帳やクレジットカードなどに代表される個人の認証のために使用されることが多く、認証機能では主に公開鍵暗号が使用されており、乱数が鍵の生成などに使用される。従来は、例えばソフトウェアを使用した擬似乱数が用いられているが、この場合には乱数の元になるシードの取得方法によっては生成する乱数に偏りが発生したり、一度生成された擬似乱数から次の乱数を生成する場合に値が予測されてしまうというような危険性が指摘されている。そのような問題点を回避するためにシードの取得方法を工夫して値が予測されにくくする方法や、熱雑音などの物理現象を利用した乱数生成器を搭載することなどが検討されている。【０００３】
従来の乱数生成器によって生成された乱数の乱数性評価を行う場合には、乱数生成器単体の状態、すなわち乱数マクロのみに電源と信号を与えることによって生成された乱数の乱数性が評価されていた。しかしながら乱数生成器の動作は電源電圧などの動作条件や、サンプリング間隔などに影響され、発生する乱数に偏りが発生することがある。特に非接触ＩＣカードでは、電磁波によってアンテナから供給される電源を使用するために、比較的に不安定な電源条件で動作することになり、またＩＣカードとカードリーダライタとの位置関係にも影響を受ける可能性がある。【０００４】
その結果、単体での評価で発生する乱数の乱数性が確認された乱数生成器を使用しても、電磁波によってアンテナから供給される電源を使用し、電源が不安定な非接触ＩＣカードに搭載された状態などにおいては、乱数性が確保されているとは必ずしも判断できない場合があるという問題点があった。【０００５】
このようなＩＣカードなどにおける乱数の使用について次のような従来技術がある。
【特許文献１】特開平０３−２９４９８７号公報  「ＩＣカードシステム」
【特許文献２】特開２００２−２６８８７４号公報  「乱数シード生成回路及びこれを備えたドライバ、並びに、ＳＤメモリカードシステム」
【特許文献３】特開２００２−３２７３２号公報  「可搬情報処理装置における擬似乱数取得方法」
【０００６】
特許文献１には、大容量の不揮発性メモリに複数個の乱数を格納する構成のＩＣカードを用いてセキュリティ機能、およびメモリ機能を活用した新しいサービスを提供できるシステムが開示されている。【０００７】
特許文献２には、カウンタのカウント値（乱数シード）をラッチするラッチに対する取込み信号を出力するパワーオンリセット回路の取込み信号の出力時点がまちまちとなるため、乱数シードを電源が投入されるたびに異なるものとできる乱数シード生成回路が開示されている。【０００８】
特許文献３には、あらかじめ発生させた多数の乱数を、例えば不揮発性メモリに記憶させておき、乱数を必要とするときにメモリを参照することによって乱数を取得するまでの待ち時間を大幅に短縮できる乱数取得方法が開示されている。【０００９】
しかしながらこのような従来技術においても、乱数生成器が非接触ＩＣカードに搭載された場合などにおいて、外部からの影響によって生成された乱数の乱数性が充分に確保される可能性がないという問題点を解決することはできない。【００１０】
本発明の第１の目的は、非接触ＩＣカードに搭載された場合などのように、外部の影響を受けやすい環境においても乱数性が確保された乱数を生成する乱数生成装置、および生成方法を提供することである。【００１１】
第２の目的は、ＩＣカードに搭載される場合などのように、比較的短いビット長の乱数を生成する乱数生成器の評価方法、およびそのような乱数生成器によって生成された乱数の効果的な使用方法を提供することである。
【発明の開示】
【００１２】
本発明の乱数生成装置は、乱数を生成する乱数生成手段と、乱数生成手段に乱数を生成するためのパラメータを与える乱数生成制御手段と、生成された乱数の乱数性を判定する乱数性判定手段とを備えるものであり、生成された乱数の乱数性があらかじめ定められた条件を満足しないとき、乱数生成制御手段が前述のパラメータを更新して乱数生成手段に乱数の再生成を行わせるように動作する。
【００１３】
本発明の乱数生成方法では、乱数生成のためのパラメータをメモリから読出し、そのパラメータを用いて乱数を生成し、生成された乱数の乱数性があらかじめ定められた条件を満足するか否かを判定し、条件を満足しないとき乱数生成のためのパラメータを更新し、更新されたパラメータを用いて乱数を生成し、生成された乱数の乱数性判定以降を繰り返す方法が用いられる。
【００１４】
これによって乱数性の確保された乱数の生成が可能となり、そのような乱数を用いたデータ処理が可能となる。
次に本発明の乱数生成器評価方法は、２００００ビットより小さいビット数の乱数を生成する乱数生成器を評価する方法であり、乱数生成器による乱数生成と、生成された乱数のメモリへの格納を繰返し、該メモリに格納された乱数の合計ビット数が２００００ビットを超えたとき、該２００００ビット以上のサンプルを対象として乱数性を判定し、該乱数性判定結果に応じて乱数生成器の評価を行う方法が用いられる。これによって、例えばＦＩＰＳ１４０で規定されているような統計的判定方法を用いた乱数生成器の評価が可能となる。
【００１５】
次に本発明の乱数使用方法は、バイト長単位で使用される乱数の使用方法であり、生成した乱数をバイト単位でのデータ読み書き可能な不揮発性メモリに格納し、乱数を演算に使用するとき、必要なバイト長単位の未使用の乱数を該不揮発性メモリから読出して使用する方法が用いられる。これによってハードウェア的に同じ乱数が使用されることが制限され、乱数が予測される危険性を軽減することができる。
【図面の簡単な説明】
【００１６】
【図１】本発明の乱数生成装置の原理構成ブロック図である。
【図２】本発明におけるＩＣカードの基本的な構成ブロック図である。
【図３】ＩＣカードの第１の実施例の構成を示すブロック図である。
【図４】ＩＣカードの第２の実施例の構成を示すブロック図である。
【図５】ＩＣカードの第３の実施例の構成を示すブロック図である。
【図６】ＩＣカードの第４の実施例の構成を示すブロック図である。
【図７】乱数生成制御部による乱数生成器の設定を説明する図である。
【図８】補正テーブルパラメータの意味を説明する図である。
【図９】補正テーブルパラメータ格納部の格納内容の例である。
【図１０】補正テーブルパラメータのフォーマットを説明する図である。
【図１１】乱数性判定部による乱数性判定動作の説明図である。
【図１２】乱数生成処理の全体フローチャートである。
【図１３】乱数生成器自体の評価方式を説明する図である。
【発明を実施するための最良の形態】
【００１７】
図１は、本発明の乱数生成装置の原理的な構成ブロック図である。同図において乱数生成装置１は少なくとも乱数生成部２、乱数生成制御部３、および乱数性判定部４を備える。【００１８】
乱数生成部２は乱数を生成するものであり、乱数生成制御部３は乱数生成部２に対して乱数を生成するためのパラメータを与えるものであり、乱数性判定部４は生成された乱数の乱数性を判定するものである。そして乱数生成部２によって生成された乱数の乱数性があらかじめ定められた条件を満足しないと乱数性判定部４によって判定されたとき、乱数生成制御部３は前述のパラメータを更新して乱数生成部２に乱数の再生成を行わせる。【００１９】
本発明においては、乱数生成装置１の起動時に乱数生成のために使用されるべき前述のパラメータとしてのデフォルトパラメータを記憶するパラメータ記憶部をさらに備え、乱数生成制御部３が乱数生成装置１の起動時にそのデフォルトパラメータを乱数生成部２に与えることもできる。【００２０】
またこのパラメータ記憶部は、前述のパラメータとして前述のデフォルトパラメータを用いて生成された乱数の乱数性があらかじめ定められた条件を満たさないときに、乱数生成制御部３が前述のパラメータ更新において用いるべき更新用パラメータをさらに記憶することもでき、またパラメータ記憶部は生成された乱数が０と１のいずれに偏る可能性があるかを示す乱数性情報に対応させて、前述の更新用パラメータを複数個記憶するとともに、乱数性判定部４が判定結果として生成された乱数が０と１のいずれに偏っているかを示す判定情報を乱数生成制御部３に与え、乱数生成制御部３が与えられた判定情報に対応してパラメータ記憶部に記憶されている更新用パラメータを選択することもできる。【００２１】
さらに乱数生成部２によって再生成された乱数の乱数性が前述の条件を満足したときには、乱数生成制御部３がパラメータ記憶部に格納されているデフォルトパラメータを該乱数の再生成に用いられたパラメータに書き換えることもできる。【００２２】
また本発明においては乱数生成装置１は、非接触で外部から電源の供給を受けるＩＣカードに搭載されることもできる。
次に本発明の乱数生成方法においては、乱数生成のためのパラメータをメモリから読出し、そのパラメータを用いて乱数を生成し、生成された乱数の乱数性があらかじめ定められた条件を満足しているか否かを判定し、その条件を満足しないときには乱数生成のためのパラメータとして更新用パラメータを読出し、その更新用パラメータを用いて乱数を生成し、生成された乱数の乱数性判定以降を繰り返す方法が用いられる。【００２３】
また本発明において乱数を生成するための計算機によって使用されるプログラムとして、乱数生成のためのパラメータをメモリから読み出す手順と、該パラメータを用いて乱数を生成する手順と、生成された乱数の乱数性があらかじめ定められた条件を満足するか否かを判定する手順と、該条件を満足しないとき、乱数生成のためのパラメータとして更新用パラメータを読み出す手順と、該更新用パラメータを用いて乱数を生成し、該生成された乱数の乱数性の判定以降を繰り返す手順とを計算機に実行させるプログラムが用いられる。【００２４】
次に本発明の乱数生成器評価方法は、２００００ビットより小さいビット数の乱数を生成する乱数生成器の評価方法であり、乱数生成器による乱数の生成と、生成された乱数のメモリへの格納を繰返し、メモリに格納された乱数の合計ビット数が２００００ビットを超えたとき、２００００ビット以上のサンプルを対象として乱数性を判定し、その判定結果に応じて乱数生成器の評価を行うものである。【００２５】
さらに本発明の乱数の使用方法は、バイト長単位で使用される乱数の使用方法であり、生成した乱数をバイト単位でのデータ読み書きが可能な不揮発性メモリに格納し、乱数を演算に使用するとき、必要なバイト長単位の未使用の乱数を該不揮発性メモリから読み出して使用する方法が用いられる。【００２６】
図２は本発明におけるＩＣカードの基本的な構成ブロック図である。同図においてＩＣカード１０は、ＩＣカード１０内での乱数生成を制御する乱数生成制御部１１、乱数を生成する乱数生成器１２、生成された乱数の乱数性を判定する乱数性判定部１３、生成された乱数を用いて必要な演算を行う演算部１４、乱数生成に用いられるパラメータなどを格納する不揮発性メモリ１５、および外部機器との間の通信を行い、電力の供給を受けるため通信・電源制御部１６を備えている。【００２７】
図２において乱数生成制御部１１は、デフォルト補正テーブルパラメータ設定部２０、補正テーブルパラメータ更新部２１、および乱数生成器制御回路２２を備えている。また不揮発性メモリ（強誘電体ＲＡＭ）１５は、デフォルト補正テーブルパラメータ格納部２３、補正テーブルパラメータ格納部２４、および乱数データ格納部２５を備えている。【００２８】
ここで、本発明の請求の範囲１における乱数生成手段は乱数生成器制御回路２２、および乱数生成器１２に相当し、乱数生成制御手段はデフォルト補正テーブルパラメータ設定部２０および補正テーブルパラメータ更新部２１に相当し、また請求の範囲２などにおけるパラメータ記憶手段は、デフォルト補正テーブルパラメータ格納部２３および補正テーブルパラメータ格納部２４に相当する。【００２９】
ＩＣカード１０の起動時には、乱数生成器１２による乱数生成はデフォルト補正テーブルパラメータを乱数生成用のパラメータとして実行される。すなわちデフォルト補正テーブルパラメータ格納部２３から読み出されたデフォルトパラメータが、デフォルト補正テーブルパラメータ設定部２０によって乱数生成器制御回路２２に対して設定され、乱数生成器制御回路２２によって乱数生成器１２の動作が制御される。生成された乱数に対しては、乱数性判定部１３によってその乱数性を示すデータ、例えば０、または１の乱数内での出現回数が予め定められた条件を満足しているか否かが判定され、満足している時には終了フラグが乱数生成制御部１１と演算部１４とに通知され、生成された乱数は乱数データ格納部２５に格納され、そのまま演算部１４によって演算に使用される。【００３０】
条件を満足していない時には、例えばエラーフラグによってその乱数を使用できないことが演算部１４と乱数生成制御部１１に通知される。乱数生成制御部１１内の補正テーブルパラメータ更新部２１は、不揮発性メモリ１５内の補正テーブルパラメータ格納部２４に格納されている補正テーブルパラメータを、デフォルト補正テーブルパラメータの代わりに乱数生成器制御回路２２に設定し、その結果に対応して乱数生成器１２によって再び乱数が生成され、再生成された乱数を対象として乱数性判定部１３によって乱数性が定められた条件を満足しているか否かが判定され、満足している場合にはその乱数は乱数データ格納部２５に格納されるとともに、演算部１４によってその乱数を使用した演算が実行される。そして乱数の再生成に使用された補正テーブルパラメータの値が不揮発性メモリ１５のデフォルト補正テーブルパラメータ格納部２３に上書きされて、デフォルト補正テーブルパラメータの更新が行われる。【００３１】
再生成された乱数も予め定められた条件を満足しない場合には、前述と同様にパラメータの更新が行われ、乱数の再生成以後の動作が実行される。このように乱数の再生成が行われる場合には、デフォルト補正テーブルパラメータ格納部２３の格納内容は、その乱数性が条件を満足する乱数が生成された時点で上書きされて更新され、ＩＣカード１０の再起動後にはその更新されたデフォルト補正テーブルパラメータが再起動直後の乱数生成に使用されることになる。なお、補正テーブルパラメータを不揮発性メモリに格納することにより、外部からの補正テーブルパラメータの追加・更新が容易に可能となる。【００３２】
図３はＩＣカードの第１の実施例の構成ブロック図である。同図を図２の基本構成図と比較すると通信・電源制御部１６の代わりに非接触通信部２７が備えられている点と、乱数生成器１２が熱雑音発生素子２９、増幅器３０、およびサンプリング回路３１によって構成され、乱数性判定部１３がカウンタ３３、比較判定回路３４、および乱数格納バッファ３５によって構成されている点が異なっている。【００３３】
非接触通信部２７は非接触ＩＣカードリーダ／ライタとの間で通信を行うと同時に、リーダ／ライタからの電磁波を受信してＩＣカード用の直流電源を生成し、ＩＣカード１０を起動するとともに、各部のリセットを行うためのパワーオンリセット信号の生成を行うものである。非接触で電力の供給を受けるため、電源条件が必ずしも安定ではなく、生成される乱数の乱数性が問題となる可能性がそれだけ大きいと言える。【００３４】
乱数生成器１２を構成する熱雑音発生素子２９、増幅器３０、およびサンプリング回路３１は、乱数生成制御部１１内の乱数生成器制御回路２２によって制御され、乱数発生を行うものであるが、その動作についてはさらに後述する。【００３５】
また乱数性判定部１３内のカウンタ３３は、生成された乱数の乱数性を判定するために生成された乱数内の０、または１の出現回数をカウントするものであり、比較判定回路３４はその出現回数が予め定められた条件を満足しているか否かを判定するものであり、乱数格納バッファ３５は生成された乱数を一時的に格納するものであるが、これらの動作についてもさらに後述する。【００３６】
図４はＩＣカードの第２の実施例の構成ブロック図である。同図において、第１の実施例を示す図３の非接触通信部２７の代わりに、接触通信・電源制御部３７が備えられている点が第１の実施例と異なっている。この接触通信・電源制御部３７は、接触型ＩＣカードリーダ／ライタとの間で通信を行うと同時に、リーダ／ライタ側から接触状態で電源とクロックの供給を受け、外部からのリセット信号を受けることによってＩＣカードの動作が開始される。したがって電源条件は図３で説明した非接触通信部２７を用いる第１の実施例におけるより安定しており、乱数生成に用いられるパラメータ、すなわち補正テーブルパラメータの値も第１の実施例とは異なったものとなる可能性がある。例えばＩＣカードリーダ／ライタとの間で接触通信と非接触通信の両方を行うことができるコンビカードの場合などは、接触／非接触の条件に応じて補正テーブルパラメータの値を設定することもできる。【００３７】
図５はＩＣカードの第３の実施例の構成ブロック図である。同図において通信・電源制御部１６は、図２の基本回路と同様であり、図３の非接触通信部２７、または図４の接触通信・電源制御部３７のいずれを用いても良い。この第３の実施例においては、第１、第２の実施例とは異なり、不揮発性メモリ１５の内部に設けられていた補正テーブルパラメータ格納部２４が、読出専用メモリ（ＲＯＭ）３７の内部の補正テーブルパラメータ格納部３８として実現されており、不揮発性メモリ１５より集積度の大きいＲＯＭに多くの補正テーブルパラメータを格納し、不揮発性メモリ１５の使用容量を削減することが可能となる。【００３８】
図６はＩＣカードの第４の実施例の構成ブロック図である。同図を、例えば第１の実施例を示す図３と比較すると、乱数生成器制御回路２２が乱数生成器の電源を制御するための電源制御用カウンタ４５、乱数生成器による乱数の出力を制御するための出力制御用カウンタ４６、乱数生成器内のサンプリング回路３１によるサンプリング周波数を設定するためのサンプリング周波数設定レジスタ４７、および乱数の再生成を行う時に再生成フラグが格納される再生成フラグ格納部４８を備えており、また乱数生成器１２の内部に電源制御回路４１を備えている点が異なっている。【００３９】
図７は、例えば図６の第４の実施例における、乱数生成制御部１１による乱数生成器１２の制御方式の説明図である。同図における制御動作を図８から図１０に示される補正テーブルパラメータを用いて説明する。【００４０】
乱数生成制御部１１に対しては、例えば図６の通信・電源制御部１６からパワーオンリセット（ＰＯＮＲＳＴ）信号と、クロック（ＣＬＫ）信号とが与えられ、例えば１６ビットの電源制御用カウンタ４５は、コントロールレジスタ４９に対して入力された補正テーブルパラメータとしてのｔ０のカウントを開始する。【００４１】
図８はこの乱数生成のための補正テーブルパラメータの説明図である。同図においてＩＣカードの電源Ｖｃが投入されてからｔ０時間後、乱数生成器１２の電源Ｖｒを投入するものとし、またその電源が投入されてから、時間ｔ１の経過後に乱数生成器の出力が安定してから乱数生成を行うためのサンプリングを開始し、そのサンプリング終了後に乱数生成器１２の電源Ｖｒをオフするものとし、乱数生成のためのサンプリングの周波数をｆとして乱数を生成するものとする。【００４２】
図９は、例えば図２の補正テーブルパラメータ格納部２４に格納されている補正テーブルパラメータの格納形式を示す。図８に対応して時間ｔ０、ｔ１、およびサンプリング周波数ｆの組が、一般に複数組格納されている。【００４３】
図１０は図９における、例えば１行分の補正テーブルパラメータのデータフォーマットの例である。図８における時間ｔ０とｔ１との値を、例えば１０ｍｓに設定するものとし、クロックの周波数を３．５７ＭＨｚとすると、ｔ０とｔ１とに対応するカウント回数は３５，７００回となり、ｔ０とｔ１との格納領域として１６ビットずつが必要である。またサンプリング周波数としては、例えば５０ｋＨｚ、１００ｋＨｚ、２５０ｋＨｚなどいくつかの周波数を設定しておき、その中から選択して補正テーブルパラメータとして組み合わせることとすれば、例えば周波数ｆの格納領域として４ビットを用意することにより、１６段階のサンプリング周波数の設定が可能となる。図１０における補正テーブルパラメータの格納領域の全体の長さを６４ビットとすれば、リザーブとして２８ビットが残される。【００４４】
なお図８において時間ｔ０、およびｔ１が充分大きくなく、またサンプリング周波数ｆが大きい場合などは生成される乱数が０または１に偏りやすくなる。このような乱数生成器の特性を事前に評価し、図９に格納されている補正テーブルパラメータの組に対応して乱数生成器の特性、すなわち０と１のいずれの発生率が多くなるかの特性（乱数性の判定情報）を事前に調べ、補正テーブルパラメータに対応してその判定結果を格納しておくことが有効である。これによって生成された乱数の乱数性判定結果に応じて乱数性を改善するための補正テーブルパラメータの選択が可能となる。すなわち、生成された乱数が０に偏っていた場合には、１の発生率が多くなる補正テーブルパラメータを選択して乱数の再生成を行うことになる。【００４５】
図７において補正テーブルパラメータ、すなわちｔ０、ｔ１、およびｆの値は、コントロールレジスタ４９を介してそれぞれ電源制御用カウンタ４５、出力制御用カウンタ４６、サンプリング周波数設定レジスタ４７に与えられる。【００４６】
乱数生成器１２側ではパワーオンリセットの後にカウンタ４５のカウント値がｔ０に相当するカウント値に達した時点で乱数生成器１２の電源がオンとされ、熱雑音発生素子２９の出力が増幅器３０によって増幅され、サンプリング回路３１に与えられる。その後カウンタ４６が時間ｔ１に相当する回数だけカウントを行った時点でサンプリング回路３１が増幅器３０の出力のサンプリングを開始し、サンプリング周波数設定レジスタ４７によって設定された周波数を用いてサンプリングを行い、出力ＳＯＵＴを乱数性判定部１３に出力する。【００４７】
図１１は、乱数性判定部１３の動作を説明するためのブロック図である。乱数性判定部１３は、乱数生成器１２から出力された乱数が格納される乱数格納バッファ３５、乱数生成器１２の出力のうちの０または１のいずれかの生成回数をカウントするカウンタ３３、カウンタ３３の出力と乱数生成制御部１１から与えられる乱数性判定のための比較値が設定されたレジスタ５１の内容とを比較して、乱数性の判定を行うための比較判定回路３４を備える。比較判定回路３４による判定結果は、乱数生成制御部１１に対してフィードバックされ、乱数生成器１２から出力された乱数が使用可能か否かが通知される。【００４８】
図１１で乱数生成器１２によって生成された乱数の乱数性判定方法について説明する。この乱数性判定の規格の１つとして、米国立標準技術研究所による規格ＦＩＰＳ（フェデラル・インフォメーション・プロセシング・スタンダーズ）１４０がある。この規格における乱数性判定のためのテストとしてモノビット（ｍｏｎｏｂｉｔ）テスト、ポーカー（ｐｏｋｅｒ）テスト、ラン（ｒｕｎｓ）テスト、ロングラン（ｌｏｎｇ  ｒｕｎｓ）テストなどいくつかのテスト方法が規定されている。【００４９】
本実施形態では、そのようなテストの１つとしてのモノビットテストを基準の考え方として、生成された乱数の乱数性を判定するものとする。このモノビットテストでは、２００００ビットのサンプルストリームのうちの１の数をカウントし、その数Ｘが次式を満足するときテストに合格するものとされている。【００５０】
９６５４  ＜Ｘ＜  １０３４６
しかしながら、本実施形態のようにＩＣカードに搭載された乱数生成器では、生成される乱数の長さはせいぜい１０２４ビット程度であり、この１０２４ビットをモノビットテストの２００００ビットに対応させて、１０２４ビットの中の１または０のいずれかの発生数Ｘが次式を満足するときにテストに合格したものと判定する。【００５１】
４９５  ＜Ｘ＜  ５２９
そこで図１１において、乱数生成器１２によって生成された乱数を対象として１または０の数をカウンタ３３でカウントした時に、そのカウント値が比較値設定レジスタ５１に設定されている４９５から５２９の間に入っていることが比較判定回路３４によって判定された場合、生成された乱数が使用可能なものと判定される。【００５２】
図１２は以上で説明した本実施形態における乱数生成処理の全体フローチャートである。同図において処理が開始されると、まずステップＳ１で不揮発性メモリ１５内のデフォルト補正テーブルパラメータ格納部２３からパラメータの初期設定値としてｔ０、ｔ１、およびｆの値が読み出され、ステップＳ２でｔ０の設定値を用いて乱数生成器１２に対する電源制御信号が図７の電源制御用カウンタ４５を介して生成され、ステップＳ３でｔ１の設定値を用いて出力制御用カウンタ４６を介してサンプリング回路３１に対する出力制御信号が生成され、またｆの設定値を用いてサンプリング周波数設定レジスタ４７を介してサンプリング周波数制御信号が生成され、サンプリング回路３１に与えられる。【００５３】
その結果としてステップＳ４で乱数生成器１２から乱数が出力され、ステップＳ５で乱数性判定部１３によって前述のような方法で乱数性が判定され、その判定結果が乱数生成制御部１１に通知されるが、乱数性判定結果がＯＫである場合にはステップＳ６で乱数の再生成を行っていないか、すなわち例えばデフォルトのパラメータを使った乱数生成時に乱数性が不適切と判定され、他のパラメータを用いた乱数再生成を行っていないかが判定され、行っていない場合にはステップＳ７でその乱数が不揮発性メモリ１５の乱数データ格納部２５に格納されて、その後ＩＣカードにおける処理が継続される。【００５４】
ステップＳ５で乱数性判定結果がＮＧである場合には、ステップＳ８で不揮発性メモリ１５内の補正テーブルパラメータ格納部２４から新しいパラメータ、すなわち設定値ｔ０’、ｔ１’、ｆ’が選択され、乱数生成制御部１１内の補正テーブルパラメータ更新部２１によって乱数生成器制御回路２２に対してその新しい設定値が与えられ、また再生成フラグ格納部４８に再生成フラグが立てられ、ステップＳ２以降の処理が行われる。【００５５】
またステップＳ６で乱数の再生成を行っていないかの判定がＮＧ、すなわち乱数の再生成が行われている場合には、ステップＳ９で不揮発性メモリ１５のデフォルト補正テーブルパラメータ格納部２３に最新の補正テーブルパラメータ、すなわち現時点で出力された乱数の生成に用いられた補正テーブルパラメータが上書きされて、再生成フラグ格納部４８の再生成フラグが落とされた後、ステップＳ７で乱数の格納が行われる。【００５６】
次に本実施形態における乱数使用方法として、例えば図２の不揮発性メモリ１５の乱数データ格納部２５にあらかじめ多くの乱数を格納しておき、演算に使用した乱数は、例えば消去して、その再使用を防止し、同一の乱数が使用されることをハードウェア的に制御する方法を用いることができる。【００５７】
不揮発性メモリ１５として、バイト単位でのデータ格納と消去が可能な強誘電体メモリを使用し、あらかじめ多数の乱数を生成してそのデータをメモリに格納し、使用された乱数の格納部をアクセス不可とする。すべての乱数データが使用された後に乱数の再生成と格納を行うことにより、ＩＣカードの処理において乱数が予測される危険性を低減することができる。【００５８】
最後に本実施形態における乱数生成器自体の評価について図１３を用いて説明する。この乱数生成器自体の評価では、前述のようにＩＣカードに搭載された乱数生成器が１０２４ビット程度の乱数を生成するものであり、これに対して前述のようにＦＩＰＳ１４０に規定された、例えばモノビットテストでは２００００ビットのサンプルに対する乱数性が判定されるために、図１３のＩＣカードにおいても１０２４ビットの乱数生成を繰返し、合計２００００ビットの乱数が生成された時点でその２００００ビットをサンプルとして乱数性の判定を行い、これによって乱数生成器自体の評価を行うものとする。【００５９】
すなわち図１３において、例えば演算部１４から乱数生成制御部１１に対して乱数生成器自体の評価の開始コマンドが発行されることで処理が開始され、乱数生成制御部１１によってデフォルトの補正テーブルパラメータが乱数生成器制御回路２２に設定された後に乱数生成器１２が起動され、生成された乱数は乱数データ格納部２５に格納される。乱数生成器１２は同じパラメータを使用して乱数生成を繰返し、２００００ビット以上の乱数が乱数データ格納部２５に格納された時点で乱数性判定部１３が起動され、乱数性判定部１３は、例えばＦＩＰＳ１４０に規定されているモノビットテストによって、あるいはポーカーテスト、ランテスト、ロングランテストのいずれかによって乱数性を判定し、判定結果を演算部１４に通知する。このような乱数生成器自体の評価は、乱数生成器１２の単体マクロと制御／判定回路に対する評価であり、基本的には非接触での電力供給など、乱数生成器が外部から影響を受ける要因を排除して行われ、デフォルト補正テーブルパラメータを用いた乱数生成器１２の動作自体の評価が行われる。【００６０】
以上の説明では、補正テーブルパラメータとして、例えば図８で説明したようにカード電源の立ち上がりから乱数生成器電源の立ち上がりまでの時間ｔ０、乱数生成器電源の立ち上がりから乱数生成器の動作が安定するまでの安定時間ｔ１、および乱数を取得するためのサンプリング周波数ｆの３つが規定されているが、例えば乱数生成器の電源電圧、すなわち電源電圧Ｖｒの値そのものをパラメータとして乱数生成を行うこともできる。【００６１】
また乱数性の判定については、ＦＩＰＳ１４０のモノビットテストに準じて判定を行うものとしたが、ポーカーテスト、ランテスト、またはロングランテストに準じた判定を行うこともできる。【００６２】
さらに図１２で説明したように、不揮発性メモリに保存されているデフォルト補正テーブルパラメータは、パラメータが更新されて生成された乱数に対する乱数性判定結果がＯＫの時にはその更新が行われるものとした。これは最新の通信環境に対応するパラメータをデフォルト補正テーブルパラメータとして次の乱数生成器起動時に使用するためであるが、通信条件が頻繁に変化するような使用方法などにおいては、デフォルト補正テーブルパラメータの更新を行わない実施形態も当然考えられる。
【産業上の利用可能性】
【００６３】
本発明は、乱数生成器が搭載されたＩＣカードを用いる全ての産業において利用することが可能であり、また必ずしもＩＣカードだけでなく、外部からの影響を受けやすい環境で使用される乱数生成器を利用する全ての産業において利用可能である。
【図１】
2005124537.tif 000002
【図２】
2005124537.tif 000003
【図３】
2005124537.tif 000004
【図４】
2005124537.tif 000005
【図５】
2005124537.tif 000006
【図６】
2005124537.tif 000007
【図７】
2005124537.tif 000008
【図８】
2005124537.tif 000009
【図９】
2005124537.tif 000010
【図１０】
2005124537.tif 000011
【図１１】
2005124537.tif 000012
【図１２】
2005124537.tif 000013
【図１３】
2005124537.tif 000014
【手続補正書】
【提出日】平成18年9月14日(2006.9.14)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
乱数を生成する乱数生成手段と、
該乱数生成手段に乱数を生成するためのパラメータを与える乱数生成制御手段と、
該生成された乱数の乱数性を判定する乱数性判定手段とを備え、
生成された乱数の乱数性があらかじめ定められた条件を満足しないとき、前記乱数生成制御手段が前記乱数生成のためのパラメータを更新して乱数生成手段に乱数の再生成を行わせることを特徴とする乱数生成装置。
【請求項２】
請求の範囲１記載の乱数生成装置において、
該乱数生成装置の起動時に乱数生成のために使用されるべき前記パラメータとしてのデフォルトパラメータを記憶するパラメータ記憶手段をさらに備え、
前記乱数生成制御手段が、該乱数生成装置の起動時に該デフォルトパラメータを前記乱数生成手段に与えることを特徴とする乱数生成装置。
【請求項３】
請求の範囲２記載の乱数生成装置において、
前記パラメータ記憶手段が、前記デフォルトパラメータを用いて生成された乱数の乱数性が前記あらかじめ定められた条件を満足しないとき、前記乱数生成制御手段による前記パラメータ更新に用いられるべき更新用パラメータをさらに記憶することを特徴とする乱数生成装置。
【請求項４】
請求の範囲２記載の乱数生成装置において、
前記乱数生成手段によって再生成された乱数の乱数性が前記あらかじめ定められた条件を満足したとき、前記乱数生成制御手段が前記パラメータ記憶手段に格納されているデフォルトパラメータを該乱数再生成に用いられたパラメータに書き換えることを特徴とする乱数生成装置。
【請求項５】
請求の範囲１記載の乱数生成装置において、
前記乱数の再生成が行われるとき、該再生成を示すフラグを格納する再生成フラグ格納手段をさらに備えることを特徴とする乱数生成装置。
【請求項６】
請求の範囲１記載の乱数生成装置において、
前記乱数生成のためのパラメータが、前記乱数生成手段に対する電源電圧印加後の経過時間、および乱数生成のためのサンプリングの周波数を含むことを特徴とする乱数生成装置。
【請求項７】
乱数生成のためのパラメータをメモリから読出し、
該パラメータを用いて乱数を生成し、
該生成された乱数の乱数性があらかじめ定められた条件を満足するか否かを判定し、
該条件を満足しないとき、乱数生成のためのパラメータとして更新用パラメータを読出し、
該更新用パラメータを用いて乱数を再生成し、該再生成された乱数の乱数性判定以降を繰り返すことを特徴とする乱数生成方法。
【請求項８】
乱数を生成する計算機によって使用されるプログラムであって、
乱数生成のためのパラメータをメモリから読出す手順と、
該パラメータを用いて乱数を生成する手順と、
該生成された乱数の乱数性があらかじめ定められた条件を満足するか否かを判定する手順と、
該条件を満足しないとき、乱数生成のためのパラメータとして更新用パラメータを読出す手順と、
該更新用パラメータを用いて乱数を再生成し、該再生成された乱数の乱数性判定以降を繰り返す手順とを計算機に実行させるプログラム。
【請求項９】
２００００ビットより小さいビット数の乱数を生成する乱数生成器の評価方法であって、
該乱数生成器による乱数の生成と、該生成された乱数のメモリへの格納とを繰返し、
該メモリに格納された乱数の合計ビット数が２００００ビットを超えたとき、該２００００ビット以上のサンプルを対象として乱数性の判定を行い、
該乱数性の判定結果に応じて前記乱数生成器の評価を行うことを特徴とする乱数生成器評価方法。
【請求項１０】
バイト長単位で使用される乱数の使用方法であって、
生成した乱数をバイト単位でのデータ読み書き可能な不揮発性メモリに格納し、
乱数を演算に使用するとき、必要なバイト長単位の未使用の乱数を該不揮発性メモリから読み出して使用することを特徴とする乱数使用方法。
【国際調査報告】
2005124537.tif 000015
2005124537.tif 000016
2005124537.tif 000017