(57)【要約】【課題】簡易な構成でありながら、ビット値の偏りや周期性の少ない乱数を生成することができる乱数生成装置とその方法、プログラム、そのような乱数生成装置を備えた暗号処理装置を提供する。【解決手段】物理乱数生成部Ｓ１において物理現象の不規則性に基づいて生成される乱数データＳ１が、補正部２において、入力される補正情報Ｓ３に基づいて補正される。補正された乱数データＳ２は、インターフェース部５を介して外部に出力されるとともに、ＦＩＦＯ４に順次格納される。補正情報生成部Ｓ３では、このＦＩＦＯ４に格納される一連の乱数データに含まれる‘１’のビットデータの数が計数され、この計数値と所定のしきい値との比較結果に基づいて、新たな補正情報Ｓ３が順次生成される。【選択図】      図２
2005003745.tif 000002
【特許請求の範囲】
【請求項１】
乱数生成手段と、
上記乱数生成手段において生成される乱数データを、入力される補正情報に基づいて補正する補正手段と、
上記補正手段において補正された乱数データに所定のビット値を持つビットデータが出現する頻度に応じて上記補正情報を生成する補正情報生成手段と、
を有する乱数生成装置。
【請求項２】
上記補正手段において補正された乱数データを順に格納する複数のデータ格納手段を有し、
上記補正情報生成手段は、上記データ格納手段に格納される複数の乱数データの中に上記所定のビット値を持つビットデータが存在する数を計数し、当該計数値と所定のしきい値との比較結果に基づいて上記補正情報を生成する、
請求項１に記載の乱数生成装置。
【請求項３】
上記補正情報生成手段は、上記データ格納手段に格納される複数の乱数データにおける同一桁のビットデータ中に上記所定のビット値を持つビットデータが存在する数をそれぞれの桁について計数し、各桁の当該計数値と所定のしきい値との比較結果に基づいて、各桁に対応する補正情報を生成し、
上記補正手段は、上記乱数生成手段において生成される乱数データの各桁のビットデータを、上記補正情報生成手段において生成される各桁の補正情報に基づいて補正する、
請求項２に記載の乱数生成装置。
【請求項４】
上記補正情報生成手段は、入力される制御信号に応じて上記しきい値を変化させる、
請求項２に記載の乱数生成装置。
【請求項５】
上記乱数生成手段は、物理現象の不規則性に基づいて乱数を生成する、
請求項１に記載の乱数生成装置。
【請求項６】
乱数生成手段において生成される乱数データを、与えられる補正情報に基づいて補正する第１の工程と、
上記第１の工程において補正された乱数データに所定のビット値を持つビットデータが出現する頻度に応じて上記補正情報を新たに生成する第２の工程と、
を有する乱数生成方法。
【請求項７】
乱数生成手段において生成される乱数データを、与えられる補正情報に基づいて補正する第１のステップと、
上記第１のステップにおいて補正された乱数データに所定のビット値を持つビットデータが出現する頻度に応じて上記補正情報を新たに生成する第２のステップと、
を有する処理をコンピュータに実行させるプログラム。
【請求項８】
上記第２のステップは、上記第１のステップにおいて補正された一連の所定数の乱数データの中に上記所定のビット値を持つビットデータが存在する数を計数し、当該計数値と所定のしきい値との比較結果に基づいて、上記補正情報を新たに生成する、
請求項７に記載のプログラム。
【請求項９】
上記第２のステップは、上記第１のステップにおいて補正された一連の所定数の乱数データにおける同一桁のビットデータ中に上記所定のビット値を持つビットデータが存在する数をそれぞれの桁について計数し、各桁の当該計数値と所定のしきい値との比較結果に基づいて、各桁に対応する補正情報を新たに生成し、
上記第１のステップは、上記乱数生成手段において生成される乱数データの各桁のビットデータを、上記第２のステップにおいて生成される各桁の補正情報に基づいて補正する、
請求項８に記載のプログラム。
【請求項１０】
乱数生成手段と、
上記乱数生成手段において生成される乱数データを、入力される補正情報に基づいて補正する補正手段と、
上記補正手段において補正された乱数データに所定のビット値を持つビットデータが出現する頻度に応じて上記補正情報を生成する補正情報生成手段と、
上記補正手段において補正された乱数データに応じて所定の暗号処理を実行する暗号処理手段と、
を有する暗号処理装置。
【請求項１１】
上記補正手段において補正された乱数データを順に格納する複数のデータ格納手段を有し、
上記補正情報生成手段は、上記データ格納手段に格納される複数の乱数データの中に上記所定のビット値を持つビットデータが存在する数を計数し、当該計数値と所定のしきい値との比較結果に基づいて上記補正情報を生成する、
請求項１０に記載の暗号処理装置。
【請求項１２】
上記データ格納手段は、上記補正手段において補正された乱数データのみ格納可能であり、かつ、上記補正情報生成手段からのみ格納データの読み出しが可能である、
請求項１１に記載の暗号処理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、乱数生成装置とその方法、乱数生成手段を備えた暗号処理装置、および、乱数の生成に係る処理をコンピュータに実行させるプログラムに関するものである。
【０００２】
【従来の技術】
近年、インターネットを利用したデータ通信の普及に伴って、データ通信の安全性を高めることが重要な課題になっており、特に、データ通信の秘密性を確保する技術として暗号化技術が注目されている。
【０００３】
コンピュータ・ネットワークを利用したデータ通信における代表的な暗号化方式には、共通鍵暗号方式と公開鍵暗号方式がある。
共通鍵暗号方式は、暗号化と復号化とで同じ暗号鍵を使う方式であり、「秘密鍵暗号」、「対称鍵暗号」、「慣用暗号」とも呼ばれる。
一方、公開鍵暗号方式は、暗号化と復号化とで異なる暗号鍵を使う方式である。公開鍵暗号方式によると、一方の暗号鍵で暗号化したデータは、もう一方の鍵を使わないと復号することができない。このため、一方の鍵を秘密にしておくことにより、他方の鍵を公開しても暗号文の秘密性を保つことができる。
【０００４】
共通鍵暗号方式は、暗号化用と復号化用の鍵が同一であることから、通信相手に安全な方法で鍵を渡すことが難しく、鍵を共有するための手段が必要になる。これに対し、公開鍵暗号方式は、暗号化用と復号化用の鍵が異なるため、暗号化用の鍵を安全性が保証されない通信網で配送することが可能となり、通信相手に暗号鍵を渡すことが非常に楽である。
【０００５】
このように、公開鍵暗号方式は鍵の配送が非常に容易であるという利点があるものの、その一方で、共通鍵暗号方式に比べて処理時間が非常に長くなるという不利益がある。例えば、公開鍵暗号方式の代表的な方式であるＲＳＡ（Ｒｉｖｅｓｔ  Ｓｈａｍｉｒ  Ａｄｅｌｍａｎ）方式の処理速度は、暗号化、復号化とも共通鍵暗号方式に比べ１０００倍程度遅い。
【０００６】
このため、コンピュータ・ネットワークを利用したデータ通信において、高速な暗号システムを構成する場合、一般に、暗号化および復号化は共通鍵暗号を用い、その鍵を公開鍵暗号によって暗号化し、配送するという方式が用いられている。この方式を採用している暗号システムには、ＰＧＰ（ｐｒｅｔｔｙ  ｇｏｏｄ  ｐｒｉｖａｃｙ，商標）やＰＥＭ（ｐｒｉｖａｃｙ  ｅｎｈａｎｃｅｍｅｎｔ  ｍａｉｌ）などがある。
ＲＳＡ方式は、主としてこのような共通鍵の受け渡しや、比較的少量のデータ伝送に使われている。
【０００７】
以上の暗号化技術を利用すれば、電子マネーや、ネット上の音楽配信、携帯電話とＩＤカードを用いた個人向けのサービス等を実現する場合において、データの暗号化、および、本人認証に必要なデジタル署名の生成を行うことができる。
【０００８】
ところで、こうした暗号化技術を利用して安全なデータ通信を保証するためには、安全な乱数を生成することが不可欠である。乱数の主な用途として、例えばパスワードの作成や、暗号化に使用する鍵の作成、暗号文の生成、電子署名情報の生成などがある。このような用途の乱数が攻撃者に推測されてしまうと、暗号文が解読されてしまったり、署名が改竄されてしまうなどの危険性が高まる。したがって、攻撃者が容易に推測することができない乱数を生成することが非常に重要である。
【０００９】
乱数の生成方法には、物理現象の不規則性を利用して乱数を生成する方式と、数学的な演算処理によって長い周期の乱数列を生成する方式とがある。
【００１０】
物理現象の不規則性を利用して乱数を生成する方式には、例えば、抵抗体の熱雑音により乱数を生成する方式や、リングオシレータなどのアナログ出力からアナログ−デジタル変換（以降、Ａ／Ｄ変換と表記する）によって乱数を得る方式などがある。
しかしながら、これらの方式では、必ずしも全く偏りのない粗雑な乱数が得られるわけではなく、ビット単位の偏りや周期性が生じてしまうことがある。そうした乱数を公開鍵暗号方式の秘密鍵やデジタル署名用のセッションキーに使用した場合、安全性の低下が危惧される。
【００１１】
乱数の粗雑性の評価基準として、ＦＩＰＳ（ｆｅｄｅｒａｌ  ｉｎｆｏｒｍａｔｉｏｎ  ｐｒｏｃｅｓｓｉｎｇ  ｓｔａｎｄａｒｄｓ）１４０−２に“ｓｔａｔｉｓｔｉｃａｌ  ｒａｎｄｏｍ  ｎｕｍｂｅｒ  ｇｅｎｅｒａｔｏｒ  ｔｅｓｔ”が定義されている。この評価基準では、２００００ビットの乱数を連続で生成させた時に、この２００００ビット中に含まれる‘１’の数によって乱数の粗雑性が評価される。
図１７は、あるアナログ乱数生成器によって生成した２００００ビットの乱数に含まれる‘１’の数を複数回にわたって検査した結果を示す図である。図の縦軸の値は２００００ビット中の‘１’の数を示し、横軸の値は各検査の番号を示す。
完全に粗雑な乱数であれば、‘０’と‘１’の発生確率がそれぞれ５０％であるため‘１’の数は１００００付近になる。しかしながら、図１７の例では、‘１’の発生確率が明らかに５０％より低くなっている。
【００１２】
このようなビット値の偏りに対処する方法として、擬似乱数を用いる方法がある（特許文献１〜４を参照）。
例えば、Ｍ系列発生回路などの線形回路を複数組み合わせた擬似乱数生成回路や、ＤＥＳ（ｄａｔａ  ｅｎｃｒｙｐｔｉｏｎ  ｓｔａｎｄａｒｄ）方式などの共通鍵暗号方式における暗号演算回路、ＳＨＡ−１（Ｓｅｃｕｒｅ  Ｈａｓｈ  Ａｌｇｏｒｉｔｈｍ  −１）方式やＭＤ５（ｍｅｓｓａｇｅ  ｄｉｇｅｓｔ  ５）方式などにおけるハッシュ演算回路に対して、上述した物理手段により生成される乱数をシードとして入力することにより、ビット値の偏りが少ない均一な擬似乱数を得る方法がある。
【００１３】
一般的な擬似乱数生成法では、与えられたシードに所定の乱数演算を繰り返すことにより擬似乱数を生成する。すなわち、乱数演算の関数をＦとした場合、シードとして初期値Ｒ（０）が与えられると、乱数列Ｒ（１），Ｒ（２），Ｒ（３），…は、“Ｒ（ｉ＋１）＝Ｆ（Ｒ（ｉ））”の式により順番に生成される。そして、乱数Ｒ（１），Ｒ（２），Ｒ（３），…を結合することにより、所望の長さの擬似乱数が生成される。
【００１４】
【特許文献１】
特開２０００−２４２４７０号公報
【特許文献２】
特開２００１−７５４７６号公報
【特許文献３】
特開２０００−４２２３号公報
【特許文献４】
特開２００１−３４４０９４号公報
【００１５】
【発明が解決しようとする課題】
この擬似乱数生成法は、特別なハードウェアを必要とせず、ソフトウェアによる実現が可能であり、マイクロコンピュータ上で利用できるという利点がある。しかしながら、上述したように、初期値を用いて所定の関数により乱数列が生成されるため、関数と初期値が決まると、全ての乱数列が決定される。このため、関数と初期値が知られてしまうと、同様の方法で乱数列を容易に生成することができるという不利益がある。
【００１６】
一例を挙げると、ＦＩＰＳ１８６におけるＳＨＡ−１方式を用いた擬似乱数生成方法においては、長さが１６０ビットのビット列ｔと、長さがｂビット（１６０≦ｂ≦５１２）のビット列ｃとをＳＨＡ−１演算器に与えて１６０ビットの乱数を生成する。この方法では、ＳＨＡ−１演算器が持つ５１２ビットの入力バッファにビット列ｃを格納した後で、この入力バッファの残りの格納領域に（５１２−ｂ）個の‘０’を格納するため、ビット列ｃが決まると、ビット列ｃの入力に対し、ＳＨＡ−１演算器の出力は常に一定となってしまう。
【００１７】
加えて、これらの擬似乱数生成法は、ハードウェアで実現した場合の回路規模が非常に大きくなり、ソフトウェアで実現する場合も多くのコード量と演算時間が必要になるという不利益がある。
【００１８】
本発明はかかる事情に鑑みてなされたものであり、その目的は、簡易な構成でありながら、ビット値の偏りや周期性の少ない乱数を生成することができる乱数生成装置とその方法を提供することにある。
また、本発明の他の目的は、ビット値の偏りや周期性の少ない乱数の生成に係る処理を、より簡易な手順でコンピュータに実行させることができるプログラムを提供することにある。
また、本発明の更に他の目的は、簡易な構成で、ビット値の偏りや周期性のない乱数を用いた安全性の高い暗号処理を実行することができる暗号処理装置を提供することにある。
【００１９】
【課題を解決するための手段】
上記の目的を達成するため、本発明の第１の観点の乱数生成装置は、乱数生成手段と、上記乱数生成手段において生成される乱数データを、入力される補正情報に基づいて補正する補正手段と、上記補正手段において補正された乱数データに所定のビット値を持つビットデータが出現する頻度に応じて上記補正情報を生成する補正情報生成手段と有する。
好適には、上記乱数生成手段は、物理現象の不規則性に基づいて乱数を生成する。
【００２０】
本発明の第１の観点によれば、上記乱数生成手段において物理現象の不規則性に基づいて生成される乱数データが、上記補正手段において、入力される補正情報に基づいて補正される。上記補正情報生成手段では、上記補正手段において補正された乱数データに所定のビット値を持つビットデータが出現する頻度に応じて、上記補正情報が生成される。
【００２１】
また、本発明の第１の観点は、上記補正手段において補正された乱数データを順に格納する複数のデータ格納手段を有しても良い。
この場合、上記補正情報生成手段は、上記データ格納手段に格納される複数の乱数データの中に上記所定のビット値を持つビットデータが存在する数を計数し、当該計数値と所定のしきい値との比較結果に基づいて上記補正情報を生成する。
【００２２】
また、上記補正情報生成手段は、入力される制御信号に応じて上記しきい値を変化させても良い。
【００２３】
本発明の第２の観点の乱数生成方法は、乱数生成手段において生成される乱数データを、与えられる補正情報に基づいて補正する第１の工程と、上記第１の工程において補正された乱数データに所定のビット値を持つビットデータが出現する頻度に応じて上記補正情報を新たに生成する第２の工程とを有する。
【００２４】
本発明の第２の観点によると、乱数生成手段において生成される乱数データが、上記第１の工程において、与えられる補正情報に基づいて補正される。上記第２の工程では、上記第１の工程において補正された乱数データに所定のビット値を持つビットデータが出現する頻度に応じて、上記補正情報が新たに生成される。
【００２５】
本発明の第３の観点のプログラムは、乱数生成手段において生成される乱数データを、与えられる補正情報に基づいて補正する第１のステップと、上記第１のステップにおいて補正された乱数データに所定のビット値を持つビットデータが出現する頻度に応じて上記補正情報を新たに生成する第２のステップと、を有する処理をコンピュータに実行させる。
【００２６】
本発明の第４の観点の暗号処理装置は、乱数生成手段と、上記乱数生成手段において生成される乱数データを、入力される補正情報に基づいて補正する補正手段と、上記補正手段において補正された乱数データに所定のビット値を持つビットデータが出現する頻度に応じて上記補正情報を生成する補正情報生成手段と、上記補正手段において補正された乱数データに応じて所定の暗号処理を実行する暗号処理手段とを有する。
【００２７】
【発明の実施の形態】
以下、本発明の３つの実施形態について、図面と関連付けて説明する。
【００２８】
＜第１の実施形態＞
図１は、本発明の第１の実施形態に係る暗号処理装置の構成の一例を示すブロック図である。
図１に示す暗号処理装置１００は、乱数生成装置の実施形態である乱数生成部１０と、暗号処理手段の実施形態である暗号処理部２０と、ＥＥＰＲＯＭ３０と、ＣＰＵ４０と、ＲＡＭ５０と、ＲＯＭ６０とを有する。
【００２９】
乱数生成部１０は、バスＢＳを介して入力されるＣＰＵ４０からの制御信号に応じて、乱数を生成する。例えば、ＣＰＵ４０からの制御信号に応じて乱数の生成を開始または停止する。
なお、乱数生成部１０の構成と動作については、後で更に詳細に説明する。
【００３０】
暗号処理部２０は、バスＢＳを介して入力されるＣＰＵ４０からの制御信号に応じて、所定の暗号処理を実行する。
例としてＲＳＡ方式の暗号処理を実行するものとすると、暗号処理部２０は、例えば、乱数生成部１０において生成される乱数に応じて公開鍵および秘密鍵のペアを生成する処理（鍵生成処理）や、通信相手の公開鍵によって平文を暗号化する処理（暗号化処理）、公開鍵によって暗号化された暗号文を当該公開鍵のペアとなる秘密鍵によって復号する処理（復号化処理）を行う。また、送信文に添付するデジタル署名を秘密鍵によって生成する処理（デジタル署名生成処理）や、受信文に添付されたデジタル署名を通信相手の公開鍵によって検証する処理（デジタル署名検証処理）なども行う。
【００３１】
ＥＥＰＲＯＭ３０は、電気的に消去可能なプログラマブルＲＯＭであり、バスＢＳを介して入力されるＣＰＵ４０からの制御信号に応じて、暗号処理に用いられる鍵のデータを格納する。
【００３２】
ＣＰＵ４０は、ＲＯＭ６０に格納されたプログラムに基づいて、暗号処理装置１００の全体動作に係わる種々の制御を行う。
例えば、上述した鍵生成処理、暗号化処理、復号化処理、デジタル署名の生成・検証処理などの暗号処理を、プログラムに基づいて暗号処理部２０に実行させる。
また、暗号処理部２０における鍵生成処理や、デジタル署名時のセッションキーを生成する場合など、プログラムの実行過程で乱数が必要な場合は、これを乱数生成部１０に生成させる。
また、暗号処理部２０において生成された鍵データをＥＥＰＲＯＭ３０に書き込む処理や、ＥＥＰＲＯＭ３０に格納された鍵データを読み出して暗号処理部２０に供給する処理をプログラムに基づいて実行する。
【００３３】
ＲＡＭ５０は、ＣＰＵ４０によるプログラムの実行過程で利用される一時的なデータを格納する。
ＲＯＭ６０は、ＣＰＵ４０において実行されるプログラムを格納する。
【００３４】
次に、上述した乱数生成部１０のより詳細な構成について述べる。
【００３５】
図２は、本発明の第１の実施形態に係る乱数生成部１０の構成の一例を示すブロック図である。
図２に示す乱数生成部１０は、乱数生成手段の実施形態である物理乱数生成部１と、補正手段の実施形態である補正部２と、補正情報生成手段の実施形態である補正情報生成部３と、複数のデータ格納手段の実施形態であるＦＩＦＯ４と、インターフェース部５とを有する。
【００３６】
物理乱数生成部１は、物理現象の不規則性に基づいて乱数を生成する。このような乱数生成方式としては、例えば、抵抗体の熱雑音に基づいて乱数を生成する方式や、リングオシレータなどのアナログカオス回路から出力されるカオス信号に基づいて乱数を生成する方式などが適用可能である。
また、物理乱数生成部１は、ＣＰＵ４０よりインターフェース部５を介して入力される制御信号に応じて、乱数の生成を開始または停止しても良い。これにより、乱数の生成が不要な場合に乱数の生成動作を停止させることが可能となり、無駄な消費電力が減少する。
【００３７】
補正部２は、物理乱数生成部１において生成される乱数データＳ１を、入力される補正情報Ｓ３に基づいて補正する。補正情報Ｓ３は、後述するように、乱数データＳ１の各ビットデータを‘１’に補正するか、‘０’に補正するか、または、そのままの値を保つかの指示を与える情報であり、補正部２は、この情報に基づいて各ビットデータを補正する。
【００３８】
補正情報生成部３は、補正部２において補正された乱数データＳ２に所定のビット値、例えば‘１’のビット値を持つビットデータが出現する頻度に応じて、補正情報Ｓ３を生成する。図２に示す例では、乱数データＳ２に‘１’のビットデータが出現する頻度を、ＦＩＦＯ４に格納される補正後の一連の乱数データに基づいて算出している。補正情報生成部３は、この算出した頻度に応じて、補正前の乱数データＳ１に対する補正情報Ｓ３を生成する。
また、補正情報生成部３は、ＣＰＵ４０よりインターフェース部５を介して入力される制御信号に応じて、補正情報の生成を開始または停止しても良い。これにより、乱数の生成が不要な場合に補正情報の生成動作を停止させることが可能となり、無駄な消費電力が減少する。
なお、補正情報生成部３の構成と動作については、後で更に詳細に説明する。
【００３９】
ＦＩＦＯ４は、補正部２において補正された乱数データＳ２を順に格納する。
ＦＩＦＯ４は、例えば、内部に所定データ長のデータを格納可能な所定数のデータ格納用のメモリを有しており、補正後の所定データ長の乱数データＳ２を、これらのメモリに順に格納する。全てのメモリに乱数データが格納されると、既に格納された乱数データ中で最も先に格納された乱数データを廃棄し、その空きメモリに新たな乱数データＳ２を格納する。このようなデータ格納動作が繰り返されることにより、ＦＩＦＯ４には、補正部２において補正された一連の乱数データが所定数格納される。
また、ＦＩＦＯ４は、ＣＰＵ４０よりインターフェース部５を介して入力される制御信号に応じて、上述した乱数データの格納動作を開始または停止しても良い。これにより、乱数の生成が不要な場合にデータ格納動作を停止させることが可能となり、無駄な消費電力が減少する。
【００４０】
なお、このＦＩＦＯ４は、補正部２において補正された乱数データＳ２のみ格納可能であり、さらに、補正情報生成部３からのみ格納データの読み出しが可能としても良い。これにより、バスＢＳからＦＩＦＯ４に直接アクセスすることが不可能となり、ＦＩＦＯ４に格納された乱数データの機密性が高まる。
【００４１】
インターフェース部５は、補正部２において補正された乱数データＳ２をバスＢＳに出力する。また、特に図示していないが、バスＢＳを介して伝送されるＣＰＵ４０からの制御信号を入力し、乱数生成部１０の各ユニットに供給する。
【００４２】
次に、上述した補正部２および補正情報生成部３のより詳細な構成について述べる。
【００４３】
図３は、補正部２および補正情報生成部３の構成の一例を示すブロック図である。
図３に示す補正情報生成部３は、計数部３−１と、計数値レジスタ３−２と、上限比較部３−３と、下限比較部３−４と、ＡＮＤマスク・レジスタ３−５と、ＯＲマスク・レジスタ３−６とを有する。
図３に示す補正部２は、ＡＮＤ演算部２−１と、ＯＲ演算部２−２とを有する。
【００４４】
計数部３−１は、ＦＩＦＯ４に格納される所定数の乱数データの中に‘１’のビット値を持つビットデータが存在する数を計数する。
例えば、計数部３−１は、ＦＩＦＯ４に格納される所定数の乱数データにおける同一桁のビットデータ中に‘１’のビットデータが存在する数を、それぞれの桁について計数する。すなわち、それぞれの桁における‘１’のビットデータの数を計数する。
【００４５】
計数値レジスタ３−２は、計数部３−１における各桁の‘１’の計数結果を格納する。
【００４６】
上限比較部３−３は、計数値レジスタ３−２に格納される各桁の計数結果と所定の上限しきい値とを比較する。この比較の結果、‘１’の計数結果が上限しきい値を超える桁を検出し、その桁のビット値を‘０’に設定するための補正情報として、ＡＮＤマスク・データを生成する。
【００４７】
下限比較部３−４は、計数値レジスタ３−２に格納される各桁の計数結果と所定の下限しきい値とを比較する。この比較の結果、‘１’の計数結果が下限しきい値を下回る桁を検出し、その桁のビット値を‘１’に設定するための補正情報として、ＯＲマスク・データを生成する。
【００４８】
ＡＮＤマスク・レジスタ３−５は、上限比較部３−３において生成されるＡＮＤマスク・データを格納する。
【００４９】
ＯＲマスク・レジスタ３−６は、下限比較部３−４において生成されるＯＲマスク・データを格納する。
【００５０】
ＡＮＤ演算部２−１は、物理乱数生成部１において生成される乱数データＳ１のビットデータと、ＡＮＤマスク・レジスタ３−５に格納されるＡＮＤマスク・データのビットデータとを、対応する桁同士で論理積演算する。
【００５１】
ＯＲ演算部２−２は、ＡＮＤ演算部２−１において補正された乱数データのビットデータと、ＯＲマスク・レジスタ３−６に格納されるＯＲマスク・データのビットデータとを、対応する桁同士で論理和演算する。
【００５２】
ここで、上述した構成を有する暗号処理装置１００の動作について、図４に示すフローチャートを参照して説明する。
【００５３】
ＲＯＭ６０に格納されたプログラムがＣＰＵ４０に読み込まれて実行されると、このプログラムに基づいて暗号処理部２０の処理が起動され、鍵データの生成処理や、平文の暗号化処理、暗号文の復号化処理、デジタル署名の生成・検証処理などの暗号処理が実行される。
鍵データの生成処理において生成された鍵データは、ＥＥＰＲＯＭ３０に格納される。デジタル署名の生成や復号化処理において用いられる秘密鍵のデータは、ＥＥＰＲＯＭ３０より読み出されて暗号処理部２０に供給される。
また、鍵データの生成処理やデジタル署名の生成処理において用いられる乱数は、乱数生成部１０において生成されて暗号処理部２０に供給される。
【００５４】
ＣＰＵ４０から乱数の生成命令が乱数生成部１０に与えられると、乱数生成部１０では、次に述べる初期化動作が実行される（ステップＳＴ１０１）。
【００５５】
まず、物理乱数生成部１が起動し、乱数の生成が開始される。初期化動作時では、補正部２による乱数の補正が行われず、物理乱数生成部１で生成された乱数データＳ１がそのまま乱数データＳ２としてＦＩＦＯ４に順次格納される。
以下の説明では、一例として、物理乱数生成部１において生成される乱数データが３２ビットのデータ長を有するものとする。またＦＩＦＯ４は、図５に示すように、３２ビットの乱数データをそれぞれ格納可能な３２ブロックのメモリを有するものとする。
【００５６】
３２ブロック分の乱数データＳ２がＦＩＦＯ４に格納されると、続いて、計数部３−１において、乱数データの各桁の‘１’が計数される。
すなわち、ＦＩＦＯ４に格納された乱数データにおける同一桁のビットデータ中に存在する‘１’のビットデータの数が、３２桁のそれぞれについて計数される。この計数結果は、計数値レジスタ３−２に初期値として格納される。
【００５７】
図６は、計数値レジスタ３−２に格納される各桁の計数値Ａ［０］〜Ａ［３１］を示す図である。図６の例において、計数値レジスタ３−２に格納される計数値のビット幅は８ビットである。
【００５８】
図８は、計数部３−１における‘１’の計数動作を説明するための図である。図８（Ａ）に示すように、乱数データのビット値が‘１’となる数が、ＦＩＦＯ４に格納される３２個の乱数データの各桁についてそれぞれ計数される。したがって、計数値の最小値は０であり、最大値は３２である。図８（Ｂ）は、この計数値Ａ［０］〜Ａ［３１］が計数値レジスタ３−２に格納される様子を図解している。
【００５９】
各桁の計数値Ａ［０］〜Ａ［３１］の初期値が計数値レジスタ３−２に初期値として格納されると、次に、これらの計数値は、上限比較部３−３において所定の上限しきい値と比較される。この比較の結果、計数値が上限しきい値を超える桁が検出されると、その桁のビット値を‘０’に補正するＡＮＤマスク・データが生成される。生成されたＡＮＤマスク・データは、初期値としてＡＮＤマスク・レジスタ３−５に格納される。
また、計数値レジスタ３−２の計数値は、下限比較部３−４において所定の下限しきい値と比較される。この比較の結果、計数値が下限しきい値を下回る桁が検出されると、その桁のビット値を‘１’に補正するＯＲマスク・データが生成される。生成されたＯＲマスク・データは、初期値としてＯＲマスク・レジスタ３−６に格納される。
【００６０】
図７は、ＡＮＤマスク・レジスタ３−５に格納されるＡＮＤマスク・データ、および、ＯＲマスク・レジスタ３−６に格納されるＯＲマスク・データを示す図である。図７の例に示すように、ＡＮＤマスク・データおよびＯＲマスク・データは、乱数データＳ１と同じ３２ビットのデータ長を有する。
【００６１】
図９は、計数値レジスタ３−２に格納される各桁の計数値Ａ［０］〜Ａ［３１］の一例を図解した図である。図の縦軸は計数値を示し、横軸は３２桁のそれぞれに対応する桁番号を示す。
例えば上限しきい値ＴＨが１７であるとすると、図９の例において、桁番号６の桁（最下位桁から数えて７番目の桁）が上限しきい値ＴＨを超えている。この場合、上限しきい値ＴＨを超える桁が他に存在しないものとすると、上限比較部３−３において生成されるＡＮＤマスク・データは、２進数で‘１…１０１１１１１１’、１６進数で‘ＦＦＦＦＦＦＢＦ’というデータになる。
また、下限しきい値ＴＬが１５であるとすると、図９の例において、桁番号８（最下位桁から数えて９番目の桁）が下限しきい値ＴＬを下回っている。この場合、下限しきい値ＴＬを下回る桁が他に存在しないものとすると、下限比較部３−４において生成されるＯＲマスク・データは、２進数で‘０…０１００００００００’、１６進数で‘０００００１００’というデータになる。
【００６２】
以上のような初期化動作によって、計数値レジスタ３−２、ＡＮＤマスク・レジスタ３−５、ＯＲマスク・レジスタ３−６に初期値が設定されると、次いで、物理乱数生成部１において乱数データＳ１が生成され、補正部２に入力される（ステップＳＴ１０２）。
【００６３】
補正部２のＡＮＤ演算部２−１では、物理乱数生成部１において生成される乱数データＳ１と、ＡＮＤマスク・レジスタ３−５に格納されるＡＮＤマスク・データとのビット単位の論理積が演算される（ステップＳＴ１０３）。
また、補正部２のＯＲ演算部２−２では、ＡＮＤ演算部２−１において補正された乱数データと、ＯＲマスク・レジスタ３−６に格納されるＯＲマスク・データとのビット単位の論理和が演算される（ステップＳＴ１０４）。
【００６４】
例えば図１０（Ａ）に示すように、ＡＮＤマスク・レジスタ３−５に格納されるＡＮＤマスク・データが１６進数で‘ＦＦＦＦＦＦＢＦ’という値を持ち、ＯＲマスク・レジスタ３−６に格納されるＯＲマスク・データが１６進数で‘０００００１００’という値を持つものとする。
この状態で、物理乱数生成部１から１６進数で‘３８７８Ｂ６Ｃ０’という値の乱数データＳ１が出力されると、この乱数データＳ１とＡＮＤマスク・データとの論理積によって最下位桁から７番目の桁のビットデータが‘０’に設定されるとともに、最下位桁から９番目の桁のビットデータが‘１’に設定される。その結果、‘３８７８Ｂ６Ｃ０’の乱数データＳ１は‘３８７８Ｂ７８０’の乱数データＳ２へ補正される。
【００６５】
このようにして、補正部２で補正された乱数データＳ２は、インターフェース部５を介して外部バスＢＳに出力される（ステップＳＴ１０５）。
【００６６】
また、補正部２で補正された乱数データＳ２は、ＦＩＦＯ４において最も先に格納された乱数データの代わりとして、新たにＦＩＦＯ４に格納される（ステップＳＴ１０６）。
【００６７】
ＦＩＦＯ４に補正後の乱数データが格納されることによって、ＦＩＦＯ４の内容が更新されると、これに応じて、計数部３−１における‘１’の計数値も更新され、この更新された計数値が新たに計数値レジスタ３−２に格納される（ステップＳＴ１０７）。
【００６８】
計数値レジスタ３ー２の計数値が更新されると、上限比較部３−３では、更新された計数値と上限しきい値との新たな比較が行われ、その結果として、ＡＮＤマスク・レジスタ３−５に格納されるＡＮＤマスク・データの値が更新される（ステップＳＴ１０８）。また、下限比較部３−４では、更新された計数値と下限しきい値との新たな比較が行われ、その結果として、ＯＲマスク・レジスタ３−６に格納されるＯＲマスク・データの値が更新される（ステップＳＴ１０９）。
【００６９】
次いでステップＳＴ１１０において、ＣＰＵ４０からの命令に基づいて、乱数の生成を終了するか否かの判断がなされ、さらに乱数の生成を行う場合には、再びステップＳＴ１０２の処理に戻り、上述した乱数データＳ１の補正と、各レジスタ（３−２、３−５、３−６）の格納データの更新が繰り返される。また、乱数生成の終了が判断された場合には、物理乱数生成部１における乱数の生成、補正情報生成部３における補正情報の生成、ＦＩＦＯにおける乱数データＳ２の格納動作が停止され（ステップＳＴ１１１）、乱数生成動作が終了する。
【００７０】
図１１は、上述した乱数生成部１０によって生成した２００００ビットの乱数に含まれる‘１’の数を複数回にわたって検査した結果の一例を示す図である。図の縦軸の値は２００００ビット中の‘１’の数を示し、横軸の値は各検査の番号を示す。
図１１の例に示すように、上述した乱数生成部１０において生成される乱数に‘１’が出現する確率は概ね５０％となり、図１７の例に示すようなアナログ乱数生成器をそのまま用いる場合に比べて、乱数に出現するビット値の偏りが低減している。
【００７１】
以上説明したように、図２に示す乱数生成部１０によれば、物理乱数生成部１の乱数データＳ１が補正情報Ｓ３に基づいて補正され、この補正された乱数データＳ２に所定のビット値（例えば‘１’）を持つビットデータが出現する頻度に応じて、新たな補正情報Ｓ３が生成される。したがって、補正部２において補正された乱数データＳ２に所定のビット値が出現する頻度を制御することが可能になり、これにより、生成した乱数に出現するビット値の偏りを低減することが可能になる。
【００７２】
また、物理乱数生成部１において、乱数データＳ１が物理現象の不規則性に基づいて生成されることから、擬似乱数のような周期性が無く、より安全性の高い乱数を生成することができる。
【００７３】
しかも、図２および図３の例に示す乱数生成部１０は、物理乱数生成部１に加えて、補正後の一連の乱数データを所定数だけ格納するＦＩＦＯ４と、このＦＩＦＯ４に格納される所定数の乱数データの中に所定のビット値のビットデータが存在する数を計数する計数部３−１と、この計数値と所定の上限しきい値および下限しきい値との比較結果に基づいて補正情報Ｓ３を生成する上限比較部３−３および下限比較部３−４と、生成された補正情報Ｓ３と乱数データＳ１との論理演算を行うユニット（２−１、２−３）とを有しているが、これらの構成は、ＤＥＳ方式やＳＨＡ−１方式等の従来の暗号演算回路を用いて擬似乱数を生成する場合に比べて明らかに簡易であり、このような従来の回路を用いる場合に比べて回路規模を大幅に縮小することができる。
【００７４】
したがって、図１に示す暗号処理装置１００によれば、偏りや周期性のない乱数を用いた安全性の高い暗号処理を実行することができるとともに、従来の高度な擬似乱数生成方式を用いる場合に比べて回路構成を簡易化することができる。
【００７５】
＜第２の実施形態＞
図１２は、本発明の第２の実施形態に係る乱数生成部１０Ａの構成の一例を示す図である。
【００７６】
第２の実施形態においては、乱数生成部の一部の機能が、プログラムに基づいて処理を実行するコンピュータ等の処理装置によって実現される。
例えば、図２に示す乱数生成部１０における補正部２および補正情報生成部３は、図１２に示す乱数生成部１０Ａにおいて、処理部６およびプログラムメモリ７に置き換えらる。
【００７７】
処理部６は、プログラムメモリ７に格納されるプログラムに基づいて、例えば既に述べた図４に示すフローチャートに示すような、乱数生成に係る処理を実行する。
すなわち、初期化動作（ステップＳＴ１０１）において補正情報Ｓ３の初期値を生成し、この初期値に基づいて、物理乱数生成部１において生成される乱数データＳ１を補正する（ステップＳＴ１０３およびＳＴ１０４）。そして、この補正した乱数データＳ２をインターフェース部５からバスＢＳに出力する（ステップＳＴ１０５）とともに、ＦＩＦＯ４に格納する（ステップＳＴ１０６）。次いで、補正した乱数データＳ２に所定のビット値を持つビットデータが出現する頻度として、例えば、ＦＩＦＯ４に格納された一連の所定数の乱数データ中に‘１’のビット値を持つビットデータが存在する数を新たに計数し（ステップＳＴ１０７）、この計数値に応じて、補正情報Ｓ３を更新する（ステップＳＴ１０８およびＳＴ１０９）。ＣＰＵ４０の命令に応じて、上述と同様な乱数データＳ１の補正と補正情報Ｓ３の更新を更に繰り返し、乱数データＳ２を生成する。
【００７８】
以上説明した乱数生成部１０Ａにおいても、図２に示す乱数生成部１０と同様に、偏りや周期性のない乱数を生成することができる。また、ＤＥＳ方式やＳＨＡ−１方式等の暗号アルゴリズムを用いた擬似乱数生成方法に比べて、処理手順が明らかに簡易であり、プログラムのコード量を削減できるとともに、処理の高速化を図ることができる。
【００７９】
＜第３の実施形態＞
図１３は、本発明の第３の実施形態に係るハードウェア・トークンの構成の一例を示すブロック図である。
【００８０】
ハードウェア・トークンは、所有者が確かに本人であることを証明する情報であって、他人に勝手に使われないよう秘匿すべき情報（例えば公開鍵暗号方式における秘密鍵など）を安全に保管することができる携帯性を有したデバイスである。本実施形態は、このようなハードウェア・トークンに本発明の乱数生成装置を適用したものである。
【００８１】
図１３に示すハードウェア・トークン１０１は、乱数生成装置の実施形態である乱数生成部１０と、暗号処理手段の実施形態であるＲＳＡ演算器２１およびＳＨＡ演算器２２と、ＥＥＰＲＯＭ３０と、ＣＰＵ４０と、ＲＡＭ５０と、ＲＯＭ６０と、ＥＣＣ部７０と、シリアル・インターフェース部８０とを有する。なお、図１と図１３の同一符号は同一の構成要素を示す。
【００８２】
ＲＳＡ演算器２１は、バスＢＳを介して入力されるＣＰＵ４０からの制御信号に応じて、ＲＳＡ方式の暗号処理に係わる演算を実行する。
例えば、公開鍵および秘密鍵のペアを生成する鍵生成処理や、公開鍵を使って平文を暗号化する暗号化処理、秘密鍵を使って暗号文を復号する復号化処理を行う。
【００８３】
ＳＨＡ演算器２２は、バスＢＳを介して入力されるＣＰＵ４０からの制御信号に応じて、与えられた平文に対するＳＨＡ方式のハッシュ値を演算する。
【００８４】
ＥＣＣ部７０は、シリアル・インターフェース部８０を介してコンピュータ２００から伝送される信号の誤り検出および訂正処理を行う。また、シリアル・インターフェース部８０を介してコンピュータ２００に送出する信号に所定の誤り訂正符号化処理を施す。
【００８５】
シリアル・インターフェース部８０は、例えばＵＳＢ（ｕｎｉｖｅｒｓａｌ  ｓｅｒｉａｌ  ｂｕｓ）方式やＵＡＲＴ（ｕｎｉｖｅｒｓａｌ  ａｓｙｎｃｈｒｏｎｏｕｓ  ｒｅｃｅｉｖｅｒ−ｔｒａｎｓｃｅｉｖｅｒ）方式などのシリアル通信方式によって、コンピュータ２００との間で信号の受け渡しを行う。
【００８６】
次に、上述した構成を有する図１３に示すハードウェア・トークン１０１の動作を説明する。
【００８７】
コンピュータ２００に導入されたソフトウェアが起動し、このソフトウェア上でユーザ認証に係わる処理が実行されると、これに応じた種々の命令がコンピュータ２００からハードウェア・トークン１０１へ入力される。ハードウェア・トークン１０１では、ＲＯＭ６０に格納されたプログラムに基づいて、コンピュータ２００からの命令に応じた暗号処理、例えば、ＲＳＡ方式の鍵ペアの生成処理や、ＥＣＤＳＡ（ｅｌｌｉｐｔｉｃ  ｃｕｒｖｅ  ｄｉｇｉｔａｌ  ｓｉｇｎａｔｕｒｅ  ａｌｇｏｒｉｔｈｍ）方式のデジタル署名の生成・検証処理が実行される。
【００８８】
図１４は、ＲＳＡ方式の鍵ペアの生成処理の一例を示すフローチャートである。
【００８９】
まず、乱数生成部１０において乱数Ｐの生成が実行され（ステップＳＴＳＴ２０１）、ＲＳＡ演算器２１に供給される。ＲＳＡ演算器２１では、供給された乱数Ｐが素数であるか否かの判定処理が実行され（ステップＳＴ２０２）、素数でない場合はステップＳＴ２０１に戻り、再び乱数Ｐの生成と素数判定が行われる。
乱数Ｐが素数であると判定された場合には、更に、乱数生成部１０において乱数Ｑの生成が実行され（ステップＳＴＳＴ２０３）、乱数Ｑが素数であるか否かの判定がＲＳＡ演算器２１において実行される（ステップＳＴ２０４）。素数でない場合はステップＳＴ２０３に戻り、再び乱数Ｑの生成と素数判定が行われる。
【００９０】
乱数生成部１０において生成された乱数から素数ＰおよびＱが得られると、ＲＳＡ演算器２１では、この素数ＰおよびＱに基づいて、次式に示す公開鍵Ｎが算出される（ステップＳＴ２０５）。
【００９１】
【数１】
Ｎ  ＝  Ｐ×Ｑ  …  （１）
【００９２】
また秘密鍵ｄとしては、所定数ｅ（例えば４０９７）と素数ＰおよびＱとの間で次式を成立させるような数が算出される（ステップＳＴ２０６）。
【００９３】
【数２】
（ｄ×ｅ）  ｍｏｄ  （Ｐ−１）×（Ｑ−１）  ＝  １  …  （２）
【００９４】
このようにして算出された公開鍵Ｎおよび秘密鍵ｄは、ＥＥＰＲＯＭ３０に格納される。
【００９５】
図１５は、ＥＣＤＳＡ方式のデジタル署名生成処理の一例を示すフローチャートである。
【００９６】
まず、乱数生成部１０において、乱数ｕの生成が実行され（ステップＳＴ３０１）、生成された乱数ｕに基づいて、次式に示す署名ｃが生成される。
【００９７】
【数３】
ｃ  ＝  （ｕ・Ｇ）ｘ  ｍｏｄ  ｒ  …  （３）
【００９８】
ただし、式（３）における記号‘Ｇ’は楕円曲線のベースポイント座標を示し、記号‘ｒ’は楕円曲線の位数を示す。また、括弧で表す記号‘（  ）ｘ’は、括弧内の演算によって求められる楕円曲線上の点のｘ座標を示す。
【００９９】
次いで、署名を行う平文ｍに対するＳＨＡ−１方式のハッシュ値ｆが、ＳＨＡ演算器２２において算出される（ステップＳＴ３０３）。この算出されたハッシュ値ｆと、署名ｃ、乱数ｕ、更には署名者の秘密鍵ｓに基づいて、署名ｄが次式により算出される（ステップＳＴ３０４）。
【０１００】
【数４】
ｄ  ＝  ｃ−１（ｆ＋ｓｃ）  ｍｏｄ  ｒ  …  （４）
【０１０１】
このようにして生成された署名ｃおよびｄが、平文ｍとともにコンピュータ２００へ送信される。
【０１０２】
図１６は、ＥＣＤＳＡ方式のデジタル署名検証処理の一例を示すフローチャートである。
【０１０３】
デジタル署名検証処理においては、コンピュータ２００から平文ｍとその署名ｃおよびｄが入力される。また、署名者の公開鍵座標Ｗもコンピュータ２００から入力される。
入力された平文ｍは、ＳＨＡ演算器２２に供給され、そのハッシュ値ｆが算出される（ステップＳＴ４０１）。次いで、算出されたハッシュ値ｆと、署名ｃおよびｄ、公開鍵座標Ｗに基づいて、次式に示す署名検証値ｖが演算される。
【０１０４】
【数５】
ｖ  ＝  （（ｄ−１ｆ）・Ｇ＋（ｃｄ−１）・Ｗ）ｘ  ｍｏｄ  ｒ  …（５）
【０１０５】
演算された署名検証値ｖは、コンピュータ２００に送信される。コンピュータ２００のソフトウェアでは、署名検証値ｖが署名ｄと一致するか否かに応じて、署名ｄおよびｃが公開鍵座標Ｗの署名者によるものであるか否かの判定が行われる。
【０１０６】
以上説明したように、図１３に示すハードウェア・トークン１０１によれば、乱数生成部１０において生成されるビット値の偏りや周期性の少ない乱数を用いて、鍵データの生成処理やデジタル署名の生成処理などの暗号処理が実行されるため、より安全性の高い個人認証が可能となる。また、簡易な構成の乱数生成部１０を用いることにより、装置の小型化や低消費電力化を図ることができる。
【０１０７】
なお、本発明は上述した実施形態に限定されない。
例えば、図２における補正情報生成部３や図１２における処理部６は、ＣＰＵ４０などから入力される制御信号に応じて、上限しきい値および下限しきい値を変化させても良い。これにより、乱数における‘１’と‘０’の発生確率を任意に制御することが可能になる。
【０１０８】
また、上述した実施形態では、ＣＰＵ４０からの命令に応じて、乱数生成部における乱数生成動作の開始と停止が制御されているが、ＣＰＵ４０からの命令に係わらず、常に乱数生成動作を起動させた状態にしても良い。これにより、ＦＩＦＯ４の状態や各レジスタ（３−２、３−５、３−６）の状態が常に更新されるため、更に予測することが困難な乱数を生成させることができる。
【０１０９】
また、上述した実施形態では、ＦＩＦＯ４に格納される所定数の乱数データに含まれる‘１’の数を桁ごとに計数し、各桁の計数結果に応じて各桁の補正情報Ｓ３が生成されているが、本発明はこの例に限定されない。
例えば、ＦＩＦＯ４に格納される乱数データの全ビットデータにおける‘１’の数を計数し、その計数値としきい値との比較結果に基づいて、物理乱数生成部１から出力される乱数データＳ２を１ビットずつ補正しても良い。
この場合、ＦＩＦＯ４に格納される‘１’のビットデータの数は、例えば、ＦＩＦＯ４に入力されるビットデータの値と、その入力とともに廃棄されるビットデータの値とに応じて算出することができる。すなわち、ＦＩＦＯ４に‘１’のビットデータが格納される場合にインクリメントし、ＦＩＦＯ４から‘１’のビットデータが廃棄される場合にデクリメントするカウンタを設けることにより、そのカウント値から、ＦＩＦＯ４に含まれる‘１’のビットデータの数を求めることができる。
【０１１０】
また、上述した実施形態では、補正部２において補正された乱数データのうち、ＦＩＦＯ４に格納される前の乱数データがインターフェース部５を介して出力されているが、ＦＩＦＯ４に既に格納された乱数データを出力する構成としても良い。
【０１１１】
【発明の効果】
本発明の乱数生成装置によれば、簡易な構成でありながら、ビット値の偏りや周期性の少ない乱数を生成することができる。
また、本発明のプログラムによれば、ビット値の偏りや周期性の少ない乱数の生成に係る処理を、より簡易な手順でコンピュータに実行させることができる。
また、本発明の暗号処理装置によれば、簡単な構成でありながら、偏りや周期性のない乱数を用いた安全性の高い暗号処理を実行することができる。
【図面の簡単な説明】
【図１】本発明の第１の実施形態に係る暗号処理装置の構成の一例を示すブロック図である。
【図２】本発明の第１の実施形態に係る乱数生成部の構成の一例を示すブロック図である。
【図３】図２に示す補正部および補正情報生成部の構成の一例を示すブロック図である。
【図４】本発明の第１の実施形態に係る乱数生成部の処理の一例を示すフローチャートである。
【図５】ＦＩＦＯのメモリ構成の一例を示す図である。
【図６】計数値レジスタに格納される各桁の計数値を示す図である。
【図７】ＡＮＤマスク・レジスタおよびＯＲマスク・レジスタに格納されるマスク・データの一例を示す図である。
【図８】計数部における‘１’の計数動作を説明するための図である。
【図９】計数値レジスタに格納される各桁の計数値の一例を図解した図である。
【図１０】補正部における乱数データの補正処理の具体例を示す図である。
【図１１】図２に示す乱数生成部によって生成した２００００ビットの乱数に含まれる‘１’の数を複数回にわたって検査した結果の一例を示す図である。
【図１２】本発明の第２の実施形態に係る乱数生成部の構成の一例を示す図である。
【図１３】本発明の第３の実施形態に係るハードウェア・トークンの構成の一例を示すブロック図である。
【図１４】図１３に示すハードウェア・トークンにおけるＲＳＡ方式の鍵ペアの生成処理の一例を示すフローチャートである。
【図１５】図１３に示すハードウェア・トークンにおけるＥＣＤＳＡ方式のデジタル署名生成処理の一例を示すフローチャートである。
【図１６】図１３に示すハードウェア・トークンにおけるＥＣＤＳＡ方式のデジタル署名検証処理の一例を示すフローチャートである。
【図１７】アナログ乱数生成器によって生成した２００００ビットの乱数に含まれる‘１’の数を複数回にわたって検査した結果を示す図である。
【符号の説明】
１…物理乱数生成部、２…補正部、２−１…ＡＮＤ演算部、２−２…ＯＲ演算部、３…補正情報生成部、３−１…計数部、３−２…計数値レジスタ、３−３…上限比較部、３−４…下限比較部、３−５…ＡＮＤマスク・レジスタ、３−６…ＯＲマスク・レジスタ、４…ＦＩＦＯ、５…インターフェース部、６…処理部、７…プログラムメモリ、１０，１０Ａ…乱数生成部、２０…暗号処理部、２１…ＲＳＡ演算器、２２…ＳＨＡ演算器、３０…ＥＥＰＲＯＭ、４０…ＣＰＵ、５０…ＲＡＭ、６０…ＲＯＭ、７０…ＥＣＣ部、８０…シリアル・インターフェース部、１００…暗号処理装置、１０１…ハードウェア・トークン、２００…コンピュータ
【図１】
2005003745.tif 000003
【図２】
2005003745.tif 000004
【図３】
2005003745.tif 000005
【図４】
2005003745.tif 000006
【図５】
2005003745.tif 000007
【図６】
2005003745.tif 000008
【図７】
2005003745.tif 000009
【図８】
2005003745.tif 000010
【図９】
2005003745.tif 000011
【図１０】
2005003745.tif 000012
【図１１】
2005003745.tif 000013
【図１２】
2005003745.tif 000014
【図１３】
2005003745.tif 000015
【図１４】
2005003745.tif 000016
【図１５】
2005003745.tif 000017
【図１６】
2005003745.tif 000018
【図１７】
2005003745.tif 000019