JP5329879B2 - 計算装置、方法及びプログラム - Google Patents
計算装置、方法及びプログラム Download PDFInfo
- Publication number
- JP5329879B2 JP5329879B2 JP2008232668A JP2008232668A JP5329879B2 JP 5329879 B2 JP5329879 B2 JP 5329879B2 JP 2008232668 A JP2008232668 A JP 2008232668A JP 2008232668 A JP2008232668 A JP 2008232668A JP 5329879 B2 JP5329879 B2 JP 5329879B2
- Authority
- JP
- Japan
- Prior art keywords
- multiplication
- term
- condition
- square calculation
- square
- 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.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims description 53
- PWPJGUXAGUPAHP-UHFFFAOYSA-N lufenuron Chemical compound C1=C(Cl)C(OC(F)(F)C(C(F)(F)F)F)=CC(Cl)=C1NC(=O)NC(=O)C1=C(F)C=CC=C1F PWPJGUXAGUPAHP-UHFFFAOYSA-N 0.000 title 1
- 238000004364 calculation method Methods 0.000 claims abstract description 339
- 239000013598 vector Substances 0.000 claims abstract description 71
- 239000011159 matrix material Substances 0.000 description 17
- 238000010586 diagram Methods 0.000 description 14
- 238000012545 processing Methods 0.000 description 11
- 230000006835 compression Effects 0.000 description 8
- 238000007906 compression Methods 0.000 description 8
- 238000012986 modification Methods 0.000 description 7
- 230000004048 modification Effects 0.000 description 7
- 238000004891 communication Methods 0.000 description 5
- 239000000470 constituent Substances 0.000 description 3
- 230000006870 function Effects 0.000 description 2
- 240000008168 Ficus benjamina Species 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/60—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
- G06F7/72—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
- G06F7/724—Finite field arithmetic
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Physics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- Complex Calculations (AREA)
Description
<Karatsuba法>
まず従来の計算方法を説明する。n次拡大体がr次拡大体の2次拡大と表されている場合を考える。ここで、2次拡大の法多項式を‘f(x)=x^2+x+1’とし、基底は多項式基底{1, x}とする。‘A = (a1, a2)’は、‘A = a1 + a2*x’を表しているとする。‘A = (a1, a2)’と‘B=(b1, b2)’との積は‘A*B = (a1*b1-a2*b2, a1*b2+a2*b1-a2*b2)’となる。このとき、2次拡大に関する基礎体上の乗算としては、a1*b1,a2*b2,a1*b2,a2*b1の4種が必要に見える。しかし、a1*b2とa2*b1とは常に‘a1*b2 + a2*b1’の形で出現する。よって、基礎体上の乗算はa1*b1,a2*b2,(a1-a2)*(b1-b2)の3種で十分である。この性質は法多項式には依らない。例えば法多項式が‘f(x)=x^2+1’である場合でも同じことが成り立つ。2次拡大の際に基礎体として考えたr次拡大体についても、rが素因数分解可能であれば更に入れ子構造にして、それぞれ同様に考える。このようにして、Karatsuba法では対称性を用いて、基礎体上の必要な乗算を減らす。
次に、平方計算について従来の計算方法を説明する。上述の乗算で説明したA*Bにおいて、BがAに等しい場合を考えれば良い。例えば、2次拡大体において‘A^2=(a1^2-a2^2, 2a1*a2-a2^2)’と計算される。ここで、AがT2(Fq^r)の元であるとする。第1の性質を用いて、Aがこのトーラスに入る条件は以下の式1により表される。
次に、本実施の形態にかかる平方計算について計算方法を説明する。上述した平方計算の従来の計算方法では、AがT2(Fq^r)の元であるという第1の性質しか用いていなかった。本実施の形態においては、AがT2r(Fq)の元であるという第2の性質も用いて、基礎体の乗算回数を更に減らす。第2の性質は、‘r=3’のときAがT6(Fq)の元であることとなる。ここでは、’r=3’の場合について説明する。
次に、以上のような平方計算方法により平方計算を行う本実施の形態にかかる計算装置の構成について説明する。計算装置は、装置全体を制御するCPU(Central Processing Unit)等の制御装置と、各種データや各種プログラムを記憶するROM(Read Only Memory)やRAM(Random Access Memory)等の記憶装置と、各種データや各種プログラムを記憶するHDD(Hard Disk Drive)やCD(Compact Disk)ドライブ装置等の外部記憶装置と、外部装置の通信を制御する通信I/F(interface)と、これらを接続するバスとを備えており、通常のコンピュータを利用したハードウェア構成となっている。
<平方計算ルール作成処理>
次に、本実施の形態にかかる計算装置100が行う処理の手順について説明する。まず、乗算部102及び加減算部103が従う平方計算ルールを作成する処理の手順について説明する。尚、平方計算ルールは、計算装置100が後述する平方計算を行う度に作成されるようにしても良いし、平方計算の前に予め作成されて用意されているようにしても良い。図20は、計算装置100が平方計算ルールを作成する処理の概要を示す図である。まず、計算装置100に、r次の法多項式またはr次拡大体を生成する際に添加する元を入力する。また、計算装置100に、r次拡大体の基底を入力する。‘r=3’の例では、3次拡大体を生成する際に添加する元として上述した式2に例示した法多項式が入力される。基底として{1, y, y^2-2}が入力される。これらの入力が与えられると、計算装置100は、対応するr次拡大体の乗算ルールを生成する。具体的には、計算装置100は、以下のようにして乗算ルールを生成する。3次拡大体の異なる2つの元を表すベクトル‘A=(a1, a2, a3)’及び‘B=(b1, b2, b3)’を多項式表現で表し、すなわち‘A=a1+a2*y+a3*(y^2-2)’と‘B=b1+b2*y+b3*(y^2-2)’とする。計算装置100は、これらの元を多項式として掛け合わせ、法多項式で剰余を計算して得た多項式をベクトル表現で表した乗算ルールr1‘A*B=(a1*b1 + 2a2*b2 + 2 a3*b3 - a2*b3 - a3*b3, a1*b2 + a2*b1 + a2*b3 + a3*b2 - a3*b3, a1*b3 + a3*b1 + a2*b2 - a3*b3)’を生成する。そして、計算装置100はこの乗算ルールR1を記憶する。例えば、計算装置100はr×r×rのマトリクスの要素として乗算ルールR1を記憶する。具体的には、計算装置100は、ベクトル表現の第k項の内容としてai*bjの係数をマトリクスMult1[k][i][j]に格納する。これを可視化したのが図3である。
‘Square3[k][i][j] = Square1[1][1][1]*Mult1[k][i][j]’
‘k=1,2,3,i=4, 5, 6,j=1,2,3’について、
‘Square3[k][i][j] = Square1[1][2][1]*Mult1[k][i-3][j]’
‘ k=1,2,3,i=1,2,3,j=4,5,6’について、
‘Square3[k][i][j] = Square1[1][1][2]*Mult1[k][i][j-3]’
‘k=1,2,3, i=4,5,6,j=4,5,6’について、
‘Square3[k][i][j] = Square1[1][2][2]*Mult1[k][i-3][j-3]’
‘ k=4,5,6,i=1,2,3,j=1,2,3’について、
‘Square3[k][i][j] = Square1[2][1][1]*Mult1[k-3][i][j]’
‘k=4,5,6,i=4, 5, 6,j=1,2,3’について、
‘Square3[k][i][j] = Square1[2][2][1]*Mult1[k-3][i-3][j]’
‘k=4,5,6, i=1,2,3, j=4,5,6’について、
‘Square3[k][i][j] = Square1[2][1][2]*Mult1[k-3][i][j-3]’
‘k=4,5,6, i=4,5,6, j=4,5,6’について、
‘Square3[k][i][j] = Square1[2][2][2]*Mult1[k-3][i-3][j-3]’
‘Square3[k][i][j] = Square1[ceil(k/3)][ceil(i/3)][ceil(j/3)]*Mult1[k%3][i%3][j%3]’となる。ここでceil(k)は天井関数(kよりも大きな整数のうち最小の数を返す)を表す。k%rはkをrで割った余りを表す。これを可視化したのが図5である。この平方計算ルールR3はKaratsuba法に対応している。ここで、式3に示した第1の条件式の右辺を移項した式9を第1の条件式として適用する。
次に、本実施の形態にかかる計算装置100の行う平方計算処理の手順について図21を用いて説明する。まず、2次の法多項式または2次拡大を生成する際に添加する元と、2次拡大の基底と、r次の法多項式またはr次拡大を生成する際に添加する元と、r次拡大の基底とを固定する。これに対応する平方計算ルールを計算装置100は読み込み、当該平方計算ルールに従い乗算と加減算を行う。‘r=3’の例では、3次拡大体を生成する際に添加する元として上述の式2に示されるものを用い、基底として{1, y, y^2-2}を用いる。2次の法多項式として‘f(x)=x^2+x+1’を用い、基底として{1, x}を固定する。ここでは上述した平方計算ルールR8を用いるものとする。平方計算ルールR8では、例えば、2次の成分を2*r×2*r×2*rのマトリクスSquare8[k][i][j](図15参照)として保持し、1次の成分を式15に示されるベクトル(Vとする)として保持している。入力として2r個の要素を含むベクトルが計算装置100に入力される。ステップS1では、例えば‘A=(a1,a2,a3,a4,a5,a6)’が計算装置100に入力される。
t11:=A[1]^2;
t12:=A[1]*A[2];
t13:=A[1]*A[3];
t44:=A[4]^2;
t45:=A[4]*A[5];
t46:=A[4]*A[6];
t55:=A[5]^2;
t56:=A[5]*A[6];
t66:=A[6]^2;
b1:=3*t11 -3*t44 -2*A[1] +2*A[4]:
b2:=3*t12 -3*t45 -2*A[2] +A[5]:
b3:=3*t13 -3*t46 +A[3] -A[6]:
b4:=6*t11 -3*t44 +6*t55 -6*t56 +6*t66 -4*A[1] +4*A[4] -2:
b5:=6*t12 +6*t56 -3*t66 +2*A[2] -2*A[5]:
b6:=6*t13 +3*t55 -3*t66 +2*A[3] -2*A[6]:
t44:=A[4]^2;
t45:=A[4]*A[5];
t46:=A[4]*A[6];
t14:=A[1]*A[4];
t15:=(A[1]-A[2])*(A[5]-A[4]);
t16:=(A[1]-A[3])*(A[6]-A[4]);
t25:=A[2]*A[5];
t26:=(A[2]-A[3])*(A[6]-A[5]);
t36:=A[3]*A[6];
b1:=9*t14 -6*t25 -6*t36 +3*(t26 +t25 +t36) -6*t44 +4*A[4] +1:
b2:=3*(t15 +t14 +t25) -3*(t26 +t25 +t36) +3*t36 -6*t45 -2*A[5]:
b3:=-3*t25 +3*(t16 +t14 +t36) +3*t36 -6*t46 -2*A[6]:
b4:=6*t14 -3*t44 +2*A[4]:
b5:=3*(t15 +t14 +t25) -3*t45 -A[5]:
b6:=3*(t16 +t14 +t36) -3*t46 -A[6]:
t11:=A[1]^2;
t12:=A[1]*A[2];
t13:=A[1]*A[3];
t14:=A[1]*A[4];
t15:=(A[1]-A[2])*(A[5]-A[4]);
t16:=(A[1]-A[3])*(A[6]-A[4]);
t25:=A[2]*A[5];
t26:=(A[2]-A[3])*(A[6]-A[5]);
t36:=A[3]*A[6];
b1:=6*t11 -9*t14 +6*t25 +6*t36 -3*(t26 +t25 +t36) -4*A[1] -1:
b2:=6*t12 -3*(t15 +t14 +t25) +3*(t26 +t25 +t36) -3*t36 +2*A[2]:
b3:=6*t13 +3*t25 -3*(t16 +t14 +t36) -3*t36 +2*A[3]:
b4:=3*t11 -3*t14 +6*t25 -3*(t26 +t25 +t36) +6*t36 -2*A[1] -1:
b5:=3*t12 +3*(t26 +t25 +t36) -3*t36 +A[2]:
b6:=3*t13 +3*t25 -3*t36 +A[3]:
次に、計算装置、方法及びプログラムの第2の実施の形態について説明する。なお、上述の第1の実施の形態と共通する部分については、同一の符号を使用して説明したり、説明を省略したりする。
まず、本実施の形態にかかる計算装置100が平方計算ルールを作成する処理の手順について説明する。3次の法多項式及び基底が入力されると、対応するr次拡大体の乗算ルールを計算装置100は生成する。具体的には計算装置100は、3次拡大体の異なる2つの元を表すベクトルを‘ベクトルA=(a1, a2, a3)’と‘ベクトルB=(b1, b2, b3)’とすると、‘A*B=(a1*b1 + w*(a2*b3 + a3*b2), a1*b2 + a2*b1 + w*a3*b3,a1*b3 + a3*b1 + a2*b2)’を生成する。この乗算ルールR10を計算装置100は記憶する。例えば、計算装置100はr×r×rのマトリクスの要素に記憶する。これを可視化したのが図23である。
次に、本実施の形態にかかる計算装置100の行う平方計算処理の手順について図35を用いて説明する。ここでは、‘r=3’の例では、次の法多項式として‘f3(y)=y^3-w’を用い、基底として{1, y, y^2}を用いる。2次の法多項式として‘f2(x)=x^2-δ’を用い、基底として{1, x}を固定する。これに対応する平方計算ルールとして上述した平方計算ルールR15を用いるものとする。ここでは平方計算ルールR15では、例えば、2次の成分を2*r×2*r×2*rのマトリクスSquare15[k][i][j](図31参照)として保持し、1次の成分を式19に示されるベクトル(Vとする)として保持している。このような平方計算ルールR13を計算装置100は読み込む。そして、ステップS1では、例えば‘A=(a1,a2,a3,a4,a5,a6)’が計算装置100に入力される。
t44:=A[4]^2;
t45:=A[4]*A[5];
t46:=A[4]*A[6];
t55:=A[5]^2;
t56:=A[5]*A[6];
t66:=A[6]^2;
t14:=A[1]*A[4];
t25:=A[2]*A[5];
t36:=A[3]*A[6];
b1:=2*delta*t44 +4*delta*w*t56 +1;
b2:=4*delta*t45 +2*delta*w*t66;
b3:=2*delta*t55 +4*delta*t46;
b4:=6*t14 -2*A[4]*d;
b5:=6*w*t36 -2*A[5]*d;
b6:=6*t25 -2*A[6]*d;
t11:=A[1]^2;
t12:=A[1]*A[2];
t13:=A[1]*A[3];
t22:=A[2]^2;
t23:=A[2]*A[3];
t33:=A[3]^2;
t14:=A[1]*A[4];
t25:=A[2]*A[5];
t36:=A[3]*A[6];
b1:=2*t11 +4*w*t23 -1;
b2:=4*t12 +2*w*t33;
b3:=2*t22 +4*t13;
b4:=6*t14 -2*A[4]*d;
b5:=6*w*t36 -2*A[5]*d;
b6:=6*t25 -2*A[6]*d;
なお、本発明は前記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、前記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除しても良い。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。また、以下に例示するような種々の変形が可能である。
上述した各実施の形態において、計算装置100で実行される各種プログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成しても良い。また、当該各種プログラムを、インストール可能な形式又は実行可能な形式のファイルでCD−ROM、フレキシブルディスク(FD)、CD−R、DVD(Digital Versatile Disk)等のコンピュータで読み取り可能な記録媒体に記録して提供するように構成しても良い。この場合には、プログラムは、計算装置100において上記記録媒体から読み出して実行することにより主記憶装置(例えばRAM)上にロードされ、上記機能的構成において説明した各部が主記憶装置上に生成される。
上述した各実施の形態において、計算装置100は平方計算ルール作成部を備え、計算装置100が平方計算ルールを生成するとした。しかし、計算装置100は平方計算ルール作成部を備えず、平方計算ルールを他の情報処理装置が生成しこれを計算装置100が取得して平方計算の際に用いるようにしても良い。
上述した第1の実施の形態において、ステップS2の処理とステップS3の処理とを並行して行うようにしても良く、ステップS3で用いる各値であってステップS2の乗算の結果である乗算値が求められる順に随時ステップS2の加減算を行うようにすれば良い。第2の実施の形態におけるステップS12の処理とステップS13の処理とについても同様である。
上述した各実施の形態において、計算装置100が有限体として6次拡大体上で平方計算を行う場合について説明したが、有限体はこれに限らず上述の各実施の形態の構成を適用可能である。また、計算装置100が行う計算は平方計算とし、即ち、2乗のべき乗計算を行う場合について説明した。しかし、計算装置100は、2r次拡大体上で(q^l + q^l’) 乗(q:拡大体の標数)のべき乗計算を行う場合にも上述の各実施の形態の構成を適用可能である。
上述した各実施の形態のKaratsuba法における平方について、例えば、2次拡大体において‘A^2=(a1^2-a2^2, 2a1*a2-a2^2)’と計算される。このとき、乗算は
t11:=a1^2;
t12:=a1*a2;
t22:=a2^2;
としても良いが、平方のみを用いて次のように計算しても良い。
t11:=a1^2;
t12’:=(a1+a2)^2;
t22:=a2^2;
このような計算は、平方計算ルールR16,R15,R8における、2つの3次拡大体の要素の一方に関する平方Karatsubaに応用できる。
t11:=A[1]^2;
t12’:=(A[1]+A[2])^2;
t13’:=(A[1]+A[3])^2;
t22:=A[2]^2;
t23’:=(A[2]+A[3])^2;
t33:=A[3]^2;
t14:=A[1]*A[4];
t25:=A[2]*A[5];
t36:=A[3]*A[6];
計算装置100は例えば以下の加減算を行う。
b1:=2*t11 +2*w*(t23’-t22-t33) -1;
b2:=2*(t12’-t11-t22) +2*w*t33;
b3:=2*t22 +2*(t13’-t11-t33);
b4:=6*t14 -2*A[4]*d;
b5:=6*w*t36 -2*A[5]*d;
b6:=6*t25 -2*A[6]*d;
t44:=A[4]^2;
t45’:=(A[4]+A[5])^2;
t46’:=(A[4]+A[6])^2;
t55:=A[5]^2;
t56’:=(A[5]+A[6])^2;
t66:=A[6]^2;
t14:=A[1]*A[4];
t25:=A[2]*A[5];
t36:=A[3]*A[6];
計算装置100は以下の加減算を行い、ベクトル(b1,b2,b3,b4,b5,b6)を求める。
b1:=2*delta*t44 +2*delta*w*(t56’-t55-t66) +1;
b2:=2*delta*(t45’-t44-t55) +2*delta*w*t66;
b3:=2*delta*t55 +2*delta*(t46’-t44-t66);
b4:=6*t14 -2*A[4]*d;
b5:=6*w*t36 -2*A[5]*d;
b6:=6*t25 -2*A[6]*d;
t11:=A[1]^2;
t12:=A[1]*A[2];
t13:=A[1]*A[3];
t44:=A[4]^2;
t45’:=(A[4]+A[5])^2;
t46’:=(A[4]+A[6])^2;
t55:=A[5]^2;
t56’:=(A[5]+A[6])^2;
t66:=A[6]^2;
計算装置100は以下の加減算を行い、ベクトル(b1,b2,b3,b4,b5,b6)を求める。
b1:=3*t11 -3*t44 -2*A[1] +2*A[4]:
b2:=3*t12 -3*(t45’-t44-t55)/2 -2*A[2] +A[5]:
b3:=3*t13 -3*(t46’-t44-t66)/2 +A[3] -A[6]:
b4:=6*t11 -3*t44 +9*t55 -3*t56’ +9*t66 -4*A[1] +4*A[4] -2:
b5:=6*t12 +3*t56’-3*t55 -6*t66 +2*A[2] -2*A[5]:
b6:=6*t13 +3*t55 -3*t66 +2*A[3] -2*A[6]:
t11:=A[1]^2;
t12:=A[1]*A[2];
t13:=A[1]*A[3];
t44:=A[4]^2;
t45:=A[4]*A[5];
t46:=A[4]*A[6];
t55:=A[5]^2;
t56’:=(A[5]+A[6])^2;
t66:=A[6]^2;
計算装置100は以下の加減算を行い、ベクトル(b1,b2,b3,b4,b5,b6)を求める。
b1:=3*t11 -3*t44 -2*A[1] +2*A[4]:
b2:=3*t12 -3*t45 -2*A[2] +A[5]:
b3:=3*t13 -3*t46 +A[3] -A[6]:
b4:=6*t11 -3*t44 +9*t55 -3*t56’ +9*t66 -4*A[1] +4*A[4] -2:
b5:=6*t12 +3*t56’-3*t55 -6*t66 +2*A[2] -2*A[5]:
b6:=6*t13 +3*t55 -3*t66 +2*A[3] -2*A[6]:
101 入力部
102 乗算部
103 加減算部
104 出力部
Claims (23)
- 有限体上の元の平方を計算する計算装置であって、
2r次拡大体Fq^{2r}(^:べき乗、r:素数)である有限体上の元が、複数の要素を含むベクトル表現で入力される入力部と、
入力された前記要素を用いて基礎体Fq上で、2r次拡大体の元が代数的トーラスT2r(Fq)の元であるという性質を用いた第1の条件により定まる乗算及び2r次拡大体の元が代数的トーラスT2(Fq^r)の元であるという性質を用いた第2の条件により定まる乗算を行い、乗算値を得る乗算部と、
得られた前記乗算値と入力された前記要素とを用いて、前記第1の条件により定まる加減算及び前記第2の条件により定まる加減算を行い、前記元の平方の計算結果を得る加減算部と、
得られた前記計算結果を出力する出力部とを備え、
2r次拡大体Fq^{2r}のr次拡大の法多項式及び基底と2次拡大の法多項式及び基底とを用いて、
前記乗算部は、入力された前記要素を用いて基礎体Fq上で、前記法多項式及び基底、前記第1の条件により定まる乗算及び前記第2の条件により定まる乗算を行い、
前記加減算部は、得られた前記乗算値と入力された前記要素とを用いて、前記法多項式及び基底、前記第1の条件により定まる加減算及び前記第2の条件により定まる加減算を行い、平方の計算結果を得る
ことを特徴とする計算装置。 - 前記乗算部は、入力された前記要素を用いて基礎体Fq上で、2r次拡大体の元はΦ2r(q)乗(Φn(x)は円周n等分多項式)すると‘1’となるという前記第1の条件により定まる乗算及び2r次拡大体の元はΦ2(q^r)乗(q:2r次拡大体の標数)すると‘1’となるという前記第2の条件により定まる乗算を行い、乗算値を得る
ことを特徴とする請求項1に記載の計算装置。 - 前記入力部には、2r次拡大体の元が2r個の要素を含むベクトル表現で入力され、
前記乗算部は、入力された前記要素を用いて基礎体Fq上で、前記第1の条件及び前記第2の条件をKaratsuba法に適用して定められる平方計算ルールに従って乗算を行い、
前記加減算部は、得られた前記乗算値と入力された前記要素とを用いて、前記平方計算ルールに従って加減算を行い、平方の計算結果を得る
ことを特徴とする請求項1又は2に記載の計算装置。 - 前記乗算部は、入力された前記要素に関して2次の成分及び1次の成分のうち少なくとも一方により表される平方計算ルールに従って、前記2次の成分が‘0’であるか否かに基づいて、前記要素のうち該当する少なくとも1組の2つの要素の積又は1つの要素の平方を計算し、
前記加減算部は、前記2次の成分の係数と得られた前記乗算値と前記1次の成分とを用いて、2r次のベクトルに含まれる各要素を計算することにより、平方の計算結果を得る
ことを特徴とする請求項1乃至3のいずれか一項に記載の計算装置。 - 前記2r次拡大体は、2項式の法多項式で拡大された体であり、基底は偽多項式基底または多項式基底であり、
前記乗算部は、入力された前記要素を用いて基礎体上で、前記法多項式及び基底によって定められ且つ前記第1の条件及び前記第2の条件をKaratsuba法に適用して定められる平方計算ルールに従って乗算を行い、乗算値を得る
ことを特徴とする請求項1乃至4のいずれか一項に記載の計算装置。 - 2r次拡大体のr次拡大の法多項式を‘fr (y)=y^r-w’とし、その基底を{1, y, …,y^{r-1}}とし、2次拡大の法多項式を‘f2(x)=x^2-δ’とし、その基底を{1, x}とし、
前記乗算部は、入力された前記要素を用いて基礎体Fq上で、前記法多項式及び基底によって定められ且つ前記第1の条件及び前記第2の条件をKaratsuba法に適用して定められる平方計算ルールに従って乗算を行い、乗算値を得る
ことを特徴とする請求項5に記載の計算装置。 - 前記入力部には、2r次拡大体の要素を表すベクトルであって、r次拡大体の要素を表す第1ベクトルであってr個の要素を含む2つの第1ベクトルに含まれる2r個の要素を含むベクトルが入力され、
前記乗算部は、前記平方計算ルールに従って、2つのr次拡大体の要素の一方について、Karatsuba法で用いる乗算と、2つのr次拡大体の要素の同じ項の係数同士をそれぞれ掛ける乗算とを行い、
前記加減算部は、得られた前記乗算値に整数またはwまたはδから計算される係数を掛けた前記ベクトルの2次の成分と、必要に応じて、1または前記ベクトルの成分に整数またはwまたはδから計算される係数を掛けた定数または前記ベクトルの1次の成分とを加減算して、平方の計算結果を得る
ことを特徴とする請求項5又は6に記載の計算装置。 - 「r=3」であり、
前記第1の条件をKaratsuba法に適用した第1平方計算ルールは、6つの項を含み、
前記第2の条件を表す第2の条件式は、6つの項を含み、
前記平方計算ルールは、前記第1平方計算ルールの第4項に前記第2の条件式の第4項の2倍を足し、前記第1平方計算ルールの第5項に前記第2の条件式の第5項の2倍を足し、前記第1平方計算ルールの第6項に前記第2の条件式の第6項の2倍を引いたものであり、
前記乗算部は、前記平方計算ルールに従って、対象の項における乗算を行い、前記乗算値を得る
ことを特徴とする請求項5乃至7のいずれか一項に記載の計算装置。 - A[i](i=1,2,3,4,5,6)は、前記ベクトルに含まれる各要素であり、
前記乗算部は、前記平方計算ルールに従って、A[1]^2,A[1]*A[2],A[1]*A[3],A[2]^2,A[2]*A[3],A[3]^2,A[1]*A[4],A[2]*A[5]及びA[3]*A[6]を導出するための乗算又は平方計算を行い、前記乗算値を得る
ことを特徴とする請求項8に記載の計算装置。 - 「r=3」であり、
前記第1の条件をKaratsuba法に適用した第1平方計算ルールは、6つの項を含み、
前記第2の条件を表す第2の条件式は、6つの項を含み、
前記平方計算ルールは、前記第1平方計算ルールの第4項に前記第2の条件式の第4項の2倍を足し、前記第1平方計算ルールの第5項に前記第2の条件式の第5項の2倍を足し、前記第1平方計算ルールの第6項に前記第2の条件式の第6項の2倍を引いたものであり、
前記乗算部は、前記平方計算ルールに従って、対象の項における乗算を行い、前記乗算値を得る
ことを特徴とする請求項5乃至7のいずれか一項に記載の計算装置。 - A[i](i=1,2,3,4,5,6)は、前記ベクトルに含まれる各要素であり、
前記乗算部は、前記平方計算ルールに従って、A[4]^2,A[4]*A[5],A[4]*A[6],A[5]^2,A[5]*A[6],A[6]^2,A[1]*A[4],A[2]*A[5]及びA[3]*A[6]を導出するための乗算又は平方計算を行い、前記乗算値を得る
ことを特徴とする請求項10に記載の計算装置。 - 前記2r次拡大体は、6次拡大体であり、
前記6次拡大体は、円分体または円分体の部分体であり、基底は偽多項式基底または多項式基底であり、
前記乗算部は、入力された前記要素を用いて基礎体上で、前記法多項式及び基底によって定められ且つ前記第1の条件及び前記第2の条件をKaratsuba法に適用して定められる平方計算ルールに従って乗算を行い、乗算値を得る
ことを特徴とする請求項1乃至4のいずれか一項に記載の計算装置。 - 「r=3」であり、
前記6次拡大体の3次拡大の法多項式を‘y=ζ+ζ^(-1)’(ζは1の原始9乗根)とし、その基底を{1, y, y^2-2}とし、2次拡大の法多項式を‘f(x)=x^2+x+1’とし、その基底を{1, x}とし、
前記乗算部は、入力された前記要素を用いて基礎体上で、前記法多項式及び基底によって定められ且つ前記第1の条件及び前記第2の条件をKaratsuba法に適用して定められる平方計算ルールに従って乗算を行い、乗算値を得る
ことを特徴とする請求項12に記載の計算装置。 - 前記入力部には、前記6次拡大体の要素を表すベクトルであって、3次拡大体の要素を表す第1ベクトルであって3つの要素を含む2つの第1ベクトルに含まれる6つの要素を含むベクトルが入力され、
前記乗算部は、前記平方計算ルールに従って、2つの3次拡大体の要素の一方について、Karatsuba法で用いる乗算及び2つの3次拡大体の要素同士のKaratsuba法で用いる乗算のうち少なくとも一方を行い、2つの3次拡大体の要素の一方について、前記第1ベクトルの第1要素と第1要素,第2要素及び第3要素のそれぞれの積を計算し、
前記加減算部は、得られた前記乗算値に整数である係数を掛けた前記ベクトルの2次の成分と、必要に応じて、1または前記ベクトルの成分に整数である係数を掛けた定数または前記ベクトルの1次の成分を加減算して、平方の計算結果を得る
ことを特徴とする請求項12又は13に記載の計算装置。 - 前記第1の条件をKaratsuba法に適用した第1平方計算ルールは、6つの項を含み、
前記第2の条件を表す第2の条件式は、6つの項を含み、
前記平方計算ルールは、前記第1平方計算ルールの第1項に前記第2の条件式の第4項の4倍を足し、前記第1平方計算ルールの第2項に前記第2の条件式の第3項から第4項を引いた値の2倍を足し、前記第1平方計算ルールの第3項に前記第2の条件式の第5項の2倍を足し、前記第1平方計算ルールの第4項に前記第2の条件式の第6項の2倍を足し、前記第1平方計算ルールの第5項に前記第2の条件式の第5項から第6項を引いた値を足し、前記第1平方計算ルールの第6項に前記第2の条件式の第6項を足したものであり、
前記乗算部は、前記平方計算ルールに従って、対象の項における乗算を行い、前記乗算値を得る
ことを特徴とする請求項12乃至14のいずれか一項に記載の計算装置。 - A[i](i=1,2,3,4,5,6)は、前記ベクトルに含まれる各要素であり、
前記乗算部は、前記平方計算ルールに従って、A[1]^2,A[1]*A[2],A[1]*A[3],A[4]^2,A[4]*A[5],A[4]*A[6],A[5]^2,A[5]*A[6]及びA[6]^2を導出するための乗算または平方計算を行い、前記乗算値を得る
ことを特徴とする請求項15に記載の計算装置。 - 前記第1の条件をKaratsuba法に適用した第1平方計算ルールは、6つの項を含み、
前記第2の条件を表す第2の条件式は、6つの項を含み、
前記平方計算ルールは、前記第1平方計算ルールの第1項に前記第2の条件式の第1項の2倍を足し、前記第1平方計算ルールの第2項に前記第2の条件式の第2項から第3項を引いた値を足し、前記第1平方計算ルールの第3項に前記第2の条件式の第2項を足し、前記第1平方計算ルールの第4項に前記第2の条件式の第1項の4倍を足し、前記第1平方計算ルールの第5項に前記第2の条件式の第2項から第3項を引いた値を足し、前記第1平方計算ルールの第6項に前記第2の条件式の第2項の2倍を足したものであり、
前記乗算部は、前記平方計算ルールに従って、対象の項における乗算を行い、前記乗算値を得る
ことを特徴とする請求項12乃至14のいずれか一項に記載の計算装置。 - A[i](i=1,2,3,4,5,6)は、前記ベクトルに含まれる各要素であり、
前記乗算部は、前記平方計算ルールに従って、A[4]^2,A[4]*A[5],A[4]*A[6],A[1]*A[4],(A[1]-A[2])*(A[5]-A[4]),(A[1]-A[3])*(A[6]-A[4]),A[2]*A[5],(A[2]-A[3])*(A[6]-A[5])及びA[3]*A[6]を導出するための乗算または平方計算を行い、前記乗算値を得る
ことを特徴とする請求項17に記載の計算装置。 - 前記第1の条件をKaratsuba法に適用した第1平方計算ルールは、6つの項を含み、
前記第2の条件を表す第2の条件式は、6つの項を含み、
前記平方計算ルールは、前記第1平方計算ルールの第1項に前記第2の条件式の第1項から第4項を引いた値の4倍を足し、前記第1平方計算ルールの第2項に前記第2の条件式の第2項から第4項及び第3項を引いた値に第6項を足した値の2倍を足し、前記第1平方計算ルールの第3項に前記第2の条件式の第2項から第5項を引いた値の2倍を足し、前記第1平方計算ルールの第4項に前記第2の条件式の第1項から第4項を引いた値の2倍を足し、前記第1平方計算ルールの第5項に前記第2の条件式の第2項から第5項及び第3項を引いた値に第6項を足した値を足し、前記第1平方計算ルールの第6項に前記第2の条件式の第2項から第5項を引いた値を足したものであり、
前記乗算部は、前記平方計算ルールに従って、対象の項における乗算を行い、前記乗算値を得る
ことを特徴とする請求項12乃至14のいずれか一項に記載の計算装置。 - A[i](i=1,2,3,4,5,6)は、前記ベクトルに含まれる各要素であり、
前記乗算部は、前記平方計算ルールに従って、A[1]^2,A[1]*A[2],A[1]*A[3],A[1]*A[4],(A[1]-A[2])*(A[5]-A[4]),(A[1]-A[3])*(A[6]-A[4]),A[2]*A[5],(A[2]-A[3])*(A[6]-A[5])及びA[3]*A[6]を導出するための乗算または平方計算を行い、前記乗算値を得る
ことを特徴とする請求項19に記載の計算装置。 - 2r次拡大体Fq^{2r}(^:べき乗、r:素数)上の元の(q^l + q^l’)乗(q:基礎体Fqの位数)を計算する計算装置であって、
2r拡大体上の元が、2r個の要素を含むベクトル表現で入力される入力部と、
入力された前記要素を用いて基礎体Fq上で、2r次拡大体上の元が代数的トーラスT2r(Fq)の元であるという性質を用いた第1の条件により定まる乗算及び2r次拡大体の元が代数的トーラスT2(Fq^r)の元であるという性質を用いた第2の条件により定まる乗算を行い、乗算値を得る乗算部と、
得られた乗算値と入力された前記要素とを用いて前記第1の条件により定まる加減算及び前記第2の条件により定まる加減算を行い、前記元の(q^l + q^l’)乗の計算結果を得る加減算部と、
得られた前記計算結果を出力する出力部とを備え、
2r次拡大体Fq^{2r}のr次拡大の法多項式及び基底と2次拡大の法多項式及び基底とを用いて、
前記乗算部は、入力された前記要素を用いて基礎体Fq上で、前記法多項式及び基底、前記第1の条件により定まる乗算及び前記第2の条件により定まる乗算を行い、
前記加減算部は、得られた前記乗算値と入力された前記要素とを用いて、前記法多項式及び基底、前記第1の条件により定まる加減算及び前記第2の条件により定まる加減算を行い、(q^l + q^l’)乗の計算結果を得る
ことを特徴とする計算装置。 - 入力部と、乗算部と、加減算部と、出力部とを備え、有限体上の元の平方を計算する計算装置で実行される平方計算方法であって、
前記入力部が、2r次拡大体Fq^{2r}(^:べき乗、r:素数)である有限体上の元が、複数の要素を含むベクトル表現で入力される入力ステップと、
前記乗算部が、入力された前記要素を用いて基礎体Fq上で、2r次拡大体の元が代数的トーラスT2r(Fq)の元であるという性質を用いた第1の条件により定まる乗算及び2r次拡大体の元が代数的トーラスT2(Fq^r)の元であるという性質を用いた第2の条件により定まる乗算を行い、乗算値を得る乗算ステップと、
前記加減算部が、得られた前記乗算値と入力された前記要素とを用いて、前記第1の条件により定まる加減算及び前記第2の条件により定まる加減算を行い、前記元の平方の計算結果を得る加減算ステップと、
前記出力部が、得られた前記計算結果を出力する出力ステップとを含み、
2r次拡大体Fq^{2r}のr次拡大の法多項式及び基底と2次拡大の法多項式及び基底とを用いて、
前記乗算ステップは、入力された前記要素を用いて基礎体Fq上で、前記法多項式及び基底、前記第1の条件により定まる乗算及び前記第2の条件により定まる乗算を行い、
前記加減算ステップは、得られた前記乗算値と入力された前記要素とを用いて、前記法多項式及び基底、前記第1の条件により定まる加減算及び前記第2の条件により定まる加減算を行い、平方の計算結果を得る
ことを特徴とする計算方法。 - 請求項22に記載の計算方法をコンピュータに実行させることを特徴とするプログラム。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008232668A JP5329879B2 (ja) | 2008-09-10 | 2008-09-10 | 計算装置、方法及びプログラム |
US12/393,558 US8438205B2 (en) | 2008-09-10 | 2009-02-26 | Exponentiation calculation apparatus and method for calculating square root in finite extension field |
US13/854,554 US8543630B2 (en) | 2008-09-10 | 2013-04-01 | Exponentiation calculation apparatus and method for calculating square root in finite extension field |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008232668A JP5329879B2 (ja) | 2008-09-10 | 2008-09-10 | 計算装置、方法及びプログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2010066510A JP2010066510A (ja) | 2010-03-25 |
JP5329879B2 true JP5329879B2 (ja) | 2013-10-30 |
Family
ID=41800095
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2008232668A Expired - Fee Related JP5329879B2 (ja) | 2008-09-10 | 2008-09-10 | 計算装置、方法及びプログラム |
Country Status (2)
Country | Link |
---|---|
US (2) | US8438205B2 (ja) |
JP (1) | JP5329879B2 (ja) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5329879B2 (ja) * | 2008-09-10 | 2013-10-30 | 株式会社東芝 | 計算装置、方法及びプログラム |
JP5289571B2 (ja) * | 2009-07-23 | 2013-09-11 | 株式会社東芝 | 演算装置 |
JP5178810B2 (ja) * | 2010-12-09 | 2013-04-10 | 株式会社東芝 | 伸長装置および圧縮装置 |
JP2014219597A (ja) * | 2013-05-09 | 2014-11-20 | 株式会社東芝 | 演算装置、演算方法およびプログラム |
JP6349841B2 (ja) * | 2014-03-25 | 2018-07-04 | 富士通株式会社 | 暗号文処理装置、暗号文処理方法、暗号文処理プログラムおよび情報処理装置 |
JP6610277B2 (ja) | 2016-01-15 | 2019-11-27 | 富士通株式会社 | 共有鍵生成プログラム、共有鍵生成方法および情報処理端末 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3816722A (en) * | 1970-09-29 | 1974-06-11 | Nippon Electric Co | Computer for calculating the similarity between patterns and pattern recognition system comprising the similarity computer |
JP3671611B2 (ja) * | 1997-08-05 | 2005-07-13 | 富士ゼロックス株式会社 | アクセス資格認証装置および方法 |
JP3766250B2 (ja) * | 2000-01-21 | 2006-04-12 | 日本電信電話株式会社 | 積演算装置及びそのプログラム記録媒体 |
JP2007187978A (ja) | 2006-01-16 | 2007-07-26 | Toshiba Corp | データ圧縮装置、および、これに利用されるパラメータ設定装置 |
JP4649456B2 (ja) * | 2007-09-26 | 2011-03-09 | 株式会社東芝 | べき乗計算装置、べき乗計算方法及びプログラム |
JP5329879B2 (ja) * | 2008-09-10 | 2013-10-30 | 株式会社東芝 | 計算装置、方法及びプログラム |
-
2008
- 2008-09-10 JP JP2008232668A patent/JP5329879B2/ja not_active Expired - Fee Related
-
2009
- 2009-02-26 US US12/393,558 patent/US8438205B2/en active Active
-
2013
- 2013-04-01 US US13/854,554 patent/US8543630B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US8543630B2 (en) | 2013-09-24 |
US20100063986A1 (en) | 2010-03-11 |
JP2010066510A (ja) | 2010-03-25 |
US20130218939A1 (en) | 2013-08-22 |
US8438205B2 (en) | 2013-05-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Belaïd et al. | Tight private circuits: Achieving probing security with the least refreshing | |
JP4575283B2 (ja) | 暗号装置、復号装置、プログラム及び方法 | |
Mironov et al. | Applications of SAT solvers to cryptanalysis of hash functions | |
JP5329879B2 (ja) | 計算装置、方法及びプログラム | |
Lin et al. | Compact Adaptively Secure ABE from k-Lin: Beyond and Towards | |
JP2008026498A (ja) | 暗号装置、復号装置、プログラム及び方法 | |
JP2014207717A (ja) | 指数難読化 | |
Karmakar et al. | Efficient finite field multiplication for isogeny based post quantum cryptography | |
Jalali et al. | NEON SIKE: Supersingular isogeny key encapsulation on ARMv7 | |
Cheon et al. | MHz2k: MPC from HE over Z _ 2^ k Z 2 k with New Packing, Simpler Reshare, and Better ZKP | |
Ramos-Calderer et al. | Quantum search for scaled hash function preimages | |
Orsini et al. | Bootstrapping BGV ciphertexts with a wider choice of p and q | |
Tsoutsos et al. | Investigating the application of one instruction set computing for encrypted data computation | |
Bouvier et al. | I want to ride my BICYCL: BICYCL implements cryptography in class groups | |
Chung et al. | Encoding rational numbers for fhe-based applications | |
CN117857007A (zh) | 一种适用于同态运算的轻量加解密方法及装置 | |
KR101223498B1 (ko) | 타원 곡선 암호 방식에서 공개키를 생성하는 방법 및 상기방법을 수행하는 시스템 | |
JPWO2018008547A1 (ja) | 秘密計算システム、秘密計算装置、秘密計算方法、およびプログラム | |
Kirshanova et al. | New NTRU Records with Improved Lattice Bases | |
CN108418687B (zh) | 一种适合sm2算法的快速模约减方法和介质 | |
CN114666061A (zh) | 一种基于Spark的高效分布式零知识证明方法 | |
Aranha et al. | Efficient software implementation of laddering algorithms over binary elliptic curves | |
JP2019040047A (ja) | 計算システム、計算方法及び計算プログラム | |
Moldovyan et al. | Digital signature algorithms based on Hidden discrete logarithm problem | |
LeGrow et al. | Check for |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20110323 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20130201 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20130305 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20130426 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20130528 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20130617 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20130702 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20130725 |
|
R151 | Written notification of patent or utility model registration |
Ref document number: 5329879 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R151 |
|
LAPS | Cancellation because of no payment of annual fees |