KR20000000770A - 모듈러 곱셈장치 - Google Patents

모듈러 곱셈장치 Download PDF

Info

Publication number
KR20000000770A
KR20000000770A KR1019980020592A KR19980020592A KR20000000770A KR 20000000770 A KR20000000770 A KR 20000000770A KR 1019980020592 A KR1019980020592 A KR 1019980020592A KR 19980020592 A KR19980020592 A KR 19980020592A KR 20000000770 A KR20000000770 A KR 20000000770A
Authority
KR
South Korea
Prior art keywords
bit
register
multiplier
output
value
Prior art date
Application number
KR1019980020592A
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 정선종
Priority to KR1019980020592A priority Critical patent/KR20000000770A/ko
Publication of KR20000000770A publication Critical patent/KR20000000770A/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
    • G06F7/523Multiplying only
    • G06F7/53Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel
    • G06F7/5324Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel partitioned, i.e. using repetitively a smaller parallel parallel multiplier or using an array of such smaller multipliers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/60Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
    • G06F7/72Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
    • G06F7/722Modular multiplication

Landscapes

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

Abstract

본 발명은 정보 보호 기술을 구현하는 데 사용되는 암호화 칩의 핵심 부품인 모듈러 곱셈기(Modular Multiplier)에 관한 것이다.
본 발명은 몽고메리 알고리즘을 바탕으로하여 각 워드 연산자들에 대해 잉여 이진(Redundant Binary) 연산과 파이프라인 연산이 가능하도록 설계하였기 때문에 고속의 연산 수행 능력을 나타낸다. 특히, 같은 모듈러스(Modulus)에 대해 반복적인 곱셈 연산을 수행하는 RSA(Rivest Shamir Adleman) 암호 알고리즘 구현의 경우에는 모듈러 연산을 시프트 연산으로 가능하게 하는 몽고메리 알고리즘에서의 연산 변환 작업이 반복 곱셈 연산에서의 처음과 끝에서만 필요하기 때문에 몽고메리 알고리즘이 다른 알고리즘에 비해 하드웨어 구현 알고리즘으로 매우 적합하다.
또한, RB-NB(Redundant Binary - Normal Binary) 변환이 앞에서 언급한 것과 마찬가지로 반복 곱셈 연산의 처음과 끝에서만 행해주고 중간의 연산들은 RB 곱셈기로 이를 처리해 주면 일반 보통의 NB 곱셈기로 구현한 것 보다 훨씬 빠른 속도의 전체 모듈러 곱셈을 수행할 수 있다. 여기에 각 연산자의 워드 단위에 대한 데이터 상관관계(Data Dependency)를 고려하여 파이프라인 연산을 가능하도록 하드웨어를 설계하였기에 고속 연산 처리가 가능하다.

Description

모듈러 곱셈장치
본 발명은 모듈러 곱셈장치에 관한 것으로, 특히 복잡한 RSA 암호 알고리즘을 빠르게 처리할 수 있는 잉여 이진 연산(Redundant Binary Arithmetic; 이하, RB 연산 이라 함)과 파이프라인 구조의 모듈러 곱셈장치에 관한 것이다.
RSA 암호 알고리즘은 모듈러 멱승 연산(Modular Exponentiation Operation)을 주 연산으로 사용하였기에 현재 기술로는 다른 암호 알고리즘보다 견고하다는 장점이 있는 반면에, 처리속도가 느리다는 것이 큰 단점이다. 이에 실시간 암호 처리 프로세서 구현에 바탕이 되는 고속 모듈러 곱셈장치를 설계하게 되었다.
해외에서는 정보 보호 기술에 대해 민간 단체를 통해서도 이미 수십년 전부터 많은 연구를 해왔다. 70년대 후반에 Diffie 와 Hellman 에 의해 공개 키 암호 알고리즘이 발표되고, 곧이어 이 알고리즘에 근거한 Rivest, Shamir 그리고 Adleman 의 RSA 암호 알고리즘이 발표되면서 많은 사람들이 이들 암호 알고리즘과 구현에 대해 연구하였다. RSA 암호 알고리즘 구현 방법은 크게 두가지로 나눌 수 있다. 하나는 어레이 곱셈기(Array Multiplier) 구조를 응용한 방법이고, 다른 하나는 80년대 중반 몽고메리(Montgomery)가 발표한 몽고메리 알고리즘을 응용하여 구현하는 방법이 있다. 몽고메리 알고리즘은 하드웨어 구현이 어려운 임의의 수에 대한 모듈러 연산을 단순히 시프트(Shift) 연산으로 변환하여 해결하기 때문에 디지털 IC 설계를 통한 구현 및 일반 CPU 나 DSP 등에서의 알고리즘 구현을 매우 용이하도록 하였다. 몽고메리 알고리즘의 단점은 모듈러 연산에서 시프트 연산을 위한 연산자 변환작업으로 인해 단일 곱셈 연산에 대해서는 일반 모듈러 곱셈기보다 성능이 느릴 수 있다는 점이다. 그러나, RSA 암호 알고리즘처럼 같은 모듈러스(Modulus)에 대해 반복 곱셈 연산을 행하는 응용영역에 대해서는 이 연산자 변환 작업이 매번 필요하지 않기 때문에, 다른 모듈러 곱셈기보다 고속으로 RSA 암호화를 수행할 수 있다는 것이 특징이다.
또 하나의 암호 칩 구현 방법은 RB 연산 시스템을 사용하는 방법이다. 90년대 초 Takagi 등 많은 학자들이 RB 연산 시스템을 사용하여 암호 알고리즘을 구현하려 노력하였다.
RB 곱셈기의 단점은 입력단과 출력단의 RB-NB(Redundant Binary - Normal Binary) 변환작업으로 인한 수행 처리시간의 증가이다. 그러나, 이 역시 반복 곱셈 연산이 많은 RSA 암호 알고리즘에서는 이 변환 작업을 매번 행하지 않기 때문에 그 만큼 처리 속도를 일반 NB 곱셈기에 비해 빠르게 수행할 수 있는 장점이 있다.
지금까지 RSA 암호 알고리즘은 다른 암호알고리즘에 비해 많은 연산 능력을 필요로 하기 때문에 지금까지 구현된 제품들은 수행 처리 속도가 늦은 편이었다.
따라서, 본 발명에서는 몽고메리 알고리즘을 바탕으로 파이프라인 기능을 통해 전체 수행에 필요한 클럭(Clock) 수를 줄이고, 또한 RB 연산을 통해 클럭 사이클(Clock Cycle)을 줄임으로써, 전체 RSA 암호화에 걸리는 시간을 줄일 수 있는 잉여 이진 연산과 파이프라인 구조의 모듈러 곱셈장치를 제공하는 데 그 목적이 있다.
상술한 목적을 달성하기 위한 본 발명은 모듈러 곱셈의 내부값을 저장하기 위한 어레이 저장기와, 상기 어레이 저장기의 승수값을 저장하기 위한 승수 레지스터와, 상기 어레이 저장기의 피승수값을 저장하거나 모듈러값을 저장하기 위한 피승수/모듈러값 레지스터와, 상기 어레이 저장기로부터 역수를 구하기 위한 역계산기와, 파이프라인 곱셈기와, 상기 파이프라인 곱셈기의 출력을 자체 순환시키기 위한 파이프라인 순환기와, 상기 역계산기의 출력과 상기 파이프라인 곱셉기의 출력에 대하여 직렬 곱셈을 수행하는 직렬 곱셈기와, 상기 직렬 곱셈기로 부터 출력되는 몫을 처리하기 위한 몫처리기와, 상기 파이프라인 순환기의 출력에 따라 상기 몫처리기의 출력과 상기 승수레지스터의 출력을 선택하는 2:1 다중화기와, 상기 파이프라인 순환기의 출력에 따라 상기 2:1 다중화기의 출력 및 상기 피승수/모듈러값 레지스터의 출력에 대해 병렬 곱셈을 수행하는 상기 파이프라인 곱셈기의 출력을 보상하여 상기 어레이 저장기로 입력시키기 위한 보상기를 포함하여 구성된 것을 특징으로 한다.
도 1은 (P+AiB)+QiN 연산의 워드단위 파이프라인 수행과정(s=4, I=0의 예)도.
도 2는 본 발명에 적용되는 파이프라인 곱셈기의 구조도.
도 3은 본 발명에 따른 모듈러 곱셈장치의 구조도.
<도면의 주요 부분에 대한 부호의 설명>
51: 어레이 저장기 52: 승수 레지스터
53: 피승수/모듈러값 레지스터 54: 2:1 다중화기
55: 보상기 56: 몫처리기
57: 역계산기 58: 직렬 곱셈기
59: 파이프라인 곱셈기 60: 파이프라인 순환기
다음 [수학식 1]과 같은 연산을 모듈러 곱셈 연산이라 한다.
P=ABmodN
이 때, RSA 암호 알고리즘에서는 N은 소수로 제한되어진다. 몽고메리 알고리즘은 N에 대한 모듈러 연산을 다음 [표 1]과 같은 시프트 연산을 통해 모듈러 곱셈을 행하도록 하였다.
for i = 0 to s-1 {Qi= ((P0+AiB0)(r-N0)-1) mod rP =(P+AiB+QiN)/r}
이를 [수학식 2]와 [수학식 3]으로 각각 표현하면 다음과 같다.
여기서, 전체 n비트의 수 A, B, N은 [수학식 1]에서의 연산자들을 나타내고, 이 연산자들을 임의의 k 비트 자릿수로 나누었을 때 i번째 워드 수를 Ai, Qi식으로 나타내는 한편 총 워드 수를 s (=n/k)로 표현한다. 이 때, r은 N0보다 큰 수중에 N0와 서로 소인 수를 선택하는데, 디지털 IC 설계에서 워드가 k자리수인 경우 보통 연산의 편의를 위해 r=2k으로 선택한다. Q, P는 위 루프 연산의 중간 값들이고 루프를 끝냈을 때의 P값이 최종 모듈러 곱셈 연산 값으로서, 그 값은 P=ABR-1mod N이 된다. 물론 이때 P의 범위는 0<P<2N 이므로 0<P<N 범위의 수로 맞춰주기 위한 보정작업이 필요하다. 상기 워드 단위 연산을 위한 몽고메리 알고리즘 구현을 다음과 같이 생각할 수 있다.
[수학식 2]의 연산량은 [수학식 3]의 연산량보다 적으므로 우선 [수학식 3]을 효율적으로 구현하는데 관점을 둔다. [수학식 3]을 다음 [수학식 4]와 같이 묶어서 표현할 수 있다.
즉, P+AiB에 대한 연산을 효율적으로 구현하면, 상기 [수학식 3]은 이 연산의 반복 연산이므로 연산을 빠르게 구현할 수 있게 된다. 이를 위한 도 1과 같은 파이프라인 구조를 생각하여 보자.
도 1에서 연산자 A, B, N, Q는 편의상 4워드의 수로 생각하고 연산 절차를 나타내었고, 가로축을 따라 오른쪽에서 왼쪽으로 시간에 따른 연산 순서를 나타내었다. 한 클럭에 승수, 피승수를 1워드씩 받아 들여서 2워드 곱셈 값을 산출하는 곱셈기를 생각하고, 연산 지연 시간(Delay Time)은 없다고 가정하자. 도 1에 나타난 바와 같이 (P+AiB)+QiN 연산에서 P'=P+AiB 연산을 우선 수행하기 위해 연산자 B의 워드 단위의 수를 매 클럭마다 곱셈기의 입력으로 넣어준다. 즉, 첫 클럭에서는 AiB0곱셈 값을 계산하고, 그 다음 클럭에서는 AiB1, AiB2의 곱셈을 수행하도록 한다. 이 때, 그림의 시간축에 맞추어서 2워드 수인 곱셈 결과값 AiB0를 1워드씩 두 클럭에 걸쳐 그 값을 내도록 한다. 도 1과 같이 4워드의 B 연산자와 1워드 A0값과의 곱을 예로 들면, 곱셈연산 시작으로부터 5클럭 동안 각각의 부분 곱(Partial Product)들이 생성되고, 이들 부분 곱들을 다 더하면 1워드 수와 4워드 수의 곱인 AiB 곱셈 값을 5클럭에 걸쳐 하위 자릿수부터 1워드씩 얻을 수 있다. P'=P+AiB 연산을 수행하기 위해서는 처리 속도를 높이기 위해 AiB 값을 얻은 후에 다시 이 값에 4 또는 5워드 값 P를 더해주기 보다는 이 덧셈 연산을 AiB 곱셈 연산의 부분 곱이 생성될 때 이 부분 곱과 함께 P의 같은 자릿수의 1워드 수와 덧셈 연산을 처리하도록 한다. 결국 P'j값이 나오기 위해서는 다음 [수학식 5]와 같은 연산들이 같이 이루어져야 한다.
Pj =Pj+AiBj-1의상위1워드값+AiBj의하위1워드값+Pj-1 연산의Carry-in
도 1에서 5번째 클럭까지가 위의 덧셈 병렬 연산을 더하여 5워드 크기의 P' 값을 얻는 과정을 나타내었다. 이 연산을 위한 하드웨어 구조를 도 2에 나타내었다.
도 2의 곱셈기 기본 구조는 잉여 이진 트리(Redundant Binary Tree) 구조를 사용한 RB 곱셈기를 바탕으로 하고, P' 연산의 파이프라인 연산과 덧셈 병렬 연산을 수행하기 위한 것이다. 잉여 이진 트리 곱셈기는 일반 NB 곱셈기보다 각 부분 곱에 대해 트리 단계에 따라 전체 파이프라인 단계를 나누기가 용이하고, RB-NB 변환 작업을 제외한 전체 곱셈 연산 수행 시간이 빠르다는 점에서 모듈러 곱셈기 설계의 기본 구조로 선택하였다.
도 2는 본 발명에 적용되는 파이프라인 곱셈기 구조도이다.
피승수 레지스터(1)에는 64비트 피승수값(MA)이 저장되며, 승수 레지스터(2)에는 64비트 승수값(MB)이 각각 저장된다. 68비트 부분적 생성기(3)에서는 상기 피승수 레지스터(1)의 출력값(QC)과 상기 승수 레지스터(2)의 출력값(QD)으로 부터 16개의 부분적을 생성하게 된다. 제 1 72비트 덧셈/레지스터(4)는 상기 68비트 부분적 생성기(3)로부터 생성되는 16개의 부분적 중 최하위 68비트 부분적(PA)과 하위 두번 째 68비트 부분적(PB)을 더한 후 그 결과를 저장하게 된다. 제 2 72비트 덧셈/레지스터(5)는 상기 68비트 부분적 생성기(3)의 하위 세번 째 68비트 부분적(PC)과 하위 네번 째 68비트 부분적(PD)을 더한 후 그 결과를 저장하게 된다. 제 3 72비트 덧셈/레지스터(6)는 상기 68비트 부분적 생성기(3)의 하위 다섯번 째 68비트 부분적(PE)과 하위 여섯번 째 68비트 부분적(PF)을 더한 후 그 결과를 저장하게 된다. 제 4 72비트 덧셈/레지스터(7)는 상기 68비트 부분적 생성기(3)의 하위 일곱번 째 68비트 부분적(PG)과 하위 여덟번 째 68비트 부분적(PH)을 더한 후 그 결과를 저장하게 된다. 제 5 72비트 덧셈/레지스터(8)는 상기 68비트 부분적 생성기(3)의 하위 아홉번 째 68비트 부분적(PI)과 하위 열번 째 68비트 부분적(PJ)을 더한 후 그 결과를 저장하게 된다. 제 6 72비트 덧셈/레지스터(9)는 상기 68비트 부분적 생성기(3)의 하위 열한번 째 68비트 부분적(PK)과 하위 열두번 째 68비트 부분적(PL)을 더한 후 그 결과를 저장하게 된다. 제 7 72비트 덧셈/레지스터(10)는 상기 68비트 부분적 생성기(3)의 하위 열세번 째 68비트 부분적(PM)과 하위 열네번 째 68비트 부분적(PN)을 더한 후 그 결과를 저장하게 된다. 제 8 72비트 덧셈/레지스터(11)는 상기 68비트 부분적 생성기(3)의 하위 열다섯번 째 68비트 부분적(PO)과 하위 열여섯번 째 68비트 부분적(PP)을 더한 후 그 결과를 저장하게 된다. 또한, 제 1 80비트 덧셈/레지스터(12)는 상기 제 1 72비트 덧셈/레지스터(4)의 출력(GA)과 상기 제 2 72비트 덧셈/레지스터(5)의 출력(GB)을 더한 후 그 결과를 저장하게 된다. 제 2 80비트 덧셈/레지스터(13)는 상기 제 3 72비트 덧셈/레지스터(6)의 출력(GC)과 상기 제 4 72비트 덧셈/레지스터(7)의 출력(GD)을 더한 후 그 결과를 저장하게 된다. 제 3 80비트 덧셈/레지스터(14)는 상기 제 5 72비트 덧셈/레지스터(8)의 출력(GE)과 상기 제 6 72비트 덧셈/레지스터(9)의 출력(GF)을 더한 후 그 결과를 저장하게 된다. 제 4 80비트 덧셈/레지스터(15)는 상기 제 7 72비트 덧셈/레지스터(10)의 출력(GG)과 상기 제 8 72비트 덧셈/레지스터(11)의 출력(GH)을 더한 후 그 결과를 저장하게 된다. 제 1 96비트 덧셈/레지스터(16)는 상기 제 1 80비트 덧셈/레지스터(12)의 출력(HA)과 상기 제 2 80비트 덧셈/레지스터(13)의 출력(HB)을 더한 후 그 결과를 저장하게 된다. 제 2 96비트 덧셈/레지스터(17)는 상기 제 3 80비트 덧셈/레지스터(14)의 출력(HC)과 상기 제 4 80비트 덧셈/레지스터(15)의 출력(HD)을 더한 후 그 결과를 저장하게 된다. 그리고, 128비트 덧셈/레지스터(18)는 상기 제 1 96비트 덧셈/레지스터(16)의 출력(IA)과 상기 제 2 96비트 덧셈/레지스터(17)의 출력(IB)을 더한 후 그 결과를 저장하게 된다. 또한, 제 1 64비트 레지스터(31)에서는 상기 64비트 부분적 생성기(3)의 MSB 64비트 부분적(MB)을 저장하게 된다. 제 2 64비트 레지스터(32)는 상기 제 1 64비트 레지스터(31)의 출력(MC)을 저장하고, 제 3 64비트 레지스터(33)는 상기 제 2 64비트 레지스터(32)의 출력(MD)을 저장하며, 제 4 64비트 레지스터(35)는 상기 제 3 64비트 레지스터(33)의 출력(ME)을 저장하게 된다. 그리고, 제 5 64비트 레지스터(34)는 파이프라인(P)의 값을 저장하게 된다. 또한, 64비트 덧셈/레지스터(36)는 상기 제 5 64비트 레지스터(34)의 출력(MG)과 제 4 64비트 레지스터(35)의 출력(MF)을 더한 후 저장하게 된다. 제 1 65비트 덧셈/레지스터(21)는 상기 64비트 덧셈/레지스터(36)의 출력(MK)과 상기 128비트 덧셈/레지스터(18)의 상위 64비트 출력값(KB)을 더한 후 저장하게 된다. 제 2 65비트 덧셈/레지스터(22)는 상기 제 1 65비트 덧셈/레지스터(21)의 출력(RE)과 상기 128비트 레지스터(18)의 하위 64비트 출력값(KA)을 더한 후 저장하게 된다.
상술한 바와 같이 구성된 파이프라인 곱셈기는 [수학식 5]를 구현하기 위한 하드웨어의 구성도이다.
도 2의 파이프라인 곱셈기의 마지막단에 접속되는 2개의 65비트 덧셈/레지스터는 [수학식 5]에서 "AiBj-1의 상위 1워드값+AiBj의 하위 1워드값+P'j-1연산의 Carry-out" 연산을 파이프라인 동작 시간에 맞춰서 제 값을 낼 수 있도록 한 구조이다. 이 때, 제 1 65비트 덧셈/레지스터(21)와 제 2 65비트 덧셈/레지스터(22) 사이의 출력단에는 파이프라인을 위한 래치가 있어서 "AiBj-1의 상위 1워드값+AiBj의 하위 1워드값" 연산을 한 클럭 간격을 두고 제 값을 계산할 수 있도록 하였고, 제 2 65비트 덧셈/레지스터(22)의 Carry-out 되먹임(Feedback)을 통하여 P'j-1연산의 Carry-out에 대한 덧셈을 행할 수 있도록 하였다. 물론 이 되먹임 경로에도 파이프라인 래치가 있어서 P'의 j번째 워드값을 계산할 때 j-1번째 연산의 Carry-out이 그 다음 클럭에 제 2 65비트 덧셈/레지스터(22)의 Carry-in으로 들어오도록 하였다. 예를 들어, 제 2 65비트 덧셈/레지스터(22)의 출력(SE)이 A0B0의 2워드 곱셈값중 하위 1워드값을 출력하고 있을 때, 제 1 65비트 덧셈/레지스터(21)의 출력(RE)은 상기 곱셈값중 상위 1워드값을 출력하게 된다.
한편, 다음 클럭에 제 2 65비트 덧셈/레지스터(22)의 입력으로 들어올 128비트 덧셈/레지스터(18)의 출력(KA)은 A0B1의 하위 1워드값을 출력하게 되므로, 자연스럽게 제 2 65비트 덧셈/레지스터(22)는 다음 출력에 A0B0의 상위 1워드+A0B1의 하위 1워드+P0의 Carry-out 연산을 수행하게 된다. 이렇게 하여 P'=P+AiB 연산을 파이프라인 연산에 따라 매 클럭마다 1 워드씩 그 결과값을 낼 수 있다.
이제 P''=P+AiB+QiN=P'+QiN 식을 구현하여 보자. 도 1은 이식을 도 2, 도 3의 하드웨어 구조를 이용하여 전체 연산시간을 최소화 하는 절차를 시간에 따라 나타낸 도면이다. 도 1에서 상단 오른쪽에서 왼쪽으로 신간축을 나타내었고, 클럭 5까지는 P'=P+AB의 연산결과가 나오는 과정을 나타내었다. 이에 다음 연산 P'+QiN을 구현하기 위해 곱셈기의 연산자를 P, Q, N으로 바꿔주고 같은 곱셈기 회로를 사용하여 P'' 값을 얻을 수 있게 한다. 이 때 성능을 높이기 위해서 P' 연산 결과 값이 다 끝나고 난 후에 P''에 대한 연산을 시작하지 말고, 도 1의 6번째 클럭 동작과 같이 곧바로 P'' 연산을 위한 Q, N, P' 연산자들을 같은 곱셈기의 입력단으로 넣어준다. 이 때, 6번째 클럭에서의 P' 값은 앞 연산에서 이미 계산을 끝낸 P'0값을 입력으로 넣어주는 것이므로 이로인한 데이터 상관관계는 없다고 볼 수 있다. P'를 계산하는 연산과 P''를 계산하는 연산 결과값이 파이프라인 연산을 하면서 그 계산값들이 충돌하지 않기 위해서 도 1의 5번째 클럭에서와 같이 중간에 0을 삽입해 주도록 하였다. 이로써 s워드의 연산자의 경우 P'' 값을 계산하는데 걸리는 전체 수행 시간은 2*(s + 1)+L 클럭이 된다. 이 때, L은 곱셈기에서 첫 입력이 들어와서 첫 출력을 내는데 걸리는 레이턴시(Latency)를 나타낸다. 이 값은 몽고메리 알고리즘에서 [수학식 3]의 연산 수행시간과 같게 된다. 1워드 시프트 연산은 1워드 결과값을 레지스터에 저장할 때, 그 주소만 변경해서 저장하면 되기 때문에 워드 시프트 연산에 걸리는 시간은 없다고 볼 수 있기 때문이다. 즉, P''j결과값을 P에 저장할 때 Pj-1에 저장함으로써 워드 시프트 연산을 해결할 수 있다. 이 때, P''0값은 몽고메리 알고리즘의 특성상 0이기 때문에 아무 조건 없이 버려도 되는 값이다.
[수학식 2]는 [수학식 3]에 비해 연산 처리 시간이 짧기 때문에 다음과 같은 병렬 처리를 생각할 수 있다. [수학식 2]는 P'값 중에 P'0값에만 상관관계를 갖기 때문에 P'0값이 생성되고 나서 P''연산을 시작하는 시간사이에 Q값을 계산할 수 있으면, [수학식 2]는 [수학식 3]과 데이터 상관관계없이 병렬처리로 연산을 수행할 수 있게 되고, [수학식 2]로 인한 연산 처리 시간은 전체 모듈러 곱셈 연산 수행시간에 영향을 주지 않게 된다. [수학식 2]의 결과 값은 하위 1워드 값만을 필요로 하기 때문에 곱셈기 설계할 때 2워드 곱셈 결과값 중 여분의 상위 1워드에 대한 결과값은 고려하지 않고 설계할 수 있도록 한다.
도 3은 본 발명에 따른 모듈러 곱셈기의 구조도이다.
어레이 저장기(51)에서는 모듈러 곱셈의 내부값을 저장하게 된다. 승수 레지스터(52)는 상기 어레이 저장기(51)의 승수값(FA)을 저장하게 된다. 피승수/모듈러값 레지스터(53)는 상기 어레이 저장기(51)의 피승수값(FB)을 저장하거나 모듈러값(N)을 저장하기게 된다. 역계산기(57)는 상기 어레이 저장기(51)로부터 역수를 구하게 된다. 직렬 곱셈기(58)에서는 상기 역계산기(57)의 출력(RM)과 파이프라인 곱셉기(59)의 출력에 대하여 직렬 곱셈을 수행하게 된다. 몫처리기(56)는 상기 직렬 곱셈기(58)로 부터 출력되는 몫(DQ)을 처리하며, 2:1 다중화기(54)는 파이프라인 순환기(60)의 출력(SP)에따라 상기 몫처리기(56)의 출력(EQ)과 상기 승수레지스터(52)의 출력(FQ)을 선택하게 된다. 또한, 파이프라인 곱셈기(59)는 상기 파이프라인 순환기(60)의 출력(SP)에따라 상기 2:1 다중화기(54)의 출력(GQ)과 상기 피승수/모듈러값 레지스터(53)의 출력(GB/N)에 대해 병렬 곱셈을 수행하게 된다. 상기 파이프라인 순환기(60)는 상기 파이프라인 곱셈기(59)의 출력(PP)을 자체 순환시키게 된다. 그리고, 보상기(55)는 상기 파이프라인 곱셈기(59)의 출력(PP)을 보상하여 상기 어레이 저장기(51)로 입력시키게 된다.
상기 파이프라인 곱셈기(59)에서는 [수학식 3]의 연산을 처리하며, 직렬 곱셈기(58)에서는 [수학식 2]을 처리하게 된다. 상기 보상기(55)에서는 몽고메리 알고리즘에서 모든 루프를 돌고 나서 나온 P값의 범위를 0<P<N 으로 보정하기 위한 보정 장치를 나타내었다. 역계산기(57)는 RN의 값의 역수값을 구하고, 파이프라인 순환기(60)는 [수학식 2]와 [수학식 3]의 루프를 처리하기 위한 제어 신호(Control Signal)를 만들어 파이프라인 곱셈기(59)로 입력시키게 된다.
상술한 바와 같이 본 발명에 의하면 몽고메리 알고리즘에서 추출할 수 있는 파이프라인 연산과 병렬 처리 성분을 최대한 활용하였기에 RSA 알고리즘의 고속 처리를 가능토록 하였고, 선진 외국 제품에 뒤지지 않는 암호화 칩을 국내 기술로 개발한데 그 의의가 있으며, 나날이 커져만 가는 암호화 제품 시장에 고성능 암호화 칩을 개발함으로써 시장을 향후 확보 및 선점할 수 있는 기회를 마련하게 되었다.

Claims (2)

  1. 모듈러 곱셈의 내부값을 저장하기 위한 어레이 저장기와,
    상기 어레이 저장기의 승수값을 저장하기 위한 승수 레지스터와,
    상기 어레이 저장기의 피승수값을 저장하거나 모듈러값을 저장하기 위한 피승수/모듈러값 레지스터와,
    상기 어레이 저장기로부터 역수를 구하기 위한 역계산기와,
    파이프라인 곱셈기와,
    상기 파이프라인 곱셈기의 출력을 순환시키기 위한 파이프라인 순환기와,
    상기 역계산기의 출력과 상기 파이프라인 곱셉기의 출력에 대하여 직렬 곱셈을 수행하는 직렬 곱셈기와,
    상기 직렬 곱셈기로 부터 출력되는 몫을 처리하기 위한 몫처리기와,
    상기 파이프라인 순환기의 출력에 따라 상기 몫처리기의 출력과 상기 승수레지스터의 출력을 선택하는 2:1 다중화기와,
    상기 파이프라인 순환기의 출력에 따라 상기 2:1 다중화기의 출력 및 상기 피승수/모듈러값 레지스터의 출력에 대해 병렬 곱셈을 수행하는 상기 파이프라인 곱셈기의 출력을 보상하여 상기 어레이 저장기로 입력시키기 위한 보상기를 포함하여 구성된 것을 특징으로 하는 모듈러 곱셈장치.
  2. 제 1 항에 있어서, 상기 파이프라인 곱셈 수단은 64비트 피승수값을 저장하는 피승수 레지스터와,
    64비트 승수값을 저장하는 승수 레지스터와,
    상기 피승수 레지스터의 출력값과 상기 승수 레지스터의 출력값으로 부터 16개의 부분적을 생성하는 68비트 부분적 생성기와,
    상기 68비트 부분적 생성기의 16개의 하위 68비트 부분적을 각각 더한 후 그 결과를 저장하기 위한 제 1 내지 제 8 72비트 덧셈/레지스터와,
    상기 제 1 내지 제 8 72비트 덧셈/레지스터의 출력을 각각 더한 후 그 결과를 저장하는 제 1 내지 제 4 80비트 덧셈/레지스터와,
    상기 제 1 내지 제 4 80비트 덧셈/레지스터의 출력을 각각 더한 후 그 결과를 저장하는 제 1 및 제 2 96비트 덧셈/레지스터와,
    상기 제 1 및 제 2 96비트 덧셈/레지스터의 출력을 더한 후 그 결과를 저장하는 128비트 덧셈/레지스터와,
    상기 64비트 부분적 생성기의 상위 64비트를 순차적으로 저장하기 위한 제 1 내지 제 4 64비트 레지스터와,
    P의 값을 저장기 위한 제 5 64비트 레지스터와,
    상기 제 4 및 제 5 64비트 레지스터의 출력을 더한 후 저장하기 위한 64비트 덧셈/레지스터와,
    상기 64비트 덧셈/레지스터의 출력과 상기 128비트 덧셈/레지스터의 상위 64비트 출력값을 더한 후 저장하기 위한 제1 65비트 덧셈/레지스터와,
    상기 제1 65비트 덧셈/레지스터의 출력과 상기 128비트 덧셈/레지스터의 하위 64비트 출력값을 더한 후 저장하기 위한 제 2 65비트 덧셈/레지스터를 포함하여 구성된 것을 특징으로 하는 모듈러 곱셈장치.
KR1019980020592A 1998-06-03 1998-06-03 모듈러 곱셈장치 KR20000000770A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1019980020592A KR20000000770A (ko) 1998-06-03 1998-06-03 모듈러 곱셈장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1019980020592A KR20000000770A (ko) 1998-06-03 1998-06-03 모듈러 곱셈장치

Publications (1)

Publication Number Publication Date
KR20000000770A true KR20000000770A (ko) 2000-01-15

Family

ID=19538286

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019980020592A KR20000000770A (ko) 1998-06-03 1998-06-03 모듈러 곱셈장치

Country Status (1)

Country Link
KR (1) KR20000000770A (ko)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20020071327A (ko) * 2001-03-06 2002-09-12 미션텔레콤 주식회사 씨알티를 이용한 하이래딕스 알에스에이 모듈로 멱승 처리기
KR100449491B1 (ko) * 2001-12-11 2004-09-21 한국전자통신연구원 모듈러 곱셈 장치
KR100460764B1 (ko) * 2000-05-31 2004-12-09 매그나칩 반도체 유한회사 암호화 하드웨어 구현을 위한 파이프라인 모듈러 연산 장치
US8458242B2 (en) 2009-05-15 2013-06-04 Samsung Electronics Co., Ltd. Modular multiplier apparatus with reduced critical path of arithmetic operation and method of reducing the critical path of arithmetic operation in arithmetic operation apparatus
KR20130128701A (ko) * 2012-05-17 2013-11-27 삼성전자주식회사 모듈러 곱셈기 및 그것의 모듈러 곱셈 방법
KR102241252B1 (ko) * 2020-12-03 2021-04-15 국민대학교산학협력단 모듈러 연산 방법, 장치 및 시스템

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100460764B1 (ko) * 2000-05-31 2004-12-09 매그나칩 반도체 유한회사 암호화 하드웨어 구현을 위한 파이프라인 모듈러 연산 장치
KR20020071327A (ko) * 2001-03-06 2002-09-12 미션텔레콤 주식회사 씨알티를 이용한 하이래딕스 알에스에이 모듈로 멱승 처리기
KR100449491B1 (ko) * 2001-12-11 2004-09-21 한국전자통신연구원 모듈러 곱셈 장치
US8458242B2 (en) 2009-05-15 2013-06-04 Samsung Electronics Co., Ltd. Modular multiplier apparatus with reduced critical path of arithmetic operation and method of reducing the critical path of arithmetic operation in arithmetic operation apparatus
KR20130128701A (ko) * 2012-05-17 2013-11-27 삼성전자주식회사 모듈러 곱셈기 및 그것의 모듈러 곱셈 방법
US9448768B2 (en) 2012-05-17 2016-09-20 Samsung Electronics Co., Ltd. Modular multiplier and modular multiplication method thereof
US9841950B2 (en) 2012-05-17 2017-12-12 Samsung Electronics Co., Ltd. Modular multiplier and modular multiplication method thereof
KR102241252B1 (ko) * 2020-12-03 2021-04-15 국민대학교산학협력단 모듈러 연산 방법, 장치 및 시스템

Similar Documents

Publication Publication Date Title
EP0566498B1 (en) Digital signature device and process
JP4955182B2 (ja) 整数の計算フィールド範囲の拡張
JP2004326112A (ja) マルチプルモジュラス選択器、累算器、モンゴメリー掛け算器、マルチプルモジュラス発生方法、部分掛け発生方法、累算方法、掛け算方法、モジュラス選択器、およびブースレコーダ
KR20050077001A (ko) 다배장 데이터 곱합 연산 처리 회로 및 몽고메리 곱합잉여 연산 회로
US8417760B2 (en) Device and method for calculating a multiplication addition operation and for calculating a result of a modular multiplication
Pajuelo-Holguera et al. Fast montgomery modular multiplier using FPGAs
US7185039B2 (en) Multiplier for modular exponentiation
US7240204B1 (en) Scalable and unified multiplication methods and apparatus
Yan et al. An implementation of Montgomery modular multiplication on FPGAs
JP2004258141A (ja) モンゴメリ乗算剰余の多倍長演算のための演算装置
KR20000000770A (ko) 모듈러 곱셈장치
Keliris et al. Investigating large integer arithmetic on Intel Xeon Phi SIMD extensions
Will et al. Computing mod without mod
RU2666303C1 (ru) Способ и устройство для вычисления хэш-функции
KR101136972B1 (ko) 타원곡선 암호 연산 방법
KR100481586B1 (ko) 모듈러 곱셈 장치
GB2318892A (en) Co-processor for performing modular multiplication
Zimmermann et al. High-performance integer factoring with reconfigurable devices
KR100946256B1 (ko) 다정도 캐리 세이브 가산기를 이용한 듀얼필드상의확장성있는 몽고매리 곱셈기
Monfared et al. A new multiplicative inverse architecture in normal basis using novel concurrent serial squaring and multiplication
KR100460764B1 (ko) 암호화 하드웨어 구현을 위한 파이프라인 모듈러 연산 장치
JP3912958B2 (ja) データ駆動型処理装置およびデータ駆動型処理装置におけるデータ処理方法
KR100858559B1 (ko) 잉여 이진수의 덧셈 방법, 잉여 이진수의 곱셈 방법, 잉여이진수 덧셈기 및 잉여 이진수 곱셈기
Shirase et al. An architecture for elliptic curve cryptograph computation
Parihar et al. Fast and High-throughput Montgomery Modular Multiplier for RSA Encryption and Decryption

Legal Events

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