KR20080050226A - 모듈러 곱셈 장치 및 설계 방법 - Google Patents

모듈러 곱셈 장치 및 설계 방법 Download PDF

Info

Publication number
KR20080050226A
KR20080050226A KR1020070061565A KR20070061565A KR20080050226A KR 20080050226 A KR20080050226 A KR 20080050226A KR 1020070061565 A KR1020070061565 A KR 1020070061565A KR 20070061565 A KR20070061565 A KR 20070061565A KR 20080050226 A KR20080050226 A KR 20080050226A
Authority
KR
South Korea
Prior art keywords
carry
value
register
module
word
Prior art date
Application number
KR1020070061565A
Other languages
English (en)
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 한국전자통신연구원
Publication of KR20080050226A publication Critical patent/KR20080050226A/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/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
    • G06F7/505Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination
    • G06F7/506Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination with simultaneous carry generation for, or propagation over, two or more stages
    • G06F7/507Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination with simultaneous carry generation for, or propagation over, two or more stages using selection between two conditionally calculated carry or sum values
    • 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
    • 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

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)
  • Mathematical Physics (AREA)
  • Complex Calculations (AREA)

Abstract

본 발명은 모듈러 곱셈장치에 관한 것으로, 소형 단말 시스템과 같이 하드웨어 리소스의 제한과 성능 요구를 모두 만족시켜야 하는 RSA 연산기를 구현에 있어서 기 설계되어 있는 CSA 모듈의 가감만으로 다양한 모듈러 곱셈기를 설계할 수 있게 되어 하드웨어 리소스 및 성능의 조절이 가능하게 됨으로써, 시스템마다 새로운 구조로의 설계를 하지 않아도 되는 것에 관한 것이다.
모듈러 곱셈기, CSA 모듈, 워드, RSA, 몽고메리 보정인자, 캐리 저장 가산기, 레지스터, 멀티플렉서(MUX).

Description

모듈러 곱셈 장치 및 설계 방법{MODULAR MULTIPLICATION DEVICE AND METHOD FOR DESIGNING MODULAR MULTIPLICATION DEVICE}
도 1은 본 발명에 적용되는 모듈러 곱셈장치의 워드 단위의 모듈러 연산을 보여주기 위한 블록도,
도 2는 본 발명의 실시예에 따른 모듈러 곱셈장치의 구조를 도시한 블록도,
도 3은 본 발명의 실시예에 따라 모듈러 곱셈장치 설계시스템에서 모듈러 곱셈 장치를 설계하기 위한 과정을 도시한 흐름도.
본 발명은 모듈러 곱셈장치에 관한 것으로서, 더욱 자세하게는 RSA(R.Rivest, A.Shamir, L.Adlemans) 암호 알고리즘을 수행하는 모듈러 곱셈 연산을 시스템의 요구 사항에 맞도록 설계되는 모듈러 곱셈연산장치에 관한 것이다.
RSA 암호 알고리즘은 수학적으로 모듈러 지수승 연산이며, 이러한 RSA 암호 알고리즘은 모듈러 곱셈의 반복으로 이루어진다.
일반적으로 모듈러 곱셈의 빠른 수행을 위해서 모듈러 곱셈기는 하드웨어로 구현되며, 이때 구현 알고리즘으로 주로 사용되는 것이 몽고메리 알고리즘이다.
RSA 암호 알고리즘은 통신상의 정보보호를 목적으로 하기 때문에 통신 양측인 서버 측과 단말 측에 모두 구현되어 상호 간에 정보를 암복호화하는 알고리즘이다.
이때 서버 측에 구현되는 RSA 암호 알고리즘은 전력이나 면적과 같은 하드웨어 리소스가 충분하므로 고속이라는 동작 성능에 주안점을 두고 설계된다.
반면, 단말 측에 구현되는 RSA 암호 알고리즘은 하드웨어 리소스가 충분하지 않기 때문에 소형 임베디드 시스템이 되는 것이 일반적이므로 단말이 가지는 전력과 면적을 충분히 고려하여 이에 맞추어 최대의 성능을 발휘할 수 있도록 설계된다.
다시 말해서, RSA 암호 알고리즘의 구현은 각 단말 시스템에 따라 완전히 다른 구조로 설계해야 한다. 이는 단말 시스템의 구현에 있어서 RSA 설계가 통일된 구조를 가지지 못하게 되므로 항상 새로운 단말기에 대해서 새로운 RSA의 설계를 필요로 하게 되어 시스템 구현에 있어 RSA를 위한 별도의 시간과 비용 등이 필요하게 되는 문제점을 가지게 된다.
따라서 본 발명은 상기와 같은 문제점을 해결하기 위한 것으로, 단말 시스템 의 전력 및 면적과 같은 하드웨어 리소스의 제한과 성능 요구사항이 상이하여 해당 시스템마다 설계해야 하는 문제점을 해결하기 위한 모듈러 곱셈 장치 및 설계 방법을 제공함에 그 목적이 있다.
상기 목적을 달성하기 위한 본 발명의 모듈러 곱셈장치는, 초기 입력값을 선택하고, 캐리 및 섬 값을 선택하는 다수의 멀티플렉서; 상기 선택된 캐리 값 저장하는 캐리 레지스터; 상기 선택된 섬 값을 저장하는 섬 레지스터; 및 현재 순서의 한 워드의 비트와 다른 워드를 곱셈한 값, 상기 캐리 레지스터 및 섬 레지스터로부터 출력된 값을 제1 캐리 저장 가산하고, 상기 제1 캐리 저장 가산에 따른 결과와, 현재 순서의 비트와 워드 단위의 모듈러스를 승산한 결과를 제2 캐리 저장 가산하는 적어도 하나 이상의 CSA 모듈을 포함하는 것을 특징으로 한다.
상기 목적을 달성하기 위한 본 발명의 모듈러 곱셈 장치 설계 시스템에서 모듈러 곱셈 장치를 설계하기 위한 방법은, 임의의 워드 크기를 결정 및 수정하여 모듈러 곱셈기 내의 레지스터들의 크기를 결정하는 과정; 상기 모듈러 곱셈기 내에 구비될 CSA 모듈의 개수를 결정 및 수정하는 과정; 상기 결정된 레지스터들의 크기 및 상기 결정된 CSA 모듈의 개수에 따른 상기 모듈러 곱셈기의 면적, 전력 및 성능을 추정하는 과정; 상기 추정된 면적, 전력 및 성능 결과에 따라 상기 모듈러 곱셈기의 전체 하드웨어 리소스 제한 및 성능 요구를 만족하는지를 판단하는 과정; 및 상기 리소스 제한 및 성능 요구를 만족하는 경우 모듈러 곱셈기 구조로 결정하는 과정을 포함하여 모듈러 곱셈 장치를 설계하는 것을 특징으로 한다.
이하, 본 발명의 바람직한 실시 예를 첨부한 도면을 참조하여 상세히 설명한다. 본 발명을 설명함에 있어, 관련된 공지 기능 혹은 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략한다. 또한, 이해의 편의를 위하여 비록 다른 도면에 속하더라도 동일한 구성요소에는 동일한 부호를 부여하였음을 주의하여야 한다.
먼저, 본 발명에 따른 모듈러 곱셈장치에 적용되는 몽고메리 모듈러 곱셈 알고리즘에 대하여 살펴보기로 한다. 이때, RSA 연산의 기본적인 수학식 및 모듈러 곱셈의 기본적인 수학식에 대한 설명은 공지되어 있으므로 생략하기로 한다.
몽고메리 곱셈 알고리즘은 모듈러 곱셈을 잉여계수 r을 이용해서 정수 Zn영역에서 계산을 rZn영역으로 옮겨 계산하는 방법으로 몫과 나머지를 구하는 고전적인 나눗셈을 사용하지 않고서 모듈러 연산을 가능케 하는 방법이다.
R=A*B*r-1modN
상기 <수학식 1>을 구현하기 위한 일반적인 몽고메리 알고리즘의 수행 과정은 다음 제1 알고리즘과 같은 순서로 이루어진다.
<제1 알고리즘>
Step 1 : R = 0
Step 2 : R = R + A*B
Step 3 : m = R*N*modr (단, r*r-1-N*N*=1)
Step 4 : R = (R + m*N)/r
Step 5 : if(R>N)R = R- N
Step 6 : return (R)
이러한 몽고메리 알고리즘의 수행 과정에서 몽고메리 보정 인자 m은 다시 별도의 연산 과정 없이 단계적인 연산 내에서 이루어질 수 있으며, 하기 제2 알고리즘과 같은 과정을 통해 이루어진다.
<제2 알고리즘>
Step 1 : R = 0
Step 2 : for i = 0 to n-1{
R = R + Aj*B
R = R + R0*N
R = R/2
}
Step 3 : if(R>N) R = R -N
Step 4 : return (R)
또한, 전체 비트 크기가 n일 경우에 전체 비트 크기를 한번에 처리하기에 하드웨어 리소스가 부족한 단말인 경우, 임의의 워드 단위로 나누어 처리하게 된다.
이러한 임의의 워드 단위로 나누어 처리하는 과정은 하기 제3 알고리즘과 같 다.
<제3 알고리즘>
Step 1: R = 0
Step 2 : for i = 0 to p-1{
Step 3 : R = R + A*Bi(Bi는 w 비트 워드)
m = R0*N0mod2W(N0*N0 * = -1mod2W)
R = R + N*m
R = R/2W
}
Step 4 : if(R>N) R = R - N
Step 5 : return(R)
또한, 임의의 워드 단위로 나누어 처리하는 과정에서 몽고메리 알고리즘 보정 인자 m을 별도의 연산 과정 없이 단계적인 연산 내에서 처리하는 방법은 하기 제4 알고리즘과 같다.
<제4 알고리즘>
Step 1 : R = 0, T =0
Step 2 : for i = 0 to p-1{
Carry_pre = 0, Carry_next = 0
Step 3 : for j = 0 to p-1{
If(i==0) Rj = 0(Rj 는 w + 1 비트의 크기)
Else Rj = Tj(Tj 는 w 비트의 크기)
Step 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
Step 5 : (Carry_pre, Tj)=Rj + Carry_pre
(Carry_next, Tj-1)=Tj-1 + Shift_data + Carry_next
}end for j
Step 6 :}end for i
Step 7 : If(T>N) T=T-N(단, T는 최종 carry를 포함한 n+1 비트의 크기)
Step 8 : return(T)
살펴본 바와 같이, 몽고메리 보정 인자 없이 몽고메리 모듈러 연산을 수행하는 방법은 전체 비트를 한꺼번에 처리할 경우는 상기 제2 알고리즘의 1단계 내지 4단계(Step 1 내지 4)를 통해 수행하고, 임의의 워드 단위로 나누어 수행할 경우는 상기 제4 알고리즘의 1단계 내지 8단계(Step 31 내지 38)를 통해서 구현될 수 있다.
본 발명의 실시예에 따른 상기 워드 단위의 모듈러 곱셈장치는 임의의 워드 단위로 나누어 처리하는 과정에서 몽고메리 알고리즘 보정 인자 m을 별도의 연산 과정 없이 단계적인 연산 내에서 처리하는 상기 제4 알고리즘의 3단계(Step 3) 및 4단계(Step 4)를 이용한다.
상기 워드 단위의 모듈러 곱셈 장치는 전체 비트 크기가 n일 경우에 전체 비트 크기를 한번에 처리하기에 하드웨어 리소스가 부족한 단말인 경우, 임의의 워드 단위로 나누어 처리 과정이 전체 w 워드를 수행하기 위해 b순서에 해당하는 비트 연산을 한 클럭에 수행되도록 한다.
상기 제4 알고리즘을 적용한 임의의 워드 단위로 설계되는 모듈러 곱셈 장치의 구조를 첨부된 도면을 참조하여 설명하기로 한다.
도 1은 본 발명에 적용되는 모듈러 곱셈장치의 워드 단위의 모듈러 연산을 보여주기 위한 블록도이고, 도 2는 본 발명의 실시예에 따른 모듈러 곱셈장치의 구조를 도시한 블록도이다.
상기 도 1을 참조하면, 상기 모듈러 곱셈 장치는 연산과정의 중간값을 캐리 저장 가산기(carry save adder)를 사용하여 캐리(carry)와 섬(sum)으로 나누어 중 간 연산을 빠르게 수행하고 있음을 알 수 있다. 이러한 모듈러 곱셈 장치는 다수의 멀티플렉서(MUX)(111, 112, 113), 캐리 레지스터(121), 섬 레지스터(122), 제1 캐리 저장 가산기(132), 제2 모듈(133) 및 제1 캐리 저장 가산기(134), M 레지스터(140) 및 데이터 시프트 레지스터(150)를 포함한다.
이와 같이 모듈러 곱셈 장치는 상기 제4 알고리즘의 4단계의 핵심 연산을 수행하면 전체 워드를 수행하기 위해 b순서에 해당하는 비트 연산을 한 클럭에 수행한다. 그러나 실제 모듈러 곱셈 장치는 시스템에서 요구하는 성능을 만족시킬 수 있어야하기 때문에 w 클럭 동안 한 워드를 수행하는 것이 성능을 만족시키지 못할 경우 성능 향상을 꾀하기 위해 상기 도 2에 도시된 바와 같은 구조를 가질 필요가 있다.
상기 도 2를 참조하면, 본 발명의 실시예에 따른 모듈러 곱셈 장치는 상기 도 1에 도시된 바와 같은 상기 제1 모듈(131), 제1 캐리 저장 가산기(132), 제2 모듈(133) 및 제1 캐리 저장 가산기(134)를 하나의 캐리 저장 가산 모듈(Carry Save Adder 이하, CSA 모듈이라 칭함)(130)로 통합하여 구현하며, 상기 CSA 모듈(130)은 성능 향상을 꾀할 수 있도록 적어도 하나 이상으로 구현된다. 즉, 2개의 CSA 모듈(130)을 가질 경우 한 클럭 내에 b번째 연산 및 b+1번째 연산을 수행할 수 있게 된다. 이는 상기 도 1에 도시된 바와 같은 모듈러 곱셈 장치에 비해서 2배의 동작 속도를 가지게 되어 성능 향상을 쉽게 이룰 수 있게 된다.
제1 멀티플렉서(111)는 상기 제4 알고리즘의 3단계의 초기 입력 값을 선택하며, 제2 멀티플렉서(112)는 캐리(carry) 값을 선택하여 캐리 레지스터(carry register)(121)로 전달하고, 제3 멀티플렉서(113)는 섬(sum)의 값을 선택하여 섬 레지스터(sum register)(122)로 전달한다.
상기 캐리 레지스터(121) 및 섬 레지스터(122)는 각각 자신에게 전달되는 캐리 및 섬을 저장한다. 즉, w-bit 크기를 순서대로 연산하는데 있어서 b 번째 클럭이 들어올 때 해당하는 값을 저장하게 된다. 따라서 전체 연산을 모두 수행하기 위해서는 총 w 클럭이 필요하게 된다.
상기 CSA 모듈(130)은 제1 모듈(131), 제1 자리 올림 보존 가산기(132), 제2 모듈(133) 및 제2 캐리 저장 가산기(134)를 포함하며,
상기 제1 모듈(131)은 A의 j번째 워드와 B의 i번째 워드를 곱하는데 있어서 b번째 Aj비트와 B의 i번째 워드를 곱하고, 그 결과인 Ajb*Bi를 제1 캐리 저장 가산기(Carry Save Adder1)(132)에 제공한다. 이때, 제1 모듈(131)은 비트와 워드의 곱셈을 수행하기 때문에 w개의 논리곱(AND) 로직으로 설계되어 질 수 있다.
상기 제1 캐리 저장 가산기(132)는 덧셈을 고속으로 하기 위해 1회째의 덧셈에서 각 자리의 부분합 출력과 자리 올림 출력을 함께 보존하여 다음번의 덧셈에 이월하는 구조의 회로이다. 그리고 상기 제1 캐리 저장 가산기(132)는 캐리 레지스터(121), 섬 레지스터(122)의 출력 값 및 제1 모듈(130)의 출력 값(Ajb*Bi)을 더하고, 그 결과 값을 'carry_mid'와 'sum_mid'로 출력한다. 이때, 상기 제4 알고리즘의 몽고메리 알고리즘 보정 인자 m을 별도의 연산 과정 없이 단계적인 연산 내에서 처리하는 과정에서, 몽고메리 보정 인자는 단순히 'sum_mid'의 최하위 비트 값이 된다. 이는 다음 워드 연산에서 사용되기 위해 M 레지스터(140)에 저장된다. 이때, j 값이 0일 경우에만 저장되며, 다른 경우 이전에 저장된 값을 그대로 이용한다.
또한, 상기 제1 캐리 저장 가산기(132)는 각 클럭에 하나 이상의 몽고메리 보정인자(m)를 발생하고, 상기 제2 캐리 저장 가산기(134)는 각 클럭에 하나 이상 시프트 데이터(shift_data)를 발생한다. 이에 따라 상기 M 레지스터(140) 및 상기 시프트 데이터 레지스터(150)는 상기 발생되는 몽고메리 보정인자(m) 및 시프트 데이터(shift_data)를 저장한다.
상기 제2 모듈(133)은 M 레지스터(140)에 저장된 값에서 현재 진행되고 있는 b번째 값인 mb와 j번째 모듈로서 Nj를 승산하여 mb*Nj를 구하고, 구해진 mb*Nj를 제2 캐리 저장 가산기(Carry Save Adder)(134)에 제공한다. 이때, 제2 모듈(133)은 제1 모듈(131)과 마찬가지로 논리곱(AND) 로직으로 설계되어 질 수 있다.
상기 제2 캐리 저장 가산기(134)는 제1 캐리 저장 가산기(132)의 출력인 'carry_mid', 'sum_mid' 및 제2 모듈(133)의 출력인 mb*Nj를 저장하고, b번째 연산의 최종 값인 'carry_out'이고 'sum_out'을 출력한다. 그리고 상기 제2 캐리 저장 가산기(134)가 b가 w 클럭 동안 동작하여 최종 워드 단위의 모듈러 곱셈을 수행했을 때는 상기 'carry_out'이고 'sum_out'을 외부로 출력하며, 모듈러 곱셈을 수행하지 않은 경우에는 상기 'carry_out'이고 'sum_out'을 다시 각 해당하는 MUX(112) 또는 MUX(113)으로 리턴하여 다음 번째의 연산을 수행한다. 이때, 상기 'sum_out'의 최종 값은 설정된 수(예를 들어 2)로 나누어지고, 나머지는 버려지게 된다.
상기 시프트 데이터 레지스터(shift_data register)(150)는 상기 버려지는 나머지를 워드 단위의 모듈러 연산이 종료된 후에 시프트 데이터(shift_data)로 출력된다. 이러한 나머지는 상기 수학식 5의 5단계의 덧셈 연산에 하나의 입력 값으로 필요하게 된다.
이와 같이 본 발명의 실시예에 따른 곱셈 장치는 별도의 수학적 알고리즘이나 복잡한 구조 변경을 가하지 않고도 간단히 높은 기수(high radix) 모듈러 연산을 가능하게 함을 알 수 있다.
그러면 이와 같은 구조를 갖는 본 발명의 실시예들에 따라 모듈러 곱셈장치 설계시스템에서 곱셈 장치를 설계하기 위한 방법에 대해 첨부된 도면을 참조하여 구체적으로 설명하기로 한다.
도 3은 본 발명의 실시예들에 따라 모듈러 곱셈 장치 설계시스템에서 모듈러 곱셈 장치를 설계하기 위한 과정을 도시한 흐름도이다.
상기 도 3을 참조하면, 300단계에서 모듈러 곱셈 장치 설계시스템은 설계자로부터 임의의 워드 크기의 결정 및 수정이 있으면, 결정 또는 수정된 임의의 워드 크기에 따라 모듈러 곱셈 장치 내의 각종 레지스터 및 데이터 버스의 크기를 결정한다.
이후, 301단계에서 모듈러 곱셈장치 설계시스템은 모듈러 곱셈장치 내의 CSA 모듈을 몇 개나 배치할 것인가를 결정한다.
그런 다음 302단계에서 모듈러 곱셈장치 설계시스템은 전체 하드웨어 리소스 및 동작 성능을 고려하여 결정한 내용을 반영한 모듈러 곱셈장치의 하드웨어 상위 설계를 수행하고, 합성 툴 등을 이용하여 면적, 전력 및 성능을 추정한다. 이에 따라 303단계에서 모듈러 곱셈 장치 설계시스템은 상기 추정한 결과가 시스템의 하드웨어 리소스, 즉 면적과 전력을 만족하는지 그리고 성능 요구를 만족하는지를 검사한다.
상기 검사 결과, 추정한 결과가 하드웨어 리소스 제한 및 성능요구를 만족하면, 304단계에서 모듈러 곱셈장치 설계시스템은 하드웨어 상위 설계를 통한 구조를 모듈러 곱셈장치의 구조로 결정한 후 동작을 종료한다.
반면, 추정한 결과가 하드웨어 리소스 제한 및 성능요구를 만족하지 못하면, 모듈러 곱셈장치 설계시스템은 300단계로 진행하여 상기 과정들을 반복 수행한다.
상술한 바와 같은 본 발명의 실시예에 따라 본 발명은 소형 단말 시스템과 같이 하드웨어 리소스의 제한과 성능 요구를 모두 만족시켜야 하는 RSA 연산기를 구현함에 있어서 기 설계되어 있는 CSA 모듈의 가감만으로 다양한 모듈러 곱셈 장치를 설계할 수 있다.
한편, 본 발명의 상세한 설명에서는 구체적인 실시 예에 관하여 설명하였으나, 본 발명의 범위에서 벗어나지 않는 한도 내에서 여러 가지 변형이 가능함은 물론이다. 그러므로 본 발명의 범위는 설명된 실시 예에 국한되어 정해져서는 안되며 후술하는 발명청구의 범위뿐만 아니라 이 발명청구의 범위와 균등한 것들에 의해 정해져야 한다.
상술한 바와 같이, 본 발명은 CSA 및 관련 모듈을 하나로 통합하고, CSA 모듈의 가감을 통해서 하드웨어 리소스 및 성능의 조절이 가능함으로써 구조의 통일성을 가짐으로써 구조 분석 및 변경이 용이하며, 시스템마다 새로운 구조로의 설계를 하지 않아도 되므로 이에 따른 성능을 향상시킬 수 있으며, 시간 및 비용을 절감할 수 있는 효과가 있다.

Claims (6)

  1. 초기 입력값을 선택하고, 캐리 및 섬 값을 선택하는 다수의 멀티플렉서;
    상기 선택된 캐리 값 저장하는 캐리 레지스터;
    상기 선택된 섬 값을 저장하는 섬 레지스터; 및
    현재 순서의 한 워드의 비트와 다른 워드를 곱셈한 값, 상기 캐리 레지스터 및 섬 레지스터로부터 출력된 값을 제1 캐리 저장 가산하고, 상기 제1 캐리 저장 가산에 따른 결과와, 현재 순서의 비트와 워드 단위의 모듈러스를 승산한 결과를 제2 캐리 저장 가산하는 적어도 하나 이상의 캐리 저장 가산(CSA) 모듈을 포함하는 것을 특징으로 하는 모듈러 곱셈 장치.
  2. 제1항에 있어서,
    상기 제1 캐리 저장 가산의 최하위 값으로 결정되는 몽고메리 보정인자를 저장하는 M 레지스터; 및
    상기 제2 캐리 저장 가산 시 최하위 값으로 버려지는 값으로 결정되는 시프트 데이터를 저장하는 시프트 데이터 레지스터를 더 포함하는 것을 특징으로 하는 모듈러 곱셈 장치.
  3. 제1항에 있어서, 상기 적어도 하나 이상의 캐리 저장 가산(CSA) 모듈은,
    상기 현재 순서의 한 워드의 비트와 상기 다른 워드를 곱셈하는 제1 모듈;
    상기 제1 모듈의 출력값, 상기 캐리 레지스터의 출력값 및 상기 섬 레지스터의 출력 값을 캐리 저장 가산하여 캐리값 및 섬 값을 출력하고, 상기 캐리 저장 가산에 따라 최하위 값으로 결정되는 현재 순서의 몽고메리 보정인자를 출력하는 상기 제1 캐리 저장 가산기;
    현재 순서의 상기 몽고메리 보정인자 및 상기 워드 단위의 모듈러스를 곱하는 제2 모듈; 및
    상기 제2 모듈의 출력값 및 상기 제1 캐리 저장 가산기로부터 출력되는 캐리 값 및 섬 값을 캐리 저장 가산하고, 최하위 값으로 버려지는 값으로 결정되는 시프트 데이터를 출력하는 상기 제2 캐리어 저장 가산기를 포함하는 것을 특징으로 하는 모듈러 곱셈 장치.
  4. 제3항에 있어서,
    상기 제2 캐리어 저장 가산기는 다음 순서의 연산을 수행하기 위한 다음 CSA 모듈로 상기 캐리 저장 가산에 따른 결과를 출력함을 특징으로 하는 모듈러 곱셈 장치.
  5. 제3항에 있어서,
    상기 몽고메리 보정인자는 상기 제1 캐리 저장 가산기로부터 출력되는 섬 값의 최하위 비트 값으로서 다음 워드 연산에 사용되기 위해 j값이 0인 경우에 저장됨을 특징으로 하는 모듈러 곱셈 장치.
  6. 임의의 워드 크기를 결정 및 수정하여 모듈러 곱셈기 내의 레지스터들의 크기를 결정하는 과정;
    상기 모듈러 곱셈기 내에 구비될 캐리 저장 가산(CSA) 모듈의 개수를 결정 및 수정하는 과정;
    상기 결정된 레지스터들의 크기 및 상기 결정된 CSA 모듈의 개수에 따른 상기 모듈러 곱셈기의 면적, 전력 및 성능을 추정하는 과정;
    상기 추정된 면적, 전력 및 성능 결과에 따라 상기 모듈러 곱셈기의 전체 하드웨어 리소스 제한 및 성능 요구를 만족하는지를 판단하는 과정; 및
    상기 리소스 제한 및 성능 요구를 만족하는 경우 모듈러 곱셈기 구조로 결정하는 과정을 포함하여 모듈러 곱셈 장치 설계 시스템에서 모듈러 곱셈 장치를 설계하는 것을 특징으로 하는 모듈러 곱셈 장치 설계 방법.
KR1020070061565A 2006-12-01 2007-06-22 모듈러 곱셈 장치 및 설계 방법 KR20080050226A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020060120732 2006-12-01
KR20060120732 2006-12-01

Publications (1)

Publication Number Publication Date
KR20080050226A true KR20080050226A (ko) 2008-06-05

Family

ID=39805721

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020070061565A KR20080050226A (ko) 2006-12-01 2007-06-22 모듈러 곱셈 장치 및 설계 방법

Country Status (1)

Country Link
KR (1) KR20080050226A (ko)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20130128695A (ko) * 2012-05-17 2013-11-27 삼성전자주식회사 모듈러 계산 유닛 및 그것을 포함하는 보안 시스템
CN112233742A (zh) * 2020-09-30 2021-01-15 吾征智能技术(北京)有限公司 一种基于聚类的病历文档分类系统、设备、存储介质
KR102204081B1 (ko) * 2020-07-24 2021-01-15 한양대학교 에리카산학협력단 효율적인 양자 모듈러 곱셈기 및 양자 모듈러 곱셈 방법
WO2022019443A1 (ko) * 2020-07-24 2022-01-27 한양대학교 에리카산학협력단 효율적인 양자 모듈러 곱셈기 및 양자 모듈러 곱셈 방법
US11829731B2 (en) 2021-11-22 2023-11-28 Industrial Technology Research Institute Modular multiplication circuit and corresponding modular multiplication method

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20130128695A (ko) * 2012-05-17 2013-11-27 삼성전자주식회사 모듈러 계산 유닛 및 그것을 포함하는 보안 시스템
US9098381B2 (en) 2012-05-17 2015-08-04 Samsung Electronics Co., Ltd. Modular arithmatic unit and secure system including the same
KR102204081B1 (ko) * 2020-07-24 2021-01-15 한양대학교 에리카산학협력단 효율적인 양자 모듈러 곱셈기 및 양자 모듈러 곱셈 방법
WO2022019443A1 (ko) * 2020-07-24 2022-01-27 한양대학교 에리카산학협력단 효율적인 양자 모듈러 곱셈기 및 양자 모듈러 곱셈 방법
CN112233742A (zh) * 2020-09-30 2021-01-15 吾征智能技术(北京)有限公司 一种基于聚类的病历文档分类系统、设备、存储介质
CN112233742B (zh) * 2020-09-30 2024-02-23 吾征智能技术(北京)有限公司 一种基于聚类的病历文档分类系统、设备、存储介质
US11829731B2 (en) 2021-11-22 2023-11-28 Industrial Technology Research Institute Modular multiplication circuit and corresponding modular multiplication method

Similar Documents

Publication Publication Date Title
JP5266354B2 (ja) ガロア拡大体・積算/積算加算・積和演算装置
Ercegovac et al. Very-high radix division with prescaling and selection by rounding
EP1471420A2 (en) Montgomery modular multiplier and method thereof using carry save addition
KR100682354B1 (ko) 다배장 데이터 곱합 연산 처리 회로 및 몽고메리 곱합잉여 연산 회로
CN115344237B (zh) 结合Karatsuba和蒙哥马利模乘的数据处理方法
KR100591761B1 (ko) 몽고메리 모듈러 곱셈기 및 캐리 저장 가산을 이용한몽고메리 모듈러 곱셈 방법
CN113282273A (zh) 用于多种格式的浮点运算的硬件
KR20110105555A (ko) 효율적인 하드웨어 구성을 갖는 몽고메리 승산기
KR20080050226A (ko) 모듈러 곱셈 장치 및 설계 방법
Shieh et al. A new algorithm for high-speed modular multiplication design
Dai et al. Area-time efficient architecture of FFT-based montgomery multiplication
US7046800B1 (en) Scalable methods and apparatus for Montgomery multiplication
JP3551113B2 (ja) 除算器
US7240204B1 (en) Scalable and unified multiplication methods and apparatus
KR101128505B1 (ko) 모듈러 곱셈 연산 방법 및 장치
Matutino et al. An efficient scalable RNS architecture for large dynamic ranges
RU2666303C1 (ru) Способ и устройство для вычисления хэш-функции
US7266577B2 (en) Modular multiplication apparatus, modular multiplication method, and modular exponentiation apparatus
Piestrak Design of multi-residue generators using shared logic
KR100481586B1 (ko) 모듈러 곱셈 장치
Sutter et al. Comparative study of SRT-dividers in FPGA
KR100480997B1 (ko) GF(p)와 GF(2^m)의 유한체 곱셈 연산 장치
US6725360B1 (en) Selectively processing different size data in multiplier and ALU paths in parallel
KR100939356B1 (ko) 모듈러 곱셈 장치 및 그 방법
KR100946256B1 (ko) 다정도 캐리 세이브 가산기를 이용한 듀얼필드상의확장성있는 몽고매리 곱셈기

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application