(57)【特許請求の範囲】
【請求項１】
複数のニューロンからなるカオス・ニューラルネットワークであって、
前記各ニューロンは、その内部状態を入力として、所定数の各区分それぞれにおいて線形であって入力値が０である点において区分の境があり、この点の関数出力値に対して正負における関数出力値が非点対称である非対称区分線形関数を演算することを特徴とする乱数生成システム。
【請求項２】
前記非対称区分線形関数は、入力値の正負側にそれぞれ同数の区分を有することを特徴とする請求項１記載の乱数生成システム。
【請求項３】
前記非対称区分線形関数は、両端が０及び１の固定値であり、その内側が単調増加する４つ以上の線分からなる連続関数であることを特徴とする請求項１又は２記載の乱数生成システム。
【請求項４】
前記非対称区分線形関数の出力をダブル型変数として、その仮数部の下位３ビットを切り捨てて下位４ビットから上位の数を取り出す乱数出力部を更に備えることを特徴とする請求項１乃至３いずれかに記載の乱数生成システム。
【請求項５】
請求項１記載の乱数生成システムと、入力する平文と前記乱数生成システムからの乱数とを演算する演算部とを備えることを特徴とする暗号生成システム。
【請求項６】
コンピュータを、請求項１記載の乱数生成システムとして機能させるためのプログラム。
【請求項７】
コンピュータを、請求項５記載の暗号生成システムとして機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、乱数生成システム、暗号生成システム及びプログラムに関し、特に演算負担が軽く、かつ、外部入力値の変化に対して広く連続的に乱数を発生することができる乱数生成システム、その乱数を用いた安全性の高い暗号を生成する暗号生成システム、及びプログラムに関する。
【背景技術】
【０００２】
本発明者らは、カオス・ニューラルネットワーク（ＣＮＮ）を用いた乱数生成システムを提案している（例えば、特許文献１、２参照。）。
【０００３】
図１は、カオス・ニューラルネットワークを構成するニューロンを示す図である。図１及び式（１）〜式（３）に示すニューロンモデルはホップフィールドネットワークやバックプロパゲーション法で一般的に用いられるモデルである。式（２）に示すシグモイド関数は点対称な関数であるとともに非線形出力関数であり、そのグラフを図３(b)に示す。
【０００４】
【数１】
0005504501.tif 000002
ここで、
ｙｍ(ｔ)：ニューロンｍの時刻ｔの出力（ｔ＝０，１，２，…）
ｕｍ：ニューロンｍの内部状態
λ：非線形出力関数ｆの傾き係数
ｘｉ(ｔ)：時刻ｔにおけるニューロンｉからの入力
ｗｉｊ：ニューロンｉからニューロンｊへの重み係数
θｍ：ニューロンｍの閾値
Ｉｍ：ニューロンｍへの外部入力値
【０００５】
図２は、カオス・ニューラルネットワークの実例の構成を示す図である。ここでは、４つのニューロンからなるＣＮＮの例を２つ示す（図２(a)及び図２(b)）。このとき、例えばニューロンＮ1の出力は擬似乱数となる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００３−７６２７２号公報
【特許文献２】特開２００７−７３０１２号公報
【非特許文献】
【０００７】
【非特許文献１】村上武  外、「カオス時系列における周期の予測〜カオス・ニューラルネットワーク出力の精度による周期の変化〜」信学技報、１０７巻、５６０号、２００８年、NLP2007-157、２１〜２６頁
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかし、この場合、外部入力Ｉ（＝Ｉ1＝Ｉ2＝Ｉ3）を変化させたときの、ニューロンＮ1の出力はカオスの連続性が悪い。
【０００９】
図５は、従来のＣＮＮを用いた乱数生成システムのカオスの分岐図及び最大リアプノフ指数を示す図である。図５(a)に示すカオスの分岐図、すなわち、外部入力Ｉに対するニューロンＮ1の出力、を見れば分かるように、多くの窓（周期解）が存在する。また、図５(b)に示す最大リアプノフ指数は、カオスであれば正の値を取るが、窓（周期解）に対応する部分は負の値となる。このように従来のＣＮＮを用いた乱数生成システムは、カオス状態と周期振動が入り組んでおり、カオスかどうかを探索する必要がある。
【００１０】
本発明は、上記問題点に鑑み、演算負担が軽く、かつ、外部入力値の変化に対して広く連続的に乱数を発生することができる乱数生成システム及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１１】
本発明の乱数生成システムは、複数のニューロンからなるカオス・ニューラルネットワークであって、前記各ニューロンは、その内部状態を入力として、所定数の各区分それぞれにおいて線形であって入力値が０である点において区分の境があり、この点の関数出力値に対して正負における関数出力値が非点対称である非対称区分線形関数を演算することを特徴とする。
【００１２】
また、前記非対称区分線形関数は、入力値の正負側にそれぞれ同数の区分を有することが望ましい。
【００１３】
また、前記非対称区分線形関数は、両端が０及び１の固定値であり、その内側が単調増加する４つ以上の線分からなる連続関数であることが望ましい。
【００１４】
また、前記非対称区分線形関数の出力をダブル型変数として、その仮数部の下位３ビットを切り捨てて下位４ビットから上位の数を取り出す乱数出力部を更に備えることが望ましい。
【００１５】
また、本発明の暗号生成システムは、前記乱数生成システムと、入力する平文と前記乱数生成システムからの乱数とを演算する演算部とを備えることを特徴とする。
【００１６】
また、本発明はコンピュータを、前記システムとして機能させるためのプログラムである。
【発明の効果】
【００１７】
本発明によれば、演算負担が軽く、かつ、外部入力値の変化に対して広く連続的に乱数を生成することができる。また、この乱数を用いて安全性の高い暗号を生成することができる。
【図面の簡単な説明】
【００１８】
【図１】カオス・ニューラルネットワークを構成するニューロンを示す図である。
【図２】カオス・ニューラルネットワークの実例の構成を示す図である。
【図３】乱数生成システムに用いる関数のグラフを示す図であり、(a)は本発明で用いる非対称区分線形関数、(b)は従来のシグモイド関数を示す。
【図４】本発明のＣＮＮを用いた乱数生成システムのカオスの分岐図及び最大リアプノフ指数を示す図である。
【図５】従来のＣＮＮを用いた乱数生成システムのカオスの分岐図及び最大リアプノフ指数を示す図である。
【図６】乱数を取り出す処理を説明する図である。
【発明を実施するための形態】
【００１９】
以下、添付図面を参照しながら本発明を実施するための形態について詳細に説明する。
【実施例１】
【００２０】
図３(a)は、本発明の一実施例による乱数生成システムに用いる関数のグラフを示す図である。本発明はシグモイド関数に代えて、図３(a)に示す非対称区分線形関数を用いる。この非対称区分線形関数は、６つの区分の線形関数を連続的に張り合わせて構成している。ここで各区分の境界である各点の座標は、Ａ(ａx,０)，Ｂ(ｂx,ｂy)，Ｃ(０,ｃy)，Ｄ(ｄx,ｄy)，Ｅ(ｅx,１)で表される。両端の半直線は０及び１の固定値であるが、これらを除く内側の点Ａ〜点Ｅの線分の間は単調増加である。シグモイド関数はｙ軸との交点に関して点対称であるが、本発明の非対称区分線形関数はｙ軸との交点である点Ｃに関して非点対称である。シグモイド関数ｆ(ｘ) は唯一つの独立変数λで表されるが、本発明の非対称区分線形関数は７つの独立変数（ａx,ｂx,ｂy,ｃy,ｄx,ｄy,ｅx）で表される。
【００２１】
図４は、本発明のＣＮＮを用いた乱数生成システムのカオスの分岐図及び最大リアプノフ指数を示す図である。図４(a)に示す分岐図を見ると、区間［０.５２，１.６２］で窓（周期解）を持たず、最大リアプノフ指数が＋０.１以上の比較的大きな正の値を取っていることから、カオスが連続的に発生していることが示唆される。また、準周期振動（最大リアプノフ指数がゼロ）もこの区間では存在しない。
【００２２】
これは、カオスに必要な入力値を探索することなしに選択可能であることを意味する。すなわち、入力値を暗号の鍵として使用することができることになる。
【００２３】
また、非対称区分線形関数は、７つの独立変数（ａx,ｂx,ｂy,ｃy,ｄx,ｄy,ｅx）を持っており、これらも暗号鍵として利用可能である。これらの独立変数はＣＮＮの重み係数などと違って、多少の変化ではカオス状態が崩れるほど大きな変化をもたらすことがないため制御が容易で、暗号鍵として扱いやすい。
【００２４】
また、真のカオスは周期を持たないが、計算機で生成しているカオスの場合は周期を持つ。周期が短いロジスティック写像などを暗号に応用した場合には、きわめて重大な欠点となる。しかし、本実施例のカオスの周期をシミュレートすると、１０9〜１０17程度とシグモイド関数を用いた時とほぼ同程度の非常に長いことが推定されたので（シミュレート手法は非特許文献１による。）、本実施例の乱数生成システムによって生成された乱数を暗号に応用しても充分安全であると考えられる。
【実施例２】
【００２５】
図６は、乱数を取り出す処理を説明する図である。図６(a)は、従来の乱数を取り出す処理を説明する図であり、ＣＮＮを構成するニューロン（例えばニューロンＮ1）の出力をダブル型変数にして、例えば指数部１１ビット、仮数部５２ビットにして、仮数部の下位の例えば２４ビットを乱数として取り出していた。しかし、非対称区分線形関数では、必ずしもその方法では、統計的に一様性や独立性の良い性質の乱数を取り出せないことが分かった。図６(b)は、本発明の実施例による乱数を取り出す処理を説明する図であり、ダブル型変数の仮数部の下位３ビットを切捨て、下位４ビット〜２７ビットを乱数として取り出す。
【００２６】
ここで、株式会社カオスウェア製のRanSureを使用してNIST 800-22テストを実施した結果を示す。
参考：http://www.chaosware.com/ransure/ransure.html
【００２７】
RanSureを用いた場合、異なる１０個のシード（種）に対して検定を行い、５〜７回全テスト（１５項目）をパスすれば、乱数は良いランダム性を持つと言える。確率で置き換えると、５０〜７０％の合格率で全テストにパスすれば良いことになる。ここでは、（ａx,ｂx,ｂy,ｃy,ｄx,ｄy,ｅx）及びＩをパラメータとして、色々なパラメータについてテストを実施した結果を示す。
【００２８】
［パラメータ１を用いた場合のRanSureテストの結果］
パラメータ１：（ａx,ｂx,ｂy,ｃy,ｄx,ｄy,ｅx）＝（-50.000000, -2.000000, 0.100000, 0.500000, 2.000000, 0.900000, 50.000000）, 0.4≦Ｉ≦1.0
(1).仮数部下位０〜２ビット切り捨て、そこから２４ビットを乱数として採用の場合
７個の乱数シード（種）に対して合格率０％
しかも１５個のテストのうち５〜６個のテストしかパスしておらず、乱数性は極めて悪い。
(2).仮数部下位３ビット切り捨て、そこから２４ビットを乱数として採用の場合
１７個の乱数シードに対して全合格数は８、よって合格率５３％であるので、良い乱数といえる。
(3).仮数部下位４ビット以上を切り捨て、そこから２４ビットを乱数として採用の場合
ほぼ３ビット切捨てと同じ。ただし、下位から４５ビット以上のビットを取り出すことになる場合は、乱数性は低下する。４ビット以上切り捨てても、乱数性は低下することはあっても向上は望めない。
【００２９】
下位ビットを切り捨てない場合に、不合格になるテストを調べると、frequency（頻度検定）、block-frequency（ブロック頻度検定）など一様性に問題があるため、検定に合格しないことが明らかになった。そこで、一様性を調べる「頻度検定」の結果を見ると、表１となった。ここで、有意水準と同程度の棄却率の場合を合格とした。頻度検定はNIST 800-22テストにも含まれている基本的なテストであり、頻度検定を全くパスしないようなら、乱数として用いることはできない。
【００３０】
よって、カオス出力仮数部の下位３ビットまでは、切り捨てる必要があることは、頻度検定の結果を見ても明らかである。
【００３１】
【表１】
0005504501.tif 000003
【００３２】
［パラメータ２〜４を用いた場合のRanSureテストの結果］
パラメータ２：（ａx,ｂx,ｂy,ｃy,ｄx,ｄy,ｅx）＝（-51.000100, -1.980101, 0.099990, 0.501200, 1.980101, 0.899990, 51.000100），0.6≦Ｉ≦1.55
パラメータ３：（ａx,ｂx,ｂy,ｃy,ｄx,ｄy,ｅx）＝（-51.000100, -1.980101, 0.099990, 0.501200, 1.980101, 0.899990, 51.000100），0.6≦Ｉ≦1.05
パラメータ４：（ａx,ｂx,ｂy,ｃy,ｄx,ｄy,ｅx）＝（-51.000100, -1.980101, 0.099990, 0.501200, 1.980101, 0.899990, 51.000100），1.10≦Ｉ≦1.55
パラメータ１を用いた場合は、３ビット切り捨てが顕著な効果を発揮した例であったが、表２にパラメータを変えた時の乱数性の結果の一例を示す。パラメータの取り方によっては、切捨てビット数が２以下でも合格率が５０〜７０％となる場合もある。しかしながら、切り捨てビットが３の場合は常に合格率は５０〜７０％の範囲に入っている。下位ビットには、丸め誤差など計算上の様々な誤差が入り込む可能性がある。下位ビットを切り捨てることによって、これを防ぐことができると考えられる。
【００３３】
【表２】
0005504501.tif 000004
乱数性が悪かった部分を網かけで示した。
【００３４】
なお、本発明は上記実施例に限定されるものではない。
関数の区分の数は実施例で示した６に限られず、関数が線形であることと、非点対称であることが重要である。図３(a)に示した点Ｃの近傍で非点対称であることが特に重要であることと、ｘの広い範囲で関数に傾斜を持たせるために原点Ｏと点Ａの間の距離、及び、原点Ｏと点Ｅの間の距離を大きくするためには、関数の区分の数は少なくとも６が特に望ましい。すなわち、単調増加する線分の数は４つ以上が特に望ましい。
【００３５】
上述の乱数生成システムは、暗号生成システムに対して適用することができる。上述のＣＮＮを用いた乱数生成システムの出力値から生成された乱数列は、一様性に優れており、真性乱数と区別できない乱数である。このため、この乱数を用いることにより、暗号学的な安全性が保証されているone time pad暗号系を構築することができる。
【００３６】
本発明の乱数生成システム及び暗号生成システムは、このシステムを機能させるためのプログラムによっても実現される。このプログラムは、例えばＣＤ−ＲＯＭ等のコンピュータで読み取り可能な記録媒体に格納されている。
【００３７】
システムの動作を実行するプログラムを記録した記録媒体は、システム内のメモリそのものであってもよいし、また、外部記憶装置としてのＣＤ−ＲＯＭドライブ等のプログラム読み取り装置に挿入することで読み取り可能なＣＤ−ＲＯＭ等であってもよい。また、上記記録媒体は、磁気テープ、カセットテープ、フレキシブルディスク、ハードディスク、ＭＯ／ＭＤ／ＤＶＤ等、又は半導体メモリであってもよい。
【図１】
0005504501.tif 000005
【図２】
0005504501.tif 000006
【図３】
0005504501.tif 000007
【図４】
0005504501.tif 000008
【図５】
0005504501.tif 000009
【図６】
0005504501.tif 000010