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

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

Info

Publication number
JP2007264147A
JP2007264147A JP2006086764A JP2006086764A JP2007264147A JP 2007264147 A JP2007264147 A JP 2007264147A JP 2006086764 A JP2006086764 A JP 2006086764A JP 2006086764 A JP2006086764 A JP 2006086764A JP 2007264147 A JP2007264147 A JP 2007264147A
Authority
JP
Japan
Prior art keywords
dimensional vector
bit
random number
sequence
dimensional
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2006086764A
Other languages
English (en)
Inventor
Akihiro Yamaguchi
明宏 山口
Takehiro Araki
丈宏 荒木
Takeshi Umeno
健 梅野
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
ChaosWare Inc
Fukuoka Institute of Technology
Original Assignee
ChaosWare Inc
Fukuoka Institute of Technology
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by ChaosWare Inc, Fukuoka Institute of Technology filed Critical ChaosWare Inc
Priority to JP2006086764A priority Critical patent/JP2007264147A/ja
Publication of JP2007264147A publication Critical patent/JP2007264147A/ja
Pending legal-status Critical Current

Links

Abstract

【課題】従来、疑似乱数列生成や暗号化復号化に不適であるといわれている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によりそれぞれ写像変換および回転演算を所定回数繰り返し行うことにより、乱数性の高い多次元疑似乱数列を生成する。
【選択図】図1

Description

本発明は、疑似乱数の列を生成する疑似乱数列生成装置、暗号化復号化装置、疑似乱数列生成方法、暗号化復号化方法、疑似乱数列生成プログラムおよび暗号化復号化プログラムに関する。
近年、カオス理論を用いた暗号方式がいくつか提案されている。暗号におけるカオスは初期値鋭敏性や予測不可能性などの良い特徴を持ち、また高速であることが期待される。例えば、非特許文献1および特許文献1,2において、これらの特徴を利用したストリーム暗号のVSC(Vector Stream Cipher:ベクター・ストリーム・サイファ)128が提案されている。
VSCは、ストリーム暗号方式の疑似乱数列生成器部分にカオス理論を適用した共通鍵暗号である。VSCでは、次の式で表される1次元のカオス写像を用いる。
また、VSC128は、次式で表される8個の1次元写像を用い、以下の手順で疑似乱数列を生成する。図18はVSC128による疑似乱数列生成装置の構成を示すブロック図である。この疑似乱数列生成装置では、以下の手順により疑似乱数列を生成する。
(1)128ビットの共通鍵を32ビットの4つの変数に格納。
(2)128ビットの初期ベクトルを32ビットの4つの変数に格納。
(3)変数変換(VSC128の制御パラメータの生成と写像)。
(4)256ビット(8個の変数)のビット列を5ビット左にシフト回転。
(5)手順(3)、(4)を8回繰り返す。
また、このようなVSC128を用いた疑似乱数列生成方法および暗号化復号化方法が、特許文献3,4において提案されている。これらの疑似乱数列生成方法および暗号化復号化方法では、所定の整数と様々な写像を用いて疑似乱数列を生成している。
ところで、カオスを生成する方法の一つとして、2次元キャットマップ(Arnold‘s Cat Map)が知られている。2次元キャットマップは、変換行列の行列式が1となる制御パラメータα,βを持つ面積保存写像であり、次の式で表される。
例として、α=β=1,N=1の場合の写像を図19に示す。ここで、単位正方領域が線形変換で引き伸ばされ、次にmod(剰余)で折り畳まれる操作がみられる。xn,ynが連続値をとる場合には、2次元キャットマップFを繰り返し適用することで、カオス系列を生成することができる。例として、α=β=1,N=128の場合に2次元キャットマップFを繰り返し適用した写像を図20に示す。
特許第3030341号公報 特許第3455748号公報 特許第3700002号公報 特許第3735670号公報 梅野健,"VSC128S仕様書",[online],平成16年9月17日,株式会社カオスウェア,[平成18年3月7日検索],インターネット<URL:http://www.chaosware.com/vsc128s.pdf>
このように、2次元キャットマップを繰り返し適用した面積保存写像は、変換行列の行列式が1であるため、1対1写像となり、初期点、行列の係数をすべて整数とすることで、整数上の1対1写像に拡張できるという性質がある。また、恒等変換、回転変換を除いて、必ず絶対値が1以上の固有値を持ち、カオス系列を生成することが可能である。
ところが、整数上に拡張した面積保存写像の場合、状態離散化によって、周期系列を生成してしまうという問題がある。図21は2次元キャットマップのNを整数上の1〜128とした場合の最大周期を示している。すなわち、2次元キャットマップを繰り返し適用すると状態数Nに対して比較的短周期で面積保存写像が元の画像に戻ってしまうという問題がある。図22はα=40,β=8,N=124の場合の写像を示しており、5回写像で元の画像へ戻っている。
したがって、2次元キャットマップは、疑似乱数列生成や暗号化復号化に不適であるといわれており、特許文献3,4の疑似乱数列生成方法および暗号化復号化方法においても採用されていない。
そこで、本発明においては、従来、疑似乱数列生成や暗号化復号化に不適であるといわれている2次元キャットマップのような写像変換を用いて疑似乱数列生成および暗号化復号化を可能にした疑似乱数列生成装置、暗号化復号化装置、疑似乱数列生成方法、暗号化復号化方法、疑似乱数列生成プログラムおよび暗号化復号化プログラムを提供することを目的とする。
本発明の疑似乱数列生成装置は、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)として出力する出力部とを備えるものである。
また、本発明の暗号化復号化装置は、上記本発明の疑似乱数列生成装置から構成され、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)を暗号化または復号化の結果として出力する暗号化復号化部とを備えたものである。
また、本発明の疑似乱数列生成方法は、コンピュータにより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)として出力する出力ステップとを含むものである。
また、本発明の暗号化復号化方法は、上記本発明の疑似乱数列生成方法により、コンピュータが、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)を暗号化または復号化の結果として出力する暗号化復号化ステップとを含むものである。
また、本発明の疑似乱数列生成プログラムは、コンピュータに、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)として出力する出力ステップとを実行させるためのものである。
また、本発明の暗号化復号化プログラムは、上記本発明の疑似乱数列生成プログラムを実行するコンピュータに、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)を暗号化または復号化の結果として出力する暗号化復号化ステップとを実行させるためのものである。
本発明によれば、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)から決定される変換行列を用いた写像変換および回転演算が所定回数繰り返し行われることによって、乱数性の高い多次元疑似乱数列が生成される。
また、本発明では、この生成された多次元疑似乱数列を用いて、暗号化または復号化対象のデータとして受け付けたデータとの排他的論理和を形成することにより、暗号化または復号化を行うことが可能である。
ここで、写像変換は、次式により行うものであることが望ましい。
但し、ai,j (k)(X)は、2wビット整数を出力するXの関数である。
これにより、n次元ベクトルX(k)=(x1 (k),x2 (k),・・・,xn (k))の列X(1),X(2),・・・,X(K)を用いて相互に変換行列A(k)を決定することができ、変換行列A(k)を固定した場合と比較して、より乱数性が高い疑似乱数列を生成することが可能となる。
また、このとき、変換行列A(k)は、
を満たすものであることが望ましい。このように、行列式が1となる変換行列A(k)は、2次元であれば面積保存写像、3次元以上のn次元であれば体積保存写像となり、wビット整数のn次元ベクトル上での1対1写像を得ることができる。すなわち、個々の変換行列A(k)による変換が1対1写像となることで、K個の変換行列による変換もwビット整数のK×n次元ベクトル上での1対1写像となる。
本発明によれば、n次元ベクトルの列X(1),X(2),・・・,X(K)から決定される変換行列を用いた写像変換の性質により乱数性の高い多次元疑似乱数列を生成することが可能であり、この乱数性の高い多次元疑似乱数列を用いることにより、安全性の高い暗号化復号化を行うことが可能となる。
また、行列式が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)に応じた乱数性の高い疑似乱数列を生成することが可能となり、より安全性の高い暗号化復号化を行うことが可能となる。
また、本発明における疑似乱数生成は、行列とベクトルの積を基本演算としており、行列演算処理の並列化による処理速度の高速化並びにハードウェア実装にも適している。
(実施の形態1)
まず、以下の説明において使用する変数および関数について説明する。
本発明の実施の形態における疑似乱数列生成装置は、K(2以上の整数)個のn次元ベクトルの列X(1),X(2),・・・,X(K)から決定される変換行列A(k)(k=1,2,・・・,K)を用いた写像変換により、m個のK×wビット疑似乱数列を生成するものである(但し、1≦m≦n)。
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)を行列で表すと、
である。
また、X,Y,Z,Sは、それぞれ上記n次元ベクトルX(k),Y(k),Z(k),S(k)のK個組みの列、Rは、上記m次元ベクトルR(k)のK個組みの列であり、
で表される。
また、変換行列A(k)は、
で表される。
ここで、ai,j (k)(X)(i,j=1,2,・・・,n)は、2wビット整数を出力するXの関数であり、Xの要素および所定の定数に、所定のビット演算(例えば、AND演算、OR演算、NOT演算、XOR演算、回転演算や、これらの組み合わせ)を適用して得られる要素に対し、所定の整数演算(例えば、加減乗除演算、剰余演算や、これらの組み合わせ)を適用して得られる有理多項式である。
なお、以下の例では、Φ(k)を、k番目の変換行列A(k)を決定するn個のパラメータαi (k)(X)(2wビット整数を出力するXの関数)の組みの列として、
で表し、A(k)は、Φ(k)によって決定されるk番目のn×n変換行列
で表されるものを使用する。
ここで、α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演算、回転演算や、これらの組み合わせ)を適用して得られる要素に対し、所定の整数演算(例えば、加減乗除演算、剰余演算や、これらの組み合わせ)を適用して得られる有理多項式である。
また、本実施形態において、A(k)は、次式の条件を満たすように構成される。すなわち、2次元の場合は面積を保存し、3次元以上の場合は体積を保存する(n次元の場合も一般に体積保存と称される。)。
次に、本発明の実施の形態における疑似乱数列生成装置について説明する。図1は本発明の実施の形態における疑似乱数列生成装置の構成を示すブロック図である。
図1に示すように、本発明の実施の形態における疑似乱数列生成装置1は、種受付部10、初期化部11、変換部12、回転部13、更新部14、射影部15および出力部16を備える。疑似乱数列生成装置1は、一般的なコンピュータ上で、このコンピュータを種受付部10、初期化部11、変換部12、回転部13、更新部14、射影部15および出力部16として機能させるための疑似乱数列生成プログラムを実行することにより実現される。
種受付部10は、wビットの整数si (k)のn次元ベクトルS(k)=(s1 (k),s2 (k),・・・,sn (k))の列S(1),S(2),・・・,S(K)を種として受け付けるものである。
初期化部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は、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は、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は、n次元ベクトルの列Z(1),Z(2),・・・,Z(K)をn次元ベクトルの列X(1),X(2),・・・,X(K)として変換部12に与えるものであり、次式により表される。
射影部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は、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)として出力するものである。
次に、上記構成の疑似乱数列生成装置1による疑似乱数列生成処理手順について説明する。図2は図1の疑似乱数列生成装置による疑似乱数列生成手順を示すフロー図である。
まず、種受付部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)。
変換部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)。
疑似乱数列生成装置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)。
そして、出力部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)。
上記のように、本実施形態における疑似乱数列生成装置1によれば、n次元ベクトルの列X(1),X(2),・・・,X(K)から決定される変換行列を用いたn次元体積保存写像変換を施した後、その一部または全部に対して所定の回転ビット数の回転演算が行われ、さらにn次元ベクトルの列X(1),X(2),・・・,X(K)から決定される変換行列を用いたn次元体積保存写像変換および回転演算が所定回数繰り返し行われることによって、乱数性の高い多次元疑似乱数列が生成される。また、このような乱数性の高い多次元疑似乱数列を用いることで、安全性の高い暗号化復号化を行うことができる。図3は図1の疑似乱数列生成装置1を用いた暗号化復号化装置の構成を示すブロック図である。
図3に示すように、この暗号化復号化装置2は、電子メッセージや電子ファイル等の電子データを暗号化し、暗号化装置2aと復号化装置2bとの間で伝送して復号化するものである。暗号化および復号化には、暗号化装置2aと復号化装置2bとで同じ共通鍵Sが種として使用される。
暗号化装置2aは、疑似乱数列生成装置1により構成され、疑似乱数列を出力する疑似乱数列生成部21aと、暗号化対象としての電子データを受け付けるデータ受付部22aと、疑似乱数列生成部21aから出力される疑似乱数列とデータ受付部22aにより受け付けられた電子データとの排他的論理和(xor)を演算し、出力するXOR部23aとから構成される。また、復号化装置2bは、疑似乱数列生成装置1により構成され、疑似乱数列を出力する疑似乱数列生成部21bと、復号化対象としての電子データを受け付けるデータ受付部22bと、疑似乱数列生成部21bから出力される疑似乱数列とデータ受付部22bにより受け付けられた電子データとの排他的論理和(xor)を演算し、出力するXOR部23bとから構成される。
図4は暗号化装置2aによる暗号化処理のフロー図、図5は復号化装置2bによる復号化処理のフロー図である。
図4に示すように、暗号化装置2aでは、まず、データ受付部22aによる電子データPの受け付けと、疑似乱数列生成部21aを構成する疑似乱数列生成装置1の種受付部10による共通鍵Sの受け付けを行う(ステップS201)。疑似乱数列生成部21aは、この共通鍵Sを用いて前述のように疑似乱数列Rの生成を行い出力する(ステップS202)。XOR部23aは、データ受付部22aにより受け付けられた電子データPと疑似乱数列生成部21aにより生成された疑似乱数列Rの排他的論理和演算を行い(ステップS203)、この排他的論理和演算によって暗号化された電子データP’を復号化装置2bへ送信する(ステップS204)。
一方、図5に示すように、復号化装置2bでは、この暗号化装置2aから送信された電子データP’を受信し、データ受付部22bにより受け付ける(ステップS301)。また、疑似乱数列生成部21bを構成する疑似乱数列生成装置1の種受付部10により共通鍵Sの受け付けを行う(ステップS302)。疑似乱数列生成部21bは、この共通鍵Sを用いて前述のように疑似乱数列Rの生成を行い出力する(ステップS303)。XOR部23bは、データ受付部22bにより受け付けられた電子データP’と疑似乱数列生成部21bにより生成された疑似乱数列Rの排他的論理和演算を行い(ステップS304)、この排他的論理和演算によって復号化された電子データPを出力する(ステップS305)。
以上のように、暗号化装置2aと復号化装置2bとで同じ共通鍵Sを用い、疑似乱数列生成装置1により生成された疑似乱数列を用いることで暗号化通信を行うことが可能である。なお、暗号化装置2aと復号化装置2bとは、入出力されるデータが異なるだけで、同一の構成であるため、同じ装置をいずれにも用いることができる。
(実施の形態2)
次に、n次元体積保存写像変換として2次元面積保存写像変換である2次元キャットマップ変換を用いた128ビット疑似乱数列生成の例を説明する。
まず、変数および関数を定義する。
次に、具体的な2次元キャットマップ変換を用いた128ビット疑似乱数列の生成処理について説明する。図6は2次元面積保存写像変換により疑似乱数列生成を行う疑似乱数列生成装置のブロック図である。
図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により受け付けられる。
そして、初期化部11により、次式に示すように、SがXに代入される。
次に、変換部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次元キャットマップ変換を表すブロック図である。
続いて、回転部13によって、次式に示すように、回転ビット数sの回転演算rotationsが行われ、YからZが計算される。
更新部14によって、次式に示すように、ZがXに代入され、変換部12および回転部13による処理がR回繰り返される。
その後、射影部15により、次式に示すように、射影変換を表す関数projectionを用いてZから疑似乱数列が得られる。
(実施の形態3)
次に、n次元体積保存写像変換として3次元体積保存写像変換を用いた256ビット疑似乱数生成の例を説明する。
まず、変数および関数を定義する。
次に、具体的な3次元体積保存写像変換を用いた256ビット疑似乱数列の生成処理について説明する。図8は3次元体積保存写像により疑似乱数列生成を行う疑似乱数列生成装置のブロック図である。
図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により受け付けられる。
そして、初期化部11により、次式に示すように、SがXに代入される。
次に、変換部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次元体積保存写像変換を表すブロック図である。
続いて、回転部13によって、次式に示すように、回転ビット数sの回転演算rotationsが行われ、YからZが計算される。
更新部14によって、次式に示すように、ZがXに代入され、変換部12および回転部13による処理がR回繰り返される。
その後、射影部15により、次式に示すように、射影変換を表す関数projectionを用いてZから疑似乱数列が得られる。
上記実施の形態2において説明した2次元キャットマップ変換を用いた128ビット疑似乱数列生成について性能評価試験を行った。
ストリーム暗号方式の安全性は、一般的に疑似乱数生成器によるものとされる。そこで、疑似乱数生成器に求められる要件として次の二つがあげられる。
(1)異なる初期値を与えた場合に出力列が大きく変わること。
(2)出力列が十分な乱数性を持つこと。
そこで、性能評価試験は、差分解析と乱数性評価を行った。差分解析では、異なる初期値を与えた場合に出力される疑似乱数列に対して統計的な解析を行った。また、暗号に使用される初期値(プライベートキーや初期ベクトル等の共通鍵)が僅かに異なる場合に大きく出力が異なるかどうか調査した。一方、乱数性評価では、NIST(米国国立標準技術研究所)発行のSP800−22に基づいて出力される疑似乱数列に対してランダム性評価テストを行った。また、暗号化に用いる疑似乱数列が良いランダム性を持つかどうか調査した。
(差分解析)
ランダムな初期値と差分を加えた初期値により生成した疑似乱数列のハミング距離を計測した。なお、差分を加えた初期値は、最上位からnビット目を反転したものを用いた。これを1万サンプル試行し、統計的な解析を行った。
図10はプライベートキーに差分を加えた場合のハミング距離の平均の分布を示す図である。図10に示すように、シフト回転なしとありとでは大きく差が出ていることが分かる。また、シフト回転を行った場合、平均が64付近に収束していることが分かる。また、図11は初期ベクトルに差分を加えた場合のハミング距離の平均の分布を示す図である。図11に示すように、初期ベクトルに差分を加えた場合、プライベートキーに差分を加えた場合と同様の傾向がみられた。
図12はプライベートキーに差分を加えた場合のラウンド(繰り返し)数とハミング距離の分散の関係を示す図である。図12に示すように、シフト回転なしとありとでは大きく差が出ていることが分かる。また、シフト回転を行う場合、ラウンド数が2〜3回の場合は誤差が拡大していることが分かる。また、シフト回転を行う場合、分散が小さくなり、32付近に収束していることが分かる。また、図13は初期ベクトルに差分を加えた場合のラウンド数とハミング距離の分散の関係を示す図である。図13に示すように、初期ベクトルに差分を加えた場合、プライベートキーに差分を加えた場合と同様の傾向がみられた。
以上の結果から、平均・分散ともにシフト回転を行う場合と行わない場合とでは、全く異なる傾向がみられた。また、シフト回転を行う場合は64に収束し、このとき分散は32に収束した(誤差が小さくなった。)。すなわち、シフト回転を行うことで攪拌が大きくなり、ラウンド数が大きくなると64に収束する結果が得られた。したがって、この疑似乱数列生成では、出力される疑似乱数列が128ビットであるため、ハミング距離の値が64付近となる場合、わずかな差分に対して十分に攪拌しているといえる。
また、この結果から平均・分散ともに収束しているパラメータを検出した。検出基準は、平均64、分散32から±0.1とした。表1はこの検出結果を示している。表1において、両方十分に収束している値の場合を○、どちらか一方が十分に収束している値の場合を△、どちらも収束している値でない場合を×で示している。なお、△は実際には64付近に収束しているが、誤差の範囲が広かった。
また、図14および図15にラウンド数5、シフトビット数3の場合について初期値の各ビットに差分を入れたときのハミング距離の平均の例を示した。なお、図14はプライベートキーに差分を加えた場合、図15は初期ベクトルに差分を加えた場合である。いずれの場合も、どのビットに差分を加えてもハミング距離の平均が64付近になることが分かる。
また、図16および図17にラウンド数5、シフトビット数3の場合について生成される疑似乱数列の各ビットの反転(ハミング距離となる)確率の例を示した。なお、図16はプライベートキーに差分を加えた場合、図17は初期ベクトルに差分を加えた場合である。いずれの場合も、どのビットも一様に5割前後の確率で反転しており、偏りがないことが分かる。
次に、本発明の実施の形態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で示している。
また、本発明の実施の形態3については、256ビットの疑似乱数を生成するものであり、実施の形態2およびVSC128の128ビットに対してビット数が2倍であるため、平均値および分散も2倍となっている。そこで、表4では、実施の形態3について、より厳密に比較するために、条件範囲を2倍にし、平均値、分散値と条件範囲のスケール比を揃えて評価している。
表1〜表4から、VSC128(表4)と比較して、実施の形態2(表1),3(表2,3)の方が少ないラウンド数で分布が収束していることが分かる。したがって、本発明の実施の形態2,3の疑似乱数生成方法では、VSC128と比較して同等の攪拌性を持つ疑似乱数系列を少ないラウンド数で高速に生成できることが分かった。
(乱数性評価)
NIST SP800−22では、0と1からなる系列に対して16種類の検定を行う。なお、今回の実験では、NISTで公開されている評価ツールSTS(Statical Test Suite)のバージョン1.7を用いた。このNISTの検定については、一般的な検定であるため、詳細な説明は省略するが、バージョン1.7では、15種類の検定となっている。
表5は、実施の形態2について、攪拌が良かったパラメータに対しての検定結果である。表5の各マスは10回中15種類すべての検定をパスした初期値の個数を表している。表5から、10回中5〜7回パスするパラメータがあることが分かる。これらは、初期値に対して十分に攪拌が得られ、なおかつ良いランダム性を持つといえる。
本発明の疑似乱数列生成装置、暗号化復号化装置、疑似乱数列生成方法、暗号化復号化方法、疑似乱数列生成プログラムおよび暗号化復号化プログラムは、データを暗号化することによりデータの保護や安全な暗号を行うためのものとして有用である。
本発明の実施の形態における疑似乱数列生成装置の構成を示すブロック図である。 図1の疑似乱数列生成装置による疑似乱数列生成手順を示すフロー図である。 図1の疑似乱数列生成装置を用いた暗号化復号化装置の構成を示すブロック図である。 図3の暗号化装置による暗号化処理のフロー図である。 図3の復号化装置による復号化処理のフロー図である。 2次元面積保存写像変換により疑似乱数列生成を行う疑似乱数列生成装置のブロック図である。 2次元キャットマップ変換のパラメータα1 (k),α2 (k)生成およびx1 (k),x2 (k)からy1 (k),y2 (k)への2次元キャットマップ変換を表すブロック図である。 3次元体積保存写像により疑似乱数列生成を行う疑似乱数列生成装置のブロック図である。 3次元体積保存写像変換のパラメータα1 (k),α2 (k),α3 (k)生成およびx1 (k),x2 (k),x3 (k)からy1 (k),y2 (k),y3 (k)への3次元体積保存写像変換を表すブロック図である。 プライベートキーに差分を加えた場合のハミング距離の平均の分布を示す図である。 初期ベクトルに差分を加えた場合のハミング距離の平均の分布を示す図である。 プライベートキーに差分を加えた場合のラウンド数とハミング距離の分散の関係を示す図である。 初期ベクトルに差分を加えた場合のラウンド数とハミング距離の分散の関係を示す図である。 プライベートキーに差分を加えた場合の初期値の各ビットに差分を入れたときのハミング距離の平均の例を示す図である。 初期ベクトルに差分を加えた場合の初期値の各ビットに差分を入れたときのハミング距離の平均の例を示す図である。 プライベートキーに差分を加えた場合の初期値の各ビットの反転(ハミング距離となる)確率の例を示す図である。 初期ベクトルに差分を加えた場合の初期値の各ビットの反転(ハミング距離となる)確率の例を示す図である。 従来のVSC128による疑似乱数列生成装置の構成を示すブロック図である。 2次元キャットマップ写像の例を示す図である。 2次元キャットマップを繰り返し適用した写像の例を示す図である。 2次元キャットマップのNを整数上の1〜128とした場合の最大周期を示す図である。 2次元キャットマップ写像の例を示す図である。
符号の説明
1 疑似乱数列生成装置
2 暗号化復号化装置
2a 暗号化装置
2b 復号化装置
10 種受付部
11 初期化部
12 変換部
13 回転部
14 更新部
15 射影部
16 出力部
21a,21b 疑似乱数列生成部
22a,22b データ受付部
23a,23b XOR部

Claims (9)

  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記載の疑似乱数列生成装置。
    但し、ai,j (k)(X)は、2wビット整数を出力するXの関数である。
  3. 前記変換行列A(k)は、
    を満たすものである請求項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)を暗号化または復号化の結果として出力する暗号化復号化ステップと
    を実行させるための暗号化復号化プログラム。
JP2006086764A 2006-03-27 2006-03-27 疑似乱数列生成装置、暗号化復号化装置、疑似乱数列生成方法、暗号化復号化方法、疑似乱数列生成プログラムおよび暗号化復号化プログラム Pending JP2007264147A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2006086764A JP2007264147A (ja) 2006-03-27 2006-03-27 疑似乱数列生成装置、暗号化復号化装置、疑似乱数列生成方法、暗号化復号化方法、疑似乱数列生成プログラムおよび暗号化復号化プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006086764A JP2007264147A (ja) 2006-03-27 2006-03-27 疑似乱数列生成装置、暗号化復号化装置、疑似乱数列生成方法、暗号化復号化方法、疑似乱数列生成プログラムおよび暗号化復号化プログラム

Publications (1)

Publication Number Publication Date
JP2007264147A true JP2007264147A (ja) 2007-10-11

Family

ID=38637220

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006086764A Pending JP2007264147A (ja) 2006-03-27 2006-03-27 疑似乱数列生成装置、暗号化復号化装置、疑似乱数列生成方法、暗号化復号化方法、疑似乱数列生成プログラムおよび暗号化復号化プログラム

Country Status (1)

Country Link
JP (1) JP2007264147A (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013150880A1 (ja) * 2012-04-02 2013-10-10 学校法人東京理科大学 暗号化装置、復号化装置、暗号化方法、復号化方法、及びプログラム
JP2014017556A (ja) * 2012-07-05 2014-01-30 Tokyo Univ Of Science 共有秘密鍵生成装置、暗号化装置、復号化装置、及びプログラム
CN105760136A (zh) * 2016-02-03 2016-07-13 江苏熟店宝科技有限公司 基于伪随机数的多维度可控算法
CN109361830A (zh) * 2018-08-08 2019-02-19 西安电子科技大学 一种基于明文的图像加密方法

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002217898A (ja) * 2001-01-17 2002-08-02 Toyo Commun Equip Co Ltd 擬似乱数生成システム

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002217898A (ja) * 2001-01-17 2002-08-02 Toyo Commun Equip Co Ltd 擬似乱数生成システム

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013150880A1 (ja) * 2012-04-02 2013-10-10 学校法人東京理科大学 暗号化装置、復号化装置、暗号化方法、復号化方法、及びプログラム
JP2013213930A (ja) * 2012-04-02 2013-10-17 Tokyo Univ Of Science 暗号化装置、復号化装置、及びプログラム
US9467286B2 (en) 2012-04-02 2016-10-11 Crypto Basic Corporation Encryption device, decryption device, encryption method, decryption method, and program
JP2014017556A (ja) * 2012-07-05 2014-01-30 Tokyo Univ Of Science 共有秘密鍵生成装置、暗号化装置、復号化装置、及びプログラム
CN105760136A (zh) * 2016-02-03 2016-07-13 江苏熟店宝科技有限公司 基于伪随机数的多维度可控算法
CN105760136B (zh) * 2016-02-03 2019-04-09 江苏易润信息技术有限公司 基于伪随机数的多维度可控方法
CN109361830A (zh) * 2018-08-08 2019-02-19 西安电子科技大学 一种基于明文的图像加密方法

Similar Documents

Publication Publication Date Title
EP1583278B1 (en) Stream Cipher Design with Revolving Buffers
US20160335450A1 (en) Searchable encryption processing system and searchable encryption processing method
JP6178142B2 (ja) 生成装置、方法およびプログラム
Rathod et al. Design and implementation of image encryption algorithm by using block based symmetric transformation algorithm (hyper image encryption algorithm)
Ye et al. Spatial image encryption algorithm based on chaotic map and pixel frequency
JP6305638B2 (ja) 暗号システム及び鍵生成装置
Faraoun A genetic strategy to design cellular automata based block ciphers
JP2007264147A (ja) 疑似乱数列生成装置、暗号化復号化装置、疑似乱数列生成方法、暗号化復号化方法、疑似乱数列生成プログラムおよび暗号化復号化プログラム
Krishnamoorthi et al. A modernistic approach for chaotic based pseudo random number generator secured with gene dominance
Dalai et al. Some conditional cube testers for grain-128a of reduced rounds
JP2004361969A (ja) 暗号化方法
Maqableh et al. New hash function based on chaos theory (CHA-1)
US11070354B2 (en) System and method for generating a symmetrically balanced output
Alsaedi et al. Retrieving encrypted images using convolution neural network and fully homomorphic encryption
JP2004286788A (ja) 乱数列生成装置、暗号化復号化装置、乱数列生成方法、暗号化復号化方法、ならびに、プログラム
Loidreau Analysis of a public-key encryption scheme based on distorted Gabidulin codes
Bansal et al. A comparison of image encryption techniques based on chaotic maps
John et al. 6D Hyperchaotic Encryption Model for Ensuring Security to 3D Printed Models and Medical Images
Waheed et al. S-box design based on logistic skewed chaotic map and modified Rabin-Karp algorithm: applications to multimedia security
Al-Mhadawi et al. Hybrid method as pseudo-random bits generator
JP2006517036A (ja) マスクされたデータを操作する装置及び方法
Das et al. A metamorphic cryptography approach towards securing medical data using chaotic sequences and Ramanujan conjecture
US20100128870A1 (en) Pseudo-random number generation device, program, and method for stream encoding
Perez et al. A Modified Key Generation Scheme of Vigenère Cipher Algorithm using Pseudo-Random Number and Alphabet Extension
Albahrani et al. A chaos-based encryption algorithm for database system

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090327

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090526

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090629

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20091009

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110913

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20120124