KR101301139B1 - 유한체 연산장치, 유한체 연산방법, 프로그램 및 기록매체 - Google Patents

유한체 연산장치, 유한체 연산방법, 프로그램 및 기록매체 Download PDF

Info

Publication number
KR101301139B1
KR101301139B1 KR1020117023973A KR20117023973A KR101301139B1 KR 101301139 B1 KR101301139 B1 KR 101301139B1 KR 1020117023973 A KR1020117023973 A KR 1020117023973A KR 20117023973 A KR20117023973 A KR 20117023973A KR 101301139 B1 KR101301139 B1 KR 101301139B1
Authority
KR
South Korea
Prior art keywords
poly
finite field
polynomial
unit
finite
Prior art date
Application number
KR1020117023973A
Other languages
English (en)
Other versions
KR20120038395A (ko
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 니뽄 덴신 덴와 가부시키가이샤
Publication of KR20120038395A publication Critical patent/KR20120038395A/ko
Application granted granted Critical
Publication of KR101301139B1 publication Critical patent/KR101301139B1/ko

Links

Images

Classifications

    • 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
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09CCIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
    • G09C1/00Apparatus or methods whereby a given sequence of signs, e.g. an intelligible text, is transformed into an unintelligible sequence of signs by transposing the signs or groups of signs or by replacing them by others according to a predetermined system
    • 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
    • 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/3093Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy involving Lattices or polynomial equations, e.g. NTRU scheme
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/72Indexing scheme relating to groups G06F7/72 - G06F7/729
    • G06F2207/7209Calculation via subfield, i.e. the subfield being GF(q) with q a prime power, e.g. GF ((2**m)**n) via GF(2**m)

Abstract

K개의 유한체 GF(pm)의 원소 R(i, k)∈GF(pm)에 대한 유한체 상의 연산을 e(R(i, 0), ..., R(i, K-1))로 한 경우에 있어서의 연산 Πi=0 N-1e(R(i, 0), ..., R(i, K-1))를 효율적으로 연산한다. 각 i에 대한 연산 e(R(i, 0), ..., R(i, K-1))를 행하는 과정에서 각각 얻어지는, 유한체 GF(pm)의 d차 확대체를 나타내는 다항식 poly(R(i, 0), ..., R(i, K-1))끼리를 승산하고, 그 승산 결과를 누적 승산한다. 당해 다항식 poly(R(i, 0), ..., R(i, K-1))은 입력된 유한체 GF(pm)의 원소로부터의 사상이며, 적어도 일부의 항의 계수가 0으로 되어 있다. 동일한 처리를 상이한 i의 조합에 대하여 실행하고, 그 결과를 사용하여 연산 Πi=0 N-1e(R(i, 0), ..., R(i, K-1))를 행한다.

Description

유한체 연산장치, 유한체 연산방법, 프로그램 및 기록매체{FINITE FIELD CALCULATION APPARATUS, FINITE FIELD CALCULATION METHOD, PROGRAM, AND RECORDING MEDIUM}
본 발명은 암호기술에 관한 것으로, 특히 유한체 상의 연산기술에 관한 것이다.
페어링을 이용한 암호 방식의 실용화에 따라, 최근, 페어링을 효율적으로 실장하기 위한 연구가 왕성하게 행해지고 있다. 페어링이란 2입력 1출력의 쌍선형성 함수이다. 현재의 암호기술에서는, 유한체 GF(pm)(p는 소수, m은 1 이상의 정수) 상에서 정의된 타원곡선 상의 2개의 점 P(x1, y1), Q(x2, y2)(x1, y1, x2, y2∈GF(pm))을 입력으로 하고, 유한체 GF(pm)의 확대체 GF(pd ·m)의 1개의 원소 ηT(P, Q)∈GF(3d·m)을 출력하는 페어링
e(P(x1, y1), Q(x2, y2)) → ηT(P, Q) …(1)
이 사용된다.
페어링을 다항식 시간에서 계산하기 위한 알고리즘으로서 최초에 제안된 것은 Tate 페어링을 계산하기 위한 Miller 알고리즘이다. 그 후에 Miller 알고리즘에 비해 재귀회수를 반감시킨 ηT 페어링 알고리즘이 제안되었고, 또한, ηT 페어링 알고리즘에 포함되는 3승근 연산을 제거하고, 새로운 고속화를 실현한 개량 ηT 페어링 알고리즘이 제안되었다(예를 들면, 비특허문헌 1 등 참조). 이하에, 개량 ηT 페어링 알고리즘의 개요를 나타낸다.
<개량ηT 페어링 연산 알고리즘>
[준비]
Eb: Eb는 Y2=X3-X+b(b∈{-1, 1})을 나타낸다. Eb는 유한체 GF(3m) 상에서 정의된 초특이 타원곡선이다.
σ: σ는 유한체 GF(3m)의 원소를 계수로 하는 기약 다항식 σ2+1=0의 근으로 되는 부정원을 나타낸다.
ρ: ρ는 유한체 GF(3m)의 원소를 계수로 하는 ρ3-ρ-b=0의 근으로 되는 부정원을 나타낸다.
[입력] P(x1, y1), Q(x2, y2)(x1, y1, x2, y2∈GF(3m))
[출력] ηT(P, Q)∈GF(36m)
[계산방법]
Step1: y1=-y1∈GF(3m)(b=1의 경우만)
Step2: u=x1+x2+b∈GF(3m)
Step3: c=b
Step4: f=-y1·u+y2·σ+y1·ρ∈GF(36m)
Step5: j=0으로부터 (m-1)/2까지 j를 1씩 증가시키면서 Step5-1∼Step5-8을 반복한다.
Step5-1: u=x1+x2+c∈GF(3m)
Step5-2: g=-u2+y1·y2·σ-u·ρ-ρ2∈GF(36m)
Step5-3: f=f·g∈GF(36m)
Step5-4: f=f3∈GF(36m)
Step5-5: y1=-y1∈GF(3m)
Step5-6: x2=x2 9∈GF(3m)
Step5-7: y2=y2 9∈GF(3m)
Step5-8: c=(c-b)mod3∈GF(3)
Step6: ffinalpow∈GF(36m)[finalpow=(33m-1)(3m+1)(3m-3(m+1)/2+1)] 출력.
또, 비특허문헌 2에는, 루프 변환의 일종인 「루프 언롤링(Loop Unrolling)」의 기술을 ηT 페어링 연산에 적용한 알고리즘이 개시되어 있다. 「루프 언롤링」이란 루프의 반복마다 발생하는 루프 종료조건의 판정 처리를 감소시킴으로써 실행 속도를 향상시키는 기술이다. 비특허문헌 2의 방법에서는, 기본적인 알고리즘에서는 2회의 루프에서 실행하고 있는 처리를 1회의 루프 중에서 실행하여, 루프의 반복 회수를 반감시킴으로써 루프 종료조건의 판정 처리를 반감시키고 있다.
Beuchat, J. -L.; Shirase, M.; Takagi, T.; Okamoto, "An Algorithm for the ηT Pairing Calculation in Characteristic Three and its Hardware Implementation", Proceedings of the 18th IEEE Symposium on Computer Arithmetic, Institute of Electrical and Electronics Engineers, 25-27 June 2007, pp.97-104 Beuchat, J. -L.; Brisebarre, N.; Detrey, J.; Okamoto, E.; Shirase, M.; Takagi, T., "Algorithms and Arithmetic Operators for Computing the ηT Pairing in Characteristic Three", IEEE transactions on computers, Institute of Electrical and Electronics Engineers, Nov. 2008, Volume 57, Issue 11, pp.1454-1468
(발명의 개요)
(발명이 해결하고자 하는 과제)
상기의 인용문헌 1, 2에 개시되어 있는 것은 1개의 페어링을 효율적으로 계산하기 위한 방식뿐이며, 복수의 페어링의 곱을 효율적으로 계산하는 방식에 대해서는 개시되어 있지 않다.
즉, 유한체 GF(pm) 상에서 정의된 타원곡선상의 2개의 점 P(X1[i], Y1[i]), Q(X2[i], Y2[i])(X1[i], Y1[i], X2[i], Y2[i]∈GF(pm))를 입력으로 하고, 유한체 GF(pm)의 확대체 GF(pd ·m)의 1개의 원소 ηT(P[i], Q[i])∈GF(3d·m)를 출력하는 페어링을
e(P(X1[i], Y1[i]), Q(X2[i], Y2[i])) → ηT(P[i], Q[i]) …(2)
로 한 경우에, N≥2에 대한
Πi=0 N-1e(P(X1[i], Y1[i]), Q(X2[i], Y2[i])) …(3)
을 효율적으로 계산하는 방식은 개시되어 있지 않다.
그 때문에 인용문헌 1, 2 등의 종래의 방식을 사용하여 식 (3)의 계산을 행하는 경우에는, 각 i=0, ..., N-1에 대하여 각각 독립적으로 식 (2)의 계산을 행하고, 각각의 계산에서 얻어진 연산결과 ηT(P[i], Q[i])를 곱함으로써 식 (3)의 연산결과를 얻게 된다. 예를 들면, 「루프 언롤링」의 기술을 사용하는 경우이어도, 「루프 언롤링」의 대상이 되는 것은 각 i∈{0, ..., N-1}에 대하여 각각 독립적으로 실행되는 식 (2)를 계산하기 위한 루프 처리(재귀 처리)뿐이며, 상이한 i에 대한 페어링 연산을 협동시키면서 실행하는 연산방식은 개시되어 있지 않다.
이러한 것은 페어링에 한정된 것이 아니고, N·K개(N≥2, K≥1)의 유한체 GF(pm)의 원소 R(i, k)∈GF(pm)[i∈{0, ..., N-1}, k∈{0, ..., K-1}, p는 소수, m은 1 이상의 정수]이 입력되고, K개의 유한체 GF(pm)의 원소 R(i, 0), ..., R(i, K-1)∈GF(pm)[i∈{0, ..., N-1}에 대한 유한체 상의 연산을
e(R(i, 0), ..., R(i, K-1)) …(4)
로 한 경우에 있어서의, 연산
Πi=0 N-1e(R(i, 0), ..., R(i, K-1)) …(5)
를 계산하는 경우이어도 동일하다.
도 1은, 식 (5)을 계산하기 위한 종래 수법을 설명하기 위한 개념도다.
또한, 도 1은 N=6, i=0, ..., 5의 경우의 예이다.
도 1에 예시하는 바와 같이, 종래 수법으로 식 (5)를 계산하는 경우에는, 각 i에 대하여 각각 독립적으로 유한체 GF(pm) 연산이나 확대체 GF(pm) 연산으로 이루어지는 복수의 연산(점선으로 둘러싸인 연산)을 실행한다. 그리고, 그것들의 연산에 의해 각 i에 대하여 각각 독립적으로 얻어진 연산결과 e(R(i, 0), ..., R(i, K-1))를 확대체 GF(pm) 상에서 곱함으로써 식 (5)의 연산결과를 얻게 된다.
그렇지만, 상이한 i에 대한 식 (4)의 연산의 협동방법을 연구함으로써 식 (5)의 연산을 보다 효율적으로 연산할 수 있는 여지가 있다.
본 발명은 이러한 점을 감안하여 이루어진 것으로, K개의 유한체 GF(pm)의 원소 R(i, 0), ..., R(i, K-1)∈GF(pm)에 대한 유한체 상의 연산을 e(R(i, 0), ..., R(i, K-1))로 한 경우에 있어서의 연산 Πi=0 N-1e(R(i, 0), ..., R(i, K-1))을 효율적으로 연산하는 기술을 제공하는 것을 목적으로 한다.
본 발명에서는 N·K개(N≥2, K≥1)의 유한체 GF(pm)의 원소 R(i, k)∈GF(pm)[i∈{0, ..., N-1}, k∈{0, ..., K-1}, p는 소수, m은 1 이상의 정수]가 입력되고, 유한체 연산부가 K개의 유한체 GF(pm)의 원소 R(i, 0), ..., R(i, K-1)∈GF(pm)에 대한 유한체 상의 연산을 e(R(i, 0), ..., R(i, K-1))로 한 경우에 있어서의, 연산 Πi=0 N-1e(R(i, 0), ..., R(i, K-1))을 행하고, 그 연산결과를 출력한다.
상기 유한체 상의 연산 e(R(i, 0), ..., R(i, K-1))는, 각각, 유한체 GF(pm)의 d차 확대체 GF(pd ·m)(d≥2) 상의 확대체 연산을 일부에 포함한다. 당해 확대체 연산은 입력된 1 이상의 유한체 GF(pm)의 원소 R(i, k)∈{R(i, 0), ..., R(i, K-1)}에 의존하는 유한체 GF(pm) 상의 상 및/또는 유한체 GF(pm)의 원소 R(i, k)∈{R(i, 0), ..., R(i, K-1)}을, d차 확대체 GF(pd ·m)의 원소를 나타내는 다항식 poly(R(i, 0), ..., R(i, K-1))∈GF(pd ·m)으로 묘사하는 연산이다. 또한, 다항식 poly(R(i, 0), ..., R(i, K-1))∈GF(pd ·m)는 항수 d의 다항식이며, 그중 일부의 항 h∈{0, ..., d-1}의 계수 ah가 1 이상의 유한체 GF(pm)의 원소 R(i, k)에 의존하는 유한체 GF(pm) 상의 상 및/또는 유한체 GF(pm)의 원소 R(i, k)로 되고, 미리 정해진 일부의 항 r∈{0, ..., d-1}(r≠h)의 계수 ar이 미리 0∈GF(pm)로 된 것이다. 즉, 당해 다항식 poly(R(i, 0), ..., R(i, K-1))∈GF(pd ·m)의 적어도 일부의 계수는 반드시 0이 된다.
또한 상기 유한체 연산부의 제 1 연산부가, 어느 하나의 i1∈{0, ..., N-1}에 대하여, 1 이상의 유한체 GF(pm)의 원소 R(i1, k)에 의존하는 유한체 GF(pm) 상의 상(像) 및/또는 유한체 GF(pm)의 원소 R(i1, k)이 입력되고, 이것들에 대한 상기 확대체 연산을 행하고, 그것에 의해 얻어지는 다항식 poly(R(i1, 0), ..., R(i1, K-1))∈GF(pd·m)를 출력한다. 또한 상기 유한체 연산부의 제 2 연산부가, 어느 하나의 i2∈{0, ..., N-1}(i2≠i1)에 대하여, 1 이상의 유한체 GF(pm)의 원소 R(i2, k)에 의존하는 유한체 GF(pm) 상의 상 및/또는 유한체 GF(pm)의 원소 R(i2, k)이 입력되고, 이것들에 대한 상기 확대체 연산을 행하고, 그것에 의해 얻어지는 다항식 poly(R(i2, 0), ..., R(i2, K-1))∈GF(pd ·m)을 출력한다. 그리고, 상기 유한체 연산부의 제 3 연산부가 다항식 poly(R(i1, 0), ..., R(i1, K-1))과 다항식 poly(R(i2, 0), ..., R(i2, K-1))이 입력되고, 그것들의 곱 poly(R(i1, 0), ..., R(i1, K-1))·poly(R(i2, 0), ..., R(i2, K-1))∈GF(pd ·m)를 구하고, 당해 곱 poly(R(i1, 0), ..., R(i1, K-1))·poly(R(i2, 0), ..., R(i2, K-1))을 출력한다.
그리고, 집합 {0, ..., N-1}에 포함되는 L개[L은 짝수]의 서로 다른 복수의 원소로 이루어지는 부분집합의 각 원소를 각각 1회씩 i1 또는 i2로서 선택하고, 선택한 i1과 i2의 세트의 각각에 대하여 제 1 연산부와 제 2 연산부와 제 3 연산부에 의한 처리가 1회씩 실행됨으로써, L/2개의 상기 세트의 각각에 대응하는 상기 처리를 포함하는 루프 처리가 실행되고, 각각의 처리에 의해 얻어진 곱 poly(R(i1, 0), ..., R(i1, K-1))·poly(R(i2, 0), ..., R(i2, K-1))을 사용하여 Πi=0 N-1poly(R(i, 0), ..., R(i, K-1))∈GF(pd ·m)를 구한다.
전술한 바와 같이, 다항식 poly(R(i1, 0), ..., R(i1, K-1))∈GF(pd ·m)과, 다항식 poly(R(i2, 0), ..., R(i2, K-1))∈GF(pd ·m)의 각각의 적어도 일부의 계수는 반드시 0이 된다. 이러한 다항식끼리의 곱을 먼저 계산함으로써 0이 되는 계수에 대한 연산을 불필요하게 하여, 곱의 연산량을 삭감한다.
본 발명에서는, K개의 유한체 GF(pm)의 원소 R(i, 0), ..., R(i, K-1)∈GF(pm)에 대한 유한체 상의 연산을 e(R(i, 0), ..., R(i, K-1))로 한 경우에 있어서의 연산Πi=0 N-1e(R(i, 0), ..., R(i, K-1))를 효율적으로 연산할 수 있다.
도 1은 식 (5)를 계산하기 위한 종래 수법을 설명하기 위한 개념도.
도 2A는 본 형태의 유한체 연산장치의 기본구성을 설명하기 위한 블럭도이며, 도 2B는 유한체 연산부가 포함하는 4개의 GF(pd ·m) 연산부의 구성을 설명하기 위한 블럭도.
도 3은 실시형태의 유한체 연산장치의 처리의 개요를 설명하기 위한 도면.
도 4는 연산부의 연산의 특징을 설명하기 위한 도면.
도 5는 제 1 실시형태의 유한체 연산부의 기본구성을 설명하기 위한 블럭도.
도 6은 제 1 실시형태의 유한체 연산부의 기본구성을 설명하기 위한 블럭도.
도 7은 제 1 실시형태의 처리를 설명하기 위한 도면.
도 8은 제 1 실시형태의 처리를 설명하기 위한 도면.
도 9는 제 1 실시형태의 처리를 설명하기 위한 도면.
도 10은 제 1 실시형태의 처리를 설명하기 위한 도면.
도 11은 N이 5 이상의 홀수인 경우의 처리를 예시하기 위한 도면.
도 12는 제 2 실시형태의 유한체 연산부의 기본구성을 설명하기 위한 블럭도.
도 13은 제 2 실시형태의 유한체 연산부의 기본구성을 설명하기 위한 블럭도.
도 14는 제 2 실시형태의 처리를 설명하기 위한 도면.
도 15는 제 2 실시형태의 처리를 설명하기 위한 도면.
도 16은 N이 5 이상의 홀수인 경우의 처리를 예시하기 위한 도면.
도 17은 제 3 실시형태의 유한체 연산부의 기본구성을 설명하기 위한 블럭도.
도 18은 제 3 실시형태의 유한체 연산부의 기본구성을 설명하기 위한 블럭도.
도 19는 제 3 실시형태의 처리를 설명하기 위한 도면.
도 20은 제 3 실시형태의 처리를 설명하기 위한 도면.
(발명을 실시하기 위한 형태)
이하, 도면을 참조하여 본 발명의 실시형태를 설명한다.
[정의]
우선, 본 형태에서 사용하는 용어나 기호를 정의한다.
p: p는 정의 소수를 나타낸다. p의 구체예는 2나 3 등이다.
m: m은 1 이상의 정수를 나타낸다. m의 구체예는 홀수나 3 이상의 소수이며, 암호기술에서는, m=97, 167, 193, 239, 353, 509 등이 사용되는 경우가 많다.
d: d는 2 이상의 정수를 나타낸다.
L: L은 정의 짝수를 나타낸다.
N: N은 2 이상의 정수를 나타낸다.
K: K는 1 이상의 정수를 나타낸다.
i: i는 집합 {0, ..., N-1}의 요소를 나타낸다.
k: k는 집합 {0, ..., K-1}의 요소를 나타낸다.
GF(p): GF(p)는 위수(요소수)(p)의 유한체를 나타낸다. 위수 p가 소수이기 때문에 GF(p)는 소체(素體)이다. 유한체 GF(p)는, 예를 들면, p를 법으로 한 잉여
β mod p … (6)
으로 구성할 수 있다. 또, 유한체 GF(p) 상의 연산은, 예를 들면, p를 법으로 한 잉여 연산에 의해 용이하게 구성할 수 있다. 예를 들면, 유한체 GF(p) 상의 곱 β·γ∈GF(p)는 (β·γ) mod p에 의해 실현되고, 유한체 GF(p) 상의 가산 β+γ∈GF(p)는 (β+γ) mod p에 의해 실현할 수 있다.
GF(pm): m≥2의 경우에는 GF(pm)는 유한체 GF(p)를 m차 확대한 위수 pm의 확대체를 나타낸다. m=1의 경우에는, GF(pm)은 GF(pm)=GF(p)가 되는 소체를 나타낸다.
또한, 유한체 GF(p)를 m차 확대한 확대체 GF(pm)는 유한체 GF(p)를 계수로 하는 기약 다항식의 근을 부정원으로 하고, 유한체 GF(p)의 원소를 계수로 한 항수 m의 1변수 또는 타변수의 다항식으로 구성할 수 있다. 예를 들면, 1변수 다항식에 의해 확대체 GF(pm)를 구성하는 경우, 확대체 GF(pm)는 유한체 GF(p)를 계수로 하는 m차의 기약 다항식 ipoly(ω)=0의 근을 ω∈GF(pm)으로 하고, 유한체 GF(p)의 원소를 계수 κ0, ..., κm-1∈GF(p)로 한 다항식
κ01·ω+...+κm-1·ωm-1∈GF(pm) …(7)
으로 된다. 또, 유한체 GF(p)의 원소를 확대체 GF(pm)의 원소로 복사하는 구체적인 사상(寫像)의 예는, distortion 사상이다. 또한, 「계수」는 정수항의 계수도 포함하는 개념이다.
또한 확대체 GF(pm) 상의 가산은 확대체 GF(pm)를 나타내는 다항식 간의 가산에 의해 실현할 수 있다. 단, 당해 다항식 간의 가산에 있어서의 계수 간의 가산은 유한체 GF(p) 상의 가산이 된다. 예를 들면, κ01·ω+...+κm-1·ωm-1∈GF(pm)과 ν01·ω+...+νm-1·ωm-1∈GF(pm)(ν0, ..., νm-1∈GF(p))과의 가산 결과는 {(κ00)+(κ11)·ω+...+(κm-1m-1)·ωm-1}∈GF(pm)이 된다. 단, (κ00)∈GF(p), (κ11)∈GF(p), ..., (κm-1m-1)∈GF(p)이다.
또한, 확대체 GF(pm) 상의 승산은, 확대체 GF(pm)를 나타내는 다항식 간의 승산결과에 대하여, 그 다항식의 부정원을 근으로 갖는 기약 다항식을 법으로 한 잉여를 취함으로써 실현할 수 있다. 예를 들면, κ01·ω+...+κm-1·ωm-1∈GF(pm)과 ν01·ω+...+νm-1·ωm-1∈GF(pm)와의 승산은, (κ01·ω+...+κm-1·ωm-1)·(ν01·ω+...+νm-1·ωm-1)에 대하여, 기약 다항식 ipoly(ω)를 법으로 한 잉여를 취함으로써 실현할 수 있다. 구체적으로는, (κ01·ω+...+κm-1·ωm-1)·(ν01·ω+...+νm-1·ωm-1)에 ipoly(ω)=0을 대입하여 얻어진 m차 이하의 다항식이 확대체 GF(pm) 상의 곱으로 된다.
GF(pd ·m):GF(pd ·m)는 유한체 GF(pm)를 d차 확대한 d차 확대체를 나타낸다. 유한체 GF(pm)의 d차 확대체 GF(pd ·m)는 유한체 GF(pm)를 계수로 하는 기약 다항식의 근을 부정원으로 하고, 유한체 GF(pm)의 원소를 계수로 한 항수 d의 1변수 또는 타변수의 다항식에 의해 구성할 수 있다. 상기에서는 1변수 다항식에 의해 확대체를 구성하는 예를 나타냈기 때문에, 여기에서는 2변수 다항식에 의해 6차 확대체를 구성하는 예를 나타낸다.
유한체 GF(pm)를 계수로 하는 기약 다항식 ipoly1(σ)=0의 근을 σ∈GF(p6m)로 하고, 유한체 GF(pm)를 계수로 하는 ipoly2(ρ)=0의 근을 ρ∈GF(p6m)로 하면, 유한체 GF(p6m)의 원소는 유한체 GF(pm)의 원소를 계수 a5, ..., a0∈GF(pm)로 한 다항식
a0+a1·ρ+a2·ρ2+a3·σ+a4·ρ·σ+a5·ρ2·σ∈GF(p6m) …(8)
으로 표현할 수 있다. 또한, p=3의 경우의 ipoly1(σ)=0의 구체예는 σ2+1=0이며, ipoly2(σ)=0의 구체예는 ρ3-ρ-b=0(b∈{-1, 1})이다. 또한, 유한체 GF(pm)의 원소를 확대체 GF(p6m)의 원소로 복사하는 구체적인 사상의 예는 distortion 사상이다.
또, d차 확대체 GF(pd ·m) 상의 가산은 d차 확대체 GF(pd ·m)를 나타내는 다항식 간의 가산에 의해 실현할 수 있다. 단, 당해 다항식 간의 가산에 있어서의 계수 간의 가산은 유한체 GF(pm) 상의 가산으로 된다. 예를 들면, a0+a1·ρ+a2·ρ2+a3·σ+a4·ρ·σ+a5·ρ2·σ∈GF(p6m)와 ν0+a1·ρ+ν2·ρ23·σ+ν4·ρ·σ+ν5·ρ2·σ∈GF(p6m)(ν5, ..., ν0∈GF(pm))의 가산 결과는 {(a00)+(a11)·ρ+(a22)·ρ2+(a33)·σ+(a44)·ρ·σ+(a55)·ρ2·σ}∈GF(p6m). 단, (a00)∈GF(pm), (a11)∈GF(pm), ..., (a55)∈GF(pm)이다.
또, d차 확대체 GF(pd ·m) 상의 승산은 d차 확대체 GF(pd ·m)를 나타내는 다항식 간의 승산결과에 대하여, 그 다항식의 부정원을 근으로 갖는 기약 다항식을 법으로 한 잉여를 취함으로써 실현할 수 있다. 예를 들면, a0+a1·ρ+a2·ρ2+a3·σ+a4·ρ·σ+a5·ρ2·σ∈GF(p6m)과 ν0+a1·ρ+ν2·ρ23·σ+ν4·ρ·σ+ν5·ρ2·σ∈GF(p6m)와의 승산은 (a0+a1·ρ+a2·ρ2+a3·σ+a4·ρ·σ+a5·ρ2·σ)·(ν0+a1·ρ+ν2·ρ23·σ+ν4·ρ·σ+ν5·ρ2·σ)에 대하여, 기약 다항식 ipoly1(σ)이나 ipoly2(ρ)를 법이라고 한 잉여를 취함으로써 실현할 수 있다. 구체적으로는, (a0+a1·ρ+a2·ρ2+a3·σ+a4·ρ·σ+a5·ρ2·σ)·(ν0+a1·ρ+ν2·ρ23·σ+ν4·ρ·σ+ν5·ρ2·σ)에 ipoly1(σ)=0이나 ipoly2(ρ)=0을 대입하여 얻어진 6차 이하의 다항식이 확대체 GF(p6m) 상의 곱으로 된다.
또한, 이하에 설명하는 각 처리에 있어서의, 다항식의 입력이나 다항식의 연산이나 다항식의 출력은 부정원과 계수를 포함하는 다항식 그 자체의 입력, 연산, 출력이어도 되고, 다항식을 특정하는 계수로 이루어지는 벡터의 입력, 연산, 출력이어도 된다.
R(i, k): R(i, k)은 유한체 GF(pm)의 원소를 나타낸다.
E: E는 유한체 GF(pm) 상에서 정의된 타원곡선을 나타낸다. 아핀(affine) 좌표판의 Weierstrass 방정식
Y2+A1·X·Y+A3·Y=X3+A2·X2+A4·X+A6 …(9)
(단, A1, A2, A3, A4, A6∈GF(pm))을 충족시키는 X, Y∈GF(pm)로 이루어지는 점(X, Y)의 집합에 무한 원점이라고 불리는 특별한 점 O를 부가한 것으로 정의된다.
Eb: Eb는 유한체 GF(3m) 상에서 정의된 초특이 타원곡선을 나타낸다.
Y2=X3-X+b(b∈{-1, 1}) …(10)
e(R(i, 0), ..., R(i, K-1)): e(R(i, 0), ..., R(i, K-1))는 K개의 유한체 GF(pm)의 원소 R(i, 0), ..., R(i, K-1)∈GF(pm)에 대한 유한체 상의 연산을 나타낸다. K=4의 경우의 e(R(i, 0), ..., R(i, K-1))의 구체예는 R(i, 0), R(i, 1), R(i, 2), R(i, 3)을, 각각, 유한체 GF(pm) 상에서 정의된 타원곡선 E 상의 2개의 점 P(X1[i], Y1[i]) 및 점 Q(X2[i], Y2[i])의 각 아핀 좌표점 X1[i], Y1[i], X2[i], Y2[i]∈GF(pm)으로 한 페어링 연산 e(P(X1[i], Y1[i]), Q(X2[i], Y2[i]))이다. 또, 페어링 연산 e(P(X1[i], Y1[i]), Q(X2[i], Y2[i]))의 구체예는 Tate 페어링이나 ηT 페어링이나 개량 ηT 페어링 연산 등의 표수 3(p=3)의 페어링 연산이나, 표수 2(p=2)의 페어링 연산이다.
[개요]
다음에 본 형태의 개요를 설명한다.
<구성>
도 2A는 본 형태의 유한체 연산장치(1)의 기본 구성을 설명하기 위한 블럭도이다. 또한 도 2B는 유한체 연산부(20)가 포함하는 4개의 GF(pd ·m) 연산부 22-1∼4의 구성을 설명하기 위한 블럭도이다.
도 2A에 예시하는 바와 같이, 본 형태의 유한체 연산장치(1)는 입력부(10)와, 유한체 연산부(20)와, 출력부(30)를 갖는다. 유한체 연산부(20)는 유한체 GF(pm) 상의 연산을 행하는 1 이상의 GF(pm) 연산부 21-1∼α11≥1)과, 유한체 GF(pd·m) 상의 연산을 행하는 4 이상의 GF(pd ·m) 연산부 22-1∼α22≥4)와, 제어부(23)와, 메모리(24)를 갖는다. 또한, 유한체 연산장치(1)는 CPU(central processing unit), RAM(random-access memory), ROM(read-only memory), 입출력 인터페이스 등을 구비한 공지의 컴퓨터에 소정의 프로그램이 읽혀져서 구성된다. 즉, GF(pm) 연산부 21-1∼α1, GF(pd ·m) 연산부 22-1∼α2 및 제어부(23)는 소정의 프로그램이 CPU에 읽혀져서 구축되는 기능부이며, 메모리(24)는 RAM, 캐시 메모리, 레지스터, 하드 디스크 등이다. 또한 유한체 연산부(20)의 적어도 일부가 집적회로로 구성되어도 된다.
<처리>
다음에 본 형태의 유한체 연산장치(1)의 처리의 개요를 설명한다.
도 3은 본 형태의 유한체 연산장치(1)의 처리의 개요를 설명하기 위한 도면이다. 또한 도 4는 연산부 22-3의 연산의 특징을 설명하기 위한 도면이다. 또한, 도 3은 N=6의 경우의 1예를 나타내고, 도 4는 d=6의 경우의 1예를 나타내는데, 이것들은 본 발명을 한정하지 않는다. 또, 이하에서는, 상세하게 설명하지 않지만, 유한체 연산장치(1)에서 실행되는 각 처리는 제어부(23)의 제어하에 실행된다. 또, 각 연산부로부터 출력된 데이터는, 차례로, 메모리(24)에 저장된다. 메모리(24)에 저장된 데이터는 필요에 따라 연산부로부터 읽어내지고, 그 연산부에서의 연산에 이용된다.
유한체 연산장치(1)에서의 처리가 개시되면, 우선, 그 입력부(10)에 N·K개의 유한체 GF(pm)의 원소 R(i, k)∈GF(pm)이 입력되고, 이들 원소 R(i, k)∈GF(pm)은 유한체 연산부(20)에 보내진다. 유한체 연산부(20)는 K개의 유한체 GF(pm)의 원소 R(i, 0), ..., R(i, K-1)∈GF(pm)에 대한 유한체 상의 연산을 e(R(i, 0), ..., R(i, K-1))로 한 경우에 있어서의, 연산 Πi=0 N-1e(R(i, 0), ..., R(i, K-1))을 행하고, 그 연산결과를 출력부(30)에 전달한다. 출력부(30)는 전달된 연산결과를 출력한다.
[연산 e(R(i, 0), ..., R(i, K-1))이 포함하는 확대체 연산]
유한체 상의 연산 e(R(i, 0), ..., R(i, K-1))는, 각각, 유한체 GF(pm)의 d차 확대체 GF(pd ·m)(d≥2) 상의 확대체 연산을 일부에 포함한다. 당해 확대체 연산은 입력된 1 이상의 유한체 GF(pm)의 원소 R(i, k)∈{R(i, 0), ..., R(i, K-1)}에 의존하는 유한체 GF(pm) 상의 상 및/또는 유한체 GF(pm)의 원소 R(i, k)∈{R(i, 0), ..., R(i, K-1)}을, d차 확대체 GF(pd ·m)의 원소를 나타내는 다항식 poly(R(i, 0), ..., R(i, K-1))∈GF(pd ·m)로 복사하는 연산이다. 즉, 당해 확대체 연산은 유한체 GF(pm)로부터 d차 확대체 GF(pd·m)로의 사상이다.
또, 당해 확대체 연산에 의해 얻어지는 다항식 poly(R(i, 0), ..., R(i, K-1))∈GF(pd ·m)은 일부의 항 h∈{0, ..., d-1}의 계수 ah가 1 이상의 유한체 GF(pm)의 원소 R(i, k)에 의존하는 유한체 GF(pm) 상의 상 및/또는 유한체 GF(pm)의 원소 R(i, k)로 되고, 미리 정해진 일부의 항 r∈{0, ..., d-1}(r≠h)의 계수 ar이 미리 0∈GF(pm)으로 되어 있다. 여기에서, d차 확대체 GF(pd·m)의 원소를 나타내는 다항식 poly(R(i, 0), ..., R(i, K-1))∈GF(pd ·m)의 항수는 2 이상(d≥2)이기 때문에, 유한체 GF(pm)의 원소를, 일부의 항의 계수가 미리 0∈GF(pm)으로 된 다항식으로 복사하는 것은 가능하다.
또한, 이러한 확대체 연산의 구체예는, 전술의 「개량 ηT 페어링 연산 알고리즘」의 6차 확대체 GF(36m) 상의 연산이다. 즉, 이하의 식 (11)이나 식 (12)의 연산은 상기의 확대체 연산의 구체예이다.
f=-y1·u+y2·σ+y1·ρ∈GF(36m) …(11)
g=-u2+y1·y2·σ-u·ρ-ρ2∈GF(36m) …(12)
또한, 이것들은 p=3, d=6, K=4의 경우의 예이며, R(i, 0), R(i, 1), R(i, 2), R(i, 3)을, 각각, 초특이 타원곡선 Eb(식 (10)) 상의 2개의 점 P(X1, Y1) 및 점 Q(X2, Y2)의 각 아핀 좌표점 X1, Y1, X2, Y2∈GF(3m)로 하고, 당해 각 아핀 좌표점 X1, Y1, X2, Y2 또는 그 상을 각각 x1, y1, x2, y2∈GF(3m)으로 하고, u=x1+x2+c∈GF(3m)으로 하고, 기약 다항식을 σ2+1=0 및 ρ3-ρ-b=0로 한 것이다.
상기한 바와 같이, 유한체 GF(pm)의 6차 확대체 GF(p6m)의 원소를 나타내는 다항식의 항수의 최대값은 6이지만, 다항식 「f=-y1·u+y2·σ+y1·ρ∈GF(36m)」은 부정원 ρ2, ρ·σ, ρ2·σ∈GF(p6m)의 항의 계수가 미리 0으로 되어 있고, 다항식 「g=-u2+y1·y2·σ-u·ρ-ρ2∈GF(36m)」은 부정원 ρ·σ, ρ2·σ∈GF(p6m)의 항의 계수가 미리 0으로 되어 있다(식 (8) 참조). 즉, 식 (11), (12)는 이하의 식 (13), (14)와 같이 표현할 수 있다.
f=-y1·u+y1·ρ+0·ρ2+y2·σ+0·ρ·σ+0·ρ2·σ∈GF(36m)…(13)
g=-u2-u·ρ-ρ2+y1·y2·σ+0·ρ·σ+0·ρ2·σ∈GF(36m)…(14)
기타, 이하에 나타내는 distortion 사상도 상기의 특징을 갖는 확대체 연산의 일례이다.
-x2+ρ∈GF(36m) …(15)
y2·σ∈GF(36m) …(16)
식 (15), (16)은 이하의 식 (17), (18)과 같이 표현할 수 있다.
-x2+ρ+0·ρ2+0·σ+0·ρ·σ+0·ρ2·σ∈GF(p6m) …(17)
0+0·ρ+0·ρ2+y2·σ+0·ρ·σ+0·ρ2·σ∈GF(p6m) …(18)
동일한 예는, 위수 pm의 유한체 GF(pm)의 원소를, 그것보다도 위수가 큰 위수 pd·m(d≥2)의 d차 확대체 GF(3d·m)에 사상하는 연산에서 수많이 존재한다.
[유한체 연산부(20)의 연산]
상기의 연산 e(R(i, 0), ..., R(i, K-1))이 포함하는 확대체 연산은 유한체 연산부(20)가 포함하는 도 2B에 나타낸 GF(pd ·m) 연산부(22)에 의해 실행된다.
우선, 이 GF(pd ·m) 연산부(22)의 연산부(22-1)(제 1 연산부)에, 1 이상의 유한체 GF(pm)의 원소 R(i1, k)(i1∈{0, ..., N-1})에 의존하는 유한체 GF(pm) 상의 상 및/또는 유한체 GF(pm)의 원소 R(i1, k)가 입력된다. 또한, 「1 이상의 유한체 GF(pm)의 원소 R(i1, k)에 의존하는 유한체 GF(pm) 상의 상」은 유한체 연산부(20) 중 어느 하나의 GF(pm) 연산부(21)에 의해 행해진 연산결과이다. 그 구체예는 전술의 「개량 ηT 페어링 연산 알고리즘」의 유한체 GF(3m) 상의 연산결과이다. 즉, 이하의 연산결과가 「1 이상의 유한체 GF(pm)의 원소 R(i1, k)에 의존하는 유한체 GF(pm) 상의 상」의 구체예이다.
y1=-y1∈GF(3m) …(19)
u=x1+x2+b∈GF(3m) …(20)
u=x1+x2+c∈GF(3m) …(21)
y1=-y1∈GF(3m) …(22)
x2=x2 9∈GF(3m) …(23)
y2=y2 9∈GF(3m) …(24)
또한, 이것들은 유한체 GF(pm)의 원소 R(i, 0), R(i, 1), R(i, 2), R(i, 3)을, 각각, 초특이 타원곡선 Eb(식 (10)) 상의 2개의 점 P(X1, Y1) 및 점 Q(X2, Y2)의 각 아핀 좌표점 X1, Y1, X2, Y2∈GF(3m)으로 하고, 당해 각 아핀 좌표점 X1, Y1, X2, Y2 또는 그 상을 각각 x1, y1, x2, y2∈GF(3m)으로 한 경우의 예이다. 동일한 유한체 GF(pm) 상의 연산은 수많이 존재한다.
연산부(22-1)는 1 이상의 유한체 GF(pm)의 원소 R(i1, k)에 의존하는 유한체 GF(pm) 상의 상 및/또는 유한체 GF(pm)의 원소 R(i1, k)에 대한 상기의 확대체 연산을 행하고, 그것에 의해서 얻어지는 다항식
poly(R(i1, 0), ..., R(i1, K-1))∈GF(pd ·m) …(25)
을 출력한다.
다음에 당해 GF(pd ·m) 연산부(22)의 연산부(22-2)(제 2 연산부)에, 1 이상의 유한체 GF(pm)의 원소 R(i2, k)(i2∈{0, ..., N-1}(i2≠i1))에 의존하는 유한체 GF(pm) 상의 상 및/또는 유한체 GF(pm)의 원소 R(i2, k)이 입력된다. 또한, 「1 이상의 유한체 GF(pm)의 원소 R(i2, k)에 의존하는 유한체 GF(pm) 상의 상」은 유한체 연산부(20) 중 어느 하나의 GF(pm) 연산부(21)에 의해 행해진 연산결과이다. 연산부(22-2)는 이것들에 대한 상기의 확대체 연산을 행하고, 그것에 의해서 얻어지는 다항식
poly(R(i2, 0), ..., R(i2, K-1))∈GF(pd ·m) …(26)
을 출력한다.
다음에 당해 GF(pd·m) 연산부(22)의 연산부(22-3)(제 3 연산부)에, 상기의 다항식 poly(R(i1, 0), ..., R(i1, K-1))과 다항식 poly(R(i2, 0), ..., R(i2, K-1))가 입력된다. 연산부(22-3)는 그것들의 곱
poly(R(i1, 0), ..., R(i1, K-1))·poly(R(i2, 0), ..., R(i2, K-1))∈GF(pd·m) …(27)
을 구하고, 당해 곱 poly(R(i1, 0), ..., R(i1, K-1))·poly(R(i2, 0), ..., R(i2, K-1))∈GF(pd ·m)을 출력한다.
또한, 본 형태의 연산부(22-3)는 다항식 poly(R(i1, 0), ..., R(i1, K-1))의 미리 0∈GF(pm)으로 된 항, 및/또는, 다항식 poly(R(i2, 0), ..., R(i2, K-1))의 미리 0∈GF(pm)으로 한 항을 피연산자로 한 연산을 행하지 않고, 곱 poly(R(i1, 0), ..., R(i1, K-1))·poly(R(i2, 0), ..., R(i2, K-1))을 구한다. 도 4의 예에서는, 연산부(22-1)로부터 poly(R(i1, 0), ..., R(i1, K-1))=a0[i1]+a1[i1]·ρ+a2[i1]·ρ2+a3[i1]·σ+0·ρ·σ+0·ρ2·σ가 출력되고, 연산부(22-2)로부터 poly(R(i2, 0), ..., R(i2, K-1))=a0[i2]+a1[i2]·ρ+a2[i2]·ρ2+a3[i2]·σ+0·ρ·σ+0·ρ2·σ가 출력되고, 연산부(22-3)가 이들 6차 확대체 GF(p6m) 상의 곱을 구한다. 이 예에서는, 각 다항식의 부정원 ρ·σ 및 ρ2·σ의 계수가 미리 0으로 정해져 있고, 부정원 ρ·σ 및 ρ2·σ의 계수를 피연산자로 한 연산은 행해지지 않는다. 이와 같이, 본 형태에서는 일부의 항의 계수가 미리 0으로 정해진 다항식끼리 승산을 행함으로써 연산량을 삭감한다.
제어부(23)는 집합 {0, ..., N-1}의 L개[L은 짝수]의 상이한 원소로 이루어지는 부분집합의 각 원소를 각각 1회씩 i1 또는 i2로 하고, i1과 i2를 변경하면서 연산부(22-1∼22-3)에 의한 일련의 처리를 L/2회 실행시키는 루프 처리를 실행시킨다(가로의 루프). 바꿔 말하면, 제어부(23)는 집합 {0, ..., N-1}에 포함되는 L개[L은 짝수]의 서로 상이한 복수의 원소로 이루어지는 부분집합의 각 원소를 각각 1회씩 i1 또는 i2로서 선택하고, 선택한 i1과 i2의 세트의 각각에 대하여 연산부(22-1∼22-3)에 의한 일련의 처리를 1회씩 실행시키고, L/2개의 상기 세트(i1, i2)의 각각에 대응하는 상기 일련의 처리를 포함하는 루프 처리를 실행시킨다. 또, 필요에 따라, 제어부(23)는 당해 일련의 처리를 L/2회 실행시키는 루프 처리를 복수회 실행시킨다(세로의 루프). 또한, N이 짝수이고, L=N이며, 상기의 부분집합이 집합 {0, ..., N-1}인 경우, 본 형태의 효과가 가장 커진다.
도 3의 예에서는, i=0과 i=1에 대응하는 당해 일련의 처리(스텝 S11-j)와, i=2와 i=3에 대응하는 당해 일련의 처리(스텝 S12-j)와, i=4와 i=5에 대응하는 당해 일련의 처리(스텝 S13-j)로 이루어지는 루프 처리(가로의 루프)가 복수회(j=1, 2,...) 실행된다.
각각의 상기 일련의 처리에 의해 연산부(22-3)로부터 출력된 곱 poly(R(i1, 0), ..., R(i1, K-1))·poly(R(i2, 0), ..., R(i2, K-1))은 연산부(22-4)(제 4 연산부)에 입력된다. 연산부(22-4)는, 이것들을 사용하여
Πi=0 N-1poly(R(i, 0), ..., R(i, K-1))∈GF(pd ·m) …(28)
을 구하고, 당해 Πi=0 N-1poly(R(i, 0), ..., R(i, K-1))를 출력한다. 예를 들면, N≥4의 경우, 연산부(22-4)는 각각의 상기 일련의 처리에 의해 연산부(22-3)로부터 출력된 곱 poly(R(i1, 0), ..., R(i1, K-1))·poly(R(i2, 0), ..., R(i2, K-1))의 승산값을 사용하여 Πi=0 N-1poly(R(i, 0), ..., R(i, K-1))∈GF(pd ·m)를 구한다.
또한, 연산부(22-4)는 각각의 상기 일련의 처리에 의해 연산부(22-3)로부터 출력된 곱 poly(R(i1, 0), ..., R(i1, K-1))·poly(R(i2, 0), ..., R(i2, K-1))을 모두 메모리(24)에 저장하고, 모든 당해 곱의 계산 종료 후에 그것들의 승산값을 정리하여 계산해도 된다. 그러나, 메모리(24)의 용량 절약의 관점에서는, 연산부(22-4)는, 상기 일련의 처리가 1회 실행될 때마다, 연산부(22-3)로부터 출력된 곱 poly(R(i1, 0), ..., R(i1, K-1))·poly(R(i2, 0), ..., R(i2, K-1))을 직전의 승산값(초기값은 곱셈 단위원 1)에 곱해감으로써 승산값을 구하는 것이 바람직하다. 바꿔 말하면, 상기 일련의 처리가 1회 실행될 때마다, 그때까지 얻어진 곱 poly(R(i1, 0), ..., R(i1, K-1))·poly(R(i2, 0), ..., R(i2, K-1))의 승산값이 갱신되는 것이 바람직하다.
[제 1 실시형태]
다음에 본 발명의 제 1 실시형태를 설명한다.
본 형태는, 본 발명을 개량 ηT 페어링 연산 알고리즘의 g의 연산부분에 적용한 예이다.
즉, 본 형태에서는, K=4, p=3, d=6이고, m이 1이상의 홀수이고, N이 4 이상의 짝수이고, L=N이고, 유한체 GF(pm)의 원소 R(i, 0), R(i, 1), R(i, 2), R(i, 3)이, 각각, 유한체 GF(pm) 상에서 정의된 타원곡선 E 상의 2개의 점 P(X1[i], Y1[i]) 및 점 Q(X2[i], Y2[i])의 각 아핀 좌표점 X1[i], Y1[i], X2[i], Y2[i]∈GF(pm)이며, 연산 e(R(i, 0), ..., R(i, K-1))가 페어링 연산 e(P(X1[i], Y1[i]), Q(X2[i], Y2[i]))이며, 연산 Πi=0 N-1e(R(i, 0), ..., R(i, K-1))가 멀티 페어링 연산 Πi=0 N-1e(P(X1[i], Y1[i]), Q(X2[i], Y2[i]))이다. 또한 본 형태에서는, 타원곡선으로서 식 (10)의 초특이 타원곡선 Eb를 사용한다(b=-1이여도 되고, b=1이어도 됨). 또한 본 형태의 확대체 연산은 입력부에 입력된 각 아핀 좌표점 X1[i], Y1[i], X2[i], Y2[i] 또는 그 상을 각각 x1[i], y1[i], x2[i], y2[i]로 하고, u[i]=x1[i]+x2[i]+c∈GF(3m)으로 하고, 유한체 GF(3m)의 원소를 계수로 하는 기약 다항식 σ2+1=0의 근을 부정원 σ로 하고, 기약 다항식 ρ3-ρ-b=0의 근을 부정원 ρ로 한 경우에 있어서의, 유한체 GF(3m)의 6차 확대체 GF(36m)의 원소를 나타내는 다항식
g[i]=-{u[i]}2+y1[i]·y2[i]·σ-u[i]·ρ-ρ2∈GF(36m) …(29)
을 구하는 연산이다.
<구성>
도 5 및 도 6은 제 1 실시형태의 유한체 연산부(120)의 기본구성을 설명하기 위한 블럭도이다.
제 1 실시형태의 유한체 연산장치는 도 2A에 예시한 유한체 연산부(20)를 도 5 및 도 6의 유한체 연산부(120)로 치환한 것이다. 이하에서는, 유한체 연산부(120)의 구성만을 설명한다.
도 5 및 도 6에 예시하는 바와 같이, 본 형태의 유한체 연산부(120)는 유한체 GF(3m) 상의 연산을 행하는 GF(3m) 연산부(121-1∼4)와, 유한체 GF(3m)의 6차 확대체 GF(36m) 상의 연산을 행하는 GF(36m) 연산부(122-1∼9)와, 제어부(123)와, 메모리(124)와, 유한체 GF(3) 상의 연산을 행하는 GF(3) 연산부(125)를 갖는다.
또한, 유한체 연산부(120)는 CPU, RAM, ROM 등을 구비한 공지 또는 전용의 컴퓨터와 특별한 프로그램을 갖는 특별한 장치이다. 즉, GF(3m) 연산부(121-1∼4), GF(36m) 연산부(122-1∼9), GF(3) 연산부(125) 및 제어부(123)는 소정의 프로그램이 CPU에 읽혀져서 구축되는 기능부이며, 메모리(124)는 RAM, 캐시 메모리, 레지스터, 하드 디스크 등이다. 또한 유한체 연산부(120) 중 적어도 일부가 집적회로에 의해 구성되어도 된다.
<처리>
도 7로부터 도 10은 제 1 실시형태의 처리를 설명하기 위한 도면이다. 이하, 이들 도면을 사용하여 본 형태의 처리를 설명한다.
우선, 입력부(10)(도 2A)에, 멀티 페어링 연산 Πi=0 N-1e(P(X1[i], Y1[i]), Q(X2[i], Y2[i]))를 구성하는 각 페어링 연산 e(P(X1[i], Y1[i]), Q(X2[i], Y2[i]))의 입력값인, 초특이 타원곡선 Eb 상의 2개의 점 P(X1[i], Y1[i]) 및 점 Q(X2[i], Y2[i])의 각 아핀 좌표점 X1[i], Y1[i], X2[i], Y2[i]∈GF(3m)(i∈{0, ..., N-1})이 입력되고, 유한체 연산부(120)(도 5 및 도 6)의 메모리(124)에 저장된다. 이하, 메모리(124)에 저장된 X1[i], Y1[i], X2[i], Y2[i]∈GF(3m)을 x1[i], y1[i], x2[i], y2[i]∈GF(3m)으로 표기한다(스텝 S101).
[b=1의 경우의 처리(S102∼S105)]
b=1의 초특이 타원곡선 Eb를 사용하는 경우에는 스텝 S102∼S105의 처리가 실행된다. b=-1의 초특이 타원곡선 Eb를 사용하는 경우에는 스텝 S102∼S105의 처리는 실행하지 않는다.
우선, 제어부(123)가 i=0로 설정하고, 그 설정내용을 메모리(124)에 저장한다(스텝 S102). 다음에 GF(3m) 연산부(121-1)가 메모리(124)로부터 y1[i]을 읽어내고, 유한체 GF(3m) 상의 연산
y1[i]={-y1[i]}∈GF(3m) …(30)
을 행하고, 그 연산결과를 새로운 y1[i]으로 하여 메모리(124)에 저장한다(스텝 S103).
다음에 제어부(123)가 i=N-1인지의 여부를 판정한다(스텝 S104). 여기에서, i=N-1이 아니면, 제어부(123)는 i+1를 새로운 i에 설정하고, 그 설정내용을 메모리(124)에 저장하고 처리를 스텝 S103으로 되돌린다(스텝 S105). 한편, i=N-1이면, b=1의 경우의 처리(S102∼S105)를 종료한다([b=1의 경우의 처리(S102∼S105)]의 설명끝).
다음에 GF(36m) 연산부(122-7)(제 5 연산부를 구성)가 메모리(124)로부터 x1[0], y1[0], x2[0], y2[0]∈GF(3m)를 읽어들이고, 6차 확대체 GF(36m) 상의 연산
f=-y1[0]·(x1[0]+x2[0]+b)+y2[0]·σ+y1[0]·ρ∈GF(36m) …(31)
을 행하고, 그 연산결과 f∈GF(36m)을 메모리(124)에 저장한다(스텝 S106).
다음에 GF(36m) 연산부(122-7)가 메모리(124)로부터 x1[1], y1[1], x2[1], y2[1]∈GF(3m)을 읽어들이고, 6차 확대체 GF(36m) 상의 연산
f'=-y1[1]·(x1[1]+x2[1]+b)+y2[1]·σ+y1[1]·ρ∈GF(36m)…(32)
을 행하고, 그 연산결과 f'∈GF(36m)를 메모리(124)에 저장한다. 또한, GF(36m) 연산부(122-8)가 메모리(124)로부터 연산결과 f 및 f'을 읽어들이고, 6차 확대체 GF(36m) 상의 연산
f=f·f'∈GF(36m) …(33)
을 행하고, 그 연산결과를 새로운 f∈GF(36m)로 하여 메모리(124)에 저장한다(스텝 S107).
다음에, 제어부(123)가 i=2로 설정하고, 그 설정내용을 메모리(124)에 저장한다(스텝 S108).
다음에 GF(36m) 연산부(122-7)가 메모리(124)로부터 x1[i], y1[i], x2[i], y2[i]∈GF(3m)을 읽어들이고, 6차 확대체 GF(36m) 상의 연산
f'=-y1[i]·(x1[i]+x2[i]+b)+y2[i]·σ+y1[i]·ρ∈GF(36m) …(34)
을 행하고, 그 연산결과를 새로운 f'∈GF(36m)로 하여 메모리(124)에 저장한다(스텝 S109).
다음에 GF(36m) 연산부(122-8)(제 5 연산부를 구성)가 메모리(124)로부터 연산결과 f 및 f'을 읽어들이고, 6차 확대체 GF(36m) 상의 연산
f=f·f'∈GF(36m) …(35)
을 행하고, 그 연산결과를 새로운 f∈GF(36m)로 하여 메모리(124)에 저장한다(스텝 S110).
다음에 제어부(123)가 i=N-1인지의 여부를 판정한다(스텝 S111). 여기에서, i=N-1이 아니면, 제어부(123)는 i+1을 새로운 i로 설정하고, 그 설정내용을 메모리(124)에 저장하고 처리를 스텝 S109으로 되돌린다(스텝 S113). 한편, i=N-1이면, 제어부(123)가 b를 c의 초기값으로서 설정하고(c=b), 그 설정내용을 메모리(124)에 저장한다(스텝 S112).
또한, 스텝 111에서 i=N-1로 판정될 때까지 스텝 S106∼S110에서 실행되는 처리가, b=-1의 경우에는, x1[i]=X1[i], y1[i]=Y1[i], x2[i]=X2[i], y2[i]=Y2[i]로 하고, b=1의 경우에는, x1[i]=X1[i], y1[i]=-Y1[i], x2[i]=X2[i], y2[i]=Y2[i]로 하고, f=Πi=0 N-1(-y1[i]·(x1[i]+x2[i]+b)+y2[i]·σ+y1[i]·ρ)∈GF(36m)의 연산을 행하고, 당해 f를 출력하는 처리에 상당한다.
다음에 제어부(123)가 j=0으로 설정하고, 그 설정내용을 메모리(124)에 저장한다(스텝 S114). 또한, 제어부(123)가 i=0으로 설정하고, 그 설정내용을 메모리(124)에 저장한다(스텝 S115).
다음에 GF(3m) 연산부(121-2)가 메모리(124)로부터 x1[i], x2[i], c를 읽어들이고, 유한체 GF(3m) 상에서
u[i]=x1[i]+x2[i]+c∈GF(3m) …(36)
의 연산을 행하고, 그 연산결과 u[i]를 메모리(124)에 저장한다(스텝 S116).
다음에 제어부(123)가 i=N-1인지의 여부를 판정한다(스텝 S117). 여기에서, i=N-1이 아니면, 제어부(123)는 i+1을 새로운 i로 설정하고, 그 설정내용을 메모리(124)에 저장하고 처리를 스텝 S116으로 되돌린다(스텝 S118).
한편, i=N-1이면, GF(36m) 연산부(122-1)(제 1 연산부)가 메모리(124)로부터 y1[0], y2[0], u[0]∈GF(3m)(i1=0)을 읽어들이고,
g[0]=-{u[0]}2+y1[0]·y2[0]·σ-u[0]·ρ-ρ2∈GF(36m) …(37)
의 연산을 행하고, 그 연산결과 g[0]∈GF(36m)를 메모리(124)에 저장한다(스텝 S119).
또, GF(36m) 연산부(122-2)(제 2 연산부)가 메모리(124)로부터 y1[1], y2[1], u[1]∈GF(3m)(i2=1)을 읽어들이고,
g[1]=-{u[1]}2+y1[1]·y2[1]·σ-u[1]·ρ-ρ2∈GF(36m) …(38)
의 연산을 행하고, 그 연산결과 g[1]∈GF(36m)를 메모리(124)에 저장한다(스텝 S120).
다음에 GF(36m) 연산부(122-3)(제 3 연산부)가 메모리(124)로부터 연산결과 g[0] 및 g[1]∈GF(36m)을 읽어들이고,
g=g[0]·g[1]∈GF(36m) …(39)
의 연산을 행하고, 그 연산결과 g∈GF(36m)를 메모리(124)에 저장한다(스텝 S121). 또한, GF(36m) 연산부(122-3)는 g[0]의 미리 0∈GF(pm)로 된 항, 및/또는, g[1]의 미리 0∈GF(pm)으로 된 항을 피연산자로 한 연산을 행하지 않고, 곱 g[0]·g[1]∈GF(36m)를 구한다.
다음에 GF(3m) 연산부(121-1)가 메모리(124)로부터 y1[0]을 읽어내고, 유한체 GF(3m) 상의 연산
y1[0]={-y1[0]}∈GF(3m) …(40)
을 행하고, 그 연산결과를 새로운 y1[0]으로 하고 메모리(124)에 저장한다(스텝 S122).
다음에 GF(3m) 연산부(121-3)가 메모리(124)로부터 x2[0]를 읽어내고, 유한체 GF(3m) 상의 연산
x2[0]={x2[0]}9∈GF(3m) …(41)
을 행하고, 그 연산결과를 새로운 x2[0]로 하여 메모리(123)에 저장한다(스텝 S123). 또한, 이 연산은, 예를 들면, 프로베니우스 사상(Frobenius map)을 사용하여 행해진다(이하의 3χ승산(χ는 1 이상의 정수)에 대해서도 동일).
다음에, GF(3m) 연산부(121-3)가 메모리(124)로부터 y2[0]를 읽어내고, 유한체 GF(3m) 상의 연산
y2[0]={y2[0]}9∈GF(3m) …(42)
를 행하고, 그 연산결과를 새로운 y2[0]로 하여 메모리(123)에 저장한다(스텝 S124).
다음에 GF(3m) 연산부(121-1)가 메모리(124)로부터 y1[1]을 읽어내고, 유한체 GF(3m) 상의 연산
y1[1]={-y1[1]}∈GF(3m) …(43)
을 행하고, 그 연산결과를 새로운 y1[1]으로 하여 메모리(124)에 저장한다(스텝 S125).
다음에 GF(3m) 연산부(121-3)가 메모리(124)로부터 x2[1]을 읽어내고, 유한체 GF(3m) 상의 연산
x2[1]={x2[1]}9∈GF(3m) …(44)
을 행하고, 그 연산결과를 새로운 x2[1]로 하여 메모리(123)에 저장한다(스텝 S126).
다음에 GF(3m) 연산부(121-3)가 메모리(124)로부터 y2[1]를 읽어내고, 유한체 GF(3m) 상의 연산
y2[1]={y2[1]}9∈GF(3m) …(45)
을 행하고, 그 연산결과를 새로운 y2[1]로 하여 메모리(123)에 저장한다(스텝 S127).
다음에 제어부(123)가 i=2로 설정하고, 그 설정내용을 메모리(124)에 저장한다(스텝 S128).
다음에 GF(36m) 연산부(122-1)(제 1 연산부)가 메모리(124)로부터 y1[i], y2[i], u[i]∈GF(3m)(i1=i)을 읽어들이고,
g[i]=-{u[i]}2+y1[i]·y2[i]·σ-u[i]·ρ-ρ2∈GF(36m) …(46)
의 연산을 행하고, 그 연산결과g[i]∈GF(36m)을 메모리(124)에 저장한다(스텝 S129).
또, GF(36m) 연산부(122-2)(제 2 연산부)가 메모리(124)로부터 y1[i+1], y2[i+1], u[i+1]∈GF(3m)(i2=i+1)을 읽어들이고,
g[i+1]=-{u[i+1]}2+y1[i+1]·y2[i+1]·σ-u[i+1]·ρ-ρ2∈GF(36m)…(47)
의 연산을 행하고, 그 연산결과 g[i+1]∈GF(36m)를 메모리(124)에 저장한다(스텝 S130).
다음에 GF(36m) 연산부(122-3)(제 3 연산부)가 메모리(124)로부터 연산결과 g[i] 및 g[i+1]∈GF(36m)를 읽어들이고,
g[i]·g[i+1]∈GF(36m) …(48)
의 연산을 행하고, 그 연산결과 g[i]·g[i+1]∈GF(36m)를 메모리(124)에 저장한다(스텝 S131). 또한, GF(36m) 연산부(122-3)는 g[i]의 미리 0∈GF(pm)로 된 항, 및/또는, g[i+1]의 미리 0∈GF(pm)으로 된 항을 피연산자로 한 연산을 행하지 않고, 곱 g[i]·g[i+1]∈GF(36m)를 구한다.
다음에 GF(36m) 연산부(122-3)(제 4 연산부)가 메모리(124)로부터 g, g[i]·g[i+1]∈GF(36m)를 읽어들이고,
g=g·g[i]·g[i+1]∈GF(36m) …(49)
의 연산을 행하고, 그 연산결과를 새로운 g∈GF(36m)로 하여 메모리(124)에 저장한다(스텝 S132).
이와 같이, 본 형태의 GF(36m) 연산부(122-3)(제 4 연산부)는 GF(36m) 연산부(122-1)(제 1 연산부)와, GF(36m) 연산부(122-2)(제 2 연산부)와, GF(36m) 연산부(122-3)(제 3 연산부)에 의한 「일련의 처리」가 1회 실행될 때마다, GF(36m) 연산부(122-3)(제 3 연산부)로부터 출력된 곱 g[i]·g[i+1]의 승산값을 구한다. 상기한 바와 같이, 이것에 의해 메모리(124)의 용량을 절약할 수 있다.
다음에 GF(3m) 연산부(121-1)가 메모리(124)로부터 y1[i]을 읽어내고, 유한체 GF(3m) 상의 연산
y1[i]={-y1[i]}∈GF(3m) …(50)
을 행하고, 그 연산결과를 새로운 y1[i]으로 하여 메모리(124)에 저장한다(스텝 S133).
다음에 GF(3m) 연산부(121-3)가 메모리(124)로부터 x2[i]를 읽어내고, 유한체 GF(3m) 상의 연산
x2[i]={x2[i]}9∈GF(3m) …(51)
을 행하고, 그 연산결과를 새로운 x2[i]로 하여 메모리(123)에 저장한다(스텝 S134).
다음에 GF(3m) 연산부(121-3)가 메모리(124)로부터 y2[i]를 읽어내고, 유한체 GF(3m) 상의 연산
y2[i]={y2[i]}9∈GF(3m) …(52)
을 행하고, 그 연산결과를 새로운 y2[i]로 하여 메모리(123)에 저장한다(스텝 S135).
다음에 GF(3m) 연산부(121-1)가 메모리(124)로부터 y1[i+1]을 읽어내고, 유한체 GF(3m) 상의 연산
y1[i+1]={-y1[i+1]}∈GF(3m) …(53)
을 행하고, 그 연산결과를 새로운 y1[i+1]로 하여 메모리(124)에 저장한다(스텝 S136).
다음에 GF(3m) 연산부(121-3)가 메모리(124)로부터 x2[i+1]을 읽어내고, 유한체 GF(3m) 상의 연산
x2[i+1]={x2[i+1]}9∈GF(3m) …(54)
을 행하고, 그 연산결과를 새로운 x2[i+1]로 하여 메모리(123)에 저장한다(스텝 S137).
다음에 GF(3m) 연산부(121-3)가 메모리(124)로부터 y2[i+1]를 읽어내고, 유한체 GF(3m) 상의 연산
y2[i+1]={y2[i+1]}9∈GF(3m) …(55)
을 행하고, 그 연산결과를 새로운 y2[i+1]로 하여 메모리(123)에 저장한다(스텝 S138).
다음에 제어부(123)가 i=N-2인지의 여부를 판정한다(스텝 S139). 여기에서, i=N-2이 아니면, 제어부(123)는 i+2를 새로운 i로 설정하고, 그 설정내용을 메모리(124)에 저장하고 처리를 스텝 S129로 되돌린다(스텝 S140).
한편, i=N-2이면, GF(3) 연산부(125)가 메모리(124)로부터 c를 읽어내고,
c=(c-b)mod 3 …(56)
의 연산을 행하고, 그 연산결과를 새로운 c로 하여 메모리(124)에 저장한다(스텝 S141).
다음에 GF(36m) 연산부(122-5)(제 10 연산부)가 메모리(124)로부터 f, g를 읽어들이고,
f=f·g∈GF(36m) …(57)
의 연산을 행하고, 그 연산결과를 새로운 f로 하여 메모리(124)에 저장한다(스텝 S142).
다음에 GF(36m) 연산부(122-5)(제 11 연산부)가 메모리(124)로부터 f를 읽어들이고,
f=f3∈GF(36m) …(58)
의 연산을 행하고, 그 연산결과를 새로운 f로 하여 메모리(124)에 저장한다(스텝 S143).
또한, 스텝 S141∼S143의 처리는 GF(36m) 연산부(122-1)(제 1 연산부)와 GF(36m) 연산부(122-2)(제 2 연산부)와 GF(36m) 연산부(122-3)(제 3 연산부)에 의한 「일련의 처리」가 N/2회 실행되는 「루프 처리(스텝 S115∼S140)」가 1회 실행될 때마다 실행된다.
다음에 제어부(123)가 j=(m-1)/2인지의 여부를 판정한다(스텝 S144). 여기에서, j=(m-1)/2이 아니면, 제어부(123)는 j+1을 새로운 j로 설정하고, 그 설정내용을 메모리(124)에 저장하고 처리를 스텝 S115로 되돌린다(스텝 S145). 한편, j=(m-1)/2이면, 「루프 처리(스텝 S115∼S140)」이 종료된다. 즉, m=1인 경우에는, 상기 「일련의 처리」를 N/2회 실행시키는 「루프 처리(스텝 S115∼S140)」가 1회만 실행되고, m≥3일 경우에는, 상기 「일련의 처리」를 N/2회 실행시키는 「루프 처리(스텝 S115∼S140)」이 복수회 실행된다.
이 「루프 처리」가 종료되면, GF(36m) 연산부(122-9)가 메모리(124)로부터 f를 읽어들이고,
output=ffinalpow∈GF(36m) …(59)
[finalpow=(33m-1)(3m+1)(3m-3(m+1)/2+1)]
의 연산을 행하고(스텝 S146), 그 연산결과 output∈GF(36m)를 출력한다(스텝 S147). 당해 연산결과 output∈GF(36m)이 멀티 페어링 연산 Πi=0 N-1e(P(X1[i], Y1[i]), Q(X2[i], Y2[i]))의 연산결과이다. 그리고, 당해 연산결과 output∈GF(36m)는 출력부(30)(도 2A)로부터 출력된다.
<제 1 실시형태의 특징>
이상에서 설명한 바와 같이, 본 형태에서는, 멀티 페어링 연산 Πi=0 N-1e(P(X1[i], Y1[i]), Q(X2[i], Y2[i]))를 구성하는, 각 페어링 연산 e(P(X1[i], Y1[i]), Q(X2[i], Y2[i]))를 각각 계산하기 위한 다항식
g[i]=-{u[i]}2+y1[i]·y2[i]·σ-u[i]·ρ-ρ2∈GF(36m) …(60)
g[i+1]=-{u[i+1]}2+y1[i+1]·y2[i+1]·σ-u[i+1]·ρ-ρ2∈GF(36m)…(61)
을 구하고, 그것들의 곱
g[i]·g[i+1]∈GF(36m) …(62)
를 구하고, 그것들의 곱을 사용하여
g= Πi=0 N-1g[i]∈GF(36m) …(63)
을 계산한다(스텝 S119∼S121, 스텝 S129∼S132).
여기에서, 6차 확대체 GF(36m)를 나타내는 식 (60), (61)의 다항식은 부정원 ρ·σ, ρ2·σ∈GF(p6m)의 항의 계수가 미리 0으로 되어 있는 것이다. 이러한 다항식끼리의 곱을 먼저 계산함으로써 계수가 미리 0으로 되어 있는 항의 연산이 불필요하게 되어, 승산 회수를 삭감할 수 있다.
[본 형태의 알고리즘(b=1의 경우)의 승산수]
이하에, 본 형태의 알고리즘과 승산수를 병기한다. 또한, 《θM》은 θ회의 승산을 나타내고, 《θC》는 θ회의 3승산을 나타낸다.
INPUT: x1[i], y1[i], x2[i], y2[i]∈GF(3m)
for i=0 to N-1
y1[i]={-y1[i]}
end for
f=-y1[0]·(x0[0]+x2[0]+b)+y2[0]·σ+y1[0]·ρ 《1M》
f'=-y1[1]·(x1[1]+x2[1]+b)+y2[1]·σ+y1[1]·ρ 《1M》
f=f·f' 《6M》
for i=2 to N-1
f'=-y1[i]·(x1[i]+x2[i]+b)+y2[i]·σ+y1[i]·ρ 《1M》
f=f·f' 《15M》
end for
c=b
for j=0 to (m-1)/2
for i=0 to N-1
u[i]=x1[i]+x2[i]+c
end for
g[0]=-{u[0]}2+y1[0]·y2[0]·σ-u[0]·ρ-ρ2 《2M》…(64)
g[1]=-{u[1]}2+y1[1]·y2[1]·σ-u[1]·ρ-ρ2 《2M》…(65)
g=g[0]·g[1] 《6M》…(66)
y1[0]={-y1[0]}
x2[0]={x2[0]}9 《2C》
y2[0]={y2[0]}9 《2C》
y1[1]={-y1[1]}
x2[1]={x2[1]}9 《2C》
y2[1]={y2[1]}9 《2C》
for i=2 to N-2 step 2
g[i]=-{u[i]}2+y1[i]·y2[i]·σ-u[i]·ρ-ρ2 《2M》…(67)
g[i+1]=-{u[i+1]}2+y1[i+1]·y2[i+1]·σ-u[i+1]·ρ-ρ2 《2M》
…(68)
g[i]·g[i+1] 《6M》 …(69)
g=g·g[i]·g[i+1] 《15M》 …(70)
y1[i]={-y1[i]}
x2[i]={x2[i]}9 《2C》
y2[i]={y2[i]}9 《2C》
y1[i+1]={-y1[i+1]}
x2[i+1]={x2[i+1]}9 《2C》
y2[i+1]={y2[i+1]}9 《2C》
end for
c=(c-b)mod 3
f=f·g 《15M》
f=f3 《6C》
end for
Return output=ffinalpow
이상과 같이, 본 형태에서는, 식 (64), (65)에서 g[0], g[1]을 구하고나서, 식 (66)에서 이것들의 곱을 구하고, 식 (67), (68)에서 g[i], g[i+1]을 구하고나서, 식 (70)에서 이것들의 곱을 구한다. 이것에 의해, g[i]을 구할 때마다 그 연산결과를 g=g·g[i]과 누적 승산해 가는 경우보다도 연산량을 대폭 삭감할 수 있다. 즉, g[0], g[1], g[i], g[i+1]은 1부의 항의 계수가 0의 다항식이기 때문에, 그것들 사이에서의 승산수는 6M이어도 된다. 그러나, g[i]을 구할 때마다 그 연산결과를 g=g·g[i]과 누적 승산하는 경우에는, 첫회를 제외하고 g의 모든 항의 계수가 0 이외로 될 수 있기 때문에 누적승산을 위한 승산수는 15M으로 된다. 예를 들면, 식 (67)∼(70)의 승산회수만을 비교하면, 본원의 방법에서는,
2M+2M+6M+15M=25M
의 연산이 필요한 것에 반해, g[i]를 구할때마다 그 연산결과를 g=g·g[i]과 누적 승산하는 경우에는,
(2M+15M)×2=34M
의 연산이 필요하게 된다. 이와 같이, 본 형태와 같은 순서로 연산을 행함으로써, 승산회수를 대폭 삭감할 수 있다.
[종래기술을 확장한 알고리즘(b=1의 경우)의 승산수]
상기한 바와 같이, 인용문헌 1, 2에는 복수의 페어링의 곱을 효율적으로 계산하는 방식에 대해서는 개시되어 있지 않다. 이하에서는, 가령, 인용문헌 1의 개량 ηT 페어링 연산 알고리즘을 단순하게 멀티 페어링의 계산으로 확장했다고 해도, 본 형태보다도 연산량을 삭감할 수 없는 것을 나타낸다.
이하에, 인용문헌 1의 개량 ηT 페어링 연산 알고리즘을 단순하게 멀티 페어링의 계산으로 확장한 알고리즘을 나타낸다. 또한, 이하는 본 형태의 특징을 명확하게 하기 위한 것으로, 이하의 비교용의 알고리즘이 본원 출원 당초에 용이하게 발명할 수 있었던 것을 나타내는 것은 아니다.
INPUT: x1[i], y1[i], x2[i], y2[i]∈GF(3m)
for i=0 to N-1
y1[i]={-y1[i]}
end for
f=-y1[0]·(x1[0]+x2[0]+b)+y2[0]·σ+y1[0]·ρ 《1M》
f'=-y1[1]·(x1[1]+x2[1]+b)+y2[1]·σ+y1[1]·ρ 《1M》
f=f·f' 《6M》
for i=2 to N-1
f'=-y1[i]·(x1[i]+x2[i]+b)+y2[i]·σ+y1[i]·ρ 《1M》
f=f·f' 《15M》
end for
c=b
for j=0 to (m-1)/2
for i=0 to N-1
u[i]=x1[i]+x2[i]+c
end for
g[0]=-{u[0]}2+y1[0]·y2[0]·σ-u[0]·ρ-ρ2 《2M》 …(71)
y1[0]={-y1[0]}
x2[0]={x2[0]}9 《2C》
y2[0]={y2[0]}9 《2C》
g[1]=-{u[1]}2+y1[1]·y2[1]·σ-u[1]·ρ-ρ2 《2M》 …(72)
g=g[0]·g[1] 《6M》 …(73)
y1[1]={-y1[1]}
x2[1]={x2[1]}9 《2C》
y2[1]={y2[1]}9 《2C》
for i=2 to N-1
g=g·(-{u[i]}2+y1[i]·y2[i]·σ-u[i]·ρ-ρ2) 《14M》…(74)
y1[i]={-y1[i]}
x2[i]={x2[i]}9 《2C》
y2[i]={y2[i]}9 《2C》
end for
c=(c-b)mod 3
f=f·g 《15M》
f=f3 《6C》
end for
Return output=ffinalpow
이상과 같이, 인용문헌 1의 개량 ηT 페어링 연산 알고리즘을 단순하게 멀티 페어링의 계산으로 확장한 경우, 식 (74)에서 각 i에 대하여 14M의 연산이 필요하게 되고, 2개의 i에 대해서는 28M의 연산이 필요하게 된다.
[루프 언롤링를 사용한 알고리즘(b=1의 경우)의 승산수]
상기한 바와 같이, 인용문헌 2에는 복수의 페어링의 곱을 효율적으로 계산하는 방식에 대해서는 개시되어 있지 않다. 그러나, 인용문헌 2에는 루프 언롤링를 사용한 알고리즘이 개시되어 있다. 이하에서는, 가령, 인용문헌 2의 루프 언롤링를 사용한 알고리즘의 개념을 멀티 페어링의 계산으로 확장했다고 해도, 본 형태보다도 연산량을 삭감할 수 없는 것을 나타낸다.
상기의 다항식 -{u[i]}2+y1[i]·y2[i]·σ-u[i]·ρ-ρ2는, 각 i에 대응하는 다른 페어링에 대하여 각각 산출할 필요가 있음과 아울러, 각각의 페어링의 "j=0 to (m-1)/2"의 루프에서 {(m-1)/2}+1회 계산할 필요가 있다. 본 형태의 방법은, 각 i에 대응하는 다른 페어링에 대응하는 다항식 -{u[i]}2+y1[i]·y2[i]·σ-u[i]·ρ-ρ2를 각각 구하고, 그것들의 곱을 구하는 것이었다. 이에 반해, 인용문헌 2의 루프 언롤링의 개념은 1개의 페어링의 "j=0 to (m-1)/2"의 루프에서 복수회 산출되는 다항식 -{u[i]}2+y1[i]·y2[i]·σ-u[i]·ρ-ρ2의 곱을 구하는 것이다.
이하에, 인용문헌 2의 루프 언롤링의 개념을 멀티 페어링의 계산으로 확장한 알고리즘을 나타낸다(미공개). 또한, 이하는 본 형태의 특징을 명확하게 하기 위한 것이며, 이하의 비교용의 알고리즘을 본원의 우선일이나 출원 당초에 용이하게 발명할 수 있던 것을 나타내는 것이 아니다.
INPUT: x1[i], y1[i], x2[i], y2[i]∈GF(3m)
for i=0 to N-1
y1[i]={-y1[i]}
end for
f=-y1[0]·(x1[0]+x2[0]+b)+y2[0]·σ+y1[0]·ρ 《1M》
f'=-y1[1]·(x1[1]+x2[1]+b)+y2[1]·σ+y1[1]·ρ 《1M》
f=f·f' 《6M》
for i=2 to N-1
f'=-y1[i]·(x1[i]+x2[i]+b)+y2[i]·σ+y1[i]·ρ 《1M》
f=f·f' 《15M》
end for
c=b
for j=0 to (m-1)/4
for i=0 to N-1
u[i]=x1[i]+x2[i]+c
end for
g1[0]=-{u[0]}2+y1[0]·y2[0]·σ-u[0]·ρ-ρ2 《2M》…(75)
g1[0]={g1[0]}3 …(76)
y1[0]={-y1[0]}
x2[0]={x2[0]}9 《2C》
y2[0]={y2[0]}9 《2C》
g2[0]=-{u[0]}2+y1[0]·y2[0]·σ-u[0]·ρ-ρ2 《2M》…(77)
g=g1[0]·g2[0] 《6M》…(78)
y1[0]={-y1[0]}
x2[0]={x2[0]}9 《2C》
y2[0]={y2[0]}9 《2C》
for i=1 to N-1
g1[i]=-{u[i]}2+y1[i]·y2[i]·σ-u[i]·ρ-ρ2 《2M》…(79)
g1[i]={g1[i]}3 …(80)
y1[i]={-y1[i]}
x2[i]={x2[i]}9 《2C》
y2[i]={y2[i]}9 《2C》
g2[i]=-{u[i]}2+y1[i]·y2[i]·σ-u[i]·ρ-ρ2 《2M》…(81)
g2[i]·g2[i] 《6M》…(82)
g=g·g2[i]·g2[i] 《15M》…(83)
y1[i+1]={-y1[i+1]}
x2[i+1]={x2[i+1]}9 《2C》
y2[i+1]={y2[i+1]}9 《2C》
end for
c=(c-b)mod 3
f=f·g 《15M》
f=f3 《6C》
end for
Return output=ffinalpow
이상과 같이, 이 알고리즘에서는, 동일한 i=0에 대하여 식 (75), (77)에서 g1[0], g2[0]을 구하고나서, 식 (74)에서 이것들의 곱을 구하고, 동일한 i=1, ..., N-1에 대하여 식 (75), (77)에서 g1[i], g2[i]를 구하고나서, 식 (82)에서 이것들의 곱을 구한다. 그러나, 이 알고리즘에서는, 식 (76), (80)에서 3승산이 필요하게 된다. 이것은, 본래, "j=0 to (m-1)/2"의 루프마다 1회의 f=f3의 연산이 필요한 바, 루프 언롤링를 사용한 알고리즘에서는, j에 대한 2개의 루프를 1개의 루프로 실현하고 있고, 1회분의 f=f3에 대응하는 식 (76), (80)의 3승산을 루프 내에서 i=0, ..., N-1의 각각에 대하여 실행하지 않으면 안 되는 것에 기초한다.
본 형태의 알고리즘에서는, 이 3승산이 f=f3으로서 "j=0 to (m-1)/2"의 루프의 밖에서 정리하여 실행되기 때문에, 루프 언롤링의 개념을 멀티 페어링의 계산으로 확장한 알고리즘보다도 연산량을 삭감할 수 있다.
[제 1 실시형태의 변형예]
제 1 실시형태는 N이 4 이상의 짝수인 경우의 형태였다. 제 1 실시형태의 변형예에서는 N이 5 이상의 홀수인 경우의 처리를 설명한다.
도 11은 N이 5 이상의 홀수인 경우의 처리를 예시하기 위한 도면이다. 이 변형예에서는 L=N-1로 한다. 이하에서는, 제 1 실시형태와의 차이점만을 설명한다.
제 1 실시형태의 변형예에서는, 제 1 실시형태에서 설명한 스텝 S138의 처리 후, 제어부(123)가 i=(N-1)-2인지의 여부를 판정한다(스텝 S159). 여기에서, i=(N-1)-2가 아니면, 제어부(123)는 i+2를 새로운 i로 설정하고, 그 설정내용을 메모리(124)에 저장하고 처리를 스텝 S129로 되돌린다(스텝 S140).
한편, i=(N-1)-2이면, 우선, 제어부(123)가 i+2를 새로운 i로 설정하고, 그 설정내용을 메모리(124)에 저장한다(스텝 160).
다음에 GF(36m) 연산부(122-1)가 메모리(124)로부터 y1[i], y2[i], u[i]∈GF(3m)를 읽어들이고,
g[i]=-{u[i]}2+y1[i]·y2[i]·σ-u[i]·ρ-ρ2∈GF(36m) …(84)
의 연산을 행하고, 그 연산결과 g[i]∈GF(36m)를 메모리(124)에 저장한다(스텝 S161).
다음에 GF(36m) 연산부(122-3)가 메모리(124)로부터 g, g[i]∈GF(36m)를 읽어들이고,
g=g·g[i]∈GF(36m) …(85)
의 연산을 행하고, 그 연산결과를 새로운 g∈GF(36m)로 하여 메모리(124)에 저장한다(스텝 S162). 그 후, 제 1 실시형태에서 설명한 스텝 S141 이후의 처리가 실행된다.
[제 2 실시형태]
다음에 본 발명의 제 2 실시형태를 설명한다.
제 1 실시형태는 본 발명을 개량 ηT 페어링 연산 알고리즘의 g의 연산부분에 적용한 예이었다. 제 2 실시형태에서는, 본 발명을 개량 ηT 페어링 연산 알고리즘의 f 및 g의 양쪽 연산부분에 적용한다. 이것에 의해 더한층의 연산량의 삭감이 가능하게 된다.
즉, 본 형태에서는, K=4, p=3, d=6이고, m이 1 이상의 홀수이고, N이 4 이상의 짝수이고, W=N이고, 유한체 GF(pm)의 원소 R(i, 0), R(i, 1), R(i, 2), R(i, 3)이, 각각, 유한체 GF(pm) 상에서 정의된 타원곡선 E 상의 2개의 점 P(X1[i], Y1[i]) 및 점 Q(X2[i], Y2[i])의 각 아핀 좌표점 x1[i], y1[i], x2[i], y2[i]∈GF(pm)이고, 연산 e(R(i, 0), ..., R(i, K-1))가 페어링 연산 e(P(X1[i], Y1[i]), Q(X2[i], Y2[i]))이며, 연산 Πi=0 N-1e(R(i, 0), ..., R(i, K-1))가 멀티 페어링 연산 Πi=0 N-1e(P(X1[i], Y1[i]), Q(X2[i], Y2[i]))이다. 또한 본 형태에서는, 타원곡선으로서 식 (10)의 초특이 타원 곡선 Eb를 사용한다(b=-1이어도 되고, b=1이어도 됨). 또한 본 형태의 확대체 연산은, 입력부에 입력된 각 아핀 좌표점 X1[i], Y1[i], X2[i], Y2[i] 또는 그 상을 각각 x1[i], y1[i], x2[i], y2[i]로 하고, u[i]=x1[i]+x2[i]+c∈GF(3m)로 하고, 유한체 GF(3m)의 원소를 계수로 하는 기약 다항식 σ2+1=0의 근을 부정원 σ로 하고, 기약 다항식 ρ3-ρ-b=0의 근을 부정원 ρ로 한 경우에 있어서의, 유한체 GF(3m)의 6차 확대체 GF(36m)의 원소를 나타내는 다항식
f[i]=-y1[i]·(x1[i]+x2[i]+b)+y2[i]·σ+y1[i]·ρ∈GF(36m) …(86)
g[i]=-{u[i]}2+y1[i]·y2[i]·σ-u[i]·ρ-ρ2∈GF(36m) …(87)
을 구하는 연산이다. 이하에서는, 제 1 실시형태와의 차이점을 중심으로 설명하고, 제 1 실시형태와 공통되는 사항에 대해서는 설명을 생략한다.
<구성>
도 12 및 도 13은 제 2 실시형태의 유한체 연산부(220)의 기본 구성을 설명하기 위한 블럭도이다.
제 2 실시형태의 유한체 연산장치는 도 2A에 도시한 유한체 연산부(20)를 도 12 및 도 13의 유한체 연산부(220)로 치환한 것이다. 이하에서는, 유한체 연산부(220)의 구성만을 설명한다.
도 12 및 도 13에 예시하는 바와 같이, 본 형태의 유한체 연산부(220)는 유한체 GF(3m) 상의 연산을 행하는 GF(3m) 연산부(121-1∼4)와, 유한체 GF(3m)의 6차 확대체 GF(36m) 상의 연산을 행하는 GF(36m) 연산부(122-1∼5, 9)와, GF(36m) 연산부(222-1∼5)와, 제어부(123)와, 메모리(124)와, 유한체 GF(3) 상의 연산을 행하는 GF(3) 연산부(125)를 갖는다.
또한, 유한체 연산부(220)는 CPU, RAM, ROM 등을 구비한 공지 또는 전용의 컴퓨터와 특별한 프로그램을 갖는 특별한 장치이다. 예를 들면, GF(36m) 연산부(222-1∼5)는 소정의 프로그램이 CPU에 읽혀지고 구축되는 기능부이다. 또, 유한체 연산부(220)의 적어도 일부가 집적회로로 구성되어도 된다.
<처리>
도 14 및 도 15은, 제 2 실시형태의 처리를 설명하기 위한 도면이다. 이하, 이들 도면을 사용하여 본 형태의 처리를 설명한다.
우선, 제 1 실시형태에서 설명한 스텝 S101∼S105의 처리가 실행된다. 단, 제 1 실시형태와 동일하게 b=-1의 경우에는, 스텝 S102∼S105의 처리는 불핑요하다.
다음에 GF(36m) 연산부(222-1)(제 1 연산부 또는 제 6 연산부)가 메모리(124)로부터 x1[0], y1[0], x2[0], y2[0]∈GF(3m)(i3=0)을 읽어들이고, 6차 확대체 GF(36m) 상의 연산
f[0]=-y1[0]·(x1[0]+x2[0]+b)+y2[0]·σ+y1[0]·ρ∈GF(36m)…(88)
을 행하고, 그 연산결과 f[0]∈GF(36m)를 메모리(124)에 저장한다(스텝 S206).
다음에 GF(36m) 연산부(222-1)(제 2 연산부 또는 제 7 연산부)가 메모리(124)로부터 x1[1], y1[1], x2[1], y2[1]∈GF(3m)(i4=1)를 읽어들이고, 6차 확대체 GF(36m) 상의 연산
f[1]=-y1[1]·(x1[1]+x2[1]+b)+y2[1]·σ+y1[1]·ρ∈GF(36m)…(89)
을 행하고, 그 연산결과 f[1]∈GF(36m)를 메모리(124)에 저장한다(스텝 S207).
다음에 GF(36m) 연산부(222-3)(제 3 연산부 또는 제 8 연산부)가 메모리(124)로부터 연산결과 f[0] 및 f[1]∈GF(36m)를 읽어들이고,
f=f[0]·f[1]∈GF(36m) …(90)
의 연산을 행하고, 그 연산결과 f∈GF(36m)를 메모리(124)에 저장한다(스텝 S208). 또한, GF(36m) 연산부(222-3)는 f[0]의 미리 0∈GF(pm)로 된 항, 및/또는, f[1]의 미리 0∈GF(pm)로 된 항을 피연산자로 한 연산을 행하지 않고, 곱 f[0]·f[1]∈GF(36m)를 구한다.
다음에 제어부(123)가 i=2로 설정하고, 그 설정내용을 메모리(124)에 저장한다(스텝 S209).
다음에 GF(36m) 연산부(222-1)가 메모리(124)로부터 y1[i], y2[i], x2[i], y2[i]∈GF(3m)(i3=i)을 읽어들이고,
f[i]=-y1[i]·(x1[i]+x2[i]+b)+y2[i]·σ+y1[i]·ρ∈GF(36m) …(91)
의 연산을 행하고, 그 연산결과 g[i]∈GF(36m)을 메모리(124)에 저장한다(스텝 S210).
또한 GF(36m) 연산부(222-2)가 메모리(124)로부터 y1[i+1], y2[i+1], x2[i+1], y2[i+1]∈GF(3m)(i4=i+1)을 읽어들이고,
f[i+1]=-y1[i+1]·(x1[i+1]+x2[i+1]+b)
+y2[i+1]·σ+y1[i+1]·ρ∈GF(36m) …(92)
의 연산을 행하고, 그 연산결과 f[i+1]∈GF(36m)을 메모리(124)에 저장한다(스텝 S211).
다음에 GF(36m) 연산부(222-3)가 메모리(124)로부터 연산결과 f[i] 및 f[i+1]∈GF(36m)를 읽어들이고,
f[i]·f[i+1]∈GF(36m) …(93)
의 연산을 행하고, 그 연산결과 f[i]·f[i+1]∈GF(36m)를 메모리(124)에 저장한다(스텝 S212). 또한, GF(36m) 연산부(222-3)는 f[i]의 미리 0∈GF(pm)로 된 항, 및/또는, f[i+1]의 미리 0∈GF(pm)로 된 항을 피연산자로 한 연산을 행하지 않고, 곱 f[i]·f[i+1]∈GF(36m)를 구한다.
다음에, GF(36m) 연산부(222-4)(제 4 연산부 또는 제 9 연산부)가 메모리(124)로부터 f, f[i]·f[i+1]∈GF(36m)를 읽어들이고,
f=f·f[i]·f[i+1]∈GF(36m) …(94)
의 연산을 행하고, 그 연산결과를 새로운 f∈GF(36m)로 하여 메모리(124)에 저장한다(스텝 S213).
다음에 제어부(123)가 i=N-2인지의 여부를 판정한다(스텝 S214). 여기에서, i=N-2이 아니면, 제어부(214)는 i+2를 새로운 i로 설정하고, 그 설정내용을 메모리(124)에 저장하고 처리를 스텝 S210으로 되돌린다(스텝 S215).
한편, i=N-2이면, 제 1 실시형태의 스텝 S112 이후의 처리를 실행한다.
<제 2 실시형태의 특징>
이상 설명한 바와 같이, 본 형태에서는, 제 1 실시형태에서 설명한 g[i]과 g[i+1]에 관한 연산의 연구에 더하여,
f[i]=-y1[i]·(x1[i]+x2[i]+b)+y2[i]·σ+y1[i]·ρ∈GF(36m) …(95)
f[i+1]=-y1[i+1]·(x1[i+1]+x2[i+1]+b)
+y2[i+1]·σ+y1[i+1]·ρ∈GF(36m) …(96)
을 구하고, 그것들의 곱
f[i]·f[i+1]∈GF(36m) …(97)
을 구하고, 그것들의 곱을 사용하여
f=Πi=0 N-1f[i]∈GF(36m) …(98)
을 계산한다(스텝 S206∼S208, 스텝 S210∼S213).
여기에서, 6차 확대체 GF(36m)를 나타내는 식 (95), (96)의 다항식은 부정원 ρ2, ρ·σ, ρ2·σ∈GF(p6m)의 항의 계수가 미리 0으로 되어 있는 것이다. 이러한 다항식끼리의 곱을 먼저 계산함으로써 계수가 미리 0으로 되어 있는 항의 연산이 불필요하게 되어, 승산회수를 삭감할 수 있다.
[제 2 실시형태의 변형예]
제 2 실시형태는 N이 4 이상의 짝수일 경우의 형태였다. 제 2 실시형태의 변형예에서는 N이 5 이상의 홀수일 경우의 처리를 설명한다.
도 16은 N이 5 이상의 홀수일 경우의 처리를 예시하기 위한 도면이다. 이 변형예에서는 L=N-1로 한다. 이하에서는, 제 2 실시형태와의 차이점만을 설명한다.
제 2 실시형태의 변형예에서는, 제 2 실시형태에서 설명한 스텝 S213의 처리 후, 제어부(123)가 i=(N-1)-2인지의 여부를 판정한다(스텝 S254). 여기에서, i=(N-1)-2이 아니면, 제어부(123)는 i+2를 새로운 i로 설정하고, 그 설정내용을 메모리(124)에 저장하고 처리를 스텝 S210으로 되돌린다(스텝 S215).
한편, i=(N-1)-2이면, 우선, 제어부(123)가 i+2를 새로운 i로 설정하고, 그 설정내용을 메모리(124)에 저장한다(스텝 255).
다음에 GF(36m) 연산부(222-1)가 메모리(124)로부터 y1[i], y2[i], x2[i], y2[i]∈GF(3m)(i3=i)을 읽어들이고,
f[i]=-y1[i]·(x1[i]+x2[i]+b)+y2[i]·σ+y1[i]·ρ∈GF(36m) …(99)
의 연산을 행하고, 그 연산결과 g[i]∈GF(36m)을 메모리(124)에 저장한다(스텝 S256).
다음에 GF(36m) 연산부(222-4)가 메모리(124)로부터 f, f[i]∈GF(36m)를 읽어들이고,
f=f·f[i]∈GF(36m) …(100)
의 연산을 행하고, 그 연산결과를 새로운 f∈GF(36m)로 하여 메모리(124)에 저장한다(스텝 S257). 그 후, 제 1 실시형태에서 설명한 스텝 S112 이후의 처리가 실행된다.
[제 3 실시형태]
다음에 본 발명의 제 3 실시형태를 설명한다.
제 1 실시형태는 본 발명을 개량 ηT 페어링 연산 알고리즘의 g의 연산부분에 적용한 예이었다. 제 2 실시형태에서는 본 발명을 개량 ηT 페어링 연산 알고리즘의 f의 연산부분에만 적용한다.
즉, 본 형태에서는, K=4, p=3, d=6이고, m이 1 이상의 홀수이고, N이 4 이상의 짝수이고, L=N이고, 유한체 GF(pm)의 원소 R(i, 0), R(i, 1), R(i, 2), R(i, 3)이, 각각, 유한체 GF(pm) 상에서 정의된 타원곡선 E 상의 2개의 점 P(X1[i], Y1[i]) 및 점 Q(X2[i], Y2[i])의 각 아핀 좌표점 x1[i], y1[i], x2[i], y2[i]∈GF(pm)이고, 연산 e(R(i, 0), ..., R(i, K-1))이 페어링 연산 e(P(X1[i], Y1[i]), Q(X2[i], Y2[i]))이고, 연산 Πi=0 N-1e(R(i, 0), ..., R(i, K-1))이 멀티 페어링 연산 Πi=0 N-1e(P(X1[i], Y1[i]), Q(X2[i], Y2[i]))이다. 또한 본 형태에서는, 타원곡선으로서 식 (10)의 초특이 타원곡선 Eb를 사용한다(b=-1이어도 되고, b=1이어도 됨). 또, 본 형태의 확대체 연산은 입력부에 입력된 각 아핀 좌표점 X1[i], Y1[i], X2[i], Y2[i] 또는 그 상을 각각 x1[i], y1[i], x2[i], y2[i]로 하고, u[i]=x1[i]+x2[i]+c∈GF(3m)로 하고, 유한체 GF(3m)의 원소를 계수로 하는 기약 다항식 σ2+1=0의 근을 부정원 σ로 하고, 기약 다항식 ρ3-ρ-b=0의 근을 부정원 ρ로 한 경우에 있어서의, 유한체 GF(3m)의 6차 확대체 GF(36m)의 원소를 내보이는 다항식
f[i]=-y1[i]·(x1[i]+x2[i]+b)+y2[i]·σ+y1[i]·ρ∈GF(36m) …(101)
을 구하는 연산이다. 이하에서는, 제 1 실시형태와의 차이점을 중심으로 설명하고, 제 1 실시형태와 공통되는 사항에 대해서는 설명을 생략한다.
<구성>
도 17 및 도 18은 제 3 실시형태의 유한체 연산부(320)의 기본구성을 설명하기 위한 블럭도이다.
제 3 실시형태의 유한체 연산장치는 도 2A에 도시한 유한체 연산부(20)를 도 17 및 도 18의 유한체 연산부(320)로 치환한 것이다. 이하에서는, 유한체 연산부(320)의 구성만을 설명한다.
도 17 및 도 18에 예시하는 바와 같이, 본 형태의 유한체 연산부(320)는 유한체 GF(3m) 상의 연산을 행하는 GF(3m) 연산부(121-1∼4)와, 유한체 GF(3m)의 6차 확대체 GF(36m) 상의 연산을 행하는 GF(36m) 연산부(122-5, 9)와, GF(36m) 연산부(222-1∼5)와, GF(36m) 연산부(322-1, 2)와, 제어부(123)와, 메모리(124)와, 유한체 GF(3) 상의 연산을 행하는 GF(3) 연산부(125)를 갖는다.
또한, 유한체 연산부(320)는 CPU, RAM, ROM 등을 구비한 공지 또는 전용의 컴퓨터와 특별한 프로그램을 갖는 특별한 장치이다. 예를 들면, GF(36m) 연산부(322-1, 2)는 소정의 프로그램이 CPU에 읽혀지고 구축되는 기능부이다. 또한 유한체 연산부(320)의 적어도 일부가 집적회로에 의해 구성되어도 된다.
<처리>
도 19 및 도 20은 제 3 실시형태의 처리를 설명하기 위한 도면이다. 이하, 이들 도면을 사용하여 본 형태의 처리를 설명한다.
우선, 제 2 실시형태에서 설명한 스텝 S101∼S105, S206∼215의 처리(도 14 및 도 15)와, 제 1 실시형태에서 설명한 스텝 S112∼S118의 처리가 실행된다. 단, 제 1 실시형태와 같이 b=-1의 경우에는, 스텝 S102∼S105의 처리는 불필요하다. 스텝 S117의 판정에서 i=N-1로 판정된 경우, 다음에, GF(36m) 연산부(322-1)가 메모리(124)로부터 y1[0], y2[0], u[0]∈GF(3m)(i1=0)를 읽어들이고,
g=-{u[0]}2+y1[0]·y2[0]·σ-u[0]·ρ-ρ2∈GF(36m) …(102)
의 연산을 행하고, 그 연산결과 g∈GF(36m)를 메모리(124)에 저장한다(스텝 S319).
다음에 GF(36m) 연산부(322-1)가 메모리(124)로부터 y1[1], y2[1], u[1]∈GF(3m)(i1=1)을 읽어들이고,
g'=-{u[1]}2+y1[1]·y2[1]·σ-u[1]·ρ-ρ2∈GF(36m) …(103)
의 연산을 행하고, 그 연산결과 g'∈GF(36m)를 메모리(124)에 저장한다. 또한, GF(36m) 연산부(322-2)가 메모리(124)로부터 연산결과 g, g'∈GF(36m)를 읽어들이고,
g=g·g'∈GF(36m) …(104)
의 연산을 행하고, 그 연산결과를 새로운 g로 하여 메모리(124)에 저장한다(스텝 S321).
다음에 제어부(123)가 i=2로 설정하고, 그 설정내용을 메모리(124)에 저장한다(스텝 S128).
다음에 GF(36m) 연산부(322-1)가 메모리(124)로부터 y1[i], y2[i], u[i]∈GF(3m)(i1=i)를 읽어들이고,
g'=-{u[i]}2+y1[i]·y2[i]·σ-u[i]·ρ-ρ2∈GF(36m) …(105)
의 연산을 행하고, 그 연산결과를 새로운 g'∈GF(36m)로 하여 메모리(124)에 저장한다(스텝 S329).
다음에 GF(36m) 연산부(322-2)가 메모리(124)로부터 연산결과 g, g'∈GF(36m)을 읽어들이고,
g=g·g'∈GF(36m) …(106)
의 연산을 행하고, 그 연산결과를 새로운 g로 하여 메모리(124)에 저장한다(스텝 S330).
그 후, 제 1 실시형태의 스텝 S133 이후의 처리가 실행된다.
[그 밖의 변형예]
또한, 본 발명은 상기의 실시형태에 한정되는 것은 아니다. 예를 들면, 상기의 각 실시형태에서는, i1=0, i2=1로 하고, i1=i, i2=i+1로 하고, i3=0, i4=1로 하고, i3=i, i4=i+1로 하는 예를 나타냈다. 그러나, i1과 i2가 상이하고, i3과 i4가 상이한 것이라면, 그 밖의 i1, i2, i3, i4∈{0, ..., N-1}를 사용해도 된다. 즉, 집합 {0, ..., N-1}의 L개 [L은 짝수]의 상이한 원소로 이루어지는 부분집합의 각 원소를 각각 1회씩 i1 또는 i2로 하고, i1과 i2를 변경하면서 제 1 연산부와 제 2 연산부와 제 3 연산부에 의한 일련의 처리를 L/2회 실행시키는 루프 처리가 실행되고, 집합 {0, ..., N-1}의 W개[W는 정의 짝수]의 상이한 원소로 이루어지는 부분집합의 각 원소를 각각 1회씩 i3 또는 i4로 하고, i3과 i4를 변경하면서 제 6 연산부와 제 7 연산부와 제 8 연산부에 의한 일련의 처리가 W/2회 실행되면 된다. 바꿔 말하면, 집합 {0, ..., N-1}에 포함되는 L개[L은 짝수]의 서로 상이한 복수의 원소로 이루어지는 부분집합의 각 원소가 각각 1회씩 i1 또는 i2로서 선택되고, 선택된 i1과 i2의 세트의 각각에 대하여 제 1 연산부와 제 2 연산부와 제 3 연산부에 의한 제 1 처리가 1회씩 실행됨으로써, L/2개의 상기 세트(i1, i2)의 각각에 대응하는 제 1 처리가 실행되고, 집합 {0, ..., N-1}에 포함되는 W개[W는 정의 짝수]의 서로 상이한 복수의 원소로 이루어지는 부분집합의 각 원소가 각각 1회씩 i3 또는 i4로서 선택되고, 선택된 i3과 i4의 세트의 각각에 대하여 제 6 연산부와 제 7 연산부와 제 8 연산부에 의한 제 2 처리가 1회씩 실행됨으로써 W/2개의 상기 세트(i3, i4)의 각각에 대응하는 제 2 처리가 실행되면 된다.
또한 상기의 각 실시형태에서는, N이 4 이상의 짝수이고 L=N이나 W=N으로 하는 구성이나, N이 5 이상의 홀수이며 L=N-1이나 W=N-1로 하는 구성을 설명했다. 그러나, N 미만의 그 밖의 정의 짝수를 L이나 W로 해도 된다. 이 경우, 본 발명의 수법을 적용하지 않는 것으로 되는 i에 대한 처리는 도 11의 스텝 S161, S162나, 도 16의 스텝 S256, S257에 나타낸 바와 같은 누적 승산을 반복함으로써 실행할 수 있다. 또한 L≠W이어도 된다. 또한 N이 2나 3이어도 된다. 이 경우에는, 도 7의 스텝 S108∼S111, S113, 도 9의 스텝 S128∼S140, 도 11의 스텝 S128∼S159, 도 15의 스텝 S209∼S215, 도 16의 스텝 S209∼S215, S254의 처리는 불필요하게 된다.
또한 상기의 각 실시형태에서는, b 등의 패러미터가 미리 설정되어 있는 것으로 했지만, 이들 패러미터가 장치에 입력되는 구성이어도 된다.
또한 상기의 각 실시형태에서는, 다항식 poly(R(i1, 0), ..., R(i1, K-1))의 미리 0∈GF(pm)으로 된 항, 및/또는, 다항식 poly(R(i2, 0), ..., R(i2, K-1))의 미리 0∈GF(pm)으로 된 항을 피연산자로 한 연산을 행하지 않고, 곱 poly(R(i1, 0), ..., R(i1, K-1))·poly(R(i2, 0), ..., R(i2, K-1))을 구하는 것으로 했다. 그러나, 이들 미리 0∈GF(pm)로 된 항의 일부를 피연산자로 한 연산을 행하기로 해도 된다.
또, 상기의 각 실시형태에서는, 본 발명을 표수 3의 개량 ηT 페어링 연산 알고리즘에 적용하는 것으로 했지만, 그 밖의 표수 3의 페어링 연산이나, 표수 2의 페어링 연산이나, 그 밖의 표수의 페어링 연산에 본 발명을 적용해도 된다.
또, 상기의 각종 처리는 기재에 따라 시계열로 실행될 뿐만 아니라, 처리를 실행하는 장치의 처리 능력 또는 필요에 따라 병렬적으로 또는 개별적으로 실행되어도 된다. 그 박에, 본 발명의 취지를 일탈하지 않는 범위에서 적당히 변경이 가능한 것은 말할 필요도 없다.
또, 상기의 구성을 컴퓨터에 의해 실현하는 경우, 각 장치가 가져야 할 기능의 처리내용은 프로그램에 의해 기술된다. 그리고, 이 프로그램을 컴퓨터로 실행함으로써, 상기 처리기능이 컴퓨터 상에서 실현된다.
이 처리내용을 기술한 프로그램은 컴퓨터로 판독 가능한 기록매체에 기록해 둘 수 있다. 컴퓨터로 판독 가능한 기록매체로서는, 예를 들면, 자기 기록 장치, 광디스크, 광자기 기록매체, 반도체 메모리 등 어떤 것이어도 된다.
또한 이 프로그램의 유통은, 예를 들면, 그 프로그램을 기록한 DVD, CD-ROM 등의 가반형 기록매체를 판매, 양도, 대여 등 함으로써 행한다. 또한, 이 프로그램을 서버 컴퓨터의 기억 장치에 저장해 두고, 네트워크를 통하여, 서버 컴퓨터로부터 다른 컴퓨터에 그 프로그램을 전송함으로써, 이 프로그램을 유통시키는 구성으로 해도 된다.
이러한 프로그램을 실행하는 컴퓨터는, 예를 들면, 우선, 가반형 기록매체에 기록된 프로그램 혹은 서버 컴퓨터로부터 전송된 프로그램을, 일단, 자기의 기억 장치에 저장한다. 그리고, 처리의 실행시, 이 컴퓨터는, 자기의 기록매체에 저장된 프로그램을 판독하고, 판독한 프로그램에 따른 처리를 실행한다. 또한 이 프로그램의 다른 실행 형태로서, 컴퓨터가 가반형 기록매체로부터 직접 프로그램을 판독하고, 그 프로그램에 따른 처리를 실행하는 것으로 해도 되고, 또한, 이 컴퓨터에 서버 컴퓨터로부터 프로그램이 전송될 때마다, 차례차례, 수취한 프로그램에 따른 처리를 실행하는 것으로 해도 된다. 또한 서버 컴퓨터로부터, 이 컴퓨터로의 프로그램의 전송은 행하지 않고, 그 실행 지시와 결과 취득만에 의해 처리기능을 실현하는, 소위 ASP(Application Service Provider)형의 서비스에 의해, 상기의 처리를 실행하는 구성으로 해도 된다. 또한, 본 형태에서의 프로그램에는, 전자 계산기에 의한 처리용에 제공하는 정보이며 프로그램에 준하는 것(컴퓨터에 대한 직접적인 지령은 아니지만 컴퓨터의 처리를 규정하는 성질을 갖는 데이터 등)을 포함하는 것으로 한다.
(산업상의 이용가능성)
본 발명의 산업상의 이용분야로서는 내적술어암호 등의 멀티 페어링 연산을 사용하는 암호기술 분야를 예시할 수 있다.
1 유한체 연산장치 10 입력부
30 출력부 20, 120, 220, 320 유한체 연산부

Claims (46)

  1. N·K개(N≥2, K≥1)의 유한체 GF(pm)의 원소 R(i, k)∈GF(pm)[i∈{0, ..., N-1}, k∈{0, ..., K-1}, p는 소수, m은 1 이상의 정수]가 입력되는 입력부와,
    K개의 상기 유한체 GF(pm)의 원소 R(i, 0), ..., R(i, K-1)∈GF(pm)에 대한 유한체 상의 연산을 e(R(i, 0), ..., R(i, K-1))로 한 경우에 있어서의, 연산 Πi=0 N-1e(R(i, 0), ..., R(i, K-1))를 행하는 유한체 연산부와,
    상기 유한체 연산부에서의 연산결과를 출력하는 출력부를 갖고,
    상기 유한체 상의 연산 e(R(i, 0), ..., R(i, K-1))는, 각각, 유한체 GF(pm)의 d차 확대체 GF(pd ·m)(d≥2) 상의 확대체 연산을 일부에 포함하고,
    상기 확대체 연산은 입력된 1 이상의 유한체 GF(pm)의 원소 R(i, k)∈{R(i, 0), ..., R(i, K-1)}에 의존하는 유한체 GF(pm) 상의 상 및/또는 유한체 GF(pm)의 원소 R(i, k)∈{R(i, 0), ..., R(i, K-1)}를, d차 확대체 GF(pd ·m)의 원소를 나타내는 다항식 poly(R(i, 0), ..., R(i, K-1))∈GF(pd ·m)로 복사하는 연산이며,
    상기 다항식 poly(R(i, 0), ..., R(i, K-1))∈GF(pd ·m)는 항수 d의 다항식이며, 그 중 일부의 항 h∈{0, ..., d-1}의 계수 ah가 상기 1 이상의 유한체 GF(pm)의 원소 R(i, k)에 의존하는 유한체 GF(pm) 상의 상 및/또는 유한체 GF(pm)의 원소 R(i, k)로 되고, 미리 정해진 일부의 항 r∈{0, ..., d-1}(r≠h)의 계수 ar이 미리 0∈GF(pm)로 된 다항식이며,
    상기 유한체 연산부는,
    어느 하나의 i1∈{0, ..., N-1}에 대하여, 1 이상의 유한체 GF(pm)의 원소 R(i1, k)에 의존하는 유한체 GF(pm) 상의 상 및/또는 유한체 GF(pm)의 원소 R(i1, k)이 입력되고, 이것들에 대한 상기 확대체 연산을 행하고, 다항식 poly(R(i1, 0), ..., R(i1, K-1))∈GF(pd ·m)를 얻는 제 1 연산부와,
    어느 하나의 i2∈{0, ..., N-1}(i2≠i1)에 대하여, 1 이상의 유한체 GF(pm)의 원소 R(i2, k)에 의존하는 유한체 GF(pm) 상의 상 및/또는 유한체 GF(pm)의 원소 R(i2, k)이 입력되고, 이것들에 대한 상기 확대체 연산을 행하고, 다항식 poly(R(i2, 0), ..., R(i2, K-1))∈GF(pd ·m)를 얻는 제 2 연산부와,
    상기 다항식 poly(R(i1, 0), ..., R(i1, K-1))과 상기 다항식 poly(R(i2, 0), ..., R(i2, K-1))가 입력되고, 그것들의 곱 poly(R(i1, 0), ..., R(i1, K-1))·poly(R(i2, 0), ..., R(i2, K-1))∈GF(pd ·m)를 산출하는 제 3 연산부와,
    집합 {0, ..., N-1}에 포함되는 L개[L은 짝수]의 서로 상이한 복수의 원소로 이루어지는 부분집합의 각 원소를 각각 1회씩 i1 또는 i2로서 선택하고, 선택한 i1과 i2의 세트의 각각에 대하여 상기 제 1 연산부와 상기 제 2 연산부와 상기 제 3 연산부에 의한 제 1 처리를 1회씩 실행시킴으로써, L/2개의 상기 세트의 각각에 대응하는 상기 제 1 처리를 포함하는 루프 처리를 실행시키는 제어부와,
    각각의 상기 제 1 처리에 의해 얻어진 상기 곱 poly(R(i1, 0), ..., R(i1, K-1))·poly(R(i2, 0), ..., R(i2, K-1))를 사용하여 Πi=0 N-1poly(R(i, 0), ..., R(i, K-1))∈GF(pd ·m)를 산출하는 제 4 연산부를 포함하는 것을 특징으로 하는 유한체 연산장치.
  2. 제 1 항에 있어서,
    상기 제 3 연산부는 상기 다항식 poly(R(i1, 0), ..., R(i1, K-1))의 미리 0∈GF(pm)로 된 항, 및/또는, 상기 다항식 poly(R(i2, 0), ..., R(i2, K-1))의 미리 0∈GF(pm)로 된 항을 피연산자로 한 연산을 행하지 않고, 상기 곱 poly(R(i1, 0), ..., R(i1, K-1))·poly(R(i2, 0), ..., R(i2, K-1))을 구하는 것을 특징으로 하는 유한체 연산장치.
  3. 제 1 항 또는 제 2 항에 있어서,
    N은 짝수이고, L=N이며, 상기 부분집합은 집합 {0, ..., N-1}인 것을 특징으로 하는 유한체 연산장치.
  4. 제 1 항 또는 제 2 항에 있어서,
    상기 제어부는 상기 제 1 처리를 L/2회 실행시키는 루프 처리를 복수회 실행시키는 것을 특징으로 하는 유한체 연산장치.
  5. 제 3 항에 있어서,
    상기 제어부는 상기 제 1 처리를 L/2회 실행시키는 루프 처리를 복수회 실행시키는 것을 특징으로 하는 유한체 연산장치.
  6. 제 1 항 또는 제 2 항에 있어서,
    N≥4이고,
    상기 제 4 연산부는 각각의 상기 제 1 처리에 의해 얻어진 상기 곱 poly(R(i1, 0), ..., R(i1, K-1))·poly(R(i2, 0), ..., R(i2, K-1))의 승산값을 사용하여 Πi=0 N-1poly(R(i, 0), ..., R(i, K-1))∈GF(pd ·m)를 구하는 것을 특징으로 하는 유한체 연산장치.
  7. 제 3 항에 있어서,
    N≥4이고,
    상기 제 4 연산부는 각각의 상기 제 1 처리에 의해 얻어진 상기 곱 poly(R(i1, 0), ..., R(i1, K-1))·poly(R(i2, 0), ..., R(i2, K-1))의 승산값을 사용하여 Πi=0 N-1poly(R(i, 0), ..., R(i, K-1))∈GF(pd ·m)를 구하는 것을 특징으로 하는 유한체 연산장치.
  8. 제 4 항에 있어서,
    N≥4이고,
    상기 제 4 연산부는 각각의 상기 제 1 처리에 의해 얻어진 상기 곱 poly(R(i1, 0), ..., R(i1, K-1))·poly(R(i2, 0), ..., R(i2, K-1))의 승산값을 사용하여 Πi=0 N-1poly(R(i, 0), ..., R(i, K-1))∈GF(pd ·m)를 구하는 것을 특징으로 하는 유한체 연산장치.
  9. 제 5 항에 있어서,
    N≥4이고,
    상기 제 4 연산부는 각각의 상기 제 1 처리에 의해 얻어진 상기 곱 poly(R(i1, 0), ..., R(i1, K-1))·poly(R(i2, 0), ..., R(i2, K-1))의 승산값을 사용하여 Πi=0 N-1poly(R(i, 0), ..., R(i, K-1))∈GF(pd ·m)를 구하는 것을 특징으로 하는 유한체 연산장치.
  10. 제 6 항에 있어서,
    상기 제 4 연산부는 상기 제 1 처리가 1회 실행될 때마다, 그때까지 얻어진 상기 곱 poly(R(i1, 0), ..., R(i1, K-1))·poly(R(i2, 0), ..., R(i2, K-1))의 승산값을 갱신하는 것을 특징으로 하는 유한체 연산장치.
  11. 제 7 항에 있어서,
    상기 제 4 연산부는 상기 제 1 처리가 1회 실행될 때마다, 그때까지 얻어진 상기 곱 poly(R(i1, 0), ..., R(i1, K-1))·poly(R(i2, 0), ..., R(i2, K-1))의 승산값을 갱신하는 것을 특징으로 하는 유한체 연산장치.
  12. 제 8 항에 있어서,
    상기 제 4 연산부는 상기 제 1 처리가 1회 실행될 때마다, 그때까지 얻어진 상기 곱 poly(R(i1, 0), ..., R(i1, K-1))·poly(R(i2, 0), ..., R(i2, K-1))의 승산값을 갱신하는 것을 특징으로 하는 유한체 연산장치.
  13. 제 9 항에 있어서,
    상기 제 4 연산부는 상기 제 1 처리가 1회 실행될 때마다, 그때까지 얻어진 상기 곱 poly(R(i1, 0), ..., R(i1, K-1))·poly(R(i2, 0), ..., R(i2, K-1))의 승산값을 갱신하는 것을 특징으로 하는 유한체 연산장치.
  14. 제 1 항에 있어서,
    K=4이고,
    상기 유한체 GF(pm)의 원소 R(i, 0), R(i, 1), R(i, 2), R(i, 3)은, 각각, 유한체 GF(pm) 상에서 정의된 타원곡선 상의 2개의 점 P(X1[i], Y1[i]) 및 점 Q(X2[i], Y2[i])의 각 아핀 좌표점 X1[i], Y1[i], X2[i], Y2[i]∈GF(pm)이고,
    상기 연산 e(R(i, 0), ..., R(i, K-1))는 페어링 연산 e(P(X1[i], Y1[i]), Q(X2[i], Y2[i]))이며,
    상기 연산 Πi=0 N-1e(R(i, 0), ..., R(i, K-1))는 멀티 페어링 연산 Πi=0 N-1e(P(X1[i], Y1[i]), Q(X2[i], Y2[i]))인 것을 특징으로 하는 유한체 연산장치.
  15. 제 14 항에 있어서,
    p=3이고, d=6이고,
    상기 타원곡선이 Y2=X3-X+b이고, b∈{-1, 1}이며,
    상기 확대체 연산은 상기 입력부에 입력된 각 아핀 좌표점 X1[i], Y1[i], X2[i], Y2[i] 또는 그 상을 각각 x1[i], y1[i], x2[i], y2[i]로 하고, u[i]=x1[i]+x2[i]+c∈GF(3m)으로 하고, 유한체 GF(3m)의 원소를 계수로 하는 기약 다항식 σ2+1=0의 근을 부정원 σ로 하고, 기약 다항식 ρ3-ρ-b=0의 근을 부정원 ρ로 한 경우에 있어서의, 유한체 GF(3m)의 6차 확대체 GF(36m)의 원소를 나타내는 다항식 poly(x1[i], y1[i], x2[i], y2[i])=-{u[i]}2+y1[i]·y2[i]·σ-u[i]·ρ-ρ2∈GF(36m)를 구하는 연산이며,
    상기 제어부는 c의 초기값을 b로 하고, 상기 제 1 처리를 L/2회 실행시키는 루프 처리가 1회 실행될 때마다 (c-b)mod 3을 새로운 c로 하고,
    상기 다항식 poly(R(i1, 0), ..., R(i1, K-1))은 g[i1]=-{u[i1]}2+y1[i1]·y2[i1]·σ-u[i1]·ρ-ρ2∈GF(36m)이며,
    상기 다항식 poly(R(i2, 0), ..., R(i2, K-1))은 g[i2]=-{u[i2]}2+y1[i2]·y2[i2]·σ-u[i2]·ρ-ρ2∈GF(36m)이며,
    상기 곱 poly(R(i1, 0), ..., R(i1, K-1))·poly(R(i2, 0), ..., R(i2, K-1))은 g[i1]·g[i2]∈GF(36m)이며,
    상기 제 4 연산부는 각각의 상기 제 1 처리에 의해 얻어진 상기 곱 g[i1]·g[i2]를 사용하여 g=Πi=0 N-1poly(R(i, 0), ..., R(i, K-1))∈GF(3d·m)를 산출하는 것을 특징으로 하는 유한체 연산장치.
  16. 제 15 항에 있어서,
    상기 제 3 연산부는 상기 다항식 poly(R(i1, 0), ..., R(i1, K-1))의 미리 0∈GF(pm)로 된 항, 및/또는, 상기 다항식 poly(R(i2, 0), ..., R(i2, K-1))의 미리 0∈GF(pm)로 된 항을 피연산자로 한 연산을 행하지 않고, 상기 곱 poly(R(i1, 0), ..., R(i1, K-1))·poly(R(i2, 0), ..., R(i2, K-1))을 구하는 것을 특징으로 하는 유한체 연산장치.
  17. 제 15 항에 있어서,
    상기 제어부는, 각각의 상기 제 1 처리 때마다, -y1[i1]을 새로운 y1[i1]으로 하고, {x2[i1]}9을 새로운 x2[i1]으로 하고, {y2[i1]}9을 새로운 y2[i1]으로 하고, -y1[i2]를 새로운 y1[i2]로 하고, {x2[i2]}9을 새로운 x2[i2]로 하고, {y2[i2]}9을 새로운 y2[i2]로 하는 갱신처리를 행하고,
    상기 제어부는 상기 제 1 처리를 L/2회 실행시키는 루프 처리를 복수회 실행시키는 것을 특징으로 하는 유한체 연산장치.
  18. 제 15 항 내지 제 17 항 중 어느 한 항에 있어서,
    상기 유한체 연산부는,
    b=-1의 경우에는, x1[i]=X1[i], y1[i]=Y1[i], x2[i]=X2[i], y2[i]=Y2[i]로 하고, b=1의 경우에는, x1[i]=X1[i], y1[i]=-Y1[i], x2[i]=X2[i], y2[i]=Y2[i]로 하고, f=Πi=0 N-1(-y1[i]·(x1[i]+x2[i]+b)+y2[i]·σ+y1[i]·ρ)∈GF(36m)의 연산을 행하는 제 5 연산부를 더 갖고,
    상기 제 5 연산부의 처리는 상기 제 1 처리가 최초에 실행되기 전에 실행되는 처리인 것을 특징으로 하는 유한체 연산장치.
  19. 제 18 항에 있어서,
    상기 유한체 연산부는,
    상기 제 5 연산부에서 얻어진 f와, 상기 제 4 연산부에서 얻어진 g와의 곱 f·g∈GF(36m)를 새로운 f로 하는 제 10 연산부와,
    상기 제 10 연산부에서 얻어진 f의 3승값 f3∈GF(36m)를 새로운 f로 하는 제 11 연산부를 포함하고,
    상기 제 10 연산부와 상기 제 11 연산부와의 처리는 상기 루프 처리가 1회 실행될 때마다 실행되는 것을 특징으로 하는 유한체 연산장치.
  20. 제 18 항에 있어서,
    N≥4이고,
    상기 제 5 연산부는,
    어느 하나의 i3∈{0, ..., N-1}에 대하여, f[i3]=-y1[i3]·(x1[i3]+x2[i3]+b)+y2[i3]·σ+y1[i3]·ρ∈GF(36m)의 연산을 행하는 제 6 연산부와,
    어느 하나의 i4∈{0, ..., N-1}(i4≠i3)에 대하여, f[i4]=-y1[i4]·(x1[i4]+x2[i4]+b)+y2[i4]·σ+y1[i4]·ρ∈GF(36m)의 연산을 행하는 제 7 연산부와,
    f[i3]과 f[i4]가 입력되고, 그것들의 곱 f[i3]·f[i4]∈GF(3d·m)를 산출하는 제 8 연산부와,
    집합 {0, ..., N-1}의 W개[W는 정의 짝수]의 서로 상이한 복수의 원소로 이루어지는 부분집합의 각 원소를 각각 1회씩 i3 또는 i4로서 선택하고, 선택한 i3과 i4의 세트의 각각에 대하여 상기 제 6 연산부와 상기 제 7 연산부와 상기 제 8 연산부에 의한 제 2 처리를 W/2회 실행시키는 제 2 제어부와,
    각각의 상기 제 2 처리에 의해 얻어진 상기 곱 f[i3]·f[i4]의 승산값을 사용하여 f=Πi=0 N-1(-y1[i]·(x1[i]+x2[i]+b)+y2[i]·σ+y1[i]·ρ)∈GF(36m)를 산출하는 제 9 연산부를 포함하는 것을 특징으로 하는 유한체 연산장치.
  21. 제 20 항에 있어서,
    상기 유한체 연산부는,
    상기 제 5 연산부에서 얻어진 f와, 상기 제 4 연산부에서 얻어진 g와의 곱 f·g∈GF(36m)을 새로운 f로 하는 제 10 연산부와,
    상기 제 10 연산부에서 얻어진 f의 3승값 f3∈GF(36m)을 새로운 f로 하는 제 11 연산부를 포함하고,
    상기 제 10 연산부와 상기 제 11 연산부와의 처리는, 상기 루프 처리가 1회 실행될 때마다 실행되는 것을 특징으로 하는 유한체 연산장치.
  22. 제 14 항에 있어서,
    p=3이고, d=6이고,
    상기 타원곡선이 Y2=X3-X+b이고, b∈{-1, 1}이며,
    상기 확대체 연산은 상기 입력부에 입력된 각 아핀 좌표점 X1[i], Y1[i], X2[i], Y2[i] 또는 그 상을 각각 x1[i], y1[i], x2[i], y2[i]로 하고, 유한체 GF(3m)의 원소를 계수로 하는 기약 다항식 σ2+1=0의 근을 부정원 σ로 하고, 기약 다항식 ρ3-ρ-b=0의 근을 부정원 ρ로 한 경우에 있어서의, 유한체 GF(3m)의 6차 확대체 GF(36m)의 원소를 나타내는 다항식 poly(x1[i], y1[i], x2[i], y2[i])=-y1[i]·(x1[i]+x2[i]+b)+y2[i]·σ+y1[i]·ρ∈GF(36m)를 구하는 연산인 것을 특징으로 하는 유한체 연산장치.
  23. 입력부와 유한체 연산부와 출력부를 갖는 유한체 연산장치의 유한체 연산방법으로서,
    (A) N·K개(N≥2, K≥1)의 유한체 GF(pm)의 원소 R(i, k)∈GF(pm)[i∈{0, ..., N-1}, k∈{0, ..., K-1}, p는 소수, m은 1 이상의 정수]가 상기 입력부에 입력되는 스텝과,
    (B) 상기 유한체 연산부가 K개의 상기 유한체 GF(pm)의 원소 R(i, 0), ..., R(i, K-1)∈GF(pm)에 대한 유한체 상의 연산을 e(R(i, 0), ..., R(i, K-1))로 한 경우에 있어서의 연산 Πi=0 N-1e(R(i, 0), ..., R(i, K-1))를 행하는 스텝과,
    (C) 스텝 (B)에서의 연산결과를 상기 출력부로부터 출력하는 스텝을 갖고,
    상기 유한체 상의 연산 e(R(i, 0), ..., R(i, K-1))는, 각각, 유한체 GF(pm)의 d차 확대체 GF(pd ·m)(d≥2) 상의 확대체 연산을 일부에 포함하고,
    상기 확대체 연산은, 입력된 1 이상의 유한체 GF(pm)의 원소 R(i, k)∈{R(i, 0), ..., R(i, K-1)}에 의존하는 유한체 GF(pm) 상의 상 및/또는 유한체 GF(pm)의 원소 R(i, k)∈{R(i, 0), ..., R(i, K-1)}를, d차 확대체 GF(pd ·m)의 원소를 나타내는 다항식 poly(R(i, 0), ..., R(i, K-1))∈GF(pd ·m)로 복사하는 연산이며,
    상기 다항식 poly(R(i, 0), ..., R(i, K-1))∈GF(pd ·m)는 항수 d의 다항식이며, 그 중 일부의 항 h∈{0, ..., d-1}의 계수 ah가 상기 1 이상의 유한체 GF(pm)의 원소 R(i, k)에 의존하는 유한체 GF(pm) 상의 상 및/또는 유한체 GF(pm)의 원소 R(i, k)로 되고, 미리 정해진 일부의 항 r∈{0, ..., d-1}(r≠h)의 계수 ar이 미리 0∈GF(pm)으로 된 다항식이며,
    상기 스텝 (B)는,
    (B-1) 어느 하나의 i1∈{0, ..., N-1}에 대하여, 1 이상의 유한체 GF(pm)의 원소 R(i1, k)에 의존하는 유한체 GF(pm) 상의 상 및/또는 유한체 GF(pm)의 원소 R(i1, k)이 상기 유한체 연산부의 제 1 연산부에 입력되고, 당해 제 1 연산부가 이것들에 대한 상기 확대체 연산을 행하고, 다항식 poly(R(i1, 0), ..., R(i1, K-1))∈GF(pd ·m)를 얻는 스텝과,
    (B-2) 어느 하나의 i2∈{0, ..., N-1}(i2≠i1)에 대하여, 1 이상의 유한체 GF(pm)의 원소 R(i2, k)에 의존하는 유한체 GF(pm) 상의 상 및/또는 유한체 GF(pm)의 원소 R(i2, k)이 상기 유한체 연산부의 제 2 연산부에 입력되고, 당해 제 2 연산부가 이것들에 대한 상기 확대체 연산을 행하고, 다항식 poly(R(i2, 0), ..., R(i2, K-1))∈GF(pd ·m)를 얻는 스텝과,
    (B-3) 상기 다항식 poly(R(i1, 0), ..., R(i1, K-1))과 상기 다항식 poly(R(i2, 0), ..., R(i2, K-1))가 상기 유한체 연산부의 제 3 연산부에 입력되고, 당해 제 3 연산부가 그것들의 곱 poly(R(i1, 0), ..., R(i1, K-1))·poly(R(i2, 0), ..., R(i2, K-1))∈GF(pd ·m)를 산출하는 스텝을 포함하고,
    (B-4) 상기 유한체 연산부의 제 4 연산부가 상기 스텝 (B-1), (B-2), (B-3)을 포함하는 제 1 처리에 의해 얻어진 상기 곱 poly(R(i1, 0), ..., R(i1, K-1))·poly(R(i2, 0), ..., R(i2, K-1))을 사용하여 Πi=0 N-1poly(R(i, 0), ..., R(i, K-1))∈GF(pd ·m)를 산출하는 스텝을 포함하고,
    집합 {0, ..., N-1}에 포함되는 L개[L은 짝수]의 서로 상이한 복수의 원소로 이루어지는 부분집합의 각 원소가 각각 1회씩 i1 또는 i2로서 선택되고, 선택된 i1과 i2의 세트의 각각에 대하여 상기 제 1 처리가 1회씩 실행됨으로써 L/2개의 상기 세트의 각각에 대응하는 상기 제 1 처리를 포함하는 루프 처리가 실행되고,
    상기 스텝 (B-4)는, L/2개의 상기 세트의 각각에 대응하는 상기 곱 poly(R(i1, 0), ..., R(i1, K-1))·poly(R(i2, 0), ..., R(i2, K-1))을 사용하여 Πi=0 N-1poly(R(i, 0), ..., R(i, K-1))∈GF(pd ·m)를 산출하는 스텝을 포함하는 유한체 연산방법.
  24. 제 23 항에 있어서,
    상기 스텝 (B-3)은 상기 다항식 poly(R(i1, 0), ..., R(i1, K-1))의 미리 0∈GF(pm)로 된 항, 및/또는, 상기 다항식 poly(R(i2, 0), ..., R(i2, K-1))의 미리 0∈GF(pm)로 된 항을 피연산자로 한 연산을 행하지 않고, 상기 곱 poly(R(i1, 0), ..., R(i1, K-1))·poly(R(i2, 0), ..., R(i2, K-1))을 구하는 스텝을 포함하는 것을 특징으로 하는 유한체 연산방법.
  25. 제 23 항 또는 제 24 항에 있어서,
    N은 짝수이고, L=N이며, 상기 부분집합은 집합 {0, ..., N-1}인 것을 특징으로 하는 유한체 연산방법.
  26. 제 23 항 또는 제 24 항에 있어서,
    상기 제 1 처리를 L/2회 실행하는 루프 처리를 복수회 실행하는 것을 특징으로 하는 유한체 연산방법.
  27. 제 25 항에 있어서,
    상기 제 1 처리를 L/2회 실행하는 루프 처리를 복수회 실행하는 것을 특징으로 하는 유한체 연산방법.
  28. 제 23 항 또는 제 24 항에 있어서,
    N≥4이고,
    상기 스텝 (B-4)는 각각의 상기 제 1 처리에 의해 얻어진 상기 곱 poly(R(i1, 0), ..., R(i1, K-1))·poly(R(i2, 0), ..., R(i2, K-1))의 승산값을 사용하여 Πi=0 N-1poly(R(i, 0), ..., R(i, K-1))∈GF(pd ·m)를 구하는 스텝을 포함하는 것을 특징으로 하는 유한체 연산방법.
  29. 제 25 항에 있어서,
    N≥4이고,
    상기 스텝 (B-4)는 각각의 상기 제 1 처리에 의해 얻어진 상기 곱 poly(R(i1, 0), ..., R(i1, K-1))·poly(R(i2, 0), ..., R(i2, K-1))의 승산값을 사용하여 Πi=0 N-1poly(R(i, 0), ..., R(i, K-1))∈GF(pd ·m)를 구하는 스텝을 포함하는 것을 특징으로 하는 유한체 연산방법.
  30. 제 26 항에 있어서,
    N≥4이고,
    상기 스텝 (B-4)는 각각의 상기 제 1 처리에 의해 얻어진 상기 곱 poly(R(i1, 0), ..., R(i1, K-1))·poly(R(i2, 0), ..., R(i2, K-1))의 승산값을 사용하여 Πi=0 N-1poly(R(i, 0), ..., R(i, K-1))∈GF(pd ·m)를 구하는 스텝을 포함하는 것을 특징으로 하는 유한체 연산방법.
  31. 제 27 항에 있어서,
    N≥4이고,
    상기 스텝 (B-4)는 각각의 상기 제 1 처리에 의해 얻어진 상기 곱 poly(R(i1, 0), ..., R(i1, K-1))·poly(R(i2, 0), ..., R(i2, K-1))의 승산값을 사용하여 Πi=0 N-1poly(R(i, 0), ..., R(i, K-1))∈GF(pd ·m)를 구하는 스텝을 포함하는 것을 특징으로 하는 유한체 연산방법.
  32. 제 28 항에 있어서,
    상기 스텝 (B-4)는 상기 제 1 처리가 1회 실행될 때마다, 그때까지 얻어진 상기 곱 poly(R(i1, 0), ..., R(i1, K-1))·poly(R(i2, 0), ..., R(i2, K-1))의 승산값을 갱신하는 스텝을 포함하는 것을 특징으로 하는 유한체 연산방법.
  33. 제 29 항에 있어서,
    상기 스텝 (B-4)는 상기 제 1 처리가 1회 실행될 때마다, 그때까지 얻어진 상기 곱 poly(R(i1, 0), ..., R(i1, K-1))·poly(R(i2, 0), ..., R(i2, K-1))의 승산값을 갱신하는 스텝을 포함하는 것을 특징으로 하는 유한체 연산방법.
  34. 제 30 항에 있어서,
    상기 스텝 (B-4)는 상기 제 1 처리가 1회 실행될 때마다, 그때까지 얻어진 상기 곱 poly(R(i1, 0), ..., R(i1, K-1))·poly(R(i2, 0), ..., R(i2, K-1))의 승산값을 갱신하는 스텝을 포함하는 것을 특징으로 하는 유한체 연산방법.
  35. 제 31 항에 있어서,
    상기 스텝 (B-4)는, 상기 제 1 처리가 1회 실행될 때마다, 그때까지 얻어진 상기 곱 poly(R(i1, 0), ..., R(i1, K-1))·poly(R(i2, 0), ..., R(i2, K-1))의 승산값을 갱신하는 스텝을 포함하는 것을 특징으로 하는 유한체 연산방법.
  36. 제 23 항에 있어서,
    K=4이고,
    상기 유한체 GF(pm)의 원소 R(i, 0), R(i, 1), R(i, 2), R(i, 3)은, 각각, 유한체 GF(pm) 상에서 정의된 타원곡선 상의 2개의 점 P(X1[i], Y1[i]) 및 점 Q(X2[i], Y2[i])의 각 아핀 좌표점 X1[i], Y1[i], X2[i], Y2[i]∈GF(pm)이고,
    상기 연산 e(R(i, 0), ..., R(i, K-1))는 페어링 연산 e(P(X1[i], Y1[i]), Q(X2[i], Y2[i]))이며,
    상기 연산 Πi=0 N-1e(R(i, 0), ..., R(i, K-1))는 멀티 페어링 연산 Πi=0 N-1e(P(X1[i], Y1[i]), Q(X2[i], Y2[i]))인 것을 특징으로 하는 유한체 연산방법.
  37. 제 36 항에 있어서,
    p=3이고, d=6이고,
    상기 타원곡선이 Y2=X3-X+b이고, b∈{-1, 1}이고,
    상기 확대체 연산은 상기 입력부에 입력된 각 아핀 좌표점 X1[i], Y1[i], X2[i], Y2[i] 또는 그 상을 각각 x1[i], y1[i], x2[i], y2[i]로 하고, u[i]=x1[i]+x2[i]+c∈GF(3m)로 하고, 유한체 GF(3m)의 원소를 계수로 하는 기약 다항식 σ2+1=0의 근을 부정원 σ로 하고, 기약 다항식 ρ3-ρ-b=0의 근을 부정원 ρ로 한 경우에 있어서의, 유한체 GF(3m)의 6차 확대체 GF(36m)의 원소를 나타내는 다항식 poly(x1[i], y1[i], x2[i], y2[i])=-{u[i]}2+y1[i]·y2[i]·σ-u[i]·ρ-ρ2∈GF(36m)을 구하는 연산이며,
    c의 초기값이 b로 되고, 상기 제 1 처리를 L/2회 실행하는 루프 처리가 1회 실행될 때마다 (c-b)mod 3이 새로운 c로 되고,
    상기 다항식 poly(R(i1, 0), ..., R(i1, K-1))은 g[i1]=-{u[i1]}2+y1[i1]·y2[i1]·σ-u[i1]·ρ-ρ2∈GF(36m)이고,
    상기 다항식 poly(R(i2, 0), ..., R(i2, K-1))은 g[i2]=-{u[i2]}2+y1[i2]·y2[i2]·σ-u[i2]·ρ-ρ2∈GF(36m)이고,
    상기 곱 poly(R(i1, 0), ..., R(i1, K-1))·poly(R(i2, 0), ..., R(i2, K-1))은 g[i1]·g[i2]∈GF(36m)이며,
    상기 스텝 (B-4)는 각각의 상기 제 1 처리에 의해 얻어진 상기 곱 g[i1]·g[i2]을 사용하여 g=Πi=0 N-1poly(R(i, 0), ..., R(i, K-1))∈GF(3d·m)를 산출하는 스텝을 포함하는 것을 특징으로 하는 유한체 연산방법.
  38. 제 37 항에 있어서,
    상기 스텝 (B-3)은, 상기 다항식 poly(R(i1, 0), ..., R(i1, K-1))의 미리 0∈GF(pm)으로 된 항, 및/또는, 상기 다항식 poly(R(i2, 0), ..., R(i2, K-1))의 미리 0∈GF(pm)으로 된 항을 피연산자로 한 연산을 행하지 않고, 상기 곱 poly(R(i1, 0), ..., R(i1, K-1))·poly(R(i2, 0), ..., R(i2, K-1))을 구하는 스텝을 포함하는 것을 특징으로 하는 유한체 연산방법.
  39. 제 37 항에 있어서,
    각각의 상기 제 1 처리 때마다, -y1[i1]을 새로운 y1[i1]로 하고, {x2[i1]}9을 새로운 x2[i1]으로 하고, {y2[i1]}9을 새로운 y2[i1]로 하고, -y1[i2]를 새로운 y1[i2]로 하고, {x2[i2]}9을 새로운 x2[i2]로 하고, {y2[i2]}9를 새로운 y2[i2]로 하는 갱신처리가 행해지고,
    상기 제 1 처리를 L/2회 실행시키는 루프 처리가 복수회 실행되는 것을 특징으로 하는 유한체 연산방법.
  40. 제 37 항 내지 제 39 항 중 어느 한 항에 있어서,
    상기 스텝 (B)은,
    (B-5) b=-1의 경우에, x1[i]=X1[i], y1[i]=Y1[i], x2[i]=X2[i], y2[i]=Y2[i]로 하고, b=1의 경우에, x1[i]=X1[i], y1[i]=-Y1[i], x2[i]=X2[i], y2[i]=Y2[i]로 하고, 상기 유한체 연산부의 제 5 연산부가 f=Πi=0 N-1(-y1[i]·(x1[i]+x2[i]+b)+y2[i]·σ+y1[i]·ρ)∈GF(36m)의 연산을 행하는 스텝을 더 포함하고,
    상기 스텝 (B-5)는 상기 제 1 처리가 최초에 실행되기 전에 실행되는 것을 특징으로 하는 유한체 연산방법.
  41. 제 40 항에 있어서,
    상기 스텝 (B)는,
    (B-10) 상기 유한체 연산부의 제 10 연산부가 상기 스텝 (B-5)에서 얻어진 f와, 상기 스텝 (B-4)에서 얻어진 g와의 곱 f·g∈GF(36m)을 새로운 f로 하는 스텝과,
    (B-11) 상기 유한체 연산부의 제 11 연산부가 상기 스텝 (B-6)에서 얻어진 f의 3승값 f3∈GF(36m)를 새로운 f로 하는 스텝을 포함하고,
    상기 스텝 (B-10)과 상기 스텝 (B-11)의 처리는 상기 루프 처리가 1회 실행될 때마다 실행되는 것을 특징으로 하는 유한체 연산방법.
  42. 제 40 항에 있어서,
    N≥4이고,
    상기 스텝 (B-5)는,
    (B-6) 상기 유한체 연산부의 제 6 연산부가, 어느 하나의 i3∈{0, ..., N-1}에 대하여, f[i3]=-y1[i3]·(x1[i3]+x2[i3]+b)+y2[i3]·σ+y1[i3]·ρ∈GF(36m)의 연산을 행하는 스텝과,
    (B-7) 상기 유한체 연산부의 제 7 연산부가, 어느 하나의 i4∈{0, ..., N-1}(i4≠i3)에 대하여, f[i4]=-y1[i4]·(x1[i4]+x2[i4]+b)+y2[i4]·σ+y1[i4]·ρ∈GF(36m)의 연산을 행하는 스텝과,
    (B-8) 상기 유한체 연산부의 제 8 연산부가 f[i3]과 f[i4]를 입력으로 하고, 그것들의 곱 f[i3]·f[i4]∈GF(3d·m)를 산출하는 스텝과,
    (B-9) 상기 유한체 연산부의 제 9 연산부가, 상기 스텝 (B-6)과 상기 스텝 (B-7)과 상기 스텝 (B-8)을 포함하는 제 2 처리에 의해 얻어진 상기 곱 f[i3]·f[i4]의 승산값을 사용하여 f=Πi=0 N-1(-y1[i]·(x1[i]+x2[i]+b)+y2[i]·σ+y1[i]·ρ)∈GF(36m)를 산출하는 스텝을 포함하고,
    집합 {0, ..., N-1}에 포함되는 W개[W는 정의 짝수]의 서로 상이한 복수의 원소로 이루어지는 부분집합의 각 원소가 각각 1회씩 i3 또는 i4로서 선택되고, 선택된 i3과 i4의 세트의 각각에 대하여 상기 제 2 처리가 1회씩 실행됨으로써 W/2개의 상기 세트(i3, i4)의 각각에 대응하는 제 2 처리가 실행되는 것을 특징으로 하는 유한체 연산방법.
  43. 제 42 항에 있어서,
    상기 스텝 (B)는,
    (B-10) 상기 유한체 연산부의 제 10 연산부가 상기 스텝 (B-5)에서 얻어진 f와, 상기 스텝 (B-4)에서 얻어진 g와의 곱 f·g∈GF(36m)를 새로운 f로 하는 스텝과,
    (B-11) 상기 유한체 연산부의 제 11 연산부가 상기 스텝 (B-6)에서 얻어진 f의 3승값 f3∈GF(36m)를 새로운 f로 하는 스텝을 포함하고,
    상기 스텝 (B-10)과 상기 스텝 (B-11)의 처리는 상기 루프 처리가 1회 실행될 때마다 실행되는 것을 특징으로 하는 유한체 연산방법.
  44. 제 36 항에 있어서,
    p=3이고, d=6이고,
    상기 타원곡선이 Y2=X3-X+b이고, b∈{-1, 1}이며,
    상기 확대체 연산은 상기 입력부에 입력된 각 아핀 좌표점 X1[i], Y1[i], X2[i], Y2[i] 또는 그 상을 각각 x1[i], y1[i], x2[i], y2[i]로 하고, 유한체 GF(3m)의 원소를 계수로 하는 기약 다항식 σ2+1=0의 근을 부정원 σ로 하고, 기약 다항식 ρ3-ρ-b=0의 근을 부정원 ρ로 한 경우에 있어서의, 유한체 GF(3m)의 6차 확대체 GF(36m)의 원소를 나타내는 다항식 poly(x1[i], y1[i], x2[i], y2[i])=-y1[i]·(x1[i]+x2[i]+b)+y2[i]·σ+y1[i]·ρ∈GF(36m)를 구하는 연산인 것을 특징으로 하는 유한체 연산방법.
  45. 삭제
  46. 제 1 항의 유한체 연산장치로서 컴퓨터를 기능시키기 위한 프로그램을 저장한 컴퓨터 판독 가능한 기록매체.
KR1020117023973A 2009-04-24 2010-04-23 유한체 연산장치, 유한체 연산방법, 프로그램 및 기록매체 KR101301139B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JPJP-P-2009-106029 2009-04-24
JP2009106029 2009-04-24
PCT/JP2010/057281 WO2010123117A1 (ja) 2009-04-24 2010-04-23 有限体演算装置、有限体演算方法、プログラム及び記録媒体

Publications (2)

Publication Number Publication Date
KR20120038395A KR20120038395A (ko) 2012-04-23
KR101301139B1 true KR101301139B1 (ko) 2013-09-03

Family

ID=43011231

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020117023973A KR101301139B1 (ko) 2009-04-24 2010-04-23 유한체 연산장치, 유한체 연산방법, 프로그램 및 기록매체

Country Status (6)

Country Link
US (1) US8488780B2 (ko)
EP (1) EP2423905B1 (ko)
JP (1) JP5269188B2 (ko)
KR (1) KR101301139B1 (ko)
CN (1) CN102396010B (ko)
WO (1) WO2010123117A1 (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9800407B2 (en) * 2013-08-30 2017-10-24 Qualcomm Incorporated Methods and apparatuses for prime number generation and storage
JP6067596B2 (ja) * 2014-01-20 2017-01-25 日本電信電話株式会社 ペアリング演算装置、マルチペアリング演算装置、プログラム
JP6023728B2 (ja) * 2014-01-20 2016-11-09 日本電信電話株式会社 マルチペアリング演算装置、マルチペアリング演算方法、マルチペアリング演算プログラム
JP6059287B2 (ja) * 2015-05-12 2017-01-11 日本電信電話株式会社 行列三角化装置およびプログラム
CN106330429B (zh) * 2016-08-24 2019-08-06 中国信息安全测评中心 Sm4算法的s盒的生成方法及装置

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006301513A (ja) 2005-04-25 2006-11-02 Nippon Telegr & Teleph Corp <Ntt> マルチペアリング演算方法、ペアリング比較方法、それらを用いた装置、およびプログラム

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE69322376T2 (de) * 1993-05-05 1999-05-06 Zunquan Liu Einrichtung und Verfahren zur Datenverschlüsselung
JP4181724B2 (ja) * 2000-03-03 2008-11-19 日本電気株式会社 証明付再暗号シャッフル方法と装置、再暗号シャッフル検証方法と装置、入力文列生成方法と装置及び記録媒体
KR100585119B1 (ko) * 2004-01-07 2006-06-01 삼성전자주식회사 암호화 장치, 암호화 방법 및 그 기록매체
WO2007080633A1 (ja) * 2006-01-11 2007-07-19 Mitsubishi Denki Kabushiki Kaisha 楕円曲線暗号パラメータ生成装置及び楕円曲線暗号演算装置及び楕円曲線暗号パラメータ生成プログラム及び楕円曲線暗号演算プログラム
JP4856599B2 (ja) * 2007-07-25 2012-01-18 日本電信電話株式会社 ペアリング演算装置、プログラム
JP5349261B2 (ja) * 2009-04-23 2013-11-20 三菱電機株式会社 暗号処理システム、鍵生成装置、鍵委譲装置、暗号化装置、復号装置、暗号処理方法及び暗号処理プログラム

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006301513A (ja) 2005-04-25 2006-11-02 Nippon Telegr & Teleph Corp <Ntt> マルチペアリング演算方法、ペアリング比較方法、それらを用いた装置、およびプログラム

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
A TAKAHASHI et al ., "Pairing o Mochiita Multi Pairing Keisanho", 2010 Nen Symposium on Cryptography and Information Security *
R .Granger et.al., On Computing Products of Pairings, Cryptology ePrint Archive *

Also Published As

Publication number Publication date
JP5269188B2 (ja) 2013-08-21
EP2423905B1 (en) 2016-03-16
CN102396010A (zh) 2012-03-28
US20120033805A1 (en) 2012-02-09
JPWO2010123117A1 (ja) 2012-10-25
WO2010123117A1 (ja) 2010-10-28
US8488780B2 (en) 2013-07-16
CN102396010B (zh) 2014-10-22
EP2423905A1 (en) 2012-02-29
KR20120038395A (ko) 2012-04-23
EP2423905A4 (en) 2013-10-16

Similar Documents

Publication Publication Date Title
KR101301139B1 (ko) 유한체 연산장치, 유한체 연산방법, 프로그램 및 기록매체
Ritirc et al. Column-wise verification of multipliers using computer algebra
CN104462668B (zh) 计算机实施的用于设计用二叉树来建模的工业产品的方法
Al-Jawary et al. Radial integration boundary integral and integro-differential equation methods for two-dimensional heat conduction problems with variable coefficients
JP5360836B2 (ja) ペアリング演算装置、ペアリング演算方法、及びペアリング演算プログラム
Karmakar et al. Efficient finite field multiplication for isogeny based post quantum cryptography
Calle et al. Implementation of continuous hp-adaptive finite element spaces without limitations on hanging sides and distribution of approximation orders
JP2001526416A (ja) 楕円曲線暗号化演算の最適化用変換方法
US8856200B2 (en) Exponentiation calculation apparatus and exponentiation calculation method
Tian et al. Efficient software implementation of the SIKE protocol using a new data representation
WO2021211678A1 (en) System and method to improve efficiency in multiplication ladder-based cryptographic operations
JP5175983B2 (ja) 演算装置
Jing et al. Analysis of an a posteriori error estimator for a variational inequality governed by the Stokes equations
JP2015166867A (ja) 楕円曲線上のデータの暗号処理方法、対応する電子装置およびコンピュータ・プログラム・プロダクト
Laine et al. Time-memory trade-offs for index calculus in genus 3
Janson et al. Near-critical SIR epidemic on a random graph with given degrees
Fayed et al. A high-speed, high-radix, processor array architecture for real-time elliptic curve cryptography over GF (2 m)
JP2007526513A (ja) 要素の累乗またはスカラー乗算の方法
KR20200058249A (ko) 꼬인 에드워즈 곡선에 대한 3차 아이소제니 계산 방법
Di Tullio et al. Elliptic curves of nearly prime order
Wachsmuth et al. An interior point method designed for solving linear quadratic optimal control problems with hp finite elements
JP2002304122A (ja) 曲線上の有理点群の部分群上元判定装置、そのプログラム及びその記録媒体
JP6023728B2 (ja) マルチペアリング演算装置、マルチペアリング演算方法、マルチペアリング演算プログラム
RU2652450C1 (ru) Устройство вычисления модулярного произведения Монтгомери
Aharoni et al. Solving constraints on the invisible bits of the intermediate result for floating-point verification

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20160812

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20170811

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20190808

Year of fee payment: 7