説明

疑似乱数列生成装置、暗号化復号化装置、疑似乱数列生成方法、暗号化復号化方法、疑似乱数列生成プログラムおよび暗号化復号化プログラム

【課題】従来、疑似乱数列生成や暗号化復号化に不適であるといわれている2次元キャットマップのような写像変換を用いて疑似乱数列生成および暗号化復号化を可能にする。
【解決手段】種受付部10により受け付けたwビットの整数のn次元ベクトルの列S(1),S(2),・・・,S(K)を初期化部11に与えてwビットの整数のn次元ベクトルの列X(1),X(2),・・・,X(K)とし、変換部12によりn次元ベクトルの列X(1),X(2),・・・,X(K)から決定される変換行列を用いた写像変換を施した後、回転部13によりその一部または全部に対して所定の回転ビット数の回転演算を行い、この結果を更新部14により更新して、変換部12および回転部13によりそれぞれ写像変換および回転演算を所定回数繰り返し行うことにより、乱数性の高い多次元疑似乱数列を生成する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、疑似乱数の列を生成する疑似乱数列生成装置、暗号化復号化装置、疑似乱数列生成方法、暗号化復号化方法、疑似乱数列生成プログラムおよび暗号化復号化プログラムに関する。
【背景技術】
【0002】
近年、カオス理論を用いた暗号方式がいくつか提案されている。暗号におけるカオスは初期値鋭敏性や予測不可能性などの良い特徴を持ち、また高速であることが期待される。例えば、非特許文献1および特許文献1,2において、これらの特徴を利用したストリーム暗号のVSC(Vector Stream Cipher:ベクター・ストリーム・サイファ)128が提案されている。
【0003】
VSCは、ストリーム暗号方式の疑似乱数列生成器部分にカオス理論を適用した共通鍵暗号である。VSCでは、次の式で表される1次元のカオス写像を用いる。
【数1】

【0004】
また、VSC128は、次式で表される8個の1次元写像を用い、以下の手順で疑似乱数列を生成する。図18はVSC128による疑似乱数列生成装置の構成を示すブロック図である。この疑似乱数列生成装置では、以下の手順により疑似乱数列を生成する。
(1)128ビットの共通鍵を32ビットの4つの変数に格納。
(2)128ビットの初期ベクトルを32ビットの4つの変数に格納。
(3)変数変換(VSC128の制御パラメータの生成と写像)。
(4)256ビット(8個の変数)のビット列を5ビット左にシフト回転。
(5)手順(3)、(4)を8回繰り返す。
【数2】

【0005】
また、このようなVSC128を用いた疑似乱数列生成方法および暗号化復号化方法が、特許文献3,4において提案されている。これらの疑似乱数列生成方法および暗号化復号化方法では、所定の整数と様々な写像を用いて疑似乱数列を生成している。
【0006】
ところで、カオスを生成する方法の一つとして、2次元キャットマップ(Arnold‘s Cat Map)が知られている。2次元キャットマップは、変換行列の行列式が1となる制御パラメータα,βを持つ面積保存写像であり、次の式で表される。
【数3】

例として、α=β=1,N=1の場合の写像を図19に示す。ここで、単位正方領域が線形変換で引き伸ばされ、次にmod(剰余)で折り畳まれる操作がみられる。xn,ynが連続値をとる場合には、2次元キャットマップFを繰り返し適用することで、カオス系列を生成することができる。例として、α=β=1,N=128の場合に2次元キャットマップFを繰り返し適用した写像を図20に示す。
【0007】
【特許文献1】特許第3030341号公報
【特許文献2】特許第3455748号公報
【特許文献3】特許第3700002号公報
【特許文献4】特許第3735670号公報
【非特許文献1】梅野健,“VSC128S仕様書”,[online],平成16年9月17日,株式会社カオスウェア,[平成18年3月7日検索],インターネット<URL:http://www.chaosware.com/vsc128s.pdf>
【発明の開示】
【発明が解決しようとする課題】
【0008】
このように、2次元キャットマップを繰り返し適用した面積保存写像は、変換行列の行列式が1であるため、1対1写像となり、初期点、行列の係数をすべて整数とすることで、整数上の1対1写像に拡張できるという性質がある。また、恒等変換、回転変換を除いて、必ず絶対値が1以上の固有値を持ち、カオス系列を生成することが可能である。
【0009】
ところが、整数上に拡張した面積保存写像の場合、状態離散化によって、周期系列を生成してしまうという問題がある。図21は2次元キャットマップのNを整数上の1〜128とした場合の最大周期を示している。すなわち、2次元キャットマップを繰り返し適用すると状態数Nに対して比較的短周期で面積保存写像が元の画像に戻ってしまうという問題がある。図22はα=40,β=8,N=124の場合の写像を示しており、5回写像で元の画像へ戻っている。
【0010】
したがって、2次元キャットマップは、疑似乱数列生成や暗号化復号化に不適であるといわれており、特許文献3,4の疑似乱数列生成方法および暗号化復号化方法においても採用されていない。
【0011】
そこで、本発明においては、従来、疑似乱数列生成や暗号化復号化に不適であるといわれている2次元キャットマップのような写像変換を用いて疑似乱数列生成および暗号化復号化を可能にした疑似乱数列生成装置、暗号化復号化装置、疑似乱数列生成方法、暗号化復号化方法、疑似乱数列生成プログラムおよび暗号化復号化プログラムを提供することを目的とする。
【課題を解決するための手段】
【0012】
本発明の疑似乱数列生成装置は、m次元wビットの疑似乱数の列を生成する疑似乱数列生成装置であって、wビットの整数si(k)(但し、2以上の整数Kに対して、k=1,2,・・・,Kとする。以下同じ。)のn次元ベクトルS(k)=(s1(k),s2(k),・・・,sn(k))の列S(1),S(2),・・・,S(K)を種として受け付ける種受付部と、n次元ベクトルの列S(1),S(2),・・・,S(K)を、wビットの整数xi(k)のn次元ベクトルX(k)=(x1(k),x2(k),・・・,xn(k))の列X(1),X(2),・・・,X(K)として与える初期化部と、n次元ベクトルの列X(1),X(2),・・・,X(K)のそれぞれに対してn次元ベクトルの列X(1),X(2),・・・,X(K)から決定される変換行列を用いた写像変換を施してwビットの整数yi(k)のn次元ベクトルY(k)=(y1(k),y2(k),・・・,yn(k))の列Y(1),Y(2),・・・,Y(K)を得る変換部と、n次元ベクトルの列Y(1),Y(2),・・・,Y(K)をw×K×nビットのビット列y1(1),y1(2),・・・,y1(K),y2(1),y2(2),・・・,y2(K),・・・,yn(1),yn(2),・・・,yn(K)とみて、その一部または全部に対して所定の回転ビット数の回転演算を行って得られたw×K×nビットのビット列を、wビットの整数zi(k)の列z1(1),z1(2),・・・,z1(K),z2(1),z2(2),・・・,z2(K),・・・,zn(1),zn(2),・・・,zn(K)とみて、n次元ベクトルZ(k)=(z1(k),z2(k),・・・,zn(k))の列Z(1),Z(2),・・・,Z(K)を得る回転部と、n次元ベクトルの列Z(1),Z(2),・・・,Z(K)をn次元ベクトルの列X(1),X(2),・・・,X(K)として変換部に与える更新部と、変換部、回転部および更新部による処理が所定回数繰り返された後、最後に得られたn次元ベクトルの列Z(1),Z(2),・・・,Z(K)のそれぞれに対してn次元ベクトルからm次元ベクトルへの射影変換を行い、wビットの整数ri(k)のm次元ベクトルR(k)=(r1(k),r2(k),・・・,rm(k))の列R(1),R(2),・・・,R(K)を得る射影部と、m次元ベクトルの列R(1),R(2),・・・,R(K)をm次元wビットの疑似乱数列r1(1),r1(2),・・・,r1(K),r2(1),r2(2),・・・,r2(K),・・・,rm(1),rm(2),・・・,rm(K)として出力する出力部とを備えるものである。
【0013】
また、本発明の暗号化復号化装置は、上記本発明の疑似乱数列生成装置から構成され、m次元wビットの疑似乱数列r1(1),r1(2),・・・,r1(K),r2(1),r2(2),・・・,r2(K),・・・,rm(1),rm(2),・・・,rm(K)を出力する疑似乱数列生成部と、m次元wビットの整数列p1(1),p1(2),・・・,p1(K),p2(1),p2(2),・・・,p2(K),・・・,pm(1),pm(2),・・・,pm(K)を暗号化または復号化対象のデータとして受け付けるデータ受付部と、疑似乱数列と暗号化または復号化対象のデータの排他的論理和p1(1) xor r1(1),p1(2) xor r1(2),・・・,p1(K) xor r1(K),p2(1) xor r2(1),p2(2) xor r2(2),・・・,p2(K) xor r2(K),・・・,pn(1) xor rm(1),pm(2) xor rm(2),・・・,pm(K) xor rm(K)を暗号化または復号化の結果として出力する暗号化復号化部とを備えたものである。
【0014】
また、本発明の疑似乱数列生成方法は、コンピュータによりm次元wビットの疑似乱数の列を生成する乱数列生成方法であって、コンピュータが、wビットの整数si(k)(但し、2以上の整数Kに対して、k=1,2,・・・,Kとする。以下同じ。)のn次元ベクトルS(k)=(s1(k),s2(k),・・・,sn(k))の列S(1),S(2),・・・,S(K)を種として受け付ける種受付ステップと、コンピュータが、n次元ベクトルの列S(1),S(2),・・・,S(K)を、wビットの整数xi(k)のn次元ベクトルX(k)=(x1(k),x2(k),・・・,xn(k))の列X(1),X(2),・・・,X(K)として与える初期化ステップと、コンピュータが、n次元ベクトルの列X(1),X(2),・・・,X(K)のそれぞれに対してn次元ベクトルの列X(1),X(2),・・・,X(K)から決定される変換行列を用いた写像変換を施してwビットの整数yi(k)のn次元ベクトルY(k)=(y1(k),y2(k),・・・,yn(k))の列Y(1),Y(2),・・・,Y(K)を得る変換ステップと、コンピュータが、n次元ベクトルの列Y(1),Y(2),・・・,Y(K)をw×K×nビットのビット列y1(1),y1(2),・・・,y1(K),y2(1),y2(2),・・・,y2(K),・・・,yn(1),yn(2),・・・,yn(K)とみて、その一部または全部に対して所定の回転ビット数の回転演算を行って得られたw×K×nビットのビット列を、wビットの整数zi(k)の列z1(1),z1(2),・・・,z1(K),z2(1),z2(2),・・・,z2(K),・・・,zn(1),zn(2),・・・,zn(K)とみて、n次元ベクトルZ(k)=(z1(k),z2(k),・・・,zn(k))の列Z(1),Z(2),・・・,Z(K)を得る回転ステップと、コンピュータが、n次元ベクトルの列Z(1),Z(2),・・・,Z(K)をn次元ベクトルの列X(1),X(2),・・・,X(K)として変換ステップに与える更新ステップと、変換ステップ、回転ステップおよび更新ステップによる処理が所定回数繰り返された後、コンピュータが、最後に得られたn次元ベクトルの列Z(1),Z(2),・・・,Z(K)のそれぞれに対してn次元ベクトルからm次元ベクトルへの射影変換を行い、wビットの整数ri(k)のm次元ベクトルR(k)=(r1(k),r2(k),・・・,rm(k))の列R(1),R(2),・・・,R(K)を得る射影ステップと、コンピュータが、m次元ベクトルの列R(1),R(2),・・・,R(K)をm次元wビットの疑似乱数列r1(1),r1(2),・・・,r1(K),r2(1),r2(2),・・・,r2(K),・・・,rm(1),rm(2),・・・,rm(K)として出力する出力ステップとを含むものである。
【0015】
また、本発明の暗号化復号化方法は、上記本発明の疑似乱数列生成方法により、コンピュータが、m次元wビットの疑似乱数列r1(1),r1(2),・・・,r1(K),r2(1),r2(2),・・・,r2(K),・・・,rm(1),rm(2),・・・,rm(K)を出力する疑似乱数列生成ステップと、コンピュータが、m次元wビットの整数列p1(1),p1(2),・・・,p1(K),p2(1),p2(2),・・・,p2(K),・・・,pm(1),pm(2),・・・,pm(K)を暗号化または復号化対象のデータとして受け付けるデータ受付ステップと、コンピュータが、疑似乱数列と暗号化または復号化対象のデータの排他的論理和p1(1) xor r1(1),p1(2) xor r1(2),・・・,p1(K) xor r1(K),p2(1) xor r2(1),p2(2) xor r2(2),・・・,p2(K) xor r2(K),・・・,pm(1) xor rm(1),pm(2) xor rm(2),・・・,pm(K) xor rm(K)を暗号化または復号化の結果として出力する暗号化復号化ステップとを含むものである。
【0016】
また、本発明の疑似乱数列生成プログラムは、コンピュータに、wビットの整数si(k) (但し、2以上の整数Kに対して、k=1,2,・・・,Kとする。以下同じ。)のn次元ベクトルS(k)=(s1(k),s2(k),・・・,sn(k))の列S(1),S(2),・・・,S(K)を種として受け付ける種受付ステップと、n次元ベクトルの列S(1),S(2),・・・,S(K)を、wビットの整数xi(k)のn次元ベクトルX(k)=(x1(k),x2(k),・・・,xn(k))の列X(1),X(2),・・・,X(K)として与える初期化ステップと、n次元ベクトルの列X(1),X(2),・・・,X(K)のそれぞれに対してn次元ベクトルの列X(1),X(2),・・・,X(K)から決定される変換行列を用いた写像変換を施してwビットの整数yi(k)のn次元ベクトルY(k)=(y1(k),y2(k),・・・,yn(k))の列Y(1),Y(2),・・・,Y(K)を得る変換ステップと、n次元ベクトルの列Y(1),Y(2),・・・,Y(K)をw×K×nビットのビット列y1(1),y1(2),・・・,y1(K),y2(1),y2(2),・・・,y2(K),・・・,yn(1),yn(2),・・・,yn(K)とみて、その一部または全部に対して所定の回転ビット数の回転演算を行って得られたw×K×nビットのビット列を、wビットの整数zi(k)の列z1(1),z1(2),・・・,z1(K),z2(1),z2(2),・・・,z2(K),・・・,zn(1),zn(2),・・・,zn(K)とみて、n次元ベクトルZ(k)=(z1(k),z2(k),・・・,zn(k))の列Z(1),Z(2),・・・,Z(K)を得る回転ステップと、n次元ベクトルの列Z(1),Z(2),・・・,Z(K)をn次元ベクトルの列X(1),X(2),・・・,X(K)として前記変換ステップに与える更新ステップと、変換ステップ、回転ステップおよび更新ステップによる処理が所定回数繰り返された後、最後に得られたn次元ベクトルの列Z(1),Z(2),・・・,Z(K)のそれぞれに対してn次元ベクトルからm次元ベクトルへの射影変換を行い、wビットの整数ri(k)のm次元ベクトルR(k)=(r1(k),r2(k),・・・,rm(k))の列R(1),R(2),・・・,R(K)を得る射影ステップと、m次元ベクトルの列R(1),R(2),・・・,R(K)をm次元wビットの疑似乱数列r1(1),r1(2),・・・,r1(K),r2(1),r2(2),・・・,r2(K),・・・,rm(1),rm(2),・・・,rm(K)として出力する出力ステップとを実行させるためのものである。
【0017】
また、本発明の暗号化復号化プログラムは、上記本発明の疑似乱数列生成プログラムを実行するコンピュータに、m次元wビットの疑似乱数列r1(1),r1(2),・・・,r1(K),r2(1),r2(2),・・・,r2(K),・・・,rm(1),rm(2),・・・,rm(K)を出力する疑似乱数列生成ステップと、m次元wビットの整数列p1(1),p1(2),・・・,p1(K),p2(1),p2(2),・・・,p2(K),・・・,pm(1),pm(2),・・・,pm(K)を暗号化または復号化対象のデータとして受け付けるデータ受付ステップと、疑似乱数列と暗号化または復号化対象のデータの排他的論理和p1(1) xor r1(1),p1(2) xor r1(2),・・・,p1(K) xor r1(K),p2(1) xor r2(1),p2(2) xor r2(2),・・・,p2(K) xor r2(K),・・・,pm(1) xor rm(1),pm(2) xor rm(2),・・・,pm(K) xor rm(K)を暗号化または復号化の結果として出力する暗号化復号化ステップとを実行させるためのものである。
【0018】
本発明によれば、wビットの整数si(k)のn次元ベクトルS(k)=(s1(k),s2(k),・・・,sn(k))の列S(1),S(2),・・・,S(K)が種として受け付けられ、n次元ベクトルの列S(1),S(2),・・・,S(K)が、wビットの整数xi(k)のn次元ベクトルX(k)=(x1(k),x2(k),・・・,xn(k))の列X(1),X(2),・・・,X(K)として与えられ、n次元ベクトルの列X(1),X(2),・・・,X(K)のそれぞれに対してn次元ベクトルの列X(1),X(2),・・・,X(K)から決定される変換行列を用いた写像変換が施されてwビットの整数yi(k)のn次元ベクトルY(k)=(y1(k),y2(k),・・・,yn(k))の列Y(1),Y(2),・・・,Y(K)が得られて、n次元ベクトルの列Y(1),Y(2),・・・,Y(K)がw×K×nビットのビット列y1(1),y1(2),・・・,y1(K),y2(1),y2(2),・・・,y2(K),・・・,yn(1),yn(2),・・・,yn(K)とみられて、その一部または全部に対して所定の回転ビット数の回転演算が行われて得られたw×K×nビットのビット列が、wビットの整数zi(k)の列z1(1),z1(2),・・・,z1(K),z2(1),z2(2),・・・,z2(K),・・・,zn(1),zn(2),・・・,zn(K)とみられて、n次元ベクトルZ(k)=(z1(k),z2(k),・・・,zn(k))の列Z(1),Z(2),・・・,Z(K)が得られ、n次元ベクトルの列Z(1),Z(2),・・・,Z(K)をn次元ベクトルの列X(1),X(2),・・・,X(K)とする更新が行われる。そして、n次元ベクトルの列X(1),X(2),・・・,X(K)から決定される変換行列を用いた写像変換、回転演算および更新が所定回数繰り返された後、最後に得られたn次元ベクトルの列Z(1),Z(2),・・・,Z(K)のそれぞれに対してn次元ベクトルからm次元ベクトルへの射影変換が行われ、wビットの整数ri(k)のm次元ベクトルR(k)=(r1(k),r2(k),・・・,rm(k))の列R(1),R(2),・・・,R(K)が得られて、m次元ベクトルの列R(1),R(2),・・・,R(K)がm次元wビットの疑似乱数列r1(1),r1(2),・・・,r1(K),r2(1),r2(2),・・・,r2(K),・・・,rm(1),rm(2),・・・,rm(K)として出力される。このように、本発明では、n次元ベクトルの列X(1),X(2),・・・,X(K)から決定される変換行列を用いた写像変換を施した後、その一部または全部に対して所定の回転ビット数の回転演算が行われ、さらにn次元ベクトルの列X(1),X(2),・・・,X(K)から決定される変換行列を用いた写像変換および回転演算が所定回数繰り返し行われることによって、乱数性の高い多次元疑似乱数列が生成される。
【0019】
また、本発明では、この生成された多次元疑似乱数列を用いて、暗号化または復号化対象のデータとして受け付けたデータとの排他的論理和を形成することにより、暗号化または復号化を行うことが可能である。
【0020】
ここで、写像変換は、次式により行うものであることが望ましい。
【数4】

但し、ai,j(k)(X)は、2wビット整数を出力するXの関数である。
【0021】
これにより、n次元ベクトルX(k)=(x1(k),x2(k),・・・,xn(k))の列X(1),X(2),・・・,X(K)を用いて相互に変換行列A(k)を決定することができ、変換行列A(k)を固定した場合と比較して、より乱数性が高い疑似乱数列を生成することが可能となる。
【0022】
また、このとき、変換行列A(k)は、
【数5】

を満たすものであることが望ましい。このように、行列式が1となる変換行列A(k)は、2次元であれば面積保存写像、3次元以上のn次元であれば体積保存写像となり、wビット整数のn次元ベクトル上での1対1写像を得ることができる。すなわち、個々の変換行列A(k)による変換が1対1写像となることで、K個の変換行列による変換もwビット整数のK×n次元ベクトル上での1対1写像となる。
【発明の効果】
【0023】
本発明によれば、n次元ベクトルの列X(1),X(2),・・・,X(K)から決定される変換行列を用いた写像変換の性質により乱数性の高い多次元疑似乱数列を生成することが可能であり、この乱数性の高い多次元疑似乱数列を用いることにより、安全性の高い暗号化復号化を行うことが可能となる。
【0024】
また、行列式が1となる変換行列を用いることで1対1の変換となり、異なる2つのベクトルの変換結果が同じベクトルに一致してしまうことを防ぐことが可能となる。したがって、wビット整数のK×n次元空間の点を全て使用することができる。また、行列式が1となることで、恒等変換と回転変換を除いて、必ず1より大きい固有値が存在し、そのカオス性により、多様な疑似乱数列を生成できる。これにより、n次元ベクトルの列X(1),X(2),・・・,X(K)から決定される変換行列を用いた写像変換の性質と両立させることで、種として受け付けるwビットの整数si(k)のn次元ベクトルS(k)=(s1(k),s2(k),・・・,sn(k))の列S(1),S(2),・・・,S(K)に応じた乱数性の高い疑似乱数列を生成することが可能となり、より安全性の高い暗号化復号化を行うことが可能となる。
【0025】
また、本発明における疑似乱数生成は、行列とベクトルの積を基本演算としており、行列演算処理の並列化による処理速度の高速化並びにハードウェア実装にも適している。
【発明を実施するための最良の形態】
【0026】
(実施の形態1)
まず、以下の説明において使用する変数および関数について説明する。
本発明の実施の形態における疑似乱数列生成装置は、K(2以上の整数)個のn次元ベクトルの列X(1),X(2),・・・,X(K)から決定される変換行列A(k)(k=1,2,・・・,K)を用いた写像変換により、m個のK×wビット疑似乱数列を生成するものである(但し、1≦m≦n)。
【0027】
x,y,z,r,sはそれぞれ2wビット整数、X(k),Y(k),Z(k),S(k)はそれぞれn次元ベクトル、R(k)はm次元ベクトルである(ここで、k=1,2,・・・,K)。
(k),Y(k),Z(k),S(k),R(k)を行列で表すと、
【数6】

である。
【0028】
また、X,Y,Z,Sは、それぞれ上記n次元ベクトルX(k),Y(k),Z(k),S(k)のK個組みの列、Rは、上記m次元ベクトルR(k)のK個組みの列であり、
【数7】

で表される。
【0029】
また、変換行列A(k)は、
【数8】

で表される。
【0030】
ここで、ai,j(k)(X)(i,j=1,2,・・・,n)は、2wビット整数を出力するXの関数であり、Xの要素および所定の定数に、所定のビット演算(例えば、AND演算、OR演算、NOT演算、XOR演算、回転演算や、これらの組み合わせ)を適用して得られる要素に対し、所定の整数演算(例えば、加減乗除演算、剰余演算や、これらの組み合わせ)を適用して得られる有理多項式である。
【0031】
なお、以下の例では、Φ(k)を、k番目の変換行列A(k)を決定するn個のパラメータαi(k)(X)(2wビット整数を出力するXの関数)の組みの列として、
【数9】

で表し、A(k)は、Φ(k)によって決定されるk番目のn×n変換行列
【数10】

で表されるものを使用する。
【0032】
ここで、αi(k)(X)(i=1,2,・・・,n)は、2wビット整数を出力するXの関数であり、Xの要素および所定の定数に、所定のビット演算(例えば、AND演算、OR演算、NOT演算、XOR演算、回転演算や、これらの組み合わせ)を適用して得られる要素に対し、所定の整数演算(例えば、加減乗除演算、剰余演算や、これらの組み合わせ)を適用して得られる有理多項式である。また、ai,j(Φ(k))(i,j=1,2,・・・,n)は、2wビット整数を出力するΦ(k)の関数であり、Φ(k)の要素および所定の定数に、所定のビット演算(例えば、AND演算、OR演算、NOT演算、XOR演算、回転演算や、これらの組み合わせ)を適用して得られる要素に対し、所定の整数演算(例えば、加減乗除演算、剰余演算や、これらの組み合わせ)を適用して得られる有理多項式である。
【0033】
また、本実施形態において、A(k)は、次式の条件を満たすように構成される。すなわち、2次元の場合は面積を保存し、3次元以上の場合は体積を保存する(n次元の場合も一般に体積保存と称される。)。
【数11】

【0034】
次に、本発明の実施の形態における疑似乱数列生成装置について説明する。図1は本発明の実施の形態における疑似乱数列生成装置の構成を示すブロック図である。
【0035】
図1に示すように、本発明の実施の形態における疑似乱数列生成装置1は、種受付部10、初期化部11、変換部12、回転部13、更新部14、射影部15および出力部16を備える。疑似乱数列生成装置1は、一般的なコンピュータ上で、このコンピュータを種受付部10、初期化部11、変換部12、回転部13、更新部14、射影部15および出力部16として機能させるための疑似乱数列生成プログラムを実行することにより実現される。
【0036】
種受付部10は、wビットの整数si(k)のn次元ベクトルS(k)=(s1(k),s2(k),・・・,sn(k))の列S(1),S(2),・・・,S(K)を種として受け付けるものである。
【0037】
初期化部11は、n次元ベクトルの列S(1),S(2),・・・,S(K)を、wビットの整数xi(k)のn次元ベクトルX(k)=(x1(k),x2(k),・・・,xn(k))の列X(1),X(2),・・・,X(K)として与えるものであり、次式により表される。
【数12】

【0038】
変換部12は、n次元ベクトルの列X(1),X(2),・・・,X(K)のそれぞれに対してn次元ベクトルの列X(1),X(2),・・・,X(K)から決定される変換行列を用いたn次元体積保存写像変換を施してwビットの整数yi(k)のn次元ベクトルY(k)=(y1(k),y2(k),・・・,yn(k))の列Y(1),Y(2),・・・,Y(K)を得るものであり、次式により表される。
【数13】

【0039】
回転部13は、n次元ベクトルの列Y(1),Y(2),・・・,Y(K)をw×K×nビットのビット列y1(1),y1(2),・・・,y1(K),y2(1),y2(2),・・・,y2(K),・・・,yn(1),yn(2),・・・,yn(K)とみて、その一部または全部に対して所定の回転ビット数の回転演算を行って得られたw×K×nビットのビット列を、wビットの整数zi(k)の列z1(1),z1(2),・・・,z1(K),z2(1),z2(2),・・・,z2(K),・・・,zn(1),zn(2),・・・,zn(K)とみて、n次元ベクトルZ(k)=(z1(k),z2(k),・・・,zn(k))の列Z(1),Z(2),・・・,Z(K)を得るものであり、回転ビット数sの回転演算を表す関数rotationsを用いて次式により表される。
【数14】

【0040】
更新部14は、n次元ベクトルの列Z(1),Z(2),・・・,Z(K)をn次元ベクトルの列X(1),X(2),・・・,X(K)として変換部12に与えるものであり、次式により表される。
【数15】

【0041】
射影部15は、変換部12、回転部13および更新部14による処理が所定回数繰り返された後、最後に得られたn次元ベクトルの列Z(1),Z(2),・・・,Z(K)のそれぞれに対してn次元ベクトルからm次元ベクトルへの射影変換を行い、wビットの整数ri(k)のm次元ベクトルR(k)=(r1(k),r2(k),・・・,rm(k))の列R(1),R(2),・・・,R(K)を得るものであり、射影変換を表す関数projectionを用いて次式により表される。
【数16】

【0042】
出力部16は、m次元ベクトルの列R(1),R(2),・・・,R(K)をm次元wビットの疑似乱数列r1(1),r1(2),・・・,r1(K),r2(1),r2(2),・・・,r2(K),・・・,rm(1),rm(2),・・・,rm(K)として出力するものである。
【0043】
次に、上記構成の疑似乱数列生成装置1による疑似乱数列生成処理手順について説明する。図2は図1の疑似乱数列生成装置による疑似乱数列生成手順を示すフロー図である。
【0044】
まず、種受付部10は、wビットの整数si(k)のn次元ベクトルS(k)=(s1(k),s2(k),・・・,sn(k))の列S(1),S(2),・・・,S(K)を種として受け付ける(ステップS101)。初期化部11は、この受け付けたn次元ベクトルの列S(1),S(2),・・・,S(K)を、wビットの整数xi(k)のn次元ベクトルX(k)=(x1(k),x2(k),・・・,xn(k))の列X(1),X(2),・・・,X(K)として与える(ステップS102)。
【0045】
変換部12は、この与えられたn次元ベクトルの列X(1),X(2),・・・,X(K)のそれぞれに対してn次元ベクトルの列X(1),X(2),・・・,X(K)から決定される変換行列を用いたn次元体積保存写像変換を施してwビットの整数yi(k)のn次元ベクトルY(k)=(y1(k),y2(k),・・・,yn(k))の列Y(1),Y(2),・・・,Y(K)を得る(ステップS103)。回転部13は、この得られたn次元ベクトルの列Y(1),Y(2),・・・,Y(K)をw×K×nビットのビット列y1(1),y1(2),・・・,y1(K),y2(1),y2(2),・・・,y2(K),・・・,yn(1),yn(2),・・・,yn(K)とみて、その一部または全部に対して所定の回転ビット数の回転演算を行って得られたw×K×nビットのビット列を、wビットの整数zi(k)の列z1(1),z1(2),・・・,z1(K),z2(1),z2(2),・・・,z2(K),・・・,zn(1),zn(2),・・・,zn(K)とみて、n次元ベクトルZ(k)=(z1(k),z2(k),・・・,zn(k))の列Z(1),Z(2),・・・,Z(K)を得る(ステップS104)。
【0046】
疑似乱数列生成装置1は、ステップS103,S104の処理を所定回数繰り返したかどうか判断し、所定回数繰り返していない場合、更新部14は、n次元ベクトルの列Z(1),Z(2),・・・,Z(K)をn次元ベクトルの列X(1),X(2),・・・,X(K)として変換部12に与える(ステップS106)。一方、所定回数繰り返した場合、射影部15は、最後に得られたn次元ベクトルの列Z(1),Z(2),・・・,Z(K)のそれぞれに対してn次元ベクトルからm次元ベクトルへの射影変換を行い、wビットの整数ri(k)のm次元ベクトルR(k)=(r1(k),r2(k),・・・,rm(k))の列R(1),R(2),・・・,R(K)を得る(ステップS107)。
【0047】
そして、出力部16は、この得られたm次元ベクトルの列R(1),R(2),・・・,R(K)をm次元wビットの疑似乱数列r1(1),r1(2),・・・,r1(K),r2(1),r2(2),・・・,r2(K),・・・,rm(1),rm(2),・・・,rm(K)として出力する(ステップS108)。
【0048】
上記のように、本実施形態における疑似乱数列生成装置1によれば、n次元ベクトルの列X(1),X(2),・・・,X(K)から決定される変換行列を用いたn次元体積保存写像変換を施した後、その一部または全部に対して所定の回転ビット数の回転演算が行われ、さらにn次元ベクトルの列X(1),X(2),・・・,X(K)から決定される変換行列を用いたn次元体積保存写像変換および回転演算が所定回数繰り返し行われることによって、乱数性の高い多次元疑似乱数列が生成される。また、このような乱数性の高い多次元疑似乱数列を用いることで、安全性の高い暗号化復号化を行うことができる。図3は図1の疑似乱数列生成装置1を用いた暗号化復号化装置の構成を示すブロック図である。
【0049】
図3に示すように、この暗号化復号化装置2は、電子メッセージや電子ファイル等の電子データを暗号化し、暗号化装置2aと復号化装置2bとの間で伝送して復号化するものである。暗号化および復号化には、暗号化装置2aと復号化装置2bとで同じ共通鍵Sが種として使用される。
【0050】
暗号化装置2aは、疑似乱数列生成装置1により構成され、疑似乱数列を出力する疑似乱数列生成部21aと、暗号化対象としての電子データを受け付けるデータ受付部22aと、疑似乱数列生成部21aから出力される疑似乱数列とデータ受付部22aにより受け付けられた電子データとの排他的論理和(xor)を演算し、出力するXOR部23aとから構成される。また、復号化装置2bは、疑似乱数列生成装置1により構成され、疑似乱数列を出力する疑似乱数列生成部21bと、復号化対象としての電子データを受け付けるデータ受付部22bと、疑似乱数列生成部21bから出力される疑似乱数列とデータ受付部22bにより受け付けられた電子データとの排他的論理和(xor)を演算し、出力するXOR部23bとから構成される。
【0051】
図4は暗号化装置2aによる暗号化処理のフロー図、図5は復号化装置2bによる復号化処理のフロー図である。
【0052】
図4に示すように、暗号化装置2aでは、まず、データ受付部22aによる電子データPの受け付けと、疑似乱数列生成部21aを構成する疑似乱数列生成装置1の種受付部10による共通鍵Sの受け付けを行う(ステップS201)。疑似乱数列生成部21aは、この共通鍵Sを用いて前述のように疑似乱数列Rの生成を行い出力する(ステップS202)。XOR部23aは、データ受付部22aにより受け付けられた電子データPと疑似乱数列生成部21aにより生成された疑似乱数列Rの排他的論理和演算を行い(ステップS203)、この排他的論理和演算によって暗号化された電子データP’を復号化装置2bへ送信する(ステップS204)。
【0053】
一方、図5に示すように、復号化装置2bでは、この暗号化装置2aから送信された電子データP’を受信し、データ受付部22bにより受け付ける(ステップS301)。また、疑似乱数列生成部21bを構成する疑似乱数列生成装置1の種受付部10により共通鍵Sの受け付けを行う(ステップS302)。疑似乱数列生成部21bは、この共通鍵Sを用いて前述のように疑似乱数列Rの生成を行い出力する(ステップS303)。XOR部23bは、データ受付部22bにより受け付けられた電子データP’と疑似乱数列生成部21bにより生成された疑似乱数列Rの排他的論理和演算を行い(ステップS304)、この排他的論理和演算によって復号化された電子データPを出力する(ステップS305)。
【0054】
以上のように、暗号化装置2aと復号化装置2bとで同じ共通鍵Sを用い、疑似乱数列生成装置1により生成された疑似乱数列を用いることで暗号化通信を行うことが可能である。なお、暗号化装置2aと復号化装置2bとは、入出力されるデータが異なるだけで、同一の構成であるため、同じ装置をいずれにも用いることができる。
【0055】
(実施の形態2)
次に、n次元体積保存写像変換として2次元面積保存写像変換である2次元キャットマップ変換を用いた128ビット疑似乱数列生成の例を説明する。
【0056】
まず、変数および関数を定義する。
【数17】

【0057】
次に、具体的な2次元キャットマップ変換を用いた128ビット疑似乱数列の生成処理について説明する。図6は2次元面積保存写像変換により疑似乱数列生成を行う疑似乱数列生成装置のブロック図である。
【0058】
図6に示すように、この例では、共通鍵Sとして、それぞれ128ビットの初期ベクトル(イニシャルベクトル(Initial Vector:IV))(s1(1),s1(2),s1(3),s1(4))およびプライベートキー(Private Key)(s2(1),s2(2),s2(3),s2(4))の列Sを用いている。s1(1),s1(2),s1(3),s1(4),s2(1),s2(2),s2(3),s2(4)は、それぞれ32ビットの整数である。これらの初期ベクトルおよびプライベートキーは、種受付部10により受け付けられる。
【0059】
そして、初期化部11により、次式に示すように、SがXに代入される。
【数18】

【0060】
次に、変換部12によって、次式に示すように、Xに対して2次元ベクトルの列X(1),X(2),X(3),X(4)から決定される変換行列を用いた2次元キャットマップ変換が行われ、Yが計算される。図7はこの2次元キャットマップ変換のパラメータα1(k),α2(k)生成およびx1(k),x2(k)からy1(k),y2(k)への2次元キャットマップ変換を表すブロック図である。
【数19】

【0061】
続いて、回転部13によって、次式に示すように、回転ビット数sの回転演算rotationsが行われ、YからZが計算される。
【数20】

【0062】
更新部14によって、次式に示すように、ZがXに代入され、変換部12および回転部13による処理がR回繰り返される。
【数21】

【0063】
その後、射影部15により、次式に示すように、射影変換を表す関数projectionを用いてZから疑似乱数列が得られる。
【数22】

【0064】
(実施の形態3)
次に、n次元体積保存写像変換として3次元体積保存写像変換を用いた256ビット疑似乱数生成の例を説明する。
【0065】
まず、変数および関数を定義する。
【数23】

【0066】
次に、具体的な3次元体積保存写像変換を用いた256ビット疑似乱数列の生成処理について説明する。図8は3次元体積保存写像により疑似乱数列生成を行う疑似乱数列生成装置のブロック図である。
【0067】
図8に示すように、この例では、共通鍵Sとして、128ビットのプライベートキー(Private Key)(s1(1),s1(2),s1(3),s1(4))および256ビットの初期ベクトル(s2(1),s2(2),s2(3),s2(4),s3(1),s3(2),s3(3),s3(4))の列Sを用いている。s1(1),s1(2),s1(3),s1(4),s2(1),s2(2),s2(3),s2(4),s3(1),s3(2),s3(3),s3(4)は、それぞれ32ビットの整数である。これらの初期ベクトルおよびプライベートキーは、種受付部10により受け付けられる。
【0068】
そして、初期化部11により、次式に示すように、SがXに代入される。
【数24】

【0069】
次に、変換部12によって、次式に示すように、Xに対して3次元ベクトルの列X(1),X(2),X(3),X(4)から決定される変換行列を用いた3次元体積保存写像変換が行われ、Yが計算される。図9はこの3次元体積保存写像変換のパラメータα1(k),α2(k),α3(k)生成およびx1(k),x2(k),x3(k)からy1(k),y2(k),y3(k)への3次元体積保存写像変換を表すブロック図である。
【数25】

【0070】
続いて、回転部13によって、次式に示すように、回転ビット数sの回転演算rotationsが行われ、YからZが計算される。
【数26】

【0071】
更新部14によって、次式に示すように、ZがXに代入され、変換部12および回転部13による処理がR回繰り返される。
【数27】

【0072】
その後、射影部15により、次式に示すように、射影変換を表す関数projectionを用いてZから疑似乱数列が得られる。
【数28】

【実施例】
【0073】
上記実施の形態2において説明した2次元キャットマップ変換を用いた128ビット疑似乱数列生成について性能評価試験を行った。
ストリーム暗号方式の安全性は、一般的に疑似乱数生成器によるものとされる。そこで、疑似乱数生成器に求められる要件として次の二つがあげられる。
(1)異なる初期値を与えた場合に出力列が大きく変わること。
(2)出力列が十分な乱数性を持つこと。
【0074】
そこで、性能評価試験は、差分解析と乱数性評価を行った。差分解析では、異なる初期値を与えた場合に出力される疑似乱数列に対して統計的な解析を行った。また、暗号に使用される初期値(プライベートキーや初期ベクトル等の共通鍵)が僅かに異なる場合に大きく出力が異なるかどうか調査した。一方、乱数性評価では、NIST(米国国立標準技術研究所)発行のSP800−22に基づいて出力される疑似乱数列に対してランダム性評価テストを行った。また、暗号化に用いる疑似乱数列が良いランダム性を持つかどうか調査した。
【0075】
(差分解析)
ランダムな初期値と差分を加えた初期値により生成した疑似乱数列のハミング距離を計測した。なお、差分を加えた初期値は、最上位からnビット目を反転したものを用いた。これを1万サンプル試行し、統計的な解析を行った。
【0076】
図10はプライベートキーに差分を加えた場合のハミング距離の平均の分布を示す図である。図10に示すように、シフト回転なしとありとでは大きく差が出ていることが分かる。また、シフト回転を行った場合、平均が64付近に収束していることが分かる。また、図11は初期ベクトルに差分を加えた場合のハミング距離の平均の分布を示す図である。図11に示すように、初期ベクトルに差分を加えた場合、プライベートキーに差分を加えた場合と同様の傾向がみられた。
【0077】
図12はプライベートキーに差分を加えた場合のラウンド(繰り返し)数とハミング距離の分散の関係を示す図である。図12に示すように、シフト回転なしとありとでは大きく差が出ていることが分かる。また、シフト回転を行う場合、ラウンド数が2〜3回の場合は誤差が拡大していることが分かる。また、シフト回転を行う場合、分散が小さくなり、32付近に収束していることが分かる。また、図13は初期ベクトルに差分を加えた場合のラウンド数とハミング距離の分散の関係を示す図である。図13に示すように、初期ベクトルに差分を加えた場合、プライベートキーに差分を加えた場合と同様の傾向がみられた。
【0078】
以上の結果から、平均・分散ともにシフト回転を行う場合と行わない場合とでは、全く異なる傾向がみられた。また、シフト回転を行う場合は64に収束し、このとき分散は32に収束した(誤差が小さくなった。)。すなわち、シフト回転を行うことで攪拌が大きくなり、ラウンド数が大きくなると64に収束する結果が得られた。したがって、この疑似乱数列生成では、出力される疑似乱数列が128ビットであるため、ハミング距離の値が64付近となる場合、わずかな差分に対して十分に攪拌しているといえる。
【0079】
また、この結果から平均・分散ともに収束しているパラメータを検出した。検出基準は、平均64、分散32から±0.1とした。表1はこの検出結果を示している。表1において、両方十分に収束している値の場合を○、どちらか一方が十分に収束している値の場合を△、どちらも収束している値でない場合を×で示している。なお、△は実際には64付近に収束しているが、誤差の範囲が広かった。
【0080】
【表1】

【0081】
また、図14および図15にラウンド数5、シフトビット数3の場合について初期値の各ビットに差分を入れたときのハミング距離の平均の例を示した。なお、図14はプライベートキーに差分を加えた場合、図15は初期ベクトルに差分を加えた場合である。いずれの場合も、どのビットに差分を加えてもハミング距離の平均が64付近になることが分かる。
【0082】
また、図16および図17にラウンド数5、シフトビット数3の場合について生成される疑似乱数列の各ビットの反転(ハミング距離となる)確率の例を示した。なお、図16はプライベートキーに差分を加えた場合、図17は初期ベクトルに差分を加えた場合である。いずれの場合も、どのビットも一様に5割前後の確率で反転しており、偏りがないことが分かる。
【0083】
次に、本発明の実施の形態1,2と従来のVSC128とで、プライベートキーに差分を加えた場合の解析結果を比較した。表2は本発明の実施の形態3(256ビット)の平均(128±0.1)、分散(64±0.1)の収束結果を、表3は本発明の実施の形態3(256ビット)の平均(128±0.2)、分散(64±0.2)の収束結果を、表4はVSC128の平均(64±0.1)、分散(32±0.1)の収束結果をそれぞれ示している。なお、表2から表4の各記号は、表1と同様、両方十分に収束している値の場合を○、どちらか一方が十分に収束している値の場合を△、どちらも収束している値でない場合を×で示している。また、本発明の実施の形態2(128ビット)の平均(64±01)、分散(32±0.1)の収束結果は、既に表1で示している。
【0084】
また、本発明の実施の形態3については、256ビットの疑似乱数を生成するものであり、実施の形態2およびVSC128の128ビットに対してビット数が2倍であるため、平均値および分散も2倍となっている。そこで、表4では、実施の形態3について、より厳密に比較するために、条件範囲を2倍にし、平均値、分散値と条件範囲のスケール比を揃えて評価している。
【0085】
【表2】

【0086】
【表3】

【0087】
【表4】

【0088】
表1〜表4から、VSC128(表4)と比較して、実施の形態2(表1),3(表2,3)の方が少ないラウンド数で分布が収束していることが分かる。したがって、本発明の実施の形態2,3の疑似乱数生成方法では、VSC128と比較して同等の攪拌性を持つ疑似乱数系列を少ないラウンド数で高速に生成できることが分かった。
【0089】
(乱数性評価)
NIST SP800−22では、0と1からなる系列に対して16種類の検定を行う。なお、今回の実験では、NISTで公開されている評価ツールSTS(Statical Test Suite)のバージョン1.7を用いた。このNISTの検定については、一般的な検定であるため、詳細な説明は省略するが、バージョン1.7では、15種類の検定となっている。
【0090】
表5は、実施の形態2について、攪拌が良かったパラメータに対しての検定結果である。表5の各マスは10回中15種類すべての検定をパスした初期値の個数を表している。表5から、10回中5〜7回パスするパラメータがあることが分かる。これらは、初期値に対して十分に攪拌が得られ、なおかつ良いランダム性を持つといえる。
【0091】
【表5】

【産業上の利用可能性】
【0092】
本発明の疑似乱数列生成装置、暗号化復号化装置、疑似乱数列生成方法、暗号化復号化方法、疑似乱数列生成プログラムおよび暗号化復号化プログラムは、データを暗号化することによりデータの保護や安全な暗号を行うためのものとして有用である。
【図面の簡単な説明】
【0093】
【図1】本発明の実施の形態における疑似乱数列生成装置の構成を示すブロック図である。
【図2】図1の疑似乱数列生成装置による疑似乱数列生成手順を示すフロー図である。
【図3】図1の疑似乱数列生成装置を用いた暗号化復号化装置の構成を示すブロック図である。
【図4】図3の暗号化装置による暗号化処理のフロー図である。
【図5】図3の復号化装置による復号化処理のフロー図である。
【図6】2次元面積保存写像変換により疑似乱数列生成を行う疑似乱数列生成装置のブロック図である。
【図7】2次元キャットマップ変換のパラメータα1(k),α2(k)生成およびx1(k),x2(k)からy1(k),y2(k)への2次元キャットマップ変換を表すブロック図である。
【図8】3次元体積保存写像により疑似乱数列生成を行う疑似乱数列生成装置のブロック図である。
【図9】3次元体積保存写像変換のパラメータα1(k),α2(k),α3(k)生成およびx1(k),x2(k),x3(k)からy1(k),y2(k),y3(k)への3次元体積保存写像変換を表すブロック図である。
【図10】プライベートキーに差分を加えた場合のハミング距離の平均の分布を示す図である。
【図11】初期ベクトルに差分を加えた場合のハミング距離の平均の分布を示す図である。
【図12】プライベートキーに差分を加えた場合のラウンド数とハミング距離の分散の関係を示す図である。
【図13】初期ベクトルに差分を加えた場合のラウンド数とハミング距離の分散の関係を示す図である。
【図14】プライベートキーに差分を加えた場合の初期値の各ビットに差分を入れたときのハミング距離の平均の例を示す図である。
【図15】初期ベクトルに差分を加えた場合の初期値の各ビットに差分を入れたときのハミング距離の平均の例を示す図である。
【図16】プライベートキーに差分を加えた場合の初期値の各ビットの反転(ハミング距離となる)確率の例を示す図である。
【図17】初期ベクトルに差分を加えた場合の初期値の各ビットの反転(ハミング距離となる)確率の例を示す図である。
【図18】従来のVSC128による疑似乱数列生成装置の構成を示すブロック図である。
【図19】2次元キャットマップ写像の例を示す図である。
【図20】2次元キャットマップを繰り返し適用した写像の例を示す図である。
【図21】2次元キャットマップのNを整数上の1〜128とした場合の最大周期を示す図である。
【図22】2次元キャットマップ写像の例を示す図である。
【符号の説明】
【0094】
1 疑似乱数列生成装置
2 暗号化復号化装置
2a 暗号化装置
2b 復号化装置
10 種受付部
11 初期化部
12 変換部
13 回転部
14 更新部
15 射影部
16 出力部
21a,21b 疑似乱数列生成部
22a,22b データ受付部
23a,23b XOR部

【特許請求の範囲】
【請求項1】
m次元wビットの疑似乱数の列を生成する疑似乱数列生成装置であって、
wビットの整数si(k)(但し、2以上の整数Kに対して、k=1,2,・・・,Kとする。以下同じ。)のn次元ベクトルS(k)=(s(k),s(k),・・・,s(k))の列S(1),S(2),・・・,S(K)を種として受け付ける種受付部と、
前記n次元ベクトルの列S(1),S(2),・・・,S(K)を、wビットの整数xi(k)のn次元ベクトルX(k)=(x(k),x(k),・・・,x(k))の列X(1),X(2),・・・,X(K)として与える初期化部と、
前記n次元ベクトルの列X(1),X(2),・・・,X(K)のそれぞれに対して前記n次元ベクトルの列X(1),X(2),・・・,X(K)から決定される変換行列を用いた写像変換を施してwビットの整数yi(k)のn次元ベクトルY(k)=(y(k),y(k),・・・,y(k))の列Y(1),Y(2),・・・,Y(K)を得る変換部と、
前記n次元ベクトルの列Y(1),Y(2),・・・,Y(K)をw×K×nビットのビット列y(1),y(2),・・・,y(K),y(1),y(2),・・・,y(K),・・・,y(1),y(2),・・・,y(K)とみて、その一部または全部に対して所定の回転ビット数の回転演算を行って得られたw×K×nビットのビット列を、wビットの整数zi(k)の列z(1),z(2),・・・,z(K),z(1),z(2),・・・,z(K),・・・,z(1),z(2),・・・,z(K)とみて、n次元ベクトルZ(k)=(z(k),z(k),・・・,z(k))の列Z(1),Z(2),・・・,Z(K)を得る回転部と、
前記n次元ベクトルの列Z(1),Z(2),・・・,Z(K)をn次元ベクトルの列X(1),X(2),・・・,X(K)として前記変換部に与える更新部と、
前記変換部、回転部および更新部による処理が所定回数繰り返された後、最後に得られたn次元ベクトルの列Z(1),Z(2),・・・,Z(K)のそれぞれに対してn次元ベクトルからm次元ベクトルへの射影変換を行い、wビットの整数ri(k)のm次元ベクトルR(k)=(r(k),r(k),・・・,r(k))の列R(1),R(2),・・・,R(K)を得る射影部と、
前記m次元ベクトルの列R(1),R(2),・・・,R(K)をm次元wビットの疑似乱数列r(1),r(2),・・・,r(K),r(1),r(2),・・・,r(K),・・・,r(1),r(2),・・・,r(K)として出力する出力部と
を備える疑似乱数列生成装置。
【請求項2】
前記写像変換は、次式により行うものである請求項1記載の疑似乱数列生成装置。
【数1】

但し、ai,j(k)(X)は、2wビット整数を出力するXの関数である。
【請求項3】
前記変換行列A(k)は、
【数2】

を満たすものである請求項2記載の疑似乱数列生成装置。
【請求項4】
前記写像変換が、2次元キャットマップ変換である請求項1から3のいずれかに記載の疑似乱数列生成装置。
【請求項5】
請求項1から4のいずれかに記載の疑似乱数列生成装置から構成され、m次元wビットの疑似乱数列r(1),r(2),・・・,r(K),r(1),r(2),・・・,r(K),・・・,r(1),r(2),・・・,r(K)を出力する疑似乱数列生成部と、
m次元wビットの整数列p(1),p(2),・・・,p(K),p(1),p(2),・・・,p(K),・・・,p(1),p(2),・・・,p(K)を暗号化または復号化対象のデータとして受け付けるデータ受付部と、
前記疑似乱数列と前記暗号化または復号化対象のデータの排他的論理和p(1) xor r(1),p(2) xor r(2),・・・,p(K) xor r(K),p(1) xor r(1),p(2) xor r(2),・・・,p(K) xor r(K),・・・,p(1) xor r(1),p(2) xor r(2),・・・,p(K) xor r(K)を暗号化または復号化の結果として出力する暗号化復号化部と
を備えた暗号化復号化装置。
【請求項6】
コンピュータによりm次元wビットの疑似乱数の列を生成する疑似乱数列生成方法であって、
前記コンピュータが、wビットの整数si(k)(但し、2以上の整数Kに対して、k=1,2,・・・,Kとする。以下同じ。)のn次元ベクトルS(k)=(s(k),s(k),・・・,s(k))の列S(1),S(2),・・・,S(K)を種として受け付ける種受付ステップと、
前記コンピュータが、前記n次元ベクトルの列S(1),S(2),・・・,S(K)を、wビットの整数xi(k)のn次元ベクトルX(k)=(x(k),x(k),・・・,x(k))の列X(1),X(2),・・・,X(K)として与える初期化ステップと、
前記コンピュータが、前記n次元ベクトルの列X(1),X(2),・・・,X(K)のそれぞれに対して前記n次元ベクトルの列X(1),X(2),・・・,X(K)から決定される変換行列を用いた写像変換を施してwビットの整数yi(k)のn次元ベクトルY(k)=(y(k),y(k),・・・,y(k))の列Y(1),Y(2),・・・,Y(K)を得る変換ステップと、
前記コンピュータが、前記n次元ベクトルの列Y(1),Y(2),・・・,Y(K)をw×K×nビットのビット列y(1),y(2),・・・,y(K),y(1),y(2),・・・,y(K),・・・,y(1),y(2),・・・,y(K)とみて、その一部または全部に対して所定の回転ビット数の回転演算を行って得られたw×K×nビットのビット列を、wビットの整数zi(k)の列z(1),z(2),・・・,z(K),z(1),z(2),・・・,z(K),・・・,z(1),z(2),・・・,z(K)とみて、n次元ベクトルZ(k)=(z(k),z(k),・・・,z(k))の列Z(1),Z(2),・・・,Z(K)を得る回転ステップと、
前記コンピュータが、前記n次元ベクトルの列Z(1),Z(2),・・・,Z(K)をn次元ベクトルの列X(1),X(2),・・・,X(K)として前記変換ステップに与える更新ステップと、
前記変換ステップ、回転ステップおよび更新ステップによる処理が所定回数繰り返された後、前記コンピュータが、最後に得られたn次元ベクトルの列Z(1),Z(2),・・・,Z(K)のそれぞれに対してn次元ベクトルからm次元ベクトルへの射影変換を行い、wビットの整数ri(k)のm次元ベクトルR(k)=(r(k),r(k),・・・,r(k))の列R(1),R(2),・・・,R(K)を得る射影ステップと、
前記コンピュータが、前記m次元ベクトルの列R(1),R(2),・・・,R(K)をm次元wビットの疑似乱数列r(1),r(2),・・・,r(K),r(1),r(2),・・・,r(K),・・・,r(1),r(2),・・・,r(K)として出力する出力ステップと
を含む疑似乱数列生成方法。
【請求項7】
請求項6記載の疑似乱数列生成方法により、前記コンピュータが、m次元wビットの疑似乱数列r(1),r(2),・・・,r(K),r(1),r(2),・・・,r(K),・・・,r(1),r(2),・・・,r(K)を出力する疑似乱数列生成ステップと、
前記コンピュータが、m次元wビットの整数列p(1),p(2),・・・,p(K),p(1),p(2),・・・,p(K),・・・,p(1),p(2),・・・,p(K)を暗号化または復号化対象のデータとして受け付けるデータ受付ステップと、
前記コンピュータが、前記疑似乱数列と前記暗号化または復号化対象のデータの排他的論理和p(1) xor r(1),p(2) xor r(2),・・・,p(K) xor r(K),p(1) xor r(1),p(2) xor r(2),・・・,p(K) xor r(K),・・・,p(1) xor r(1),p(2) xor r(2),・・・,p(K) xor r(K)を暗号化または復号化の結果として出力する暗号化復号化ステップと
を含む暗号化復号化方法。
【請求項8】
コンピュータに、
wビットの整数si(k)(但し、2以上の整数Kに対して、k=1,2,・・・,Kとする。以下同じ。)のn次元ベクトルS(k)=(s(k),s(k),・・・,s(k))の列S(1),S(2),・・・,S(K)を種として受け付ける種受付ステップと、
前記n次元ベクトルの列S(1),S(2),・・・,S(K)を、wビットの整数xi(k)のn次元ベクトルX(k)=(x(k),x(k),・・・,x(k))の列X(1),X(2),・・・,X(K)として与える初期化ステップと、
前記n次元ベクトルの列X(1),X(2),・・・,X(K)のそれぞれに対して前記n次元ベクトルの列X(1),X(2),・・・,X(K)から決定される変換行列を用いた写像変換を施してwビットの整数yi(k)のn次元ベクトルY(k)=(y(k),y(k),・・・,y(k))の列Y(1),Y(2),・・・,Y(K)を得る変換ステップと、
前記n次元ベクトルの列Y(1),Y(2),・・・,Y(K)をw×K×nビットのビット列y(1),y(2),・・・,y(K),y(1),y(2),・・・,y(K),・・・,y(1),y(2),・・・,y(K)とみて、その一部または全部に対して所定の回転ビット数の回転演算を行って得られたw×K×nビットのビット列を、wビットの整数zi(k)の列z(1),z(2),・・・,z(K),z(1),z(2),・・・,z(K),・・・,z(1),z(2),・・・,z(K)とみて、n次元ベクトルZ(k)=(z(k),z(k),・・・,z(k))の列Z(1),Z(2),・・・,Z(K)を得る回転ステップと、
前記n次元ベクトルの列Z(1),Z(2),・・・,Z(K)をn次元ベクトルの列X(1),X(2),・・・,X(K)として前記変換ステップに与える更新ステップと、
前記変換ステップ、回転ステップおよび更新ステップによる処理が所定回数繰り返された後、最後に得られたn次元ベクトルの列Z(1),Z(2),・・・,Z(K)のそれぞれに対してn次元ベクトルからm次元ベクトルへの射影変換を行い、wビットの整数ri(k)のm次元ベクトルR(k)=(r(k),r(k),・・・,r(k))の列R(1),R(2),・・・,R(K)を得る射影ステップと、
前記m次元ベクトルの列R(1),R(2),・・・,R(K)をm次元wビットの疑似乱数列r(1),r(2),・・・,r(K),r(1),r(2),・・・,r(K),・・・,r(1),r(2),・・・,r(K)として出力する出力ステップと
を実行させるための疑似乱数列生成プログラム。
【請求項9】
請求項8記載の疑似乱数列生成プログラムを実行するコンピュータに、
m次元wビットの疑似乱数列r(1),r(2),・・・,r(K),r(1),r(2),・・・,r(K),・・・,r(1),r(2),・・・,r(K)を出力する疑似乱数列生成ステップと、
m次元wビットの整数列p(1),p(2),・・・,p(K),p(1),p(2),・・・,p(K),・・・,p(1),p(2),・・・,p(K)を暗号化または復号化対象のデータとして受け付けるデータ受付ステップと、
前記疑似乱数列と前記暗号化または復号化対象のデータの排他的論理和p(1) xor r(1),p(2) xor r(2),・・・,p(K) xor r(K),p(1) xor r(1),p(2) xor r(2),・・・,p(K) xor r(K),・・・,p(1) xor r(1),p(2) xor r(2),・・・,p(K) xor r(K)を暗号化または復号化の結果として出力する暗号化復号化ステップと
を実行させるための暗号化復号化プログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図21】
image rotate

【図20】
image rotate

【図22】
image rotate


【公開番号】特開2007−264147(P2007−264147A)
【公開日】平成19年10月11日(2007.10.11)
【国際特許分類】
【出願番号】特願2006−86764(P2006−86764)
【出願日】平成18年3月27日(2006.3.27)
【新規性喪失の例外の表示】特許法第30条第1項適用申請有り 2005年9月28日 電子情報通信学会九州支部学生会発行の「電子情報通信学会九州支部学生会講演会講演論文集Vol.13」に発表
【新規性喪失の例外の表示】特許法第30条第1項適用申請有り 2006年1月24日 社団法人日本建築学会発行の「第55回理論応用力学講演会講演論文集」に発表
【新規性喪失の例外の表示】特許法第30条第1項適用申請有り 平成18年2月17日 学校法人福岡工業大学主催の「福岡工業大学大学院工学研究科管理工学専攻 平成17年度修士論文発表会」において文書をもって発表
【出願人】(500372717)学校法人福岡工業大学 (32)
【出願人】(304001545)株式会社カオスウェア (28)
【Fターム(参考)】