KR100481586B1 - 모듈러 곱셈 장치 - Google Patents
모듈러 곱셈 장치 Download PDFInfo
- Publication number
- KR100481586B1 KR100481586B1 KR10-2002-0073187A KR20020073187A KR100481586B1 KR 100481586 B1 KR100481586 B1 KR 100481586B1 KR 20020073187 A KR20020073187 A KR 20020073187A KR 100481586 B1 KR100481586 B1 KR 100481586B1
- Authority
- KR
- South Korea
- Prior art keywords
- register
- output
- word
- input
- carry
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/60—Methods 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/72—Methods 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/728—Methods 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/60—Methods 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/72—Methods 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/722—Modular 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
본 발명은 IC 카드 및 이와 같이 중앙 처리 장치(Central Processing Unit : CPU)와 메모리를 내장하고 있는 단일 칩 형태의 시스템에서 RSA 암호 알고리즘을 수행하기 위해 사용되는 모듈러(modular) 곱셈 연산을 각기 다른 범위의 요구 면적 제한을 가질 수 있는 임의의 시스템에 맞추어 연산기의 크기를 선택하여 설계할 수 있도록 하는 몽고메리 모듈러 곱셈 장치에 관한 것이다. 본 발명은 임의의 워드 단위 연산을 이용한 몽고메리 모듈러 곱셈 장치를 구현함에 있어서 2단으로 구성된 입력 레지스터, 상태 레지스터, 및 제어 레지스터, 워드 단위의 모듈러 연산을 수행하고 시프트 데이터(shift_data) 및 몽고메리 보정 인자 m을 저장하는 곱셈기, 부분 곱 및 최종 결과 값을 저장하는 워드 레지스터, 상기 곱셈기의 출력을 받아 선택적으로 워드 단위의 덧셈을 수행하는 가산기, 상기 회로들을 제어하는 제어부를 포함하여, 데이터 입력을 위한 시간 지연을 최소화하였고, 몽고메리 보정 인자 연산 과정 없이 연산을 수행할 수 있도록 하여 별도의 연산 과정이나 이를 위한 시간 지연을 제거할 수 있으므로 전체 연산이 단순화되어 하드웨어로의 구현 및 확장이 용이하다.
Description
본 발명은 모듈러(modular) 곱셈 장치에 관한 것으로, 특히, IC 카드 및 이와 같이 중앙 처리 장치(Central Processing Unit : CPU)와 메모리를 내장하고 있는 단일 칩 형태의 시스템에서 사용자의 개인 정보를 보호하고 유출을 방지하여 보안성을 제공하기 위해 사용되는 공개키 암호 알고리즘 중 RSA 암호 알고리즘을 수행하기 위해 사용되는 모듈러 곱셈 연산을 각기 다른 범위의 요구 면적 제한을 가질 수 있는 임의의 시스템에 맞추어 연산기의 크기를 선택하여 설계할 수 있도록 하는 몽고메리 모듈러 곱셈 장치에 관한 것이다.
RSA 암호 알고리즘은 모듈러 승산을 수행하여 구현되며, 이는 모듈러 곱셈의 반복 수행을 통하여 가능하다. 이러한 모듈러 곱셈을 빠르게 반복 수행하기 위해서 몽고메리 알고리즘이 주로 사용된다. 그러나, 종래의 몽고메리 모듈러 곱셈을 수행하는 장치는 보조 연산기로써 필요한 입력을 모두 받아 그 결과를 출력하는 방식으로 이 방식은 암호화가 요구되는 입력의 전체 비트를 한꺼번에 처리하는 이점이 있으나, 그 면적이 너무 크다는 문제를 가지게 되어 본 발명에서 고려하는 IC 카드와 같은 시스템에는 적용하기 어렵다. 또한 전체 데이터 비트 수보다 적은 단위의 모듈러 곱셈기를 복수 개 파이프라인(pipeline)하여 수행하는 방식은 적절한 면적을 선택할 수 있다는 점은 전자에 비해 유리하다고 할 수 있으나 중앙 처리 장치와 연동하여 동작하는 시스템에 적용할 경우, 매 동작 클럭마다 새로운 입력을 위한 시간이 요구되어 전체 모듈러 곱셈의 완료 시간을 지연시키게 된다. 그리고, 전체 데이터의 비트 수보다 적은 단위의 단일 연산기를 이용하여 이를 반복 사용하여 모듈러 곱셈을 구현하는 경우엔 모듈러스에 대한 몽고메리 보정 인자를 계산하기 위한 추가 연산이 필요하게 되어 연산의 복잡성을 증가시키고 전체 동작의 지연을 가져올 수 있다. 앞서 언급한 파이프라인 방식에서처럼 중앙 처리 장치와의 연동을 깊이 고려하지 않고 단지 연산기만을 보조 연산기의 형태로 구현하면 전체 데이터 비트에 대한 암호화를 수행할 경우엔 이로 인한 시간지연을 가져오게 되는 문제점도 있다.
일반적으로 모듈러 연산기와 같은 보조 연산장치를 하드웨어로 구현하는데 있어서 대부분의 구현 방식들이 그 범위를 연산기 자체만으로 국한시켜 성능향상을 꾀하는 경우가 많다. 즉, 중앙 처리 장치와 구현할 연산기 사이의 연동과 그에 따른 입출력까지 미리 고려하지 않고 단지 주어진 입출력에 대해서 얼마나 빨리 결과를 출력하는지, 그리고 얼마나 하드웨어 요구량을 감소시킬 수 있는지에 대해서만 집중한다. 그러나, 실제로 이렇게 구현된 모듈을 중앙 처리 장치와 연동시킬 경우엔 이 부분에 대한 결여가 매우 큰 문제가 되어 구현된 연산기의 성능을 급격히 저하시키게 되고, 결국 연산기의 성능 향상을 위해 구현된 방식의 가치가 떨어지게 된다. 모듈러 곱셈기의 경우에도 마찬가지로 이러한 문제가 발생할 가능성이 존재하는데, 예로, 수학식 5에 표현된 임의의 워드단위의 곱셈을 반복 수행하여 모듈러 연산을 구현하는 경우, 단계 3 부분이 하드웨어로 구현되는 핵심 연산 모듈이 되는데 여기엔 앞서 언급한 중앙 처리 장치와의 연동이라는 관점에서 반드시 고려되어야 할 몇 가지 부분이 빠져있다. 우선 모듈러스 N에 곱해주어야 할 몽고메리 인자 m을 구하기 위해 N0
*가 외부에서 입력되어야 한다. 이 N0
*를 구하는 것이 바로 중앙 처리 장치의 몫이 되고, 이를 위해 별도의 소프트웨어 및 수행시간이 요구된다. 다음으로는 한 번의 워드단위의 곱셈이 이루어지고 난 후 다음의 곱셈을 수행하기 위한 데이터의 입력에 관한 문제이다. 수학식 3을 하드웨어로 구현할 때 고려해야 할 부분은 내부 연산의 성능향상만이 아니라 어떻게 다음 입력을 받을 것인가에 대한 부분도 함께 고려해 두어야 한다. 즉 이러한 부분의 고려가 없다면 매 워드 단위 연산 마다 내부 연산과 중앙 처리 장치와의 입출력이 완전히 분리되어 동작하게 된다. 이러한 경우 연산기를 구현할 때 고려하지 않았던 부분이 기대했던 연산기의 성능향상보다 더 큰 문제가 될 가능성이 있다.
본 발명은 상술한 결점을 해결하기 위하여 안출한 것으로, 중앙 처리 장치를 내장하고 이와 연동하는 암호화 장치를 포함하는 IC 카드와 같은 단일 칩 형태의 시스템에서 요구되는 면적의 제한 상세에 따라 연산 모듈의 크기를 선택하여 설계할 수 있도록 하는 몽고메리 모듈러 곱셈기를 구현함에 있어 연산 과정 중 요구되는 몽고메리 보정 인자 계산 과정을 생략하여 연산의 복잡성 및 수행 시간 지연을 제거하고 메모리로부터 모듈러 곱셈기로 데이터가 입력되는 과정에 의한 시간 지연을 제거 또는 최소화하여 모듈러 연산 수행을 연속적으로 수행할 수 있도록 하는 몽고메리 모듈러 곱셈 장치를 제공하는 데 그 목적이 있다.
이와 같은 목적을 달성하기 위한 본 발명은, 기설정된 시스템 버스(system bus)에 접속된 중앙 처리 장치; 상기 시스템 버스에 접속되어 모듈러 곱셈 연산에 필요한 데이터를 입출력하는 메모리; 각기 2단으로 구성되어 상기 시스템 버스로부터 입력되는 승수 A, 피승수 B, 모듈러스 N을 각각 저장하는 2단 입력레지스터 A, B, N; 상기 2단 입력 레지스터 A, B, N에 각기 저장된 데이터를 각각 받아 모듈러 연산을 수행하여 그 결과값을 캐리 아웃(Carry_out)과 섬 아웃(Sum_out)으로 나누어 출력하고 연산 과정 중 발생한 시프트 데이터(shift_data) 및 몽고메리 보정 인자 m을 저장하는 연산 핵심부; 상기 시스템 버스에 접속되어 모듈러 곱셈 동작 상태를 저장했다가 외부에 알리기 위한 상태 레지스터; 상기 중앙 처리 장치의 제어신호를 상기 시스템 버스를 통해 받아 저장하는 제어 레지스터; 상기 시스템 버스에 접속되어 각 중간 결과 값들을 각기 저장하는 다수의 레지스터로 이루어져 모듈러 곱셈 수행 중의 부분 곱을 저장하며 최종 결과 값을 저장 및 출력하는 레지스터 그룹; 상기 연산 핵심부로부터 출력된 캐리 아웃, 섬 아웃, 시프트 데이터, 및 상기 레지스터 그룹의 출력을 받아 선택적으로 2번의 덧셈을 수행하는 가산기; 및 상기 시스템 버스에 접속되어 상기 제어 레지스터로부터 상기 중앙 처리 장치의 제어신호를 제공받아 모듈러 곱셈 연산의 최종 결과값을 출력할 때 까지 상기 연산 핵심부의 입출력 및 상기 가산기의 입출력을 제어하고 상기 레지스터 그룹에 새로운 값을 저장하기 위한 신호를 발생시키는 제어부를 포함하는 것을 특징으로 한다.
이하, 첨부된 도면을 참조하여 본 발명에 따른 실시예를 상세히 설명하면 다음과 같다.
먼저, 본 발명이 다루고 있는 몽고메리 모듈러 곱셈 알고리즘에 대하여 설명한다. 승수 A, 피승수 B, 및 모듈러스 N에 대해서 수학식 1과 같이 결과 값 R을 구하는 연산을 모듈러 곱셈이라 한다.
모듈러 곱셈을 효율적으로 수행하기 위한 알고리즘 중 몽고메리 알고리즘은 모듈러 곱셈 알고리즘을 잉여계수 r을 사용해서 정수 Zn 영역에서 계산을 rZn 영역으로 옮겨 계산하는 방법으로 몫과 나머지를 구하는 고전적인 나눗셈을 사용하지 않고도 모듈러 연산을 가능케 한다. 이 경우 영역의 이동을 위한 추가적인 동작이 요구되나 단순히 한 번의 모듈러 곱셈이 아니라 RSA와 같이 반복적인 모듈러 곱셈을 통한 모듈러 승산이 모듈러 곱셈기의 주된 사용 목적이며 모듈러 승산의 경우, 영역의 이동을 매번 수행하는 것이 아니라 전체 승산의 처음과 끝에서만 수행하면 되며 영역의 이동 또한 몽고메리 모듈러 곱셈에 의해 수행 가능하므로 몽고메리 모듈러 연산방법은 모듈러 곱셈기의 구현에 매우 적합한 방법이라고 할 수 있다.
잉여계수 r은 데이터의 비트 수 n에 대해서 2n의 값을 가지며 몽고메리 모듈러 곱셈 알고리즘으로 수행한 결과는 수학식 2와 같다.
수학식 2를 구현하기 위한 일반적인 몽고메리 알고리즘의 수행 과정을 단계별로 나타내면 수학식 3과 같다.
단계 2 : R = R + A*B
단계 3 : m = R*N*modr (단, r*r-1-N*N*=1)
단계 4 : R = (R + m*N)/r
단계 5 : if(R>N) R = R-N
단계 6 : return (R)
위의 수학식 3에서 단계 4의 나눗셈연산은 간단히 쉬프트 동작으로 구현된다. 이처럼 몽고메리 알고리즘은 모듈러 곱셈에 필요한 나눗셈 연산을 곱셈 연산과 시프트 동작만으로 간략화시켜 그 수행속도를 향상시키는 장점이 있다. 그러나 단계 3에서 수행되는 몽고메리 보정 인자 m을 구하기 위한 연산 과정이 추가로 구현되어야 하며 이 연산량 만큼의 추가 동작시간이 요구된다.
따라서 인자 m을 구하기 위한 별도의 연산 과정을 수행하지 않는 것이 보다 효율적이라 할 수 있으며 식 3의 단계 3에서 수행되는 몽고메리 보정 인자 연산없이 모듈러 곱셈을 수행하기 위한 기본적인 방법은 다음 수학식 4와 같다.
단계 2 : for i = 0 to n-1{
R = R+Ai*B
R = R+R0*N
R = R/2
}
단계 3 : if(R>N) R = R-N
단계 4 : return (R)
수학식 4는 인자를 구하기 위한 추가 연산없이 단지 단계 2의 과정만으로 모든 모듈러 곱셈을 수행할 수 있다. 전체 데이터를 그 크기 그대로 입력 받아 처리하는 경우에 적용되는 대표적인 연산 방식이라고 할 수 있으며, 이를 기본으로 응용된 다양한 모듈러 연산 방식 및 하드웨어로의 구현에 대한 연구가 있어왔다. 그러나 이러한 방식들은 기본적으로 전체 데이터를 한꺼번에 고려하게 되므로 현재와 같이 1024 이상의 비트를 가지는 데이터를 처리하기 위해서는 하드웨어의 면적이 커 IC 카드와 같은 시스템에 적용되기에는 어렵다.
따라서, IC 카드와 같은 시스템에서는 처리하고자 하는 데이터를 한꺼번에 수행하지 않고 임의의 워드 단위로 나누어 연산하는 방법이 적용되어야 하며 다음 수학식 5는 이러한 워드 단위 연산을 위한 몽고메리 모듈러 곱셈을 단계적으로 표현한 수식이다.
단계 2 : for i = 0 to p-1{
단계 3 : R = R + A*Bi (Bi는 w-비트 워드(bit word))
m = R0* N0
*mod2w (N0* N0
* = -1mod2w)
R = R + N*m
R = R/2w
}
단계 4 : if(R>N) R = R-N
단계 5 : return (R)
위의 수학식 5에서 하나의 열(A*Bi)에 대한 수행은 A 역시 Bi와 같은 크기를 가지는 p개의 w-비트 워드로 나뉘어 p번의 워드 단위의 곱셈을 수행하여 이루어지며 (N*m)의 수행 또한 p개의 w-비트 워드 단위로 나뉘어 p번의 워드 단위의 곱셈으로 이루어진다. 일반적으로 한 워드의 비트 수는 32 비트 또는 그 정수 배의 비트로 정해지는데 이는 IC카드와 같은 시스템이 가지는 시스템 버스의 데이터 크기가 32 비트인 경우를 고려한 것이다.
따라서, 이 수학식 5를 적용하여 하드웨어로 구현된 장치는 w-비트 워드 단위의 연산 모듈을 가지고 이를 제어하는 모듈로 구성되므로 전체 데이터 비트를 한꺼번에 처리하는 경우보다 하드웨어 면적이 감소하게 된다. 그러나, 위의 방법을 그대로 적용하여 구현할 경우 수학식 3의 경우와 마찬가지로 몽고메리 보정 인자를 계산하기 위한 연산량이 당연히 요구되며, 연산과정에 있어서도 내부에서 수행되는 곱셈 연산이 일반적인 곱셈의 부분 곱 과정과 동일하므로 워드 단위의 곱셈의 결과가 2*w-비트의 크기를 가지게 되며 이 중 캐리에 해당하는 w-비트를 다음 워드 단위 곱셈으로 넘겨주어야 다음 순서의 워드 단위 곱셈이 가능하게 되는 연산의 종속성도 가지게 된다.
그러나, 본 발명의 경우엔 각각의 워드 단위 연산이 이전의 연산 결과와 상관없이 독립적으로 수행되어 각 부분 연산에서 쉬프트되는 값을 저장해두고 이를 이전 워드 연산의 결과에 더해주는 방식으로 결과 값을 구할 수 있으므로 워드 단위의 곱셈 결과가 항상 w-비트의 크기로 유지되며 아울러 각 부분 연산에 있어서 결과 값을 구하기 위한 덧셈과정은 별도의 모듈로 독립적으로 구현할 수 있다. 이에 대한 수식은 다음 수학식 6과 같다.
단계 2 : for i = 0 to p-1{
Pre_c = 0, Next_c = 0
단계 3 : for j = 0 to p-1{
If(i == 0) Rj = 0 (Rj 는 w+1 비트의 크기)
Else Rj = Tj (Tj는 w 비트의 크기)
단계 4 : for b = 0 to w-1{ (단 b는 비트의 순서)
Rj = Rj + Ajb*Bi
if(j == 0) mb = Rj0 (m은 w 비트의 크기)
else mb = mb
Rj = Rj + mb*Nj
shift_datab = Rj0 (shift_data는 w 비트의 크기)
Rj = Rj/2
} end for b
단계 5 : (Pre_c, Tj) = Rj + Pre_c
(Next_c, Tj-1) = Tj-1 + shift_data + Next_c
} end for j
} end for i
단계 6 : If(T>N) T = T-N (단, T는 마지막 Next_c를 포함한 n+1 비트의 크기)
단계 7 : return (T)
상기 수학식 6에서 임의의 비트 수 w를 결정할 때, 전체 비트 n 보다 2비트 이상 큰 비트 수 n' (n' ≥ n+2)를 전체 비트 수로 하여 n' = w*p의 형태로 구현될 수 있도록 한다. 이 때, p는 임의의 정수이며 n보다 큰 비트의 값은 0으로 한다. 이는 모듈러 연산의 결과 값이 항상 2N 보다 작으므로 그 결과 값이 주어진 비트 크기 내에 모두 표현될 수 있도록 하며, 모듈러 곱셈기가 모듈러 승산만을 위한 장치임을 고려한다면 이렇게 2비트 이상 큰 비트 수로 계산을 수행하면 모듈러 곱셈 연산의 결과가 N보다 클 경우에 매번 결과 값에서 N을 빼는 비교 과정을 수행하지 않아도 최종 모듈러 승산의 결과값은 항상 N 보다 작은 값으로 귀결된다. 만일 모듈러 곱셈의 단일 결과값이 필요할 경우엔 제안되는 연산 장치의 외부에서 별도로 비교 과정을 수행하도록 하면 된다. 따라서 수학식 6에서 단계 6은 하드웨어로 구현할 때 생략 가능하다. 그리고, 워드 단위는 앞서 설명한 대로 반드시 32비트로 국한할 필요없이 32비트의 정수배로도 가능한데 이 때, 수학식 5를 그대로 적용하여 32비트의 정수배인 워드 단위로 확장하여 구현한다면 단계 3의 곱셈을 처리하기 위한 장치가 비트 수가 증가함에 따라 회로의 복잡도 및 수행시간의 지연이 증가하게 된다. 따라서 비트수가 증가할 경우엔 이를 해결하기 위해 구조를 개선하여야 되는 문제가 발생한다.
그러나 본 발명에서 제안한 구조는 비트의 증가에 상관없이 동일한 구조를 그대로 확장하여 사용 가능하므로 하드웨어로 구현할 때, 선택된 비트 크기에 맞춰 현재 구조를 하드웨어로 설계하면 되는 장점을 가지게 된다.
위의 수학식 6에서 덧셈 과정은 각각 단계 4와 단계 5에서 수행되는데, 단계 4의 경우 Rj를 캐리 아웃과 섬 아웃으로 나누어 캐리 저장 가산기로 수행한다. 이는 전가산기를 사용했을 때 발생 가능한 시간 지연을 줄이는 효과뿐만이 아니라 단계 5에서 Rj 에 1비트 캐리를 더하는 과정 (Pre_c, Tj) = Rj + Pre_c 가 요구되므로 단계 4에서는 캐리 저장 가산기를 통해 캐리 아웃과 섬 아웃으로 된 Rj 값을 출력하고 단계 5에서는 (Pre_c, Tj) = 캐리 아웃 + 섬 아웃 + Pre_c 를 연산하는 w-비트 가산기를 구현하면 효율적으로 결과값을 구할 수 있다. 또한 단계 4와 단계 5는 독립적으로 수행되므로 단계 4가 다음 워드 단위 연산을 수행하는 동안 단계 5에서 이전 연산의 결과 값들을 가지고 덧셈과정을 수행하면 된다.
따라서, 하나의 워드 단위의 입력들을 받아 단계 4를 수행하는데 소요되는 시간은 w 클록 사이클(clock cycle)이 요구된다. 즉, 한 워드 단위 입력 집합들이 유지되는 시간이 w 클록 사이클이 된다. 따라서 중앙 처리 장치가 메모리로부터 송출하는 다음 워드 단위의 입력 집합을 현재의 워드 입력 집합에 대한 연산이 수행되는 w 클록 사이클동안 미리 받아 놓을 수 있다면 전체 데이터의 모듈러 연산을 수행하는 동안 워드 단위의 데이터 입력을 위한 별도의 시간이 요구되지 않거나 w 클록 사이클 이상의 시간이 걸릴 경우에만 그만큼의 추가시간만이 요구되어 수행시간을 단축시킬 수 있게 된다.
도 1은 본 발명에 따른 모듈러 곱셈 장치의 일 실시예를 나타낸 블록도로, 시스템 버스(100), 2단 입력레지스터 N, A, B(101, 102, 103), 제어부(104), 연산 핵심부(105), 가산기(106), 상태 레지스터(107), 제어 레지스터(108), 워드 레지스터(109), 메모리(110), 다중화기(119), 및 중앙 처리 장치(120)로 구성된다.
동 도면에 있어서, 본 발명에 따른 몽고메리 모듈러 곱셈 장치는 제어부(104), 연산 핵심부(105), 및 덧셈연산을 위한 가산기(106)를 통해 워드 단위 모듈러 연산 과정을 수행한다. 2단 입력레지스터 N(101) A(102), B(103)는 메모리(110)로부터 다음 연산의 데이터까지 시스템 버스(100)를 통해 미리 받아 저장해둔다. 상태 레지스터(107)는 현재 동작 상태를 외부로 알려 중앙 처리 장치(120)로 하여금 다음 동작을 수행하도록 한다. 제어 레지스터(108)는 중앙 처리 장치(120)가 모듈러 곱셈 장치를 제어하기 위해 제공하는 신호를 저장한다. 워드 레지스터(109)는 w 비트의 크기를 가지는 다수의 레지스터를 구비하여 연산 과정중에 발생한 각 단계의 부분값들을 저장한다.
제어부(104)의 동작에 의해 발생되는 제어신호들을 중심으로 전체 동작을 설명하면 다음과 같다.
먼저, 중앙 처리 장치(120)는 제어 레지스터(108)에 동작 시작을 알리는 값을 시스템 버스(100)를 통해 전송한다. 제어부(104)는 제어 레지스터(108)로부터 동작 시작을 알리는 값을 받아 동작을 준비한다. 이 후, 제어부(104)는 시스템 버스(100)를 통해 전송되는 어드레스(address) 값에 따라 제 1 입력 제어 신호(input_ctrl1)를 발생시켜 2단 입력레지스터 N, A, B(101, 102, 103) 내의 도 2와 같은 레지스터1(200)에 시스템 버스(100)로부터 전송되는 데이터를 저장하도록 한다. 제어부(104)는 2단 입력레지스터 N, A, B(101, 102, 103)가 모든 데이터들을 다 입력받은 후엔 이를 알리는 제 2 입력 제어 신호(input_ctrl2)를 발생시켜 2단 입력레지스터(101, 102, 103) 내의 논리곱 게이트(203)의 하단에 제공함으로써 레지스터2(201)에 레지스터1(200)에 저장되어 있는 값을 저장하도록 한다. 이와 동시에 제어부(104)는 연산 핵심부(105)가 연산을 시작하도록 한다. 이후의 연산 과정에 있어서는 레지스터2(201)가 데이터를 레지스터1(200)로부터 넘겨받은 후엔 상태 레지스터(107)에 저장된 값을 중앙 처리 장치(120)가 읽고 다음 데이터를 전송할 수 있음을 알게 되며, 다시 제어부(104)는 시스템 버스(100)를 통해 제공되는 어드레스에 따라 제 1 입력 제어 신호(input_ctrl1)를 발생시켜 레지스터1(200)이 새로운 데이터를 시스템 버스(100)로부터 받을 수 있도록 한다. 레지스터2(201)는 매 연산 핵심부(105)의 동작이 종료되는 시점, 즉 수학식 6의 단계 4의 순차적인 동작을 위해 제어부(104)가 발생시키는 b 계수 값(MM_count)이 w에서 다시 0으로 바뀌는 시점에 제어부(104)에서 발생되는 제 2 입력 제어 신호(input_ctrl2)에 의해서 새로운 데이터를 레지스터1(200)로부터 넘겨받게 된다.
연산 핵심부(105)의 동작을 위해서 앞서 설명한 제 2 입력 제어 신호(input_ctrl2)와 b 계수 값(MM_count) 신호 이외에 제어부(104)는 또 다른 계수 값 워드 카운트(word_count)와 토탈 카운트(total_count)를 연산 핵심부(105)로 전송한다. b 계수 값(MM_count)은 수학식 6의 단계 4에 있어서 b 계수 값이며, 워드 카운트(word_count)는 단계 3의 j 계수 값, 토탈 카운트(total_count)는 단계 2의 i 계수 값이다. 각 계수 값의 역할은 먼저, 토탈 카운트(total_count)는 현재 입력된 B가 몇 번째 워드인지를 알려주며, 워드 카운트(word_count)는 A의 워드 순서를 알려주고, b 계수 값(MM_count)은 현재 Aj의 비트 순서를 알려주어 연산 핵심부(105)의 동작을 제어하게 된다.
연산 핵심부(105)가 한 번의 단계 4연산, 즉 Aj와 Bi에 대한 연산을 수행하고 나면 섬 아웃, 캐리 아웃, 및 시프트 데이터를 가산기(106)로 출력한다. 이 때, 제어부(104)는 가산기(106)의 동작을 위해 애드 스타트(add_start) 신호를 발생시키고 동시에 덧셈 횟수를 나타내는 계수인 애드 카운트(add_count) 신호를 발생시켜서 두 번의 w-비트 덧셈연산을 순차적으로 수행하도록 한다.
가산기(106)는 두 번의 덧셈을 수행하여 두 번의 출력 값을 워드 레지스터(109)로 전송하게 되는데 그 값은 연산 핵심부(105)가 가산기(106)의 입력으로 제공한 값을 계산할 때의 워드 카운트(word_count) 순서인 j에 대하여 가산기(106)의 두 출력은 각각 j번째에 해당하는 워드 레지스터(109)와 j-1번째에 해당하는 워드 레지스터(109)에 각각 저장된다. 이 때, 값이 저장될 워드 레지스터(109)를 선택하기 위해서 제어부(104)는 워드 카운트(word_count)를 이용해 워드 레지스터(109) 쪽으로 입력 셀(input_sel)이라는 신호를 발생시키며, 이 값에 따라 가산기(106)의 두 출력은 적절한 워드 레지스터(109)에 저장되게 된다.
워드 레지스터(109)의 값은 연산 핵심부(105)와 가산기(106)의 입력으로도 사용되게 되는데, 이를 위해 제어부(104)는 다중화기(119)의 제어를 위한 아웃풋 셀(output_sel)이라는 신호를 발생시킨다. 연산 핵심부(105)는 수학식 6의 단계 3에 표현한 것처럼 현재 워드 카운트(word_count) j에 대하여 현재의 B 워드 순서 토탈 카운트(total_count)가 0일 때는 워드 레지스터(109)의 값을 필요로 하지 않으나, 토탈 카운트(total_count)가 0이 아닐 때에는 j번째의 워드 레지스터(109)의 값을 입력받아서 연산 핵심부(105)의 초기값으로 사용하게 된다. 또한 가산기(106)는 j-1번째의 워드 레지스터(109)의 값을 하나의 입력으로 받아야 하므로 이러한 워드 레지스터(109)의 출력을 선택적으로 수행할 수 있도록 제어부(104)가 입력 셀(input_sel) 신호를 제공하게 된다.
이상의 제어부(104)의 동작과정에서 도 1에 도시한 것처럼 일련의 제어신호들은 상태 레지스터(107)에 저장되어 현재 모듈러 곱셈 동작 상태를 중앙 처리 장치(120)로 알려주게 되며, 동시에 다시 제어부(104)의 입력으로 제공되어 제어부(104)가 다음 제어신호 값을 결정할 수 있도록 한다. 모든 모듈러 곱셈과정을 수행하고 나면 중앙 처리 장치(120)가 제어 레지스터(108)에 동작 정지를 위한 값을 전송하고 이를 제어부(104)가 받아서 동작을 정지하게 된다.
도 2는 도 1에 도시된 2단 입력 레지스터 N, A, B(101, 102, 103)의 일 실시예를 나타낸 회로도로, 레지스터1,2(200, 201) 및 논리곱 게이트(203)로 구성된다.
동 도면에 있어서, 레지스터1(200)은 제 1 입력 제어 신호(Input_ctrl1)에 따라 시스템 버스(100)로부터 제공되는 데이터를 저장한다. 레지스터2(201)는 레지스터1(200)로부터 제공되는 데이터를 논리곱 게이트(203)의 출력에 따라 저장한다. 논리곱 게이트(203)는 클록과 제 2 입력 제어 신호(Input_ctrl2)를 논리곱 연산한 게이트 클록(gated clock)을 레지스터2(201)로 제공한다. 이와 같이 2단 입력 레지스터 N, A, B(101, 102, 103)는 논리곱 게이트(203)를 사용하여 새로운 입력 값이 요구되는 시점에만 데이터를 저장한다.
도 3은 도 1에 도시된 연산 핵심부(105)의 일 실시예를 나타낸 상세도이다.
일반적으로 상기 수학식 4의 전체 데이터 비트를 한꺼번에 처리하는 구조와 유사하나 몽고메리 보정 인자 m을 저장하는 m 레지스터(307)와 시프트 데이터를 저장하는 시프트 데이터 레지스터(310)를 가지는 중요한 차이점이 있다. 이 연산 핵심부(105)의 동작을 수학식 6에 표현한 연산과정의 단계에 따라 설명하면 우선 단계 3, 단계 4를 모두 수행하여 단계 2의 최초 동작, 즉 제어부(104)에서 입력된 토탈 카운트(total_count)가 0일 때의 A와 B0에 대한 모듈러 연산 결과 값을 출력할 때까지 입력 캐리 인(Carry_in)은 0이 되고 섬 인(Sum_in) 또한 다중화기0(300)를 통해 0이 입력된다. 이후의 단계 2에 대해서는 이전 단계 2에 의한 결과를 저장하고 있는 워드 레지스터(109)들의 값 중 현재 워드 연산의 순서, 단계 3의 j와 일치하는 워드 레지스터(109) 값이 입력되고, 이 값이 다중화기0(300)를 통해 선택되어 섬 인으로 입력하도록 한다.
각 단계 2에 대해서 최초의 단계 3, 즉 워드 카운트(word_count)가 0이 되는 A0*Bi를 수행할 때는 w 클록 사이클 동안 j=0인 A0b*Bi(305)의 출력과 캐리 레지스터(303), 섬 레지스터(304)의 값을 입력으로 하는 캐리 저장 가산기1(306)의 출력 중 S u m _ 0를 m 레지스터에 저장하며, 비트 순서 b에 따라 mb*Nj(308)을 수행, 이 결과를 캐리 저장 가산기1(306)의 두 출력과 함께 캐리 저장 가산기2(309)로 보낸다. 이와 같이 하는 이유는 첫 번째 워드 연산인 A0*Bi 이후의 단계 3 과정 동안에는 몽고메리 보정 인자가 m 레지스터(307)에 저장된 값과 동일하기 때문이다. 이처럼 수학식 5에서 별도의 계산 과정이 필요했던 몽고메리 보정 인자를 구하는 과정은 워드 연산 과정을 수행함과 동시에 처리된다.
그리고, 캐리 저장 가산기2(309)의 출력 중 S u m _ 0는 수학식 4의 경우 그 값이 항상 0이 되므로 쉬프트되어 버려지지만, 현재의 구조에서는 한꺼번에 연산하는 것이 아니라 워드단위로 연산하므로 이 값들을 저장해서 이전 블록의 연산 결과에 더해주어야 한다. 따라서 시프트 데이터 레지스터(310)에 이 값들을 저장해두도록 한다.
단계 4의 과정을 수행하는 동안 연산 핵심부(105)는 w 클록 사이클 이후에는 한 번의 워드 연산을 마치고 캐리 아웃, 섬 아웃, 및 시프트 데이터 등 3개의 w-비트 값을 단계 5를 수행하는 가산기(106) 쪽으로 출력한다.
도 4는 도 1에 도시된 가산기(106)의 일 실시예를 나타낸 상세도로, 수학식 6의 단계 5를 수행한다.
한 차례의 워드연산, 즉 단계 4가 수행되고 나면 앞서 설명한대로 연산 핵심부(105)에서 상기 도 3의 설명대로 3개의 출력이 발생한다. 이를 입력으로 각 워드 연산의 결과 값을 구하기 위해서는 단계 5의 과정을 따라 더해주어야 하는데 그 동작 과정은 다음과 같다. 우선 제어부(104)가 애드 스타트(add_start) 신호를 발생시켜 가산기(106)가 동작할 시점임을 알리고 덧셈연산을 수행하도록 한다. 연산 핵심부(105)에서 출력된 캐리 아웃(400), 섬 아웃(402), 시프트 데이터(401)등을 받아 저장하고, 현재 종료된 워드 연산 순서인 j에 대해 j-1번째의 워드 레지스터(109)의 값을 받아 도 4와 같이 다중화기1(403)과 다중화기 2(404)를 통해 애드 카운트(add_count) 신호에 의해서 두 개의 입력으로 선택될 수 있도록 한다. 이 때, 두 캐리 값인 Pre_c(406)와 Next_c(407)는 다중화기3(408)을 통해 선택된다. 먼저 캐리 아웃(400)과 섬 아웃(402)을 w-비트 가산기(405)를 통해 더한다. 그러면, 프리 섬(Pre_sum)과 캐리 비트인 Pre_c(406)가 출력되어 다음 j+1번째의 연산 핵심부(105) 출력의 동일 연산의 캐리 입력으로 사용하기 위해 저장되며, 이 때, 계산된 프리 섬(Pre_sum)은 워드 연산 순서 j와 일치되는 워드 레지스터(109)에 저장된다. 그리고, 두 번째 덧셈 연산에서는 시프트 데이터(401)와 이전 j-1번째의 연산 핵심부(105) 동작 이후 가산기(106)를 통해 발생되었던 프리 섬(Pre_sum)을 저장하고 있는 현재 워드 연산 순서 j보다 하나 이전인 j-1 번째의 워드 레지스터(109) 값을 w-비트 가산기(405)를 통해 더하여 넥스트 섬(Next_sum)과 캐리 Next_c(407)를 출력 저장한다. 이 때 Next_c(407)는 다음 j+1번째의 워드 연산 이후 수행될 단계 5의 두 번째 덧셈 연산을 위해 저장되며, 현재 발생된 넥스트 섬(Next_sum)은 입력 값으로 제공되었던 워드 레지스터(109), 즉 j-1번째 워드 레지스터(109)로 다시 저장되며, 이 값이 입력 Aj-1과 Bi에 대한 워드 모듈러 연산의 결과값이 된다.
상기 동작 과정을 반복하여 전체 데이터 입력 A, B, N에 대한 몽고메리 모듈러 곱셈의 최종 결과 값이 워드 레지스터(109)에 저장된다. 이 값을 중앙 처리 장치의 제어신호에 따라 32 비트씩 시스템 버스(100)로 전송하면 된다. 덧셈 연산의 시작은 연산 핵심부(105) 동작이 끝난 후 수행되므로 제어부(104)내에서 클럭 분기를 통해 그 동작 시점을 지정할 수 있고, 또한 덧셈 연산은 연산 핵심부와 독립적이므로 덧셈 결과를 기다릴 필요없이 다음 워드 데이터를 위한 연산 핵심부 동작이 수행된다. 또한 32비트 이상의 워드 단위일 경우 전체 단위를 한번에 더하는 것보단 32비트 가산기를 반복 수행하여 결과를 구하는 것이 보다 효율적이다.
상술한 바와 같이 본 발명에 의하면 몽고메리 모듈러 곱셈을 제한된 면적을 가지는 IC카드와 같은 단일 칩 시스템에 적용하기 위해 임의의 워드 단위 연산 장치를 구현함에 있어서 중앙 처리 장치와의 연동을 충분히 고려하여 데이터 입력을 위한 시간 지연을 최소화하였고, 부가되는 몽고메리 보정 인자 연산 과정 없이 연산을 수행할 수 있도록 하여 별도의 연산 과정이나 이를 위한 시간 지연을 제거할 수 있으므로 전체 연산이 단순화되어 하드웨어로의 구현 및 확장이 용이하다.
도 1은 본 발명에 따른 모듈러 곱셈 장치의 일 실시예를 나타낸 블록도,
도 2는 도 1에 도시된 2단 입력 레지스터 N, A, B의 일 실시예를 나타낸 회로도,
도 3은 도 1에 도시된 연산 핵심부의 일 실시예를 나타낸 상세도,
도 4는 도 1에 도시된 가산기의 일 실시예를 나타낸 상세도.
<도면의 주요 부분에 대한 부호의 설명>
100 : 시스템 버스 101, 102, 103 : 2단 입력레지스터 N, A, B
104 : 제어부 105 : 연산 핵심부
106 : 가산기 107 : 상태 레지스터
108 : 제어 레지스터 109 : 워드 레지스터
110 : 메모리 119 : 다중화기
120 : 중앙 처리 장치
Claims (9)
- 기설정된 시스템 버스에 접속된 중앙 처리 장치;상기 시스템 버스에 접속되어 모듈러 곱셈 연산에 필요한 데이터를 입출력하는 메모리;각기 2단으로 구성되어 상기 시스템 버스로부터 입력되는 승수 A, 피승수 B, 모듈러스 N을 각각 저장하는 2단 입력레지스터 A, B, N;상기 2단 입력 레지스터 A, B, N에 각기 저장된 데이터를 각각 받아 모듈러 연산을 수행하여 그 결과값을 캐리 아웃(Carry_out)과 섬 아웃(Sum_out)으로 나누어 출력하고 연산 과정 중 발생한 시프트 데이터(shift_data) 및 몽고메리 보정 인자 m을 저장하는 연산 핵심부;상기 시스템 버스에 접속되어 모듈러 곱셈 동작 상태를 저장했다가 외부에 알리기 위한 상태 레지스터;상기 중앙 처리 장치의 제어신호를 상기 시스템 버스를 통해 받아 저장하는 제어 레지스터;상기 시스템 버스에 접속되어 각 중간 결과 값들을 각기 저장하는 다수의 레지스터로 이루어져 모듈러 곱셈 수행 중의 부분 곱을 저장하며 최종 결과 값을 저장 및 출력하는 레지스터 그룹;상기 연산 핵심부로부터 출력된 캐리 아웃, 섬 아웃, 시프트 데이터, 및 상기 레지스터 그룹의 출력을 받아 선택적으로 2번의 덧셈을 수행하는 가산기; 및상기 시스템 버스에 접속되어 상기 제어 레지스터로부터 상기 중앙 처리 장치의 제어신호를 제공받아 모듈러 곱셈 연산의 최종 결과값을 출력할 때 까지 상기 연산 핵심부의 입출력 및 상기 가산기의 입출력을 제어하고 상기 레지스터 그룹에 새로운 값을 저장하기 위한 신호를 발생시키는 제어부를 포함하는 모듈러 곱셈 장치.
- 제 1 항에 있어서, 상기 승수 A, 피승수 B, 모듈러스 N은 상기 시스템 버스로부터 워드 단위로 입력되는 것을 특징으로 하는 모듈러 곱셈 장치.
- 제 1 항에 있어서, 상기 연산 핵심부는 상기 2단 입력 레지스터 A, B, N에 각기 저장된 데이터를 각각 받아 워드 단위의 모듈러 연산을 수행하는 것을 특징으로 하는 모듈러 곱셈 장치.
- 제 1 항에 있어서, 상기 각 중간 결과 값들은 워드 단위의 중간 결과 값들인 것을 특징으로 하는 모듈러 곱셈 장치.
- 제 1 항에 있어서, 상기 2번의 덧셈은 워드 단위로 수행되는 것을 특징으로 하는 모듈러 곱셈 장치.
- 제 1 항에 있어서, 상기 2단 입력레지스터 A, B, N은 워드단위의 입력과 동일한 비트 크기를 가지는 2개의 레지스터로 구성되는 것을 특징으로 하는 모듈러 곱셈 장치.
- 제 1 항에 있어서,상기 2단 입력레지스터 A, B, N은 상기 제어부로부터 제공되는 제 1 입력 제어 신호(Input_ctrl1)에 따라 상기 시스템 버스로부터 제공되는 데이터를 저장하는 레지스터1;클록과 상기 제어부로부터 제공되는 제 2 입력 제어 신호(Input_ctrl2)를 논리곱 연산하는 논리곱 게이트; 및상기 레지스터1로부터 제공되는 데이터를 상기 논리곱 게이트의 출력에 따라 저장하는 레지스터2로 구성되는 것을 특징으로 하는 모듈러 곱셈 장치.
- 제 1 항에 있어서,상기 연산 핵심부는 상기 2단 입력 레지스터 A, B로부터 제공되는 데이터에 대해서 상기 제어부로부터 제공되는 b 계수 값, 워드 카운트 및 토탈 카운트에 따라 A의 비트와 B의 워드를 곱하는 연산 모듈;상기 워드 레지스터와 0 에 대해서 상기 제어부로부터 제공되는 토탈 카운트에 따라 다중화기2의 입력을 결정하는 다중화기 0;외부 입력과 캐리저장 가산기2로부터 출력되는 캐리 아웃에 대해서 b 계수 값에 따라 캐리 레지스터의 입력을 결정하는 다중화기1;다중화기0의 출력과 캐리저장 가산기2로부터 출력되는 섬 아웃에 대해서 b 계수 값에 따라 섬 레지스터의 입력을 결정하는 다중화기2;캐리저장 가산기1의 캐리 입력 값을 저장하는 캐리 레지스터;캐리저장 가산기1의 섬 입력 값을 저장하는 섬 레지스터;상기 캐리 레지스터, 상기 섬 레지스터 및 상기 A의 비트와 B 워드를 곱하는 연산 모듈의 출력을 입력으로 하여 캐리와 섬의 형태로 결과 값을 출력하는 캐리저장 가산기1;상기 캐리저장 가산기1의 섬 출력의 최하위 비트를 워드 카운트에 따라 저장하는 m 레지스터;m 레지스터 내 b 계수 값과 일치하는 순서의 비트와 상기 2단 입력 레지스터 N에 대해서 상기 제어부로부터 제공되는 워드 카운트에 따른 N의 워드 값을 곱하는 연산 모듈;상기 캐리저장 가산기1의 두 출력 및 상기 m의 비트와 N의 워드를 곱하는 연산 모듈의 출력을 입력으로 하여 그 결과 값으로 캐리 아웃과 섬 아웃을 출력하는 캐리저장 가산기2; 및상기 캐리저장 가산기2의 출력인 섬 아웃의 최하위 비트를 저장하는 시프트 데이터 레지스터로 구성되는 것을 특징으로 하는 모듈러 곱셈 장치.
- 제 1 항에 있어서,상기 가산기는 상기 핵심 연산부의 출력인 캐리 아웃, 시프트 데이터 및 섬 아웃 및 시프트 데이터를 상기 제어부로부터 제공되는 애드 스타트에 따라 저장하는 캐리 아웃 레지스터, 시프트 데이터 레지스터 및 섬 아웃 레지스터;캐리 아웃 레지스터의 출력과 시프트 레지스터의 출력에 대해 상기 제어부로부터 제공되는 애드 카운트 신호에 따라 W-비트 가산기의 입력을 결정하는 다중화기1;섬 아웃 레지스터의 출력과 워드 레지스터의 출력에 대해 상기 제어부로부터 제공되는 애드 카운트 신호에 따라 W-비트 가산기의 입력을 결정하는 다중화기2;상기 다중화기1의 출력과 상기 다중화기2의 출력을 입력받아 W-비트 덧셈을 수행하여 그 출력을 1비트 캐리와 워드 크기의 결과 값으로 두 번 출력하는 W-비트 가산기;상기 W-비트 가산기의 첫 번째 1비트 캐리 출력인 Pre_c를 저장하는 레지스터 및 두 번째 1비트 캐리 출력인 Next_c를 저장하는 레지스터; 및상기 Pre_c 레지스터의 출력과 Next_c 레지스터의 출력에 대해 애드 카운트에 따라 W-비트 가산기의 1비트 캐리 입력을 결정하는 다중화기3으로 구성되는 것을 특징으로 하는 모듈러 곱셈 장치.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR10-2002-0073187A KR100481586B1 (ko) | 2002-11-22 | 2002-11-22 | 모듈러 곱셈 장치 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR10-2002-0073187A KR100481586B1 (ko) | 2002-11-22 | 2002-11-22 | 모듈러 곱셈 장치 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20040045152A KR20040045152A (ko) | 2004-06-01 |
KR100481586B1 true KR100481586B1 (ko) | 2005-04-08 |
Family
ID=37341184
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR10-2002-0073187A KR100481586B1 (ko) | 2002-11-22 | 2002-11-22 | 모듈러 곱셈 장치 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR100481586B1 (ko) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100939356B1 (ko) * | 2007-12-07 | 2010-01-29 | 한국전자통신연구원 | 모듈러 곱셈 장치 및 그 방법 |
KR101128505B1 (ko) | 2008-12-03 | 2012-03-27 | 한국전자통신연구원 | 모듈러 곱셈 연산 방법 및 장치 |
US11829731B2 (en) | 2021-11-22 | 2023-11-28 | Industrial Technology Research Institute | Modular multiplication circuit and corresponding modular multiplication method |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102214836B1 (ko) * | 2020-07-24 | 2021-02-09 | 한양대학교 에리카산학협력단 | 효율적인 양자 모듈러 곱셈기 및 양자 모듈러 곱셈 방법 |
KR102204081B1 (ko) * | 2020-07-24 | 2021-01-15 | 한양대학교 에리카산학협력단 | 효율적인 양자 모듈러 곱셈기 및 양자 모듈러 곱셈 방법 |
US20230316121A1 (en) * | 2020-07-24 | 2023-10-05 | Industry-University Cooperation Foundation Hanyang University Erica Campus | Efficient quantum modular multiplier and quantum modular multiplication method |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5742530A (en) * | 1992-11-30 | 1998-04-21 | Fortress U&T Ltd. | Compact microelectronic device for performing modular multiplication and exponentiation over large numbers |
US6085210A (en) * | 1998-01-22 | 2000-07-04 | Philips Semiconductor, Inc. | High-speed modular exponentiator and multiplier |
KR20010086516A (ko) * | 2000-03-02 | 2001-09-13 | 윤종용 | 효과적인 승산 및 누산 기능을 갖는 보조프로세서 |
KR20020063793A (ko) * | 2001-01-30 | 2002-08-05 | 미쓰비시덴키 가부시키가이샤 | 몽고메리의 알고리즘을 이용한 멱승 잉여 연산기 |
-
2002
- 2002-11-22 KR KR10-2002-0073187A patent/KR100481586B1/ko not_active IP Right Cessation
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5742530A (en) * | 1992-11-30 | 1998-04-21 | Fortress U&T Ltd. | Compact microelectronic device for performing modular multiplication and exponentiation over large numbers |
US6085210A (en) * | 1998-01-22 | 2000-07-04 | Philips Semiconductor, Inc. | High-speed modular exponentiator and multiplier |
KR20010086516A (ko) * | 2000-03-02 | 2001-09-13 | 윤종용 | 효과적인 승산 및 누산 기능을 갖는 보조프로세서 |
KR20020063793A (ko) * | 2001-01-30 | 2002-08-05 | 미쓰비시덴키 가부시키가이샤 | 몽고메리의 알고리즘을 이용한 멱승 잉여 연산기 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100939356B1 (ko) * | 2007-12-07 | 2010-01-29 | 한국전자통신연구원 | 모듈러 곱셈 장치 및 그 방법 |
KR101128505B1 (ko) | 2008-12-03 | 2012-03-27 | 한국전자통신연구원 | 모듈러 곱셈 연산 방법 및 장치 |
US11829731B2 (en) | 2021-11-22 | 2023-11-28 | Industrial Technology Research Institute | Modular multiplication circuit and corresponding modular multiplication method |
Also Published As
Publication number | Publication date |
---|---|
KR20040045152A (ko) | 2004-06-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4955182B2 (ja) | 整数の計算フィールド範囲の拡張 | |
EP1293891B2 (en) | Arithmetic processor accomodating different finite field size | |
Harris et al. | An improved unified scalable radix-2 Montgomery multiplier | |
US7277540B1 (en) | Arithmetic method and apparatus and crypto processing apparatus for performing multiple types of cryptography | |
US6539368B1 (en) | Neural processor, saturation unit, calculation unit and adder circuit | |
JP4201980B2 (ja) | マルチプレシジョン整数演算用の装置 | |
US5261001A (en) | Microcircuit for the implementation of RSA algorithm and ordinary and modular arithmetic, in particular exponentiation, with large operands | |
US20080243976A1 (en) | Multiply and multiply and accumulate unit | |
US9372665B2 (en) | Method and apparatus for multiplying binary operands | |
US7046800B1 (en) | Scalable methods and apparatus for Montgomery multiplication | |
US7240204B1 (en) | Scalable and unified multiplication methods and apparatus | |
JP4823467B2 (ja) | ガロア体からの二つの係数を乗算するための方法及びこの方法を遂行するための乗算器 | |
KR100481586B1 (ko) | 모듈러 곱셈 장치 | |
Großschädl | High-speed RSA hardware based on Barret’s modular reduction method | |
Kelley et al. | Parallelized very high radix scalable Montgomery multipliers | |
KR20080050226A (ko) | 모듈러 곱셈 장치 및 설계 방법 | |
KR101128505B1 (ko) | 모듈러 곱셈 연산 방법 및 장치 | |
US20020161810A1 (en) | Method and apparatus for multiplication and/or modular reduction processing | |
US5912904A (en) | Method for the production of an error correction parameter associated with the implementation of modular operations according to the Montgomery method | |
US20070203961A1 (en) | Multiplicand shifting in a linear systolic array modular multiplier | |
JP2000207387A (ja) | 演算装置及び暗号処理装置 | |
KR100946256B1 (ko) | 다정도 캐리 세이브 가산기를 이용한 듀얼필드상의확장성있는 몽고매리 곱셈기 | |
Tawalbeh | Radix-4 asic design of a scalable montgomery modular multiplier using encoding techniques | |
KR20000000770A (ko) | 모듈러 곱셈장치 | |
Pinckney et al. | Parallelized Booth-encoded radix-4 Montgomery multipliers |
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: 20100323 Year of fee payment: 6 |
|
LAPS | Lapse due to unpaid annual fee |