Ⅰ. 서론
개방 네트워크의 신뢰성과 안전성을 제공하는 많은기술들이 있지만 그 중에서도 공개키 암호 기술은 소인수분해의 어려움에 안전도의 근간을 갖고 있으며 암호화와 전자 서명을 위한 RSA141 암호 시스템이 가장 널리 사용되고 있다. RSA 암호 시스템은 안전도를 높이기 위해 키 값을 1, 024 비트 이상으로 높이고 있는 추세이며 이러한 키 값으로 인해 반복적인 모듈라 곱셈 연산 구조를 갖는 하드웨어 구현을 매우 어렵게 만들고 있다. 지수승 연산의 결과는 모듈라 곱셈의 반복 연산을 통해 얻어지며 모듈라 곱셈기를 어떻게 설계하느냐에 따라 처리 속도는 달라진다. 일반적인 모듈라 곱셈기로써 systolic 어레이 구조와 CSA 덧셈기 구조를 사용한 모듈라 곱셈기가 제*~이 안되었다 또한, 하드웨어 소모는 많지만 고속 모듈라 연산이 가능한 RNS(residue number system) 기반과radix 기반의“"") 몽고메리모듈라 곱셈 알고리즘이 제안되었으며, 처리 속도는 느리지만 하드웨어 소모가 적은 분할형 워드 기반모듈라 곱셈 알고리즘도“'成제안되고 있다.
기존의 r* adix 의 모듈라 곱셈기는'以⑶ systolic array 기반의 radix-2 모듈라 곱셈기⑺를 확장한 것으로써 radix-?11 를 구현하기 위하여 중간 값 제어와 저장을 위한 인터리빙 제어 신호와 파이플라인 레지스터를 사용하여 하드웨어 소모가 기존의 radix-2 보다 50% 증가하는 단점이 있었다. 본 논문은 이러한 문제점을 해결하기 위하여 하드웨어 소모가 적고 연산 속도를 높일 수 있는 CSA 기반의 곱셈기⑼와 radix-砂의 부분 곱과 몽고메리 reduction 연산을 위해 look-up 테이블 방식을 사용하여 설계하였다. 또한, 주어진 공정에서의 동작 주파수와 처리 속도관점에서 본 논문에서 제시한 하드웨어 구조에 맞는 최적의 radix 값을 제시한다. 먼저 본문 II장에서는 하드웨어 구현 관점에서 radix-砂 몽고메리 모듈라 곱셈 알고리즘을 기술하였다. 본문 III장에서는 r* adix-2 모듈라 곱셈기의 구조, 가상 캐리 예측 덧셈기, 그리고 구현 가능한 최적의 radix 값을 제시하였다. 본문 ID장에서 제안된 하드웨어 구조를 Altera FPGA EP2K1500E와 삼성 0.35伽 공정을 사용하여 검증하였으며 칩의 면적과 연산 속도 차이를 본문 IV장에서 참고문헌과 비교, 검토하였다.
Ⅱ. Radix-2k 모듈라 곱셈 알고리즘
RSA 지수승 연산은 몽고메리 모듈라 곱셈 알고리즘의 반복 연산이다.⑸ 따라서 , RSA 지수승 연산기는 모듈라 곱셈기를 어떻게 설계하느냐에 따라 속도와 설계 면적이 결정된다. 본 논문에서는 설계 면적을 최소화하면서 연산 속도를 높일 수 있는 radix-211 모듈라 곱셈기를 적용하여 RSA 지수승 연산기의 설계 방안을 제안한다.
2.1 Radix-2k 모듈라 곱셈 알고리즘
CSA 기반의 r* adix-2 몽고메리 모듈라 곱셈 알고리즘은 Booth recording 알고리즘과 부호 발생알고리즘⑴을 적용하였으며 n + k+1 비트 길이의 승수(A), n + k 비트 길이의 피승수(B), n + k 비트길이의 모듈러스(N), 그리고 n + k 비트 길이의 매핑 계수(r)에 대하여 A . B . r-1 mod N을 연산하며 CSA 기반의 radix-2k 모듈라 곱셈 알고리즘은 〔그림 1〕과 같다."-⑷
(그림 1) Radix-2k 모듈라 곱셈 알고리즘
CSA 기반의 radix-211 모듈라 곱셈 알고리즘은 〔그림 1〕에서와 같이 합(S)과 캐리(C)를 분리하여 연산하며 승수(A)와 피승수(B)의 radix 부분 곱(partial product : Y) 과 radix reduction decoding T) 값에 의한 reduction 연산을 위해 reduction table (RT)을 미리 연산하여 메모리에 저장한다. 모듈라 곱셈은 단계 5에서 승수(A)로부터 Booth encoding(BE) 값을 s에 전달하여 Y 메모리로부터 부분 곱(YQ 을 호출하여 부호 확장된 PR를 얻으며, 반복모듈라 곱셈 연산을 위한 부호 확장(sign extension : SE)된 r* adix 부분 곱⑴은 식 ⑴에서 (4)와 같다.
#(1)
#(2)
#(3)
#(4)
Radix-^의 부분 곱(Y)은〔표 1〕의 Booth encoding(Ds)의 값에 피승수(B)를 곱한 값이며 이를 메모리에 미리 연산하여 저장한다. 부호 확장된 Booth 부분 곱(PR)은 부분 곱(YQ의 n + k-1 번째의 비트를 2진 보수를 취하여 부호를 확장하며 모듈라 곱셈연산을 위해 식 (3)과 (4)에 따라 부호가 확장된다. 본 논문에서는 몽고메리 모듈라 reduction 연산을 위해 〔그림 1〕의 단계 6에서 k 비트를 얻어 日丁의 메모리 주소를 발생한다. 예를 들어 radix-4오} radix-8에 대한 RTt〔표 2〕와〔표 3〕과 같다.
(표 1) Radix-2k에 대한 Ds의 집합(1)
(표 2) Radix-4의 reduction table(RT)
(표 3) Radix-8의 reduction table(RT)
R* adix-2 의 모듈라 reduction 연산은 T값과 N값에 의해 주소가 발생되어 RT 메모리에서 그 주소 값에 대한 값을 호출하며 radix-4인 경우 titonmo의 4비트를, radix-8인 경우 t2titon2runo의 6비트를 주소로 사용한다.
2.2 Radix-2k 모듈라 지수승 알고리즘
Radix-215 모듈라 지수승 연산은 R* adix-2 모듈라곱셈의 반복 연산으로 이루어진다. 본 논문에서는 radix-砂 모듈라 지수승 연산을 위해〔그림 2〕에서와 같이 지수 e가 오른쪽에서 왼쪽으로 스캔되는 R-L(right to left) 이진 연산 방식을 사용한다.
〔그림 2〕에서의 R-L 이진 연산 방식은 모듈라지수승 연산이외에 mapping 연산으로써 M 을 M . r mod N으로 변환하는 연산과 日의 초기값을 계산하는 과정을 포함한다. 그리고 Me mod N값을 얻기 위하여 마지막에 remapping 연산을 수행한다. R-L 이진 연산 방식은 단계 4와 5과정이 서로 독립적으로 수행된다는 것이 R-L 이진 연산 방식의 특징으로서 실제 하드웨어로 구현 시 radix-211 모듈라 곱셈기 2개가 필요한 병렬 구조가 된다. 따라서 L-R(left-to-right) 이진 연산 방식보다 최대 100%, 지수 값의 분포도에 의해 평균 33%가 더 빠를 수 있으나 곱셈 연산과 제곱 연산을 동시에 수행하기 위하여 모듈라 곱셈기가 병렬로 두 개가 필요하므로 모듈라 곱셈기의 하드웨어 면적은 L-R 이진 연산 방식의 2배가 되는 단점이 있다.⑼
[그림 2] Radix-2k 모듈라 지수승 알고리즘
Ⅲ. Radix-2k 모듈라 곱셈기 하드웨어 구조
Radix-214 몽고메리 모듈라 곱셈기는 앞서 언급한 바와 같이 두 입력 승수 A, 피승수 B. 그리고 모듈러스 N에 대해서 R2kMM(A, B, N)=A . B . f1 mod N을 출력하는 블록이며 전체 구조는〔그림 3]과 같다.
[그림 3] Radix-2k 모듈라 곱셈기
〔그림 3〕에서 CSA1 은〔그림 1〕의 단계 6과 7를, CSA2는 단계 8을 처리한다. 연산 과정 중간값은 carry와 sum 값으로 나누어져 있기 때문에 본 논문에서는 고속 덧셈을 수행하기 위해PCLA(pseudo carry look-ahead adder : 가상 캐리 예측 덧셈기)'幻" 를 사용하여 마지막 덧셈을 수행한다.
3.1 Radix-2k 몽고메리 모듈라 곱셈기
CSA 기반의 radix-2k 모듈라 곱셈기는〔그림 4] 에서와 같이 2FA(full adder) +(k-l)HA(half adder) + a(memory access time)의 지연을 가진다. 여기에서 a는 radix 부분 곱을 미리 계산하여 메모리에 저장하고 읽어오는 시간과 RT 메모리로부터 reduction 값을 읽어오는 시간을 합한 지연시간이며, radix 값에 의해 HA의 깊이가 결정된다.〔그림 4〕에서 나타낸 모듈라 곱셈기는 1 클럭안에 합(S)와 캐리(C)를 출력하며 총 \ (m + ^+1)Mi 번 반복 수행한다. 따라서 본 논문에서 제안한〔그림 4〕와 같은 CSA 기반의 radix-2k 모듈라 곱셈기는 설계 시 사용하는 공정과 동작 주파수에 따라 radix 값과 HA—의 깊이가 결정되며 이 구조를 지수승 연산에 사용하면 총 nx [ (如+ 奸1)/切 의 클럭을 사용하여 동작 주파수 /에 대하여 연산속도는 식 (5)와 같이 결정된다.
[그림 4] CSA 기반의 Radix-2k 모듈라 곱셈기
#(5)
식 (5) 에서와 같이 동작 주파수와 radix 값은 연산속도를 결정하는 중요한 값이며〔그림 4〕의 구조로부터 설계 시 사용하는 공정에 따라 최적의 radix값을 결정할 수가 있다. 본 논문에서는 삼성 0.35伽 공정을 사용하여 식 (5)와 같은 상관관계를 고려하여 최적의 radix 값을 시뮬레이션을 통해 결정하였다. 실제 시뮬레이션 결과 HA의 깊이에 따른 지연은 크게 변하지 않지만 Booth encoding 연산, 메모리 저장, 그리고 메모리에서 값을 읽어 오는 시간이 전체 모듈라 곱셈기 지연에 지대한 영향을 미쳐 radix-32에서 오히려 성능이 저하됨을 알게 되었다. 전체 시뮬레이션 결과는〔표 4〕와 같으며 본 논문에서 제시한 r* adix-2 모듈라 곱셈기 구조를 사용할 경우 radix-16이 최적이라 사료된다. 그러나 이는 사용 공정에 따라 그 지연시간에 영향을 받으므로 공정이 발전함에 따라 클럭 주파수를 높이면 radix를 높일수록 속도의 향상이 기대된다.
[표 4] Radix 값에 대한 연산 속도 비교
본 논문에서 제시한 CSA 구조는〔표 5〕에서와 같이 systolic array 기반의 모듈라 곱셈기보다 지연이 작아 동작 주파수를 높일 수 있어 전체 연산속도를 향상 시킬 수 있다.
[표 5] 모듈라 곱셈기의 지연 비교
3.2 Pseudo Carry Look-ahead Addert(2,3)
CSA 기반 radix-2k 모듈라 곱셈 알고리즘은 출력을 합(S)과 캐리 (C)의 벡터형으로 출력하므로 최종결과를 얻기 위해서는 합(S)과 캐리(C)를 더해야한다. 본 논문에서는 가상 캐리 예측 덧셈기(psedo carry look-ahead adder : PCLA)를 사용하여 고속 덧셈을 수행한다. PCLA에서 입력을 합(S)과 캐리© 라 하면 迪째 PCLA의 출력은 식 (6)과 같다.
#(6)
식 (6)에서 R(=G+Si)는 캐리 전파 신호이며 ¥ , 는 G & Si이며, Hi는 가상 캐리이다. 모든 R와 TP i 신호는 병렬로 연산되며 Hi는 이전 식에 의해서 연산 되며 일반식은 식 (7)과 (8)과 같다.
#(7)
#(8)
일단 Hi가 구해지면 합을 고속으로 얻을 수 있으며 식 (9)와 같이 선택기 (multiplexer)로 구현할 수 있다.
#(9)
식 (9)에서 「는 予 iG) 予 "로 다시 쓸 수 있다. 식 ⑹부터 (9)를 사용하여 4 비트 PCLA를 구성하면〔그림 5〕와 같다. 일반적으로 캐리 예측 덧셈기를 설계할 때와 마찬가지로 긴 워드에 대하여 PCLA를 구성할 경우에는〔그림 5〕에서와 같은 작은 블록들을 조합하여 다단계 그룹 PCLA를 구성할 수 있다.
[그림 5] 4 비트 가상 캐리 예측 덧셈기
〔그림 5〕를 블록으로 구성하면 그림 6과 같이 합을 출력하는 4 비트 pseudo sum look-ahead generator(PSLG)와 가상 캐리를 출력하는 4 비트 pseudo carry look-ahead generator (PCLG)로 구성할 수 있으며〔그림 6〕의 4 비트 PCLA를 이용하여 16 비트 2 단계 그룹 PCLA를〔그림 기과 같이 구성할 수 있다.〔그림 6〕과〔그림 7〕에서 Hg와 Ig는 식 (10), (11)과 같으며 다음 그룹 PCLA의 가상캐리를 발생시킨다. Hg와 Ig에 의해 발생되는 그룹가상 캐리는 식 (12)와 같다.
#(10)
#(11)
#(12)
〔그림 7〕의 게이트 지연을 살펴보면 다음과 같다. 1 gate delay(각 비트 위치에서 G와 P를 출력) + 2 gate delays(4 비트 블럭의 입력을 위한 가상캐리 신호 由 H?, 그리고 Hii을 예측)+2 gate delays(각 4 비트 블록마다 내부 가상 캐리 예측)+2 gate delays(Hg^]- Ig를 출력)+2 gate delays(합을 계산)=9 gate delays
[그림 7] 2 단계 16비트 GPCLA
〔표 6〕은 64 비트 리플 캐리 덧셈기 (ripple-carry adder : RCA)와 캐리 예측 덧셈기(carry look-ahead adder : CLA)를 PCLA와 게이크 지연을 비교하였다, CLA와는 게이트 지연이 같지만 그룹캐리 (Cg)와 그룹 가상 캐리 (Hg)를 구할 때 Cg는 4개의 fan-in, 10개의 항, 20개의 입력을 가짐에 비해, 时 理는 3개의 fan-in, 7개의 항, 14개의 입력을 가지므로 속도의 향상 및 면적을 절감할 수 있다.
[표 6] 게이트 지연 비교
본 논문에서는 CSA 기반 radix-215 모듈라 곱셈기곱셈기를 위해〔그림 8〕과 같이 PCLA를 구성하여 n비트 크기의 연산자에 대해 w= f(n+k)/(b=256)]번을 반복 수행하여 ABr-1 mod N의 최종 결과를 출력한다.
[그림 8] PCLA 하드웨어 구조
Ⅳ. 성능 분석 및 PCI 인터페이스를 통한 보드 테스트
4.1 연산 속도 및 설계 면적 비교
본 논문에서 제시된 R-L 이진 연산 방식의 RSA 지수승 연산기를 삼성 0.35伽 공정을 사용하여 radix-8과 radix-16에 대하여 각각 설계하였다. radix-8과 radixT6은 각각 mapping과 remapping 연산에 총 2x(『 3 +3+ 1)/3] +5) 의 클럭과 2x( [ (» + 4 + 1)/4 1 +5)의 클럭을 사용하였으며, 모듈라 지수승 연산에 radix-8은( [ (» + 3 + 1)/3 ] +5) 클럭을, radix-16은 »x( f (« + 4 + 1)/4 1 +5) 클럭을 사용하였다. 따라서 총 클럭 수는 radix-8의 경우 (" + 2)x( [ (« + 3 + 1)/3 1 +5)가 되며, radix-16의 경우(m+2)x( r (w + 4+l)/4 1 +5)가 되어 L024 비트 RSA 지수승 연산 속도는 동작 주파수 50MHz에서 각각 7.13ms와 5.38ms의 성능을 보였으며〔표기과 같이 systolic array 기반의 모듈라 곱셈기를 사용한 RSA 지수승 연산기를 비교한 결과 전체적으로 약 2배의 연산속도를 가짐을 알 수 있다. 또한, 현재 시장에 출시된 RSA 암호 프로세서들m, ⑼과 동작 주파수에 따른 연산 속도의 성능을〔표 8〕에서 비교한 결과 동일한 주파수에서 대등한 성능을 가짐을 알 수 있다.
[표 7] 1, 024 비트 RSA 지수승 연산을 위한 Clock cycles 수와 동작 주파수 50MHz에서의 연산 속도
[표 8] 1, 024 비트 RSA 프로세서 비교
* : proposed
본 논문에서는 R-L 이진 지수승 방식과 radix-16 모듈라 곱셈기를 적용한 1, 024 비트 RSA 코어를 삼성 0.35例 공정 사용하여 설계하였다. 그리고 모듈라 곱셈기의 설계 면적을 systolic 어레이 기반의 곱셈기am⑶와 비교하기 위하여 같은 삼성 0.35㈣ 공정으로 설계한 결과 CSA를 기반으로 한 곱셈기가 설계 면적에서 약 50%의 이득을 얻었으며 그 결과를 〔표 9〕에 나타내었다. 그리고 본 논문에서 설계한 RSA 지수승 연산기의 각 블록에 대한 설계 면적을 〔표 10〕에 나타내었다.〔표 10〕으로부터 본 논문에서 제시한 RSA 코어의 설계면적 분포를 알 수 있으며, 이중 메모리 부분을 포함한 radix-16 몽고메리 모듈라 곱셈기의 크기는 전체의 60%이상 차지한다. 따라서 전체 RSA 코어의 설계 면적을 줄이는 것은 모듈라 곱셈기의 최적화에 달려 있으며 본 논문에서는 look-up table을 사용하여 설계 면적을 줄일 수 있었다.
[표 9] 모듈라 곱셈기의 설계 면적 비교
* : proposed
[표 10] 각 블록의 게이트 수
4.2 PCI 인터페이스를 통한 동작 검증 및 테스트
본 논문에서 설계된 radix-16 모듈라 곱셈기 기반의 1, 024 비트 RSA 암호프로세서의 사용을 위하여 PCI 인터페이스 보드를 부가적으로 설계하였다. PCI 인터페이스 보드는 로컬 버스에 132MB/sec의 버스트 전송을 제공할 수 있는 PLX 9050 칩을 타겟으로 제작되었다.
PCI 인터페이스 보드는 그림 9에서와 같이 33MHz에서 동작하며 32-bit I/O. 입/출력 데이터 전송을 위한 데이터 어러】이, 그리고 이러한 블록들을 제어하는 제어 블록으로 구성되어 있다. RSA 기능 검증을 위해 본 논문에서는 Altera FPGA EP2K1500E를 사용하여 설계하였으며 1.024 비트 RSA 암호프로세서는 〔그림 10〕과 같이 PCI 인터페이스 보드를 통하여 메시지 M, 공개키 e, 그리고 모듈러스 N을 전송하여 기능을 테스트하였다.
[그림 9] 1024 비트 RSA 암호프로세서를 위한 PCI 인터페이스
[그림 10] 1, 024 비트 RSA 암호 프로세서의 FPGA 보드 테스트
Ⅴ. 결론
본 논문에서는 네트워크 보안을 위한 RSA 시스템의 핵심 연산블록인 .1, 024 비트의 RSA 모듈라지수승 프로세서를 radix-2k 모듈라 곱셈 알고리즘을 적용하여 R-L 이진 지수승 연산 방식으로 설계하고 성능을 비교 검증하였다. 본 논문에서 제안된 radix-砂 모듈라 곱셈기는 부호 확장된 부분 곱을 얻기 위해 메모리를 사용하고 있으며, 또한 모듈라 reduction 연산을 미리 저장된 reduction table을 통하여 처리하도록 하였다, 그리고 마지막 모듈라 연산 후 합(S)과 캐리(C)를 고속으로 처리할 수 있는 가상 캐리 예측 덧셈기(PCLA)를 사용하여 연산 처리 속도를 높일 수 있었다. Radix-砂 모듈라곱셈기는 설계 시 사용되는 공정에 매우 의존적이며 전가산기의 지연 시간과 메모리 접근 지연 시간에 따라 최적의 radix 값이 결정된다. 본 논문에서는 삼성 0.35伽 공정을 사용하여 16의 radix 값을 결정할 수 있었으며 동작 주파수 5이曲에서 5.38ms 연산 속도를 보였고, systolic array 기반의 모듈라곱셈기보다 약 50%의 면적 감소와 2배의 연산 속도 증가를 가져왔다.
References
- IEEE Trans. Computers v.39 no.8 A generalized Multibit Coding of Two's Complement Binary Numbers and Its Proof with Application in Multiplier Implementation H. Sam;A. Gupta
- Topics in arthmetic for digital systems designers, (Preliminary Second Edition) Flynn. M.
- IBM J.Reasearch. Dev. v.25 no.3 High speed binary adder Ling. H.
- Communications of the ACM v.21 no.2 A method for abtaining digital signatures and public-key cryptosystems R. L. Rivest;A. Shamir;L. Adleman https://doi.org/10.1145/359340.359342
- Technical Reprot TR 801 RSA Hardware Implementation C. K. Koc
- Journal of VLSI Signal Processing Bit-level systolic arrays for modular multiplication C. K. Koc;C. Y. Hung
- IEEE Trans. VLSI Systems v.7 An improved Montgomery algorithm for high-speed RSA public-key cryptosystem C.Y. Su;S.A. Hwang;P.S. chen;C.W. Wu https://doi.org/10.1109/92.766756
- 14th IEEE Symposium on Computer Arithmatic Montgoemry modular exponentiation on reconfigurable hardware T. Blum;C. Paar
- Circuits and Systems, ISCAS 2001 v.4 Two implementation methods of a 1024-bit RSA cyptoprocessor based on modified Montgomery algorithm T.W. Kwon;J.R. Choi;etc
- Computers, IEEE Trans v.49 New efficient structure for a modular multiplier for RNS A.A. Hiasat https://doi.org/10.1109/12.833113
- Signal, System, and Computers v.2 Montgomery modular multiplication and exponentiation in the residue number W.L. Freking;K.K. Parhi
- ASP-DAC Radix-4 modular multiplication and exponentiation algorithm, for the RSA public-key cryptosystem J.H. Hong;C. W. Wu
- Circuits and Systems, ISCAS 1999 v.1 A VLSI architecture of fast high-radix modular multiplication for RSA cryptosystem C.H. Wu;M.D. Shieh;C.-H. Wu;etc
- IEEE Trans. on Computers v.50 High-radix Montgoemry exponentiation on reconfigurable hardware T. Blum;C. Paar https://doi.org/10.1109/12.936241
- Cryptographic Hardware and Embedded Systems no.1717 A scalable architecture for Montgomery multiplication F. Tenca;C. K. Koc;C. K. Koc(ed.);C. Paar(ed.)
- CHES2001 High-radix design of a scalable modular multiplier F. Tenca;G. Todorov;C. K. Koc;C. K. Koc(ed.);C. Paar(ed.)
- IEEE Trans. on Computers v.41 no.8 A spanning tree carry lookahead adder Lynch, T.;E. Swartzlander https://doi.org/10.1109/12.156535
- SCC102 STI Security Techologies inc.
- Hi/fn 6500 Hi/fn Company