KR100257123B1 - 변형된 몽고메리 모듈라 곱셈을 적용한 고속 멱승 방법 - Google Patents

변형된 몽고메리 모듈라 곱셈을 적용한 고속 멱승 방법 Download PDF

Info

Publication number
KR100257123B1
KR100257123B1 KR1019970019017A KR19970019017A KR100257123B1 KR 100257123 B1 KR100257123 B1 KR 100257123B1 KR 1019970019017 A KR1019970019017 A KR 1019970019017A KR 19970019017 A KR19970019017 A KR 19970019017A KR 100257123 B1 KR100257123 B1 KR 100257123B1
Authority
KR
South Korea
Prior art keywords
multiplication
redc
mod
power
modular
Prior art date
Application number
KR1019970019017A
Other languages
English (en)
Other versions
KR19980083640A (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 KR1019970019017A priority Critical patent/KR100257123B1/ko
Publication of KR19980083640A publication Critical patent/KR19980083640A/ko
Application granted granted Critical
Publication of KR100257123B1 publication Critical patent/KR100257123B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/60Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
    • G06F7/72Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
    • G06F7/728Methods 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 using Montgomery reduction
    • 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/722Modular multiplication

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • General Engineering & Computer Science (AREA)
  • Complex Calculations (AREA)

Abstract

본 발명은 변형된 몽고메리 모듈라 곱셈을 적용한 고속 멱승 방법을 제공하며, 동일한 피승수를 가지는 두 번의 모듈라 곱셈시 공통 계산 부분이 생기도록 몽고메리(Montgomery) 곱셈을 변형하여 공통 부분을 한번만 계산할 수 있게 함으로써 멱승 계산속도를 개선하였고, 또한 m-ary 나 윈도우 멱승 방법에서는 저장용 테이블을 줄일 수 있게 하였다. 또한 본 발명에 의한 고속멱승방법이 지수 폴딩 기법을 사용한 멱승 방법에 적용될 경우에는 고속이면서 사용 메모리가 적어 IC카드와 같은 저메모리 환경에 효과적이다.

Description

변형된 몽고메리 모듈라 곱셈을 적용한 고속 멱승 방법{High-speed exponentiation method using a modified montgomery modular multiplication}
본 발명은 변형된 몽고메리 모듈라 곱셈을 적용한 고속 멱승 방법에 관한 것으로, 보다 상세하게는 모듈라 곱셈시 공통계산부분이 생기도록 몽고메리 모듈라 곱셈을 변형하여 공통부분을 한번만 계산할 수 있게 함으로써 멱승 계산속도를 개선하고, 메모리용량을 줄일 수 있는 고속 멱승 방법에 관한 것이다.
통상 소인수분해 문제(prime factorization problem)나 이산대수 문제(discrete logarithm problem)에 근거한 공개 키 암호시스템에서는 유한체 GF(p) 혹은 유한환 ZN상에서 큰 수에 대한 모듈라 멱승 연산이 필요하다. 그러나, 멱승 연산은 시간이 많이 소요되므로 공개 키 암호 시스템의 설계시 단점이 될 수 있다. 그러므로 공개 키 암호 시스템에서 멱승 연산 시간을 줄이는 연구가 필요하다.
일반적으로 모듈라 멱승은 AEmod N으로 표시할 수 있으며 A와 N은 안전도에 따라 가변적이나 512비트 이상의 큰 정수를 사용한다. 지수 E는 RSA 시스템(A method for obtaining digital signatures and public key crytosystems, Comm. of ACM, Vol. 21, No. 2, pp.120-126, February 1978, by R. Rivest, A. Shamir and L. Adleman)이나 ElGamal 시스템(A public key crytosystem and a signature scheme based on discrete logarithms, IEEE Trans. Inform. Theory, Vol. 31, No. 4, pp.469-472, July 1985, by T. ElGamal)에서는 512비트 이상, 이산 대수 문제에 근거한 디지털 서명 시스템에서는 140비트 이상을 사용한다. 멱승 연산은 모듈라 곱셈의 반복으로 이루어져 있으므로 고속 멱승 연산을 위해서는 모듈라 곱셈 횟수가 적은 멱승 방법을 선택하거나 모듈라 곱셈의 고속화가 필요하다. 멱승 방법으로는 이진 방법, m-ary 방법, 윈도우방법 등이 대표적이다. 모듈라 곱셈은 곱셈과 모듈라 감소 연산으로 나눌수 있으며 모듈라 감소 방법으로는 고전적인 알고리듬, 바레트(Barrett )알고리듬 그리고 몽고메리알고리듬등이 있다.
상술한 알고리듬들은 멱승연산중 동일한 피승수에 대해서 두 번의 모듈라곱셈을 독립적으로 수행하므로, 멱승연산시간이 길어지는 문제점이 있었다.
본 발명이 이루고자 하는 기술적 과제는 모듈라 곱셈연산시 동일한 피승수에 대해서 공통 계산 부분이 생기도록 변형한 몽고메리 모듈라 곱셈을 적용한 고속 모듈라 멱승 방법을 제공하는 것이다.
도 1은 몽고메리 모듈라 곱셈방법을 설명하기 위한 프로그램을 도시한 도면이다.
도 2a은 공통 피승수 모듈라 곱셈방법을 설명하기 위한 프로그램을 도시한 도면이다.
도 2b는 도 2a의 알고리듬을 플로우챠트형태로 도시한 도면이다.
도 3a는 몽고메리 모듈라 곱셈의 라이트-투-레프트 이진 멱승 방법을 설명하기 위한 프로그램을 도시한 도면이다.
도 3b는 도 3a의 알고리듬을 플로우챠트형태로 도시한 도면이다.
도 4는 라이트-투-레프트 m-ary 멱승방법을 설명하기 위한 프로그램을 도시한 도면이다.
도 5는 라이트-투-레프트 윈도우 멱승방법을 설명하기 위한 프로그램을 도시한 도면이다.
도 6은 지수 폴딩기법을 사용한 멱승방법을 설명하기 위한 프로그램을 도시한 도면이다.
도 7은 본 발명에 의한 고속 멱승방법이 적용되는 하드웨어구성을 개략적으로 도시한 도면이다.
〈도면의 주요 부분에 대한 부호의 설명〉
70...PC, 워크스테이션, 또는 IC카드, 72...입/출력 장치
74...CPU, 76...RAM
78...ROM, EEPROM
본 발명은 상기 기술적 과제를 달성하기 위하여, 주어진 수 A, E, N에 대해서, R이 N보다 크고 N과 서로 소일 때, 수 C=AEmod N의 모듈라 멱승방법에 있어서, (a) 1의 N 잉여류수를 C=R mod N으로, A의 N 잉여류수를 S=AR mod N으로 하여 1과 A를 N잉여류수로 변환하는 단계; (b) 몽고메리 모듈라곱셈을 REDC()라 할 때, REDC(SxC)와 REDC(SxS)의 몽고메리모듈라곱셈을 기수(radix) b에 대해서 다음 식으로 변형하는 단계,
REDC(S×C)=(Cn-1SR0+ Cn-2SR1+ Cn-3SR2..... + C0SRn-1)b-mmod N
=(Cn-1Sb + Cn-2S + Cn-3Sb-1mod N..... + C0Sb-n+2)b-mmod N
REDC(S×S)=(Sn-1SR0+ Sn-2SR1+ Sn-3SR2..... + S0SRn-1)b-mmod N
=(Sn-1Sb + Sn-2S + Sn-3Sb-1mod N..... + S0Sb-n+2)b-mmod N, (여기서 0≤i≤n-1일 때 SRi=Sbm-1-imod N이고 m은 0보다 크고 n보다 작다); (c) 멱승 방법에 따라서 소정 횟수만큼 REDC(S×S)를 독립적으로 수행하거나, REDC(S×C)와 REDC(S×S)를 동시에 수행하여 N잉여류 수에 대한 멱승을 수행하는 단계; 및 (d) 상기 연산 결과에 대해서 REDC(Cx1)의 연산을 수행하여 일반수로 변환하는 단계를 포함하는 모듈라 멱승방법을 제공한다.
바람직하기로는 이진 멱승방법인 경우에는 지수 E를
Figure pat00001
, ei∈{0,1}로 표현할 때, ei=1인 경우 동일한 S에 대해서 C=REDC(SxC)와 S=REDC(SxS)의 공통피승수곱셈연산을 수행하고, 이외의 경우에는 S=REDC(SxS)의 곱셈연산을 수행하는 것을 특징으로 한다.
바람직하기로는 m진 멱승방법인 경우에는 지수 E를 t개의 자리수를 갖는 m진수
Figure pat00002
, ei∈{0,...,m-1}로 표현할 때, ei=0이 아닌 경우 동일한 S에 대해서 C=REDC(SxC)와 S=REDC(SxS)의 공통피승수곱셈연산을 수행하고, 이외의 경우에는 S=REDC(SxS)곱셈연산을 수행하는 것을 특징으로 한다.
바람직하기로는 윈도우 멱승방법인 경우에는 지수 E를
Figure pat00003
, ei∈{0,1}로 표현하여, w크기의 윈도우를 정하여 연산할 때 윈도우가 하나 발생할 때마다, 동일한 S에 대해서 C=REDC(SxC)와 S=REDC(SxS)의 공통피승수곱셈연산을 수행하고, 이외의 경우에는 S=REDC(SxS)곱셈연산을 수행하는 것을 특징으로 한다.
바람직하기로는 지수폴딩 멱승방법인 경우에는 지수 E를
Figure pat00004
, ei∈{0,1}로 표현하여, EH은 상위반절, EL은 하위반절이라 하면 E=EH2i/2+EL이므로 EH과와 EL이 공통적으로 1인 Ecom=EHAND EL, 상위반절만 1인 EHXOR=EcomXOR EH, 하위반절만 1인 ELXOR=EcomXOR EL를 얻는 과정; Ecom, EHXOR, ELXOR이 각각 1인 경우, 동일한 S에 대해서 C=REDC(SxC)와 S=REDC(SxS)의 공통피승수곱셈연산을 수행하고, 이외의 경우에는 S=REDC(SxS)곱셈연산을 수행하여,
Figure pat00005
mod N,
Figure pat00006
mod N 그리고
Figure pat00007
mod N을 먼저 구하는 과정;
Figure pat00008
mod N과
Figure pat00009
mod N을 계산하는 과정; 및 최종적으로 AE=
Figure pat00010
mod N을 계산하는 과정;을 포함하는 것을 특징으로 한다.
더욱 바람직하기로는 상기 지수의 하위비트로부터 상위비트쪽으로 탐색하는 라이트-투-레프트 방법을 채용함을 특징으로 한다.
더욱 바람직하기로는 고정된 값들은 프로그램내부에 두어 ROM이나 EEPROM에 저장하고, 변하는 값들은 프로그램외부로부터 읽어와서 RAM에 저장한 후 프로그램 동작시 불러와서 사용함을 특징으로 한다.
이하, 본 발명에 의한 변형된 몽고메리 곱셈을 적용한 고속 멱승 방법의 바람직한 실시예들에 대해서 첨부된 도면을 참조하여 보다 상세히 설명하기로 한다. 다만, 몽고메리 곱셈 알고리듬에 대해서는 몽고메리의 논문 (Modular multiplication without trial division, Math. of Comp. Vol. 44, No. 170, pp.519-521, April 1985, by Peter L. Montgomery)에 자세히 개시되어 있으므로 상세히 설명하지는 않는다.
멱승 연산 중 레프트-투-라이트(left-to-right) 형태는 공통 피승수곱셈이 생기지 않으므로, 통상 라이트-투-레프트 형태를 적용한다. 공통 피승수곱셈이 생기는 라이트-투-레프트 형태의 멱승 연산에서는 동일한 피승수에 대한 두 번의 모듈라 곱셈을 수행하는 것에 기초하여, 두번의 곱셈시 공통 계산 부분이 생기도록 몽고메리 모듈라 곱셈을 변형한다. 이렇게 변형된 몽고메리 모듈라 곱셈을 이용하면, 공통 계산 부분은 한번만 계산할 수 있으므로 변형한 방법을 멱승 방법에 적용하면 계산 속도를 개선할 수 있고 사용메모리도 줄일 수 있다.
통상 모듈라 곱셈은 두 수의 곱셈과 그 결과에 대한 모듈라 감소로 이루어지는 데, 이 두 과정을 순차적으로 수행할 수도 있고 곱셈을 하면서 모듈라 감소를 수행할 수도 있다. 멱승 연산에 사용되는 모듈라 감소 방법 중 현재까지 몽고메리 알고리듬이 속도면에서 가장 효과적인 것으로 알려져 있으므로, 본 실시예에서는 우선 몽고메리 모듈라 곱셈을 기술하고 고속 멱승을 위해 이를 변형하는 과정을 기술하기로 한다.
임의의 큰수 X를 기수(radix) b로 표현하면
Figure pat00011
와 같이 n자리로 나타낼 수 있다. 여기서 Xi∈{0,1,··,b-1}이다. n자리인 두 수 A와 B의 모듈라 곱셈 A×B mod N은 A와 B를 곱하는 곱셈과 이 결과를 N에 대해 모듈라 감소하는 연산으로 이루어진다. n자리인 두 수의 곱셈은 n2번의 기수 b보다 작은 두 수의 곱셈으로 수행될 수 있다. (이하에서는 기수 b보다 작은 두 수의 곱셈을 작은 수 곱셈이라 한다.) 모듈라 감소는 A와 B를 곱한 결과 C에 대해 C-QN을 구하는 것이다. 여기서 Q는 C를 N으로 나눈 몫이다. 그러므로 고전적인 모듈라 감소에서는 큰 수에 대한 나눗셈이 필요하며 이 연산은 덧셈이나 곱셈에 비해 구현하기가 어렵다.
몽고메리 알고리듬에서는 먼저 N보다 크고 N과 서로 소인 R을 선택하는데 일반적으로 R에 대한 모듈라 연산(mod R)이나 나눗셈(div R)을 자리수 이동으로 간단히 계산할 수 있도록 bn으로 한다. 이 알고리듬은 나눗셈을 하는 고전적인 방법과는 달리 임의의 정수 X의 R에 대한 N-잉여류수를 XR mod N으로 정의하고 이 집합 내에서 빠른 모듈라 감소를 수행한다. 몽고메리 모듈라 감소 알고리듬은 N-잉여류수의 집합에서 0≤T≤RN 인 임의의 정수 T에 대해 TR-1mod N을 계산하는 것과 같다. 여기서 T는 N-잉여류수 상의 A와 B를 곱한 결과로 볼 수 있다. 이 알고리듬의 핵심은 T에 대해 N의 일정한 배수를 더하여 하위 n자리가 0이 되도록 하는 것이다. 하위 n자리가 0인 수를 R로 나누면 TR-1mod N가 된다.
한편, 두쓰(Dusse)와 칼리스키(Kaliski)는 몽고메리 알고리듬을 개선하여 N-잉여류수로 변환된 A와 B를 곱하면서 모듈라 감소를 수행하는 모듈라 곱셈 방법을 제안하였다. (이하에서는 이를 몽고메리 곱셈이라 한다.) 몽고메리 곱셈은 REDC(A×B)=ABR-1mod N으로 표현할 수 있으며 이 알고리듬을 나타낸 것이 도 1이다. 여기서 N0'은 -N0 -1mod b이며 유클리드(Eucild) 의 최대공약수 알고리듬으로 사전에 계산할 수 있다.
몽고메리 곱셈을 사용하여 한번의 모듈라 곱셈을 수행할 때에는 두수를 N-잉여류수(N-residues)로 변환한 후 변환된 두 수에 대한 몽고메리 곱셈을 수행한다. 이 결과 값은 N-잉여류수 상의 수이므로 일반수로 변환하는 사후 계산과정이 필요하다. 그러므로 몽고메리 곱셈은 잉여류수 변환에 따른 부가연산 때문에 모듈라 곱셈의 반복하는 횟수가 적거나 모듈라 수가 자주 변할 때는 비효율적이다. 그러나 멱승시에는 N-잉여류수 상에서 모듈라 곱셈이 반복되므로 매우 효과적이다. 몽고메리곱셈은 2n2+n번이 작은 수 곱셈이 필요하며 고전적인 방법이나 바레트 알고리듬에 비해 고속이면서 구현이 용이하다.
도 2a에서 보는 바와 같이 동일한 S에 대해 X=REDC(S×C)과 Y=REDC(S×S)을 수행한다. 이 연산을 공통 피승수 곱셈(common-multiplicand multiplication)이라고 한다. 본 발명에서는 모듈라 곱셈의 기본 개념이 두 연산에서 동일한 피승수를 공통적으로 곱하므로 공통적인 계산 부분을 추출하여 한번만 계산하자는 것이다. 그러나, 몽고메리 곱셈을 그대로 사용하는 경우에는 공통적인 계산 부분을 추출하기가 어렵다. 그 이유는 중간 계산값들이 각각 C와 S에 의존하여 변하기 때문이다. 그러므로 몽고메리 곱셈을 다음과 같이 변형한다.
REDC(A×B) = ABR-1mod N
= ABb-nmod N
= A(Bn-1bn-1+ Bn-2bn-2+ .... + B0b0)b(m-n)b-mmod N
= (Bn-1(Abm-1mod N)+ Bn-2(Abm-2mod N)+...+B0(Abm-nmod N))b-mmod N
= (Bn-1AR0+ Bn-2AR1+.....+B0ARn-1)b-mmod N
= Tb-mmod N
여기서 T는 Bn-1AR0+ Bn-2AR1+.....+B0ARn-1이며, 0≤i≤n-1일 때 ARi=Abm-1-imod N이다. 만약 m-1-i가 0보다 크면 ARi값은 A를 m-1+i 자리만큼 왼쪽으로 이동시킨 값이며 이때 모듈라 감소는 하지 않는다. 그러나 m-1-i가 0보다 작을 경우의 ARi값은 이전 값을 이용하여 반복적으로 구한다. 즉, ARi=ARi-1b-1mod N과 같다.
한편, m값은 계산 시간과 사용 메모리를 고려해 0과 n-1의 사이 값으로 선택할 수 있지만 T의 자리수가 n+2자리임을 고려할 필요가 있다. 만약 m이 0이면 T는 n+2자리이고, 1이면 Tb-1는 n+1자리가 되어 이를 다시 n자리로 감소시키는 부가적인 연산이 필요하다. m이 2이상이면 전체 계산량은 동일하나 m이 커질수록 사용하는 메모리가 많아진다. 그러므로 메모리 및 계산 측면에서 최적 m은 2이다. 따라서, m을 2로 하여 공통 피승수 곱셈 REDC(S×C)와 REDC(S×S)를 나타내면 다음과 같다.
REDC(S×C)=(Cn-1SR0+ Cn-2SR1+ Cn-3SR2..... + C0SRn-1)b-2mod N
=(Cn-1Sb + Cn-2S + Cn-3Sb-1mod N..... + C0Sb-n+2)b-2mod N
REDC(S×S)=(Sn-1SR0+ Sn-2SR1+ Sn-3SR2..... + S0SRn-1)b-2mod N
=(Sn-1Sb + Sn-2S + Sn-3Sb-1mod N..... + S0Sb-n+2)b-2mod N
식 (2)과 (3)에서 SRi가 공통적으로 사용되므로 한번만 계산할 수 있다. REDC(S×C)를 계산한 후 REDC(S×S)를 계산할 경우에는 모든 SRi를 저장해야 하지만 SR0, Cn-1SR0, Sn-1SR1, SR1순으로 번갈아 가면서 계산하면 SRi를 하나의 임시 메모리에저장하여 사용할 수 있다. 여기서 SR0는 S를 한자리 왼쪽으로 이동한 것이며 SR1은 S이므로 간단히 계산할 수 있고 나머지 SRi는 다음과 같이 계산한다.
SR2=SR1b-1mod N, SR3=SR2b-1mod N,···, SRn-1=SRn-2b-1mod N
REDC(S×C)와 REDC(S×S)를 동시에 계산하는 공통 피승수 곱셈은 도 2a와 도 2b와 같다.
도 2a에 도시한 바와 같이, 첫 번째 for문에서 첫 번째와 두 번째의 줄이 SRi를 계산하는 공통 부분이며 두번째 for문은 m이 2인 경우 Tb-2mod N을 수행하는 부분이다.
도 2b도에는 공통 피승수 모듈라 곱셈을 수행하는 플로우챠트 형태의 도면으로, X=REDC(S×C)와 Y=REDC(S×S)의 곱셈연산중에 공통 피승수 모듈라곱셈과정을 나타내고 있다. 주어진 S, C, N0'에 대해서 b가 N0보다 크고 N0와 서로 소일 때, 단계 20에서 변수 T를 S로 정의하고, 단계 21, 22에서 각각 X, Y를 연산한다. 다음 단계 23에서 기수 b에 대한 변수 m의 값을 정의하여 상기 변수 T를 기수 b와 변수 m에 대해서 정의한다. 다음, 단계 24, 25에서 상기 X, Y값을 상기 T를 이용하여 계산한다. 단계 23, 34, 25를 n-2회 수행한다. 다음 단계 26, 27에서 상기 X에 대한 m의 값과 상기 Y에 대한 m의 값을 기수b에 대해서 각각 구하고, X, Y의 값을 구하는 과정을 2회 수행하고, 단계 28, 29에서 X, Y가 각각 N이상이면 X=X-N, Y=Y-N을 수행하여 원하는 모듈라 곱셈을 수행한다. 여기서 한번의 모듈라 곱셈을 수행할 때에는 왼쪽에 있는 부분만 수행한다.
상기 변형한 모듈라 곱셈의 계산량을 분석하면 다음과 같다. 먼저 하나의 SRi값을 계산하는데 n+1번의 작은 수 곱셈이 필요하므로 모든 SRi값을 계산하는데 (n-2)(n+1)번의 작은 수 곱셈이 필요하다. 그러므로 REDC(S×C)를 계산하는 데 2n+(n-2)(2n+1)+2(n+1)
Figure pat00012
2n2+n번의 곱셈이 필요하다. 그러나 REDC(S×S)를 계산할 때에는 공통 계산 부분을 생략할 수 있으므로 2n+(n-2)n+2(n+1)
Figure pat00013
n2+2n번의 곱셈이 필요하다. 변형한 방법의 한번 모듈라 곱셈 계산량은 몽고메리 곱셈과 동일하나 공통의 피승수를 가지는 두 번의 모듈라 곱셈은 3n2+3n번의 곱셈으로 처리할 수 있다. 반면 몽고메리 곱셈으로는 4n2+2n번이 필요하므로 변형한 몽고메리 곱셈 방법은 이진 방법을 적용할 때 ei가 1일 경우의 계산량을 약 0.75배로 줄일 수 있다.
이상으로 기술한 변형된 몽고메리 곱셈은 멱승방법에 적용되어 고속의 멱승연산을 달성한다.
멱승 방법에는 이진 방법, m진(m-ary) 방법, 윈도우 방법, 지수 폴딩 방법 등이 있으며 레프트-투-라이트 방법과 라이트-투-레프트 방법으로 구분할 수 있다. 그러나 레프트-투-라이트 형태는 공통 피승수 곱셈이 없으므로 변형한 모듈라 곱셈을 적용하기가 어렵다. 본 발명에서는 라이트-투-레프트 형태의 m-ary, 윈도우 멱승 방법 그리고 지수 폴딩 기법을 사용한 멱승 방법에 변형한 모듈라 곱셈 방법을 적용한다.
이진 멱승 방법으로 AEmod N 연산시 먼저 k 비트인 E를 이진수로 변환한다. 즉,
Figure pat00014
, ei∈{0,1}로 표현할 수 있다. 이진 방법은 지수를 상하위 비트 중 어느 쪽에서부터 탐색하는가에 따라 레프트-투-라이트(left-to-right)방법과 라이트-투-레프트(right-to-left) 방법으로 구분할 수 있는데 몽고메리 곱셈을 사용한 라이트-투-레프트 이진 멱승 방법을 나타낸 것이 도 3a 및 도 3b이다.
도 3a 및 도 3b에 도시한 바와 같이, 본 발명의 이진 멱승 방법은 주어진 수 A, E, N에 대해서, 수 C=AEmod N의 모듈라 멱승방법에 있어서, 단계 30에서 지수 E를
Figure pat00015
, ei∈{0,1}로 변환하고, 단계 31에서는 유클리드(Euclid) 의 최대공약수 알고리듬인 N0'=-N0 -1mod b를 사전에 계산한다. 단계 32와 단계 33에서 1의 N 잉여류수를 C=R mod N으로, A의 N 잉여류수를 S=AR mod N으로 하여 1과 A를 N잉여류수로 변환한다. 단계 34에서 몽고메리 모듈라곱셈을 REDC()라 할 때, REDC(SxC)와 REDC(SxS)의 몽고메리모듈라곱셈을 기수(radix) b에 대해서 다음 식으로 변형하여,
REDC(S×C)=(Cn-1SR0+ Cn-2SR1+ Cn-3SR2..... + C0SRn-1)b-mmod N
=(Cn-1Sb + Cn-2S + Cn-3Sb-1mod N..... + C0Sb-n+2)b-mmod N
REDC(S×S)=(Sn-1SR0+ Sn-2SR1+ Sn-3SR2..... + S0SRn-1)b-mmod N
=(Sn-1Sb + Sn-2S + Sn-3Sb-1mod N..... + S0Sb-n+2)b-mmod N, (여기서 0≤i≤n-1일 때 SRi=Sbm-1-imod N이고 m은 0보다 크고 n보다 작다), ei=1인 경우(단계 35) 동일한 S에 대해서 C=REDC(SxC)와 S=REDC(SxS)의 공통피승수곱셈연산을 수행하고(단계 36), 이외의 경우에는 S=REDC(SxS)의 곱셈연산을 수행하며(단계 37), 단계 38에서 상기 연산 결과에 대해서 REDC(Cx1)의 연산을 수행하여 일반수(C)로 변환하는 단계를 포함한다.
m-ary 멱승에서는 E를 t개의 자리수를 가지는 m진수로 나타낸다. 즉,
Figure pat00016
, Ei∈{0,···, m-1}로 표현할 수 있다. 몽고메리곱셈을 사용한 라이트=투-레프트 m-ary 멱승 방법을 나타낸 것이 도 4이다. 라이트-투-레프트 방법의 기본 원리는
Figure pat00017
를 계산한 후 각 자리의 계수인 Ei에 해당하는 만큼 멱승을 수행하는 것이다. 도 4의 두 번째 "for"문에서 보는 바와 같이 E를 t개의 자리수로 표현할 경우 약 t(m-1)/m번의 공통 피승수 곱셈이 생긴다. 이 방법에서는 평균 [log2(E)] + v+2(m-2)번의 모듈라 곱셈이 필요하다. 여기서 v는 E를 m진수로 표현했을 때 0이 아닌 Ei의 개수이며 t(m-1)/m과 같다.
윈도우 방법은 m-ary 방법을 효율적으로 개선한 것으로 적당한 크기의 윈도우를 잡고 멱승을 수행한다. 그러나 윈도우를 일률적으로 같은 비트씩 잡는 것이 아니라 윈도우의 크기가 w이하이면서 시작과 끝이 1이 되게 한다. 몽고메리 곱셈을 사용한 라이트-투-레프트 윈도우 방법을 나타낸 것이 도 5이다. 이 방법은 라이트-투-레프트 m-ary 방법의 원리와 비슷하게 윈도우가 생기는 위치에서 A에 관한 멱승을 수행한 후 각 윈도우 값에 해당하는 만큼 멱승을 수행하도록 한 것이다. 도 5의 "while"문내에서 보는 바와 같이 윈도우가 발생할 때마다 공통 피승수 곱셈이 발생한다. 윈도우 방법에서 평균 윈도우 개수가 [log2E/(w+1)] 개이므로 [log2E/(w+1)]+ [log2E] + 2(2w-1-1)+3번의 모듈라 곱셈이 필요하다.
다음 지수 폴딩 기법을 사용한 멱승 방법에 변형한 모듈라 곱셈을 적용한다. 멱승에서 폴딩 기법이란 지수 E를 반으로 접어서 연산함으로써 계산 효율을 높이는 방법이다. 이 방법은 슈노르(Schnorr)가 제시한 서명 검증식 계산방법(Efficient signature generation for smart cards, Advances in Cryptology-CRYPTO '89 Proceedings, Springer-Verlag, pp. 239-252, 1990 by C. P. Schnorr)에 기초하여 라이트-투-레프트 방법으로 변환한 것이다. 즉, k비트인 지수 E는 EH2k/2+EL로 표현할 수 있다. 이 멱승 방법의 기본 개념은 EH와 EL을 이진수로 나타내었을 때 공통적으로 "1"인 것에 대한 멱승은 한번만 할 수 있다는 것이다.
멱승 연산시에는 다음의 식(5)와 같이 EH와 EL를 AND시켜 공통으로 "1"인 부분만 추출한다. 그리고 Ecom과 EL을 exclusive-or(XOR)시키고 Ecom과 EL을 XOR한다.
Figure pat00018
EH, ELXOR=Ecom
Figure pat00019
EL
이 경우 Ecom, EHXOR및 ELXOR은 E를 반으로 접었을 때 상위 반절과 하위 반절이 공통적으로 "1" 인 수, 상위 반절만이 "1"인수, 하위 반절만이 "1"인 수를 의미하며 이진수로 표현하면 다음 식(6)과 같다. 여기서 ecom_i, eHXOR_i, eHXOR_i∈{0,1} 이다.
Figure pat00020
ecom_i·2i, EHXOR=
Figure pat00021
eHXOR_i·2i, ELXOR=
Figure pat00022
eLXOR_i·2i
따라서 EH와 EL는 다음식 (7)과 같이 표현할 수 있다.
EH=Ecom+EHXOR, EL=Ecom+ELXOR
지수 폴딩 기법을 이용하여 멱승을 수행하는 과정은 도 6과 같다. 도 6의 첫 번째 "for"문에서
Figure pat00023
mod N,
Figure pat00024
mod N 그리고
Figure pat00025
mod N을 먼저 구한 후,
Figure pat00026
mod N과
Figure pat00027
mod N을 계산한다. 그리고 두번째 "for"문에서 최종적으로 AE=
Figure pat00028
mod N을 계산한다. 멱승 연산에 필요한 계산량을 분석함에 있어 E의 해밍웨이트(Hamming weight)가 k/2라 가정한다. 그러면 EH와 EL의 해밍웨이트는 k/4이며 Ecom, EHXOR, ELXOR의 해밍웨이트는 각각 k/8이 된다. 그러므로 k+3k/8+3번의 모듈라 곱셈이 필요하다. 이 방법에서는 첫 번째 "for"문에서 Ecom, EHXOR, 및 ELXOR가 "1"일 때 공통 피승수 모듈라 곱셈을 3k/8번 사용할 수 있다.
이하, 멱승방법별 비교 분석을 하기로 한다. 멱승 알고리듬의 계산량을 비교할 때에는 모듈라 곱셈수를 고려한다. 그러나 모듈라 곱셈은 기수 b보다 작은 수들의 곱셈으로 이루어지므로 결국 멱승에 필요한 작은수 곱셈을 분석함으로써 전체 계산량을 비교할 수 있다. 본 발명에서는 멱승 AEmod N을 구현하는데 A, E 및 N을 모두 512비트로 가정하였다. A와 N의 기수 b는 216으로 하였다. 이 경우 A나 N을 기수 b로 표현하면 자리수 n은 32가 된다.
이진 멱승 방법에서 E가 k비트이면 레프트-투-라이트 방법과 라이트-투-레프트 방법 모두 약 1.5k번의 모듈라 곱셈이 필요하다. 그러므로 이 방법에 몽고메리곱셈을 사용하면 총 1.5k(2n2+n)번의 작은 수 곱셈이 필요하다. 그러나 라이트-투-레프트 멱승 연산에서는 k/2번의 공통 피승수 곱셈이 생기므로 변형한 방법을 사용하면 0.5k(3n2+3n)+0.5k(2n2+n)번의 곱셈이 필요하다. 이는 E가 512 비트일 경우 768번의 모듈라 곱셈을 646번으로 감소시킨 것과 동일하다.
레프트-투-라이트 m-ary 멱승 방법에서는 m의 선택에 따라 계산 테이블 및 곱셈수가 달라지게 되는 데 m=24로 하면 약 641번의 모듈라 곱셈이 필요하며 m-1개의 저장용 테이블이 필요하다. 라이트-투-레프트 m-ary 방법에서는 [log2E]+v+2(m-2)번의 모듈라 곱셈과 m-1개의 저장용 테이블이 필요하다. m=24이면 t=128, v=128·(m-1)/m=120이므로 약 660번의 모듈라 곱셈이 필요하다. 그러나 라이트-투-레프트 멱승 연산에서 v번의 공통 피승수 곱셈이 생기므로 변형한 모듈라 곱셈을 적용하면 (k-v)(2n2+n)+v(3n2+3n)+2(m-1)(2n2+n)번의 작은 수 곱셈이 필요한데 이는 약 603번의 모듈라 곱셈을 수행하는 결과와 같다. 그러나 m=23이면 t=171, v=171·(m-1)/m=150이다. 이때 계산량은 (512-150)(2n2+n)+150(3n2+3n)+12(2n2+n)번이고 이는 약 602번의 모듈라 곱셈과 같다. 결국 E가 512비트인 경우 m-ary 방법에서는 m=23으로 하는 것이 m=24로 하는 것에 비해 계산 속도는 비슷하나 계산 테이블을 절반 정도로 줄일 수 있다.
레프트-투-라이트 윈도우 방법에서는 512 비트 멱승시 윈도우 크기가 5일 때 최적이며 평균 609번의 모듈라 곱셈이 필요하다. 이 경우 2w-1개의 저장용 테이블이 필요하다. 라이트-투-레프트 방법에서는 [log2E/(w+1)]+[log2E]+2(2w-1-1)+3번의 모듈라 곱셈이 필요한 데 이는 631번의 모듈라 곱셈과 동일한 계산량이다. 그러나 라이트-투-레프트 멱승 연산에서는 윈도우 개수 만큼 공통 피승수 곱셈이 생기므로 변형한 모듈라 곱셈을 적용하면 [log2E]-[log2E/(w+1)])(2n2+n)+([log2E/(w+1)])(3n2+3n)+(2(2w-1-1)+3)(2n2+n) 번의 작은 수 곱셈이 필요하다. 이는 590번의 모듈라 곱셈을 수행한 것과 같다. 그러나 윈도우 크기를 4로 하면 (512-103)(2n2+n)+103(3n2+3n)+ 17(2n2+n)이고 이것은 약 583번의 모듈라 곱셈을 수행하는 결과와 같다. 지수가 512비트이고 변형한 곱셈을 사용하는 경우에는 윈도우 크기가 4일 때 속도도 빠르고 메모리 사용을 절반 정도로 감소할 수 있다. 그 이유는 윈도우 크기가 작으면 평균 윈도우 개수는 증가하므로 윈도우가 생기는 위치의 멱승 값을 계산하는 연산은 많아지나 변형 모듈라 곱셈으로 보상할 수 있고, 반면 저장용 테이블이 감소하게 되어 테이블을 멱승하는 계산량이 줄어들기 때문이다.
폴딩 기법을 이용한 멱승은 레프트-투-라이트 방법이나 라이트-투-레프트 방법으로 구현할 수 있으며 각각 k+3k/8+1와 k+3k/8+3의 모듈라 곱셈이 필요하다. 그러나 라이트-투-레프트 방법에서는 3k/8번의 공통 피승수 곱셈이 생기므로 변형한 모듈라 곱셈을 사용하면 3k/8(3n2+3n)+(k/8+k/2+3)(2n2+n)번이 필요하다. 이는 약 615번 정도의 모듈라 곱셈으로 처리할 수 있는 계산량이 된다. 상기한 각 멱승 방법의 모듈라 곱셈수와 512비트 데이터를 저장하기 위한 테이블 수를 요약하면 표 1과 같다. 단, 필요한 테이블 수는 ( )로 표시하였다.
멱승방식모듈라 곱셈방식 2진 m-ary 윈도우 폴딩
몽고메리(L-to-R) 768 641(15) 609(16) 705
몽고메리(R-to-L) 768 660(15) 631(16) 707
변형몽고메리(R-to-L) 646 602(7) 583(8) 615
일반적으로 멱승 방법에서 레프트-투-라이트 형태가 라이트-투-레프트 형태보다 계산 측면에서 유리하다. 그러나 레프트-투-라이트 형태에서는 공통 피승수 곱셈이 발생하지 않는다. 반면, 라이트-투-레프트 형태에서는 공통 피승수 곱셈이 생기므로 이를 효과적으로 처리한다면 레프트-투-라이트 형태보다 고속 멱승을 실현할 수 있다. 특히, 이진 방법이나 폴딩 기법을 이용한 방법에서는 공통 피승수 곱셈의 발생 확률이 높으므로 개선효율이 커지게 된다. 이 방법들은 특별한 데이터 저장용 테이블이 필요하지 않으면서 고속이므로 IC카드와 같은 제한적인 메모리를 사용하는 환경에 적합하다. 반면, m-ary나 윈도우 방법은 이들보다는 고속이지만 데이터 저장용 테이블이 필요하므로 메모리가 확보된 컴퓨터나 네트워크 시스템에 활용할 수 있다.
지금까지 본 발명의 고속 멱승 방법을 소프트웨어적인 방법면에서만 설명하였으나, 도 7을 참조하여 본 발명의 방법이 운영되는 하드웨어를 간단히 설명하기로 한다.
본 발명에 의한 상기 멱승 방법들은 PC 및 워크스테이션(70)에서 C 언어로 구현하였다. 다음, 본 발명의 고속 멱승방법을 담고 있는 프로그램이 입/출력장치(72)를 통하여 입력되면 CPU(74)는 데이터 및 저장테이블들을 RAM(76) 이나 ROM 또는 EEPROM(78)으로부터 불러내어 멱승연산을 수행한다. 이러한, 하드웨어 환경하에서, 멱승연산시 메모리사용 부분에서 n자리의 수 A, B, N이 주어진 경우, 먼저 모듈라곱셈 AB mod N이나 REDC(AB)를 처리할 때 순수한 곱셈 C=AB를 계산한 후 그 결과에 대한 모듈라 감소 C mod N을 수행한다면 C의 크기는 A나 B의 자리수의 두배가 즉 2n자리가 된다. 이를 다시 모듈라 감소하면 n자리가 된다. 그러나, 본 발명에서는 곱셈을 하면서 모듈라 감소를 동시에 수행할 수 있으므로 가장 큰 중간값의 크기가 n+2자리수이므로 사용하는 메모리의 크기가 작게 된다. 또한, 멱승연산에서 필요한 메모리는 주로 중간값들을 저장하는 테이블의 수와 관계한다. 단, 하나의 테이블에는 n자리의 수가 저장된다. m-ary 멱승방법이나 윈도우 멱승방법에서 최적의 테이블의 수는 지수 E의 크기에 따라서 결정된다. 일반적으로 지수가 512비트일 때, m-ary 멱승방법에서는 15개, 윈도우 멱승방법에서는 16개가 최적의 테이블수이므로 IC카드와 같은 저메모리 환경하에서는 단점이 될 수 있으나, 본 발명에서는 변형된 몽고메리 모듈라 곱셈을 이용하면 m-ary 멱승방법에서는 7개, 윈도우 멱승방법에서는 8개에서 최적의 속도를 내므로, 전체적으로 메모리의 용량을 절반으로 줄일 수 있다. 결국, 모듈라곱셈에 사용되는 메모리의 양을 반으로 줄일 수 있을 뿐만 아니라 멱승방법에 따라서는 데이터저장용 테이블의 수도 반으로 줄일 수 있다. 한편, 데이터를 입력하는 것은 프로그램내에 저장하여 실행할 수도 있고 외부의 파일에 데이터를 저장한 후 그것을 입/출력장치(72)를 통해 읽어들여 사용할 수도 있다. 일반적으로 한 시스템을 운용할 때에는 고정되는 값이 있고 변하는 값이 있다. 예를 들어 ElGamal서명이나 DSS서명같은 경우에는 AEmod N를 계산하는 데 A와 N은 고정된 공통의 값이고 E는 변하는 값이다. 그러나, RSA서명에서는 E와 N이 자신의 정보로서 고정된 값이고 A는 변하는 값이다. 한편, RSA암호에서는 E와 N아 상대방의 정보이므로 변하는 값이고 A도 역시 변하는 값이다. 일반적으로 시스템을 운용할 때에는 고정된 값은 프로그램내부에 두고 변하는 값은 외부에서 독출하여 사용한다. 즉, 고정값들은 ROM이나 EEPROM에 저장해 둘 수 있고, 변하는 값은 RAM에 저장한 후 불러와서 사용한다.
이하, 고전적인 알고리듬, 몽고메리 곱셈 그리고 변형한 방법으로 모듈라 곱셈을 구현하여 각 멱승 방법에 적용한 경우를 비교하기로 한다. PC는 펜티엄(586)/133MHz을 사용하였고 DOS 환경 하에서 볼란드(Borland ) C로 컴파일하였다. 워크스테이션은 솔라이스(Solais) 2.5.1환경 하에서 썬울트라(SUN Ultra) 2/200MHz를 사용하였다. 표 2와 표 3은 PC 및 워크스테이션에서 한번의 멱승을 수행하는데 소요된 평균 시간을 나타낸 것이다. 이 결과는 세가지 모듈라 곱셈을 적용하여 멱승을 1000번씩 수행 후 이를 평균한 것이다. 표의 ( )는 몽고메리 곱셈을 사용한 이진 방법을 기준으로 한 상대적인 모듈라 곱셈수를 나타낸 것이다.
멱승방식모듈라 곱셈방식 2진 m-ary 윈도우 폴딩
종래기술(L-to-R) 1.559 1.319 1.244 1.437
몽고메리(L-to-R) 0.771(768) 0.638(636) 0.617(615) 0.708(706)
몽고메리(R-to-L) 0.770(768) 0.657(655) 0.632(630) 0.710(708)
변형몽고메리 (R-to-L) 0.645(643) 0.598(596) 0.580(578) 0.617(615)
멱승방식모듈라 곱셈방식 2진 m-ary 윈도우 폴딩
종래기술(L-to-R) 0.450 0.375 0.356 0.412
몽고메리(L-to-R) 0.306(768) 0.255(640) 0.245(614) 0.280(702)
몽고메리(R-to-L) 0.306(768) 0.263(660) 0.252(632) 0.281(705)
변형몽고메리(R-to-L) 0.255(640) 0.239(600) 0.231(580) 0.243(610)
상기 표들에서 보는 바와 같이 몽고메리 곱셈을 고전적인 알고리듬에 비해 PC에서는 약 0.5배, 워크스테이션에서는 0.68배의 시간이 소요된다. 몽고메리 곱셈을 각 멱승 방법에 적용했을 경우 이론적인 소요시간과 구현 결과가 거의 일치하였다. 또한 변형한 곱셈을 적용했을 경우에는 몽고메리 곱셈을 사용하는 것보다 고속으로 멱승연산을 구현할 수 있었고 그 비율도 표 1의 분석결과와 비슷하였다. 변형한 방법은 PC보다는 워크스테이션에서 개선비율이 높았는데 이는 데이터의 읽고 쓰는 억세스 시간의 차이에 의한 것 같다. 몽고메리 곱셈을 한 번 수행하는 데 PC에서는 약 1.0026 msec, 워크스테이션에서는 약 0.3984 msec 소요되었다. 공통 피승수 곱셈으로 2회의 모듈라 곱셈을 수행시 PC에서 약 1.5170 msec, 워크스테이션에서는 0.7969 msec 소요되었다. 다른 PC나 워크스테이션에서도 수행한 결과, 멱승 연산의 속도는 시스템 기종의 성능, 컴파일러의 선택, 혹은 최적화 기능의 추가 등에 따라 약간씩 달랐지만 모듈라 곱셈 방법에 다른 상대적인 비는 비슷하였다.
이상으로 상술한 바와 같이, 본 발명에서는 동일한 피승수를 가지는 두 번의 모듈라 곱셈 연산시 공통적으로 계산되는 부분이 생기도록 몽고메리 모듈라 곱셈을 변형하였다. 변형한 방법을 라이트-투-레프트 형태의 멱승에 적용하면 기존의 방법보다 고속 연산이 가능하다. 특히, IC카드와 같은 저메모리 환경하에서는 지수 폴딩 기법을 사용한 멱승 방법에 변형한 곱셈 방법을 사용하는 것이 효과적이다. m-ary나 윈도우 방법에서는 기존 방법보다 고속이면서 사용 메모리를 절반 정도로 줄일 수 있는 장점이 있다. 따라서 이 방법은 RSA나 EIGamal형 공개키 암호시스템에 효과적으로 사용할 수 있다.

Claims (6)

  1. 사용자정보를 보호하고 안전하게 유지시키면서 비밀통신을 수행하기 위하여 암호, 신분인증, 디지털서명, 전자상거래등에 이용되는 공개키암호시스템의 주전산기 또는 저메모리 암호IC카드의 곱셈기회로에서, 모듈라멱승 C=AEmod N (주어진 수 A, E, N에 대해서, R이 N보다 크고 N과 서로 소)을 연산하기 위한 변형된 몽고메리 모듈라 곱셈을 적용한 고속 멱승 방법에 있어서,
    (a) 1의 N 잉여류수를 C=R mod N으로, A의 N 잉여류수를 S=AR mod N으로 하여 1과 A를 N잉여류수로 변환하는 단계;
    (b) 몽고메리 모듈라곱셈을 REDC()라 할 때, REDC(SxC)와 REDC(SxS)의 몽고메리모듈라곱셈을 기수(radix) b에 대해서 다음 식으로 변형하는 단계,
    REDC(S×C)=(Cn-1SR0+ Cn-2SR1+ Cn-3SR2..... + C0SRn-1)b-mmod N
    =(Cn-1Sb + Cn-2S + Cn-3Sb-1mod N..... + C0Sb-n+2)b-mmod N
    REDC(S×S)=(Sn-1SR0+ Sn-2SR1+ Sn-3SR2..... + S0SRn-1)b-mmod N
    =(Sn-1Sb + Sn-2S + Sn-3Sb-1mod N..... + S0Sb-n+2)b-mmod N, (여기서 0≤i≤n-1일 때 SRi=Sbm-1-imod N이고 m은 0보다 크고 n보다 작다);
    (c) 소정의 멱승 방법에 따라서 소정 횟수만큼 REDC(S×S)를 독립적으로 수행하거나, REDC(S×C)와 REDC(S×S)를 동시에 수행하여 N잉여류 수에 대한 멱승을 수행하는 단계; 및
    (d) 상기 연산 결과에 대해서 REDC(Cx1)의 연산을 수행하여 일반수로 변환하는 단계를 포함하는 변형된 몽고메리 모듈라 곱셈을 적용한 고속 멱승 방법.
  2. 제1항에 있어서, 상기 멱승 방법이 이진 멱승방법인 경우에는 지수 E를
    Figure pat00029
    , ei∈{0,1}로 표현할 때, ei=1인 경우 동일한 S에 대해서 C=REDC(SxC)와 S=REDC(SxS)의 공통피승수곱셈연산을 수행하고, 이외의 경우에는 S=REDC(SxS)의 곱셈연산을 수행하는 것을 특징으로 하는 변형된 몽고메리 모듈라 곱셈을 적용한 고속 멱승 방법.
  3. 제1항에 있어서, 상기 멱승 방법이 m진 멱승방법인 경우에는 지수 E를 t개의 자리수를 갖는 m진수
    Figure pat00030
    , ei∈{0,...,m-1}로 표현할 때, ei=0이 아닌 경우 동일한 S에 대해서 C=REDC(SxC)와 S=REDC(SxS)의 공통피승수곱셈연산을 수행하고, 이외의 경우에는 S=REDC(SxS)곱셈연산을 수행하는 것을 특징으로 하는 변형된 몽고메리 모듈라 곱셈을 적용한 고속 멱승 방법.
  4. 제1항에 있어서, 상기 멱승 방법이 윈도우 멱승방법인 경우에는 지수 E를
    Figure pat00031
    , ei∈{0,1}로 표현하여, w크기의 윈도우를 정하여 연산할 때 윈도우가 하나 발생할 때마다, 동일한 S에 대해서 C=REDC(SxC)와 S=REDC(SxS)의 공통피승수곱셈연산을 수행하고, 이외의 경우에는 S=REDC(SxS)곱셈연산을 수행하는 것을 특징으로 하는 변형된 몽고메리 모듈라 곱셈을 적용한 고속 멱승 방법.
  5. 제1항에 있어서, 상기 멱승 방법이 지수폴딩 멱승방법인 경우에는 지수 E를
    Figure pat00032
    , ei∈{0,1}로 표현하여, EH은 상위반절, EL은 하위반절이라 하면 E=EH2t/2+EL이므로 EH과와 EL이 공통적으로 1인 Ecom=EHAND EL, 상위반절만 1인 EHXOR=EcomXOR EH, 하위반절만 1인 ELXOR=EcomXOR EL를 얻는 과정;
    Ecom, EHXOR, ELXOR이 각각 1인 경우, 동일한 S에 대해서 C=REDC(SxC)와 S=REDC(SxS)의 공통피승수곱셈연산을 수행하고, 이외의 경우에는 S=REDC(SxS)곱셈연산을 수행하여,
    Figure pat00033
    mod N,
    Figure pat00034
    mod N 그리고
    Figure pat00035
    mod N을 먼저 구하는 과정;
    Figure pat00036
    mod N과
    Figure pat00037
    mod N을 계산하는 과정; 및
    최종적으로 AE=
    Figure pat00038
    mod N을 계산하는 과정;을 포함하는 것을 특징으로 하는 변형된 몽고메리 모듈라 곱셈을 적용한 고속 멱승 방법.
  6. 제2항 내지 제5항에 있어서, 지수를 하위비트에서 상위비트쪽으로 탐색하는 라이트-투-레프트 방법을 채용함을 특징으로 하는 변형된 몽고메리 모듈라 곱셈을 적용한 고속 멱승 방법.
KR1019970019017A 1997-05-16 1997-05-16 변형된 몽고메리 모듈라 곱셈을 적용한 고속 멱승 방법 KR100257123B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1019970019017A KR100257123B1 (ko) 1997-05-16 1997-05-16 변형된 몽고메리 모듈라 곱셈을 적용한 고속 멱승 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1019970019017A KR100257123B1 (ko) 1997-05-16 1997-05-16 변형된 몽고메리 모듈라 곱셈을 적용한 고속 멱승 방법

Publications (2)

Publication Number Publication Date
KR19980083640A KR19980083640A (ko) 1998-12-05
KR100257123B1 true KR100257123B1 (ko) 2000-05-15

Family

ID=19506085

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019970019017A KR100257123B1 (ko) 1997-05-16 1997-05-16 변형된 몽고메리 모듈라 곱셈을 적용한 고속 멱승 방법

Country Status (1)

Country Link
KR (1) KR100257123B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100442218B1 (ko) * 2001-01-30 2004-07-30 미쓰비시 덴키 시스템 엘에스아이 디자인 가부시키가이샤 몽고메리의 알고리즘을 이용한 멱승 잉여 연산기

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100400210B1 (ko) * 1997-01-10 2003-11-14 삼성전자주식회사 디지털 서명을 위한 모듈라 곱셈장치
KR20080012634A (ko) 2006-08-04 2008-02-12 삼성전자주식회사 고속 몽고메리 전력 래더 알고리즘에서 사용되는 폴트 검출동작을 구현하기 위한 이진 유한 영역에서의 포인트 덧셈방법 및 덧셈 연산 장치
KR102143562B1 (ko) * 2018-12-14 2020-08-12 단국대학교 산학협력단 Ab 곱셈 및 ab^2 곱셈의 멀티 연산 장치 및 방법

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100442218B1 (ko) * 2001-01-30 2004-07-30 미쓰비시 덴키 시스템 엘에스아이 디자인 가부시키가이샤 몽고메리의 알고리즘을 이용한 멱승 잉여 연산기
US7024560B2 (en) 2001-01-30 2006-04-04 Renesas Technology Corp. Power-residue calculating unit using Montgomery algorithm

Also Published As

Publication number Publication date
KR19980083640A (ko) 1998-12-05

Similar Documents

Publication Publication Date Title
EP0933695B1 (en) IC card equipped with elliptic curve encryption processing facility
De Win et al. A fast software implementation for arithmetic operations in GF (2 n)
US20080044013A1 (en) Koblitz Exponentiation with Bucketing
WO2010048719A1 (en) Method and apparatus for modulus reduction
Paar Implementation of cryptographic schemes 1
Avanzi On multi-exponentiation in cryptography
Kim et al. A new hardware architecture for operations in GF (2/sup n/)
US6763366B2 (en) Method for calculating arithmetic inverse over finite fields for use in cryptography
Boston et al. Genus two hyperelliptic curve coprocessor
KR100257123B1 (ko) 변형된 몽고메리 모듈라 곱셈을 적용한 고속 멱승 방법
Halbutogullari et al. Parallel multiplication in GF (2 k) using polynomial residue arithmetic
KR100257124B1 (ko) 공통 피승수 모듈라 곱셈을 이용한 고속 멱승 방법
KR101548174B1 (ko) 모듈러스의 음의 역원을 구하는 방법
Clancy Analysis of FPGA-based hyperelliptic curve cryptosystems
El Makkaoui et al. Fast modular exponentiation methods for public-key cryptography
Baktır et al. Finite field polynomial multiplication in the frequency domain with application to elliptic curve cryptography
Realpe-Muñoz et al. High-performance elliptic curve cryptoprocessors over GF (2^ m) GF (2 m) on Koblitz curves
KR100194769B1 (ko) 메모리를 사용하여 유한체상에서 역원을 구하는 방법
JP3540852B2 (ja) 暗号化システムにおける羃乗演算を含む暗号化方法及びその装置
Yakymenko et al. Polynomial Rabin Cryptosystem Based on the Operation of Addition
Joux et al. Elliptic Curve Discrete Logarithm Problem over Small Degree Extension Fields. Application to the static Diffie-Hellman problem on $ E (\F_ {q^ 5}) $
Lou et al. An efficient Montgomery exponentiation algorithm by using signed-digit-recoding and folding techniques
Tao et al. Modification and Performance Improvement of Paillier Homomorphic Cryptosystem
Okeya et al. Use of montgomery trick in precomputation of multi-scalar multiplication in elliptic curve cryptosystems
Hess et al. Design of long integer arithmetic units for public-key algorithms

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
J201 Request for trial against refusal decision
AMND Amendment
B701 Decision to grant
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20030213

Year of fee payment: 9

LAPS Lapse due to unpaid annual fee