KR0138277B1 - 암호화시스템에서의 멱승연산방법 - Google Patents

암호화시스템에서의 멱승연산방법

Info

Publication number
KR0138277B1
KR0138277B1 KR1019950000224A KR19950000224A KR0138277B1 KR 0138277 B1 KR0138277 B1 KR 0138277B1 KR 1019950000224 A KR1019950000224 A KR 1019950000224A KR 19950000224 A KR19950000224 A KR 19950000224A KR 0138277 B1 KR0138277 B1 KR 0138277B1
Authority
KR
South Korea
Prior art keywords
bit
exponent
multiplications
following equation
power
Prior art date
Application number
KR1019950000224A
Other languages
English (en)
Other versions
KR960029510A (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 김광호
Priority to KR1019950000224A priority Critical patent/KR0138277B1/ko
Priority to JP01733395A priority patent/JP3540852B2/ja
Publication of KR960029510A publication Critical patent/KR960029510A/ko
Priority to US09/003,875 priority patent/US5999627A/en
Application granted granted Critical
Publication of KR0138277B1 publication Critical patent/KR0138277B1/ko

Links

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/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0869Generation of secret information including derivation or calculation of cryptographic keys or passwords involving random numbers or seeds
    • 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/3006Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Storage Device Security (AREA)
  • Complex Calculations (AREA)

Abstract

본 발명은 암호화 시스템에서 요구되는 고정된 기본원소를 밑으로 하는 모듈라 멱승연산을 보다 빠르게 수행하기 위한 멱승연산방법에 관한 것이다.
본 발명에 의하면, 사전계산에 의한 빠른 멱승연산을 위한 새로운 방법을 제시함으로써, 매우 간단하면서도 보다 나은 성능을 성취할 수 있다. 또한 본 방법은 넓은 범위의 시간-저장장치 tradeoff로 인하여 다양한 계산환경에 융통성있게 응용가능하기 때문에 더욱 바람직하다. 특히, 제안된 방법을 사용하여, 매우 작은 저장용량을 구비한 스마트카드에 의한 계산속도를 근본적으로 향상시킬 수 있다. 그리고 본 방법은 gRyE(y는 변수) 형태의 계산속도도 향상시킬 수 있다.

Description

[발명의 상세한 설명]
본 발명은 암호화 시스템에서 요구되는 고정된 기본원소를 밑으로 하는 모듈라 멱승연산을 보다 빠르게 수행하기 위한 멱승연산방법에 관한 것으로, 특히 고정된 기본원소 g에 의존하는 사전계산테이블(Precomputation Table)을 이용한 멱승연산방법에 관한 것이다.
1976년 Diffie와 Hellman에 의하여 최초로 공개키 암호시스템(Public key cryptosystem)의 개념이 소개된 이후 대부분의 암호 프로토콜들이 공개키 암호방식에 바탕을 두고 개발되어 왔다. 공개키 암호시스템은 수학적으로 매우 어려운 문제의 일방성을 이용하여 공개키와 비밀키를 계산함으로써 공개키가 알려지더라도 이로부터 비밀키를 유도해 내는 것이 계산상 불가능하다는 사실을 이용한다.
수학적으로 어려운 문제의 대표적인 예가 유한그룹에서의 이산대수문제(Discrete Logarithm Problem)와 합성수를 소인수분해하`는 문제(Integer Factorization Problem)이다. 그런데 이러한 문제들을 바탕으로 설계된 암호시스템은 적법한 사용자라 하더라도 관용 암호시스템(Conventional or Symmetric Cryptosystem)에 비하여 계산량이 많아서 속도가 느리다는 단점을 지니고 있다. 따라서 계산량을 줄이기 위한 알고리즘의 개발이 중요한 연구분야가 되고 있다.
공개키 암호시스템에서 요구되는 가장 일반적인 연산이 유한그룹(대표적으로 많이 사용되는 그룹은 정수링(Integer Ring)이나 유한체(Finite Field)상의 곱셈군, 유한체상에서 정의된 타원곡선(Elliptic Curve)상의 덧셈군 등이 있다.)에서의 멱승연산이다. 일반적으로 멱승연산이라 함은 그룹의 랜덤한 두 원소 X와 R에 대해 XR을 계산하는 것을 말한다. 그러나 많은 암호 프로토콜들에서 그룹의 고정된 기본원소 g를 밑으로 랜덤한 지수 R에 대해 멱승 gR을 계산하는 것이 필요하다. 그예로서 이산대수문제의 어려움을 이용하는 대부분의 프로토콜들, 특히 가장 기본적인 암호 프로토콜에 속하는 인증 및 디지탈 서명방식들이 있다.
주어진 그룹(보통 ZN, 여기서 N은 큰 소수(素數) 또는 두 큰 소수의 곱)에서의 빠른 멱승연산 문제는 대부분의 공개키 암호화시스템의 효율적인 수행에 매우 중요하다. 이하에서는 편의상 계산이 ZN에 대해 수행되는 것으로 가정하며, 따라서 곱셈은 multiplication mod N을 의미한다. 그러나, 본 발명에서 제시한 방법은 어떤 그룹에서도 적용 가능하다. 이하의 설명에서, g는 ZN의 고정된 요소로서, R은 [0, 2n)에서의 n-비트 랜덤지수로서 사용된다. 정수S에 대한 S의 비트길이 또는 집합S에 대한 S의 cardinality는 |S|로 표기된다. 또한 X보다 작지않은 최소 정수는「x (예 「1.29=2)로, x보다 크지 않은 최대 정수는 x」(예 1.29」 = 1)로 표기된다.
전형적인 멱승연산방법은 제곱-곱셈(square-and-multiply) 방법으로 알려진 이진알고리즘을 사용하는 것이다. 512비트의 법(modulus)과 지수에 대해, 이 방법은 평균 766번의 곱셈, 최악의 경우 1022번의 곱셈이 필요하다. 부호이진알고리즘(Signed Binary Algorithm)은 평균 682번, 최악의 경우 768번으로 필요한 곱셈의 수를 줄일 수 있다.
한편, 중간값에 대한 적당한 저장용량을 사용하여 그 수행능력을 다시 상당히 향상시킬 수 있다. Knuth의 5-window알고리즘은 16번 곱셈의 온라인 사전계산을 포함하여 평균 약 609번의 곱셈으로 멱승연산할 수 있다.
멱승연산에 대해 알려진 가장 빠른 알고리즘 addition chain에 기초한 window방법이며, 여기서는 10과 같은 더 큰 윈도우를 사용할 수 있으며, 중간값에 대한 더 많은 저장용량이 요구된다. 가장 짧은 addition chain을 찾는 것은 NP-complete problem이지만, 발견적해결법을 적용하여 약 605 길이의 addition chain이 계산될 수 있다는 것이 보고되었다.
이러한 일반적인 방법은 RSA 및 ELGamal과 같이 멱승연산을 요구하는 어떠한 암호화시스템에도 사용될 수 있다. 그러나, 이산대수문제에 기초된 많은 암호프로토콜에서, 고정된 기수(基數) g 및 랜덤하게 선택된 지수 R에 대한 gR을 계산할 필요가 있다. 고정된 기수 덕분으로, 요구되는 곱셈의 수를 줄이기 위하여 사전계산테이블이 사용될 수 있으며, 물론 사전계산값에 대한 저장장치가 필요하다.
본 발명의 목적은 공개키 암호시스템에서 고정된 기본원소 g에 의존하는 사전계산테이블을 이용하여 멱승연산을 보다 고속으로 행할 수 있는 멱승연산방법을 제공하는 데 있다.
상기의 목적을 달성하기 위한 본 발명에 의한 암호화시스템에서의 멱승연산방법은,
주어진 그룹의 고정요소 g에 랜덤하게 선택된 n비트 지수 R에 대한 멱승연산 gR을 계산하기 위한 멱승연산방법에 있어서,
(a) 상기 지수 R의 비트열을 소정수 h의 블록으로 분할하고, 상기 분할된 각 블록의 비트열을 소정수 v의 부블럭으로 분할하여, 상기 지수 R의 비트열을 v행 및 h열로 이루어진 h*v 2차원 배열로 분할하는 지수분할과정;
(b) 각 블록 및 부블럭의 위치에 따른 자리값을 고려하여, 상기 지수 R을 다음의 식과 같이 제i번째 열에 해당하는 블록의 비트열 Ri및 제i번째 열과 제j번째 행에 해당하는 부블럭의 비트열 Rij를 생성하는 과정;
(c) 상기 Rij를 0과 같거나 크고 h보다 작은 모든 정수 i, 및 0과 같거나 크고 v보다 작은 모든 정수 j에 대하여 다음의 식과 같이 이진수 형태로 생성하는 과정;
여기서, eijb+k는 지수 R의 제i번째 열 및 제j번째 행에 해당하는 비트열 Rij에서 제k번째 비트의 값.
(d) 0보다 크고 h보다 작은 모든 정수 i에 대하여 gi를 다음의 식과 같이 상기 밑수 g를 이용하여 생성하는 과정;
gi = gq(여기서, q=2ia)
(e) gR을 상기 (c)과정에서의 Rij및 상기 (d)과정에서의 gi를 이용하여 다음의 식과 같이 생성하는 과정;
여기서, x = 2jb, y = eijb+k, z = 2k
(f) 0보다 크고 2h보다 작은 모든 정수 f(여기서 f는 이진수로 eh-1eh-2..........e1e0의 형태로 표기된다) 및 0과 같거나 크고 v보다 작은 모든 정수 j에 대하여, 다음의 값들을 계산하고 저장하는 과정 ;
G[j][f] = (g-1eh1gh-2eh2........g1e1g0e0
여기서, eh1 = eh-1,eh2 = eh-2, e1 = e1, e0 = e0, δ = 2jb
(g) 상기 저장된 계산값을 이용하여 다음의 식에 의하여 gR을 계산하는 과정을 포함함을 특징으로 한다.
여기서, Ijk는 모든 블록에서의 제j번째 부블럭에 해당하는 비트열에서 제k번째 비트행에 위치된 h비트크기의 비트열로 이루어지는 값.
이하에서 먼저 종래의 BGMW방법에 대하여 간단히 살펴본 다음, 본 발명의 실시예를 상세히 설명하고, 또한 이들 방법에 의한 수행능력을 도면을 이용하여 비교설명한다.
먼저 종래에 Eurocrypt'92에서 Brickell, Gordon, McCurley, Wilson에 의해 제안된 사전계산방법인 BGMW방법을 간단히 고찰한다.
Eurocrypt'92에서, Brickell 등은 gR의 계산속도를 향상시키기 위한 방법을 제안하였다. 그들의 기본전략은 지수 R을 기수 b로 다음과 같이 나타내고, 모든 멱승 gi=gz(여기서, z=bi)을 사전계산하는 것이다.
R =dt-1bt-1+ ...+ d1b + d0
여기서, 0 ≤ dib (0 ≤ i t)
그러면, gR은 다음 식에 의하여 계산될 수 있다.
기수b에 대한 기본디지트세트(Basic Digit Set)를 사용하여, 요구되는 저장용량이 증가하는 반면 계산량이 더욱 감소될 수 있도록 기본기법을 확장시킬 수 있다.
BGMW방법을 좀더 자세히 설명한다.
만일 어느 정수가 집합 D로부터의 디지트를 사용하여 기수 b로 표기될 수 있다면, 정수 D의 집합은 기수 b에 대한 기본디지트집합으로 호칭된다. 다음의 식(1)이 기수 b에 대한 기본디지트집합이 되도록 승수(乘數)의 집합 M 및 파라미터 h를 선택할 수 있다고 가정하자
그러면 n-비트 지수 R은 다음과 같이 표시될 수 있다.
이러한 R의 표현으로, gR은 다음 식에 의하여 계산될 수 있다.
따라서, 만일 [모든 it 및 m∈M]에 대하여 멱승 gq를 미리 계산하여 저장한다면, gR은 다음의 알고리즘에 의하여 약 [t|M|]의 사전계산값을 이용하여 많아야 [t+h-2]번의 곱셈으로 계산될 수 있다.
return(v);
위의 알고리즘에 의해 수행되는 곱셈의 수는 최악의 경우 [t+h-2] (w=1,....,h에 대해 ∏ki=w gq형태의 곱을 계산하기 위한 [t-h]번의 곱셈, 및 for-루프를 위한 [2h-2]번의 곱셈)이고, 평균 [t(b-1)/b+h-2]번 (랜덤하게 선택된 지수에 대하여 t/b 디지트가 0이 예상됨.)임을 쉽게 알 수 있다.
D에 대한 가장 명확한 예는 기수 b 시스템(M(1), h=b-1, t=logb(2n-1)이다. 512비트 지수에 대해, b=26의 선택은 예상되는 곱셈의 수를 최소화한다. 이러한 기본적인 기법은 평균 127.8번, 최악의 경우 132번의 곱셈, 및 109 사전계산값을 위한 저장장치를 요구한다. 더 알맞은 기수의 선택은 b=32일 것이다. 왜냐하면, 지수R에 대한 디지트는 한 번에 5비트를 추출함에 의해 기수변환(radix conversion)없이 계산될 수 있기 때문이다. 이러한 기수로 요구되는 곱셈의 수는 평균적인 경우에 단지 하나만 증가되며, 최악의 경우에서 변하지 않고 유지된다.
기본 기법이 가용 저장용량이 작은 경우에 최선의 선택이라 하더라도, 저장용량이 109 이하로 내려감에 따라 그 수행능력이 상당히 떨어진다. 이것은 BGMW방법은 가용 저장용량이 매우 작을 때에는 그 계산을 수행하기 위한 효율적인 방안을 제공하지 못한다는 것을 의미한다.
또한 Brickell 등은 요구되는 곱셈의 수를 감소시키기 위한 다른 숫자시스템을 이용하는, 물론 사전계산값을 위한 더 많은 저장용량을 이용하는 여러 가지 기법을 개시하였다. 극단적인 예의 하나는 집합 M을 다음의 식과 같이 선택하는 것이다.
M2m|1≤m b, w2(m)=0 mod 2
여기서, wp(m)은 m을 나누는 p의 최고멱승. (예:w2(40) = 3)
그러면, [1-dib]에서 m∈M2에 대해 di=m 또는 di=2m이 된다(즉, h=2). 이와같이 [|M2| 「logb(2n-1) 값에 대한 저장장치를 구비하면, gR은 평균 [t(b-1)/b]번 곱셈, 그fl고 최악의 경우 [t]번 곱셈으로 계산될 수 있다. 예를 들어, b=256 (t=64, |M2|=170)을 취하면, 10880 사전계산값으로 평균 63.75번의 곱셈이면 된다 Brickell 등이 제시한 두 테이블은 본 발명의 방법에 의한 결과와 비교할 목적으로 제6도에 도시될 것이다.
이아서, 본 발명에 의한 사전계산테이블(precomputation table)을 이용한 gR의 빠른 계산을 위한 멱승연산방법이 설명된다. 본 방법은 만일 n비트 지수 R이 두 동일한 블럭(즉, R=R1*2n/2+R0)으로 나누어지고 g1=gy(여기서, y=2n/2)가 사전계산된다면, gR을 g1 RgR1gR0와 같이 계산함으로써 요구되는 곱셈수를 거의 반으로 줄일 수 있다는 간단한 관찰을 일반화한 것이다.
여기서, 이진알고리즘에 대하여 보다 자세히 설명한다. n비트 지수 R을 두 동일한 블럭으로 나눈다고 가정하면, 지수 R은 다음과 같이 R0, 및 R1으로 도시할 수 있다.
여기서, n=2k이며, R, R0및 R1은 다음과 같이 표현된다.
R = R1*2k+R0
R0= ek-1..... e1e0 (2)
R1= dk-1.... d1d0 (2)
그러면, gR은 다음과 같이 표기된다.
gR= gR0g1 R1(g1= gα, α=2k)
그리고, g2= g*g1이라 하면, gR을 구하기 위한 알고리즘은 다음과 같다.
Y : = 1
for j=k-1 to 0 step -1
y := y * y
if (ejdj= 1) Y := y * g1
if (ejdj= 2) y := y * g
if (ejdj= 3) y := y * g2
return(y)
위의 알고리즘에서 요구되는 곱셈수는 최악의 경우 2(k-1)번, 평균 7/4(k-1)번으로 단순히 gR을 이진알고리즘으로 계산할 때의 곱셈수(평균:2(n-1), 최악:3/2(n-1)에 비해 거의 반으로 줄일 수 있음을 알 수 있다.
후술되는 바와 같이, 제안된 방법은 BGMW방법에 비하여 가용저장용량이 매우 작거나 큰 때에 특히 더 효율적이며, 또한 시간-메모리 tradeoff의 넓은 범위를 주어 더욱 융통성이 있다. 또한, 제한된 저장용량 및 계산능력을 가진 스마트카드에의 응용에서는 작은 저장용량을 사용하는 것이 매우 중요하지만, BGMW방법은 이 경우에 그렇게 효율적이지 않다.
제안된 방법의 다른 이점은 Schnorr의 인증 및 서명기법이나 그 변형(예: Brickell-McCurley기법 및 Okamoto기법)의 검증에 필요한 gRyE(여기서, y는 고정되지 않으며, E의 크기는 R의 크기보다 훨씬 작다.)를 계산하는 데의 효율성이다. 이러한 종류의 계산에서, 지수를 비이진 멱기수로 표기하는 것은 온라인 계산부하를 매우 증가시킬 수 있음을 주목하여야 한다. 마지막으로 제안된 방법이 병렬처리에도 또한 매우 적합하다는 것을 설명한다.
먼저, R을 gR을 계산할려고 하는 n-비트 지수라 하자. 제1도와 같이, 지수 R을 h블럭 Ri(0≤i≤h-1, 비트크기 a=「(n/h)로 분할하고, 각 Ri는 더 작은 v부블럭 Rij(0≤j≤v-1, 비트크기 b=「(a/v))로 다시 분할한다.
여기서 제1도는 그룹의 고정된 기본원소 g가 주어졌을 때 임의의 n비트 랜덤수 R에 대하여 본 발명에 의한 사전계산방법을 이용하여 멱승 gR을 계산하기 위해 지수 R을 분할하는 방법을 도시한 것이다.
사전계산되고 저장된다고 가정한다.
G[0][f] = gh-1 eh1gh-2 eh2... g1 e1g0 e0
여기서, eh1 = eh-1, eh2 = eh-2, e1 = e1, e0 = e0
G[j][f] = (G[j-1][f]δ= (G[0][f])δ
여기서, σ = 2b, δ = 2jb
여기서, 첨자 f는 [eh-1...e1e0]의 십진값과 같다. 이제 제2도와 같이 사전계산값에 대한 테이블이 저정되어 있으면, 식(6)은 다음과 같이 다시 쓸 수 있다.
(Ij,k는 제1도의 j번째 블럭행의 k번째 비트행에 대응한다.)
이제, 다음과 같이 일반적인 제곱-곱셈 (square-and-multiply) 방법에 의하여 식(8)을 사용하여 gR을 직접 계산한다. 이 알고리즘은 사전계산테이블 G[][]을 이용하여 임의의 n비트 랜덤수 R에 대해 gR을 계산하는 알고리즘으로, 여기서 R은 제1도와 같이 분할되고 알고리즘에서 사용되는 Ijk는 이 R의 배열로부터 읽어서 사용한다.
Z := 1:
for k := b-1 to 0 step -1
Z := Z * Z:
for j := v-1 to 0 step -1
Z := Z * G[J][Ij,k];
return(Z);
이상에서 설명된 본 발명에 의한 멱승연산방법을 더 자세히 고찰하기 위하여 구체적인 예를 통하여 설명한다.
본 예에서 지수 R은 32비트이고, 이진수로 표기되는 R의 값은 다음과 같다고 가정한다.
R = 01100010101001111001000101011011(2)
여기서, 지수 R은 4개(h)의 블럭 Rj(0≤i≤3)로 분할되고, 각 Ri는 더 작은 3개(v)의 부블럭 Ri,j로 다시 분할된다. 그러면 각 블럭의 크기(a)및 각 부블럭의 크기 (b)는 다음과 같다.
a=F(n/h) = 「(32/4) = 8 (비트)
b=「(a/v) = 「8/3) = 3 (비트)
제3도는 상술한 바와 같은 본 예에서 적용되는 32비트의 지수 R에 대한 분할배치도를 나타내는 것이다. 제3도를 참조하여, 지수 R은 식 (4)에 의하여 다음과 같이 표기될 수 있다.
여기서 Ri,2= ei,7ei,6
Ri,1= ei,5ei,4ei,3
Ri,0= ei,2ei,1ei,0
그리고, 이것을 구체적으로 표기하면 다음과 같다.
R0= 01011011(2)= 01(2)*26+ 011(2)*23+ 011(2)*20
R1= 10010001(2)= 10(2)*26+ 010(2)*23+ 001(2)*20
R2= 10100111(2)= 10(2)*26+ 100(2)*23+ 111(2)*20
R3= 01100010(2)= 01(2)*26+ 100(2)*23+ 010(2)*20
g0=g라 하고, gi를 gi=gi-1 p=gq(i=1,2,3) (여기서, p=28=256 q=2i8=256i)로 정의한다.
g0= g,g1= (g256)1, g2= (g256)2, g3= (g256)3
그러면, 식(5)에 의하여 gR을 다음과 같이 표현할 수 있다.
여기서, x = 2j3= 8j
또한 [Ri=ei,7...ei,1ei,0]가 Ri(i=0,1,2,3)의 이진표현이므로, Ri,j(j=0,1,2)는 다음과 같이 이진으로 표기한다.
Ri,j= ei,j3+2eij3+1ei,j3+0
따라서, gR은 다음과 같이 다시 쓸 수 있다.
여기서, x = 2j3= 8j,y = ei,j3+k,z = 2k
다음에, 다음 값들이 모든 [1≤f24및 0≤j3]에 대해 사전계산되고 저장된다고 가정한다.
G[0][f] = g3 e3g2 e2g1 e1g0 e0
여기서, 첨자 f는 [e3e2e1e0]의 십진값을 만한다. 즉,
G[0][1] = g3 0g2 0g1 0g0 1
G[0][2] = g3 0g2 0g1 1g0 0
G[0][3] = g3 0g2 0g1 1g0 1
G[0][4] = g3 0g2 1g1 0g0 1
..............................................................
G[0][14] = g3 1g2 1g1 1g0 0
G[0][15] = g3 1g2 1g1 1g0 1
그리고, 식(7)에 의하여
G[J][F] = (G[j-1][f]α= (G[0][f])β
여기서, α = 23= 8, β= 2j3= 8j
예를들어, j=1에 대하여,
G[1][1] = (G[0][1])8
G[1][2] = (G[0][2])8
.....................................
G[1][15] = (G[0][15])8
그리고, j=2에 대하여,
G[2][1] = (G[1][1])8= [G[0][1]8]8= (G[0][1])64
G[2][2] = (G[1][2])8= [G[0][2]8]8= (G[0][2])64
.............................................
G[2][15] = (G[1][15])8= [G[0][15]8]8= (G[0][15])64
다음에 도시되는 제4도에 상술한 바와 같은 방법에 의하여 구해진 사전계산값 G[j][f]을 메모리에 저장하는 배열형태 및 여기에 저장될 값들을 나타낸다.
그러면 gR은 식(8)에 의하여 다음과 같이 다시 쓸 수 있다.
여기서, Ijk=e3,3j+ke2,3j+ke03j+k(0≤j3), z = 2k
모든 j 및 k에 대하여 Ijk를 계산하면 다음과 같다.
I0,0= e3,0e2,0e1,0e0,0= 0111(2)= 7
I0,1= e3,1e2,1e1,1e0,1= 1101(2)= 13
I0,2= e3,2e2,2e1,2e0,2= 0100(2)= 8
I1,0= e3,3e2,3e1,3e0,3= 0001(2)= 1
I1,1= e3,4e2,4e1,4e0,4= 0011(2)= 3
I1,2= e3,5e2,5e1,5e0,5= 1100(2)= 12
I2,0= e3,6e2,6e1,6e0,6= 1001(2)= 9
I2,1= e3,7e2,7e1,7e0,7= 0110(2)= 6
식(8a)를 이용하여 gR을 상술한 알고리즘에 의하여 계산한다.
먼저 k=2에 대하여
이상에서 구체적인 예를 통하여 사전계산테이블을 이용한 멱승연산방법을 자세히 설명하였다. 물론 지수 R의 크기는 설명을 간단히 하기 위하여 32비트인 것으로 가정하였으나, 일반적으로 512비트 또는 그 이상의 비트 크기를 가지는 R에 대해서도 마찬가지 방법에 의하여 본 발명의 구체적인 예로서 설명될 수 있다.
다음으로 상술한 바와 같은 알고리즘에 의하여 요구되는 곱셈의 수를 센다. 제1도의 (v-1)번째 블럭들은 b-비트로 꽉 차지 않을 수 있음을 주목하여야 한다. 사실상, 그것들은 (bv-a)비트 크기이다.
이와같이 내부 for-루프에서 함께 곱셈되는 항의 수는 첫번째 (bv-a)라운드에 대한 (v)번 및 그 나머지 (b-bv+a)라운드에 대한 (v+1)번이다.
따라서 요구되는 전체 곱셈의 수는 최악의 경우 많아야 [v(bv-a)+(v+1)(b-bv+a)-2 = a+b-2]번이다. 0인 Ij,k확률이 1/2k이고 상기 알고리즘으로 Ij,k가 평균 a번 발생한다고 가정할 수 있으므로, 평균되는 곱셈의 수는 [a(2h-1)2h+b-2)번으로 주어진다. 물론 이러한 수행능력은 [(2h-1)v]사전계산값에 대한 저장장치를 구비하여 성취된다.
위에서, 지수 R은 거의 동일한 크기의 hv블럭으로 구분되고, 이들 hv블럭들은 h*v 사각형으로 배열된다고 가정하였다. 대부분의 경우에, 이러한 분할과 배열은 주어진 저장용량에 대해 다른 것보다 더 나은 수행능력을 발휘하지만, 어떤 경우에는 그렇지 않을 수 있다.
예를 들면, 제5도는 거의 같은 저장장치를 요구하는 두 다른 구성을 도시한 것으로, 제5도에 도시된 두 구성, 즉 512-비트 지수가 두 다른 방식으로 분할되고 배열된 구성을 고려한다.
첫번째 구성은 5*5 구성으로 위에서 분석한 경우에 해당하고, 155값에 대한 저장장치를 구비하고 평균 118.78번의 곱셈(최악의 경우 122번)의 수행능력을 보인다. 한편, 두번째 구성은 5*1|6*2 구성으로 157값에 대한 저장장치를 사용하여 평균 117.13번의 곱셈(최악의 경우 119번)으로 멱승연산할 수 있다. 따라서, 두번째 구성이 더 나은 선택임을 알 수 있다.
h1*v1|h2*v2(h1h2) 형의 구성에서, 최악/평균의 경우에서의 수행능력에 대한 일반적인 공식을 쉽게 이끌어낼 수 있다. b1및 b2를 각각 h1*v1및 h2*v2로 구분된 블럭의 크기라고 하자. 더 나은 수행능력을 위하여, b2는 b1보다 크거나 같아야만 하고, h*v 구성에서의 b와 같은 방식으로 얻어질 수 있다. 이와같이 b1및 b2는 다음과 같이 구해진다.
이제, 이 구성에서 요구되는 최악의 경우의 곱셈의 수는 h*v 구성에 대한 공식으로부터 a를 (h1v1+h2v2)로 그리고 b를 b2로 각각 치환함에 의하여 직접 구해질 수 있다. 이것은 최악의 경우 [b1v1+b2(v2+1)-2]번 곱셈으로 결과된다. 마찬가지로, 평균적인 곱셈의 수는 다음의 식과 같음을 보일 수 있다.
이러한 수행능력은 [2h1-1)v1+ (2h2-1)v2] 사전계산값에 대한 저장장치를 구비하여 성취될 수 있다. 두 구성형태 [h*v 및 h1*v1|h2*v2(h2=h1+1)]를 제외한 다른 어떠한 구성도 주어진 저장용량에 대해 더 나은 수행능력을 나타낼 수 없음을 쉽게 알 수 있다.
BGMW방법 및 본 방법에 의한 수행능력을 비교하기 위하여, 512-비트 법에 대한 곱셈의 수 및 요구되는 저장용량을 160-비트 및 512-비트 지수 각각에 대해 제6A, 6B도 및 제7A, 7B도에 각각 도시하였다.
제6A, 6B도는 BGMW방법의 수행능력을 설명하기 위한 도표로서, 제6A도는 160-비트 지수에 대하여, 그리고 제6B도는 512-비트 법에 대하여, 기수 b, 승수의 집합 M, 파라미터 h, 사전계산값을 위한 저장용량, 및 최악의 경우와 평균적인 경우의 곱셈수를 나타낸다.
제7A, 7B도는 제안된 발명의 수행능력을 설명하기 위한 도표로서, 제 7A도는 160-비트 지수에 대하여, 그리고 제7B도는 512-비트 지수에 대하여, 지수 R의 구성, 사전계산값을 위한 저장용량, 및 최악의 경우와 평균적인 경우의 곱셈수를 나타낸다.
본 제안된 방법은 BGMW방법에 비하여 더 간단할 뿐만아니라 더 나은 수행능력을 보임을 주목하라. 특히, 넓은 저장용량 범위에 대한 효율성 때문에, 본 방법은 가용 저장용량에 따라 다양한 컴퓨터 환경에 융통성있게 응용할 수 있다.
예를 들면, 스마트카드에 의한 계산속도를 높이기 위하여, 4*2 구성을 선택할 수 있다. 그러면, 512-비트 계수 및 지수에 대하여, gR의 계산은 1920바이트(여기서, 하나의 사전계산값을 위한 저장용량은 512비트(64바이트)가 필요)의 저장장치로 평균 182번 곱셈으로 행해질 수 있다. 반면에, 비교적 큰 저장장치가 사용가능하면, 약 32K바이트의 저장장치로 평균 90.42번 곱셈을 수행하는, 예컨대 7*4 구성을 선택할 수 있다.
다음으로, 인증 및 서명검증에 있어서 어떻게 계산 속도를 향상시킬 수 있는지에 대하여 설명한다. 이산대수문제에 기초하여, 많은 인증 및 디지탈서명 기법이 개발되고 있다. 이러한 모든 기법에서, 약간의 모듈곱셈과 함께 증명자 (prover)(또는 서명자(signer))는 랜덤 R에 대한 gR을 계산할 필요가 있으며, 이는 이상에서 설명된 방법에 의하여 효율적으로 수행될 수 있다.
반면에, 검증자(verifier)가 식별 또는 서명을 확인하기 위해서는 gRyE형태의 계산을 수행할 필요가 있다(여기서, y는 증명자(또는 서명자)의 공개키(public key)에 해당하며 따라서 프로토콜의 각 런(run)에서 변한다.) E의 크기는 대체로 인증기법에서 20과 40사이에 놓여있고, 그에 대응하는 서명기법에서는 약 80정도이다. 다음에서 gRyE를 계산하기 위한 제안된 방법의성능을 조사한다.
t를 E의 크기라 하자. 만일 t≤b이면, gRyE는 최악의 경우에 [a+b+t-2])번 곱셈으로, 평균적으로 [a(2h-1)/2h+b+0.5t-2]번 곱셈으로 계산될 수 있음은 명확하다. tb인 경우에, 위와같이 진행하거나 또는 E를 더 작은 블럭으로 구분한 후 계산할 수도 있다.
첫번째의 경우는 최악의 경우에 [a+2t-2]번 곱셈으로, 평균적으로 [a(2h-1)/2h+b+1.5t-2]번 곱셈으로 계산이 수행된다. 그러나, 만일 t가 b보다 매우 더 크면, E를 더 작은 블럭으로 나눔에 의하여 그 성능을 더욱 향상시킬 수 있다.
따라서, 더 일반적인 공식을 위하여, E가 거의 같은 크기의 u블럭으로 구분된다고 가정하자( gRyE를 계산하기 위한 전체 구성을 u*1|h*v로 생각한다).
c를 구분된 블럭의 비트길이라 하자(즉, c=「(t/u)). 그러면, 먼저 [k=1,2,....u-1]에 대한 yα(여기서, α=2kc), 및 그들 조합 가능한 각 곱셈을 계산하여야 하며, 이들 모두는 [(u-1)c+2u-u-1]번 곱셈이 필요하다. 관심을 가지고 있는 t의 범위(즉, t=80까지의 범위)에 대해, u는 많아야 3을 취한다.
이제, 만일 c≤b이면, 최악의 경우에 최대 c번 곱셈의 추가로 충분하다(평균 [c(2u-1)/2u]번). 따라서, 이 경우에 요구되는 곱셈의 전체수는 다음과 같다.
최악의 경우에 [a + b + uc + 2u -u -3]번
평균적으로 [a(2h-1)/2h+ b + c(u2u-1)/2u + 2u- u - 3]번
마찬가지로, cb인 경우에 대해, 곱셈의 수가 다음과 같음을 쉽게 보일 수 있다.
최악의 경우에 [a + (u+1)c + 2u- u - 3]번,
평균적으로 [a(2h-1)/2h+ b + c(u2u-1)/2u + 2u- u - 3]번
제안된 방법으로 Schnorr와 같은 인증 및/또는 서명기법은 스마트카드상에서의 구현에 더 실용적으로 만들어질 수 있다. 예를 들어, 512-비트의 법, 160-비트의 지수, 및 t=30의 경우, 만일 1920바이트의 저장용량을 사용 가능하다면(4*2 구성), 검증조건은 평균 80.5번의 곱셈으로 검사될 수 있다. 마찬가지로, t=80인 서명은 같은 저장용량을 사용하여 평균 144.13번의 곱셈으로 검증될 수 있다.
t=30에 대한 평균 246.5번 곱셈, 및 t=80에 대한 평균 259.0번 곱셈을 요구하는 이진방법과 비교하면, 이는 단지 매우 작은 저장용량으로 상당한 속도향상을 얻을 수 있음을 의미한다.
더우기, 인증 또는 서명검증은 대부분 큰 용량의 메모리가 구비될 수 있는 보다 강력한 터미날로 수행된다. 이러한 환경에서, 예를 들어 8*2 구성을 채택할 경우, 32K바이트의 저장용량을 이용하면, t=30에 대해 평균 60.2번의 곱셈으로 인증검증을, 그리고 t=80에 대해 평균 126.6번의 곱셈으로 서명검증을 수행할 수 있다.
다음으로, 작은 추가전송을 이용하여 gRyE를 계산하기 위한 곱셈의 수를 다시 상당히 감소시킬 수 있음을 설명한다.
즉, y는 서명자에게 고정된 수이기 때문에, 만일 서명자가 다음의 값들, k=1,2,....u-1에 대한 yk=yα(여기서, α=2kc)을 미리 계산하여 저장한 다음 서명과 함께 전송한다면, 검증자(verifier)는 이들을 준비하기 위한 온라인 계산부하를 절약할 수 있다.
예를 들어, t=80인 서명기법에 대해, 만일 서명자가 메세지에 대한 서명과 함께 추가적인 512비트 블럭 y1, y2(여기서, y1=yβ, y2=yβ, β=227)를 전송한다면, 서명검증은 4*2 구성으로 평균 90.13번의 곱셈으로 행해질 수 있다. 따라서, 단지 128바이트 정보의 추가전송으로 54번의 곱셈이 절약될 수 있다. 이것은 평균 259번 곱셈을 요구하는 이진방법에 비해 평균적으로 약 3배의 속도향상에 해당한다.
BGMW방법은 위에서 고려한 어느 경우에서도 gRyE형태의 계산에 별로 효율적이지 않음을 알 수 있다. 즉, 추가전송이 없는 경우, 만일 지수들이 비이진멱승 기수 (non-binary power base)로 표기된다면, yE에 대해 요구되는 온라인 사전계산을 수행하는 데 더 많은 계산이 필요하게 된다. 반면 추가전송이 허용될 때는 작은 기수의 사용으로 인하여 더 많은 사전계산값이 전송되어야 한다.
사전계산 및 추가전송을 결합한 상기 방법은 또한 미국의 디지탈서명표준 (Digital Signature Standare;DSS)의 검증의 속도향상에도 사용될 수 있다. DSS에서는 |R|=|E|=160인 gRyE형태의 계산을 수행하여야 하며, 따라서 추가전송이 없으면 사전계산으로 아무런 이득을 얻을 수 없다.
그러나, 만일 서명자가 셋의 추가 블럭 {y1,y2,y3}(여기서, yi=yi-1 γ(γ=240)for i=1,2,3)를 보낸다면, 그리고 만일 증명자가 4*2 구성을 채용한다면, 서명은 평균 124번 곱셈으로 검증될 수 있다. 이것은 (512비트 법에 대하여) 평균 279번 곱셈을 요구하는 이진방법에 비하여 단지 1920바이트의 저장용량 및 192바이트의 추가전송만으로 2배이상의 속도 향상을 얻을 수 있음을 의미한다.
제8도는 위에서 언급된 바와 같이 서명자가 서명과 함께 공개키에 대한 추가의 셋의 사전계산값을 전송한다는 가정 하에, 세서명기법 (Schnorr, DSS, 및 Brickell-McCurley)에서의 서명생성 및 검증에서 요구되는 곱셈의 수를 보여준다. 여기서는 reduction mod q 및 multiplicative inverse mod q (여기서, q 는 약 160비트 크기의 소수임)와 같은 사소한 연산들은 무시하고, 단지 멱승연산에 필요한 곱셈의 수만을 고려하였다.
4*2 및 8*2의 두 구성을 예로 들었는데, 그 이유는 전자는 스마트카드 응용에 적합하고, 후자는 비교적 대용량의 저장장치를 구비한 일반적인 응용에 적합하기 때문이다. 비교를 위하여, 이진방법의 성능을 함께 나타내었다.
다음으로, 제안된 방법은 병렬처리에도 매우 적합하다는 것이 설명된다. 즉, j번째 프로세서를 h*v구성(제1도 참조)의 j번째 행에 할당함으로써 BGMW방법보다 더욱 더 효율적으로 다중 프로세서로 병렬화될 수 있다.
만일 v 프로세서가 사용가능하면, j번째 프로세서는 다음의 식(10)에 포함된 식(9)를 계산하기 위해 할당될 수 있으며, 여기서 각 프로세서는 로컬메모리 내에 [2h-1]의 사전계산값을 저장한다고 가정한다.
여기서, z=2k
각 프로세서의 계산은 최대 [2(b-1)]번의 곱셈으로 완성될 수 있다. 그런 후에, 최종 결과를 구하기 위해 추가로 [「log2v]번의 곱셈이 필요하다. 따라서, 곱셈의 전체수는 [2(b-1+「log2v]번이다.
제9도는 병렬처리에서 프로세서의 수 및 프로세서당 필요한 저장용량에 따라 160/512비트 지수에 대해 요구되는 곱셈의 수를 보여준다. 여기서, np는 프로세서의 수 (v)를, 그리고 sp는 프로세서당 저장용량 (2h-1)을 의미한다.
도표에서 보듯이, 단지 작은 수의 프로세서로도 그 성능이 매우 향상될 수 있음을 알 수 있다. 예를 들면, 512-비트 법 및 지수에 대해, 4개의 프로세서가 사용가능하고 각 프로세서는 255개의 사전계산값을 위한 로컬저장장치(약 16K바이트)를 구비할 때, gR을 32번 곱셈으로 계산할 수 있다. 16과 같은 더 많은 프로세서로, 멱승연산은 똑같은 저장용량으로 10번 곱셈으로 행해질 수 있다.
한편, 위에서는 편의상 hxv 구성에 대해 v개의 프로세서가 사용가능한 경우만을 고려하였으나 보다 일반적으로 더 작은 수의 프로세서로 hxv 구성을 이용할 수도 있다. 만일, p개의 프로세서가 이용가능하고 v=pw라 두면 각 프로세서로 하여금 w개의 행에 해당하는 hxw 구성을 계산하도록 할당하는 것이다. 이 경우 각 프로세서는 로칼저장장치에 (2h-1)w개의 사전 계산값을 저장해야 한다. 그리고 이때 요구되는 곱셈수는 (w+1)b+[log2p]-2가 됨을 보일 수 있다. 실제로 대부분의 경우 이와 같이 각 프로세서에 다수의 행을 할당하는 것이 제9도에서 주어진 값들보다 시간-저장장치 tradeoff에 있어서 더 유리하다.
상술한 바와 같이 본 발명에 의하면, 사전계산에 의한 빠른 멱승연산을 위한 새로운 방법을 제시함으로써, 매우 간단하면서도 BGMW방법보다도 더 나은 성능을 성취할 수 있다.
또한 본 방법은 넓은 범위의 시간-저장장치 tradeoff로 인하여 다양한 계산환경에 융통성있게 응용가능하기 때문에 더욱 바람직하다. 특히, 제안된 방법을 사용하여, 매우 작은 저장용량을 구비한 스마트카드에 의한 계산속도도 상당히 향상시킬 수 있다.
그리고 본 방법은 gRyE(y는 변수) 형태의 계산속도도 향상시킬 수 있음을 설명하였다. 이는 Schnorr형 인증 및 서명기법을 더욱 실용성있도록 한다. 왜냐하면, 증명자(서명자) 뿐만 아니라 검증자도 적당한 저장용량으로 매우 큰 계산상 이득을 얻을 수 있기 때문이다.
마지막으로, 제안된 알고리즘이 어떻게 병렬화될 수 있는가를 설명하였다. 이러한 병렬처리는 다중 프로세서를 구비한 고성능서버장치에서 특히 유용할 것이다.

Claims (4)

  1. 암호화시스템에서, 고정요소 g 및 랜덤하게 선택된 n비트 지수 R에 대한 멱승연산 gR을 계산하기 위한 멱승연산방법에 있어서, (a) 상기 지수 R의 비트열을 소정수 h의 블럭으로 분할하고, 상기 분할된 각 블럭의 비트열을 소정수 v의 부블럭으로 분할하여, 상기 지수 R의 비트열을 v행 및 h열로 이루어진 h*v 2차원 배열로 분할하는 지수분할과정; (b) 각 블럭 및 부블럭의 위치에 따른 자리값을 고려하여, 상기 지수 R을 다음의 식과 같이 제i번째 열에 해당하는 블럭의 비트열 Ri및 제i번째 열과 제j번째 행에 해당하는 부블럭의 비트열 Rij를 생성하는 과정;
    (c)상기 Rij를 0과 같거나 크고 h보다 작은 모든 정수 i, 및 0과 같거나 크고 v보다 작은 모든 정수 j에 대하여 다음의 식과 같이 이진수 형태로 생성하는 과정;
    여기서, ei,jb+k는 지수 R의 제i번째 열 및 제j번째 행에 해당하는 비트열 Rij에서 제k번째 비트의 값.
    (d) 0보다 크고 h보다 작은 모든 정수 i에 대하여 gi를 다음의 식과 같이 상기 밑수 g를 이용하여 생성하는 과정;
    gi=gq(여기서, q=2ia)
    (e)gR을 상기 (c)과정에서의 Rij및 상기 (d)과정에서의 gi를 이용하여 다음의 식과 같이 생성하는 과정;
    여기서, x = 2jb, y= ei,jb+k,z=2k
    (f) 0보다 크고 2h보다 작은 모든 정수 f(여기서 f는 이진수로 eh-1eh-2....e1e0의 형태로 표기된다) 및 0과 같거나 크고 v보다 작은 모든 정수 j에 대하여, 다음의 값들을 계산하고 저장하는 과정;
    G[j][f] = (gh-1 eh1gh-2 eh2...g1 e1g0 e0)δ
    여기서, eh1= eh-1, eh2= eh-2, e1= e1, e0= e0δ = 2jb
    (g) 상기 저장된 계산값을 이용하여 다음의 식에 의하여 gR을 계산하는 과정을 포함함을 특징으로 하는 암호화시스템에서의 멱승연산방법.
    여기서, Ij,k는 모든 블럭에서의 제j번째 부블럭에 해당하는 비트열에서 제k번째 비트행에 위치된 h비트크기의 비트열로 이루어지는 값.
  2. 제1항에 있어서, 상기 (a)과정은 상기 부블럭내에 포함되는 비트의 수를 동일하게 분할함을 특징으로 하는 암호화시스템에서의 멱승연산방법.
  3. 제1항에 있어서, 상기 (a)과정은 상기 부블럭내에 포함되는 비트의 수를 서로 다르게 분할함을 특징으로 하는 암호화시스템에서의 멱승연산방법.
  4. 제1항에 있어서, 상기 (g)과정은 v가 두 정수 p와 w의 곱(v=pw)으로 표시될때, p개의 프로세서를 구비하고 제i(i=0,..., p-1)번째 프로세서는 다음의 식에 의한 연산을 수행하여 병렬처리함을 특징으로 하는 암호화시스템의 멱승연산방법.
KR1019950000224A 1995-01-07 1995-01-07 암호화시스템에서의 멱승연산방법 KR0138277B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1019950000224A KR0138277B1 (ko) 1995-01-07 1995-01-07 암호화시스템에서의 멱승연산방법
JP01733395A JP3540852B2 (ja) 1995-01-07 1995-02-03 暗号化システムにおける羃乗演算を含む暗号化方法及びその装置
US09/003,875 US5999627A (en) 1995-01-07 1998-01-07 Method for exponentiation in a public-key cryptosystem

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1019950000224A KR0138277B1 (ko) 1995-01-07 1995-01-07 암호화시스템에서의 멱승연산방법

Publications (2)

Publication Number Publication Date
KR960029510A KR960029510A (ko) 1996-08-17
KR0138277B1 true KR0138277B1 (ko) 1998-07-01

Family

ID=19406503

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019950000224A KR0138277B1 (ko) 1995-01-07 1995-01-07 암호화시스템에서의 멱승연산방법

Country Status (2)

Country Link
JP (1) JP3540852B2 (ko)
KR (1) KR0138277B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20230137674A (ko) * 2022-03-22 2023-10-05 국민대학교산학협력단 Xts 최적화를 위한 병렬 처리 장치 및 방법

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6263081B1 (en) 1997-07-17 2001-07-17 Matsushita Electric Industrial Co., Ltd. Elliptic curve calculation apparatus capable of calculating multiples at high speed
JP5403982B2 (ja) * 2008-09-25 2014-01-29 株式会社東芝 計算装置、方法及びプログラム
KR101271170B1 (ko) * 2012-05-31 2013-06-04 삼성에스디에스 주식회사 비밀키 생성을 위한 고속연산 수행 방법 및 장치

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20230137674A (ko) * 2022-03-22 2023-10-05 국민대학교산학협력단 Xts 최적화를 위한 병렬 처리 장치 및 방법

Also Published As

Publication number Publication date
JP3540852B2 (ja) 2004-07-07
JPH08202263A (ja) 1996-08-09
KR960029510A (ko) 1996-08-17

Similar Documents

Publication Publication Date Title
Lim et al. More flexible exponentiation with precomputation
US5999627A (en) Method for exponentiation in a public-key cryptosystem
US6618483B1 (en) Elliptic curve encryption systems
EP2350811B1 (en) Method and apparatus for modulus reduction
Hoffstein et al. Random small Hamming weight products with applications to cryptography
US7519644B2 (en) Finite field serial-serial multiplication/reduction structure and method
Gao et al. Gauss periods: orders and cryptographical applications
Hu et al. The analysis and investigation of multiplicative inverse searching methods in the ring of integers modulo m
Avanzi On multi-exponentiation in cryptography
Lange Koblitz curve cryptosystems
KR0138277B1 (ko) 암호화시스템에서의 멱승연산방법
Coron et al. Fast generation of pairs (k,[k] P) for Koblitz elliptic curves
Azarderakhsh et al. Common subexpression algorithms for space-complexity reduction of Gaussian normal basis multiplication
Mohamed et al. Improved fixed-base comb method for fast scalar multiplication
Reddy RM-RSA algorithm
Hakuta et al. Explicit lower bound for the length of minimal weight\tau-adic expansions on Koblitz curves
Knežević et al. Speeding up bipartite modular multiplication
Laurian et al. Faster beta Weil pairing on BLS pairing friendly curves with odd embedding degree
US20050135605A1 (en) Cryptographic exponentiation methods
Balasubramanian et al. A survey of fermat factorization algorithms for factoring RSA composite numbers
Lee et al. Efficient parallel exponentiation in GF (qn) using normal basis representations
서정주 Fast batch modular exponentiation with common-multiplicand multiplication
Mangır Large sparse matrix-vector multiplication over finite fields
Park et al. A general expansion method using efficient endomorphisms
Slinko et al. Fields

Legal Events

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

Payment date: 20080130

Year of fee payment: 11

LAPS Lapse due to unpaid annual fee