JP5147085B2 - 演算方法及び演算装置 - Google Patents

演算方法及び演算装置 Download PDF

Info

Publication number
JP5147085B2
JP5147085B2 JP2009526507A JP2009526507A JP5147085B2 JP 5147085 B2 JP5147085 B2 JP 5147085B2 JP 2009526507 A JP2009526507 A JP 2009526507A JP 2009526507 A JP2009526507 A JP 2009526507A JP 5147085 B2 JP5147085 B2 JP 5147085B2
Authority
JP
Japan
Prior art keywords
order
multiplication
temporary data
coefficient
term
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
JP2009526507A
Other languages
English (en)
Other versions
JPWO2009020216A1 (ja
Inventor
保之 野上
英洋 加藤
良孝 森川
健太 根角
Original Assignee
国立大学法人 岡山大学
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 国立大学法人 岡山大学 filed Critical 国立大学法人 岡山大学
Priority to JP2009526507A priority Critical patent/JP5147085B2/ja
Publication of JPWO2009020216A1 publication Critical patent/JPWO2009020216A1/ja
Application granted granted Critical
Publication of JP5147085B2 publication Critical patent/JP5147085B2/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
    • 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
    • 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
    • G06F7/725Finite field arithmetic over elliptic curves
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • H04L9/3066Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy involving algebraic varieties, e.g. elliptic or hyper-elliptic curves
    • H04L9/3073Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy involving algebraic varieties, e.g. elliptic or hyper-elliptic curves involving pairings, e.g. identity based encryption [IBE], bilinear mappings or bilinear pairings, e.g. Weil or Tate pairing

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Algebra (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Complex Calculations (AREA)

Description

本発明は、演算方法及び演算装置に関し、特にべき乗算又はスカラー倍算の演算方法又はその演算装置に関する。
従来、公開鍵暗号などの暗号化方法を用いた場合には、暗号化される平文のデータと、暗号化用の鍵との乗算を行って暗号データを生成している。また、暗号データの復号は、暗号データと復号用の鍵との乗算によって行っている。
この場合、平文のデータと暗号化用の鍵、及び暗号データと復号用の鍵は、それぞれ拡大体の元としており、拡大体の乗算を行っていることとなっている。
例えば、Elgamal暗号では、標数p、拡大次数mの拡大体F mを用い、特に、暗号データの第三者による解読に対する安全性を確保するために鍵長を2000ビットとしている。この場合、拡大体の非零元Aに対して、2000ビットの正整数n<pmを用いて、Anのようなべき乗の演算を行う必要がある。
なお、一般的には、拡大体F mを構成するために、拡大体F上のm次既約多項式f(x)を準備し、その零点をω∈F mとして、以下の基底を準備している。
{1,ω,ω2,・・・,ωm-1}
この基底は、特に多項式基底と呼ばれ、任意の元A∈F mは、次式で表されることとなる。
A=a0+a1ω+・・・+am-1ωm-1
すなわち、元Aのベクトル表現は、vA=(a0,a1,...,am-1)となる。
また、以下に示すωのFに関する共役元の集合が基底を成すときには、正規基底と呼ばれる。
Figure 0005147085
この正規基底は、以下に示すようにフロベニウス写像に適した基底であり、F mの任意の元Aを以下のように考えると、
Figure 0005147085
フロベニウス写像が以下のように与えられる。
Figure 0005147085
すなわち、正規基底を用いればフロベニウス写像には数学的な計算が必要ないことがわかる。以下において、本発明では、i回のフロベニウス写像を以下のように表記することとする。
Figure 0005147085
べき乗の演算は、暗号化及び復号の演算処理に要する時間に大きく影響しており、べき乗の演算の高速化が暗号化及び復号の演算処理の高速化に繋がるため、べき乗の演算を高速に行う様々な方法が提案されている。
その一つとして、バイナリ法が知られている(例えば、非特許文献1参照。)。例えば、楕円曲線関数におけるスカラー倍算の「55P」(Pは楕円曲線上の点)を演算する場合、「55」が2進数において「110111」であることから、
(110111)2P=2(2(22(2P+P)+P)+P)+P
として演算を行うことにより演算回数を削減して高速化しているものである。ここで「(
)2」は2進数表記であることを示している。このバイナリ法では、平均的にFlr(log2(n))回の自乗算と、Flr(log2(n))/2回の乗算が必要になっている。
また、Window法と呼ばれる方法が提案されている(例えば、非特許文献2参照。)。Window法では、例えば窓サイズを3とした場合、元Aに対してあらかじめA2,A3,A4,A5,A6,A7の各コンポーネントを準備しておき、A318を演算する場合には、「318」が2進数表記で「100111110」であることを利用して、
Figure 0005147085
とし、(100)2=4,(111)2=7,(110)2=6であるので、A4,A6,A7のコンポーネントを用いて演算を行うものである。ここで、各コンポーネントを準備するための計算を除けば、Window法では、Flr(log2n)-w回の自乗算と、Flr(log2n/w)の乗算が必要になっている。
H.Cohen and G.Frey et al,「Handbook of elliptic and hyperellipticcurve cryptography」,published by Chapman & Hall/CRC, 2006, p.146. H.Cohen and G.Frey et al,「Handbook of elliptic and hyperelliptic curve cryptography」,published by Chapman & Hall/CRC, 2006, p.149. 吉田知輝、加藤英洋、根角健太、野上保之、森川良孝,"ペアリング暗号に効果的な拡大体上べき乗算に関する一考察",Tech. Rep. of IEICE, ISEC vol. 108, no. 162, pp. 101-108, 2008.
しかしながら、昨今、暗号データの解読を防止するために暗号化鍵及び復号鍵の鍵長がさらに長くなっており、バイナリ法やWindow法ではべき乗算又はスカラー倍算に要する時間の更なる短縮化が困難なことから、暗号化及び復号に要する時間が長くなりすぎているという問題があった。
本発明者らは、このような現状に鑑み、べき乗算やスカラー倍算などの演算をより高速で実行可能とすることにより暗号化及び復号の処理時間の短縮化を図るべく研究を行って、本発明を成すに至ったものである。
本発明のべき乗算の演算方法では、標数p、拡大次数mの拡大体F mの元Aのべき乗算Aを、指数部nのp進数表現である
Figure 0005147085
を用いて、フロベニウス写像により
Figure 0005147085
と表されるべき乗算を、演算回路からなる演算部及び各種データを記憶するレジスタで構成した記憶部を備える電子計算機により演算する演算方法において、前記演算部が、前記指数部nのpの所定次数の項と、この項の次数よりも一次だけ高次の項または一次以上高次の複数の項とを1組として、前記指数部nを複数の組に分けるとともに、各組内における各項を最低次数でくくってこの最低次数の係数を特定し、この係数をp進数表示として前記係数による元Aのべき乗算が行われた場合の各組での同一の桁に値が存在しているか否かを示す指標を有するテンポラリデータを桁ごとに設定してその記憶領域を前記記憶部に確保するステップと、前記テンポラリデータの値を、このテンポラリデータで値が存在しているとされた桁における乗数を用いて特定し、前記記憶部に記憶するステップと、所定の前記テンポラリデータどうしを乗算した結果を、各組の前記係数でのべき乗算の結果として前記記憶部に記憶するステップを有することとした。これにより、べき乗算の演算を高速に行うことができる。
また、本発明のべき乗算の演算方法では、前記演算部が、所定の前記テンポラリデータどうしを乗算して、各組の前記係数でのべき乗算の結果を演算する際に、共通して乗算するテンポラリデータの組み合わせを特定するステップと、前記テンポラリデータの組み合わせを用いて、各組の前記係数でのべき乗算の結果を演算するステップとを有することとした。これにより、演算回数を削減し、べき乗算の高速化を図ることができる。
また、本発明のスカラー倍算の演算方法では、標数p、有限体Fの次数mの拡大体をF 、有理点の総数を#E(F )、無限遠点をO、有限体F上の楕円曲線が次式で表され、
Figure 0005147085
任意の有理点Aは次式を満たし、
Figure 0005147085
スカラー部[n]をψ進数展開した
Figure 0005147085
と表されるスカラー倍算を、演算回路からなる演算部及び各種データを記憶するレジスタで構成した記憶部を備える電子計算機により演算する演算方法において、前記演算部が、前記指数部iの写像ψの所定次数の項と、この項の次数よりも1次だけ高次の項または1次以上の高次の項の複数の項とを1組として、前記写像Fを複数の組に分けるとともに、各組内における各項を最低次数でくくってこの最低次数の係数を特定するステップと、この係数をψ進数表示として、前記係数による元Aの加算が行われる場合の各組でのψ進数表示の同一の桁に値が存在しているか否か示す指標を有するテンポラリデータを桁ごとに設定してその値を前記記憶部に記憶するステップと、前記各係数を構成するψ進数の各[n]Aを、このテンポラリデータどうしを加算した結果により特定して前記記憶部に記憶するステップと、を有することとした。これにより、加算回数を減少させ、スカラー倍算の演算速度の高速化を図ることができる。
また、本発明のべき乗算の演算装置では、標数p、拡大次数mの拡大体Fp mの元Aのべき乗算Anを、指数部nのp進数表現である
Figure 0005147085
を用いて、フロベニウス写像により
Figure 0005147085
と表されるべき乗算の演算装置において、前記指数部nのpの所定次数の項と、この項の次数よりも一次だけ高次の項または一次以上高次の複数の項とを1組として、前記指数部nを複数の組に分けるとともに、各組内における各項を最低次数でくくってこの最低次数の係数を特定し、この係数をp進数表示として前記係数による元Aのべき乗算が行われた場合の各組での同一の桁に値が存在しているか否かを示す指標を有するテンポラリデータを桁ごとに設定して、このテンポラリデータで値が存在しているとされた桁における乗数を用いて特定したテンポラリデータの値を記憶する記憶部と、所定の前記テンポラリデータどうしを乗算した結果を、各組の前記係数でのべき乗算の結果として記憶する記憶部とを備えることとした。このように構成することによりべき乗算の演算を高速に行うことができる。
また、本発明のべき乗算の演算装置では、所定の前記テンポラリデータどうしを乗算して、各組の前記係数でのべき乗算の結果を演算する際に、共通して乗算するテンポラリデータの組み合わせを特定し、このテンポラリデータの組み合わせを用いて、各組の前記係数でのべき乗算の結果を演算して記憶する記憶部を備えることとした。
また、本発明のスカラー倍算の演算装置では、標数p、有限体Fの次数mの拡大体をF 、有理点の総数を#E(F )、無限遠点をO、有限体F上の楕円曲線が次式で表され、
Figure 0005147085
任意の有理点Aは次式を満たし、
Figure 0005147085
スカラー部[n]をψ進数展開した
Figure 0005147085
と表されるスカラー倍算を行う演算回路からなる演算部及び各種データを記憶するレジスタで構成した記憶部を備える電子計算機により演算する演算装置において、前記指数部iの写像ψの所定次数の項と、この項の次数よりも1次だけ高次の項または1次以上の高次の項の複数の項とを1組として、前記写像Fを複数の組に分けるとともに、各組内における各項を最低次数でくくってこの最低次数の係数を特定し、この係数をψ進数表示として、前記係数による元Aの加算が行われる場合の各組でのψ進数表示の同一の桁に値が存在しているか否か示す指標を有するテンポラリデータを桁ごとに設定して記憶する前記記憶部と、前記各係数を構成するψ進数の各[n]Aを、このテンポラリデータどうしを加算した結果により特定して記憶する前記記憶部と、を備えたこととした。このように構成することによりスカラー倍算の演算を高速に行うことができる。
本発明では、所定次数の項と、この項の次数よりも一次だけ高次の項または一次以上高次の複数の項とを1組として複数の組に分けるとともに、各組内における各項を最低次数でくくってこの最低次数の係数を特定し、この係数をp進数表示として係数による元Aの演算が行われた場合の各組での同一の桁に値が存在しているか否かを示す指標を有するテンポラリデータを桁ごとに設定して、演算を高速に行うことができる。
テンポラリデータの説明図である。 べき乗算の演算プログラムのフローチャートである。 べき乗算の演算装置のブロック図である。 他のべき乗算の演算プログラム(段階0の処理)のフローチャートである。 他のべき乗算の演算プログラム(段階1から段階(H−1)の処理)のフローチャートである。 他のべき乗算の演算プログラム(段階Hの処理)のフローチャートである。 計算イメージを表すイメージ図である。 スカラー倍算の演算プログラムのフローチャートである。
符号の説明
10 半導体基板
20 演算部
30 記憶部
40 入出力部
50 データバス
以下の説明において、Floor記号
Figure 0005147085
やCeiling記号
Figure 0005147085
は、説明の便宜上、
Figure 0005147085
として表記することにする。
<べき乗算の実施形態1>
本発明のべき乗算の演算方法及びべき乗算の演算装置では、同じ乗算が必要となる部分を効率よく抽出してテンポラリデータとし、このテンポラリデータの値を別途の乗算によって求めることにより、必要となる乗算回数を大きく削減するものである。
特に、標数p、拡大次数mの拡大体F mの元Aのべき乗算Anを指数部nのp進数表現である
Figure 0005147085
を用いて、フロベニウス写像により
Figure 0005147085
と表されるべき乗算を行うものである。
説明の便宜上、s=Flr(logpn)=5、Flr(log2(p-1))=4とする。また、Aのni乗をA[i]で表すこととする。
この場合、指数部nを展開して表記すると以下のようになる。
n=n5p5+n4p4+n3p3+n2p2+n1p+n0
この指数部nに対してpの偶数次ごとにくくることにより、指数部nを以下のように表記することができる。
n=(n5p+n4)p4+(n3p+n2)p2+(n1p+n0)
すなわち、ここでは、pの4次と4次より一次だけ高次の5次とを1組とし、pの2次と2次より一次だけ高次の3次とを1組とし、残りのpの0次と0次より一次だけ高次の1次とを1組とした3組に分割している。説明の便宜上、pの0次と1次とからなる組を第0組、pの2次と3次とからなる組を第1組、pの4次と5次とからなる組を第2組と呼ぶこととする。
ここで、
r0=n1p+n0
r1=n3p+n2
r2=n5p+n4
とすると、指数部nを以下のように表記することができる。
n=r2p4+r1p2+r0
説明の便宜上、r0を第0係数、r1を第1係数、r2を第2係数と呼ぶこととする。
したがって、元Aのべき乗算Anは第0係数r0、第1係数r1、第2係数r2を用いて以下のように表記できる。
Figure 0005147085
一方、説明の便宜上、pの各次の係数n0,n1,n2,n3,n4,n5を2進数表現で以下の値とする。
n0=(1110)2
n1=(1001)2
n2=(1110)2
n3=(1101)2
n4=(0101)2
n5=(1111)2
この場合、以下のとおりとなる。
A[0]=A8A4A2
A[1]=A8A1
A[2]=A8A4A2
A[3]=A8A4A1
A[4]=A4A1
A[5]=A8A4A2A1
すなわち、以下のように表記できることとなる。
Figure 0005147085
本発明では、これを演算するのではなく、図1に示すように、新たなテンポラリデータを導入するものである。すなわち、それぞれ2進数表示とした第0係数r0、第1係数r1、第2係数r2で元Aのべき乗算が行われた場合の、各組での同一の桁に値が存在しているか否かを示す指標を有するテンポラリデータCefgを桁ごとに設定する。
テンポラリデータを示すCefgにおける下付き文字e,f,gのうち、eは第2組の指標、fは第1組の指標、gは第0組の指標である。
そして、図1の場合、Ψ1(A8)とΨ1(A1)とA4の桁では第0組と第1組と第2組にそれぞれ値が存在するためにC111とし、Ψ1(A4)の桁では第0組に値がなく、第1組と第2組にそれぞれ値が存在するためにC110とし、Ψ1(A2)とA1の桁では第0組と第1組に値がなく、第2組に値が存在するためにC100とし、A8とA2の桁では第0組と第1組にそれぞれ値が存在して、第2組に値が存在しないためにC011としている。
理解しやすいようにまとめると、以下のとおりとなる。
C111←Ψ1(A8),Ψ1(A1),A4の桁
C110←Ψ1(A4)の桁
C100←Ψ1(A2),A1の桁
C011←A8,A2の桁
そして、各テンポラリデータの値を以下のとおりとする。
C111=Ψ1(A8A1)A4
C110=Ψ1(A4)
C100=Ψ1(A2)A1
C011=A8A2
また、説明に用いたpの各次の係数n0,n1,n2,n3,n4,n5の関係上、たまたま値が存在しないテンポラリデータであるその他のテンポラリデータは全て「1」とする。すなわち、以下のとおりである。
C101=C010=C001=1
このようなテンポラリデータを導入すると、元Aの第0係数r0によるべき乗、元Aの第1係数r1によるべき乗、元Aの第2係数r2によるべき乗を、これらのテンポラリデータを用いてそれぞれ演算することができる。
すなわち、元Aの第0係数r0によるべき乗は、テンポラリデータCefgにおける第0組の指標gが「0」でないテンポラリデータの積となっており、以下のとおりである。
Figure 0005147085
また、元Aの第1係数r1によるべき乗は、テンポラリデータCefgにおける第1組の指標fが「0」でないテンポラリデータの積となっており、以下のとおりである。
Figure 0005147085
また、元Aの第2係数r2によるべき乗は、テンポラリデータCefgにおける第2組の指標eが「0」でないテンポラリデータの積となっており、以下のとおりである。
Figure 0005147085
このように、フロベニウス写像における演算回数が異なる他の次数での桁をも対象としてテンポラリデータとしてコンポーネント化し、しかも、テンポラリデータの乗算結果を、各組における係数でのべき乗算の結果として[数41]によりべき乗算を演算できることによって、鍵長が大きくなった場合の乗算回数の削減効果をWindow法などと比較して大きくすることができる。そのうえ、フロベニウス写像による演算回数の分だけ乗算回数を削減できる。
図1に示すように、ここでは、テンポラリデータの設定を、べき乗算を3行8列の行列と見なすことにより行っているが、3行8列に限定するものではなく、適宜の行数と、適宜の列数の行列として、テンポラリデータを設定してよい。
すなわち、行数r及び列数cを考えて、指数部nを以下のように考えてもよい。
Figure 0005147085
この場合、以下の計算により元Aのべき乗算Anを計算できる。
Figure 0005147085
Figure 0005147085
Figure 0005147085
Figure 0005147085
Figure 0005147085
<べき乗算の実施形態2>
したがって、図2に示すフローチャートに基づくプログラムにより、パーソナルコンピュータなどの電子計算機で元Aのべき乗算Anを演算できる。なお、このプログラムは、一般的には、暗号化または復号における拡大体の乗算プログラム中のべき乗算のサブルーチンプログラムとして用いられることとなる。
まず、電子計算機は、指数部nが零である場合は(ステップS1:YES)、「1」を出力して終了し(ステップS2)、指数部nが零でない場合には(ステップS1:NO)、指数部nのp進数表現を設定する(ステップS3)。なお、p進数表現の設定において必要となる数値はデフォルトで設定しており、必要に応じて変更可能としている。
また、電子計算機は、べき乗算における初期条件の設定を行う(ステップS4)。すなわち、B[0]=Aとしてべき乗算される元を設定し、Flr(log2(p-1))=tとしてp進数表現におけるpのべき乗の各係数を2進数表現にした場合の桁数を設定している。
次いで、電子計算機は、1≦i≦tでB[i-1]・B[i-1]=B[i]として自乗算を演算し、0<i≦2rでC[i]=1とし、0<i≦rでR[i]=1としている。
次いで、電子計算機は、図1に示すように複数組に分けられたべき乗算を想定して、所定の桁におけるテンポラリデータCの設定を行う(ステップS5)。すなわち、M=0とした後、0≦i<rでnijの1桁目が「1」であるか判定し、「1」である場合に、MにM+2iを代入している。次いで、電子計算機は、nijのビットシフトを行っている。ここで、「nij&1」の「&」は、nijと「1」の論理積を取っていることを意味し、「nij》1」は、nijを1ビット分右にずらすビットシフトを意味しており、例えば、(1011)2》1は、(101)2である。
次いで、電子計算機は、設定したテンポラリデータCの値を、「C[M]←C[M]・B[k]」及び「C[i]←Ψ1(C[i])」として演算する。
次いで、電子計算機は、テンポラリデータCの値を用いて、各組に分けられたべき乗算の各組での乗算を、「R[i]←R[i]・C[j]」として行う(ステップS6)。
次いで、電子計算機は、R[r-1]=Dとして、r-2≧i≧0で「D←Ψc(D),D←D・R[i]」を演算することによりべき乗算Anの値としてDを得て(ステップS7)、このDを出力している(ステップS8)。
このようにべき乗算Anを演算することにより、乗算回数を削減して演算速度を向上させることができる。
さらに、べき乗算の演算は、演算処理回路として半導体基板上に形成して乗算処理用半導体デバイスとすることもできる。
すなわち、図3に示すように、半導体基板10上に、演算回路からなる演算部20を形成し、演算に必要となる各種データを記憶するレジスタで構成した記憶部30を形成し、入出力部40を介して入力された初期条件を記憶部30の所要のレジスタで記憶して演算を開始し、演算結果を入出力部40を介して出力させることもできる。図3中、50はデータバスである。
記憶部30には、テンポラリデータの値を記憶するレジスタや、所定のテンポラリデータどうしを乗算した結果を記憶するレジスタ等を設けており、これら以外にも適宜のデータを記憶するレジスタを設けている。
このように、乗算処理用半導体デバイスとすることにより演算速度の更なる高速化を図ることができる。また、乗算処理用半導体デバイスは、これ自体で1つの半導体デバイスとするのではなく、暗号化及び復号の乗算処理用の半導体デバイスなどの他の半導体デバイスの一部分に組み込んでもよい。
<べき乗算の実施形態3>
次に、本発明の実施形態による他のべき乗算の演算方法及びべき乗算の演算装置について説明する。この実施形態は、前記実施形態に比べて、さらに、必要となる乗算回数を削減するものである。具体的には、標数p、拡大次数mの拡大体F mの元Aのべき乗算Anを行うに際し、指数部nのp進数表現である前記[数39]を用いて、フロベニウス写像により、前記[数40]にて表されるべき乗算を行うものである。ここで、指数部nは、以下のように展開できるものとする。
n=n3p3+n2p2+n1p+n0
このとき、An0=Y0,An1=Y1,An2=Y2,An3=Y3とする。(注:An0はAの指数nによるべき乗、An1はAの指数nによるべき乗、An2はAの指数nによるべき乗、An3はAの指数nによるべき乗をそれぞれ意味する。)
いま、Y0,Y1,・・・,Y#Y-1という#Y個の元があり、それぞれは集合{X0,X1,・・・,X#X-1}から適当な数だけ与えられた元の全てを演算子・で結合したものとする。ここでは、集合{X0,X1,・・・,X#X-1}からY0,Y1,・・・,Y#Y-1の全てを高速に求める。
以下、一例として、集合{X0,X1,・・・,X14}に対して、次式(1a)〜(1d)に示すY0,Y1,Y2,Y3を求める方法について説明する。通常、Y0,Y1,Y2,Y3を求めるには、26回の乗算が必要となる。これに対し、この実施形態では、乗算回数を、後述するように18回に削減することができる。
Figure 0005147085
式(1c)(1d)では、Y2,Y3を求めるにあたって、X0という同じ元を結合している。同様に、Y0,Y1,Y2,Y3の全てを求めるにあたって、同じ元を結合する場合が存在する。そこで、テンポラリデータであるコンポーネントC0001,・・・,C1111を次式(2a)〜(2e)のように定義することにより、Y0,Y1,Y2,Y3は、式(3a)〜(3d)のように求めることができる。ただし、コンポーネントの添字は、下位より順に、Y0,Y1,Y2,Y3を求めるのに必要ならば1、必要でなければ0となっている。
Figure 0005147085
Figure 0005147085
式(3a)(3b)では、Y0,Y1を求めるにあたって、C0011・C0111・C1011・C1111という同じ結合が生じている。このC0011・C0111・C1011・C1111は、Y0,Y1を求めるにあたって、共通して乗算するコンポーネントの組み合わせとなる。他にも同様に、Y2,Y3を求めるにあたって、C1100・C1101・C1110・C1111という同じ結合が生じている。同様に、このC1100・C1101・C1110・C1111は、Y2,Y3を求めるにあたって、共通して乗算するコンポーネントの組み合わせとなる。そこで、コンポーネントの結合を表1に示すように行うことにより、Y0,Y1,Y2,Y3の全てを求めることができる。ただし、*は、0,1共にマッチする特殊文字とする。
Figure 0005147085
また、式(3a)〜式(3d)で1となっているコンポーネントC0010,C0110,C0111,C1001は結合する必要がない。したがって、実際のコンポーネントの結合は、表2に示すようになる。
Figure 0005147085
以上のように、Y0,Y1,Y2,Y3を求めることにより、乗算回数を26回から18回に削減することができる。つまり、本発明の実施形態による他のべき乗算の演算方法及びべき乗算の演算装置によれば、必要となる乗算回数をさらに削減することができる。
<べき乗算の実施形態4>
次に、一般式を用いて説明する。log2(#Y)が整数(#Y=2y,(y:整数))となる場合に、Y0,Y1,・・・,Y#Y-1は、集合{X0,X1,・・・,X#X-1}及び演算子・から、コンポーネントの結合を表3に示すように各段階に分けて行うことにより、組織的に求めることができる。だたし、H=log2(#X)とする。
Figure 0005147085
表3の段階1において、2#Y−1>#Xの場合は、2#Y−1個のコンポーネントを作成する必要はなく、#X個だけを作成すればよい。また、段階0では必要なコンポーネントだけを作成するため、段階1から段階Hまでのコンポーネントの結合に要する乗算回数を削減することができる。しかし、#Xに対して#Yが大き過ぎる場合、必要なコンポーネントの添字の傾向が分散するため、初期の段階ではほとんど結合が行われず、無駄な処理が増加してしまう。
この問題を解決するため、#Y=G・E (log2(G),log2(E):整数)として、式(4)のようにグループ分けする。このときのコンポーネントの結合を表4に示す。ただし、H=log2(E)とする。
Figure 0005147085
Figure 0005147085
<べき乗算の実施形態5>
したがって、後述するフローチャートに基づくプログラムにより、パーソナルコンピュータなどの電子計算機でべき乗算を演算できる。なお、このプログラムは、一般的には、暗号化または復号における拡大体の乗算プログラム中のべき乗算のサブルーチンプログラムとして用いられることとなる。以下、底の等しい#Y個のべき乗算のアルゴリズムについて説明する。
ここで、等しい底をAとすると、Y0,Y1,・・・,YG・E-1は、
Figure 0005147085
となり、X0,X1,・・・,X#X-1は、A,A2,・・・,A2#X-1(注:A2#X-1はAの指数2#X-1によるべき乗を意味する。)となる。ただし、#X=Flr(log2(max(ni)))+1となる。
まず、べき乗算の演算プログラムについて、段階0の処理を説明する。図4は、他のべき乗算の演算プログラムのフローチャートであり、表4に示した段階0の処理を示している。図4を参照して、まず、電子計算機は、べき乗算における初期条件の設定を行う(ステップS11)。このステップは準備ステップであり、具体的には、Aから、
Figure 0005147085
を準備する。
以下の説明において、配列Ca,b,cは、コンポーネントを格納するためのバッファとして用いられ、添字であるaは段階番号、bはグループ番号、cはバッファ番号をそれぞれ示している。また、配列IDは、配列Cに値を格納したコンポーネントの添字(ID)を格納するためのバッファとして用いられる。そのため、Cの配列インデックスとIDの配列インデックスとは対応している。添字については、配列Cと同様である。また、変数Sは、配列Cに格納されているコンポーネントの総数(配列Cのサイズ)をカウントするために用いられる。添字については、配列Cと同様である。
次いで、電子計算機は、グループ毎の処理(後述するステップS13〜ステップS16)を行うため(ステップS12)、その処理に伴って、段階0及びグループgで用いるバッファであるSの初期化を行う(ステップS13)。
次いで、電子計算機は、ステップS11の準備ステップにより求めたX0,X1,・・・,X#X-1についての処理を順次行うため(ステップS14)、Xxを結合するコンポーネントのID(NID:New ID)を求める(ステップS15)。
次いで、電子計算機は、ステップS15において求めたID(NID)に対応するコンポーネントにXxを結合する(ステップS16)。ただし、IDが0である場合、コンポーネントを生成する必要がないため、処理をスキップする(ステップS16の付番10)。具体的には、NIDと同じIDをもつコンポーネントが既にバッファに格納されているかどうかを探索し(ステップS16の付番11〜付番16のループ)、そのコンポーネントがバッファに格納されている場合(ステップS16の付番12)、そのIDのコンポーネントにXxを結合する(ステップS16の付番13)。これに対し、そのコンポーネントがバッファに格納されていない場合、バッファのサイズを拡張し(ステップS16の付番19)、Xxの値を入力した新しいコンポーネント(C0,g,0[S0,g,0])を作成し(ステップS16の付番17)、それをバッファに入力する(ステップS16の付番18)。
次に、べき乗算の演算プログラムについて、段階1から段階(H−1)までの処理を説明する。図5は、他のべき乗算の演算プログラムのフローチャートであり、表4に示した段階1から段階(H−1)の処理を示している。以下の説明において、変数Bは、段階gのグループ毎のバッファの総数を保持するために用いられる。また、変数Lは、以下に示すように、段階gにおけるコンポーネントのIDの長さ(*を除く)を保持するために用いられる。
Figure 0005147085
また、変数Tは、コンポーネントのIDを参照するために用いられる。段階1から最終段階Hでは、各段階でのコンポーネントの作成に前段階におけるコンポーネントのIDを参照する必要がある。例えば、段階0でC01101110というコンポーネントを作成したとすると、段階1ではC01101110のIDを以下に示すように参照することができるため、C****1110を作成する必要がある。
Figure 0005147085
さらに、参照位置をLビットずらして、以下に示すようにIDを参照することができるため、C0110****も作成する必要がある。
Figure 0005147085
変数Tは、このようなIDの参照を行うために用いられる。
図5を参照して、まず、電子計算機は、B及びLの値の初期化を行う(ステップS21)。そして、段階1から段階(H−1)までの段階毎の処理(後述するステップS23〜ステップS26)を行うため(ステップS22)、その処理に伴ってB及びLの値を更新する(ステップS23)。
次いで、電子計算機は、グループ毎の処理(後述するステップS25,ステップS26)を行うため(ステップS24)、その処理に伴って、IDの下位Lビットを参照できるようにTを初期化し(ステップS25)、段階Hの各グループ及び各バッファの処理を行う。
また、電子計算機は、ステップ25において初期化したTに対し、各バッファの処理(ステップS26の付番7〜付番23のループ)を行うにあたって、IDの参照位置をLビットずつずらすために、Tの値を更新する(ステップS26の付番22)。また、段階h、グループg、バッファbにおけるバッファであるSの初期化を行う(ステップS26の付番8)。また、Ch,g,bを作成するために必要な前段階の全てのコンポーネントを逐次処理する(ステップS26の付番9〜付番21)。また、Tを用いて前段階のコンポーネントのIDを参照する(ステップS26の付番10)。
また、電子計算機は、ステップS26の付番10において参照したID(NID)に対応するコンポーネントに結合または入力する(ステップS26の付番11〜付番20)。ただし、IDが0である場合、コンポーネントを生成する必要がないため、処理をスキップする(ステップS26の付番11)。
また、電子計算機は、ステップS26の付番10〜付番15のように、ID(NID)と同じIDのコンポーネントが既にバッファに格納されているかどうかを探索する(ステップS26の付番12〜付番17のループ)。そのコンポーネントがバッファに格納されている場合(ステップS26の付番13)、そのIDのコンポーネントに前段階のコンポーネントを結合する(ステップS26の付番14)。これに対し、そのコンポーネントがバッファに格納されていない場合、バッファのサイズを拡張し(ステップS26の付番20)、Xxの値を入力した新しいコンポーネント(Ch,g,b[Sh,g,b])を作成し(ステップS26の付番18)、それをバッファに入力する(ステップS26の付番19)。
次に、べき乗算の演算プログラムについて、段階Hの処理を説明する。図6は、他のべき乗算の演算プログラムのフローチャートであり、表4に示した段階Hの処理を示している。電子計算機は、グループ毎の処理(後述するステップS32〜ステップS35)を行うため(ステップS31)、その処理に伴って、Tに1を設定する(ステップS32)。
次いで、電子計算機は、各出力の処理(後述するステップS34,ステップS35)を行うため(ステップS33)、フラグflagに1を設定する(ステップS34)。最終段階である段階Pでは、前段階(H−1)におけるコンポーネントのIDを1ビット参照すればよいので、ステップS32においてTに1を設定している。また、各バッファの処理(ステップS33〜ステップS35の付番3〜付番13のループ)を行うにあたって、IDの参照位置を1ビットずつずらすために、Tの値を更新している(ステップS35の付番12)。
最終段階Hより前の段階では、入力または結合が行われないコンポーネントは無視することができる。しかし、最終段階Hでは、出力Yに値を入力しなければならない。そこで、このアルゴリズムでは出力Yg・E+eに段階(H−1)のコンポーネントを入力または結合されたかどうかを判別するために、フラグとして変数flagを用いている。ステップS34においてフラグflagを初期化し、出力Yg・E+eに入力または結合すべき段階(H−1)のコンポーネントを探索し(ステップS35の付番5〜付番10のループ)、そのコンポーネントが存在する場合、コンポーネントの値を出力Yg・E+eに結合し(ステップS35の付番7)、または、コンポーネントの値を入力してフラグflagの値を変更する(ステップS35の付番8)。これに対し、そのコンポーネントが存在しない場合(flagの値が初期値である場合)、出力Yg・E+eに1を入力する(ステップS35の付番11)。
このようにべき乗算を演算することにより、乗算回数を削減して演算速度を向上させることができる。
さらに、この実施形態によるべき乗算の演算は、図3に示したように、演算処理回路として半導体基板上に形成して乗算処理用半導体デバイスとすることもできる。
<スカラー倍算>
次に、本発明の実施形態に係るスカラー倍算の演算方法及びスカラー倍算の演算装置について説明する。楕円曲線暗号では、同じ要素を複数回足し合わせるというスカラー倍算なるものを多用する。しかし、スカラー倍算は1回当り250ビット級の大きな数値分加算を行うため、普通に加算してはあまりにコストがかかってしまう。本発明では、このスカラー倍算を高速化するアルゴリズムを開示する。以下、楕円加算、スカラー倍算、バイナリ法、楕円曲線上の有理点のフロベニウス写像、有理点が満たす性質を説明し、本発明の実施形態について詳細に説明する。
(楕円加算)
まず、高速なスカラー倍算アルゴリズムについて説明する。一般に有限体F(標数pの体)上の楕円曲線は式(5)で定義される。
Figure 0005147085
a,bが属する体Fを係数体、変数x,yが属する体F を定義体と呼ぶこととし、E/Fは係数体がFである楕円曲線を、E(F )は定義体がF (Fのm次拡大体)である楕円曲線をそれぞれ意味することにする。
式(5)を満たす(x,y)の組すべてと無限遠点Oを合わせて、楕円曲線E(x,y)上の有理点といい、有理点P(x1,y1)とQ(x2,y2)において、次のような演算を定義する。この演算によって有理点R(x,y)を生成する方法を楕円加算と呼ぶ。
Figure 0005147085
このとき、整数の加法でいう“0”のような、任意の有理点Pと楕円加算しても結果がPとなる有理点を無限遠点Oとする。すなわち、P+O=O+P=Pである。有理点Pにおいてx軸対称な有理点−Pと楕円加算を行うと、無限遠点Oになる。この−PをPの逆元という。以下、式(5)の楕円曲線を例にして述べる。
(スカラー倍算)
スカラー倍算とは、同じ有理点を複数回、楕円加算によって足し合わせることを言う。例えば[n]Aはn個のAを足し合わせることを意味する。また、式(5)の曲線における有理点の総数を#E(F )とすると、任意の有理点Aは、次の性質をもつ。
Figure 0005147085
この性質(巡回性)を巧みに利用したものが楕円曲線暗号である。
(バイナリ法)
バイナリ法は、[n]Aというスカラー倍算を以下のように効率よく行う手法である。
Figure 0005147085
バイナリ法は、Flr(log2(n))回の楕円2倍算(自分に自分を1回楕円加算すること)、{Flr(log2(n))+1}/2回の楕円加算を平均で必要とする。なお、》は右へビットシフト演算子で、例えば(1011)》1は(101)である。また、&は論理積を表し、例えば(1011)&1は1、(110)&1は0である。
(Window法)
Window法は、以下のように効率よくスカラー倍算を行う手法である。ここでは、窓サイズ3の場合を説明する。まず、以下のコンポーネントを準備する。
Figure 0005147085
これらは、以下の2進数に対応する。
Figure 0005147085
これらを用いて、例えば[318]Aというスカラー倍算を次式のように行う。
Figure 0005147085
コンポーネントを準備するための計算を除けば、Window法はFlr(log2(n))-w+1回の楕円2倍算と[{Flr(log2(n))+1}/w]{1-(1/2)w}回の楕円加算を平均で必要とする。
(楕円曲線上の有理点のフロベニウス写像)
E(F )の楕円曲線上の有理点P=(x,y)のフロベニウス写像は、φ(P)のように表現し、次のような演算を行う。
Figure 0005147085
つまり、Pにおけるxとyをそれぞれp乗するという演算を行う。なお、xとyは有限体F (F のm次拡大体で、mは1以上の整数)に含まれていて、この場合のp乗(ただし、kは0以上の整数)は、他の整数でべき乗するよりはるかに高速となっている。
(有理点が満たす性質)
楕円曲線E(F )上の任意の有理点P=(x,y)は、必ず次式(12)を満たす。
Figure 0005147085
このとき、t=p+1−#E(F)であり、φはフロベニウス写像を2回行う、つまり、
Figure 0005147085
という演算を意味している。ここで、式(12)を変形して整理すると次のようになる。
Figure 0005147085
つまり、p個のPを加算(p倍算)することは、Pにフロベニウス写像を施してt倍算を行ったものに対して、Pに2回フロベニウス写像を施したものの逆元を楕円加算することを意味している。また、楕円曲線E(F )上の任意の有理点Pは、必ず次の式(15)を満たす。
Figure 0005147085
これは、
Figure 0005147085
となることを意味している。
次に、本発明に係るスカラー倍算[n]A(ただし、AはE(F )上の任意の有理点)を行う場合について説明する。
<スカラー倍算の実施形態1>
(ψ進展開による演算)
高速に演算可能である自己準同型写像ψを考慮し、式(16)のようにn倍算と同型写像となる、ψ進展開した演算を求める。
Figure 0005147085
これを用いて、次式が与えられる。
Figure 0005147085
このとき、ψ(A)は演算ψをi回実行することを意味していて、この演算は高速であるので、実際に必要な計算は[n]Aの部分となる。
具体的な例として、(有理点が満たす性質)の項で紹介した、フロベニウス写像φを用いたφ進展開がある。これは、nをp進展開し、
Figure 0005147085
となるので、
Figure 0005147085
となる。ここで式(14)の右辺を代入すると、
Figure 0005147085
となり、式(18)の右辺におけるサーメーションの括弧内は
Figure 0005147085
となる。
このとき、式(19)における・t・n’がpより大きい場合、この係数を再びp進展開する。すなわち、
Figure 0005147085
とすると
Figure 0005147085
となる。さらに、φの指数2(i+j)−(k+l)がmより大きくなったとき、式(15)を用いることで、
Figure 0005147085
とすることができ(ただし、T=Flr({2(i+j)-(k+l)}/m))、これによりφの指数をm未満に保つ。
以下、これらのようなp進展開と式(15)を用いたψの指数部の減少を繰り返して、φ(ただし、kは0以上m未満)の係数全てがp未満となったとき、式(17)において、ψがφとなっている式が準備できる。すなわち、
Figure 0005147085
となる。
式(17)において、[n]Aの部分をA[i]で表すと、以下のアルゴリズムが与えられる。
Figure 0005147085
この手法はt回の楕円2倍算、(s+1)(t+1)/2の楕円加算、s回の写像ψによる演算、そしてs回の楕円加算を必要とする。写像ψによる演算を用いることで楕円2倍算の回数が減じるが、楕円加算の回数は変わらない。この楕円加算の回数を減らすために、以下に示すような計算法を考える。
(スカラー倍算の実施形態1の具体的な説明)
以下、上記アルゴリズム2を改良する。s=(nをψ進展開した際のψの最大係数)及びt=Flr(log2{max(ni)})をそれぞれ5及び4とする。また、n、n、・・・、nの2進数表現を以下のようにし、
=(1001),n=(1110), (20a)
=(1101),n=(1110), (20b)
=(1111),n=(0101), (20c)
スカラー倍算の係数nを以下のように分割して考える(図7参照)。
Figure 0005147085
そして、G={[n]A,[n]A,[n]A}及びG={[n]A,[n]A,[n]A}の2つのグループを考えながら、以下の計算式をみてみる。
[n]A=[8]A+[1]A, [n]A=[8]A+[4]A+[2]A, (22a)
[n]A=[8]A+[4]A+[1]A, [n]A=[8]A+[4]A+[2]A, (22b)
[n]A=[8]A+[4]A+[2]A+[1]A, [n]A=[4]A+[1]A (22c)
式(20)及び式(22)にあるように、G1のうち、[n]Aのみにある計算項は[2]Aであり、G2のうち、[n]Aのみにある計算項は[1]Aであるので、これらの演算をまとめてC100とすると、C100=ψ([2]A)+[1]Aとなる。同様にG1のうち、[n]Aと[n]Aにある計算項は存在せず、G2のうち、[n]Aと[n]Aのみにある計算項は[8]Aと[2]Aであるので、これらの演算をまとめてC011とすると、C011=[8]A+[2]Aとなる。他の組み合わせについても同様にして、C001,C010,・・・,C111を次のように考えれば、
Figure 0005147085
[n]Aを次式のように計算できる。
Figure 0005147085
式(22)を用いた式(17)の計算は、3回の楕円2倍算及び16回の楕円加算を必要とするが、式(23)及び式(24)の計算は、3回の楕円2倍算及び14回の楕円加算しか必要としない。このように本発明の実施例では楕円加算の回数を減らすことができる。
(アルゴリズム)
次に、本発明に係る実施形態を、より数学的に説明する。図7にあるように、行数r及び列数cを考える。このとき、スカラー倍算の係数nを以下のように考える。
Figure 0005147085
そして本発明の実施形態では、[n]Aを以下のように計算する。
Figure 0005147085
上記「数87」は上から順に(26a)、(26b)、(26c)、(26d)、(26e)である。
なお、|Sjl|≦t及び|T|≦2−1である。(実施形態1の具体的な説明)の項での例においてψ=φの場合は、式(15)のmが6、c=2となっているため、r=Ceil(m/c)=3であり、必要となるテンポラリ変数C及びRの個数は、式(26)からわかるように7個(=2−1)及び3(=r)となっている。式(26c)における[2]A,1≦i<tの準備には、3回(=t−1)の2倍算を必要とし、C,1≦l<2rの準備には、8回(=c・t)以下の楕円加算を必要とする。ここで、t=4=Flr(log2(max(n))である。これらテンポラリデータを用いて、式(26c)、式(26d)及び式(26e)に示されるように、[n]Aは23回(=r(2−1)+(r−1))以下の楕円加算で求められる。加えて、9回(=(c−1)(2−1)+(r−1))の写像Fによる演算を必要とする。
<スカラー倍算の実施形態2>
図8は、本発明の実施形態に係るスカラー倍算の演算プログラムのフローチャートであり、式(25)から式(26e)の演算を行う。電子計算機は、スカラー倍算の係数nが0のときは(ステップS41のY)、無限遠点Oを出力し(ステップS42)、終了する。スカラー倍算の係数nが0でないときは(ステップS41のN)、式(25)で表される係数nのψ進展開の演算を実行する(ステップS43)。
以下、ステップS43に示す式(25)により表されるnのψ進展開を求める。電子計算機は、B[0]に有理点Aを設定し、ψiの係数の最大値Flr(log(max(n))により2進数表現の最大桁数をtに設定する。有理点Aの倍数をB[i]に設定し、C[i]とR[i]の初期値を無限遠点Oに設定する(ステップS44)。
電子計算機は、ステップS45の付番8〜22においてテンポラリデータCを求める。電子計算機は、まず、M=0に設定し(ステップS45の付番10)、係数nijの論理積nij&1が1であるか判定し、1である場合に、Mに2を加算する(ステップS45の付番12)。次いで電子計算機は、係数nijのビットをnij》1により1ビット分右にずらすビットシフトを行う(ステップS45の付番13)。電子計算機は、以上の演算をi=0〜rまで繰り返す(ステップS45の付番11〜付番14)。
次いで、電子計算機は、Mが0であるか判定し、0でない場合にテンポラリデータC[M]にB[k]を加算する演算を実行する(ステップS45の付番15)。電子計算機は、以上の演算をk=0〜t繰り返して実行する(ステップS45の付番9〜付番16)。次いで電子計算機は、jが0であるかを判定し(ステップS45の付番17)、jが0でない場合に、ψ(C[k])をテンポラリデータC[k]に代入する演算を、k=1〜2で繰り返す(ステップS45の付番18〜付番20)。電子計算機は、以上の演算をj=c−1〜0まで繰り返して実行する(ステップS45の付番8〜付番22)。
次いで、電子計算機は、論理積2&jが0であるか判定し、0でない場合に、R[i]にC[j]を加算する演算を実行する(ステップS46の付番25)。電子計算機は、この演算をj=1〜2まで繰り返して実行する(ステップS46の付番24〜付番26)。次いで、以上の演算をi=0〜rで繰り返す(ステップS46の付番23〜付番27)。
次いで、電子計算機はR[r−1]をDとし(ステップS47の付番28)、電子計算機は、ψ(D)をDに置き換え、DにR[i]を加算し(ステップS47の付番30)、この演算をi=r−2〜0まで繰り返す(ステップS47の付番29〜付番31)。次いで、電子計算機は、Dを出力して(ステップS48の付番32)終了する。
このように、スカラー倍算処理用半導体デバイスとすることにより演算速度の更なる高速化を図ることができる。また、スカラー倍算処理用半導体デバイスは、これ自体で1つの半導体デバイスとするのではなく、暗号化及び復号化処理用の半導体デバイスなどの他の半導体デバイスの一部分に組み込んでもよい。
なお、以上の説明から明らかに、<スカラー倍算の実施形態1>において説明したスカラー倍算の演算方法は、<べき乗算の実施形態1>において説明したべき乗算の演算方法に類似している。すなわち、スカラー倍算においてはテンポラリデータが加算+の演算子により結合される。べき乗演算においてはテンポラリデータが乗算・の演算子により結合されている。テンポラリデータの演算方法は、演算子が異なるだけで、図2及び図8に示すように、べき乗演算もスカラー倍算も計算方法は同様となる。
また、<べき乗の実施形態3>の項において、Y0,Y1,・・・,Yn(Y)-1というn(Y)個の元Yと、それぞれが集合{X0,X1,・・・,Xn(X)-1}から適当な数だけ与えられたn(x)個の元Xの全てを演算子・で結合するものとして、各元Yを、演算子・により結合されたテンポラリデータにより表した。そして、各元Yに含まれるテンポラリデータにおいて、複数の元Yにおいて共通するテンポラリデータの組み合わせがある場合に、その共通するテンポラリデータを結合して新たなテンポラリデータを設定し、この新たなテンポラリデータを用いて演算する方法について説明した。
このテンポラリデータの演算は、演算子を乗算・から加算+に置き換えることにより、そのままスカラー倍算にも適用することができる。すなわち、スカラー倍算におけるF項の係数[n]Aを元Yとし、スカラー倍算における自己準同型写像の展開項であるψ([n]A)、ψ([n]A)、・・・、ψ([n]A)を元Xとすればよい。従って、スカラー倍算は、<べき乗の実施形態4>、<べき乗の実施形態5>及び<べき乗の実施形態6>の各項において説明した演算方法に、演算子を乗算・から加算+に置き換えることにより、適用することができる。
また、図2、図4、図5、図6及び図8のフローチャートは、図3の半導体基板10上に形成した電子計算機により実行されるものである。演算部20は、記憶部30に格納されたプログラムを読み出して、当該プログラムに従って演算処理を実行する。演算部20は、例えば初期設定の際には、入出力部40から入力したデータ、或いは記憶部30の所定領域に格納されたデータを読み出して演算を実行し、演算結果を変数に対応する記憶部30の所定記憶領域に格納する。演算部20は、プログラムに従って、乗算処理、加算処理、「for」や「if」で表される演算処理等を実行し、記憶部30の変数に対応する所定の記憶領域に、或いは出力データとしてその演算結果を格納する。演算部20は、記憶部30の所定領域に格納された演算結果を読み出して、入出力部40に送信して処理結果を出力するものである。
本発明の演算方法及び演算装置は、例えばべき乗算やスカラー倍算を高速で演算可能であり、平文データの暗号化及び復号化の用途に適用することができる。

Claims (6)

  1. 標数p、拡大次数mの拡大体F の元Aのべき乗算Aを、指数部nのp進数表現である
    Figure 0005147085
    を用いて、フロベニウス写像により
    Figure 0005147085
    と表されるべき乗算を、演算回路からなる演算部及び各種データを記憶するレジスタで構成した記憶部を備える電子計算機により演算する演算方法において、
    前記演算部が、
    前記指数部nのpの所定次数の項と、この項の次数よりも一次だけ高次の項または一次以上高次の複数の項とを1組として、前記指数部nを複数の組に分けるとともに、各組内における各項を最低次数でくくってこの最低次数の係数を特定し、この係数をp進数表示として前記係数による元Aのべき乗算が行われた場合の各組での同一の桁に値が存在しているか否かを示す指標を有するテンポラリデータを桁ごとに設定してその記憶領域を前記記憶部に確保するステップと、
    前記テンポラリデータの値を、このテンポラリデータで値が存在しているとされた桁における乗数を用いて特定し、前記記憶部に記憶するステップと、
    所定の前記テンポラリデータどうしを乗算した結果を、各組の前記係数でのべき乗算の結果として前記記憶部に記憶するステップと
    を有することを特徴とするべき乗算の演算方法。
  2. 請求項1に記載の、べき乗算の演算方法において、前記演算部が、
    所定の前記テンポラリデータどうしを乗算して、各組の前記係数でのべき乗算の結果を演算する際に、共通して乗算するテンポラリデータの組み合わせを特定するステップと、
    前記テンポラリデータの組み合わせを用いて、各組の前記係数でのべき乗算の結果を演算するステップと
    を有することを特徴とするべき乗算の演算方法。
  3. 標数p、有限体Fの次数mの拡大体をF 、有理点の総数を#E(F )、無限遠点をO、有限体F上の楕円曲線が次式で表され、
    Figure 0005147085
    任意の有理点Aは次式を満たし、
    Figure 0005147085
    スカラー部[n]をψ進数展開した
    Figure 0005147085
    と表されるスカラー倍算を、演算回路からなる演算部及び各種データを記憶するレジスタで構成した記憶部を備える電子計算機により演算する演算方法において、
    前記演算部が、
    前記指数部iの写像ψの所定次数の項と、この項の次数よりも1次だけ高次の項または1次以上の高次の項の複数の項とを1組として、前記写像Fを複数の組に分けるとともに、各組内における各項を最低次数でくくってこの最低次数の係数を特定するステップと、
    この係数をψ進数表示として、前記係数による元Aの加算が行われる場合の各組でのψ進数表示の同一の桁に値が存在しているか否か示す指標を有するテンポラリデータを桁ごとに設定してその値を前記記憶部に記憶するステップと、
    前記各係数を構成するψ進数の各[n]Aを、このテンポラリデータどうしを加算した結果により特定して前記記憶部に記憶するステップと、を有することを特徴とするスカラー倍算の演算方法。
  4. 標数p、拡大次数mの拡大体F の元Aのべき乗算Aを、指数部nのp進数表現である
    Figure 0005147085
    を用いて、フロベニウス写像により
    Figure 0005147085
    と表されるべき乗算の演算装置において、
    前記指数部nのpの所定次数の項と、この項の次数よりも一次だけ高次の項または一次以上高次の複数の項とを1組として、前記指数部nを複数の組に分けるとともに、各組内における各項を最低次数でくくってこの最低次数の係数を特定し、この係数をp進数表示として前記係数による元Aのべき乗算が行われた場合の各組での同一の桁に値が存在しているか否かを示す指標を有するテンポラリデータを桁ごとに設定して、このテンポラリデータで値が存在しているとされた桁における乗数を用いて特定したテンポラリデータの値を記憶する記憶部と、
    所定の前記テンポラリデータどうしを乗算した結果を、各組の前記係数でのべき乗算の結果として記憶する記憶部と
    を備えたことを特徴とするべき乗算の演算装置。
  5. 請求項に記載の、べき乗算の演算装置において、
    所定の前記テンポラリデータどうしを乗算して、各組の前記係数でのべき乗算の結果を演算する際に、共通して乗算するテンポラリデータの組み合わせを特定し、このテンポラリデータの組み合わせを用いて、各組の前記係数でのべき乗算の結果を演算して記憶する記憶部を備えたことを特徴とするべき乗算の演算装置。
  6. 標数p、有限体Fの次数mの拡大体をF 、有理点の総数を#E(F )、無限遠点をO、有限体F上の楕円曲線が次式で表され、
    Figure 0005147085
    任意の有理点Aは次式を満たし、
    Figure 0005147085
    スカラー部[n]をψ進数展開した
    Figure 0005147085
    と表されるスカラー倍算を行う演算回路からなる演算部及び各種データを記憶するレジスタで構成した記憶部を備える電子計算機により演算する演算装置において、
    前記指数部iの写像ψの所定次数の項と、この項の次数よりも1次だけ高次の項または1次以上の高次の項の複数の項とを1組として、前記写像Fを複数の組に分けるとともに、各組内における各項を最低次数でくくってこの最低次数の係数を特定し、
    この係数をψ進数表示として、前記係数による元Aの加算が行われる場合の各組でのψ進数表示の同一の桁に値が存在しているか否か示す指標を有するテンポラリデータを桁ごとに設定して記憶する前記記憶部と、
    前記各係数を構成するψ進数の各[n]Aを、このテンポラリデータどうしを加算した結果により特定して記憶する前記記憶部と、を備えたことを特徴とするスカラー倍算の演算装置。
JP2009526507A 2007-08-09 2008-08-09 演算方法及び演算装置 Expired - Fee Related JP5147085B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2009526507A JP5147085B2 (ja) 2007-08-09 2008-08-09 演算方法及び演算装置

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JP2007208678 2007-08-09
JP2007208678 2007-08-09
JP2009526507A JP5147085B2 (ja) 2007-08-09 2008-08-09 演算方法及び演算装置
PCT/JP2008/064369 WO2009020216A1 (ja) 2007-08-09 2008-08-09 演算方法及び演算装置

Publications (2)

Publication Number Publication Date
JPWO2009020216A1 JPWO2009020216A1 (ja) 2010-11-04
JP5147085B2 true JP5147085B2 (ja) 2013-02-20

Family

ID=40341443

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009526507A Expired - Fee Related JP5147085B2 (ja) 2007-08-09 2008-08-09 演算方法及び演算装置

Country Status (5)

Country Link
US (1) US8300808B2 (ja)
EP (1) EP2189963A1 (ja)
JP (1) JP5147085B2 (ja)
CN (1) CN101809638A (ja)
WO (1) WO2009020216A1 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5360836B2 (ja) * 2008-08-29 2013-12-04 国立大学法人 岡山大学 ペアリング演算装置、ペアリング演算方法、及びペアリング演算プログラム
JP5403982B2 (ja) * 2008-09-25 2014-01-29 株式会社東芝 計算装置、方法及びプログラム
WO2010105900A1 (en) * 2009-03-16 2010-09-23 Thomson Licensing Exponentiation method resistant against side-channel and safe-error attacks
US9565017B2 (en) 2014-11-10 2017-02-07 Umm Al-Qura University Method for efficiently protecting elliptic curve cryptography against simple power analysis attacks
CN109214509B (zh) * 2017-07-05 2021-07-06 中国科学院沈阳自动化研究所 一种用于深度神经网络高速实时量化结构和运算实现方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11232244A (ja) * 1998-02-10 1999-08-27 Hitachi Ltd ニューラルネットワーク、その学習方法およびニューロ・ファジィ制御装置
JP2000187648A (ja) * 1998-12-22 2000-07-04 Casio Comput Co Ltd 計算装置及び記憶媒体
JP2001188075A (ja) * 1999-10-20 2001-07-10 Fujitsu Ltd 電磁界強度算出装置、電磁界強度算出方法およびその方法をコンピュータに実行させるプログラムを記録したコンピュータ読み取り可能な記録媒体
JP2006323160A (ja) * 2005-05-19 2006-11-30 Nippon Telegr & Teleph Corp <Ntt> ペアリング演算装置、ペアリング演算方法、およびペアリング演算プログラム
JP2008134812A (ja) * 2006-11-28 2008-06-12 Fujitsu Ltd 有限体gf(3)の演算方法及び演算装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4034585B2 (ja) * 2002-01-28 2008-01-16 松下電器産業株式会社 楕円曲線演算装置及び楕円曲線演算方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11232244A (ja) * 1998-02-10 1999-08-27 Hitachi Ltd ニューラルネットワーク、その学習方法およびニューロ・ファジィ制御装置
JP2000187648A (ja) * 1998-12-22 2000-07-04 Casio Comput Co Ltd 計算装置及び記憶媒体
JP2001188075A (ja) * 1999-10-20 2001-07-10 Fujitsu Ltd 電磁界強度算出装置、電磁界強度算出方法およびその方法をコンピュータに実行させるプログラムを記録したコンピュータ読み取り可能な記録媒体
JP2006323160A (ja) * 2005-05-19 2006-11-30 Nippon Telegr & Teleph Corp <Ntt> ペアリング演算装置、ペアリング演算方法、およびペアリング演算プログラム
JP2008134812A (ja) * 2006-11-28 2008-06-12 Fujitsu Ltd 有限体gf(3)の演算方法及び演算装置

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
CSNG200800665012; 吉田 知輝, 加藤 英洋, 根角 健太, 野上 保之, 森川 良孝: 'ペアリング暗号に効果的な拡大体上べき乗算に関する一考察' 電子情報通信学会技術研究報告 Vol. 108, No. 162, 200807, pp. 101-107 *
JPN6012035276; Moller, B.: 'Algorithms for multi-exponentiation' TU Darmstadt, Fachbereich Informatik, Technical Report TI-8/01, 20010427, [online] *
JPN6012035277; Kato, H., Nekado, K., Nogami, Y., and Morikawa, Y.: 'Fast Exponentiation in Extension Field with Frobenius Mappings' Memoirs of The Faculty of Engineering, Okayama University Vol. 42, 200801, pp. 36-43, [online] *
JPN6012035279; 吉田 知輝, 加藤 英洋, 根角 健太, 野上 保之, 森川 良孝: 'ペアリング暗号に効果的な拡大体上べき乗算に関する一考察' 電子情報通信学会技術研究報告 Vol. 108, No. 162, 200807, pp. 101-107 *
JPN6012054224; 小黒 博昭, 小林 鉄太郎: '楕円曲線暗号におけるウィンドウ法の高速化' 暗号と情報セキュリティシンポジウム(SCIS2002) 講演論文集CD-ROM , 200201, 10B-1 *

Also Published As

Publication number Publication date
CN101809638A (zh) 2010-08-18
US8300808B2 (en) 2012-10-30
JPWO2009020216A1 (ja) 2010-11-04
US20110216899A1 (en) 2011-09-08
WO2009020216A1 (ja) 2009-02-12
EP2189963A1 (en) 2010-05-26

Similar Documents

Publication Publication Date Title
JP5378579B2 (ja) フォールディングを用いるモジュール削減
JP5147085B2 (ja) 演算方法及び演算装置
KR100442218B1 (ko) 몽고메리의 알고리즘을 이용한 멱승 잉여 연산기
JP2003288013A (ja) 楕円曲線演算装置及び楕円曲線演算方法
US8856200B2 (en) Exponentiation calculation apparatus and exponentiation calculation method
JP4521503B2 (ja) スカラー倍算の演算プログラム及びべき乗算の演算プログラム
JP5553773B2 (ja) 楕円曲線上の点のスカラー倍を計算する装置及び方法
JP5403630B2 (ja) スカラ倍算器及びスカラ倍算プログラム
JP3823107B2 (ja) 有限体での基底変換方法及び基底変換装置
JP4836208B2 (ja) 暗号化/復号化プログラム、暗号化/復号化装置及び拡大体の乗算装置
KR100954843B1 (ko) 센서 모트에서의 블록 인덱싱 기반의 타원 곡선 암호 연산 방법, 그 장치 및 이를 기록한 기록 매체
CN114868175A (zh) 最终幂计算装置、配对运算装置、加密处理装置、最终幂计算方法和最终幂计算程序
JP5554357B2 (ja) 演算装置
JP3875183B2 (ja) 演算装置
JP4341889B2 (ja) 楕円積和演算計算方法、楕円積和演算計算装置、プログラム及び記録媒体
JP4752176B2 (ja) 一方向性関数演算方法及び装置及びプログラム
JP4629972B2 (ja) ベクトル演算装置及び分割値演算装置及び楕円曲線スカラー倍演算装置及び楕円暗号演算装置及びベクトル演算方法及びプログラム及びプログラムを記録したコンピュータ読み取り可能な記録媒体
JP2009301071A (ja) スカラー倍算の演算プログラム及びべき乗算の演算プログラム
JP6023728B2 (ja) マルチペアリング演算装置、マルチペアリング演算方法、マルチペアリング演算プログラム
JP2000148013A (ja) 有限体の定義多項式を用いた剰余演算装置
JP2007034927A (ja) べき乗演算装置
JP2009301070A (ja) スカラー倍算の演算装置及びべき乗算の演算装置
JP2008197625A (ja) 有限体演算方法および有限体演算装置
JP2001202232A (ja) 剰余系演算装置及び方法
JP2004233428A (ja) 逆元演算装置、逆元演算方法、及び逆元演算プログラム

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120710

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120822

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: 20121023

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20121122

R150 Certificate of patent or registration of utility model

Ref document number: 5147085

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20151207

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees