JP5329879B2 - 計算装置、方法及びプログラム - Google Patents

計算装置、方法及びプログラム Download PDF

Info

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
Application number
JP2008232668A
Other languages
English (en)
Other versions
JP2010066510A (ja
Inventor
智子 米村
博文 村谷
淳 新保
建司 大熊
泰知 磯谷
雄一 駒野
憲一郎 古田
嘉一 花谷
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.)
Toshiba Corp
Original Assignee
Toshiba Corp
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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP2008232668A priority Critical patent/JP5329879B2/ja
Priority to US12/393,558 priority patent/US8438205B2/en
Publication of JP2010066510A publication Critical patent/JP2010066510A/ja
Priority to US13/854,554 priority patent/US8543630B2/en
Application granted granted Critical
Publication of JP5329879B2 publication Critical patent/JP5329879B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/60Methods 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/72Methods 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/724Finite 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

本発明は、有限体上の平方計算や(q^l + q^l’) 乗算を行う計算装置、方法及びプログラムに関する。
通信路を流れる情報を保護するために、暗号を用いる方法がある。暗号を用いる方法には、通信相手と事前に鍵を共有しておく必要があるものもある。このような方法では、鍵の共有や管理に大きな手間がかかる。一方、公開鍵暗号を用いる方法では、事前に鍵を共有することなしに安全な通信を実現できる。このため、ネットワーク・セキュリティの基盤技術として幅広く用いられている。また、情報端末の多様化が進み、小型機器においても方式や実装を工夫して公開鍵を用いた各種スキームやプロトコルが用いられるようになってきた。例えば、公開鍵暗号における公開鍵サイズや暗号文サイズを圧縮する方法が提案されている(非特許文献1参照)。この方法は、公開鍵暗号で用いる数の集合のうち代数的トーラスと呼ばれる部分集合を用いると、集合の元を小さいビット数で表現できるという事実に基づいている。
また、代数的トーラス上の平方計算を高速に行う方法が提案されている(非特許文献2参照)。この非特許文献2に提案されている方法では、6次拡大体の部分群である代数的トーラスについて、擬多項式基底における平方を基礎体の乗算9回で実現している。通常の乗算は18回、平方は12回で計算されるので、非特許文献2の方法では計算の高速化を達成している。尚、法多項式f(x)の根をzとするとき、{1, z, z^2, z^3, z^4, z^5}を多項式基底といい、{z, z^2, z^3, z^4, z^5, z^6}を偽多項式基底という。ここで‘^’はべき乗を表し、‘z^a’はzのa乗を表す。
また、ペアリングを用いて署名方式などの有用な暗号プロトコルが構成されている(非特許文献3参照)。ペアリングの計算ステップは、(1)曖昧さを含んだペアリングの計算(Millerアルゴリズム等)と、(2)曖昧さの除去(最終べき)との2ステップからなる。このうち最終べきについて、‘r=3’の場合の計算を高速に行う手法が提案されている(非特許文献4参照)。この非特許文献4に提案されている方法では、6次拡大体の部分群である代数的トーラスについて、(q+1)乗算を基礎体の乗算9回で実現している。基底は2次拡大の多項式基底と3次拡大の多項式基底との組合せである。このように、代数的トーラスT6(Fq)の元であるという性質を用いて平方や(q+1)乗の計算を高速化した例が知られている。
K. Rubin and A. Silverberg, "Torus-Based Cryptography", CRYPTO 2003, LNCS 2729, 349-365, 2003. M. Stam and A. K. Lenstra. "Efficient Subgroup Exponenciation in Quadratic and Sixth Degree Extensions" CHES 2002, LNCS 2523, 318-332, 2002. D. Boneh, B. Lynn and H. Shacham. Short signatures from the Weil pairing.Asiacrypt 2001, LNCS 2248, 514-532, 2001. 白勢、高木、岡本「ηTペアリングの最終べきについて」情報通信学会研究報告ISEC2006-98
非特許文献2の方法をトーラス圧縮公開鍵暗号において利用するためには、圧縮伸長に通常用いている基底(2次拡大の多項式基底と3次拡大の基底)から偽多項式基底へ変換をしなければならなかった。このような変換を行うことにより、オーバーヘッドが生じる。このため、このようなトーラス圧縮公開鍵暗号において、有限体上で平方計算を高速に行うことが望まれていた。また、ペアリングにおいても、有限体上で平方計算や(q^l + q^l’) 乗算を高速に行うことが望まれていた。
本発明は、上記に鑑みてなされたものであって、有限体上で平方計算や(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の条件により定まる加減算を行い、平方の計算結果を得ることを特徴とする。
また、本発明は、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の条件により定まる加減算を行い、平方の計算結果を得ることを特徴とする。
また、本発明は、プログラムであって、上記の計算方法をコンピュータに実行させることを特徴とする。
本発明によれば、有限体上で平方計算を高速に行うことが可能になる。
以下に添付図面を参照して、この発明にかかる計算装置、方法及プログラムの最良な実施の形態を詳細に説明する。
(1)構成
<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法では対称性を用いて、基礎体上の必要な乗算を減らす。
図1は、‘r=3’の場合に計算を行う基礎体上の乗算を示す図である。3次拡大の基底を{α1, α2, α3}として、6次拡大体の基底を{α1, α2, α3, α1*x, α2*x, α3*x}とする。‘A = (a1, a2, a3, a4, a5, a6)’と‘B=(b1, b2, b3, b4, b5, b6)’との乗算を行う場合にai*bi(i=1, …, 6)とai*bj(i=1,2,3,j=i+3)と‘j≠i’ (i=1,2,3かつj=1,2,3, またはi=4,5,6かつj=4,5,6)について(ai - aj)*(bi - bj)とを計算する。‘j≠i’(i=1,2,3かつj=4,5,6)について(i,j)=(1,5)のとき(a1-a2)*(b4-b5), (i,j)=(1,6)のとき(a1-a3)*(b4-b6), (i,j)=(2,6)のとき(a2-a3)*(b5-b6)を計算する。‘j≠i’については‘ai*bj + aj*bi’が取り出せればよいのでaiとaj、biとbjは和をとることも可能である。その後、(ai ±aj)か(bi ±bj)のどちらか一方にマイナスをかけても良い。この計算法はiとjの組合せによって変えても良い。図1より、‘n=6’のとき18回の乗算を行うことがわかる。‘n=2*r’でrが素数ならば‘3r(r+1)/2’回の乗算となる。
<平方計算法(従来法)>
次に、平方計算について従来の計算方法を説明する。上述の乗算で説明したA*Bにおいて、BがAに等しい場合を考えれば良い。例えば、2次拡大体において‘A^2=(a1^2-a2^2, 2a1*a2-a2^2)’と計算される。ここで、AがT2(Fq^r)の元であるとする。第1の性質を用いて、Aがこのトーラスに入る条件は以下の式1により表される。
Figure 0005329879
まず、‘A^{q^r} = a1 + a2*x^{q^r}’を計算する。2次拡大の法多項式は‘f(x)=x^2+x+1’である。‘r=3’の場合であって‘q≡2 mod 9’のとき‘x^{q^3}=-1-x’となる。これを用いると‘A^{q^r+1} = (a1^2-a1*a2+a2^2) + 0 * x’と計算できる。よって、式1の条件は‘a1^2 - a1*a2 + a2^2 = 1’と書き換えられる。この条件により、各積a1^2, a1*a2, a2^2はそれぞれ、他の2つの積で表される。例えば、a1^2はa1*a2とa2^2とにより表される。図2は、代数的トーラスT2(Fq^3)上の平方において計算する基礎体上の乗算を示す図である。同図において、網掛け部分が、乗算の対象の項であることが示されている。即ち、同図により、‘n=6’のとき12回の乗算を行うことがわかる。‘n=2*r’でrが素数ならば‘r(r+1)’回の乗算となる。
<本実施の形態にかかる平方計算方法>
次に、本実施の形態にかかる平方計算について計算方法を説明する。上述した平方計算の従来の計算方法では、AがT2(Fq^r)の元であるという第1の性質しか用いていなかった。本実施の形態においては、AがT2r(Fq)の元であるという第2の性質も用いて、基礎体の乗算回数を更に減らす。第2の性質は、‘r=3’のときAがT6(Fq)の元であることとなる。ここでは、’r=3’の場合について説明する。
即ち、代数的トーラスT6(Fq)の元は、その位数でべき乗、つまり(q^2-q+1)乗すると‘1’になる。また、T6(Fq)の元はT2(Fq^3)の元でもある性質を用いて、その位数でべき乗、つまり(q^3+1) 乗すると‘1’になる。よって、本実施の形態においては、代数的トーラスT6(Fq)の元であるという性質を、第1の性質((q^3+1) 乗すると‘1’になる)と第2の性質((q^2-q+1) 乗すると‘1’になる)とに分けて考え、これらの性質を組み合わせることで平方計算における基礎体の乗算回数を減らす。
‘r=3’の場合、3次拡大体の基底を{1, y, y^2-2}とする。添加する元は以下の式2とする。尚、ζは‘1’の原始9乗根とする。
Figure 0005329879
‘q≡2 mod 9’のとき、3次拡大体上の乗算について、‘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)’と計算される。図3は、3次拡大体上の乗算ルールを例示する図である。法多項式や基底が変われば乗算ルールが変わるが、図中の各数値のセットが変わるのみでこのセットを持っていれば同様な計算が出来る。以降、6次拡大体上の演算は図のみで表す。
まず、平方を具体的な計算式に書き下す。2次拡大体の表現では、‘A^2=(a1^2 - a2^2, 2a1*a2 - a2^2)’である。これを図で例示すると図4となる。3次拡大体の乗算ルールを適用して、A^2を6次拡大体表現で表すと、図5に例示されるものとなる。
次に、上述の式1により表される第1の性質を、6次拡大体における具体的な条件式(第1の条件式という)に書き下す。尚、ここでは‘r=3’であるから、第1の条件式は以下の式3により表される。
Figure 0005329879
この第1の条件式は、2次拡大体の表現では‘a1^2 - a1*a2 + a2^2 = 1’であり、これを図で例示すると図6となる。3次拡大体の乗算ルールを適用して、第1の条件式を6次拡大体表現で表すと、図7に例示されるものとなる。
次に、第2の性質を、6次拡大体における具体的な条件式(第2の条件式という)に書き下す。尚、ここでは‘r=3’であるから、第2の条件式は以下の式4により表される。
Figure 0005329879
ここで、考えている基底ではFrobenius写像(q乗)は、6次拡大体の元の入れ替えとなるため、以下の式が成立する。
Figure 0005329879
A*Bにおける積は、3次元拡大体の表現で式6により表される。
Figure 0005329879
この式6を図で表すと図8となる。同図においては、式6が3次拡大体表現で表されている。ここで以下の式7が成立する。
Figure 0005329879
この式7の左辺を図で表すと図9となる。同図においては、式7が6次拡大体の表現で表されている。ここで説明の便宜上、同図に示される式7の左辺を(一,二,三,四,五,六)とする。右辺は式8により表される。尚、これらの漢数字一,二,三,四,五,六は便宜的に置き換えた表記であり、本来の数値と同値であることを表しているわけではない。
Figure 0005329879
これから、平方における基礎体上の乗算回数を減らす。まず、従来の計算方法と同じように、第1の性質を用いた第1の条件式を用いて、基礎体上の乗算回数を減らす。
例えば、図4に示した平方における第1項から、図6に例示した第1の条件式を引くという減算を行う。図10は、この場合の減算結果の式を示す図である。また、他の例として、平方における第2項に、図6に例示した第1の条件式を2回足すという加算を行う。図11は、この場合の加算結果の式を示す図である。更に他の例として、平方における第1項に第1の条件式を足し、平方における第2項にも第1の条件式を足すという加算を行う。図12は、この場合の加算結果の式を示す図である。これらの3つのパターンのいずれの加減算を行うかは任意又は所定の方法により決定する。
次に、第2の性質を用いた第2の条件式を用いて、基礎体上の乗算回数を更に減らす。例えば、図10に示した式に、図3に示した3次拡大体上の乗算ルールを代入すると、6次拡大体の表現になる。この第1項から第6項に、4*四, 2(五-六), 2*五, 2*四, (五, 六), 五をそれぞれ足すという加算を行う。図13は、この場合の加算結果の式を示す図ある。この場合、代数的トーラスT2(Fq^3)上の平方において計算する基礎体上の乗算については、図14に示される網掛け部分の9つの項が乗算の対象となる。
また、図11に示した式に、図3に示した3次拡大体上の乗算ルールを代入すると、6次拡大体の表現になる。この第1項から第6項に、2* 一, (二-三), 二, 4* 一,2 (二-三), 2*二をそれぞれ足すという加算を行う。図15は、この場合の加算結果の式を示す図ある。この場合、代数的トーラスT2(Fq^3)上の平方において計算する基礎体上の乗算については、図16に示される網掛け部分の9つの項が乗算の対象となる。
また、図12に示した式に、図3に示した3次拡大体上の乗算ルールを代入すると、6次拡大体の表現になる。この第1項から第6項に、4(一-四), 2(二-五-三+六), 2(二-五), 2(一 -四), (二-五-三+六), (二-五)をそれぞれ足すという加算を行う。図17は、この場合の加算結果の式を示す図ある。この場合、代数的トーラスT2(Fq^3)上の平方において計算する基礎体上の乗算については、図18に示される網掛け部分の9つの項が乗算の対象となる。
図14,16,18のいずれの場合についても、‘n=6’のとき9回の乗算を行うことがわかる。
<計算装置の構成>
次に、以上のような平方計算方法により平方計算を行う本実施の形態にかかる計算装置の構成について説明する。計算装置は、装置全体を制御するCPU(Central Processing Unit)等の制御装置と、各種データや各種プログラムを記憶するROM(Read Only Memory)やRAM(Random Access Memory)等の記憶装置と、各種データや各種プログラムを記憶するHDD(Hard Disk Drive)やCD(Compact Disk)ドライブ装置等の外部記憶装置と、外部装置の通信を制御する通信I/F(interface)と、これらを接続するバスとを備えており、通常のコンピュータを利用したハードウェア構成となっている。
以上のようなハードウェア構成において、計算装置の備えるCPUが記憶装置や外部記憶装置に記憶された各種プログラムを実行することにより実現される各種機能について具体的に説明する。図19は、本実施の形態にかかる計算装置100の機能的構成を例示する図である。同図に示されるように、計算装置100は、入力部101と、乗算部102と、加減算部103と、出力部104と、平方計算ルール作成部(図示せず)とを有する。これらの各部の実体は、CPUのプログラム実行時にRAMなどの記憶装置上に生成されるものである。
入力部101には、6次拡大体の要素を表すベクトルが入力される。即ち、3次拡大体の要素を表すベクトルであって3個の要素を含む2つのベクトルに含まれる6個の要素を含むベクトルが入力される。具体的には、入力部101には、有限体の元、例えば2つのベクトル(a1,a2,a3)及び(a4,a5,a6)に含まれる6つの要素がベクトル表現された‘A = (a1, a2, a3, a4, a5, a6)’が入力される。平方計算ルール作成部は、上述の法多項式及び基底によって定められ且つ第1の条件式及び第2の条件式をKaratsuba法に適用した平方計算ルールを作成する。乗算部102は、平方計算ルールに従って、例えば、上述の図14に例示した9つの項の乗算を行う。9つの項の乗算とは、例えば、図14の例では、‘t1=a1*a4’,‘t2=a2*a5’,‘t3=a3*a6’と‘t4=(a1- a2)*(a4- a5)’,‘t5=(a1- a3)*(a4- a6)’,‘t6=(a2- a3)*(a5- a6)’,‘t7=a4*a4’,‘t8=a4*a5’及び‘t9=a4*a6’である。尚、乗算部102は、図14の例ではなく、図16,18のいずれかに示した9つの項の乗算を行うようにしても良い。即ち、乗算部102は、平方計算ルールに従って、2つの3次拡大体の要素の一方について、Karatsuba法で用いる乗算及び2つの3次拡大体の要素同士のKaratsuba法で用いる乗算のうち少なくとも一方を行い、3次拡大体の要素を表すベクトルの第1要素であるa1と第1要素a1,第2要素a2及び第3要素a3のそれぞれの積又はベクトルの第1要素であるa4と第1要素a4,第2要素a5及び第3要素a6のそれぞれの積を計算して、乗算値を得る。加減算部103は、平方計算ルールに従って、乗算部102の乗算結果とベクトルの要素ai(1≦i≦6)とを用いて加減算を行うことで、平方の計算結果を表すベクトルに含まれる各要素を計算する。即ち、加減算部103は、入力部101に入力されたベクトルについて、乗算値に整数である係数を掛けたベクトルの2次の成分と、必要に応じて、1またはベクトルの成分に整数である係数を掛けた定数またはベクトルの1次の成分を加減算する。出力部104は、加減算部103が計算した結果を平方の計算結果として出力する。
(2)動作
<平方計算ルール作成処理>
次に、本実施の形態にかかる計算装置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である。
同様にして、計算装置100に、2次の法多項式または2次拡大を生成する際に添加する元を入力する。また、計算装置100に、2次拡大の基底を入力する。上述の例では、2次の法多項式として‘f(x)=x^2+x+1’が入力される。基底として{1, x}が入力される。これらの入力が与えられると、計算装置100は、対応する2次拡大体の平方計算ルールを生成する。具体的には、計算装置100は、2次拡大体の元を表すベクトル‘A = (a1, a2)’ を多項式表現で表し、多項式として掛け合わせ、法多項式で剰余を計算して得た多項式をベクトル表現で表した平方計算ルールR2‘A^2=(a1^2-a2^2, 2a1*a2-a2^2)’を生成する。そして、計算装置100は、この平方計算ルールR2を記憶する。例えば、計算装置100は、2×2×2のマトリクスの要素として平方計算ルールR2を記憶する。具体的には、計算装置100は、ベクトル表現の第k項の内容としてai*bjの係数をマトリクスSquare2[k][i][j]に格納する。これを可視化したのが図4である。
次いで、計算装置100は、r次拡大体の乗算ルールR1と2次拡大の平方計算ルールR2とから、対応する2r次拡大体の平方計算ルールR3を生成する。そして、計算装置100は、この平方計算ルールR3を記憶する。例えば、計算装置100は、2*r×2*r×2*rのマトリクスの要素として平方計算ルールR3を記憶する。具体的には、計算装置100は、平方計算ルールR3に対応するマトリクスSquare3[k][i][j]は次のようにして生成する。
‘k=1,2,3, i=1,2,3’,j=1,2,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の条件式として適用する。
Figure 0005329879
第1の条件式の具体的な方程式は、2次の法多項式または2次拡大を生成する際に添加する元と2次拡大の基底とから生成される。第1の条件式の2次の成分は以下の項10により表される。これを表すマトリクスを図示したのが図6である。第1の条件式の1次の成分‘-1’はベクトル表現で(-1,0)となる。
Figure 0005329879
これを計算装置100は記憶しておく。そして計算装置100は平方計算ルールR3に第1の条件式を適用する。つまり、計算装置100は、図6に示される第1の条件式の第1項または第2項を定数倍して、図5に示される平方計算ルールR3の第1項または第2項に足し合わせる。このとき、‘0’でないマトリクスの要素の数が減れば効率的な新しい平方計算ルールが得られたことになる。具体的には、計算装置100は‘k=1,2’に対してある(i,j)が少なくとも1つ‘0’でなければ、1回の乗算を含む‘tij’を計算する。このような乗算の数が減れば効率的な新しい平方計算ルールが得られたことになる。探索すると、例えば次の3通りの平方計算ルールが生成される。尚、図20においてはこれらの図示を省略している。1つは、図5に示される平方計算ルールR3における第1項から図6に示される第1の条件式の第1項を引いた平方計算ルールR4である。平方計算ルールR4は第1の条件式の2次の成分が図10で表されるものである。1次の成分は(1,0)である。もう1つは、平方計算ルールR3における第2項から第1の条件式の第1項を2倍して足した平方計算ルールR5である。平方計算ルールR5は、2次の成分が図11で表されるものである。1次の成分は(0,-2)である。更に1つは、平方計算ルールR3における第1項と第2項にそれぞれ第1の条件式の第1項を足した平方計算ルールR6である。平方計算ルールR6は2次の成分が図12で表されるものである。1次の成分は(-1,-1)である。これらの平方計算ルールR4〜R6によれば乗算の数が18回から12回に減る。
本実施の形態においては、以上のように第1の条件式が適用された平方計算ルールに対して、第2の条件式を適用し更に効率的な平方計算ルールを得る。第2の条件式の具体的な方程式は、2次の法多項式または2次拡大を生成する際に添加する元とr次の法多項式またはr次拡大を生成する際に添加する元とr次拡大の基底とから生成される。ここで、式7に示した第2の条件式の右辺を移項した式11を第2の条件式として適用する。
Figure 0005329879
第2の条件式の2次の成分は以下の項12により表される。これを表すマトリクスを図示したのが図9である。尚、第2の条件式の2次の成分の第1〜6項を上述したように(i,二,三,四,五,六)とする。
Figure 0005329879
第2の条件式の1次の成分はベクトル表現で式13により表される。
Figure 0005329879
探索すると、例えば次の3通りの平方計算ルールが生成される。尚、図20においては、そのうちの平方計算ルールR8のみを示している。1つは、図10に示される平方計算ルールR4の第1〜6項に、4*四, 2(五-六), 2*五, 2*四, (五-六), 五をそれぞれ足した平方計算ルールR7である。平方計算ルールR7は2次の成分が図13で表されるものである。1次の成分はベクトル表現で式14により表される。
Figure 0005329879
また1つは、図11に示される平方計算ルールR5の第1〜6項に、2*一, (二-三), 二, 4*一,2 (二-三), 2*二をそれぞれ足した平方計算ルールR8である。平方計算ルールR8は2次の成分が図15で表されるものである。1次の成分はベクトル表現で式15により表される。
Figure 0005329879
もう1つは、図12に示される平方計算ルールR6の第1〜6項に、4(一-四), 2(二-五-三+六), 2(二-五), 2(一-四), (二-五-三+六), (二-五)をそれぞれ足した平方計算ルールR9である。平方計算ルールR9は2次の成分が図17で表されるものである。1次の成分は以下のベクトル表現で式16により表される。これらの平方計算ルールR7〜R9によれば、図14,16,18に示したように、乗算の数が12回から9回に減る。
Figure 0005329879
<平方計算処理>
次に、本実施の形態にかかる計算装置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に入力される。
次いで、ステップS2では、計算装置100は、平方計算ルールR8を参照して乗算を行う。乗算ではSquare8[k][i][j]の‘0’でない要素について、例えば、‘i=1,2,3かつj=1,2,3’のとき‘tij = ai*aj’ を計算する。‘i=4,5,6かつj=4,5,6’のとき‘tij= ai*aj’、‘(i,j)=(1,4)’のとき‘t14=a1*a4’ を計算する。‘(i,j)=(2,5)’のとき‘t25=a2*a5’ を計算する。‘(i,j)=(3,6)’のとき‘t36=a3*a6’ を計算する。‘(i,j)=(1,5),(2,4)’はペアで現れるので‘t15=(a1-a2)*(a5-a4)’ を計算する。(i,j)=(1,6),(3,4)はペアで現れるので‘t16=(a1-a3)*(a6-a4)’ を計算する。(i,j)=(2,6),(3,5)はペアで現れるので‘t26=(a2-a3)*(a6-a5)’を計算する。ここでは、乗算として上述の図16に示した9つの項の乗算を行う。以下に各項の乗算を示す。尚A[i]はai(i=1,2,3,4,5,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];
t66:=A[6]^2;
また、ステップS3では、計算装置100は、平方計算ルールR8を参照して加減算を行う。例えば、計算装置100は、‘bk=ΣSquare8[k][i][j]*tij+V[k]’と計算する。ここでΣはiとjとに関して和を計算するものである。ただし、平方計算ルールR8には出てこないが、平方計算ルールR7,R9に登場する‘(i,j)=(1,5),(2,4)’ ,‘(i,j)=(1,6),(3,4)’, ‘(i,j)=(2,6),(3,5)’の各ペアは、ペアに対して‘t15 +t14 +t25’,‘ t16 +t14 +t36’,‘ t26 +t25 +t36’を代入する。ここでは、計算装置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 +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]:
その後、ステップS4では、計算装置100は、ステップS3で得られた‘(b1,b2,b3,b4,b5,b6)=B’を出力する。
尚、ステップS2で平方計算ルールR8ではなく平方計算ルールR7を適用する場合には、計算装置100は上述の図14に示した9つの項の乗算を行う。
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];
また、ステップS3で平方計算ルールR8ではなく平方計算ルールR9を適用する場合には、計算装置100は例えば以下の加減算を行う。
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]:
また、ステップS2で平方計算ルールR8ではなく平方計算ルールR9を適用する場合には、計算装置100は上述の図18に示した9つの項の乗算を行う。
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];
また、ステップS3で平方計算ルールR8ではなく平方計算ルールR9を適用する場合には、計算装置100は例えば以下の加減算を行う。
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]:
以上のような構成によれば、n次拡大体、即ち、r次拡大体の2次拡大の部分群である代数的トーラスについて、(q^l+ q^l’) 乗の計算を高速化することができる。従って、トーラス圧縮公開鍵暗号において6次拡大体上の代数的トーラス上の平方計算を行う際、圧縮伸長に通常用いている基底(2次拡大の多項式基底と3次拡大の基底)を偽多項式基底へ変換する必要がなく、平方計算を高速に行うことができる(例えば図22参照)。このため、トーラス圧縮公開鍵暗号やペアリング計算における計算時間を短縮することができる。ペアリングにおいて代数的トーラス上で平方計算を行う場合も同様である。
[第2の実施の形態]
次に、計算装置、方法及びプログラムの第2の実施の形態について説明する。なお、上述の第1の実施の形態と共通する部分については、同一の符号を使用して説明したり、説明を省略したりする。
上述の第1の実施の形態においては、‘r=3’の例では、3次拡大体を生成する際に添加する元として上述の式2に示されるものを用い、基底として{1, y, y^2-2}を用いた。2次の法多項式として‘f(x)=x^2+x+1’を用い、基底として{1, x}を固定した。本実施の形態においては、3次の法多項式として‘f3(y)=y^3-w’を用い、基底として{1, y, y^2}を用いる。2次の法多項式として‘f2(x)=x^2-δ’を用い、基底として{1, x}を固定する。また、乗算部102は、平方計算ルールに従って、2つの3次拡大体の要素の一方について、Karatsuba法で用いる乗算と、2つの3次拡大体の要素の同じ項の係数同士をそれぞれ掛ける乗算とを行い、乗算値を得る。加減算部103は、入力部101に入力されたベクトルについて、乗算部102により得られた乗算値に整数またはwまたはδから計算される係数を掛けたベクトルの2次の成分と、必要に応じて、1またはベクトルの成分に整数またはwまたはδから計算される係数を掛けた定数またはベクトル)の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である。
同様にして、2次の法多項式及び基底が入力されると、対応する2次拡大体の平方計算ルールを計算装置100は生成する。具体的には、計算装置100は、2次拡大体の元を表すベクトルを‘ベクトルA = (a1, a2) とすると、’A^2=(a1^2+δ*a2^2, 2a1*a2)‘を生成する。この平方計算ルールR11を計算装置100は記憶する。例えば、計算装置100は2×2×2のマトリクスの要素に記憶する。これを可視化したのが図24である。
次いで、計算装置100はr次拡大体の乗算ルールR10と2次拡大の平方計算ルールR11とから、対応する2r次拡大体の平方計算ルールR12を生成する。この平方計算ルールR12を計算装置100は記憶する。例えば、計算装置100は2*r×2*r×2*rのマトリクスの要素に記憶する。これを可視化したのが図25である。
ここで上述の第1の実施の形態と同様に、式9に示される第1の条件式として適用する。第1の条件式の具体的な方程式は、2次の法多項式または2次拡大を生成する際に添加する元と2次拡大の基底とから生成される。第1の条件式の2次の成分は以下の項10により表される。これを表すマトリクスを図示したのが図26である。第1の条件式の1次の成分‘-1’はベクトル表現で(-1,0)となる。これを計算装置100は記憶しておく。そして計算装置100は平方計算ルールR11に第1の条件式を適用する。探索すると、例えば次の2通りのルールが生成される。1つは、図24に示した平方計算ルールR11における第1項から図26に示した第1の条件式の第1項を引いた平方計算ルール13である。平方計算ルールR13は第1の条件式の2次の成分が図27で表されるものである。1次の成分は(1,0)である。もう1つは、平方計算ルールR11における第1項に第1の条件式の第1項を足した平方計算ルールR14である。平方計算ルールR13は第1の条件式の2次の成分が図28で表されるものである。1次の成分は(-1,0)である。これらの平方計算ルールR13〜R14によれば図27〜28に示されるように乗算の数が18回から12回に減る。
本実施の形態においては、以上のように第1の条件式が適用された平方計算ルールに対して、第2の条件式を適用し更に効率的な平方計算ルールを得る。第2の条件式の具体的な方程式は、2次の法多項式または2次拡大を生成する際に添加する元とr次の法多項式またはr次拡大を生成する際に添加する元とr次拡大の基底とから生成される。ここでは上述の第1の実施の形態と同様に、式7に示した第2の条件式の右辺を移項した式11を第2の条件式として適用する。第2の条件式の1次の成分はベクトル表現で以下の式17により表される。
Figure 0005329879
ここで、以下の式18が成立するとすると、第2の条件式の第1〜3項は図29のように表される。第2の条件式の第4〜6項は図30のように表される。探索すると、例えば次の2通りのルールが生成される。1つは、平方計算ルールR13の第4項に第2の条件式の第4項の2倍を足し、平方計算ルールR13の第5項に第2の条件式の第5項の2倍を足し、平方計算ルールR13の第6項に第2の条件式の第6項の2倍を引いた平方計算ルールR15である。これは図31で表される。もう1つは、平方計算ルールR13の場合と同様に、平方計算ルールR14の第4項に第2の条件式の第4項の2倍を足し、平方計算ルールR14の第5項に第2の条件式の第5項の2倍を足し、平方計算ルールR14の第6項に第2の条件式の第6項の2倍を引いた平方計算ルールR16である。これは図32で表される。図31の平方計算ルールR15を用いて乗算を行う場合、図33に示される網掛け部分の9つの項が乗算の対象となる。図32の平方計算ルールR16を用いて乗算を行う場合、図34に示される網掛け部分の9つの項が乗算の対象となる。即ち、これらの平方計算ルールR15〜R16によれば、乗算の数が12回から9回に減る。
Figure 0005329879
<平方計算処理>
次に、本実施の形態にかかる計算装置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に入力される。
Figure 0005329879
次いで、ステップS12では、計算装置100は、平方計算ルールR15を参照して乗算を行う。計算装置100は、Square15[k][i][j]の‘0’でない要素について、例えば、次の乗算を行う。
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];
また、ステップS13では、計算装置100は、平方計算ルールR15を参照して加減算を行う。例えば、計算装置100は、‘bk=ΣSquare15[k][i][j]*tij+V[k]’と計算する。ここでΣはiとjとに関して和を計算する。ここでは、計算装置100は以下の加減算を行い、平方の計算結果を表すベクトル(b1,b2,b3,b4,b5,b6)を求める。ただし、‘d:=delta^((p^m-1)/2);’である。Square15[k][i][j]*tijについて、マトリクスの要素によっては加減算のみで実行できないことがある。例えば、マトリクスの要素がwであってwが自然数でない場合はw*tijの乗算を行う。
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;
その後、ステップS4では、計算装置100は、ステップS13で得られた‘(b1,b2,b3,b4,b5,b6)=B’を出力する。
尚、ステップS12で平方計算ルールR15ではなく平方計算ルールR16を適用する場合には、計算装置100は例えば以下の乗算を行う。
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];
また、ステップS13で平方計算ルールR15ではなく平方計算ルールR16を適用する場合には、計算装置100は例えば以下の加減算を行う。
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;
以上のような3次の法多項式及び基底と、2次の法多項式及び基底を用いた場合であっても、トーラス圧縮公開鍵暗号において6次拡大体上の代数的トーラス上の平方計算を行う際、圧縮伸長に通常用いている基底(2次拡大の多項式基底と3次拡大の基底)を偽多項式基底へ変換する必要がなく、平方計算を高速に行うことができる。このため、トーラス圧縮公開鍵暗号やペアリング計算における計算時間を短縮することができる。ペアリングにおいて代数的トーラス上で平方計算を行う場合も同様である。
[変形例]
なお、本発明は前記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、前記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除しても良い。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。また、以下に例示するような種々の変形が可能である。
<変形例1>
上述した各実施の形態において、計算装置100で実行される各種プログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成しても良い。また、当該各種プログラムを、インストール可能な形式又は実行可能な形式のファイルでCD−ROM、フレキシブルディスク(FD)、CD−R、DVD(Digital Versatile Disk)等のコンピュータで読み取り可能な記録媒体に記録して提供するように構成しても良い。この場合には、プログラムは、計算装置100において上記記録媒体から読み出して実行することにより主記憶装置(例えばRAM)上にロードされ、上記機能的構成において説明した各部が主記憶装置上に生成される。
<変形例2>
上述した各実施の形態において、計算装置100は平方計算ルール作成部を備え、計算装置100が平方計算ルールを生成するとした。しかし、計算装置100は平方計算ルール作成部を備えず、平方計算ルールを他の情報処理装置が生成しこれを計算装置100が取得して平方計算の際に用いるようにしても良い。
<変形例3>
上述した第1の実施の形態において、ステップS2の処理とステップS3の処理とを並行して行うようにしても良く、ステップS3で用いる各値であってステップS2の乗算の結果である乗算値が求められる順に随時ステップS2の加減算を行うようにすれば良い。第2の実施の形態におけるステップS12の処理とステップS13の処理とについても同様である。
<変形例4>
上述した各実施の形態において、計算装置100が有限体として6次拡大体上で平方計算を行う場合について説明したが、有限体はこれに限らず上述の各実施の形態の構成を適用可能である。また、計算装置100が行う計算は平方計算とし、即ち、2乗のべき乗計算を行う場合について説明した。しかし、計算装置100は、2r次拡大体上で(q^l + q^l’) 乗(q:拡大体の標数)のべき乗計算を行う場合にも上述の各実施の形態の構成を適用可能である。
<変形例5>
上述した各実施の形態の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に応用できる。
例えば、平方計算ルールR16を適用する場合に応用すると、計算装置100は例えば以下の乗算を行う。
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;
また、平方計算ルールR15を適用する場合に応用すると、計算装置100は例えば以下の乗算を行う。
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;
また、平方計算ルールR8を適用する場合に応用すると、計算装置100は例えば以下の乗算を行う。
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]:
また、平方計算ルールR8を適用する場合、除算を避けるために一部を平方で計算すると、計算装置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])^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]:
以上のような構成によっても、n次拡大体、即ち、r次拡大体の2次拡大の部分群である代数的トーラスについて、(q^l+ q^l’) 乗の計算を高速化することができる。
第1の実施の形態において‘r=3’の場合に計算を行う基礎体上の乗算を示す図である。 代数的トーラスT2(Fq^3)上の平方において計算する基礎体上の乗算を示す図である。 3次拡大体上の乗算ルールを例示する図である。 平方の2次拡大体表現を例示する図である。 平方の6次拡大体表現を例示する図である。 第1の条件式の2次拡大体表現を例示する図である。 第1の条件式の6次拡大体表現を例示する図である。 式6の3次拡大体表現を例示する図である。 式7の6次拡大体の表現を例示する図である。 第1の条件式の適用例を示す図である。 第1の条件式の適用例を示す図である。 第1の条件式の適用例を示す図である。 第2の条件式の適用例を示す図である。 代数的トーラスT6(Fq)上の平方において計算する基礎体上の乗算を示す図である。 第2の条件式の適用例を示す図である。 代数的トーラスT6(Fq)上の平方において計算する基礎体上の乗算を示す図である。 第2の条件式の適用例を示す図である。 代数的トーラスT6(Fq)上の平方において計算する基礎体上の乗算を示す図である。 計算装置100の機能的構成を例示する図である。 計算装置100が平方計算ルールを作成する処理の概要を示す図である。 計算装置100の行う平方計算処理の手順を示すフローチャートである。 同実施形態にかかる平方計算方法が圧縮伸張にも適用されることを模式的に示す図である。 第2の実施の形態にかかる3次拡大体上の乗算ルールを例示する図である。 2次拡大体の平方計算ルールを例示する図である。 6次拡大体の平方計算ルールを例示する図である。 第1の条件式の2次拡大体の表現を例示する図である。 第1の条件式の適用例を示す図である。 第1の条件式の適用例を示す図である。 第2の条件式の第1〜3項の6次拡大体表現を例示する図である。 第2の条件式の第4〜6項の6次拡大体表現を例示する図である。 第2の条件式の適用例を示す図である。 第2の条件式の適用例を示す図である。 代数的トーラスT6(Fq)上の平方において計算する基礎体上の乗算を示す図である。 代数的トーラスT6(Fq)上の平方において計算する基礎体上の乗算を示す図である。 計算装置100の行う平方計算処理の手順を示すフローチャートである。
符号の説明
100 計算装置
101 入力部
102 乗算部
103 加減算部
104 出力部

Claims (23)

  1. 有限体上の元の平方を計算する計算装置であって、
    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の条件により定まる加減算を行い、平方の計算結果を得る
    ことを特徴とする計算装置。
  2. 前記乗算部は、入力された前記要素を用いて基礎体Fq上で、2r次拡大体の元はΦ2r(q)乗(Φn(x)は円周n等分多項式)すると‘1’となるという前記第1の条件により定まる乗算及び2r次拡大体の元はΦ2(q^r)乗(q:2r次拡大体の標数)すると‘1’となるという前記第2の条件により定まる乗算を行い、乗算値を得る
    ことを特徴とする請求項1に記載の計算装置。
  3. 前記入力部には、2r次拡大体の元が2r個の要素を含むベクトル表現で入力され、
    前記乗算部は、入力された前記要素を用いて基礎体Fq上で、前記第1の条件及び前記第2の条件をKaratsuba法に適用して定められる平方計算ルールに従って乗算を行い、
    前記加減算部は、得られた前記乗算値と入力された前記要素とを用いて、前記平方計算ルールに従って加減算を行い、平方の計算結果を得る
    ことを特徴とする請求項1又は2に記載の計算装置。
  4. 前記乗算部は、入力された前記要素に関して2次の成分及び1次の成分のうち少なくとも一方により表される平方計算ルールに従って、前記2次の成分が‘0’であるか否かに基づいて、前記要素のうち該当する少なくとも1組の2つの要素の積又は1つの要素の平方を計算し、
    前記加減算部は、前記2次の成分の係数と得られた前記乗算値と前記1次の成分とを用いて、2r次のベクトルに含まれる各要素を計算することにより、平方の計算結果を得る
    ことを特徴とする請求項1乃至3のいずれか一項に記載の計算装置。
  5. 前記2r次拡大体は、2項式の法多項式で拡大された体であり、基底は偽多項式基底または多項式基底であり、
    前記乗算部は、入力された前記要素を用いて基礎体上で、前記法多項式及び基底によって定められ且つ前記第1の条件及び前記第2の条件をKaratsuba法に適用して定められる平方計算ルールに従って乗算を行い、乗算値を得る
    ことを特徴とする請求項1乃至4のいずれか一項に記載の計算装置。
  6. 2r次拡大体のr次拡大の法多項式を‘fr (y)=y^r-w’とし、その基底を{1, y, …,y^{r-1}}とし、2次拡大の法多項式を‘f2(x)=x^2-δ’とし、その基底を{1, x}とし、
    前記乗算部は、入力された前記要素を用いて基礎体Fq上で、前記法多項式及び基底によって定められ且つ前記第1の条件及び前記第2の条件をKaratsuba法に適用して定められる平方計算ルールに従って乗算を行い、乗算値を得る
    ことを特徴とする請求項5に記載の計算装置。
  7. 前記入力部には、2r次拡大体の要素を表すベクトルであって、r次拡大体の要素を表す第1ベクトルであってr個の要素を含む2つの第1ベクトルに含まれる2r個の要素を含むベクトルが入力され、
    前記乗算部は、前記平方計算ルールに従って、2つのr次拡大体の要素の一方について、Karatsuba法で用いる乗算と、2つのr次拡大体の要素の同じ項の係数同士をそれぞれ掛ける乗算とを行い、
    前記加減算部は、得られた前記乗算値に整数またはwまたはδから計算される係数を掛けた前記ベクトルの2次の成分と、必要に応じて、1または前記ベクトルの成分に整数またはwまたはδから計算される係数を掛けた定数または前記ベクトルの1次の成分とを加減算して、平方の計算結果を得る
    ことを特徴とする請求項5又は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のいずれか一項に記載の計算装置。
  9. 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に記載の計算装置。
  10. 「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のいずれか一項に記載の計算装置。
  11. 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に記載の計算装置。
  12. 前記2r次拡大体は、6次拡大体であり、
    前記6次拡大体は、円分体または円分体の部分体であり、基底は偽多項式基底または多項式基底であり、
    前記乗算部は、入力された前記要素を用いて基礎体上で、前記法多項式及び基底によって定められ且つ前記第1の条件及び前記第2の条件をKaratsuba法に適用して定められる平方計算ルールに従って乗算を行い、乗算値を得る
    ことを特徴とする請求項1乃至4のいずれか一項に記載の計算装置。
  13. 「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に記載の計算装置。
  14. 前記入力部には、前記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に記載の計算装置。
  15. 前記第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のいずれか一項に記載の計算装置。
  16. 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に記載の計算装置。
  17. 前記第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のいずれか一項に記載の計算装置。
  18. 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に記載の計算装置。
  19. 前記第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のいずれか一項に記載の計算装置。
  20. 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に記載の計算装置。
  21. 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’)乗の計算結果を得る
    ことを特徴とする計算装置。
  22. 入力部と、乗算部と、加減算部と、出力部とを備え、有限体上の元の平方を計算する計算装置で実行される平方計算方法であって、
    前記入力部が、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の条件により定まる加減算を行い、平方の計算結果を得る
    ことを特徴とする計算方法。
  23. 請求項22に記載の計算方法をコンピュータに実行させることを特徴とするプログラム。
JP2008232668A 2008-09-10 2008-09-10 計算装置、方法及びプログラム Expired - Fee Related JP5329879B2 (ja)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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 株式会社東芝 計算装置、方法及びプログラム

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