DOI QR코드

DOI QR Code

Interleaved 모듈라 곱셈 기반의 고속 RSA 암호 칩의 설계

The design on a high speed RSA crypto chip based on interleaved modular multiplication

  • 발행 : 2000.03.01

초록

공개키 암호 시스템 중에서 가장 널리 사용되는 RSA 암호 시스템은 키의 분배와 권리가 용이하고, 디지털 서명이 가능한 장점이 있으나, 암호화와 복호화 과정에서 512 비트 이상의 큰 수에 대한 멱승과 모듈라 감소 연산이 요구되기 때문에 처리 속도의 지연이 큰 문제가 되므로 모듈라 멱승 연산의 고속 처리가 필수적이다. 따라서 본 논문에서는 몫을 추정하여 중간 곱의 크기를 제한하는 interleaved 모듈라 곱셈 기법을 이용하여 모듈라 멱승 연산을 수행하는 고속 RSA 암호 칩을 VHDL을 이용하여 모델링하고 Faraday FG7000A 라이브러리를 이용하여 합성하고 타이밍 검증하여 단일 칩 IC로 구현하였다. 구현된 암호 칩은 75,000 게이트 수준으로 합성되었으며, 동작 주파수는 50MHz이고 1회의 RSA 연산을 수행하는데 소요되는 전체 클럭 사이클은 0.25M이며 512비트 당 처리 속도는 102.4Kbit/s였다.

키워드

Ⅰ. 서론

키 관리와 사용자 인증을 위하여 제안된 공개 키암호 방식은 컴퓨터 네트워크 가입자의 암호화 키를서로 공개하여 한 가입자가 다른 가입자에게 정보를안전하게 전송하고자 할 때, 공개된 다른 가입자의암호화 키로 정보를 암호화해서 보내면 다른 가입자는 그 암호문을 받은 후 자신의 비밀 키인 복호화 키로 복호화 하여 평무을 받아 볼 수 있게 된다. Diffie와 Hellman에 의해 공개키 암호 방식이 제안된 이후 Knapsack 알고리듬과 RSA 알고리듬과 같은 많은공개키 암호 알고리듬이 제안되었다.[1]-[3] 여러 알고리듬 중에서 1978년 Rivest. Shamir와 Adleman 에 의해 제안된 RSA 알고리듬이 가장 잘 알려져있고 널리 사용되는 공개키 암호 시스템이다.[2]

RSA 암호 시스템은 소인수 분해의 어려움을 이용하는 방식으로서 키의 분배와 관리가 용이하고. 디지털 서명이 가능한 장점이 있다[2] 또한 주된 연산은 모듈라 멱승 연산으로서 모듈라 멱승 연산은 계층적으로 모듈라 곱셈과 모듈라 리덕션 연산으로 세분되고 전체 연산에서 모듈라 곱셈이 대부분을 차지한다.(4) 그러나 RSA 암호 시스템은 암호화와 복호화과정에서 512 비트 이상의 큰 수에 대한 멱승과 모듈라 감소 연산이 요구되기 때문에 고속 처리하기가 어렵다. 따라서 암호화 및 복호화 때 처리 속도의지연이 가장 큰 문제가 되므로 모듈라 멱승 연산의고속화를 위한 하드웨어 구현이 요구된다.

1993년 Walter[5]는 이전의 모듈라 승산에서 모듈러스의 배수가 부분 결과의 상위 자리수에 의하여결 정되므로 뺄셈할 모듈러스의 배수가 전달되는 방향과 캐리가 전달되는 방향의 충돌과 캐리의 누적으로 인한 지연을 해결하기 위해 몽고메리[9] 모듈라승산을 위한 이차원 시스톨릭 어레이를 제안하였고. 1994년 Orup[7]은 병렬 처리와 기수 25 의 곱셈기를 이용하여 100Kbits/s의 RSA 칩을 설계하였으며. 1995년 Chen[6]은 Walter가 제안한 알고리듬과연산 시간이 동일하나 커다란 나머지 문제와 추가의감산이 없는 변형된 몽고메리 알고리듬을 제안하였다.

본 논문에서는 스마트 카드와 같은 제한된 환경에사용하기 위해 필요한 메모리의 용량을 최소화하는 Barrett[11] 알고리듬을 변형하여 사용한다. 또한 암호화 및 복호화를 고속으로 처리하기 위하여 몫을 추정하여 모듈라 감소를 수행하고 중간 곱의 크기를 제한하는 interleaved 모듈라 곱셈 방식을 이용하여 RSA의 주된 계산 방식인 정수의 모듈라 및 멱승연산을 고속 처리하는 암호 칩을 VHDL을 이용하여 모델링하고 시뮬레이션 및 합성을 하여 단일 칩 IC로 구현하여 성능을 평가 및 분석한다.

본 논문의 구성은 다음과 같다. 2장에서 모듈라멱승 및 곱셈 알고리즘에 대해 논의하며, 3장에서는 고속 RSA 암호 칩의 하드웨어를 설계한다. 4장에서는 하드웨어 설계 방법론과 Faraday FG7000A 라이브러리를 이용하여 구현된 결과를 분석하며. 제 5장에서 결론을 맺고자 한다.

Ⅱ. 모듈라 멱승 및 곱셈

1. RSA 암호 시스템

RSA 암호 시스템의 구성은 그림 1과 같다.

[그림 1] RSA 암호 시스템

[Fig. 1] RSA cryptosystem

여기서 공개키(EN)과 비밀키 의 생성과정은 다음과 같다.

① 두 개의 큰 소수 와 q를 생성한다.

② N=p·q와 euler totient 함수 값 \(\phi(N)=(p-1) \cdot (q-1)\)을 계산한다.

\(GCD(E, \phi(N))=1\) 인 정수 \(E<1<E<\phi(N))\) 를 선택한다.

④ 확장된 유클리드 알고리즘을 이용하여 E・ D= 1 mod \(\phi\)N)인 유일한 정수 \(D(1<D<\phi(N))\)를 계산한다.

또한 RSA 암호 시스템의 암호화 과정과 복호화 과정은 다음과 같다.

. 암호화 : C=ME mod N .

. 복호화 : M=CD mod N

공개키 (E, N)을 이용하여 메시지 M을 암호화하는 과정은 먼저 메시지 M을 [0;N-1] 사이의 정수로표현하고 암호문 C≡ME mod N를 계산하며. 암호문 C를 복호화 하는 과정은 비밀키 D를 이용하여 M≡CD mod N을 계산한다.[1]-[3]

2. 모듈라 멱승

RSA 암호 시스템을 구현하기 위한 가장 핵심적 인부분은 모듈라 멱승 연산으로. 이를 효율적으로 구현하는 것이 RSA 암호 시스템의 속도 향상에 있어 중요한 문제이다. 모듈라 멱승 연산은 모듈라 곱셈의 반복으로서. 전체 연산 시간을 단축시키기 위해서는모듈라 곱셈의 수행 시간을 단축시키거나. 모듈라곱셈의 반복 회수를 줄이는 것이 필요하다.[4]-[8]

모듈라 곱셈의 반복 회수를 감소시키기 위하여 본 논문에서는 이진 알고리듬(binary algorithm)[7] 을 사용한다. 이진 알고리듬은 지수 E의 이진 표현에 근거하여 반복하여 제곱과 곱셈을 수행한다. \((E_{n-1}, E_{n-2}, E_{n-3}, \dots \dots, E_1, E_0)\)를 지수 E의 이진 표현이라고 하면 지수 E는 力비트 길이의 수이고 E, , .[는 Significant Bit)가 되고 Ene LSB(Least Significant Bit)가 되며, 식 (1) 은 지수 E의 이진 표현과 보듈라 멱승 연산을 나타낸다.

\(\begin{aligned} &E=\sum_{i=0}^{n-1} E_{i} \cdot 2^{i} \\ &C \equiv M^{E} \bmod N \equiv \prod_{i=0}^{n-1} M^{E \cdot 2^i} \bmod N \end{aligned}\)       (1)

이진 알고리듬은 지수의 이진 표현을 왼쪽에서 오른쪽으로 검색하면서. 즉 MSB에서 LSB 쪽으로검색하면서. 곱셈과 제곱을 수행하게 된다.

이진 알고리듬은 그림 2와 같이 나타낼 수 있다. 여기서 Afe 모듈라 멱승 연산에 있어 메시지를 뜻하고 E는 지수, N은 법(modulus)을 가리킨다. 그리고 계산된 값은 C로 반환된다.

[그림 2] 이진 알고리즘

[Fig. 2] Binary algorithm

모듈라 멱승 연산을 함에 있어 이진 알고리즘을 사용할 경우에는 지수 E의 이진 표현에서 Ei = 1이 되는 수가 총 곱셈 회수를 결정한다. 즉. 제곱은 지수 E의 비트 수만큼 수행되고 나머지 곱셈 과정은 Ej=1 인 경우에만 수행된다. 모듈라 곱셈과 제곱을 계산하는 시간이 동일하다고 가정하고 한번의 모듈라 곱셈 연산에 소요되는 시간을 Tn이라고 한다면. ME mod N을 계산하기 위한 최악의 경우 시간 복잡도는 2nTn이 되며 평균적인 경우 시간 복잡도는 \(\frac 3 2 nT_n\)이 된다.

3. 모듈라 곱셈

모듈라 멱승 계산이 수행되면 대단히 큰 수가 얻어지므로 이 큰 숫자를 저장하는데 소요되는 기억용량과 모듈라 감소 연산에 소요되는 계산 시간을 줄이기 위한 효율적인 모듈라 곱셈 방법이 요구된다. 본 논문에서는 모듈라 곱셈을 빠르게 수행하기 위하여모듈라 곱셈을 다정도 곱셈과 모듈라 감소 연산으로 나누고 멱승 계산 도중에 생성되는 중간 곱에 대하여 모듈라 감소 연산을 수행한다.

다정도 정수 A의 크기가 |A|=n·b이라면 식 (2)와 같이 b 진법으로 표현될 수 있다.

\(\begin{aligned} A &=A_{n-1} b^{n-1}+A_{n-2} b^{n-2}+\ldots+A_{1} b+A_{0} \\ &=\sum_{i=0}^{n-1} b^{i} A_{i} \end{aligned}\)       (2)

여기서 b=2t, 이면, 식 (2)는

\(A = \sum ^{n-1} _{i=0} 2^{ti} A_i\)       (3)

이 되며. 모듈라 곱셈은 식 (4)과 같이 표현될 수 있다.

\(A B \bmod N \equiv\left(\sum_{i=0}^{n-1} 2^{i t} A_{i} B\right) \bmod N\\ \begin{aligned} \equiv &\left(\left(\ldots\left(A_{n-1} B 2^{t}+A_{n-2} B\right) 2^{t}+\ldots\right.\right.\\ &\left.\left.+A_{1} B\right) 2^{t}+A_{0} B\right) \bmod N \\ \equiv &\left(\left(\ldots\left(\left(A_{n-1} B \bmod N\right) 2^{t}+A_{n-2} B \bmod N\right) 2^{t}+\ldots\right.\right.\\ &\left.\left.+A_{1} B \bmod N\right) 2^{t}+A_{0} B\right) \bmod N \end{aligned} \)       (4)

위 식을 순환 형식으로 다시 쓰면 식 (5)와 같다.

\(\begin{aligned} &S_{-1} \equiv 0 \\ &S_{i} \equiv\left(S_{i-1} 2^{t}+A_{n-1-i} B\right) \bmod N \end{aligned}\)       (5)

식 (5)에서 변수 Sn-1는 n번의 계산 수행 후의 Q결과가 된다.

여기서 모듈라 감소

\(\begin{aligned} &\left(S_{i-1} 2^{t}+A_{n-1-i} B\right)-\left\lfloor\frac{A \cdot B}{N}\right\rfloor \cdot N \\ &=\left(S_{i-1} 2^{t}+A_{n-1-i} B\right)-q \cdot N \end{aligned}\)

를 수행할 때 나눗셈 몫 4의 정확한 값을 계산하는 대신에 <7의 값을 추정하는데. 4의 값을 추정하기 위해 본 논문에서는 스마트 카드와 같은 제한된 환경의 디바이스에 사용될 수 있는 알고리듬. 즉 계산에 필요한 메모리의 용량을 최소화하기 위해 식 (6) 과같이 Barrett[11] 알고리듬을 변형하여 이용한다.

\(\begin{gathered} \hat{q}=\left\lfloor\frac{S}{N}\right\rfloor=\left\lfloor\frac{\left\lfloor\frac{S}{2^{n+\beta}}\right\rfloor\left\lfloor\frac{2^{n+\alpha}}{N}\right\rfloor}{2^{a-\beta}}\right\rfloor \\ (n=\mid N, \quad \alpha=t+3, \quad \beta=-2) \end{gathered}\)       (6)

여기서 \(\left\lfloor\frac{2^{n+a}}{N}\right\rfloor\)는 고정된 모듈러스 N에 대해 상수가 되고 미리 계산될 수 있다. 따라서 모듈라곱셈은 그림 3과 같이 나타낼 수 있다.

[그림 3] 모듈라 곱셈

[Fig. 3] Modula multipication

Ⅲ. 하드웨어 설계

모듈라 멱승 연산을 고속으로 수행하기 위하여 본논문에서 설계한 암호 칩의 구조는 그림 4와 같으며전체 시스템을 제어하기 위한 Controller, 외부와데이터의 입 . 출력을 위한 I/O buffer. 암호화 및복호화에 사용되는 키를 저장하기 위한 Exponent Reg, Modulus Reg, 메시지를 저장하기 위한 Text Reg, 전처리에 사용되는 미리 계산된 상수를저장하기 위한 Constant Reg, 메시지를 암호화및 복호화 하기 위해 모듈라 멱승 연산을 수행하는 Modular Exponentiation Module로 구성된다.[12]-[13]

내부에서 데이터는 512비트 단위로 처리되고 외부와의 입·출력은 8비트 단위로 이루어지며, 512 비트 RSA 연산( ME mod N)을 수행하는데 필요한오퍼랜드를 저장하기 위해 4개의 512 비트 시프트레지스터를 사용한다. 모듈러스 레지스터는 공개키을 N 저장하며. 상수 레지스터는 알고리듬에서 전처리에 사용되는 미리 계산된 상수 \((\left\lfloor\frac{2^{n+a}}{N}\right\rfloor)\)를 저장하고, 지수 레지스터는 지수 E를 저장하고 텍스트 레지스터는 메시지 M을 저장한다.

[그림 4] 암호 칩의 구조

[Fig. 4] Architecture of the crypto chi

암호 칩의 전체 동작은 다음과 같다. 초기 단계에서 RSA 오퍼랜드가 8 비트 입력 버퍼를 통해 시프트 레지스터에 로딩되고 메시지 Af이 텍스트 레지스터에 로딩되는 동안 지수 레지스터는 최상위 비트가 0 이 아닐 때까지 시프트하고 지수의 비트 수를 카운트한다. Modular Exponentiation 모듈은 입력된 메시지를 연산하고 연산이 완료되었다는 신호를 Controller에 보낸다. Controller는 연산이 완료되었다는 신호를 Modular Exponentiation 모듈로부터 받으면 외부에 출력이 가능하다는 신호를 보내고 외부의 제어 신호에 따라 출력 버퍼를 통해 암호화 또는 복호화된 데이터를 출력한다.

Controller는 각 블록의 동작을 제어하기 위해제어 신호를 생성한다. Controller는 리셋 신호가활성화되면 각 블록을 클리어하고 다음 클럭에서 모 . 듈러스 키 값을 입력 받는다는 것을 외부에 알린다. 외부에서 더〕이터가 입력 버퍼를 통해 입력되면 모듈러스 레지스터에 입력 데이터가 저장되도록 한다. 모듈라 감소 연산의 몫을 추정하는데 u〕리 계산되어야 하는 값을 처리하기 위해 지수 키를 입력 받는다는 것을 외부에 알린다. 모듈러스 키 값을 입력받는것과 마찬가지로 지수 키 값을 입력 받아 지수 레지스터에 저장한다. 지수 키 값이 입력되면 암호화 또는 복호화할 데이터를 입력받는다는 것을 외부에 알린다. 입력 텍스트 레지스터에 암 . 복호화 메시지의저장이 완료되면 외부에 모듈라 멱승 연산을 수행하고있다는 것을 알리고 모듈라 멱승 모듈에 신호를 보내어 모듈라 멱승 연산을 시작한다. 모듈라 멱승 연산은 멱승 연산과 모듈라 곱셈 및 감소 연산으로 구성되는데 모듈라 곱셈을 위한 두 값이 결정된 후 모든연산이 완료되면 신호를 외부에 보내어 연산이 완료되어 결과를 출력할 수 있다는 것을 알리고 외부의제어 신호에 따라 출력 버퍼를 통해 외부로 8비트씩출력한다.

512비트 RSA 연산을 수행하는데 필요한 오퍼랜드를 저장하기 위해 사용된 4개의 512비트 시프트레지스터는 선택 신호에 따라 좌 . 우측 시프트' 홀딩 . 로딩 기능을 수행할 수 있도록 설계하였다.

이진 알고리듬과 몫을 추정하여 중간 곱을 제한하는 interleaved 모듈라 곱셈 방식을 이용한 모듈라 멱승 모듈의 구조는 그림 5와 같다.

[그림 5] Modular Exponentiation 블록의 구조

[Fig. 5] Structure of the Modular Exponentiation Unit

모듈라 멱승 블록은 모듈러스 키의 입력이 끝난 후에 몫을 추정할 때 사용되는 미리 계산될 수 있는 값을 구하여 상수 레지스터에 저장하고 지수 키. 입력 텍스트의 저장이 완료된 후에 CC_SS 신호가 활성화되면 이진 알고리듬에 의해서 모듈라 제곱 연산을 수행할 두 값을 결정하고 CC_CE 신호를 Controller에 보낸다. 모듈라 곱셈 블록은 AIBSLCS 신호가 활성화되면 A의 1자리와 日의 곱셈을 계산하고 AIBSL CE 신호를 Controlled 보낸다. S_CS 신호가 활성화되면 A와 B의 곱셈 결과에 이전 부분 모듈라곱셈 결과의 두배를 더하고 S_CE 신호를 Cont- roller에 보낸다. Q_CS 신호가 활성화되면 상수 레지스터에 저장된 값을 사용하여 몫을 추정하고 Q_CE 신호를 Controller에 보낸다. QN_CS 신호가 활성화되면 추정된 몫과 모듈러스의 2의 보수의 곱셈을 수행하고 QN_CE 신호를 Controller에 보낸다. SI_CS 신호가 활성화되면 중간 곱에 대해 모듈라 감소를 수행하고 SLCE 신호를 Controller에 보낸다. 이와 같이 중간 곱에 대해 모듈라 곱셈이 종료될 때까지 모듈라 감소를 수행한다. Controller 는 모듈라 곱셈이 종료되어 CC_MM_END 신호가 활성화되면 CM_CS 신호를 다시 보내어 Q_E 의 이진 값에 따라 모듈라 곱셈을 수행할 A와 B를 결정하도록 알린다. 모듈라 멱승 블록은 A. B의 값을 결정하고 CM_CE 신호를 Controller에 보내어 모듈라곱셈을 수행하도록 한다. 이와 같은 과정을 전체 모듈라 멱승 연산이 종료될 때까지 계속해서 수행한다.

Ⅳ. 설계 분석 및 결과

본 논문에서 사용한 탑다운 방식의 설계 흐름은그림 6과 같다.

[그림 6] 설계 흐름

[Fig. 6] Design flow

[그림 7] 설계된 암호 칩의 블록 스키메틱

[Fig. 7] Block schematic of the designed crypto chip

초기 시스템 단계에서 시스템 규격의 만족 여부를 검증하고. 이를 VHDL을 사용하여 구성한 후 Sy- nopsys오!" Cadence를 이용하여 함수 레벨의 동작 검증을 하였다. 이후 Faraday FG7000A 라이브러리를 이용하여 Synopsys에서 합성을 하여 게이트 레벨의 타이밍 검증을 수행하였다.[15]

설계된 암호 칩의 전체 블록 스키메틱은 그림 7과 같고 레이 아웃은 그림 8과 같다.

[그림 8] RSA 암호 칩의 레이아웃

[Fig. 8] Layout of the RSA crypto chip

구현된 암호 칩은 75.000 게이트 수준으로 합성되었으며. 동작 주파수는 50MHz이고 1회의 RSA 연산을 수행하는데 소요되는 전체 클럭 사이클은 0.26M 이며 512비트 당 처리 속도는 102.4Kbits/s였다. 구현된 암호 칩의 칩 면적 등 주요 정보는 표 1과같으며 다른 RSA 칩과의 비교 결과는 표 2와 같다.

[표 1] 주요 칩 정보

[Table 1] Some featues of our RSA chip

[표 2] RSA 칩의 비교

[Table 2] A comparison of RSA chips

Ⅴ. 결론

소인수 분해의 어려움을 이용하는 RSA 암호 시스템은 키의 분배와 관리가 용이하고. 디지털 서명이 가능한 장점이 있으나. 암호화와 복호화 과정에서 512 비트 이상의 큰 수에 대한 멱승과 모듈라 감소 연산이 요구되기 때문에 처리 속도의 지연이 큰 문제가 되므로 모듈라 멱승 연산의 고속화를 위해 몫을 추정하여 모듈라 감소를 수행하고 중간 곱의 크기를 제한하는 interleaved 모듈라 곱셈 방식과 carry save 덧셈을 이용하여 RSA의 주된 계산 방식인 정수의 모듈라 및 멱승 연산을 고속 처리하는 암호 칩을 VHDL을 이용하여 모델링하고 Faraday FG7000A 라이브러리를 이용하여 합성하고 타이밍 검증하여 단일 칩 IC로 구현하였다.

구현된 암호 칩은 75.000 게이트 수준으로 합성되었으며. 동작 주파수는 50MHz이고 1회의 RSA 연산을 수행하는데 소요되는 전체 클럭 사이클은 0.26M 이며 512비트 당 처리 속도는 l02.4Kbits/s였다.

* 이 논문은 정보통신부 대학기초연구지원사업에 의해서 수행된 연구결과임

참고문헌

  1. Applied Cryptography Bruce Schneier
  2. Public-Key Crytography Arto Salomaa
  3. Network and Internetwork Security Principles and practice William Stallings
  4. IEEE transaction on Computers v.41 no.7 Modular multiplication hardware algorithms with a redundant representation and their application to RSA cryptosystem N. Takagi;S. Yajima
  5. IEEE Transactions on Computers v.42 Systolic modular multiplication Walter
  6. Thesis work of Po-Song Chen VLSI implementation for a systolic RSA public key cryptosystem Chen, C.-W. Wu
  7. in HOT Chips Ⅵ, Symposium Record A 100Kbits/s Single Chip Modular Exponentiation Processor Holger Orup
  8. in Proceedings of 7th Annual IEEE International ASIC Conference and Exhibit A single-chip RSA processor implemented in a 0.5μm rule gate array Ishii. S.;Ohyama, K.;Yamanaka. K.
  9. Mathematics of Computation v.42 no.3 Modular multiplication without trial division P. L. Montgomery
  10. In Proceedings of the 12th Symposium on Computer Arithmetic Simplifying quotient determination in high-radix modular multiplication Holger. Orup
  11. In Advances in Cryptology-CRYTO '86 v.263 of LNCS Implementing the Rivest Shamir and Adleman public key encryption algorithm on a standard signal processor P. Barrett
  12. In VLSI architecture VLSI-processor architecture and design F. Anceau
  13. VLSI array processors S. Y. Kung
  14. Proceeding of the 1992 ASIC Conf. and Ex. Using VHDL for model and design of processing unit Z. Navadi