KR100459732B1 - 4-2 컴프레서를 이용한 몽고메리 모듈러 승산기 및 그승산 방법 - Google Patents

4-2 컴프레서를 이용한 몽고메리 모듈러 승산기 및 그승산 방법 Download PDF

Info

Publication number
KR100459732B1
KR100459732B1 KR10-2002-0087243A KR20020087243A KR100459732B1 KR 100459732 B1 KR100459732 B1 KR 100459732B1 KR 20020087243 A KR20020087243 A KR 20020087243A KR 100459732 B1 KR100459732 B1 KR 100459732B1
Authority
KR
South Korea
Prior art keywords
bit
value
adder
carry
carry propagation
Prior art date
Application number
KR10-2002-0087243A
Other languages
English (en)
Other versions
KR20040060445A (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 KR10-2002-0087243A priority Critical patent/KR100459732B1/ko
Priority to US10/660,476 priority patent/US7412474B2/en
Priority to FR0314199A priority patent/FR2849512B1/fr
Priority to DE10357661A priority patent/DE10357661B4/de
Priority to FR0403488D priority patent/FR2867580B1/fr
Priority to FR0403488A priority patent/FR2851348A1/fr
Publication of KR20040060445A publication Critical patent/KR20040060445A/ko
Application granted granted Critical
Publication of KR100459732B1 publication Critical patent/KR100459732B1/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/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

Abstract

4-2 컴프레서를 이용한 몽고메리 모듈러 승산기 및 그 승산 방법이 개시된다. 상기 몽고메리 모듈러 승산기는, A, B, 모듈러 계수 M, 캐리 C, 합산 수 S 각각의 비트 값, ai, bi, mi, ci, 및 si을 저장하는 레지스터들을 구비하고, "mod M"에 대하여 "ABR-1"의 컨그루언트를 계산하는 몽고메리 모듈러 승산기로서, 먼저, biA 계산 논리 회로가 상기 A와 상기 bi를 승산하여, 비트별로 biA를 출력한다. 이때, qi계산 논리 회로는 "s0XOR c0XOR (biAND a0)"를 연산하여, 그 결과 값 qi를 출력하고, qiM 계산 논리 회로는 상기 M과 상기 qi를 승산하여, 비트별로 qiM을 출력한다. 이에 따라, 4-2 컴프레서는 캐리 전파 애더 신호(ONCPA)에 따라, 캐리 저장 애더 구조(CSA)에 의하여 상기 S의 중간 계산 값 및 상기 C의 중간 계산 값을 비트별로 계산하고, 캐리 전파 애더 구조(CPA)에 의하여 상기 중간 계산 값들을 합산하여 상기 S의 최종 결과와 상기 C의 최종 결과를 S 및 C 레지스터에 출력한다. 따라서, 연산 속도가 빠르고 파워-딜레이 곱(power-delay product)이 작아 몽고메리 모듈러 승산 알고리즘 연산 성능을 향상시키는 효과가 있다.

Description

4-2 컴프레서를 이용한 몽고메리 모듈러 승산기 및 그 승산 방법{Montgomery modular multiplier by 4 to 2 compressor and multiplication method thereof}
본 발명은 공개키(public key) 암호 시스템(crypto system)에 관한 것으로, 특히 몽고메리(Montgomery) 모듈러 승산기(modular multiplier)에 관한 것이다.
스마트 카드, IC 카드 등을 통한 통신에 사용되는 암호 시스템(crypto system)은, 비밀키 방식에서 공개키(public key) 방식으로 발전해왔다. 비밀키 방식에서는 통신하고자 하는 두 사용자가 동일한 비밀키를 공유해야 하므로 키 관리가 어렵고 디지털 서명을 구현하기 어려운 반면, 공개키(public key) 방식에서는 비밀키만 각 사용자가 보관하고, 공개된 상대방의 공개키(public key)를 알고있는 사용자는 누구든지 그 상대방과 통신을 할 수 있어서 비밀 통신의 편리함을 제공한다.
공개키(public key) 암호 시스템(crypto system)에는 RSA(Ron Rivest, Adi Shamir, and Len Adleman), 디피와 헬만(Diffie-Hellman), DSA(Digital Signature Algorithm), 및 ECC(Elliptic Curve Cryptosystem) 등이 있다. 이와 같은 공개키(public key) 암호 시스템(crypto system)은, 모듈러 멱승(modular exponentiation) 연산을 위한 모듈러 승산(modular multiplication)을 기본 연산으로 하고 있다. 따라서, 공개키(public key) 암호 시스템(crypto system)에는 반드시 모듈러 승산기(modular multiplier)가 채용된다.
모듈러 승산(modular multiplication)을 하기에 가장 효과적인 알고리즘은 몽고메리(Montgomery) 모듈러 승산(modular multiplication) 알고리즘으로 알려져있다. 몽고메리(Montgomery) 모듈러 승산(modular multiplication) 알고리즘을 슈도 코드(pseudo code)로 표시하면, [알고리즘 1]과 같다.
[알고리즘 1]
Stimulus:
A = (an-1an-2... a1a0)2, and A < M
B = (bn-1bn-2... b1b0)2, and B < M
M = (mn-1mn-2... m1m0)2, and M is odd.
Response:
S = (SnSn-1Sn-2... S1S0)2≡ ABR-1(mod M)
Method:
S := 0
for i:= 0 to n-1 do
qi:= s0XOR (biAND a0)
S:= (S + biA + qiM)/2
endfor
즉, [알고리즘 1]에서, "for" 루프 안에서 계산되는 최종 S(sum)([알고리즘 1]에서 캐리를 Sn으로 표시함)가, "mod M"에 대하여 "ABR-1"의컨그루언트(congruent)를 연산한 결과 값으로 된다. 여기서, "mod M" 대한 모듈러 곱 역수인 "R-1"은, R=2n일 때, "(R*R-1) mod M" 값이 "1"로 되도록 하는 수이다.
이와 같은 몽고메리(Montgomery) 모듈러 승산(modular multiplication) 알고리즘에서는, 나눗셈 없이 주어진 수들(A,B,M)을 곱셈만으로 연산하는 알고리즘으로서, 다른 알고리즘에 비해 속도가 빠르므로 모듈러 멱승(modular exponentiation) 연산이 필요한 공개키(public key) 암호 시스템(crypto system) 구현 시 가장 널리 이용된다.
이와 같은 몽고메리(Montgomery) 모듈러 승산(modular multiplication) 알고리즘을 적용하는 종래의 몽고메리(Montgomery) 모듈러 승산기(modular multiplier)는, 캐리 전파 애더(carry propagation adder)를 기본 누산기(accumulator) 구조로 사용하는 패러렐 승산기(parallel multiplier) 형태이거나 3-2(3 inputs to 2outputs) 컴프레서(compressor), 즉, 풀 애더(full adder)로 이루어지는 캐리 저장 애더(carry save adder)를 기본 누산기(accumulator) 구조로 사용하는 시리얼 승산기(serial multiplier) 형태 등으로 되어있다.
그러나, 각 비트의 합산마다 캐리(carry)를 전달하기 위한 한 클럭씩의 전파 지연 시간을 필요로 하는 캐리 전파 애더(carry propagation adder) 구조는, 캐리(carry)의 전파 지연시간을 무한정 크게 할 수 없으므로 32-비트 이상의 수들에 대한 승산을 수행하기 어려운 문제가 있다. 즉, 캐리 전파 애더(carry propagation adder) 구조는 캐리 저장 애더(carry save adder) 구조에 비하여파워-딜레이 곱(power-delay product)이 크고, 32-비트 이상의 큰 수들에 대한 승산을 수행하기 위하여는, 32-비트 수와 32-비트 수를 반복적으로 승산하는 방법으로 수행해야 하는 문제가 있다.
한편, 각 비트마다 별도로 필요한 모든 합산을 비트 수만큼의 클럭에 수행하여 전파 지연 시간을 제거한 3-2 컴프레서(compressor), 즉, 풀 애더(full adder)를 사용하는 캐리 저장 애더(carry save adder) 구조의 승산기는, 전파 지연 시간 문제가 없으나, 하드웨어로의 구현이 용이하지 않은 문제가 있다. 즉, [알고리즘 1]과 같은 몽고메리(Montgomery) 모듈러 승산(modular multiplication) 알고리즘에서, 합산 할 워드(word)는 4개(캐리, S, biA, qiM)인데, 3-2 컴프레서(compressor)에 입력 가능한 수는 3개뿐이므로, 2개의 주 입력 워드(word)(biA, qiM)를 미리 더해두는 과정이 필요하다는 문제가 있다. 또한, 3-2 컴프레서(compressor)에서 합산 될 때에는, 캐리(carry), S(sum), 및 4개(캐리, S, biA, qiM)의 워드(word) 중 선택된 어느 하나의 워드(word)가 입력되어야 하므로, 4개의 워드(word)(캐리, S, biA, qiM) 중 어느 하나의 워드(word)를 선택하기 위한 4:1 먹스(multiplexer)도 필요하다는 문제가 있다.
따라서, 본 발명이 이루고자하는 기술적 과제는, 몽고메리(Montgomery) 모듈러 승산(modular multiplication)에 있어서, 4개의 워드(word)(캐리, S, biA, qiM)에 대하여 각 비트마다 별도로 필요한 모든 합산을 먼저 수행하는 캐리 저장 애더(carry save adder) 구조로 전파 지연 시간을 제거하고, 최종 출력에서만 캐리 전파 애더(carry propagation adder) 구조로 합산을 수행하여, 연산 속도가 빠르고 파워-딜레이 곱(power-delay product)이 작은 몽고메리(Montgomery) 모듈러 승산기(modular multiplier)를 제공하는 데 있다.
본 발명이 이루고자하는 다른 기술적 과제는, 몽고메리(Montgomery) 모듈러 승산(modular multiplication)에 있어서, 4개의 워드(word)(캐리, S, biA, qiM)에 대하여 각 비트마다 별도로 필요한 모든 합산을 먼저 수행하는 캐리 저장 애더(carry save adder) 구조로 전파 지연 시간을 제거하고, 최종 출력에서만 캐리 전파 애더(carry propagation adder) 구조로 합산을 수행하여, 연산 속도가 빠르고 파워-딜레이 곱(power-delay product)이 작은 몽고메리(Montgomery) 모듈러 승산(modular multiplication) 방법을 제공하는 데 있다.
본 발명의 상세한 설명에서 인용되는 도면을 보다 충분히 이해하기 위하여 각 도면의 간단한 설명이 제공된다.
도 1은 본 발명의 일실시예에 따른 몽고메리(Montgomery) 모듈러 승산기(modular multiplier)의 블록도이다.
도 2는 도 1의 4-2 컴프레서(compressor)와 그 주변 회로의 구체적인 블록도이다.
도 3은 본 발명의 일실시예에 따른 몽고메리(Montgomery) 모듈러 승산기(modular multiplier)의 동작 설명을 위한 흐름도이다.
도 4는 본 발명의 일실시예에 따른 몽고메리(Montgomery) 모듈러 승산기(modular multiplier)의 캐리 저장 애더(carry save adder) 동작 설명을 위한 도면이다.
도 5는 본 발명의 일실시예에 따른 몽고메리(Montgomery) 모듈러 승산기(modular multiplier)의 캐리 전파 애더(carry propagation adder) 동작 설명을 위한 도면이다.
상기의 기술적 과제를 달성하기 위한 본 발명에 따른 몽고메리 모듈러 승산기는, "mod M"(여기서, M은 모듈러 계수)에 대하여 "ABR-1(여기서, A 및 B는 입력되는 n 비트 길이의 수, R-1은 "mod M"에 대한 R의 모듈러 곱 역수)"의 컨그루언트를 계산하는 몽고메리 모듈러 승산기에 있어서, A 레지스터, B 레지스터, M 레지스터, biA 계산 논리 회로, qi계산 논리 회로, qiM 계산 논리 회로, 4-2 컴프레서, S 레지스터, 및 C 레지스터를 구비한다.
상기 A 레지스터는 상기 M보다 작은 상기 A의 비트 값 ai(여기서, i는 "0"부터 "n-1"까지)을 저장한다.
상기 B 레지스터는 상기 M보다 작은 상기 B의 비트 값 bi(여기서, i는 "0"부터 "n-1"까지)을 저장한다.
상기 M 레지스터는 홀수인 상기 M의 비트 값 mi(여기서, i는 "0"부터 "n-1"까지)을 저장한다.
상기 biA 계산 논리 회로는 상기 A와 상기 bi를 승산하여, 비트별로 biA를 출력한다.
상기 qi계산 논리 회로는 불린 논리 방정식, "s0XOR c0XOR (biAND a0)(여기서, s0은 S의 LSB, c0는 C의 LSB, bi는 상기 B의 비트 값, a0은 상기 A의 LSB)"를 연산하고, 그 결과 값 qi(여기서, i는 "0"부터 "n-1"까지)를 출력한다.
상기 qiM 계산 논리 회로는 상기 M과 상기 qi를 승산하여, 비트별로 qiM을 출력한다.
상기 4-2 컴프레서는 캐리 전파 애더 신호에 따라, 캐리 저장 애더 구조에 의하여 상기 C, 상기 S, 상기 biA, 및 상기 qiM에 대하여 n번 합산하는 연산을 먼저 수행하여 상기 S의 중간 계산 값 및 상기 C의 중간 계산 값을 비트별로 계산하고,캐리 전파 애더 구조에 의하여 상기 중간 계산 값들을 합산하여 상기 S의 최종 결과와 상기 C의 최종 결과를 출력한다.
상기 S 레지스터는 상기 S의 비트 값 si(여기서, i는 "0"부터 "n-1"까지)을 업데이트 시켜 저장한다.
상기 C 레지스터는 상기 C의 비트 값 ci(여기서, i는 "0"부터 "n-1"까지)을 업데이트 시켜 저장한다.
여기서, 상기 4-2 컴프레서는, 제 1풀 애더, 먹스들, 및 제 2풀 애더를 구비한다.
상기 제 1풀 애더는 상기 biA 중 대응 비트 값, 상기 S의 si+1, 및 상기 C의 ci에 대한 합산을 수행하여, cAi, 및 sAi를 출력한다.
상기 먹스들은 상기 캐리 전파 애더 신호에 대응하여, 상기 qiM 중 대응 비트 값, 상기 sAi및 상기 cAi-1, 또는, 상기 S의 si+1, 상기 C의 ci및 상기 C의 ci-1을 선택적으로 출력한다.
상기 제 2풀 애더는 상기 캐리 전파 애더 신호가 비활성화 상태일 때, 상기 qiM 중 대응 비트 값, 상기 sAi및 상기 cAi-1에 대하여 n번 합산하는 연산을 먼저 수행하여 상기 S의 중간 계산 비트 값 si및 상기 C의 중간 계산 비트 값 ci을 비트별로 계산하고, 상기 캐리 전파 애더 신호가 액티브 상태일 때, 상기 S의 si+1, 상기C의 ci및 상기 C의 ci-1에 대한 합산을 수행하여, 상기 S의 최종 결과와 상기 C의 최종 결과를 출력한다.
상기 캐리 저장 애더 구조는, 상기 캐리 전파 애더 신호가 비활성화 상태일 때, 상기 제 1풀 애더와 상기 제 2풀 애더가 동시에 동작하여 4 입력 - 2 출력 구조로 동작하는 것을 특징으로 한다.
상기 캐리 전파 애더 구조는, 상기 캐리 전파 애더 신호가 액티브 상태일 때, 상기 제 2풀 애더만 동작하여 3 입력 - 2 출력 구조로 동작하는 것을 특징으로 한다.
상기 cAi-1과상기 ci-1은, 그 LSB 값들이 제 1논리 상태인 것을 특징으로 한다.
상기 si+1은, 그 MSB 값이, 상기 캐리 전파 애더 신호가 액티브 상태로 되기 전 클럭에서의 상기 cAn-1과 같은 것을 특징으로 한다.
상기의 다른 기술적 과제를 달성하기 위한 본 발명에 따른 몽고메리 모듈러 승산 방법은, A, B, 모듈러 계수 M, 캐리 C, 합산 수 S 각각의 비트 값, ai, bi, mi, ci, 및 si(여기서, i는 "0"부터 "n-1"까지)을 저장하는 레지스터들을 구비하고, "mod M"에 대하여 "ABR-1(여기서, A 및 B는 입력되는 n 비트 길이의 수, R-1은 "mod M"에 대한 R의 모듈러 곱 역수)"의 컨그루언트를 계산하는 몽고메리 모듈러 승산기의 몽고메리 모듈러 승산 방법에 있어서, 다음과 같은 단계를 구비한다.
즉, 본 발명에 따른 몽고메리 모듈러 승산 방법은, 상기 몽고메리 모듈러 승산기에 의하여 상기 A, 상기 B, 및 상기 M을 수신하는 단계; 상기 몽고메리 모듈러 승산기에 의하여 상기 A와 상기 bi를 승산하여, 비트별로 biA를 출력하는 단계; 상기 몽고메리 모듈러 승산기에 의하여 불린 논리 방정식, "s0XOR c0XOR (biAND a0)(여기서, s0은 S의 LSB, c0는 C의 LSB, bi는 상기 B의 비트 값, a0은 상기 A의 LSB)"를 연산하고, 그 결과 값 qi(여기서, i는 "0"부터 "n-1"까지)를 출력하는 단계; 상기 몽고메리 모듈러 승산기에 의하여 상기 M과 상기 qi를 승산하여, 비트별로 qiM을 출력하는 단계; 상기 몽고메리 모듈러 승산기에 의하여 캐리 전파 애더 신호에 따라, 캐리 저장 애더 구조에 의하여 상기 C, 상기 S, 상기 biA, 및 상기 qiM에 대하여 n번 합산하는 연산을 먼저 수행하여 상기 S의 중간 계산 값 및 상기 C의 중간 계산 값을 비트별로 계산하는 단계; 및 상기 몽고메리 모듈러 승산기에 의하여 캐리 전파 애더 신호에 따라, 캐리 전파 애더 구조에 의하여 상기 중간 계산 값들을 합산하여 상기 S의 최종 결과와 상기 C의 최종 결과를 출력하는 단계를 구비하는 것을 특징으로 한다.
여기서, 상기 A는, 상기 M 보다 작은 것을 특징으로 한다.
상기 B는, 상기 M 보다 작은 것을 특징으로 한다.
상기 M은, 홀수인 것을 특징으로 한다.
상기 S의 중간 계산 값, 상기 C의 중간 계산 값, 상기 S의 최종 결과 및 상기 C의 최종 결과는, 상기 biA 중 대응 비트 값, 상기 S의 si+1, 및 상기 C의 ci에 대한 합산을 수행하여, cAi, 및 sAi를 출력하는 단계; 상기 캐리 전파 애더 신호에 대응하여, 상기 qiM 중 대응 비트 값, 상기 sAi및 상기 cAi-1, 또는, 상기 S의 si+1, 상기 C의 ci및 상기 C의 ci-1을 선택적으로 출력하는 단계; 상기 캐리 전파 애더 신호가 비활성화 상태일 때, 상기 qiM 중 대응 비트 값, 상기 sAi및 상기 cAi-1에 대하여 n번 합산하는 연산을 먼저 수행하여 상기 S의 중간 계산 비트 값 si및 상기 C의 중간 계산 비트 값 ci을 비트별로 계산하는 단계; 및 상기 캐리 전파 애더 신호가 액티브 상태일 때, 상기 S의 si+1, 상기 C의 ci및 상기 C의 ci-1에 대한 합산을 수행하여 상기 S의 최종 결과와 상기 C의 최종 결과를 출력하는 단계를 구비하여 계산되는 것을 특징으로 한다.
상기 캐리 저장 애더 구조는, 상기 캐리 전파 애더 신호가 비활성화 상태일 때, 4 입력 - 2 출력 구조로 합산되어, 상기 biA 및 qiM으로부터, 상기 S의 중간 계산 값, 및 상기 C의 중간 계산 값을 계산하는 것을 특징으로 한다.
상기 캐리 전파 애더 구조는, 상기 캐리 전파 애더 신호가 액티브 상태일 때, 3 입력 - 2 출력 구조로 합산되어, 상기 S의 중간 계산 값, 및 상기 C의 중간 계산 값으로부터 상기 S의 최종 결과 및 상기 C의 최종 결과를 계산하는 것을 특징으로 한다.
상기 cAi-1과상기 ci-1은, 그 LSB 값들이 제 1논리 상태인 것을 특징으로 한다.
상기 si+1은, 그 MSB 값이, 상기 캐리 전파 애더 신호가 액티브 상태로 되기 전 클럭에서의 상기 cAn-1과 같은 것을 특징으로 한다.
본 발명과 본 발명의 동작상의 이점 및 본 발명의 실시에 의하여 달성되는 목적을 충분히 이해하기 위해서는 본 발명의 바람직한 실시예를 예시하는 첨부 도면 및 첨부 도면에 기재된 내용을 참조하여야만 한다.
이하, 첨부한 도면을 참조하여 본 발명의 바람직한 실시예를 설명함으로써, 본 발명을 상세히 설명한다. 각 도면에 제시된 동일한 참조부호는 동일한 부재를 나타낸다.
도 1은 본 발명의 일실시예에 따른 몽고메리(Montgomery) 모듈러 승산기(modular multiplier)의 블록도이다.
도 1을 참조하면, 본 발명의 일실시예에 따른 몽고메리(Montgomery) 모듈러 승산기(modular multiplier)는, "mod M"(여기서, M은 모듈러 계수)에 대하여 "ABR-1(여기서, A 및 B는 입력되는 n 비트 길이의 수, R-1은 "mod M"에 대한 R의 모듈러 곱 역수)"의 컨그루언트를 계산하는 몽고메리(Montgomery) 모듈러 승산기(modular multiplier)에 있어서, A 레지스터(110), B 레지스터(120), M 레지스터(130), biA 계산 논리 회로(140), qi계산 논리 회로(150), qiM 계산 논리 회로(160), 4-2 컴프레서(compressor)(170), S 레지스터(180), 및 C 레지스터(190)를 구비한다.
상기 A 레지스터(110)는 상기 M보다 작은 상기 A의 비트 값 ai(여기서, i는 "0"부터 "n-1"까지)을 저장한다. 즉, A는 입력되는 n 비트 길이의 수를 나타내는 하나의 워드(word)를 나타내고, ai는 상기 A를 구성하는 a0에서 an-1까지의 각 비트 값이다.
상기 B 레지스터(120)는 상기 M보다 작은 상기 B의 비트 값 bi(여기서, i는 "0"부터 "n-1"까지)을 저장한다. 즉, B는 입력되는 n 비트 길이의 수를 나타내는 하나의 워드(word)를 나타내고, bi는 상기 B를 구성하는 b0에서 bn-1까지의 각 비트 값이다.
상기 M 레지스터(130)는 홀수인 상기 M의 비트 값 mi(여기서, i는 "0"부터 "n-1"까지)을 저장한다. 즉, 모듈러 계수(modulus) M은 입력되는 n 비트 길이의 수를 나타내는 하나의 워드(word)를 나타내고, mi는 상기 M을 구성하는 m0에서 mn-1까지의 각 비트 값이다.
상기 biA 계산논리 회로(140)는 상기 A와 상기 bi를 승산하여, 비트별로 biA를 출력한다. 여기서, 비트별로 biA를 출력하는 것은, bia0에서 bian-1까지 n 비트의 값을 출력하는 것이다. 이때, i는 [알고리즘 1] 내의 "for" 루프를 수행하기 위하여 0에서 n-1까지 변하므로, 도 1에 도시된 바와 같이, "for" 루프 내의 알고리즘을 한번 수행할 때마다 오른쪽으로 한 비트씩 쉬프트(right shift) 하는 상기 B 레지스터(120)의 LSB(least significant bit)에서 bi값이 출력된다.
상기 qi계산 논리 회로(150)는, [알고리즘 1]의 "for" 루프 내에 있는 qi식을 계산하기 위하여, 불린(boolean) 논리 방정식, "s0XOR c0XOR (biAND a0)(여기서, s0은 S의 LSB, c0는 C의 LSB, bi는 상기 B의 비트 값, a0은 상기 A의 LSB)"를 연산하고, 그 결과 값 qi(여기서, i는 "0"부터 "n-1"까지)를 출력한다. 이때, i는 [알고리즘 1] 내의 "for" 루프를 수행하기 위하여 0에서 n-1까지 변하므로, 도 1에 도시된 바와 같이, "for" 루프 내의 알고리즘을 한번 수행할 때마다 오른쪽으로 한 비트씩 쉬프트(right shift) 하는 상기 B 레지스터(120)의 LSB(least significant bit)에서 bi 값이 출력된다. 이외에, s0, c0, 및 a0각각은 합산 값 S(sum), 캐리 C, 및 상기 A의 LSB 값이다.
상기 qiM 계산논리 회로(160)는 상기 M과 상기 qi를 승산하여, 비트별로 qiM을 출력한다. 여기서, 비트별로 qiM을 출력하는 것은, qim0에서 qimn-1까지 n 비트의 값을 출력하는 것이다. 이때, i는 [알고리즘 1] 내의 "for" 루프를 수행하기 위하여 0에서 n-1까지 변하므로, 도 1에 도시된 바와 같이, "for" 루프 내의 알고리즘을 한번 수행할 때마다 i는 1씩 증가하여, qi는 q0에서 qn-1까지 출력된다.
상기 4-2 컴프레서(compressor)(170)는 캐리 전파 애더 신호(ONCPA)에 따라, 캐리 저장 애더 구조에 의하여 상기 C, 상기 S, 상기 biA, 및 상기 qiM에 대하여 n번 합산하는 연산을 먼저 수행하여 상기 S의 중간 계산 값 및 상기 C의 중간 계산 값을 비트별로 계산하고, 캐리 전파 애더 구조에 의하여 상기 중간 계산 값들을 합산하여 상기 S의 최종 결과와 상기 C의 최종 결과를 출력한다. 여기서, 상기 캐리 저장 애더 구조는, 상기 캐리 전파 애더 신호(ONCPA)가 비활성화 상태, 즉, 제 1논리 상태("0")일 때, 상기 제 1풀 애더와 상기 제 2풀 애더가 동시에 동작하여 4 입력 - 2 출력 구조로 동작하는 것이다. 또한, 상기 캐리 전파 애더 구조는, 상기 캐리 전파 애더 신호(ONCPA)가 액티브 상태, 즉, 제 2논리 상태("1")일 때, 상기 제 2풀 애더만 동작하여 3 입력 - 2 출력 구조로 동작하는 것이다.
상기 S 레지스터(180)는 상기 S의 비트 값 si(여기서, i는 "0"부터 "n-1"까지)을 업데이트 시켜 저장한다. 즉, S는 합산되어 출력되는 n 비트 길이의 수를 나타내는 하나의 워드(word)를 나타내고, si는 상기 S를 구성하는 s0에서 sn-1까지의 각 비트 값이다. 여기서, 상기 S는, 상기 4-2 컴프레서(compressor)(170)에서 캐리 저장 애더 구조, 또는 캐리 전파 애더 구조에 의하여 합산이 수행될 때마다 새로운 값으로 업데이트 된다.
상기 C 레지스터(190)는 상기 C의 비트 값 ci(여기서, i는 "0"부터 "n-1"까지)을 업데이트 시켜 저장한다. 즉, C는 캐리로 출력되는 n 비트 길이의 수를 나타내는 하나의 워드(word)를 나타내고, ci는 상기 C를 구성하는 c0에서 cn-1까지의 각 비트 값이다. 여기서, 상기 C는, 상기 4-2 컴프레서(compressor)(170)에서 캐리 저장 애더 구조, 또는 캐리 전파 애더 구조에 의하여 합산이 수행될 때마다 새로운값으로 업데이트 된다.
도 2는 도 1의 4-2 컴프레서(compressor)(170)와 그 주변 회로의 구체적인 블록도이다.
도 2를 참조하면, 상기 4-2 컴프레서(compressor)(170)는, 4입력-2출력을 나타내는 애더(adder)로서, 제 1풀 애더(171), 먹스들(173), 및 제 2풀 애더(175)를 구비한다.
상기 제 1풀 애더(171)는 상기 biA 중 대응 비트 값, 상기 S의 si+1, 및 상기 C의 ci에 대한 합산을 수행하여, 캐리 cAi, 및 합산 값 sAi를 출력한다. 상기 biA 중 대응 비트 값은 biai를 말한다.
상기 먹스들(173)은 상기 캐리 전파 애더 신호(ONCPA)에 대응하여, 상기 qiM 중 대응 비트 값, 상기 sAi및 상기 cAi-1, 또는, 상기 S의 si+1, 상기 C의 ci및 상기 C의 ci-1을 선택적으로 출력한다. 상기 qiM 중 대응 비트 값은 qimi를 말한다.
상기 제 2풀 애더(175)는 상기 캐리 전파 애더 신호(ONCPA)가 비활성화 상태, 즉, 제 1논리 상태("0")일 때, 상기 qiM 중 대응 비트 값(qimi), 상기 sAi및 상기 cAi-1에 대하여 n번 합산하는 연산을 먼저 수행하여 상기 S의 중간 계산 비트 값 si및 상기 C의 중간 계산 비트 값 ci을 비트별로 계산하고, 상기 캐리 전파 애더 신호(ONCPA)가 액티브 상태, 즉, 제 2논리 상태("1")일 때, 상기 S의 si+1, 상기 C의ci및 상기 C의 ci-1에 대한 합산을 수행하여, 상기 S의 최종 결과와 상기 C의 최종 결과를 출력한다.
여기서, 상기 cAi-1은 상기 제 1풀 애더(171)에서 출력되는 하나 하위 비트의 캐리이고, 상기 S의 si+1은 상기 제 2풀 애더(175)에서 출력되는 하나 상위 비트의 합산 값이며, 상기 C의 ci-1은 상기 제 2풀 애더(175)에서 출력되는 하나 하위 비트의 캐리이다.
상기 cAi-1과상기 ci-1은, 도 2에 도시된 바와 같이, 그 LSB 값들이 제 1논리 상태이고, 상기 si+1은, 그 MSB(maximum significant bit) 값이, 상기 캐리 전파 애더 신호(ONCPA)가 액티브 상태로 되기 전 클럭에서의 상기 cAn-1과 같다. 상기 cAn-1은 상기 제 1풀 애더(171)에서 출력되는 상기 cAi중 MSB 값이다.
상기한 바와 같은, 본 발명의 일실시예에 따른 몽고메리(Montgomery) 모듈러 승산기(modular multiplier)의 동작을 좀더 상세하게 설명한다.
도 3은 본 발명의 일실시예에 따른 몽고메리(Montgomery) 모듈러 승산기(modular multiplier)의 동작 설명을 위한 흐름도이다.
도 3을 참조하면, 본 발명의 일실시예에 따른 몽고메리(Montgomery) 모듈러 승산기(modular multiplier)는, A, B, 모듈러 계수 M, 캐리 C, 합산 수 S 각각의 비트 값, ai, bi, mi, ci, 및 si(여기서, i는 "0"부터 "n-1"까지)을 저장하는 레지스터들을 구비하고, "mod M"에 대하여 "ABR-1(여기서, A 및 B는 입력되는 n 비트 길이의 수, R-1은 "mod M"에 대한 R의 모듈러 곱 역수)"의 컨그루언트를 계산하는 몽고메리(Montgomery) 모듈러 승산기(modular multiplier)로서, 그 방법은 다음과 같다.
즉, 본 발명의 일실시예에 따른 몽고메리(Montgomery) 모듈러 승산기(modular multiplier)는, 먼저, 입력되는 상기 A, 상기 B, 및 상기 M을 수신하고(S311), 변수 i와 합산 값 S가 저장되는 레지스터는 "0"으로 리셋하여 초기화시킨다(S313). 여기서, 상기 A 및 B는, 상기 M 보다 작고, 상기 M은 홀수이다.
다음에, 본 발명의 일실시예에 따른 몽고메리(Montgomery) 모듈러 승산기(modular multiplier)는, [알고리즘 1]의 "for" 루프 내에 있는 qi식을 계산하기 위하여, qi계산 논리 회로(150)에서, 불린 논리 방정식, "s0XOR c0XOR (biAND a0)(여기서, s0은 S의 LSB, c0는 C의 LSB, bi는 상기 B의 비트 값, a0은 상기 A의 LSB)"를 연산하고, 그 결과 값 qi(여기서, i는 "0"부터 "n-1"까지)를 출력한다(S315~S319). 또한, biA 계산논리 회로(140)에서는 상기 A와 상기 bi를 승산하여, 비트별로 biA를 출력하며, qiM 계산 논리 회로(160)M 계산논리 회로(160)에서는 상기 M과 상기 qi를 승산하여, 비트별로 qiM을 출력한다(S315~319). 이와 같이 하여 계산된 biA와 qiM으로부터, 4-2 컴프레서(compressor)(170)에서는 캐리 전파애더 신호(ONCPA)의 비활성화 상태, 즉, 제 1논리 상태("0")에 따라, 캐리 저장 애더 구조에 의하여 상기 C, 상기 S, 상기 biA, 및 상기 qiM에 대하여 n번 합산하는 연산을 먼저 수행하여 상기 S의 중간 계산 값 및 상기 C의 중간 계산 값을 비트별로 계산한다(S315~S319).
도 4는 본 발명의 일실시예에 따른 몽고메리(Montgomery) 모듈러 승산기(modular multiplier)의 캐리 저장 애더(carry save adder) 동작 설명을 위한 도면이다.
도 4를 참조하면, biA와 qiM으로부터, 상기 S의 중간 계산 값, 및 상기 C의 중간 계산 값 계산은, 상기 제 1풀 애더(171)에 의하여, 상기 biA 중 대응 비트 값, 상기 S의 si+1, 및 상기 C의 ci에 대한 합산을 수행하여, cAi, 및 sAi를 출력하면, 상기 제 2풀 애더(175)에 의하여, 먹스들(173)에 의하여 선택된 상기 qiM 중 대응 비트 값, 상기 sAi및 상기 cAi-1에 대하여 n번 합산하는 연산을 먼저 수행하여 상기 S의 중간 계산 비트 값 si및 상기 C의 중간 계산 비트 값 ci을 비트별로 계산함으로써 이루어진다(S315~S319).
이때, 도 2에 도시된 바와 같이, 상기 C는 각 비트의 출력이 같은 비트의 상기 제 1풀 애더(171)에 입력되고, 상기 S는 각 비트의 출력이 하나 하위 비트의 상기 제 1풀 애더(171)에 입력되도록 하여 [알고리즘 1]의 "for" 루프 내의 2로 나누는 결과 값이 계산된다(S315). 또한, 상기 cAi-1의LSB 값은 제 1논리 상태("0")에있다. 즉, 상기 캐리 저장 애더 구조는, 상기 캐리 전파 애더 신호(ONCPA)가 비활성화 상태일 때, 4 입력 - 2 출력 구조로 합산되어, 상기 biA 및 qiM으로부터, 상기 S의 중간 계산 값, 및 상기 C의 중간 계산 값을 계산하는 것이다.
다음에, 상기 S의 중간 계산 값 및 상기 C의 중간 계산 값이 비트별로 계산되면, 4-2 컴프레서(compressor)(170)에서는 캐리 전파 애더 신호(ONCPA)의 액티브 상태, 즉, 제 2논리 상태("1")에 따라(S321), 캐리 전파 애더 구조에 의하여 상기 중간 계산 값들을 합산하여 상기 S의 최종 결과와 상기 C의 최종 결과를 출력한다(S323~S327).
도 5는 본 발명의 일실시예에 따른 몽고메리(Montgomery) 모듈러 승산기(modular multiplier)의 캐리 전파 애더(carry propagation adder) 동작 설명을 위한 도면이다.
도 5를 참조하면, 상기 중간 계산 값들로부터 상기 S의 최종 결과와 상기 C의 최종 결과의 계산은, 상기 제 2풀 애더(175)에 의하여, 먹스들(173)에 의하여 선택된 상기 S의 si+1, 상기 C의 ci및 상기 C의 ci-1에 대한 합산을 수행하여 상기 S의 최종 결과와 상기 C의 최종 결과를 계산함으로써 이루어진다(S323). 여기서, 상기 si+1은, 도 2에 도시된 바와 같이, 그 MSB 값이 상기 캐리 전파 애더 신호(ONCPA)가 액티브 상태로 되기 전 클럭에서의 상기 cAn-1과 같고, 상기 ci-1은, 그 LSB 값이 제 1논리 상태("0")에 있다.
이때, 캐리 전파 애더 구조에 의하여 n 비트 전체에 대한 상기 S의 si+1, 상기 C의 ci및 상기 C의 ci-1에 대한 합산을 수행하는 시간은, (한 비트 전파 지연 시간)*n과 같고, 한 비트 전파 지연 시간은 상기 제 2풀 애더(175)의 전파 지연 시간과 상기 2:1 먹스들(173) 각각의 지연 시간으로 이루어진다(S325). 즉, 상기 캐리 전파 애더 구조는, 상기 캐리 전파 애더 신호(ONCPA)가 액티브 상태일 때, 3 입력 - 2 출력 구조로 합산되어, 상기 S의 중간 계산 값, 및 상기 C의 중간 계산 값으로부터 상기 S의 최종 결과 및 상기 C의 최종 결과를 계산하는 것이다.
위에서 기술한 바와 같이, 본 발명의 일실시예에 따른 몽고메리(Montgomery) 모듈러 승산기(modular multiplier)는, A, B, 모듈러 계수 M, 캐리 C, 합산 수 S 각각의 비트 값, ai, bi, mi, ci, 및 si(여기서, i는 "0"부터 "n-1"까지)을 저장하는 레지스터들을 구비하고, "mod M"에 대하여 "ABR-1(여기서, A 및 B는 입력되는 n 비트 길이의 수, R-1은 "mod M"에 대한 R의 모듈러 곱 역수)"의 컨그루언트를 계산하는 몽고메리(Montgomery) 모듈러 승산기(modular multiplier)로서, 먼저, biA 계산논리 회로(140)가 상기 A와 상기 bi를 승산하여, 비트별로 biA를 출력한다. 이때, qi계산 논리 회로(150)는 불린 논리 방정식, "s0XOR c0XOR (biAND a0)(여기서, s0은 S의 LSB, c0는 C의 LSB, bi는 상기 B의 비트 값, a0은 상기 A의 LSB)"를 연산하여, 그 결과 값 qi(여기서, i는 "0"부터 "n-1"까지)를 출력하고, qiM 계산 논리 회로(160)M 계산논리 회로(160)는 상기 M과 상기 qi를 승산하여, 비트별로 qiM을 출력한다. 이에 따라, 4-2 컴프레서(compressor)(170)는 캐리 전파 애더 신호(ONCPA)에 따라, 캐리 저장 애더 구조에 의하여 상기 C, 상기 S, 상기 biA, 및 상기 qiM에 대하여 n번 합산하는 연산을 먼저 수행하여 상기 S의 중간 계산 값 및 상기 C의 중간 계산 값을 비트별로 계산하고, 캐리 전파 애더 구조에 의하여 상기 중간 계산 값들을 합산하여 상기 S의 최종 결과와 상기 C의 최종 결과를 S 및 C 레지스터(190)에 출력한다.
이상에서와 같이 도면과 명세서에서 최적 실시예가 개시되었다. 여기서 특정한 용어들이 사용되었으나, 이는 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미한정이나 특허청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.
상술한 바와 같이 본 발명의 일실시예에 따른 몽고메리(Montgomery) 모듈러 승산기(modular multiplier)는, 몽고메리(Montgomery) 모듈러 승산에 있어서, 4개의 워드(word)(C, S, biA, qiM)에 대하여 각 비트마다 별도로 필요한 모든 합산을 먼저 수행하는 캐리 저장 애더(CSA) 구조로 전파 지연 시간을 제거하고, 최종 출력에서만 캐리 전파 애더(CPA) 구조로 합산을 수행하므로, 연산 속도가 빠르고 파워-딜레이 곱(power-delay product)이 작아 몽고메리(Montgomery) 모듈러 승산 알고리즘 연산 성능을 향상시키는 효과가 있다.

Claims (15)

  1. "mod M"(여기서, M은 모듈러 계수)에 대하여 "ABR-1(여기서, A 및 B는 입력되는 n 비트 길이의 수, R-1은 "mod M"에 대한 R의 모듈러 곱 역수)"의 컨그루언트를 계산하는 몽고메리 모듈러 승산기에 있어서,
    상기 M보다 작은 상기 A의 비트 값 ai(여기서, i는 "0"부터 "n-1"까지)을 저장하는 A 레지스터;
    상기 M보다 작은 상기 B의 비트 값 bi(여기서, i는 "0"부터 "n-1"까지)을 저장하는 B 레지스터;
    홀수인 상기 M의 비트 값 mi(여기서, i는 "0"부터 "n-1"까지)을 저장하는 M 레지스터;
    상기 A와 상기 bi를 승산하여, 비트별로 biA를 출력하는 biA 계산 논리 회로;
    불린 논리 방정식, "s0XOR c0XOR (biAND a0)(여기서, s0은 S의 LSB, c0는 C의 LSB, bi는 상기 B의 비트 값, a0은 상기 A의 LSB)"를 연산하고, 그 결과 값 qi(여기서, i는 "0"부터 "n-1"까지)를 출력하는 qi계산 논리 회로;
    상기 M과 상기 qi를 승산하여, 비트별로 qiM을 출력하는 qiM 계산 논리 회로;
    캐리 전파 애더 신호에 따라, 캐리 저장 애더 구조에 의하여 상기 C, 상기 S, 상기 biA, 및 상기 qiM에 대하여 n번 합산하는 연산을 먼저 수행하여 상기 S의 중간 계산 값 및 상기 C의 중간 계산 값을 비트별로 계산하고, 캐리 전파 애더 구조에 의하여 상기 중간 계산 값들을 합산하여 상기 S의 최종 결과와 상기 C의 최종 결과를 출력하는 4-2 컴프레서;
    상기 S의 비트 값 si(여기서, i는 "0"부터 "n-1"까지)을 업데이트 시켜 저장하는 S 레지스터; 및
    상기 C의 비트 값 ci(여기서, i는 "0"부터 "n-1"까지)을 업데이트 시켜 저장하는 C 레지스터를 구비하는 것을 특징으로 하는 몽고메리 모듈러 승산기.
  2. 제 1항에 있어서, 상기 4-2 컴프레서는,
    상기 biA 중 대응 비트 값, 상기 S의 si+1, 및 상기 C의 ci에 대한 합산을 수행하여, cAi, 및 sAi를 출력하는 제 1풀 애더;
    상기 캐리 전파 애더 신호에 대응하여, 상기 qiM 중 대응 비트 값, 상기 sAi및 상기 cAi-1, 또는, 상기 S의 si+1, 상기 C의 ci및 상기 C의 ci-1을 선택적으로 출력하는 먹스들; 및
    상기 캐리 전파 애더 신호가 비활성화 상태일 때, 상기 qiM 중 대응 비트 값, 상기 sAi및 상기 cAi-1에 대하여 n번 합산하는 연산을 먼저 수행하여 상기 S의 중간 계산 비트 값 si및 상기 C의 중간 계산 비트 값 ci을 비트별로 계산하고, 상기 캐리 전파 애더 신호가 액티브 상태일 때, 상기 S의 si+1, 상기 C의 ci및 상기 C의 ci-1에 대한 합산을 수행하여, 상기 S의 최종 결과와 상기 C의 최종 결과를 출력하는 제 2풀 애더를 구비하는 것을 특징으로 하는 몽고메리 모듈러 승산기.
  3. 제 1항 또는 제 2항에 있어서, 상기 캐리 저장 애더 구조는,
    상기 캐리 전파 애더 신호가 비활성화 상태일 때, 상기 제 1풀 애더와 상기 제 2풀 애더가 동시에 동작하여 4 입력 - 2 출력 구조로 동작하는 것을 특징으로 하는 몽고메리 모듈러 승산기.
  4. 제 1항 또는 제 2항에 있어서, 상기 캐리 전파 애더 구조는,
    상기 캐리 전파 애더 신호가 액티브 상태일 때, 상기 제 2풀 애더만 동작하여 3 입력 - 2 출력 구조로 동작하는 것을 특징으로 하는 몽고메리 모듈러 승산기.
  5. 제 2항에 있어서, 상기 cAi-1과상기 ci-1은,
    그 LSB 값들이 제 1논리 상태인 것을 특징으로 하는 몽고메리 모듈러 승산기.
  6. 제 2항에 있어서, 상기 si+1은,
    그 MSB 값이, 상기 캐리 전파 애더 신호가 액티브 상태로 되기 전 클럭에서의 상기 cAn-1과 같은 것을 특징으로 하는 몽고메리 모듈러 승산기.
  7. A, B, 모듈러 계수 M, 캐리 C, 합산 수 S 각각의 비트 값, ai, bi, mi, ci, 및 si(여기서, i는 "0"부터 "n-1"까지)을 저장하는 레지스터들을 구비하고, "mod M"에 대하여 "ABR-1(여기서, A 및 B는 입력되는 n 비트 길이의 수, R-1은 "mod M"에 대한 R의 모듈러 곱 역수)"의 컨그루언트를 계산하는 몽고메리 모듈러 승산기의 몽고메리 모듈러 승산 방법에 있어서,
    상기 몽고메리 모듈러 승산기에 의하여 상기 A, 상기 B, 및 상기 M을 수신하는 단계;
    상기 몽고메리 모듈러 승산기에 의하여 상기 A와 상기 bi를 승산하여, 비트별로 biA를 출력하는 단계;
    상기 몽고메리 모듈러 승산기에 의하여 불린 논리 방정식, "s0XOR c0XOR(biAND a0)(여기서, s0은 S의 LSB, c0는 C의 LSB, bi는 상기 B의 비트 값, a0은 상기 A의 LSB)"를 연산하고, 그 결과 값 qi(여기서, i는 "0"부터 "n-1"까지)를 출력하는 단계;
    상기 몽고메리 모듈러 승산기에 의하여 상기 M과 상기 qi를 승산하여, 비트별로 qiM을 출력하는 단계;
    상기 몽고메리 모듈러 승산기에 의하여 캐리 전파 애더 신호에 따라, 캐리 저장 애더 구조에 의하여 상기 C, 상기 S, 상기 biA, 및 상기 qiM에 대하여 n번 합산하는 연산을 먼저 수행하여 상기 S의 중간 계산 값 및 상기 C의 중간 계산 값을 비트별로 계산하는 단계; 및
    상기 몽고메리 모듈러 승산기에 의하여 캐리 전파 애더 신호에 따라, 캐리 전파 애더 구조에 의하여 상기 중간 계산 값들을 합산하여 상기 S의 최종 결과와 상기 C의 최종 결과를 출력하는 단계를 구비하는 것을 특징으로 하는 몽고메리 모듈러 승산 방법.
  8. 제 7항에 있어서, 상기 A는,
    상기 M 보다 작은 것을 특징으로 하는 몽고메리 모듈러 승산 방법.
  9. 제 7항에 있어서, 상기 B는,
    상기 M 보다 작은 것을 특징으로 하는 몽고메리 모듈러 승산 방법.
  10. 제 7항에 있어서, 상기 M은,
    홀수인 것을 특징으로 하는 몽고메리 모듈러 승산 방법.
  11. 제 7항에 있어서, 상기 S의 중간 계산 값, 상기 C의 중간 계산 값, 상기 S의 최종 결과 및 상기 C의 최종 결과는,
    상기 biA 중 대응 비트 값, 상기 S의 si+1, 및 상기 C의 ci에 대한 합산을 수행하여, cAi, 및 sAi를 출력하는 단계;
    상기 캐리 전파 애더 신호에 대응하여, 상기 qiM 중 대응 비트 값, 상기 sAi및 상기 cAi-1, 또는, 상기 S의 si+1, 상기 C의 ci및 상기 C의 ci-1을 선택적으로 출력하는 단계;
    상기 캐리 전파 애더 신호가 비활성화 상태일 때, 상기 qiM 중 대응 비트 값, 상기 sAi및 상기 cAi-1에 대하여 n번 합산하는 연산을 먼저 수행하여 상기 S의 중간 계산 비트 값 si및 상기 C의 중간 계산 비트 값 ci을 비트별로 계산하는 단계; 및
    상기 캐리 전파 애더 신호가 액티브 상태일 때, 상기 S의 si+1, 상기 C의 ci및 상기 C의 ci-1에 대한 합산을 수행하여 상기 S의 최종 결과와 상기 C의 최종 결과를 출력하는 단계를 구비하여 계산되는 것을 특징으로 하는 몽고메리 모듈러 승산 방법.
  12. 제 7항 또는 제 11항에 있어서, 상기 캐리 저장 애더 구조는,
    상기 캐리 전파 애더 신호가 비활성화 상태일 때, 4 입력 - 2 출력 구조로 합산되어, 상기 biA 및 qiM으로부터, 상기 S의 중간 계산 값, 및 상기 C의 중간 계산 값을 계산하는 것을 특징으로 하는 몽고메리 모듈러 승산 방법.
  13. 제 7항 또는 제 11항에 있어서, 상기 캐리 전파 애더 구조는,
    상기 캐리 전파 애더 신호가 액티브 상태일 때, 3 입력 - 2 출력 구조로 합산되어, 상기 S의 중간 계산 값, 및 상기 C의 중간 계산 값으로부터 상기 S의 최종 결과 및 상기 C의 최종 결과를 계산하는 것을 특징으로 하는 몽고메리 모듈러 승산 방법.
  14. 제 11항에 있어서, 상기 cAi-1과상기 ci-1은,
    그 LSB 값들이 제 1논리 상태인 것을 특징으로 하는 몽고메리 모듈러 승산 방법.
  15. 제 11항에 있어서, 상기 si+1은,
    그 MSB 값이, 상기 캐리 전파 애더 신호가 액티브 상태로 되기 전 클럭에서의 상기 cAn-1과 같은 것을 특징으로 하는 몽고메리 모듈러 승산 방법.
KR10-2002-0087243A 2002-12-30 2002-12-30 4-2 컴프레서를 이용한 몽고메리 모듈러 승산기 및 그승산 방법 KR100459732B1 (ko)

Priority Applications (6)

Application Number Priority Date Filing Date Title
KR10-2002-0087243A KR100459732B1 (ko) 2002-12-30 2002-12-30 4-2 컴프레서를 이용한 몽고메리 모듈러 승산기 및 그승산 방법
US10/660,476 US7412474B2 (en) 2002-12-30 2003-09-12 Montgomery modular multiplier using a compressor and multiplication method
FR0314199A FR2849512B1 (fr) 2002-12-30 2003-12-03 Multiplieur modulaire de montgomery et procede de multiplication correspondant
DE10357661A DE10357661B4 (de) 2002-12-30 2003-12-03 Modularer Montgomery-Multiplizierer und zugehöriges Multiplikationsverfahren
FR0403488D FR2867580B1 (fr) 2002-12-30 2004-04-02 Multiplieur modulaire de montgomery et procede de multiplication correspondant
FR0403488A FR2851348A1 (fr) 2002-12-30 2004-04-02 Multiplieur modulaire de montgomery et procede de multiplication correspondant

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR10-2002-0087243A KR100459732B1 (ko) 2002-12-30 2002-12-30 4-2 컴프레서를 이용한 몽고메리 모듈러 승산기 및 그승산 방법

Publications (2)

Publication Number Publication Date
KR20040060445A KR20040060445A (ko) 2004-07-06
KR100459732B1 true KR100459732B1 (ko) 2004-12-03

Family

ID=32501461

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2002-0087243A KR100459732B1 (ko) 2002-12-30 2002-12-30 4-2 컴프레서를 이용한 몽고메리 모듈러 승산기 및 그승산 방법

Country Status (4)

Country Link
US (1) US7412474B2 (ko)
KR (1) KR100459732B1 (ko)
DE (1) DE10357661B4 (ko)
FR (3) FR2849512B1 (ko)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7805479B2 (en) * 2006-03-28 2010-09-28 Michael Andrew Moshier Scalable, faster method and apparatus for montgomery multiplication
EP2015171A1 (fr) * 2007-06-29 2009-01-14 Gemplus Procédé cryptographique comprenant une exponentiation modulaire sécurisée contre les attaques à canaux cachés sans la connaissance de l'exposant public, cryptoprocesseur pour la mise en oeuvre du procédé et carte à puce associée
WO2009137722A1 (en) * 2008-05-07 2009-11-12 Nanocomp Technologies, Inc. Carbon nanotube-based coaxial electrical cables and wiring harness
KR101128505B1 (ko) * 2008-12-03 2012-03-27 한국전자통신연구원 모듈러 곱셈 연산 방법 및 장치
KR20110105555A (ko) 2010-03-19 2011-09-27 삼성전자주식회사 효율적인 하드웨어 구성을 갖는 몽고메리 승산기
DE102010051853A1 (de) * 2010-11-18 2012-05-24 Giesecke & Devrient Gmbh Verfahren zur Langzahldivision
DE102011100390A1 (de) 2011-05-04 2012-11-08 Giesecke & Devrient Gmbh Beschleunigte kryptographische Berechnung, insbesondere ECC-Berechnung, in Prozessor mit Montgomery-Koprozessor
FR2986925B1 (fr) * 2012-02-15 2014-02-21 Bull Sas Procede et dispositif electronique de generation d'un signal d'horloge variable
CN103577638B (zh) * 2013-10-29 2016-03-16 电子科技大学 一种模乘法器
CN103699358B (zh) * 2013-12-05 2016-11-23 西安交通大学 一种适用于大数的快速模平方运算电路
CN105469510B (zh) * 2014-10-12 2018-01-09 吴思进 可预告延时支付或找回的加密货币钱包
KR101830230B1 (ko) * 2016-12-23 2018-02-21 한국전자통신연구원 모듈러 곱셈 장치 및 방법
CN112068800B (zh) * 2020-08-10 2022-10-25 北京草木芯科技有限公司 阵列压缩器及具有其的大数乘法器
CN113721986B (zh) * 2021-07-23 2024-02-09 浪潮电子信息产业股份有限公司 一种数据压缩方法、装置及电子设备和存储介质
TWI802095B (zh) * 2021-11-22 2023-05-11 財團法人工業技術研究院 模數乘法電路與對應之計算模數乘法之方法

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2008774C (en) * 1989-01-30 1999-10-05 Hikaru Morita Modular multiplication method and the system for processing data
FR2726667B1 (fr) 1994-11-08 1997-01-17 Sgs Thomson Microelectronics Procede de mise en oeuvre de multiplication modulaire selon la methode montgomery
KR100267009B1 (ko) * 1997-11-18 2000-09-15 윤종용 고속 암호화 처리를 위한 어레이 구조를 가지는 모듈러 곱셈장치
US7277540B1 (en) 1999-01-20 2007-10-02 Kabushiki Kaisha Toshiba Arithmetic method and apparatus and crypto processing apparatus for performing multiple types of cryptography
DE10107376A1 (de) 2001-02-16 2002-08-29 Infineon Technologies Ag Verfahren und Vorrichtung zum modularen Multiplizieren und Rechenwerk zum modularen Multiplizieren
FR2822260A1 (fr) 2001-03-14 2002-09-20 Bull Sa Procedes et dispositifs pour accelerer le temps de calcul d'un produit de montgomery d'un multiplication et d'une exponentiation modulaire
US6973470B2 (en) * 2001-06-13 2005-12-06 Corrent Corporation Circuit and method for performing multiple modulo mathematic operations

Also Published As

Publication number Publication date
DE10357661A1 (de) 2004-07-15
US7412474B2 (en) 2008-08-12
FR2849512A1 (fr) 2004-07-02
FR2867580B1 (fr) 2007-03-30
US20040125948A1 (en) 2004-07-01
FR2867580A1 (fr) 2005-09-16
KR20040060445A (ko) 2004-07-06
FR2851348A1 (fr) 2004-08-20
DE10357661B4 (de) 2009-04-16
FR2849512B1 (fr) 2007-03-02

Similar Documents

Publication Publication Date Title
JP3784156B2 (ja) モジュラ掛け算方法
Kwon et al. Two implementation methods of a 1024-bit RSA cryptoprocessor based on modified Montgomery algorithm
KR100459732B1 (ko) 4-2 컴프레서를 이용한 몽고메리 모듈러 승산기 및 그승산 방법
US6397241B1 (en) Multiplier cell and method of computing
KR100591761B1 (ko) 몽고메리 모듈러 곱셈기 및 캐리 저장 가산을 이용한몽고메리 모듈러 곱셈 방법
KR100442218B1 (ko) 몽고메리의 알고리즘을 이용한 멱승 잉여 연산기
Liu et al. High performance modular multiplication for SIDH
Zhang et al. An efficient CSA architecture for Montgomery modular multiplication
Koç et al. Fast algorithm for modular reduction
KR101925868B1 (ko) 모듈러 계산 유닛 및 그것을 포함하는 보안 시스템
Schinianakis et al. Residue number systems in cryptography: Design, challenges, robustness
US20080114820A1 (en) Apparatus and method for high-speed modulo multiplication and division
US8527570B1 (en) Low cost and high speed architecture of montgomery multiplier
Saldamli et al. Uniform montgomery multiplier
KR100836737B1 (ko) 중국인 나머지 정리(crt)와 캐리 저장 가산 기반의모듈러 곱셈 장치 및 방법
KR100480997B1 (ko) GF(p)와 GF(2^m)의 유한체 곱셈 연산 장치
WO2022115108A1 (en) An architecture for small and efficient modular multiplication using carry-save adders
KR100946256B1 (ko) 다정도 캐리 세이브 가산기를 이용한 듀얼필드상의확장성있는 몽고매리 곱셈기
Alkar et al. A hardware version of the RSA using the Montgomery's algorithm with systolic arrays
US7403965B2 (en) Encryption/decryption system for calculating effective lower bits of a parameter for Montgomery modular multiplication
Sanu et al. Parallel montgomery multipliers
KR100486697B1 (ko) 모듈러연산장치및그방법
EP1504338A1 (en) &#34;emod&#34; a fast modulus calculation for computer systems
Shirase et al. An architecture for elliptic curve cryptograph computation
Nibouche et al. New iterative algorithms and architectures of modular multiplication for cryptography

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

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20131031

Year of fee payment: 10

LAPS Lapse due to unpaid annual fee