JP4709685B2 - 擬似乱数生成装置、擬似乱数生成方法および擬似乱数生成プログラム並びに暗号化装置および復号化装置 - Google Patents

擬似乱数生成装置、擬似乱数生成方法および擬似乱数生成プログラム並びに暗号化装置および復号化装置 Download PDF

Info

Publication number
JP4709685B2
JP4709685B2 JP2006116557A JP2006116557A JP4709685B2 JP 4709685 B2 JP4709685 B2 JP 4709685B2 JP 2006116557 A JP2006116557 A JP 2006116557A JP 2006116557 A JP2006116557 A JP 2006116557A JP 4709685 B2 JP4709685 B2 JP 4709685B2
Authority
JP
Japan
Prior art keywords
random number
address
pseudo
remainder
given
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.)
Active
Application number
JP2006116557A
Other languages
English (en)
Other versions
JP2007287079A (ja
Inventor
国夫 山岸
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu FIP Corp
Original Assignee
Fujitsu FIP Corp
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 Fujitsu FIP Corp filed Critical Fujitsu FIP Corp
Priority to JP2006116557A priority Critical patent/JP4709685B2/ja
Publication of JP2007287079A publication Critical patent/JP2007287079A/ja
Application granted granted Critical
Publication of JP4709685B2 publication Critical patent/JP4709685B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Tests Of Electronic Circuits (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)

Description

本願発明は、擬似乱数生成装置、擬似乱数生成方法および擬似乱数生成プログラム並びに暗号化装置および復号化装置に係り、特に複数の記憶要素から構成されてすべての種類の乱数パターンが記憶される配列を用いて、周期の短い1次乱数から周期の長い2次乱数を生成することができる擬似乱数生成装置、擬似乱数生成方法および擬似乱数生成プログラム並びに当該擬似乱数生成装置を具備する暗号化装置および復号化装置に関する。
ここで、本願明細書において使用する用語について、以下のように定義を行う。乱数パターンとは、所定のビット数を有するビット列を単位として生成される乱数のビットパターンを意味するものとする。乱数値とは、乱数を十進数で表現したものをいう。配列とは、それぞれが固有のアドレスを有する複数の記憶要素の連続的なまたは断続的な集合体をいう。配列は、具体的にはレジスタやRAM上の所定の記憶領域等として与えられる。
配列の撹拌とは、配列に記憶された数値の組合せを変えることなく、記憶要素に記憶される数値を入れ替えることをいう。例えば、記憶要素A,BおよびCにそれぞれ数値a,bおよびcが記憶されているものとする。記憶要素Aおよび記憶要素Bを対象として配列を撹拌する際には、記憶要素Aに数値bを記憶させ、記憶要素Bに数値aを記憶させる。また、記憶要素A,BおよびCを対象として配列を撹拌する際には、記憶要素Aに数値cを記憶させ、記憶要素Bに数値aを記憶させ、記憶要素Cに数値bを記憶させる。
演算値とは、与えられた1または複数の数値を基にして実行する任意の演算処理の結果として得られる数値を意味するものとする。演算処理の例としては、関数を構成する変数に与えられた数値を代入して関数値を算出する演算処理、所定の規則に基づいて与えられた数値を表すビット列を分割することで1または複数の数値を生成する演算処理、所定の規則に基づいて与えられた複数の数値をそれぞれ表すビット列を結合することで数値を生成する演算処理、FIFO等のバッファに与えられた数値を入力して異なる数値を出力する演算処理、アドレス対応テーブル等のテーブルを参照して与えられた数値に対応する数値を出力する演算処理あるいはこれらの演算処理を任意に組み合わせて実現される演算処理等が挙げられる。
本願発明においては、配列は、擬似乱数生成装置から出力される乱数の乱数パターンの種類数と同数の記憶要素を有する。記憶要素は、乱数の生成単位となるビット数と同数またはそれ以上の記憶容量を有する。配列の撹拌は、少なくとも2つの記憶要素を対象として実行される。配列の撹拌の対象となる2つの記憶要素を特定するための2つのアドレスをそれぞれ第1のアドレスおよび第2のアドレスとする。また、2次乱数を取り出す記憶要素を特定するためのアドレスを第3のアドレスとする。
現在、使用されている暗号方式は、大きく分けて公開鍵暗号方式と共通鍵暗号方式とに類別される。公開鍵暗号方式では、暗号化に公開鍵または秘密鍵のいずれか一方の鍵が使用され、復号化に他方の鍵が使用される。共通鍵暗号方式では、暗号化および復号化に同一の鍵(共通鍵)を使用する。また、共通鍵暗号方式は、大きく分けてブロック暗号方式とストリーム暗号方式とに類別される。ブロック暗号方式では、平文を所定の大きさのブロックに分割して、ブロック単位に暗号化を実行する。暗号文についても、ブロック毎に当該ブロックを暗号化するのに使用されたキーと同一のキーを使用して、ブロック単位で暗号文を復号化する。ストリーム暗号方式では、暗号化装置側において、例えば共通鍵により与えられる所定の初期状態から逐次的に生成される擬似乱数(キーストリーム)を鍵として平文との間でビット単位にまたは所定数のビット列単位に論理演算(排他的論理和が好適である)を実行して、平文を暗号化する。復号化装置側においても、同一のキーストリームを用いて、暗号文との間でビット単位または所定数のビット列単位に論理演算を実行して、暗号文を復号化する。
共通鍵暗号方式においては、セッション毎に変更されるセッションキーとして、またはキーストリームとして、多くの場合擬似乱数が使用される。特に、ストリーム暗号方式では、擬似乱数として与えられるキーストリームにより平文をそのまま暗号文に暗号化するので、擬似乱数の乱数性が暗号強度に強い影響を及ぼす。擬似乱数を発生させる擬似乱数生成器としては、線形合同生成器や線形フィードバックシフトレジスタ(LFSR:Linear Feedback Shift Register)等が知られている。
線形合同生成器では、以下のような数式に基づき擬似乱数を生成する。
=(aXn−1+b) mod m (1)
初期値として与えられるXは、例えば送信側および受信側で共有される共通鍵により与えられる。全状態数がmであるので、最大周期(最長周期)はmとなる。この擬似乱数生成方法は、生成アルゴリズムが単純であり、高速に乱数を生成可能であるとともに、統計的にもよい振る舞いを示すことが知られている。
図7は、線形フィードバックシフトレジスタの構成の一例を示す図である。図中のC〜Cの値は、予め0または1に定められている。n段のシフトレジスタの各段について、C=1である段の記憶要素に記憶された数値Si−kの排他的論理和が出力Sとなる。シフト動作において、この出力Sがフィードバックされる。この線形フィードバックシフトレジスタの初期状態は、例えば送信側および受信側で共有される共通鍵により与えられる。すべての段に0が記憶された場合には、永続的に0を出力するのみであるので、これは乱数としては使用できない。したがって、線形フィードバックシフトレジスタの最大周期は、2−1となる。この最大周期をとる乱数系列は、M系列と呼ばれている。上記のような線形合同生成器や線形フィードバックシフトレジスタ等の擬似乱数生成器に関しては、例えば、「暗号理論入門」(共立出版株式会社、岡本栄司著、1993年発行)に記載されている。
「暗号理論入門」(共立出版株式会社、岡本栄司著、1993年発行)
上記のような擬似乱数生成器は、乱数生成のアルゴリズムが比較的単純であるとともに周期の比較的短い乱数系列を出力するので、そのまま平文の暗号化に使用すると、暗号文を解読される危険性があるという課題があった。また、複数の線形フィードバックシフトレジスタの出力を非線形コンバイナで結合する手法等が考案されているが、充分な周期を得るためには装置規模が大きくなるという課題があった。
本願発明は、上記課題を解決するために、比較的小さな装置規模で周期の長い乱数系列を生成することができる擬似乱数生成装置、擬似乱数生成方法および擬似乱数生成プログラム並びに当該擬似乱数生成装置を具備する暗号化装置および復号化装置を提供することを目的とする。
乱数は、「0」または「1」の値をとるバイナリビットの集合から成るビット列として与えられる。乱数生成の単位として、例えば2ビットを考える。2ビットとして得られる乱数の乱数パターンは、「00」,「01」,「10」,「11」の4種類である。4つの乱数値から得られる順列は、4!で与えられ、24パターンとなる。一方、線形合同生成器や線形フィードバックシフトレジスタを用いた乱数生成においては、ある乱数値xが出力された次には乱数値yが出力され、乱数値xが出力された次に乱数値y以外の乱数値が出力されることはない。すなわち、線形合同生成器や線形フィードバックシフトレジスタから出力される乱数系列は循環特性を有している。このような場合に、2ビットを単位として生成される乱数から成る最大周期の乱数系列は8ビット(2ビット*4パターン)となる。
次に、乱数生成の単位として、コンピュータで扱い易い1バイト(8ビット)を考える。8ビットとして得られる乱数の乱数パターンは、2=256種類である。256個の乱数値から得られる順列は、256!で与えられ、約8.6*10506となり、概ね無限のパターンを得ることができる。一方、線形合同生成器や線形フィードバックシフトレジスタを用いた乱数生成においては、生成される乱数系列が循環特性を有するために、8ビットを単位として生成される乱数から成る最大周期の乱数系列は2048ビット(8ビット*256パターン)となる。
上述したように、線形合同生成器や線形フィードバックシフトレジスタから出力されて、循環特性を有する乱数系列の最大周期は大きなものではない。本願発明では、所定のビット数を単位として生成される乱数について、それぞれの乱数パターンに対応する異なる乱数値の集合を基礎として順列により与えられる数値系列が非常に大きなパターン数を有していることに着目する。そこで、乱数パターンの種類数と同数の記憶要素を有する配列を用意する。この配列内のそれぞれの記憶要素に異なる乱数パターンを記憶させることで、配列内で順列としてすべてのパターンの数値系列を表現することができる。
本願発明では、原則的に、所定の規則に基づいて選定される第1のアドレスおよび第2のアドレスにより特定される2つの記憶要素を対象として配列を撹拌する。また、所定の規則に基づいて選定される第3のアドレスにより特定される記憶要素に記憶される数値を擬似乱数生成装置から乱数として出力する。上述したように、異なる乱数値の集合を基礎として順列により与えられる数値系列は概ね無限のパターンを有するから、配列から周期の長い乱数系列を得られる可能性が大きい。本願発明は、第1のアドレス、第2のアドレスおよび第3のアドレスのなかの少なくとも1つのアドレスを、周期の短い第1の乱数または第1の乱数に基づく演算値として与えることで、周期の長い第2の乱数を生成することを意図するものである。
上記の技術的課題を解決するために、本願発明に係る擬似乱数生成装置は、第1の乱数を生成する擬似乱数生成手段と、第2の乱数の乱数パターンの種類数と同数の記憶要素から構成されて、それぞれの記憶要素には異なる乱数パターンが記憶される配列と、少なくとも選定された第1のアドレスおよび第2のアドレスにより特定される2以上の記憶要素を対象として配列を撹拌するとともに、選定された第3のアドレスにより特定される記憶要素に記憶される数値を第2の乱数として出力する制御手段とを有して構成され、第1のアドレス、第2のアドレスおよび第3のアドレスのなかの少なくとも1つのアドレスが、第1の乱数または第1の乱数に基づく演算値として与えられるようにしたものである。
また、本願発明に係る擬似乱数生成装置は、制御手段が、第1の乱数の生成回数を第2の乱数の乱数パターンの種類数で除した剰余を算出し、第1のアドレスまたは第2のアドレスの少なくとも一方のアドレスが、前記剰余または前記剰余に基づく演算値として与えられるようにしたものである。
また、本願発明に係る擬似乱数生成装置は、第1のアドレスおよび第3のアドレスが、第1の乱数または第1の乱数に基づく演算値として与えられ、第2のアドレスが前記剰余または前記剰余に基づく演算値として与えられるようにしたものである。
また、本願発明に係る擬似乱数生成装置は、第1のアドレスおよび第3のアドレスが、前記剰余または前記剰余に基づく演算値として与えられ、第2のアドレスが第1の乱数または第1の乱数に基づく演算値として与えられるようにしたものである。
また、本願発明に係る擬似乱数生成装置は、擬似乱数生成手段が、線形合同生成器または線形フィードバックシフトレジスタとして与えられるようにしたものである。
また、本願発明に係る擬似乱数生成装置は、第1の乱数を生成する第1の擬似乱数生成手段と、第3の乱数を生成する第2の擬似乱数生成手段と、第2の乱数の乱数パターンの種類数と同数の記憶要素から構成されて、それぞれの記憶要素には異なる乱数パターンが記憶される配列と、少なくとも選定された第1のアドレスおよび第2のアドレスにより特定される2以上の記憶要素を対象として配列を撹拌するとともに、選定された第3のアドレスにより特定される記憶要素に記憶される数値を第2の乱数として出力する制御手段とを有して構成され、第1のアドレス、第2のアドレスおよび第3のアドレスのなかの少なくとも1つのアドレスが、第1の乱数または第1の乱数に基づく演算値として与えられ、第1のアドレスまたは第2のアドレスの少なくとも一方のアドレスが、第3の乱数または第3の乱数に基づく演算値として与えられるようにしたものである。
また、本願発明に係る擬似乱数生成装置は、制御手段が、第1の乱数の生成回数を第2の乱数の乱数パターンの種類数で除した剰余を算出し、第1のアドレスが第3の乱数または第3の乱数に基づく演算値として与えられ、第2のアドレスが前記剰余または前記剰余に基づく演算値として与えられ、第3のアドレスが第1の乱数または第1の乱数に基づく演算値として与えられるようにしたものである。
また、本願発明に係る暗号化装置は、本願発明に係る擬似乱数生成装置を有して構成され、擬似乱数生成装置から出力される乱数系列と、平文を構成するデータ系列とに対して、ビット毎または所定数のビット列毎に、所定の論理演算を実行して、暗号文を構成するデータ系列を生成するようにしたものである。
また、本願発明に係る擬似乱数生成方法は、第1の乱数を生成する工程と、第1の乱数の生成回数を第2の乱数の乱数パターンの種類数で除した剰余を算出する工程と、第1のアドレスおよび第2のアドレスを選定する工程と、第2の乱数の乱数パターンの種類数と同数の記憶要素から構成されて、それぞれの記憶要素には異なる乱数パターンが記憶される配列において、第1のアドレスにより特定される記憶要素に記憶される数値と第2のアドレスにより特定される記憶要素に記憶される数値とを交換する工程と、第3のアドレスを選定する工程と、配列において第3のアドレスにより特定される記憶要素に記憶される数値を第2の乱数として出力する工程とを有し、第1のアドレス、第2のアドレスおよび第3のアドレスのなかの少なくとも1つのアドレスが、第1の乱数または第1の乱数の演算値として与えられ、第1のアドレスまたは第2のアドレスの少なくとも一方のアドレスが、前記剰余または前記剰余の演算値として与えられるようにしたものである。
また、本願発明に係る擬似乱数生成プログラムは、第1の乱数を生成するステップと、第1の乱数の生成回数を第2の乱数の乱数パターンの種類数で除した剰余を算出するステップと、 第1のアドレスおよび第2のアドレスを、それぞれ第1の乱数または第1の乱数に基づく演算値あるいは前記剰余または前記剰余に基づく演算値として与えるステップと、第2の乱数の乱数パターンの種類数と同数の記憶要素から構成されて、それぞれの記憶要素には異なる乱数パターンが記憶される配列において、第1のアドレスにより特定される記憶要素に記憶される数値と第2のアドレスにより特定される記憶要素に記憶される数値とを交換するステップと、第3のアドレスを、第1の乱数または第1の乱数に基づく演算値あるいは前記剰余または前記剰余に基づく演算値として与えるステップと、配列において第3のアドレスにより特定される記憶要素に記憶される数値を第2の乱数として出力するステップとを有するようにしたものである。
本願発明によれば、第1の乱数を生成する擬似乱数生成手段と、第2の乱数の乱数パターンの種類数と同数の記憶要素から構成されて、それぞれの記憶要素には異なる乱数パターンが記憶される配列と、少なくとも選定された第1のアドレスおよび第2のアドレスにより特定される2以上の記憶要素を対象として配列を撹拌するとともに、選定された第3のアドレスにより特定される記憶要素に記憶される数値を第2の乱数として出力する制御手段とを有し、第1のアドレス、第2のアドレスおよび第3のアドレスのなかの少なくとも1つのアドレスが、第1の乱数または第1の乱数に基づく演算値として与えられるように構成したので、撹拌することにより順列として膨大なパターン数の数値系列を表現するのが可能である配列内の任意の記憶要素から第2の乱数を取り出すことにより、周期の長い乱数系列を得ることができるという効果を奏する。
本願発明によれば、第1の乱数の生成回数を第2の乱数の乱数パターンの種類数で除した剰余を算出し、第1のアドレスまたは第2のアドレスの少なくとも一方のアドレスが、前記剰余または前記剰余に基づく演算値として与えられるように構成したので、配列内のすべての記憶要素のアドレスを均等に選定することが保証されて、配列を全範囲にわたって偏りなく撹拌することが可能となるから、周期の長い乱数系列を得られる可能性を大きくすることができるという効果を奏する。また、カウンタ等の簡単な演算回路を使用しての単純な演算により前記剰余を算出することが可能であるから、擬似乱数生成装置の回路構成を簡略化することができるという効果を奏する。
本願発明によれば、擬似乱数生成手段が線形合同生成器または線形フィードバックシフトレジスタとして与えられるように構成したので、比較的簡単な演算回路を用いて第1の乱数を生成することが可能であるから、擬似乱数生成装置の回路構成を簡略化することができるという効果を奏する。
本願発明によれば、第1の乱数を生成する第1の擬似乱数生成手段と別個に設けられた第2の擬似乱数生成手段を用いて第3の乱数を生成し、第3の乱数を使用して配列を撹拌するように構成したので、第1の乱数の周期の影響を低減して配列の記憶内容を変化させることが可能となるから、撹拌することにより順列として膨大なパターン数の数値系列を表現できる配列をより有効に利用することができて、周期の長い乱数系列を得ることができるという効果を奏する。
最初に、本願発明に係る擬似乱数生成装置の動作原理を簡単なモデルを用いて説明する。図1は、本願発明に係る擬似乱数生成装置の動作原理を説明するためのモデルの構成を示す図である。図1において、1は周期の短い1次乱数R1を生成する擬似乱数生成器、2は0〜9のアドレスを有する10個の記憶要素から構成されるレジスタ、3はレジスタ2を撹拌するとともにレジスタ2内のいずれかの記憶要素に記憶された数値を2次乱数R2として出力する制御部である。
擬似乱数生成器1は、0〜9の数値範囲の数値を乱数として出力する。レジスタ2の10個の記憶要素には、0〜9の数値が1つずつ記憶される。すなわち、レジスタ2の異なる記憶要素には、同一の数値が記憶されることはない。これにより、レジスタ2内の任意の記憶要素に記憶された数値を2次乱数として取り出せば、2次乱数は0〜9の数値範囲のいずれかの数値をとることになる。
制御部3は、1次乱数R1の生成回数を計数して、2次乱数の生成順番を示す順序番号Iを設定する。制御部3は、式(2)に基づいて、循環順序番号Imを算出する。
Im=I mod 10 (2)
すなわち、循環順序番号Imは、順序番号Iを10で除した剰余として与えられ、周期10で循環する。順序番号Iを除する数値10は、レジスタ2を構成する記憶要素の数と同数である。これにより、擬似乱数生成器1から出力される1次乱数R1および循環順序番号Imにより、レジスタ2を構成するすべての記憶要素のアドレスを選定することが可能となる。
Figure 0004709685
表1は、擬似乱数を生成する過程を示す表である。ここでは、擬似乱数生成器1は、周期が4の乱数系列「0−1−4−3」を逐次的に出力するものとする。また、レジスタ2のアドレスが0から始まるのに対応して、順序番号Iも0から始まるものとする。レジスタ2を撹拌する際に対象となる2つの記憶要素を特定するアドレスについては、第1のアドレスが1次乱数R1として与えられ、第2のアドレスが循環順序番号Imとして与えられる。表1において、アドレスとして与えられるこれらの数値には斜線が付されている。また、2次乱数R2を取り出す記憶要素を特定する第3のアドレスは、1次乱数R1として与えられる。制御部3は、1次乱数R1をアドレスとする記憶要素に記憶される数値と循環順序番号Imをアドレスとする記憶要素に記憶される数値とを交換する。その後、制御部3は、1次乱数R1をアドレスとする記憶要素に記憶される数値を2次乱数R2として出力する。
例として、1次乱数R1として「0−1−4−3」の乱数系列が3周期生成された後、次の1次乱数R1として「0」が出力された際の2次乱数R2の生成について説明する。1次乱数R1として「0」が出力されると、順序番号Iは1増分されるから、Iとして12が設定される。mod(12,10)は2となるので、循環順序番号Imとして2が設定される。前回までのレジスタの撹拌により、レジスタ2において、1次乱数R1として与えられるアドレス“0”の記憶要素には数値6が記憶され、循環順序番号Imとして与えられるアドレス“2”の記憶要素には数値4が記憶されている。制御部3は、これらの数値を交換する。すなわち、アドレス“0”の記憶要素には数値4を記憶させ、アドレス“2”の記憶要素には数値6を記憶させる。数値の交換が完了すれば、制御部3は、1次乱数R1として与えられるアドレス“0”の記憶要素に記憶される数値4を2次乱数R2として出力する。
表1に示されるように、15回の乱数生成処理において、0〜9のすべての数値が2次乱数R2として出力されているとともに、周期は現れない。また、レジスタ2の記憶内容も初期値と全て異なっている。このように、擬似乱数生成器1から出力される周期4の1次乱数「0−1−4−3」を基礎として、周期の長い2次乱数を生成することが可能となる。なお、上記の乱数生成処理においては、レジスタを撹拌した後に2次乱数を取り出す構成としたが、2次乱数を取り出した後にレジスタを撹拌するような構成としてもよい。
以下、添付の図面を参照して本願発明に係る実施の形態を説明する。なお、以下の説明においては、実施の形態の各構成要素と、特許請求の範囲に記載された発明の各構成要素との対応関係を明らかにするために、実施の形態の各構成要素にそれぞれ対応する特許請求の範囲に記載された発明の各構成要素を、以下の説明文中において適宜かっこ書きにより示すものとする。
実施の形態1.
図2は、この発明の実施の形態1による擬似乱数生成装置の構成の一例を示す図である。ここでは、コンピュータで扱い易い1バイト(8ビット)の乱数を出力する擬似乱数生成装置について説明する。8ビットで与えられる乱数は、256種類の異なる乱数パターンを有する。図2において、11は例えば線形合同生成器や線形フィードバックシフトレジスタ等として与えられ比較的周期の短い1次乱数(第1の乱数)R1を生成する擬似乱数生成器(擬似乱数生成手段)、12は2次乱数(第2の乱数)R2の乱数パターンの種類数と同数の記憶要素から構成されてそれぞれの記憶要素には異なる乱数パターンが記憶されるレジスタ(配列)、13は選定された第1のアドレスおよび第2のアドレスにより特定されるレジスタ12内の2つの記憶要素を対象としてレジスタ12を撹拌するとともに選定された第3のアドレスにより特定されるレジスタ12内の記憶要素に記憶される数値を2次乱数R2として出力する制御部(制御手段)である。
この実施の形態では、擬似乱数生成器11として、以下の式(3)に基づいて、0〜255の数値範囲の8ビットの乱数パターンを生成する線形合同生成器を採用するものとする。
i+1=(3*R+1) mod 256 (3)
生成された乱数Rを3倍して1を加えた数値を256で除した剰余を、新たに生成される乱数Ri+1とする。式(3)に基づいて乱数を生成する線形合同生成器は、初期値R=0として乱数を生成すると、周期128の乱数系列を出力する。すなわち、この線形合同生成器は、8ビットで表される乱数の256種類の乱数パターンのなかで、半分の128種類の乱数パターンを出力する。
レジスタ12としては、0〜255の数値範囲のアドレスを有する256個の記憶要素から構成されて、それぞれの記憶要素が8ビットの記憶容量を有するレジスタを採用する。制御部13については、レジスタ12内の任意の2つの記憶要素に記憶された数値を交換するために、いずれか一方または両方の数値を記憶する記憶部、および乱数の生成回数を計数するカウンタ等を内蔵する構成としてもよい。また、これらの構成要素については、制御部13に独立に設けることも可能である。
図3は、この発明の実施の形態1による擬似乱数生成方法の一例を示すフローチャートである。擬似乱数生成器11は、8ビットから成る1次乱数R1を生成して出力する(ステップ1)。制御部13は、擬似乱数生成器11から1次乱数R1が出力される毎に、順序番号Iを1増分する(ステップS2)。例えば、制御部13に内蔵されたカウンタの計数値を順序番号Iに対応付けて、1次乱数R1が出力される毎にカウンタの計数値を1増分することで、当該処理を実現することができる。順序番号Iが設定されれば、制御部13は、以下の式(4)に基づいて、循環順序番号Imを算出する(ステップS3)。
Im=I mod 256 (4)
256は2次乱数の乱数パターンの種類数を表すものである。これにより、Imは0〜255の数値範囲の数値を順番に与えるので、循環順序番号Imまたは循環順序番号Imを基にした演算値により、レジスタ12内の記憶要素のアドレスを均等に選定することが可能になる。
循環順序番号Imが設定されれば、制御部13は、1次乱数R1をアドレスとする記憶要素に記憶される数値と循環順序番号Imをアドレスとする記憶要素に記憶される数値とを交換する(ステップS4)。例えば、制御部13に内蔵される記憶部とレジスタ12内の記憶要素との間で数値の受け渡しを実行することで、当該処理を実現することができる。レジスタの撹拌が完了すれば、制御部13は、1次乱数R1をアドレスとする記憶要素に記憶される数値を2次乱数R2として出力する(ステップS5)。2次乱数R2が出力されれば、所定数の乱数系列の出力が完了したか否かを判定する(ステップS6)。所定数の乱数系列の出力が完了していなければ、処理をステップS1に復帰させて、新たな2次乱数R2の生成処理を継続する。所定数の乱数系列の出力が完了していれば、乱数生成に係る処理を終了する。
Figure 0004709685
表2は、実施の形態1による擬似乱数生成装置を用いて得られる乱数系列において出現する乱数パターンの出現傾向を示す表である。表2に示されるように、1次乱数が循環する周期の7倍の回数にわたって2次乱数を生成することで、2次乱数として出現する乱数系列における乱数パターンの種類数が上限の256となる。実際に検証してみると、2次乱数が、32,768の周期を有することが判明した。1次乱数の周期が128であるから、2次乱数は1次乱数の256倍(32,768/128=256)の周期を有することになる。
Figure 0004709685
表3は、実施の形態1による擬似乱数生成装置を用いて得られる乱数系列において出現する各乱数パターンの分布状況を示す表である。表3において、乱数パターン出現平均回数は、2次乱数の乱数パターン毎の出現回数の平均値を示す。乱数パターン出現最小回数は、2次乱数のすべての乱数パターンの出現回数のなかで最小の出現回数を示す。乱数パターン出現最大回数は、2次乱数のすべての乱数パターンの出現回数のなかで最大の出現回数を示す。出現回数最大偏差は、乱数パターン出現平均回数と乱数パターン最小出現回数との差の絶対値および乱数パターン出現平均回数と乱数パターン出現最大回数との差の絶対値について大きい方の数値を乱数パターン出現平均回数で除した数値を示す。出現回数平均偏差は、2次乱数の乱数パターン毎に出現回数と乱数パターン出現平均回数との差の絶対値を乱数パターン出現平均回数で除した数値を累積して得られる数値を乱数パターンの種類数(すなわち256)で除した数値を示す。偏差率は、出現回数平均偏差を百分率で表したものである。表3に示されるように、乱数生成回数が大きくなるほど、偏差率が小さくなり各乱数パターンの出現回数が平均化されることが分かる。偏差率が0.01%であるとは、256*10000回の乱数生成において、それぞれの乱数パターンが平均して9999回〜10001回出現することを意味する。
擬似乱数生成器11としては、式(3)に基づいて乱数生成を実行する線形合同生成器に限定されることがないのは言うまでもない。例えば、以下の式(5)に基づいて、0〜255の数値範囲の8ビットの乱数パターンを生成する線形合同生成器を採用してもよい。
i+1=3*R mod 256 (5)
この線形合同生成器を用いても、乱数生成テストを実行した。式(5)に基づいて1次乱数を生成する線形合同生成器は、周期64の乱数系列を出力する。この線形合同生成器を擬似乱数生成器11として採用した擬似乱数生成装置から出力される2次乱数は、65,536の周期を有することが判明した。1次乱数の周期が64であるから、2次乱数は1次乱数の1,024倍(65,536/64)の周期を有することになる。
上記の実施の形態1においては、配列として与えられるレジスタ12が256個の記憶要素を有するとともに、それぞれの記憶要素が8ビットの記憶容量を有する構成としたが、本願発明はこのような構成に限定されるものではない。例えば、コンピュータが2バイトを単位として動作する場合には、それぞれが2バイトの記憶容量を有する65536個の記憶要素から成るレジスタが用意される。記憶要素がnビットの記憶容量を有して、記憶要素に記憶された数値を2次乱数として出力する場合には、2次乱数の乱数パターンの種類数は2となる。したがって、2個の記憶要素から成るレジスタを用意することで、8ビットの場合と同様に周期の長いnビットの2次乱数を生成することが可能となる。
上記の実施の形態1においては、1次乱数R1をアドレスとする記憶要素と循環順序番号Imをアドレスとする記憶要素とを対象としてレジスタ12を撹拌し、1次乱数R1をアドレスとする記憶要素に記憶された数値を2次乱数R2として出力する構成としたが、本願発明はこのような構成に限定されるものではない。本願発明に係る擬似乱数生成装置においては、撹拌の対象となる2つの記憶要素のアドレス(第1アドレスおよび第2アドレス)および2次乱数を取り出す対象となる記憶要素のアドレス(第3アドレス)を選定する必要がある。撹拌される配列を用いて周期の短い1次乱数から周期の長い2次乱数を生成するという本願発明の趣旨を鑑みれば、第1アドレス、第2アドレスおよび第3アドレスのなかの少なくとも1つのアドレスが、1次乱数または1次乱数に基づく演算値として与えられることは必須の要件となる。1次乱数または1次乱数に基づく演算値として与えられるアドレスの数は1、2または3のいずれでもよい。また、第1のアドレス、第2のアドレスおよび第3のアドレスのいずれについても、1次乱数または1次乱数に基づく演算値として与えられる。例えば、第1のアドレスおよび第3のアドレスが1次乱数として与えられるとともに、第2のアドレスが1次乱数に基づく演算値として与えられる構成としてもよい。
循環順序番号Imについては、第1アドレス、第2アドレスおよび第3アドレスのなかの少なくとも1つのアドレスが、循環順序番号または循環順序番号に基づく演算値として与えられることは必須の要件ではない。但し、循環順序番号Imを使用することで、レジスタ12内のすべての記憶要素のアドレスを均等に選定することができる。すなわち、循環順序番号Imを使用することで、レジスタ12を偏りなく撹拌することが可能となる。循環順序番号のこのような特性を鑑みれば、第1のアドレスまたは第2のアドレスの少なくとも一方のアドレスが、循環順序番号または循環順序番号に基づく演算値として与えられるのが好適である。なお、第3のアドレスが、循環順序番号または循環順序番号に基づく演算値として与えられてもよい。
第1のアドレス、第2のアドレスおよび第3のアドレスのなかで、第1の乱数または第1の乱数に基づく演算値あるいは循環順序番号または循環順序番号に基づく演算値として与えられないアドレスについては、所定の規則に基づく他の演算方法を用いて選定する必要がある。
以下では、1次乱数R1に基づく演算処理について、幾つか説明する。例えば、関数を構成する変数に1次乱数R1を代入して関数値を算出することで、1次乱数R1に基づく演算値を算出する。ここで、実施の形態1において、擬似乱数生成器11が9ビットを単位として1次乱数R1を生成するような装置構成を考える。1次乱数R1は0〜511の範囲の数値をとるから、1次乱数R1の乱数パターンの種類数は512となる。この場合、例えば式(6)を用いて1次乱数R1を変換する。
R1’={R1−mod(R1,2)}/2 (6)
この変換により得られる乱数R1’は、0から255の数値範囲の数値をとるから、この乱数R1’を用いてレジスタ12内の記憶要素のアドレスを選定する。
所定の規則に基づいて1次乱数R1を表すビット列を分割することで、1次乱数R1に基づく1または複数の演算値を生成するようにしてもよい。例えば1次乱数R1として4バイト(32ビット)の乱数パターンが生成される場合には、1次乱数R1を4分割して、8ビット毎に演算値を生成する。この演算値を用いて、レジスタ12内の記憶要素のアドレスを選定する。また、1次乱数R1として16ビットの乱数パターンが生成される場合には、乱数パターンを分割して前半の8ビットまたは後半の8ビットを演算値とする。この演算値を用いて、レジスタ12内の記憶要素のアドレスを選定する。
所定の規則に基づいて1次乱数R1を表すビット列を結合することで、1次乱数R1に基づく演算値を生成するようにしてもよい。例えば1次乱数R1として4ビットの乱数パターンが生成される場合には、連続する2つの1次乱数R1のビットパターンを結合して得られる8ビットのビットパターンを演算値とする。この演算値を用いて、レジスタ12内の記憶要素のアドレスを選定する。
バッファに1次乱数R1を入力して、出力として得られる数値を演算値とするようにしてもよい。例えば、擬似乱数生成器11と制御部13との間に、FIFOを配置する。FIFOは、擬似乱数生成器11から1次乱数R1を入力して、1次乱数R1の入力に応じて最も先にFIFOに入力された数値を演算値として制御部13に出力する。この演算値を用いて、レジスタ12内の記憶要素のアドレスを選定する。
アドレス変換テーブル等のテーブルを参照して、1次乱数R1に対応する数値を演算値とするようにしてもよい。本願発明に係る配列は、上記の実施の形態において使用されるレジスタや、RAM上の所定の記憶領域等として与えられる。このような記憶領域に存在する記憶要素のアドレスに対しては、必ずしも0〜255の数値範囲の数値が割り当てられるものではない。また、アドレスとして割り当てられる数値は、必ずしも連続する数値として与えられるものでもない。このような場合には、1次乱数R1が0〜255の数値範囲における連続的な数値として与えられるとしても、1次乱数毎に当該1次乱数をレジスタ内の記憶要素のそれぞれ異なるアドレスに対応付ける必要がある。アドレス変換テーブルを用いることにより、1次乱数R1とレジスタ内の記憶要素のアドレスとを1対1で対応付けることが可能になる。したがって、アドレス変換テーブルを参照して得られた数値を演算値とする。この演算値を用いて、レジスタ12内の記憶要素のアドレスを選定する。
さらに、1次乱数R1に係る上記の演算処理を組合わせた演算処理を用いて、一次乱数R1に基づく演算値を算出する構成としてもよい。例えば、擬似乱数生成器11と制御部13との間に、バッファを配置する。擬似乱数生成器11から出力される1次乱数R1を変数とする関数値をアドレスとして特定されるバッファ内の記憶要素に記憶される数値を出力する。そして、この記憶要素に1次乱数R1を記憶させる。
循環順序番号Imについても、上記の演算処理を適宜適用して演算値を求めることができる。さらに、1次乱数R1および循環順序番号Imの両方を基にして演算値を求める構成としてもよい。例えば、1次乱数R1および循環順序番号Imを共に変数とする関数f(R1,Im)を定義して、この関数値を演算値として記憶要素のアドレスを選定するようにしてもよい。
上記の実施の形態1においては、1次乱数R1をアドレスとする記憶要素に記憶される数値と循環順序番号Imをアドレスとする記憶要素に記憶される数値とを交換してレジスタ12を撹拌した後に、1次乱数R1をアドレスとする記憶要素に記憶される数値を2次乱数R2として出力する構成としたが、本願発明はこのような構成に限定されるものではない。本願発明に係る擬似乱数生成方法(擬似乱数生成プログラム)においては、選定された第3のアドレスにより特定される記憶要素に記憶される数値を2次乱数R2として出力した後に、選定された第1のアドレスおよび第2のアドレスにより特定される2つの記憶要素に記憶される数値を対象としてレジスタ12を撹拌するように構成してもよい。
また、レジスタ12を撹拌する毎に、2次乱数R2を出力する構成としているが、本願発明はこのような構成に限定されるものではない。本願発明における擬似乱数生成方法(擬似乱数生成プログラム)においては、レジスタ12を1回撹拌する毎に、複数の2次乱数R2を出力する構成としてもよい。また、2次乱数R2を1回出力する毎に、レジスタ12を複数回撹拌する構成としてもよい。本願の特許請求の範囲に記載された擬似乱数生成方法および擬似乱数生成プログラムに係る発明を構成する各工程(ステップ)は、必ずしも記載された順に時系列に実行されるものではなく、順序が逆になる場合もあれば、ある工程(ステップ)を1回実行する間に他の工程(ステップ)を複数回実行する場合もあり得る。本願の特許請求の範囲に記載された擬似乱数生成方法および擬似乱数生成プログラムに係る発明の技術的範囲が、上記の種々の実施態様を全て包括するものとして与えられている点に留意されたい。
以上のように、この実施の形態1による擬似乱数生成装置によれば、1次乱数R1を生成する擬似乱数生成器11と、2次乱数R2の乱数パターンの種類数と同数の記憶要素から構成されて、それぞれの記憶要素には異なる乱数パターンが記憶されるレジスタ12と、選定された第1のアドレスおよび第2のアドレスにより特定される2つの記憶要素を対象としてレジスタ12を撹拌するとともに、選定された第3のアドレスにより特定される記憶要素に記憶される数値を2次乱数R2として出力する制御部13とを有し、第1のアドレス、第2のアドレスおよび第3のアドレスのなかの少なくとも1つのアドレスが、1次乱数R1または1次乱数R1に基づく演算値として与えられるように構成したので、撹拌することにより順列として膨大なパターン数の数値系列を表現するのが可能であるレジスタ12内の任意の記憶要素から2次乱数R2を取り出すことにより、周期の長い乱数系列を得ることができる。
また、1次乱数R1の生成回数を2次乱数R2の乱数パターンの種類数で除した剰余として与えられる循環順序番号Imを算出し、第1のアドレスまたは第2のアドレスの少なくとも一方のアドレスが、循環順序番号Imまたは循環順序番号Imに基づく演算値として与えられるように構成したので、循環順序番号Imを用いることでレジスタ12内のすべての記憶要素のアドレスを均等に選定することが保証されて、レジスタ12を全範囲にわたって偏りなく撹拌することが可能となるから、周期の長い乱数系列を得られる可能性が大きくなる。さらに、循環順序番号Imはカウンタ等の簡単な演算回路を使用しての単純な演算により算出することが可能であるから、擬似乱数生成装置の回路構成を簡略化することができる。
また、1次乱数R1を生成する擬似乱数生成器11が線形合同生成器または線形フィードバックシフトレジスタとして与えられるように構成したので、比較的簡単な演算回路を用いて1次乱数R1を生成することが可能となるから、擬似乱数生成装置の回路構成を簡略化することができる。
実施の形態2.
図4は、この発明の実施の形態2による擬似乱数生成装置の構成の一例を示す図である。図4において、21は例えば線形合同生成器や線形フィードバックシフトレジスタ等として与えられ比較的周期の短い1次乱数R1(第1の乱数)を生成する擬似乱数生成器(第1の擬似乱数生成手段)、22は例えば線形合同生成器や線形フィードバックシフトレジスタ等として与えられ比較的周期の短い撹拌用乱数RS(第3の乱数)を生成する擬似乱数生成器(第2の擬似乱数制御手段)、23は2次乱数R2(第2の乱数)の乱数パターンの種類数と同数の記憶要素から構成されてそれぞれの記憶要素には異なる乱数パターンが記憶されるレジスタ(配列)、24は選定された第1のアドレスおよび第2のアドレスにより特定されるレジスタ23内の2つの記憶要素を対象としてレジスタ23を撹拌するとともに選定された第3のアドレスにより特定されるレジスタ23内の記憶要素に記憶される数値を2次乱数R2として出力する制御部(制御手段)である。
この実施の形態2では、擬似乱数生成器21として、式(5)(Ri+1=3*R mod 256)に基づいて0〜255の数値範囲の8ビットの乱数パターンを生成する線形合同生成器を採用するものとする。また、擬似乱数生成器22として、以下の式(7)に基づいて0〜255の数値範囲の8ビットの乱数パターンを生成する線形合同生成器を採用するものとする。
i+1=(5*R+1)mod 256 (7)
さらに、レジスタ23として、0〜255の数値範囲のアドレスを有する256個の記憶要素から構成されて、それぞれの記憶要素が8ビットの記憶容量を有するレジスタを採用する。
図5は、この発明の実施の形態2による擬似乱数生成方法の一例を示すフローチャートである。擬似乱数生成器21は、8ビットの1次乱数R1を生成して出力する(ステップS11)。擬似乱数生成器22は、8ビットの撹拌用乱数RSを生成して出力する(ステップS12)。
1次乱数R1および撹拌用乱数RSが出力されれば、制御部24は、1次乱数R1をアドレスとする記憶要素に記憶される数値と、撹拌用乱数RSをアドレスとする記憶要素に記憶される数値とを交換する(ステップS13)。すなわち、1次乱数R1を第1のアドレスとするとともに撹拌用乱数RSを第2のアドレスとして、レジスタ23を撹拌する。レジスタ23の撹拌が完了すれば、制御部24は、1次乱数R1をアドレスとする記憶要素に記憶される数値を2次乱数R2として出力する(ステップS14)。
2次乱数R2が出力されれば、所定数の乱数系列の出力が完了したか否かを判定する(ステップS15)。所定数の乱数系列の出力が完了していなければ、処理をステップS11に復帰させて、乱数生成処理を継続する。所定数の乱数系列の出力が完了していれば、乱数生成に係る処理を終了する。
式(5)に基づいて乱数を生成する線形合同生成器は、周期64の乱数系列を出力する。式(7)に基づいて乱数を生成する線形合同生成器は、周期64の乱数系列を出力する。擬似乱数生成器21から出力される1次乱数R1により与えられる第1のアドレスおよび擬似乱数生成器22から出力される撹拌用乱数RSにより与えられる第2のアドレスにより特定される2つの記憶要素を対象としてレジスタ23を撹拌し、擬似乱数生成器21から出力される1次乱数R1により与えられる第3のアドレスにより特定される記憶要素に記憶される数値を2次乱数R2として出力する実施の形態2による擬似乱数生成装置は、4,194,048の周期を有することが判明した。1次乱数R1の周期が64であるから、2次乱数R2は1次乱数R1の65,532倍(4,194,048/64)の周期を有することになる。
実施の形態1による擬似乱数生成装置について説明したのと同様に、1次乱数または1次乱数に基づく演算値、撹拌用乱数または撹拌用乱数に基づく演算値、あるいは実施の形態1で使用した循環順序番号または循環順序番号に基づく演算値を、第1のアドレス、第2のアドレスおよび第3のアドレスのなかのいずれのアドレスとしても与えることができる。なお、撹拌用乱数RSは、レジスタ23を撹拌するための乱数として与えられる。この役割を考慮すれば、撹拌用乱数または撹拌用乱数に基づく演算値を、第1のアドレスまたは第2のアドレスの少なくとも一方のアドレスとして与えるのが好適である。
また、1次乱数R1を生成する毎に、撹拌用乱数RSを生成してレジスタ23を撹拌する構成としているが、本願発明はこのような構成に限定されるものではない。撹拌用乱数RSの生成を1次乱数R1の生成よりも先に実行するようにしてもよい。また、撹拌用乱数RSを1回生成する間に1次乱数R1を複数回生成して、レジスタ23の撹拌および2次乱数R2の出力を実行するように構成してもよい。
この実施の形態2による擬似乱数生成装置は、実施の形態1による擬似乱数生成装置と同様の効果を奏するものである。さらに、擬似乱数生成器22を用いて撹拌用乱数RSを1次乱数R1とは別個に生成するとともに撹拌用乱数RSを使用してレジスタ23を撹拌するように構成したので、1次乱数R1の周期の影響を低減してレジスタ23の記憶内容を変化させることができるから、撹拌することにより順列として膨大なパターン数の数値系列を表現できるレジスタ23をより有効に利用することができて、周期の長い乱数系列を得ることができる。
図3および図5に示されるフローチャートに記載された各工程を実行するプログラムコードから成る擬似乱数生成プログラムは、当該擬似乱数生成プログラムが記憶されたCD−ROMやDVD−ROM等の情報記憶媒体を入手することで、あるいは当該擬似乱数生成プログラムが格納された外部のサーバからダウンロードすることで利用することができる。情報記憶媒体から読み出されるか、あるいは外部のサーバからダウンロードされた擬似乱数生成プログラムは、例えばパーソナルコンピュータとして与えられる端末装置内の記憶手段にインストールされる。記憶手段にインストールされた擬似乱数生成プログラムを、端末装置内のCPUにより実行することで、実施の形態1および実施の形態2において説明した擬似乱数生成方法を実現することができる。
適用例1.
図6は、本願発明に係る擬似乱数生成装置を適用した暗号システムの構成の一例を示す図である。図6において、31,32は本願発明に係る擬似乱数生成装置、33,34は論理演算処理装置、35は通信路である。擬似乱数生成装置31と擬似乱数生成装置32とは、同一に構成されるか、あるいは同一の論理構造を有するように構成される。論理演算処理装置33と論理演算処理装置34とは、同一に構成されるか、同一の論理構造を有するように構成される。論理演算処理装置33,34は、一般的には排他的論理和演算を実行する演算回路として与えられる。この暗号システムにおいて、擬似乱数生成装置31,32から出力される乱数系列は、ストリーム暗号を生成するためのキーストリームとして使用される。
擬似乱数生成装置31と論理演算処理装置33とを有して構成される暗号化装置では、送信側と受信側とで共有される共通鍵を用いて、擬似乱数生成装置31を初期状態に設定する。具体的には、1次乱数(および撹拌用乱数)を生成する擬似乱数生成器の初期値を設定するとともにレジスタに初期の記憶内容を設定する。論理演算処理装置33は、平文を構成するデータ系列と擬似乱数生成装置31から出力される乱数系列とを入力して、ビット単位または所定数のビット列を単位として所定の論理演算を実行し、暗号文を構成するデータ系列を生成して通信路35に出力する。
擬似乱数生成装置32と論理演算処理装置34とを有して構成される復号化装置では、共通鍵を用いて擬似乱数生成装置32を初期状態に設定する。論理演算処理装置34は、暗号文を構成するデータ系列と擬似乱数生成装置32から出力される乱数系列とを入力して、ビット単位または所定数のビット列を単位として所定の論理演算を実行し、平文を構成するデータ系列を生成する。
なお、上記の実施の形態1および実施の形態2により説明される擬似乱数生成装置等は、本願発明を限定するものではなく、例示することを意図して開示されているものである。本願発明の技術的範囲は特許請求の範囲の記載により定められるものであり、特許請求の範囲に記載された発明の技術的範囲内において種々の設計的変更が可能である。例えば、上記の実施の形態では、第1のアドレスおよび第2のアドレスにより特定される2つの記憶要素を対象としてレジスタを撹拌する構成としているが、3以上の記憶要素を対象としてレジスタを撹拌する構成としてもよい。この場合にも、撹拌の対象となる記憶要素を特定する3以上のアドレスおよび2次乱数を取り出す記憶要素を特定するアドレスのなかの少なくとも1つのアドレスは、1次乱数または1次乱数に基づく演算値により与えられる。さらに、これらのアドレスのなかの少なくとも1つのアドレスが、循環順序番号または循環順序番号に基づく演算値により与えられるのが好適である。
また、本願発明に係る擬似乱数生成装置は、ストリーム暗号システムに適用できるのみではない。例えば、擬似乱数生成装置から出力される乱数系列をセッションキーとして使用することで、本願発明に係る擬似乱数生成装置をブロック暗号システムに適用することができる。さらに、擬似乱数生成装置から出力される乱数系列をモンテカルロシミュレーション用乱数等として使用することで、本願発明に係る擬似乱数生成装置をコンピュータシミュレーションシステムに適用することができる。
本願発明は、ストリーム暗号システム、ブロック暗号システムまたはコンピュータシミュレーションシステム等の種々のシステムで使用される擬似乱数生成装置に広く適用できるものである。
本願発明に係る擬似乱数生成装置の動作原理を説明するためのモデルの構成を示す図である。 この発明の実施の形態1による擬似乱数生成装置の構成の一例を示す図である。 実施の形態1による擬似乱数生成方法の一例を示すフローチャートである。 この発明の実施の形態2による擬似乱数生成装置の構成の一例を示す図である。 実施の形態2による擬似乱数生成方法の一例を示すフローチャートである。 本願発明に係る擬似乱数生成装置を適用した暗号システムの構成の一例を示す図である。 線形フィードバックシフトレジスタの構成の一例を示す図である。
符号の説明
1 擬似乱数生成器、2 レジスタ、3 制御部、11 擬似乱数生成器(擬似乱数生成手段)、12 レジスタ(配列)、13 制御部(制御手段)、21 擬似乱数生成器(第1の擬似乱数生成手段)、22 擬似乱数生成器(第2の擬似乱数生成手段)、23 レジスタ(配列)、24 制御部(制御手段)、31,32 擬似乱数生成装置、33,34 論理演算処理装置、35 通信路

Claims (10)

  1. 第1の乱数を生成する擬似乱数生成手段と、
    第2の乱数の乱数パターンの種類数と同数の記憶要素から構成されて、それぞれの記憶要素には他のすべての記憶要素に記憶される乱数パターンとは異なる乱数パターンがそれぞれ記憶される配列と、
    少なくとも選定された第1のアドレスおよび第2のアドレスにより特定される2以上の記憶要素を対象として配列を撹拌するとともに、選定された第3のアドレスにより特定される記憶要素に記憶される数値を第2の乱数として出力する制御手段とを有して構成され、
    第1のアドレス、第2のアドレスおよび第3のアドレスのなかの少なくとも1つのアドレスが、第1の乱数または第1の乱数に基づく演算値として与えられることを特徴とする擬似乱数生成装置。
  2. 制御手段が、第1の乱数の生成回数を第2の乱数の乱数パターンの種類数で除した剰余を算出し、
    第1のアドレスまたは第2のアドレスの少なくとも一方のアドレスが、前記剰余または前記剰余に基づく演算値として与えられることを特徴とする請求項1記載の擬似乱数生成装置。
  3. 第1のアドレスおよび第3のアドレスが、第1の乱数または第1の乱数に基づく演算値として与えられ、
    第2のアドレスが前記剰余または前記剰余に基づく演算値として与えられることを特徴とする請求項2記載の擬似乱数生成装置。
  4. 第1のアドレスおよび第3のアドレスが、前記剰余または前記剰余に基づく演算値として与えられ、
    第2のアドレスが第1の乱数または第1の乱数に基づく演算値として与えられることを特徴とする請求項2記載の擬似乱数生成装置。
  5. 擬似乱数生成手段が、線形合同生成器または線形フィードバックシフトレジスタとして与えられることを特徴とする請求項1記載の擬似乱数生成装置。
  6. 第1の乱数を生成する第1の擬似乱数生成手段と、
    第3の乱数を生成する第2の擬似乱数生成手段と、
    第2の乱数の乱数パターンの種類数と同数の記憶要素から構成されて、それぞれの記憶要素には他のすべての記憶要素に記憶される乱数パターンとは異なる乱数パターンがそれぞれ記憶される配列と、
    少なくとも選定された第1のアドレスおよび第2のアドレスにより特定される2以上の記憶要素を対象として配列を撹拌するとともに、選定された第3のアドレスにより特定される記憶要素に記憶される数値を第2の乱数として出力する制御手段とを有して構成され、
    第1のアドレス、第2のアドレスおよび第3のアドレスのなかの少なくとも1つのアドレスが、第1の乱数または第1の乱数に基づく演算値として与えられ、
    第1のアドレスまたは第2のアドレスの少なくとも一方のアドレスが、第3の乱数または第3の乱数に基づく演算値として与えられることを特徴とする擬似乱数生成装置。
  7. 制御手段が、第1の乱数の生成回数を第2の乱数の乱数パターンの種類数で除した剰余を算出し、
    第1のアドレスが第3の乱数または第3の乱数に基づく演算値として与えられ、
    第2のアドレスが前記剰余または前記剰余に基づく演算値として与えられ、
    第3のアドレスが第1の乱数または第1の乱数に基づく演算値として与えられることを特徴とする請求項6記載の擬似乱数生成装置。
  8. 請求項1記載の擬似乱数生成装置を有して構成され、
    擬似乱数生成装置から出力される乱数系列と、平文を構成するデータ系列とに対して、ビット毎または所定数のビット列毎に、所定の論理演算を実行して、暗号文を構成するデータ系列を生成することを特徴とする暗号化装置。
  9. 第1の乱数を生成する工程と、
    第1の乱数の生成回数を第2の乱数の乱数パターンの種類数で除した剰余を算出する工程と、
    第1のアドレスおよび第2のアドレスを選定する工程と、
    第2の乱数の乱数パターンの種類数と同数の記憶要素から構成されて、それぞれの記憶要素には他のすべての記憶要素に記憶される乱数パターンとは異なる乱数パターンがそれぞれ記憶される配列において、第1のアドレスにより特定される記憶要素に記憶される数値と第2のアドレスにより特定される記憶要素に記憶される数値とを交換する工程と、
    第3のアドレスを選定する工程と、
    配列において第3のアドレスにより特定される記憶要素に記憶される数値を第2の乱数として出力する工程とを有し、
    第1のアドレス、第2のアドレスおよび第3のアドレスのなかの少なくとも1つのアドレスが、第1の乱数または第1の乱数の演算値として与えられ、
    第1のアドレスまたは第2のアドレスの少なくとも一方のアドレスが、前記剰余または前記剰余の演算値として与えられることを特徴とする擬似乱数生成方法。
  10. 第1の乱数を生成するステップと、
    第1の乱数の生成回数を第2の乱数の乱数パターンの種類数で除した剰余を算出するステップと、
    第1のアドレスおよび第2のアドレスを、それぞれ第1の乱数または第1の乱数に基づく演算値あるいは前記剰余または前記剰余に基づく演算値として与えるステップと、
    第2の乱数の乱数パターンの種類数と同数の記憶要素から構成されて、それぞれの記憶要素には他のすべての記憶要素に記憶される乱数パターンとは異なる乱数パターンがそれぞれ記憶される配列において、第1のアドレスにより特定される記憶要素に記憶される数値と第2のアドレスにより特定される記憶要素に記憶される数値とを交換するステップと、
    第3のアドレスを、第1の乱数または第1の乱数に基づく演算値あるいは前記剰余または前記剰余に基づく演算値として与えるステップと、
    配列において第3のアドレスにより特定される記憶要素に記憶される数値を第2の乱数として出力するステップとを有することを特徴とする擬似乱数生成プログラム。
JP2006116557A 2006-04-20 2006-04-20 擬似乱数生成装置、擬似乱数生成方法および擬似乱数生成プログラム並びに暗号化装置および復号化装置 Active JP4709685B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2006116557A JP4709685B2 (ja) 2006-04-20 2006-04-20 擬似乱数生成装置、擬似乱数生成方法および擬似乱数生成プログラム並びに暗号化装置および復号化装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006116557A JP4709685B2 (ja) 2006-04-20 2006-04-20 擬似乱数生成装置、擬似乱数生成方法および擬似乱数生成プログラム並びに暗号化装置および復号化装置

Publications (2)

Publication Number Publication Date
JP2007287079A JP2007287079A (ja) 2007-11-01
JP4709685B2 true JP4709685B2 (ja) 2011-06-22

Family

ID=38758767

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006116557A Active JP4709685B2 (ja) 2006-04-20 2006-04-20 擬似乱数生成装置、擬似乱数生成方法および擬似乱数生成プログラム並びに暗号化装置および復号化装置

Country Status (1)

Country Link
JP (1) JP4709685B2 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4997982B2 (ja) * 2007-01-16 2012-08-15 ソニー株式会社 データ処理装置、およびデータ処理方法、並びにコンピュータ・プログラム
US9269418B2 (en) * 2012-02-06 2016-02-23 Arm Limited Apparatus and method for controlling refreshing of data in a DRAM
KR101630791B1 (ko) * 2015-03-27 2016-06-16 황순영 의사 난수로부터 진성 난수를 생성하는 방법 및 이 방법을 컴퓨터상에서 실행할 수 있는 프로그램이 기록된 컴퓨터로 읽을 수 있는 기록매체
JP6991025B2 (ja) * 2017-09-15 2022-01-12 株式会社エヌ・ティ・ティ・データ データ生成装置、データ生成方法、及びプログラム

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005149412A (ja) * 2003-11-19 2005-06-09 Toshiba Corp メモリシャッフル装置、メモリシャッフル方法及びプログラム

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62296183A (ja) * 1986-06-17 1987-12-23 松下電器産業株式会社 デ−タ撹乱装置
JPH10303882A (ja) * 1997-04-24 1998-11-13 Fuji Xerox Co Ltd 暗号化方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005149412A (ja) * 2003-11-19 2005-06-09 Toshiba Corp メモリシャッフル装置、メモリシャッフル方法及びプログラム

Also Published As

Publication number Publication date
JP2007287079A (ja) 2007-11-01

Similar Documents

Publication Publication Date Title
Kocarev et al. Pseudorandom bits generated by chaotic maps
JP4774509B2 (ja) 擬似乱数発生システム
EP2962185B1 (en) Random number generator and stream cipher
US7280659B2 (en) Pseudorandom number generating apparatus or encryption or decryption apparatus using the same
JP4052480B2 (ja) 疑似乱数発生方法、疑似乱数発生器、及び疑似乱数発生プログラム
US20050097153A1 (en) Pseudorandom number generator
WO2009100104A1 (en) Cryptographic system incorporating a digitally generated chaotic numerical sequence
JP2005215688A (ja) S−box演算を用いるハードウェア暗号化/復号化装置及び、その方法
JP2004505289A (ja) コンピュータで効率的な線形フィードバック・シフト・レジスタ
JPH04250490A (ja) ケーオス論に基づく暗号化システム
US7480687B2 (en) Pseudorandom number generator for a stream cipher
US20130129088A1 (en) Method and system for generating unpredictable pseudo-random numbers
KR101389483B1 (ko) 의사난수 스트링을 생성하기 위한 방법 및 장치
JP4709685B2 (ja) 擬似乱数生成装置、擬似乱数生成方法および擬似乱数生成プログラム並びに暗号化装置および復号化装置
JP5188414B2 (ja) 情報処理装置及び情報処理方法及びプログラム
JP5207153B2 (ja) 擬似乱数発生システム
Moghadam et al. Designing a random number generator with novel parallel LFSR substructure for key stream ciphers
JP4857230B2 (ja) 疑似乱数生成装置及びそれを用いた暗号化処理装置
Hars et al. Pseudorandom recursions: small and fast pseudorandom number generators for embedded applications
RU2246129C2 (ru) Способ генерации случайных чисел
JP5268011B2 (ja) 暗号化システム及び復号化システム
Lee et al. Uniform random number generator using leap-ahead LFSR architecture
JP5268010B2 (ja) 暗号化システム及び復号化システム
Ziani et al. Research Article CFA: A New Family of Hybrid CA-Based PRNGs
JP3806762B2 (ja) 乱数発生装置、乱数発生方法およびプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090129

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100914

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20101101

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20110222

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110318

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250