JP4052480B2 - 疑似乱数発生方法、疑似乱数発生器、及び疑似乱数発生プログラム - Google Patents

疑似乱数発生方法、疑似乱数発生器、及び疑似乱数発生プログラム Download PDF

Info

Publication number
JP4052480B2
JP4052480B2 JP2004541207A JP2004541207A JP4052480B2 JP 4052480 B2 JP4052480 B2 JP 4052480B2 JP 2004541207 A JP2004541207 A JP 2004541207A JP 2004541207 A JP2004541207 A JP 2004541207A JP 4052480 B2 JP4052480 B2 JP 4052480B2
Authority
JP
Japan
Prior art keywords
random number
bit string
shift register
feedback shift
linear feedback
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.)
Expired - Fee Related
Application number
JP2004541207A
Other languages
English (en)
Other versions
JPWO2004032098A1 (ja
Inventor
昌克 森井
善明 白石
Original Assignee
小林 朗
昌克 森井
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by 小林 朗, 昌克 森井 filed Critical 小林 朗
Publication of JPWO2004032098A1 publication Critical patent/JPWO2004032098A1/ja
Application granted granted Critical
Publication of JP4052480B2 publication Critical patent/JP4052480B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/58Random or pseudo-random number generators
    • G06F7/582Pseudo-random number generators
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/065Encryption by serially and continuously modifying data stream elements, e.g. stream cipher systems, RC4, SEAL or A5/3
    • H04L9/0656Pseudorandom key sequence combined element-for-element with data sequence, e.g. one-time-pad [OTP] or Vernam's cipher
    • H04L9/0662Pseudorandom key sequence combined element-for-element with data sequence, e.g. one-time-pad [OTP] or Vernam's cipher with particular pseudorandom sequence generator
    • H04L9/0668Pseudorandom key sequence combined element-for-element with data sequence, e.g. one-time-pad [OTP] or Vernam's cipher with particular pseudorandom sequence generator producing a non-linear pseudorandom sequence
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/58Random or pseudo-random number generators
    • G06F7/582Pseudo-random number generators
    • G06F7/584Pseudo-random number generators using finite field arithmetic, e.g. using a linear feedback shift register

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Nonlinear Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Tests Of Electronic Circuits (AREA)
  • Storage Device Security (AREA)

Description

【0001】
【産業上の利用分野】
本発明は、暗号通信やデジタル署名などで利用する疑似乱数を発生させる疑似乱数発生方法や、疑似乱数発生器、乱数発生プログラムに関する。
【0002】
【従来の技術】
従来より、有線や無線により情報通信を行う際に、内容が第三者に漏れないように情報を暗号化して送信することが行われている。この暗号化方式の一つに逐次暗号方式(ストリーム暗号方式)がある。逐次暗号方式は、送信側と受信側で同一の疑似乱数を発生させ、送信側は疑似乱数のビット列と平文のビット列とを用いて暗号文のビット列を作成し暗号文として受信側に送出し、受信側は送信側から受信した暗号文のビット列と疑似乱数のビット列とを用いて平文のビット列を求め平文に復号化するものである。
【0003】
第16図は、従来の逐次暗号方式を説明する図である。送信側の暗号化装置100は、疑似乱数発生器101と論理演算処理部102を有しており、受信側の復号化装置110は、疑似乱数発生器111と論理演算処理部112を有している。
【0004】
暗号化装置100の疑似乱数発生器101と復号化装置110の疑似乱数発生器111は、同一の秘密鍵を与えることによって互いに全く同一の疑似乱数を発生する論理構造を有している。また、暗号化装置100の論理演算処理部102と復号化装置110の論理演算処理部112は、ビット単位で排他的論理和の演算処理を行う。
【0005】
第17図は、暗号化装置100の疑似乱数発生器101を説明する図である。尚、復号化装置110の疑似乱数発生器111については、暗号化装置100の疑似乱数発生器101と同一の構成を有するのでその詳細な説明を省略する。
【0006】
疑似乱数発生器101は、非線形コンバイナ型の疑似乱数発生器(Nonlinear Combiner Generator)であり、第17図に示すように、並列に配置した複数の線形フィードバックシフトレジスタ(Linear Feedback Shift Register;LFSR)103と、非線形変換部104とを有しており、各線形フィードバックシフトレジスタ103から出力したビット列を非線形変換して疑似乱数を発生させる。本従来例では、各線形フィードバックシフトレジスタ103は、1回のシフト動作でそれぞれ1ビット(X1、X2、・・・XL)を出力し、非線形変換部104は、各線形フィードバックシフトレジスタ103から入力されたビット列をもとに1ビットの疑似乱数を出力する構成を有している。
【0007】
第18図は、一般的な線形フィードバックシフトレジスタ103の構成を簡単に説明する図である。線形フィードバックシフトレジスタ103は、1ビットの情報を記憶できる複数のシフトレジスタ105と、複数の排他的論理和演算回路106とを有し、各シフトレジスタ105の出力と各排他的論理和演算回路106の一方の入力との間にはフィードバックタップ107が接続されている。フィードバックタップ107(cn-1、cn-2、・・・cn)は、1のとき結線を示し、0のとき断線を示し、それぞれが予め1または0に定められている。
【0008】
このシフトレジスタ105の個数をnとすると、1つのシフトレジスタ105に注目したとき、出力系列の最大周期は、(2^n)−1となることが知られており、この系列をM系列という。(尚、「2^n」は、2のn乗(2n)を意味する。以下、指数部分は、その前に「^」を付して示す。)
例えば、第14図に示す線形フィードバックシフトレジスタ103の場合、M系列を生成する特性多項式は、以下の式で表される。
【0009】
C(x)=(X^n)+cn-1(X^(n−1))+・・・+c1X+1
上記の特性多項式で第1項目の指数nは線形フィードバックシフトレジスタ103の次数、すなわちシフトレジスタの個数を示し、2項目以降の指数部分は、フィードバックタップによる結線位置を示している。上記の式に示す特性多項式が原始多項式となるようにすれば、線形フィードバックシフトレジスタは、M系列を出力する。
【0010】
このような従来の非線形コンバイナ型疑似乱数発生器は、ビット単位の論理演算を基にした簡単なロジックで構成できるので、いわゆるハードウエアでの実装に適していると考えられている。
【0011】
尚、従来より、線形フィードバックシフトレジスタからの出力を排他的論理和等の演算処理によって変更することが提案されている(例えば、特許文献1参照。)。
【0012】
[特許文献1]特開平6−342257号
【0013】
【発明が解決しようとする課題】
(第1の解決課題)
しかしながら、線形フィードバックシフトレジスタ103は、シフトレジスタ数の2倍の出力を観測することで、線形フィードバックシフトレジスタ103の構成、すなわちシフトレジスタ数及び結線位置と、初期値の全てを特定することが可能である。したがって、構成が固定された線形フィードバックシフトレジスタ103をそのまま疑似乱数発生器101に用いるには、暗号強度が弱く、安全性に問題がある。
【0014】
また、線形フィードバックシフトレジスタ103は、特性多項式の変更によりシフトレジスタの結線位置や結線数を変更すると、線形フィードバックシフトレジスタの出力がM系列ではなく短周期となって暗号強度が低下するおそれがあることから、特性多項式は予めM系列を出力する値に固定されており、線形フィードバックシフトレジスタの構成を簡単に変更することはできないと考えられている。
【0015】
(第2の解決課題)
また、従来の非線形コンバイナ型疑似乱数発生器は、線形フィードバックシフトレジスタ103で1ビット単位の演算を連続して繰り返し実行しなければならない。このような処理は、ハードウエアでは得意とするところであり、比較的高速に処理できるが、ソフトウエアでは苦手とするものであり、ハードウエアの場合と比較して処理速度が極端に遅くなる。
【0016】
一方、非線形変換部104は、論理積や排他的論理和などの単純な演算を実行している。したがって、線形フィードバックシフトレジスタ103のスループットが、非線形変換部104のスループットよりも下回り、発生器全体の中で乱数ビット列を出力する部分、すなわち線形フィードバックシフトレジスタ103がボトルネックになってしまう。このため、従来の非線形コンバイナ型疑似乱数発生器は、ソフトウエアで実装した場合にはハードウエアで実装した場合よりも全体のスループットが低下するという問題があり、ソフトウエアでは使用することが困難であった。
【0017】
また、疑似乱数の暗号強度を十分に確保するためには、線形フィードバックシフトレジスタ103のシフトレジスタ105の数や、線形フィードバックシフトレジスタ103の個数をある程度の数以上必要とする。しかし、スループットは、線形フィードバックシフトレジスタ103のシフトレジスタ105の数が増加するほど、或いは線形フィードバックシフトレジスタ103の個数が増加するほど低くなるという、相反する関係にある。したがって、高い暗号強度を確保しつつ、高いスループットを実現することは困難であった。
【0018】
本発明は、上述の第1及び第2の解決課題の少なくとも一方を解決すべくなされたものであり、その目的は、強い暗号強度を維持しつつ線形フィードバックシフトレジスタの構成を容易かつ動的に変更することができ、また、十分に高い暗号強度を確保しつつ、より高いスループットを実現できる疑似乱数発生方法等を提供することにある。
【0019】
【課題を解決するための手段】
上記課題を解決する請求項1に記載の発明による疑似乱数発生方法は、n個のシフトレジスタを有し、1周期分のビット数が(2^n)−1個となるビット列を出力可能な線形フィードバックシフトレジスタと、秘密鍵に基づき前記線形フィードバックシフトレジスタの初期値を設定する初期値設定手段と、所定の演算処理により前記初期値から前記線形フィードバックシフトレジスタの1周期分のビット数と互いに素である導出値を求める導出値算出手段と、線形フィードバックシフトレジスタの1周期分のビット数を2倍以上した値と導出値とを乗算して、線形フィードバックシフトレジスタにより出力させるビット列のビット数を算出するビット数算出手段と、ビット数算出手段により算出したビット数分のビット列を線形フィードバックシフトレジスタから初期値をもとに出力させるビット列出力手段と、ビット列出力手段によって線形フィードバックシフトレジスタから出力させたビット列から導出値の間隔ごとにビット列を取り出して新ビット列を生成する新ビット列生成手段と、新ビット列生成手段により生成した新ビット列を出力可能な構成に線形フィードバックシフトレジスタの構成を再構成する線形フィードバックシフトレジスタ再構成手段と、線形フィードバックシフトレジスタ再構成手段による再構成後の線形フィードバックシフトレジスタから初期値をもとに疑似乱数を発生させる疑似乱数発生手段を備えた疑似乱数発生器の疑似乱数発生方法であって、初期値設定手段により初期値を設定する第1ステップと、第1ステップで設定した初期値を用いて、導出値算出手段により導出値を求める第2ステップと、第2ステップで求めた導出値と線形フィードバックシフトレジスタの1周期分のビット数を2倍以上した値とを用いて、ビット数算出手段により、線形フィードバックシフトレジスタから出力させるビット列のビット数を算出する第3ステップと、第3ステップで算出したビット数分のビット列を、ビット列出力手段により線形フィードバックシフトレジスタから出力させる第4ステップと、第4ステップで出力されたビット列を用いて、新ビット列生成手段により、新ビット列を生成する第5ステップと、線形フィードバックシフトレジスタ再構成手段により、線形フィードバックシフトレジスタの構成を、第5ステップで生成した新ビット列を出力可能な構成に再構成する第6ステップと、疑似乱数発生手段により、第6ステップで再構成した後の線形フィードバックシフトレジスタから疑似乱数を発生させる第7ステップとを有することを特徴とする。
【0020】
この発明は、出力系列がM系列のビット列をs個ごとにサンプルしたビット列は、そのM系列の1周期分のビット数(=(2^n)−1)と導出値が互いに素であるときには、他の構成を有する線形フィードバックシフトレジスタのM系列を構成し、また、少なくとも2周期分以上のビット数を有するビット列から線形フィードバックシフトレジスタを求めることができることを利用するものである。
【0021】
この発明によると、n個のシフトレジスタを有し、1周期分のビット数が(2^n)−1個となるビット列を出力可能な線形フィードバックシフトレジスタの初期値を設定し、所定の演算処理により初期値から線形フィードバックシフトレジスタの1周期分のビット数と互いに素である導出値を求める。
【0022】
そして、導出値と線形フィードバックシフトレジスタの1周期分のビット数を2倍以上した値とを乗算して、線形フィードバックシフトレジスタにより出力させるビット列のビット数を算出し、その算出したビット数分のビット列を線形フィードバックシフトレジスタから初期値をもとに出力させ、その出力したビット列から導出値の間隔ごとにビット列を取り出して新ビット列を生成する。
【0023】
そして、その新ビット列を出力可能な構成に線形フィードバックシフトレジスタの構成を再構成し、再構成した後の線形フィードバックシフトレジスタから初期値をもとに疑似乱数を発生させる。
【0024】
これによれば、線形フィードバックシフトレジスタの構成を初期値に基づいて動的に変更することができ、変更後の線形フィードバックシフトレジスタからM系列のビット列を出力させることができる。したがって、解読者は、疑似乱数発生器から出力される疑似乱数に基づいて再構成前の線形フィードバックシフトレジスタの構成を得ることができず、初期値や秘密鍵も解読することができない。この結果、高い暗号強度を得ることができ、情報の秘匿性を保つことができる。
【0025】
請求項2の発明は、請求項1に記載の疑似乱数発生方法において、初期値に対してハッシュ関数を施してハッシュ値を求め、そのハッシュ値に最も近似した素数を導出値として採用することを特徴とする。
【0026】
この発明によると、初期値に対してハッシュ関数を施してハッシュ値を求め、そのハッシュ値に最も近似した素数を導出値として採用するので、導出値の推定困難度を高めることができ、より高度な秘匿性を得ることができる。
【0027】
請求項3の発明は、請求項1または2に記載の疑似乱数発生方法において、線形フィードバックシフトレジスタの再構成は、バーレイキャンプマッセイアルゴリズムを用いて行われることを特徴とする。
【0028】
この発明は、少なくとも2周期分以上のビット数を有するビット列から線形フィードバックシフトレジスタを求めることができるという、バーレイキャンプマッセイアルゴリズムを利用するものである。
【0029】
請求項4の発明は、請求項1〜3のいずれか1項に記載の疑似乱数発生方法において、疑似乱数発生器は、疑似乱数発生手段により発生させた疑似乱数を非線形変換する非線形変換手段を備え、第7ステップで発生させた疑似乱数を、非線形変換手段により、非線形変換する第8ステップを有することを特徴とする。
【0030】
この発明によると、発生させた疑似乱数を非線形変換するので、疑似乱数に非線形性を与えることができ、暗号強度を更に向上させることができる。
【0031】
請求項5に記載の発明による疑似乱数発生器は、n個のシフトレジスタを有し、1周期分のビット数が(2^n)−1個となるビット列を出力可能な線形フィードバックシフトレジスタと、秘密鍵に基づき線形フィードバックシフトレジスタの初期値を設定する初期値設定手段と、所定の演算処理により初期値から線形フィードバックシフトレジスタの1周期分のビット数と互いに素である導出値を求める導出値算出手段と、線形フィードバックシフトレジスタの1周期分のビット数を2倍以上した値と導出値とを乗算して、線形フィードバックシフトレジスタにより出力させるビット列のビット数を算出するビット数算出手段と、ビット数算出手段により算出したビット数分のビット列を線形フィードバックシフトレジスタから初期値をもとに出力させるビット列出力手段と、ビット列出力手段によって線形フィードバックシフトレジスタから出力させたビット列から導出値の間隔ごとにビット列を取り出して新ビット列を生成する新ビット列生成手段と、新ビット列生成手段によって生成した新ビット列を出力可能な構成に線形フィードバックシフトレジスタの構成を再構成する線形フィードバックシフトレジスタ再構成手段と、線形フィードバックシフトレジスタ再構成手段による再構成後の線形フィードバックシフトレジスタから初期値をもとに疑似乱数を発生させる疑似乱数発生手段とを有することを特徴とする。
【0032】
この発明は、出力系列がM系列のビット列をs個ごとにサンプルしたビット列は、そのM系列の1周期分のビット数(=(2^n)−1)と導出値sが互いに素であるときには、他の構成を有する線形フィードバックシフトレジスタのM系列を構成し、また、少なくとも2周期分以上のビット数を有するビット列から線形フィードバックシフトレジスタを求めることができることを利用するものである。
【0033】
この発明によると、n個のシフトレジスタを有し、1周期分のビット数が(2^n)−1個となるビット列を出力可能な線形フィードバックシフトレジスタの初期値を設定し、所定の演算処理により初期値から線形フィードバックシフトレジスタの1周期分のビット数と互いに素である導出値を求める。
【0034】
そして、導出値と線形フィードバックシフトレジスタの1周期分のビット数を2倍以上した値とを乗算して、線形フィードバックシフトレジスタにより出力させるビット列のビット数を算出し、その算出したビット数分のビット列を線形フィードバックシフトレジスタから初期値をもとに出力させ、その出力したビット列から導出値の間隔ごとにビット列を取り出して新ビット列を生成する。
【0035】
そして、その新ビット列を出力可能な構成に線形フィードバックシフトレジスタの構成を再構成し、再構成した後の線形フィードバックシフトレジスタから初期値をもとに疑似乱数を発生させる。
【0036】
これによれば、線形フィードバックシフトレジスタの構成を初期値に基づいて動的に変更することができ、変更後の線形フィードバックシフトレジスタからM系列のビット列を出力させることができる。したがって、解読者は、疑似乱数発生器から出力される疑似乱数に基づいて再構成前の線形フィードバックシフトレジスタの構成を得ることができず、初期値や秘密鍵も解読することができない。この結果、高い暗号強度を得ることができ、情報の秘匿性を保つことができる。
【0037】
請求項6に記載の発明は、請求項5に記載の疑似乱数発生器において、線形フィードバックシフトレジスタ再構成手段の代わりに、新ビット列を出力可能な構成を有する第2の線形フィードバックシフトレジスタを生成する線形フィードバックシフトレジスタ生成手段を設け、疑似乱数発生手段は、第2の線形フィードバックシフトレジスタによって初期値をもとに疑似乱数を発生させることを特徴とする。この発明によると、線形フィードバックシフトレジスタを再構成前の線形フィードバックシフトレジスタと第2の線形フィードバックシフトレジスタの2つに分けることができ、より秘匿性の向上を図ることができる。
【0038】
請求項7に記載の発明による疑似乱数発生器は、秘密鍵に基づいて所定ビット数を有する選択用乱数ビット列を出力する乱数ビット列出力部と、乱数ビット列出力部から出力 された選択用乱数ビット列に基づいて選択用乱数ビット列のビット数よりも大きなビット数を有する増幅乱数ビット列を出力する乱数ビット列増幅部と、乱数ビット列増幅部から出力された増幅乱数ビット列を非線形変換して疑似乱数を出力する非線形変換部とを有し、乱数ビット列出力部は、n個のシフトレジスタを有し、1周期分のビット数が(2^n)−1個となるビット列を出力可能な線形フィードバックシフトレジスタと、秘密鍵に基づき線形フィードバックシフトレジスタの初期値を設定する初期値設定手段と、所定の演算処理により初期値から線形フィードバックシフトレジスタの1周期分のビット数と互いに素である導出値を求める導出値算出手段と、線形フィードバックシフトレジスタの1周期分のビット数を2倍以上した値と導出値とを乗算して、線形フィードバックシフトレジスタにより出力させるビット列のビット数を算出するビット数算出手段と、ビット数算出手段により算出したビット数分のビット列を線形フィードバックシフトレジスタから初期値をもとに出力させるビット列出力手段と、ビット列出力手段によって線形フィードバックシフトレジスタから出力させたビット列から導出値の間隔ごとにビット列を取り出して新ビット列を生成する新ビット列生成手段と、新ビット列生成手段により生成した新ビット列を出力可能な構成に線形フィードバックシフトレジスタの構成を再構成する線形フィードバックシフトレジスタ再構成手段と、線形フィードバックシフトレジスタ再構成手段によって再構成された再構成後の線形フィードバックシフトレジスタを用いて初期値をもとに選択用乱数ビット列を出力する選択用乱数ビット列出力手段とを有し、乱数ビット列増幅部は、選択用乱数ビット列よりも大きなビット数を有する増幅乱数ビット列を予め複数格納した乱数テーブルと、選択用乱数ビット列出力手段から出力された選択用乱数ビット列を用いて乱数テーブルを参照することにより、乱数テーブル内の複数の増幅乱数ビット列の中から該当する増幅乱数ビット列を選択可能な増幅乱数ビット列選択手段とを有し、非線形変換部は、増幅乱数ビット列選択手段により選択された増幅乱数ビット列を非線形関数によって非線形変換し疑似乱数として出力する非線形変換手段とを有することを特徴とする。
【0039】
この発明は、出力系列がM系列のビット列をs個ごとにサンプルしたビット列は、そのM系列の1周期分のビット数(=(2^n)−1)と導出値sが互いに素であるときには、他の構成を有する線形フィードバックシフトレジスタのM系列を構成し、また、少なくとも2周期分以上のビット数を有するビット列から線形フィードバックシフトレジスタを求めることができることを利用するものである。
【0040】
この発明によると、疑似乱数発生器は、秘密鍵に基づいて所定のビット数を有する選択用乱数ビット列を出力する乱数ビット列出力部と、その選択用乱数ビット列に基づいて選択用乱数ビット列のビット数よりも大きなビット数を有する増幅乱数ビット列を出力する乱数ビット列増幅部と、その増幅乱数ビット列を非線形変換して疑似乱数を出力する非線形変換部を有している。
【0041】
乱数ビット列出力部は、n個のシフトレジスタを有し、1周期分のビット数が(2^n)−1個となるビット列を出力可能な線形フィードバックシフトレジスタを有しており、その線形フィードバックシフトレジスタの初期値を秘密鍵に基づいて設定し、所定の演算処理により初期値から線形フィードバックシフトレジスタの1周期分のビット数と互いに素である導出値を求める。
【0042】
そして、導出値と線形フィードバックシフトレジスタの1周期分のビット数を2倍以上した値とを乗算して、線形フィードバックシフトレジスタにより出力させるビット列のビット数を算出し、その算出したビット数分のビット列を線形フィードバックシフトレジスタから初期値をもとに出力させ、その出力したビット列から導出値の間隔ごとにビット列を取り出して新ビット列を生成する。
【0043】
それから、その新ビット列を出力可能な構成に線形フィードバックシフトレジスタの構成を再構成し、再構成した後の線形フィードバックシフトレジスタから初期値をもとに選択用乱数ビット列を出力させる。
【0044】
乱数ビット列増幅部は、選択用乱数ビット列よりも大きなビット数を有する増幅乱数ビット列を予め複数格納した乱数テーブルを有しており、乱数ビット列出力部から出力された選択用乱数ビット列を用いて乱数テーブルを参照することにより、乱数テーブル内の複数の増幅乱数ビット列の中から該当する増幅乱数ビット列を選択する。
【0045】
非線形変換部は、乱数ビット列増幅部の増幅乱数ビット列選択手段により選択された増幅乱数ビット列を非線形変換して疑似乱数として出力する。
【0046】
これによれば、 M 系列の選択用乱数ビット列を出力する線形フィードバックシフトレジスタの構成を初期値に基づいて動的に変更することができ、変更後の線形フィードバックシフトレジスタから新たなM系列の選択用乱数ビット列を出力させることができる。したがって、解読者は、疑似乱数発生器から出力される疑似乱数に基づいて再構成前の線形フィードバックシフトレジスタの構成を得ることができず、初期値や秘密鍵も解読することができない。この結果、高い暗号強度を得ることができ、情報の秘匿性を保つことができる。
【0047】
また、乱数ビット列出力部から出力された選択用乱数ビット列を用いて乱数テーブルを参照、乱数テーブル内の複数の増幅乱数ビット列の中から該当する増幅乱数ビット列を選択することによって、小さなビット列を有する選択用乱数ビット列に基づいて、より大きなビット数を有する増幅乱数ビット列を得ることができる。
【0048】
したがって、非線形変換手段に入力される乱数ビット列をより大きなビット数を有するものにすることができる。これにより、従来、ボトルネックとなっていた非線形変換手段よりも上流側の乱数ビット列を出力する部分のスループットを向上させ、非線形変換手段のスループットに近づけることができ、疑似乱数発生器全体のスループットを高速化することができる。
【0049】
請求項8に記載の発明は、請求項7に記載の疑似乱数発生器において、乱数ビット列増幅部は、秘密鍵が与えられることにより秘密鍵に基づいて前記増幅乱数ビット列を発生させる増幅乱数ビット列発生手段と、増幅乱数ビット列発生手段により発生させた増幅乱数ビット列を乱数テーブルに格納して、乱数テーブルの初期設定を行う乱数テーブル初期設定手段を有することを特徴とする。
【0050】
この発明によると、秘密鍵が与えられることにより秘密鍵に基づいて増幅乱数ビット列を発生させ、乱数テーブルに格納して、乱数テーブルの初期設定を行うので、秘密鍵を変更するごとに乱数テーブル内の初期値を変更することができる。したがって、暗号強度を増大させることができる。
【0051】
請求項9に記載の発明は、請求項7または8に記載の疑似乱数発生器において、乱数ビット列出力部は、選択用乱数ビット列出力手段複数設けられ、乱数ビット列増幅部は、乱数テーブル各選択用乱数ビット列出力手段にそれぞれ対応するように設けられ、増幅乱数ビット列選択手段各選択用乱数ビット列出力手段から各々出力された各選択用乱数ビット列を用いて各選択用乱数ビット列出力手段ごとに対応する乱数テーブルをそれぞれ参照し、各乱数テーブル内からそれぞれ該当する増幅乱数ビット列を選択し、非線形変換部は、非線形変換手段各増幅乱数ビット列選択手段によって各乱数テーブルから選択された各増幅乱数ビット列を用いて非線形関数により非線形変換し疑似乱数として出力することを特徴とする。
【0052】
この発明によると、乱数ビット列出力部の各選択用乱数ビット列出力手段からそれぞれ選択用乱数ビット列が出力され、これらの各選択用乱数ビット列を用いて各乱数テーブルがそれぞれ参照される。そして、その参照により各乱数テーブルから選択された各増幅乱数ビット列を用いて非線形変換部の非線形変換手段が非線形関数により非線形変換することによって疑似乱数を発生させる
【0053】
したがって、従来はボトルネックとなっていた非線形変換手段よりも上流側の乱数ビット列を出力する部分のスループットを向上させることができ、疑似乱数発生器全体のスループットを高速化することができる。
【0054】
請求項10に記載の発明は、請求項9に記載の疑似乱数発生器において、乱数ビット列増幅部は、各選択用乱数ビット列出力手段ごとにそれぞれ複数の乱数テーブルを設け、増幅乱数ビット列選択手段により各乱数テーブル内から選択された各増幅乱数ビット列を乱数ビット列出力部の選択用乱数ビット列出力手段ごとに排他的論理和演算して非線形変換部の非線形変換手段に出力する排他的論理和演算処理手段を有することを特徴とする。
【0055】
この発明によると、各乱数テーブルから選択された各増幅乱数ビット列が選択用乱数ビット列出力手段ごとに排他的論理和演算してから非線形変換手段に出力されるので、増幅乱数ビット列発生手段によって発生させた乱数ビット列をそのまま用いたものよりも、暗号強度を増大させることができる。
【0056】
請求項11に記載の発明は、請求項9または10に記載の疑似乱数発生器において、乱数ビット列増幅部は、所定のタイミングで各乱数テーブル同士の入れ替えを行う乱数テーブル入れ替え手段を有することを特徴とする。
【0057】
この発明によると、乱数ビット列増幅部は、所定のタイミングで各乱数テーブル同士の入れ替えを行うので、参照元となる乱数テーブルを変更することができる。したがって、固定されたものよりも暗号強度を増大させることができる。
【0058】
請求項12に記載の発明は、請求項11に記載の疑似乱数発生器において、乱数テーブル入れ替え手段、各乱数テーブルを参照するために必要な選択用乱数ビット列を乱数ビット列出力部の選択用乱数ビット列出力手段が出力するごとに、各乱数テーブル同士の入れ替えを行うことを特徴とする。
【0059】
この発明は、上述の請求項に記載した所定のタイミングの一具体例を示したものである。これによると、各乱数テーブルを参照するために必要な選択用乱数ビット列を選択用乱数ビット列出力手段が出力するごとに各乱数テーブル同士の入れ替えを行う。したがって、短いサイクルで参照元となる乱数テーブルを変更することができ、暗号強度を更に増大させることができる。
【0060】
請求項13に記載の発明は、請求項11または12に記載の疑似乱数発生器において、乱数テーブル入れ替え手段は、各乱数テーブルの個数と等しい個数の乱数テーブル入れ替え用乱数を発生させ、乱数テーブル入れ替え用乱数を乱数テーブルのテーブル番号として各乱数テーブルに付与し、テーブル番号をもとに予め設定された規則に従って乱数テーブルの順番を入れ替えることを特徴とする。
【0061】
この発明は、上述の乱数テーブル入れ替え手段についての具体的な一例を示したものである。これによると、乱数テーブル入れ替え用乱数を発生させ、乱数テーブルのテーブル番号として各乱数テーブルに付与し、その付与したテーブル番号をもとに乱数テーブルの順番を入れ替える。したがって、乱数テーブルの順番を簡単かつ迅速に入れ替えることができ、非線形変換手段よりも上流側のスループットを向上させ、非線形変換手段のスループットに近づけることができ、疑似乱数発生器全体のスループットを高速化することができる。
【0062】
請求項14に記載の発明は、コンピュータを、秘密鍵に基づいて所定のビット数を有する選択用乱数ビット列を出力する乱数ビット列出力部と、乱数ビット列出力部から出力された選択用乱数ビット列に基づいて選択用乱数ビット列のビット数よりも大きなビット数を有する増幅乱数ビット列を出力する乱数ビット列増幅部と、乱数ビット列増幅部から出力された増幅乱数ビット列を非線形変換して疑似乱数を出力する非線形変換部として機能させるための疑似乱数発生プログラムであって、乱数ビット列出力部は、n個のシフトレジスタを有し、1周期分のビット数が(2^n)−1個となるビット列を出力可能な線形フィードバックシフトレジスタと、秘密鍵に基づき線形フィードバックシフトレジスタの初期値を設定する初期値設定手段と、所定の演算処理により初期値から線形フィードバックシフトレジスタの1周期分のビット数と互いに素である導出値を求める導出値算出手段と、線形フィードバックシフトレジスタの1周期分のビット数を2倍以上した値と導出値とを乗算して、線形フィードバックシフトレジスタにより出力させるビット列のビット数を算出するビット数算出手段と、ビット数算出手段により算出したビット数分のビット列を線形フィードバックシフトレジスタから初期値をもとに出力させるビット列出力手段と、ビット列出力手段によって線形フィードバックシフトレジスタから出力させたビット列から導出値の間隔ごとにビット列を取り出して新ビット列を生成する新ビット列生成手段と、新ビット列生成手段により生成した新ビット列を出力可能な構成に線形フィードバックシフトレジスタの構成を再構成する線形フィードバックシフトレジスタ再構成手段と、線形フィードバックシフトレジスタ再構成手段によって再構成された再構成後の線形フィードバックシフトレジスタを用いて選択用乱数ビット列を出力する選択用乱数ビット列出力手段とを有し、乱数ビット列増幅部は、選択用乱数ビット列よりも大きなビット数を有する増幅乱数ビット列を予め複数格納した乱数テーブルと、選択用乱数ビット列出力手段から出力された選択用乱数ビット列を用いて乱数テーブルを参照することにより、乱数テーブル内の複数の増幅乱数ビット列の中から該当する増幅乱数ビット列を選択可能な増幅乱数ビット列選択手段とを有し、非線形変換部は、増幅乱数ビット列選択手段により選択された増幅乱数ビット列を非線形関数によって非線形変換し疑似乱数として出力する非線形変換手段を有することを特徴とする。
【0063】
この発明は、出力系列がM系列のビット列をs個ごとにサンプルしたビット列は、そのM系列の1周期分のビット数(=(2^n)−1)と導出値sが互いに素であるときには、他の構成を有する線形フィードバックシフトレジスタのM系列を構成し、また、少なくとも2周期分以上のビット数を有するビット列から線形フィードバックシフトレジスタを求めることができることを利用するものである。
【0064】
この発明によると、コンピュータは、秘密鍵に基づいて所定のビット数を有する選択用乱数ビット列を出力する乱数ビット列出力部と、その選択用乱数ビット列に基づいて選択用乱数ビット列のビット数よりも大きなビット数を有する増幅乱数ビット列を出力する乱数ビット列増幅部と、その増幅乱数ビット列を非線形変換して疑似乱数を出力する非線形変換部として機能する。
【0065】
乱数ビット列出力部は、n個のシフトレジスタを有し、1周期分のビット数が(2^n)−1個となるビット列を出力可能な線形フィードバックシフトレジスタを有しており、その線形フィードバックシフトレジスタの初期値を秘密鍵に基づいて設定し、所定の演算処理により初期値から線形フィードバックシフトレジスタの1周期分のビット数と互いに 素である導出値を求める。
【0066】
そして、導出値と線形フィードバックシフトレジスタの1周期分のビット数を2倍以上した値とを乗算して、線形フィードバックシフトレジスタにより出力させるビット列のビット数を算出し、その算出したビット数分のビット列を線形フィードバックシフトレジスタから初期値をもとに出力させ、その出力したビット列から導出値の間隔ごとにビット列を取り出して新ビット列を生成する。
【0067】
それから、その新ビット列を出力可能な構成に線形フィードバックシフトレジスタの構成を再構成し、再構成した後の線形フィードバックシフトレジスタから初期値をもとに選択用乱数ビット列を出力させる。
【0068】
乱数ビット列増幅部は、選択用乱数ビット列よりも大きなビット数を有する増幅乱数ビット列を予め複数格納した乱数テーブルを有しており、乱数ビット列出力部から出力された選択用乱数ビット列を用いて乱数テーブルを参照することにより、乱数テーブル内の複数の増幅乱数ビット列の中から該当する増幅乱数ビット列を選択する。
【0069】
非線形変換部は、乱数ビット列増幅部の増幅乱数ビット列選択手段により選択された増幅乱数ビット列を非線形変換して疑似乱数として出力する。
【0070】
これによれば、 M 系列の選択用乱数ビット列を出力する線形フィードバックシフトレジスタの構成を初期値に基づいて動的に変更することができ、変更後の線形フィードバックシフトレジスタから新たなM系列の選択用乱数ビット列を出力させることができる。したがって、解読者は、疑似乱数発生器から出力される疑似乱数に基づいて再構成前の線形フィードバックシフトレジスタの構成を得ることができず、初期値や秘密鍵も解読することができない。この結果、高い暗号強度を得ることができ、情報の秘匿性を保つことができる。
【0071】
また、乱数ビット列出力部から出力された選択用乱数ビット列を用いて乱数テーブルを参照し、乱数テーブル内の複数の増幅乱数ビット列の中から該当する増幅乱数ビット列を選択することによって、小さなビット列を有する選択用乱数ビット列に基づいて、より大きなビット数を有する増幅乱数ビット列を得ることができる。
【0072】
したがって、非線形変換手段に入力される乱数ビット列をより大きなビット数を有するものにすることができる。これにより、従来、ボトルネックとなっていた非線形変換手段よりも上流側の乱数ビット列を出力する部分のスループットを向上させ、非線形変換手段のスループットに近づけることができ、疑似乱数発生器全体のスループットを高速化することができる。
【0073】
請求項15に記載の発明は、請求項14に記載の疑似乱数発生プログラムにおいて、乱数ビット列増幅部は、秘密鍵が与えられることにより秘密鍵に基づいて増幅乱数ビット列を発生させ、乱数テーブルに格納して、乱数テーブルの初期設定を行う乱数テーブル初期設定手段としてコンピュータを機能させることを特徴とする。
【0074】
この発明によると、秘密鍵が与えられることにより秘密鍵に基づいて増幅乱数ビット列を発生させ、乱数テーブルに格納して、乱数テーブルの初期設定を行うので、秘密鍵を変更するごとに乱数テーブル内の初期値を変更することができる。したがって、暗号強度を増大させることができる。
【0075】
請求項16に記載の発明は、請求項14または15に記載の疑似乱数発生プログラムにおいて、乱数ビット列出力部は、選択用乱数ビット列出力手段複数設けられ、乱数ビット列増幅部は、乱数テーブル各選択用乱数ビット列出力手段にそれぞれ対応するように設けられ、増幅乱数ビット列選択手段各選択用乱数ビット列出力手段から各々出力された各選択用乱数ビット列を用いて各選択用乱数ビット列出力手段ごとに対応する乱数テーブルをそれぞれ参照し、各乱数テーブル内からそれぞれ該当する増幅乱数ビット列を選択し、非線形変換部は、非線形変換手段各増幅乱数ビット列選択手段によって各乱数テーブルから選択された各増幅乱数ビット列を用いて非線形関数により非線形変換し疑似乱数として出力することを特徴とする。
【0076】
この発明によると、乱数ビット列出力部の各選択用乱数ビット列出力手段からそれぞれ選択用乱数ビット列が出力され、乱数ビット列増幅部では、各選択用乱数ビット列を用いて各乱数テーブルがそれぞれ参照され、その参照により各乱数テーブルから選択された各増幅乱数ビット列を用いて非線形変換部の非線形変換手段が非線形関数により非線形変換することによって疑似乱数を発生させる。
【0077】
したがって、従来はボトルネックとなっていた非線形変換手段よりも上流側の乱数ビット列を出力する部分のスループットを向上させ、非線形変換手段のスループットに近づけることができ、疑似乱数発生器全体のスループットを高速化することができる。
【0078】
請求項17に記載の発明は、請求項16に記載の疑似乱数発生プログラムにおいて、乱数ビット列増幅部は、各選択用乱数ビット列出力手段ごとにそれぞれ複数の乱数テーブルを設け、増幅乱数ビット列選択手段により各乱数テーブル内から選択された各増幅乱数ビット列を乱数ビット列出力部の選択用乱数ビット列出力手段ごとに排他的論理和演算して非線形変換部の非線形変換手段に出力する排他的論理和演算処理手段としてコンピュータを機能させることを特徴とする。
【0079】
この発明によると、各乱数テーブルから選択された各増幅乱数ビット列が選択用乱数ビット列出力手段ごとに排他的論理和演算してから非線形変換手段に出力されるので、増幅乱数ビット列発生手段によって発生させた乱数ビット列をそのまま用いたものよりも、暗号強度を増大させることができる。
【0080】
請求項18に記載の発明は、請求項16または17に記載の疑似乱数発生プログラムにおいて、乱数ビット列増幅部は、所定のタイミングで前記各乱数テーブル同士の入れ替えを行う乱数テーブル入れ替え手段としてコンピュータを機能させることを特徴とする。
【0081】
この発明によると、乱数ビット列増幅部は、所定のタイミングで各乱数テーブル同士の入れ替えを行うので、参照元となる乱数テーブルを変更することができる。したがって、乱数テーブルが固定されているものよりも暗号強度を増大させることができる。
【0082】
請求項19に記載の発明は、請求項18に記載の疑似乱数発生プログラムにおいて、乱数テーブル入れ替え手段は、各乱数テーブルを参照するために必要な選択用乱数ビット列を乱数ビット列出力部の選択用乱数ビット列出力手段が出力するごとに、各乱数テーブル同士の入れ替えを行うことを特徴とする。
【0083】
この発明は、上述の請求項に記載した所定のタイミングの一具体例を示したものである。これによると、乱数ビット列出力部は、各乱数テーブルを参照するために必要な選択用乱数ビット列を選択用乱数ビット列出力手段が出力するごとに各乱数テーブル同士の入れ替えを行う。したがって、短いサイクルで参照元となる乱数テーブルを変更することができ、暗号強度を更に増大させることができる。
【0084】
請求項20に記載の発明は、請求項18または19に記載の疑似乱数発生プログラムにおいて、乱数テーブル入れ替え手段は、各乱数テーブルの個数と等しい個数の乱数テーブル入れ替え用乱数を発生させ、乱数テーブル入れ替え用乱数を乱数テーブルのテーブル番号として各乱数テーブルに付与し、テーブル番号をもとに予め設定された規則に従って乱数テーブルの順番を入れ替えることを特徴とする。
【0085】
この発明は、上述の乱数テーブル入れ替え手段についての具体的な一例を示したものである。これによると、乱数テーブル入れ替え用乱数を発生させ、乱数テーブルのテーブル番号として各乱数テーブルに付与し、その付与したテーブル番号をもとに乱数テーブルの順番を入れ替える。したがって、乱数テーブルの順番を簡単かつ迅速に入れ替えることができ、非線形変換手段よりも上流側のスループットを向上させ、非線形変換手段のスループットに近づけることができ、疑似乱数発生器全体のスループットを高速化することができる。
【0086】
【発明の実施の形態】
(第1の実施の形態)
次に、本発明の第1の実施の形態について図に基づいて説明する。
【0087】
第1図は、本実施の形態における疑似乱数発生器1を説明する図である。本実施の形態では、非線形コンバイナ型の疑似乱数発生器1を例に説明する。
【0088】
疑似乱数発生器1は、利用者から与えられる秘密鍵に基づいて初期値を設定する初期値設定部(図示せず)と、初期値設定部から受け取った初期値をもとに疑似乱数を生成する複数の疑似乱数生成部10と、これら複数の疑似乱数生成部10の出力側に各々接続され、各疑似乱数生成部10から出力される疑似乱数を非線形変換する非線形変換部20を有している。
【0089】
初期値設定部は、利用者から与えられる秘密鍵をビット列に変換し、疑似乱数生成部10の数に分割して、後述する疑似乱数生成部10の線形フィードバックシフトレジスタ11にそれぞれ割り当てる初期値を生成する処理を行う。
【0090】
疑似乱数生成部10は、L個が互いに並列に配置されており、それぞれ線形フィードバックシフトレジスタ11と、線形フィードバックシフトレジスタ再構成手段12を有している。
【0091】
線形フィードバックシフトレジスタ11は、従来技術で説明したものと同様に、1ビットの情報を記憶できるn個のシフトレジスタと、排他的論理和演算回路を有している。そして、本実施の形態では、1周期分のビット数mが(2^n)−1個となるビット列、いわゆるM系列を出力可能な構成に予め設定されている。
【0092】
第2図は、本実施の形態における線形フィードバックシフトレジスタ11の初期多項式を例示するものである。初期多項式は、M系列を出力するように予め設定されている特性多項式であり、1項目の指数部(第2図では「^」で表している)がシフトレジスタの個数を示し、2項目以降の指数部が排他的論理和演算回路に接続された結線位置を示している。例えば、1段目の線形フィードバックシフトレジスタ11(LFSR1)は、131個のシフトレジスタを有し、8番目、3番目、2番目のシフトレジスタがフィードバックタップによって排他的論理和演算回路に接続されていることを示している。尚、本実施の形態では、シフトレジスタの個数nは、全て素数個に設定されている。
【0093】
線形フィードバックシフトレジスタ再構成手段12は、線形フィードバックシフトレジスタ11の構成を秘密鍵によって動的に変更して再構成するものである。具体的には、出力系列がM系列のビット列をs個ごとにサンプルした新ビット列は、M系列の1周期分のビット数m(=(2^n)−1)と導出値sとが互いに素であるとき、すなわち、1以外の共通の約数を持たないときは、他の構成を有する線形フィードバックシフトレジスタのM系列になり、また、バーレイキャンプマッセイアルゴリズムによって、少なくとも2周期分以上のビット数を有するビット列から、そのビット列を出力可能な等価で最小の線形フィードバックシフトレジスタの特性多項式を求めることができることを利用して、線形フィードバックシフトレジスタ11の再構成を行う。
【0094】
線形フィードバックシフトレジスタ再構成手段12は、初期値設定部によって与えられた初期値から導出値sを算出し、導出値sと線形フィードバックシフトレジスタ11の1周期分のビット数m(=(2^n)−1)を2倍した値2mとを乗算し、線形フィードバックシフトレジスタ11から出力させるビット列のビット数2msを算出する。
【0095】
そして、初期値をもとに線形フィードバックシフトレジスタ11から2ms個のビット列を出力させ、その2ms個のビット列から導出値sの間隔ごとにビット列を取り出して新ビット列を生成し、その新ビット列を用いてバーレイキャンプマッセイアルゴリズムにより線形フィードバックシフトレジスタ11の構成を変更する。
【0096】
尚、本実施の形態では、線形フィードバックシフトレジスタ11から出力させるビット列のビット数が2ms個である場合を例に説明しているが、新ビット列のビット数が2m個以上であれば、等価な最小の線形フィードバックシフトレジスタを求めることができるので、2ms個以上であればよい。
【0097】
バーレイキャンプマッセイアルゴリズムとは、線形フィードバックシフトレジスタ11のシフトレジスタの個数n(線形複雑度)の2倍以上のビット数を有するビット列を入手することで、そのビット列を出力可能な等価な最小の線形フィードバックシフトレジスタを得ることができるというアルゴリズムである。バーレイキャンプマッセイアルゴリズムについては、例えば、文献1「暗号理論入門(第2版)」、共立出版社、岡本栄司著、2002年4月10日発行、に詳細に説明されている。
【0098】
次に、上記構成を有する疑似乱数発生器1の動作について第3図のフローチャートを用いて以下に説明する。
【0099】
まず最初に、初期値設定部によって初期値が設定される(ステップS1)。初期値は、利用者から与えられる秘密鍵を所定の演算処理によって分割することによって設定される。
【0100】
例えば、秘密鍵の長さが16バイトで「ABCDEFGHIJKLMNOP」であり、疑似乱数生成部10が8段の場合には、初期値は下記のように設定される。
【0101】
LFSR1 AB+X’FF’埋め込み文字(Padding)
LFSR2 CD+X’FF’埋め込み文字(Padding)
LFSR3 EF+X’FF’埋め込み文字(Padding)
LFSR4 GH+X’FF’埋め込み文字(Padding)
LFSR5 IJ+X’FF’埋め込み文字(Padding)
LFSR6 KL+X’FF’埋め込み文字(Padding)
LFSR7 MN+X’FF’埋め込み文字(Padding)
LFSR8 OP+X’FF’埋め込み文字(Padding)
ここでは、初期値は、秘密鍵「ABCDEFGHIJKLMNOP」を、「AB」、「CD」、・・・、「OP」の2文字ずつに分割し、残りのシフトレジスタを埋め込み文字(Padding)で埋めることによって設定される。尚、上述の初期値設定方法は、実施例の一つであり、他の方法によって設定してもよい。
【0102】
初期値設定部において秘密鍵から初期値が設定されると、各初期値は、各疑似乱数生成部10にそれぞれ入力され、線形フィードバックシフトレジスタ11のシフトレジスタ内にセットされる。
【0103】
次に、線形フィードバックシフトレジスタ再構成手段12によって、線形フィードバックシフトレジスタ11の構成を再構成する処理が行われる(ステップS2〜ステップS6)。
【0104】
ここでは、まず、所定の演算処理により初期値から線形フィードバックシフトレジスタ11の1周期分のビット数mと互いに素である導出値sを算出する(ステップS2)。導出値sは、初期値に対して、例えばMD5(Message Digest 5)などのハッシュ関数を施してハッシュ値を求め、そのハッシュ値に最も近似した素数が採用される。したがって、導出値の推定困難度を高めることができ、より高度な秘匿性を得ることができる。尚、導出値sは、初期値から求めることができ、かつビット数mと互いに素であればよく、上記の算出方法によって求められるものに限定されない。但し、秘匿性を維持するために、上記所定の演算処理は、一方向性を満足しうる演算処理でなければならない。
【0105】
導出値sを算出すると、次に、線形フィードバックシフトレジスタ11から出力させるビット列のビット数2msを算出する(ステップS3)。線形フィードバックシフトレジスタ11から出力させるビット列のビット数2msは、線形フィードバックシフトレジスタ11の1周期分のビット数m(=(2^n)−1)を2倍した値と、導出値sとを乗算することによって求められる。
【0106】
そして次に、線形フィードバックシフトレジスタ11から初期値をもとに2ms個のビット数を有するビット列を出力させ(ステップS4)、そのビット列から新ビット列を生成する(ステップS5)。新ビット列は、2ms個のビット列から導出値sの間隔ごとに取り出したビット列によって構成され、そのビット数は2m個となる。
【0107】
ここで、出力系列がM系列のビット列をs個ごとにサンプルしたビット列は、そのM系列の1周期分のビット数mと導出値sとが互いに素であれば、他の構成を有する線形フィードバックシフトレジスタのM系列となることから、この新ビット列も、M系列となる。
【0108】
そして、その新ビット列に基づいて線形フィードバックシフトレジスタ11の構成を再構成する(ステップS6)。線形フィードバックシフトレジスタ11の再構成は、バーレイキャンプマッセイアルゴリズムを用いて行われる。バーレイキャンプマッセイアルゴリズムによれば、少なくとも2周期分以上のビット数を有するビット列があれば、かかるビット列を出力可能な等価で最小の線形フィードバックシフトレジスタを求めることができるので、2m個のビット数を有する新ビット列から新たな線形フィードバックシフトレジスタの特性多項式を導出して、再構成を行う。
【0109】
再構成後の線形フィードバックシフトレジスタ11は、再構成前と同一の次数及び異なる結線の特性多項式を有し、同一の初期値を与えた場合に、再構成前と異なるM系列を出力可能な構成を有する。
【0110】
線形フィードバックシフトレジスタ再構成手段12による線形フィードバックシフトレジスタ11の再構成が終了すると、再構成された線形フィードバックシフトレジスタ11から初期値をもとに疑似乱数を発生させる処理が行われる(ステップS7)。これにより、疑似乱数生成部10から再構成前とは異なるM系列の疑似乱数が発生される。
【0111】
各疑似乱数生成部10から出力された疑似乱数は、それぞれ非線形変換部20に入力され、非線形変換部20で所定の非線形関数f(x)に基づいて非線形変換される(ステップS8)。これにより、疑似乱数に非線形性を与えることができ、暗号強度を更に向上させることができる。
【0112】
上記構成を有する疑似乱数発生器1によれば、線形フィードバックシフトレジスタ11の構成を初期値に基づいて容易かつ動的に変更することができ、変更後もM系列を出力させることができる。したがって、解読者は、再構成前の線形フィードバックシフトレジスタの構成を取得することができない。これにより、従来、線形フィードバックシフトレジスタの構成が既知であることを前提に成り立っていた既存の暗号解読法は、成立しなくなる。したがって、高い暗号強度を得ることができ、情報の秘匿性を保つことができる。
【0113】
尚、上述の実施の形態では、非線形コンバイナ型の疑似乱数発生器1を例に説明したが、非線形コンバイナ型に限定されるものではなく、線形フィードバックシフトレジスタを用いる疑似乱数発生器であればよく、例えばブロック型暗号方式に用いられる疑似乱数発生器に用いてもよい。
【0114】
また、上記のステップS6で、新ビット列に基づいて線形フィードバックシフトレジスタ11の構成を再構成する代わりに、新ビット列を出力可能な構成を有する第2の線形フィードバックシフトレジスタを生成し、ステップS7で、その第2の線形フィードバックシフトレジスタによって初期値をもとに疑似乱数を発生させてもよい。これによれば、線形フィードバックシフトレジスタを2つに分けることができ、より秘匿性の向上を図ることができる。また、第1の実施の形態における疑似乱数発生器1は、ソフトウエアやハードウエアのいずれによって構成してもよい。
【0115】
(第2の実施の形態)
次に、本発明の第2の実施の形態について図に基づいて説明する。
【0116】
第4図は、第2の実施の形態における疑似乱数発生器2の原理を示す説明図である。本実施の形態における疑似乱数発生器は、疑似乱数発生プログラムをコンピュータハードウエア上で実行することによって実現される非線形コンバイナ型の疑似乱数発生器である。尚、本実施の形態では、暗号化装置(従来技術を参照)に組み込まれた場合のものを例に説明し、復号化装置のものについては同様であるのでその詳細な説明を省略する。
【0117】
疑似乱数発生器は、第4図に示すように、乱数ビット列出力部50と、乱数ビット列増幅部60と、非線形変換部70を有している。乱数ビット列出力部50は、α個の選択用乱数ビット列出力手段51を備えている。選択用乱数ビット列出力手段511〜51αは、利用者から与えられるLkビットの秘密鍵KをもとにNiビットを有する選択用乱数ビット列を連続して出力するものであり、例えば線形フィードバックシフトレジスタによって構成される。
【0118】
乱数ビット列増幅部60は、Niビットの選択用乱数ビット列を与えることによりNiビットよりも大きなビット数であるNoビットの増幅乱数ビット列を出力するように構成されており、乱数テーブル部61と排他的論理和演算処理手段63を備えている。
【0119】
乱数テーブル部61は、(2^Ni)個の乱数ビット列を格納したα×β(以下、単に「αβ」と記す)個の乱数テーブル62によって構成されている。そして、第4図に示すように、各選択用乱数ビット列出力手段51ごとにβ(複数)個の乱数テーブル62が対応するように設けられている。第5図は、一の乱数テーブルの構成を説明する概略図である。各乱数テーブル62は、第5図に示すように、(2^Ni)個でかつ0〜(2^Ni)−1のインデックス番号が付与されたインデックス部Riと、各インデックス番号に一対一で対応して設けられ上述の増幅乱数ビット列を格納可能なビット列格納部Roを有している。
【0120】
そして、乱数ビット列出力部50の選択用乱数ビット列出力手段51から出力された選択用乱数ビット列を引数として、該当するインデックス部Riのインデックス番号を選択し、そのインデックス番号に対応する乱数ビット列格納部RoからNoビットの増幅乱数ビット列を選択できるように構成されている。
【0121】
排他的論理和演算処理手段63は、乱数テーブル621〜62αβの参照によって抽出されたαβ個の増幅乱数ビット列を各選択用乱数ビット列出力手段51ごとに排他的論理和演算処理し、α個の増幅乱数ビット列とし、非線形変換部70に出力するように構成されている。これにより、乱数テーブル621〜62αβから読み出した増幅乱数ビット列をそのまま非線形変換部70に出力するのではなく、暗号強度が増幅乱数ビット列そのものに依存することを防止し、暗号強度を更に向上させている。
【0122】
第6図は、乱数ビット列増幅部60内に構成される各構成要素を説明する原理図である。上述の乱数ビット列増幅部60は、第6図に示すように、その内部機構として増幅乱数ビット列選択手段64を備えている。増幅乱数ビット列選択手段64は、各選択用乱数ビット列出力手段511〜51αから出力された選択用乱数ビット列を引数として各乱数テーブル621〜62αβをそれぞれ参照し、引数と等しい値を有するインデックス番号に対応するビット列格納部Roから増幅乱数ビット列をそれぞれ選択するように構成されている。
【0123】
また、乱数ビット列増幅部60は、乱数テーブル部61の初期設定を行う乱数テーブル初期設定手段65と、その乱数テーブル初期設定手段65により乱数テーブル部61内に設定される増幅乱数ビット列を発生させる増幅乱数ビット列発生手段66を備えている。
【0124】
乱数テーブル初期設定手段65は、増幅乱数ビット列発生手段66によって発生させた乱数ビット列をNoビットごとに分割して各乱数テーブル621〜62αβの全ての乱数ビット列格納部Roに格納する処理を行うものであり、本実施の形態では、第1番目の選択用乱数ビット列出力手段511に対応する乱数テーブル621から第α番目の選択用乱数ビット列出力手段51αに対応する乱数テーブル62αβまで順番に格納するように構成されている。
【0125】
増幅乱数ビット列発生手段66は、秘密鍵Kをもとに乱数ビット列を出力するものであり、本実施の形態では、RC4 Syppetric Streap Cipher(RSA Data Security Inc.製)を用いている。しかし、通常の線形フィードバックシフトレジスタなどの疑似乱数ビット列を高速に出力できるもの(主としてストリーム型暗号)であれば他のものであってもよい。
【0126】
また、第6図に示すように、乱数ビット列増幅部60は、所定のタイミングで乱数テーブル621〜62αβの順番を入れ替える処理を行う乱数テーブル順番入れ替え手段67と、その乱数テーブル順番入れ替え手段67が乱数テーブルの順番入れ替え処理を行うために使用する順番入れ替え用乱数を発生させる入れ替え用乱数発生手段68を備えている。
【0127】
乱数テーブル順番入れ替え手段67は、入れ替え用乱数発生手段68により発生させた入れ替え用乱数を、乱数テーブルのテーブル番号として、その発生させた順番で各乱数テーブル621〜62αβに順次付与し、その付与した乱数をもとに乱数テーブルの順番を入れ替える処理を行い、乱数テーブル部61内の増幅乱数ビット列の順番をテーブル単位で変更する。
【0128】
入れ替え用乱数発生手段68は、任意の秘密鍵K0をもとに乱数テーブル入れ替え用乱数を発生させる処理を行うものであり、乱数ビット列出力部50からNiビットを有するα個の選択用乱数ビット列を入力するごとに、αβ個の入れ替え用乱数を発生するように構成されている。任意の秘密鍵K0は、本実施の形態では、上述の増幅乱数ビット列発生手段66に秘密鍵Kを与えて出力させた増幅乱数ビット列からLkビット分だけ取り出した値を用いている。しかし、これに拘束されるものではなく、例えば、他の手段によって発生させたり、別途にユーザに入力させてもよい。
【0129】
非線形変換部70は、α入力1出力の1次無相関な非線形関数f(x)を有しており、乱数ビット列増幅部60から出力されたα個の増幅乱数ビット列を非線形変換し、Noビットを有する1個の乱数ビット列を疑似乱数Zとして出力するように構成されている。
【0130】
尚、秘密鍵Kは、128ビット、256ビット、512ビット、1024ビットの中から選択され、また、選択用乱数ビット列出力手段51の数α、各選択用乱数ビット列出力手段51に対応する乱数テーブルの数β、及び選択用乱数ビット列のビット数Niは、互いにかけ算した値が秘密鍵Kのビット数Lkに等しいという条件の範囲内で選択される。
【0131】
次に、疑似乱数発生方法について第7図に基づき説明する。第7図は、本実施の形態における疑似乱数発生方法の原理を説明するフローチャートである。
【0132】
まず最初に、乱数ビット列出力部50は、ユーザからLkビットを有する任意の秘密鍵Kの入力を受けると(ステップS11)、その秘密鍵Kを用いて選択用乱数ビット列出力手段51の初期値を設定する(ステップS12)。例えば、選択用乱数ビット列出力手段51が線形フィードバックシフトレジスタによって構成されている場合には、その秘密鍵Kに基づいて各シフトレジスタ内に格納される初期値の設定が行われる。
【0133】
各選択用乱数ビット列出力手段51の初期値を設定すると、次に、乱数テーブル初期設定手段65により乱数テーブル部61の初期設定が行われる(ステップS13)。ここでは、まず、増幅乱数ビット列発生手段66に秘密鍵Kが与えられ、高速で乱数ビット列が発生される。この増幅乱数ビット列発生手段24により発生された乱数ビット列は、乱数テーブル初期設定手段65によって、Noビットごとに分割され、増幅乱数ビット列として各乱数テーブル621〜62αβの全ての乱数ビット列格納部Roに順次格納される。このように、秘密鍵Kが与えられることによって、乱数テーブル部61の初期設定が予め行われる。
【0134】
上述のステップS11〜ステップS13により選択用乱数ビット列出力手段51と乱数テーブル部61の初期値の設定が行われると、待機状態となる。そして、平文の暗号化装置(上述の「従来の技術」を参照)への入力をトリガとして、乱数ビット列の増幅処理が開始される(ステップS14〜S16)。まず最初に、各選択用乱数ビット列出力手段51によって、それぞれNiビットを有する選択用乱数ビット列を乱数テーブルの数であるβ個出力させ、乱数ビット列増幅部60内に記憶させる(ステップS14)。
【0135】
それから、乱数テーブル順番入れ替え手段7により乱数テーブル621〜62αβの順番入れ替え処理を行う(ステップS15)。ここでは、まず、入れ替え用乱数発生手段68によりαβ個の入れ替え用乱数を発生させ、乱数テーブルの順番入れ替え用のテーブル番号として、各乱数テーブル621〜62αβに付与する。これらのテーブル番号は、その発生の順番で乱数テーブル621から順次付与される。
【0136】
したがって、各乱数テーブル621〜62αβには、1〜αβまでのテーブル番号が順不同に付与される。そして、その付与したテーブル番号をもとに乱数テーブル部61内の増幅乱数ビット列の順番を各乱数テーブル単位で入れ替える処理が行われる。これにより、乱数テーブル部61の乱数ビット列格納部Roに格納されている増幅乱数ビット列は、昇順や降順などの予め設定した規則に従って、各乱数テーブル単位で入れ替えられる。
【0137】
乱数テーブル621〜62αβの順番入れ替える処理が終了すると、増幅乱数ビット列選択手段64により、各乱数テーブル621〜62αβ内から該当する増幅乱数ビット列を選択する増幅乱数ビット列選択処理が行われる(ステップS16)。増幅乱数ビット列選択手段64は、ステップS14で乱数ビット増幅部60に記憶した各選択用乱数ビット列を用いて、対応する乱数テーブル621〜62αβをそれぞれ参照し、各乱数テーブル621〜62αβ内からそれぞれ該当する増幅乱数ビット列を選択する。
【0138】
増幅乱数ビット列の選択処理が終了すると、次に、排他的論理和演算処理手段63により排他的論理和演算処理が行われる(ステップS17)。排他的論理和演算処理手段63は、各乱数テーブル621〜62αβから読み出したαβ個の増幅乱数ビット列を、各選択用乱数ビット列出力手段51単位で排他的論理和演算処理する。これにより、Noビットを有するα個の新たな増幅乱数ビット列が生成される。
【0139】
そして、これらの新たに生成された増幅乱数ビット列は、非線形変換部70に出力され、非線形変換が行われる(ステップS18)。非線形変換部70は、予め設定された非線形関数に基づいてNoビットのαβ個の増幅乱数ビット列を非線形変換し、Noビットを有する1個の乱数ビット列を疑似乱数として出力する。
【0140】
非線形変換部70から疑似乱数を出力すると、再びステップS14まで戻り、ステップS14からステップS18までの処理を繰り返し行う。そして、平文から暗号文に変換するために必要な分の疑似乱数を発生させる。
【0141】
上述の疑似乱数発生器によると、乱数ビット列出力部50の選択用乱数ビット列出力手段51によって出力したNiビットの選択用乱数ビット列に基づき乱数ビット列増幅部60の乱数テーブル部61を参照することで、Niビットよりも大きなビット数を有するNoビットの増幅乱数ビット列を非線形変換部70に供給することができる。したがって、従来はボトルネックとなっていた非線形変換部70よりも上流側のスループットを向上させることができ、非線形変換部70のスループットに近づけることができる。したがって、疑似乱数発生器全体のスループットを高速化することができる。
【0142】
また、選択用乱数ビット列出力手段51からの選択用乱数ビット列の入力に応じて、乱数テーブル順番入れ替え処理を行うので、疑似乱数の暗号強度を増大させることができる。特に、本実施の形態では、乱数テーブル621〜62αβの組合せパターンを(αβ)の階乗個(以下、階乗を「!」で表す)にすることができる。したがって、乱数テーブル部61の内容を既知と仮定したときに成立する攻撃では、(2^(αβ×Ni))×(αβ)!の計算量が必要となり、この計算量は、Lkビットの秘密鍵を全数探索する場合の計算量よりも多くなることから、十分な暗号強度を備えていることがわかる。
【0143】
また、上述の疑似乱数発生器は、一の選択用乱数ビット列出力手段51から出力した乱数ビット列を用いて複数(β個)の乱数テーブルを参照し、各乱数テーブルから選択した乱数ビット列に排他的論理和演算を施す処理を行っている。したがって、乱数テーブル61から読み出した増幅乱数ビット列をそのまま非線形変換部70に出力した場合のように暗号強度が増幅乱数ビット列発生手段66そのものに依存するのを防ぎ、暗号強度を更に向上させている。
【0144】
次に、本実施の形態における具体的な一実施例について説明する。第8図は、本実施例の疑似乱数発生器を概略的に示す概念図、第9図は、乱数テーブル部61を概略的に示す概念図である。尚、本実施例では、各設定値(パラメータ)を以下のように設定した場合を例に説明する。
【0145】
選択用乱数ビット列出力手段の数:8個(α=8)
各選択用乱数ビット列出力手段に対応した乱数テーブルの数:2個(β=2)
乱数テーブルのインデックス部の長さ:2^8個(Ni=8)
乱数テーブルの乱数ビット列部の長さ:2^16個(No=16)
秘密鍵の長さ:128ビット(Lk=128)
非線形変換部70の非線形関数f(x):
f(x) = x1 + x5
+ x1x2 + x1x3 + x2x3 + x2x5 + x2x6 + x3x6
+ x1x7 + x2x7 + x4x8 + x5x8
+ x1x2x3 + x1x2x4 + x1x3x4 + x2x3x4 + x1x2x5
+ x2x4x5 + x3x4x5 + x1x2x6 + x2x3x6 + x1x4x6
+ x4x5x6 + x1x2x7 + x2x3x7 + x1x4x7 + x1x5x7
+ x2x5x7 + x4x5x7 + x1x6x7 + x4x6x7 + x5x6x7
+ x1x2x8 + x1x3x8 + x2x3x8 + x3x4x8 + x1x5x8
+ x3x5x8 + x4x5x8 + x3x6x8 + x4x6x8 + x5x6x8
+ x1x7x8 + x2x7x8
+ x1x2x4x5 + x1x3x4x5 + x2x3x4x5 + x1x2x4x6
+ x1x3x4x6 + x2x3x4x6 + x1x4x5x6 + x2x4x5x6
+ x3x4x5x6 + x1x2x3x7 + x1x2x4x7 + x2x3x4x7
+ x1x2x5x7 + x1x4x5x7 + x2x4x5x7 + x1x2x6x7
+ x1x3x6x7 + x2x3x6x7 + x1x4x6x7 + x2x4x6x7
+ x3x4x6x7 + x1x5x6x7 + x2x5x6x7 + x3x5x6x7
+ x1x2x4x8 + x1x2x5x8 + x1x3x5x8 + x1x4x5x8
+ x1x2x6x8 + x2x3x6x8 + x1x4x6x8 + x2x5x6x8
+ x3x5x6x8 + x1x3x7x8 + x1x4x7x8 + x2x4x7x8
+ x3x4x7x8 + x2x5x7x8
+ x1x2x3x4x5 + x1x2x3x4x6 + x1x3x4x5x6
+ x2x3x4x5x6 + x1x2x4x5x7 + x2x3x4x5x7
+ x1x2x4x6x7 + x1x3x4x6x7 + x1x4x5x6x7
+ x2x4x5x6x7 + x1x2x3x4x8 + x1x2x3x5x8
+ x1x2x4x5x8 + x1x2x3x6x8 + x1x2x4x6x8
+ x1x3x4x6x8 + x2x3x5x6x8 + x1x4x5x6x8
+ x2x4x5x6x8 + x1x2x3x7x8 + x1x3x4x7x8
+ x1x3x5x7x8 + x2x3x5x7x8 + x3x4x5x7x8
+ x1x3x6x7x8 + x3x4x6x7x8
+ x1x2x3x4x5x8 + x1x2x3x4x6x8
+ x1x3x4x5x6x8 + x2x3x4x5x6x8
+ x1x2x3x4x7x8 + x1x2x3x5x7x8
+ x1x2x4x5x7x8 + x1x3x4x5x7x8
+ x1x3x4x6x7x8 + x2x3x4x6x7x8
+ x1x2x5x6x7x8 + x1x3x5x6x7x8
【0146】
本実施例では、各選択用乱数ビット列出力手段51が、ユーザから与えられる秘密鍵Kに基づいて線形フィードバックシフトレジスタ53の再構成を行い、その再構成後の線形フィードバックシフトレジスタ53を用いて選択用乱数ビット列を出力するように構成されている。
【0147】
まず最初に、この選択用乱数ビット列出力手段51の構成及びその動作について説明する。選択用乱数ビット列出力手段51は、第8図に示すように、初期値設定手段2、線形フィードバックシフトレジスタ53、線形フィードバックシフトレジスタ再構成手段54を有している。
【0148】
初期値設定手段52は、ユーザから与えられる秘密鍵Kに基づいて初期値を設定するものであり、秘密鍵Kをビット列に変換し、初期値として線形フィードバックシフトレジスタ53のシフトレジスタ内に割り当てるように構成されている。初期値設定手段52は、本実施例では、RC4 Syppetric Streap Cipher(RSA Data Security Inc.製)を用いており、増幅乱数ビット列発生手段66と共用している。
【0149】
線形フィードバックシフトレジスタ53は、上述の「従来の技術」で説明したものと同様に、1ビットの情報を記憶できるn個のシフトレジスタと、排他的論理和演算回路を有している。そして、本実施の形態では、1周期分のビット数mが(2^n)−1個となるビット列、いわゆるM系列を出力可能な構成に予め設定されている。
【0150】
第11図は、本実施の形態における線形フィードバックシフトレジスタ53の初期多項式を例示するものである。初期多項式は、M系列を出力するように予め設定されている特性多項式であり、1項目の指数部分がシフトレジスタの個数を示し、2項目以降の指数部分が排他的論理和演算回路に接続された結線位置を示している。例えば、1段目の線形フィードバックシフトレジスタ(LFSR1)53は、129個のシフトレジスタを有し、80番目、8番目、1番目のシフトレジスタがフィードバックタップによって排他的論理和演算回路に接続されていることを示している。尚、本実施の形態では、シフトレジスタの個数nは、全て素数個に設定されている。
【0151】
線形フィードバックシフトレジスタ再構成手段4は、線形フィードバックシフトレジスタ53の構成を秘密鍵Kによって動的に変更して再構成するものである。具体的には、出力系列がM系列のビット列をs個ごとにサンプルした新ビット列は、M系列の1周期分のビット数m(=(2^n)−1)と導出値sとが互いに素であるとき、すなわち、1以外の共通の約数を持たないときは、他の構成を有する線形フィードバックシフトレジスタのM系列になり、また、バーレイキャンプマッセイアルゴリズムによって、少なくとも2周期分以上のビット数を有するビット列から、そのビット列を出力可能な等価で最小の線形フィードバックシフトレジスタの特性多項式を求めることができることを利用して、線形フィードバックシフトレジスタ53の再構成を行う。
【0152】
線形フィードバックシフトレジスタ再構成手段4は、初期値設定手段2によって与えられた初期値から導出値sを算出し、導出値sと線形フィードバックシフトレジスタ53の1周期分のビット数m(=(2^n)−1)を2倍した値2mとを乗算し、線形フィードバックシフトレジスタ53から出力させるビット列のビット数2msを算出する。
【0153】
そして、初期値をもとに線形フィードバックシフトレジスタ53から2ms個のビット列を出力させ、その2ms個のビット列から導出値sの間隔ごとにビット列を取り出して新ビット列を生成し、その新ビット列を用いてバーレイキャンプマッセイアルゴリズムにより線形フィードバックシフトレジスタ53の構成を変更する。
【0154】
尚、線形フィードバックシフトレジスタ53から出力させるビット列のビット数は、新ビット列のビット数が2m個以上であれば、等価な最小の線形フィードバックシフトレジスタを求めることができるので、2ms個以上であればよい。
【0155】
バーレイキャンプマッセイアルゴリズムとは、線形フィードバックシフトレジスタ53のシフトレジスタの個数n(線形複雑度)の2倍以上のビット数を有するビット列を入手することで、そのビット列を出力可能な等価な最小の線形フィードバックシフトレジスタを得ることができるというアルゴリズムである。バーレイキャンプマッセイアルゴリズムについては、例えば、文献1「暗号理論入門(第2版)」、共立出版社、岡本栄司著、2002年4月10日発行、に詳細に説明されている。
【0156】
第12図は、線形フィードバックシフトレジスタ53の再構成処理を説明するフローチャートである。
【0157】
まず最初に、初期値設定手段2によって初期値が設定される(ステップS41)。初期値は、利用者から与えられるLkビットの秘密鍵Kに基づいて設定される。初期値設定手段2において秘密鍵Kから初期値が設定されると、その初期値は、線形フィードバックシフトレジスタ53のシフトレジスタ内にセットされる。
【0158】
次に、所定の演算処理により初期値から線形フィードバックシフトレジスタ53の1周期分のビット数mと互いに素である導出値sを算出する(ステップS42)。導出値sは、初期値に対して、例えばMD5(Message Digest 5)などのハッシュ関数を施してハッシュ値を求め、そのハッシュ値に最も近似した素数が採用される。導出値sは、初期値から求めることができ、かつビット数mと互いに素であればよく、上記の算出方法によって求められるものに限定されない。但し、秘匿性を維持するために、上記所定の演算処理は、一方向性を満足しうる演算処理でなければならない。
【0159】
導出値sを算出すると、次に、線形フィードバックシフトレジスタ53から出力させるビット列のビット数2msを算出する(ステップS43)。線形フィードバックシフトレジスタ53から出力させるビット列のビット数2msは、線形フィードバックシフトレジスタ53の1周期分のビット数m(=(2^n)−1)を2倍した値と、導出値sとを乗算することによって求められる。
【0160】
そして次に、線形フィードバックシフトレジスタ53から初期値をもとに2ms個のビット数を有するビット列を出力させ(ステップS44)、そのビット列から新ビット列を生成する(ステップS45)。新ビット列は、2ms個のビット列から導出値sの間隔ごとに取り出したビット列によって構成され、そのビット数は2m個となる。
【0161】
ここで、出力系列がM系列のビット列をs個ごとにサンプルしたビット列は、そのM系列の1周期分のビット数mと導出値sとが互いに素であれば、他の構成を有する線形フィードバックシフトレジスタのM系列となることから、この新ビット列も、M系列となる。
【0162】
そして、その新ビット列に基づいて線形フィードバックシフトレジスタ53の構成を再構成する(ステップS46)。線形フィードバックシフトレジスタ53の再構成は、バーレイキャンプマッセイアルゴリズムを用いて行われる。バーレイキャンプマッセイアルゴリズムによれば、少なくとも2周期分以上のビット数を有するビット列があれば、かかるビット列を出力可能な等価で最小の線形フィードバックシフトレジスタ53を求めることができるので、2m個のビット数を有する新ビット列から新たな線形フィードバックシフトレジスタ53の特性多項式を導出して、再構成を行う。
【0163】
再構成後の線形フィードバックシフトレジスタ53は、再構成前と同一の次数及び異なる結線の特性多項式を有し、同一の初期値を与えた場合に、再構成前と異なるM系列を出力可能な構成を有する。
【0164】
線形フィードバックシフトレジスタ再構成手段14による線形フィードバックシフトレジスタ53の再構成が終了すると、再構成された線形フィードバックシフトレジスタ53から初期値をもとに選択用乱数ビット列を発生させる処理が行われる(ステップS47)。これにより、乱数ビット列出力部50からは再構成前とは異なるM系列の選択用乱数ビット列が出力される。
【0165】
尚、上記のステップS46で、新ビット列に基づいて線形フィードバックシフトレジスタ53の構成を再構成する代わりに、新ビット列を出力可能な構成を有する第2の線形フィードバックシフトレジスタを生成し、ステップS47で、その第2の線形フィードバックシフトレジスタによって初期値をもとに乱数ビット列を発生させてもよい。これによれば、線形フィードバックシフトレジスタ53を2つに分けることができ、より秘匿性の向上を図ることができる。
【0166】
上記の選択用乱数ビット列出力手段51は、線形フィードバックシフトレジスタ53の構成を初期値に基づいて容易かつ動的に変更することができ、変更後もM系列を出力させることができる。したがって、攻撃者は、再構成前の線形フィードバックシフトレジスタ53の構成を取得することができない。これにより、従来、線形フィードバックシフトレジスタ53の構成が既知であることを前提に成り立っていた既存の暗号解読法は、成立しなくなる。したがって、高い暗号強度を得ることができ、情報の秘匿性を保つことができる。
【0167】
次に、上記の選択用乱数ビット列出力手段51を備えた疑似乱数発生器による疑似乱数発生方法について説明する。第10図は、本実施例における疑似乱数発生方法を説明するフローチャートである。
【0168】
まず最初に、乱数ビット列出力部50は、ユーザから128ビット(Lk=128)を有する任意の秘密鍵Kの入力を受け取ると、その秘密鍵Kに基づいて再構成前の線形フィードバックシフトレジスタ53の初期値を設定する(ステップS21)。
【0169】
そして、その初期値に基づいて線形フィードバックシフトレジスタ53を再構成し(ステップS22)、再構成後の線形フィードバックシフトレジスタ5に初期値を設定する(ステップS23)。この初期値の設定を、全ての選択用乱数ビット列出力手段51 1 〜51 8 について行う。
【0170】
次に、乱数ビット列増幅部60は、乱数テーブル部61の初期設定を行う(ステップS24)。ここでは、まず、増幅乱数ビット列発生手段66に秘密鍵Kを与え、高速で乱数ビット列を発生させる処理が行われるが、本実施例では、上述のように、増幅乱数ビット列発生手段66と選択用乱数ビット列出力手段51 1 〜51 8 の初期値設定手段52とを共用しているので、別途出力することはせずに、線形フィードバックシフトレジスタ53の初期値として出力した乱数ビット列をそのまま用いる。
【0171】
乱数テーブル初期設定手段65は、その乱数ビット列を16ビット(No=16)ごとに分割し、増幅乱数ビット列として各乱数テーブル621〜6216の全ての乱数ビット列格納部Roに順次格納する。
【0172】
以上の初期値設定段階が終了すると(ステップS21〜S24)、待機状態となる。そして、平文の暗号化装置(従来技術を参照)への入力をトリガとして、疑似乱数を発生させる処理(ステップS25〜S27)に移行する。
【0173】
ここでは、各選択用乱数ビット列出力手段511〜518ごとにそれぞれ選択用乱数ビット列を出力させ、乱数ビット列増幅部60のバッファ内にそれぞれ記憶させる処理が行われる。具体的には、各選択用乱数ビット列出力手段511〜518から8ビットの選択用乱数ビット列がそれぞれ出力され(ステップS27)、その数が各選択用乱数ビット列出力手段1に対して2個分(β=2)であり(ステップS26でYes)、各選択用乱数ビット列出力手段511〜518にそれぞれ対応する分である場合(ステップS25でYes)には、必要数の選択乱数ビット列が得られたとして次の乱数ビット列増幅段階に移行する。したがって、ここまでの処理により、バッファ内には8ビットを有する16個の選択用乱数ビット列が記憶される。
【0174】
次に、秘密鍵K0に基づき入れ替え用乱数発生手段68により16個の入れ替え用乱数を発生させ(ステップS28)、乱数テーブルの順番入れ替え処理が行われる(ステップS29)。ここでは、16個の乱数が順番入れ替え用のテーブル番号として、乱数テーブル621〜6216に付与される。したがって、1番〜16番までのテーブル番号が順不同で乱数テーブル621〜6216に付与される。そして、その付与されたテーブル番号をもとに各乱数テーブル621〜6216の順番の入れ替えを行う。ここでは、選択用乱数ビット列出力手段511〜51nに対してテーブル番号が1番〜16番に順番に並ぶように降順に入れ替える処理が行われる。これにより、乱数テーブル部61内の増幅乱数ビット列は、その順番が乱数テーブル単位でランダムに入れ替えられる。
【0175】
そして次に、各乱数テーブル621〜6216内から該当する増幅乱数ビット列を選択する処理が行われる(ステップS30〜S32)。例えば、選択用乱数ビット列111から出力されバッファに記憶された1番目の選択用乱数ビット列を引数として乱数テーブル621が参照される(ステップS32)。そして、その引数と等しい値を有するインデックス番号を選択し、そのインデックス番号に対応する乱数ビット列格納部Roに格納された増幅乱数ビット列を選択する。
【0176】
例えば、選択用乱数ビット列出力手段511から出力され乱数テーブル621に対応するものとしてバッファに記憶された選択用乱数ビット列が「00000011」である場合、これを8桁の2進数とみなし、10進数に変換して引数「3」を得る。この引数「3」を用いて乱数テーブル621を参照し、インデックス部Roのインデックス番号が「3」の乱数ビット列格納部Roに格納されている増幅乱数ビット列「010110101101110110」を選択する。
【0177】
そして、乱数テーブル621と乱数テーブル622からそれぞれ増幅乱数ビット列を選択すると(ステップS31でYes)、これら2つの増幅乱数ビット列の排他的論理和演算処理を行い(ステップS33)、16ビットを有する1個の新たな増幅乱数ビット列を生成する。
【0178】
そして、同様の処理を各乱数テーブル623〜6216について行い(ステップS30でYes)、合計で8個の新たな増幅乱数ビット列を生成すると、非線形変換部70に出力して、非線形変換段階に移行する。
【0179】
非線形変換部70では、乱数ビット列増幅部60よりこれらのNoビットを有する8個の増幅乱数ビット列を入力すると、非線形関数f(x)により非線形変換し(ステップS34)、16ビットを有する1個の乱数ビット列を得る。そして、上記ステップS25〜ステップS34の処理を繰り返し実行して必要数の疑似乱数を得る。
【0180】
本実施例については、処理速度の高速化及び乱数性が適切に確保されているかについて実験を行っており、その結果、従来と比較して170倍も処理速度を向上でき、同時に適切な乱数性も確保されているとの結果を得た。以下に、その実験内容及び実験結果について説明する。
【0181】
実験に使用したコンピュータは、CPU:Pentium(登録商標)4(1.7GHz)、メモリ:256MBである。また、各設定値は、上述の実施例と同一のものとする。そして、入れ替え用乱数ビット列発生手段28に用いられる秘密鍵K0は、16進数表記で以下のものに固定した状態として実験を行った。
【0182】
K0 = (f1e2d3c4b5a69788796a5b4c3d2e1f10)16
第13図は、スループットの計測結果を示す表である。表中の従来型とは、8個の線形フィードバックシフトレジスタ53と、非線形変換部70を用いて構成した、第17図に示すような従来の非線形コンバイナ型疑似乱数発生器を示す。
【0183】
本実験結果によれば、第13図に示すように、疑似乱数発生器の平均スループットが、線形フィードバックシフトレジスタ53そのものの平均スループットから、非線形変換部70の平均スループットに向上しており、更に、従来型の約170倍(116.4Mbps/sec÷0.680Mbps/sec=171.176…)になっていることがわかる。したがって、このスループット計測結果から、乱数テーブル62を用いたことが疑似乱数発生器の高速化に有効であることがわかる。
【0184】
本実施例における疑似乱数発生器のスループットは、次式(1)で表される。
【0185】
[数式]
Figure 0004052480
【0186】
T1は、1つの線形フィードバックシフトレジスタ53の平均スループットを示し、T2は、RC4(増幅乱数ビット列発生手段66)の平均スループットを示す。また、T3は、乱数テーブル順番入れ替え手段67による乱数テーブル入れ替え処理の平均スループットを示し、T4は、1つの乱数テーブル62の平均スループットを示す。そして、T5は、非線形変換部0の平均スループットを示す。上記式(1)から乱数テーブル62の計算量が無視できると仮定すると、Noビット/Niビットを小さくするほど非線形変換部0のスループットに近づけることができ、高速化を図ることができる。
【0187】
疑似乱数の暗号強度の検証については、NISTという疑似乱数検定ツールを用いて検定を行った。NISTとは、物理乱数及び疑似乱数生成器からの出力データについて乱数性のテストを行うツールであり、16項目からのテストからなる統計のパッケージである。NISTについては、http://crsc.nist.gov/rug.に詳しく説明されている。第14図は、本検定に使用したNISTのパラメータを示す表である。各種テストを行うことによって出力されたp-valueが0<p-value<1を満たす場合に、そのテスト項目をパスしたとみなしている。本実施例による疑似乱数発生器の疑似乱数を検定したところ、全てのテスト項目をパスしていることが確認できた。第15図は、今回の実験によるNISTの検定結果を示す図である。
【0188】
尚、上述の実施例に示した各設定値は、暗号の安全性を確認するために設定したものであり、これに限定されるものではない。また、本発明は、上述の実施の形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲で種々の変更、組み合わせが可能である。
【0189】
【発明の効果】
以上説明したように、本発明に係る疑似乱数発生方法によれば、出力系列がM系列のビット列をs個ごとにサンプルしたビット列は、そのM系列の1周期分のビット数m(=(2^n)−1)と導出値sが互いに素であるときには、他の構成を有する線形フィードバックシフトレジスタのM系列を構成し、また、バーレイキャンプマッセイアルゴリズムによって、少なくとも2周期分以上のビット数を有するビット列から線形フィードバックシフトレジスタを求めることができることを利用して、線形フィードバックシフトレジスタの構成を初期値に基づいて動的に変更することができ、変更後の線形フィードバックシフトレジスタからM系列のビット列を出力させることができる。
【0190】
したがって、解読者は、疑似乱数発生器から出力される疑似乱数に基づいて再構成前の線形フィードバックシフトレジスタの構成を得ることができず、初期値や秘密鍵も解読することができない。この結果、高い暗号強度を得ることができ、情報の秘匿性を保つことができる。
【0191】
また、他の発明によれば、秘密鍵に基づいて所定のビット数を有する選択用乱数ビット列を出力させ、その選択用乱数ビット列を用いて乱数テーブルを参照することにより、乱数テーブル内の複数の増幅乱数ビット列の中から該当する増幅乱数ビット列を選択し、非線形変換手段によって非線形変換して疑似乱数として出力させるので、小さなビット列を有する選択用乱数ビット列に基づいて、より大きなビット数を有する増幅乱数ビット列を得ることができる。
【0192】
したがって、非線形変換手段に入力される乱数ビット列をより大きなビット数を有するものにすることができる。これにより、従来、ボトルネックとなっていた非線形変換手段よりも上流側の乱数ビット列を出力する部分のスループットを向上させ、非線形変換手段のスループットに近づけることができ、疑似乱数発生器全体のスループットを高速化することができる。
【図面の簡単な説明】
【図1】 本実施の形態における疑似乱数発生器を説明する図である。
【図2】 本実施の形態における線形フィードバックシフトレジスタの初期多項式を例示するものである。
【図3】 本実施の形態における疑似乱数発生器の動作を説明するフローチャートである。
【図4】 疑似乱数発生器の原理を示す説明図である。
【図5】 乱数テーブル部の説明図である。
【図6】 乱数ビット列増幅部内に構成される各構成要素を説明する原理図である。
【図7】 本実施の形態における疑似乱数発生方法を説明するフローチャートである。
【図8】 本実施例における疑似乱数発生器を概略的に示す概念図である。
【図9】 乱数テーブル部を概略的に示す概念図である。
【図10】 本実施例における疑似乱数発生方法を説明するフローチャートである。
【図11】 本実施の形態における線形フィードバックシフトレジスタの初期多項式を例示するものである。
【図12】 線形フィードバックシフトレジスタの再構成処理を説明するフローチャートである。
【図13】 スループットの計測結果を示す表である。
【図14】 本検定に使用したNISTのパラメータを示す表である。
【図15】 NISTの検定結果を示す図である。
【図16】 従来の逐次暗号方式を説明する図である。
【図17】 暗号化装置の疑似乱数発生器を説明する図である。
【図18】 一般的な線形フィードバックシフトレジスタの構成を簡単に説明する図である。
【符号の説明】
1 疑似乱数発生器(第1の実施の形態)
2 疑似乱数発生器(第2の実施の形態)
10 疑似乱数生成部
11 線形フィードバックシフトレジスタ
12 線形フィードバックシフトレジスタ再構成手段
20 非線形変換部
50 乱数ビット列出力部
51 選択用乱数ビット列出力手段
52 初期値設定手段
53 線形フィードバックシフトレジスタ
54 線形フィードバックシフトレジスタ再構成手段
60 乱数ビット列増幅部
61 乱数テーブル部
621〜62αβ 乱数テーブル
63 排他的論理和演算処理手段
64 増幅乱数ビット列選択手段
65 乱数テーブル初期設定手段
66 増幅乱数ビット列発生手段
67 乱数テーブル順番入れ替え手段
68 入れ替え用乱数発生手段
70 非線形変換部

Claims (20)

  1. n個のシフトレジスタを有し、1周期分のビット数が(2^n)−1個となるビット列を出力可能な線形フィードバックシフトレジスタと、
    秘密鍵に基づき前記線形フィードバックシフトレジスタの初期値を設定する初期値設定手段と、
    所定の演算処理により前記初期値から前記線形フィードバックシフトレジスタの1周期分のビット数と互いに素である導出値を求める導出値算出手段と、
    前記線形フィードバックシフトレジスタの1周期分のビット数を2倍以上した値と前記導出値とを乗算して、前記線形フィードバックシフトレジスタにより出力させるビット列のビット数を算出するビット数算出手段と、
    該ビット数算出手段により算出したビット数分のビット列を前記線形フィードバックシフトレジスタから前記初期値をもとに出力させるビット列出力手段と、
    該ビット列出力手段によって前記線形フィードバックシフトレジスタから出力させたビット列から前記導出値の間隔ごとにビット列を取り出して新ビット列を生成する新ビット列生成手段と、
    該新ビット列生成手段により生成した新ビット列を出力可能な構成に前記線形フィードバックシフトレジスタの構成を再構成する線形フィードバックシフトレジスタ再構成手段と、
    該線形フィードバックシフトレジスタ再構成手段による再構成後の線形フィードバックシフトレジスタから前記初期値をもとに疑似乱数を発生させる疑似乱数発生手段を備えた疑似乱数発生器の疑似乱数発生方法であって、
    前記初期値設定手段により前記初期値を設定する第1ステップと、
    該第1ステップで設定した初期値を用いて、前記導出値算出手段により前記導出値を求める第2ステップと、
    該第2ステップで求めた導出値と前記線形フィードバックシフトレジスタの1周期分のビット数を2倍以上した値とを用いて、前記ビット数算出手段により、前記線形フィードバックシフトレジスタから出力させるビット列のビット数を算出する第3ステップと、
    該第3ステップで算出したビット数分のビット列を、前記ビット列出力手段により前記線形フィードバックシフトレジスタから出力させる第4ステップと、
    該第4ステップで出力されたビット列を用いて、前記新ビット列生成手段により、前記新ビット列を生成する第5ステップと、
    前記線形フィードバックシフトレジスタ再構成手段により、前記線形フィードバックシフトレジスタの構成を、前記第5ステップで生成した新ビット列を出力可能な構成に再構成する第6ステップと、
    前記疑似乱数発生手段により、前記第6ステップで再構成した後の線形フィードバックシフトレジスタから前記疑似乱数を発生させる第7ステップと、
    を有することを特徴とする疑似乱数発生方法。
  2. 前記初期値に対してハッシュ関数を施してハッシュ値を求め、該ハッシュ値に最も近似した素数を導出値として採用することを特徴とする請求項1に記載の疑似乱数発生方法。
  3. 前記線形フィードバックシフトレジスタの再構成は、バーレイキャンプマッセイアルゴリズムを用いて行われることを特徴とする請求項1または2に記載の疑似乱数発生方法。
  4. 前記疑似乱数発生器は、前記疑似乱数発生手段により発生させた疑似乱数を非線形変換する非線形変換手段を備え、
    前記第7ステップで発生させた疑似乱数を、該非線形変換手段により、非線形変換する第8ステップを有することを特徴とする請求項1〜3のいずれか1項に記載の疑似乱数発生方法。
  5. n個のシフトレジスタを有し、1周期分のビット数が(2^n)−1個となるビット列を出力可能な線形フィードバックシフトレジスタと、
    秘密鍵に基づき前記線形フィードバックシフトレジスタの初期値を設定する初期値設定手段と、
    所定の演算処理により前記初期値から前記線形フィードバックシフトレジスタの1周期分のビット数と互いに素である導出値を求める導出値算出手段と、
    前記線形フィードバックシフトレジスタの1周期分のビット数を2倍以上した値と前記導出値とを乗算して、前記線形フィードバックシフトレジスタにより出力させるビット列のビット数を算出するビット数算出手段と、
    該ビット数算出手段により算出したビット数分のビット列を前記線形フィードバックシフトレジスタから前記初期値をもとに出力させるビット列出力手段と、
    該ビット列出力手段によって前記線形フィードバックシフトレジスタから出力させたビット列から前記導出値の間隔ごとにビット列を取り出して新ビット列を生成する新ビット列生成手段と、
    該新ビット列生成手段により生成した新ビット列を出力可能な構成に前記線形フィードバックシフトレジスタの構成を再構成する線形フィードバックシフトレジスタ再構成手段と、
    該線形フィードバックシフトレジスタ再構成手段による再構成後の線形フィードバックシフトレジスタから前記初期値をもとに疑似乱数を発生させる疑似乱数発生手段と、を有することを特徴とする疑似乱数発生器。
  6. 前記線形フィードバックシフトレジスタ再構成手段の代わりに、新ビット列を出力可能な構成を有する第2の線形フィードバックシフトレジスタを生成する線形フィードバックシフトレジスタ生成手段を設け、
    前記疑似乱数発生手段は、前記第2の線形フィードバックシフトレジスタによって初期値をもとに疑似乱数を発生させることを特徴とする請求項5に記載の疑似乱数発生器。
  7. 秘密鍵に基づいて所定ビット数を有する選択用乱数ビット列を出力する乱数ビット列出力部と、該乱数ビット列出力部から出力された選択用乱数ビット列に基づいて前記選択用乱数ビット列のビット数よりも大きなビット数を有する増幅乱数ビット列を出力する乱数ビット列増幅部と、該乱数ビット列増幅部から出力された増幅乱数ビット列を非線形変換して疑似乱数を出力する非線形変換部とを有し、
    前記乱数ビット列出力部は、n個のシフトレジスタを有し、1周期分のビット数が(2^n)−1個となるビット列を出力可能な線形フィードバックシフトレジスタと、秘密鍵に基づき前記線形フィードバックシフトレジスタの初期値を設定する初期値設定手段と、所定の演算処理により前記初期値から前記線形フィードバックシフトレジスタの1周期分のビット数と互いに素である導出値を求める導出値算出手段と、前記線形フィードバックシフトレジスタの1周期分のビット数を2倍以上した値と前記導出値とを乗算して、前記線形フィードバックシフトレジスタにより出力させるビット列のビット数を算出するビット数算出手段と、該ビット数算出手段により算出したビット数分のビット列を前記線形フィードバックシフトレジスタから前記初期値をもとに出力させるビット列出力手段と、該ビット列出力手段によって前記線形フィードバックシフトレジスタから出力させたビット列から前記導出値の間隔ごとにビット列を取り出して新ビット列を生成する新ビット列生成手段と、該新ビット列生成手段により生成した新ビット列を出力可能な構成に前記線形フィードバックシフトレジスタの構成を再構成する線形フィードバックシフトレジスタ再構成手段と、該線形フィードバックシフトレジスタ再構成手段によって再構成された再構成後の線形フィードバックシフトレジスタを用いて前記初期値をもとに前記選択用乱数ビット列を出力する選択用乱数ビット列出力手段とを有し、
    前記乱数ビット列増幅部は、前記選択用乱数ビット列よりも大きなビット数を有する増幅乱数ビット列を予め複数格納した乱数テーブルと、前記選択用乱数ビット列出力手段から出力された選択用乱数ビット列を用いて前記乱数テーブルを参照することにより、前記乱数テーブル内の複数の増幅乱数ビット列の中から該当する増幅乱数ビット列を選択可能な増幅乱数ビット列選択手段とを有し、
    非線形変換部は、該増幅乱数ビット列選択手段により選択された増幅乱数ビット列を非線形関数によって非線形変換し疑似乱数として出力する非線形変換手段とを有することを特徴とする疑似乱数発生器。
  8. 前記乱数ビット列増幅部は、
    前記秘密鍵が与えられることにより前記秘密鍵に基づいて前記増幅乱数ビット列を発生させる増幅乱数ビット列発生手段と、
    該増幅乱数ビット列発生手段により発生させた増幅乱数ビット列を前記乱数テーブルに格納して、前記乱数テーブルの初期設定を行う乱数テーブル初期設定手段を有することを特徴とする請求項7に記載の疑似乱数発生器。
  9. 前記乱数ビット列出力部は、前記選択用乱数ビット列出力手段複数設けられ、
    前記乱数ビット列増幅部は、前記乱数テーブル前記各選択用乱数ビット列出力手段にそれぞれ対応するように設けられ、前記増幅乱数ビット列選択手段前記各選択用乱数ビット列出力手段から各々出力された前記各選択用乱数ビット列を用いて前記各選択用乱数ビット列出力手段ごとに対応する前記乱数テーブルをそれぞれ参照し、前記各乱数テーブル内からそれぞれ該当する増幅乱数ビット列を選択し、
    前記非線形変換部は、前記非線形変換手段前記各増幅乱数ビット列選択手段によって前記各乱数テーブルから選択された前記各増幅乱数ビット列を用いて非線形関数により非線形変換し疑似乱数として出力することを特徴とする請求項7または8に記載の疑似乱数発生器。
  10. 前記乱数ビット列増幅部は、前記各選択用乱数ビット列出力手段ごとにそれぞれ複数の乱数テーブルを設け、
    前記増幅乱数ビット列選択手段により前記各乱数テーブル内から選択された各増幅乱数ビット列を前記乱数ビット列出力部の前記選択用乱数ビット列出力手段ごとに排他的論理和演算して前記非線形変換部の前記非線形変換手段に出力する排他的論理和演算処理手段を有することを特徴とする請求項9に記載の疑似乱数発生器。
  11. 前記乱数ビット列増幅部は、所定のタイミングで前記各乱数テーブル同士の入れ替えを行う乱数テーブル入れ替え手段を有することを特徴とする請求項9または10に記載の疑似乱数発生器。
  12. 前記乱数テーブル入れ替え手段は、
    前記各乱数テーブルを参照するために必要な選択用乱数ビット列を前記乱数ビット列出力部の前記選択用乱数ビット列出力手段が出力するごとに、前記各乱数テーブル同士の入れ替えを行うことを特徴とする請求項11に記載の疑似乱数発生器。
  13. 前記乱数テーブル入れ替え手段は、
    前記各乱数テーブルの個数と等しい個数の乱数テーブル入れ替え用乱数を発生させ、
    該乱数テーブル入れ替え用乱数を前記乱数テーブルのテーブル番号として各乱数テーブルに付与し、前記テーブル番号をもとに予め設定された規則に従って前記乱数テーブルの順番を入れ替えることを特徴とする請求項11または12に記載の疑似乱数発生器。
  14. コンピュータを、
    秘密鍵に基づいて所定のビット数を有する選択用乱数ビット列を出力する乱数ビット列出力部と、該乱数ビット列出力部から出力された選択用乱数ビット列に基づいて前記選択用乱数ビット列のビット数よりも大きなビット数を有する増幅乱数ビット列を出力する乱数ビット列増幅部と、該乱数ビット列増幅部から出力された増幅乱数ビット列を非線形変換して疑似乱数を出力する非線形変換部として機能させるための疑似乱数発生プログラムであって、
    前記乱数ビット列出力部は、n個のシフトレジスタを有し、1周期分のビット数が(2^n)−1個となるビット列を出力可能な線形フィードバックシフトレジスタと、秘密鍵に基づき前記線形フィードバックシフトレジスタの初期値を設定する初期値設定手段と、所定の演算処理により前記初期値から前記線形フィードバックシフトレジスタの1周期分 のビット数と互いに素である導出値を求める導出値算出手段と、前記線形フィードバックシフトレジスタの1周期分のビット数を2倍以上した値と前記導出値とを乗算して、前記線形フィードバックシフトレジスタにより出力させるビット列のビット数を算出するビット数算出手段と、該ビット数算出手段により算出したビット数分のビット列を前記線形フィードバックシフトレジスタから前記初期値をもとに出力させるビット列出力手段と、該ビット列出力手段によって前記線形フィードバックシフトレジスタから出力させたビット列から前記導出値の間隔ごとにビット列を取り出して新ビット列を生成する新ビット列生成手段と、該新ビット列生成手段により生成した新ビット列を出力可能な構成に前記線形フィードバックシフトレジスタの構成を再構成する線形フィードバックシフトレジスタ再構成手段と、該線形フィードバックシフトレジスタ再構成手段によって再構成された再構成後の線形フィードバックシフトレジスタを用いて前記選択用乱数ビット列を出力する選択用乱数ビット列出力手段とを有し、
    前記乱数ビット列増幅部は、前記選択用乱数ビット列よりも大きなビット数を有する増幅乱数ビット列を予め複数格納した乱数テーブルと、前記選択用乱数ビット列出力手段から出力された選択用乱数ビット列を用いて前記乱数テーブルを参照することにより、前記乱数テーブル内の複数の増幅乱数ビット列の中から該当する増幅乱数ビット列を選択可能な増幅乱数ビット列選択手段とを有し、
    前記非線形変換部は、前記増幅乱数ビット列選択手段により選択された増幅乱数ビット列を非線形関数によって非線形変換し疑似乱数として出力する非線形変換手段を有することを特徴とする疑似乱数発生プログラム。
  15. 前記乱数ビット列増幅部は、前記秘密鍵が与えられることにより前記秘密鍵に基づいて前記増幅乱数ビット列を発生させ、前記乱数テーブルに格納して、前記乱数テーブルの初期設定を行う乱数テーブル初期設定手段としてコンピュータを機能させることを特徴とする請求項14に記載の疑似乱数発生プログラム。
  16. 前記乱数ビット列出力部は、前記選択用乱数ビット列出力手段複数設けられ、
    前記乱数ビット列増幅部は、前記乱数テーブル前記各選択用乱数ビット列出力手段にそれぞれ対応するように設けられ、
    前記増幅乱数ビット列選択手段前記各選択用乱数ビット列出力手段から各々出力された前記各選択用乱数ビット列を用いて前記各選択用乱数ビット列出力手段ごとに対応する前記乱数テーブルをそれぞれ参照し、前記各乱数テーブル内からそれぞれ該当する増幅乱数ビット列を選択し、
    前記非線形変換部は、前記非線形変換手段前記各増幅乱数ビット列選択手段によって前記各乱数テーブルから選択された前記各増幅乱数ビット列を用いて非線形関数により非線形変換し疑似乱数として出力することを特徴とする請求項14または15に記載の疑似乱数発生プログラム。
  17. 前記乱数ビット列増幅部は、前記各選択用乱数ビット列出力手段ごとにそれぞれ複数の乱数テーブルを設け、
    前記増幅乱数ビット列選択手段により前記各乱数テーブル内から選択された各増幅乱数ビット列を前記乱数ビット列出力部の前記選択用乱数ビット列出力手段ごとに排他的論理和演算して前記非線形変換部の前記非線形変換手段に出力する排他的論理和演算処理手段としてコンピュータを機能させることを特徴とする請求項16に記載の疑似乱数発生プログラム。
  18. 前記乱数ビット列増幅部は、所定のタイミングで前記各乱数テーブル同士の入れ替えを行う乱数テーブル入れ替え手段としてコンピュータを機能させることを特徴とする請求項16または17に記載の疑似乱数発生プログラム。
  19. 前記乱数テーブル入れ替え手段は、
    前記各乱数テーブルを参照するために必要な選択用乱数ビット列を前記乱数ビット列出力部の前記選択用乱数ビット列出力手段が出力するごとに、前記各乱数テーブル同士の入れ替えを行うことを特徴とする請求項18に記載の疑似乱数発生プログラム。
  20. 前記乱数テーブル入れ替え手段は、
    前記各乱数テーブルの個数と等しい個数の乱数テーブル入れ替え用乱数を発生させ、
    該乱数テーブル入れ替え用乱数を前記乱数テーブルのテーブル番号として各乱数テーブルに付与し、前記テーブル番号をもとに予め設定された規則に従って前記乱数テーブルの順番を入れ替えることを特徴とする請求項18または19に記載の疑似乱数発生プログラム。
JP2004541207A 2002-10-07 2003-07-10 疑似乱数発生方法、疑似乱数発生器、及び疑似乱数発生プログラム Expired - Fee Related JP4052480B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2002294184 2002-10-07
JP2002294184 2002-10-07
PCT/JP2003/008794 WO2004032098A1 (ja) 2002-10-07 2003-07-10 疑似乱数発生方法及び疑似乱数発生器

Publications (2)

Publication Number Publication Date
JPWO2004032098A1 JPWO2004032098A1 (ja) 2006-02-02
JP4052480B2 true JP4052480B2 (ja) 2008-02-27

Family

ID=32064030

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004541207A Expired - Fee Related JP4052480B2 (ja) 2002-10-07 2003-07-10 疑似乱数発生方法、疑似乱数発生器、及び疑似乱数発生プログラム

Country Status (5)

Country Link
US (1) US20060039558A1 (ja)
JP (1) JP4052480B2 (ja)
CN (1) CN1714377A (ja)
AU (1) AU2003252595A1 (ja)
WO (1) WO2004032098A1 (ja)

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100454236C (zh) * 2004-05-13 2009-01-21 华为技术有限公司 随机数发生装置和软件测试的***及方法
KR20060042791A (ko) * 2004-11-10 2006-05-15 한국전자통신연구원 키 스트림 생성 방법 및 장치
US8443020B2 (en) * 2005-09-09 2013-05-14 Mitsubishi Electric Corporation Pseudo random number generator
WO2008010441A1 (fr) * 2006-07-21 2008-01-24 Nec Corporation dispositif de cryptage, programme et procédé
KR100766081B1 (ko) 2006-08-30 2007-10-12 삼성전자주식회사 영상신호처리장치 및 그의 영상신호처리방법
KR101070628B1 (ko) * 2007-05-21 2011-10-07 삼성전자주식회사 영상처리장치 및 그 제어방법
KR100931507B1 (ko) * 2007-12-11 2009-12-11 한국전자통신연구원 Rfid 시스템에서 대칭키 암호화 기반 통신 데이터 보호방법과 이를 수행하기 위한 리더 및 태그
JP4986926B2 (ja) * 2008-05-09 2012-07-25 三菱電機株式会社 暗号化通信システム
JP5188414B2 (ja) * 2009-02-09 2013-04-24 三菱電機株式会社 情報処理装置及び情報処理方法及びプログラム
KR101685173B1 (ko) * 2009-07-13 2016-12-12 주식회사 팬택 무선통신 시스템에서의 시퀀스 생성 방법 및 그 장치
US8949493B1 (en) 2010-07-30 2015-02-03 Altera Corporation Configurable multi-lane scrambler for flexible protocol support
CN102752110B (zh) * 2011-04-19 2015-04-15 中国银行股份有限公司 一种动态密码生成方法及***
JP5882602B2 (ja) * 2011-05-20 2016-03-09 キヤノン株式会社 画像形成装置、画像形成装置の制御方法、及びプログラム
GB2491896A (en) * 2011-06-17 2012-12-19 Univ Bruxelles Secret key generation
CN102314332B (zh) * 2011-07-27 2014-04-09 中国科学院计算机网络信息中心 伪随机数生成装置和方法
US8767954B2 (en) * 2011-12-01 2014-07-01 Colloid, Llc Methods and systems for deriving a cryptographic framework
US20140112469A1 (en) * 2012-10-22 2014-04-24 John M. Layne Novel encryption processes based upon irrational numbers and devices to accomplish the same
US9201629B2 (en) 2013-03-14 2015-12-01 International Business Machines Corporation Instruction for performing a pseudorandom number seed operation
US8873750B2 (en) * 2013-03-14 2014-10-28 International Business Machines Corporation Instruction for performing a pseudorandom number generate operation
AT515097B1 (de) * 2014-03-31 2015-06-15 Hödl Josef Verschlüsselungsverfahren und Pseudo-Zufallszahlengenerator
DE102015100760A1 (de) * 2015-01-20 2016-07-21 Infineon Technologies Ag Generieren von Zufallszahlen
JP6321723B2 (ja) * 2015-06-04 2018-05-09 株式会社クァンタリオン 放射性同位元素の自然崩壊を利用した唯一性を実現する装置
WO2016194382A1 (ja) * 2015-06-04 2016-12-08 典平 露崎 放射性同位元素の自然崩壊を利用した唯一性を実現する装置
CA3026281A1 (en) * 2016-06-06 2017-12-14 Agilepq, Inc. Data conversion systems and methods
US10680810B2 (en) * 2016-10-26 2020-06-09 Nxp B.V. Method of generating an elliptic curve cryptographic key pair
US11055065B2 (en) * 2018-04-18 2021-07-06 Ememory Technology Inc. PUF-based true random number generation system
CN110768785B (zh) * 2019-10-22 2023-05-02 宜人恒业科技发展(北京)有限公司 一种编、解码方法、相关装置及计算机设备
CN113504894B (zh) * 2021-09-09 2021-12-17 华控清交信息科技(北京)有限公司 一种随机数产生器、生成伪随机数的方法和一种芯片
CN115714644B (zh) * 2022-10-31 2023-08-15 北京海泰方圆科技股份有限公司 一种随机数生成方法及装置

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS61246787A (ja) * 1985-03-27 1986-11-04 富士通株式会社 乱数混合処理方式
JPS62144243A (ja) * 1985-12-18 1987-06-27 Nec Corp 乱数発生器
JPH04115616A (ja) * 1990-08-31 1992-04-16 Toshiba Corp ランダム符号発生装置
JP2845308B2 (ja) * 1993-04-02 1999-01-13 株式会社アドバンテスト 並列疑似ランダムパターン発生器
CA2128115C (en) * 1993-07-20 1999-08-10 Keiichi Iwamura Encryption apparatus, communication system using the same and method therefor
JPH0736672A (ja) * 1993-07-20 1995-02-07 Canon Inc 乱数発生器、及びそれを用いた通信システム及びその方法
JP2541480B2 (ja) * 1993-10-06 1996-10-09 日本電気株式会社 擬似乱数発生装置
JPH09179726A (ja) * 1995-12-25 1997-07-11 Nec Corp 擬似乱数発生装置
US5910907A (en) * 1997-02-20 1999-06-08 C.K. Chen Shift register based pseudorandom number generator
JPH10240500A (ja) * 1997-02-28 1998-09-11 Toshiba Corp 乱数生成装置及び方法、暗号化装置及び方法、復号装置及び方法、並びにストリーム暗号システム
DE60125139D1 (de) * 2001-01-16 2007-01-25 Ericsson Telefon Ab L M Zufallszahlengenerator basierend auf Komprimierung
FR2832231B3 (fr) * 2001-11-15 2003-12-19 Jean Luc Stehle Procede pour generer des nombres aleatoires

Also Published As

Publication number Publication date
WO2004032098A1 (ja) 2004-04-15
US20060039558A1 (en) 2006-02-23
JPWO2004032098A1 (ja) 2006-02-02
CN1714377A (zh) 2005-12-28
AU2003252595A1 (en) 2004-04-23

Similar Documents

Publication Publication Date Title
JP4052480B2 (ja) 疑似乱数発生方法、疑似乱数発生器、及び疑似乱数発生プログラム
US5365588A (en) High speed encryption system and method
JP3782351B2 (ja) 可変長鍵暗号システム
CA2723405C (en) Cryptographic system including a random number generator using finite field arithmetics
KR101246490B1 (ko) 갈루아 폐체 암호 시스템
JP3724399B2 (ja) 疑似乱数生成装置またはそれを用いた暗号復号処理装置
JP4608319B2 (ja) 複数鍵を用いたストリーム暗号の生成方法
JP2005215688A (ja) S−box演算を用いるハードウェア暗号化/復号化装置及び、その方法
El Hennawy et al. LEA: link encryption algorithm proposed stream cipher algorithm
JPH10240500A (ja) 乱数生成装置及び方法、暗号化装置及び方法、復号装置及び方法、並びにストリーム暗号システム
Ghazi et al. Robust and efficient dynamic stream cipher cryptosystem
RU2141729C1 (ru) Способ криптографического преобразования блоков двоичных данных
KR101131167B1 (ko) 스트림 암호를 위한 키수열 발생 방법 및 장치. 블록 암호를 위한 S-box 및 상기 S-box에서의 치환 방법
JP4857230B2 (ja) 疑似乱数生成装置及びそれを用いた暗号化処理装置
Mihalkovich et al. MPF based symmetric cipher performance comparison to AES and TDES
JPH0736672A (ja) 乱数発生器、及びそれを用いた通信システム及びその方法
KR101076747B1 (ko) 스트림 모듈의 계층적 트리 구조를 통한 무작위 접근이 가능한 암호화/복호화 방법 및 장치
Yerukala et al. LFL-A New Stream Cipher for Secure Communications
Yerukala et al. Alternating step generator using FCSR and LFSRs: A new stream cipher
JPH0736673A (ja) 乱数発生器、及びそれを用いた通信システム及びその方法
Sonawane et al. Synthesis and simulation of FPGA based hardware design of RC4 stream cipher
Mukherjee et al. Introduction and Preliminaries
RU2291578C1 (ru) Способ поточного шифрования данных
Abbaas et al. Hybrid Efficient Stream Cipher KeyGenerator Based on LFSR's and Chaotic Map
JPH09116533A (ja) 暗号システム

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070529

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070727

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20071108

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20071128

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20101214

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111214

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121214

Year of fee payment: 5

LAPS Cancellation because of no payment of annual fees