従来より、カオス写像に基づく擬似乱数生成法や暗号化手法が数多く提案されている。この擬似乱数生成法や暗号化手法としては、カオスの特徴をどのように応用するかという着眼/発想の違いにより様々な実現手法が存在する。
上記のカオス写像に基づく擬似乱数生成法は、今日一般的に利用されている擬似乱数生成法や暗号化手法に比べ歴史が浅い。本発明の発明者らは、カオス写像を有限精度の計算機(デジタルコンピュータ)に実装する際に生じる課題を解決して、例えば、NIST (National Institute of Standards and Technology /米国標準技術研究所)が定める乱数検定法(A. Rukhin. and et al, “A Statistical Test Suite for Random and Pseudorandom Number Generators for Cryptographic Applications," NIST, Special Publication 800-22 Revision1A, April 2010.(文献1))に合格する等の「統計的評価」の側面において、良質な乱数を得ることを初期目標とした。
統計的側面において良好な評価結果を得られる擬似乱数生成方式としては、例えば文献特許文献1、特許文献2、特許文献3、特許文献4、特許文献5、特許文献6、特許文献6、特許文献7、特許文献8、非特許文献1、非特許文献2に記載のものを挙げることができる。また、構造がやや異なるが、同じくカオス写像の反復を利用する擬似乱数生成手法としては非特許文献3、4、5、6、7に記載のものを挙げることができる。
カオス写像に基づく擬似乱数生成に属する方式のうち最もシンプルな構成をもつ初歩的な方式(以下、初歩方式と称す)を図1に示す。この初歩方式では、初期化部S11においてシードsと所望のランダムビット列長nを入力し、初期値x0を上記シードsから求め、また、パラメータ値aを上記シードsから求め、カウンタ値iを0とする。次のカウントアップ部S12において、カウンタ値iを1インクリメントする。
更に、次の写像計算部S13において、パラメータ値aの写像faを用いて写像値xiを更新し(自らを自らに写像する/反復写像)、次のランダムビット抽出部S14において写像毎にxiの任意の所定箇所のビットを抽出して擬似ランダムビット列b={b1,b2,・・・,bn}を得る。
更に、終了判定部S15においてカウンタ値iがnとなったかを判定し、i<nであれば、カウントアップ部S12に戻って処理を続ける。一方、終了判定部S15においてカウンタ値iがnとなった場合には、エンドとなり処理を終了する。
次に、特許文献1〜8、非特許文献1、2に開示された方式における「擬似乱数生成部」に関する特徴を説明する。
初歩方式のランダムビット抽出部が写像値xiから特定のビットを1ビット抽出する構成を有するのに対し、文献2には、複数の閾値を設け写像値xiから複数のビット(ビット列)を得て、これらを最終的に結合(排他的論理和)する手法が示されている(特許文献1図9)。特許文献1においては、これにより乱数性の向上を図っている。
特許文献2には、複数のカオス写像(初歩方式や特許文献1に示される方式)の出力を結合(排他的論理和)する手法等が示されている(特許文献2図16)。特許文献2においては、これにより乱数性の向上を図ることができる。
特許文献3には、初歩方式の写像計算部に相応する部分において、高次数の数値が格納されるレジスタサイズを、低次数の数値が格納されるレジスタサイズよりも多く確保することが開示されている。例えば、ある数値xの二乗x2が格納されるメモリ空間を多く確保することが開示されている。更に、特許文献3においては、上記に対応した演算法が示されている(特許文献3図1)。特許文献3においては、これにより、有限精度のデジタルコンピュータなどの計算機にてカオス写像を実装する際の根本的な課題(例えば、桁丸めにより生じる隣接軌道の縮退が短周期化を招くという問題)を所定レベルで回避することができ、乱数の長周期化を図ることができる。
特許文献4には、初歩方式のランダムビット抽出部に相応する部分の出力に対して、更に、一方向性関数を作用させる手段が追加されものが開示されている(特許文献4図1)。これにより、特許文献4においては、乱数性の向上を図っている。
特許文献5、6、非特許文献1、2には、初歩方式に対して、内部状態を変動させる手段が追加されたものが開示されている。即ち、図2に示すように、図1に示した初歩方式のフローチャートにおいて、ランダムビット抽出部S14と終了判定部S15との間で内部状態変動部S21を実行する。この内部状態変動部S21では、一例として、パラメータ値aを元のパラメータ値aとシードsにより更新し、写像値xiを元の写像値xiとシードsにより更新する。これによって、前述同様の短周期性問題が解消されると共に、一般的に使用されるパラメータ値以外の値も利用することが可能(扱える状態空間が飛躍的に広がる)となる。更に、特許文献5、6、非特許文献1、2に記載のものによれば、良質な乱数を得ることができることが、「岩野隆, 金田学, 奥富秀俊, “一次元写像を用いた擬似乱数生成におけるパラメータ変動の効果について," 2007 年暗号と情報セキュリティシンポジウム(SCIS2007), 3E2-5, January 2007」(文献2)、「岩野隆, 金田学, 奥富秀俊, “一次元写像を用いた擬似乱数生成におけるパラメータ可変の効果について," 信学技報Vol.106, No.596, ISEC2006-123, pp.47-51, March 2007」(文献3)、「岩野隆, 金田学, 奥富秀俊, “テント型写像を用いた擬似乱数生成における内部状態変動の効果について," 2008 年暗号と情報セキュリティシンポジウム(SCIS2008), 2A2-4, January 2008」(文献4)に示されている。
上記の「一般的に使用されるパラメータ」とは、テント写像ではコントロールパラメータ2、ロジスティック写像ではコントロールパラメータ4、が利用されることを意味する。これ以外のパラメータを利用すると、写像値の分布に偏りが生じることが判っている。
特許文献7には、複数の写像値(その初期値)を用意してベクトルとし、また、複数の写像を用意して行列とし、ベクトル演算(行列演算)により写像を実施した後、写像後のベクトルに回転変換を施す手法を用いた擬似乱数生成手法が示されている(特許文献7図1)。この手法は、すなわち、複数の初歩方式を用意し、写像後に各写像値を入れ替えることに等しいものである。特許文献7においては、これにより乱数性の向上を図っている。
初歩方式のランダムビット抽出部が写像値xiから特定のビットを1ビット抽出するのに対し、特許文献8には、コントロールパラメータが4の場合のロジスティック写像を用いる場合に限定されるが、写像値xi(Nビットとする)の計算の中間段階、すなわち、xi=4xi−1(1−xi−1)の右辺に相当する部分が一時的に2Nビットになるため、その段階において上位と下位のNビットを排他的論理和演算し、効率的に乱数を得る手法が開示されている。
しかしながら、上記の初歩方式を限られた演算精度で実装する場合には、「S. Araki, T. Miyazaki, and S. Uehara, “Analysis for Pseudorandom Number Generators Using Logistic Map", Proc. of 2006 International Symposium on Information Theory and its Applications,2006.」(文献5))、「S. Araki, T. Miyazaki, S. Uehara and K. Kakizaki, “A Study on Precision of Pseudorandom Number Generators Using the Logistic Map," Proc. of 2012 International Symposium on Information Theory and its Applications, 2012, pp. 740-744, 2012.」(文献6)、「 荒木俊輔, 宮崎武, 上原聡, 硴崎賢一, “整数上のテント写像を用いた擬似乱数生成器に関する一考察," 2013 年暗号と情報セキュリティシンポジウム(SCIS2013), 2F3-4, January 2013.」(文献7)に示されている通り、統計的側面において十分に良質な擬似ランダムビット列を得ることができない。ロジスティック写像を用いた場合は、文献5、6に示されているように、少なくとも53ビット以上が必要であり、テント写像を用いた場合は少なくとも今日の計算機を遥かに超える演算精度が必要となる「奥富秀俊, 中村勝洋, “テント型写像から得られる擬似ランダムビット列の初期値推測法について," 電子情報通信学会論文誌VOL.J92-A, No.7, pp.487-497, July 2009.」(文献8)。
特許文献1〜8、非特許文献1〜7に示される従来手法に共通することは、カオス写像の反復計算によって得られる系列を利用することである。中でも、写像毎に写像値の最上位ビットを抽出して擬似ランダムビット列を構成する手法は、当該擬似ランダムビット列の生成に使われたシード情報の一部が推測可能であることが知られている「大熊健司, 櫻井幸一, “一次元写像に基づくカオス擬似乱数列の暗号論的安全性について," 1999 年暗号と情報セキュリティシンポジウム(SCIS'99), A-7-1, 1999.」(文献9)、「E.Alvarez, H.Montoya, M.Romera, G.pastor, “Gray codes and 1D quadratic maps," Electronics Letters 34(1998) 1304-1306.」(文献10)、「Cusick TW, “Gray codes and the symbolic dynamics of quadratic maps," Electronics Letters 35(1999) 468-469.」(文献11)、「E.Alvarez, H.Montoya, M.Romera, G.pastor, “Cryptanalysis of a chaotic encryption system," Physics Letters A276(2000) 191-196.」(文献12)、「E.Alvarez, H.Montoya, M.Romera, G.pastor, “Cryptanalysis of an ergodic haotic cypher," Physics Letters A311(2003) 172-179.」(文献13)、「Xiaogang Wu, Hanping Hu, Baoliang Zhag, “Parameter estimation only from the symbolic sequences generated by chaos system," Chaos, Solitons and Fractals 22(2004) 359-366.」(文献14)、「奥富秀俊, 岩野隆, 中村勝洋, “1次の非線形写像から得られた擬似ランダムビット列の初期値推測法について," 第30 回情報理論とその応用シンポジウム(SITA2007), 2.3, November 2007.」(文献15)、「奥富秀俊, 岩野隆, 中村勝洋, “テント型写像から得られるランダムビット列の初期値推測法について," 2008 年暗号と情報セキュリティシンポジウム(SCIS2008), 2A2-1, January 2008.」(文献16)、「奥富秀俊, 中村勝洋, “テント写像から得られた擬似ランダムビット列のパラメータ推測法に関する考察," 2010 年暗号と情報セキュリティシンポジウム(SCIS2010), 2D1-2, January 2010.」(文献17)。
また、初歩方式に関しては、上記文献8〜17に示されている攻撃法を用いて、擬似ランダムビット列b={b1,b2,・・・,bn}の生成に利用された初期値x0やパラメータ値aの一部また全部を総当たり攻撃するよりも効率的に得ることができる。
上記の攻撃とは、擬似乱数生成法から生成された擬似乱数列を既知情報としたときに、当該乱数列の生成に使われたシード情報を得ようとする行為をいい、また、攻撃法は、それを達成するための手段(ここでは数学的手段や計算アルゴリズム)をいう。
前述の従来手法は、統計的側面において良質な擬似乱数列を得ることを主たる目的としている。しかしながら、計算機シミュレーション分野でこれら従来手法を利用する限りにおいては問題ないが、情報セキュリティ分野での利用を検討するには、統計的に良質な乱数を提供するだけでなく、少なくとも既知攻撃法に対して対策を興じる必要が生じる。
以下、添付図面を参照して本発明の実施形態に係る擬似乱数生成装置及び擬似乱数生成プログラムを説明する。各図において、同一の構成要素には同一の符号を付して重複する説明を省略する。図3に、本発明の実施形態に係る擬似乱数生成装置の構成図を示す。この図3は、本発明の実施形態に係る擬似乱数生成プログラムによる動作のフローチャートでもある。
この擬似乱数生成装置は、前段写像計算手段201、後段写像計算手段203を備える。前段写像計算手段201は、パラメータ列と写像値とに基づき前段写像演算を行うものである。前段写像計算手段201は、カオス写像の計算を乗算、加算、左ビットシフト演算等の写像値の拡大に関する演算で構成される写像演算を行うものとすることができる。最初の前段写像演算に用いる初期のパラメータ列と初期の写像値は、前段写像計算手段201が保持している構成もあり得るが、本実施形態では、後に説明する前処理部101が生成する。
後段写像計算手段203は、上記前段写像計算手段201による計算結果に基づき前段写像演算と異なる写像演算を行い、演算結果を前記前段写像計算手段201へ戻すものである。後段写像計算手段203は、除算(除算の商を得る演算)、剰余算(除算の剰余を得る演算)、右ビットシフト演算等の写像値の縮小に関する演算で構成される写像演算を行うものとすることができる。
この擬似乱数生成装置は、上記前段写像計算手段201と上記後段写像計算手段203とのループによる写像演算を所定回繰り返す構成を採用する。本擬似乱数生成装置は、上記前段写像計算手段201から得られる計算結果に基づき出力ランダムビット列802により構成される擬似乱数を生成するものとすることができる。
更に擬似乱数生成装置は、抽出手段301とビット算出手段400を備える。抽出手段301は、上記前段写像計算手段201による計算結果に基づき出力ランダムビット列802の一部となる元データ303を抽出する。ビット算出手段400は、上記元データ303に基づき所定処理を選択実行して出力ランダムビット列802の一部を算出する。また、前記抽出手段301は、上記ビット算出手段400が実行する所定処理の選択の際に参照する参照データ302を抽出する。
ビット算出手段400は、上記元データ303の一部を選択する選択手段402を有し、上記参照データ302に基づき上記選択手段402による選択を実行するか否かを選択判定部401において判定し、上記選択手段402による選択を実行する場合には、上記参照データ302に基づき上記元データ303のいずれのビットを選択するか判定する。
ビット算出手段400は、上記選択手段402により選択されたビット列に関する転置演算を行う転置手段502を備え、ランダムビット長カウンタ404の値に基づき転置判定部501が上記転置手段502による転置を行うか否かの判定を行う。
上記転置手段502は、図4に示すように、複数の転置演算部502−1〜502−uを有し、上記参照データ302に基づき決定部500が上記複数の転置演算部502−1〜502−uのいずれを用いて転置を行うかの判定を行う。
前記転置手段502による転置結果のビット列を一時保持する保持手段503を有し、該保持手段503に所定長のビット列が保持されたときに、この保持手段503に保持されたビット列を出力ランダムビット列802として出力する。
本装置では、参照データ302と元データ303とを独立したデータとして扱い、参照データ302の一部または全部を元データ303の一部または全部に転用することはせず、また、元データ303の一部または全部を参照データ302の一部または全部に転用することはしない。
上記後段写像計算手段203には、それぞれ異なる端数処理を行う複数の写像計算部203−0〜203−(m−1)が備えられ、後段写像選択部202が上記参照データ302に基づき上記複数の写像計算部203−0〜203−(m−1)のいずれを用いて写像を行うかの判定を行う。上記後段写像計算手段203は、上記前段写像計算手段201による写像結果を整数化演算する構成とすることができる。
本装置は、更に内部状態変動手段602を備える。この内部状態変動手段602は、上記後段写像計算手段203の計算結果を受けて、上記前段写像計算手段201が用いるパラメータ列を変動させるものである。上記内部状態変動手段602は、上記参照データ302に基づき変動判定部601において上記前段写像計算手段201が用いるパラメータ列を変動させるか否かの判定を行う。これによって、ランダムなタイミングにて上記内部状態変動(写像関数形変化)を達成することが可能である。
尚、図3においては上記前段写像計算手段201を一種類としたが、これに限定されない。即ち、前段写像計算手段201は、それぞれ異なる写像計算を行う複数の写像演算部が縦続接続され、順送りで写像計算を行う構成としても良い。
次に図3、図4に示した擬似乱数生成装置の動作を説明する。本擬似乱数生成装置においては、処理の開始時において、前段写像計算手段201等に与えるべき初期の値を生成するための前処理部101を有している。この前処理部101は、この実施形態における擬似乱数生成装置/擬似乱数生成プログラムに与えられる入力情報801としてのシードseed、擬似ランダムビット列長nを得て、
初期の写像値:X0
初期のパラメータ列:a[1]〜a[na]
シード固有パラメータ列:ka[1]〜ka[na]
パラメータ変化量列102:pa[1]〜pa[na]
により構成される初期の値を生成する。
ここで、naは、初期のパラメータ列a[ ]、シード固有パラメータ列ka[ ]、パラメータ変化量列pa[ ]の要素数を意味するシステム固定値であり、後述する具体的実施形態1、2では、na=32としている。前処理部101は、上記において生成した初期の写像値X0を写像値レジスタ103にセットし、初期のパラメータ列a[1]〜a[na]をパラメータ列レジスタ104にセットする。
更に、前処理部101は、
パラメータの最小値Amin
パラメータの最大値Amax
パラメータの状態総数ΔA
パラメータ変量の最小値BA
を所定値(定数/固定値)としてセットする。
また、
初期のループカウンタi=0,
初期のパラメータ番号j=1,
をセットする。
上記において、シードseedは乱数の種である。ランダムビット列長nはこれから生成するランダムビット列の長さである。パラメータ変化量列102は、シードseedに固有の情報であり、本実施形態の内部状態変動手段602で用いられる。より具体的には、パラメータ変化量列102は、内部状態変動手段602において、パラメータ列に変化を与えるための参照値として利用される。初期の写像値X0は、前段写像計算手段201と、後段写像計算手段203における写像計算に関する「写像値の初期値」を意味する。写像値は、後段写像計算手段203で更新され、ループ毎に更新される。また、パラメータ列は、前段写像計算手段201、後段写像計算手段203での写像計算で用いられる写像関数のコントロールパラメータの列である。パラメータ列は、変動判定部601においてYesとなるときに、内部状態変動手段602において、シード固有の情報であるパラメータ変化量列102と参照データ302を参照しながら更新される(写像値と異なり、ループ毎に更新されるわけではない)。パラメータ変化量列102は、シード固有の情報であり、内部状態変動手段602においてパラメータ列を変動させる場合に、その変化量の一部を与える。
前処理部101により初期の値の生成がなされた後に、パラメータ列レジスタ104にセットされた初期のパラメータ列及び写像値レジスタ103にセットされた初期の写像値X0は、前段写像計算手段201へ与えられる。そこで、前段写像計算手段201は、初期パラメータ列と初期の写像値X0とに基づき前述の演算により構成される前段写像演算を行う。前段写像演算の結果は、抽出手段301へ与えられる。抽出手段301は、前段写像計算手段201によって計算された値の所定位置のビット列を参照データ302として抽出し、また、別の位置のビット列を元データ303として抽出し、2つに分けて記憶する。ビット抽出を行う際の所定位置については、統計的に良質なランダムビット列の抽出が可能である位置が望ましく、例えば、「荒木俊輔, 宮崎武, 上原聡, “擬似乱数生成器に用いる整域におけるロジスティック写像に関する一考察," 第30 回情報理論とその応用シンポジウム予稿集(SITA2007), 2.1, November 2007.」(文献18)、「荒木俊輔, 宮崎武, 上原聡, “擬似乱数生成器に用いる整数上のロジスティック写像に関する一考察," 2008年暗号と情報セキュリティシンポジウム予稿集(SCIS2008), 2A2-5, January 2008.」(文献19)、「Shunsuke Araki, Takeru Miyazaki, and Satoshi Uehara, “A Study on Occurrence Rates per Bit for Outputs of the Logistic Map over Integers," Proc. of 2008 International Symposium on Information Theory and its Applications, pp.1316-1320, 2008.」(文献20)、「荒木俊輔, 宮崎武, 上原聡, “整数上のロジスティック写像におけるビット毎の出現頻度に関する考察," 2009 年暗号と情報セキュリティシンポジウム予稿集(SCIS2009) , 2F1-3, January 2009.」(文献21)、「荒木俊輔, 宮崎武, 上原聡, 硴崎賢一, “整数上のロジスティック写像におけるビットごとの出現率に関する考察, " 日本応用数理学会論文誌, Vol.25, No.3, pp.191-206, 2015.」(文献22)などに記載の手法を採用することができる。
上記参照データ302は、図3から明らかな通り、選択判定部401、選択手段402、転置手段502、後段写像選択部202、変動判定部601、内部状態変動手段602において、選択や判定をランダムに行う際に用いられる。
また、参照データ302は、内部状態変動手段602などにおいて擬似乱数生成アルゴリズムにおける内部状態の遷移をランダムに与えることのみに用いられ、既述のように元データ303のランダムビット列として流用しない。これにより、本実施形態における擬似乱数生成装置の最終出力である出力ランダムビット列802が既知となった場合でも、内部状態の推測や同期が困難になり、出力ランダムビット列802を生成するために必須の入力情報801としてのシードや擬似ランダムビット列長nの推測が困難になる。
抽出手段301による処理が終了すると、選択判定部401が起動される。選択判定部401は、現ループにおいて抽出した元データ303をビット算出手段400の処理において採用するか破棄するかを判定する。判定に当たっては、写像回数カウンタ603のカウント値及び参照データ302に基づき判定する。選択判定部401における判定がYes(採用)の場合には、選択手段402へ移行する一方、判定がNo(破棄)の場合には、ビット算出手段400中の実質的な演算を行う選択手段402及び転置手段502の処理はスキップする。
選択判定部401における判定がYesとなり、選択手段402へ進んだ場合には、元データ303中の本実施形態に係る擬似乱数生成の当該ループにおいて出力とすべきランダムビット(ランダムビット列)を選択/抽出する。この選択/抽出に当たっては、参照データ302の情報を基に「採用するビット位置」を求め、元データ303中の「採用するビット位置」のビット(ビット列)を選択抽出し、転置前ランダムビット列403としてレジスタに加えて記憶する。
選択手段402により選択されたビット列は、ランダムビット長カウンタ404へ送られる。ランダムビット長カウンタ404は、送られてきたビット列のビット数をカウントアップする。この結果、ランダムビット長カウンタ404の値は、転置前ランダムビット列403のビット数だけカウントアップされる。
ランダムビット長カウンタ404のカウントアップが終了すると、転置判定部501が起動される。転置判定部501は、ランダムビット長カウンタ404の値に基づき、転置前ランダムビット列403のビット数(系列長)が転置処理を行うサイズに達したか否かを判定する。転置処理を行う場合のサイズ(ビット長)は予め決められており、例えば、入力情報801により設定されるものとする。転置判定部501による判定結果がYes(所定サイズに達した)ことが検出された場合には、転置手段502の処理へ移行する一方、判定結果がNo(所定サイズに達していない)ことが検出された場合には、転置手段502の処理をスキップする。
転置手段502へ進むと、転置前ランダムビット列403の内の転置処理を行うサイズ(ビット長)分を抽出したデータに対して転置処理を施す。転置処理にあたっては、参照データ302の情報を基に図4に示す決定部500が上記複数の転置演算部502−1〜502−uのいずれを用いて転置を行うかの判定を行う。或いは、決定部500が「転置ルール」を求め、当該転置ルールにより転置前ランダムビット列403のデータに所定転置処理を実行し、転置結果のビット列を一時保持する保持手段503に保持させる。
転置手段502の処理が終了すると、出力部504が起動される。出力部504は、例えば、入力情報801により設定され予め決められた出力すべき出力規定ビット長に基づき、保持手段503に保持されている転置後ランダムビット列が出力規定ビット長に達したかを判定し、達していれば出力命令を出力し保持手段503に保持されている転置後ランダムビット列を出力ランダムビット列802として出力する。かくして、保持手段503に保持された転置処理後のビット列は、所定のタイミングで出力ランダムビット列802として出力される。
転置手段502の処理が修了した場合は、出力部504の処理が実施されるか否かに関係せず、ランダムビット長カウンタ404をクリアするランダムビット長カウンタクリア505が実施される。
前記ランダムビット長カウンタクリア505が実施された場合、または、選択判定部401でNoが選択された場合、または、転置判定部501でNoが選択された場合、には、続いて、後段写像選択部202が起動される。後段写像選択部202は、上記参照データ302に基づき上記複数の写像計算部203−0〜203−(m−1)のいずれを用いて写像を行うかの判定を行う。
後段写像選択部202による選択に続いて、後段写像計算手段203としての写像計算部203−0〜203−(m−1)の中の選択された写像計算部203−iにおいて、所定の端数処理が実施される。端数処理関数については、下記の式0に示すものとすることができる。また、端数処理関数については、「宮崎武, 荒木俊輔, 上原聡, “端数処理の異なる整数上のロジスティック写像による系列の性質について," 2010 年暗号と情報セキュリティシンポジウム予稿集(SCIS2010), 3D3-1, January 2010.」(文献23)、「Takeru Miyazaki, Shunsuke Araki, Satoshi Uehara, “Rounding Logistic Maps over Integers and the Properties of the Generated Sequences," Proc. of the Fifth International Workshop on Signal Design and its Application in Communications, pp. 21-24, 2011.」(文献24)に記載のものを用いることができ、同文献にはその効果に関しても記載されている。
後段写像計算手段203が行われた後には、後段写像計算の結果である写像値が、既に写像値レジスタ103に記憶されている写像値に代えて記憶され、内部状態変動手段602が起動される。内部状態変動手段602は、上記参照データ302とパラメータ変化量列102に基づき変動判定部601において上記前段写像計算手段201が用いるパラメータ列を変動させるか否かの判定を行う。ここで、判定結果がYes(変動させる)となった場合には、内部状態変動手段602の処理へ移行する一方、判定結果がNo(変動させない)となった場合には、内部状態変動手段602の処理をスキップする。
内部状態変動手段602では、パラメータ列の変動がなされ、結果である新たなパラメータ列が、既にパラメータ列レジスタ104に記憶されているパラメータ列に代えて記憶される。このようにして、カオス写像の写像関数形を決定するパラメータ列を変動させる(変位を加え更新する)。変動手法(変位の与え方)としては、現在のループで使われている写像関数のパラメータ列(パラメータ列レジスタ104内のパラメータ列)、写像値レジスタ103内の写像値、パラメータ変化量列102及び参照データ302を基に計算することができる。この後、写像回数カウンタ603のカウント値をインクリメントして、終了判定部701へ進む。
終了判定部701では、生成された擬似ランダムビット列が所定長に達したか否かを判定する。判定に当たっては、ランダムビット列802のビット長が入力情報801の擬似ランダムビット長nに達したか否かを比較する。ここで、Yes(nに達した/終了)であることが検出された場合には、後処理部702へ移行する一方、No(nに達していない/継続)であることが検出された場合は、前段写像計算手段201に戻り、一連の処理を継続する。
後処理部702へ進んだ場合には、例えば各レジスタや各部のリセットなどの後処理が行われ処理が終了(エンド)となる。
既に示した文献9〜17に示した攻撃法及び、これらと数理的、技術的に同等の攻撃法、を利用して最も簡易に(最も少ない計算量で)攻撃が達成できるケースは以下である。(A)擬似乱数生成開始から終了まで同一の写像関数を利用する(内部状態を変動させない)。(B)写像毎に出力用のランダムビットを抽出する。(C)出力のランダムビットの順が写像の順と一致する。以上のケースと比較して、本実施形態に係る擬似乱数生成装置は、先行事例と同等の統計的側面における高い乱数性能を有しながら、上記の攻撃法を利用した攻撃(内部状態の推測、シードの推測)を困難にさせる効果を有する。
本実施形態に係る擬似乱数生成装置は、変動判定部601、内部状態変動手段602を有し、内部状態変動手段602は、参照データ302と、シード固有の情報であるパラメータ変化量列102とを参照して、シード情報の固有性を保ちながら、ランダムな変化量にて内部状態を変動させる(写像関数形を変化させる)と共に、変動判定部601は、参照データ302を参照して、ランダムなタイミングにて上記内部状態変動(写像関数形変化)を達成する構成を有している。即ち、攻撃者による内部状態の同期を困難なものとし、特に上記ケース(A)による攻撃法の適用を困難にする効果(効果1)を有している。
本実施形態に係る擬似乱数生成装置は、選択判定部401と選択手段402とを有し、これらはそれぞれ参照データ302を参照し「採用するビット位置」を求め、元データ303中の「採用するビット位置」のビット(ビット列)を選択抽出し、転置前ランダムビット列403を得る構成を有している。即ち、写像毎に抽出されたランダムビット列の全てが、そのまま最終出力として利用される訳ではないため、特に上記ケースBによる攻撃法の適用を困難にする効果(効果2)を有している。
本実施形態に係る擬似乱数生成装置は、転置手段502を有し、転置手段502では、参照データ302を参照し、「転置ルール」を求め、当該転置ルールにより転置前ランダムビット列403のデータに所定転置処理を実行し、転置結果のビット列を一時保持する保持手段503に保持させる構成を有している。即ち、写像毎に抽出されたランダムビット列が写像の順番で(ランダムビット列を抽出した順番で)出力される訳ではないため、特に上記ケースCによる攻撃法の適用を困難にする効果(効果3)を有している。
本実施形態に係る擬似乱数生成装置によって生成されるランダムビット列は、前段写像計算手段201による演算後の値から抽出され、各種選択部における選択をランダム化させ、また、最終出力に到る前にランダムな転置を受ける等の処理が、参照データ302に基づき行われる一方、実施形態に係る擬似乱数生成装置の最終出力の候補は上記参照データ302とは明確に区分分離された元データ303に対する演算によって得るという、独立した2系統のランダムビット列によるという構成を有している。
参照データ302は、変動判定部601、内部状態変動手段602、選択判定部401、選択手段402、転置手段502、後段写像選択部202において参照され、必要とされるランダム性の提供源としての機能を有するものであり、特に上記効果1〜3に寄与する。この参照データ302は、本実施形態に係る擬似乱数生成装置の最終出力である出力ランダムビット列802の元データとして流用しないため、本実施形態に係る擬似乱数生成装置の最終出力情報からは、上記ランダム変化のタイミングに関する情報としての参照データ302が推定や予測されることはない。これにより、上記効果1〜3と併せて、各種攻撃法の適用を困難にする効果を有する。
また、出力ランダムビット列802は、前段写像計算手段201により拡大された写像値から得られる元データ303を用いてビット算出手段400の演算により得られる。更に、ループにより次のステップに用いられる写像計算の入力(次ステップにおいて写像計算の元となる写像値)は、上記ビット算出手段400の演算により得られる値を、後段写像計算手段203としての写像計算部203−0〜203−(m−1)で演算して(例えば、除算における剰余、或いは、右ビットシフトで切り捨てられるビット列として)得られる。これにより、次のステップの前段写像計算の入力(次ステップにおいて写像計算の元となる写像値)は、本実施形態に係る擬似乱数生成装置の最終出力である出力ランダムビット列802の情報を一切含まないため、上記効果1〜3と併せて、各種攻撃法の適用を困難にする効果を有する。
本実施形態に係る擬似乱数生成装置は、後段写像選択部202、後段写像計算手段203としての写像計算部203−0〜203−(m−1)を有する。後段写像選択部202は、参照データ302を参照し、複数の写像計算部203−0〜203−(m−1)のいずれか一つをランダムに選択する構成を採用している。これにより、軌道のバリエーションを増やし、ランダムビット列のパターン数の増加に寄与すると共に、各種攻撃法の適用を困難にする効果を有する。
具体的実施形態1
次に具体的実施形態1を説明する。この具体的実施形態1は、テント写像を利用した場合の例である。本実施形態1では、シード長が512ビットのシード(あるいは鍵)seed、ランダムビット列長nを入力情報801として、nビットのランダムビット列(0,1の2値系列){bn}を得るものである。具体的実施形態1において、演算精度は64ビット、写像値Xのビット幅はt=32ビットとする。具体的実施形態1では整数演算化された以下のテント写像を用いる。
有限精度の計算機実装を与えるため、写像は、テント写像FT,Aと端数処理関数Gξ(ξ=0,1,・・・,7)を併せて達成される。即ち、次の式2に示す通りである。
尚、本具体的実施形態1では、式2による写像の計算を、以下に示す前段写像F′T,Aと後段写像G′ξに分割して考える。
上記の写像(後段)G′ξ(X)は、XをMで割ったあとに端数処理をする関数を示す。特にMが2の冪乗である場合、すなわち M=2sの場合は、XをMで割る操作はXのsビット右シフトと同じ処理である。このとき、Xの下位sビットが切り捨てられる。つまり、XをMで割る前(Xのsビット右シフト以前)に、切り捨てられる位置は確定しており、Xの下位sビットが「切り捨てられるビット列」に相当する。
なお、Mが2の冪乗でない場合は、XをMで割る操作によって切り捨てられる部分は、XをMで割った余りの部分(剰余部)(XModM,Mod(X,M),X%Mなどと記される)であり、これもXをMで割る操作と同じく、既知である。以上から、元データ303は、前段写像計算手段201により拡大された写像値のうち、後段写像計算手段203としての写像計算部203−0〜203−(m−1)の除算における剰余、或いは、右ビットシフトで切り捨てられるビット列から抽出されるものであると結論することができる。
本具体的実施形態1の以降の説明においては、下記の定数を用いる。
以下に、図3に示した構成によって、この具体的実施形態1が実現されるものとして、動作を説明する。
前処理部101では、512ビットのシード(あるいは鍵)seed、ランダムビット列長n∈Zの入力を受け、所定関数により、初期の写像値、初期のパラメータ列、シード固有パラメータ列、パラメータ変化量列102を下記の通りに生成する。
シード固有パラメータ列ka[1]〜ka[32]は、512ビットのシードseedを16ビット単位に分割して、計32ブロックに格納したものである(16×32=512)。即ち、次の式14に示す通りである。
パラメータ列a[1]〜a[32]は、パラメータ列レジスタ104に格納され、前段写像計算手段201における写像計算で利用される。本具体的実施形態1では、次の式15の通りである。
パラメータ変化量列102(pa[1]〜pa[32])は、内部状態変動手段602において、パラメータ列a[ ]に変化を与えるための参照値として利用される。本具体的実施形態1では、次の式16の通りである。
前処理部101による処理の次に前段写像計算手段201による計算が行われる。この前段写像計算手段201では、式3に示した前段写像の計算を実施して写像中間値Yを得る。擬似乱数生成アルゴリズム開始時点では、前処理部101により生成され写像値レジスタ103に格納された初期の写像値X0を用いた写像計算がなされる。ここで、写像回数i、パラメータ列a[j]が選ばれているとすると、写像中間値Yは、次の式17の通りである。
前段写像計算手段201で使われるパラメータ列a[ ]について説明する。本具体的実施形態1では、擬似乱数生成アルゴリズム開始時点で、前処理部101にてa[1]〜a[32]の計32個のパラメータが生成されている。第1回目の写像では、j=1番目のパラメータ、すなわちa[1]が利用される。いまj番目(j=1,2,・・・,32)のパラメータが選ばれているとする。後述の変動判定部601においてNo(変動させない)と判定された場合は、次回の写像でも再び同じパラメータが用いられる。Yes(変動させる)と判定された場合は、後述の手法にてa[j]の値が更新されると共に、jのインクリメント(j=j+1)が実行され、次回の写像では、次の番号のパラメータが使われる。ただしj>32の場合はj=1に戻る。
前段写像計算手段201に次いで抽出手段301による処理が行われる。抽出手段301では前段写像計算手段201による計算後に得た写像中間値Yの所定位置のビットを抽出して、参照データ302として、ri[k]、(ri[k]∈{0,1}、k=1,2,・・・,17)、および、元データ303として、ro[k]、(ro[k]∈{0,1},k=1,2,・・・,8)を得る。本具体的実施形態1では、Yは64ビットである。Yを2進数表記した以下の式18に示す配列を考える。これにより、ri[k]とro[k]は式19、式20となる。
具体的実施形態1においては、参照データ302として、ri[k]、(ri[k]∈{0,1},k=1,2,・・・,17)により示されるランダムビット列は、選択判定部401、選択手段402、後段写像選択部202、転置手段502、変動判定部601、内部状態変動手段602の計6箇所において参照されるランダムデータとして利用される。参照データ302としてのriが参照される範囲はアルゴリズムの内部処理に限られており、外部出力用のランダムビット列としては利用されない。
なお、元データ303であるro[k](ro[k]∈{0,1},k=1,2,・・・,8)は、具体的実施形態1の出力となるランダムビット列の「候補」である。即ち、元データ303であるroの全てが採用される訳ではない。
抽出手段301による処理に続いて選択判定部401が処理を行う。選択判定部401は、参照データ302であるriのデータを参照して、擬似乱数を選択する選択手段402の処理へ移行するか否かを判定する。参照データ302であるri[k](k=1,2,・・・,17)のうち、ri[1]=1(Yes)ならば、選択手段402の処理へ移行する。一方、ri[1]=0(No)ならば後段写像選択部202に移行する。
前述の選択判定部401がYesと判定した場合に、選択手段402は次の処理を行う。選択手段402は、参照データ302であるriのデータを参照して、元データ303であるroのデータ中から外部に出力するランダムビット(列)を選択する。本実施形態では、参照データ302のうちri[2]〜ri[9]の8ビットを参照し、ri[k]=1(k=2,3,4,・・・,9)(Yes)ならばro[k−1]を有効なビット列である転置前ランダムビット列403として、レジスタtmp[ ]に格納する。一方、ri[k]=0(k=2,3,4,・・・,9)(No)ならば、ro[k−1]は如何なる用途にも使用されず破棄される。
選択手段402による処理の後にランダムビット長カウンタ404では、選択手段402にて選ばれた外部に出力されるランダムビット列の長さをカウントする。
ランダムビット長カウンタ404のカウントを受けて転置判定部501が動作する。転置判定部501では、レジスタtmp[ ]に格納された転置前ランダムビット列403のデータサイズを参照して、転置手段502の処理へ移行するか否かを判定する。本実施形態では、レジスタtmp[ ]に格納された転置前ランダムビット列403の長さが8ビットに達している(Yes)ならば転置手段502による処理へ移行する。一方、転置前ランダムビット列403の長さが8ビット未満(No)ならば、後段写像選択部202へ移行する。尚、転置手段502による処理へ移行する場合は、レジスタtmp[ ]の先頭から8ビットがレジスタref[ ]に移されると共に、レジスタtmp[ ]の先頭8ビットは消去される。また、レジスタtmp[ ]の9ビット目以降のデータが繰り上がるようになっている。
転置判定部501による処理の次には、転置手段502による処理が行われる。転置手段502では、転置判定部501による判定がYesのときに限り、上述のレジスタref[ ]に生成された8ビットのデータの順序を並び替える処理を行う。本実施形態では、予めP0〜P15の16方式の転置ルールが用意されている。参照データ302のうちri[10]〜ri[13]の計4ビットを、10進展開した値ξ={0,1,2,・・・,15}に対応する転置ルールPξが選択される。転置後のデータは、保持手段503であるレジスタOUT[ ]に格納される。
本実施形態において用いる、上記16方式の転置ルールとは、レジスタref[ ]のi番目に写す写像t:I→I,(i∈I,t(i)∈I,I={1,2,・・・,8},tは全単射)として与えられる。写像tは、全部で8!(8の階乗)通りある。本実施形態では、上記の8の階乗通り中の16通りを選択したものである。以下に、第ξ(ξ=0,1,2,・・・,15)番目の写像tを意味するビット転置表Pξを、表1(P0〜P7)と表2(P8〜P15)に示す。
転置手段502の処理が終了すると、出力部504が起動される。保持手段503であるレジスタOUT[ ]に転置後のデータが格納されると、所定のタイミングにおいて、出力部504により出力命令が出力されて上記保持手段503であるレジスタOUT[ ]に保持されたビット列を出力ランダムビット列802として出力する。既述の通り、出力部504は、保持手段503に保持されている転置後ランダムビット列が出力規定ビット長に達したかを判定し、達していれば出力命令を出力する。
転置手段502の処理が修了した場合は、出力部504の処理が実施されるか否かに関係せず、ランダムビット長カウンタ404をクリアするランダムビット長カウンタクリア505が実施される。前記ランダムビット長カウンタクリア505が実施された場合、または、選択判定部401でNoが選択された場合、または、転置判定部501でNoが選択された場合は、続いて、後段写像選択部202が起動される。
後段写像選択部202では、予め用意してあるm個の端数処理関数G0〜Gm−1に対応する後段写像関数G′0〜G′m−1のうち、参照データ302の所定位置データを参照して選択する。本実施形態では、m=8として、予めG′0〜G′7の8方式の後段写像関数が用意されている。参照データ302のうちri[14]〜ri[16]の計3ビットを、10進展開した値ξ∈{0,1,2,・・・,7}に対応する後段写像関数G′ξが選択される。ここで、後段写像関数G′ξ(X)(ξ=0,1,2,・・・,7)の例を、以下の式(A)に示す。
後段写像選択部202の処理に次いで、後段写像計算手段203の処理が行われる。後段写像計算手段203としての写像計算部203−0〜203−(m−1)の中の選択された写像計算部203−iにおいて、前段写像計算手段201において得られた写像中間値Yに基づき、後段写像選択部202で選択された番号ξに対応する後段写像関数G′ξの計算を実施して写像値を更新する。現在の写像回数がiであるならば、更新された写像値は次の式21に示されるようである。
更新された写像値は、写像値レジスタ103の写像値に上書きされる。後段写像計算手段203の処理の後には、変動判定部601による処理が行われる。変動判定部601では、参照データ302の所定位置データを参照して、擬似乱数生成アルゴリズムの内部状態に変動を与えるか否かを決定する。本実施形態では、参照データ302であるri[k](k=1,2,・・・,17)のうち、ri[17]=1である(Yes/変動を与える)ならば、内部状態変動手段602による処理に移動し、ri[17]=0である(No/変動しない)ならば、写像回数カウンタ603の処理へ移行する。
上記においてri[17]=1であり、内部状態変動手段602による処理に移行すると、内部状態変動手段602では、パラメータ変化量列102及び参照データ302を参照してパラメータa[ ]に変動を与える。いま、j(1,2,・・・,32)番目のパラメータa[j]が選ばれているとする。本実施形態では、次の式22による変動が行われる。
上記内部状態変動手段602では、上記の式22による変動を行った場合には、パラメータ列レジスタ104のパラメータ列に対し上記変動に係るパラメータ列を上書きして更新する。この処理の後に、或いは変動判定部601においてNoとなったときには、写像回数カウンタj=j+1が計算され、次回の写像では、次の番号のパラメータが使われる。ただしj>32の場合はj=1に戻る。この後、写像回数カウンタ603のカウント値をインクリメントして、終了判定部701へ進む。
終了判定部701では、擬似ランダムビット列が所定長に達したか否かを判定する。Yes(終了)ならば、後処理部702へ移行し、No(終了ではない)ならば、前段写像計算手段201に戻り、一連の処理を継続する。
後処理部702へ進んだ場合には、例えば各レジスタや各部のリセットなどの後処理が行われ処理(アルゴリズム)が終了される。
具体的実施形態2
次に具体的実施形態2を説明する。この具体的実施形態2は、ロジスティック写像を利用した場合の例である。システムパラメータとして
写像値Xのビット幅:t=64ビット
演算精度:192ビット
を利用する。
ユーザは、
seed: 64ビットの乱数種
n: 出力ランダムビット列のビット数
を擬似乱数生成装置に入力する。
これにより、擬似乱数生成装置は次のランダムビット列を出力する。
{b1,b2,・・・,bn}:nビットの出力ランダムビット列
ただし、biは0または1とする。
具体的実施形態2では、次の通りの整数演算化されたロジスティック写像を用いる。
ここに、有限精度の計算機実装を与えるため、写像は、ロジスティック写像FL,ALと端数処理関数Gξ(ξ=0,1,・・・,7)を併せて達成される。即ち、以下の式24により表される。
尚、本具体的実施形態2では、式(24)による写像の計算を、以下に示す前段写像F´L,ALと後段写像G′′ξに分割して実行する。
本具体的実施形態2の以降の説明においては、下記の定数を用いる。
以下に、図3に示した構成によってこの具体的実施形態2が実現されるものとして、動作を説明する。
前処理部101では、t(=64)ビットのシード(あるいは鍵)seed、ランダムビット列長n∈Zの入力を受け、所定関数により、初期の写像値、初期のパラメータ列、シード固有パラメータ列、パラメータ変化量列102を下記の通りに生成する。
前処理部101では、初期の写像値X0をseed情報を基に算出し,Xi+1=FL,AL,max(Xi)を計算する。その過程で、シード固有パラメータ列の要素として、ka[j]=X5j+100とする64ビットの整数を得る。即ち、次の式36に示されるようになる。
パラメータ列a[1]〜a[32]は、パラメータ列レジスタ104に格納され、前段写像計算手段201における写像計算で利用される。本具体的実施形態2では、次の式37の通りである。
パラメータ変化量列pa[1]〜pa[32]は、内部状態変動手段602において、パラメータ列a[ ]に変化を与えるための参照値として利用される。本具体的実施形態2では、次の式38の通りである。
前処理部101の次に前段写像計算手段201による計算が行われる。この前段写像計算手段201では、式25に示した前段写像の計算を実施して写像中間値Yを得る。擬似乱数生成アルゴリズム開始時点では、前処理部101により生成され写像値レジスタ103に格納された初期の写像値X0を用いた写像計算がなされる。ここで、写像回数i、パラメータ列a[j]が選ばれているとすると、写像中間値Yは、次の式39の通りである。
前段写像計算手段201で使われるパラメータ列a[ ]について説明する。本具体的実施形態2では、擬似乱数生成アルゴリズム開始時点で、前処理部101にてa[1]〜a[32]の計32個のパラメータが生成されている。第1回目の写像では、j=1番目のパラメータ、すなわちa[1]が利用される。いまj番目(j=1,2,・・・,32)のパラメータが選ばれているとする。後述の変動判定部601においてNo(変動させない)と判定された場合は、次回の写像でも再び同じパラメータが用いられる。Yes(変動させる)と判定された場合は、後述の手法にてa[j]の値が更新されると共に、jのインクリメント(j=j+1)が実行され、次回の写像では、次の番号のパラメータが使われる。ただしj>32の場合はj=1に戻る。
前段写像計算手段201に次いで抽出手段301による処理が行われる。抽出手段301では前段写像計算手段201による計算後に得た写像中間値Yの所定位置のビット列を抽出して、参照データ302として、ri[k]、(ri[k]∈{0,1}、k=1,2,・・・,61)、および、元データ303として、ro[k]、(ro[k]∈{0,1},k=1,2,・・・,48)を得る。本具体的実施形態2では、Yは192ビットである。参照データ302はYの49ビット目から61ビット目までの13ビット分と113ビット目から160ビット目までの48ビット分の計61ビット分と、元データ303はYの65ビット目から112ビット目までの48ビット分、合計で109ビット分をランダムビット列として抽出する。具体的に、Yを2進表記した配列Yを2進数表記した以下の式40に示す配列を考える。これにより、ri[k]とro[k]は式41、式42となる。
具体的実施形態2においては、参照データ302として、ri[k]、(ri[k]∈{0,1},k=1,2,・・・,17)により示されるランダムビット列は、選択判定部401、選択手段402、後段写像選択部202、転置手段502、変動判定部601、内部状態変動手段602の計6箇所において参照されるランダムデータとして利用される。参照データ302としてのriが参照される範囲はアルゴリズムの内部処理に限られており、外部出力用のランダムビット列としては利用されない。
なお、元データ303であるro[k](ro[k]∈{0,1},k=1,2,・・・,48)は、具体的実施形態2の出力となるランダムビット列の「候補」である。即ち、元データ303であるroの全てが採用される訳ではない。
抽出手段301による処理に続いて選択判定部401が処理を行う。選択判定部401は、参照データ302であるriのデータを参照して、擬似乱数を選択する選択手段402の処理へ移行するか否かを判定する。参照データ302であるri[k](k=1,2,・・・,61)のうち、ri[1]=1(Yes/選択する)ならば、選択手段402の処理へ移行する。一方、ri[1]=0(No/選択しない)ならば後段写像選択部202に移行する。
前述の選択判定部401がYesと判定した場合に、選択手段402は次の処理を行う。選択手段402は、参照データ302であるriのデータを参照して、元データ303であるroのデータ中から外部に出力するランダムビット(列)を選択する。本実施形態では、参照データ302のうちri[14]〜ri[61]の48ビットを参照し、ri[k]=1(k=14,15,・・・,61)(Yes)ならばro[k−13]を有効なビット列である転置前ランダムビット列403として、レジスタtmp[ ]に格納する。一方、ri[k]=0(k=14,15,・・・,61)(No)ならば、ro[k−13]は如何なる用途にも使用されず破棄される。
選択手段402による処理の後にランダムビット長カウンタ404では、選択手段402にて選ばれた外部に出力されるランダムビット列の長さをカウントする。
ランダムビット長カウンタ404のカウントを受けて転置判定部501が動作する。転置判定部501では、レジスタtmp[ ]に格納された転置前ランダムビット列403のデータサイズを参照して、転置手段502の処理へ移行するか否かを判定する。本実施形態では、レジスタtmp[ ]に格納された転置前ランダムビット列403の長さが64ビットに達している(Yes)ならば転置手段502による処理へ移行する。一方、転置前ランダムビット列403の長さが64ビット未満(No)ならば、後段写像選択部202へ移行する。尚、転置手段502による処理へ移行する場合は、レジスタtmp[ ]の先頭から64ビットがレジスタref[ ]に移されると共に、レジスタtmp[ ]の先頭64ビットは消去される。また、レジスタtmp[ ]の65ビット目以降のデータが繰り上がるようになっている。
転置判定部501による処理の次には、転置手段502による処理が行われる。転置手段502では、転置判定部501による判定がYesのときに限り、上述のレジスタref[ ]に生成された64ビットのデータの順序を並び替える処理を行う。本実施形態では、予めP0〜P255の256方式の転置ルールが用意されている。参照データ302のうちri[2]〜ri[9]の計8ビットを、10進展開した値ξ={0,1,2,・・・,255}に対応する転置ルールPξが選択される。転置後のデータは、保持手段503であるレジスタOUT[ ]に格納される。
本実施形態において用いる、上記256方式の転置ルールとは、レジスタref[ ]のi番目に写す写像t:I→I,(i∈I,t(i)∈I,I={1,2,・・・,64},tは全単射)として与えられる。写像tは、全部で64!(64の階乗)通りある。本実施形態では、上記の64の階乗通り中の256通りを選択したものである。8ビット転置の場合の具体例を、既に表1と表2に示した。64ビット転置の場合も,写像前と写像後で全単射の関係が保たれるように同様に作成すればよいため、64ビット転置の具体例は省略する。
転置手段502の処理が終了すると、出力部504が起動される。保持手段503であるレジスタOUT[ ]に転置後のデータが格納されると、所定のタイミングにおいて、出力部504により出力命令が出力されて上記保持手段503であるレジスタOUT[ ]に保持されたビット列を出力ランダムビット列802として出力する。既述の通り、出力部504は、保持手段503に保持されている転置後ランダムビット列が出力規定ビット長に達したかを判定し、達していれば出力命令を出力する。
出力部504の処理が終了すると、ランダムビット長カウンタ404をクリアする処理ランダムビット長カウンタクリア505が行われ、続いて後段写像選択部202が起動される。後段写像選択部202では、予め用意してあるm個の端数処理関数G0〜Gm−1に対応する後段写像関数G′′0〜G′′m−1のうち、参照データ302の所定位置データを参照して選択する。本実施形態では、m=8として、予めG′′0〜G′′7の8方式の後段写像関数が用意されている。参照データ302のうちri[10]〜ri[12]の計3ビットを、10進展開した値ξ∈{0,1,2,・・・,7}に対応する後段写像関数G′′ξが選択される。ここで、後段写像関数G′′ξ(X)(ξ=0,1,2,・・・,7)の例を、以下の式(B)に示す。
後段写像選択部202の処理に次いで、後段写像計算手段203の処理が行われる。後段写像計算手段203としての写像計算部203−0〜203−(m−1)の中の選択された写像計算部203−iにおいて、前段写像計算手段201において得られた写像中間値Yに基づき、後段写像選択部202で選択された番号ξに対応する後段写像関数G′′ξの計算を実施して写像値を更新する。現在の写像回数がiであるならば、更新された写像値は次の式43に示されるようである。
更新された写像値は、写像値レジスタ103の写像値に上書きされる。後段写像計算手段203の処理の後には、変動判定部601による処理が行われる。変動判定部601では、参照データ302の所定位置データを参照して、擬似乱数生成アルゴリズムの内部状態に変動を与えるか否かを決定する。本実施形態では、参照データ302であるri[k](k=1,2,・・・,61)のうち、ri[13]=1である(Yes/変動を与える)ならば、内部状態変動手段602による処理に移動し、ri[13]=0である(No/変動しない)ならば、写像回数カウンタ603の処理へ移行する。
上記においてri[13]=1であり、内部状態変動手段602による処理に移行すると、内部状態変動手段602では、パラメータ変化量列102及び参照データ302を参照してパラメータa[ ]に変動を与える。いま、j(1,2,・・・,32)番目のパラメータa[j]が選ばれているとする。本実施形態では、次の式44による変動が行われる。
上記内部状態変動手段602では、同時に、j=j+1が計算され、次回の写像では、次の番号のパラメータが使われる。ただしj>32の場合はj=1に戻る。この後、写像回数カウンタ603のカウント値をインクリメントして、終了判定部701へ進む。
終了判定部701では、擬似ランダムビット列が所定長に達したか否かを判定する。Yes(終了)ならば、後処理部702へ移行し、No(終了ではない)ならば、前段写像計算手段201に戻り、一連の処理を継続する。
後処理部702へ進んだ場合には、例えば各レジスタや各部のリセットなどの後処理が行われ処理(アルゴリズム)が終了される。
以上説明した具体的実施形態1、2は、構成がシンプルなため、実装の容易性と処理の高速性が特徴である。また、当擬似乱数生成法はストリーム暗号の擬似乱数生成部として転用することが考えられる。
本発明に係る擬似乱数生成装置とプログラムは、安全な擬似乱数が必要とされるアプリケーション、ツール、 ライブラリおよび情報システム、 電子デバイスに適用すると好適である。ここに安全とは、擬似乱数生成法から生成された擬似乱数列を既知情報としたときに、 当該乱数列の生成に使われたシード情報を解析的に得ることが困難であることを意味する。
より具体的には、本発明に係る擬似乱数生成装置とプログラムは、情報セキュリティ分野全般、例えば公開鍵認証システム(PKI)における安全な鍵ペア(秘密鍵、公開鍵)の生成、共通鍵暗号における安全な共通鍵の生成、暗号化通信における安全なセッション鍵の生成、無線通信における鍵の生成、その他ランダムパスワード、 ランダム鍵類の生成などに用いることができる。