カオス・ニューラルネットワークを用いた乱数生成システム
【課題】従来法よりも一様性に優れ、容易に真性乱数と区別できない一様な乱数を生成すること。
【解決手段】例えば、double型変数を用いて実装したカオス・ニューラルネットワーク120を構成するニューロン(この場合、ニューロンN1)から、時系列で発生する出力を取り出して、レジスタ130に格納する。このレジスタ130は、double型変数を格納できるレジスタ130である。レジスタ130から、仮数部の下位のxビットを取り出す。取り出したビット列が乱数となっている。この場合、4つのニューロンで構成されているカオス・ニューラルネットワークのニューロンN1から取り出す例を示したが、カオス・ニューラルネットワークを構成しているニューロンであれば、どのニューロンから取り出してもよい。なお、このレジスタ130は、メイン・メモリ上にあってもよい。
【解決手段】例えば、double型変数を用いて実装したカオス・ニューラルネットワーク120を構成するニューロン(この場合、ニューロンN1)から、時系列で発生する出力を取り出して、レジスタ130に格納する。このレジスタ130は、double型変数を格納できるレジスタ130である。レジスタ130から、仮数部の下位のxビットを取り出す。取り出したビット列が乱数となっている。この場合、4つのニューロンで構成されているカオス・ニューラルネットワークのニューロンN1から取り出す例を示したが、カオス・ニューラルネットワークを構成しているニューロンであれば、どのニューロンから取り出してもよい。なお、このレジスタ130は、メイン・メモリ上にあってもよい。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は真性乱数と区別できない一様乱数生成法に関し、特に、暗号などのセキュリティ・システムヘも適応できる暗号学的に安全な乱数生成に関する。
【技術的背景】
【0002】
科学技術計算等における計算機シミュレーションに用いる一様であり良質な乱数の必要性と、IT技術を支えるセキュリティ・システムで用いる良質な乱数の必要性は増大している。
すなわち、乱数の利用例をあげると、モンテカルロ法、オペレーション・リサーチおよびサンプリング統計などの道具として、さらには堅牢なセキュリティ・システム構築のための基本的技術として欠かせないものになっている。
乱数には大別して、物理現象を利用して発生させる真性乱数と、代数的に発生させる擬似乱数の2種類がある。物理現象を利用した真性乱数生成法による乱数は、全く不規則な乱数列がえられる反面、乱数を得るためには乱数生成用の専用ハードウェアが必要となるうえ、取出した乱数の再現も困難である(EPO 981 A2、US 005706218A、特開平11−296348、US005696828A等を参照)。
これに対して、擬似乱数はソフトウェアのみで発生ができるために広く使われるが、発生法特有の規則性と周期性が残り、セキュリティシステムに用いるのは好ましくない。
【0003】
すなわち、擬似乱数には等頻度性や、無相関性などの性質が求められるが、発生法に特有の規則性や特徴が残る。例えば、現在数値計算で一般的に用いられている線形合同法では乱数列をn個まとめてn次元ベクトルとし、n次元空間にプロットしたとき、格子状に分布する特徴があり、この構造を多次元粗結晶構造と呼ぶ(香田徹、離散力学系のカオス、コロナ社、1998、p190〜p195等参照)。また、線形フィードバック・シフトレジスタ(LFSR)を用いた乱数生成器では、段数がLの場合、(2L−1)個の出力から全系列が求まる特徴がある(香田徹、離散力学系のカオス、コロナ社、1998、p195〜p200等)。このような特徴があるため、真性乱数の存在を仮定している大規模な計算機シミュレーションにおいて重大な影響を及ぼすと考えられ、さらに、出力される乱数が真の一様乱数ではないことから、セキュリティ・システム用乱数には適さない性質である。
【0004】
さて、これまでも、カオスである系の出力を擬似乱数発生源として用いる方法はあった。しかし、この場合、カオスの出力をそのまま乱数にしたものは、カオス特有の偏りがあり、一様性に欠ける(香田徹ら、擬似乱数とカオス、情報処理学会論文誌、Vol.27、No.3、p.289−296、Mar. 1986。特開平10−214177)。同様に、ロジスティック写像やそれと同相写像であるテント写像を用いて、カオス特有の出力値の偏りを取り除く手法も提案されているが、この場合、一度のカオス系の反復計算のみでは一様な乱数は取り出せず、13回反復計算を繰り返したものを乱数列に用いるため、非常に煩雑である(渡辺裕明ら、テント写像に基づいた擬似乱数生成法、情報処理学会論文誌、Vol.40、No.7、p.2843−2850、July1999)。
一方、カオス・ニューラルネットワークを用いた乱数生成法は、出力をそのまま用いた場合には、出力値にはカオス特有の偏りが見られる。これは、カオス軌道がストレンジ・アトラクタと呼ばれる特異なアトラクタに軌道が引き寄せられることにより、一定周期毎に不安定周期解の近傍を訪れる性質があるため、出力頻度が偏る原因となっている。しかし、カオスはエルゴード性を有しており、カオス軌道は決して同じ軌道は通らない。厳密に言えばカオス・ニューラルネットワークの出力はすべて異なった値になっている。
【0005】
まず、従来の技術である線形合同法の例を説明する。なお各定数の値(a,b,m)は、ヒューレットパッカード社のOS(HP UX10.20)にバンドルされているC言語におけるmrand48()関数の実装である。
[数1]
yn+1=(ayn+c)mod m, n=0,1,2,・・・ (1)
ここで、HPUXでは、m=246,a=0xDEECE66D(16進数),c=0xB(16進数)である。
はじめに乱数の種となる初期値x0を定める。乱数を生成する場合は、式(1)に従い、次の乱数を生成する。このため、初期値が定まるとその後の系列は一意に定まる。また、出力される乱数系列は、n個まとめてn次元ベクトルとし、n次元空間にプロットしたとき、格子状に分布する特徴がある(多次元粗結晶構造)ため、一様乱数は生成されない。
同様に、一般的に用いられる乱数生成器として、線形フィードバック・シフトレジスタがある。生成される数列の性質は、レジスタの状態を記憶する領域である、状態配列サイズに依存する。HP UX10.20上のC言語の実装では、状態配列を31個のlong型整数(long型整数は4byteであるから、31×4=124byte)としており、その最大周期は約16×(231−1)である。一般に、乱数生成器に用いたレジスタ数がn個の場合、乱数系列の最大周期が2n−1になることが知られている。
【0006】
カオスを用いた場合、乱数生成器では、カオス特有の出力値の偏りを、いかに取り除くかが鍵となる。特開平5−158662号公報記載の一様乱数生成法では、二次元のカオス系であるロジスティック写像を用いて乱数を生成している。この方法では、生成された実数値出力がある区間に入った場合、得られた出力値を定数倍することにより乱数を得るものである。しかし、この方法では、本来非線形な現象であるカオスの出力を定数倍するという方法により乱数を得るため、カオス特有の出力値の偏りを取り除くことができず、一様な乱数を取り出すためには、従来法と併用するなどの操作が必要である(同文献に記載されている)。
カオスを用いた擬似乱数生成法としては、ロジスティック写像などのカオス応答する二次写像の実数値出力のうち、下位Xbitを取り出し、乱数列にする方法が提案されている(渡辺裕明ら、テント写像に基づいた擬似乱数生成法、情報処理学会論文誌、Vol.40、No.7、p.2843−2850、July 1999)。この場合、下位32ビットから得られる乱数系列は頻度検定と最大値検定に合格している。しかし、ロジスティック写像は隣り合う数同士に強い相関関係があり、数列を擬似乱数として用いる場合に大きな問題となる。たとえば、ある写像回数iにおける写像の値yiが1に非常に近い値の場合、次に得られるyi+1は必ず0に非常に近い値となる。これを回避するために、以下で述べる多重化の手法等がとられる。また、該文献において、ロジスティック写像と同相写像であるテント写像の出力をそのまま乱数とする方法も提案されている。この場合、比較的簡単な写像を用いていることから、取り出された乱数列は一様な乱数ではないと指摘されている。そのため、一度の写像の度に乱数を取り出すのではなく、m個おきに乱数として用いた場合に一様な乱数列となっている。このような操作を多重化というが、一つの乱数を取り出すまでに十数個の乱数を生成しなければならず、効率が悪い。
上記に記載した二つの方法はともに、単純なカオス系を乱数生成原理として用いている。これらの写像は一対一写像であり、ある出力像から未来の状態を容易に予測できるという特徴を持つ。これは、暗号用乱数としては好ましくない性質である。
【発明の開示】
【発明が解決しようとする課題】
【0007】
本発明の目的は、カオスの出力をそのまま乱数としたものではなく、特異なカオス応答をするカオス・ニューラルネットワークと、カオス特有の偏りを取り除く操作を組み合わせることにより、従来法よりも一様性に優れ、容易に真性乱数と区別できない一様な乱数を生成することである。
また、暗号学的に安全な、one time pad 暗号系を構築することである。
【課題を解決するための手段】
【0008】
上記の目的を達成するために、本発明は、カオス・ニューラルネットワークを用いた乱数生成システムであって、小数点数による出力を有するカオス・ニューラルネットワークと、該カオス・ニューラルネットワークからの出力である小数点数の仮数部の下位32ビット,16ビット,あるいは8ビットのいずれかを取り出す乱数出力部とを備えることを特徴とする。
このカオス・ニューラルネットワークを用いた乱数生成システムと、入力する平文と前記乱数生成システムからの乱数とを演算する演算部とを備える暗号生成システムも、本発明である。
また、乱数生成システムや暗号生成システムをコンピュータ・システムに構成させることができるプログラムやこのプログラムを格納した記録媒体も本発明である。
【発明の効果】
【0009】
本発明では、取り出すビットが32bit,16bit,8bitの3つであるが、用途によって使い分けることが可能である。取り出すビット数が少ないほど予測困難性が増す。これとは逆に乱数生成速度は,取り出すビット数が多いほど高速になる。すなわち、高速性が要求される場合には32bit取り出し、予測困難性が要求される場合には8bit取り出すようにする。また、高速性と質の両方が必要な場合には、16bit取り出すようにする。このような使い分けが可能である。
【発明を実施するための最良の形態】
【0010】
以下、図面を参照して、本発明の実施形態を説明する。
本発明では、カオス・ニューラルネットワークを用いた乱数生成法を提案する。すなわち、カオス・ニューラルネットワークから取り出された出力値から、カオス特有の偏り成分を取除くことにより達成される。
本発明は、特異なカオス応答をするカオス・ニューラルネットワークの出力値から、カオス特有の軌道の偏りのある部分を取り除いて乱数生成に用いることにより、一様性に優れ真性乱数と区別できない乱数を生成することができる。
カオス・ニューラルネットワークを用いた本発明では、一対多写像であるため、生成されたある乱数から将来の状態を予測するのは困難である。さらにカオス・ニューラルネットワークは、計算する環境(CPU・OSの種類、コンパイラ、ライブラリ)に依存するという特異な性質を持つ。この性質はカオス・ニューラルネットワーク固有のものであり、暗号用乱数としては優れている。また、従来法では、多重化などの方法を用いた場合にはじめて一様な乱数列が取り出せるのに対し、本発明では冗長な操作を施さずに、出力値の下位ビットを取り出しただけで一様乱数が生成できるという、非常に優れた特性を有している。
さらに、本方法を用いることにより、暗号学的な安全性が保証されているone time pad 暗号系を構築することができるため、IT社会の情報基盤であるセキュリティ・システムヘ適用することができる。
【0011】
まず、本発明に用いているカオス・ニューラルネットワークを説明する。カオス・ニューラルネットワークとは、ホップフィールド・ネットワークや誤差逆伝搬学習則で用いられている通常のニューロン・モデルを用いたネットワークで、カオス応答があるもののことである。なお、カオス・ニューラルネットワークについては、例えば特願平11−321444号(特開2001−144746号公報)等を参照されたい。
図1は、ニューロン・モデルを示す図である。図1に示すニューロン・モデルでは、自己再帰結合は用いていない。図1に示されているニューロンのある時刻t+1における出力は、以下の式で表される。
【数2】
このニューロン・モデルにおける非線形関数fは、バック・プロパケーション・モデルやホップフィールド・モデルなどで広く用いられている、sigmoid関数を用いている。λは、関数の傾きを表す。
【0012】
自然界では単一で振動する出力を発生するニューロンもあるが、カオス・ニューラルネットワークに用いた上述のニューロンの場合には、1個のニューロンのみでは振動しない。図2に、最も基本的な振動するネットワークを示す。この系は、重み係数の正負によってその振る舞いが変化すると考えられるが、いずれの場合においても、その出力は収束するか振動するかであり、その振動周期も最大で4周期であることが明らかになっている(川村暁,吉田等明,恒川佳隆,三浦守 ”カオス・ニューラルネットワークの最小構成” 信学技報 NC98−107 1999年3月)。
次に、この基本ネットワークを含む、ニューロン数がn個のネットワークへの拡張を考える。図3に、基本ネットワークを含むnニューロン・ネットワークの構成を示す。図3に示すように、このネットワークは、図2に示したような基本ネットワークを構成しているN1およびN2のニューロンと、その他のN3〜Nnのニューロンとで構成されている。このネットワークは、以下の各要素により特徴づけられる。
・基本ネットワークの種類
・ニューロン数
・ニューロン間の重み係数の符号
この構成のネットワークにおいて、ニューロン数が3個以上のネットワークにおいて、カオス応答するネットワークが存在し、そのようなネットワークをカオス・ニューラルネットワークと呼ぶ。
ネットワーク応答がカオスである場合の必要条件は、各ニューロンに属する値(系列と呼ぶ)の「混じり合い」による。また、カオス・ニューラルネットワークは、単一のニューロンでカオスを出力しているのではなく、系全体でカオスとなっている。そのため、単一ニューロンの出力値は、同一になる場合があると考えられる。
【0013】
<一方向性関数>
カオス・ニューラルネットワークは、ネットワーク構成と外部入力値が定まれば、時系列信号を容易に取り出すことができる。この外部入力値と、ある一つのニューロンの出力値(信号)の関係について考える。さて、初期値鋭敏性とは、初期値の僅かなずれを、それがどんなに小さなずれであっても、時間とともに指数関数的に拡大する性質を有していることをいう。カオス・ニューラルネットワークは初期値鋭敏性を有している。また、ある関数y=f(x)が一方向性関数であるとは、xよりy=f(x)を計算するのは容易であるが、逆にyよりxを求めるのが困難な関数のことをいう。
カオス・ニューラルネットワークの外部入力値xと、あるニューロンの出力値y(ニューロンN1など)との関係は、カオス・ニューラルネットワークが有している初期値鋭敏性により、初期値(外部入力値)が微少に異なる場合、その振る舞いの時間発展が全く異なったものとなる。また、系がカオスである場合、その軌道にはエルゴード性があるため、非常に近い軌道を通る状態の間には相関がなく、出力値から外部入力値を推定するのは困難であるといえる。よって、出力値yから外部入力値xを求めるのは困難である。さらに、あるニューロンの出力値に注目すると、その出力値は同一の値をとることがあると考えられる。よって、外部入力値xと出力値yは一対一写像ではなく、一対多写像であるといえる。よって、カオス・ニューラルネットワークの外部入力値xと、あるニューロンの出力値yの関数y=f(x)は、一方向性関数fであるといえる。
上述のカオス・ニューラルネットワークの一例としてニューロン数が4個の場合を図4に示す。図4に示したカオス・ニューラルネットワークは、図2に示したような基本ネットワークを構成しているN1およびN2のニューロンと、この2つのニューロンに接続されているニューロンN3,N4とで構成されている。
【0014】
<乱数の発生>
さて、図4等に示された構成のカオス・ニューラルネットワークは、コンピュータ・システム内に、C言語等を用いてコーディングして実装することができる。この場合、各種変数の型として、IEEE754準拠のdouble型変数を用いていることが多い。その数表現は、図5に示すように、符号、仮数部、指数部より成り、実数値は2進数で(符号)実数部×2指数部と表される。従って、このようにして構成されたカオス・ニューラルネットワークを構成するニューロンからの出力も同じ形式をとっている。
図6に本発明の実施形態の構成を示す。図6において、例えば、double型変数を用いて実装したカオス・ニューラルネットワーク120を構成するニューロン(この場合、ニューロンN1)から、時系列で発生する出力を取り出して、レジスタ130に格納する。このレジスタ130は、double型変数を格納できるレジスタ130である。レジスタ130から、仮数部の下位のxビットを取り出す。取り出したビット列が乱数となっている。この場合、4つのニューロンで構成されているカオス・ニューラルネットワークのニューロンN1から取り出す例を示したが、カオス・ニューラルネットワークを構成しているニューロンであれば、どのニューロンから取り出してもよい。なお、このレジスタ130は、メイン・メモリ上にあってもよい。
また、数表現がIEEE754形式以外の場合でも、浮動小数点または固定小数点表現を用いている場合は、本手法を適応できる。
<乱数を用いた暗号への適用>
上述の乱数生成システムは、暗号生成システムに対して適用することができる。上述のカオス・ニューラルネットワークを用いた乱数生成システムの出力値から生成された乱数列は、一様性に優れており、真性乱数と区別できない乱数である。このため、この乱数を用いることにより、暗号学的な安全性が保証されているone time pad暗号系を構築することができる。
【実施例】
【0015】
本発明の効果を実証するための実施例として、図6に示したような、4個のニューロンから構成されるカオス・ニューラルネットワークのニューロンN1から発生する浮動小数の仮数部の下位32bitを乱数として出力する乱数生成器により生成される乱数列を、4ビットづつ区切って16進数で表したものを図7に示す。なお、仮数部の下位ビットを取る場合、8ビット、16ビット等としてもよい。
さて、図6のように、ニューロン4個で構成したカオス・ニューラルネットワーク自体の出力のヒストグラムを図8(a)に示す。カオス・ニューラルネットワークのニューロンN1の出力値は、シグモイド関数の値域である0≦x≦1である。図8(a)の横軸は、この出力値の値域を10の4乗個に分けた区画の番号である。なお、図8(a)では、実際の出力値と対応させるために、10−4と表記している。図8(a)のヒストグラムから分かるように、カオス系特有の偏りがみられる。この偏った出力値に、本発明の手法を適応して得られた乱数列のヒストグラムの一例を図8(b)に示す。図8(b)は、本発明手法を用いて仮数部の下位32ビットを取り出し、それを4バイトずつに区切ってヒストグラムとしたものである。図8(b)から分かるように、このようにして得られた乱数列は、一様に分布している。
【0016】
<一様性の検定>
以下で、生成法が簡単であり、得られる数列の性質が良好なため、もっとも一般的に用いられている線形合同法と本方法を比較した。線形合同法としては、C言語に実装されているmrand48関数を用いた。
生成された乱数列からそれぞれ1bit,2bit,4bit,8bitおよび16bitずつ抽出し、出現頻度の一様性を検定した結果の表を、本発明の実施例による結果を図9(a)に、線形合同法の結果を図9(b)に示す。検定には出現頻度が一様であると仮定してχ2検定を行った。検定には、統計パッケージR(The GNU S)を用いた。一般的に有意確率(p−value)が0.05未満の場合、仮説は棄却される。すなわち、仮説は数列が一様乱数であるとしているので棄却された場合、乱数列は一様乱数ではない、と示唆される。
図9(a)および図9(b)の表に示されている結果より、本発明法により生成された乱数列は出現頻度が一様分布に従うといえる。また、線形合同法により生成された乱数列も同様である。
【0017】
<連の検定>
連とは、一般的に、一様乱数が単調に増加、あるいは減少する範囲のことをいう。ここでは、1または0が続く範囲と定義する。ランダムなビット列の場合、すなわち一様乱数であるならば、連の長さrはp(r)=(1/2)−rの確率分布に従う。
擬似乱数の連の長さがp(r)に従うかどうか、一様性の検定と同じ方法で検定した。本発明による乱数列の結果の表を図10(a)に、従来法(線形合同法)の乱数列の結果の表を図10(b)に示す。この場合も、一様性の検定と同じく、本発明による乱数列の結果は一様乱数であると示唆される構成が存在する。
【0018】
<ビットストリーム検定>
本発明によるものと、従来法である線形合同法を比較した結果について、以下に述べる。なお、検定には、下位32bit取り出して乱数列としたものを用いている。
まず、擬似乱数列から20bitを取り出し、1bitずつずらして重ね合わせたときに同じパターンが現れなかった数を調べ、それが真性乱数の分布に従うかどうかを検定した。検定は擬似乱数検定パッケージDiehardを用いて行った。この検定法では、KS検定(Kolmogorov−Shumirnov test)を用いているため、棄却率は有意確率p−valueが0.025未満の場合あるいは0.975以上の場合である。ここでは、20ビット列を20種類用意し、検定を行った。この結果を図11の表に示す。本発明による乱数列は、図11の表から分かるように棄却されず、一様分布であると示唆される構成が存在する。これに対し従来法(線形合同法)による乱数列は一様分布ではない。
【0019】
<そのほかの検定結果>
擬似乱数検定パッケージDiehardを用いて行ったそのほかの検定のうち、いくつかの結果を示す。
図12の表は、OPSOテストの結果である。OPSO(=0verlapping Paris Sparse Occupancy)テストとは、取り出された乱数を32ビット単位として、ここから10ビットを取り出し単語とする。取り出された単語の列のうち、同一語が現れなかった確率が一様分布に従う乱数と見なせるかどうか検定を行うものである。検定結果より、本発明による乱数列は一様乱数であると示唆される構成が存在するが、線形合同法による乱数列は棄却されている。
図13の表は、DNAテストの結果である。OPSOテストと同様に、取り出された乱数を32ビット単位として、ここから2ビットをとりだし遺伝子の塩基配列とみなしC,G,A,Tとする。取り出された遺伝子10個ずつのうち、同一語が現れなかった確率が一様分布に従う乱数と見なせるかどうか検定を行うものである。検定結果より、本発明による乱数は一様乱数であると示唆される構成が存在するが、線形合同法は棄却されている。
以上の検定結果を通じ、本実施例がいずれの検定においても棄却されない構成が存在することが明らかとなった。これに対し従来法(線形合同法)は、一様性の検定と連の検定は満足するが、それ以外のすべての検定で棄却されている(即ち、一様乱数ではない)のとは対照的である。
前に述べたように、用いたネットワークが最適な構成でない可能性もあるが、従来法と比較して格段に一様性に優れた乱数が生成されていることが明らかとなった。
【0020】
<乱数を用いた暗号>
一様乱数と区別できない乱数を付加する形式の暗号系は解読不可能である。本発明の乱数を用いた暗号と従来法の暗号を比較する。暗号の安全性及び暗号化速度の比較を行う。
<暗号強度の比較>
一般的に、暗号強度の比較は難しい問題であり、すべての暗号形式を統一的な指標ではかるのは困難である。そこでよく用いられる方法として、暗号文の統計的性質を暗号強度評価に用いる。すなわち、暗号文には平文の特徴が残っていないのが理想的であるが、通常の暗号形式では、暗号形式ごとの統計的特徴(偏り)が残ってしまう。理想的には、平文を暗号化して得られた暗号文には平文の統計的な特徴が残っていないのが望ましい。そこで、この暗号文の統計的性質を調べることにより、暗号強度を統一的に比較することができる。本稿では、累加カイ二乗の法則が成立するかしないかで判定を行う。
累加カイ二乗の法則とは、暗号文の分布が平等乱字(一様分布)であるか検定した結果のχ2値が、資料語数Nの増加とともに暗号形式毎に増加の様子が異なる性質のことをいう。通常の暗号形式の場合、平文サイズとともに暗号文のカイ二乗値は単調に増加する。また逆に、平文サイズをいくら増やしても暗号文のカイ二乗値が増加しない場合、その暗号系は統計的に安全であるといえる(加藤正隆,基礎暗号学II,サイエンス社,1989)。
本発明の乱数を用いたCNN Cipherと、従来法の暗号の比較を行った結果を図14に示す。比較対象としては、tripleDES,RIJNDEAL(鍵長256bit)、及びGCCカオス暗号を用いた。なお、いずれのグラフも片対数グラフで示した。なお、入力ファイルは全ビットが1のものを用い、検定は暗号文の出力8bit単位で行った。
図14に示すグラフから明らかに、いずれの従来法においても累加カイ二乗の法則が成立し、統計的な強度が不十分であることがわかる。これに対し本発明法では、累加カイ二乗の法則が成立せず、暗号文は一様乱字と同等である。よって本発明による暗号法は、統計的に非常に強固な暗号系である。
【0021】
<暗号化速度の比較>
暗号化速度の比較を本発明の暗号化速度を100として行った。結果を表1に示す。比較対象として、tripleDES,RIJNDEAL(鍵長256bit)、SERPENT、TWOFISH及びGCCカオス暗号を用いた。
【表1】
本手法と比較して、従来法はいずれも数十分の一の速度しかなく、非常に低速であることがわかる。
【0022】
これらの結果から、カオス・ニューラルネットワークを用いた擬似乱数システムにおいては、良質な擬似乱数が得られる。
また、以上で述べたカオス・ニューラルネットワークを用いた擬似乱数システムをone time pad暗号に適用することにより、安全性が高く非常に高速なセキュリティ・システムが構築できる。
取り出すビットを32bit,16bit,8bitの3つとした場合、用途によって使い分けることが可能である。取り出すビット数が少ないほど予測困難性が増す。これとは逆に乱数生成速度は、取り出すビット数が多いほど高速になる。すなわち、高速性が要求される場合には32bit取り出し、予測困難性が要求される場合には8bit取り出すようにする。また、高速性と質の両方が必要な場合には、16bit取り出すようにする。このような使い分けが可能である。
【図面の簡単な説明】
【0023】
【図1】ニューロンを示す図である。
【図2】基本的な振動するニューラルネットワークの構成を示す図である。
【図3】カオス・ニューラルネットワークの構成を示す図である。
【図4】4つのニューロンで構成したカオス・ニューラルネットワークを示す図である。
【図5】浮動小数点の構成を示す図である。
【図6】本発明の乱数発生システムの構成例を示す図である。
【図7】本発明の乱数発生システムで発生した乱数列の例を示す図である。
【図8】本発明の乱数が一様であることを示すグラフである。
【図9】乱数の一様性の検定結果を示す表である。
【図10】乱数列の連の一様性の検定結果を示す表である。
【図11】ビットストリームの一様性の検定結果を示す表である。
【図12】OPSOテストの結果を示す表である。
【図13】DNAテストの結果を示す表である。
【図14】暗号化強度を示すグラフである。
【技術分野】
【0001】
本発明は真性乱数と区別できない一様乱数生成法に関し、特に、暗号などのセキュリティ・システムヘも適応できる暗号学的に安全な乱数生成に関する。
【技術的背景】
【0002】
科学技術計算等における計算機シミュレーションに用いる一様であり良質な乱数の必要性と、IT技術を支えるセキュリティ・システムで用いる良質な乱数の必要性は増大している。
すなわち、乱数の利用例をあげると、モンテカルロ法、オペレーション・リサーチおよびサンプリング統計などの道具として、さらには堅牢なセキュリティ・システム構築のための基本的技術として欠かせないものになっている。
乱数には大別して、物理現象を利用して発生させる真性乱数と、代数的に発生させる擬似乱数の2種類がある。物理現象を利用した真性乱数生成法による乱数は、全く不規則な乱数列がえられる反面、乱数を得るためには乱数生成用の専用ハードウェアが必要となるうえ、取出した乱数の再現も困難である(EPO 981 A2、US 005706218A、特開平11−296348、US005696828A等を参照)。
これに対して、擬似乱数はソフトウェアのみで発生ができるために広く使われるが、発生法特有の規則性と周期性が残り、セキュリティシステムに用いるのは好ましくない。
【0003】
すなわち、擬似乱数には等頻度性や、無相関性などの性質が求められるが、発生法に特有の規則性や特徴が残る。例えば、現在数値計算で一般的に用いられている線形合同法では乱数列をn個まとめてn次元ベクトルとし、n次元空間にプロットしたとき、格子状に分布する特徴があり、この構造を多次元粗結晶構造と呼ぶ(香田徹、離散力学系のカオス、コロナ社、1998、p190〜p195等参照)。また、線形フィードバック・シフトレジスタ(LFSR)を用いた乱数生成器では、段数がLの場合、(2L−1)個の出力から全系列が求まる特徴がある(香田徹、離散力学系のカオス、コロナ社、1998、p195〜p200等)。このような特徴があるため、真性乱数の存在を仮定している大規模な計算機シミュレーションにおいて重大な影響を及ぼすと考えられ、さらに、出力される乱数が真の一様乱数ではないことから、セキュリティ・システム用乱数には適さない性質である。
【0004】
さて、これまでも、カオスである系の出力を擬似乱数発生源として用いる方法はあった。しかし、この場合、カオスの出力をそのまま乱数にしたものは、カオス特有の偏りがあり、一様性に欠ける(香田徹ら、擬似乱数とカオス、情報処理学会論文誌、Vol.27、No.3、p.289−296、Mar. 1986。特開平10−214177)。同様に、ロジスティック写像やそれと同相写像であるテント写像を用いて、カオス特有の出力値の偏りを取り除く手法も提案されているが、この場合、一度のカオス系の反復計算のみでは一様な乱数は取り出せず、13回反復計算を繰り返したものを乱数列に用いるため、非常に煩雑である(渡辺裕明ら、テント写像に基づいた擬似乱数生成法、情報処理学会論文誌、Vol.40、No.7、p.2843−2850、July1999)。
一方、カオス・ニューラルネットワークを用いた乱数生成法は、出力をそのまま用いた場合には、出力値にはカオス特有の偏りが見られる。これは、カオス軌道がストレンジ・アトラクタと呼ばれる特異なアトラクタに軌道が引き寄せられることにより、一定周期毎に不安定周期解の近傍を訪れる性質があるため、出力頻度が偏る原因となっている。しかし、カオスはエルゴード性を有しており、カオス軌道は決して同じ軌道は通らない。厳密に言えばカオス・ニューラルネットワークの出力はすべて異なった値になっている。
【0005】
まず、従来の技術である線形合同法の例を説明する。なお各定数の値(a,b,m)は、ヒューレットパッカード社のOS(HP UX10.20)にバンドルされているC言語におけるmrand48()関数の実装である。
[数1]
yn+1=(ayn+c)mod m, n=0,1,2,・・・ (1)
ここで、HPUXでは、m=246,a=0xDEECE66D(16進数),c=0xB(16進数)である。
はじめに乱数の種となる初期値x0を定める。乱数を生成する場合は、式(1)に従い、次の乱数を生成する。このため、初期値が定まるとその後の系列は一意に定まる。また、出力される乱数系列は、n個まとめてn次元ベクトルとし、n次元空間にプロットしたとき、格子状に分布する特徴がある(多次元粗結晶構造)ため、一様乱数は生成されない。
同様に、一般的に用いられる乱数生成器として、線形フィードバック・シフトレジスタがある。生成される数列の性質は、レジスタの状態を記憶する領域である、状態配列サイズに依存する。HP UX10.20上のC言語の実装では、状態配列を31個のlong型整数(long型整数は4byteであるから、31×4=124byte)としており、その最大周期は約16×(231−1)である。一般に、乱数生成器に用いたレジスタ数がn個の場合、乱数系列の最大周期が2n−1になることが知られている。
【0006】
カオスを用いた場合、乱数生成器では、カオス特有の出力値の偏りを、いかに取り除くかが鍵となる。特開平5−158662号公報記載の一様乱数生成法では、二次元のカオス系であるロジスティック写像を用いて乱数を生成している。この方法では、生成された実数値出力がある区間に入った場合、得られた出力値を定数倍することにより乱数を得るものである。しかし、この方法では、本来非線形な現象であるカオスの出力を定数倍するという方法により乱数を得るため、カオス特有の出力値の偏りを取り除くことができず、一様な乱数を取り出すためには、従来法と併用するなどの操作が必要である(同文献に記載されている)。
カオスを用いた擬似乱数生成法としては、ロジスティック写像などのカオス応答する二次写像の実数値出力のうち、下位Xbitを取り出し、乱数列にする方法が提案されている(渡辺裕明ら、テント写像に基づいた擬似乱数生成法、情報処理学会論文誌、Vol.40、No.7、p.2843−2850、July 1999)。この場合、下位32ビットから得られる乱数系列は頻度検定と最大値検定に合格している。しかし、ロジスティック写像は隣り合う数同士に強い相関関係があり、数列を擬似乱数として用いる場合に大きな問題となる。たとえば、ある写像回数iにおける写像の値yiが1に非常に近い値の場合、次に得られるyi+1は必ず0に非常に近い値となる。これを回避するために、以下で述べる多重化の手法等がとられる。また、該文献において、ロジスティック写像と同相写像であるテント写像の出力をそのまま乱数とする方法も提案されている。この場合、比較的簡単な写像を用いていることから、取り出された乱数列は一様な乱数ではないと指摘されている。そのため、一度の写像の度に乱数を取り出すのではなく、m個おきに乱数として用いた場合に一様な乱数列となっている。このような操作を多重化というが、一つの乱数を取り出すまでに十数個の乱数を生成しなければならず、効率が悪い。
上記に記載した二つの方法はともに、単純なカオス系を乱数生成原理として用いている。これらの写像は一対一写像であり、ある出力像から未来の状態を容易に予測できるという特徴を持つ。これは、暗号用乱数としては好ましくない性質である。
【発明の開示】
【発明が解決しようとする課題】
【0007】
本発明の目的は、カオスの出力をそのまま乱数としたものではなく、特異なカオス応答をするカオス・ニューラルネットワークと、カオス特有の偏りを取り除く操作を組み合わせることにより、従来法よりも一様性に優れ、容易に真性乱数と区別できない一様な乱数を生成することである。
また、暗号学的に安全な、one time pad 暗号系を構築することである。
【課題を解決するための手段】
【0008】
上記の目的を達成するために、本発明は、カオス・ニューラルネットワークを用いた乱数生成システムであって、小数点数による出力を有するカオス・ニューラルネットワークと、該カオス・ニューラルネットワークからの出力である小数点数の仮数部の下位32ビット,16ビット,あるいは8ビットのいずれかを取り出す乱数出力部とを備えることを特徴とする。
このカオス・ニューラルネットワークを用いた乱数生成システムと、入力する平文と前記乱数生成システムからの乱数とを演算する演算部とを備える暗号生成システムも、本発明である。
また、乱数生成システムや暗号生成システムをコンピュータ・システムに構成させることができるプログラムやこのプログラムを格納した記録媒体も本発明である。
【発明の効果】
【0009】
本発明では、取り出すビットが32bit,16bit,8bitの3つであるが、用途によって使い分けることが可能である。取り出すビット数が少ないほど予測困難性が増す。これとは逆に乱数生成速度は,取り出すビット数が多いほど高速になる。すなわち、高速性が要求される場合には32bit取り出し、予測困難性が要求される場合には8bit取り出すようにする。また、高速性と質の両方が必要な場合には、16bit取り出すようにする。このような使い分けが可能である。
【発明を実施するための最良の形態】
【0010】
以下、図面を参照して、本発明の実施形態を説明する。
本発明では、カオス・ニューラルネットワークを用いた乱数生成法を提案する。すなわち、カオス・ニューラルネットワークから取り出された出力値から、カオス特有の偏り成分を取除くことにより達成される。
本発明は、特異なカオス応答をするカオス・ニューラルネットワークの出力値から、カオス特有の軌道の偏りのある部分を取り除いて乱数生成に用いることにより、一様性に優れ真性乱数と区別できない乱数を生成することができる。
カオス・ニューラルネットワークを用いた本発明では、一対多写像であるため、生成されたある乱数から将来の状態を予測するのは困難である。さらにカオス・ニューラルネットワークは、計算する環境(CPU・OSの種類、コンパイラ、ライブラリ)に依存するという特異な性質を持つ。この性質はカオス・ニューラルネットワーク固有のものであり、暗号用乱数としては優れている。また、従来法では、多重化などの方法を用いた場合にはじめて一様な乱数列が取り出せるのに対し、本発明では冗長な操作を施さずに、出力値の下位ビットを取り出しただけで一様乱数が生成できるという、非常に優れた特性を有している。
さらに、本方法を用いることにより、暗号学的な安全性が保証されているone time pad 暗号系を構築することができるため、IT社会の情報基盤であるセキュリティ・システムヘ適用することができる。
【0011】
まず、本発明に用いているカオス・ニューラルネットワークを説明する。カオス・ニューラルネットワークとは、ホップフィールド・ネットワークや誤差逆伝搬学習則で用いられている通常のニューロン・モデルを用いたネットワークで、カオス応答があるもののことである。なお、カオス・ニューラルネットワークについては、例えば特願平11−321444号(特開2001−144746号公報)等を参照されたい。
図1は、ニューロン・モデルを示す図である。図1に示すニューロン・モデルでは、自己再帰結合は用いていない。図1に示されているニューロンのある時刻t+1における出力は、以下の式で表される。
【数2】
このニューロン・モデルにおける非線形関数fは、バック・プロパケーション・モデルやホップフィールド・モデルなどで広く用いられている、sigmoid関数を用いている。λは、関数の傾きを表す。
【0012】
自然界では単一で振動する出力を発生するニューロンもあるが、カオス・ニューラルネットワークに用いた上述のニューロンの場合には、1個のニューロンのみでは振動しない。図2に、最も基本的な振動するネットワークを示す。この系は、重み係数の正負によってその振る舞いが変化すると考えられるが、いずれの場合においても、その出力は収束するか振動するかであり、その振動周期も最大で4周期であることが明らかになっている(川村暁,吉田等明,恒川佳隆,三浦守 ”カオス・ニューラルネットワークの最小構成” 信学技報 NC98−107 1999年3月)。
次に、この基本ネットワークを含む、ニューロン数がn個のネットワークへの拡張を考える。図3に、基本ネットワークを含むnニューロン・ネットワークの構成を示す。図3に示すように、このネットワークは、図2に示したような基本ネットワークを構成しているN1およびN2のニューロンと、その他のN3〜Nnのニューロンとで構成されている。このネットワークは、以下の各要素により特徴づけられる。
・基本ネットワークの種類
・ニューロン数
・ニューロン間の重み係数の符号
この構成のネットワークにおいて、ニューロン数が3個以上のネットワークにおいて、カオス応答するネットワークが存在し、そのようなネットワークをカオス・ニューラルネットワークと呼ぶ。
ネットワーク応答がカオスである場合の必要条件は、各ニューロンに属する値(系列と呼ぶ)の「混じり合い」による。また、カオス・ニューラルネットワークは、単一のニューロンでカオスを出力しているのではなく、系全体でカオスとなっている。そのため、単一ニューロンの出力値は、同一になる場合があると考えられる。
【0013】
<一方向性関数>
カオス・ニューラルネットワークは、ネットワーク構成と外部入力値が定まれば、時系列信号を容易に取り出すことができる。この外部入力値と、ある一つのニューロンの出力値(信号)の関係について考える。さて、初期値鋭敏性とは、初期値の僅かなずれを、それがどんなに小さなずれであっても、時間とともに指数関数的に拡大する性質を有していることをいう。カオス・ニューラルネットワークは初期値鋭敏性を有している。また、ある関数y=f(x)が一方向性関数であるとは、xよりy=f(x)を計算するのは容易であるが、逆にyよりxを求めるのが困難な関数のことをいう。
カオス・ニューラルネットワークの外部入力値xと、あるニューロンの出力値y(ニューロンN1など)との関係は、カオス・ニューラルネットワークが有している初期値鋭敏性により、初期値(外部入力値)が微少に異なる場合、その振る舞いの時間発展が全く異なったものとなる。また、系がカオスである場合、その軌道にはエルゴード性があるため、非常に近い軌道を通る状態の間には相関がなく、出力値から外部入力値を推定するのは困難であるといえる。よって、出力値yから外部入力値xを求めるのは困難である。さらに、あるニューロンの出力値に注目すると、その出力値は同一の値をとることがあると考えられる。よって、外部入力値xと出力値yは一対一写像ではなく、一対多写像であるといえる。よって、カオス・ニューラルネットワークの外部入力値xと、あるニューロンの出力値yの関数y=f(x)は、一方向性関数fであるといえる。
上述のカオス・ニューラルネットワークの一例としてニューロン数が4個の場合を図4に示す。図4に示したカオス・ニューラルネットワークは、図2に示したような基本ネットワークを構成しているN1およびN2のニューロンと、この2つのニューロンに接続されているニューロンN3,N4とで構成されている。
【0014】
<乱数の発生>
さて、図4等に示された構成のカオス・ニューラルネットワークは、コンピュータ・システム内に、C言語等を用いてコーディングして実装することができる。この場合、各種変数の型として、IEEE754準拠のdouble型変数を用いていることが多い。その数表現は、図5に示すように、符号、仮数部、指数部より成り、実数値は2進数で(符号)実数部×2指数部と表される。従って、このようにして構成されたカオス・ニューラルネットワークを構成するニューロンからの出力も同じ形式をとっている。
図6に本発明の実施形態の構成を示す。図6において、例えば、double型変数を用いて実装したカオス・ニューラルネットワーク120を構成するニューロン(この場合、ニューロンN1)から、時系列で発生する出力を取り出して、レジスタ130に格納する。このレジスタ130は、double型変数を格納できるレジスタ130である。レジスタ130から、仮数部の下位のxビットを取り出す。取り出したビット列が乱数となっている。この場合、4つのニューロンで構成されているカオス・ニューラルネットワークのニューロンN1から取り出す例を示したが、カオス・ニューラルネットワークを構成しているニューロンであれば、どのニューロンから取り出してもよい。なお、このレジスタ130は、メイン・メモリ上にあってもよい。
また、数表現がIEEE754形式以外の場合でも、浮動小数点または固定小数点表現を用いている場合は、本手法を適応できる。
<乱数を用いた暗号への適用>
上述の乱数生成システムは、暗号生成システムに対して適用することができる。上述のカオス・ニューラルネットワークを用いた乱数生成システムの出力値から生成された乱数列は、一様性に優れており、真性乱数と区別できない乱数である。このため、この乱数を用いることにより、暗号学的な安全性が保証されているone time pad暗号系を構築することができる。
【実施例】
【0015】
本発明の効果を実証するための実施例として、図6に示したような、4個のニューロンから構成されるカオス・ニューラルネットワークのニューロンN1から発生する浮動小数の仮数部の下位32bitを乱数として出力する乱数生成器により生成される乱数列を、4ビットづつ区切って16進数で表したものを図7に示す。なお、仮数部の下位ビットを取る場合、8ビット、16ビット等としてもよい。
さて、図6のように、ニューロン4個で構成したカオス・ニューラルネットワーク自体の出力のヒストグラムを図8(a)に示す。カオス・ニューラルネットワークのニューロンN1の出力値は、シグモイド関数の値域である0≦x≦1である。図8(a)の横軸は、この出力値の値域を10の4乗個に分けた区画の番号である。なお、図8(a)では、実際の出力値と対応させるために、10−4と表記している。図8(a)のヒストグラムから分かるように、カオス系特有の偏りがみられる。この偏った出力値に、本発明の手法を適応して得られた乱数列のヒストグラムの一例を図8(b)に示す。図8(b)は、本発明手法を用いて仮数部の下位32ビットを取り出し、それを4バイトずつに区切ってヒストグラムとしたものである。図8(b)から分かるように、このようにして得られた乱数列は、一様に分布している。
【0016】
<一様性の検定>
以下で、生成法が簡単であり、得られる数列の性質が良好なため、もっとも一般的に用いられている線形合同法と本方法を比較した。線形合同法としては、C言語に実装されているmrand48関数を用いた。
生成された乱数列からそれぞれ1bit,2bit,4bit,8bitおよび16bitずつ抽出し、出現頻度の一様性を検定した結果の表を、本発明の実施例による結果を図9(a)に、線形合同法の結果を図9(b)に示す。検定には出現頻度が一様であると仮定してχ2検定を行った。検定には、統計パッケージR(The GNU S)を用いた。一般的に有意確率(p−value)が0.05未満の場合、仮説は棄却される。すなわち、仮説は数列が一様乱数であるとしているので棄却された場合、乱数列は一様乱数ではない、と示唆される。
図9(a)および図9(b)の表に示されている結果より、本発明法により生成された乱数列は出現頻度が一様分布に従うといえる。また、線形合同法により生成された乱数列も同様である。
【0017】
<連の検定>
連とは、一般的に、一様乱数が単調に増加、あるいは減少する範囲のことをいう。ここでは、1または0が続く範囲と定義する。ランダムなビット列の場合、すなわち一様乱数であるならば、連の長さrはp(r)=(1/2)−rの確率分布に従う。
擬似乱数の連の長さがp(r)に従うかどうか、一様性の検定と同じ方法で検定した。本発明による乱数列の結果の表を図10(a)に、従来法(線形合同法)の乱数列の結果の表を図10(b)に示す。この場合も、一様性の検定と同じく、本発明による乱数列の結果は一様乱数であると示唆される構成が存在する。
【0018】
<ビットストリーム検定>
本発明によるものと、従来法である線形合同法を比較した結果について、以下に述べる。なお、検定には、下位32bit取り出して乱数列としたものを用いている。
まず、擬似乱数列から20bitを取り出し、1bitずつずらして重ね合わせたときに同じパターンが現れなかった数を調べ、それが真性乱数の分布に従うかどうかを検定した。検定は擬似乱数検定パッケージDiehardを用いて行った。この検定法では、KS検定(Kolmogorov−Shumirnov test)を用いているため、棄却率は有意確率p−valueが0.025未満の場合あるいは0.975以上の場合である。ここでは、20ビット列を20種類用意し、検定を行った。この結果を図11の表に示す。本発明による乱数列は、図11の表から分かるように棄却されず、一様分布であると示唆される構成が存在する。これに対し従来法(線形合同法)による乱数列は一様分布ではない。
【0019】
<そのほかの検定結果>
擬似乱数検定パッケージDiehardを用いて行ったそのほかの検定のうち、いくつかの結果を示す。
図12の表は、OPSOテストの結果である。OPSO(=0verlapping Paris Sparse Occupancy)テストとは、取り出された乱数を32ビット単位として、ここから10ビットを取り出し単語とする。取り出された単語の列のうち、同一語が現れなかった確率が一様分布に従う乱数と見なせるかどうか検定を行うものである。検定結果より、本発明による乱数列は一様乱数であると示唆される構成が存在するが、線形合同法による乱数列は棄却されている。
図13の表は、DNAテストの結果である。OPSOテストと同様に、取り出された乱数を32ビット単位として、ここから2ビットをとりだし遺伝子の塩基配列とみなしC,G,A,Tとする。取り出された遺伝子10個ずつのうち、同一語が現れなかった確率が一様分布に従う乱数と見なせるかどうか検定を行うものである。検定結果より、本発明による乱数は一様乱数であると示唆される構成が存在するが、線形合同法は棄却されている。
以上の検定結果を通じ、本実施例がいずれの検定においても棄却されない構成が存在することが明らかとなった。これに対し従来法(線形合同法)は、一様性の検定と連の検定は満足するが、それ以外のすべての検定で棄却されている(即ち、一様乱数ではない)のとは対照的である。
前に述べたように、用いたネットワークが最適な構成でない可能性もあるが、従来法と比較して格段に一様性に優れた乱数が生成されていることが明らかとなった。
【0020】
<乱数を用いた暗号>
一様乱数と区別できない乱数を付加する形式の暗号系は解読不可能である。本発明の乱数を用いた暗号と従来法の暗号を比較する。暗号の安全性及び暗号化速度の比較を行う。
<暗号強度の比較>
一般的に、暗号強度の比較は難しい問題であり、すべての暗号形式を統一的な指標ではかるのは困難である。そこでよく用いられる方法として、暗号文の統計的性質を暗号強度評価に用いる。すなわち、暗号文には平文の特徴が残っていないのが理想的であるが、通常の暗号形式では、暗号形式ごとの統計的特徴(偏り)が残ってしまう。理想的には、平文を暗号化して得られた暗号文には平文の統計的な特徴が残っていないのが望ましい。そこで、この暗号文の統計的性質を調べることにより、暗号強度を統一的に比較することができる。本稿では、累加カイ二乗の法則が成立するかしないかで判定を行う。
累加カイ二乗の法則とは、暗号文の分布が平等乱字(一様分布)であるか検定した結果のχ2値が、資料語数Nの増加とともに暗号形式毎に増加の様子が異なる性質のことをいう。通常の暗号形式の場合、平文サイズとともに暗号文のカイ二乗値は単調に増加する。また逆に、平文サイズをいくら増やしても暗号文のカイ二乗値が増加しない場合、その暗号系は統計的に安全であるといえる(加藤正隆,基礎暗号学II,サイエンス社,1989)。
本発明の乱数を用いたCNN Cipherと、従来法の暗号の比較を行った結果を図14に示す。比較対象としては、tripleDES,RIJNDEAL(鍵長256bit)、及びGCCカオス暗号を用いた。なお、いずれのグラフも片対数グラフで示した。なお、入力ファイルは全ビットが1のものを用い、検定は暗号文の出力8bit単位で行った。
図14に示すグラフから明らかに、いずれの従来法においても累加カイ二乗の法則が成立し、統計的な強度が不十分であることがわかる。これに対し本発明法では、累加カイ二乗の法則が成立せず、暗号文は一様乱字と同等である。よって本発明による暗号法は、統計的に非常に強固な暗号系である。
【0021】
<暗号化速度の比較>
暗号化速度の比較を本発明の暗号化速度を100として行った。結果を表1に示す。比較対象として、tripleDES,RIJNDEAL(鍵長256bit)、SERPENT、TWOFISH及びGCCカオス暗号を用いた。
【表1】
本手法と比較して、従来法はいずれも数十分の一の速度しかなく、非常に低速であることがわかる。
【0022】
これらの結果から、カオス・ニューラルネットワークを用いた擬似乱数システムにおいては、良質な擬似乱数が得られる。
また、以上で述べたカオス・ニューラルネットワークを用いた擬似乱数システムをone time pad暗号に適用することにより、安全性が高く非常に高速なセキュリティ・システムが構築できる。
取り出すビットを32bit,16bit,8bitの3つとした場合、用途によって使い分けることが可能である。取り出すビット数が少ないほど予測困難性が増す。これとは逆に乱数生成速度は、取り出すビット数が多いほど高速になる。すなわち、高速性が要求される場合には32bit取り出し、予測困難性が要求される場合には8bit取り出すようにする。また、高速性と質の両方が必要な場合には、16bit取り出すようにする。このような使い分けが可能である。
【図面の簡単な説明】
【0023】
【図1】ニューロンを示す図である。
【図2】基本的な振動するニューラルネットワークの構成を示す図である。
【図3】カオス・ニューラルネットワークの構成を示す図である。
【図4】4つのニューロンで構成したカオス・ニューラルネットワークを示す図である。
【図5】浮動小数点の構成を示す図である。
【図6】本発明の乱数発生システムの構成例を示す図である。
【図7】本発明の乱数発生システムで発生した乱数列の例を示す図である。
【図8】本発明の乱数が一様であることを示すグラフである。
【図9】乱数の一様性の検定結果を示す表である。
【図10】乱数列の連の一様性の検定結果を示す表である。
【図11】ビットストリームの一様性の検定結果を示す表である。
【図12】OPSOテストの結果を示す表である。
【図13】DNAテストの結果を示す表である。
【図14】暗号化強度を示すグラフである。
【特許請求の範囲】
【請求項1】
カオス・ニューラルネットワークを用いた乱数生成システムであって、
小数点数による出力を有するカオス・ニューラルネットワークと、
該カオス・ニューラルネットワークからの出力である小数点数の仮数部の下位32ビット,16ビット,あるいは8ビットのいずれかを取り出す乱数出力部と
を備えることを特徴とする乱数生成システム。
【請求項2】
請求項1記載のカオス・ニューラルネットワークを用いた乱数生成システムと、
入力する平文と前記乱数生成システムからの乱数とを演算する演算部と
を備えることを特徴とする乱数を用いた暗号生成システム。
【請求項3】
請求項1に記載した乱数生成システム又は請求項2に記載した暗号生成システムをコンピュータ・システムに構成させることができるプログラムを格納した記録媒体。
【請求項4】
請求項1に記載した乱数生成システム又は請求項2に記載した暗号生成システムをコンピュータ・システムに構成させることができるプログラム。
【請求項1】
カオス・ニューラルネットワークを用いた乱数生成システムであって、
小数点数による出力を有するカオス・ニューラルネットワークと、
該カオス・ニューラルネットワークからの出力である小数点数の仮数部の下位32ビット,16ビット,あるいは8ビットのいずれかを取り出す乱数出力部と
を備えることを特徴とする乱数生成システム。
【請求項2】
請求項1記載のカオス・ニューラルネットワークを用いた乱数生成システムと、
入力する平文と前記乱数生成システムからの乱数とを演算する演算部と
を備えることを特徴とする乱数を用いた暗号生成システム。
【請求項3】
請求項1に記載した乱数生成システム又は請求項2に記載した暗号生成システムをコンピュータ・システムに構成させることができるプログラムを格納した記録媒体。
【請求項4】
請求項1に記載した乱数生成システム又は請求項2に記載した暗号生成システムをコンピュータ・システムに構成させることができるプログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【公開番号】特開2006−338045(P2006−338045A)
【公開日】平成18年12月14日(2006.12.14)
【国際特許分類】
【出願番号】特願2006−206082(P2006−206082)
【出願日】平成18年7月28日(2006.7.28)
【分割の表示】特願2001−272113(P2001−272113)の分割
【原出願日】平成13年9月7日(2001.9.7)
【新規性喪失の例外の表示】特許法第30条第1項適用申請有り 2001年3月26日〜29日 社団法人電子情報通信学会開催の「2001年電子情報通信学会総合大会」において文書をもって発表
【出願人】(503360115)独立行政法人科学技術振興機構 (1,734)
【Fターム(参考)】
【公開日】平成18年12月14日(2006.12.14)
【国際特許分類】
【出願日】平成18年7月28日(2006.7.28)
【分割の表示】特願2001−272113(P2001−272113)の分割
【原出願日】平成13年9月7日(2001.9.7)
【新規性喪失の例外の表示】特許法第30条第1項適用申請有り 2001年3月26日〜29日 社団法人電子情報通信学会開催の「2001年電子情報通信学会総合大会」において文書をもって発表
【出願人】(503360115)独立行政法人科学技術振興機構 (1,734)
【Fターム(参考)】
[ Back to top ]