(57)【要約】【課題】有限体上で平方計算を高速に行うことが可能な計算技術を提供する。【解決手段】入力部１０１には、有限体の元がベクトル表現で入力される。平方計算ルール作成部は、固定された法多項式及び基底によって定められ且つ第１の条件式及び第２の条件式をKaratsuba法に適用した平方計算ルールを作成する。第１の条件式は6次拡大体Fq^6の元がT2(Fq^r)の元であるという第１の性質に基づく。第２の条件式は6次拡大体Fq^6の元がT2r(Fq)の元であるという第２の性質に基づく。乗算部１０２は、平方計算ルールに従って乗算を行う。加減算部１０３は、平方計算ルールに従って、乗算部１０２の乗算結果とベクトルの要素とを用いて加減算を行うことで、平方の計算結果を表すベクトルに含まれる各要素を計算する。出力部１０４は、加減算部１０３が計算した結果を平方の計算結果として出力する。【選択図】        図１９
2010066510.tif 000002
【特許請求の範囲】
【請求項１】
有限体上の元の平方を計算する計算装置であって、
有限体上の元が、複数の要素を含むベクトル表現で入力される入力部と、
入力された前記要素を用いて基礎体上で、有限体上の元が代数的トーラスに入る条件により定まる乗算を行い、乗算値を得る乗算部と、
得られた前記乗算値と入力された前記要素とを用いて、前記条件により定まる加減算を行い、前記元の平方の計算結果を得る加減算部と、
得られた前記計算結果を出力する出力部とを備える
ことを特徴とする計算装置。
【請求項２】
前記有限体は、2r次拡大体Fq^{2r}（^：べき乗、r:素数）であり、
前記乗算部は、入力された前記要素を用いて基礎体Fq上で、2r次拡大体の元が代数的トーラスT2r(Fq)の元であるという性質を用いた第１の条件により定まる乗算を行い、乗算値を得る
ことを特徴とする請求項１に記載の計算装置。
【請求項３】
前記乗算部は、入力された前記要素を用いて基礎体Fq上で、2r次拡大体の元が代数的トーラスT2r(Fq)の元であるという性質を用いた第１の条件により定まる乗算及び2r次拡大体の元が代数的トーラスT2(Fq^r)の元であるという性質を用いた第２の条件により定まる乗算を行い、乗算値を得る
ことを特徴とする請求項２に記載の計算装置。
【請求項４】
前記乗算部は、入力された前記要素を用いて基礎体Fq上で、2r次拡大体の元はΦ2r(q)乗(Φn(x)は円周n等分多項式)すると‘1’となるという前記第１の条件により定まる乗算及び6次拡大体の元はΦ2(q^r)乗（q：拡大体の標数）すると‘1’となるという前記第２の条件により定まる乗算を行い、乗算値を得る
ことを特徴とする請求項３に記載の計算装置。
【請求項５】
2r次拡大体Fq^{2r}のr次拡大の法多項式及び基底と2次拡大の法多項式及び基底とが予め固定され、
前記乗算部は、入力された前記要素を用いて基礎体Fq上で、固定された前記法多項式及び基底、前記第１の条件により定まる乗算及び前記第２の条件により定まる乗算を行い、乗算値を得て、
前記加減算部は、得られた前記乗算値と入力された前記要素とを用いて、固定された前記法多項式及び基底、前記第１の条件により定まる加減算及び前記第２の条件により定まる加減算を行い、平方の計算結果を得る
ことを特徴とする請求項３又は４に記載の計算装置。
【請求項６】
前記入力部には、2r次拡大体の元が2r個の要素を含むベクトル表現で入力され、
前記乗算部は、入力された前記要素を用いて基礎体Fq上で、前記第１の条件及び前記第２の条件をKaratsuba法に適用して定められる平方計算ルールに従って乗算を行い、乗算値を得て、
前記加減算部は、得られた前記乗算値と入力された前記要素とを用いて、前記平方計算ルールに従って加減算を行い、平方の計算結果を得る
ことを特徴とする請求項３乃至５のいずれか一項に記載の計算装置。
【請求項７】
前記乗算部は、入力された前記要素に関して2次の成分及び1次の成分のうち少なくとも一方により表される平方計算ルールに従って、前記2次の成分が‘0’であるか否かに基づいて、前記要素のうち該当する少なくとも１組の２つの要素の積又は１つの要素の平方を計算することにより、前記乗算値を得て、
前記加減算部は、前記2次の成分の係数と得られた前記乗算値と前記1次の成分とを用いて、2r次のベクトルに含まれる各要素を計算することにより、平方の計算結果を得る
ことを特徴とする請求項３乃至６のいずれか一項に記載の計算装置。
【請求項８】
前記2r次拡大体は、2項式の法多項式で拡大された体であり、基底は偽多項式基底または多項式基底であり、
前記乗算部は、入力された前記要素を用いて基礎体上で、前記法多項式及び基底によって定められ且つ前記第１の条件及び前記第２の条件をKaratsuba法に適用して定められる平方計算ルールに従って乗算を行い、乗算値を得る
ことを特徴とする請求項３乃至７のいずれか一項に記載の計算装置。
【請求項９】
2r次拡大体のr次拡大の法多項式を‘fr (y)=y^r-w’とし、その基底を{1, y, …，y^{r-1}}とし、2次拡大の法多項式を‘f2(x)=x^2-δ’とし、その基底を{1, x}として予め固定され、
前記乗算部は、入力された前記要素を用いて基礎体Fq上で、固定された前記法多項式及び基底によって定められ且つ前記第１の条件及び前記第２の条件をKaratsuba法に適用して定められる平方計算ルールに従って乗算を行い、乗算値を得る
ことを特徴とする請求項８に記載の計算装置。
【請求項１０】
前記入力部には、2r次拡大体の要素を表すベクトルであって、r次拡大体の要素を表す第１ベクトルであってr個の要素を含む２つの第１ベクトルに含まれる2r個の要素を含むベクトルが入力され、
前記乗算部は、前記平方計算ルールに従って、２つのr次拡大体の要素の一方について、Karatsuba法で用いる乗算と、２つのr次拡大体の要素の同じ項の係数同士をそれぞれ掛ける乗算とを行い、前記乗算値を得て、
前記加減算部は、前記乗算値に整数またはwまたはδから計算される係数を掛けた前記ベクトルの2次の成分と、必要に応じて、1または前記ベクトルの成分に整数またはwまたはδから計算される係数を掛けた定数または前記ベクトルの1次の成分とを加減算して、平方の計算結果を得る
ことを特徴とする請求項８又は９に記載の計算装置。
【請求項１１】
「r=3」であり、
前記第１の条件をKaratsuba法に適用した第１平方計算ルールは、６つの項を含み、
前記第２の条件を表す第２の条件式は、６つの項を含み、
前記平方計算ルールは、前記第１平方計算ルールの第４項に前記第２の条件式の第４項の２倍を足し、前記第１平方計算ルールの第５項に前記第２の条件式の第５項の２倍を足し、前記第１平方計算ルールの第６項に前記第２の条件式の第６項の２倍を引いたものであり、
前記乗算部は、前記平方計算ルールに従って、対象の項における乗算を行い、前記乗算値を得る
ことを特徴とする請求項８乃至１０のいずれか一項に記載の計算装置。
【請求項１２】
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]を導出するための乗算又は平方計算を行い、前記乗算値を得る
ことを特徴とする請求項１１に記載の計算装置。
【請求項１３】
「r=3」であり、
前記第１の条件をKaratsuba法に適用した第１平方計算ルールは、６つの項を含み、
前記第２の条件を表す第２の条件式は、６つの項を含み、
前記平方計算ルールは、前記第１平方計算ルールの第４項に前記第２の条件式の第４項の２倍を足し、前記第１平方計算ルールの第５項に前記第２の条件式の第５項の２倍を足し、前記第１平方計算ルールの第６項に前記第２の条件式の第６項の２倍を引いたものであり、
前記乗算部は、前記平方計算ルールに従って、対象の項における乗算を行い、前記乗算値を得る
ことを特徴とする請求項８乃至１０のいずれか一項に記載の計算装置。
【請求項１４】
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]を導出するための乗算又は平方計算を行い、前記乗算値を得る
ことを特徴とする請求項１３に記載の計算装置。
【請求項１５】
前記6次拡大体は、円分体または円分体の部分体であり、基底は偽多項式基底または多項式基底であり、
前記乗算部は、入力された前記要素を用いて基礎体上で、前記法多項式及び基底によって定められ且つ前記第１の条件及び前記第２の条件をKaratsuba法に適用して定められる平方計算ルールに従って乗算を行い、乗算値を得る
ことを特徴とする請求項３乃至７のいずれか一項に記載の計算装置。
【請求項１６】
「r=3」であり、
6次拡大体の3次拡大の法多項式を‘ｙ＝ζ＋ζ^(-1)’（ζは1の原始9乗根）とし、その基底を{1, y, y^2-2}とし、2次拡大の法多項式を‘f(x)=x^2+x+1’とし、その基底を{1, x}として予め固定され、
前記乗算部は、入力された前記要素を用いて基礎体上で、固定された前記法多項式及び基底によって定められ且つ前記第１の条件及び前記第２の条件をKaratsuba法に適用して定められる平方計算ルールに従って乗算を行い、乗算値を得る
ことを特徴とする請求項１５に記載の計算装置。
【請求項１７】
前記入力部には、6次拡大体の要素を表すベクトルであって、3次拡大体の要素を表す第１ベクトルであって３つの要素を含む２つの第１ベクトルに含まれる６つの要素を含むベクトルが入力され、
前記乗算部は、前記平方計算ルールに従って、2つの3次拡大体の要素の一方について、Karatsuba法で用いる乗算及び２つの3次拡大体の要素同士のKaratsuba法で用いる乗算のうち少なくとも一方を行い、２つの3次拡大体の要素の一方について、前記第１ベクトルの第1要素と第1要素,第２要素及び第３要素のそれぞれの積を計算して、乗算値を得て、
前記加減算部は、前記乗算値に整数である係数を掛けた前記ベクトルの２次の成分と、必要に応じて、1または前記ベクトルの成分に整数である係数を掛けた定数または前記ベクトルの1次の成分を加減算して、平方の計算結果を得る
ことを特徴とする請求項１５又は１６に記載の計算装置。
【請求項１８】
前記第１の条件をKaratsuba法に適用した第１平方計算ルールは、６つの項を含み、
前記第２の条件を表す第２の条件式は、６つの項を含み、
前記平方計算ルールは、前記第１平方計算ルールの第１項に前記第２の条件式の第４項の４倍を足し、前記第１平方計算ルールの第２項に前記第２の条件式の第３項から第４項を引いた値の２倍を足し、前記第１平方計算ルールの第３項に前記第２の条件式の第５項の２倍を足し、前記第１平方計算ルールの第４項に前記第２の条件式の第６項の２倍を足し、前記第１平方計算ルールの第５項に前記第２の条件式の第５項から第６項を引いた値を足し、前記第１平方計算ルールの第６項に前記第２の条件式の第６項を足したものであり、
前記乗算部は、前記平方計算ルールに従って、対象の項における乗算を行い、前記乗算値を得る
ことを特徴とする請求項１５乃至１７のいずれか一項に記載の計算装置。
【請求項１９】
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を導出するための乗算または平方計算を行い、前記乗算値を得る
ことを特徴とする請求項１８に記載の計算装置。
【請求項２０】
前記第１の条件をKaratsuba法に適用した第１平方計算ルールは、６つの項を含み、
前記第２の条件を表す第２の条件式は、６つの項を含み、
前記平方計算ルールは、前記第１平方計算ルールの第１項に前記第２の条件式の第１項の２倍を足し、前記第１平方計算ルールの第２項に前記第２の条件式の第２項から第３項を引いた値を足し、前記第１平方計算ルールの第３項に前記第２の条件式の第２項を足し、前記第１平方計算ルールの第４項に前記第２の条件式の第１項の４倍を足し、前記第１平方計算ルールの第５項に前記第２の条件式の第２項から第３項を引いた値を足し、前記第１平方計算ルールの第６項に前記第２の条件式の第２項の２倍を足したものであり、
前記乗算部は、前記平方計算ルールに従って、対象の項における乗算を行い、前記乗算値を得る
ことを特徴とする請求項１５乃至１７のいずれか一項に記載の計算装置。
【請求項２１】
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]を導出するための乗算または平方計算を行い、前記乗算値を得る
ことを特徴とする請求項２０に記載の計算装置。
【請求項２２】
前記第１の条件をKaratsuba法に適用した第１平方計算ルールは、６つの項を含み、
前記第２の条件を表す第２の条件式は、６つの項を含み、
前記平方計算ルールは、前記第１平方計算ルールの第１項に前記第２の条件式の第１項から第４項を引いた値の４倍を足し、前記第１平方計算ルールの第２項に前記第２の条件式の第２項から第４項及び第３項を引いた値に第６項を足した値の２倍を足し、前記第１平方計算ルールの第３項に前記第２の条件式の第２項から第５項を引いた値の２倍を足し、前記第１平方計算ルールの第４項に前記第２の条件式の第１項から第４項を引いた値の２倍を足し、前記第１平方計算ルールの第５項に前記第２の条件式の第２項から第５項及び第３項を引いた値に第６項を足した値を足し、前記第１平方計算ルールの第６項に前記第２の条件式の第２項から第５項を引いた値を足したものであり、
前記乗算部は、前記平方計算ルールに従って、対象の項における乗算を行い、前記乗算値を得る
ことを特徴とする請求項１５乃至１７のいずれか一項に記載の計算装置。
【請求項２３】
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]を導出するための乗算または平方計算を行い、前記乗算値を得る
ことを特徴とする請求項２２に記載の計算装置。
【請求項２４】
2r次拡大体上の元の(q^l + q^l’) 乗（q：基礎体Fqの位数）を計算する計算装置であって、
2r拡大体上の元が、2r個の要素を含むベクトル表現ベクトル表現で入力される入力部と、
入力された前記要素を用いて基礎体Fq上で、2r次拡大体上の元が代数的トーラスT2rの元であるという性質を用いた条件によって定められる演算ルールに従って乗算を行い、乗算値を得る乗算部と、
得られた乗算値と入力された前記要素とを用いて前記演算ルールに従って加減算を行い、前記元の(q^l + q^l’) 乗の計算結果を得る加減算部と、
得られた前記計算結果を出力する出力部とを備える
ことを特徴とする計算装置。
【請求項２５】
入力部と、乗算部と、加減算部と、出力部とを備え、有限体上の元の平方を計算する計算装置で実行される平方計算方法であって、
前記入力部が、有限体上の元が、複数の要素を含むベクトル表現で入力される入力ステップと、
前記乗算部が、入力された前記要素を用いて基礎体上で、有限体上の元が代数的トーラスに入る条件により定まる乗算を行い、乗算値を得る乗算ステップと、
前記加減算部が、得られた前記乗算値と入力された前記要素とを用いて、前記条件により定まる加減算を行い、前記元の平方の計算結果を得る加減算ステップと、
前記出力部が、得られた前記計算結果を出力する出力ステップとを含む
ことを特徴とする計算方法。
【請求項２６】
請求項２５に記載の計算方法をコンピュータに実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、有限体上の平方計算や(q^l + q^l’) 乗算を行う計算装置、方法及びプログラムに関する。
【背景技術】
【０００２】
通信路を流れる情報を保護するために、暗号を用いる方法がある。暗号を用いる方法には、通信相手と事前に鍵を共有しておく必要があるものもある。このような方法では、鍵の共有や管理に大きな手間がかかる。一方、公開鍵暗号を用いる方法では、事前に鍵を共有することなしに安全な通信を実現できる。このため、ネットワーク・セキュリティの基盤技術として幅広く用いられている。また、情報端末の多様化が進み、小型機器においても方式や実装を工夫して公開鍵を用いた各種スキームやプロトコルが用いられるようになってきた。例えば、公開鍵暗号における公開鍵サイズや暗号文サイズを圧縮する方法が提案されている（非特許文献１参照）。この方法は、公開鍵暗号で用いる数の集合のうち代数的トーラスと呼ばれる部分集合を用いると、集合の元を小さいビット数で表現できるという事実に基づいている。
【０００３】
また、代数的トーラス上の平方計算を高速に行う方法が提案されている（非特許文献２参照）。この非特許文献２に提案されている方法では、6次拡大体の部分群である代数的トーラスについて、擬多項式基底における平方を基礎体の乗算9回で実現している。通常の乗算は18回、平方は12回で計算されるので、非特許文献２の方法では計算の高速化を達成している。尚、法多項式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乗を表す。
【０００４】
また、ペアリングを用いて署名方式などの有用な暗号プロトコルが構成されている（非特許文献３参照）。ペアリングの計算ステップは、（1）曖昧さを含んだペアリングの計算（Millerアルゴリズム等）と、(2）曖昧さの除去（最終べき）との２ステップからなる。このうち最終べきについて、‘r=3’の場合の計算を高速に行う手法が提案されている（非特許文献４参照）。この非特許文献４に提案されている方法では、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次拡大の多項式基底と3次拡大の基底）から偽多項式基底へ変換をしなければならなかった。このような変換を行うことにより、オーバーヘッドが生じる。このため、このようなトーラス圧縮公開鍵暗号において、有限体上で平方計算を高速に行うことが望まれていた。また、ペアリングにおいても、有限体上で平方計算や(q^l + q^l’) 乗算を高速に行うことが望まれていた。
【０００７】
本発明は、上記に鑑みてなされたものであって、有限体上で平方計算や(q^l + q^l’) 乗算を高速に行うことが可能な計算装置、方法及プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
上述した課題を解決し、本発明は、有限体上の元の平方を計算する計算装置であって、有限体上の元が、複数の要素を含むベクトル表現で入力される入力部と、入力された前記要素を用いて基礎体上で、有限体上の元が代数的トーラスに入る条件により定まる乗算を行い、乗算値を得る乗算部と、得られた前記乗算値と入力された前記要素とを用いて、前記条件により定まる加減算を行い、前記元の平方の計算結果を得る加減算部と、得られた前記計算結果を出力する出力部とを備えることを特徴とする。
【０００９】
また、本発明は、2r次拡大体上の元の(q^l + q^l’) 乗（q：基礎体Fqの位数）を計算する計算装置であって、2r拡大体上の元が、2r個の要素を含むベクトル表現ベクトル表現で入力される入力部と、入力された前記要素を用いて基礎体Fq上で、2r次拡大体上の元が代数的トーラスT2rの元であるという性質を用いた条件によって定められる演算ルールに従って乗算を行い、乗算値を得る乗算部と、得られた乗算値と入力された前記要素とを用いて前記演算ルールに従って加減算を行い、前記元の(q^l + q^l’) 乗の計算結果を得る加減算部と、得られた前記計算結果を出力する出力部とを備えることを特徴とする。
【００１０】
また、本発明は、入力部と、乗算部と、加減算部と、出力部とを備え、有限体上の元の平方を計算する計算装置で実行される平方計算方法であって、前記入力部が、有限体上の元が、複数の要素を含むベクトル表現で入力される入力ステップと、前記乗算部が、入力された前記要素を用いて基礎体上で、有限体上の元が代数的トーラスに入る条件により定まる乗算を行い、乗算値を得る乗算ステップと、前記加減算部が、得られた前記乗算値と入力された前記要素とを用いて、前記条件により定まる加減算を行い、前記元の平方の計算結果を得る加減算ステップと、前記出力部が、得られた前記計算結果を出力する出力ステップとを含むことを特徴とする。
【００１１】
また、本発明は、プログラムであって、上記の計算方法をコンピュータに実行させることを特徴とする。
【発明の効果】
【００１２】
本発明によれば、有限体上で平方計算を高速に行うことが可能になる。
【発明を実施するための最良の形態】
【００１３】
以下に添付図面を参照して、この発明にかかる計算装置、方法及プログラムの最良な実施の形態を詳細に説明する。
【００１４】
（１）構成
＜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の４種が必要に見える。しかし、a1*b2とa2*b1とは常に‘a1*b2 + a2*b1’の形で出現する。よって、基礎体上の乗算はa1*b1,a2*b2,(a1-a2)*(b1-b2)の３種で十分である。この性質は法多項式には依らない。例えば法多項式が‘f(x)=x^2+1’である場合でも同じことが成り立つ。2次拡大の際に基礎体として考えたr次拡大体についても、rが素因数分解可能であれば更に入れ子構造にして、それぞれ同様に考える。このようにして、Karatsuba法では対称性を用いて、基礎体上の必要な乗算を減らす。
【００１５】
図１は、‘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の組合せによって変えても良い。図１より、‘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)の元であるとする。第１の性質を用いて、Aがこのトーラスに入る条件は以下の式１により表される。
【００１７】
【数１】
2010066510.tif 000003
【００１８】
まず、‘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’と計算できる。よって、式１の条件は‘a1^2 - a1*a2 + a2^2 = 1’と書き換えられる。この条件により、各積a1^2, a1*a2, a2^2はそれぞれ、他の２つの積で表される。例えば、a1^2はa1*a2とa2^2とにより表される。図２は、代数的トーラスT2(Fq^3)上の平方において計算する基礎体上の乗算を示す図である。同図において、網掛け部分が、乗算の対象の項であることが示されている。即ち、同図により、‘n=6’のとき12回の乗算を行うことがわかる。‘n=2*r’でrが素数ならば‘r(r+1)’回の乗算となる。
【００１９】
＜本実施の形態にかかる平方計算方法＞
次に、本実施の形態にかかる平方計算について計算方法を説明する。上述した平方計算の従来の計算方法では、AがT2(Fq^r)の元であるという第１の性質しか用いていなかった。本実施の形態においては、AがT2r(Fq)の元であるという第２の性質も用いて、基礎体の乗算回数を更に減らす。第２の性質は、‘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)の元であるという性質を、第１の性質（(q^3+1) 乗すると‘1’になる）と第２の性質（(q^2-q+1) 乗すると‘1’になる）とに分けて考え、これらの性質を組み合わせることで平方計算における基礎体の乗算回数を減らす。
【００２１】
‘r=3’の場合、3次拡大体の基底を{1, y, y^2-2}とする。添加する元は以下の式２とする。尚、ζは‘1’の原始9乗根とする。
【００２２】
【数２】
2010066510.tif 000004
【００２３】
‘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次拡大体上の乗算ルールを例示する図である。法多項式や基底が変われば乗算ルールが変わるが、図中の各数値のセットが変わるのみでこのセットを持っていれば同様な計算が出来る。以降、6次拡大体上の演算は図のみで表す。
【００２４】
まず、平方を具体的な計算式に書き下す。2次拡大体の表現では、‘A^2=(a1^2 - a2^2, 2a1*a2 - a2^2)’である。これを図で例示すると図４となる。3次拡大体の乗算ルールを適用して、A^2を6次拡大体表現で表すと、図５に例示されるものとなる。
【００２５】
次に、上述の式１により表される第１の性質を、6次拡大体における具体的な条件式（第１の条件式という）に書き下す。尚、ここでは‘r=3’であるから、第１の条件式は以下の式３により表される。
【００２６】
【数３】
2010066510.tif 000005
【００２７】
この第１の条件式は、2次拡大体の表現では‘a1^2 - a1*a2 + a2^2 = 1’であり、これを図で例示すると図６となる。3次拡大体の乗算ルールを適用して、第１の条件式を6次拡大体表現で表すと、図７に例示されるものとなる。
【００２８】
次に、第２の性質を、6次拡大体における具体的な条件式（第２の条件式という）に書き下す。尚、ここでは‘r=3’であるから、第２の条件式は以下の式４により表される。
【００２９】
【数４】
2010066510.tif 000006
【００３０】
ここで、考えている基底ではFrobenius写像（q乗）は、6次拡大体の元の入れ替えとなるため、以下の式が成立する。
【００３１】
【数５】
2010066510.tif 000007
【００３２】
A*Bにおける積は、３次元拡大体の表現で式６により表される。
【００３３】
【数６】
2010066510.tif 000008
【００３４】
この式６を図で表すと図８となる。同図においては、式６が3次拡大体表現で表されている。ここで以下の式７が成立する。
【００３５】
【数７】
2010066510.tif 000009
【００３６】
この式７の左辺を図で表すと図９となる。同図においては、式７が6次拡大体の表現で表されている。ここで説明の便宜上、同図に示される式７の左辺を(一,二,三,四,五,六)とする。右辺は式８により表される。尚、これらの漢数字一,二,三,四,五,六は便宜的に置き換えた表記であり、本来の数値と同値であることを表しているわけではない。
【００３７】
【数８】
2010066510.tif 000010
【００３８】
これから、平方における基礎体上の乗算回数を減らす。まず、従来の計算方法と同じように、第１の性質を用いた第１の条件式を用いて、基礎体上の乗算回数を減らす。
【００３９】
例えば、図４に示した平方における第１項から、図６に例示した第１の条件式を引くという減算を行う。図１０は、この場合の減算結果の式を示す図である。また、他の例として、平方における第２項に、図６に例示した第１の条件式を２回足すという加算を行う。図１１は、この場合の加算結果の式を示す図である。更に他の例として、平方における第１項に第１の条件式を足し、平方における第２項にも第１の条件式を足すという加算を行う。図１２は、この場合の加算結果の式を示す図である。これらの３つのパターンのいずれの加減算を行うかは任意又は所定の方法により決定する。
【００４０】
次に、第２の性質を用いた第２の条件式を用いて、基礎体上の乗算回数を更に減らす。例えば、図１０に示した式に、図３に示した3次拡大体上の乗算ルールを代入すると、6次拡大体の表現になる。この第１項から第６項に、4*四, 2(五-六), 2*五, 2*四, (五, 六), 五をそれぞれ足すという加算を行う。図１３は、この場合の加算結果の式を示す図ある。この場合、代数的トーラスT2(Fq^3)上の平方において計算する基礎体上の乗算については、図１４に示される網掛け部分の９つの項が乗算の対象となる。
【００４１】
また、図１１に示した式に、図３に示した3次拡大体上の乗算ルールを代入すると、6次拡大体の表現になる。この第１項から第６項に、2* 一, (二-三), 二, 4* 一,2 (二-三), 2*二をそれぞれ足すという加算を行う。図１５は、この場合の加算結果の式を示す図ある。この場合、代数的トーラスT2(Fq^3)上の平方において計算する基礎体上の乗算については、図１６に示される網掛け部分の９つの項が乗算の対象となる。
【００４２】
また、図１２に示した式に、図３に示した3次拡大体上の乗算ルールを代入すると、6次拡大体の表現になる。この第１項から第６項に、4(一-四), 2(二-五-三+六), 2(二-五), 2(一 -四), (二-五-三+六), (二-五)をそれぞれ足すという加算を行う。図１７は、この場合の加算結果の式を示す図ある。この場合、代数的トーラスT2(Fq^3)上の平方において計算する基礎体上の乗算については、図１８に示される網掛け部分の９つの項が乗算の対象となる。
【００４３】
図１４，１６，１８のいずれの場合についても、‘n=6’のとき9回の乗算を行うことがわかる。
【００４４】
＜計算装置の構成＞
次に、以上のような平方計算方法により平方計算を行う本実施の形態にかかる計算装置の構成について説明する。計算装置は、装置全体を制御するＣＰＵ（Central Processing Unit）等の制御装置と、各種データや各種プログラムを記憶するＲＯＭ（Read Only Memory）やＲＡＭ（Random Access Memory）等の記憶装置と、各種データや各種プログラムを記憶するＨＤＤ（Hard Disk Drive）やＣＤ（Compact Disk）ドライブ装置等の外部記憶装置と、外部装置の通信を制御する通信Ｉ／Ｆ（interface）と、これらを接続するバスとを備えており、通常のコンピュータを利用したハードウェア構成となっている。
【００４５】
以上のようなハードウェア構成において、計算装置の備えるＣＰＵが記憶装置や外部記憶装置に記憶された各種プログラムを実行することにより実現される各種機能について具体的に説明する。図１９は、本実施の形態にかかる計算装置１００の機能的構成を例示する図である。同図に示されるように、計算装置１００は、入力部１０１と、乗算部１０２と、加減算部１０３と、出力部１０４と、平方計算ルール作成部（図示せず）とを有する。これらの各部の実体は、ＣＰＵのプログラム実行時にＲＡＭなどの記憶装置上に生成されるものである。
【００４６】
入力部１０１には、6次拡大体の要素を表すベクトルが入力される。即ち、3次拡大体の要素を表すベクトルであって3個の要素を含む２つのベクトルに含まれる6個の要素を含むベクトルが入力される。具体的には、入力部１０１には、有限体の元、例えば２つのベクトル(a1,a2,a3)及び(a4,a5,a6)に含まれる６つの要素がベクトル表現された‘A = (a1, a2, a3, a4, a5, a6)’が入力される。平方計算ルール作成部は、上述の法多項式及び基底によって定められ且つ第１の条件式及び第２の条件式をKaratsuba法に適用した平方計算ルールを作成する。乗算部１０２は、平方計算ルールに従って、例えば、上述の図１４に例示した９つの項の乗算を行う。９つの項の乗算とは、例えば、図１４の例では、‘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’である。尚、乗算部１０２は、図１４の例ではなく、図１６，１８のいずれかに示した９つの項の乗算を行うようにしても良い。即ち、乗算部１０２は、平方計算ルールに従って、2つの3次拡大体の要素の一方について、Karatsuba法で用いる乗算及び２つの3次拡大体の要素同士のKaratsuba法で用いる乗算のうち少なくとも一方を行い、3次拡大体の要素を表すベクトルの第1要素であるa1と第1要素a1,第２要素a2及び第３要素a3のそれぞれの積又はベクトルの第1要素であるa4と第1要素a4,第２要素a5及び第３要素a6のそれぞれの積を計算して、乗算値を得る。加減算部１０３は、平方計算ルールに従って、乗算部１０２の乗算結果とベクトルの要素ai（1≦i≦6）とを用いて加減算を行うことで、平方の計算結果を表すベクトルに含まれる各要素を計算する。即ち、加減算部１０３は、入力部１０１に入力されたベクトルについて、乗算値に整数である係数を掛けたベクトルの２次の成分と、必要に応じて、1またはベクトルの成分に整数である係数を掛けた定数またはベクトルの1次の成分を加減算する。出力部１０４は、加減算部１０３が計算した結果を平方の計算結果として出力する。
【００４７】
（２）動作
＜平方計算ルール作成処理＞
次に、本実施の形態にかかる計算装置１００が行う処理の手順について説明する。まず、乗算部１０２及び加減算部１０３が従う平方計算ルールを作成する処理の手順について説明する。尚、平方計算ルールは、計算装置１００が後述する平方計算を行う度に作成されるようにしても良いし、平方計算の前に予め作成されて用意されているようにしても良い。図２０は、計算装置１００が平方計算ルールを作成する処理の概要を示す図である。まず、計算装置１００に、r次の法多項式またはr次拡大体を生成する際に添加する元を入力する。また、計算装置１００に、r次拡大体の基底を入力する。‘r=3’の例では、3次拡大体を生成する際に添加する元として上述した式２に例示した法多項式が入力される。基底として{1, y, y^2-2}が入力される。これらの入力が与えられると、計算装置１００は、対応するr次拡大体の乗算ルールを生成する。具体的には、計算装置１００は、以下のようにして乗算ルールを生成する。3次拡大体の異なる２つの元を表すベクトル‘A=(a1, a2, a3)’及び‘B=(b1, b2, b3)’を多項式表現で表し、すなわち‘A=a1+a2*y+a3*(y^2-2)’と‘B=b1+b2*y+b3*(y^2-2)’とする。計算装置１００は、これらの元を多項式として掛け合わせ、法多項式で剰余を計算して得た多項式をベクトル表現で表した乗算ルールｒ１‘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)’を生成する。そして、計算装置１００はこの乗算ルールＲ１を記憶する。例えば、計算装置１００はr×r×rのマトリクスの要素として乗算ルールＲ１を記憶する。具体的には、計算装置１００は、ベクトル表現の第k項の内容としてai*bjの係数をマトリクスMult1[k][i][j]に格納する。これを可視化したのが図３である。
【００４８】
同様にして、計算装置１００に、2次の法多項式または2次拡大を生成する際に添加する元を入力する。また、計算装置１００に、2次拡大の基底を入力する。上述の例では、2次の法多項式として‘f(x)=x^2+x+1’が入力される。基底として{1, x}が入力される。これらの入力が与えられると、計算装置１００は、対応する2次拡大体の平方計算ルールを生成する。具体的には、計算装置１００は、2次拡大体の元を表すベクトル‘A = (a1, a2)’ を多項式表現で表し、多項式として掛け合わせ、法多項式で剰余を計算して得た多項式をベクトル表現で表した平方計算ルールＲ２‘A^2=(a1^2-a2^2, 2a1*a2-a2^2)’を生成する。そして、計算装置１００は、この平方計算ルールＲ２を記憶する。例えば、計算装置１００は、2×2×2のマトリクスの要素として平方計算ルールＲ２を記憶する。具体的には、計算装置１００は、ベクトル表現の第k項の内容としてai*bjの係数をマトリクスSquare2[k][i][j]に格納する。これを可視化したのが図４である。
【００４９】
次いで、計算装置１００は、r次拡大体の乗算ルールＲ１と2次拡大の平方計算ルールＲ２とから、対応する2r次拡大体の平方計算ルールＲ３を生成する。そして、計算装置１００は、この平方計算ルールＲ３を記憶する。例えば、計算装置１００は、2*r×2*r×2*rのマトリクスの要素として平方計算ルールＲ３を記憶する。具体的には、計算装置１００は、平方計算ルールＲ３に対応するマトリクス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で割った余りを表す。これを可視化したのが図５である。この平方計算ルールＲ３はKaratsuba法に対応している。ここで、式３に示した第１の条件式の右辺を移項した式９を第１の条件式として適用する。
【００５２】
【数９】
2010066510.tif 000011
【００５３】
第１の条件式の具体的な方程式は、2次の法多項式または2次拡大を生成する際に添加する元と2次拡大の基底とから生成される。第１の条件式の2次の成分は以下の項１０により表される。これを表すマトリクスを図示したのが図６である。第１の条件式の1次の成分‘-1’はベクトル表現で(-1,0)となる。
【００５４】
【数１０】
2010066510.tif 000012
【００５５】
これを計算装置１００は記憶しておく。そして計算装置１００は平方計算ルールＲ３に第１の条件式を適用する。つまり、計算装置１００は、図６に示される第１の条件式の第１項または第２項を定数倍して、図５に示される平方計算ルールＲ３の第１項または第２項に足し合わせる。このとき、‘0’でないマトリクスの要素の数が減れば効率的な新しい平方計算ルールが得られたことになる。具体的には、計算装置１００は‘k=1,2’に対してある(i,j)が少なくとも1つ‘0’でなければ、1回の乗算を含む‘tij’を計算する。このような乗算の数が減れば効率的な新しい平方計算ルールが得られたことになる。探索すると、例えば次の３通りの平方計算ルールが生成される。尚、図２０においてはこれらの図示を省略している。１つは、図５に示される平方計算ルールＲ３における第１項から図６に示される第１の条件式の第１項を引いた平方計算ルールＲ４である。平方計算ルールＲ４は第１の条件式の2次の成分が図１０で表されるものである。1次の成分は(1,0)である。もう１つは、平方計算ルールＲ３における第２項から第１の条件式の第１項を2倍して足した平方計算ルールＲ５である。平方計算ルールＲ５は、2次の成分が図１１で表されるものである。1次の成分は(0,-2)である。更に１つは、平方計算ルールＲ３における第１項と第２項にそれぞれ第１の条件式の第１項を足した平方計算ルールＲ６である。平方計算ルールＲ６は２次の成分が図１２で表されるものである。１次の成分は(-1,-1)である。これらの平方計算ルールＲ４〜Ｒ６によれば乗算の数が18回から12回に減る。
【００５６】
本実施の形態においては、以上のように第１の条件式が適用された平方計算ルールに対して、第２の条件式を適用し更に効率的な平方計算ルールを得る。第２の条件式の具体的な方程式は、2次の法多項式または2次拡大を生成する際に添加する元とr次の法多項式またはr次拡大を生成する際に添加する元とr次拡大の基底とから生成される。ここで、式７に示した第２の条件式の右辺を移項した式１１を第２の条件式として適用する。
【００５７】
【数１１】
2010066510.tif 000013
【００５８】
第２の条件式の2次の成分は以下の項１２により表される。これを表すマトリクスを図示したのが図９である。尚、第２の条件式の２次の成分の第１〜６項を上述したように(i,二,三,四,五,六)とする。
【００５９】
【数１２】
2010066510.tif 000014
【００６０】
第２の条件式の1次の成分はベクトル表現で式１３により表される。
【００６１】
【数１３】
2010066510.tif 000015
【００６２】
探索すると、例えば次の３通りの平方計算ルールが生成される。尚、図２０においては、そのうちの平方計算ルールＲ８のみを示している。１つは、図１０に示される平方計算ルールＲ４の第１〜６項に、4*四, 2(五-六), 2*五, 2*四, (五-六), 五をそれぞれ足した平方計算ルールＲ７である。平方計算ルールＲ７は２次の成分が図１３で表されるものである。１次の成分はベクトル表現で式１４により表される。
【００６３】
【数１４】
2010066510.tif 000016
【００６４】
また１つは、図１１に示される平方計算ルールＲ５の第１〜６項に、2*一, (二-三), 二, 4*一,2 (二-三), 2*二をそれぞれ足した平方計算ルールＲ８である。平方計算ルールＲ８は２次の成分が図１５で表されるものである。１次の成分はベクトル表現で式１５により表される。
【００６５】
【数１５】
2010066510.tif 000017
【００６６】
もう１つは、図１２に示される平方計算ルールＲ６の第１〜６項に、4(一-四), 2(二-五-三+六), 2(二-五), 2(一-四), (二-五-三+六), (二-五)をそれぞれ足した平方計算ルールＲ９である。平方計算ルールＲ９は２次の成分が図１７で表されるものである。１次の成分は以下のベクトル表現で式１６により表される。これらの平方計算ルールＲ７〜Ｒ９によれば、図１４，１６，１８に示したように、乗算の数が12回から9回に減る。
【００６７】
【数１６】
2010066510.tif 000018
【００６８】
＜平方計算処理＞
次に、本実施の形態にかかる計算装置１００の行う平方計算処理の手順について図２１を用いて説明する。まず、2次の法多項式または2次拡大を生成する際に添加する元と、2次拡大の基底と、r次の法多項式またはr次拡大を生成する際に添加する元と、r次拡大の基底とを固定する。これに対応する平方計算ルールを計算装置１００は読み込み、当該平方計算ルールに従い乗算と加減算を行う。‘r=3’の例では、3次拡大体を生成する際に添加する元として上述の式２に示されるものを用い、基底として{1, y, y^2-2}を用いる。2次の法多項式として‘f(x)=x^2+x+1’を用い、基底として{1, x}を固定する。ここでは上述した平方計算ルールＲ８を用いるものとする。平方計算ルールＲ８では、例えば、２次の成分を2*r×2*r×2*rのマトリクスSquare8[k][i][j]（図１５参照）として保持し、１次の成分を式１５に示されるベクトル（Vとする）として保持している。入力として2r個の要素を含むベクトルが計算装置１００に入力される。ステップＳ１では、例えば‘A=(a1,a2,a3,a4,a5,a6)’が計算装置１００に入力される。
【００６９】
次いで、ステップＳ２では、計算装置１００は、平方計算ルールＲ８を参照して乗算を行う。乗算では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)’を計算する。ここでは、乗算として上述の図１６に示した９つの項の乗算を行う。以下に各項の乗算を示す。尚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;
【００７０】
また、ステップＳ３では、計算装置１００は、平方計算ルールＲ８を参照して加減算を行う。例えば、計算装置１００は、‘bk=ΣSquare8[k][i][j]*tij+V[k]’と計算する。ここでΣはiとjとに関して和を計算するものである。ただし、平方計算ルールＲ８には出てこないが、平方計算ルールＲ７,Ｒ９に登場する‘(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’を代入する。ここでは、計算装置１００は以下の加減算を行い、平方の計算結果を表すベクトル(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]:
【００７１】
その後、ステップＳ４では、計算装置１００は、ステップＳ３で得られた‘(b1,b2,b3,b4,b5,b6)=B’を出力する。
【００７２】
尚、ステップＳ２で平方計算ルールＲ８ではなく平方計算ルールＲ７を適用する場合には、計算装置１００は上述の図１４に示した９つの項の乗算を行う。
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]:
【００７６】
以上のような構成によれば、n次拡大体、即ち、r次拡大体の2次拡大の部分群である代数的トーラスについて、(q^l+ q^l’) 乗の計算を高速化することができる。従って、トーラス圧縮公開鍵暗号において6次拡大体上の代数的トーラス上の平方計算を行う際、圧縮伸長に通常用いている基底（2次拡大の多項式基底と3次拡大の基底）を偽多項式基底へ変換する必要がなく、平方計算を高速に行うことができる（例えば図２２参照）。このため、トーラス圧縮公開鍵暗号やペアリング計算における計算時間を短縮することができる。ペアリングにおいて代数的トーラス上で平方計算を行う場合も同様である。
【００７７】
[第２の実施の形態]
次に、計算装置、方法及びプログラムの第２の実施の形態について説明する。なお、上述の第１の実施の形態と共通する部分については、同一の符号を使用して説明したり、説明を省略したりする。
【００７８】
上述の第１の実施の形態においては、‘r=3’の例では、3次拡大体を生成する際に添加する元として上述の式２に示されるものを用い、基底として{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}を固定する。また、乗算部１０２は、平方計算ルールに従って、２つの3次拡大体の要素の一方について、Karatsuba法で用いる乗算と、２つの3次拡大体の要素の同じ項の係数同士をそれぞれ掛ける乗算とを行い、乗算値を得る。加減算部１０３は、入力部１０１に入力されたベクトルについて、乗算部１０２により得られた乗算値に整数またはwまたはδから計算される係数を掛けたベクトルの2次の成分と、必要に応じて、1またはベクトルの成分に整数またはwまたはδから計算される係数を掛けた定数またはベクトル)の1次の成分とを加減算する。
【００７９】
＜平方計算ルール作成処理＞
まず、本実施の形態にかかる計算装置１００が平方計算ルールを作成する処理の手順について説明する。3次の法多項式及び基底が入力されると、対応するr次拡大体の乗算ルールを計算装置１００は生成する。具体的には計算装置１００は、3次拡大体の異なる２つの元を表すベクトルを‘ベクトル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)’を生成する。この乗算ルールＲ１０を計算装置１００は記憶する。例えば、計算装置１００はr×r×rのマトリクスの要素に記憶する。これを可視化したのが図２３である。
【００８０】
同様にして、2次の法多項式及び基底が入力されると、対応する2次拡大体の平方計算ルールを計算装置１００は生成する。具体的には、計算装置１００は、2次拡大体の元を表すベクトルを‘ベクトルA = (a1, a2) とすると、’A^2=(a1^2+δ*a2^2, 2a1*a2)‘を生成する。この平方計算ルールＲ１１を計算装置１００は記憶する。例えば、計算装置１００は2×2×2のマトリクスの要素に記憶する。これを可視化したのが図２４である。
【００８１】
次いで、計算装置１００はr次拡大体の乗算ルールＲ１０と2次拡大の平方計算ルールＲ１１とから、対応する2r次拡大体の平方計算ルールＲ１２を生成する。この平方計算ルールＲ１２を計算装置１００は記憶する。例えば、計算装置１００は2*r×2*r×2*rのマトリクスの要素に記憶する。これを可視化したのが図２５である。
【００８２】
ここで上述の第１の実施の形態と同様に、式９に示される第１の条件式として適用する。第１の条件式の具体的な方程式は、2次の法多項式または2次拡大を生成する際に添加する元と2次拡大の基底とから生成される。第１の条件式の2次の成分は以下の項１０により表される。これを表すマトリクスを図示したのが図２６である。第１の条件式の1次の成分‘-1’はベクトル表現で(-1,0)となる。これを計算装置１００は記憶しておく。そして計算装置１００は平方計算ルールＲ１１に第１の条件式を適用する。探索すると、例えば次の2通りのルールが生成される。１つは、図２４に示した平方計算ルールＲ１１における第１項から図２６に示した第１の条件式の第１項を引いた平方計算ルール１３である。平方計算ルールＲ１３は第１の条件式の2次の成分が図２７で表されるものである。1次の成分は(1,0)である。もう１つは、平方計算ルールＲ１１における第１項に第１の条件式の第１項を足した平方計算ルールＲ１４である。平方計算ルールＲ１３は第１の条件式の2次の成分が図２８で表されるものである。1次の成分は(-1,0)である。これらの平方計算ルールＲ１３〜Ｒ１４によれば図２７〜２８に示されるように乗算の数が18回から12回に減る。
【００８３】
本実施の形態においては、以上のように第１の条件式が適用された平方計算ルールに対して、第２の条件式を適用し更に効率的な平方計算ルールを得る。第２の条件式の具体的な方程式は、2次の法多項式または2次拡大を生成する際に添加する元とr次の法多項式またはr次拡大を生成する際に添加する元とr次拡大の基底とから生成される。ここでは上述の第１の実施の形態と同様に、式７に示した第２の条件式の右辺を移項した式１１を第２の条件式として適用する。第２の条件式の１次の成分はベクトル表現で以下の式１７により表される。
【００８４】
【数１７】
2010066510.tif 000019
【００８５】
ここで、以下の式１８が成立するとすると、第２の条件式の第１〜３項は図２９のように表される。第２の条件式の第４〜６項は図３０のように表される。探索すると、例えば次の２通りのルールが生成される。１つは、平方計算ルールＲ１３の第４項に第２の条件式の第４項の２倍を足し、平方計算ルールＲ１３の第５項に第２の条件式の第５項の２倍を足し、平方計算ルールＲ１３の第６項に第２の条件式の第６項の２倍を引いた平方計算ルールＲ１５である。これは図３１で表される。もう１つは、平方計算ルールＲ１３の場合と同様に、平方計算ルールＲ１４の第４項に第２の条件式の第４項の２倍を足し、平方計算ルールＲ１４の第５項に第２の条件式の第５項の２倍を足し、平方計算ルールＲ１４の第６項に第２の条件式の第６項の２倍を引いた平方計算ルールＲ１６である。これは図３２で表される。図３１の平方計算ルールＲ１５を用いて乗算を行う場合、図３３に示される網掛け部分の９つの項が乗算の対象となる。図３２の平方計算ルールＲ１６を用いて乗算を行う場合、図３４に示される網掛け部分の９つの項が乗算の対象となる。即ち、これらの平方計算ルールＲ１５〜Ｒ１６によれば、乗算の数が12回から9回に減る。
【００８６】
【数１８】
2010066510.tif 000020
【００８７】
＜平方計算処理＞
次に、本実施の形態にかかる計算装置１００の行う平方計算処理の手順について図３５を用いて説明する。ここでは、‘r=3’の例では、次の法多項式として‘f3(y)=y^3-w’を用い、基底として{1, y, y^2}を用いる。2次の法多項式として‘f2(x)=x^2-δ’を用い、基底として{1, x}を固定する。これに対応する平方計算ルールとして上述した平方計算ルールＲ１５を用いるものとする。ここでは平方計算ルールＲ１５では、例えば、２次の成分を2*r×2*r×2*rのマトリクスSquare15[k][i][j]（図３１参照）として保持し、１次の成分を式１９に示されるベクトル（Vとする）として保持している。このような平方計算ルールＲ１３を計算装置１００は読み込む。そして、ステップＳ１では、例えば‘A=(a1,a2,a3,a4,a5,a6)’が計算装置１００に入力される。
【００８８】
【数１９】
2010066510.tif 000021
【００８９】
次いで、ステップＳ１２では、計算装置１００は、平方計算ルールＲ１５を参照して乗算を行う。計算装置１００は、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];
【００９０】
また、ステップＳ１３では、計算装置１００は、平方計算ルールＲ１５を参照して加減算を行う。例えば、計算装置１００は、‘bk=ΣSquare15[k][i][j]*tij+V[k]’と計算する。ここでΣはiとjとに関して和を計算する。ここでは、計算装置１００は以下の加減算を行い、平方の計算結果を表すベクトル(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;
【００９１】
その後、ステップＳ４では、計算装置１００は、ステップＳ１３で得られた‘(b1,b2,b3,b4,b5,b6)=B’を出力する。
【００９２】
尚、ステップＳ１２で平方計算ルールＲ１５ではなく平方計算ルールＲ１６を適用する場合には、計算装置１００は例えば以下の乗算を行う。
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;
【００９４】
以上のような3次の法多項式及び基底と、2次の法多項式及び基底を用いた場合であっても、トーラス圧縮公開鍵暗号において6次拡大体上の代数的トーラス上の平方計算を行う際、圧縮伸長に通常用いている基底（2次拡大の多項式基底と3次拡大の基底）を偽多項式基底へ変換する必要がなく、平方計算を高速に行うことができる。このため、トーラス圧縮公開鍵暗号やペアリング計算における計算時間を短縮することができる。ペアリングにおいて代数的トーラス上で平方計算を行う場合も同様である。
【００９５】
[変形例]
なお、本発明は前記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、前記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除しても良い。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。また、以下に例示するような種々の変形が可能である。
【００９６】
＜変形例１＞
上述した各実施の形態において、計算装置１００で実行される各種プログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成しても良い。また、当該各種プログラムを、インストール可能な形式又は実行可能な形式のファイルでＣＤ−ＲＯＭ、フレキシブルディスク（ＦＤ）、ＣＤ−Ｒ、ＤＶＤ（Digital Versatile Disk）等のコンピュータで読み取り可能な記録媒体に記録して提供するように構成しても良い。この場合には、プログラムは、計算装置１００において上記記録媒体から読み出して実行することにより主記憶装置（例えばＲＡＭ）上にロードされ、上記機能的構成において説明した各部が主記憶装置上に生成される。
【００９７】
＜変形例２＞
上述した各実施の形態において、計算装置１００は平方計算ルール作成部を備え、計算装置１００が平方計算ルールを生成するとした。しかし、計算装置１００は平方計算ルール作成部を備えず、平方計算ルールを他の情報処理装置が生成しこれを計算装置１００が取得して平方計算の際に用いるようにしても良い。
【００９８】
＜変形例３＞
上述した第１の実施の形態において、ステップＳ２の処理とステップＳ３の処理とを並行して行うようにしても良く、ステップＳ３で用いる各値であってステップＳ２の乗算の結果である乗算値が求められる順に随時ステップＳ２の加減算を行うようにすれば良い。第２の実施の形態におけるステップＳ１２の処理とステップＳ１３の処理とについても同様である。
【００９９】
＜変形例４＞
上述した各実施の形態において、計算装置１００が有限体として6次拡大体上で平方計算を行う場合について説明したが、有限体はこれに限らず上述の各実施の形態の構成を適用可能である。また、計算装置１００が行う計算は平方計算とし、即ち、2乗のべき乗計算を行う場合について説明した。しかし、計算装置１００は、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;
このような計算は、平方計算ルールＲ１６，Ｒ１５，Ｒ８における、２つの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];
計算装置１００は例えば以下の加減算を行う。
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];
計算装置１００は以下の加減算を行い、ベクトル(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;
計算装置１００は以下の加減算を行い、ベクトル(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;
計算装置１００は以下の加減算を行い、ベクトル(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’) 乗の計算を高速化することができる。
【図面の簡単な説明】
【０１０６】
【図１】第１の実施の形態において‘r=3’の場合に計算を行う基礎体上の乗算を示す図である。
【図２】代数的トーラスT2(Fq^3)上の平方において計算する基礎体上の乗算を示す図である。
【図３】3次拡大体上の乗算ルールを例示する図である。
【図４】平方の2次拡大体表現を例示する図である。
【図５】平方の6次拡大体表現を例示する図である。
【図６】第１の条件式の2次拡大体表現を例示する図である。
【図７】第１の条件式の6次拡大体表現を例示する図である。
【図８】式６の3次拡大体表現を例示する図である。
【図９】式７の6次拡大体の表現を例示する図である。
【図１０】第１の条件式の適用例を示す図である。
【図１１】第１の条件式の適用例を示す図である。
【図１２】第１の条件式の適用例を示す図である。
【図１３】第２の条件式の適用例を示す図である。
【図１４】代数的トーラスT6(Fq)上の平方において計算する基礎体上の乗算を示す図である。
【図１５】第２の条件式の適用例を示す図である。
【図１６】代数的トーラスT6(Fq)上の平方において計算する基礎体上の乗算を示す図である。
【図１７】第２の条件式の適用例を示す図である。
【図１８】代数的トーラスT6(Fq)上の平方において計算する基礎体上の乗算を示す図である。
【図１９】計算装置１００の機能的構成を例示する図である。
【図２０】計算装置１００が平方計算ルールを作成する処理の概要を示す図である。
【図２１】計算装置１００の行う平方計算処理の手順を示すフローチャートである。
【図２２】同実施形態にかかる平方計算方法が圧縮伸張にも適用されることを模式的に示す図である。
【図２３】第２の実施の形態にかかる3次拡大体上の乗算ルールを例示する図である。
【図２４】2次拡大体の平方計算ルールを例示する図である。
【図２５】6次拡大体の平方計算ルールを例示する図である。
【図２６】第１の条件式の2次拡大体の表現を例示する図である。
【図２７】第１の条件式の適用例を示す図である。
【図２８】第１の条件式の適用例を示す図である。
【図２９】第２の条件式の第１〜３項の6次拡大体表現を例示する図である。
【図３０】第２の条件式の第４〜６項の6次拡大体表現を例示する図である。
【図３１】第２の条件式の適用例を示す図である。
【図３２】第２の条件式の適用例を示す図である。
【図３３】代数的トーラスT6(Fq)上の平方において計算する基礎体上の乗算を示す図である。
【図３４】代数的トーラスT6(Fq)上の平方において計算する基礎体上の乗算を示す図である。
【図３５】計算装置１００の行う平方計算処理の手順を示すフローチャートである。
【符号の説明】
【０１０７】
１００  計算装置
１０１  入力部
１０２  乗算部
１０３  加減算部
１０４  出力部
【図１】
2010066510.tif 000022
【図２】
2010066510.tif 000023
【図３】
2010066510.tif 000024
【図４】
2010066510.tif 000025
【図５】
2010066510.tif 000026
【図６】
2010066510.tif 000027
【図７】
2010066510.tif 000028
【図８】
2010066510.tif 000029
【図９】
2010066510.tif 000030
【図１０】
2010066510.tif 000031
【図１１】
2010066510.tif 000032
【図１２】
2010066510.tif 000033
【図１３】
2010066510.tif 000034
【図１４】
2010066510.tif 000035
【図１５】
2010066510.tif 000036
【図１６】
2010066510.tif 000037
【図１７】
2010066510.tif 000038
【図１８】
2010066510.tif 000039
【図１９】
2010066510.tif 000040
【図２０】
2010066510.tif 000041
【図２１】
2010066510.tif 000042
【図２２】
2010066510.tif 000043
【図２３】
2010066510.tif 000044
【図２４】
2010066510.tif 000045
【図２５】
2010066510.tif 000046
【図２６】
2010066510.tif 000047
【図２７】
2010066510.tif 000048
【図２８】
2010066510.tif 000049
【図２９】
2010066510.tif 000050
【図３０】
2010066510.tif 000051
【図３１】
2010066510.tif 000052
【図３２】
2010066510.tif 000053
【図３３】
2010066510.tif 000054
【図３４】
2010066510.tif 000055
【図３５】
2010066510.tif 000056