(57)【要約】【課題】小型化と高速化が可能、系列が予測不可能、再現不可能な乱数列を生成する。【解決手段】アナログカオス生成回路１１によりアナログカオス信号を発生し、この信号からディジタル変換して変動用データを得る変動データ生成部１０と、ロジスティック写像を行う写像演算回路２１と、前記変動データに基づき前記写像演算回路２１における写像に変動を生じさせるデータ変動手段と、前記写像演算回路２１による写像結果に基づき乱数値を取得する乱数値取得手段とを具備する。【選択図】図１
2016081274.tif 000002
【特許請求の範囲】
【請求項１】
アナログカオス生成回路によりアナログカオス信号を発生し、この信号からディジタル変換して変動用データを得る変動データ生成部と、
ロジスティック写像を行う写像演算回路と、
前記変動データに基づき前記写像演算回路における写像に変動を生じさせるデータ変動手段と、
前記写像演算回路による写像結果に基づき乱数値を取得する乱数値取得手段と
を具備することを特徴とする乱数生成装置。
【請求項２】
変動データ生成部は、カオス信号をディジタル化したデータの一部をそのまま又は所定演算を行って変動データとすることを特徴とする請求項１に記載の乱数生成装置。
【請求項３】
データ変動手段は、変動データを写像データの一部と置換することを特徴とする請求項１または２に記載の乱数生成装置。
【請求項４】
データ変動手段は、変動データと写像データの少なくとも一部との演算に基づき写像に変動を生じさせることを特徴とする請求項１または２に記載の乱数生成装置。
【請求項５】
乱数値取得手段は、前記写像演算回路による写像結果をそのまま又は所定演算を行って乱数値とすることを特徴とする請求項１乃至４のいずれか１項に記載の乱数生成装置。
【請求項６】
前記変動データ生成部は、アナログカオス生成回路を有し、アナログカオス生成回路によりアナログカオス信号を発生することを特徴とする請求項１乃至５のいずれか１項に記載の乱数生成装置。
【請求項７】
前記アナログカオス生成回路は、所定のタイミングで回路定数を変更することを特徴とする請求項６に記載の乱数生成装置。
【請求項８】
乗数Ｘｉと、２Nから前記乗数Ｘｉを引算した結果である被乗数（２N−Ｘｉ）との掛け算結果に、定数ａを掛ける式により定義されるロジスティック方程式を用いてロジスティック写像を行う写像演算回路において、
前記被乗数を得る演算として２Nから乗数Ｘｉを引算する減算部と、
前記減算部により得られた被乗数と乗数とを乗算する乗算部と、
前記乗算部により得られた結果について、定数ａに対応するシフト演算を行うシフト演算部と
前記シフト演算部により得られた結果から下位Ｎビットを棄却して次の乗数として前記減算部へ送出する第１の処理部と
を具備する写像演算回路。
【請求項９】
乗数を置数する乗数レジスタと、被乗数を置数する被乗数レジスタと、加算器と、１を供給する１供給源と、を有し、
前記減算部が、
前記乗数レジスタに置数された乗数を反転して補数を得るインバータと、
前記インバータの出力と前記１供給源より１を夫々前記加算器へ導く第１の経路と、
前記加算器へ導かれた前記インバータの出力と前記１供給源からの１が加算された結果を前記被乗数レジスタへ導く第２の経路と
により構成されることを特徴とする請求項８に記載の写像演算回路。
【請求項１０】
更に、
シフトレジスタと
前記乗数レジスタに置数された乗数の下位ビットから順に１ビット取り出して、この１ビットと前記被乗数レジスタに置数された被乗数との論理積をアンド回路により求めて、結果を前記加算器に出力する第２の処理部と、
前記加算器を用いて、初期データ或いは前回の加算器の出力を前記シフトレジスタによりシフトしたデータと前記第２の処理部の出力との加算を行い、前記シフトレジスタへ出力する第３の処理部と
を備え、
前記乗数レジスタに置数された乗数のビットすべてについて処理が行われるまで、シフトレジスタ、前記第２の処理部及び前記第３の処理部による処理を繰り返し実行することを特徴とする請求項９に記載の写像演算回路。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、乱数生成装置と、この乱数生成装置に用いることのできる写像演算回路に関するものである。
【背景技術】
【０００２】
コンピュータによって作成する擬似乱数は、一定の規則で生成されるため、厳密にいえば乱数とはいえない。また、ソフトウェア的な擬似乱数生成手法では、仮に鍵発行サーバがハッキングされた場合などには、擬似乱数生成プログラムが流出する危険性がある。この場合、暗号鍵発行（乱数生成）パターンを把握されてしまう恐れがある。
【０００３】
擬似乱数生成としては、著名な線形シフトレジスタ系が知られている。これらは電子回路化も容易で、かつ高速提供が可能であるが、根本的にソフトウェアでも再現可能である。従って、「ソフトウェアでは再現困難」といった（アナログ的）効果を得ることはできない。
【０００４】
真性乱数生成は、一般的に、擬似乱数生成法に比べ生成速度が遅いという問題がある。また、真性乱数として熱電子を利用するものがあるが、１／０に偏りがあり、それを補正する機構を必要とする。また，計算機シミュレーションで利用する乱数として真性乱数を利用しようとしても、真性乱数生成は遅いため、今日のコンピュータの高速処理に間に合わない。従って、真正乱数生成がボトルネックとなって全体の処理時間が長くなるという問題がある。これについては、大量の真性乱数生成器を並列導入してスループットを上げることが考えられる。しかしながら、この手法によるときには、システムが大掛かりとなる問題が生じる。
【０００５】
特許文献１には、アナログカオス信号をＡ／Ｄ変換し、データ圧縮処理後に乱数取得を行いアナログカオス信号から乱数値を取得する方法が開示されている。この特許文献１の方式ではアナログカオスのディジタル化が行われるだけで、カオスディジタル演算回路に不確定要素を付与することにより再現困難性の高い乱数を得るものではない。
【０００６】
また、簡単なＬＲＣ閉回路にてアナログカオス信号を生成し、そのままＡ／Ｄ変換し乱数データとして出力するような乱数生成回路によると、一見乱数のように見える出力を得ることができるものの、乱数性能を定量的に測ることにより相関性が発見される可能性があり、相関性を除去する工夫が必要となる。
【０００７】
また、特許文献２には、アナログカオス信号を協調させてＡ／Ｄ変換し、良質な乱数値を取り出す回路が開示されている。しかしながら、抽出されるデータ量は一回のクロックパルスにつき、１ビットのみであり、乱数生成スピードはアナログカオス信号を生成させる最適な外部周期信号（正弦波）の周波数に左右され、擬似乱数生成と比べてスピードがそれほど期待できない。
【０００８】
一方、ロジスティック写像には理論的に、ある初期値により短い周期をとることが知られている。周期１となる値は、0.25, 0.5, 0.75があり、初期値を選択する際には注意が必要である。
【０００９】
【数１】
2016081274.tif 000003
【００１０】
他にもいくつか短い周期をとるパラメータが内在しており、固定演算で実装した場合でも該当するパラメータではこれらの周期帯を持っていることが報告されている。このため、注意して初期値を設定し、短いループに入らない工夫が必要となる。ところが、固定演算では写像の計算の過程において丸め誤差により、これらのパラメータに一致してしまう懸念がある。
【００１１】
カオス写像を固定演算で実装した場合、演算精度の最大値と比べて、かなり短い周期にいずれ落ち込む機構がある。
後述の整数演算化したロジスティック写像（７）式により演算精度Ｎ＝６［ｂｉｔ］とした場合、初期値Ｘ０＝２５からの写像は
25 → 60 → 15 → 45 → 53 → 36 → 63 → 3 → 11 → 36
と、遷移し、36 → 63 → 3 → 11の周期長４の周期帯に落ち込むことが分かる。
また初期値Ｘ０＝５１では
51 → 58 → 21 → 56 → 28 → 63 → 3 → 11 → 36 → 63
と、遷移し、同様に36 → 63 → 3 → 11の周期長４の周期帯に落ち込むことが分かる。
【００１２】
例えば、演算精度Ｎ＝６［ｂｉｔ］は最大値が６４であるが、演算精度の割にかなり短い周期になる。これは演算精度を上げた場合でも同様な機構を持つため、カオス写像をディジタル演算実装して乱数生成を行う場合に、乱数性能が悪くなるといった問題がある。このため、周期に落ち込まないような工夫が根本的に必要である。
【００１３】
更に、特許文献３には、固定演算を行うロジスティック写像が開示されている。しかしながら、この写像は、ディジタルな有限精度演算という性格上、乱数生成パターンや周期の存在は確定的である。
【００１４】
また、特許文献４、特許文献５には、固定演算実装による短周期の問題については周期を延ばす手段により、統計的に乱数性能を向上させるという提案がなされている。しかしながら、周期を延ばす工夫をした場合、レジスタや制御回路などを追加することで、回路規模や処理工程が増大し、設計段階でのコストも上昇する問題がある。
【００１５】
また、その機能を演算処理過程の内部に入れ、複雑化することで処理性能や回路面積の柔軟なスケールアップ／ダウンが難しくなる懸念がある。更に、周期を延ばす仕組みを追加したとしても、写像の系列の中にごく毫ながらも短周期帯が存在する可能性があるため、周期帯の全件探索を行ってみないとわからないといった問題がある。
【００１６】
更に、ロジスティック写像による乱数生成をソフトウェアで実装しようとすると、後述のように、ＮＩＳＴ乱数検定に合格するためには、演算精度を６４ビット以上とする必要があり、最大の演算幅は１２８ビット以上となる。現状のパーソナルコンピュータは演算精度幅の最大が６４ビットであり、乱数性の良いものを作成しようとすると、多倍長演算ライブラリを利用する必要があり、乱数生成のスピードが遅くなる。このため、専用回路化を行うほうが望ましい。
【００１７】
また、特許文献６には、ＣＭＯＳ電子回路を用いた一次元写像回路が開示されている。しかしながら、ロジスティック写像のアナログ電子回路で決定した内部状態をＡ／Ｄ変換し、乱数として取り出す必要がある。
【００１８】
また、一次元写像のディジタル演算実装などにおいて、写像の上位ビットを取り出すように構成すると、統計的に乱数性が悪いため、中位から下位側のビットを取り出すなど、取り方を工夫する必要がある。設計段階で予め乱数検定を行い、統計的な把握を事前に行っておくことが望ましい。
【００１９】
更に、引用文献７には、乱数生成器として一般的に知られるフィードバックシフトレジスタに熱雑音を組み合わせることにより、ディジタル演算の持つ高速性とアナログの持つ不規則性を助長するように乱数性の向上を図った提案がなされている。
【００２０】
上記引用文献７に用いられるフィードバックシフトレジスタは、頻度と周期が理想的に作られており、一度生成されたパターンは周期内では２度とは生成されない。このため不規則な信号で系列を変動させるとしても、元に戻って同じパターンを繰り返すようになり、一方向的なパターン化された乱数を繰り返し出力する懸念がある。
【００２１】
また、熱雑音は物理条件により、周期的なパターンを繰り返すといった懸念があり、製造後の品質にも左右される。このため、予め設計段階で乱数検定を行い、統計的な把握を事前に行えることがより望ましい。
【００２２】
更に、特許文献８には、３２ビットの演算を別レジスタにいれて、演算精度を拡張するようにしたロジスティック写像の乱数生成回路が開示されている。しかしながら、ロジスティック写像に留まっており、周期性が生じることは免れようがないものと思われる。
【先行技術文献】
【特許文献】
【００２３】
【特許文献１】特許第３０３６６９８号明細書
【特許文献２】特開２００８−１２３３７４号公報
【特許文献３】特開２００４−９３７５６号公報
【特許文献４】特開２００５−２２８１６９号公報
【特許文献５】特開平９−２９２９７８号公報
【特許文献６】特開平７−２６２１５９号公報
【特許文献７】特開昭５１−２２４１６５号公報
【特許文献８】特開２００５−２２８１６９号公報
【発明の概要】
【発明が解決しようとする課題】
【００２４】
一般的に、予測不可能性を有するといわれるカオス現象を数理的に生成させるものとして、ロジスティック写像が知られている。その数式は簡単なため、回路規模が少ない擬似乱数生成回路として使用できる。そして、ロジスティック写像はバタフライ効果で知られるそのカオス的振る舞いにより、初期値もしくは計算値にわずかな誤差を与えるのみで予測不可能性を助長させるという特徴を備えている。
【００２５】
本発明は、このようなロジスティック写像の特徴と、前述の通りの乱数生成技術の現状とに鑑みなされたもので、その目的は、小型化と高速化が可能であり、系列が予測不可能で再現不可能な良質の乱数列を生成することが可能な乱数生成装置を提供することである。また、本発明は、この乱数生成装置に用いることのできる写像演算回路を提供することを目的とする。
【課題を解決するための手段】
【００２６】
本発明に係る乱数生成装置は、アナログカオス生成回路によりアナログカオス信号を発生し、この信号からディジタル変換して変動用データを得る変動データ生成部と、ロジスティック写像を行う写像演算回路と、前記変動データに基づき前記写像演算回路における写像に変動を生じさせるデータ変動手段と、前記写像演算回路による写像結果に基づき乱数値を取得する乱数値取得手段とを具備することを特徴とする。
【００２７】
本発明に係る乱数生成装置では、変動データ生成部は、カオス信号をディジタル化したデータの一部をそのまま又は所定演算を行って変動データとすることを特徴とする。
【００２８】
本発明に係る乱数生成装置では、データ変動手段は、変動データを写像データの一部と置換することを特徴とする。
【００２９】
本発明に係る乱数生成装置では、データ変動手段は、変動データと写像データの少なくとも一部との演算に基づき写像に変動を生じさせることを特徴とする。
【００３０】
本発明に係る乱数生成装置では、乱数値取得手段は、前記写像演算回路による写像結果をそのまま又は所定演算を行って乱数値とすることを特徴とする。
【００３１】
本発明に係る乱数生成装置では、前記変動データ生成部は、アナログカオス生成回路を有し、アナログカオス生成回路によりアナログカオス信号を発生することを特徴とする。
【００３２】
本発明に係る乱数生成装置では、前記アナログカオス生成回路は、所定のタイミングで回路定数を変更することを特徴とする。
【００３３】
本発明に係る写像演算回路は、乗数Ｘｉと、２Nから前記乗数Ｘｉを引算した結果である被乗数（２N−Ｘｉ）との掛け算結果に、定数ａを掛ける式により定義されるロジスティック方程式を用いてロジスティック写像を行う写像演算回路において、前記被乗数を得る演算として２Nから乗数Ｘｉを引算する減算部と、前記減算部により得られた被乗数と乗数とを乗算する乗算部と、前記乗算部により得られた結果について、定数ａに対応するシフト演算を行うシフト演算部と、前記シフト演算部により得られた結果から下位Ｎビットを棄却して次の乗数として前記減算部へ送出する第１の処理部とを具備することを特徴とする。
【００３４】
本発明に係る写像演算回路では、乗数を置数する乗数レジスタと、被乗数を置数する被乗数レジスタと、加算器と、１を供給する１供給源と、を有し、前記減算部が、前記乗数レジスタに置数された乗数を反転して補数を得るインバータと、前記インバータの出力と前記１供給源より１を夫々前記加算器へ導く第１の経路と、前記加算器へ導かれた前記インバータの出力と前記１供給源からの１が加算された結果を前記被乗数レジスタへ導く第２の経路とにより構成されることを特徴とする。
【００３５】
本発明に係る写像演算回路では、更に、シフトレジスタと前記乗数レジスタに置数された乗数の下位ビットから順に１ビット取り出して、この１ビットと前記被乗数レジスタに置数された被乗数との論理積をアンド回路により求めて、結果を前記加算器に出力する第２の処理部と、前記加算器を用いて、初期データ或いは前回の加算器の出力を前記シフトレジスタによりシフトしたデータと前記第２の処理部の出力との加算を行い、前記シフトレジスタへ出力する第３の処理部とを備え、前記乗数レジスタに置数された乗数のビットすべてについて処理が行われるまで、シフトレジスタ、前記第２の処理部及び前記第３の処理部による処理を繰り返し実行することを特徴とする。
【発明の効果】
【００３６】
本発明によれば、小型化と高速化が可能であり、系列が予測不可能で再現不可能であり、良質な乱数列を生成することが可能である。
【図面の簡単な説明】
【００３７】
【図１】本発明の乱数生成装置の実施形態を示すブロック図。
【図２】本発明の乱数生成装置の実施形態に用いられるアナログカオス生成回路を示すブロック図。
【図３】本発明の乱数生成装置の実施形態に用いられるアナログカオス生成回路であり、パラメータを自動変動可能な回路を示すブロック図。
【図４】本発明の乱数生成装置の実施形態に用いられるビット抽出・Ａ／Ｄ変換回路を示すブロック図。
【図５】本発明の乱数生成装置の実施形態に用いられるアナログカオス生成回路においてパラメータを変更した場合のアナログカオス電圧の変化を示すブロック図。
【図６】ロジスティック写像の時系列と対応するリターンマップを示す図。
【図７】本発明の実施形態に係るロジスティック写像演算部の動作を示すフローチャート。
【図８】本発明の実施形態に係るロジスティック写像演算部の動作を詳細に示すフローチャート。
【図９】本発明の乱数生成装置の実施形態に用いられる写像演算回路の構成を示す回路図。
【図１０】本発明の乱数生成装置の実施形態に用いられる制御回路の構成を示す回路図。
【図１１】本発明の乱数生成装置の実施形態に用いられる制御回路を回路シミュレーションした具体的な波形図。
【図１２】本発明の乱数生成装置の実施形態に用いられるセレクタの構成を示す回路図。
【図１３】本発明の乱数生成装置の実施形態に用いられる乗数レジスタの構成を示す回路図。
【図１４】本発明の乱数生成装置の実施形態に用いられる被乗数レジスタの構成を示す回路図。
【図１５】本発明の乱数生成装置の実施形態に用いられる加算器の構成を示す回路図。
【図１６】本発明の乱数生成装置の実施形態に用いられるシフトレジスタの構成を示す回路図。
【図１７】本発明に係る乱数生成装置の実施形態のシフトレジスタに用いられる１ビットシフト回路の構成を示す回路図。
【図１８】本発明の乱数生成装置の実施形態に用いられるロジスティック写像演算部を回路シミュレーションした波形図。
【図１９】本発明の乱数生成装置の実施形態によるビット乗算のフローチャート。
【図２０】実施例１と実施例２で行った乱数値抽出されるまでのロジスティック写像演算のビット配列フロー図。
【図２１】負性抵抗回路のポアンカレプロットを示す図。
【図２２】ロジスティック写像において１ビットを強制変更した場合の時系列と変更しない場合の時系列を示す図。
【発明を実施するための形態】
【００３８】
以下添付図面を参照して、本発明に係る乱数生成装置及びそれに用いられる写像演算回路の実施形態を説明する。各図において、同一の構成要素には同一の符号を付して重複する説明を省略する。図１に、本発明に係る乱数生成装置の実施形態の構成図を示す。乱数生成装置の実施形態は、変動データ生成部１０と、ロジスティック写像を行う写像演算回路２１を備えている。
【００３９】
変動データ生成部１０は、アナログカオス生成回路によりアナログカオス信号を発生し、この信号からディジタル変換して変動用データを得るものである。変動データ生成部１０には、アナログカオス生成回路１１とビット抽出・Ａ／Ｄ変換回路１２とが備えられている。
【００４０】
また、写像演算回路２１は、ロジスティック写像演算部２０に含まれており、ロジスティック写像演算部２０には、写像演算回路２１、初期値レジスタ２２及び乱数出力回路２３が備えられている。
【００４１】
この乱数生成装置は、制御回路３０を備えており、制御回路３０は、ビット抽出・Ａ／Ｄ変換回路１２、写像演算回路２１、乱数出力回路２３の出力を制御する。また、外部からクロック信号が制御回路３０とビット抽出・Ａ／Ｄ変換回路１２とに与えられており、アナログカオス生成回路１１には、外部から周期信号が与えられている。なお、乱数出力回路２３は、写像演算回路２１による写像結果に基づき乱数値を取得する乱数値取得手段として機能する。乱数値取得手段は、上記写像演算回路２１による写像結果をそのまま又は所定演算を行って乱数値とすることができる。
【００４２】
本実施形態では、上記アナログカオス生成回路１１として電子回路を用いてカオス信号を発生させる。アナログカオス生成回路１１としての電子回路は、負性発振回路、非線形インダクタンスを備える直列共振回路、ダブルスクロール回路等のいずれを用いてもよいし、また、別の構成によるアナログカオス生成を行う電子回路であってもよい。
【００４３】
本実施形態では、図２に示すような負性抵抗発振回路をアナログカオス生成回路１１として採用することができる。即ち、ＲＬ直列回路にコンデンサＣと負性抵抗ＭＲとの並列回路を接続し、この回路に外部から周期信号としてＥｃｏｓ（ωｔ）の信号を与える。
【００４４】
【数２】
2016081274.tif 000004
【００４５】
本実施形態では、図２の回路をアナログカオス生成回路１１として用いたが、図３に示す回路を用いてもよい。この図３の回路は、図２のコンデンサＣに代えてコンデンサＣ0を接続し、コンデンサ（Ｃ1〜Ｃ8）とスイッチ（ＳＷ1〜ＳＷ8）による直列回路を、上記のコンデンサＣ0に並列接続したものである。スイッチの開閉は、乱数生成装置により得られた乱数（例えば、その内の８ビット）により制御を行うように構成することができる。即ち、アナログカオス生成回路は、所定のタイミングで回路定数を変更するように構成することができる。
【００４６】
ビット抽出・Ａ／Ｄ変換回路１２は、例えば図４に示すように構成することができる。このビット抽出・Ａ／Ｄ変換回路１２では、１ビット抽出用の構成であり、図の横方向に１群として並ぶ回路要素により１ビット分の基本回路が構成されている。従って、カオス信号を分割するビット数に対応して上記基本回路が設けられる。このビット抽出・Ａ／Ｄ変換回路１２は、アナログカオス信号よりビット抽出をするためのＡ／Ｄ変換回路図であり、一般的に用いられる高速Ａ／Ｄコンバータ方式のものである。
【００４７】
ここでは入力されたアナログカオス信号を抵抗素子によって分圧し、分圧された信号を各差動増幅回路により参照電圧と比較して１／０へ変換する構成を採用している。１／０に変換された各差動増幅回路の出力は、次段のラッチ回路へと転送される。ラッチ回路では、アナログカオス信号から乱数ビット値を読み出すべき所望サイクルのタイミングにより、クロック信号ＣＬＫがＨレベルとされ、これにより次段の排他的論理和回路(Exclusive OR)へデータ転送が行われる。
【００４８】
各差動増幅回路の参照電圧はＧＮＤ電圧に近いものほど順に低く設定されているため、アナログカオス電圧のサンプリング時に各参照電圧により隣同士が“１”または“０”のラッチ回路の出力群２つに分割され、１／０の境界部の排他的論理和回路１つのみが“１”を出力する。
【００４９】
排他的論理和回路の出力により１／０レジスタが選択される構成を有しており、選択された１／０レジスタは格納している１ビットのデータを出力する。ここで１／０レジスタには図４に示すようにデータ１／０が交互に格納されている。この動作により、アナログカオス信号がディジタル変換され、更に１ビット抽出がサンプリング周期毎（クロック信号ＣＬＫがＨレベル）のときに行われる。
【００５０】
更に、１／０レジスタについても任意クロック数（取得ビット数）ごとに、クロックカウンタ回路により１→０または０→１と反転される。これは振幅値による１／０頻度のずれ補正と、ランダム性能向上のため行われる。このように、本実施形態では、アナログカオス生成回路によりアナログカオス信号を発生し、この信号からディジタル変換して変動用データを得る変動データ生成部を備えている。変動データ生成部は、カオス信号をディジタル化したデータの一部をそのまま又は所定演算を行って変動データとすることができる。
【００５１】
アナログカオス信号について、このビット抽出・Ａ／Ｄ変換回路１２より生成される乱数ビット信号が、本実施形態の乱数生成装置によって生成される乱数全体の質を左右するものになるため、例えば特開２００８−１２３３７４号に示されているような、相関性や平均値の検定に合格しているものを使用すると好適である。
【００５２】
ここで、先に図３に示したようなＬＲＣ回路によって、パラメータＣをある時点で僅かに変えるアナログカオス生成回路１１を用いる有利性を説明する。図５はカオス振動を起こすＬＲＣ回路のパラメータＣの値をある時点で僅かに変えた場合(C=0.3[μF]→0.3005[μF]) の時系列の電圧値Ｖ１と、パラメータＣの値を不変とした場合(C=0.3[μF]固定) での時系列の電圧値Ｖ２の変動を比較したグラフである。この図５に明らかなように、カオスは初期鋭敏性により微妙にＬ／Ｒ／Ｃ等の各種パラメータを変化させただけで系列が徐々に離れてゆき、一定の時間後より全く異なる系のように振る舞うという特徴を持つことが分かる。このことから、Ｌ／Ｒ／Ｃ値を、既に出力された乱数値を用いる等の手法によって変動させることで、系列が変わるため、予測不可能性を助長するものとして望ましいことが明白である。
【００５３】
ロジスティック写像演算部２０の写像演算回路２１では、次のようにロジスティック写像を実現する。ロジスティック写像の数式は以下で定義される。
【００５４】
【数３】
2016081274.tif 000005
【００５５】
ロジスティック写像の値域は[0,1] 区間のあらゆる値をとるように振る舞い、無限精度演算が可能ならば過去算出したＸｉには戻らない性質を備えている。初期値X0には任意の値を選択できるが、例えばＸ０＝0.25,0.5,0.75とした場合、解が収束してしまうため、これらの初期値は採用することができず、初期値としては解が収束しない値を注意して選択する必要がある。図６（ａ）に、初期値にX0=0.4を代入し、不規則に値をとる数列 { Xi } の横軸“i ”に対する時系列を示し、図６（ｂ）にその幾何学構造（リターンマップ）を示す。また、ロジスティック写像を整数演算化したものは、次の式になる。演算精度のビット数を以降、“N ”とする。ロジスティック写像のディジタル演算実装については（７）式によるものとなる。
【００５６】
【数４】
2016081274.tif 000006
【００５７】
本実施形態に係るロジスティック写像演算部２０の写像演算回路２１では、初期値レジスタ２２にセットされた初期値Ｘ0を用いてロジスティック写像演算を開始する。初期値Ｘ0としては、短い周期に陥らない固定値を求めて、予め初期値レジスタ２２に格納しておく。或いは、アナログカオス生成回路１１において作成したアナログカオス信号をＡ／Ｄ変換して、短い周期に陥らないディジタル値を取り出し、予め初期値レジスタ２２に格納しておくようにしてもよい。
【００５８】
本実施形態に係るロジスティック写像演算部２０においては、上記の変動データに基づき上記写像演算回路２１における写像に変動を生じさせるデータ変動手段を備える。このため、乱数抽出を行うべき写像回数ＲＮと、ビット抽出・Ａ／Ｄ変換回路１２による不確定ビットを用いてロジスティック写像結果に変動を生じさせるべき乱数抽出回数ＡＮとが設定される。本実施形態では、データ変動手段は、変動データを写像データの一部と置換する。即ち、ロジスティック写像結果の所定ビットを、ビット抽出・Ａ／Ｄ変換回路１２の出力で置換する。しかし、データ変動手段は、変動データと写像データの少なくとも一部との演算に基づき写像に変動を生じさせるようにしてもよい。なお、ここで行われる演算は、加減乗除や適当な関数によるものなど、どのようなものを用いても良い。
【００５９】
以上のような本実施形態に係るロジスティック写像演算部２０は、図７に示すフローチャートに示すように動作する。初期値レジスタ２２から初期値Ｘ0を取り出し（Ｓ１１）、これを用いてロジスティック写像演算を行う（Ｓ１２）。ステップＳ１２では、初期状態で０の演算回数ｉを１インクリメントする。次に、演算回数が乱数抽出を行うべき写像回数ＲＮに達したかを検出し（Ｓ１３）、ＲＮに達していなければステップＳ１２に戻って処理を続ける。
【００６０】
一方、ステップＳ１３において演算回数ｉがＲＮに達していることが検出されると、乱数出力回路２３において写像演算回路２１により演算された結果から乱数値を抽出し、乱数抽出回数ｊを１インクリメントする（Ｓ１４）。次に、乱数抽出回数ｊがロジスティック写像結果に変動を生じさせるべき乱数抽出回数ＡＮに達したかを検出する（Ｓ１５）。ここで、ＡＮに達していなければ、ステップＳ１２に戻って処理を続ける。
【００６１】
また、ステップＳ１５において乱数抽出回数ｊがＡＮに達した場合には、変動データ生成部１０によって生成された変動用データである誤差ビットにより、ロジスティック写像結果に変動を生じさせて新たな写像結果Ｘｉ［ｋ］を求め、次にステップＳ１２において用いられるように処理する（Ｓ１６）。なお、ｋは、変動用データである誤差ビットを挿入する写像結果Ｘi中の下位ビット桁を示すものである。
【００６２】
本実施形態に係るロジスティック写像演算部２０は、更に詳細には、図８に示すフローチャートに示すように減算部（Ｓ２１）、乗算部（Ｓ２２）、シフト演算部（Ｓ２３）、処理部（Ｓ２４）による動作により、（７）式のロジスティック写像を実行する。まず、初期値供給源である初期値レジスタ２２から初期値Ｘ0［Ｎ］を取り出し（Ｓ２０）、これを用いてロジスティック写像演算を行う。なお、図８において、Ｎは演算精度を示し、Ｘi［Ｎ］は写像のビット配列を示し、ＭＩＮＵＳ［Ｎ］は引き算結果のビット配列を示し、ＭＵＬＴＩ［Ｎ］は掛け算結果のビット配列を示す。
【００６３】
減算部（Ｓ２１）では、被乗数を得る演算として２Nから乗数Ｘｉを引算する次に、乗算部（Ｓ２２）では、上記引算の結果（２N−Ｘｉ）に乗数であるＸｉを掛けて２Ｎビット分の解を得る。更に、シフト演算部（Ｓ２３）においては、上記乗算の結果を２ビット左シフトして、上記（７）式の４倍に相当する演算を行う。そして、処理部（Ｓ２４）においては、２Nによる割り算に相当する下位Ｎビット分を削除（棄却）してＮビット分の写像結果Ｘｉを得る。以下繰り返しステップＳ２１からステップＳ２４を実行して、設定された有限精度の計算を行う。
【００６４】
以上が本実施形態に係るロジスティック写像演算部２０の写像演算回路２１による処理である。これによって１回の写像演算でＮビット分を格納するレジスタ配列Ｘｉ［Ｎ］が得られるが、本実施形態の乱数生成装置では、データ変動手段が、レジスタ配列Ｘｉ［Ｎ］の所定位置の所定ビットを、ビット抽出・Ａ／Ｄ変換回路１２により抽出された不確定ビット（本実施形態では、１ビット）により置換して予測不可能性を助長させることができる。
【００６５】
上記の写像演算回路２１による処理を実現させるために、ロジスティック写像演算部２０における写像演算回路２１の詳細構成を図９に示すようにすることができる。ロジスティック写像演算部２０では、制御回路３０がクロック信号を外部から取り込み、このクロックに基づき生成したパルスPulse1〜パルスPulse3を所要部に与えることにより制御を行う構成となっている。
【００６６】
図１０に、制御回路３０の具体的な構成図を示す。この図１０に明らかなように、制御回路３０は、カスケード接続された３つのＤフリップフロップ回路３１〜３３と、インバータ３４、アンド回路３５、３６、ＥＸ−ＯＲ（排他的論理和）回路３７、３８とにより構成されている。Ｄフリップフロップ回路３１〜３３は、クロック端子に入力される信号のHighエッジをトリガとして、Ｄ入力端子の信号を取り込み、上記クロック端子に次のHighエッジが入力されるまで、上記Ｄ入力端子から取り込んだ信号を保持してＱ出力端子から出力を継続する。上記３つのＤフリップフロップ回路３１〜３３により８進カウンタが構成されている。
【００６７】
アンド回路３５は、Ｄフリップフロップ回路３１のクロック端子に入力されるクロック信号CLK及びＤフリップフロップ回路３１〜３３のＤ端子の出力信号（CNT2,CNT4,CNT8）を入力として論理積演算を行い、アンド回路３６は、Ｄフリップフロップ回路３１のクロック端子に入力されるクロック信号CLK、Ｄフリップフロップ回路３２、３３のＤ端子の出力信号（CNT4,CNT8）を直接に入力し、また、Ｄフリップフロップ回路３１のＤ端子の出力信号（CNT2）をインバータ３４を介して入力し、これらの信号の論理積演算を行う。アンド回路３５の出力信号がパルスPulse1とされ、アンド回路３６の出力信号がパルスPulse2とされる。
【００６８】
ＥＸ−ＯＲ回路３７は、Ｄフリップフロップ回路３１のクロック端子に入力される信号とアンド回路３５の出力信号を入力として排他的論理和演算を行う。ＥＸ−ＯＲ回路３８は、上記ＥＸ−ＯＲ回路３７の出力信号とアンド回路３６の出力信号との排他的論理和演算を行う。ＥＸ−ＯＲ回路３８の出力信号は、パルスPulse3とされる。
【００６９】
図１１に、制御回路３０を回路シミュレーションした具体的な波形図を示す。前述の通り、パルスPulse1は、クロック信号CLK及びＤ端子の出力信号（CNT2,CNT4,CNT8）とにより論理演算された１個のパルスであり、パルスPulse2は、クロック信号CLK とＤ端子の出力信号（CNT4,CNT8）とＤ端子の出力信号（CNT2）の反転信号とにより論理演算された１個のパルスである。また。パルスPulse3は、パルスPulse2とクロック信号CLK との排他的論理和演算の結果を用いて、この結果とパルスPulse2との論理和演算を行った結果であり、演算精度N=6[bit]に相当する６個のパルスである。この例では、N=6[bit]であるため、１回の写像ではパルスPulse1とパルスPulse2が１パルス用いられ、パルスPulse3は演算精度N[bit]に対応して６パルス用いられ、合計で８パルス（クロック）が用いられることになる。すなわち、１回の写像計算に必要なクロック数はN+2 個となる。
【００７０】
上記パルスPulse1、Pulse2、Pulse3の役割は以下の通りである。パルスPulse1においては、その初回のパルスによって初期値レジスタ２２にセットされている初期値Ｘ0の読み出しが行われ、２回目以降のパルスによって乗数レジスタ２２１に対し１回毎の写像の結果であるＸiのセットが行われる。また、パルスPulse1によって乱数出力回路２３からの乱数値の出力が行われる。また、パルスPulse2においては、そのパルスによってロジスティック写像の引算（２N−Ｘｉ）が行われる。
【００７１】
更に、パルスPulse3においては、そのパルスは演算精度N[bit]分のＮ個により構成され、そのパルスによってロジスティック写像の掛け算Ｘｉ（２N−Ｘｉ）が行われる。パルス個数は複数あり、演算精度N[bit]分のN 個分になる。以上のパルスPulse1、Pulse2、Pulse3を１回の写像においてその順に用い、ユーザによって決められる所要回数の写像を繰り返すことで（７）式のロジスティック写像の計算を順次行うことができる。
【００７２】
図９に示すロジスティック写像演算部２０には、写像演算回路２１、初期値レジスタ２２及び乱数出力回路２３が備えられている。初期値レジスタ２２は、初期値Ｘ0がセットされており、この初期値Ｘ0が写像演算回路２１に供給される。また、写像演算回路２１からは、乱数出力回路２３により乱数値が出力される。本実施形態では、乱数出力回路２３としてアンド回路が用いられ、制御回路３０から出力されるパルスPulse1により出力制御が行われる。
【００７３】
写像演算回路２１を、乗数Ｘｉと、２Nから前記乗数Ｘｉを引算した結果である被乗数（２N−Ｘｉ）との掛け算結果に、定数ａを掛ける式により定義されるロジスティック方程式を用いてロジスティック写像を行う写像演算回路とすることができる。本実施形態では、写像が周期性を持たないカオス領域となるように、定数ａ＝４とする。写像演算回路２１は、減算部、乗算部、シフト演算部、処理部を備える構成とすることができる。
【００７４】
減算部は、上記被乗数を得る演算として２Nから乗数Ｘｉを引算するものである。乗算部は、上記減算部により得られた被乗数と乗数とを乗算するものである。シフト演算部は、乗算部により得られた結果について、定数ａに対応するシフト演算を行うものである。更に処理部は、上記シフト演算部により得られた結果から下位Ｎビットを棄却して次の乗数として上記減算部へ送出するものである。
【００７５】
写像演算回路２１は、乗数を置数する乗数レジスタ２２１と、被乗数を置数する被乗数レジスタ２２２と、加算器２２３と、１を供給する１供給源２２４とを有する。また、上記減算部を構成すべく、写像演算回路２１は、インバータ２２５と、第１の経路と、第２の経路を備えている。
【００７６】
インバータ２２５は、乗数レジスタ２２１に置数された乗数を反転して補数を得るものである。第１の経路は、上記インバータ２２５の出力と上記１供給源２２４より１を夫々上記加算器２２３へ導く経路であり、セレクタ２５２とセレクタ２５３を含むものである。第２の経路は、上記加算器２２３へ導かれた上記インバータ２２５の出力と上記１供給源２２４からの１が加算された結果を、上記被乗数レジスタ２２２へ導く経路であり、アンド回路２６３を含む。
【００７７】
写像演算回路２１は、更に、シフトレジスタ２２６、アンド回路２６２、第２の処理部、第３の処理部を備える。第２の処理部は、上記乗数レジスタ２２１に置数された乗数の下位ビットから順に１ビット取り出して、この１ビットと上記被乗数レジスタ２２２に置数された被乗数との論理積をアンド回路２６２により求めて、結果を上記加算器２２３に出力するものである。
【００７８】
第３の処理部は、上記加算器２２３を用いて、初期データ或いは前回の加算器２２３の出力を上記シフトレジスタ２２６によりシフトしたデータと上記第２の処理部の出力との加算を行い、アンド回路２６４を介して上記シフトレジスタ２２６へ出力するものである。
【００７９】
上記第２の処理部及び上記第３の処理部による処理は、上記乗数レジスタ２２１に置数された乗数のビットすべてについて処理が行われるまで、繰り返し実行される。上記第２の処理部及び上記第３の処理部による処理の詳細は、後述する。
【００８０】
更に写像演算回路２１には、初期値Ｘ0を選択するかシフトレジスタ２２６の出力を選択するか制御するために、セレクタ２５１が備えられている。このセレクタ２５１は、１ビットシフトレジスタ２７１の直接の出力またはインバータ２７２を介した出力により制御される。１ビットシフトレジスタ２７１の、Ｄ端子にはソース電圧ＶＤＤが与えられ、クリア端子ＣＬＲにはソース電圧ＶＳＳが与えられ、クロック端子ＣＬＫにはオア回路２７３を介してパルスPulse1とパルスPulse2が与えられる。
【００８１】
更に、乗数レジスタ２２１のＤＷ端子にはパルスPulse1が与えられ、クロック端子ＣＬＫにはオア回路２７４を介してパルスPulse1とパルスPulse3が与えられる。
【００８２】
上記の写像演算回路２１に備えられているセレクタ２５１、２５２、２５３は同一の構成とされ、図１２に示すような回路図である。本実施形態ではＮ＝６ビットであるから、６ブロックの論理回路ブロック２５０を備える。各論理回路ブロック２５０には、Ａ端子からの入力データをＳＡ端子への制御信号によって通過制御するアンド回路と、Ｂ端子からの入力データをＳＢ端子への制御信号によって通過制御するアンド回路と上記２つのアンド回路の出力信号を受けて論理和演算結果をＳ端子から出力するオア回路とが備えられている。従って、ＳＡ端子とＳＢ端子のいずれかにＨレベルが与えられた側の入力端子Ａ、Ｂのいずれかが選択されてＮビットが出力される。
【００８３】
また、上記の写像演算回路２１に備えられている乗数レジスタ２２１は、図１３に示すような並列入力直列出力シフトレジスタの回路図の構成を有している。乗数レジスタ２２１は、入力データを保持する６個のＤフリップフロップ１３０と、右１ビットシフトした結果を保持するためにＤフリップフロップ１３０の最下位側に接続された１つのＤフリップフロップ１３０Ａと、６個のＤフリップフロップ１３０のＤ端子へのデータ書き込みを制御する６個の論理回路ブロック１４０とを備えている。
【００８４】
論理回路ブロック１４０は、パルスPulse1がＨレベルのときにＰＤ端子の入力をＤフリップフロップ１３０のＤ端子へ通過させてクロックにより取り込みを行わせ、パルスPulse1がＬレベルのときにクロック端子ＣＬＫに到来するパルスPulse3によるシフトが行われるように制御を行う回路である。なお、本実施形態では、アンド回路２６１の出力端子は、入力端子ＰＤ１〜ＰＤ６のいずれかに接続され、この入力端子（ＰＤ１〜ＰＤ６のいずれか）には、セレクタ２５１の出力は与えられない。
【００８５】
更に、上記の写像演算回路２１に備えられている被乗数レジスタ２２２は、図１４に示すように構成される。被乗数レジスタ２２２は、クロック端子ＣＬＫに共通のクロックとしてパルスPulse2を入力する並列に設けられた６個のＤフリップフロップ１５０により構成される。
【００８６】
また、上記の写像演算回路２１に備えられている加算器２２３は、図１５に示されるように構成される。この加算器２２３は、最下位にハーフアダー１６０を設け、このハーフアダー１６０に対し、５個の縦続接続したフルアダー１７０を接続した構成とされている。
【００８７】
また、上記の写像演算回路２１に備えられているシフトレジスタ２２６は、図１６に示すような並列入力並列出力シフトレジスタの回路図の構成を有している。つまり、シフトレジスタ２２６は、図１６に示すようにＮ＋１個の１ビットシフトレジスタ１８０により構成され、このＮ＋１個の１ビットシフトレジスタ１８０のＤ端子に入力されたデータを１ビットシフトしてＳＦＴ端子から出力する。
【００８８】
各１ビットシフトレジスタ１８０は、図１７に示すように２個の縦続接続されたＤフリップフロップ１９０により構成される。クロック端子ＣＬＫに入力される一つ目のクロック（パルスPulse3）によって初段のＤフリップフロップ１９０にＤ端子からデータが取り込まれて保持され、ＬＴＣ（Ｑ）端子の出力となる。クロック端子ＣＬＫに入力される一つ目のクロック（パルスPulse3）によって上記初段のＤフリップフロップ１９０のＬＴＣ（Ｑ）端子における出力が第２段のＤフリップフロップ１９０にＤ端子からデータが取り込まれて保持されることにより、右シフトが実行される。なお、図９における１ビットシフトレジスタ２７１の構成も、図１７に示されている回路に等しく、同様に動作するものである。
【００８９】
以上のように構成された写像演算回路２１は、以下の通りに動作する。パルスPulse1の出力により演算スタートとなり、予め初期値Ｘ0が格納された初期値レジスタ２２から、セレクタ２５１を介して、パルスPulse1の信号が乗数レジスタ２２１のＤＷ端子と、オア回路２７４を介してクロック端子ＣＬＫに入力される。これにより、予め初期値Ｘ0が格納された初期値レジスタ２２からセレクタ２５１を介して、乗数レジスタ２２１にセットされる。
【００９０】
乗数レジスタ２２１では、ＤＷ端子がＨレベルの間、端子ＰＤ＜１：６＞に到来するデータをクロック端子ＣＬＫに与えられる信号がＨレベルのタイミングにて、内部のＤフリップフロップ１３０に取り込む。つまり、パルスPulse1がＨレベルのときに端子ＰＤ＜１：６＞にデータが転送される。
【００９１】
セレクタ２５１は演算スタート時のみ、初期値Ｘ0を読み出すように入力の選択を実行する。図１７に示した通りに構成されている１ビットシフトレジスタ２７１は初期段階では出力端子ＳＦＴがＬレベルとなっており、インバータ２７２を介してセレクタ２５１のＳＡ端子にＨレベルが与えられるため、入力端子Ａから到来する初期値Ｘ0を選択する。パルスPulse1とパルスPulse2により構成される最初の２つ分のパルスがオア回路２７３に入力されることによって、１ビットシフトレジスタ２７１のＤ端子に接続されたソース電圧ＶＤＤのＨレベルのデータが取り込まれて出力端子ＳＦＴに永続的にＨレベルの信号が出力されるため、インバータ２７２を介してセレクタ２５１のＳＡ端子にはＬレベルが与えられるようになり、２回目以降の写像Ｘ1から、セレクタ２５１のＳＢ端子にはＨレベルが与えられるようになり、毎回の写像Ｘiを乗数レジスタ２２１へ転送することになる。
【００９２】
なお、本実施形態では、初期値Ｘ0を初期値レジスタ２２から取り込んでいるが、初期値Ｘ0としてはアナログカオス信号のＡ／Ｄ変換値をレジスタに取り込んで用いるように構成しても良い。また、予め選択した初期値Ｘ0を用いる場合は、固定値としてソース電圧（ＶＤＤ／ＶＳＳ）をセレクタ２５１に結線しておいても良い。この構成を採用する場合には、初期値レジスタ２２は不要となり、その分回路面積を抑制して装置の構成を小型化することができる。
【００９３】
次に、パルスPulse2のパルスによって、引き算（２N −Ｘ0 ）が実行される。本実施形態においては、引き算は１の補数に１を加える方法で行われる。上記パルスPulse2がＨレベルの状態において、セレクタ２５２ではＢ入力端子を選択している。このとき、乗数レジスタ２２１の端子ＰＯ＜１：６＞の出力データがインバータ２２５により反転されて１の補数とする処理が実行される。
【００９４】
一方、セレクタ２５３ではパルスPulse2がＨレベルの状態において、ソース電圧（ＶＤＤ／ＶＳＳ）に結線された固定値１(00 …001)2 が選択されている。この結果、上記セレクタ２５２により選択された反転データ（１の補数）と１の足し算用の固定値(00..001)2が加算器２２３に揃った状態となり、加算器２２３において引き算（２N −Ｘ0 ）が実行される。計算結果（２N −Ｘ0 ）はパルスPulse2により通過可能状態のアンド回路２６３を介して、被乗数レジスタ２２２へ到り、被乗数レジスタ２２２のクロック端子ＣＬＫにパルスPulse2によるＨレベルが与えられるタイミングで同期して被乗数レジスタ２２２に格納される。
【００９５】
次に、パルスPulse3による乗算Ｘ0 （２N −Ｘ0 ）が実行される。この乗算は、加算器２２３とシフトレジスタ２２６を用いることによって行われる。ここで加算器２２３は上記の引き算に用いたものであるが、この加算器２２３を乗算にも用いることにより回路部品点数を削減し装置全体の小型化低コスト化を実現する。
【００９６】
セレクタ２５２とセレクタ２５３ではパルスPulse3により、Ａ入力端子からのデータが選択される。演算結果としての積であるＸi （２N −Ｘi ）を格納するレジスタとなるシフトレジスタ２２６は、直前のパルスPulse2によりゼロクリアされる。乗数レジスタ２２１には乗数Ｘi が、被乗数レジスタ２２２には被乗数（２N −Ｘ0 ）が格納された状態でパルスPulse3が与えられると、乗数レジスタ２２１の乗数Ｘi の最下位ビットから順にアンド回路２６２において乗算が実行される。乗数レジスタ２２１から送られる乗数Ｘi のビットが０であれば、アンド回路２６２により０が加算器２２３のＡ入力端子に送出され、乗数レジスタ２２１から送られる乗数Ｘi のビットが１であればアンド回路２６２により被乗数レジスタ２２２の内容が加算器２２３のＡ入力端子に送出される。加算器２２３では、上記のＡ入力端子のデータと、シフトレジスタ２２６の上位ビット群のデータ（Ｂ入力端子）のデータとの加算が行われ、その加算結果がシフトレジスタ２２６に再帰的に格納される。
【００９７】
順を追って説明する。初めにパルスPulse3による１つ目のパルスがオア回路２７４を経て乗数レジスタ２２１のクロック端子ＣＬＫに入力され、乗数レジスタ２２１に格納されているデータが１ビット右側にシフトされ、乗数Ｘi の下位１ビット目がアンド回路２６２に入力され、それに基づき、加算器２２３のＡ入力端子には被乗数（２N −Ｘi ）が入力される。
【００９８】
加算器２２３のＢ入力端子にはシフトレジスタ２２６から初期の０データ（シフトレジスタ２２６内の１ビットシフトレジスタ１８０のＳＦＴ端子のデータ）が入力され、パルスPulse3に同期して、同時に加算結果がシフトレジスタ２２６（シフトレジスタ２２６内の１ビットシフトレジスタ１８０のＬＴＣ端子）に格納される。
【００９９】
次に、パルスPulse3による２つ目のパルスがオア回路２７４を経て乗数レジスタ２２１のクロック端子ＣＬＫに入力され、乗数レジスタ２２１に格納されている乗数Ｘi の内容が１ビット右シフトされる。これにより、乗数レジスタ２２１からは乗数の下位２ビット目がアンド回路２６２に入力されることになる。同時に、パルスPulse3の２つ目のパルスによって、シフトレジスタ２２６に格納されているデータが右に１ビットシフトされる。つまり、シフトレジスタ２２６内の１ビットシフトレジスタ１８０におけるＬＴＣ端子のデータがＳＦＴ端子へ転送される。
【０１００】
１ビット右シフトされたデータは、加算器２２３に転送されて、加算が行われる。この演算は、直前の計算結果を筆算で１ビット左シフトして加算を行う処理と同等になる。途中の計算結果は、パルスPulse3によりデータの通過が可能状態にあるアンド回路２６４を経て、シフトレジスタ２２６へ送られる。また、シフトレジスタ２２６からは計算結果を右に１ビットシフトしたデータが、パルスPulse3によりデータの通過が可能状態にあるセレクタ２５３を介して加算器２２３へパルスPulse3のパルス毎に順次送られる。このシフトレジスタ２２６においては、本実施形態はＮ＝６［ｂｉｔ］であるから、次の加算のために加算器２２３へ与える信号は、図１６に示した７個の１ビットシフトレジスタ１８０において、上位ビット群のＳＦＴ端子からの出力信号“SC”、“S6”、“S5”、“S4”、“S3”、“S2”（SCは、桁あふれ[キャリーアウト] ）となる。
【０１０１】
最後に、ロジスティック写像の演算としては、乗算結果に対して４倍する計算“４Ｘi （２N −Ｘi ）”と割り算“４Ｘi （２N −Ｘi ）／２N ”が残っている。まず４倍の演算は、乗算結果を左に２ビットシフトすることで実現できる。割り算は、上記の左２ビットシフトした後に、右にＮビットシフト（２N ビットから下位Ｎビットを棄却）を行うことで実現できる。しかし、このシフト処理は、“Ｘi （２N −Ｘi ）／２N-2”を行うのと等価である。このため、計算結果に対して、右にN-2 ビットシフト（下位“N-2 ”ビット分は棄却）して、残ったN+2 ビット分のうち下位側Ｎビット分を次の写像Ｘi として転送すればよい。
【０１０２】
そこで、シフトレジスタ２２６では、計算結果Ｎビットの下位側にプラス２ビット分をストックしておけば良い。本実施形態はＮ＝６［ｂｉｔ］であるから、図１６に示した７個の１ビットシフトレジスタ１８０において、そのＬＴＣ端子からの出力信号“L5”、“L4”、“L3”、“L2”、“L1”、“S1”を次の写像Ｘiに用いるデータとして、パルスPulse1に同期して乗数レジスタ２２１のＰＤ端子ピンへ転送する（L1,S1 が下位側２ビット分のストックである）。このために、図１６に示すように、シフトレジスタ２２６はＮ＋１個の１ビットシフトレジスタ１８０を必要最小限の数として用意すればよい。
【０１０３】
図１８に、初期値Ｘ0を２５（011001）としてロジスティック写像を行った場合のシミュレーション結果の波形を示す。このとき、上記初期値から被乗数２N−Ｘ0が引き算により３９（100111）として求められている。パルスPulse3による掛け算は、図１９に示すように行われる。これを説明する。まず、パルスPulse3の１番目のパルスによって、（000000）と（100111）との加算によって、（100111）が得られている。
【０１０４】
パルスPulse3の２番目のパルスによっては、次の処理が行われる。１番目のパルスによる演算結果（100111）を１ビット右シフトした結果（010011）と、次のアンド回路２６２の出力（000000）の加算が行われる。
【０１０５】
パルスPulse3の３番目のパルスによっては、次の処理が行われる。２番目のパルスによる演算結果（010011）を１ビット右シフトした結果（001001）と、次のアンド回路２６２の出力（000000）の加算が行われる。パルスPulse3の４番目のパルスによっては、次の処理が行われる。３番目のパルスによる演算結果（001001）を１ビット右シフトした結果（000100）と、次のアンド回路２６２の出力（100111）の加算が行われる。以下、同様にして処理が行われる。そして、１回目の写像では最終的に加算結果について４ビット分の右シフトを行って下位６ビット（111100）＝６０が次の写像の乗数として乗数レジスタ２２１へ送られる。
【０１０６】
そして図１８に示すように、第１回目の写像では（111100）＝６０が、第２回目の写像では（001111）＝１５が、第３回目の写像では（101101）＝４５がそれぞれ得られ、乱数としては、図１８の例では上位３ビット目から５ビット目までの３ビットが、それぞれ（110）、（111）、（110）と得られる。
【０１０７】
図９に示した実施形態の回路では、乱数抽出とアナログカオスからの不規則なビットの書き込みタイミングを、アンド回路２６１を介してパルスPulse1に同期させて、写像の度に行っている。しかしながら、乱数出力回路２３において行っている乱数抽出については、パルスPulse1をカウントして、所定回数の写像が行われたときに行うようにしても良く、また、アナログカオス信号から得る不規則なビットの書き込みについても、所定回数の乱数取得を行ったタイミングで行うようにしてもよい。
【０１０８】
また、実施形態の乱数生成装置では、アナログカオスのＡ／Ｄ変換を行って１ビット抽出するビット抽出・Ａ／Ｄ変換回路１２を用いている。このビット抽出・Ａ／Ｄ変換回路１２では、写像Ｘi を強制的に変更する不規則信号のデータ量はわずか１ビットである。係るビット抽出・Ａ／Ｄ変換回路１２を用い、ロジスティック写像の信号に変更を与えるタイミングを写像回数が所定回数毎として、変更の間隔を大きくしても、乱数性能の向上に効果があることは、後述の実施例２により明かになった。このため、ロジスティック写像演算部２０に与えるクロック周波数は可能な限り速くすることで、乱数生成速度を上げることができ、アナログカオスからのビット情報が少量でも、乱数性能を向上できることが期待できる。
【０１０９】
また、実施形態に示すように回路構成も簡単なため、回路内の結線も比較的容易に変更が可能である。例えば演算精度を６ビットから５ビットに変更する（同時に、パルスPulse3のパルス数を６個から５個に変更する）ことで、乱数パターンを増加させることが可能であるため、より少ない演算精度で乱数性を向上させる効果が期待できる。これらをシミュレーションによる設計段階において、予め乱数性能や回路面積、乱数生成速度に対して最適なチューニングを行った後、実装を行うようにすれば、実装コストを抑える効果が期待できる。
【０１１０】
（１）実施例１
図７に示したロジスティック写像演算部２０の動作を示すフローチャートによる処理によって、ロジスティック写像演算のみを用いて乱数抽出を行い、ＮＩＳＴ乱数検定を行った。
演算精度Ｎ＝６４とＮ＝５６ビット長の２種類を用意し、乱数の抽出方法は算出したロジスティック写像Ｘiを図２０に示すように、配列における下位５ビットから１２ビットまでの８ビットと、下位２１ビットから２８ビットまでの８ビットとを取り出し、各８ビットずつを排他的論理和して得た結果の８ビット分を乱数値として出力した。
【０１１１】
写像の初期値は0.125 （0.0010000 …）2 の固定値を用意し、写像の計算を３回行う毎に、８ビット分の乱数を抽出した。
得た乱数に対してＮＩＳＴ乱数検定を実施し評価した。ここでＮＩＳＴ乱数検定の概要について説明する。
【０１１２】
＜ＮＩＳＴ乱数検定＞
現在最も広く使われている乱数検定法の１つで、米国国立標準技術研究所（NIST：National Institute of Standard and Technology）が公開し、１５の検定方式で構成される。
検定データは、１系列を1,000,000[bit]とし，それを1,000 系列分用意、計1,000,000,000[bit]で検定することを推奨している。
系列ごとにp-value を算出し、計1,000 個のp-value に対して、UNIFORMITY（一様性）とPROPORTION（棄却率１％での３σ範囲にあるかどうか）の視点から乱数性を評価している。
上記方法にて乱数値を計1,000,000,000[bit]分取得し、ＮＩＳＴ乱数検定ツールにより検定を実施した。各演算精度での結果は以下の表１のようになった。
【０１１３】
【表１】
2016081274.tif 000007
【０１１４】
実施例１の結果は、表１のように計算精度を５６ビットとした場合、PROPORTIONでは合計１０個のエラーがあり、UNIFORMITYは合計８つのエラーが生じたが、計算精度を64ビットとした場合ではPROPORTION、UNIFORMITYともに全て合格した。
以上から上記方法のロジスティック写像の演算のみで乱数値を取得し、NIST乱数検定を行うと６４ビットの演算精度幅程度でNIST乱数検定に合格することがわかる。
【０１１５】
（２）実施例２
次に本実施形態の不確定要素としてアナログカオス信号のディジタル値抽出を行い、そのビット値をロジスティック写像演算回路に繰り込む手法にて乱数を取得し、NIST乱数検定を実施した。
【０１１６】
乱数を取得する方法は図７に示したフローチャートに対応する処理にて行い、実施例１と同じく図２０のように算出したロジスティック写像Ｘi を配列における下位５ビットから１２ビットまでの８ビットと下位２１ビットから２８ビットまでの８ビットを取り出し、各８ビットずつを排他的論理和による演算を実行して、得られた結果の８ビット分を乱数値として出力した。乱数抽出のタイミングは３回分の写像を行う毎に、８ビット分の乱数を取り出し、１００回分の乱数値を取得する毎に不確定なビットとして、アナログカオス信号よりＡ／Ｄ変換して抽出した１ビットを写像Ｘi のレジスタ配列における下位２ビット目に強制的に組み込むようにした。
【０１１７】
なお理論シミュレーションとして使用した（５）式に該当するアナログカオス信号のパラメータ帯は、以下の表２に示すようになる。
【０１１８】
【表２】
2016081274.tif 000008
【０１１９】
この実施例２では、カオス信号の電圧値は０．５［Ｖ］昇圧させ、Ａ／Ｄ変換回路に入力されるものとし、電圧値の分解能は３２とした。
ここで上記パラメータ条件にて外部入力信号の１周期あたりのＶを時間で微分した横軸ｄＶ／ｄｔと、縦軸Ｖをプロット（ポアンカレプロット）したグラフを図２１に示す。カオスの特徴であるストレンジアトラクタが観察できる。
【０１２０】
アナログカオス信号ディジタル変換後のビット抽出のタイミングは、アナログカオス生成回路における外部周期入力電圧の１周期毎に取得した。ロジスティック写像演算精度は実施例１と同じくＮ＝５６とＮ＝６４ビット長の２種類を用意し、乱数値を計1,000,000,000[bit]分取得し、NIST乱数検定ツールにより検定を実施した。各精度での結果は以下の表３に示すようになった。
【０１２１】
【表３】
2016081274.tif 000009
【０１２２】
実施した結果は、表３のように計算精度を５６ビットと６４ビットの両方が、PROPORTION、UNIFORMITYともに全て合格した。
実施例１では５６ビットの演算精度での乱数検定は複数エラーが生じたが、１ビットの誤差を予測不可能なアナログカオス信号よりディジタル抽出して繰り込んだことにより、写像の系が変更されたことで乱数性能が向上したと推測される。このことから、僅かなビット量でも不確定な要素を組み込むことにより、演算精度を低くしても非再現性を持った良質な乱数性能を得ることができる。
【０１２３】
本実施例では、強制的に変更するビットの位置が下位２ビット目に限られているが、同じ位置だけだと写像のパターンが限定されてくる。このため、変更するビットの位置を変動させパターンを増やすことで、乱数性能をより向上させることが期待できる。
【０１２４】
また、アナログカオスより抽出された予測不可能なビットを繰り込むタイミングを短めに取るか、１ビットだけでなく、もっと多くのビットを取り込み、写像Ｘi を強制変更することで、演算精度の制約によって不可能であった写像Ｘi の値にも行き渡るようになると思料される。このことからロジスティック写像演算回路の演算精度（回路規模）を更に減少させても、良質な乱数性能が得られるという傾向が推測される。
【０１２５】
以上のように本発明の実施形態は、ロジスティック写像による擬似乱数生成時の所定ループにおいて予測不可能なビット値を繰り込むことによって乱数性能が向上し、かつ乱数生成速度が高速になるといった効果を得ることができる。これは、一般的に真性乱数の生成速度は遅いといった問題を有していることと対比して極めて有利である。また、セキュリティの乱数種の用途として比較的短い乱数列を生成する場合に好適である。つまり、本発明の実施形態は、ロジスティック写像の演算回路に対し、アナログカオス回路から予測不可能なビットを短周期で組み込むようにすることによって、セキュリティ用途の乱数を提供することが可能である特徴を有する。
【０１２６】
実施例に示したように、本発明に係る実施形態に用いられるカオス発生回路は、ＬＲＣ等価回路が数式化される。数式に対してコンピュータシミュレーション行うことで、設計段階で乱数性能を見積るチューニングが可能であり、所望の乱数性能を有する乱数生成装置の開発コストの削減効果を期待することができる。
【０１２７】
本発明に係る実施形態は、主要な構成として擬似乱数生成法を用いている。そして、本発明に係る実施形態は、擬似乱数生成時の所定ループ毎に予測不可能なアナログカオスの出力を利用し、擬似乱数生成法の内部状態に変更を加える。これにより本発明に係る実施形態は、全体として、生成規則の掴めない（再現性の無い）乱数生成を可能としている。そして、本発明に係る実施形態は、主要な構成として擬似乱数生成法を採用しているため、一般的な擬似乱数生成と同等の処理速度でありながら、生成規則の掴めない（再現性の無い）乱数生成を可能としていることが特徴である。
【０１２８】
ここで、アナログカオスに内在されている特徴ないしは効果を挙げると次の通りである。
（１）生成する乱数の前後関係、規則が掴めない。
（２）生成乱数列は２度と再現できない。
（３）アナログ実装の利用により如何なる計算機シミュレーション手法を用いても忠実に再現（解析）はできない。
本発明に係る実施形態は、上記のアナログカオスの出力を利用していることから、その特徴ないしは効果をそのまま引き継いでいる。
【０１２９】
今日、情報セキュリティの重要性が叫ばれており、特に暗号技術では暗号鍵生成の種として乱数が使用されている。そこで、例えば、本発明に係る実施形態を暗号鍵発行サーバに実装した場合には、仮にサーバがハッキングを受けた場合でも、乱数生成アルゴリズム流出による暗号鍵生成系列が把握される心配は不要である。
【０１３０】
乱数列が必要とされる一般的ニーズにおいて、本発明に係る実施形態を用いることによって、特に、時間的に前後に生成された乱数の関連性は、原理的に把握されない（乱数列生成系列が掴めない）といった効果を与えることができる。
【０１３１】
近年、ＩＴ適応領域が拡大する中、流通するデータ量が飛躍的に増大している。係る環境において、各データに対して１２８ビット長のユニバーサルなユニークＩＤ（ＵＵＩＤ）を適用することでデータの識別管理を行うシーン、家電相互のチャレンジレスポンス認証を行うシーン、ユビキタス端末の保存データの安全な乱数書き込み及び消去などのニーズなど、が存在している。このようなシーンやニーズに対して、良質な乱数を生成可能で高速な乱数生成器を小規模に実装する場合には、本発明に係る実施形態は好適である。
【０１３２】
更に、カオス写像をディジタル演算で実装した場合、短周期の問題が根本的に存在するため、周期を伸ばす検討がいくつかの提案においてなされている。しかしながら、周期を伸ばすためには複雑な制御が必要になったり、周期を伸ばすための構成に要するメモリなどの実装面積の増大による装置の大型化やコスト高が招来したりという問題が新たに発生する。
【０１３３】
また、周期帯に入った場合に異常値として検出する機構を設けることで、短周期の問題を回避する策を講じるようにした例もあるが、その実現のための機構が必要となる。本発明に係る実施形態の乱数生成回路は、アナログカオス信号による真性乱数を取り込むという手法を用いることで、周期帯を検出する機構や装置は全く不要である。
【０１３４】
本発明に係る実施形態が用いているロジスティック写像は、カオスが有する初期鋭敏性（バタフライ効果）から、図２２及び次に示す図２２の説明から明らかな如く、「１ビットだけを変動するという」少ない制御によって極めて大きな効果を得ることができる。
【０１３５】
この図２２は、（７）式による整数演算化したロジスティック写像において、演算精度Ｎ＝１６ビット、初期値Ｘ0=26214に設定した場合の写像の時系列ＩＭ１と、ある時点で１ビットを書き換えたときの写像の時系列ＩＭ２を示すものである。写像の回数が１０回目の時に、Ｘ10 =18977(=(0100101000100001)2）からＸ10=18981(=(0100101000100101)2）へと、下位３ビット目を“０”から“１”へ強制的に変更したときの軌道を示している。系列に対して、僅か１ビットを強制的に変更したことによって、時間発展的に系が全く別個のものとなり、異なる振る舞いを持つ系列を得ることが可能であることが、有限演算精度においても確認できた。
【０１３６】
一般的に演算精度幅を大きく取るほど乱数性能は向上する。本発明に係る実施形態は、演算精度による丸め誤差により取り得なくなる写像Ｘi の値にまで行き渡るように、アナログカオスからの不規則な信号のビットを用いて写像の系列に変動を与える。これにより、本発明に係る実施形態を採用することで、演算精度幅（回路規模）を小さくでき、かつ良質な乱数性能を得ることができる。
【０１３７】
本発明に係る実施形態を採用するロジスティック写像の演算を行うディジタル回路は、外部入力がクロック信号のみで構成されているため、本発明に係る実施形態は、クロック信号の周波数を調整するたけで容易に乱数生成速度を変更できる利点がある。また、本発明に係る実施形態は、シンプルな回路構成のため、配線の結線を自律的に変更する機構を盛り込むことで、乱数系列の変動が比較的容易に行える。
【０１３８】
また、乱数生成ロジックとしてフィードバックシフトレジスタが知られており、これによれば、頻度と周期が理想的な乱数の系列を得ることができる。しかしながら、このフィードバックシフトレジスタによると、１度生成されたパターンは２度と生成されないという一方向的に生成パターンが限られている。これに対し、本発明に係る実施形態においては、系列を予測し難いという乱数性能面でのメリットを有するアナログカオスを採用するので、生成パターンが限られるという欠点がなく、様々な分野の乱数生成に好適である利点を有するものである。
【符号の説明】
【０１３９】
１０  変動データ生成部
１１  アナログカオス生成回路
１２  １ビット抽出・Ａ／Ｄ変換回路
２０  ロジスティック写像演算部
２１  写像演算回路
２２  初期値レジスタ
２３  乱数出力回路
３０  制御回路
２２１  乗数レジスタ
２２２  被乗数レジスタ
２２３  加算器
２２６  シフトレジスタ
２２４  １供給源
【図１】
2016081274.tif 000010
【図２】
2016081274.tif 000011
【図３】
2016081274.tif 000012
【図４】
2016081274.tif 000013
【図５】
2016081274.tif 000014
【図６】
2016081274.tif 000015
【図７】
2016081274.tif 000016
【図８】
2016081274.tif 000017
【図９】
2016081274.tif 000018
【図１０】
2016081274.tif 000019
【図１１】
2016081274.tif 000020
【図１２】
2016081274.tif 000021
【図１３】
2016081274.tif 000022
【図１４】
2016081274.tif 000023
【図１５】
2016081274.tif 000024
【図１６】
2016081274.tif 000025
【図１７】
2016081274.tif 000026
【図１８】
2016081274.tif 000027
【図１９】
2016081274.tif 000028
【図２０】
2016081274.tif 000029
【図２１】
2016081274.tif 000030
【図２２】
2016081274.tif 000031