(57)【要約】【課題】従来法よりも一様性に優れ、容易に真性乱数と区別できない一様な乱数を生成すること。【解決手段】例えば、double型変数を用いて実装したカオス・ニューラルネットワーク１２０を構成するニューロン（この場合、ニューロンＮ１）から、時系列で発生する出力を取り出して、レジスタ１３０に格納する。このレジスタ１３０は、double型変数を格納できるレジスタ１３０である。レジスタ１３０から、仮数部の下位のｘビットを取り出す。取り出したビット列が乱数となっている。この場合、４つのニューロンで構成されているカオス・ニューラルネットワークのニューロンＮ１から取り出す例を示したが、カオス・ニューラルネットワークを構成しているニューロンであれば、どのニューロンから取り出してもよい。なお、このレジスタ１３０は、メイン・メモリ上にあってもよい。【選択図】図６
2006338045.tif 000002
【特許請求の範囲】
【請求項１】
カオス・ニューラルネットワークを用いた乱数生成システムであって、
小数点数による出力を有するカオス・ニューラルネットワークと、
該カオス・ニューラルネットワークからの出力である小数点数の仮数部の下位３２ビット，１６ビット，あるいは８ビットのいずれかを取り出す乱数出力部と
を備えることを特徴とする乱数生成システム。
【請求項２】
請求項１記載のカオス・ニューラルネットワークを用いた乱数生成システムと、
入力する平文と前記乱数生成システムからの乱数とを演算する演算部と
を備えることを特徴とする乱数を用いた暗号生成システム。
【請求項３】
請求項１に記載した乱数生成システム又は請求項２に記載した暗号生成システムをコンピュータ・システムに構成させることができるプログラムを格納した記録媒体。
【請求項４】
請求項１に記載した乱数生成システム又は請求項２に記載した暗号生成システムをコンピュータ・システムに構成させることができるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は真性乱数と区別できない一様乱数生成法に関し、特に、暗号などのセキュリティ・システムヘも適応できる暗号学的に安全な乱数生成に関する。
【技術的背景】
【０００２】
科学技術計算等における計算機シミュレーションに用いる一様であり良質な乱数の必要性と、ＩＴ技術を支えるセキュリティ・システムで用いる良質な乱数の必要性は増大している。
すなわち、乱数の利用例をあげると、モンテカルロ法、オペレーション・リサーチおよびサンプリング統計などの道具として、さらには堅牢なセキュリティ・システム構築のための基本的技術として欠かせないものになっている。
乱数には大別して、物理現象を利用して発生させる真性乱数と、代数的に発生させる擬似乱数の２種類がある。物理現象を利用した真性乱数生成法による乱数は、全く不規則な乱数列がえられる反面、乱数を得るためには乱数生成用の専用ハードウェアが必要となるうえ、取出した乱数の再現も困難である（EPO 981 A2、US 005706218A、特開平11−296348、US005696828A等を参照）。
これに対して、擬似乱数はソフトウェアのみで発生ができるために広く使われるが、発生法特有の規則性と周期性が残り、セキュリティシステムに用いるのは好ましくない。
【０００３】
すなわち、擬似乱数には等頻度性や、無相関性などの性質が求められるが、発生法に特有の規則性や特徴が残る。例えば、現在数値計算で一般的に用いられている線形合同法では乱数列をｎ個まとめてｎ次元ベクトルとし、ｎ次元空間にプロットしたとき、格子状に分布する特徴があり、この構造を多次元粗結晶構造と呼ぶ（香田徹、離散力学系のカオス、コロナ社、1998、p190〜p195等参照）。また、線形フィードバック・シフトレジスタ（ＬＦＳＲ）を用いた乱数生成器では、段数がＬの場合、（２Ｌ−１）個の出力から全系列が求まる特徴がある（香田徹、離散力学系のカオス、コロナ社、1998、p195〜p200等）。このような特徴があるため、真性乱数の存在を仮定している大規模な計算機シミュレーションにおいて重大な影響を及ぼすと考えられ、さらに、出力される乱数が真の一様乱数ではないことから、セキュリティ・システム用乱数には適さない性質である。
【０００４】
さて、これまでも、カオスである系の出力を擬似乱数発生源として用いる方法はあった。しかし、この場合、カオスの出力をそのまま乱数にしたものは、カオス特有の偏りがあり、一様性に欠ける（香田徹ら、擬似乱数とカオス、情報処理学会論文誌、Vol.27、No.3、p.289−296、Mar. 1986。特開平10−214177）。同様に、ロジスティック写像やそれと同相写像であるテント写像を用いて、カオス特有の出力値の偏りを取り除く手法も提案されているが、この場合、一度のカオス系の反復計算のみでは一様な乱数は取り出せず、１３回反復計算を繰り返したものを乱数列に用いるため、非常に煩雑である（渡辺裕明ら、テント写像に基づいた擬似乱数生成法、情報処理学会論文誌、Vol.40、No.7、p.2843−2850、July1999）。
一方、カオス・ニューラルネットワークを用いた乱数生成法は、出力をそのまま用いた場合には、出力値にはカオス特有の偏りが見られる。これは、カオス軌道がストレンジ・アトラクタと呼ばれる特異なアトラクタに軌道が引き寄せられることにより、一定周期毎に不安定周期解の近傍を訪れる性質があるため、出力頻度が偏る原因となっている。しかし、カオスはエルゴード性を有しており、カオス軌道は決して同じ軌道は通らない。厳密に言えばカオス・ニューラルネットワークの出力はすべて異なった値になっている。
【０００５】
まず、従来の技術である線形合同法の例を説明する。なお各定数の値（ａ，ｂ，ｍ）は、ヒューレットパッカード社のＯＳ（ＨＰ  ＵＸ１０．２０）にバンドルされているＣ言語におけるmrand48()関数の実装である。
［数１］
ｙｎ＋１＝（ａｙｎ＋ｃ）ｍｏｄ ｍ，  ｎ＝０，１，２，・・・      （１）
ここで、HPUXでは、ｍ＝２４６，ａ＝０ｘＤＥＥＣＥ６６Ｄ（１６進数），ｃ＝０ｘＢ（１６進数）である。
はじめに乱数の種となる初期値ｘ０を定める。乱数を生成する場合は、式（１）に従い、次の乱数を生成する。このため、初期値が定まるとその後の系列は一意に定まる。また、出力される乱数系列は、ｎ個まとめてｎ次元ベクトルとし、ｎ次元空間にプロットしたとき、格子状に分布する特徴がある（多次元粗結晶構造）ため、一様乱数は生成されない。
同様に、一般的に用いられる乱数生成器として、線形フィードバック・シフトレジスタがある。生成される数列の性質は、レジスタの状態を記憶する領域である、状態配列サイズに依存する。ＨＰ  ＵＸ１０．２０上のＣ言語の実装では、状態配列を３１個のlong型整数（long型整数は４ｂｙｔｅであるから、３１×４＝１２４ｂｙｔｅ）としており、その最大周期は約１６×（２３１−１）である。一般に、乱数生成器に用いたレジスタ数がｎ個の場合、乱数系列の最大周期が２ｎ−１になることが知られている。
【０００６】
カオスを用いた場合、乱数生成器では、カオス特有の出力値の偏りを、いかに取り除くかが鍵となる。特開平５−１５８６６２号公報記載の一様乱数生成法では、二次元のカオス系であるロジスティック写像を用いて乱数を生成している。この方法では、生成された実数値出力がある区間に入った場合、得られた出力値を定数倍することにより乱数を得るものである。しかし、この方法では、本来非線形な現象であるカオスの出力を定数倍するという方法により乱数を得るため、カオス特有の出力値の偏りを取り除くことができず、一様な乱数を取り出すためには、従来法と併用するなどの操作が必要である（同文献に記載されている）。
カオスを用いた擬似乱数生成法としては、ロジスティック写像などのカオス応答する二次写像の実数値出力のうち、下位Ｘｂｉｔを取り出し、乱数列にする方法が提案されている（渡辺裕明ら、テント写像に基づいた擬似乱数生成法、情報処理学会論文誌、Vol.40、No.7、p.2843−2850、July 1999）。この場合、下位32ビットから得られる乱数系列は頻度検定と最大値検定に合格している。しかし、ロジスティック写像は隣り合う数同士に強い相関関係があり、数列を擬似乱数として用いる場合に大きな問題となる。たとえば、ある写像回数ｉにおける写像の値ｙｉが１に非常に近い値の場合、次に得られるｙｉ＋１は必ず０に非常に近い値となる。これを回避するために、以下で述べる多重化の手法等がとられる。また、該文献において、ロジスティック写像と同相写像であるテント写像の出力をそのまま乱数とする方法も提案されている。この場合、比較的簡単な写像を用いていることから、取り出された乱数列は一様な乱数ではないと指摘されている。そのため、一度の写像の度に乱数を取り出すのではなく、ｍ個おきに乱数として用いた場合に一様な乱数列となっている。このような操作を多重化というが、一つの乱数を取り出すまでに十数個の乱数を生成しなければならず、効率が悪い。
上記に記載した二つの方法はともに、単純なカオス系を乱数生成原理として用いている。これらの写像は一対一写像であり、ある出力像から未来の状態を容易に予測できるという特徴を持つ。これは、暗号用乱数としては好ましくない性質である。
【発明の開示】
【発明が解決しようとする課題】
【０００７】
本発明の目的は、カオスの出力をそのまま乱数としたものではなく、特異なカオス応答をするカオス・ニューラルネットワークと、カオス特有の偏りを取り除く操作を組み合わせることにより、従来法よりも一様性に優れ、容易に真性乱数と区別できない一様な乱数を生成することである。
また、暗号学的に安全な、one time pad 暗号系を構築することである。
【課題を解決するための手段】
【０００８】
上記の目的を達成するために、本発明は、カオス・ニューラルネットワークを用いた乱数生成システムであって、小数点数による出力を有するカオス・ニューラルネットワークと、該カオス・ニューラルネットワークからの出力である小数点数の仮数部の下位３２ビット，１６ビット，あるいは８ビットのいずれかを取り出す乱数出力部とを備えることを特徴とする。
このカオス・ニューラルネットワークを用いた乱数生成システムと、入力する平文と前記乱数生成システムからの乱数とを演算する演算部とを備える暗号生成システムも、本発明である。
また、乱数生成システムや暗号生成システムをコンピュータ・システムに構成させることができるプログラムやこのプログラムを格納した記録媒体も本発明である。
【発明の効果】
【０００９】
本発明では、取り出すビットが３２ｂｉｔ，１６ｂｉｔ，８ｂｉｔの３つであるが、用途によって使い分けることが可能である。取り出すビット数が少ないほど予測困難性が増す。これとは逆に乱数生成速度は，取り出すビット数が多いほど高速になる。すなわち、高速性が要求される場合には３２ｂｉｔ取り出し、予測困難性が要求される場合には８ｂｉｔ取り出すようにする。また、高速性と質の両方が必要な場合には、１６ｂｉｔ取り出すようにする。このような使い分けが可能である。
【発明を実施するための最良の形態】
【００１０】
以下、図面を参照して、本発明の実施形態を説明する。
本発明では、カオス・ニューラルネットワークを用いた乱数生成法を提案する。すなわち、カオス・ニューラルネットワークから取り出された出力値から、カオス特有の偏り成分を取除くことにより達成される。
本発明は、特異なカオス応答をするカオス・ニューラルネットワークの出力値から、カオス特有の軌道の偏りのある部分を取り除いて乱数生成に用いることにより、一様性に優れ真性乱数と区別できない乱数を生成することができる。
カオス・ニューラルネットワークを用いた本発明では、一対多写像であるため、生成されたある乱数から将来の状態を予測するのは困難である。さらにカオス・ニューラルネットワークは、計算する環境（ＣＰＵ・ＯＳの種類、コンパイラ、ライブラリ）に依存するという特異な性質を持つ。この性質はカオス・ニューラルネットワーク固有のものであり、暗号用乱数としては優れている。また、従来法では、多重化などの方法を用いた場合にはじめて一様な乱数列が取り出せるのに対し、本発明では冗長な操作を施さずに、出力値の下位ビットを取り出しただけで一様乱数が生成できるという、非常に優れた特性を有している。
さらに、本方法を用いることにより、暗号学的な安全性が保証されているone time pad 暗号系を構築することができるため、ＩＴ社会の情報基盤であるセキュリティ・システムヘ適用することができる。
【００１１】
まず、本発明に用いているカオス・ニューラルネットワークを説明する。カオス・ニューラルネットワークとは、ホップフィールド・ネットワークや誤差逆伝搬学習則で用いられている通常のニューロン・モデルを用いたネットワークで、カオス応答があるもののことである。なお、カオス・ニューラルネットワークについては、例えば特願平１１−３２１４４４号（特開２００１−１４４７４６号公報）等を参照されたい。
図１は、ニューロン・モデルを示す図である。図１に示すニューロン・モデルでは、自己再帰結合は用いていない。図１に示されているニューロンのある時刻ｔ＋１における出力は、以下の式で表される。
【数２】
2006338045.tif 000003
このニューロン・モデルにおける非線形関数ｆは、バック・プロパケーション・モデルやホップフィールド・モデルなどで広く用いられている、sigmoid関数を用いている。λは、関数の傾きを表す。
【００１２】
自然界では単一で振動する出力を発生するニューロンもあるが、カオス・ニューラルネットワークに用いた上述のニューロンの場合には、１個のニューロンのみでは振動しない。図２に、最も基本的な振動するネットワークを示す。この系は、重み係数の正負によってその振る舞いが変化すると考えられるが、いずれの場合においても、その出力は収束するか振動するかであり、その振動周期も最大で４周期であることが明らかになっている（川村暁，吉田等明，恒川佳隆，三浦守 ”カオス・ニューラルネットワークの最小構成” 信学技報 ＮＣ９８−１０７ １９９９年３月）。
次に、この基本ネットワークを含む、ニューロン数がｎ個のネットワークへの拡張を考える。図３に、基本ネットワークを含むｎニューロン・ネットワークの構成を示す。図３に示すように、このネットワークは、図２に示したような基本ネットワークを構成しているＮ１およびＮ２のニューロンと、その他のＮ３〜Ｎｎのニューロンとで構成されている。このネットワークは、以下の各要素により特徴づけられる。
・基本ネットワークの種類
・ニューロン数
・ニューロン間の重み係数の符号
この構成のネットワークにおいて、ニューロン数が３個以上のネットワークにおいて、カオス応答するネットワークが存在し、そのようなネットワークをカオス・ニューラルネットワークと呼ぶ。
ネットワーク応答がカオスである場合の必要条件は、各ニューロンに属する値（系列と呼ぶ）の「混じり合い」による。また、カオス・ニューラルネットワークは、単一のニューロンでカオスを出力しているのではなく、系全体でカオスとなっている。そのため、単一ニューロンの出力値は、同一になる場合があると考えられる。
【００１３】
＜一方向性関数＞
カオス・ニューラルネットワークは、ネットワーク構成と外部入力値が定まれば、時系列信号を容易に取り出すことができる。この外部入力値と、ある一つのニューロンの出力値（信号）の関係について考える。さて、初期値鋭敏性とは、初期値の僅かなずれを、それがどんなに小さなずれであっても、時間とともに指数関数的に拡大する性質を有していることをいう。カオス・ニューラルネットワークは初期値鋭敏性を有している。また、ある関数ｙ＝ｆ（ｘ）が一方向性関数であるとは、ｘよりｙ＝ｆ（ｘ）を計算するのは容易であるが、逆にｙよりｘを求めるのが困難な関数のことをいう。
カオス・ニューラルネットワークの外部入力値ｘと、あるニューロンの出力値ｙ（ニューロンＮ１など）との関係は、カオス・ニューラルネットワークが有している初期値鋭敏性により、初期値（外部入力値）が微少に異なる場合、その振る舞いの時間発展が全く異なったものとなる。また、系がカオスである場合、その軌道にはエルゴード性があるため、非常に近い軌道を通る状態の間には相関がなく、出力値から外部入力値を推定するのは困難であるといえる。よって、出力値ｙから外部入力値ｘを求めるのは困難である。さらに、あるニューロンの出力値に注目すると、その出力値は同一の値をとることがあると考えられる。よって、外部入力値ｘと出力値ｙは一対一写像ではなく、一対多写像であるといえる。よって、カオス・ニューラルネットワークの外部入力値ｘと、あるニューロンの出力値ｙの関数ｙ＝ｆ（ｘ）は、一方向性関数ｆであるといえる。
上述のカオス・ニューラルネットワークの一例としてニューロン数が４個の場合を図４に示す。図４に示したカオス・ニューラルネットワークは、図２に示したような基本ネットワークを構成しているＮ１およびＮ２のニューロンと、この２つのニューロンに接続されているニューロンＮ３，Ｎ４とで構成されている。
【００１４】
＜乱数の発生＞
さて、図４等に示された構成のカオス・ニューラルネットワークは、コンピュータ・システム内に、Ｃ言語等を用いてコーディングして実装することができる。この場合、各種変数の型として、ＩＥＥＥ７５４準拠のdouble型変数を用いていることが多い。その数表現は、図５に示すように、符号、仮数部、指数部より成り、実数値は２進数で（符号）実数部×２指数部と表される。従って、このようにして構成されたカオス・ニューラルネットワークを構成するニューロンからの出力も同じ形式をとっている。
図６に本発明の実施形態の構成を示す。図６において、例えば、double型変数を用いて実装したカオス・ニューラルネットワーク１２０を構成するニューロン（この場合、ニューロンＮ１）から、時系列で発生する出力を取り出して、レジスタ１３０に格納する。このレジスタ１３０は、double型変数を格納できるレジスタ１３０である。レジスタ１３０から、仮数部の下位のｘビットを取り出す。取り出したビット列が乱数となっている。この場合、４つのニューロンで構成されているカオス・ニューラルネットワークのニューロンＮ１から取り出す例を示したが、カオス・ニューラルネットワークを構成しているニューロンであれば、どのニューロンから取り出してもよい。なお、このレジスタ１３０は、メイン・メモリ上にあってもよい。
また、数表現がＩＥＥＥ７５４形式以外の場合でも、浮動小数点または固定小数点表現を用いている場合は、本手法を適応できる。
＜乱数を用いた暗号への適用＞
上述の乱数生成システムは、暗号生成システムに対して適用することができる。上述のカオス・ニューラルネットワークを用いた乱数生成システムの出力値から生成された乱数列は、一様性に優れており、真性乱数と区別できない乱数である。このため、この乱数を用いることにより、暗号学的な安全性が保証されているone time pad暗号系を構築することができる。
【実施例】
【００１５】
本発明の効果を実証するための実施例として、図６に示したような、４個のニューロンから構成されるカオス・ニューラルネットワークのニューロンＮ１から発生する浮動小数の仮数部の下位３２ｂｉｔを乱数として出力する乱数生成器により生成される乱数列を、４ビットづつ区切って１６進数で表したものを図７に示す。なお、仮数部の下位ビットを取る場合、８ビット、１６ビット等としてもよい。
さて、図６のように、ニューロン４個で構成したカオス・ニューラルネットワーク自体の出力のヒストグラムを図８（ａ）に示す。カオス・ニューラルネットワークのニューロンＮ１の出力値は、シグモイド関数の値域である０≦ｘ≦１である。図８（ａ）の横軸は、この出力値の値域を１０の４乗個に分けた区画の番号である。なお、図８（ａ）では、実際の出力値と対応させるために、１０−４と表記している。図８（ａ）のヒストグラムから分かるように、カオス系特有の偏りがみられる。この偏った出力値に、本発明の手法を適応して得られた乱数列のヒストグラムの一例を図８（ｂ）に示す。図８（ｂ）は、本発明手法を用いて仮数部の下位３２ビットを取り出し、それを４バイトずつに区切ってヒストグラムとしたものである。図８（ｂ）から分かるように、このようにして得られた乱数列は、一様に分布している。
【００１６】
＜一様性の検定＞
以下で、生成法が簡単であり、得られる数列の性質が良好なため、もっとも一般的に用いられている線形合同法と本方法を比較した。線形合同法としては、Ｃ言語に実装されているmrand４８関数を用いた。
生成された乱数列からそれぞれ１ｂｉｔ，２ｂｉｔ，４ｂｉｔ，８ｂｉｔおよび１６ｂｉｔずつ抽出し、出現頻度の一様性を検定した結果の表を、本発明の実施例による結果を図９（ａ）に、線形合同法の結果を図９（ｂ）に示す。検定には出現頻度が一様であると仮定してχ２検定を行った。検定には、統計パッケージＲ（Ｔｈｅ  ＧＮＵ  Ｓ）を用いた。一般的に有意確率（ｐ−ｖａｌｕｅ）が０．０５未満の場合、仮説は棄却される。すなわち、仮説は数列が一様乱数であるとしているので棄却された場合、乱数列は一様乱数ではない、と示唆される。
図９（ａ）および図９（ｂ）の表に示されている結果より、本発明法により生成された乱数列は出現頻度が一様分布に従うといえる。また、線形合同法により生成された乱数列も同様である。
【００１７】
＜連の検定＞
連とは、一般的に、一様乱数が単調に増加、あるいは減少する範囲のことをいう。ここでは、１または０が続く範囲と定義する。ランダムなビット列の場合、すなわち一様乱数であるならば、連の長さｒはｐ（ｒ）＝（１／２）−ｒの確率分布に従う。
擬似乱数の連の長さがｐ（ｒ）に従うかどうか、一様性の検定と同じ方法で検定した。本発明による乱数列の結果の表を図１０（ａ）に、従来法（線形合同法）の乱数列の結果の表を図１０（ｂ）に示す。この場合も、一様性の検定と同じく、本発明による乱数列の結果は一様乱数であると示唆される構成が存在する。
【００１８】
＜ビットストリーム検定＞
本発明によるものと、従来法である線形合同法を比較した結果について、以下に述べる。なお、検定には、下位３２ｂｉｔ取り出して乱数列としたものを用いている。
まず、擬似乱数列から２０ｂｉｔを取り出し、１ｂｉｔずつずらして重ね合わせたときに同じパターンが現れなかった数を調べ、それが真性乱数の分布に従うかどうかを検定した。検定は擬似乱数検定パッケージDiehardを用いて行った。この検定法では、ＫＳ検定（Kolmogorov−Shumirnov test）を用いているため、棄却率は有意確率ｐ−ｖａｌｕｅが０．０２５未満の場合あるいは０．９７５以上の場合である。ここでは、２０ビット列を２０種類用意し、検定を行った。この結果を図１１の表に示す。本発明による乱数列は、図１１の表から分かるように棄却されず、一様分布であると示唆される構成が存在する。これに対し従来法（線形合同法）による乱数列は一様分布ではない。
【００１９】
＜そのほかの検定結果＞
擬似乱数検定パッケージDiehardを用いて行ったそのほかの検定のうち、いくつかの結果を示す。
図１２の表は、ＯＰＳＯテストの結果である。ＯＰＳＯ（＝0verlapping Paris Sparse Occupancy）テストとは、取り出された乱数を３２ビット単位として、ここから１０ビットを取り出し単語とする。取り出された単語の列のうち、同一語が現れなかった確率が一様分布に従う乱数と見なせるかどうか検定を行うものである。検定結果より、本発明による乱数列は一様乱数であると示唆される構成が存在するが、線形合同法による乱数列は棄却されている。
図１３の表は、ＤＮＡテストの結果である。ＯＰＳＯテストと同様に、取り出された乱数を３２ビット単位として、ここから２ビットをとりだし遺伝子の塩基配列とみなしＣ，Ｇ，Ａ，Ｔとする。取り出された遺伝子１０個ずつのうち、同一語が現れなかった確率が一様分布に従う乱数と見なせるかどうか検定を行うものである。検定結果より、本発明による乱数は一様乱数であると示唆される構成が存在するが、線形合同法は棄却されている。
以上の検定結果を通じ、本実施例がいずれの検定においても棄却されない構成が存在することが明らかとなった。これに対し従来法（線形合同法）は、一様性の検定と連の検定は満足するが、それ以外のすべての検定で棄却されている（即ち、一様乱数ではない）のとは対照的である。
前に述べたように、用いたネットワークが最適な構成でない可能性もあるが、従来法と比較して格段に一様性に優れた乱数が生成されていることが明らかとなった。
【００２０】
＜乱数を用いた暗号＞
一様乱数と区別できない乱数を付加する形式の暗号系は解読不可能である。本発明の乱数を用いた暗号と従来法の暗号を比較する。暗号の安全性及び暗号化速度の比較を行う。
＜暗号強度の比較＞
一般的に、暗号強度の比較は難しい問題であり、すべての暗号形式を統一的な指標ではかるのは困難である。そこでよく用いられる方法として、暗号文の統計的性質を暗号強度評価に用いる。すなわち、暗号文には平文の特徴が残っていないのが理想的であるが、通常の暗号形式では、暗号形式ごとの統計的特徴（偏り）が残ってしまう。理想的には、平文を暗号化して得られた暗号文には平文の統計的な特徴が残っていないのが望ましい。そこで、この暗号文の統計的性質を調べることにより、暗号強度を統一的に比較することができる。本稿では、累加カイ二乗の法則が成立するかしないかで判定を行う。
累加カイ二乗の法則とは、暗号文の分布が平等乱字（一様分布）であるか検定した結果のχ２値が、資料語数Ｎの増加とともに暗号形式毎に増加の様子が異なる性質のことをいう。通常の暗号形式の場合、平文サイズとともに暗号文のカイ二乗値は単調に増加する。また逆に、平文サイズをいくら増やしても暗号文のカイ二乗値が増加しない場合、その暗号系は統計的に安全であるといえる（加藤正隆，基礎暗号学II，サイエンス社，1989）。
本発明の乱数を用いたＣＮＮ  Ｃｉｐｈｅｒと、従来法の暗号の比較を行った結果を図１４に示す。比較対象としては、ｔｒｉｐｌｅＤＥＳ，ＲＩＪＮＤＥＡＬ（鍵長２５６ｂｉｔ）、及びＧＣＣカオス暗号を用いた。なお、いずれのグラフも片対数グラフで示した。なお、入力ファイルは全ビットが１のものを用い、検定は暗号文の出力８ｂｉｔ単位で行った。
図１４に示すグラフから明らかに、いずれの従来法においても累加カイ二乗の法則が成立し、統計的な強度が不十分であることがわかる。これに対し本発明法では、累加カイ二乗の法則が成立せず、暗号文は一様乱字と同等である。よって本発明による暗号法は、統計的に非常に強固な暗号系である。
【００２１】
＜暗号化速度の比較＞
暗号化速度の比較を本発明の暗号化速度を１００として行った。結果を表１に示す。比較対象として、ｔｒｉｐｌｅＤＥＳ，ＲＩＪＮＤＥＡＬ（鍵長２５６ｂｉｔ）、ＳＥＲＰＥＮＴ、ＴＷＯＦＩＳＨ及びＧＣＣカオス暗号を用いた。
【表１】
2006338045.tif 000004
本手法と比較して、従来法はいずれも数十分の一の速度しかなく、非常に低速であることがわかる。
【００２２】
これらの結果から、カオス・ニューラルネットワークを用いた擬似乱数システムにおいては、良質な擬似乱数が得られる。
また、以上で述べたカオス・ニューラルネットワークを用いた擬似乱数システムをone time pad暗号に適用することにより、安全性が高く非常に高速なセキュリティ・システムが構築できる。
取り出すビットを３２ｂｉｔ，１６ｂｉｔ，８ｂｉｔの３つとした場合、用途によって使い分けることが可能である。取り出すビット数が少ないほど予測困難性が増す。これとは逆に乱数生成速度は、取り出すビット数が多いほど高速になる。すなわち、高速性が要求される場合には３２ｂｉｔ取り出し、予測困難性が要求される場合には８ｂｉｔ取り出すようにする。また、高速性と質の両方が必要な場合には、１６ｂｉｔ取り出すようにする。このような使い分けが可能である。
【図面の簡単な説明】
【００２３】
【図１】ニューロンを示す図である。
【図２】基本的な振動するニューラルネットワークの構成を示す図である。
【図３】カオス・ニューラルネットワークの構成を示す図である。
【図４】４つのニューロンで構成したカオス・ニューラルネットワークを示す図である。
【図５】浮動小数点の構成を示す図である。
【図６】本発明の乱数発生システムの構成例を示す図である。
【図７】本発明の乱数発生システムで発生した乱数列の例を示す図である。
【図８】本発明の乱数が一様であることを示すグラフである。
【図９】乱数の一様性の検定結果を示す表である。
【図１０】乱数列の連の一様性の検定結果を示す表である。
【図１１】ビットストリームの一様性の検定結果を示す表である。
【図１２】ＯＰＳＯテストの結果を示す表である。
【図１３】ＤＮＡテストの結果を示す表である。
【図１４】暗号化強度を示すグラフである。
【図１】
2006338045.tif 000005
【図２】
2006338045.tif 000006
【図３】
2006338045.tif 000007
【図４】
2006338045.tif 000008
【図５】
2006338045.tif 000009
【図６】
2006338045.tif 000010
【図７】
2006338045.tif 000011
【図８】
2006338045.tif 000012
【図９】
2006338045.tif 000013
【図１０】
2006338045.tif 000014
【図１１】
2006338045.tif 000015
【図１２】
2006338045.tif 000016
【図１３】
2006338045.tif 000017
【図１４】
2006338045.tif 000018