(57)【特許請求の範囲】
【請求項１】
0003851258.tif 000013
【請求項２】
0003851258.tif 000014
【請求項３】
0003851258.tif 000015
【請求項４】
0003851258.tif 000016
【請求項５】
請求項２または４に記載のプログラムを記録した、コンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、安全性の高い疑似乱数の生成を可能とするための疑似乱数生成器、疑似乱数の生成方法、および疑似乱数生成器の機能をプロセッサに実行させるコンピュータコードを記録した記録媒体に関する。
【０００２】
【従来の技術】
乱数もしくは任意に並んだビット列は、暗号技術を用いるあらゆる場合において、実際上、不可欠なものである。例えば、秘密鍵もしくは公開鍵の機能を有する暗号鍵を生成する際に用いられるシード、暗号化および認証に用いられるセッション鍵、メッセージダイジェストを生成する際にパスワードと共に用いられるソルト、そして認証プロトコルにおいて用いられるチャレンジは通常、乱数を用いて生成されるようにシステム設計者により設計されている。
【０００３】
しかしながら、真の乱数の生成には複雑な処理を要するため、真の乱数を用いる暗号技術はかなりのコスト高となる。それゆえ、暗号技術を利用する多くのアプリケーションプログラムは、真の乱数に類似した性質を持つ数列である疑似乱数を利用している。以下、この疑似乱数を生成する仕組みを「ＰＲＮＧ」（Ｐｓｅｕｄｏｒａｎｄｏｍ  Ｎｕｍｂｅｒ  Ｇｅｎｅｒａｔｏｒ）と呼ぶ。
【０００４】
ＰＲＮＧは、μ＝μ（κ，λi）という関係式により表現される。まず、ＰＲＮＧは大きく、２つの関数、すなわちシード生成関数κおよび変換関数λを引数として用いる。また、ＰＲＮＧは反復処理を行い、λの添字は反復処理の各処理の番号を示す。
【０００５】
シード生成関数κは、引数としてセキュリティパラメータｋをとり、戻り値として鍵Ｋおよび初期の状態値ｓ0を返す。変換関数λは、ｉ≧１であるｉに関して、引数として鍵Ｋ、現在の状態値ｓi-1、および付加入力値ｔiとり、戻り値としてＰＲＮＧの出力値である出力値ｙiおよび次の処理で用いられる状態値ｓiを返す。反復処理の各処理、すなわちｉ番目の処理に対する出力値ｙiは、ｉの値の変化に応じて一連の数列を成し、その数列が全体として疑似乱数となる。
【０００６】
ＰＲＮＧは暗号技術の基本的思想を用いることにより実現される。暗号技術の基本的思想のうち、ごく一般的に用いられているものとしてブロック暗号関数とハッシュ関数がある。暗号関数とは、データを暗号化する関数である。一般的に、暗号関数は暗号化されていないデータと、そのデータに対し割り当てられる変数である鍵を引数とし、一連の疑似乱数を生成する。暗号関数の一種であるブロック暗号関数は、一連のデータを複数の短いデータ列であるブロックデータに分割し、鍵と各ブロックデータから一定長の疑似乱数を生成する。
【０００７】
一方、ハッシュ関数は任意の長さのデータ列から、ある一定長の疑似乱数を生成する関数である。ハッシュ関数が生成する疑似乱数からは、引数であるデータ列を導出することが不可能もしくは極めて困難である。すなわち、ハッシュ関数は単方向の変換関数であり、ハッシュ関数の出力データが与えられたとしても、計算機等の手段を用いてその出力データに対応する入力データを特定することは実際上不可能である。また、ハッシュ関数が生成する複数の疑似乱数は偶然に一致することがない。すなわち、計算機等の手段を用いて、ハッシュ関数の出力データが同じとなるような異なる入力データを発見することは実際上不可能である。さらに、ハッシュ関数が生成する疑似乱数は必然的に決定される。すなわち、全く同じ入力データを引数とする場合、ハッシュ関数の出力データは常に全く同じとなる。
【０００８】
ブロック暗号関数を利用しているＰＲＮＧの一例として、ＡＮＳＩ（Ａｍｅｒｉｃａｎ  Ｎａｔｉｏｎａｌ  Ｓｔａｎｄａｒｄｓ  Ｉｎｓｔｉｔｕｔｅ）  Ｘ９．１７  ＰＲＮＧ（以下、「ＡＮＳＩ  ＰＲＮＧ」と呼ぶ）がある。ＡＮＳＩＰＲＮＧの詳細は“Ａｍｅｒｉｃａｎ  Ｎａｔｉｏｎａｌ  Ｓｔａｎｄａｒｄｆｏｒ  Ｆｉｎａｎｃｉａｌ  Ｉｎｓｔｉｔｕｔｉｏｎ  Ｋｅｙ  Ｍａｎａｇｅｍｅｎｔ  （Ｗｈｏｌｅｓａｌｅ）”と題される規格書“ＡＮＳＩ  Ｘ９．１７（Ｒｅｖｉｓｅｄ）”（Ａｍｅｒｉｃａ  Ｂａｎｋｅｒｓ  Ａｓｓｏｃｉａｔｉｏｎ，  １９８５）に記載されている。ＡＮＳＩ  ＰＲＮＧは金融業において一般的に利用されている規格の一つであり、ＤＥＳ（Ｄａｔａ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）における鍵およびノンスと呼ばれる一時的な乱数を生成する仕組みとして提案されたものである。ＡＮＳＩ  ＰＲＮＧにおける上述したシード生成関数κ、変換関数λおよびブロック暗号関数をそれぞれ、以下、シード生成関数κANSI、変換関数λANSIおよびブロック暗号関数Ｆとする。
【０００９】
図１は変換関数λANSI１０を示している。シード生成関数κANSI（図示略）は鍵Ｋおよび初期の状態値Ａｓ0を生成する。鍵Ｋはブロック暗号関数Ｆのパラメータとして適用され、その結果、ブロック暗号関数Ｆが行うデータ暗号化処理の詳細が決定される。以下、鍵をブロック暗号関数もしくはハッシュ関数にパラメータとして適用し、それらの関数が行う処理の詳細を決定することを、便宜的に「鍵をかける」と表現する。
【００１０】
λANSI１０は、ブロック暗号関数Ｆに鍵Ｋを用いて鍵をかけたブロック暗号関数ＦK１２、現在の状態値Ａｓi-1、そして付加入力値ｔiを用いて、以下の式（１）および式（２）で表される処理により、ＡＮＳＩ  ＰＲＮＧの出力値Ａｙiと次の処理のための状態値Ａｓiを生成する。
【数１】
0003851258.tif 000002
【００１１】
一方、ハッシュ関数を利用しているＰＲＮＧの一例として、ＦＩＰＳ（Ｆｅｄｅｒａｌ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｐｒｏｃｅｓｓｉｎｇ  Ｓｔａｎｄａｒｄｓ）  １８６  ＰＲＮＧ（以下、「ＦＩＰＳ  ＰＲＮＧ」と呼ぶ）がある。ＦＩＰＳ  ＰＲＮＧの詳細は“Ｄｉｇｉｔａｌ  Ｓｉｇｎａｔｕｒｅ  Ｓｔａｎｄａｒｄ”と題される規格書“ＦＩＰＳ  ＰＵＢ  １８６−２（Ｃｈａｎｇｅ  Ｎｏｔｉｃｅ  １）”（Ｎａｔｉｏｎａｌ  Ｉｎｓｔｉｔｕｔｅ  ｏｆ  Ｓｔａｎｄａｒｄｓ  ａｎｄ  Ｔｅｃｈｎｏｌｏｇｉｅｓ，  ２００１）に記載されている。ＦＩＰＳ  ＰＲＮＧはＤＳＡ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｔｕｒｅ  Ａｌｇｏｒｉｔｈｍ）における不規則性を確保するための疑似乱数生成器として規格化された。ＦＩＰＳ  ＰＲＮＧにおける上述したシード生成関数κ、変換関数λおよびハッシュ関数をそれぞれ、以下、シード生成関数κFIPS、変換関数λFIPSおよびハッシュ関数Ｈとする。
【００１２】
図２は変換関数λFIPS３０を示している。なお、図２における記号３４は（ａ＋ｂ＋ｃ）％２n（ただし、ｎは従来型ＦＩＰＳ  ＰＲＮＧの出力値Ｆｙiのビット数、「％」は剰余、ａ、ｂおよびｃは演算の引数）を表す演算子である。シード生成関数κFIPS（図示略）は鍵Ｋおよび初期の状態値Ｆｓ0を生成する。鍵Ｋはハッシュ関数Ｈに鍵をかけるために用いられる。λFIPS３０は、ハッシュ関数Ｈに鍵Ｋを用いて鍵をかけたハッシュ関数ＨK３２、現在の状態値Ｆｓi-1、そして付加入力値ｔiを用いて、以下の式（３）および式（４）で表される処理により、ＦＩＰＳ  ＰＲＮＧの出力値Ｆｙiと次の処理のための状態値Ｆｓiを生成する。ただし、ｎは従来型ＦＩＰＳ  ＰＲＮＧの出力値Ｆｙiのビット数である。
【数２】
0003851258.tif 000003
【００１３】
ところで、ＰＲＮＧに特に求められる性質として「前方安全性」と呼ばれる安全性がある。もし第三者が現在の状態値ｓiと鍵Ｋを用いて、以前に生成された出力値を導出することができない場合、この疑似乱数を生成したＰＲＮＧは前方安全性を備えている、という。このようなＰＲＮＧの前方安全性は、暗号技術が利用されるあらゆる場面において要求される性質である。ＡＮＳＩ  ＰＲＮＧにおいて中心的に用いられるブロック暗号関数ＦKは、鍵Ｋが与えられると現在の状態値および出力値から以前の処理において得られた出力値を導出することが可能である。従って、ＡＮＳＩ  ＰＲＮＧは前方安全性を備えていない。また、ＦＩＰＳ  ＰＲＮＧにおいても、現在の状態値Ｆｓi-1および出力値ｙiが既知の場合、一つ前の処理における状態値および出力値を順次求めることが可能である。従って、ＦＩＰＳ  ＰＲＮＧもまた、前方安全性を備えていない。
【００１４】
このような前方安全性を備えていないＰＲＮＧにおいては、一般的に、状態値が第三者に知られぬように管理されている。しかしながら、第三者に知られぬように管理されている状態値が漏洩したり、第三者により変更されたりする可能性は皆無ではない。
【００１５】
また、前方安全性を備えていないＰＲＮＧの多くにおいては、付加入力値が引数として用いられている。付加入力値とは、シードである鍵や初期の状態値およびそれらの値から生成される出力値が繰り返し同じ値となることを防止するために、一定の頻度でＰＲＮＧに取り込まれる不規則な入力値である。付加入力値が用いられる場合、第三者にとって、前の処理における状態値および出力値を推定することはより困難となる。付加入力値としては一般的に、ユーザのキー操作により入力される値、クロックやタイマからの出力値、タイムスタンプ、一様性の低い情報源から得られるサンプルデータ等の値が用いられる。しかしながら、これらの付加入力値もまた、第三者により取得もしくは変更される可能性がある。
【００１６】
また、汎用のＰＲＮＧを改良し、前方安全性を備えたＰＲＮＧを作り出す方法の一つがＭ．  ＢｅｌｌａｒｅおよびＢ．  Ｙｅｅにより提案されている。その提案は“Ｆｏｒｗａｒｄ  Ｓｅｃｕｒｉｔｙ  ｉｎ  Ｐｒｉｖａｔｅ−Ｋｅｙ  Ｃｒｙｐｔｏｇｒａｐｈｙ”（Ｃｒｙｐｔｏｌｏｇｙ  ｅＰｒｉｎｔ  Ａｒｃｈｉｖｅ，  Ｒｅｐｏｒｔ  ２００１／０３５）に記載されている。この文献において開示されている方法（以下、「方法１」と呼ぶ）によれば、出力値の一部が第三者に知られぬように管理されると同時に、ＰＲＮＧの出力値が新たな処理に用いられる状態値および鍵の生成に用いられる。
【００１７】
【発明が解決しようとする課題】
上述した方法１により改良されたＰＲＮＧは、前方安全性を備えている。しかしながら、方法１は汎用のＰＲＮＧへの適用を目的とした方法であるため、ＡＮＳＩ  ＰＲＮＧやＦＩＰＳ  ＰＲＮＧといった特定のＰＲＮＧに対する効率的な改善方法を提供するものではない。
【００１８】
まず、方法１によれば、反復処理の各処理においてブロック暗号関数に鍵をかけなおす処理が行われる。この処理はＰＲＮＧを実現する際にプロセッサに対し大きな負担を与える。さらに、方法１において採用されているＰＲＮＧのモデルは付加入力値を用いていないため、付加入力値を用いているＡＮＳＩ  ＰＲＮＧやＦＩＰＳ  ＰＲＮＧに方法１をそのまま適用することはできない。
【００１９】
上述した状況に鑑み、本発明は、疑似乱数の生成のための反復処理の各処理において、ブロック暗号関数もしくはハッシュ関数に鍵をかける処理を行うことなく、既存のＡＮＳＩ  ＰＲＮＧおよびＦＩＰＳ  ＰＲＮＧに前方安全性を備えさせることを可能とする疑似乱数生成器、疑似乱数の生成方法、および疑似乱数生成器の機能をプロセッサに実行させるコンピュータコードを記録した記録媒体を提供することを目的とする。
【００２０】
【課題を解決するための手段】
0003851258.tif 000004
【００２２】
0003851258.tif 000005
【００２３】
0003851258.tif 000006
【００２５】
0003851258.tif 000007
【００２６】
また、本発明は、上述したいずれかのプログラムを記録した、コンピュータ読み取り可能な記録媒体を提供する。
【００２９】
かかる構成による疑似乱数生成器、疑似乱数の生成方法、および疑似乱数生成器の機能をプロセッサに実行させるコンピュータコードを記録した記録媒体により実現されるＰＲＮＧにおいては、たとえ鍵が既知であっても、ブロック暗号関数もしくはハッシュ関数の戻り値から引数を導出することができない。従って、たとえＰＲＮＧから出力される次期状態値が鍵と共に第三者に知られても、第三者により以前の状態値を推定されることはなく、従って第三者により以前に出力された疑似乱数が推定されることもない。その結果、高い情報安全性を備えた疑似乱数の生成が実現される。
【００３０】
【発明の実施の形態】
［１  実施例］
以下、安全性の向上されたＰＲＮＧ（以下、「改良型ＰＲＮＧ」と呼ぶ）を実現するための方法および装置の実施例を説明する。なお、以下に説明する実施例は、従来型のＰＲＮＧからの変更を最小限に留める態様を例として示したものであり、本発明の思想を限定するものではない。従って、以下に示すデータ処理のフローおよび数式等は他に多くの変形例が考えられるが、本発明の思想を超えない範囲で、それらを以下の実施例において示すものと入れ替えてもよい。
【００３１】
［１．１  構成］
改良型ＰＲＮＧを実現する装置は、プロセッサ、記録部および入力部を有する。本発明に係る装置の有するプロセッサは、以下に示す計算、処理及び変数の定義、判定等の処理を行うプロセッサであれば、機械式、電気式、電子式もしくは電磁気式等のいずれの方式で動作するものであるかは問わない。このプロセッサは本発明に係る装置の構成要素であると同時に、本発明に係る方法の実行手段でもある。記録部は半導体メモリ等で構成されており、プロセッサが実行するプログラムコードやプロセッサが利用するデータを記録する。入力部にはタイムスタンプ、クロックもしくはタイマの出力値、ユーザのキー操作に応じた出力値、一様性の低い情報源から得られるサンプルデータ等のいずれかの値が付加入力値として入力され、入力部は入力された付加入力値をプロセッサに送信する。
【００３２】
本発明はまた、改良型ＰＲＮＧをコンピュータに実現させる、コンピュータが読み取り可能なプログラムコードを提供する。このプログラムコードはコンピュータが読み取り可能な記録媒体に記録されてもよいし、コンピュータが判読可能な信号に変換されてもよい。また、このプログラムコードは以下に説明する処理の制御を記述したものであれば、オブジェクトコード、ソースコード等の形態はいずれであってもよい。プログラムコードを記録する記録媒体は、プログラムコードやそれに関連するデータを記録可能な媒体であれば、フロッピーディスク等の磁気記録媒体、ＣＤ−ＲＯＭ等の光記録媒体、半導体メモリ等のいずれであってもよい。また、プログラムコードの変換に用いられる信号は、プログラムコードやそれに関連するデータの内容を含むことが可能な信号であれば光信号、電気信号等のいずれであってもよく、またその信号の伝達方法は有線、無線のいずれであるかを問わない。さらに、その信号の伝達範囲はＬＡＮ等の狭い範囲であってもよいし、インターネット等の広域にわたるものであってもよい。
【００３３】
［１．２  実施環境］
本実施例に係る方法および装置は、以下の状況において実施もしくは利用されることが想定される。
（１）改良型ＰＲＮＧにおいて生成される状態値に関する情報は、漏洩もしくは改変される可能性がある。
（２）改良型ＰＲＮＧにおいて利用される各関数に関する処理は、個別に実行可能である。
（３）改良型ＰＲＮＧにおいて疑似乱数の生成のために用いられる不規則な入力値は、完全な乱数ではない。
（４）シード生成関数κは第三者が推定不可能な程度に十分な不規則性を有する鍵Ｋおよび初期の状態値ｓ0を生成可能である。
【００３４】
［１．３  処理］
続いて、改良型ＰＲＮＧにおける処理を説明する。改良型ＰＲＮＧにおいて用いられる変換関数λ’は、従来型ＡＮＳＩ  ＰＲＮＧおよび従来型ＦＩＰＳ  ＰＲＮＧにおいて用いられる変換関数λと同様に、疑似乱数生成のための反復処理の各処理において、引数として鍵Ｋ、付加入力値ｔiおよび現在の状態値ｓ’i-1（以下、現在の状態値を「現在状態値」と呼ぶ）をとり、戻り値として出力値ｙ’iおよび次の処理で用いられる状態値ｓ’i（以下、次の処理で用いられる状態値を「次期状態値」と呼ぶ）を返す。
【００３５】
なお、改良型ＰＲＮＧにおいては、疑似乱数生成のための反復処理の次の処理で利用される付加入力値ｔi+1が取得される前に、出力値ｙ’iおよび次期状態値ｓ’iが生成される。
【００３６】
［１．３．１  改良型ＡＮＳＩ  ＰＲＮＧ］
以下、改良型ＰＲＮＧの一つである改良型ＡＮＳＩ  ＰＲＮＧの処理に関し、具体例を示し説明する。図３は改良型ＡＮＳＩ  ＰＲＮＧにおいて用いられる変換関数である変換関数λ’ANSI５０を示している。
【００３７】
まず、シード生成関数κＡＮＳＩ（図示略）は鍵Ｋおよび初期状態値Ａｓ’０を生成する。続いて、従来型ＡＮＳＩ  ＰＲＮＧにおいて用いられるブロック暗号関数であるブロック暗号関数Ｆに対し、鍵Ｋを用いて鍵がかけられ、ブロック暗号関数ＦＫが準備される。さらに、図３のブロック５２で示されるように、ブロック暗号関数ＦＫを用いて改良型ＡＮＳＩ  ＰＲＮＧ用の新たなブロック暗号関数Ｆ’Ｋが準備される。なお、ブロック暗号関数Ｆ’Ｋは以下の式（５）で表される。ただし、式（５）におけるｘは、従来型ＡＮＳＩ  ＰＲＮＧにおけるブロック暗号関数ＦＫの各引数と同様の引数を示す。
【数４】
0003851258.tif 000008
【００３８】
ここで、図１に示した従来型ＡＮＳＩ  ＰＲＮＧのブロック暗号関数ＦＫを、式（５）で表されるブロック暗号関数Ｆ’Ｋで置き換えただけでは、ＡＮＳＩ  ＰＲＮＧに前方安全性を付与することはできない。すなわち、第三者は次期状態値Ａｓｉ、鍵Ｋ、出力値Ａｙｉおよび付加入力値ｔｉを用いて、前の処理における次期状態値、すなわち現在状態値Ａｓｉ−１を導出することが可能である。従って、図３に示すように、データ処理のフローを一部変更して現在状態値Ａｓｉ−１から次期状態値Ａｓｉを生成する手順を変えることにより、たとえ鍵、現在状態値等が既知であっても次期状態値Ａｓ’ｉから現在状態値Ａｓ’ｉ−１を導出できないようにする。この変更により、次期状態値Ａｓ’ｉは以下の式（６）で表される値となる。
【数５】
0003851258.tif 000009
【００３９】
また、図３で示される変換関数λ’ＡＮＳＩ５０は、上述した次期状態値Ａｓ’ｉと同時に出力値Ａｙ’ｉを出力する。この出力値Ａｙ’ｉが疑似乱数となる。なお、出力値Ａｙ’ｉは以下の式（７）で表される値となる。
【数６】
0003851258.tif 000010
【００４０】
以上説明した改良型ＡＮＳＩ  ＰＲＮＧが生成する疑似乱数は、たとえ鍵、現在状態値等が第三者に知られても、第三者は次期状態値Ａｓ’iから現在状態値Ａｓ’i-1を導出することができず、従って第三者は以前に生成された出力値、すなわち疑似乱数を推定することができない。
【００４１】
［１．３．２  改良型ＦＩＰＳ  ＰＲＮＧ］
続いて、以下に改良型ＰＲＮＧの他の一つである改良型ＦＩＰＳ  ＰＲＮＧの処理に関し、具体例を示し説明する。
【００４２】
図４は改良型ＦＩＰＳ  ＰＲＮＧに用いられる変換関数である変換関数λ’FIPS７０を示している。なお、図４における記号７４は（ａ＋ｂ＋ｃ）％２n（ただし、ｎは改良型ＦＩＰＳ  ＰＲＮＧの出力値Ｆｙ’iのビット数、「％」は剰余、ａ、ｂおよびｃは演算の引数）を表す演算子である。
【００４３】
まず、シード生成関数κFIPS（図示略）は鍵Ｋおよび初期状態値Ｆｓ’0を生成する。続いて、従来型ＡＮＳＩ  ＰＲＮＧにおいて用いられるハッシュ関数と同じハッシュ関数Ｈに対し、鍵Ｋを用いて鍵がかけられ、ハッシュ関数ＨKが準備される。
【００４４】
ここで、改良型ＦＩＰＳ  ＰＲＮＧにおいても、改良型ＡＮＳＩ  ＰＲＮＧにおける場合と同様に、次期状態値Ｆｓ’iは、その値から前の処理における次期状態値、すなわち現在状態値Ｆｓ’i-1を導出できない性質を有するものとなるように生成されなければならない。そのため、図４に示すように、改良型ＦＩＰＳ  ＰＲＮＧにおいては従来型ＦＩＰＳ  ＰＲＮＧの２回分に相当する処理から１組の出力値および次期状態値が出力されるように、データ処理のフローが変更されている。なお、改良型ＦＩＰＳ  ＰＲＮＧにおいて、出力値は前半の処理から得られ、次期状態値は後半の処理から得られる。
【００４５】
図４に示すデータ処理のフロー変更により、改良型ＦＩＰＳ  ＰＲＮＧにおける次期状態値Ｆｓ’ｉは以下の式（８）で表される値となる。ただし、ｎは改良型ＦＩＰＳ  ＰＲＮＧの出力値Ｆｙ’ｉのビット数である。
【数７】
0003851258.tif 000011
【００４６】
また、改良型ＦＩＰＳ  ＰＲＮＧの出力値Ｆｙ’ｉは以下の式（９）で表される値となる。この出力値Ｆｙ’ｉが疑似乱数となる。
【数８】
0003851258.tif 000012
【００４７】
以上説明した改良型ＦＩＰＳ  ＰＲＮＧが生成する疑似乱数もまた、改良型ＡＮＳＩ  ＰＲＮＧが生成する疑似乱数と同様に、たとえ鍵、現在状態値等が第三者に知られても、第三者は次期状態値Ｆｓ’iから現在状態値Ｆｓ’i-1を導出することができず、従って第三者は以前に生成された出力値、すなわち疑似乱数を推定することができない。
【００４８】
【発明の効果】
以上説明したように、本発明の疑似乱数生成器および疑似乱数の生成方法によれば、疑似乱数の生成過程において用いられる鍵、付加入力値および現在状態値等のパラメータが第三者に知られても、第三者によって以前に生成された状態値等の出力が推定されることがないため、生成される疑似乱数は第三者によって推定されることはなく、安全性の高いものとなる。
【００４９】
なお、本発明の疑似乱数生成器および疑似乱数の生成方法によれば、疑似乱数の生成のための反復処理の各処理において、ブロック暗号関数、ハッシュ関数等の関数に鍵をかける処理を繰り返し行う必要がなく、従来の疑似乱数生成器および疑似乱数の生成方法における場合と比較して、プロセッサの処理負担が増大することはない。
【図面の簡単な説明】
【図１】  従来型ＡＮＳＩ  ＰＲＮＧの変換関数におけるデータ処理フローを示す図である。
【図２】  従来型ＦＩＰＳ  ＰＲＮＧの変換関数におけるデータ処理フローを示す図である。
【図３】  本発明の実施例に係る改良型ＡＮＳＩ  ＰＲＮＧの変換関数におけるデータ処理フローを示す図である。
【図４】  本発明の実施例に係る改良型ＦＩＰＳ  ＰＲＮＧの変換関数におけるデータ処理フローを示す図である。
【符号の説明】
１０・・・従来型ＡＮＳＩ  ＰＲＮＧの変換関数、１２・・・従来型ＡＮＳＩＰＲＮＧのブロック暗号関数、３０・・・従来型ＦＩＰＳ  ＰＲＮＧの変換関数、３２・・・従来型ＦＩＰＳ  ＰＲＮＧのブロック暗号関数、３４・・・演算子、５０・・・改良型ＡＮＳＩ  ＰＲＮＧの変換関数、５２・・・改良型ＡＮＳＩ  ＰＲＮＧのブロック暗号関数、７０・・・改良型ＦＩＰＳ  ＰＲＮＧの変換関数、７２・・・改良型ＦＩＰＳ  ＰＲＮＧのブロック暗号関数、７４・・・演算子。
【図１】
0003851258.tif 000017
【図２】
0003851258.tif 000018
【図３】
0003851258.tif 000019
【図４】
0003851258.tif 000020