(57)【要約】【課題】高速演算が可能な新規なカオス的時系列を探索し、このカオス的時系列を用いてカオス発生装置やカオス暗号装置などを実現する。【解決手段】このカオス発生装置は、変数ｎの増加に従って急激に増加する関数ｆｉ（ｎ）［ｉ＝１〜Ｌ、Ｌ≧１］に対し素数ｍｉ［ｉ＝１〜Ｌ、Ｌ≧１］を設定する手段と、変数ｎの初期値ｎ０に対してｆｉ（ｎ０）から素数ｍｉを法として剰余ｒｉ（ｎ０）［ｉ＝１〜Ｌ、Ｌ≧１］を導出する初期値演算手段３４と、ｆｉ（ｎ＋１）の計算では剰余ｒｉ（ｎ）を利用して素数ｍｉを法として導出された剰余ｒｉ（ｎ＋１）を導出する反復演算手段３６と、変数ｎをｎ０から順次増大させながら前記剰余ｒｉ（ｎ）［ｉ＝１〜Ｌ、Ｌ≧１］を通して生成される一意の値を有するカオス的時系列Ｘｎを出力するカオス信号出力手段３８から構成される。再現性のあるカオス的時系列信号を高速出力し、高安全性の暗号装置などを実現する。【選択図】  図２
2005017612.tif 000002
【特許請求の範囲】
【請求項１】
変数ｎの増加に従って急激に増加する関数ｆｉ（ｎ）［ｉ＝１〜Ｌ、Ｌ≧１］に対し素数ｍｉ［ｉ＝１〜Ｌ、Ｌ≧１］を設定する手段と、変数ｎの初期値ｎ０に対してｆｉ（ｎ０）から素数ｍｉを法として剰余ｒｉ（ｎ０）［ｉ＝１〜Ｌ、Ｌ≧１］を導出する初期値演算手段と、ｆｉ（ｎ＋１）の計算では剰余ｒｉ（ｎ）を利用して素数ｍｉを法として導出された剰余ｒｉ（ｎ＋１）を導出する反復演算手段と、変数ｎをｎ０から順次増大させながら前記剰余ｒｉ（ｎ）［ｉ＝１〜Ｌ、Ｌ≧１］を通して生成される一意の値を有するカオス的時系列Ｘｎを出力するカオス信号出力手段から構成される特徴とするカオス発生装置。
【請求項２】
前記剰余ｒｉ（ｎ）［ｉ＝１〜Ｌ、Ｌ≧１］を前記素数ｍｉ［ｉ＝１〜Ｌ、Ｌ≧１］で割算して１より小さな小数の商ｑｉ（ｎ）［ｉ＝１〜Ｌ、Ｌ≧１］を算出し、Ｌ＝１の場合にはｑ１（ｎ）から前記Ｘｎを導出し、Ｌ≧２の場合にはｑ１（ｎ）＋・・＋ｑＬ（ｎ）の小数部分から前記Ｘｎを導出する請求項１に記載のカオス発生装置。
【請求項３】
前記関数ｆｉ（ｎ）［ｉ＝１〜Ｌ、Ｌ≧１］がｆｉ（ｎ＋１）＝（ｐｉ＋ｑｉｎ＋・・＋ｓｉｎｔｉ）・ｆｉ（ｎ）［ｉ＝１〜Ｌ、Ｌ≧１］の漸化式を満足する請求項１又は２に記載のカオス発生装置。
【請求項４】
前記関数ｆｉ（ｎ）［ｉ＝１〜Ｌ、Ｌ≧１］がｆｉ（ｎ）＝ｃｉ・ｐｉｎ［ｐｉは自然数、ｉ＝１〜Ｌ、Ｌ≧１］で表される請求項１又は２に記載のカオス発生装置。
【請求項５】
ｎ＝０においてｒｉ（０）＝ｋｉ（ｍｏｄ  ｍｉ）［ｉ＝１〜Ｌ、Ｌ≧１］とし、ｒｉ（ｎ＋１）＝ｐｉ・ｒｉ（ｎ）（ｍｏｄ  ｍｉ）［ｉ＝１〜Ｌ、Ｌ≧１］を漸化式として利用して発散を防止し、この反復演算により得られる剰余ｒｉ（ｎ）［ｉ＝１〜Ｌ、Ｌ≧１］からカオス時系列Ｘｎを導出する請求項４に記載のカオス発生装置。
【請求項６】
文章、画像又は音声からなるデジタル情報を暗号化又は復号化するために使用されるカオス発生装置であり、関数ｆｉ（ｎ）［ｉ＝１〜Ｌ、Ｌ≧１］のパラメータ及び素数ｍｉ［ｉ＝１〜Ｌ、Ｌ≧１］を暗号化又は復号化の鍵として使用する請求項１、２、３、４又は５に記載のカオス発生装置。
【請求項７】
コンピュータを、変数ｎの増加に従って急激に増加する関数ｆｉ（ｎ）［ｉ＝１〜Ｌ、Ｌ≧１］に対し素数ｍｉ［ｉ＝１〜Ｌ、Ｌ≧１］を設定する手段と、変数ｎの初期値ｎ０に対してｆｉ（ｎ０）から素数ｍｉを法として剰余ｒｉ（ｎ０）［ｉ＝１〜Ｌ、Ｌ≧１］を導出する初期値演算手段と、ｆｉ（ｎ＋１）の計算では剰余ｒｉ（ｎ）を利用して素数ｍｉを法として導出された剰余ｒｉ（ｎ＋１）を導出する反復演算手段と、変数ｎをｎ０から順次増大させながら前記剰余ｒｉ（ｎ）［ｉ＝１〜Ｌ、Ｌ≧１］を通して生成される一意の値を有するカオス的時系列Ｘｎを出力するカオス信号出力手段として機能させることを特徴とするカオス発生用プログラム。
【請求項８】
コンピュータを、変数ｎの増加に従って急激に増加する関数ｆｉ（ｎ）［ｉ＝１〜Ｌ、Ｌ≧１］に対し素数ｍｉ［ｉ＝１〜Ｌ、Ｌ≧１］を設定する手段と、変数ｎの初期値ｎ０に対してｆｉ（ｎ０）から素数ｍｉを法として剰余ｒｉ（ｎ０）［ｉ＝１〜Ｌ、Ｌ≧１］を導出する初期値演算手段と、ｆｉ（ｎ＋１）の計算では剰余ｒｉ（ｎ）を利用して素数ｍｉを法として導出された剰余ｒｉ（ｎ＋１）を導出する反復演算手段と、変数ｎをｎ０から順次増大させながら前記剰余ｒｉ（ｎ）［ｉ＝１〜Ｌ、Ｌ≧１］を通して生成される一意の値を有するカオス的時系列Ｘｎを出力するカオス信号出力手段として機能させるためのプログラムを記録したコンピュータ読み取り可能なことを特徴とするカオス発生用記録媒体。
【請求項９】
変数ｎの増加に従って急激に増加する関数ｆｉ（ｎ）［ｉ＝１〜Ｌ、Ｌ≧１］に対し素数ｍｉ［ｉ＝１〜Ｌ、Ｌ≧１］を設定する手段と、変数ｎの初期値ｎ０に対してｆｉ（ｎ０）から素数ｍｉを法として剰余ｒｉ（ｎ０）［ｉ＝１〜Ｌ、Ｌ≧１］を導出する初期値演算手段と、ｆｉ（ｎ＋１）の計算では剰余ｒｉ（ｎ）を利用して素数ｍｉを法として導出された剰余ｒｉ（ｎ＋１）を導出する反復演算手段と、変数ｎをｎ０から順次増大させながら前記剰余ｒｉ（ｎ）［ｉ＝１〜Ｌ、Ｌ≧１］を通して生成される一意の値を有するカオス的時系列Ｘｎを出力するカオス信号出力手段から構成される特徴とする擬似乱数発生装置。
【請求項１０】
変数ｎの増加に従って急激に増加する関数ｆｉ（ｎ）［ｉ＝１〜Ｌ、Ｌ≧１］に対し素数ｍｉ［ｉ＝１〜Ｌ、Ｌ≧１］を設定する手段と、変数ｎの初期値ｎ０に対してｆｉ（ｎ０）から素数ｍｉを法として剰余ｒｉ（ｎ０）［ｉ＝１〜Ｌ、Ｌ≧１］を導出する初期値演算手段と、ｆｉ（ｎ＋１）の計算では剰余ｒｉ（ｎ）を利用して素数ｍｉを法として導出された剰余ｒｉ（ｎ＋１）を導出する反復演算手段と、変数ｎをｎ０から順次増大させながら前記剰余ｒｉ（ｎ）［ｉ＝１〜Ｌ、Ｌ≧１］を通して生成される一意の値を有するカオス的時系列Ｘｎを出力するカオス信号出力手段から構成されるカオス発生装置と、このカオス発生装置のカオス時系列Ｘｎによりデジタル情報を暗号化して暗号を生成する暗号化装置と、この暗号を受信して前記カオス時系列と全く同じカオス時系列Ｘｎにより暗号からデジタル情報を導出する復号化装置とを有し、暗号化と復号化に際して前記関数ｆｉ（ｎ）［ｉ＝１〜Ｌ、Ｌ≧１］のパラメータと素数ｍｉ［ｉ＝１〜Ｌ、Ｌ≧１］を鍵と使用することを特徴とする暗号装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は初期値依存性を有するカオス信号を発生するカオス発生装置に関し、更に詳細には、カオス信号を文章・画像・音声などの情報に組み込んでその情報を暗号化し、また暗号からカオス信号を除去して元の情報を復元する復号化を行う暗号装置などに関する。
【０００２】
【従来の技術】
近年、インターネット、ｅ−ｍａｉｌ、携帯電話などの普及に従って、小容量から大容量に亘る多数の情報が国内のみならず国際的にも送受信されている。これらの情報の送受信は、単に私人間で行われるだけでなく、国民総背番号制に見られるように、私人と行政機関との間でも、また行政機関同士の間でも絶え間なく行われている。
【０００３】
従って、送受信される情報を如何に保護するかが極めて重要な課題になっている。つまり、情報を受信者に正確に伝えると共に、受信者以外の第三者が情報を読み取ることができないようにする暗号技術の開発が緊急の課題となってきている。
【０００４】
この暗号技術は、情報を暗号へと変換する暗号化技術と、暗号から情報を取り出す復号化技術から構成される。情報を暗号化するには、情報に特定の鍵（パラメータ）により生成される暗号化信号を演算することにより行われる。暗号を複号化するのも、暗号に対し同一の鍵により生成される暗号化信号を逆演算することによって行われる。従って、暗号技術では、暗号化信号自体と暗号化信号を生成する鍵が極めて重要になる。
【０００５】
現在、実用化されている暗号技術では、ＤＥＳ暗号（Ｄａｔａ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）による共通鍵暗号、ＲＳＡ暗号（Ｒｉｖｅｓｔ，  Ｓｈａｍｉｒ，  Ａｄｅｌｍａｎ）による公開鍵暗号などがある。しかし、これらは安全性や処理速度の点で問題が多い。そこで、安全強度が高く、処理速度が速いカオス暗号方法が提案されている。
【０００６】
一般に、カオスとは簡単な規則から生成される不規則な時系列信号であり、初期値が僅かに異なるだけで後続する時系列信号に大きな相違が出現する特性を有している。この特性は初期値依存性あるいは予測不能性とも呼ばれている。カオスが発見される以前は、初期状態がかなり接近していれば、経験の積み重ねにより将来の状態が予測できるとされていた。例えば天気予報などは将来の天候が予測できることを前提に構成される技術である。しかし、カオス現象では、初期状態が接近していても、初期値依存性により将来の状態が予測できない程変化することが分かってきた。
【０００７】
このような性質を有するカオス信号は、暗号技術における暗号化信号として最適であると考えられる。そこで、カオス信号を暗号技術に取り込む研究が行われてきた。カオスが知られた当初は、カオス方程式又はカオス写像が与えられれば、これらの式に従ってカオス時系列を再現できると考えられていた。しかし、カオスの研究が深化するに従って、カオス時系列をコンピュータで計算する場合に、数値的発散性が存在することが明らかになってきた。
【０００８】
例えば、カオス写像として、Ｘｎ＋１＝Ｆ（Ｘｎ）を考えてみよう。このカオス写像の性質として、０≦Ｘ０≦１を満たす初期値Ｘ０から始めて、このカオス写像に従って、Ｘ１、Ｘ２・・を計算してゆくと、これらの時系列Ｘｎは、０〜１の間を激しく不規則に振動変化する。このとき、カオス写像では時系列の値Ｘｎは小数以下の有効桁数が急速に増大することが分かる。ところが、コンピュータのメモリは有限であり、倍精度計算や４倍精度計算などのように桁数が有限である。従って、カオス計算を続けてゆくと、数値の桁数が急増して、第ｎ回目の計算で、コンピュータの精度限界を簡単に超えてしまうことが分かる。この桁数の増大性を前述した発散性と呼ぶ。
【０００９】
例えば、倍精度計算のコンピュータであれば、符号を除くと有効桁数が１５桁しか存在しない。カオスの計算では、Ｘｎが１５桁を簡単に超えるため、丸め誤差がｎの進行に従って急激に増大し、時系列Ｘｎの数値自体が大きな誤差を含むことになる。Ｘｎが激しく振動しても、カオスの初期値依存性に起因するものか、丸め誤差の集積に起因するものかが判断できなくなるのである。
【００１０】
同じカオス写像Ｘｎ＋１＝Ｆ（Ｘｎ）を暗号化と複号化に使用しても、丸め誤差の原因により、同一のカオス時系列信号を暗号化段階と復号化段階で再現できないため、情報を正確に復元することが根本的にできないという袋小路に入っていた。このように、カオスの有効桁数における再現が困難であるため、カオスを暗号装置に利用することは不可能であると考えられていたのである。
【００１１】
【発明が解決しようとする課題】
そこで、丸め誤差を解消するカオスの計算方法が待望されていた。本発明者は長年の研究によりこの丸め誤差問題を解決することに初めて成功した。この解決方法は特開２００１−２５５８１７により既に公開されている。本発明はこの解法を更に進展させたものであるから、直接的な従来技術として、この解法を図２７及び図２８を用いて説明する。
【００１２】
図２７はロジスティック写像の厳密なカオス解を使用した従来のカオス時系列のアルゴリズム図である。典型的なカオス写像（Ｃｈａｏｓ  ｍａｐ）として、式（５０）で与えられるロジスティック写像（Ｌｏｇｉｓｔｉｃ  ｍａｐ）を説明する。このロジスティック写像の厳密解は既に求められており、その厳密解は式（５１）で表される。従って、式（５２）のようなカオス時系列Ｘｎを導出するには、式（５０）の漸化式により計算してもよいし、式（５１）の厳密解により直接計算することもできる。
【００１３】
カオス時系列の数値的発散性は厳密解であるＸｎ＝ｓｉｎ２（ｃ２ｎ）から理解できる。位相部にある指数関数２ｎの値はｎが大きくなると急速に増大し、ｎが５０〜１００程度になると、倍精度計算でも数値が発散してしまう。この数値的発散性がｓｉｎ計算により得られる小数桁数の発散性として出現するのである。コンピュータが倍精度計算で行われる場合には、その精度限界による丸め誤差が上位の桁に継続的に繰り込まれ、倍精度の有効桁数の中に丸め誤差が集積されてゆく。
【００１４】
本発明者は前記丸め誤差を消去する方法を発見した。本発明者は係数ｃの特別な場合として、式（５３）で表されるように、ｃ＝（ｋ／ｍ）πを想定した。素数ｍと整数ｋによる有理数ｋ／ｍと円周率πとの積として特定の係数ｃを選択したのである。式（５５）によりｋを初期値とし、式（５４）のＸ０＝ｓｉｎ２［（ｋ／ｍ）π］によりＸ０を導出する。この値は発散していない。
【００１５】
式（５６）の漸化式が要点である。ｓｉｎ２（θ）は周期πの周期関数であり、位相θがπの整数倍であれば、ｎπを除去して計算してもよい。このｎπの除去を式（５６）により素数ｍを法としてｋｎ＋１を算出して実行する。つまり、２ｋｎからｍの整数倍を除去し、その剰余をｋｎ＋１とする。このようにして、ｋｎ＋１の発散を防止する。このようにして、式（５７）により、桁数が発散しない時系列Ｘｎを式（５２）のように次々と導出する。このカオス時系列では、パラメータｋ、ｍがカオス発生装置の鍵となり、暗号化と復号化において再現性のあるカオス時系列信号を与える。パラメータｍを素数とするのは、ｋｎ＋１が０〜ｍ−１までの整数であれば約分できないからである。この素数ｍを大きな値、例えば１２桁の素数に設定すると繰り返しの周期を長くすることができ、ｎとして１２桁の値程度までは同じ値を繰り返さないと考えられ、暗号化される情報量が大きくても、十分に対応できる。
【００１６】
更に、本発明者は式（５８）の多項式も初期値依存性を有したカオス関数であることを発見した。各項を前述と同様のアルゴリズムを用いて計算すれば、カオスの発散性を解消することができる。式（５８）のカオス関数をカオス発生装置に用いれば、パラメータは（Ｍｉ，ｋｉ，ｍｉ）［ｉ＝１〜Ｌ］まで増やすことができる。これらの多数のパラメータ群を鍵としてカオス暗号装置に使用すれば、外部者がこれらの多数のパラメータ群を探知することは不可能になり、外部者による暗号系への侵入は強力に抑止される。整数ｋｉや素数ｍｉを例えば１２桁のように大きな桁数にとれば、極めて安全性の高い暗号システムを提供できる。
【００１７】
図２８は他のカオス写像の厳密なカオス解を使用した従来のカオス時系列のアルゴリズム図である。他のカオス写像として式（６０）を使用し、この厳密解は式（６１）で既に与えられている。この厳密解はＸｎ＝ｓｉｎ（ｃ２ｎ）であり、ロジスティック写像と極めてよく似た周期関数である。式（６０）又は式（６１）をそのまま用いれば、位相部分であるｃ２ｎの発散性により式（６２）のカオス時系列は数値的に発散してしまう。
【００１８】
しかし、カオス関数の位相部がロジスティック写像と全く同一であるから、図２７と同様に、式（６３）〜式（６７）のアルゴリズムを用いて、発散性のない、即ち丸め誤差を含まないカオス時系列Ｘｎを導出できる。このことは、多項式（６８）に示されるカオス関数を用いても同様である。また、この多項式を用いれば、パラメータは（Ｍｉ，ｋｉ，ｍｉ）［ｉ＝１〜Ｌ］と多数になるから、整数ｋｉや素数ｍｉを例えば１２桁のように大きな桁数にとれば、極めて安全性の高い暗号システムを提供できる。
【００１９】
前述したように、本発明者は、厳密なカオス解や、カオス解の１次結合であるカオス関数を用いた場合において、数値的発散性を除去することによって丸め誤差が集積しないカオス時系列の導出方法を提案してきた。この方法により、カオス的厳密性を満足させ、同時に暗号技術の安全性を強化することに成功した。
【００２０】
しかしながら、近年の情報通信は極めて高速化されつつあり、インターネットのブロードバンド化でも更なる高速化が要求されている。このように、高速化した情報を暗号化するには、カオス発生装置の高速化が必然的に要求される。このことは単に電子技術の高速化だけではなく、コンピュータによるカオス時系列信号の生成速度を一層に高速化することが要請される。
【００２１】
前述したように、厳密なカオス解や、カオス解の１次結合であるカオス関数を用いた場合には、位相部の計算に加えてｓｉｎ計算が必要となり、特に、ｓｉｎ計算に時間が掛かる傾向にあった。しかしｓｉｎを無くした場合には、カオス解やカオス関数とは異なり、カオス性が出現するかどうかも不明である。
【００２２】
従って、本発明は、初期値依存性をカオス的時系列の判断基準として用い、前述したカオス解やカオス関数に束縛されずに、新たな視点から高速計算が可能なカオス的時系列を探索し、このカオス的時系列を用いてカオス発生装置やカオス暗号装置などを提供することを目的とする。
【００２３】
【課題を解決するための手段】
本発明は上記課題を解決するために為されたものであり、本発明の第１形態は、変数ｎの増加に従って急激に増加する関数ｆｉ（ｎ）［ｉ＝１〜Ｌ、Ｌ≧１］に対し素数ｍｉ［ｉ＝１〜Ｌ、Ｌ≧１］を設定する手段と、変数ｎの初期値ｎ０に対してｆｉ（ｎ０）から素数ｍｉを法として剰余ｒｉ（ｎ０）［ｉ＝１〜Ｌ、Ｌ≧１］を導出する初期値演算手段と、ｆｉ（ｎ＋１）の計算では剰余ｒｉ（ｎ）を利用して素数ｍｉを法として導出された剰余ｒｉ（ｎ＋１）を導出する反復演算手段と、変数ｎをｎ０から順次増大させながら前記剰余ｒｉ（ｎ）［ｉ＝１〜Ｌ、Ｌ≧１］を通して生成される一意の値を有するカオス的時系列Ｘｎを出力するカオス信号出力手段から構成されるカオス発生装置である。
本発明者は変数ｎの増加に従って急激に増加する関数ｆ（ｎ）を用い、この関数ｆ（ｎ）から素数ｍを法として剰余ｒ（ｎ）を算出すれば、この剰余ｒ（ｎ）は発散せずに０≦ｒ（ｎ）＜ｍの範囲に常に存在することに着眼した。しかも、ｒ（０）から出発してｒ（ｎ＋１）をｒ（ｎ）との関係で算出するアルゴリズムでは、これらの時系列ｒ（ｎ）は計算機の有効桁数の範囲で丸め誤差を有することなく正確に計算できることを発見した。また、関数ｆ（ｎ）が急激に増加しながら発散する関数であれば、剰余ｒ（ｎ）は０とｍの間で不規則に振動することを発見した。このとき、素数ｍを大きく設定することによって、素数ｍの大きさに依存したｎｍａｘにより、ｎ＝０〜ｎｍａｘの範囲で、ｒ（ｎ）は反復することなく初期値依存性を有することも発見したのである。例えば、ｍを１０１２程度の素数とすれば、ｎｍａｘも同程度の大きさになるから、暗号化する情報より長い時系列を容易に作り出せる。このように、ｆ（ｎ）が前述したカオス解でもなく、またカオス解の一次結合からなるカオス関数でなくても、ｒ（ｎ）は初期値依存性を発現するカオス的時系列であり、その意味でｆ（ｎ）はカオス的関数と言うことができる。従って、０〜ｍの範囲で不規則振動するカオス的時系列ｒ（ｎ）から一意のカオス的時系列Ｘｎを導出して、有効なカオス発生装置を構成することが可能になる。ｒ（ｎ）をそのままＸｎとしてもよいし、ｒ（ｎ）を小数部とした１以下の小数をＸｎとしてもよいなど、ｒ（ｎ）からＸｎへの変換は任意に操作することが可能である。更に、複数のカオス的関数ｆｉ（ｎ）［ｉ＝１〜Ｌ］を用意し、素数ｍｉ［ｉ＝１〜Ｌ］を選択し、上述の反復手続により関数ｆｉ（ｎ）から素数ｍｉを法として剰余ｒｉ（ｎ）［ｉ＝１〜Ｌ］を個別的に算出することもできる。これらの剰余ｒｉ（ｎ）［ｉ＝１〜Ｌ］から一意の値を有するカオス的時系列Ｘｎを導出することもできる。このように、本発明によれば、カオス的関数ｆ（ｎ）の１次結合を利用してカオス的時系列Ｘｎを発生するカオス発生装置も提供できる。ｆ（ｎ）の中にはｓｉｎやｃｏｓなどの三角関数が含まれず、しかも剰余ｒ（ｎ）を導出する反復計算であるから高速演算が可能であり、カオス的時系列Ｘｎを高速に導出できるカオス発生装置を提供できる。
【００２４】
第２の形態は、剰余ｒｉ（ｎ）［ｉ＝１〜Ｌ、Ｌ≧１］を前記素数ｍｉ［ｉ＝１〜Ｌ、Ｌ≧１］で割算して１より小さな小数の商ｑｉ（ｎ）［ｉ＝１〜Ｌ、Ｌ≧１］を算出し、Ｌ＝１の場合にはｑ１（ｎ）から前記Ｘｎを導出し、Ｌ≧２の場合にはｑ１（ｎ）＋・・＋ｑＬ（ｎ）の小数部分から前記Ｘｎを導出するカオス発生装置である。
Ｌ≧１は１以上の剰余ｒｉ（ｎ）を使用できることを意味している。０〜ｍの間の数値であるｒ（ｎ）をｍで割ると、ｑ（ｎ）は０≦ｑ（ｎ）≦１の範囲にある小数になる。この小数ｑ（ｎ）からカオス時系列Ｘｎを発生させる。また、複数個の剰余ｒｉ（ｎ）［ｉ＝１〜Ｌ］を使用する場合には、ｑ１（ｎ）＋・・＋ｑＬ（ｎ）が１を超える場合も出現するから、この和の小数部分からカオス時系列Ｘｎを発生させる。従って、小数のカオス時系列Ｘｎを発生させることができる。
【００２５】
第３の形態は、前記関数ｆｉ（ｎ）［ｉ＝１〜Ｌ、Ｌ≧１］がｆｉ（ｎ＋１）＝（ｐｉ＋ｑｉｎ＋・・＋ｓｉｎｔｉ）・ｆｉ（ｎ）［ｉ＝１〜Ｌ、Ｌ≧１］の漸化式を満足するカオス発生装置である。
漸化式としては、ｆ（ｎ＋１）＝ｐ・ｆ（ｎ）、ｆ（ｎ＋１）＝（ｐ＋ｑｎ）・ｆ（ｎ）・・・等の任意の式が利用できる。その中で最も簡単な漸化式は、ｆ（ｎ＋１）＝ｐ・ｆ（ｎ）であり、この場合には、ｆ（ｎ）＝ｃ・ｐｎと書くことができる。ｆ（ｎ）が漸化式で与えられる場合には、剰余ｒ（ｎ）も同様の漸化式を有し、ｒ（ｎ＋１）をｒ（ｎ）から反復的に導出することが可能になる。従って、初期値ｒ（ｎ０）から出発して、漸化式を用いて次々にｒ（ｎ）を導出し、このｒ（ｎ）に対し常に素数ｍを法とした剰余を取れば、ｒ（ｎ）は０〜ｍ−１の間を振動する値になる。このようにすれば、ｒ（ｎ）の値に丸め誤差は蓄積されず、数値的発散は防止される。ｒ（ｎ）からカオス時系列Ｘｎを導出するには、第１形態で述べたように、ｒ（ｎ）をそのままＸｎとしてもよいし、ｒ（ｎ）を小数部とした１以下の小数をＸｎとしてもよい。また、０〜ｍ−１の間を振動するｒ（ｎ）を更にｍで割ってその小数部だけをＸｎとできるなど、ｒ（ｎ）からＸｎへの変換は任意に操作することが可能である。
【００２６】
第４の形態は、前記関数ｆｉ（ｎ）［ｉ＝１〜Ｌ、Ｌ≧１］がｋｉ・ｐｉｎ［ｐｉは自然数、ｉ＝１〜Ｌ、Ｌ≧１］で表されるカオス発生装置である。
本発明者はｎの増加に従って急激に増大発散する関数ｆ（ｎ）の一例としてｃ・ｐｎを提案する。この関数形は、第３形態におけるｆ（ｎ＋１）＝ｐ・ｆ（ｎ）の場合に相当する。前述したように、従来からカオス解としてｓｉｎ［（ｋ／ｍ）π２ｎ］やｓｉｎ２［（ｋ／ｍ）π２ｎ］、カオス関数としてそれらの１次結合（多項式）を使用していたが、本発明者はその位相部である（ｋ／ｍ）π２ｎに着目した。この関数のπを無視して、ｆ（ｎ）＝ｃ２ｎを本発明の発散関数として使用し、素数ｍによる剰余ｒ（ｎ）が初期値依存性を有することを発見して、本発明形態を完成させたものである。指数関数の底を２に限定せず、自然数ｐにまで拡張させた関数ｆ（ｎ）＝ｃｐｎが前述した本発明のアルゴリズムにより初期値依存性を有することが、本発明者によって初めて発見された。また、実数ｃを有理数に限定し、ｃ＝ｋ／ｍと定義して、ｆ（ｎ）＝ｋｐｎの法ｍによる剰余ｒ（ｎ）も初期値依存性を示すことが確認された。また、この剰余ｒ（ｎ）を素数ｍによって割った商（小数）ｑ（ｎ）も初期値依存性を示す。この発見に基づいて、剰余ｒ（ｎ）又は小数ｑ（ｎ）からカオス的時系列Ｘｎを導出するカオス発生装置を提供することができる。関数ｆ（ｎ）としてｃｉｐｉｎの一次結合を利用できることも上述した通りである。このように、ｃｐｎという極めて単純な発散関数を用いるから高速演算が可能になり、大容量通信においても高速に暗号化と複合化を実現するカオス発生装置を提供できる。
【００２７】
第５の形態は、ｎ＝０においてｒｉ（０）＝ｋｉ（ｍｏｄ  ｍｉ）［ｉ＝１〜Ｌ、Ｌ≧１］とし、ｒｉ（ｎ＋１）＝ｐｉ・ｒｉ（ｎ）（ｍｏｄ  ｍｉ）［ｉ＝１〜Ｌ、Ｌ≧１］を漸化式として利用して発散を防止し、この反復演算により得られる剰余ｒｉ（ｎ）［ｉ＝１〜Ｌ、Ｌ≧１］からカオス時系列Ｘｎを導出するカオス発生装置である。
上述したように、ｆ（ｎ）＝ｃｐｎを用いると、ｆ（ｎ＋１）＝ｐ・ｆ（ｎ）が漸化式となり、ｆ（０）＝ｃを初期値として、漸化式によりｆ（ｎ）を順次計算できる。ｃ＝ｋ／ｍ（ｋ：整数、ｍ：素数）とおけば、各ステップで法ｍによる剰余ｒ（ｎ）を算出することによって、発散を完全に起こさないで丸め誤差を含有しない剰余ｒ（ｎ）を逐次導出することが可能になる。また、この剰余ｒ（ｎ）を素数ｍで割って小数ｑ（ｎ）を導出できる。剰余ｒ（ｎ）又は小数ｑ（ｎ）から初期値依存性を有したカオス的時系列Ｘｎを発生させるカオス発生装置を提供することができる。関数ｆ（ｎ）としてｃｉｐｉｎの一次結合を利用できることも上述した通りである。
【００２８】
第６の形態は、文章、画像又は音声からなるデジタル情報を暗号化又は復号化するために使用されるカオス発生装置であり、関数ｆｉ（ｎ）［ｉ＝１〜Ｌ、Ｌ≧１］のパラメータ及び素数ｍｉ［ｉ＝１〜Ｌ、Ｌ≧１］を暗号化又は復号化の鍵として使用するカオス発生装置である。
本発明のカオス発生装置はカオス時系列を丸め誤差なく確実に再現できるから、発散関数ｆｉ（ｎ）［ｉ＝１〜Ｌ、Ｌ≧１］のパラメータ及び素数ｍｉ［ｉ＝１〜Ｌ、Ｌ≧１］を鍵として与え、発散関数ｆｉ（ｎ）を指定するだけで、暗号化と復号化を確実に行えるカオス発生装置を提供できる。しかも、多くのパラメータや素数ｍを鍵とするから、外部からこれらの鍵を解読されることは困難であり、またこれらの鍵の桁数を増やすだけで外部から侵入不能な暗号装置の確立に貢献できる。
【００２９】
第７の形態は、コンピュータを、変数ｎの増加に従って急激に増加する関数ｆｉ（ｎ）［ｉ＝１〜Ｌ、Ｌ≧１］に対し素数ｍｉ［ｉ＝１〜Ｌ、Ｌ≧１］を設定する手段と、変数ｎの初期値ｎ０に対してｆｉ（ｎ０）から素数ｍｉを法として剰余ｒｉ（ｎ０）［ｉ＝１〜Ｌ、Ｌ≧１］を導出する初期値演算手段と、ｆｉ（ｎ＋１）の計算では剰余ｒｉ（ｎ）を利用して素数ｍｉを法として導出された剰余ｒｉ（ｎ＋１）を導出する反復演算手段と、変数ｎをｎ０から順次増大させながら前記剰余ｒｉ（ｎ）［ｉ＝１〜Ｌ、Ｌ≧１］を通して生成される一意の値を有するカオス的時系列Ｘｎを出力するカオス信号出力手段として機能させるカオス発生用プログラムである。
コンピュータ演算では、倍精度や４倍精度などで示される有効桁しか有していないから、カオス関数に特有の数値的発散性をその有効桁数に抑えることが必要になる。この第７形態では、発散関数ｆ（ｎ）を素数ｍを法とした剰余ｒ（ｎ）に変換するから、素数ｍの桁数を有効桁数内に制限することによって、剰余ｒ（ｎ）を常に有効桁数内の数値として得ることができる。従って、コンピュータ演算において発散が無く、その結果丸め誤差の無いカオス的時系列Ｘｎを生成することができる。しかも、関数ｆ（ｎ）や剰余ｒ（ｎ）の演算の中に三角関数を全く含まないから演算速度を高速化できる。カオス的時系列を使用するシミュレーション全体の高速化を達成できる。また、初期値演算より以後では、ｆ（ｎ）自体の演算を行わずに、有限値の剰余ｒ（ｎ）を用いた反復演算を行って連続的にカオス的時系列を生成するから、カオス演算を高速に行うことができる。従って、カオス的時系列を使用するシミュレーション全体の高速化を達成できる。
【００３０】
第８の形態は、コンピュータを、変数ｎの増加に従って急激に増加する関数ｆｉ（ｎ）［ｉ＝１〜Ｌ、Ｌ≧１］に対し素数ｍｉ［ｉ＝１〜Ｌ、Ｌ≧１］を設定する手段と、変数ｎの初期値ｎ０に対してｆｉ（ｎ０）から素数ｍｉを法として剰余ｒｉ（ｎ０）［ｉ＝１〜Ｌ、Ｌ≧１］を導出する初期値演算手段と、ｆｉ（ｎ＋１）の計算では剰余ｒｉ（ｎ）を利用して素数ｍｉを法として導出された剰余ｒｉ（ｎ＋１）を導出する反復演算手段と、変数ｎをｎ０から順次増大させながら前記剰余ｒｉ（ｎ）［ｉ＝１〜Ｌ、Ｌ≧１］を通して生成される一意の値を有するカオス的時系列Ｘｎを出力するカオス信号出力手段として機能させるためのプログラムを記録したコンピュータ読み取り可能なカオス発生用記録媒体である。
第７の形態で説明したように、このプログラムによれば、カオス時系列を丸め誤差無く演算でき、しかも高速演算が可能になる。このようなプログラムを保存した記録媒体を安価に提供できるから、市場において高精度にしかも高速にカオスシミュレーションを行えるようにできる利点がある。
【００３１】
第９の形態は、変数ｎの増加に従って急激に増加する関数ｆｉ（ｎ）［ｉ＝１〜Ｌ、Ｌ≧１］に対し素数ｍｉ［ｉ＝１〜Ｌ、Ｌ≧１］を設定する手段と、変数ｎの初期値ｎ０に対してｆｉ（ｎ０）から素数ｍｉを法として剰余ｒｉ（ｎ０）［ｉ＝１〜Ｌ、Ｌ≧１］を導出する初期値演算手段と、ｆｉ（ｎ＋１）の計算では剰余ｒｉ（ｎ）を利用して素数ｍｉを法として導出された剰余ｒｉ（ｎ＋１）を導出する反復演算手段と、変数ｎをｎ０から順次増大させながら前記剰余ｒｉ（ｎ）［ｉ＝１〜Ｌ、Ｌ≧１］を通して生成される一意の値を有するカオス的時系列Ｘｎを出力するカオス信号出力手段から構成される擬似乱数発生装置である。
本発明により得られるカオス的時系列ＸｎをＸｎ＋１−Ｘｎ平面にプロットすると、その全平面に極めて均一に分散し、しかもＸｎのスペクトルは白色雑音に近い性質を有することが本発明者等により初めて確認された。また、Ｘｎの自己相関関数Ｒ（Ｌ）は遅れ数Ｌに対して極めて小さな値をとることが分かった。これらの結果から、本発明により得られるカオス時系列Ｘｎは擬似乱数として有効であることが実証され、各種のシミュレーションで効果的に使用できる擬似乱数発生装置を提供するものである。
【００３２】
第１０の形態は、変数ｎの増加に従って急激に増加する関数ｆｉ（ｎ）［ｉ＝１〜Ｌ、Ｌ≧１］に対し素数ｍｉ［ｉ＝１〜Ｌ、Ｌ≧１］を設定する手段と、変数ｎの初期値ｎ０に対してｆｉ（ｎ０）から素数ｍｉを法として剰余ｒｉ（ｎ０）［ｉ＝１〜Ｌ、Ｌ≧１］を導出する初期値演算手段と、ｆｉ（ｎ＋１）の計算では剰余ｒｉ（ｎ）を利用して素数ｍｉを法として導出された剰余ｒｉ（ｎ＋１）を導出する反復演算手段と、変数ｎをｎ０から順次増大させながら前記剰余ｒｉ（ｎ）［ｉ＝１〜Ｌ、Ｌ≧１］を通して生成される一意の値を有するカオス的時系列Ｘｎを出力するカオス信号出力手段から構成されるカオス発生装置と、このカオス発生装置のカオス時系列Ｘｎによりデジタル情報を暗号化して暗号を生成する暗号化装置と、この暗号を受信して前記カオス時系列と全く同じカオス時系列Ｘｎにより暗号からデジタル情報を導出する復号化装置とを有し、暗号化と復号化に際して前記関数ｆｉ（ｎ）［ｉ＝１〜Ｌ、Ｌ≧１］のパラメータと素数ｍｉ［ｉ＝１〜Ｌ、Ｌ≧１］を鍵として使用する暗号装置である。
第１の形態において詳述したように、変数ｎの増加に従って急激に増加する関数ｆ（ｎ）を出発関数にしながら、素数ｍを法として剰余ｒ（ｎ）を算出し、しかもｒ（ｎ＋１）を前記剰余ｒ（ｎ）を通して導出するから、剰余ｒ（ｎ）には丸め誤差が全く混入しない。丸め誤差を含まない剰余ｒ（ｎ）からカオス的時系列Ｘｎを導出するから、関数ｆ（ｎ）のパラメータと素数ｍを鍵としてカオス的時系列を何回でも確実に再現することが可能になる。従って、暗号化装置ではこの再現可能なカオス的時系列Ｘｎを用いて情報を暗号化し、復号化装置では前記カオス的時系列Ｘｎを用いて暗号から情報を取り出す復号化処理を確実に行うことができる。また、関数ｆ（ｎ）にはｓｉｎやｃｏｓ等の三角関数が含まれないからカオス的時系列Ｘｎを高速に導出することができ、情報の高速通信に適合した高速暗号装置を提供することができる。また、複数の関数ｆｉ（ｎ）［ｉ＝１〜Ｌ］と複数の素数ｍｉ［ｉ＝１〜Ｌ］を使用すると、関数ｆｉ（ｎ）［ｉ＝１〜Ｌ］の多くのパラメータや素数ｍｉ［ｉ＝１〜Ｌ］が鍵となり、これらの鍵群を外部から解読することはほぼ不可能になる。従って、前述した高速性を有し、しかも安全性の高い暗号装置を実現できる。
【００３３】
【発明の実施の形態】
以下に、本発明に係るカオス発生装置、カオス発生用プログラム、カオス発生用記録媒体、擬似乱数発生装置及び暗号装置の実施形態を添付する図面に従って詳細に説明する。
【００３４】
図１は本発明に係る暗号装置２のブロック構成図で、この暗号装置２には本発明に係るカオス発生装置１０、２０が組み込まれている。この暗号装置２は情報を暗号にする暗号化装置４と暗号から情報を復元する復号化装置６により構成されている。
【００３５】
暗号化装置４は、カオス時系列信号Ｘｎを出力するカオス発生装置１０と、このカオス時系列信号Ｘｎを情報８に組み込んで暗号１４を出力する演算装置１２から構成されている。情報８には、文章（テキスト）情報、画像情報、音声情報があり、これらの各種情報からなる混合情報もある。デジタル情報通信では、情報８はデジタル情報であり、カオス時系列信号もデジタルカオス時系列信号である。
【００３６】
カオス時系列信号Ｘｎからデジタルカオス時系列信号を生成するには、例えば次のような方法がある。カオス時系列信号Ｘｎが０〜１の間の数値信号であるとすると、０．５未満の数値信号は”０”とし、０．５以上の数値信号は”１”とすればよい。また、カオス時系列信号Ｘｎが０〜１０６の間の数値信号であるとすると、０．５×１０６未満の数値信号は”０”とし、０．５×１０６以上の数値信号は”１”とすればよい。このような各種方法によりカオス発生装置１０によりデジタルカオス時系列信号が生成される。
【００３７】
演算装置１２により情報８にカオス時系列信号Ｘｎが組み込まれる。デジタル信号処理では、演算処理として論理演算が施される。その中でも、例えば排他的論理和を採ると演算処理がきわめて簡単になる。排他的論理和は１＋１＝０、１＋０＝１、０＋１＝１、０＋０＝０からなる規則である。デジタル情報８が（０１０１１００１０１）とし、デジタルカオス時系列信号Ｘｎが（１００１０１１００）とすると、排他的論理和により暗号１４は（０１０１１００１０１）＋（１００１０１１００）＝（１１０００１００１）となる。  このようにして作成された暗号１４は、図示しない通信装置により送信（１６）される。
【００３８】
複号化装置６は、暗号１４を受信（１８）する図示しない受信装置と、カオス時系列信号Ｘｎを出力するカオス発生装置２０と、このカオス時系列信号Ｘｎを暗号１４に処理（複号化）して情報８を出力する演算装置２２から構成されている。
【００３９】
複号化装置６のカオス発生装置２０は暗号化装置４のカオス発生装置１０と全く同様に構成され、同一のカオス時系列信号Ｘｎを再現するように構成されている。カオス発生装置１０、２０には後述されるカオス発生用のアルゴリズムが内蔵されており、同一のカオス時系列信号Ｘｎを発生させるため、同一の鍵２４が与えられる。また、カオス発生用のアルゴリズムは、後述するように極めて高速演算が可能に設計されるから、近年における情報通信の高速化に十分に追随できるように構成されている。
【００４０】
前記鍵２４は、後述するように多数のパラメータ（Ｍｉ、ｋｉ、ｍｉ、ｐｉ）［ｉ＝１〜Ｌ、Ｌ≧１］から構成され、各パラメータは多数桁の数値から形成される。つまり、鍵２４は関数ｆ（ｎ）を構成するパラメータと素数ｍからなる。このように、鍵２４として多数のパラメータを使用すると、第三者はこれらの鍵を完全に解読することは不可能である。また各パラメータを多数桁の数字で構成すれば、ビット数の増加に従って、鍵の解読は不可能になる。ここに本発明の特徴があり、極めて安全な暗号装置を提供できるのである。即ち、本発明に係る暗号装置２の特徴は、カオス発生装置１０、２０に存在する。
【００４１】
暗号化処理に前記排他的論理和が使用された場合には、複号化処理でも同様の排他的論理和が行われる。具体例で説明すれば、カオス発生装置２０により前記と同一のデジタルカオス時系列信号Ｘｎ（１００１０１１００）が出力される。暗号１４が（１１０００１００１）であり、演算装置２２により暗号１４とデジタルカオス時系列信号Ｘｎとの排他的論理和が演算される。即ち、（１１０００１００１）＋（１００１０１１００）＝（０１０１００１０１）となる。このようにして、（０１０１００１０１）で与えられる情報８が導出される。
【００４２】
演算装置１２により通常の論理和が行われれば、演算装置２２では暗号１４からカオス時系列信号Ｘｎを差し引いて情報８が導出される。即ち、演算装置１２の演算に対し、演算装置２２では逆演算が行われる。排他的論理和では、演算と逆演算が全く同一になる点に特徴があり、その意味で演算処理が簡単で効率的である。
【００４３】
図２は本発明に係るカオス発生装置１０（２０）の構成図である。カオス発生装置１０（２０）はパラメータ入力手段３０と、初期値演算手段３４と反復演算手段３６からなるカオス演算手段３２と、カオス信号出力手段３８から構成されている。
【００４４】
パラメータ入力手段３０はカオス演算に必要なパラメータ２８を読み込む部材で、例えば後述するような（Ｍｉ，ｋｉ，ｍｉ，ｐｉ）［ｉ＝１・・・Ｌ，Ｌ≧１］等からなるパラメータ群が読み込まれる。このパラメータ２８によりカオス的関数が特定され、内蔵された手順に従ってカオス的時系列が演算されてゆく。
【００４５】
カオス演算手段３２は、高速演算を実現するため、カオス的時系列の初期値Ｘ０を導出する初期値演算手段と、初期値に基づいて反復演算によりカオス的時系列Ｘｎ（ｎ≧１）を連続的に生成する反復演算手段３６が設けられている。初期値はｎ＝０が通常であるが、任意のｎ０から出発してもよい。反復演算手段３６には、後述するように漸化式が組み込まれ、この漸化式に従って時系列Ｘｎが生成される。
【００４６】
カオス信号出力手段３８は、初期値Ｘ０や時系列Ｘｎ（ｎ≧１）を信号として外部に出力するための部材である。カオス時系列Ｘｎは数値としては０≦Ｘｎ≦１の場合が多いが、例えば０≦Ｘｎ≦１０００であってもよい。カオス信号出力手段３８によりこのカオス的時系列Ｘｎが、例えば電圧値として出力される。この信号はデジタルカオス時系列信号として出力される。
【００４７】
このカオス発生装置１０（２０）は電子回路装置として構成されてもよいし、カオス演算プログラムを内蔵してコンピュータをカオス発生装置として組み込んでも良い。また、カオス演算プログラムの記録媒体を装填して、コンピュータをカオス発生装置として利用しても構わない。
【００４８】
図３は本発明に係る擬似乱数発生装置４０の構成図である。この擬似乱数発生装置４０は前述したカオス発生装置と同様に構成されており、パラメータ入力手段４２と、初期値演算手段４６と反復演算手段４８からなるカオス演算手段４４と、カオス信号出力手段５０を基本構成要素としている。
【００４９】
パラメータ入力手段４２は演算に必要なパラメータ２８を読み込む部材で、例えば後述するような（Ｍｉ，ｋｉ，ｍｉ，ｐｉ）［ｉ＝１・・・Ｌ，Ｌ≧１］等からなるパラメータ群を読み込む。このパラメータによりカオス的関数が特定され、内蔵された手順に従ってカオス時系列が演算されてゆく。
【００５０】
カオス演算手段４４は、高速演算を実現するため、カオス時系列の初期値Ｘ０を導出する初期値演算手段４６と、初期値に基づいて反復演算により時系列Ｘｎ（ｎ≧１）を連続的に生成する反復演算手段４８が設けられている。初期値はｎ＝０が通常であるが、任意のｎ０から出発してもよい。反復演算手段４８には、後述するように漸化式が組み込まれ、この漸化式に従って時系列Ｘｎが生成される。
【００５１】
カオス信号出力手段５０は、初期値Ｘ０や時系列Ｘｎ（ｎ≧１）を信号として外部に出力するための部材である。乱数は通常０〜１の範囲に選択される場合が多いから、カオス時系列Ｘｎは数値としては０≦Ｘｎ≦１の範囲に制限されて出力される。カオス信号出力手段５０によりこのカオス時系列Ｘｎが、例えば電圧値として出力される。この信号はアナログカオス時系列信号として出力されてもよいし、０〜１の間を更に量子化して多段階数値として出力されてもよい。
【００５２】
図４は本発明に使用されるカオス的関数ｆ（ｎ）及びその剰余ｒ（ｎ）の具体例を示す説明図である。本発明者が発見したカオス的関数ｆ（ｎ）とは変数ｎの増加に従って急激に増大化する関数である。
【００５３】
本発明者がこのようなカオス的関数を発見した経過を次に述べる。図２７及び図２８に示したように、カオス写像を満足する厳密なカオス解はＸｎ＝ｓｉｎ（ｃ２ｎ）やＸｎ＝ｓｉｎ２（ｃ２ｎ）であった。これらカオス解の小数桁数の発散性は、その位相部であるｃ２ｎが変数ｎの増加に従って数値的に発散する性質に起因している。
【００５４】
言い換えれば、Ｘｎの初期値依存性も位相部ｃ２ｎの数値的発散性に起因すると考えられる。そこで、本発明者はｃ＝（ｋ／ｍ）π（ｋ：整数、ｍ：素数）の特別な場合を考察し、πの整数倍の周期性を演算から除去すれば、ｃ２ｎの数値的発散性を消去できることを発見した。しかも素数ｍを大きく採ると、素数ｍの大きさと同程度のｎｍａｘまでの範囲、即ち０〜ｎｍａｘの範囲において時系列Ｘｎが初期値依存性を発現することを発見したのである。
【００５５】
そこで、本発明者は、演算の高速性を実現するために、ｓｉｎ関数を排除し、その位相部ｃ２ｎを関数ｆ（ｎ）と定義して、この関数ｆ（ｎ）からカオス時系列Ｘｎを導出する方法を想定するに到った。ｓｉｎ関数を用いないためπを除去し、ｃ＝ｋ／ｍと定義して、ｆ（ｎ）＝（ｋ／ｍ）２ｎを導入する。この関数はｆ（ｎ＋１）＝２ｆ（ｎ）という漸化式を満足する。
【００５６】
まず、ｆ（ｎ）の数値的発散性を除去するため、ｎの初期値ｎ０で、ｒ（ｎ０）＝ｆ（ｎ０）（ｍｏｄ  ｍ）により法ｍによる剰余ｒ（ｎ０）を演算する。通常はｎ０＝０とされる。このｒ（ｎ０）を初期値として、ｎ＞ｎ０の剰余ｒ（ｎ）が演算される。つまり、上記の漸化式の関係から成立する剰余の漸化式、ｒ（ｎ＋１）＝２ｒ（ｎ）（ｍｏｄ  ｍ）を用いて、剰余ｒ（ｎ）が連続的に算出される。
【００５７】
剰余ｒ（ｎ）は０≦ｒ（ｎ）＜ｍを満足する。素数ｍを大きく設定すれば、素数ｍと同程度のｎｍａｘまでｒ（ｎ）は繰り返すことなくカオス特性である初期値依存性を示すことが本発明者により発見された。本発明はこの発見に基づいて為されたものである。
【００５８】
ｒ（ｎ）は素数ｍより小さいから、素数ｍの桁数を精度限界内に設定すれば、ｒ（ｎ）に丸め誤差が蓄積することはない。カオス時系列Ｘｎとして前記剰余ｒ（ｎ）を使用してもよいが、この剰余ｒ（ｎ）を変換した数値でもよい。例えば、時系列を１以下の小数に設定するには、ｒ（ｎ）を導出して、Ｘｎ＝ｒ（ｎ）／ｍ（ｍｏｄ  １）とすればよい。即ち、ｒ（ｎ）を素数ｍで割ってその小数をＸｎとすればよい。これ以外の変換方法で時系列Ｘｎを導出することも自在にできる。
【００５９】
前述したｆ（ｎ＋１）＝２ｆ（ｎ）の関係を基礎にして、本発明者はカオス的関数として式（１ａ）のｆ（ｎ＋１）＝ｇ（ｎ）・ｆ（ｎ）を提案する。この一般的関係が図４に示されている。ｇ（ｎ）＝２が上記の場合に対応し、一般にｇ（ｎ）＝（ｐ＋ｑｎ＋・・＋ｓｎｔ）の多項式が与えられる。ｐ、ｑ・・ｓ、ｔが０以上の整数として定義されると、ｇ（ｎ）は常に整数となる。
【００６０】
ｆ（０）等の初期値を整数で与えると、式（１ａ）によればｆ（ｎ）は急激に増大化して発散する。この発散を防止するために、演算過程で適当な素数ｍを選択して（ｍｏｄ  ｍ）をとり、ｍより小さな剰余ｒ（ｎ）が導出される。この一般的関係がｒ（ｎ＋１）＝ｇ（ｎ）・ｒ（ｎ）（ｍｏｄ  ｍ）として表されている。
【００６１】
多項式ｇ（ｎ）として、式（２ａ）〜式（６ａ）が例示されている。これらのｇ（ｎ）に対応して、剰余ｒ（ｎ）においては式（２ｂ）〜式（６ｂ）が与えられる。式（１ｂ）〜式（６ｂ）により得られる剰余ｒ（ｎ）は０〜ｍの範囲内の整数である。このｒ（ｎ）をＸｎとしてもよいし、このｒ（ｎ）を変換した数値をＸｎとしてもよい。変換の一例としてｒ（ｎ）（ｍｏｄ  １）があり、Ｘｎが１より小さな小数で与えられる。任意の変換が行えることは云うまでも無い。
【００６２】
図５は本発明に係るカオス的関数を用いた信号発生用のフローチャート図である。このフローチャート図では、所望の種類のカオス的関数により、カオス時系列Ｘｎが生成される。ステップｙ１は、Ｌ個のカオス的関数ｆｉ（ｎ）と素数ｍｉを設定する手段を示す。関数形が決まっているときには、その関数を与えるパラメータが設定される。Ｌは１以上であればよく、１個のカオス的関数でもよいし、複数個のカオス的関数でもよい。［ｉ＝１〜Ｌ、Ｌ≧１］により１個以上のカオス的関数の選択が指定されている。
【００６３】
ステップｙ２は、剰余の初期値ｒｉ（０）を設定する手段を示す。ｎの初期値として０が選ばれる。ｎ＝０におけるカオス的関数ｆｉ（０）及びその剰余ｒｉ（０）が導出される。つまり、カオス的関数ｆｉ（０）の法ｍｉによる剰余ｒｉ（０）が導出される。このステップによって、剰余の初期値ｒｉ（０）が設定される。従って、ｒｉ（０）は０〜ｍの範囲内の整数として導出される。変数ｎの初期値として任意の自然数ｎ０が設定されても良い。この場合には、ｒｉ（ｎ０）が導出される。
【００６４】
ステップｙ３は、カオス時系列Ｘｎの初期値Ｘ０を導出する手段を示す。Ｌ個の剰余ｒ１（０）・・ｒＬ（０）について小数化処理が行われる。即ち、ｒｉ（０）／ｍｉ［ｉ＝１〜Ｌ、Ｌ≧１］により各剰余ｒｉ（０）が少数化され、それらの総和が算出される。ｒｉ（０）の夫々は１より小さいが、総和は１を超える場合が出現する。そのため、総和の小数部だけをＸ０とするため、総和に対し（ｍｏｄ  １）が操作され、小数部をＸ０として出力する。
従って、本発明ではステップｙ２及び／又はステップｙ３は初期値演算手段と呼ばれる。
【００６５】
ステップｙ４〜ｙ８はｎ≧１のＸｎを導出する反復演算手段を示す。まず、ステップｙ４はｎ＝０を設定する手段である。ｎの初期値としてｎ０が使用されるときには、ｎ＝ｎ０が設定される。ステップｙ５は素数ｍより小さなｒｉ（ｎ）から素数ｍより小さなｒｉ（ｎ＋１）を導出する手段である。つまり、ｒｉ（ｎ）からｒｉ（ｎ＋１）を導出し、その素数ｍｉを法とする剰余ｒｉ（ｎ＋１）がｉ＝１〜Ｌ（Ｌ≧１）に対して導出される。
【００６６】
ステップｙ６はカオス的時系列Ｘｎ＋１を導出する手段である。Ｌ個の剰余ｒ１（ｎ＋１）・・ｒＬ（ｎ＋１）について小数化処理が行われる。即ち、ｒｉ（ｎ＋１）／ｍｉ［ｉ＝１〜Ｌ、Ｌ≧１］により各剰余ｒｉ（ｎ＋１）が少数化され、それらの総和が算出される。ｒｉ（ｎ＋１）の夫々は１より小さいが、総和は１を超える場合が出現する。そのため、総和の小数部だけをＸｎ＋１とするため、総和に対し（ｍｏｄ  １）が操作され、小数部をＸｎ＋１として出力する。ステップｙ５とステップｙ６は一体的に処理されることもできる。即ち、Ｘｎ＋１＝ＳＵＭ［［ｒｉ（ｎ＋１）（ｍｏｄ  ｍｉ）］／ｍｉ］（ｍｏｄ  １）が演算されてもよい。ＳＵＭはｉ＝１〜Ｌについて総和を示す。
数学記号では和はシグマ記号で表され、添付される全ての図面ではシグマ記号で表されている。しかし、明細書の中では記号使用が制限されているため、シグマ記号をＳＵＭと表記する。
【００６７】
ステップｙ７は時系列Ｘｎの信号出力を停止するための判別手段である。出力停止（Ｙ）なら信号出力が停止される。出力停止でない（Ｎ）とき、ステップｙ８はｎをｎ＋１に繰り上げて反復演算を繰り返す手段である。最初、ｎ＝０（ｙ４）が与えられたからＸ１が出力（ｙ６）され、次の反復演算手段によりｎ＝１（ｙ８）としてＸ２が出力される。このようにして、任意個数のカオス的時系列Ｘ０、Ｘ１、Ｘ２・・が連続的に出力されてゆく。出力停止は図示しない出力停止手段によって実行される。
【００６８】
以上の手続では、一般的なカオス的関数ｆ（ｎ）からカオス的時系列Ｘｎを導出する一般的方法が説明された。以下の手続では、ｆ（ｎ＋１）＝ｐｆ（ｎ）で表される簡単なカオス的関数を用いてカオス時系列Ｘｎを生成するアルゴリズム及びフローチャート並びに各種図面が説明される。本発明者が最初に発見したカオス的関数はｆ（ｎ＋１）＝２ｆ（ｎ）で与えられる形式を有した。上記カオス的関数はこの数値２を一般の自然数ｐに拡張した形式を有している。
【００６９】
図６は１項（１−ｔｅｒｍ）からなるカオス的関数（Ｃｈａｏｔｉｃ  Ｆｕｎｃｔｉｏｎ）によるカオス時系列のアルゴリズム図である。式（１）はカオス的関数を与え、ｆ（ｎ）＝ｃｐｎにおいて、ｃ＝ｋ／ｍと置かれている。ｋは整数、ｍは素数である。素数ｍの大きさによって初期値依存性の領域幅の大きさが決まる。素数ｍの大きさを、例えば、１０１１、１０１２又は１０１３オーダーに設定すれば、式（２）で表されるカオス時系列の最終値ＸＮの順番数Ｎも同程度の大きさになる。このようにすれば、暗号化される情報のデータ数よりもカオス時系列の長さを大きく設定でき、暗号化処理などで支障を来たさない。
【００７０】
式（３）はカオス時系列を与えるパラメータｋ、ｍ、ｐを意味しており、これらのパラメータを暗号装置における鍵とする。式（４）〜（７）はカオス時系列Ｘｎを与えるアルゴリズムを表している。式（４）では、整数ｋに対し（ｍｏｄ  ｍ）が施され、得られるｋ０を０≦ｋ０＜ｍの範囲に制限する。通常では、パラメータｋ、ｍを設定するときに整数ｋはｋ＜ｍとなるように選ばれるから、この場合には式（４）で（ｍｏｄ  ｍ）の処理は不要になる。
【００７１】
式（５）では、ｋ０の少数化処理が行われる。ｋ０は０≦ｋ０＜ｍの値であるから、ｋ０を素数ｍで割ることにより少数化が行われる。ｋ０／ｍに対して（ｍｏｄ１）を処理し、その小数部からカオス的時系列の初期値Ｘ０が導出される。Ｘ０の小数桁数はコンピュータの有効精度により制限される。
【００７２】
次に、ｎ＝０〜Ｎ−１の範囲で反復演算が行われる。式（６）により、０〜ｍの範囲にあるｋｎからｋｎ＋１＝ｐ・ｋｎ（ｍｏｄ  ｍ）によりｋｎ＋１が導出される。ｐを乗じることによってｋｎ＋１はｍより大きくなる可能性があるから、（ｍｏｄｍ）によりｋｎ＋１を０≦ｋｎ＋１＜ｍの範囲に制限する。
【００７３】
更に、式（７）によりｋｎ＋１の少数化処理が行われる。ｋｎ＋１をｍで割って少数化し、（ｍｏｄ  １）によりその小数部をＸｎ＋１として導出する。この処理をＸｎ＋１＝（ｋｎ＋１／ｍ）（ｍｏｄ  １）により行う。
【００７４】
上記の演算を繰り返すと、ｋ０を用いてｋ１、Ｘ１が演算され、ｋ１を用いてｋ２、Ｘ２が次々と導出されてゆくのである。この１項からなるカオス的関数では、式（６）の（ｍｏｄ  ｍ）によりｋｎ＋１は０≦ｋｎ＋１＜ｍの範囲に制限されており、式（５）及び式（７）における（ｍｏｄ  １）は必ずしも必要ではない。このようにして、カオス時系列Ｘｎが演算されてゆく。図６の１項方式では、カオス的関数が極めて簡単であるから、アルゴリズムの全過程が高速で演算され、カオス的時系列Ｘｎを高速に出力できる利点がある。
【００７５】
図７は、図６のアルゴリズムを実行するフローチャート図である。図５の説明と重複するところは簡略に説明する。ステップｙ１１〜ｙ１８は図５におけるステップｙ１〜ｙ８に夫々対応している。また、図７以後の図面説明では、冗長を避けるため、例えばステップｙ１１を単にｙ１１と簡略に表記する。
【００７６】
ｙ１１は素数ｍを含むカオス的関数のパラメータを設定する手段で、パラメータとして整数ｋ、素数ｍ、指数関数の底ｐ（即ちｐｎ）が設定される。ｙ１２は剰余の初期値を設定する手段で、法ｍによる整数ｋの剰余ｋ０が導出される。ｙ１３はカオス的時系列Ｘｎの初期値Ｘ０を演算する手段で、ｋ０／ｍの小数部をＸ０として導出し、このカオス的時系列の初期値Ｘ０を外部に出力する。
【００７７】
ｙ１４〜ｙ１８はカオス的時系列Ｘｎ（ｎ≧１）を導出する反復演算手段であり、ｙ１４はｎ＝０を設定する手段である。ｙ１５は剰余ｋｎ＋１を法ｍにより導出する手段で、ｙ１６によりＸｎ＋１＝（ｋｎ＋１／ｍ）（ｍｏｄ  １）を演算し、１以下の小数をカオス的時系列Ｘｎとして外部に出力する。
【００７８】
ｙ１７はカオス的時系列Ｘｎの演算を停止するかどうかの判別手段で、停止（Ｙ）なら演算を停止し、継続（Ｎ）ならｙ１８によりｎ＝ｎ＋１が設定される。そして再びｙ１５に帰還して反復演算が行われる。従って、ｙ１４〜ｙ１８の反復演算を行って、カオス的時系列Ｘ１、Ｘ２・・・が停止命令を受けるまで演算され、外部に継続的に出力されてゆく。
【００７９】
図８は１項からなるカオス的関数によるカオス的時系列図である。縦軸はカオス的時系列Ｘｎ、横軸は繰り返し数ｎ（Ｉｔｅｒａｔｉｏｎ  Ｎｕｍｂｅｒ）である。時系列Ｘｎは０〜１の間を激しく不規則に振動し、カオス的挙動を示すことが分かる。実線はＸ０が０．１３０００であり、点線はＸ０が０．１３００１である。初期値はこのように僅かな違いしかないが、ｎが３５を過ぎる辺りから実線と点線のＸｎは大きな相違を示し始める。このような性質を初期値依存性と呼び、この１項からなる前記関数がカオス的関数であることを証明している。
【００８０】
図９は２項（２−ｔｅｒｍｓ）からなるカオス的関数（Ｃｈａｏｔｉｃ  Ｆｕｎｃｔｉｏｎ）によるカオス時系列のアルゴリズム図である。式（１１）はカオス的関数を与え、Ｍ１（ｋ１／ｍ１）ｐ１ｎとＭ２（ｋ２／ｍ２）ｐ２ｎの和から構成される。Ｍ１とＭ２は各項の係数であり、ｋ１とｋ２は整数、ｐ１とｐ２は正の整数、ｍ１とｍ２は素数である。Ｍ１とＭ２は実数から選ばれる。このカオス的関数Ｘｎから式（１２）のカオス的時系列が演算される。
【００８１】
２項からなるカオス的関数Ｘｎを与えるパラメータはＭ１、ｋ１、ｍ１、ｐ１とＭ２、ｋ２、ｍ２、ｐ２の８個である。これらの８個のパラメータが式（１３）で示されるようにカオス的時系列の鍵（Ｋｅｙ）となる。このようにパラメータが増えると、外部からこれらのパラメータを探知する可能性は殆ど無くなる。各パラメータを１６ビットで表すと、合計で１６ビット×８＝１２８ビットになる。外部者が１２８ビットの未知数を探知できる可能性はほぼゼロであり、このカオス発生装置を用いて暗号装置を構成すれば、極めて安全な暗号装置が実現できる。しかも、カオス的関数は単純な指数関数であるから、カオス的時系列を高速に導出できる特性を有している。
【００８２】
式（１４）〜（１７）はカオス的時系列Ｘｎを与えるアルゴリズムを表している。式（１４）では、積Ｍｉ・ｋｉに対し（ｍｏｄ  ｍｉ）［ｉ＝１，２］が施され、得られるｋｉ，０を０≦ｋｉ，０＜ｍｉ［ｉ＝１，２］の範囲に制限する。通常では、パラメータＭｉ、ｋｉ、ｍｉを設定するときにＭｉ・ｋｉ＜ｍｉとなるように選ばれるから、この場合には式（１４）において（ｍｏｄ  ｍｉ）を施すことは不要になる。
【００８３】
式（１５）では、ｋｉ，０の少数化処理が行われる。ｋｉ，０は０≦ｋｉ，０＜ｍｉの値であるから、ｋｉ，０を素数ｍｉで割ることにより少数化が行われる。ｋ１，０／ｍ１＋ｋ２，０／ｍ２に対して（ｍｏｄ  １）を処理し、その小数部からカオス的時系列の初期値Ｘ０が導出される。Ｘ０の小数桁数はコンピュータの有効精度により制限されている。
【００８４】
次に、ｎ＝０〜Ｎ−１の範囲で反復演算が行われる。式（１６−１）及び（１６−２）により、０〜ｍの範囲にあるｋｉ，ｎからｋｉ，ｎ＋１＝ｐｉ・ｋｉ，ｎ（ｍｏｄ  ｍｉ）によりｋｉ，ｎ＋１［ｉ＝１，２］が導出される。ｐｉを乗じることによってｋｉ，ｎ＋１はｍｉより大きくなる可能性があるから、（ｍｏｄ  ｍｉ）によりｋｉ，ｎ＋１を０≦ｋｉ，ｎ＋１＜ｍｉ［ｉ＝１，２］の範囲に制限する。
【００８５】
更に、式（１７）によりｋｉ，ｎ＋１の少数化処理が行われる。ｋｉ，ｎ＋１をｍｉで割って少数化し、２項の和を（ｍｏｄ  １）の操作を施して、その小数部をＸｎ＋１として導出する。
【００８６】
上記の演算を繰り返すと、カオス的時系列Ｘ１、Ｘ２・・・ＸＮが導出される。この２項方式では、カオス的関数が極めて簡単な構成を有し、アルゴリズムの全過程が高速で演算され、カオス的時系列Ｘｎを高速に出力できる利点がある。しかも、鍵となるパラメータ数が増大し、外部からこれらの全てのパラメータを探知することは不可能になり、暗号装置の安全性が強化される。
【００８７】
図１０は、図９のアルゴリズムを実行するフローチャート図である。ｙ２１〜ｙ２８は図５におけるｙ１〜ｙ８に夫々対応している。ｙ２１はカオス的関数のパラメータを設定する手段で、（Ｍｉ，ｋｉ，ｍｉ，ｐｉ）［ｉ＝１，２］がパラメータとして設定される。ｋｉは整数、ｍｉは素数、ｐｉは指数関数の底（即ちｐｉｎ）が設定される。ｙ２２は剰余の初期値を設定する手段で、法ｍｉによる積Ｍｉ・ｋｉの剰余ｋｉ，０が導出される。ｙ２３はカオス時系列Ｘｎの初期値Ｘ０を演算する手段で、ｋ１，０／ｍ１＋ｋ２，０／ｍ２の小数部をＸ０として導出し、このカオス時系列の初期値Ｘ０を外部に出力する。
【００８８】
ｙ２４〜ｙ２８はカオス時系列Ｘｎ（ｎ≧１）を導出する反復演算手段であり、ｙ２４はｎ＝０を設定する手段である。ｙ２５は剰余ｋｉ，ｎ＋１を法ｍｉにより導出する手段で、ｙ２６によりＸｎ＋１＝（ｋ１，ｎ＋１／ｍ１）＋（ｋ２，ｎ＋１／ｍ２）（ｍｏｄ  １）を演算し、１以下の小数をカオス時系列Ｘｎとして外部に出力する。
【００８９】
ｙ２７はカオス的時系列Ｘｎの演算を停止するかどうかの判別手段で、停止（Ｙ）なら演算を停止し、継続（Ｎ）ならｙ２８によりｎ＝ｎ＋１が設定される。そして再びｙ２５に帰還して反復演算が行われる。従って、ｙ２４〜ｙ２８の反復演算を行って、カオス的時系列Ｘ１、Ｘ２・・・が停止命令を受けるまで演算され、外部に継続的に出力されてゆく。
【００９０】
図１１は２項からなるカオス的関数の一例を示すパラメータ図である。１０進数として、整数ｋｉは１１桁、素数ｍｉは１２桁［ｉ＝１，２］に設定されている。係数Ｍ１、Ｍ２は実数であり、簡単のためＭ１＝Ｍ２＝１に設定された。
【００９１】
図１２は、図１１のパラメータにより得られたカオス的時系列のＸｎ＋１−Ｘｎ平面図である。カオス的時系列Ｘｎは０〜１の間の小数である。プロットされた点はＸｎ＋１−Ｘｎ平面に均一に分散していることが分かる。このように均一に分散することから、このカオス的時系列は擬似乱数として極めて有効であることが明白である。従って、このカオス発生装置が同時に擬似乱数発生装置として使用できることが証明された。
【００９２】
図１３は、図１１のパラメータにより得られたカオス的時系列のスペクトル図である。横軸は区間（Ｓｅｃｔｉｏｎ）、縦軸はその区間に存在する個数（Ｔｈｅ  ｎｕｍｂｅｒ）である。区間は０〜１を５０等分して得られ、例えば区間１は０〜０．０２の範囲に対応する。全区間を通して個数はほぼ均一であり、換言すればこのカオス的時系列Ｘｎが白色ノイズに近い性質を有していること示す。従って、カオス的時系列Ｘｎが乱数として有効であることが実証された。
【００９３】
図１４は、図１１のパラメータにより得られたカオス的時系列の自己相関関数図である。横軸は遅れ数（Ｄｅｌａｙ  Ｎｕｍｂｅｒ）Ｌ、縦軸は自己相関関数（Ａｕｔｏｃｏｒｒｅｌａｔｉｏｎ）Ｒ（Ｌ）である。図示するように、自己相関関数Ｒ（Ｌ）はＬだけ離れたＸｎとＸｎ＋Ｌの積Ｘｎ・Ｘｎ＋Ｌの総和によって定義される関数である。この自己相関関数Ｒ（Ｌ）が変数Ｌのほぼ全領域で小さく、しかもカオス的関数の項数に依存しないから、カオス的時系列Ｘｎは相互関係を殆ど有していない。この性質は図１２及び図１３に示される性質と共通しており、カオス的時系列Ｘｎが擬似乱数として好適であることを示している。
【００９４】
図１５は多項（ｍｕｌｔｉ−ｔｅｒｍｓ）からなるカオス的関数（Ｃｈａｏｔｉｃ  Ｆｕｎｃｔｉｏｎ）によるカオス的時系列のアルゴリズム図である。式（２１）はカオス的関数を与え、Ｘｎ＝ＳＵＭ［Ｍｉ（ｋｉ／ｍｉ）ｐｉｎ［和はｉ＝１〜Ｌ］で表される。以下では、ＳＵＭはｉ＝１〜ＬのＬ個の和を示しており、これを単にＳＵＭとして表示する。Ｍ１〜ＭＬは各項の係数であり、ｋ１〜ｋＬは整数、ｐ１〜ｐＬは正の整数、ｍ１〜ｍＬは素数である。このカオス的関数Ｘｎから式（２２）のカオス的時系列Ｘｎが演算される。Ｍ１〜ＭＬは実数から選ばれる。
【００９５】
Ｌ項からなるカオス的関数Ｘｎを与えるパラメータは（Ｍ１、ｋ１、ｍ１、ｐ１）〜（ＭＬ、ｋＬ、ｍＬ、ｐＬ）の４×Ｌ個である。これらの４×Ｌ個のパラメータが式（２３）で示されるようにカオス的時系列の鍵（Ｋｅｙ）となる。このようにパラメータが増えると、不審者が外部からこれらのパラメータを探知する可能性は無くなる。このカオス発生装置を用いて暗号装置を構成すれば、極めて安全な暗号装置が実現できる。しかも、カオス的関数は単純な指数関数であるから、カオス的時系列を高速に導出できる特性を有している。項数の増加は、演算時間の増大を招来するが、適当な項数Ｌを選択して高速性と安全性の両者を実現することが可能である。
【００９６】
式（２４）〜（２７）はカオス的時系列Ｘｎを与えるアルゴリズムを表している。式（２４）では、積Ｍｉ・ｋｉに対し（ｍｏｄ  ｍｉ）［ｉ＝１〜Ｌ］が施され、得られるｋｉ，０を０≦ｋｉ，０＜ｍｉ［ｉ＝１〜Ｌ］の範囲に制限する。通常では、パラメータＭｉ、ｋｉ、ｍｉを設定するときにＭｉ・ｋｉ＜ｍｉとなるように選択されるから、この場合には式（２４）において（ｍｏｄ  ｍｉ）を施すことは不要になる。
【００９７】
式（２５）では、ｋｉ，０の少数化処理が行われる。ｋｉ，０は０≦ｋｉ，０＜ｍｉの値であるから、ｋｉ，０を素数ｍｉで割ることにより少数化が行われる。ＳＵＭ［ｋｉ，０／ｍｉ］に対して（ｍｏｄ  １）を処理し、その小数部からカオス的時系列の初期値Ｘ０が導出される。ｋｉ，０／ｍｉは０〜１の間の小数であるが、ＳＵＭをとると１を超える場合が出現するため、（ｍｏｄ  １）が施される。Ｘ０の小数桁数はコンピュータの有効精度により制限される。
【００９８】
次に、ｎ＝０〜Ｎ−１の範囲で反復演算が行われる。式（２６）により、０〜ｍｉの範囲にあるｋｉ，ｎからｋｉ，ｎ＋１＝ｐｉ・ｋｉ，ｎ（ｍｏｄ  ｍｉ）によりｋｉ，ｎ＋１［ｉ＝１〜Ｌ］が導出される。ｐｉを乗じることによってｋｉ，ｎ＋１はｍｉより大きくなる可能性があるから、（ｍｏｄ  ｍｉ）によりｋｉ，ｎ＋１を０≦ｋｉ，ｎ＋１＜ｍｉ［ｉ＝１〜Ｌ］の範囲に制限する。
【００９９】
更に、式（２７）によりｋｉ，ｎ＋１の少数化処理が行われる。ｋｉ，ｎ＋１をｍｉで割って少数化し、Ｌ項の和を（ｍｏｄ  １）の操作を施してその小数部をＸｎ＋１として導出する。
【０１００】
上記の演算を繰り返すと、カオス的時系列Ｘ１、Ｘ２・・・ＸＮが導出される。この多項方式では、カオス的関数が極めて簡単な構成を有し、アルゴリズムの全過程が高速に演算され、カオス的時系列Ｘｎを高速に出力できる利点がある。しかも、鍵となるパラメータ数が増大し、外部からこれらの全てのパラメータを探知することは不可能になり、暗号装置の安全性が強化される。
【０１０１】
図１６は、図１５のアルゴリズムを実行するフローチャート図である。ｙ３１〜ｙ３８は図５におけるｙ１〜ｙ８に夫々対応している。ｙ３１はカオス的関数のパラメータを設定する手段で、（Ｍｉ，ｋｉ，ｍｉ，ｐｉ）［ｉ＝１〜Ｌ］がパラメータとして設定される。ｋｉは整数、ｍｉは素数、ｐｉは指数関数の底（即ちｐｉｎ）が設定される。ｙ３２は剰余の初期値を設定する手段で、法ｍｉによる積Ｍｉ・ｋｉの剰余ｋｉ，０が導出される。ｙ３３はカオス的時系列Ｘｎの初期値Ｘ０を演算する手段で、ＳＵＭ［ｋｉ，０／ｍｉ］の小数部をＸ０として導出し、このカオス的時系列の初期値Ｘ０を外部に出力する。
【０１０２】
ｙ３４〜ｙ３８はカオス的時系列Ｘｎ（ｎ≧１）を導出する反復演算手段であり、ｙ３４はｎ＝０を設定する手段である。ｙ３５は剰余ｋｉ，ｎ＋１を法ｍｉにより導出する手段で、ｙ３６によりＸｎ＋１＝ＳＵＭ（ｋｉ，ｎ＋１／ｍｉ）（ｍｏｄ  １）を演算し、１以下の小数をカオス的時系列Ｘｎとして外部に出力する。
【０１０３】
ｙ３７はカオス的時系列Ｘｎの演算を停止するかどうかの判別手段で、停止（Ｙ）なら演算を停止し、継続（Ｎ）ならｙ３８によりｎ＝ｎ＋１が設定される。そして再びｙ３５に帰還して反復演算が行われる。従って、ｙ３４〜ｙ３８の反復演算を行って、カオス的時系列Ｘ１、Ｘ２・・・が停止命令を受けるまで演算され、外部に継続的に出力されてゆく。
【０１０４】
図１７は多項（Ｌ＝１０）からなるカオス的関数の一例を示すパラメータ図である。１０進数として、整数ｋｉは１１桁、素数ｍｉは１２桁［ｉ＝１〜１０］に設定されている。係数Ｍｉは実数であるが、簡単のためＭｉ＝０．１［ｉ＝１〜１０］に設定された。
【０１０５】
図１８は、図１７に示すパラメータにより得られたカオス的時系列図である。縦軸はカオス的時系列Ｘｎ、横軸は繰り返し数ｎ（Ｉｔｅｒａｔｉｏｎ  Ｎｕｍｂｅｒ）である。時系列Ｘｎは０〜１の間を激しく不規則に振動し、カオス的挙動を示していることが分かる。このことから、１０項からなる前記関数がカオス的関数であることを実証している。
【０１０６】
図１９は、図１７のパラメータにより得られたカオス的時系列のＸｎ＋１−Ｘｎ平面図である。カオス的時系列Ｘｎは０〜１の間の小数である。プロットされた点はＸｎ＋１−Ｘｎ平面に均一に分散していることが分かる。このように均一に分散することから、このカオス的時系列は擬似乱数として極めて有効であることが明白である。つまり、このカオス発生装置が同時に擬似乱数発生装置として使用できることが証明された。
【０１０７】
図２０は、図１７のパラメータにより得られたカオス的時系列のスペクトル図である。横軸は区間（Ｓｅｃｔｉｏｎ）、縦軸はその区間に存在する個数（Ｔｈｅ  ｎｕｍｂｅｒ）である。区間は０〜１を５０等分して得られ、例えば区間１は０〜０．０２の範囲に対応する。全区間を通して個数はほぼ均一であり、換言すればこのカオス的時系列Ｘｎが白色ノイズに近い性質を有していること示す。従って、カオス的時系列Ｘｎが乱数として有効であることが実証された。
【０１０８】
図２１は、図１７のパラメータにより得られたカオス的時系列の自己相関関数図である。横軸は遅れ数（Ｄｅｌａｙ  Ｎｕｍｂｅｒ）Ｌ、縦軸は自己相関関数（Ａｕｔｏｃｏｒｒｅｌａｔｉｏｎ）Ｒ（Ｌ）である。自己相関関数Ｒ（Ｌ）はＬだけ離れたＸｎとＸｎ＋Ｌの積Ｘｎ・Ｘｎ＋Ｌの総和によって定義される関数である。この自己相関関数Ｒ（Ｌ）が変数Ｌのほぼ全領域で小さく、カオス的関数の項数に依存しないから、カオス的時系列Ｘｎは相互関係を殆ど有していない。この性質は図１９及び図２０に示される性質と共通しており、カオス的時系列Ｘｎが乱数として好適であることを示している。
【０１０９】
図２２は、係数Ｍｉを用いないは多項（ｍｕｌｔｉ−ｔｅｒｍｓ）からなるカオス的関数（Ｃｈａｏｓ−ｌｉｋｅ  Ｆｕｎｃｔｉｏｎ）によるカオス的時系列のアルゴリズム図である。この多項カオス的関数は図１５において係数Ｍｉを全て１に固定した場合に相当する。つまり、多項ではパラメータ数が急増するから、係数Ｍｉを排除してパラメータ数をその分だけ減量する。
【０１１０】
式（３１）はカオス的関数を与え、Ｘｎ＝ＳＵＭ［（ｋｉ／ｍｉ）ｐｉｎ］［和はｉ＝１〜Ｌ］で表される。以下では、ＳＵＭはｉ＝１〜ＬのＬ個の和を示しており、これを単にＳＵＭとして表示する。ｋ１〜ｋＬは整数、ｐ１〜ｐＬは正の整数、ｍ１〜ｍＬは素数である。このカオス的関数Ｘｎから式（３２）のカオス的時系列Ｘｎが演算される。
【０１１１】
Ｌ項からなるカオス的関数Ｘｎを与えるパラメータは（ｋ１、ｍ１、ｐ１）〜（ｋＬ、ｍＬ、ｐＬ）の３×Ｌ個である。これらの３×Ｌ個のパラメータが式（３３）で示されるようにカオス的時系列の鍵（Ｋｅｙ）となる。パラメータ数の増加により、不審者が外部からこれらのパラメータを探知する可能性は無くなる。このカオス発生装置を用いて暗号装置を構成すれば、極めて安全な暗号装置が実現できる。しかも、カオス的関数は単純な指数関数であるから、カオス時系列を高速に導出できる特性を有している。項数の増加は、演算時間の増大を招来するが、適当な項数Ｌを選択して高速性と安全性の両者を実現することが可能である。
【０１１２】
式（３４）〜（３７）はカオス的時系列Ｘｎを与えるアルゴリズムを表している。式（３４）では、ｋｉに対し（ｍｏｄ  ｍｉ）［ｉ＝１〜Ｌ］が施され、得られるｋｉ，０を０≦ｋｉ，０＜ｍｉ［ｉ＝１〜Ｌ］の範囲に制限する。通常では、パラメータｋｉ、ｍｉを設定するときにｋｉ＜ｍｉとなるように選択されるから、この場合には式（３４）において（ｍｏｄ  ｍｉ）を施すことは不要になる。
【０１１３】
式（３５）では、ｋｉ，０の少数化処理が行われる。ｋｉ，０は０≦ｋｉ，０＜ｍｉの値であるから、ｋｉ，０を素数ｍｉで割ることにより少数化が行われる。ＳＵＭ［ｋｉ，０／ｍｉ］に対して（ｍｏｄ  １）を処理し、その小数部からカオス的時系列の初期値Ｘ０が導出される。ｋｉ，０／ｍｉは０〜１の間の小数であるが、ＳＵＭをとると１を超える場合が出現するため、（ｍｏｄ  １）が施される。Ｘ０の小数桁数はコンピュータの有効精度により制限される。
【０１１４】
次に、ｎ＝０〜Ｎ−１の範囲で反復演算が行われる。式（３６）により、０〜ｍｉの範囲にあるｋｉ，ｎからｋｉ，ｎ＋１＝ｐｉ・ｋｉ，ｎ（ｍｏｄ  ｍｉ）によりｋｉ，ｎ＋１［ｉ＝１〜Ｌ］が導出される。ｐｉを乗じることによってｋｉ，ｎ＋１はｍｉより大きくなる可能性があるから、（ｍｏｄ  ｍｉ）によりｋｉ，ｎ＋１を０≦ｋｉ，ｎ＋１＜ｍｉ［ｉ＝１〜Ｌ］の範囲に制限する。
【０１１５】
更に、式（３７）によりｋｉ，ｎ＋１の少数化処理が行われる。ｋｉ，ｎ＋１をｍｉで割って少数化し、Ｌ項の和を（ｍｏｄ  １）の操作を施してその小数部をＸｎ＋１として導出する。
【０１１６】
上記の演算を繰り返すと、カオス的時系列Ｘ１、Ｘ２・・・ＸＮが導出される。この多項方式では、カオス的関数が極めて簡単な構成を有し、アルゴリズムの全過程が高速に演算され、カオス的時系列Ｘｎを高速に出力できる利点がある。しかも、鍵となるパラメータ数が増大し、外部からこれらの全てのパラメータを探知することは不可能になり、暗号装置の安全性が強化される。
【０１１７】
図２３は、図２２のアルゴリズムを実行するフローチャート図である。ｙ４１〜ｙ４８は図５におけるｙ１〜ｙ８に夫々対応している。ｙ４１はカオス的関数のパラメータを設定する手段で、（ｋｉ，ｍｉ，ｐｉ）［ｉ＝１〜Ｌ］がパラメータとして設定される。ｋｉは整数、ｍｉは素数、ｐｉは指数関数の底（即ちｐｉｎ）が設定される。ｙ４２は剰余の初期値を設定する手段で、法ｍｉによるｋｉの剰余ｋｉ，０が導出される。ｙ４３はカオス的時系列Ｘｎの初期値Ｘ０を演算する手段で、ＳＵＭ［ｋｉ，０／ｍｉ］の小数部をＸ０として導出し、このカオス的時系列の初期値Ｘ０を外部に出力する。
【０１１８】
ｙ４４〜ｙ４８はカオス的時系列Ｘｎ（ｎ≧１）を導出する反復演算手段であり、ｙ４４はｎ＝０を設定する手段である。ｙ４５は剰余ｋｉ，ｎ＋１を法ｍｉにより導出する手段で、ｙ４６によりＸｎ＋１＝ＳＵＭ［ｋｉ，ｎ＋１／ｍｉ］（ｍｏｄ  １）を演算し、１以下の小数をカオス的時系列Ｘｎとして外部に出力する。
【０１１９】
ｙ４７はカオス的時系列Ｘｎの演算を停止するかどうかの判別手段で、停止（Ｙ）なら演算を停止し、継続（Ｎ）ならｙ４８によりｎ＝ｎ＋１が設定される。そして再びｙ４５に帰還して反復演算が行われる。従って、ｙ４４〜ｙ４８の反復演算を行って、カオス的時系列Ｘ１、Ｘ２・・・が停止命令を受けるまで演算され、外部に継続的に出力されてゆく。
【０１２０】
図２４は、多項（ｍｕｌｔｉ−ｔｅｒｍｓ）からなるカオス的関数（Ｃｈａｏｔｉｃ  Ｆｕｎｃｔｉｏｎ）にパラメータＣを定数項として付加したカオス時系列のアルゴリズム図である。式（４１）はカオス的関数を与え、Ｘｎ＝ＳＵＭ［Ｍｉ（ｋｉ／ｍｉ）ｐｉｎ］＋Ｃ［和はｉ＝１〜Ｌ］で表される。この関数形では、発散する関数はＳＵＭ［Ｍｉ（ｋｉ／ｍｉ）ｐｉｎ］の部分であり、本発明の要部をなす実質的なカオス的関数ｆ（ｎ）はｆ（ｎ）＝ＳＵＭ［Ｍｉ（ｋｉ／ｍｉ）ｐｉｎ］である。つまり、定数項Ｃはこのカオス的関数ｆ（ｎ）に外的に付加されているものである。Ｃの替わりに、例えばｗ（ｎ）＝Ｃ＋Ｄｎ＋Ｅｎ２等の関数を付加してもよい。この場合には、パラメータＣ、Ｄ、Ｅも他のパラメータと共に暗号装置の鍵となり、不審者の侵入防止を強化できる。即ち、本来のカオス的関数に外部関数を付加し、この外部関数のパラメータを付加的な鍵とするものである。このように、カオス的関数に外部関数を設定する手段を設けても良い。ＳＵＭはｉ＝１〜ＬのＬ個の和を示しており、これを単にＳＵＭとして表示する。Ｍ１〜ＭＬは各項の係数であり、ｋ１〜ｋＬは整数、ｐ１〜ｐＬは正の整数、ｍ１〜ｍＬは素数、定数項Ｃは実数である。このカオス的関数Ｘｎから式（４２）のカオス的時系列Ｘｎが演算される。Ｍ１〜ＭＬは実数から選ばれる。
【０１２１】
Ｌ項からなるカオス的関数Ｘｎを与えるパラメータは（Ｍ１、ｋ１、ｍ１、ｐ１）〜（ＭＬ、ｋＬ、ｍＬ、ｐＬ）＋Ｃの（４×Ｌ＋１）個である。これらの（４×Ｌ＋１）個のパラメータが式（４３）で示されるようにカオス的時系列の鍵（Ｋｅｙ）となる。このようにパラメータが増えると、不審者が外部からこれらのパラメータを探知する可能性は無くなる。このカオス発生装置を用いて暗号装置を構成すれば、極めて安全な暗号装置が実現できる。しかも、カオス的関数は単純な指数関数を基本に構成されているから、カオス時系列を高速に導出できる特性を有している。項数の増加は、演算時間の増大を招来するが、適当な項数Ｌを選択して高速性と安全性の両者を実現することが可能である。
【０１２２】
式（４４）〜（４７）はカオス的時系列Ｘｎを与えるアルゴリズムを表している。式（４４）では、積Ｍｉ・ｋｉに対し（ｍｏｄ  ｍｉ）［ｉ＝１〜Ｌ］が施され、得られるｋｉ，０を０≦ｋｉ，０＜ｍｉ［ｉ＝１〜Ｌ］の範囲に制限する。通常では、パラメータＭｉ、ｋｉ、ｍｉを設定するときにＭｉ・ｋｉ＜ｍｉとなるように選択されるから、この場合には式（４４）において（ｍｏｄ  ｍｉ）を施すことは不要になる。
【０１２３】
式（４５）では、ｋｉ，０の少数化処理が行われる。ｋｉ，０は０≦ｋｉ，０＜ｍｉの値であるから、ｋｉ，０を素数ｍｉで割ることにより少数化が行われる。ＳＵＭ［ｋｉ，０／ｍｉ］＋Ｃに対して（ｍｏｄ  １）を処理し、その小数部からカオス時系列の初期値Ｘ０が導出される。ｋｉ，０／ｍｉは０〜１の間の小数であるが、ＳＵＭ及びＣにより１を超える場合が出現するため、（ｍｏｄ  １）が施される。Ｘ０の小数桁数はコンピュータの有効精度により制限される。
【０１２４】
次に、ｎ＝０〜Ｎ−１の範囲で反復演算が行われる。式（４６）により、０〜ｍの範囲にあるｋｉ，ｎからｋｉ，ｎ＋１＝ｐｉ・ｋｉ，ｎ（ｍｏｄ  ｍｉ）によりｋｉ，ｎ＋１［ｉ＝１〜Ｌ］が導出される。ｐｉを乗じることによってｋｉ，ｎ＋１はｍｉより大きくなる可能性があるから、（ｍｏｄ  ｍｉ）によりｋｉ，ｎ＋１を０≦ｋｉ，ｎ＋１＜ｍｉ［ｉ＝１〜Ｌ］の範囲に制限する。
【０１２５】
更に、式（４７）によりｋｉ，ｎ＋１の少数化処理が行われる。ｋｉ，ｎ＋１をｍｉで割って少数化し、Ｌ項の和＋定数項Ｃを（ｍｏｄ  １）によりその小数部をＸｎ＋１として導出する。
【０１２６】
上記の演算を繰り返すと、カオス的時系列Ｘ１、Ｘ２・・・ＸＮが導出される。この多項方式では、定数項Ｃによりパラメータ数が増えるため安全性が一層高くなる。また、カオス的関数が極めて簡単な構成を有するから、アルゴリズムの全過程が高速に演算され、カオス的時系列Ｘｎを高速に出力できる利点がある。
【０１２７】
図２５は、図２４のアルゴリズムを実行するフローチャート図である。ｙ５１〜ｙ５８は図５におけるｙ１〜ｙ８に夫々対応している。ｙ５１はカオス的関数のパラメータを設定する手段で、（Ｍｉ，ｋｉ，ｍｉ，ｐｉ）［ｉ＝１〜Ｌ］＋Ｃがパラメータとして設定される。Ｍｉは実数、ｋｉは整数、ｍｉは素数、ｐｉは指数関数の底（即ちｐｉｎ）、Ｃは実数が設定される。ｙ５２は剰余の初期値を設定する手段で、法ｍｉによる積Ｍｉ・ｋｉの剰余ｋｉ，０が導出される。ｙ５３はカオス的時系列Ｘｎの初期値Ｘ０を演算する手段で、ＳＵＭ［ｋｉ，０／ｍｉ］＋Ｃの小数部をＸ０として導出し、このカオス的時系列の初期値Ｘ０を外部に出力する。
【０１２８】
ｙ５４〜ｙ５８はカオス的時系列Ｘｎ（ｎ≧１）を導出する反復演算手段であり、ｙ５４はｎ＝０を設定する手段である。ｙ５５は剰余ｋｉ，ｎ＋１を法ｍｉにより導出する手段で、ｙ５６によりＸｎ＋１＝ＳＵＭ（ｋｉ，ｎ＋１／ｍｉ）＋Ｃ（ｍｏｄ  １）を演算し、１以下の小数をカオス的時系列Ｘｎとして外部に出力する。
【０１２９】
ｙ５７はカオス的時系列Ｘｎの演算を停止するかどうかの判別手段で、停止（Ｙ）なら演算を停止し、継続（Ｎ）ならｙ５８によりｎ＝ｎ＋１が設定される。そして再びｙ５５に帰還して反復演算が行われる。従って、ｙ５４〜ｙ５８の反復演算を行って、カオス的時系列Ｘ１、Ｘ２・・・が停止命令を受けるまで演算され、外部に継続的に出力されてゆく。
【０１３０】
上述したように、本発明では、カオス的関数ｆ（ｎ）を直接演算するものでは無い。ｆ（ｎ）を直接演算すると、当然に発散し、有効桁数により丸め誤差が累積する。このカオス的関数の発散を防止するために、ｆ（ｎ）の計算を剰余ｒ（ｎ）により行い、ｒ（ｎ）からｒ（ｎ＋１）への連鎖を通して反復演算を行うことに特徴を有している。この剰余ｒ（ｎ）はカオス的関数ｆ（ｎ）から素数ｍを法として得られる剰余である。この剰余ｒ（ｎ）に定数項Ｃや別の関数ｗ（ｎ）を付加することも可能である。この１形態として図２４及び図２５では定数項Ｃがカオス時系列の計算過程で付加されている。
【０１３１】
図２６は本発明に係るカオス発生用プログラムによる演算を実行するシステム構成図である。本発明に係るプログラム６３は、このプログラム６３を記録したカオス発生用記録媒体を入力装置６０に装填してシステムに入力され、バス６１を通してメインメモリ装置６２にインストールされる。初期パラメータや演算により得られるデータはデータメモリ装置７０に格納される。
【０１３２】
このプログラム６３を実行するために、パラメータ（Ｍ，ｋ，ｍ，ｐ）が入力装置６０から入力され、パラメータメモリ部７２に格納される。これらのパラメータを用いてプログラム６３によりカオス演算が実行される。演算及び制御はＣＰＵ６４により処理される。
【０１３３】
パラメータ（Ｍ，ｋ，ｍ，ｐ）を用いて素数ｍを法とする剰余ｒ（ｎ０）が初期値として導出される。ｎ０は繰り返し数ｎの初期値を与え、通常はｎ０＝０に設定される。このｒ（ｎ０）を使用し、プログラム６３により、ｎ＝ｎ＋１の反復により、ｒ（ｎ）が次々と導出されてゆく。ｒ（ｎ）は剰余メモリ部７４に格納される。この剰余ｒ（ｎ）は０〜ｍの範囲の整数である。
【０１３４】
剰余ｒ（ｎ）が導出されると、このｒ（ｎ）を素数ｍで割り、１より小さな小数ｑ（ｎ）が導出される。つまり１を法として小数ｑ（ｎ）が演算される。従って、ｑ（ｎ）は０〜１の範囲の小数である。この小数ｑ（ｎ）は小数メモリ部７６に格納される。繰り返し数ｎの各段階の演算では、素数ｍを法として演算が実行されるから、ｒ（ｎ）の有効桁数に丸め誤差は導入されない。また、同様の理由により、小数ｑ（ｎ）の小数桁にも丸め誤差は導入されない。
【０１３５】
次に、剰余ｒ（ｎ）又は小数ｑ（ｎ）からカオス的時系列Ｘｎが導出され、カオスメモリ部７８に格納される。同時にカオス的時系列Ｘｎは出力装置６６から外部に出力される。
【０１３６】
剰余ｒ（ｎ）は０〜ｍまでの整数であり、この値をそのままカオス的時系列Ｘｎとしてもよい。また、０〜０．５×ｍの範囲の整数を”０”、０．５×ｍ〜ｍの範囲の整数を”１”としてカオス的時系列Ｘｎを構成することもできる。この場合には、小数ｑ（ｎ）の演算は不要になる。
【０１３７】
同様に、小数ｑ（ｎ）をそのままカオス的時系列Ｘｎとしてもよい。また、０〜０．５の範囲の小数を”０”、０．５〜１の範囲の小数を”１”としてカオス的時系列Ｘｎを構成してもよい。以上のように、剰余ｒ（ｎ）又は小数ｑ（ｎ）からカオス的時系列Ｘｎへの変換は自在に行うことができる。
【０１３８】
従って、本発明は上記実施形態に限定されるものではなく、本発明の技術的思想を逸脱しない範囲における種々の変形例、設計変更などをその技術的範囲内に包含することは云うまでもない。
【０１３９】
【発明の効果】
本発明の第１の形態によれば、変数ｎの増加に従って急激に増加する関数ｆ（ｎ）を用い、この関数ｆ（ｎ）から素数ｍを法として剰余ｒ（ｎ）を導出すれば、この剰余ｒ（ｎ）は発散せずに０≦ｒ（ｎ）＜ｍの範囲に常に存在し、しかもｒ（ｎ）は初期値依存性を有する。ｒ（０）から出発してｒ（ｎ＋１）をｒ（ｎ）との関係で算出するアルゴリズムでは、これらの時系列ｒ（ｎ）は計算機の有効桁数の範囲で丸め誤差を有することなく正確に計算できる。また、関数ｆ（ｎ）が急激に増加しながら発散する関数であれば、剰余ｒ（ｎ）は０とｍの間でカオス的に不規則に振動する。素数ｍを大きく設定すれば、素数ｍの大きさに依存したｎｍａｘにより、ｎ＝０〜ｎｍａｘの範囲で、ｒ（ｎ）は反復することなくカオス性を発現するのである。例えば、ｍを１０１２程度の素数とすれば、ｎｍａｘも同程度の大きさになるから、暗号化する情報より長い時系列を容易に作り出せる。０〜ｍの範囲で不規則振動するカオス的時系列ｒ（ｎ）から一意のカオス的時系列Ｘｎを導出して、有効なカオス発生装置を構成することが可能になる。ｒ（ｎ）をそのままＸｎとしてもよいし、ｒ（ｎ）を小数部とした１以下の小数をＸｎとしてもよいなど、ｒ（ｎ）からＸｎへの変換は任意に操作することが可能である。更に、複数のカオス的関数ｆｉ（ｎ）［ｉ＝１〜Ｌ］を用意し、素数ｍｉ［ｉ＝１〜Ｌ］を選択し、上述の反復手続により関数ｆｉ（ｎ）から素数ｍｉを法として剰余ｒｉ（ｎ）［ｉ＝１〜Ｌ］を個別的に算出することもできる。これらの剰余ｒｉ（ｎ）［ｉ＝１〜Ｌ］から一意の値を有するカオス的時系列Ｘｎを導出することもできる。このように、本発明によれば、カオス的関数ｆ（ｎ）の１次結合を利用してカオス的時系列Ｘｎを発生するカオス発生装置も提供できる。ｆ（ｎ）の中にはｓｉｎやｃｏｓなどの三角関数が含まれず、しかも剰余ｒ（ｎ）を導出する反復計算であるから高速演算が可能であり、カオス的時系列Ｘｎを高速に導出できるカオス発生装置を提供できる。
【０１４０】
第２の形態によれば、０〜ｍの間の数値であるｒ（ｎ）をｍで割ると、ｑ（ｎ）は０≦ｑ（ｎ）≦１の範囲にある小数になる。この小数ｑ（ｎ）からカオス的時系列Ｘｎを発生させる。また、複数個の剰余ｒｉ（ｎ）［ｉ＝１〜Ｌ］を使用する場合には、ｑ１（ｎ）＋・・＋ｑＬ（ｎ）が１を超える場合も出現するから、この和の小数部分からカオス的時系列Ｘｎを発生させる。従って、小数のカオス的時系列Ｘｎを発生させることができる。
【０１４１】
第３の形態によれば、漸化式としては、ｆ（ｎ＋１）＝ｐ・ｆ（ｎ）、ｆ（ｎ＋１）＝（ｐ＋ｑｎ）・ｆ（ｎ）・・・等の任意の式が利用できる。その中で最も簡単な漸化式は、ｆ（ｎ＋１）＝ｐ・ｆ（ｎ）であり、この場合には、ｆ（ｎ）＝ｃ・ｐｎと書くことができる。ｆ（ｎ）が漸化式で与えられる場合には、剰余ｒ（ｎ）も同様の漸化式を有し、ｒ（ｎ＋１）をｒ（ｎ）から反復的に導出することが可能になる。従って、初期値ｒ（ｎ０）から出発して、漸化式を用いて次々にｒ（ｎ）を導出し、このｒ（ｎ）に対し常に素数ｍを法とした剰余を取れば、ｒ（ｎ）は０〜ｍ−１の間を振動する値になる。このようにすれば、ｒ（ｎ）の値に丸め誤差は蓄積されず、数値的発散は防止される。ｒ（ｎ）からカオス的時系列Ｘｎを導出するには、第１形態で述べたように、ｒ（ｎ）をそのままＸｎとしてもよいし、ｒ（ｎ）を小数部とした１以下の小数をＸｎとしてもよい。また、０〜ｍ−１の間を振動するｒ（ｎ）を更にｍで割ってその小数部だけをＸｎとできるなど、ｒ（ｎ）からＸｎへの変換は任意に操作することが可能である。
【０１４２】
第４の形態によれば、カオス的関数ｆ（ｎ）の一例としてｃ・ｐｎが利用できる。この関数形は、第３形態におけるｆ（ｎ＋１）＝ｐ・ｆ（ｎ）の場合に相当する。前述したように、従来からカオス解としてｓｉｎ［（ｋ／ｍ）π２ｎ］やｓｉｎ２［（ｋ／ｍ）π２ｎ］、カオス関数としてそれらの１次結合（多項式）を使用していたが、本発明者はその位相部である（ｋ／ｍ）π２ｎに着目した。この関数のπを無視して、ｆ（ｎ）＝ｃ２ｎを本発明の発散関数として使用する。実数ｃを有理数に限定し、ｃ＝ｋ／ｍと定義して、ｆ（ｎ）＝ｋｐｎの法ｍによる剰余ｒ（ｎ）が初期値依存性を示すことが確認された。また、この剰余ｒ（ｎ）を素数ｍによって割った商（小数）ｑ（ｎ）も初期値依存性を示す。この発見に基づいて、剰余ｒ（ｎ）又は小数ｑ（ｎ）からカオス的時系列Ｘｎを導出するカオス発生装置を提供する。関数ｆ（ｎ）としてｃｉｐｉｎの一次結合を利用できることも上述した通りである。このように、ｃｐｎという極めて単純な発散関数を用いるから高速演算が可能になり、大容量通信においても高速に暗号化と複号化を実現するカオス発生装置を提供できる。
【０１４３】
第５の形態によれば、ｆ（ｎ）＝ｃｐｎを用いると、ｆ（ｎ＋１）＝ｐ・ｆ（ｎ）が漸化式となり、ｆ（０）＝ｃを初期値として、漸化式によりｆ（ｎ）を順次計算できる。ｃ＝ｋ／ｍ（ｋ：整数、ｍ：素数）とおけば、各ステップで法ｍによる剰余ｒ（ｎ）を算出することによって、発散を完全に起こさないで丸め誤差を含有しない剰余ｒ（ｎ）を逐次導出することが可能になる。また、この剰余ｒ（ｎ）を素数ｍで割って小数ｑ（ｎ）を導出できる。剰余ｒ（ｎ）又は小数ｑ（ｎ）から初期値依存性を有したカオス的時系列Ｘｎを発生させるカオス発生装置を提供できる。関数ｆ（ｎ）としてｃｉｐｉｎの一次結合も利用できる。
【０１４４】
第６の形態によれば、本発明のカオス発生装置はカオス時系列を丸め誤差なく確実に再現できるから、発散関数ｆｉ（ｎ）［ｉ＝１〜Ｌ、Ｌ≧１］のパラメータ及び素数ｍｉ［ｉ＝１〜Ｌ、Ｌ≧１］を鍵として与え、発散関数ｆｉ（ｎ）を指定するだけで、暗号化と復号化を確実に行えるカオス発生装置を提供できる。しかも、多くのパラメータや素数ｍを鍵とするから、外部からこれらの鍵を解読されることは困難であり、またこれらの鍵の桁数を増やすだけで外部から侵入不能な暗号装置の確立に貢献できる。
【０１４５】
第７の形態によれば、カオス発生用プログラムをコンピュータにインストールし、変数ｎの増加に従って急激に増加する関数ｆｉ（ｎ）［ｉ＝１〜Ｌ、Ｌ≧１］に対し素数ｍｉ［ｉ＝１〜Ｌ、Ｌ≧１］を設定する手段と、変数ｎの初期値ｎ０に対してｆｉ（ｎ０）から素数ｍｉを法として剰余ｒｉ（ｎ０）［ｉ＝１〜Ｌ、Ｌ≧１］を導出する初期値演算手段と、ｆｉ（ｎ＋１）の計算では剰余ｒｉ（ｎ）を利用して素数ｍｉを法として導出された剰余ｒｉ（ｎ＋１）を導出する反復演算手段と、変数ｎをｎ０から順次増大させながら前記剰余ｒｉ（ｎ）［ｉ＝１〜Ｌ、Ｌ≧１］を通して生成される一意の値を有するカオス的時系列Ｘｎを出力するカオス信号出力手段としてコンピュータを機能させることができる。
コンピュータ演算では、倍精度や４倍精度などで示される有効桁しか有していないから、カオス的関数に特有の数値的発散性をその有効桁数に抑えることが必要になる。この第７形態では、発散関数ｆ（ｎ）を素数ｍを法とした剰余ｒ（ｎ）に変換するから、素数ｍの桁数を有効桁数内に制限することによって、剰余ｒ（ｎ）を常に有効桁数内の数値として得ることができる。従って、コンピュータ演算において発散が無く、その結果丸め誤差の無いカオス的時系列Ｘｎを生成することができる。しかも、関数ｆ（ｎ）や剰余ｒ（ｎ）の演算の中に三角関数を全く含まないから演算速度を高速化できる。カオス的時系列を使用するシミュレーション全体の高速化を達成できる。また、初期値演算より以後では、ｆ（ｎ）自体の演算を行わずに、有限値の剰余ｒ（ｎ）を用いた反復演算を行って連続的にカオス的時系列を生成するから、カオス演算を高速に行うことができる。従って、カオス的時系列を使用するシミュレーション全体の高速化を達成できる。
【０１４６】
第８の形態によれば、第７形態のカオス発生用プログラムを記録したコンピュータ読み取り可能なカオス発生用記録媒体が提供される。この記録媒体を介してプログラムをコンピュータにインストールすると、カオス的時系列を丸め誤差無く演算でき、しかも高速演算が可能になる。このようなプログラムを保存した記録媒体を安価に提供できるから、市場において高精度にしかも高速にカオスシミュレーションを行えるようにできる利点がある。
【０１４７】
第９の形態によれば、本発明により得られるカオス的時系列ＸｎがＸｎ＋１−Ｘｎの全平面に均一に分散し、しかもＸｎのスペクトルが白色雑音に近い性質を有する擬似乱数発生装置が提供される。また、Ｘｎの自己相関関数Ｒ（Ｌ）は遅れ数Ｌに対して極めて小さな値をとり、殆ど相関性の無い乱数を発生できることが分かった。このように、本発明により得られるカオス的時系列Ｘｎは乱数として有効であることが実証され、各種のシミュレーションで効果的に使用できる擬似乱数発生装置が実現される。
【０１４８】
第１０の形態によれば、変数ｎの増加に従って急激に増加する関数ｆ（ｎ）を出発関数にしながら、素数ｍを法として剰余ｒ（ｎ）を算出し、しかもｒ（ｎ＋１）を前記剰余ｒ（ｎ）を通して導出するから、剰余ｒ（ｎ）には丸め誤差が全く混入しない。丸め誤差を含まない剰余ｒ（ｎ）からカオス的時系列Ｘｎを導出するから、関数ｆ（ｎ）のパラメータと素数ｍを鍵としてカオス的時系列を何回でも確実に再現することが可能になる。従って、暗号化装置ではこの再現可能なカオス的時系列Ｘｎを用いて情報を暗号化し、復号化装置では前記カオス的時系列Ｘｎを用いて暗号から情報を取り出す復号化処理を確実に行うことができる。また、関数ｆ（ｎ）にはｓｉｎやｃｏｓ等の三角関数が含まれないからカオス的時系列Ｘｎを高速に導出することができ、情報の高速通信に適合した高速暗号装置を提供することができる。また、複数の関数ｆｉ（ｎ）［ｉ＝１〜Ｌ］と複数の素数ｍｉ［ｉ＝１〜Ｌ］を使用すると、関数ｆｉ（ｎ）［ｉ＝１〜Ｌ］の多くのパラメータや素数ｍｉ［ｉ＝１〜Ｌ］が鍵となり、これらの鍵群を外部から解読することはほぼ不可能になる。従って、前述した高速性を有し、しかも安全性強度の高い暗号装置を実現できる。
【図面の簡単な説明】
【図１】本発明に係る暗号装置２のブロック構成図。
【図２】本発明に係るカオス発生装置１０（２０）の構成図である。
【図３】本発明に係る乱数発生装置４０の構成図である。
【図４】本発明に使用されるカオス的関数ｆ（ｎ）及びその剰余ｒ（ｎ）の具体例を示す説明図である。
【図５】本発明に係るカオス的関数を用いた信号発生用のフローチャート図である。
【図６】１項（１−ｔｅｒｍ）からなるカオス的関数（Ｃｈａｏｔｉｃ  Ｆｕｎｃｔｉｏｎ）によるカオス時系列のアルゴリズム図である。
【図７】図６のアルゴリズムを実行するフローチャート図である。
【図８】１項からなるカオス的関数によるカオス時系列図である。
【図９】２項（２−ｔｅｒｍｓ）からなるカオス的関数（Ｃｈａｏｔｉｃ  Ｆｕｎｃｔｉｏｎ）によるカオス時系列のアルゴリズム図である。
【図１０】図９のアルゴリズムを実行するフローチャート図である。
【図１１】２項からなるカオス的関数の一例を示すパラメータ図である。
【図１２】図１１のパラメータにより得られたカオス的時系列のＸｎ＋１−Ｘｎ平面図である。
【図１３】図１１のパラメータにより得られたカオス的時系列のスペクトル図である。
【図１４】図１１のパラメータにより得られたカオス的時系列の自己相関関数図である。
【図１５】多項（ｍｕｌｔｉ−ｔｅｒｍｓ）からなるカオス的関数（Ｃｈａｏｔｉｃ  Ｆｕｎｃｔｉｏｎ）によるカオス的時系列のアルゴリズム図である。
【図１６】図１５のアルゴリズムを実行するフローチャート図である。
【図１７】多項（Ｌ＝１０）からなるカオス的関数の一例を示すパラメータ図である。
【図１８】図１７に示すパラメータにより得られたカオス的時系列図である。
【図１９】図１７のパラメータにより得られたカオス的時系列のＸｎ＋１−Ｘｎ平面図である。
【図２０】図１７のパラメータにより得られたカオス的時系列のスペクトル図である。
【図２１】図１７のパラメータにより得られたカオス的時系列の自己相関関数図である。
【図２２】係数Ｍｉを用いないは多項（ｍｕｌｔｉ−ｔｅｒｍｓ）からなるカオス的関数（Ｃｈａｏｔｉｃ  Ｆｕｎｃｔｉｏｎ）によるカオス的時系列のアルゴリズム図である。
【図２３】図２２のアルゴリズムを実行するフローチャート図である。
【図２４】多項（ｍｕｌｔｉ−ｔｅｒｍｓ）からなるカオス的関数（Ｃｈａｏｔｉｃ  Ｆｕｎｃｔｉｏｎ）にパラメータＣを定数項として付加したカオス的時系列のアルゴリズム図である。
【図２５】図２４のアルゴリズムを実行するフローチャート図である。
【図２６】本発明に係るカオス発生用プログラムによる演算を実行するシステム構成図である。
【図２７】ロジスティック写像の厳密なカオス解を使用した従来のカオス時系列のアルゴリズム図である。
【図２８】他のカオス写像の厳密なカオス解を使用した従来のカオス時系列のアルゴリズム図である。
【符号の説明】
２は暗号装置、４は暗号化装置、６は復号化装置、８は情報、１０はカオス発生装置、１２は演算装置、１４は暗号、１６は送信、１８は受信、２０はカオス発生装置、２２は演算装置、２４は鍵、２８はパラメータ、３０はパラメータ入力手段、３２はカオス演算手段、３４は初期値演算手段、３６は反復演算手段、３８はカオス信号出力手段、４０は擬似乱数発生装置、４２はパラメータ入力手段、４４はカオス演算手段、４６は初期値演算手段、４８は反復演算手段、５０はカオス信号出力手段。６０は入力装置、６１はバス、６２はメインメモリ装置、６３はプログラム、６４はＣＰＵ、６６は出力装置、７０はデータメモリ装置、７２はパラメータメモリ部、７４は剰余メモリ部、７６は小数メモリ部、７８はカオスメモリ部。
【図１】
2005017612.tif 000003
【図２】
2005017612.tif 000004
【図３】
2005017612.tif 000005
【図４】
2005017612.tif 000006
【図５】
2005017612.tif 000007
【図６】
2005017612.tif 000008
【図７】
2005017612.tif 000009
【図８】
2005017612.tif 000010
【図９】
2005017612.tif 000011
【図１０】
2005017612.tif 000012
【図１１】
2005017612.tif 000013
【図１２】
2005017612.tif 000014
【図１３】
2005017612.tif 000015
【図１４】
2005017612.tif 000016
【図１５】
2005017612.tif 000017
【図１６】
2005017612.tif 000018
【図１７】
2005017612.tif 000019
【図１８】
2005017612.tif 000020
【図１９】
2005017612.tif 000021
【図２０】
2005017612.tif 000022
【図２１】
2005017612.tif 000023
【図２２】
2005017612.tif 000024
【図２３】
2005017612.tif 000025
【図２４】
2005017612.tif 000026
【図２５】
2005017612.tif 000027
【図２６】
2005017612.tif 000028
【図２７】
2005017612.tif 000029
【図２８】
2005017612.tif 000030