JP2005003745A - Device, method, and program for generating random number, and cipher processor - Google Patents
Device, method, and program for generating random number, and cipher processor Download PDFInfo
- Publication number
- JP2005003745A JP2005003745A JP2003164280A JP2003164280A JP2005003745A JP 2005003745 A JP2005003745 A JP 2005003745A JP 2003164280 A JP2003164280 A JP 2003164280A JP 2003164280 A JP2003164280 A JP 2003164280A JP 2005003745 A JP2005003745 A JP 2005003745A
- Authority
- JP
- Japan
- Prior art keywords
- random number
- data
- correction information
- bit
- correction
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Abandoned
Links
Images
Abstract
Description
【0001】
【発明の属する技術分野】
本発明は、乱数生成装置とその方法、乱数生成手段を備えた暗号処理装置、および、乱数の生成に係る処理をコンピュータに実行させるプログラムに関するものである。
【0002】
【従来の技術】
近年、インターネットを利用したデータ通信の普及に伴って、データ通信の安全性を高めることが重要な課題になっており、特に、データ通信の秘密性を確保する技術として暗号化技術が注目されている。
【0003】
コンピュータ・ネットワークを利用したデータ通信における代表的な暗号化方式には、共通鍵暗号方式と公開鍵暗号方式がある。
共通鍵暗号方式は、暗号化と復号化とで同じ暗号鍵を使う方式であり、「秘密鍵暗号」、「対称鍵暗号」、「慣用暗号」とも呼ばれる。
一方、公開鍵暗号方式は、暗号化と復号化とで異なる暗号鍵を使う方式である。公開鍵暗号方式によると、一方の暗号鍵で暗号化したデータは、もう一方の鍵を使わないと復号することができない。このため、一方の鍵を秘密にしておくことにより、他方の鍵を公開しても暗号文の秘密性を保つことができる。
【0004】
共通鍵暗号方式は、暗号化用と復号化用の鍵が同一であることから、通信相手に安全な方法で鍵を渡すことが難しく、鍵を共有するための手段が必要になる。これに対し、公開鍵暗号方式は、暗号化用と復号化用の鍵が異なるため、暗号化用の鍵を安全性が保証されない通信網で配送することが可能となり、通信相手に暗号鍵を渡すことが非常に楽である。
【0005】
このように、公開鍵暗号方式は鍵の配送が非常に容易であるという利点があるものの、その一方で、共通鍵暗号方式に比べて処理時間が非常に長くなるという不利益がある。例えば、公開鍵暗号方式の代表的な方式であるRSA(Rivest Shamir Adelman)方式の処理速度は、暗号化、復号化とも共通鍵暗号方式に比べ1000倍程度遅い。
【0006】
このため、コンピュータ・ネットワークを利用したデータ通信において、高速な暗号システムを構成する場合、一般に、暗号化および復号化は共通鍵暗号を用い、その鍵を公開鍵暗号によって暗号化し、配送するという方式が用いられている。この方式を採用している暗号システムには、PGP(pretty good privacy,商標)やPEM(privacy enhancement mail)などがある。
RSA方式は、主としてこのような共通鍵の受け渡しや、比較的少量のデータ伝送に使われている。
【0007】
以上の暗号化技術を利用すれば、電子マネーや、ネット上の音楽配信、携帯電話とIDカードを用いた個人向けのサービス等を実現する場合において、データの暗号化、および、本人認証に必要なデジタル署名の生成を行うことができる。
【0008】
ところで、こうした暗号化技術を利用して安全なデータ通信を保証するためには、安全な乱数を生成することが不可欠である。乱数の主な用途として、例えばパスワードの作成や、暗号化に使用する鍵の作成、暗号文の生成、電子署名情報の生成などがある。このような用途の乱数が攻撃者に推測されてしまうと、暗号文が解読されてしまったり、署名が改竄されてしまうなどの危険性が高まる。したがって、攻撃者が容易に推測することができない乱数を生成することが非常に重要である。
【0009】
乱数の生成方法には、物理現象の不規則性を利用して乱数を生成する方式と、数学的な演算処理によって長い周期の乱数列を生成する方式とがある。
【0010】
物理現象の不規則性を利用して乱数を生成する方式には、例えば、抵抗体の熱雑音により乱数を生成する方式や、リングオシレータなどのアナログ出力からアナログ−デジタル変換(以降、A/D変換と表記する)によって乱数を得る方式などがある。
しかしながら、これらの方式では、必ずしも全く偏りのない粗雑な乱数が得られるわけではなく、ビット単位の偏りや周期性が生じてしまうことがある。そうした乱数を公開鍵暗号方式の秘密鍵やデジタル署名用のセッションキーに使用した場合、安全性の低下が危惧される。
【0011】
乱数の粗雑性の評価基準として、FIPS(federal information processing standards)140−2に“statistical random number generator test”が定義されている。この評価基準では、20000ビットの乱数を連続で生成させた時に、この20000ビット中に含まれる‘1’の数によって乱数の粗雑性が評価される。
図17は、あるアナログ乱数生成器によって生成した20000ビットの乱数に含まれる‘1’の数を複数回にわたって検査した結果を示す図である。図の縦軸の値は20000ビット中の‘1’の数を示し、横軸の値は各検査の番号を示す。
完全に粗雑な乱数であれば、‘0’と‘1’の発生確率がそれぞれ50%であるため‘1’の数は10000付近になる。しかしながら、図17の例では、‘1’の発生確率が明らかに50%より低くなっている。
【0012】
このようなビット値の偏りに対処する方法として、擬似乱数を用いる方法がある(特許文献1〜4を参照)。
例えば、M系列発生回路などの線形回路を複数組み合わせた擬似乱数生成回路や、DES(data encryption standard)方式などの共通鍵暗号方式における暗号演算回路、SHA−1(Secure Hash Algorithm −1)方式やMD5(message digest 5)方式などにおけるハッシュ演算回路に対して、上述した物理手段により生成される乱数をシードとして入力することにより、ビット値の偏りが少ない均一な擬似乱数を得る方法がある。
【0013】
一般的な擬似乱数生成法では、与えられたシードに所定の乱数演算を繰り返すことにより擬似乱数を生成する。すなわち、乱数演算の関数をFとした場合、シードとして初期値R(0)が与えられると、乱数列R(1),R(2),R(3),…は、“R(i+1)=F(R(i))”の式により順番に生成される。そして、乱数R(1),R(2),R(3),…を結合することにより、所望の長さの擬似乱数が生成される。
【0014】
【特許文献1】
特開2000−242470号公報
【特許文献2】
特開2001−75476号公報
【特許文献3】
特開2000−4223号公報
【特許文献4】
特開2001−344094号公報
【0015】
【発明が解決しようとする課題】
この擬似乱数生成法は、特別なハードウェアを必要とせず、ソフトウェアによる実現が可能であり、マイクロコンピュータ上で利用できるという利点がある。しかしながら、上述したように、初期値を用いて所定の関数により乱数列が生成されるため、関数と初期値が決まると、全ての乱数列が決定される。このため、関数と初期値が知られてしまうと、同様の方法で乱数列を容易に生成することができるという不利益がある。
【0016】
一例を挙げると、FIPS186におけるSHA−1方式を用いた擬似乱数生成方法においては、長さが160ビットのビット列tと、長さがbビット(160≦b≦512)のビット列cとをSHA−1演算器に与えて160ビットの乱数を生成する。この方法では、SHA−1演算器が持つ512ビットの入力バッファにビット列cを格納した後で、この入力バッファの残りの格納領域に(512−b)個の‘0’を格納するため、ビット列cが決まると、ビット列cの入力に対し、SHA−1演算器の出力は常に一定となってしまう。
【0017】
加えて、これらの擬似乱数生成法は、ハードウェアで実現した場合の回路規模が非常に大きくなり、ソフトウェアで実現する場合も多くのコード量と演算時間が必要になるという不利益がある。
【0018】
本発明はかかる事情に鑑みてなされたものであり、その目的は、簡易な構成でありながら、ビット値の偏りや周期性の少ない乱数を生成することができる乱数生成装置とその方法を提供することにある。
また、本発明の他の目的は、ビット値の偏りや周期性の少ない乱数の生成に係る処理を、より簡易な手順でコンピュータに実行させることができるプログラムを提供することにある。
また、本発明の更に他の目的は、簡易な構成で、ビット値の偏りや周期性のない乱数を用いた安全性の高い暗号処理を実行することができる暗号処理装置を提供することにある。
【0019】
【課題を解決するための手段】
上記の目的を達成するため、本発明の第1の観点の乱数生成装置は、乱数生成手段と、上記乱数生成手段において生成される乱数データを、入力される補正情報に基づいて補正する補正手段と、上記補正手段において補正された乱数データに所定のビット値を持つビットデータが出現する頻度に応じて上記補正情報を生成する補正情報生成手段と有する。
好適には、上記乱数生成手段は、物理現象の不規則性に基づいて乱数を生成する。
【0020】
本発明の第1の観点によれば、上記乱数生成手段において物理現象の不規則性に基づいて生成される乱数データが、上記補正手段において、入力される補正情報に基づいて補正される。上記補正情報生成手段では、上記補正手段において補正された乱数データに所定のビット値を持つビットデータが出現する頻度に応じて、上記補正情報が生成される。
【0021】
また、本発明の第1の観点は、上記補正手段において補正された乱数データを順に格納する複数のデータ格納手段を有しても良い。
この場合、上記補正情報生成手段は、上記データ格納手段に格納される複数の乱数データの中に上記所定のビット値を持つビットデータが存在する数を計数し、当該計数値と所定のしきい値との比較結果に基づいて上記補正情報を生成する。
【0022】
また、上記補正情報生成手段は、入力される制御信号に応じて上記しきい値を変化させても良い。
【0023】
本発明の第2の観点の乱数生成方法は、乱数生成手段において生成される乱数データを、与えられる補正情報に基づいて補正する第1の工程と、上記第1の工程において補正された乱数データに所定のビット値を持つビットデータが出現する頻度に応じて上記補正情報を新たに生成する第2の工程とを有する。
【0024】
本発明の第2の観点によると、乱数生成手段において生成される乱数データが、上記第1の工程において、与えられる補正情報に基づいて補正される。上記第2の工程では、上記第1の工程において補正された乱数データに所定のビット値を持つビットデータが出現する頻度に応じて、上記補正情報が新たに生成される。
【0025】
本発明の第3の観点のプログラムは、乱数生成手段において生成される乱数データを、与えられる補正情報に基づいて補正する第1のステップと、上記第1のステップにおいて補正された乱数データに所定のビット値を持つビットデータが出現する頻度に応じて上記補正情報を新たに生成する第2のステップと、を有する処理をコンピュータに実行させる。
【0026】
本発明の第4の観点の暗号処理装置は、乱数生成手段と、上記乱数生成手段において生成される乱数データを、入力される補正情報に基づいて補正する補正手段と、上記補正手段において補正された乱数データに所定のビット値を持つビットデータが出現する頻度に応じて上記補正情報を生成する補正情報生成手段と、上記補正手段において補正された乱数データに応じて所定の暗号処理を実行する暗号処理手段とを有する。
【0027】
【発明の実施の形態】
以下、本発明の3つの実施形態について、図面と関連付けて説明する。
【0028】
<第1の実施形態>
図1は、本発明の第1の実施形態に係る暗号処理装置の構成の一例を示すブロック図である。
図1に示す暗号処理装置100は、乱数生成装置の実施形態である乱数生成部10と、暗号処理手段の実施形態である暗号処理部20と、EEPROM30と、CPU40と、RAM50と、ROM60とを有する。
【0029】
乱数生成部10は、バスBSを介して入力されるCPU40からの制御信号に応じて、乱数を生成する。例えば、CPU40からの制御信号に応じて乱数の生成を開始または停止する。
なお、乱数生成部10の構成と動作については、後で更に詳細に説明する。
【0030】
暗号処理部20は、バスBSを介して入力されるCPU40からの制御信号に応じて、所定の暗号処理を実行する。
例としてRSA方式の暗号処理を実行するものとすると、暗号処理部20は、例えば、乱数生成部10において生成される乱数に応じて公開鍵および秘密鍵のペアを生成する処理(鍵生成処理)や、通信相手の公開鍵によって平文を暗号化する処理(暗号化処理)、公開鍵によって暗号化された暗号文を当該公開鍵のペアとなる秘密鍵によって復号する処理(復号化処理)を行う。また、送信文に添付するデジタル署名を秘密鍵によって生成する処理(デジタル署名生成処理)や、受信文に添付されたデジタル署名を通信相手の公開鍵によって検証する処理(デジタル署名検証処理)なども行う。
【0031】
EEPROM30は、電気的に消去可能なプログラマブルROMであり、バスBSを介して入力されるCPU40からの制御信号に応じて、暗号処理に用いられる鍵のデータを格納する。
【0032】
CPU40は、ROM60に格納されたプログラムに基づいて、暗号処理装置100の全体動作に係わる種々の制御を行う。
例えば、上述した鍵生成処理、暗号化処理、復号化処理、デジタル署名の生成・検証処理などの暗号処理を、プログラムに基づいて暗号処理部20に実行させる。
また、暗号処理部20における鍵生成処理や、デジタル署名時のセッションキーを生成する場合など、プログラムの実行過程で乱数が必要な場合は、これを乱数生成部10に生成させる。
また、暗号処理部20において生成された鍵データをEEPROM30に書き込む処理や、EEPROM30に格納された鍵データを読み出して暗号処理部20に供給する処理をプログラムに基づいて実行する。
【0033】
RAM50は、CPU40によるプログラムの実行過程で利用される一時的なデータを格納する。
ROM60は、CPU40において実行されるプログラムを格納する。
【0034】
次に、上述した乱数生成部10のより詳細な構成について述べる。
【0035】
図2は、本発明の第1の実施形態に係る乱数生成部10の構成の一例を示すブロック図である。
図2に示す乱数生成部10は、乱数生成手段の実施形態である物理乱数生成部1と、補正手段の実施形態である補正部2と、補正情報生成手段の実施形態である補正情報生成部3と、複数のデータ格納手段の実施形態であるFIFO4と、インターフェース部5とを有する。
【0036】
物理乱数生成部1は、物理現象の不規則性に基づいて乱数を生成する。このような乱数生成方式としては、例えば、抵抗体の熱雑音に基づいて乱数を生成する方式や、リングオシレータなどのアナログカオス回路から出力されるカオス信号に基づいて乱数を生成する方式などが適用可能である。
また、物理乱数生成部1は、CPU40よりインターフェース部5を介して入力される制御信号に応じて、乱数の生成を開始または停止しても良い。これにより、乱数の生成が不要な場合に乱数の生成動作を停止させることが可能となり、無駄な消費電力が減少する。
【0037】
補正部2は、物理乱数生成部1において生成される乱数データS1を、入力される補正情報S3に基づいて補正する。補正情報S3は、後述するように、乱数データS1の各ビットデータを‘1’に補正するか、‘0’に補正するか、または、そのままの値を保つかの指示を与える情報であり、補正部2は、この情報に基づいて各ビットデータを補正する。
【0038】
補正情報生成部3は、補正部2において補正された乱数データS2に所定のビット値、例えば‘1’のビット値を持つビットデータが出現する頻度に応じて、補正情報S3を生成する。図2に示す例では、乱数データS2に‘1’のビットデータが出現する頻度を、FIFO4に格納される補正後の一連の乱数データに基づいて算出している。補正情報生成部3は、この算出した頻度に応じて、補正前の乱数データS1に対する補正情報S3を生成する。
また、補正情報生成部3は、CPU40よりインターフェース部5を介して入力される制御信号に応じて、補正情報の生成を開始または停止しても良い。これにより、乱数の生成が不要な場合に補正情報の生成動作を停止させることが可能となり、無駄な消費電力が減少する。
なお、補正情報生成部3の構成と動作については、後で更に詳細に説明する。
【0039】
FIFO4は、補正部2において補正された乱数データS2を順に格納する。
FIFO4は、例えば、内部に所定データ長のデータを格納可能な所定数のデータ格納用のメモリを有しており、補正後の所定データ長の乱数データS2を、これらのメモリに順に格納する。全てのメモリに乱数データが格納されると、既に格納された乱数データ中で最も先に格納された乱数データを廃棄し、その空きメモリに新たな乱数データS2を格納する。このようなデータ格納動作が繰り返されることにより、FIFO4には、補正部2において補正された一連の乱数データが所定数格納される。
また、FIFO4は、CPU40よりインターフェース部5を介して入力される制御信号に応じて、上述した乱数データの格納動作を開始または停止しても良い。これにより、乱数の生成が不要な場合にデータ格納動作を停止させることが可能となり、無駄な消費電力が減少する。
【0040】
なお、このFIFO4は、補正部2において補正された乱数データS2のみ格納可能であり、さらに、補正情報生成部3からのみ格納データの読み出しが可能としても良い。これにより、バスBSからFIFO4に直接アクセスすることが不可能となり、FIFO4に格納された乱数データの機密性が高まる。
【0041】
インターフェース部5は、補正部2において補正された乱数データS2をバスBSに出力する。また、特に図示していないが、バスBSを介して伝送されるCPU40からの制御信号を入力し、乱数生成部10の各ユニットに供給する。
【0042】
次に、上述した補正部2および補正情報生成部3のより詳細な構成について述べる。
【0043】
図3は、補正部2および補正情報生成部3の構成の一例を示すブロック図である。
図3に示す補正情報生成部3は、計数部3−1と、計数値レジスタ3−2と、上限比較部3−3と、下限比較部3−4と、ANDマスク・レジスタ3−5と、ORマスク・レジスタ3−6とを有する。
図3に示す補正部2は、AND演算部2−1と、OR演算部2−2とを有する。
【0044】
計数部3−1は、FIFO4に格納される所定数の乱数データの中に‘1’のビット値を持つビットデータが存在する数を計数する。
例えば、計数部3−1は、FIFO4に格納される所定数の乱数データにおける同一桁のビットデータ中に‘1’のビットデータが存在する数を、それぞれの桁について計数する。すなわち、それぞれの桁における‘1’のビットデータの数を計数する。
【0045】
計数値レジスタ3−2は、計数部3−1における各桁の‘1’の計数結果を格納する。
【0046】
上限比較部3−3は、計数値レジスタ3−2に格納される各桁の計数結果と所定の上限しきい値とを比較する。この比較の結果、‘1’の計数結果が上限しきい値を超える桁を検出し、その桁のビット値を‘0’に設定するための補正情報として、ANDマスク・データを生成する。
【0047】
下限比較部3−4は、計数値レジスタ3−2に格納される各桁の計数結果と所定の下限しきい値とを比較する。この比較の結果、‘1’の計数結果が下限しきい値を下回る桁を検出し、その桁のビット値を‘1’に設定するための補正情報として、ORマスク・データを生成する。
【0048】
ANDマスク・レジスタ3−5は、上限比較部3−3において生成されるANDマスク・データを格納する。
【0049】
ORマスク・レジスタ3−6は、下限比較部3−4において生成されるORマスク・データを格納する。
【0050】
AND演算部2−1は、物理乱数生成部1において生成される乱数データS1のビットデータと、ANDマスク・レジスタ3−5に格納されるANDマスク・データのビットデータとを、対応する桁同士で論理積演算する。
【0051】
OR演算部2−2は、AND演算部2−1において補正された乱数データのビットデータと、ORマスク・レジスタ3−6に格納されるORマスク・データのビットデータとを、対応する桁同士で論理和演算する。
【0052】
ここで、上述した構成を有する暗号処理装置100の動作について、図4に示すフローチャートを参照して説明する。
【0053】
ROM60に格納されたプログラムがCPU40に読み込まれて実行されると、このプログラムに基づいて暗号処理部20の処理が起動され、鍵データの生成処理や、平文の暗号化処理、暗号文の復号化処理、デジタル署名の生成・検証処理などの暗号処理が実行される。
鍵データの生成処理において生成された鍵データは、EEPROM30に格納される。デジタル署名の生成や復号化処理において用いられる秘密鍵のデータは、EEPROM30より読み出されて暗号処理部20に供給される。
また、鍵データの生成処理やデジタル署名の生成処理において用いられる乱数は、乱数生成部10において生成されて暗号処理部20に供給される。
【0054】
CPU40から乱数の生成命令が乱数生成部10に与えられると、乱数生成部10では、次に述べる初期化動作が実行される(ステップST101)。
【0055】
まず、物理乱数生成部1が起動し、乱数の生成が開始される。初期化動作時では、補正部2による乱数の補正が行われず、物理乱数生成部1で生成された乱数データS1がそのまま乱数データS2としてFIFO4に順次格納される。
以下の説明では、一例として、物理乱数生成部1において生成される乱数データが32ビットのデータ長を有するものとする。またFIFO4は、図5に示すように、32ビットの乱数データをそれぞれ格納可能な32ブロックのメモリを有するものとする。
【0056】
32ブロック分の乱数データS2がFIFO4に格納されると、続いて、計数部3−1において、乱数データの各桁の‘1’が計数される。
すなわち、FIFO4に格納された乱数データにおける同一桁のビットデータ中に存在する‘1’のビットデータの数が、32桁のそれぞれについて計数される。この計数結果は、計数値レジスタ3−2に初期値として格納される。
【0057】
図6は、計数値レジスタ3−2に格納される各桁の計数値A[0]〜A[31]を示す図である。図6の例において、計数値レジスタ3−2に格納される計数値のビット幅は8ビットである。
【0058】
図8は、計数部3−1における‘1’の計数動作を説明するための図である。図8(A)に示すように、乱数データのビット値が‘1’となる数が、FIFO4に格納される32個の乱数データの各桁についてそれぞれ計数される。したがって、計数値の最小値は0であり、最大値は32である。図8(B)は、この計数値A[0]〜A[31]が計数値レジスタ3−2に格納される様子を図解している。
【0059】
各桁の計数値A[0]〜A[31]の初期値が計数値レジスタ3−2に初期値として格納されると、次に、これらの計数値は、上限比較部3−3において所定の上限しきい値と比較される。この比較の結果、計数値が上限しきい値を超える桁が検出されると、その桁のビット値を‘0’に補正するANDマスク・データが生成される。生成されたANDマスク・データは、初期値としてANDマスク・レジスタ3−5に格納される。
また、計数値レジスタ3−2の計数値は、下限比較部3−4において所定の下限しきい値と比較される。この比較の結果、計数値が下限しきい値を下回る桁が検出されると、その桁のビット値を‘1’に補正するORマスク・データが生成される。生成されたORマスク・データは、初期値としてORマスク・レジスタ3−6に格納される。
【0060】
図7は、ANDマスク・レジスタ3−5に格納されるANDマスク・データ、および、ORマスク・レジスタ3−6に格納されるORマスク・データを示す図である。図7の例に示すように、ANDマスク・データおよびORマスク・データは、乱数データS1と同じ32ビットのデータ長を有する。
【0061】
図9は、計数値レジスタ3−2に格納される各桁の計数値A[0]〜A[31]の一例を図解した図である。図の縦軸は計数値を示し、横軸は32桁のそれぞれに対応する桁番号を示す。
例えば上限しきい値THが17であるとすると、図9の例において、桁番号6の桁(最下位桁から数えて7番目の桁)が上限しきい値THを超えている。この場合、上限しきい値THを超える桁が他に存在しないものとすると、上限比較部3−3において生成されるANDマスク・データは、2進数で‘1…10111111’、16進数で‘FFFFFFBF’というデータになる。
また、下限しきい値TLが15であるとすると、図9の例において、桁番号8(最下位桁から数えて9番目の桁)が下限しきい値TLを下回っている。この場合、下限しきい値TLを下回る桁が他に存在しないものとすると、下限比較部3−4において生成されるORマスク・データは、2進数で‘0…0100000000’、16進数で‘00000100’というデータになる。
【0062】
以上のような初期化動作によって、計数値レジスタ3−2、ANDマスク・レジスタ3−5、ORマスク・レジスタ3−6に初期値が設定されると、次いで、物理乱数生成部1において乱数データS1が生成され、補正部2に入力される(ステップST102)。
【0063】
補正部2のAND演算部2−1では、物理乱数生成部1において生成される乱数データS1と、ANDマスク・レジスタ3−5に格納されるANDマスク・データとのビット単位の論理積が演算される(ステップST103)。
また、補正部2のOR演算部2−2では、AND演算部2−1において補正された乱数データと、ORマスク・レジスタ3−6に格納されるORマスク・データとのビット単位の論理和が演算される(ステップST104)。
【0064】
例えば図10(A)に示すように、ANDマスク・レジスタ3−5に格納されるANDマスク・データが16進数で‘FFFFFFBF’という値を持ち、ORマスク・レジスタ3−6に格納されるORマスク・データが16進数で‘00000100’という値を持つものとする。
この状態で、物理乱数生成部1から16進数で‘3878B6C0’という値の乱数データS1が出力されると、この乱数データS1とANDマスク・データとの論理積によって最下位桁から7番目の桁のビットデータが‘0’に設定されるとともに、最下位桁から9番目の桁のビットデータが‘1’に設定される。その結果、‘3878B6C0’の乱数データS1は‘3878B780’の乱数データS2へ補正される。
【0065】
このようにして、補正部2で補正された乱数データS2は、インターフェース部5を介して外部バスBSに出力される(ステップST105)。
【0066】
また、補正部2で補正された乱数データS2は、FIFO4において最も先に格納された乱数データの代わりとして、新たにFIFO4に格納される(ステップST106)。
【0067】
FIFO4に補正後の乱数データが格納されることによって、FIFO4の内容が更新されると、これに応じて、計数部3−1における‘1’の計数値も更新され、この更新された計数値が新たに計数値レジスタ3−2に格納される(ステップST107)。
【0068】
計数値レジスタ3ー2の計数値が更新されると、上限比較部3−3では、更新された計数値と上限しきい値との新たな比較が行われ、その結果として、ANDマスク・レジスタ3−5に格納されるANDマスク・データの値が更新される(ステップST108)。また、下限比較部3−4では、更新された計数値と下限しきい値との新たな比較が行われ、その結果として、ORマスク・レジスタ3−6に格納されるORマスク・データの値が更新される(ステップST109)。
【0069】
次いでステップST110において、CPU40からの命令に基づいて、乱数の生成を終了するか否かの判断がなされ、さらに乱数の生成を行う場合には、再びステップST102の処理に戻り、上述した乱数データS1の補正と、各レジスタ(3−2、3−5、3−6)の格納データの更新が繰り返される。また、乱数生成の終了が判断された場合には、物理乱数生成部1における乱数の生成、補正情報生成部3における補正情報の生成、FIFOにおける乱数データS2の格納動作が停止され(ステップST111)、乱数生成動作が終了する。
【0070】
図11は、上述した乱数生成部10によって生成した20000ビットの乱数に含まれる‘1’の数を複数回にわたって検査した結果の一例を示す図である。図の縦軸の値は20000ビット中の‘1’の数を示し、横軸の値は各検査の番号を示す。
図11の例に示すように、上述した乱数生成部10において生成される乱数に‘1’が出現する確率は概ね50%となり、図17の例に示すようなアナログ乱数生成器をそのまま用いる場合に比べて、乱数に出現するビット値の偏りが低減している。
【0071】
以上説明したように、図2に示す乱数生成部10によれば、物理乱数生成部1の乱数データS1が補正情報S3に基づいて補正され、この補正された乱数データS2に所定のビット値(例えば‘1’)を持つビットデータが出現する頻度に応じて、新たな補正情報S3が生成される。したがって、補正部2において補正された乱数データS2に所定のビット値が出現する頻度を制御することが可能になり、これにより、生成した乱数に出現するビット値の偏りを低減することが可能になる。
【0072】
また、物理乱数生成部1において、乱数データS1が物理現象の不規則性に基づいて生成されることから、擬似乱数のような周期性が無く、より安全性の高い乱数を生成することができる。
【0073】
しかも、図2および図3の例に示す乱数生成部10は、物理乱数生成部1に加えて、補正後の一連の乱数データを所定数だけ格納するFIFO4と、このFIFO4に格納される所定数の乱数データの中に所定のビット値のビットデータが存在する数を計数する計数部3−1と、この計数値と所定の上限しきい値および下限しきい値との比較結果に基づいて補正情報S3を生成する上限比較部3−3および下限比較部3−4と、生成された補正情報S3と乱数データS1との論理演算を行うユニット(2−1、2−3)とを有しているが、これらの構成は、DES方式やSHA−1方式等の従来の暗号演算回路を用いて擬似乱数を生成する場合に比べて明らかに簡易であり、このような従来の回路を用いる場合に比べて回路規模を大幅に縮小することができる。
【0074】
したがって、図1に示す暗号処理装置100によれば、偏りや周期性のない乱数を用いた安全性の高い暗号処理を実行することができるとともに、従来の高度な擬似乱数生成方式を用いる場合に比べて回路構成を簡易化することができる。
【0075】
<第2の実施形態>
図12は、本発明の第2の実施形態に係る乱数生成部10Aの構成の一例を示す図である。
【0076】
第2の実施形態においては、乱数生成部の一部の機能が、プログラムに基づいて処理を実行するコンピュータ等の処理装置によって実現される。
例えば、図2に示す乱数生成部10における補正部2および補正情報生成部3は、図12に示す乱数生成部10Aにおいて、処理部6およびプログラムメモリ7に置き換えらる。
【0077】
処理部6は、プログラムメモリ7に格納されるプログラムに基づいて、例えば既に述べた図4に示すフローチャートに示すような、乱数生成に係る処理を実行する。
すなわち、初期化動作(ステップST101)において補正情報S3の初期値を生成し、この初期値に基づいて、物理乱数生成部1において生成される乱数データS1を補正する(ステップST103およびST104)。そして、この補正した乱数データS2をインターフェース部5からバスBSに出力する(ステップST105)とともに、FIFO4に格納する(ステップST106)。次いで、補正した乱数データS2に所定のビット値を持つビットデータが出現する頻度として、例えば、FIFO4に格納された一連の所定数の乱数データ中に‘1’のビット値を持つビットデータが存在する数を新たに計数し(ステップST107)、この計数値に応じて、補正情報S3を更新する(ステップST108およびST109)。CPU40の命令に応じて、上述と同様な乱数データS1の補正と補正情報S3の更新を更に繰り返し、乱数データS2を生成する。
【0078】
以上説明した乱数生成部10Aにおいても、図2に示す乱数生成部10と同様に、偏りや周期性のない乱数を生成することができる。また、DES方式やSHA−1方式等の暗号アルゴリズムを用いた擬似乱数生成方法に比べて、処理手順が明らかに簡易であり、プログラムのコード量を削減できるとともに、処理の高速化を図ることができる。
【0079】
<第3の実施形態>
図13は、本発明の第3の実施形態に係るハードウェア・トークンの構成の一例を示すブロック図である。
【0080】
ハードウェア・トークンは、所有者が確かに本人であることを証明する情報であって、他人に勝手に使われないよう秘匿すべき情報(例えば公開鍵暗号方式における秘密鍵など)を安全に保管することができる携帯性を有したデバイスである。本実施形態は、このようなハードウェア・トークンに本発明の乱数生成装置を適用したものである。
【0081】
図13に示すハードウェア・トークン101は、乱数生成装置の実施形態である乱数生成部10と、暗号処理手段の実施形態であるRSA演算器21およびSHA演算器22と、EEPROM30と、CPU40と、RAM50と、ROM60と、ECC部70と、シリアル・インターフェース部80とを有する。なお、図1と図13の同一符号は同一の構成要素を示す。
【0082】
RSA演算器21は、バスBSを介して入力されるCPU40からの制御信号に応じて、RSA方式の暗号処理に係わる演算を実行する。
例えば、公開鍵および秘密鍵のペアを生成する鍵生成処理や、公開鍵を使って平文を暗号化する暗号化処理、秘密鍵を使って暗号文を復号する復号化処理を行う。
【0083】
SHA演算器22は、バスBSを介して入力されるCPU40からの制御信号に応じて、与えられた平文に対するSHA方式のハッシュ値を演算する。
【0084】
ECC部70は、シリアル・インターフェース部80を介してコンピュータ200から伝送される信号の誤り検出および訂正処理を行う。また、シリアル・インターフェース部80を介してコンピュータ200に送出する信号に所定の誤り訂正符号化処理を施す。
【0085】
シリアル・インターフェース部80は、例えばUSB(universal serial bus)方式やUART(universal asynchronous receiver−transceiver)方式などのシリアル通信方式によって、コンピュータ200との間で信号の受け渡しを行う。
【0086】
次に、上述した構成を有する図13に示すハードウェア・トークン101の動作を説明する。
【0087】
コンピュータ200に導入されたソフトウェアが起動し、このソフトウェア上でユーザ認証に係わる処理が実行されると、これに応じた種々の命令がコンピュータ200からハードウェア・トークン101へ入力される。ハードウェア・トークン101では、ROM60に格納されたプログラムに基づいて、コンピュータ200からの命令に応じた暗号処理、例えば、RSA方式の鍵ペアの生成処理や、ECDSA(elliptic curve digital signature algorithm)方式のデジタル署名の生成・検証処理が実行される。
【0088】
図14は、RSA方式の鍵ペアの生成処理の一例を示すフローチャートである。
【0089】
まず、乱数生成部10において乱数Pの生成が実行され(ステップSTST201)、RSA演算器21に供給される。RSA演算器21では、供給された乱数Pが素数であるか否かの判定処理が実行され(ステップST202)、素数でない場合はステップST201に戻り、再び乱数Pの生成と素数判定が行われる。
乱数Pが素数であると判定された場合には、更に、乱数生成部10において乱数Qの生成が実行され(ステップSTST203)、乱数Qが素数であるか否かの判定がRSA演算器21において実行される(ステップST204)。素数でない場合はステップST203に戻り、再び乱数Qの生成と素数判定が行われる。
【0090】
乱数生成部10において生成された乱数から素数PおよびQが得られると、RSA演算器21では、この素数PおよびQに基づいて、次式に示す公開鍵Nが算出される(ステップST205)。
【0091】
【数1】
N = P×Q … (1)
【0092】
また秘密鍵dとしては、所定数e(例えば4097)と素数PおよびQとの間で次式を成立させるような数が算出される(ステップST206)。
【0093】
【数2】
(d×e) mod (P−1)×(Q−1) = 1 … (2)
【0094】
このようにして算出された公開鍵Nおよび秘密鍵dは、EEPROM30に格納される。
【0095】
図15は、ECDSA方式のデジタル署名生成処理の一例を示すフローチャートである。
【0096】
まず、乱数生成部10において、乱数uの生成が実行され(ステップST301)、生成された乱数uに基づいて、次式に示す署名cが生成される。
【0097】
【数3】
c = (u・G)x mod r … (3)
【0098】
ただし、式(3)における記号‘G’は楕円曲線のベースポイント座標を示し、記号‘r’は楕円曲線の位数を示す。また、括弧で表す記号‘( )x’は、括弧内の演算によって求められる楕円曲線上の点のx座標を示す。
【0099】
次いで、署名を行う平文mに対するSHA−1方式のハッシュ値fが、SHA演算器22において算出される(ステップST303)。この算出されたハッシュ値fと、署名c、乱数u、更には署名者の秘密鍵sに基づいて、署名dが次式により算出される(ステップST304)。
【0100】
【数4】
d = c−1(f+sc) mod r … (4)
【0101】
このようにして生成された署名cおよびdが、平文mとともにコンピュータ200へ送信される。
【0102】
図16は、ECDSA方式のデジタル署名検証処理の一例を示すフローチャートである。
【0103】
デジタル署名検証処理においては、コンピュータ200から平文mとその署名cおよびdが入力される。また、署名者の公開鍵座標Wもコンピュータ200から入力される。
入力された平文mは、SHA演算器22に供給され、そのハッシュ値fが算出される(ステップST401)。次いで、算出されたハッシュ値fと、署名cおよびd、公開鍵座標Wに基づいて、次式に示す署名検証値vが演算される。
【0104】
【数5】
v = ((d−1f)・G+(cd−1)・W)x mod r …(5)
【0105】
演算された署名検証値vは、コンピュータ200に送信される。コンピュータ200のソフトウェアでは、署名検証値vが署名dと一致するか否かに応じて、署名dおよびcが公開鍵座標Wの署名者によるものであるか否かの判定が行われる。
【0106】
以上説明したように、図13に示すハードウェア・トークン101によれば、乱数生成部10において生成されるビット値の偏りや周期性の少ない乱数を用いて、鍵データの生成処理やデジタル署名の生成処理などの暗号処理が実行されるため、より安全性の高い個人認証が可能となる。また、簡易な構成の乱数生成部10を用いることにより、装置の小型化や低消費電力化を図ることができる。
【0107】
なお、本発明は上述した実施形態に限定されない。
例えば、図2における補正情報生成部3や図12における処理部6は、CPU40などから入力される制御信号に応じて、上限しきい値および下限しきい値を変化させても良い。これにより、乱数における‘1’と‘0’の発生確率を任意に制御することが可能になる。
【0108】
また、上述した実施形態では、CPU40からの命令に応じて、乱数生成部における乱数生成動作の開始と停止が制御されているが、CPU40からの命令に係わらず、常に乱数生成動作を起動させた状態にしても良い。これにより、FIFO4の状態や各レジスタ(3−2、3−5、3−6)の状態が常に更新されるため、更に予測することが困難な乱数を生成させることができる。
【0109】
また、上述した実施形態では、FIFO4に格納される所定数の乱数データに含まれる‘1’の数を桁ごとに計数し、各桁の計数結果に応じて各桁の補正情報S3が生成されているが、本発明はこの例に限定されない。
例えば、FIFO4に格納される乱数データの全ビットデータにおける‘1’の数を計数し、その計数値としきい値との比較結果に基づいて、物理乱数生成部1から出力される乱数データS2を1ビットずつ補正しても良い。
この場合、FIFO4に格納される‘1’のビットデータの数は、例えば、FIFO4に入力されるビットデータの値と、その入力とともに廃棄されるビットデータの値とに応じて算出することができる。すなわち、FIFO4に‘1’のビットデータが格納される場合にインクリメントし、FIFO4から‘1’のビットデータが廃棄される場合にデクリメントするカウンタを設けることにより、そのカウント値から、FIFO4に含まれる‘1’のビットデータの数を求めることができる。
【0110】
また、上述した実施形態では、補正部2において補正された乱数データのうち、FIFO4に格納される前の乱数データがインターフェース部5を介して出力されているが、FIFO4に既に格納された乱数データを出力する構成としても良い。
【0111】
【発明の効果】
本発明の乱数生成装置によれば、簡易な構成でありながら、ビット値の偏りや周期性の少ない乱数を生成することができる。
また、本発明のプログラムによれば、ビット値の偏りや周期性の少ない乱数の生成に係る処理を、より簡易な手順でコンピュータに実行させることができる。
また、本発明の暗号処理装置によれば、簡単な構成でありながら、偏りや周期性のない乱数を用いた安全性の高い暗号処理を実行することができる。
【図面の簡単な説明】
【図1】本発明の第1の実施形態に係る暗号処理装置の構成の一例を示すブロック図である。
【図2】本発明の第1の実施形態に係る乱数生成部の構成の一例を示すブロック図である。
【図3】図2に示す補正部および補正情報生成部の構成の一例を示すブロック図である。
【図4】本発明の第1の実施形態に係る乱数生成部の処理の一例を示すフローチャートである。
【図5】FIFOのメモリ構成の一例を示す図である。
【図6】計数値レジスタに格納される各桁の計数値を示す図である。
【図7】ANDマスク・レジスタおよびORマスク・レジスタに格納されるマスク・データの一例を示す図である。
【図8】計数部における‘1’の計数動作を説明するための図である。
【図9】計数値レジスタに格納される各桁の計数値の一例を図解した図である。
【図10】補正部における乱数データの補正処理の具体例を示す図である。
【図11】図2に示す乱数生成部によって生成した20000ビットの乱数に含まれる‘1’の数を複数回にわたって検査した結果の一例を示す図である。
【図12】本発明の第2の実施形態に係る乱数生成部の構成の一例を示す図である。
【図13】本発明の第3の実施形態に係るハードウェア・トークンの構成の一例を示すブロック図である。
【図14】図13に示すハードウェア・トークンにおけるRSA方式の鍵ペアの生成処理の一例を示すフローチャートである。
【図15】図13に示すハードウェア・トークンにおけるECDSA方式のデジタル署名生成処理の一例を示すフローチャートである。
【図16】図13に示すハードウェア・トークンにおけるECDSA方式のデジタル署名検証処理の一例を示すフローチャートである。
【図17】アナログ乱数生成器によって生成した20000ビットの乱数に含まれる‘1’の数を複数回にわたって検査した結果を示す図である。
【符号の説明】
1…物理乱数生成部、2…補正部、2−1…AND演算部、2−2…OR演算部、3…補正情報生成部、3−1…計数部、3−2…計数値レジスタ、3−3…上限比較部、3−4…下限比較部、3−5…ANDマスク・レジスタ、3−6…ORマスク・レジスタ、4…FIFO、5…インターフェース部、6…処理部、7…プログラムメモリ、10,10A…乱数生成部、20…暗号処理部、21…RSA演算器、22…SHA演算器、30…EEPROM、40…CPU、50…RAM、60…ROM、70…ECC部、80…シリアル・インターフェース部、100…暗号処理装置、101…ハードウェア・トークン、200…コンピュータ[0001]
BACKGROUND OF THE INVENTION
The present invention relates to a random number generation device and method, a cryptographic processing device including random number generation means, and a program that causes a computer to execute processing related to random number generation.
[0002]
[Prior art]
In recent years, with the spread of data communication using the Internet, it has become an important issue to increase the safety of data communication. In particular, encryption technology has attracted attention as a technology for ensuring the confidentiality of data communication. Yes.
[0003]
Typical encryption methods in data communication using a computer network include a common key encryption method and a public key encryption method.
The common key encryption method uses the same encryption key for encryption and decryption, and is also called “secret key encryption”, “symmetric key encryption”, and “conventional encryption”.
On the other hand, the public key cryptosystem uses a different encryption key for encryption and decryption. According to the public key cryptosystem, data encrypted with one encryption key cannot be decrypted without using the other key. For this reason, by keeping one key secret, the secret of the ciphertext can be maintained even if the other key is made public.
[0004]
In the common key cryptosystem, since the encryption key and the decryption key are the same, it is difficult to pass the key to the communication partner in a secure manner, and a means for sharing the key is required. In contrast, in the public key cryptosystem, the encryption key and the decryption key are different. Therefore, the encryption key can be distributed over a communication network whose security is not guaranteed, and the encryption key is transmitted to the communication partner. It is very easy to pass.
[0005]
As described above, the public key cryptosystem has an advantage that it is very easy to distribute the key, but on the other hand, there is a disadvantage that the processing time becomes very long as compared with the common key cryptosystem. For example, the processing speed of the RSA (Rivest Shamir Adelman) method, which is a representative public key encryption method, is about 1000 times slower than the common key encryption method for both encryption and decryption.
[0006]
Therefore, in the case of configuring a high-speed encryption system in data communication using a computer network, generally, encryption and decryption use a common key encryption, and the key is encrypted by public key encryption and distributed. Is used. Examples of cryptographic systems that employ this method include PGP (Pretty Good Privacy (trademark)) and PEM (Privacy Enhancement Mail).
The RSA system is mainly used for such a common key exchange and a relatively small amount of data transmission.
[0007]
If the above encryption technology is used, it is necessary for data encryption and personal authentication in order to realize electronic money, music distribution on the Internet, personal services using mobile phones and ID cards, etc. Digital signatures can be generated.
[0008]
By the way, in order to guarantee secure data communication using such an encryption technique, it is indispensable to generate a secure random number. The main uses of random numbers include, for example, creation of passwords, creation of keys used for encryption, generation of ciphertexts, generation of electronic signature information, and the like. If a random number for such an application is guessed by an attacker, the risk of the ciphertext being decrypted or the signature being tampered with increases. Therefore, it is very important to generate random numbers that cannot be easily guessed by an attacker.
[0009]
There are two methods for generating random numbers: a method of generating random numbers using irregularities of physical phenomena, and a method of generating a random number sequence having a long period by mathematical arithmetic processing.
[0010]
As a method of generating random numbers using irregularities of physical phenomena, for example, a method of generating random numbers by thermal noise of a resistor, or analog-digital conversion (hereinafter referred to as A / D) from analog output of a ring oscillator or the like. There is a method of obtaining a random number by a conversion).
However, these methods do not always provide a rough random number that is not biased at all, and may cause bit-wise bias or periodicity. If such a random number is used as a secret key for a public key cryptosystem or a session key for a digital signature, there is a concern that the security may be lowered.
[0011]
“Statistical random number generator test” is defined in FIPS (federal information processing standards) 140-2 as an evaluation standard of randomness roughness. According to this evaluation criterion, when random numbers of 20000 bits are continuously generated, the randomness of the random numbers is evaluated by the number of “1” included in the 20000 bits.
FIG. 17 is a diagram illustrating a result of checking the number of “1” included in a 20000-bit random number generated by an analog random number generator a plurality of times. The value on the vertical axis in the figure indicates the number of “1” in 20000 bits, and the value on the horizontal axis indicates the number of each test.
If the random number is completely coarse, the probability of occurrence of “0” and “1” is 50%, and the number of “1” is around 10,000. However, in the example of FIG. 17, the probability of occurrence of “1” is clearly lower than 50%.
[0012]
As a method for dealing with such a bias in bit values, there is a method using pseudo random numbers (see
For example, a pseudo random number generation circuit combining a plurality of linear circuits such as an M-sequence generation circuit, a cryptographic operation circuit in a common key encryption system such as a DES (data encryption standard) system, a SHA-1 (Secure Hash Algorithm -1) system, There is a method of obtaining a uniform pseudo-random number with less bias in bit values by inputting a random number generated by the above-described physical means as a seed to a hash calculation circuit in the MD5 (message digest 5) method or the like.
[0013]
In a general pseudo random number generation method, a pseudo random number is generated by repeating a predetermined random number calculation for a given seed. That is, assuming that the random number calculation function is F, if an initial value R (0) is given as a seed, the random number sequence R (1), R (2), R (3),. = F (R (i)) ". Then, by combining the random numbers R (1), R (2), R (3),..., A pseudo random number having a desired length is generated.
[0014]
[Patent Document 1]
JP 2000-242470 A
[Patent Document 2]
JP 2001-75476 A
[Patent Document 3]
JP 2000-4223 A
[Patent Document 4]
JP 2001-344094 A
[0015]
[Problems to be solved by the invention]
This pseudo-random number generation method does not require special hardware, can be realized by software, and has an advantage that it can be used on a microcomputer. However, as described above, since the random number sequence is generated by a predetermined function using the initial value, when the function and the initial value are determined, all the random number sequences are determined. For this reason, if the function and the initial value are known, there is a disadvantage that a random number sequence can be easily generated by the same method.
[0016]
As an example, in the pseudorandom number generation method using the SHA-1 method in FIPS 186, a bit string t having a length of 160 bits and a bit string c having a length of b bits (160 ≦ b ≦ 512) are represented by SHA−. A random number of 160 bits is generated by giving to one arithmetic unit. In this method, after storing the bit string c in the 512-bit input buffer of the SHA-1 arithmetic unit, (512-b) pieces of “0” are stored in the remaining storage area of the input buffer. When c is determined, the output of the SHA-1 calculator is always constant with respect to the input of the bit string c.
[0017]
In addition, these pseudo-random number generation methods have the disadvantage that the circuit scale when implemented by hardware becomes very large, and that a large amount of code and computation time are required when implemented by software.
[0018]
The present invention has been made in view of such circumstances, and an object of the present invention is to provide a random number generation apparatus and method capable of generating a random number with a small bias and periodicity with a simple configuration. There is.
Another object of the present invention is to provide a program capable of causing a computer to execute processing related to generation of random numbers with little bias in bit values and periodicity in a simpler procedure.
Still another object of the present invention is to provide an encryption processing apparatus capable of executing highly secure encryption processing using random numbers having no bias in bit values or periodicity with a simple configuration. .
[0019]
[Means for Solving the Problems]
In order to achieve the above object, a random number generation device according to a first aspect of the present invention includes a random number generation unit and a correction unit that corrects random number data generated by the random number generation unit based on input correction information. And correction information generation means for generating the correction information according to the frequency of appearance of bit data having a predetermined bit value in the random number data corrected by the correction means.
Preferably, the random number generation means generates a random number based on irregularity of a physical phenomenon.
[0020]
According to the first aspect of the present invention, the random number data generated based on the irregularity of the physical phenomenon in the random number generation unit is corrected in the correction unit based on the input correction information. The correction information generation means generates the correction information according to the frequency of appearance of bit data having a predetermined bit value in the random number data corrected by the correction means.
[0021]
The first aspect of the present invention may have a plurality of data storage means for sequentially storing the random number data corrected by the correction means.
In this case, the correction information generation means counts the number of bit data having the predetermined bit value among the plurality of random number data stored in the data storage means, and the count value and the predetermined threshold are counted. The correction information is generated based on the comparison result with the value.
[0022]
Further, the correction information generation means may change the threshold value in accordance with an input control signal.
[0023]
The random number generation method according to the second aspect of the present invention includes a first step of correcting random number data generated by the random number generation means based on given correction information, and the random number data corrected in the first step. And a second step of newly generating the correction information in accordance with the frequency of appearance of bit data having a predetermined bit value.
[0024]
According to the second aspect of the present invention, random number data generated by the random number generation means is corrected based on the correction information provided in the first step. In the second step, the correction information is newly generated according to the frequency of appearance of bit data having a predetermined bit value in the random number data corrected in the first step.
[0025]
A program according to a third aspect of the present invention provides a first step of correcting random number data generated by a random number generation means based on given correction information, and a predetermined number of random number data corrected in the first step. A second step of newly generating the correction information in accordance with the frequency of appearance of bit data having a bit value of.
[0026]
According to a fourth aspect of the present invention, there is provided a cryptographic processing apparatus comprising: a random number generation unit; a correction unit that corrects random number data generated by the random number generation unit based on input correction information; and the correction unit corrects the random number data. Correction information generating means for generating the correction information in accordance with the frequency of occurrence of bit data having a predetermined bit value in the random number data, and executing predetermined encryption processing in accordance with the random data corrected in the correction means And cryptographic processing means.
[0027]
DETAILED DESCRIPTION OF THE INVENTION
Hereinafter, three embodiments of the present invention will be described with reference to the drawings.
[0028]
<First Embodiment>
FIG. 1 is a block diagram showing an example of the configuration of a cryptographic processing apparatus according to the first embodiment of the present invention.
1 includes a random
[0029]
The random
The configuration and operation of the random
[0030]
The
Assuming that RSA encryption processing is executed as an example, the
[0031]
The
[0032]
The
For example, the
Further, if a random number is required in the course of executing the program, such as when generating a key in the
Further, processing for writing the key data generated in the
[0033]
The
The
[0034]
Next, a more detailed configuration of the random
[0035]
FIG. 2 is a block diagram showing an example of the configuration of the random
The random
[0036]
The physical
Further, the physical random
[0037]
The
[0038]
The correction
Further, the correction
The configuration and operation of the correction
[0039]
The
The
Further, the
[0040]
The
[0041]
The
[0042]
Next, a more detailed configuration of the
[0043]
FIG. 3 is a block diagram illustrating an example of the configuration of the
The correction
The
[0044]
The counting unit 3-1 counts the number of bit data having a bit value of “1” in a predetermined number of random number data stored in the
For example, the counting unit 3-1 counts the number of bit data of “1” in the bit data of the same digit in a predetermined number of random number data stored in the
[0045]
The count value register 3-2 stores a count result of “1” of each digit in the counting unit 3-1.
[0046]
The upper limit comparison unit 3-3 compares the count result of each digit stored in the count value register 3-2 with a predetermined upper limit threshold value. As a result of this comparison, a digit whose count result of “1” exceeds the upper threshold is detected, and AND mask data is generated as correction information for setting the bit value of that digit to “0”.
[0047]
The lower limit comparison unit 3-4 compares the count result of each digit stored in the count value register 3-2 with a predetermined lower limit threshold value. As a result of this comparison, a digit whose count result of “1” falls below the lower threshold is detected, and OR mask data is generated as correction information for setting the bit value of that digit to “1”.
[0048]
The AND mask register 3-5 stores AND mask data generated in the upper limit comparison unit 3-3.
[0049]
The OR mask register 3-6 stores the OR mask data generated by the lower limit comparison unit 3-4.
[0050]
The AND operation unit 2-1 converts the bit data of the random number data S1 generated by the physical random
[0051]
The OR operation unit 2-2 converts the bit data of the random number data corrected by the AND operation unit 2-1 and the bit data of the OR mask data stored in the OR mask register 3-6 between corresponding digits. Perform an OR operation with.
[0052]
Here, the operation of the
[0053]
When the program stored in the
The key data generated in the key data generation process is stored in the
In addition, random numbers used in key data generation processing and digital signature generation processing are generated in the random
[0054]
When a random number generation command is given from the
[0055]
First, the physical random
In the following description, as an example, it is assumed that the random number data generated in the physical
[0056]
When the random number data S2 for 32 blocks is stored in the
That is, the number of “1” bit data present in the bit data of the same digit in the random number data stored in the
[0057]
FIG. 6 is a diagram illustrating the count values A [0] to A [31] of each digit stored in the count value register 3-2. In the example of FIG. 6, the bit width of the count value stored in the count value register 3-2 is 8 bits.
[0058]
FIG. 8 is a diagram for explaining the counting operation of “1” in the counting unit 3-1. As shown in FIG. 8 (A), the number at which the bit value of the random number data is “1” is counted for each digit of the 32 random number data stored in the
[0059]
When the initial values of the count values A [0] to A [31] of each digit are stored as initial values in the count value register 3-2, these count values are then predetermined by the upper limit comparing unit 3-3. Compared to the upper threshold of. As a result of this comparison, when a digit whose count value exceeds the upper threshold is detected, AND mask data for correcting the bit value of that digit to “0” is generated. The generated AND mask data is stored in the AND mask register 3-5 as an initial value.
Further, the count value of the count value register 3-2 is compared with a predetermined lower limit threshold value in the lower limit comparison unit 3-4. As a result of this comparison, when a digit whose count value falls below the lower threshold is detected, OR mask data for correcting the bit value of that digit to “1” is generated. The generated OR mask data is stored in the OR mask register 3-6 as an initial value.
[0060]
FIG. 7 is a diagram showing AND mask data stored in the AND mask register 3-5 and OR mask data stored in the OR mask register 3-6. As shown in the example of FIG. 7, the AND mask data and the OR mask data have the same 32-bit data length as the random number data S1.
[0061]
FIG. 9 is a diagram illustrating an example of the count values A [0] to A [31] of each digit stored in the count value register 3-2. In the figure, the vertical axis represents the count value, and the horizontal axis represents the digit number corresponding to each of the 32 digits.
For example, if the upper limit threshold value TH is 17, in the example of FIG. 9, the digit of digit number 6 (the seventh digit counted from the least significant digit) exceeds the upper limit threshold value TH. In this case, assuming that there is no other digit exceeding the upper limit threshold TH, the AND mask data generated in the upper limit comparison unit 3-3 is' 1 ... 10111111 'in binary number and' FFFFFFBF in hexadecimal number. The data becomes'.
If the lower limit threshold value TL is 15, the digit number 8 (the ninth digit counted from the least significant digit) is lower than the lower limit threshold value TL in the example of FIG. In this case, assuming that there are no other digits below the lower limit threshold TL, the OR mask data generated in the lower limit comparison unit 3-4 is '0 ... 01000000000000 in binary number and' 00000100 in hexadecimal number. The data becomes'.
[0062]
When initial values are set in the count value register 3-2, the AND mask register 3-5, and the OR mask register 3-6 by the initialization operation as described above, the physical
[0063]
In the AND operation unit 2-1 of the
In addition, the OR operation unit 2-2 of the
[0064]
For example, as shown in FIG. 10A, the AND mask data stored in the AND mask register 3-5 has a hexadecimal value “FFFFFFBF” and is stored in the OR mask register 3-6. It is assumed that the mask data has a value of “00000100” in hexadecimal.
In this state, when the random number data S1 having a value of '3878B6C0' is output from the physical
[0065]
In this way, the random number data S2 corrected by the
[0066]
Further, the random number data S2 corrected by the
[0067]
When the corrected random number data is stored in the
[0068]
When the count value of the count value register 3-2 is updated, the upper limit comparison unit 3-3 performs a new comparison between the updated count value and the upper limit threshold value. As a result, the AND mask register The value of the AND mask data stored in 3-5 is updated (step ST108). In addition, the lower limit comparison unit 3-4 performs a new comparison between the updated count value and the lower limit threshold value, and as a result, the value of the OR mask data stored in the OR mask register 3-6. Is updated (step ST109).
[0069]
Next, in step ST110, it is determined whether or not to end generation of random numbers based on an instruction from the
[0070]
FIG. 11 is a diagram illustrating an example of a result of examining the number of “1” included in the 20000-bit random number generated by the random
As shown in the example of FIG. 11, the probability that “1” appears in the random number generated by the random
[0071]
As described above, according to the random
[0072]
In addition, since the random number data S1 is generated based on the irregularity of the physical phenomenon in the physical random
[0073]
In addition to the physical
[0074]
Therefore, according to the
[0075]
<Second Embodiment>
FIG. 12 is a diagram illustrating an example of the configuration of the random
[0076]
In the second embodiment, some of the functions of the random number generation unit are realized by a processing device such as a computer that executes processing based on a program.
For example, the
[0077]
Based on the program stored in the
That is, an initial value of the correction information S3 is generated in the initialization operation (step ST101), and the random number data S1 generated in the physical
[0078]
Also in the random
[0079]
<Third Embodiment>
FIG. 13 is a block diagram showing an example of the configuration of a hardware token according to the third embodiment of the present invention.
[0080]
A hardware token is information that proves the owner's identity, and securely stores information that should be kept secret from others (such as a private key in public key cryptography). It is a device having portability. In this embodiment, the random number generation device of the present invention is applied to such a hardware token.
[0081]
The
[0082]
The
For example, a key generation process for generating a public / private key pair, an encryption process for encrypting plaintext using the public key, and a decryption process for decrypting the ciphertext using the private key are performed.
[0083]
The
[0084]
The
[0085]
The
[0086]
Next, the operation of the
[0087]
When software installed in the
[0088]
FIG. 14 is a flowchart illustrating an example of RSA key pair generation processing.
[0089]
First, the
If it is determined that the random number P is a prime number, the
[0090]
When the prime numbers P and Q are obtained from the random numbers generated by the random
[0091]
[Expression 1]
N = P × Q (1)
[0092]
As the secret key d, a number that satisfies the following equation is calculated between a predetermined number e (for example, 4097) and prime numbers P and Q (step ST206).
[0093]
[Expression 2]
(D × e) mod (P−1) × (Q−1) = 1 (2)
[0094]
The public key N and the secret key d calculated in this way are stored in the
[0095]
FIG. 15 is a flowchart illustrating an example of an ECDSA digital signature generation process.
[0096]
First, the random
[0097]
[Equation 3]
c = (u · G) x mod r (3)
[0098]
However, the symbol “G” in Equation (3) indicates the base point coordinates of the elliptic curve, and the symbol “r” indicates the order of the elliptic curve. Also, the symbol '() x 'Indicates the x coordinate of the point on the elliptic curve obtained by the calculation in parentheses.
[0099]
Then, the
[0100]
[Expression 4]
d = c -1 (F + sc) mod r (4)
[0101]
The signatures c and d generated in this way are transmitted to the
[0102]
FIG. 16 is a flowchart illustrating an example of an ECDSA digital signature verification process.
[0103]
In the digital signature verification process, a plain text m and its signatures c and d are input from the
The input plaintext m is supplied to the
[0104]
[Equation 5]
v = ((d -1 f) G + (cd -1 ) ・ W) x mod r (5)
[0105]
The calculated signature verification value v is transmitted to the
[0106]
As described above, according to the
[0107]
In addition, this invention is not limited to embodiment mentioned above.
For example, the correction
[0108]
Further, in the above-described embodiment, the start and stop of the random number generation operation in the random number generation unit is controlled according to the command from the
[0109]
In the above-described embodiment, the number of “1” included in the predetermined number of random number data stored in the
For example, the number of '1's in all the bit data of the random number data stored in the
In this case, the number of “1” bit data stored in the
[0110]
In the above-described embodiment, among the random number data corrected by the
[0111]
【The invention's effect】
According to the random number generation device of the present invention, it is possible to generate a random number with a small bit value deviation and periodicity with a simple configuration.
Further, according to the program of the present invention, it is possible to cause a computer to execute a process related to generation of random numbers with little bias in bit values and periodicity in a simpler procedure.
Further, according to the cryptographic processing apparatus of the present invention, it is possible to execute highly secure cryptographic processing using random numbers having no bias or periodicity, although it has a simple configuration.
[Brief description of the drawings]
FIG. 1 is a block diagram showing an example of the configuration of a cryptographic processing apparatus according to a first embodiment of the present invention.
FIG. 2 is a block diagram showing an example of a configuration of a random number generation unit according to the first embodiment of the present invention.
3 is a block diagram illustrating an example of a configuration of a correction unit and a correction information generation unit illustrated in FIG.
FIG. 4 is a flowchart showing an example of processing of a random number generation unit according to the first embodiment of the present invention.
FIG. 5 is a diagram illustrating an example of a FIFO memory configuration;
FIG. 6 is a diagram illustrating a count value of each digit stored in a count value register.
FIG. 7 is a diagram illustrating an example of mask data stored in an AND mask register and an OR mask register.
FIG. 8 is a diagram for explaining a counting operation of “1” in a counting unit;
FIG. 9 is a diagram illustrating an example of a count value of each digit stored in a count value register.
FIG. 10 is a diagram illustrating a specific example of random number data correction processing in a correction unit.
11 is a diagram illustrating an example of a result of examining the number of “1” included in a 20000-bit random number generated by the random number generation unit illustrated in FIG. 2 a plurality of times.
FIG. 12 is a diagram illustrating an example of a configuration of a random number generation unit according to the second embodiment of the present invention.
FIG. 13 is a block diagram showing an example of the configuration of a hardware token according to the third embodiment of the present invention.
FIG. 14 is a flowchart showing an example of RSA key pair generation processing in the hardware token shown in FIG. 13;
15 is a flowchart showing an example of an ECDSA digital signature generation process for the hardware token shown in FIG. 13;
16 is a flowchart showing an example of an ECDSA digital signature verification process in the hardware token shown in FIG. 13;
FIG. 17 is a diagram illustrating a result of examining the number of “1” included in a 20000-bit random number generated by an analog random number generator a plurality of times.
[Explanation of symbols]
DESCRIPTION OF
Claims (12)
上記乱数生成手段において生成される乱数データを、入力される補正情報に基づいて補正する補正手段と、
上記補正手段において補正された乱数データに所定のビット値を持つビットデータが出現する頻度に応じて上記補正情報を生成する補正情報生成手段と、
を有する乱数生成装置。Random number generation means;
Correction means for correcting random number data generated by the random number generation means based on input correction information;
Correction information generating means for generating the correction information according to the frequency of appearance of bit data having a predetermined bit value in the random number data corrected by the correction means;
Random number generator.
上記補正情報生成手段は、上記データ格納手段に格納される複数の乱数データの中に上記所定のビット値を持つビットデータが存在する数を計数し、当該計数値と所定のしきい値との比較結果に基づいて上記補正情報を生成する、
請求項1に記載の乱数生成装置。A plurality of data storage means for sequentially storing the random number data corrected in the correction means;
The correction information generation means counts the number of bit data having the predetermined bit value among a plurality of random number data stored in the data storage means, and calculates the count value and a predetermined threshold value. Generating the correction information based on the comparison result;
The random number generation device according to claim 1.
上記補正手段は、上記乱数生成手段において生成される乱数データの各桁のビットデータを、上記補正情報生成手段において生成される各桁の補正情報に基づいて補正する、
請求項2に記載の乱数生成装置。The correction information generating means counts, for each digit, the number of bit data having the predetermined bit value in bit data of the same digit in a plurality of random number data stored in the data storage means. Based on the comparison result between the count value and the predetermined threshold value, the correction information corresponding to each digit is generated,
The correction unit corrects the bit data of each digit of the random number data generated by the random number generation unit based on the correction information of each digit generated by the correction information generation unit.
The random number generation device according to claim 2.
請求項2に記載の乱数生成装置。The correction information generating means changes the threshold value according to an input control signal.
The random number generation device according to claim 2.
請求項1に記載の乱数生成装置。The random number generation means generates a random number based on the irregularity of a physical phenomenon.
The random number generation device according to claim 1.
上記第1の工程において補正された乱数データに所定のビット値を持つビットデータが出現する頻度に応じて上記補正情報を新たに生成する第2の工程と、
を有する乱数生成方法。A first step of correcting the random number data generated in the random number generation means based on the given correction information;
A second step of newly generating the correction information according to the frequency of occurrence of bit data having a predetermined bit value in the random number data corrected in the first step;
A random number generation method comprising:
上記第1のステップにおいて補正された乱数データに所定のビット値を持つビットデータが出現する頻度に応じて上記補正情報を新たに生成する第2のステップと、
を有する処理をコンピュータに実行させるプログラム。A first step of correcting the random number data generated in the random number generation means based on the given correction information;
A second step of newly generating the correction information according to the frequency of appearance of bit data having a predetermined bit value in the random number data corrected in the first step;
A program for causing a computer to execute a process having
請求項7に記載のプログラム。The second step counts the number of bit data having the predetermined bit value in a series of the predetermined number of random data corrected in the first step, and the count value and the predetermined value are counted. Based on the comparison result with the threshold value, the correction information is newly generated.
The program according to claim 7.
上記第1のステップは、上記乱数生成手段において生成される乱数データの各桁のビットデータを、上記第2のステップにおいて生成される各桁の補正情報に基づいて補正する、
請求項8に記載のプログラム。The second step counts, for each digit, the number of bit data having the predetermined bit value in the bit data of the same digit in the series of predetermined number of random number data corrected in the first step. Then, based on the comparison result between the count value of each digit and a predetermined threshold, new correction information corresponding to each digit is generated,
The first step corrects the bit data of each digit of the random number data generated by the random number generation means based on the correction information of each digit generated in the second step.
The program according to claim 8.
上記乱数生成手段において生成される乱数データを、入力される補正情報に基づいて補正する補正手段と、
上記補正手段において補正された乱数データに所定のビット値を持つビットデータが出現する頻度に応じて上記補正情報を生成する補正情報生成手段と、
上記補正手段において補正された乱数データに応じて所定の暗号処理を実行する暗号処理手段と、
を有する暗号処理装置。Random number generation means;
Correction means for correcting random number data generated by the random number generation means based on input correction information;
Correction information generating means for generating the correction information according to the frequency of appearance of bit data having a predetermined bit value in the random number data corrected by the correction means;
Encryption processing means for executing predetermined encryption processing in accordance with the random number data corrected by the correction means;
A cryptographic processing apparatus.
上記補正情報生成手段は、上記データ格納手段に格納される複数の乱数データの中に上記所定のビット値を持つビットデータが存在する数を計数し、当該計数値と所定のしきい値との比較結果に基づいて上記補正情報を生成する、
請求項10に記載の暗号処理装置。A plurality of data storage means for sequentially storing the random number data corrected in the correction means;
The correction information generation means counts the number of bit data having the predetermined bit value among a plurality of random number data stored in the data storage means, and calculates the count value and a predetermined threshold value. Generating the correction information based on the comparison result;
The cryptographic processing apparatus according to claim 10.
請求項11に記載の暗号処理装置。The data storage means can store only random number data corrected by the correction means, and can read stored data only from the correction information generation means.
The cryptographic processing apparatus according to claim 11.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003164280A JP2005003745A (en) | 2003-06-09 | 2003-06-09 | Device, method, and program for generating random number, and cipher processor |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003164280A JP2005003745A (en) | 2003-06-09 | 2003-06-09 | Device, method, and program for generating random number, and cipher processor |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2005003745A true JP2005003745A (en) | 2005-01-06 |
Family
ID=34091118
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003164280A Abandoned JP2005003745A (en) | 2003-06-09 | 2003-06-09 | Device, method, and program for generating random number, and cipher processor |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2005003745A (en) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007180868A (en) * | 2005-12-27 | 2007-07-12 | Toshiba Information Systems (Japan) Corp | Key issuing server, analog chaos random number generation circuit, and authentication system |
JP2008269314A (en) * | 2007-04-20 | 2008-11-06 | Toshiba Corp | Random number generation device and random number generation method |
JP2014075082A (en) * | 2012-10-05 | 2014-04-24 | Renesas Electronics Corp | Random number generator and random number generation method |
CN104579630A (en) * | 2013-10-25 | 2015-04-29 | 上海华力创通半导体有限公司 | System random number generation method |
-
2003
- 2003-06-09 JP JP2003164280A patent/JP2005003745A/en not_active Abandoned
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007180868A (en) * | 2005-12-27 | 2007-07-12 | Toshiba Information Systems (Japan) Corp | Key issuing server, analog chaos random number generation circuit, and authentication system |
JP2008269314A (en) * | 2007-04-20 | 2008-11-06 | Toshiba Corp | Random number generation device and random number generation method |
JP2014075082A (en) * | 2012-10-05 | 2014-04-24 | Renesas Electronics Corp | Random number generator and random number generation method |
CN104579630A (en) * | 2013-10-25 | 2015-04-29 | 上海华力创通半导体有限公司 | System random number generation method |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3421950B2 (en) | Non-deterministic mixture generator stream encryption system | |
JP4774492B2 (en) | Authentication system and remote distributed storage system | |
US6307938B1 (en) | Method, system and apparatus for generating self-validating prime numbers | |
JP4782343B2 (en) | How to authenticate anonymous users while reducing the possibility of “middleman” fraud | |
US8677136B2 (en) | Authenticating messages using cryptographic algorithm constants supplied to a storage-constrained target | |
US7730315B2 (en) | Cryptosystem based on a Jacobian of a curve | |
JP4086503B2 (en) | Cryptographic operation apparatus and method, and program | |
Orobosade et al. | Cloud application security using hybrid encryption | |
US20100020964A1 (en) | Key generation method using quadratic-hyperbolic curve group | |
EP1308885A1 (en) | Information processing and encryption unit | |
US7000110B1 (en) | One-way function generation method, one-way function value generation device, proving device, authentication method, and authentication device | |
JP2008252299A (en) | Encryption processing system and encryption processing method | |
US11349668B2 (en) | Encryption device and decryption device | |
US20040228485A1 (en) | Method and apparatus for the generation of public key based on a user-defined ID in a cryptosystem | |
Puthuparambil et al. | Freestyle, a randomized version of ChaCha for resisting offline brute-force and dictionary attacks | |
JP2004512570A (en) | Method and apparatus using an insecure cryptographic accelerator | |
Fanfara et al. | Usage of asymmetric encryption algorithms to enhance the security of sensitive data in secure communication | |
JP7371757B2 (en) | Authentication encryption device, authentication decryption device, authentication encryption method, authentication decryption method and program | |
JP2005003745A (en) | Device, method, and program for generating random number, and cipher processor | |
KR101026647B1 (en) | Communication security system and method of the same with key derivation cryptographic algorithm | |
JP5440285B2 (en) | Key sharing method, key sharing method, and key sharing program | |
Saif et al. | AMathematicalProposed Model for Public Key Encryption Algorithm in Cybersecurity | |
Dutta et al. | Key variation technique based on piggybacking strategies under public key environments | |
Howgrave-Graham et al. | Pseudo-random number generation on the IBM 4758 Secure Crypto Coprocessor | |
Jeddi et al. | A novel authenticated cipher for RFID systems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20060510 |
|
A762 | Written abandonment of application |
Free format text: JAPANESE INTERMEDIATE CODE: A762 Effective date: 20080227 |