(57)【要約】【課題】従来、疑似乱数列生成や暗号化復号化に不適であるといわれている２次元キャットマップのような写像変換を用いて疑似乱数列生成および暗号化復号化を可能にする。【解決手段】種受付部１０により受け付けたｗビットの整数のｎ次元ベクトルの列Ｓ(1)，Ｓ(2)，・・・，Ｓ(K)を初期化部１１に与えてｗビットの整数のｎ次元ベクトルの列Ｘ(1)，Ｘ(2)，・・・，Ｘ(K)とし、変換部１２によりｎ次元ベクトルの列Ｘ(1)，Ｘ(2)，・・・，Ｘ(K)から決定される変換行列を用いた写像変換を施した後、回転部１３によりその一部または全部に対して所定の回転ビット数の回転演算を行い、この結果を更新部１４により更新して、変換部１２および回転部１３によりそれぞれ写像変換および回転演算を所定回数繰り返し行うことにより、乱数性の高い多次元疑似乱数列を生成する。【選択図】図１
2007264147.tif 000002
【特許請求の範囲】
【請求項１】
ｍ次元ｗビットの疑似乱数の列を生成する疑似乱数列生成装置であって、
ｗビットの整数ｓi(k)（但し、２以上の整数Ｋに対して、ｋ＝１，２，・・・，Ｋとする。以下同じ。）のｎ次元ベクトルＳ(k)＝（ｓ１(k)，ｓ２(k)，・・・，ｓｎ(k)）の列Ｓ(1)，Ｓ(2)，・・・，Ｓ(K)を種として受け付ける種受付部と、
前記ｎ次元ベクトルの列Ｓ(1)，Ｓ(2)，・・・，Ｓ(K)を、ｗビットの整数ｘi(k)のｎ次元ベクトルＸ(k)＝（ｘ１(k)，ｘ２(k)，・・・，ｘｎ(k)）の列Ｘ(1)，Ｘ(2)，・・・，Ｘ(K)として与える初期化部と、
前記ｎ次元ベクトルの列Ｘ(1)，Ｘ(2)，・・・，Ｘ(K)のそれぞれに対して前記ｎ次元ベクトルの列Ｘ(1)，Ｘ(2)，・・・，Ｘ(K)から決定される変換行列を用いた写像変換を施してｗビットの整数ｙi(k)のｎ次元ベクトルＹ(k)＝（ｙ１(k)，ｙ２(k)，・・・，ｙｎ(k)）の列Ｙ(1)，Ｙ(2)，・・・，Ｙ(K)を得る変換部と、
前記ｎ次元ベクトルの列Ｙ(1)，Ｙ(2)，・・・，Ｙ(K)をｗ×Ｋ×ｎビットのビット列ｙ１(1)，ｙ１(2)，・・・，ｙ１(K)，ｙ２(1)，ｙ２(2)，・・・，ｙ２(K)，・・・，ｙｎ(1)，ｙｎ(2)，・・・，ｙｎ(K)とみて、その一部または全部に対して所定の回転ビット数の回転演算を行って得られたｗ×Ｋ×ｎビットのビット列を、ｗビットの整数ｚi(k)の列ｚ１(1)，ｚ１(2)，・・・，ｚ１(K)，ｚ２(1)，ｚ２(2)，・・・，ｚ２(K)，・・・，ｚｎ(1)，ｚｎ(2)，・・・，ｚｎ(K)とみて、ｎ次元ベクトルＺ(k)＝（ｚ１(k)，ｚ２(k)，・・・，ｚｎ(k)）の列Ｚ(1)，Ｚ(2)，・・・，Ｚ(K)を得る回転部と、
前記ｎ次元ベクトルの列Ｚ(1)，Ｚ(2)，・・・，Ｚ(K)をｎ次元ベクトルの列Ｘ(1)，Ｘ(2)，・・・，Ｘ(K)として前記変換部に与える更新部と、
前記変換部、回転部および更新部による処理が所定回数繰り返された後、最後に得られたｎ次元ベクトルの列Ｚ(1)，Ｚ(2)，・・・，Ｚ(K)のそれぞれに対してｎ次元ベクトルからｍ次元ベクトルへの射影変換を行い、ｗビットの整数ｒi(k)のｍ次元ベクトルＲ(k)＝（ｒ１(k)，ｒ２(k)，・・・，ｒｍ(k)）の列Ｒ(1)，Ｒ(2)，・・・，Ｒ(K)を得る射影部と、
前記ｍ次元ベクトルの列Ｒ(1)，Ｒ(2)，・・・，Ｒ(K)をｍ次元ｗビットの疑似乱数列ｒ１(1)，ｒ１(2)，・・・，ｒ１(K)，ｒ２(1)，ｒ２(2)，・・・，ｒ２(K)，・・・，ｒｍ(1)，ｒｍ(2)，・・・，ｒｍ(K)として出力する出力部と
を備える疑似乱数列生成装置。
【請求項２】
前記写像変換は、次式により行うものである請求項１記載の疑似乱数列生成装置。
【数１】
2007264147.tif 000036
但し、ａi,j(k)（Ｘ）は、２wビット整数を出力するＸの関数である。
【請求項３】
前記変換行列Ａ(k)は、
【数２】
2007264147.tif 000037
を満たすものである請求項２記載の疑似乱数列生成装置。
【請求項４】
前記写像変換が、２次元キャットマップ変換である請求項１から３のいずれかに記載の疑似乱数列生成装置。
【請求項５】
請求項１から４のいずれかに記載の疑似乱数列生成装置から構成され、ｍ次元ｗビットの疑似乱数列ｒ１(1)，ｒ１(2)，・・・，ｒ１(K)，ｒ２(1)，ｒ２(2)，・・・，ｒ２(K)，・・・，ｒｍ(1)，ｒｍ(2)，・・・，ｒｍ(K)を出力する疑似乱数列生成部と、
ｍ次元ｗビットの整数列ｐ１(1)，ｐ１(2)，・・・，ｐ１(K)，ｐ２(1)，ｐ２(2)，・・・，ｐ２(K)，・・・，ｐｍ(1)，ｐｍ(2)，・・・，ｐｍ(K)を暗号化または復号化対象のデータとして受け付けるデータ受付部と、
前記疑似乱数列と前記暗号化または復号化対象のデータの排他的論理和ｐ１(1)   ｘｏｒ  ｒ１(1)，ｐ１(2)   ｘｏｒ  ｒ１(2)，・・・，ｐ１(K)   ｘｏｒ  ｒ１(K)，ｐ２(1)   ｘｏｒ  ｒ２(1)，ｐ２(2)   ｘｏｒ  ｒ２(2)，・・・，ｐ２(K)   ｘｏｒ  ｒ２(K)，・・・，ｐｍ(1)   ｘｏｒ  ｒｍ(1)，ｐｍ(2)   ｘｏｒ  ｒｍ(2)，・・・，ｐｍ(K)   ｘｏｒ  ｒｍ(K)を暗号化または復号化の結果として出力する暗号化復号化部と
を備えた暗号化復号化装置。
【請求項６】
コンピュータによりｍ次元ｗビットの疑似乱数の列を生成する疑似乱数列生成方法であって、
前記コンピュータが、ｗビットの整数ｓi(k)（但し、２以上の整数Ｋに対して、ｋ＝１，２，・・・，Ｋとする。以下同じ。）のｎ次元ベクトルＳ(k)＝（ｓ１(k)，ｓ２(k)，・・・，ｓｎ(k)）の列Ｓ(1)，Ｓ(2)，・・・，Ｓ(K)を種として受け付ける種受付ステップと、
前記コンピュータが、前記ｎ次元ベクトルの列Ｓ(1)，Ｓ(2)，・・・，Ｓ(K)を、ｗビットの整数ｘi(k)のｎ次元ベクトルＸ(k)＝（ｘ１(k)，ｘ２(k)，・・・，ｘｎ(k)）の列Ｘ(1)，Ｘ(2)，・・・，Ｘ(K)として与える初期化ステップと、
前記コンピュータが、前記ｎ次元ベクトルの列Ｘ(1)，Ｘ(2)，・・・，Ｘ(K)のそれぞれに対して前記ｎ次元ベクトルの列Ｘ(1)，Ｘ(2)，・・・，Ｘ(K)から決定される変換行列を用いた写像変換を施してｗビットの整数ｙi(k)のｎ次元ベクトルＹ(k)＝（ｙ１(k)，ｙ２(k)，・・・，ｙｎ(k)）の列Ｙ(1)，Ｙ(2)，・・・，Ｙ(K)を得る変換ステップと、
前記コンピュータが、前記ｎ次元ベクトルの列Ｙ(1)，Ｙ(2)，・・・，Ｙ(K)をｗ×Ｋ×ｎビットのビット列ｙ１(1)，ｙ１(2)，・・・，ｙ１(K)，ｙ２(1)，ｙ２(2)，・・・，ｙ２(K)，・・・，ｙｎ(1)，ｙｎ(2)，・・・，ｙｎ(K)とみて、その一部または全部に対して所定の回転ビット数の回転演算を行って得られたｗ×Ｋ×ｎビットのビット列を、ｗビットの整数ｚi(k)の列ｚ１(1)，ｚ１(2)，・・・，ｚ１(K)，ｚ２(1)，ｚ２(2)，・・・，ｚ２(K)，・・・，ｚｎ(1)，ｚｎ(2)，・・・，ｚｎ(K)とみて、ｎ次元ベクトルＺ(k)＝（ｚ１(k)，ｚ２(k)，・・・，ｚｎ(k)）の列Ｚ(1)，Ｚ(2)，・・・，Ｚ(K)を得る回転ステップと、
前記コンピュータが、前記ｎ次元ベクトルの列Ｚ(1)，Ｚ(2)，・・・，Ｚ(K)をｎ次元ベクトルの列Ｘ(1)，Ｘ(2)，・・・，Ｘ(K)として前記変換ステップに与える更新ステップと、
前記変換ステップ、回転ステップおよび更新ステップによる処理が所定回数繰り返された後、前記コンピュータが、最後に得られたｎ次元ベクトルの列Ｚ(1)，Ｚ(2)，・・・，Ｚ(K)のそれぞれに対してｎ次元ベクトルからｍ次元ベクトルへの射影変換を行い、ｗビットの整数ｒi(k)のｍ次元ベクトルＲ(k)＝（ｒ１(k)，ｒ２(k)，・・・，ｒｍ(k)）の列Ｒ(1)，Ｒ(2)，・・・，Ｒ(K)を得る射影ステップと、
前記コンピュータが、前記ｍ次元ベクトルの列Ｒ(1)，Ｒ(2)，・・・，Ｒ(K)をｍ次元ｗビットの疑似乱数列ｒ１(1)，ｒ１(2)，・・・，ｒ１(K)，ｒ２(1)，ｒ２(2)，・・・，ｒ２(K)，・・・，ｒｍ(1)，ｒｍ(2)，・・・，ｒｍ(K)として出力する出力ステップと
を含む疑似乱数列生成方法。
【請求項７】
請求項６記載の疑似乱数列生成方法により、前記コンピュータが、ｍ次元ｗビットの疑似乱数列ｒ１(1)，ｒ１(2)，・・・，ｒ１(K)，ｒ２(1)，ｒ２(2)，・・・，ｒ２(K)，・・・，ｒｍ(1)，ｒｍ(2)，・・・，ｒｍ(K)を出力する疑似乱数列生成ステップと、
前記コンピュータが、ｍ次元ｗビットの整数列ｐ１(1)，ｐ１(2)，・・・，ｐ１(K)，ｐ２(1)，ｐ２(2)，・・・，ｐ２(K)，・・・，ｐｍ(1)，ｐｍ(2)，・・・，ｐｍ(K)を暗号化または復号化対象のデータとして受け付けるデータ受付ステップと、
前記コンピュータが、前記疑似乱数列と前記暗号化または復号化対象のデータの排他的論理和ｐ１(1)   ｘｏｒ  ｒ１(1)，ｐ１(2)   ｘｏｒ  ｒ１(2)，・・・，ｐ１(K)   ｘｏｒ  ｒ１(K)，ｐ２(1)   ｘｏｒ  ｒ２(1)，ｐ２(2)   ｘｏｒ  ｒ２(2)，・・・，ｐ２(K)   ｘｏｒ  ｒ２(K)，・・・，ｐｍ(1)   ｘｏｒ  ｒｍ(1)，ｐｍ(2)   ｘｏｒ  ｒｍ(2)，・・・，ｐｍ(K)   ｘｏｒ  ｒｍ(K)を暗号化または復号化の結果として出力する暗号化復号化ステップと
を含む暗号化復号化方法。
【請求項８】
コンピュータに、
ｗビットの整数ｓi(k)（但し、２以上の整数Ｋに対して、ｋ＝１，２，・・・，Ｋとする。以下同じ。）のｎ次元ベクトルＳ(k)＝（ｓ１(k)，ｓ２(k)，・・・，ｓｎ(k)）の列Ｓ(1)，Ｓ(2)，・・・，Ｓ(K)を種として受け付ける種受付ステップと、
前記ｎ次元ベクトルの列Ｓ(1)，Ｓ(2)，・・・，Ｓ(K)を、ｗビットの整数ｘi(k)のｎ次元ベクトルＸ(k)＝（ｘ１(k)，ｘ２(k)，・・・，ｘｎ(k)）の列Ｘ(1)，Ｘ(2)，・・・，Ｘ(K)として与える初期化ステップと、
前記ｎ次元ベクトルの列Ｘ(1)，Ｘ(2)，・・・，Ｘ(K)のそれぞれに対して前記ｎ次元ベクトルの列Ｘ(1)，Ｘ(2)，・・・，Ｘ(K)から決定される変換行列を用いた写像変換を施してｗビットの整数ｙi(k)のｎ次元ベクトルＹ(k)＝（ｙ１(k)，ｙ２(k)，・・・，ｙｎ(k)）の列Ｙ(1)，Ｙ(2)，・・・，Ｙ(K)を得る変換ステップと、
前記ｎ次元ベクトルの列Ｙ(1)，Ｙ(2)，・・・，Ｙ(K)をｗ×Ｋ×ｎビットのビット列ｙ１(1)，ｙ１(2)，・・・，ｙ１(K)，ｙ２(1)，ｙ２(2)，・・・，ｙ２(K)，・・・，ｙｎ(1)，ｙｎ(2)，・・・，ｙｎ(K)とみて、その一部または全部に対して所定の回転ビット数の回転演算を行って得られたｗ×Ｋ×ｎビットのビット列を、ｗビットの整数ｚi(k)の列ｚ１(1)，ｚ１(2)，・・・，ｚ１(K)，ｚ２(1)，ｚ２(2)，・・・，ｚ２(K)，・・・，ｚｎ(1)，ｚｎ(2)，・・・，ｚｎ(K)とみて、ｎ次元ベクトルＺ(k)＝（ｚ１(k)，ｚ２(k)，・・・，ｚｎ(k)）の列Ｚ(1)，Ｚ(2)，・・・，Ｚ(K)を得る回転ステップと、
前記ｎ次元ベクトルの列Ｚ(1)，Ｚ(2)，・・・，Ｚ(K)をｎ次元ベクトルの列Ｘ(1)，Ｘ(2)，・・・，Ｘ(K)として前記変換ステップに与える更新ステップと、
前記変換ステップ、回転ステップおよび更新ステップによる処理が所定回数繰り返された後、最後に得られたｎ次元ベクトルの列Ｚ(1)，Ｚ(2)，・・・，Ｚ(K)のそれぞれに対してｎ次元ベクトルからｍ次元ベクトルへの射影変換を行い、ｗビットの整数ｒi(k)のｍ次元ベクトルＲ(k)＝（ｒ１(k)，ｒ２(k)，・・・，ｒｍ(k)）の列Ｒ(1)，Ｒ(2)，・・・，Ｒ(K)を得る射影ステップと、
前記ｍ次元ベクトルの列Ｒ(1)，Ｒ(2)，・・・，Ｒ(K)をｍ次元ｗビットの疑似乱数列ｒ１(1)，ｒ１(2)，・・・，ｒ１(K)，ｒ２(1)，ｒ２(2)，・・・，ｒ２(K)，・・・，ｒｍ(1)，ｒｍ(2)，・・・，ｒｍ(K)として出力する出力ステップと
を実行させるための疑似乱数列生成プログラム。
【請求項９】
請求項８記載の疑似乱数列生成プログラムを実行するコンピュータに、
ｍ次元ｗビットの疑似乱数列ｒ１(1)，ｒ１(2)，・・・，ｒ１(K)，ｒ２(1)，ｒ２(2)，・・・，ｒ２(K)，・・・，ｒｍ(1)，ｒｍ(2)，・・・，ｒｍ(K)を出力する疑似乱数列生成ステップと、
ｍ次元ｗビットの整数列ｐ１(1)，ｐ１(2)，・・・，ｐ１(K)，ｐ２(1)，ｐ２(2)，・・・，ｐ２(K)，・・・，ｐｍ(1)，ｐｍ(2)，・・・，ｐｍ(K)を暗号化または復号化対象のデータとして受け付けるデータ受付ステップと、
前記疑似乱数列と前記暗号化または復号化対象のデータの排他的論理和ｐ１(1)   ｘｏｒ  ｒ１(1)，ｐ１(2)   ｘｏｒ  ｒ１(2)，・・・，ｐ１(K)   ｘｏｒ  ｒ１(K)，ｐ２(1)   ｘｏｒ  ｒ２(1)，ｐ２(2)   ｘｏｒ  ｒ２(2)，・・・，ｐ２(K)   ｘｏｒ  ｒ２(K)，・・・，ｐｍ(1)   ｘｏｒ  ｒｍ(1)，ｐｍ(2)   ｘｏｒ  ｒｍ(2)，・・・，ｐｍ(K)   ｘｏｒ  ｒｍ(K)を暗号化または復号化の結果として出力する暗号化復号化ステップと
を実行させるための暗号化復号化プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、疑似乱数の列を生成する疑似乱数列生成装置、暗号化復号化装置、疑似乱数列生成方法、暗号化復号化方法、疑似乱数列生成プログラムおよび暗号化復号化プログラムに関する。
【背景技術】
【０００２】
近年、カオス理論を用いた暗号方式がいくつか提案されている。暗号におけるカオスは初期値鋭敏性や予測不可能性などの良い特徴を持ち、また高速であることが期待される。例えば、非特許文献１および特許文献１，２において、これらの特徴を利用したストリーム暗号のＶＳＣ（Ｖｅｃｔｏｒ  Ｓｔｒｅａｍ  Ｃｉｐｈｅｒ：ベクター・ストリーム・サイファ）１２８が提案されている。
【０００３】
ＶＳＣは、ストリーム暗号方式の疑似乱数列生成器部分にカオス理論を適用した共通鍵暗号である。ＶＳＣでは、次の式で表される１次元のカオス写像を用いる。
【数１】
2007264147.tif 000003
【０００４】
また、ＶＳＣ１２８は、次式で表される８個の１次元写像を用い、以下の手順で疑似乱数列を生成する。図１８はＶＳＣ１２８による疑似乱数列生成装置の構成を示すブロック図である。この疑似乱数列生成装置では、以下の手順により疑似乱数列を生成する。
（１）１２８ビットの共通鍵を３２ビットの４つの変数に格納。
（２）１２８ビットの初期ベクトルを３２ビットの４つの変数に格納。
（３）変数変換（ＶＳＣ１２８の制御パラメータの生成と写像）。
（４）２５６ビット（８個の変数）のビット列を５ビット左にシフト回転。
（５）手順（３）、（４）を８回繰り返す。
【数２】
2007264147.tif 000004
【０００５】
また、このようなＶＳＣ１２８を用いた疑似乱数列生成方法および暗号化復号化方法が、特許文献３，４において提案されている。これらの疑似乱数列生成方法および暗号化復号化方法では、所定の整数と様々な写像を用いて疑似乱数列を生成している。
【０００６】
ところで、カオスを生成する方法の一つとして、２次元キャットマップ（Ａｒｎｏｌｄ‘ｓ  Ｃａｔ  Ｍａｐ）が知られている。２次元キャットマップは、変換行列の行列式が１となる制御パラメータα，βを持つ面積保存写像であり、次の式で表される。
【数３】
2007264147.tif 000005
例として、α＝β＝１，Ｎ＝１の場合の写像を図１９に示す。ここで、単位正方領域が線形変換で引き伸ばされ、次にｍｏｄ（剰余）で折り畳まれる操作がみられる。ｘn，ｙnが連続値をとる場合には、２次元キャットマップＦを繰り返し適用することで、カオス系列を生成することができる。例として、α＝β＝１，Ｎ＝１２８の場合に２次元キャットマップＦを繰り返し適用した写像を図２０に示す。
【０００７】
【特許文献１】特許第３０３０３４１号公報
【特許文献２】特許第３４５５７４８号公報
【特許文献３】特許第３７００００２号公報
【特許文献４】特許第３７３５６７０号公報
【非特許文献１】梅野健，“ＶＳＣ１２８Ｓ仕様書”，［online］，平成１６年９月１７日，株式会社カオスウェア，［平成１８年３月７日検索］，インターネット＜ＵＲＬ：http://www.chaosware.com/vsc128s.pdf＞
【発明の開示】
【発明が解決しようとする課題】
【０００８】
このように、２次元キャットマップを繰り返し適用した面積保存写像は、変換行列の行列式が１であるため、１対１写像となり、初期点、行列の係数をすべて整数とすることで、整数上の１対１写像に拡張できるという性質がある。また、恒等変換、回転変換を除いて、必ず絶対値が１以上の固有値を持ち、カオス系列を生成することが可能である。
【０００９】
ところが、整数上に拡張した面積保存写像の場合、状態離散化によって、周期系列を生成してしまうという問題がある。図２１は２次元キャットマップのＮを整数上の１〜１２８とした場合の最大周期を示している。すなわち、２次元キャットマップを繰り返し適用すると状態数Ｎに対して比較的短周期で面積保存写像が元の画像に戻ってしまうという問題がある。図２２はα＝４０，β＝８，Ｎ＝１２４の場合の写像を示しており、５回写像で元の画像へ戻っている。
【００１０】
したがって、２次元キャットマップは、疑似乱数列生成や暗号化復号化に不適であるといわれており、特許文献３，４の疑似乱数列生成方法および暗号化復号化方法においても採用されていない。
【００１１】
そこで、本発明においては、従来、疑似乱数列生成や暗号化復号化に不適であるといわれている２次元キャットマップのような写像変換を用いて疑似乱数列生成および暗号化復号化を可能にした疑似乱数列生成装置、暗号化復号化装置、疑似乱数列生成方法、暗号化復号化方法、疑似乱数列生成プログラムおよび暗号化復号化プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１２】
本発明の疑似乱数列生成装置は、ｍ次元ｗビットの疑似乱数の列を生成する疑似乱数列生成装置であって、ｗビットの整数ｓi(k)（但し、２以上の整数Ｋに対して、ｋ＝１，２，・・・，Ｋとする。以下同じ。）のｎ次元ベクトルＳ(k)＝（ｓ1(k)，ｓ2(k)，・・・，ｓn(k)）の列Ｓ(1)，Ｓ(2)，・・・，Ｓ(K)を種として受け付ける種受付部と、ｎ次元ベクトルの列Ｓ(1)，Ｓ(2)，・・・，Ｓ(K)を、ｗビットの整数ｘi(k)のｎ次元ベクトルＸ(k)＝（ｘ1(k)，ｘ2(k)，・・・，ｘn(k)）の列Ｘ(1)，Ｘ(2)，・・・，Ｘ(K)として与える初期化部と、ｎ次元ベクトルの列Ｘ(1)，Ｘ(2)，・・・，Ｘ(K)のそれぞれに対してｎ次元ベクトルの列Ｘ(1)，Ｘ(2)，・・・，Ｘ(K)から決定される変換行列を用いた写像変換を施してｗビットの整数ｙi(k)のｎ次元ベクトルＹ(k)＝（ｙ1(k)，ｙ2(k)，・・・，ｙn(k)）の列Ｙ(1)，Ｙ(2)，・・・，Ｙ(K)を得る変換部と、ｎ次元ベクトルの列Ｙ(1)，Ｙ(2)，・・・，Ｙ(K)をｗ×Ｋ×ｎビットのビット列ｙ1(1)，ｙ1(2)，・・・，ｙ1(K)，ｙ2(1)，ｙ2(2)，・・・，ｙ2(K)，・・・，ｙn(1)，ｙn(2)，・・・，ｙn(K)とみて、その一部または全部に対して所定の回転ビット数の回転演算を行って得られたｗ×Ｋ×ｎビットのビット列を、ｗビットの整数ｚi(k)の列ｚ1(1)，ｚ1(2)，・・・，ｚ1(K)，ｚ2(1)，ｚ2(2)，・・・，ｚ2(K)，・・・，ｚn(1)，ｚn(2)，・・・，ｚn(K)とみて、ｎ次元ベクトルＺ(k)＝（ｚ1(k)，ｚ2(k)，・・・，ｚn(k)）の列Ｚ(1)，Ｚ(2)，・・・，Ｚ(K)を得る回転部と、ｎ次元ベクトルの列Ｚ(1)，Ｚ(2)，・・・，Ｚ(K)をｎ次元ベクトルの列Ｘ(1)，Ｘ(2)，・・・，Ｘ(K)として変換部に与える更新部と、変換部、回転部および更新部による処理が所定回数繰り返された後、最後に得られたｎ次元ベクトルの列Ｚ(1)，Ｚ(2)，・・・，Ｚ(K)のそれぞれに対してｎ次元ベクトルからｍ次元ベクトルへの射影変換を行い、ｗビットの整数ｒi(k)のｍ次元ベクトルＲ(k)＝（ｒ1(k)，ｒ2(k)，・・・，ｒm(k)）の列Ｒ(1)，Ｒ(2)，・・・，Ｒ(K)を得る射影部と、ｍ次元ベクトルの列Ｒ(1)，Ｒ(2)，・・・，Ｒ(K)をｍ次元ｗビットの疑似乱数列ｒ1(1)，ｒ1(2)，・・・，ｒ1(K)，ｒ2(1)，ｒ2(2)，・・・，ｒ2(K)，・・・，ｒm(1)，ｒm(2)，・・・，ｒm(K)として出力する出力部とを備えるものである。
【００１３】
また、本発明の暗号化復号化装置は、上記本発明の疑似乱数列生成装置から構成され、ｍ次元ｗビットの疑似乱数列ｒ1(1)，ｒ1(2)，・・・，ｒ1(K)，ｒ2(1)，ｒ2(2)，・・・，ｒ2(K)，・・・，ｒm(1)，ｒm(2)，・・・，ｒm(K)を出力する疑似乱数列生成部と、ｍ次元ｗビットの整数列ｐ1(1)，ｐ1(2)，・・・，ｐ1(K)，ｐ2(1)，ｐ2(2)，・・・，ｐ2(K)，・・・，ｐm(1)，ｐm(2)，・・・，ｐm(K)を暗号化または復号化対象のデータとして受け付けるデータ受付部と、疑似乱数列と暗号化または復号化対象のデータの排他的論理和ｐ1(1)   ｘｏｒ  ｒ1(1)，ｐ1(2)   ｘｏｒ  ｒ1(2)，・・・，ｐ1(K)   ｘｏｒ  ｒ1(K)，ｐ2(1)   ｘｏｒ  ｒ2(1)，ｐ2(2)   ｘｏｒ  ｒ2(2)，・・・，ｐ2(K)   ｘｏｒ  ｒ2(K)，・・・，ｐn(1)   ｘｏｒ  ｒm(1)，ｐm(2)   ｘｏｒ  ｒm(2)，・・・，ｐm(K)   ｘｏｒ  ｒm(K)を暗号化または復号化の結果として出力する暗号化復号化部とを備えたものである。
【００１４】
また、本発明の疑似乱数列生成方法は、コンピュータによりｍ次元ｗビットの疑似乱数の列を生成する乱数列生成方法であって、コンピュータが、ｗビットの整数ｓi(k)（但し、２以上の整数Ｋに対して、ｋ＝１，２，・・・，Ｋとする。以下同じ。）のｎ次元ベクトルＳ(k)＝（ｓ1(k)，ｓ2(k)，・・・，ｓn(k)）の列Ｓ(1)，Ｓ(2)，・・・，Ｓ(K)を種として受け付ける種受付ステップと、コンピュータが、ｎ次元ベクトルの列Ｓ(1)，Ｓ(2)，・・・，Ｓ(K)を、ｗビットの整数ｘi(k)のｎ次元ベクトルＸ(k)＝（ｘ1(k)，ｘ2(k)，・・・，ｘn(k)）の列Ｘ(1)，Ｘ(2)，・・・，Ｘ(K)として与える初期化ステップと、コンピュータが、ｎ次元ベクトルの列Ｘ(1)，Ｘ(2)，・・・，Ｘ(K)のそれぞれに対してｎ次元ベクトルの列Ｘ(1)，Ｘ(2)，・・・，Ｘ(K)から決定される変換行列を用いた写像変換を施してｗビットの整数ｙi(k)のｎ次元ベクトルＹ(k)＝（ｙ1(k)，ｙ2(k)，・・・，ｙn(k)）の列Ｙ(1)，Ｙ(2)，・・・，Ｙ(K)を得る変換ステップと、コンピュータが、ｎ次元ベクトルの列Ｙ(1)，Ｙ(2)，・・・，Ｙ(K)をｗ×Ｋ×ｎビットのビット列ｙ1(1)，ｙ1(2)，・・・，ｙ1(K)，ｙ2(1)，ｙ2(2)，・・・，ｙ2(K)，・・・，ｙn(1)，ｙn(2)，・・・，ｙn(K)とみて、その一部または全部に対して所定の回転ビット数の回転演算を行って得られたｗ×Ｋ×ｎビットのビット列を、ｗビットの整数ｚi(k)の列ｚ1(1)，ｚ1(2)，・・・，ｚ1(K)，ｚ2(1)，ｚ2(2)，・・・，ｚ2(K)，・・・，ｚn(1)，ｚn(2)，・・・，ｚn(K)とみて、ｎ次元ベクトルＺ(k)＝（ｚ1(k)，ｚ2(k)，・・・，ｚn(k)）の列Ｚ(1)，Ｚ(2)，・・・，Ｚ(K)を得る回転ステップと、コンピュータが、ｎ次元ベクトルの列Ｚ(1)，Ｚ(2)，・・・，Ｚ(K)をｎ次元ベクトルの列Ｘ(1)，Ｘ(2)，・・・，Ｘ(K)として変換ステップに与える更新ステップと、変換ステップ、回転ステップおよび更新ステップによる処理が所定回数繰り返された後、コンピュータが、最後に得られたｎ次元ベクトルの列Ｚ(1)，Ｚ(2)，・・・，Ｚ(K)のそれぞれに対してｎ次元ベクトルからｍ次元ベクトルへの射影変換を行い、ｗビットの整数ｒi(k)のｍ次元ベクトルＲ(k)＝（ｒ1(k)，ｒ2(k)，・・・，ｒm(k)）の列Ｒ(1)，Ｒ(2)，・・・，Ｒ(K)を得る射影ステップと、コンピュータが、ｍ次元ベクトルの列Ｒ(1)，Ｒ(2)，・・・，Ｒ(K)をｍ次元ｗビットの疑似乱数列ｒ1(1)，ｒ1(2)，・・・，ｒ1(K)，ｒ2(1)，ｒ2(2)，・・・，ｒ2(K)，・・・，ｒm(1)，ｒm(2)，・・・，ｒm(K)として出力する出力ステップとを含むものである。
【００１５】
また、本発明の暗号化復号化方法は、上記本発明の疑似乱数列生成方法により、コンピュータが、ｍ次元ｗビットの疑似乱数列ｒ1(1)，ｒ1(2)，・・・，ｒ1(K)，ｒ2(1)，ｒ2(2)，・・・，ｒ2(K)，・・・，ｒm(1)，ｒm(2)，・・・，ｒm(K)を出力する疑似乱数列生成ステップと、コンピュータが、ｍ次元ｗビットの整数列ｐ1(1)，ｐ1(2)，・・・，ｐ1(K)，ｐ2(1)，ｐ2(2)，・・・，ｐ2(K)，・・・，ｐm(1)，ｐm(2)，・・・，ｐm(K)を暗号化または復号化対象のデータとして受け付けるデータ受付ステップと、コンピュータが、疑似乱数列と暗号化または復号化対象のデータの排他的論理和ｐ1(1)   ｘｏｒ  ｒ1(1)，ｐ1(2)   ｘｏｒ  ｒ1(2)，・・・，ｐ1(K)   ｘｏｒ  ｒ1(K)，ｐ2(1)   ｘｏｒ  ｒ2(1)，ｐ2(2)   ｘｏｒ  ｒ2(2)，・・・，ｐ2(K)   ｘｏｒ  ｒ2(K)，・・・，ｐm(1)   ｘｏｒ  ｒm(1)，ｐm(2)   ｘｏｒ  ｒm(2)，・・・，ｐm(K)   ｘｏｒ  ｒm(K)を暗号化または復号化の結果として出力する暗号化復号化ステップとを含むものである。
【００１６】
また、本発明の疑似乱数列生成プログラムは、コンピュータに、ｗビットの整数ｓi(k) （但し、２以上の整数Ｋに対して、ｋ＝１，２，・・・，Ｋとする。以下同じ。）のｎ次元ベクトルＳ(k)＝（ｓ1(k)，ｓ2(k)，・・・，ｓn(k)）の列Ｓ(1)，Ｓ(2)，・・・，Ｓ(K)を種として受け付ける種受付ステップと、ｎ次元ベクトルの列Ｓ(1)，Ｓ(2)，・・・，Ｓ(K)を、ｗビットの整数ｘi(k)のｎ次元ベクトルＸ(k)＝（ｘ1(k)，ｘ2(k)，・・・，ｘn(k)）の列Ｘ(1)，Ｘ(2)，・・・，Ｘ(K)として与える初期化ステップと、ｎ次元ベクトルの列Ｘ(1)，Ｘ(2)，・・・，Ｘ(K)のそれぞれに対してｎ次元ベクトルの列Ｘ(1)，Ｘ(2)，・・・，Ｘ(K)から決定される変換行列を用いた写像変換を施してｗビットの整数ｙi(k)のｎ次元ベクトルＹ(k)＝（ｙ1(k)，ｙ2(k)，・・・，ｙn(k)）の列Ｙ(1)，Ｙ(2)，・・・，Ｙ(K)を得る変換ステップと、ｎ次元ベクトルの列Ｙ(1)，Ｙ(2)，・・・，Ｙ(K)をｗ×Ｋ×ｎビットのビット列ｙ1(1)，ｙ1(2)，・・・，ｙ1(K)，ｙ2(1)，ｙ2(2)，・・・，ｙ2(K)，・・・，ｙn(1)，ｙn(2)，・・・，ｙn(K)とみて、その一部または全部に対して所定の回転ビット数の回転演算を行って得られたｗ×Ｋ×ｎビットのビット列を、ｗビットの整数ｚi(k)の列ｚ1(1)，ｚ1(2)，・・・，ｚ1(K)，ｚ2(1)，ｚ2(2)，・・・，ｚ2(K)，・・・，ｚn(1)，ｚn(2)，・・・，ｚn(K)とみて、ｎ次元ベクトルＺ(k)＝（ｚ1(k)，ｚ2(k)，・・・，ｚn(k)）の列Ｚ(1)，Ｚ(2)，・・・，Ｚ(K)を得る回転ステップと、ｎ次元ベクトルの列Ｚ(1)，Ｚ(2)，・・・，Ｚ(K)をｎ次元ベクトルの列Ｘ(1)，Ｘ(2)，・・・，Ｘ(K)として前記変換ステップに与える更新ステップと、変換ステップ、回転ステップおよび更新ステップによる処理が所定回数繰り返された後、最後に得られたｎ次元ベクトルの列Ｚ(1)，Ｚ(2)，・・・，Ｚ(K)のそれぞれに対してｎ次元ベクトルからｍ次元ベクトルへの射影変換を行い、ｗビットの整数ｒi(k)のｍ次元ベクトルＲ(k)＝（ｒ1(k)，ｒ2(k)，・・・，ｒm(k)）の列Ｒ(1)，Ｒ(2)，・・・，Ｒ(K)を得る射影ステップと、ｍ次元ベクトルの列Ｒ(1)，Ｒ(2)，・・・，Ｒ(K)をｍ次元ｗビットの疑似乱数列ｒ1(1)，ｒ1(2)，・・・，ｒ1(K)，ｒ2(1)，ｒ2(2)，・・・，ｒ2(K)，・・・，ｒm(1)，ｒm(2)，・・・，ｒm(K)として出力する出力ステップとを実行させるためのものである。
【００１７】
また、本発明の暗号化復号化プログラムは、上記本発明の疑似乱数列生成プログラムを実行するコンピュータに、ｍ次元ｗビットの疑似乱数列ｒ1(1)，ｒ1(2)，・・・，ｒ1(K)，ｒ2(1)，ｒ2(2)，・・・，ｒ2(K)，・・・，ｒm(1)，ｒm(2)，・・・，ｒm(K)を出力する疑似乱数列生成ステップと、ｍ次元ｗビットの整数列ｐ1(1)，ｐ1(2)，・・・，ｐ1(K)，ｐ2(1)，ｐ2(2)，・・・，ｐ2(K)，・・・，ｐm(1)，ｐm(2)，・・・，ｐm(K)を暗号化または復号化対象のデータとして受け付けるデータ受付ステップと、疑似乱数列と暗号化または復号化対象のデータの排他的論理和ｐ1(1)   ｘｏｒ  ｒ1(1)，ｐ1(2)   ｘｏｒ  ｒ1(2)，・・・，ｐ1(K)   ｘｏｒ  ｒ1(K)，ｐ2(1)   ｘｏｒ  ｒ2(1)，ｐ2(2)   ｘｏｒ  ｒ2(2)，・・・，ｐ2(K)   ｘｏｒ  ｒ2(K)，・・・，ｐm(1)   ｘｏｒ  ｒm(1)，ｐm(2)   ｘｏｒ  ｒm(2)，・・・，ｐm(K)   ｘｏｒ  ｒm(K)を暗号化または復号化の結果として出力する暗号化復号化ステップとを実行させるためのものである。
【００１８】
本発明によれば、ｗビットの整数ｓi(k)のｎ次元ベクトルＳ(k)＝（ｓ1(k)，ｓ2(k)，・・・，ｓn(k)）の列Ｓ(1)，Ｓ(2)，・・・，Ｓ(K)が種として受け付けられ、ｎ次元ベクトルの列Ｓ(1)，Ｓ(2)，・・・，Ｓ(K)が、ｗビットの整数ｘi(k)のｎ次元ベクトルＸ(k)＝（ｘ1(k)，ｘ2(k)，・・・，ｘn(k)）の列Ｘ(1)，Ｘ(2)，・・・，Ｘ(K)として与えられ、ｎ次元ベクトルの列Ｘ(1)，Ｘ(2)，・・・，Ｘ(K)のそれぞれに対してｎ次元ベクトルの列Ｘ(1)，Ｘ(2)，・・・，Ｘ(K)から決定される変換行列を用いた写像変換が施されてｗビットの整数ｙi(k)のｎ次元ベクトルＹ(k)＝（ｙ1(k)，ｙ2(k)，・・・，ｙn(k)）の列Ｙ(1)，Ｙ(2)，・・・，Ｙ(K)が得られて、ｎ次元ベクトルの列Ｙ(1)，Ｙ(2)，・・・，Ｙ(K)がｗ×Ｋ×ｎビットのビット列ｙ1(1)，ｙ1(2)，・・・，ｙ1(K)，ｙ2(1)，ｙ2(2)，・・・，ｙ2(K)，・・・，ｙn(1)，ｙn(2)，・・・，ｙn(K)とみられて、その一部または全部に対して所定の回転ビット数の回転演算が行われて得られたｗ×Ｋ×ｎビットのビット列が、ｗビットの整数ｚi(k)の列ｚ1(1)，ｚ1(2)，・・・，ｚ1(K)，ｚ2(1)，ｚ2(2)，・・・，ｚ2(K)，・・・，ｚn(1)，ｚn(2)，・・・，ｚn(K)とみられて、ｎ次元ベクトルＺ(k)＝（ｚ1(k)，ｚ2(k)，・・・，ｚn(k)）の列Ｚ(1)，Ｚ(2)，・・・，Ｚ(K)が得られ、ｎ次元ベクトルの列Ｚ(1)，Ｚ(2)，・・・，Ｚ(K)をｎ次元ベクトルの列Ｘ(1)，Ｘ(2)，・・・，Ｘ(K)とする更新が行われる。そして、ｎ次元ベクトルの列Ｘ(1)，Ｘ(2)，・・・，Ｘ(K)から決定される変換行列を用いた写像変換、回転演算および更新が所定回数繰り返された後、最後に得られたｎ次元ベクトルの列Ｚ(1)，Ｚ(2)，・・・，Ｚ(K)のそれぞれに対してｎ次元ベクトルからｍ次元ベクトルへの射影変換が行われ、ｗビットの整数ｒi(k)のｍ次元ベクトルＲ(k)＝（ｒ1(k)，ｒ2(k)，・・・，ｒm(k)）の列Ｒ(1)，Ｒ(2)，・・・，Ｒ(K)が得られて、ｍ次元ベクトルの列Ｒ(1)，Ｒ(2)，・・・，Ｒ(K)がｍ次元ｗビットの疑似乱数列ｒ1(1)，ｒ1(2)，・・・，ｒ1(K)，ｒ2(1)，ｒ2(2)，・・・，ｒ2(K)，・・・，ｒm(1)，ｒm(2)，・・・，ｒm(K)として出力される。このように、本発明では、ｎ次元ベクトルの列Ｘ(1)，Ｘ(2)，・・・，Ｘ(K)から決定される変換行列を用いた写像変換を施した後、その一部または全部に対して所定の回転ビット数の回転演算が行われ、さらにｎ次元ベクトルの列Ｘ(1)，Ｘ(2)，・・・，Ｘ(K)から決定される変換行列を用いた写像変換および回転演算が所定回数繰り返し行われることによって、乱数性の高い多次元疑似乱数列が生成される。
【００１９】
また、本発明では、この生成された多次元疑似乱数列を用いて、暗号化または復号化対象のデータとして受け付けたデータとの排他的論理和を形成することにより、暗号化または復号化を行うことが可能である。
【００２０】
ここで、写像変換は、次式により行うものであることが望ましい。
【数４】
2007264147.tif 000006
但し、ａi,j(k)（Ｘ）は、２wビット整数を出力するＸの関数である。
【００２１】
これにより、ｎ次元ベクトルＸ(k)＝（ｘ1(k)，ｘ2(k)，・・・，ｘn(k)）の列Ｘ(1)，Ｘ(2)，・・・，Ｘ(K)を用いて相互に変換行列Ａ(k)を決定することができ、変換行列Ａ(k)を固定した場合と比較して、より乱数性が高い疑似乱数列を生成することが可能となる。
【００２２】
また、このとき、変換行列Ａ(k)は、
【数５】
2007264147.tif 000007
を満たすものであることが望ましい。このように、行列式が１となる変換行列Ａ(k)は、２次元であれば面積保存写像、３次元以上のｎ次元であれば体積保存写像となり、ｗビット整数のｎ次元ベクトル上での１対１写像を得ることができる。すなわち、個々の変換行列Ａ(k)による変換が１対１写像となることで、Ｋ個の変換行列による変換もｗビット整数のＫ×ｎ次元ベクトル上での１対１写像となる。
【発明の効果】
【００２３】
本発明によれば、ｎ次元ベクトルの列Ｘ(1)，Ｘ(2)，・・・，Ｘ(K)から決定される変換行列を用いた写像変換の性質により乱数性の高い多次元疑似乱数列を生成することが可能であり、この乱数性の高い多次元疑似乱数列を用いることにより、安全性の高い暗号化復号化を行うことが可能となる。
【００２４】
また、行列式が１となる変換行列を用いることで１対１の変換となり、異なる２つのベクトルの変換結果が同じベクトルに一致してしまうことを防ぐことが可能となる。したがって、ｗビット整数のＫ×ｎ次元空間の点を全て使用することができる。また、行列式が１となることで、恒等変換と回転変換を除いて、必ず１より大きい固有値が存在し、そのカオス性により、多様な疑似乱数列を生成できる。これにより、ｎ次元ベクトルの列Ｘ(1)，Ｘ(2)，・・・，Ｘ(K)から決定される変換行列を用いた写像変換の性質と両立させることで、種として受け付けるｗビットの整数ｓi(k)のｎ次元ベクトルＳ(k)＝（ｓ1(k)，ｓ2(k)，・・・，ｓn(k)）の列Ｓ(1)，Ｓ(2)，・・・，Ｓ(K)に応じた乱数性の高い疑似乱数列を生成することが可能となり、より安全性の高い暗号化復号化を行うことが可能となる。
【００２５】
また、本発明における疑似乱数生成は、行列とベクトルの積を基本演算としており、行列演算処理の並列化による処理速度の高速化並びにハードウェア実装にも適している。
【発明を実施するための最良の形態】
【００２６】
（実施の形態１）
まず、以下の説明において使用する変数および関数について説明する。
本発明の実施の形態における疑似乱数列生成装置は、Ｋ（２以上の整数）個のｎ次元ベクトルの列Ｘ(1)，Ｘ(2)，・・・，Ｘ(K)から決定される変換行列Ａ(k)（ｋ＝１，２，・・・，Ｋ）を用いた写像変換により、ｍ個のＫ×ｗビット疑似乱数列を生成するものである（但し、１≦ｍ≦ｎ）。
【００２７】
ｘ，ｙ，ｚ，ｒ，ｓはそれぞれ２wビット整数、Ｘ(k)，Ｙ(k)，Ｚ(k)，Ｓ(k)はそれぞれｎ次元ベクトル、Ｒ(k)はｍ次元ベクトルである（ここで、ｋ＝１，２，・・・，Ｋ）。
Ｘ(k)，Ｙ(k)，Ｚ(k)，Ｓ(k)，Ｒ(k)を行列で表すと、
【数６】
2007264147.tif 000008
である。
【００２８】
また、Ｘ，Ｙ，Ｚ，Ｓは、それぞれ上記ｎ次元ベクトルＸ(k)，Ｙ(k)，Ｚ(k)，Ｓ(k)のＫ個組みの列、Ｒは、上記ｍ次元ベクトルＲ(k)のＫ個組みの列であり、
【数７】
2007264147.tif 000009
で表される。
【００２９】
また、変換行列Ａ(k)は、
【数８】
2007264147.tif 000010
で表される。
【００３０】
ここで、ａi,j(k)（Ｘ）（ｉ，ｊ＝１，２，・・・，ｎ）は、２wビット整数を出力するＸの関数であり、Ｘの要素および所定の定数に、所定のビット演算（例えば、ＡＮＤ演算、ＯＲ演算、ＮＯＴ演算、ＸＯＲ演算、回転演算や、これらの組み合わせ）を適用して得られる要素に対し、所定の整数演算（例えば、加減乗除演算、剰余演算や、これらの組み合わせ）を適用して得られる有理多項式である。
【００３１】
なお、以下の例では、Φ(k)を、ｋ番目の変換行列Ａ(k)を決定するｎ個のパラメータαi(k)（Ｘ）（２wビット整数を出力するＸの関数）の組みの列として、
【数９】
2007264147.tif 000011
で表し、Ａ(k)は、Φ(k)によって決定されるｋ番目のｎ×ｎ変換行列
【数１０】
2007264147.tif 000012
で表されるものを使用する。
【００３２】
ここで、αi(k)（Ｘ）（ｉ＝１，２，・・・，ｎ）は、２wビット整数を出力するＸの関数であり、Ｘの要素および所定の定数に、所定のビット演算（例えば、ＡＮＤ演算、ＯＲ演算、ＮＯＴ演算、ＸＯＲ演算、回転演算や、これらの組み合わせ）を適用して得られる要素に対し、所定の整数演算（例えば、加減乗除演算、剰余演算や、これらの組み合わせ）を適用して得られる有理多項式である。また、ａi,j（Φ(k)）（ｉ，ｊ＝１，２，・・・，ｎ）は、２wビット整数を出力するΦ(k)の関数であり、Φ(k)の要素および所定の定数に、所定のビット演算（例えば、ＡＮＤ演算、ＯＲ演算、ＮＯＴ演算、ＸＯＲ演算、回転演算や、これらの組み合わせ）を適用して得られる要素に対し、所定の整数演算（例えば、加減乗除演算、剰余演算や、これらの組み合わせ）を適用して得られる有理多項式である。
【００３３】
また、本実施形態において、Ａ(k)は、次式の条件を満たすように構成される。すなわち、２次元の場合は面積を保存し、３次元以上の場合は体積を保存する（ｎ次元の場合も一般に体積保存と称される。）。
【数１１】
2007264147.tif 000013
【００３４】
次に、本発明の実施の形態における疑似乱数列生成装置について説明する。図１は本発明の実施の形態における疑似乱数列生成装置の構成を示すブロック図である。
【００３５】
図１に示すように、本発明の実施の形態における疑似乱数列生成装置１は、種受付部１０、初期化部１１、変換部１２、回転部１３、更新部１４、射影部１５および出力部１６を備える。疑似乱数列生成装置１は、一般的なコンピュータ上で、このコンピュータを種受付部１０、初期化部１１、変換部１２、回転部１３、更新部１４、射影部１５および出力部１６として機能させるための疑似乱数列生成プログラムを実行することにより実現される。
【００３６】
種受付部１０は、ｗビットの整数ｓi(k)のｎ次元ベクトルＳ(k)＝（ｓ1(k)，ｓ2(k)，・・・，ｓn(k)）の列Ｓ(1)，Ｓ(2)，・・・，Ｓ(K)を種として受け付けるものである。
【００３７】
初期化部１１は、ｎ次元ベクトルの列Ｓ(1)，Ｓ(2)，・・・，Ｓ(K)を、ｗビットの整数ｘi(k)のｎ次元ベクトルＸ(k)＝（ｘ1(k)，ｘ2(k)，・・・，ｘn(k)）の列Ｘ(1)，Ｘ(2)，・・・，Ｘ(K)として与えるものであり、次式により表される。
【数１２】
2007264147.tif 000014
【００３８】
変換部１２は、ｎ次元ベクトルの列Ｘ(1)，Ｘ(2)，・・・，Ｘ(K)のそれぞれに対してｎ次元ベクトルの列Ｘ(1)，Ｘ(2)，・・・，Ｘ(K)から決定される変換行列を用いたｎ次元体積保存写像変換を施してｗビットの整数ｙi(k)のｎ次元ベクトルＹ(k)＝（ｙ1(k)，ｙ2(k)，・・・，ｙn(k)）の列Ｙ(1)，Ｙ(2)，・・・，Ｙ(K)を得るものであり、次式により表される。
【数１３】
2007264147.tif 000015
【００３９】
回転部１３は、ｎ次元ベクトルの列Ｙ(1)，Ｙ(2)，・・・，Ｙ(K)をｗ×Ｋ×ｎビットのビット列ｙ1(1)，ｙ1(2)，・・・，ｙ1(K)，ｙ2(1)，ｙ2(2)，・・・，ｙ2(K)，・・・，ｙn(1)，ｙn(2)，・・・，ｙn(K)とみて、その一部または全部に対して所定の回転ビット数の回転演算を行って得られたｗ×Ｋ×ｎビットのビット列を、ｗビットの整数ｚi(k)の列ｚ1(1)，ｚ1(2)，・・・，ｚ1(K)，ｚ2(1)，ｚ2(2)，・・・，ｚ2(K)，・・・，ｚn(1)，ｚn(2)，・・・，ｚn(K)とみて、ｎ次元ベクトルＺ(k)＝（ｚ1(k)，ｚ2(k)，・・・，ｚn(k)）の列Ｚ(1)，Ｚ(2)，・・・，Ｚ(K)を得るものであり、回転ビット数ｓの回転演算を表す関数rotationsを用いて次式により表される。
【数１４】
2007264147.tif 000016
【００４０】
更新部１４は、ｎ次元ベクトルの列Ｚ(1)，Ｚ(2)，・・・，Ｚ(K)をｎ次元ベクトルの列Ｘ(1)，Ｘ(2)，・・・，Ｘ(K)として変換部１２に与えるものであり、次式により表される。
【数１５】
2007264147.tif 000017
【００４１】
射影部１５は、変換部１２、回転部１３および更新部１４による処理が所定回数繰り返された後、最後に得られたｎ次元ベクトルの列Ｚ(1)，Ｚ(2)，・・・，Ｚ(K)のそれぞれに対してｎ次元ベクトルからｍ次元ベクトルへの射影変換を行い、ｗビットの整数ｒi(k)のｍ次元ベクトルＲ(k)＝（ｒ1(k)，ｒ2(k)，・・・，ｒm(k)）の列Ｒ(1)，Ｒ(2)，・・・，Ｒ(K)を得るものであり、射影変換を表す関数projectionを用いて次式により表される。
【数１６】
2007264147.tif 000018
【００４２】
出力部１６は、ｍ次元ベクトルの列Ｒ(1)，Ｒ(2)，・・・，Ｒ(K)をｍ次元ｗビットの疑似乱数列ｒ1(1)，ｒ1(2)，・・・，ｒ1(K)，ｒ2(1)，ｒ2(2)，・・・，ｒ2(K)，・・・，ｒm(1)，ｒm(2)，・・・，ｒm(K)として出力するものである。
【００４３】
次に、上記構成の疑似乱数列生成装置１による疑似乱数列生成処理手順について説明する。図２は図１の疑似乱数列生成装置による疑似乱数列生成手順を示すフロー図である。
【００４４】
まず、種受付部１０は、ｗビットの整数ｓi(k)のｎ次元ベクトルＳ(k)＝（ｓ1(k)，ｓ2(k)，・・・，ｓn(k)）の列Ｓ(1)，Ｓ(2)，・・・，Ｓ(K)を種として受け付ける（ステップＳ１０１）。初期化部１１は、この受け付けたｎ次元ベクトルの列Ｓ(1)，Ｓ(2)，・・・，Ｓ(K)を、ｗビットの整数ｘi(k)のｎ次元ベクトルＸ(k)＝（ｘ1(k)，ｘ2(k)，・・・，ｘn(k)）の列Ｘ(1)，Ｘ(2)，・・・，Ｘ(K)として与える（ステップＳ１０２）。
【００４５】
変換部１２は、この与えられたｎ次元ベクトルの列Ｘ(1)，Ｘ(2)，・・・，Ｘ(K)のそれぞれに対してｎ次元ベクトルの列Ｘ(1)，Ｘ(2)，・・・，Ｘ(K)から決定される変換行列を用いたｎ次元体積保存写像変換を施してｗビットの整数ｙi(k)のｎ次元ベクトルＹ(k)＝（ｙ1(k)，ｙ2(k)，・・・，ｙn(k)）の列Ｙ(1)，Ｙ(2)，・・・，Ｙ(K)を得る（ステップＳ１０３）。回転部１３は、この得られたｎ次元ベクトルの列Ｙ(1)，Ｙ(2)，・・・，Ｙ(K)をｗ×Ｋ×ｎビットのビット列ｙ1(1)，ｙ1(2)，・・・，ｙ1(K)，ｙ2(1)，ｙ2(2)，・・・，ｙ2(K)，・・・，ｙn(1)，ｙn(2)，・・・，ｙn(K)とみて、その一部または全部に対して所定の回転ビット数の回転演算を行って得られたｗ×Ｋ×ｎビットのビット列を、ｗビットの整数ｚi(k)の列ｚ1(1)，ｚ1(2)，・・・，ｚ1(K)，ｚ2(1)，ｚ2(2)，・・・，ｚ2(K)，・・・，ｚn(1)，ｚn(2)，・・・，ｚn(K)とみて、ｎ次元ベクトルＺ(k)＝（ｚ1(k)，ｚ2(k)，・・・，ｚn(k)）の列Ｚ(1)，Ｚ(2)，・・・，Ｚ(K)を得る（ステップＳ１０４）。
【００４６】
疑似乱数列生成装置１は、ステップＳ１０３，Ｓ１０４の処理を所定回数繰り返したかどうか判断し、所定回数繰り返していない場合、更新部１４は、ｎ次元ベクトルの列Ｚ(1)，Ｚ(2)，・・・，Ｚ(K)をｎ次元ベクトルの列Ｘ(1)，Ｘ(2)，・・・，Ｘ(K)として変換部１２に与える（ステップＳ１０６）。一方、所定回数繰り返した場合、射影部１５は、最後に得られたｎ次元ベクトルの列Ｚ(1)，Ｚ(2)，・・・，Ｚ(K)のそれぞれに対してｎ次元ベクトルからｍ次元ベクトルへの射影変換を行い、ｗビットの整数ｒi(k)のｍ次元ベクトルＲ(k)＝（ｒ1(k)，ｒ2(k)，・・・，ｒm(k)）の列Ｒ(1)，Ｒ(2)，・・・，Ｒ(K)を得る（ステップＳ１０７）。
【００４７】
そして、出力部１６は、この得られたｍ次元ベクトルの列Ｒ(1)，Ｒ(2)，・・・，Ｒ(K)をｍ次元ｗビットの疑似乱数列ｒ1(1)，ｒ1(2)，・・・，ｒ1(K)，ｒ2(1)，ｒ2(2)，・・・，ｒ2(K)，・・・，ｒm(1)，ｒm(2)，・・・，ｒm(K)として出力する（ステップＳ１０８）。
【００４８】
上記のように、本実施形態における疑似乱数列生成装置１によれば、ｎ次元ベクトルの列Ｘ(1)，Ｘ(2)，・・・，Ｘ(K)から決定される変換行列を用いたｎ次元体積保存写像変換を施した後、その一部または全部に対して所定の回転ビット数の回転演算が行われ、さらにｎ次元ベクトルの列Ｘ(1)，Ｘ(2)，・・・，Ｘ(K)から決定される変換行列を用いたｎ次元体積保存写像変換および回転演算が所定回数繰り返し行われることによって、乱数性の高い多次元疑似乱数列が生成される。また、このような乱数性の高い多次元疑似乱数列を用いることで、安全性の高い暗号化復号化を行うことができる。図３は図１の疑似乱数列生成装置１を用いた暗号化復号化装置の構成を示すブロック図である。
【００４９】
図３に示すように、この暗号化復号化装置２は、電子メッセージや電子ファイル等の電子データを暗号化し、暗号化装置２ａと復号化装置２ｂとの間で伝送して復号化するものである。暗号化および復号化には、暗号化装置２ａと復号化装置２ｂとで同じ共通鍵Ｓが種として使用される。
【００５０】
暗号化装置２ａは、疑似乱数列生成装置１により構成され、疑似乱数列を出力する疑似乱数列生成部２１ａと、暗号化対象としての電子データを受け付けるデータ受付部２２ａと、疑似乱数列生成部２１ａから出力される疑似乱数列とデータ受付部２２ａにより受け付けられた電子データとの排他的論理和（ｘｏｒ）を演算し、出力するＸＯＲ部２３ａとから構成される。また、復号化装置２ｂは、疑似乱数列生成装置１により構成され、疑似乱数列を出力する疑似乱数列生成部２１ｂと、復号化対象としての電子データを受け付けるデータ受付部２２ｂと、疑似乱数列生成部２１ｂから出力される疑似乱数列とデータ受付部２２ｂにより受け付けられた電子データとの排他的論理和（ｘｏｒ）を演算し、出力するＸＯＲ部２３ｂとから構成される。
【００５１】
図４は暗号化装置２ａによる暗号化処理のフロー図、図５は復号化装置２ｂによる復号化処理のフロー図である。
【００５２】
図４に示すように、暗号化装置２ａでは、まず、データ受付部２２ａによる電子データＰの受け付けと、疑似乱数列生成部２１ａを構成する疑似乱数列生成装置１の種受付部１０による共通鍵Ｓの受け付けを行う（ステップＳ２０１）。疑似乱数列生成部２１ａは、この共通鍵Ｓを用いて前述のように疑似乱数列Ｒの生成を行い出力する（ステップＳ２０２）。ＸＯＲ部２３ａは、データ受付部２２ａにより受け付けられた電子データＰと疑似乱数列生成部２１ａにより生成された疑似乱数列Ｒの排他的論理和演算を行い（ステップＳ２０３）、この排他的論理和演算によって暗号化された電子データＰ’を復号化装置２ｂへ送信する（ステップＳ２０４）。
【００５３】
一方、図５に示すように、復号化装置２ｂでは、この暗号化装置２ａから送信された電子データＰ’を受信し、データ受付部２２ｂにより受け付ける（ステップＳ３０１）。また、疑似乱数列生成部２１ｂを構成する疑似乱数列生成装置１の種受付部１０により共通鍵Ｓの受け付けを行う（ステップＳ３０２）。疑似乱数列生成部２１ｂは、この共通鍵Ｓを用いて前述のように疑似乱数列Ｒの生成を行い出力する（ステップＳ３０３）。ＸＯＲ部２３ｂは、データ受付部２２ｂにより受け付けられた電子データＰ’と疑似乱数列生成部２１ｂにより生成された疑似乱数列Ｒの排他的論理和演算を行い（ステップＳ３０４）、この排他的論理和演算によって復号化された電子データＰを出力する（ステップＳ３０５）。
【００５４】
以上のように、暗号化装置２ａと復号化装置２ｂとで同じ共通鍵Ｓを用い、疑似乱数列生成装置１により生成された疑似乱数列を用いることで暗号化通信を行うことが可能である。なお、暗号化装置２ａと復号化装置２ｂとは、入出力されるデータが異なるだけで、同一の構成であるため、同じ装置をいずれにも用いることができる。
【００５５】
（実施の形態２）
次に、ｎ次元体積保存写像変換として２次元面積保存写像変換である２次元キャットマップ変換を用いた１２８ビット疑似乱数列生成の例を説明する。
【００５６】
まず、変数および関数を定義する。
【数１７】
2007264147.tif 000019
【００５７】
次に、具体的な２次元キャットマップ変換を用いた１２８ビット疑似乱数列の生成処理について説明する。図６は２次元面積保存写像変換により疑似乱数列生成を行う疑似乱数列生成装置のブロック図である。
【００５８】
図６に示すように、この例では、共通鍵Ｓとして、それぞれ１２８ビットの初期ベクトル（イニシャルベクトル（Initial Vector：ＩＶ））（ｓ1(1)，ｓ1(2)，ｓ1(3)，ｓ1(4)）およびプライベートキー（Private Key）（ｓ2(1)，ｓ2(2)，ｓ2(3)，ｓ2(4)）の列Ｓを用いている。ｓ1(1)，ｓ1(2)，ｓ1(3)，ｓ1(4)，ｓ2(1)，ｓ2(2)，ｓ2(3)，ｓ2(4)は、それぞれ３２ビットの整数である。これらの初期ベクトルおよびプライベートキーは、種受付部１０により受け付けられる。
【００５９】
そして、初期化部１１により、次式に示すように、ＳがＸに代入される。
【数１８】
2007264147.tif 000020
【００６０】
次に、変換部１２によって、次式に示すように、Ｘに対して２次元ベクトルの列Ｘ(1)，Ｘ(2)，Ｘ(3)，Ｘ(4)から決定される変換行列を用いた２次元キャットマップ変換が行われ、Ｙが計算される。図７はこの２次元キャットマップ変換のパラメータα1(k)，α2(k)生成およびｘ1(k)，ｘ2(k)からｙ1(k)，ｙ2(k)への２次元キャットマップ変換を表すブロック図である。
【数１９】
2007264147.tif 000021
【００６１】
続いて、回転部１３によって、次式に示すように、回転ビット数ｓの回転演算rotationsが行われ、ＹからＺが計算される。
【数２０】
2007264147.tif 000022
【００６２】
更新部１４によって、次式に示すように、ＺがＸに代入され、変換部１２および回転部１３による処理がＲ回繰り返される。
【数２１】
2007264147.tif 000023
【００６３】
その後、射影部１５により、次式に示すように、射影変換を表す関数projectionを用いてＺから疑似乱数列が得られる。
【数２２】
2007264147.tif 000024
【００６４】
（実施の形態３）
次に、ｎ次元体積保存写像変換として３次元体積保存写像変換を用いた２５６ビット疑似乱数生成の例を説明する。
【００６５】
まず、変数および関数を定義する。
【数２３】
2007264147.tif 000025
【００６６】
次に、具体的な３次元体積保存写像変換を用いた２５６ビット疑似乱数列の生成処理について説明する。図８は３次元体積保存写像により疑似乱数列生成を行う疑似乱数列生成装置のブロック図である。
【００６７】
図８に示すように、この例では、共通鍵Ｓとして、１２８ビットのプライベートキー（Private Key）（ｓ1(1)，ｓ1(2)，ｓ1(3)，ｓ1(4)）および２５６ビットの初期ベクトル（ｓ2(1)，ｓ2(2)，ｓ2(3)，ｓ2(4)，ｓ3(1)，ｓ3(2)，ｓ3(3)，ｓ3(4)）の列Ｓを用いている。ｓ1(1)，ｓ1(2)，ｓ1(3)，ｓ1(4)，ｓ2(1)，ｓ2(2)，ｓ2(3)，ｓ2(4)，ｓ3(1)，ｓ3(2)，ｓ3(3)，ｓ3(4)は、それぞれ３２ビットの整数である。これらの初期ベクトルおよびプライベートキーは、種受付部１０により受け付けられる。
【００６８】
そして、初期化部１１により、次式に示すように、ＳがＸに代入される。
【数２４】
2007264147.tif 000026
【００６９】
次に、変換部１２によって、次式に示すように、Ｘに対して３次元ベクトルの列Ｘ(1)，Ｘ(2)，Ｘ(3)，Ｘ(4)から決定される変換行列を用いた３次元体積保存写像変換が行われ、Ｙが計算される。図９はこの３次元体積保存写像変換のパラメータα1(k)，α2(k)，α3(k)生成およびｘ1(k)，ｘ2(k)，ｘ3(k)からｙ1(k)，ｙ2(k)，ｙ3(k)への３次元体積保存写像変換を表すブロック図である。
【数２５】
2007264147.tif 000027
【００７０】
続いて、回転部１３によって、次式に示すように、回転ビット数ｓの回転演算rotationsが行われ、ＹからＺが計算される。
【数２６】
2007264147.tif 000028
【００７１】
更新部１４によって、次式に示すように、ＺがＸに代入され、変換部１２および回転部１３による処理がＲ回繰り返される。
【数２７】
2007264147.tif 000029
【００７２】
その後、射影部１５により、次式に示すように、射影変換を表す関数projectionを用いてＺから疑似乱数列が得られる。
【数２８】
2007264147.tif 000030
【実施例】
【００７３】
上記実施の形態２において説明した２次元キャットマップ変換を用いた１２８ビット疑似乱数列生成について性能評価試験を行った。
ストリーム暗号方式の安全性は、一般的に疑似乱数生成器によるものとされる。そこで、疑似乱数生成器に求められる要件として次の二つがあげられる。
（１）異なる初期値を与えた場合に出力列が大きく変わること。
（２）出力列が十分な乱数性を持つこと。
【００７４】
そこで、性能評価試験は、差分解析と乱数性評価を行った。差分解析では、異なる初期値を与えた場合に出力される疑似乱数列に対して統計的な解析を行った。また、暗号に使用される初期値（プライベートキーや初期ベクトル等の共通鍵）が僅かに異なる場合に大きく出力が異なるかどうか調査した。一方、乱数性評価では、ＮＩＳＴ（米国国立標準技術研究所）発行のＳＰ８００−２２に基づいて出力される疑似乱数列に対してランダム性評価テストを行った。また、暗号化に用いる疑似乱数列が良いランダム性を持つかどうか調査した。
【００７５】
（差分解析）
ランダムな初期値と差分を加えた初期値により生成した疑似乱数列のハミング距離を計測した。なお、差分を加えた初期値は、最上位からｎビット目を反転したものを用いた。これを１万サンプル試行し、統計的な解析を行った。
【００７６】
図１０はプライベートキーに差分を加えた場合のハミング距離の平均の分布を示す図である。図１０に示すように、シフト回転なしとありとでは大きく差が出ていることが分かる。また、シフト回転を行った場合、平均が６４付近に収束していることが分かる。また、図１１は初期ベクトルに差分を加えた場合のハミング距離の平均の分布を示す図である。図１１に示すように、初期ベクトルに差分を加えた場合、プライベートキーに差分を加えた場合と同様の傾向がみられた。
【００７７】
図１２はプライベートキーに差分を加えた場合のラウンド（繰り返し）数とハミング距離の分散の関係を示す図である。図１２に示すように、シフト回転なしとありとでは大きく差が出ていることが分かる。また、シフト回転を行う場合、ラウンド数が２〜３回の場合は誤差が拡大していることが分かる。また、シフト回転を行う場合、分散が小さくなり、３２付近に収束していることが分かる。また、図１３は初期ベクトルに差分を加えた場合のラウンド数とハミング距離の分散の関係を示す図である。図１３に示すように、初期ベクトルに差分を加えた場合、プライベートキーに差分を加えた場合と同様の傾向がみられた。
【００７８】
以上の結果から、平均・分散ともにシフト回転を行う場合と行わない場合とでは、全く異なる傾向がみられた。また、シフト回転を行う場合は６４に収束し、このとき分散は３２に収束した（誤差が小さくなった。）。すなわち、シフト回転を行うことで攪拌が大きくなり、ラウンド数が大きくなると６４に収束する結果が得られた。したがって、この疑似乱数列生成では、出力される疑似乱数列が１２８ビットであるため、ハミング距離の値が６４付近となる場合、わずかな差分に対して十分に攪拌しているといえる。
【００７９】
また、この結果から平均・分散ともに収束しているパラメータを検出した。検出基準は、平均６４、分散３２から±０．１とした。表１はこの検出結果を示している。表１において、両方十分に収束している値の場合を○、どちらか一方が十分に収束している値の場合を△、どちらも収束している値でない場合を×で示している。なお、△は実際には６４付近に収束しているが、誤差の範囲が広かった。
【００８０】
【表１】
2007264147.tif 000031
【００８１】
また、図１４および図１５にラウンド数５、シフトビット数３の場合について初期値の各ビットに差分を入れたときのハミング距離の平均の例を示した。なお、図１４はプライベートキーに差分を加えた場合、図１５は初期ベクトルに差分を加えた場合である。いずれの場合も、どのビットに差分を加えてもハミング距離の平均が６４付近になることが分かる。
【００８２】
また、図１６および図１７にラウンド数５、シフトビット数３の場合について生成される疑似乱数列の各ビットの反転（ハミング距離となる）確率の例を示した。なお、図１６はプライベートキーに差分を加えた場合、図１７は初期ベクトルに差分を加えた場合である。いずれの場合も、どのビットも一様に５割前後の確率で反転しており、偏りがないことが分かる。
【００８３】
次に、本発明の実施の形態１，２と従来のＶＳＣ１２８とで、プライベートキーに差分を加えた場合の解析結果を比較した。表２は本発明の実施の形態３（２５６ビット）の平均（１２８±０．１）、分散（６４±０．１）の収束結果を、表３は本発明の実施の形態３（２５６ビット）の平均（１２８±０．２）、分散（６４±０．２）の収束結果を、表４はＶＳＣ１２８の平均（６４±０．１）、分散（３２±０．１）の収束結果をそれぞれ示している。なお、表２から表４の各記号は、表１と同様、両方十分に収束している値の場合を○、どちらか一方が十分に収束している値の場合を△、どちらも収束している値でない場合を×で示している。また、本発明の実施の形態２（１２８ビット）の平均（６４±０１）、分散（３２±０．１）の収束結果は、既に表１で示している。
【００８４】
また、本発明の実施の形態３については、２５６ビットの疑似乱数を生成するものであり、実施の形態２およびＶＳＣ１２８の１２８ビットに対してビット数が２倍であるため、平均値および分散も２倍となっている。そこで、表４では、実施の形態３について、より厳密に比較するために、条件範囲を２倍にし、平均値、分散値と条件範囲のスケール比を揃えて評価している。
【００８５】
【表２】
2007264147.tif 000032
【００８６】
【表３】
2007264147.tif 000033
【００８７】
【表４】
2007264147.tif 000034
【００８８】
表１〜表４から、ＶＳＣ１２８（表４）と比較して、実施の形態２（表１），３（表２，３）の方が少ないラウンド数で分布が収束していることが分かる。したがって、本発明の実施の形態２，３の疑似乱数生成方法では、ＶＳＣ１２８と比較して同等の攪拌性を持つ疑似乱数系列を少ないラウンド数で高速に生成できることが分かった。
【００８９】
（乱数性評価）
ＮＩＳＴ  ＳＰ８００−２２では、０と１からなる系列に対して１６種類の検定を行う。なお、今回の実験では、ＮＩＳＴで公開されている評価ツールＳＴＳ（Statical Test Suite）のバージョン１．７を用いた。このＮＩＳＴの検定については、一般的な検定であるため、詳細な説明は省略するが、バージョン１．７では、１５種類の検定となっている。
【００９０】
表５は、実施の形態２について、攪拌が良かったパラメータに対しての検定結果である。表５の各マスは１０回中１５種類すべての検定をパスした初期値の個数を表している。表５から、１０回中５〜７回パスするパラメータがあることが分かる。これらは、初期値に対して十分に攪拌が得られ、なおかつ良いランダム性を持つといえる。
【００９１】
【表５】
2007264147.tif 000035
【産業上の利用可能性】
【００９２】
本発明の疑似乱数列生成装置、暗号化復号化装置、疑似乱数列生成方法、暗号化復号化方法、疑似乱数列生成プログラムおよび暗号化復号化プログラムは、データを暗号化することによりデータの保護や安全な暗号を行うためのものとして有用である。
【図面の簡単な説明】
【００９３】
【図１】本発明の実施の形態における疑似乱数列生成装置の構成を示すブロック図である。
【図２】図１の疑似乱数列生成装置による疑似乱数列生成手順を示すフロー図である。
【図３】図１の疑似乱数列生成装置を用いた暗号化復号化装置の構成を示すブロック図である。
【図４】図３の暗号化装置による暗号化処理のフロー図である。
【図５】図３の復号化装置による復号化処理のフロー図である。
【図６】２次元面積保存写像変換により疑似乱数列生成を行う疑似乱数列生成装置のブロック図である。
【図７】２次元キャットマップ変換のパラメータα1(k)，α2(k)生成およびｘ1(k)，ｘ2(k)からｙ1(k)，ｙ2(k)への２次元キャットマップ変換を表すブロック図である。
【図８】３次元体積保存写像により疑似乱数列生成を行う疑似乱数列生成装置のブロック図である。
【図９】３次元体積保存写像変換のパラメータα1(k)，α2(k)，α3(k)生成およびｘ1(k)，ｘ2(k)，ｘ3(k)からｙ1(k)，ｙ2(k)，ｙ3(k)への３次元体積保存写像変換を表すブロック図である。
【図１０】プライベートキーに差分を加えた場合のハミング距離の平均の分布を示す図である。
【図１１】初期ベクトルに差分を加えた場合のハミング距離の平均の分布を示す図である。
【図１２】プライベートキーに差分を加えた場合のラウンド数とハミング距離の分散の関係を示す図である。
【図１３】初期ベクトルに差分を加えた場合のラウンド数とハミング距離の分散の関係を示す図である。
【図１４】プライベートキーに差分を加えた場合の初期値の各ビットに差分を入れたときのハミング距離の平均の例を示す図である。
【図１５】初期ベクトルに差分を加えた場合の初期値の各ビットに差分を入れたときのハミング距離の平均の例を示す図である。
【図１６】プライベートキーに差分を加えた場合の初期値の各ビットの反転（ハミング距離となる）確率の例を示す図である。
【図１７】初期ベクトルに差分を加えた場合の初期値の各ビットの反転（ハミング距離となる）確率の例を示す図である。
【図１８】従来のＶＳＣ１２８による疑似乱数列生成装置の構成を示すブロック図である。
【図１９】２次元キャットマップ写像の例を示す図である。
【図２０】２次元キャットマップを繰り返し適用した写像の例を示す図である。
【図２１】２次元キャットマップのＮを整数上の１〜１２８とした場合の最大周期を示す図である。
【図２２】２次元キャットマップ写像の例を示す図である。
【符号の説明】
【００９４】
１  疑似乱数列生成装置
２  暗号化復号化装置
２ａ  暗号化装置
２ｂ  復号化装置
１０  種受付部
１１  初期化部
１２  変換部
１３  回転部
１４  更新部
１５  射影部
１６  出力部
２１ａ，２１ｂ  疑似乱数列生成部
２２ａ，２２ｂ  データ受付部
２３ａ，２３ｂ  ＸＯＲ部
【図１】
2007264147.tif 000038
【図２】
2007264147.tif 000039
【図３】
2007264147.tif 000040
【図４】
2007264147.tif 000041
【図５】
2007264147.tif 000042
【図６】
2007264147.tif 000043
【図７】
2007264147.tif 000044
【図８】
2007264147.tif 000045
【図９】
2007264147.tif 000046
【図１０】
2007264147.tif 000047
【図１１】
2007264147.tif 000048
【図１２】
2007264147.tif 000049
【図１３】
2007264147.tif 000050
【図１４】
2007264147.tif 000051
【図１５】
2007264147.tif 000052
【図１６】
2007264147.tif 000053
【図１７】
2007264147.tif 000054
【図１８】
2007264147.tif 000055
【図１９】
2007264147.tif 000056
【図２１】
2007264147.tif 000057
【図２０】
2007264147.tif 000058
【図２２】
2007264147.tif 000059