(57)【要約】【課題】  カオス・ニューラルネットワークを用いた暗号化および復号のシステムの提供【解決手段】平文記憶部１０に格納してある暗号化対象の平文を取り出し、カオス・ニューラルネットワーク１２０からの出力と演算器１１０で演算することで暗文を得て、暗文記憶部２０に格納することができる。このとき、秘密鍵としては、カオス・ニューラルネットワーク１２０への外部入力値を用いることができる。このようにして得られた、暗文記憶部２０に格納してある暗文を復号する場合には、暗文作成に使用したカオス・ニューラルネットワーク１２０と同一構成及び同一条件（秘密鍵である同一外部入力値）のカオス・ニューラルネットワーク２２０を用いて、その出力と暗文記憶部２０から取り出したものに対して、演算器２１０で演算器１１０とは逆となる演算を行うことにより復号を行っている。【選択図】図５
2006259775.tif 000002
【特許請求の範囲】
【請求項１】
暗号化システムであって、
暗号化対象のテキストを記憶した平文記憶部と、
複数のニューロンで構成され、２つのニューロンを相互に接続した基本構成を少なくとも１つ含むカオス・ニューラルネットワークと、
前記カオス・ニューラルネットワークからの出力と、前記平文記憶部から順次読み出した少なくとも１字以上の文字とを演算する演算部と、
前記演算した結果の暗文を記憶する暗文記憶部とを備え、
前記カオス・ニューラルネットワークを構成する前記複数のニューロンに対する外部入力を暗号化の鍵とすることを特徴とする暗号化システム。
【請求項２】
請求項１に記載の暗号化システムにおいて、
前記カオス・ニューラルネットワークは、前記基本構成と接続された少なくとも１つのニューロンを含むことを特徴とする暗号化システム。
【請求項３】
請求項１又は２に記載の暗号化システムにおいて、
前記演算部は、前記平文記憶部から１文字ずつ取り出し、前記カオス・ニューラルネットワークを構成するニューロンの１つからの遷移ごとの出力を整数化して、前記平文記憶部から取り出した１文字と演算することを特徴とする暗号化システム。
【請求項４】
復号システムであって、
復号対象のテキストを記憶した暗文記憶部と、
暗文を作成したカオス・ニューラルネットワークと同じ、複数のニューロンで構成され、２つのニューロンを相互に接続した基本構成を少なくとも１つ含むカオス・ニューラルネットワークと、
前記カオス・ニューラルネットワークからの出力と、前記暗文記憶部から順次読み出した少なくとも１字以上の文字とを演算する演算部と、
前記演算した結果の平文を記憶する平文記憶部とを備え、
前記カオス・ニューラルネットワークを構成する各ニューロンへの外部入力を復号化の鍵とすることを特徴とする復号システム。
【請求項５】
請求項３に記載の復号システムにおいて、
前記演算部は、前記暗文記憶部から１文字ずつ取り出し、前記カオス・ニューラルネットワークを構成するニューロンの１つからの遷移ごとの出力を整数化して、前記暗文記憶部から取り出した１文字と演算することを特徴とする復号システム。
【請求項６】
請求項１〜３のいずれかに記載の暗号化システム又は請求項４又は５に記載の復号システムをコンピュータ・システムに構築させるプログラムを格納した記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、暗号化およびその復号の技術に関し、特に暗号化および復号をカオス・ニューラルネットワークを用いて行う技術に関する。
【技術背景】
【０００２】
インターネットに代表されるオープンなネットワークの利用が、情報社会の一つの象徴になりつつある。このような動きは1960年代終わりからの、コンピュータを通信回線（ネットワーク）と結合して利用しようとした流れの発展形態として捉えられる。
オープンなネットワークを用いる場合、もっとも配慮しなければならないのはディジタル化された情報をいかに保護するかという技術・方法である。このような技術・方法は情報セキュリティ技術といわれるが、この中でもデータ秘匿の手段としての暗号とその応用が重要な要素技術である。
現代の暗号理論は，1970年のＤＥＳに代表される共通鍵暗号方式や、1976年のＤiffe-Hellmanによる公開鍵暗号による共通鍵の配送法の発明以来、急速に進展している。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
本発明の目的は、従来暗号の基礎理論として用いられてきた組み合わせ論や整数論の問題に基づいた方式（素因数分解や離散対数問題）とは異なる、特異なカオス力学系であるカオス・ニューラルネットワークを用いた暗号化および復号のシステムを提供することである。また、このシステムは、カオス・ニューラルネットワークへの外部入力を秘密鍵とする共通鍵暗号のシステムである。
【課題を解決するための手段】
【０００４】
上記目的を達成するために、本発明は、暗号化システムであって、暗号化対象のテキストを記憶した平文記憶部と、複数のニューロンで構成され、２つのニューロンを相互に接続した基本構成を少なくとも１つ含むカオス・ニューラルネットワークと、前記カオス・ニューラルネットワークからの出力と、前記平文記憶部から順次読み出した少なくとも１字以上の文字とを演算する演算部と、前記演算した結果の暗文を記憶する暗文記憶部とを備え、前記カオス・ニューラルネットワークを構成する前記複数のニューロンに対する外部入力を暗号化の鍵とすることを特徴とする暗号化システムである。
そして、このカオス・ニューラルネットワークは、２つのニューロンを相互に接続した１つの基本構成と、前記基本構成と接続された少なくとも１つのニューロンとで構成することもできる。
前記演算部は、前記平文記憶部から１文字ずつ取り出し、前記カオス・ニューラルネットワークを構成するニューロンの１つからの遷移ごとの出力を整数化して、前記平文記憶部から取り出した１文字と演算することにより、暗号化することができる。
【０００５】
上述の暗号化システムにより暗号化された暗文を復号する復号システムも本発明であって、復号対象のテキストを記憶した暗文記憶部と、暗文を作成したカオス・ニューラルネットワークと同じ、複数のニューロンで構成され、２つのニューロンを相互に接続した基本構成を少なくとも１つ含むカオス・ニューラルネットワークと、前記カオス・ニューラルネットワークからの出力と、前記暗文記憶部から順次読み出した少なくとも１字以上の文字とを演算する演算部と、前記演算した結果の平文を記憶する平文記憶部とを備え、前記カオス・ニューラルネットワークを構成する各ニューロンへの外部入力を複号化の鍵としたことを特徴とする復号システムである。
前記演算部は、前記暗文記憶部から１文字ずつ取り出し、前記カオス・ニューラルネットワークを構成するニューロンの１つからの遷移ごとの出力を整数化して、前記暗文記憶部から取り出した１文字と演算することができる。
上述の暗号化システム又は復号システムをコンピュータ・システムに構築させることができるプログラムを格納した記録媒体も本発明である。
【発明の効果】
【０００６】
上述のように、本発明のカオス・ニューラルネットワークを用いた暗号化システムを使用することにより、復号される可能性が少ない暗文を作成することができる。
【発明を実施するための最良の形態】
【０００７】
本発明の実施形態を、図面を参照して詳細に説明する。
まず、本発明に用いているカオス・ニューラルネットワークを説明する。カオス・ニューラルネットワークとは、ホップフィールド・ネットワークや誤差逆伝搬学習則で用いられている通常のニューロン・モデルを用いたネットワークで、カオス応答があるもののことである。
【０００８】
図１は、ニューロン・モデルを示す図である。図１に示すニューロン・モデルでは、自己再帰結合は用いていない。図１に示されているニューロンのある時刻ｔ＋１における出力は、以下の式で表される。
【０００９】
【数１】
2006259775.tif 000003
このニューロン・モデルにおける非線形関数ｆは、バック・プロパケーション・モデルやホップフィールド・モデルなどで広く用いられている、ｓｉｇｍｏｉｄ関数を用いている。λは、関数の傾きを表す。
【００１０】
自然界では単一で振動する出力を発生するニューロンもあるが、カオス・ネットワークに用いた上述のニューロンの場合には、１個のニューロンのみでは振動しない。図２に、最も基本的な振動するネットワークを示す。
この系は、重み係数の正負によってその振る舞いが変化すると考えられるが、いずれの場合においても、その出力は収束するか振動するかであり、その振動周期も最大で４周期であることが明らかになっている（川村暁，吉田等明，恒川佳隆，三浦守  ”カオス・ニューラルネットワークの最小構成”  信学技報  ＮＣ９８−１０７  １９９９年３月）。
【００１１】
次に、この基本ネットワークを含む、ニューロン数がn個のネットワークへの拡張を考える。図３に、基本ネットワークを含むｎニューロン・ネットワークの構成を示す。図３に示すように、このネットワークは、図２に示したような基本ネットワークを構成しているＮ１およびＮ２のニューロンと、その他のＮ３〜Ｎｎのニューロンとで構成されている。このネットワークは、以下の各要素により特徴づけられる。
・基本ネットワークの種類
・ニューロン数
・ニューロン間の重み係数の符号
この構成のネットワークにおいて、ニューロン数が３個以上のネットワークにおいて、カオス応答するネットワークが存在し、そのようなネットワークをカオス・ニューラルネットワークと呼ぶ。
【００１２】
上述のカオス・ニューラルネットワークの一例としてニューロン数が3個の場合を図４に示す。図４に示したカオス・ニューラルネットワークは、図２に示したような基本ネットワークを構成しているＮ１およびＮ２のニューロンと、この２つのニューロンに接続されているニューロンＮ３とで構成されている。この図において、Ｎｘはニューロンｘを示し、θｘは、ニューロンｘのしきい値、Ｉｘはニューロンｘの外部入力値、ｗｉｊは結合加重を示している。図４におけるニューラルネットワークにおいて、カオス応答するカオス・ニューラルネットワークの重み係数Ｗ（結合加重で構成）およびしきい値θの一例は、次のようになる。
【００１３】
【数２】
2006259775.tif 000004
【００１４】
ネットワーク応答がカオスである場合の必要条件は、各ニューロンに属する値（系列と呼ぶ）の「混じり合い」による。また、カオス・ニューラルネットワークは、単一のニューロンでカオスを出力しているのではなく、系全体でカオスとなっている。そのため、単一ニューロンの出力値は、同一になる場合があると考えられる。
【００１５】
＜一方向性関数＞
カオス・ニューラルネットワークは、ネットワーク構成と外部入力値が定まれば、時系列信号を容易に取り出すことができる。この外部入力値と、ある一つのニューロンの出力値（信号）の関係について考える。
さて、初期値鋭敏性とは、初期値の僅かなずれを、それがどんなに小さなずれであっても、時間とともに指数関数的に拡大する性質を有していることをいう。カオス・ニューラルネットワークは初期値鋭敏性を有している。また、ある関数y＝ｆ(x)が一方向性関数であるとは、xよりy=ｆ（x）を計算するのは容易であるが、逆にyよりxを求めるのが困難な関数のことをいう。
【００１６】
カオス・ニューラルネットワークの外部入力値xと、あるニューロンの出力値ｙ（ニューロン1など）との関係は、カオス・ニューラルネットワークが有している初期値鋭敏性により、初期値（外部入力値）が微少に異なる場合、その振る舞いの時間発展が全く異なったものとなる。また、系がカオスである場合、その軌道にはエルゴード性があるため、非常に近い軌道を通る状態の間には相関がなく、出力値から外部入力値を推定するのは困難であるといえる。よって、出力値yから外部入力値ｘを求めるのは困難である。
さらに、あるニューロンの出力値に注目すると、その出力値は同一の値をとることがあると考えられる。よって、外部入力値xと出力値yは一対一写像ではなく、一対多写像であるといえる。よって、カオス・ニューラルネットワークの外部入力値xと、あるニューロンの出力値yの関数y=ｆ(x)は、一方向性関数ｆであるといえる。
【００１７】
＜ハッシュ関数＞
ハッシュ関数は、パスワード認証、ディジタル署名、メッセージ認証などの目的で幅広く用いられ、現代暗号の重要な分野を構成している。カオス・ニューラルネットワークの出力値がこの性質を満足するかを考察する。
一般的にハッシュ関数とは、ある大きな領域Dから小さな領域Rへの多対一のマッピングを行う関数hであり、
［数３］
ｈ：Ｄ→Ｒかつ｜Ｄ｜＞｜Ｒ｜
となる場合を考える。このとき、関数hとその定義域のある値xが与えられて、h（x）＝ｈ（y）となるようなyを求めることが難しいような関数hのことである。
カオス・ニューラルネットワークの遷移回数xと，出力値yの関数y＝ｆ（x）について考えると、以下のことが成立する。
（i）xを入力してy＝f（x）を出力する多項式時間アルゴリズムが存在する（遷移回数だけ繰り返せばよい）。
（ii）出力yから、y＝f（x）を満たすxを求めるのは困難である（ｆ−1の困難性）。
（i），（ii）より、y＝f（x）（遷移回数xとニューロンの出力y）は、一方向性ハッシュ関数である。
【００１８】
＜暗号化および復号＞
上述では、カオス・ニューラルネットワークの特性について考察を加えた。このような性質を有するカオス・ニューラルネットワークの出力信号を暗号に用いることについて説明する。
カオス・ニューラルネットワークを用いて、暗号化及び復号を行うための構成を図５に示す。ここで用いている暗号系は、従来から用いられてきた暗号形式の慣用暗号系である。慣用暗号系の特徴は暗文生成に用いる鍵と復号に用いる鍵が同一であることである。この暗号系では、その安全性は鍵の秘匿性に依存している。これに対してカオス・ニューラルネットワークを用いた本発明の構成では、その安全性は、鍵の秘匿性に依存しているばかりではなく、実行環境（例えば、コーディング方法、ＣＰＵの種類等）にも依存している。
【００１９】
この図５において、平文記憶部１０に格納してある暗号化対象の平文を取り出し、カオス・ニューラルネットワーク１２０からの出力と演算器１１０で演算することで暗文を得て、暗文記憶部２０に格納することができる。このとき、秘密鍵としては、カオス・ニューラルネットワーク１２０への外部入力値を用いることができる。
このようにして得られた、暗文記憶部２０に格納してある暗文を復号する場合には、暗文作成に使用したカオス・ニューラルネットワーク１２０と同一構成及び同一条件（秘密鍵である同一外部入力値）のカオス・ニューラルネットワーク２２０を用いて、その出力と暗文記憶部２０から取り出したものに対して、演算器２１０で元に戻るような演算を行うことにより復号を行っている。なお、演算器１１０や演算器２１０で行われている演算とは、ＡＮＤ，ＯＲ，ＸＯＲ，加算，減算，乗算，除算等を行うことを意味する。
【００２０】
この図５に示した構成を用いて暗号化および復号を行う手順については、図６に示す。まず、暗号化、復号手順では、暗号化等を開始する前に、カオス・ニューラルネットワーク１２０および２２０を初期設定する（ステップＥ１およびＤ１）。
暗号化においては、例えば、平文１０からメッセージ・ユニットＭｉ（例えば１文字）を取り出す（ステップＥ２．１）。取り出したメッセージ・ユニットＭｉとカオス・ニューラルネットワーク１２０からの出力ｙｍ（ｉ）との演算を行って暗号化する（ステップＥ２．２）。カオス・ニューラルネットワーク１２０の値の再計算を行い、ネットワーク遷移を行う（ステップＥ２．３）。そしてまた、平文１０からメッセージ・ユニットＭｉを取り出して暗号化を行うことを繰り返し（ステップＥ２）、平文がなくなるまで処理手順（ステップＥ２．１〜２．３）を続けることで、暗文２０を得る。
【００２１】
復号においても、暗文２０からメッセージ・ユニットＣｉ（例えば１文字）を取り出す（ステップＤ２．１）。取り出したメッセージ・ユニットＣｉとカオス・ニューラルネットワーク２２０からの出力ｙｍ（ｉ）との間で元に戻る演算を行って復号する（ステップＤ２．２）。この生成された文字を平文に付加することによって復号する。カオス・ニューラルネットワーク２２０の値の再計算を行い、ネットワーク遷移を行う（ステップＤ２．３）。そしてまた、暗文２０からメッセージ・ユニットＣｉを取り出して復号を行うことを繰り返し（ステップＤ２）、暗文がなくなるまで処理手順（ステップＤ２．１〜２．３）を続ける。
平文や暗文から１文字づつ取り出しているときは、カオス時系列発生源として用いるカオス・ニューラルネットワーク１２０や２２０の出力値から正整数を生成して、１文字に対して演算してもよい。
【００２２】
＜実施例＞
図７〜図１０に、図４に示した構成の３つのニューロンを用いているカオス・ニューラルネットワークを使用した暗号化システムおよび復号システムで、具体的に暗号化および復号した例を示す。図４のカオス・ニューラルネットワークにおいて、外部入力は、ニューロンＮ１およびＮ２に対するＩ１およびＩ２のみであり（即ち、ニューロンＮ３に対する外部入力Ｉ３は０）、ネットワークからの出力は、例えばニューロンＮ１から取り出している。暗号化のための演算は加算を、復号のための演算は減算を用いている。また、ニューラルネットワークを用いた暗号化システムおよび復号システムのプログラムはＣ言語で作成し、コンパイルして実装している。
【００２３】
＜実施例１＞
カオス・ニューラルネットワーク１２０における全ての計算に用いる変数をダブル型（double-type）として行った場合、３つの外部入力値（秘密鍵）｛Ｉ１，Ｉ２，Ｉ３｝として、｛１．２４，  １．２４，０．０｝を用いた例を図７および図８に示す。カオス・ニューラルネットワーク１２０からの出力は整数化して、平文の１文字に加算している。
図７は、実施例に対して用いた平文の一部を示す。図８は上述の条件で、カオス・ニューラルネットワークにより作成した暗文を示す。この暗文に対して、同じ条件のカオス・ニューラルネットワーク２２０の遷移出力を整数化して、暗文の１文字から減算することにより、図７の平文に戻ることも確認している。
【００２４】
＜実施例２＞
図７に示した平文に対して、カオス・ニューラルネットワーク１２０への３つの外部入力値（秘密鍵）｛Ｉ１，Ｉ２，Ｉ３｝として、上述の実施例１の｛１．２４，  １．２４，０．０｝とは僅かに異なる｛１．２４＋１０−１５，  １．２４＋１０−１５，０．０｝を用いた例を図９に示す。カオス・ニューラルネットワーク１２０からの遷移出力は整数化して、平文の１文字に加算していることは、実施例１と変わらない。
図８と比較すると、図９の暗文は、図８とは全く異なっている。このように、カオス・ニューラルネットワークにより作成した暗文は、外部入力値（秘密鍵）が僅かに異なると、全く異なる暗文を生成する。これは、暗号化の秘密鍵を推測することが大変難しいことを示している。
なお、同じ条件のカオス・ニューラルネットワーク２２０を用いて、その出力を整数化して、暗文の１文字から減算することにより、図７の平文に戻ることも確認している。
【００２５】
＜実施例３＞
図７に示した平文に対して、カオス・ニューラルネットワーク１２０における全ての計算に用いる変数をフロート型（float-type）として実装した例を図１０に示す。３つの外部入力値（秘密鍵）｛Ｉ１，Ｉ２，Ｉ３｝は、実施例１とは同じ値であるが、型が異なる（フロート型：float-type）ものを与えることになる。カオス・ニューラルネットワーク１２０からの遷移出力は整数化して、平文の１文字に加算していることは、実施例１と変わらない。
図１０と図８又は図９とを比較すると、図１０の暗文は、図８や図９に示した両方の暗文とは、全く異なっている。
なお、この実施例３においても、復号システムで同じ条件（実装する型や秘密鍵の値）におけるカオス・ニューラルネットワーク２２０の出力を整数化して、暗文の１文字から減算することにより、図７の平文に戻ることも確認している。
このように、作成したソース・プログラムが僅かに異なる、即ち型が異なる実装（異なる型の秘密鍵）だけで、異なる結果が生じることでも分かるように、他の実装での復号システムで復号できないばかりでなく、暗号化の秘密鍵を推測することも大変難しいことを示している。
【００２６】
＜他の実施例＞
図示していないが、カオス・ニューラルネットワークを用いた暗号化システムを実行する計算機やＯＳが異なる場合では、秘密鍵が同じでも生成される暗文が全く異なることを確認している。この暗文は、同じ型の同じ値ではあるが、異なる実行環境における復号システムでは、復号できない。同じ条件、同じ実行環境で実装された復号システムでは、復号は問題なく行われている。
【００２７】
＜まとめ＞
上述の実施例でも分かるように、カオス・ニューラルネットワークを用いた暗号化システムでは、僅かな相違でも全く異なる暗文を作成する。このため、暗号化システムと全く同一の実装および実行環境で復号を行わないと復号は成功しない。この性質のため、カオス・ニューラルネットワークによる暗号化した暗文の解読を大変難しくしている。
本発明は、スタンドアロンのコンピュータ・システムばかりではなく、複数のシステムから構成される、例えばクライアント・サーバ・システム等に適用してもよい。
本発明に関するプログラムを格納した記憶媒体から、プログラムをシステムで読み出して実行することにより、本発明の構成を実現することができる。この記録媒体には、フロッピーディスク（登録商標：フレキシブルディスク）、ＣＤ−ＲＯＭ、磁気テープ、ＲＯＭカセット等がある。
【図面の簡単な説明】
【００２８】
【図１】ニューロンを示す図である。
【図２】２つのニューロンで構成した、基本的な振動するネットワークを示す図である。
【図３】カオス・ニューラルネットワークの構成を示す図である。
【図４】３つのニューロンで構成した、カオス・ニューラルネットワークを示す図である。
【図５】カオス・ニューラルネットワークを用いた暗号化システムおよび復号システムの構成を示す図である。
【図６】暗号化および復号の処理手順を示す図である。
【図７】具体的な例に用いた平文の抜粋である。
【図８】図７の平文のダブル型で暗号化した例である。
【図９】図７の平文を図８と同じ型で僅か異なる暗号鍵で暗号化した例である。
【図１０】図７の平文を図８と異なる型で図８と同じ暗号鍵で暗号化した例である。
【符号の説明】
【００２９】
１０            平文記憶部
２０            暗文記憶部
１１０            演算器
１２０            カオス・ニューラルネットワーク
２１０            演算器
２２０            カオス・ニューラルネットワーク
【図１】
2006259775.tif 000005
【図２】
2006259775.tif 000006
【図３】
2006259775.tif 000007
【図４】
2006259775.tif 000008
【図５】
2006259775.tif 000009
【図６】
2006259775.tif 000010
【図７】
2006259775.tif 000011
【図８】
2006259775.tif 000012
【図９】
2006259775.tif 000013
【図１０】
2006259775.tif 000014