KR19990086179A - 모듈러 연산장치 및 그 방법 - Google Patents

모듈러 연산장치 및 그 방법 Download PDF

Info

Publication number
KR19990086179A
KR19990086179A KR1019980019040A KR19980019040A KR19990086179A KR 19990086179 A KR19990086179 A KR 19990086179A KR 1019980019040 A KR1019980019040 A KR 1019980019040A KR 19980019040 A KR19980019040 A KR 19980019040A KR 19990086179 A KR19990086179 A KR 19990086179A
Authority
KR
South Korea
Prior art keywords
memory means
bits
bit
parallel
multiplier
Prior art date
Application number
KR1019980019040A
Other languages
English (en)
Other versions
KR100486697B1 (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 KR1019980019040A priority Critical patent/KR100486697B1/ko
Publication of KR19990086179A publication Critical patent/KR19990086179A/ko
Application granted granted Critical
Publication of KR100486697B1 publication Critical patent/KR100486697B1/ko

Links

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/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • 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/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/50Adding; Subtracting

Landscapes

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

Abstract

공개키 암호화/복호화 및 디지털 서명 시스템에 사용되는 모듈러 연산장치에 관한 것으로서, 본 발명에 의한 모듈러 연산 A·B·2-kmod N 을 계산하는 장치는 k비트의 저장용량을 지니고, 각각 A, B, N을 저장하는 A메모리수단, B메모리수단, N메모리수단; 두 개의 w비트의 값을 병렬로 입력받아 곱한 2w비트의 결과를 병렬로 출력하는 곱셈기; 두 개의 2w비트의 값을 병렬로 입력받아 더한 결과를 병렬로 출력하는 덧셈기; k+2w비트의 저장용량을 지니고, 한 클럭 내에 그 중 2w비트를 결정하여 덧셈기로 출력하고, 덧셈기로부터 입력된 값을 출력한 비트의 위치에 저장하는 누산기; w비트의 저장용량을 지니고, 미리 계산된 N0 -1mod 2w저장하는 J메모리수단; w비트의 저장용량을 지니고, 곱셈기의 출력으로부터 상위 w비트를 저장하는 q메모리수단; J메모리수단, B메모리수단 및 N메모리수단 중에서 하나를 선택하여 곱셈기에 접속하는 제1선택수단; A메모리수단, q메모리수단 및 누산기 중에서 하나를 선택하여 곱셈기에 접속하는 제2선택수단; 및 q메모리수단 및 덧셈기 중에서 하나를 선택하여 곱셈기 접속하는 제3선택수단을 포함함을 특징으로 한다.
본 발명에 의하면, 디지털 서명기기, 공개키 암호화/복호화기기에서 필요로 하는 모듈러 곱셈 또는 모듈러 멱승을 계산하기 위한 회로인 A·B·2-kmod N을 계산하는 회로를 간단하게 구현함으로써 디지털 서명기기 및 공개키 암호화/복호화기기 제작에 요구되는 비용을 줄일 수 있다.

Description

모듈러 연산장치 및 그 방법
본 발명은 모듈러 연산장치에 관한 것으로서, 특히 공개키 암호화/복호화 및 디지털 서명 시스템에 사용되는 모듈러 연산장치 및 그 방법에 관한 것이다.
1976년 디피(Diffie)와 헬만(Hellman)은 수학적으로 매우 풀기 어려운 문제의 일방성을 이용한 공개키 암호시스템(Public Key Cryptosystem)의 개념을 처음으로 소개하여 현대 암호학의 새로운 전기를 마련하였다. 기존의 관용(대칭형) 암호시스템(conventional or symmetric cryptosystem)에서는 통신하고자 하는 두 사용자가 동일한 비밀키를 공유하여야 하므로 키관리가 어렵고, 디지털 서명(digital signature)을 구현하기 어렵다는 등의 단점이 있었다. 그런데, 공개키 암호시스템에서는 수학적으로 풀기 어려운 문제의 일방성을 이용하여 공개키와 비밀키를 계산하고, 공개키는 누구나 이용할 수 있게 공개하며 비밀키만 각 사용자가 보관하게 된다. 따라서, 공개된 상대방의 공개키를 가진 사용자는 누구나 그 상대방과 비밀통신을 할 수 있게 된다.
공개키 암호시스템에서 가장 널리 이용되는 어려운 문제로는 이산대수 문제(Discrete Logarithm Problem)와 소인수분해 문제가 있다. 대표적인 공개키 암호시스템으로는 이산대수 문제에 근거한 엘가말(ElGamal)형의 암호시스템과 소인수분해 문제에 근거한 알.에스.에이(RSA:Revest Shamir Adleman) 암호시스템이 있다. 표준으로 채택된 것도 국제표준으로는 ISO(the International Organization for Standardization:국제표준기구)/IEC(the International Electrotechnical Commission:국제전자기술위원회) 9796, 엘가말형의 변형인 미국의 DSA, 러시아의 GOST 등이 있으며, 한국에서는 KC-DSA가 있다.
이러한 공개키 암호시스템들은 대부분 모듈러 멱승(modular exponentiation: memod N) 연산을 필요로 하고, 이 모듈러 멱승 연산을 위해서는 모듈러 곱셈 (AB mod N)을 수행하는 것이 반드시 필요하다.
모듈러 곱셈을 위한 알고리듬으로는 고전적인 알고리듬, 바레트(Barret)의 알고리듬, 그리고 몽고메리(Montgomery) 알고리듬 등이 제안되어 있다.
상기 고전적인 알고리듬은 보통 연필로 나눗셈을 하여 나머지를 구하듯이 한자리씩 몫을 추정하여 나머지를 구하는 과정을 반복함으로써 모듈러 감소를 하는 방법이다. 이는 법 M에 대한 제약이 없으며 사전(事前) 계산이나 사후(事後) 계산이 필요없으므로 어느 경우에나 적용될 수 있는 가장 일반적인 모듈러 감소 알고리듬이다. 그러나, 몫을 추정하는 과정에서 (곱셈에 비해 속도가 느린) 나눗셈이 필요하고 추정된 몫이 정확한 값이 아닌 경우 추가적인 덧셈이나 뺄셈이 필요하므로 비교적 속도가 느린 편이다.
바레트 알고리듬은 고정된 법에 대한 사전계산값을 이용하여 전체 몫을 한꺼번에 추정하여 곱셈만으로 모듈러 감소를 수행한다. 이는 법 M이 고정되어 있는 경우 또는 같은 법에 대해 많은 수의 모듈러 곱셈이 필요한 모듈러 멱승 연산시 고전적인 알고리듬에 비해 좀 더 나은 성능을 보여준다.
몽고메리 알고리듬은 수체제의 변환을 통해 나눗셈없이 나머지를 구하는 알고리듬으로 다은 알고리듬에 비해 속도가 빠르므로 모듈러 멱승이 필요한 공개키 암호시스템의 구현시 가장 널리 이용된다. 즉 주어진 수들을 곱셈만으로 모듈러 감소를 할 수 있는 다은 수체제로 변환하여 거기서 모듈러 감소시킨 후 이를 다시 원래의 수체제로 역변환시켜 원하는 결과를 얻게 된다. 대부분의 공개키 암호시스템에서 요구되는 모듈러 멱승의 연산시는 이러한 사전/사후 계산은 전체의 수행속도에 거의 영향을 미치지 못하므로 이 알고리듬은 전체적으로 다른 알고리듬에 비해 매우 좋은 성능을 보여준다.
본 발명은 몽고메리 알고리듬을 이용하여 공개키 암호/복호 및 디지털 서명에 이용되는 모듈러 멱승 및 모듈러 곱셈 연산을 효율적으로 수행할 수 있으며, 그 구성이 간단한 모듈러 연산장치 및 그 방법을 제공함을 그 목적으로 한다.
도 1은 본 발명에 의한 모듈러 연산장치의 블록 구성도이다.
도 2는 도 1의 모듈러 연산장치에서의 타이밍도이다.
상기의 목적을 달성하기 위하여, 본 발명에 의한 모듈러 연산 A·B·2-kmod N 을 계산하는 장치는 k비트의 저장용량을 지니고, 상기 A값을 병렬로 입력받고, 소정의 클럭마다 w비트 단위로 하위비트 방향으로 쉬프트하며, 최하위 w비트를 병렬로 출력하는 A메모리수단; k비트의 저장용량을 지니고, 상기 B값을 병렬로 입력받고, 소정의 클럭마다 w비트 단위로 하위비트 방향으로 로테이트하며, 최하위 w비트를 병렬로 출력하는 B메모리수단; k비트의 저장용량을 지니고, 상기 N값을 병렬로 입력받고, 소정의 클럭마다 w비트 단위로 하위비트 방향으로 로테이트하며, 최하위 w비트를 병렬로 출력하는 N메모리수단; 두 개의 w비트의 값을 병렬로 입력받아 곱한 2w비트의 결과를 병렬로 출력하는 곱셈기; 두 개의 2w비트의 값을 병렬로 입력받아 더한 결과를 병렬로 출력하는 덧셈기; k+2w비트의 저장용량을 지니고, 한 클럭 내에 그 중 2w비트를 결정하여 상기 덧셈기로 출력하고, 상기 덧셈기로부터 입력된 값을 출력한 비트의 위치에 저장하는 누산기; w비트의 저장용량을 지니고, 미리 계산된 N0 -1mod 2w를 병렬로 입력받고 병렬로 출력하는 J메모리수단(여기에서 N0는 N의 최하위 w비트이다); w비트의 저장용량을 지니고, 상기 곱셈기의 출력으로부터 상위 w비트를 병렬로 입력받고 병렬로 출력하는 q메모리수단; 상기 J메모리수단, 상기 B메모리수단 및 상기 N메모리수단의 w비트 출력들 중에서 하나의 출력을 선택하여 상기 곱셈기에 전달하는 제1선택수단; 상기 A메모리수단, 상기 q메모리수단 및 상기 누산기의 w비트 출력들 중에서 하나의 출력을 선택하여 상기 곱셈기에 전달하는 제2선택수단; 및 상기 q메모리수단 및 상기 덧셈기 중에서 하나를 선택하여 상기 곱셈기의 출력을 전달하는 제3선택수단을 포함함을 특징으로 한다(여기에서, k = w·s이고, k,w,s는 모두 2이상의 정수).
상기의 다른 목적을 달성하기 위하여, 본 발명에 의한 모듈러 연산장치를 이용하여 모듈러 연산 A·B·2-kmod N 을 계산하는 방법은 (a) k비트인 A,B,N을 각각 상기 A메모리수단, 상기 B메모리수단 및 상기 N메모리수단에 저장하고, N0 -1mod 2w를 미리 계산하여 상기 J메모리수단에 저장하고, 상기 누산기를 '0'으로 초기화하는 단계; (b) (b.1) 상기 곱셈기가 상기 A메모리수단에 저장된 최하위 w비트의 A0와 상기 B메모리수단에 저장된 최하위 w비트의 B0의 곱셈을 수행하는 단계; 및 (b.2) 상기 덧셈기가 상기 곱셈기의 계산한 결과와 상기 누산기의 2w비트의 SiSi-1(단, i는 반복회수를 나타낸다)에 저장된 값과 더하여, 상기 누산기의 SiSi-1(단, i는 반복회수를 나타낸다)에 저장하는 단계를 수행하되, 매 클럭마다 상기 B메모리수단을 w비트 하위비트측으로 쉬프트시키고, 상기 누산기의 입출력되는 위치를 w비트 상위비트측으로 이동하면서 s번 반복 수행하여 A0B 값을 계산하는 단계; (c) 상기 곱셈기가 상기 누산기의 최하위 w비트 S0와 상기 J메모리수단의 J0을 곱하여 상기 q메모리수단에 저장하는 단계; (d) (d.1) 상기 곱셈기가 상기 N메모리수단에 저장된 최하위 w비트의 N0와 상기 q메모리수단에 저장된 q0의 곱셈을 수행하는 단계; 및 (d.2) 상기 덧셈기가 상기 곱셈기의 계산한 결과와 상기 누산기의 2w비트의 SiSi-1(단, i는 반복회수를 나타낸다)에 저장된 값과 더하여, 상기 누산기의 SiSi-1(단, i는 반복회수를 나타낸다)에 저장하는 단계를 수행하되, 매 클럭마다 상기 N메모리수단을 w비트 하위비트측으로 쉬프트시키고, 상기 누산기의 입출력되는 위치를 w비트 상위비트측으로 이동하면서 s번 반복 수행하여 q0N 값을 계산하는 단계; (e) 상기 누산기에 저장된 값을 w비트 하위비트측으로 쉬프트하는 단계; (f) 상기 A메모리수단에 저장된 A 값을 w비트 하위비트측으로 쉬프트하면서, 상기 (b) 단계 내지 상기 (e) 단계를 s번 수행하는 단계; 및 (g) 상기 누산기에 저장된 값이 N보다 크면, S = S - N을 수행하는 단계를 포함함을 특징으로 하는 모듈러 연산방법.
이하에서 첨부된 도면을 참조하여 본 발명을 상세히 설명한다.
본 발명은 각각 k비트인 수
에 대하여 몽고메리 알고리듬을 이용하여 A·B mod N을 효율적으로 구현하기 위한 것이다. 이때, A,B,N은 각각 으로 나타낼 수 있는 큰 수이고, w비트인 워드 s개로 나타낼 수 있다. 즉, r=2w일 때, k=s·w이고, k,w,s는 모두 2이상의 정수이다. 몽고메리 함수 fm(A,B,N)은 A·B·R-1mod N을 계산하는 함수이다(단, R=2k).
몽고메리 함수 fm(·)을 이용하여 모듈러 곱셈 A·B mod N을 수행하기 위해서는 P=R2mod N을 계산하여 미리 저장해 두며, T = fm(A,B,N) = A·B·R-1mod N을 계산한 후, P·T·R-1mod N = A·B mod N으로 계산할 수 있다.
몽고메리 알고리듬에 의하면, T = fm(A,B,N) = A·B·R-1mod N은 다음처럼 계산할 수 있다. 단, r = 2w, R = rs, J0≡ N0 -1mod r이고, S는 중간값을 저장하는 누산기(accumulator)이다.
S = 0
for i = 0 to s-1
S = S + Ai× B
qi= S0× J0mod r
S = S + qi× N
S = S/2w
endfor
if S > N then S = S - N
본 발명은 상기 알고리듬을 하드웨어적으로 구현하기 위해 몇 개의 레지스터(또는 메모리), MUX, w비트의 병렬곱셈기, 2w비트의 덧셈기를 이용하는 방법을 제안하고 있다.
도 1에 의하면, 본 발명에 의한 모듈러 연산장치는 하드웨어의 복잡도를 최소화하기 위하여 곱셈기와 덧셈기를 각각 하나씩만 사용하여 구성하였다.
A메모리수단(10), B메모리수단(12) 및 N메모리수단(14)은 각각 k비트의 레지스터 또는 유사한 형태의 메모리로 구현되며, 각 클럭마다 한 워드 단위인 w비트 단위로 A메모리수단(10)은 오른쪽으로 쉬프트(shift)하며, B메모리수단(12) 및 N메모리수단(14)은 각각 오른쪽으로 로테이트(rotate)한다.
누산기(20)는 k+2w비트의 레지스터로서, 계산 과정의 임시값을 저장하며, 한 클럭 내에 덧셈기(18)와 상호 2w비트 단위로 읽기와 쓰기를 한다.
J메모리수단(22)은 미리 계산된 값을 저장하는 w비트의 레지스터 또는 유사한 형태의 메모리로 구현되고, q메모리수단(24)은 매 클럭마다 계산되는 값을 저장하는 w비트의 레지스터 또는 유사한 형태의 메모리로 구현된다.
곱셈기(16)는 두 개의 w비트의 값을 병렬로 입력받아 2w비트의 결과를 한 클럭에 계산하는 것이다.
참조번호 26, 28은 각각 멀티플렉서이고, 참조번호 30은 디멀티플렉서이다.
이하에서 본 발명에 의한 모듈러 연산장치의 동작을 설명한다.
본 발명에 의한 모듈러 연산장치는 각각 w비트인 워드 s개로 이루어진 A, B, N을 입력받아 s·(2s+4)클럭 내에 A·B·R-1mod N을 계산한다.
도 1은 T = fm(A,B,N) = A·B·R-1mod N을 계산하기 위한 회로로서, 다음의 알고리듬을 바탕으로 하고 있다.
S = 0
for i = 0 to s-1
for j = 0 to s-1
S = S + Ai× Bj
endfor
qi= S0× J0mod r
for j = 0 to s-1
S = S + qi× Nj
endfor
S = S/2w
endfor
if S > N then S = S - N
다음은 도 1을 바탕으로 T = fm(A,B,N) = A·B·R-1mod N을 계산하는 과정을 설명한다.
(a) 먼저, 초기화단계로서 k비트인 A,B,N을 각각 A메모리수단(10), B메모리수단(12) 및 N메모리수단(14)에 저장한다. 누산기(20)은 '0'으로 초기화한다.
(b) 각각의 메모리수단(10, 12, 14)에 모든 데이터가 입력되었을 때, 제1멀티플렉서(26)는 B메모리수단(12)에 저장된 w비트의 B0, 제2멀티플렉서는 A메모리수단(10)에 저장된 w비트의 A0를 선택한다.
(c) 곱셈기(16)는 A0와 B0에 저장된 값을 병렬 입력하여 곱셈을 수행하고, 그 결과인 A0×B0는 디멀티플렉서(30)에 의해 선택된 덧셈기(18)로 전달되어 누산기(20)의 2w비트의 SiSi-1(단, i는 반복회수를 나타낸다)에 저장된 값과 더하여진다. 이때 더한 결과값은 다음 클럭에 누산기(20)의 SiSi-1(단, i는 반복회수를 나타낸다)에 저장되고, 다음의 덧셈을 위하여 캐리(carry)값은 보관된다.
(d) 매 클럭마다 B메모리수단(12)를 w비트 오른쪽으로 쉬프트시키고 (b)와 (c)의 과정을 s번 반복 수행하여 A0B 값을 계산한다. 이 과정 중 누산기(20)가 덧셈기(18)과 주고 받는 데이터는 매 클럭마다 w비트 단위로 상위비트측으로 이동한다.
(e) A0B 값을 계산한 후, 제2멀티플렉서를 이용하여 S0값을 선택하고, 제1멀티플렉서를 이용하여 J0값을 선택하여 s번째 클럭에서 곱셈기(16)에 의해 q0값을 계산한 후, 그 다음 클럭에 디멀티플렉서(30)에 의해 선택된 q메모리수단(24)에 저장한다.
(f) 제1멀티플렉서는 N메모리수단(14)에 저장된 N을 선택하고, 제2멀티플렉서는 q메모리수단(24)에 저장된 q0값을 선택한다.
(g) 다른 s클럭 동안 (b)~(d) 과정에서 A0B를 계산하는 것과 비슷하게 q0N을 계산한다.
(h) 누산기(20)에 저장된 값을 한 워드 단위인 w비트 오른쪽으로 쉬프트한다.
(i) A메모리수단(10)에 저장된 A 값을 한 워드 단위인 w비트 오른쪽으로 쉬프트하면서, (b)~(h) 과정을 s번 수행하면, 누산기(20)에는 T = fm(A,B,N) = A·B·R-1mod N 값이 저장된다.
(j) 누산기(20)에 저장된 값이 N보다 크면 S = S - N을 수행한다.
본 발명에서 메모리수단을 제외한 모든 소자는 단순한 조합회로로 구현되므로 회로의 잘못된 동작을 방지하기 위하여 연결된 조합회로의 전파지연시간을 충분히 보장하는 정도의 클럭을 제공하여야 한다.
도 2에는 이러한 계산과정의 타이밍 관계가 도시되어 있다.
따라서, 본 발명에 의한 모듈러 연산장치를 이용하여 모듈러 곱셈 A·B mod N을 계산하는 과정은 다음과 같다.
(1) 먼저, 미리 P = 22kmod N을 계산해 둔다.
(2) 다음, 도 1에 도시된 회로를 이용하여 C = A·B·2-kmod N을 계산한다.
(3) 마지막으로, P·C·2-kmod N = A·B mod N을 계산한다.
도 1의 모듈러 연산장치를 이용하여 모듈러 멱승 memod N을 계산하는 과정은 다음과 같다.
(1) 지수 e를 레지스터 또는 유사한 형태의 메모리에 저장한다.
(2) 레지스터 N에 법 N을 저장한다.
(3) 누산기 S를 '0'으로 초기화한다.
(4) 몽고메리 모듈러 곱셈 m′=fm(m,P,N)=m·P·R-1mod N 을 수행한다. 단, 멱승 연산의 밑 P는 모듈러 곱셈을 계산하는 과정 중 (1)에서 미리 계산한 값과 동일한 값이다.
(5) m'을 레지스터 B에 로드한다.
(6) 레지스터 B에 로드된 값을 이용하여 모듈러 제곱 연산을 수행한다. 이때, 몽고메리 모듈러 곱셈에 필요한 A는 레지스터 B에서 로드한다.
(7) 지수 e의 최상위비트(Most Significant Bit:MSB)인 '1'을 무시하고, 다음 비트를 현재비트로 한다.
(8) 레지스터 B에 저장된 값을 승수 및 피승수로 하여 모듈러 제곱 연산을 수행한다. 결과값은 레지스터 B에 로드한다.
(9) 지수 e의 현재비트가 '1'인 경우에는 멱승 연산의 밑 m'을 승수로하고, 레지스터 B의 값을 피승수로 하여 모듈러 곱셈 연산을 수행한다. 결과값은 레지스터 B에 로드한다.
(10) 지수 e의 모든 비트에 대하여 단계 (8) 내지 단계 (9)를 수행한 후, 1을 승수로 하고, 레지스터 B의 값을 피승수로 하여 모듈러 곱셈 연산을 수행한다.
단계 (1) 내지 단계 (10)을 수행한 후, 누산기 S에 남아 있는 값이 최종적인 모듈러 멱승 memod N이 된다.
본 발명에 의하면, 디지털 서명기기, 공개키 암호화/복호화기기에서 필요로 하는 모듈러 곱셈 또는 모듈러 멱승을 계산하기 위한 회로인 A·B·2-kmod N을 계산하는 회로를 간단하게 구현함으로써 디지털 서명기기 및 공개키 암호화/복호화기기 제작에 요구되는 비용을 줄일 수 있다.

Claims (4)

  1. 모듈러 연산 A·B·2-kmod N 을 계산하는 장치에 있어서,
    k비트의 저장용량을 지니고, 상기 A값을 병렬로 입력받고, 소정의 클럭마다 w비트 단위로 하위비트 방향으로 쉬프트하며, 최하위 w비트를 병렬로 출력하는 A메모리수단;
    k비트의 저장용량을 지니고, 상기 B값을 병렬로 입력받고, 소정의 클럭마다 w비트 단위로 하위비트 방향으로 로테이트하며, 최하위 w비트를 병렬로 출력하는 B메모리수단;
    k비트의 저장용량을 지니고, 상기 N값을 병렬로 입력받고, 소정의 클럭마다 w비트 단위로 하위비트 방향으로 로테이트하며, 최하위 w비트를 병렬로 출력하는 N메모리수단;
    두 개의 w비트의 값을 병렬로 입력받아 곱한 2w비트의 결과를 병렬로 출력하는 곱셈기;
    두 개의 2w비트의 값을 병렬로 입력받아 더한 결과를 병렬로 출력하는 덧셈기;
    k+2w비트의 저장용량을 지니고, 한 클럭 내에 그 중 2w비트를 결정하여 상기 덧셈기로 출력하고, 상기 덧셈기로부터 입력된 값을 출력한 비트의 위치에 저장하는 누산기;
    w비트의 저장용량을 지니고, 미리 계산된 N0 -1mod 2w를 병렬로 입력받고 병렬로 출력하는 J메모리수단(여기에서 N0는 N의 최하위 w비트이다);
    w비트의 저장용량을 지니고, 상기 곱셈기의 출력으로부터 상위 w비트를 병렬로 입력받고 병렬로 출력하는 q메모리수단;
    상기 J메모리수단, 상기 B메모리수단 및 상기 N메모리수단의 w비트 출력들 중에서 하나의 출력을 선택하여 상기 곱셈기에 전달하는 제1선택수단;
    상기 A메모리수단, 상기 q메모리수단 및 상기 누산기의 w비트 출력들 중에서 하나의 출력을 선택하여 상기 곱셈기에 전달하는 제2선택수단; 및
    상기 q메모리수단 및 상기 덧셈기 중에서 하나를 선택하여 상기 곱셈기의 출력을 전달하는 제3선택수단을 포함함을 특징으로 하는 모듈러 연산장치(여기에서, k = w·s이고, k,w,s는 모두 2이상의 정수).
  2. 제1항에 있어서, 상기 덧셈기 및 상기 곱셈기는 각각
    한 클럭 내에 덧셈 및 곱셈을 수행하는 것을 특징으로 하는 모듈러 연산장치.
  3. 제1항에 있어서, 상기 제1선택수단 및 상기 제2선택수단은 각각
    멀티플렉서이고,
    상기 제3선택수단은
    디멀티플렉서임을 특징으로 하는 모듈러 연산장치.
  4. 청구항 1의 모듈러 연산장치를 이용하여 모듈러 연산 A·B·2-kmod N 을 계산하는 방법에 있어서,
    (a) k비트인 A,B,N을 각각 상기 A메모리수단, 상기 B메모리수단 및 상기 N메모리수단에 저장하고, N0 -1mod 2w를 미리 계산하여 상기 J메모리수단에 저장하고, 상기 누산기를 '0'으로 초기화하는 단계;
    (b) (b.1) 상기 곱셈기가 상기 A메모리수단에 저장된 최하위 w비트의 A0와 상기 B메모리수단에 저장된 최하위 w비트의 B0의 곱셈을 수행하는 단계; 및
    (b.2) 상기 덧셈기가 상기 곱셈기의 계산한 결과와 상기 누산기의 2w비트의 SiSi-1(단, i는 반복회수를 나타낸다)에 저장된 값과 더하여, 상기 누산기의 SiSi-1(단, i는 반복회수를 나타낸다)에 저장하는 단계를 수행하되, 매 클럭마다 상기 B메모리수단을 w비트 하위비트측으로 쉬프트시키고, 상기 누산기의 입출력되는 위치를 w비트 상위비트측으로 이동하면서 s번 반복 수행하여 A0B 값을 계산하는 단계
    (c) 상기 곱셈기가 상기 누산기의 최하위 w비트 S0와 상기 J메모리수단의 J0을 곱하여 상기 q메모리수단에 저장하는 단계;
    (d) (d.1) 상기 곱셈기가 상기 N메모리수단에 저장된 최하위 w비트의 N0와 상기 q메모리수단에 저장된 q0의 곱셈을 수행하는 단계; 및
    (d.2) 상기 덧셈기가 상기 곱셈기의 계산한 결과와 상기 누산기의 2w비트의 SiSi-1(단, i는 반복회수를 나타낸다)에 저장된 값과 더하여, 상기 누산기의 SiSi-1(단, i는 반복회수를 나타낸다)에 저장하는 단계를 수행하되, 매 클럭마다 상기 N메모리수단을 w비트 하위비트측으로 쉬프트시키고, 상기 누산기의 입출력되는 위치를 w비트 상위비트측으로 이동하면서 s번 반복 수행하여 q0N 값을 계산하는 단계;
    (e) 상기 누산기에 저장된 값을 w비트 하위비트측으로 쉬프트하는 단계;
    (f) 상기 A메모리수단에 저장된 A 값을 w비트 하위비트측으로 쉬프트하면서, 상기 (b) 단계 내지 상기 (e) 단계를 s번 수행하는 단계; 및
    (g) 상기 누산기에 저장된 값이 N보다 크면, S = S - N을 수행하는 단계를 포함함을 특징으로 하는 모듈러 연산방법.
KR1019980019040A 1998-05-26 1998-05-26 모듈러연산장치및그방법 KR100486697B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1019980019040A KR100486697B1 (ko) 1998-05-26 1998-05-26 모듈러연산장치및그방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1019980019040A KR100486697B1 (ko) 1998-05-26 1998-05-26 모듈러연산장치및그방법

Publications (2)

Publication Number Publication Date
KR19990086179A true KR19990086179A (ko) 1999-12-15
KR100486697B1 KR100486697B1 (ko) 2005-06-16

Family

ID=37303051

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019980019040A KR100486697B1 (ko) 1998-05-26 1998-05-26 모듈러연산장치및그방법

Country Status (1)

Country Link
KR (1) KR100486697B1 (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100417136B1 (ko) * 2001-04-13 2004-02-05 한국전자통신연구원 다항식 기저에서 유한체 승산 장치 및 그 방법
KR100428755B1 (ko) * 2001-08-31 2004-04-30 주식회사 현대시스콤 비트 슬라이스 모듈러 곱셈기
KR100449491B1 (ko) * 2001-12-11 2004-09-21 한국전자통신연구원 모듈러 곱셈 장치

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101925868B1 (ko) 2012-05-17 2018-12-06 삼성전자주식회사 모듈러 계산 유닛 및 그것을 포함하는 보안 시스템

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5313530A (en) * 1991-03-05 1994-05-17 Canon Kabushiki Kaisha Calculating apparatus and method of encrypting/decrypting communication data by using the same
IL101623A (en) * 1992-04-16 1997-06-10 Fortress U & T 2000 Ltd Digital signature device
JPH0720778A (ja) * 1993-07-02 1995-01-24 Fujitsu Ltd 剰余計算装置、テーブル作成装置および乗算剰余計算装置
JPH07152319A (ja) * 1993-11-30 1995-06-16 Canon Inc 暗号化装置
KR19980014833A (ko) * 1996-08-16 1998-05-25 정명식 공개키 암호시스템을 위한 효율적인 모듈라 곱셈 방법

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100417136B1 (ko) * 2001-04-13 2004-02-05 한국전자통신연구원 다항식 기저에서 유한체 승산 장치 및 그 방법
KR100428755B1 (ko) * 2001-08-31 2004-04-30 주식회사 현대시스콤 비트 슬라이스 모듈러 곱셈기
KR100449491B1 (ko) * 2001-12-11 2004-09-21 한국전자통신연구원 모듈러 곱셈 장치

Also Published As

Publication number Publication date
KR100486697B1 (ko) 2005-06-16

Similar Documents

Publication Publication Date Title
JP3636740B2 (ja) モジュラ・乗算を遂行するための超小形電子系装置、および超小形電子系装置を使用する方法
US6397241B1 (en) Multiplier cell and method of computing
US7277540B1 (en) Arithmetic method and apparatus and crypto processing apparatus for performing multiple types of cryptography
JP3525209B2 (ja) べき乗剰余演算回路及びべき乗剰余演算システム及びべき乗剰余演算のための演算方法
EP1421472B1 (en) A method and apparatus for carrying out efficiently arithmetic computations in hardware
EP0890147B1 (en) Co-processor for performing modular multiplication
JP2004501396A (ja) 整数の計算フィールド範囲の拡張
KR100591761B1 (ko) 몽고메리 모듈러 곱셈기 및 캐리 저장 가산을 이용한몽고메리 모듈러 곱셈 방법
JP2004326112A (ja) マルチプルモジュラス選択器、累算器、モンゴメリー掛け算器、マルチプルモジュラス発生方法、部分掛け発生方法、累算方法、掛け算方法、モジュラス選択器、およびブースレコーダ
EP0502782A2 (en) Microcircuit for the implementation of RSA algorithm and ordinary and modular arithmetic, in particular exponentiation, with large operands
US5121429A (en) Digital signal processing
US7412474B2 (en) Montgomery modular multiplier using a compressor and multiplication method
Gutub et al. Scalable VLSI architecture for GF (p) Montgomery modular inverse computation
Koç et al. Fast algorithm for modular reduction
Sakiyama et al. Reconfigurable modular arithmetic logic unit for high-performance public-key cryptosystems
Morita A fast modular-multiplication algorithm based on a higher radix
KR100486697B1 (ko) 모듈러연산장치및그방법
Wang et al. New VLSI architectures of RSA public-key cryptosystem
KR100322740B1 (ko) 모듈러 연산장치 및 그 방법
WO2000038047A1 (en) Circuit and method of cryptographic multiplication
WO2023043467A1 (en) A method and architecture for performing modular addition and multiplication sequences
Findlay et al. Modular exponentiation using recursive sums of residues
GB2318892A (en) Co-processor for performing modular multiplication
KR100946256B1 (ko) 다정도 캐리 세이브 가산기를 이용한 듀얼필드상의확장성있는 몽고매리 곱셈기
Subudhi et al. Implementation of vedic divider on RSA cryptosystem

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

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee