Ⅰ. 서론
컴퓨터와 통신 기술의 발달로 통신망을 통한 정보의 전송이 급속히 늘어남에 따라 이들 정보의 보안 문제가 대두하게 되었다. 이런 안전한 정보의 전송 및 보관을 위해서는 정보의 암호화가 필요하다. 암 호는 데이터를 암호 처리하여 저]3자가 데이터를 취 득하여도 내용을 알 수 없으며. 오직 키를 가진 사 람만이 복호화하여 데이터를 이용할 수 있도록 하는 기술이다.
암호화 방법에는 키의 공개 여부에 따라 공개키 암호와 비밀키 암호로 나뉜다. 공개키 암호는 암호 화할 때의 키와 복호화할 때의 키가 다른 시스템이 며. 대표적인 예로 RSA와 ECC가 있다. 비밀키 암 호는 암호화할 때의 키와 복호화할 때의 키가 같은 시스템으로, 블록 암호 알고리즘과 스트림 암호 알 고리즘으로 나뉘며, 1977년 IBM이 개발해 미국정 부에 의해 국가 암호 표준으로 채택된 DES(Data Encryption Standard)가 현재 널리 사용되고 있다. 그러나 최근 컴퓨터 병렬 처리 기술의 발달로 인해 DES가 해독되는 등 보안 및 관리에 문제점이 지적 되고 있다. 이로 인해 새 세기에 대비한 새로운 표준 암호 알고리즘의 필요성이 제기되었고. 이에 미국 NIST(National Institute of Standards and Technology)에서는 차세대 미국 암호 표준을 개발 하기 위한 AES(Advanced Encryption Standard) 개발 과제가 수행되었다.
최종 라운드에 MARS, RC6, SERPENT, RIJNDAEL. TWOFISH 5개의 후보가 올랐고, 2000년 10월에 그 중 하나인 RIJNDAEL이 최종 AES 알고리즘으로 채택되었다. 그리고 1년 정도의 시험 과정을 거친 후. 미국 표준으로 공식 발표할 예정이다. 그리고 유럽을 중심으로 AES 최종 과정 에 기여할 뿐만 아니라 그와 독립적으로 세계 표준 을 만들기 위한 움직임이 일어나 암호 원천 기술 공 모를 발표하였고. 우리 나라에서도 여기에 우리 나 라 암호 표준중의 하나로 128비트 블록 암호 알고 리즘인 SEED를 제출하려고 하는 과정에 있다. SEED는 국내 정보应호센터 주관으로 만들어진 128 비트 블록 암호 알고리즘으로. 국내 암호 표준으로 제정되어 현재 민간 분야에서 폭넓게 활용되고 있다.
데이터 보호를 위한 암호 알고리즘은 보통 구현이 용이하고 개발비용이 저렴한 이유 등으로 주로 소프 트웨어로 구현된다. 그러나 소프트웨어로의 구현은 컴퓨터나 네트워크의 발전으로 증가하는 처리 속도 를 따라가지 못하며 보안에서도 약점을 보인다. 따라서 암호 처리 속도를 증가시키고 보안을 강화하기 위해 암호 알고리즘의 하드웨어로의 구현이 필요하 匸본 논문에서는 먼저 SEED를 AES 최종 후보 알고리즘들과 하드웨어 구현 측면에서 비교하고, 속 도 측면에서 우수한 성능을 가질 수 있는 고속의 SEED 하드웨어 구조를 제안한다.
본 논문의 구조는 2장에서 이전에 SEED를 하드웨 어로 구현한 논문들의 구조와 성능을 분석하고, 3장에 서는 블록 암호를 위한 운영 모드에 대해서 알아본 다. 4장에서는 SEED 암호 알고리즘에 대해서 알 아보고, 5장에서는 SEED 암호 알고리즘을 AES 최종 후보 알고리즘들과 하드웨어 구현 측면에서 비 교한다. 6장에서는 최고 3배까지의 속도 향상을 기 할 수 있도록 하는 SEED의 하드웨어 구조를 제안 하고, 이 구조에서의 동작과정에 대해 설명한다. 7장 에서는 제안한 하드웨어 구조의 크기와 성능을 분석 하고. 다른 논문과 성능을 비교한 후, 마지막으로 결론을 이끌어 내었다.
Ⅱ. Previous Work
SEED를 하드웨어로 구현한 기존의 방법들을 살 펴보면. 현재 일부 연구소와 회사들이 자체 설계를 가지고 있으나 내부 구조를 공개하지 않으므로 여기 에서는 공개되어 있는 몇 가지 구현사례에 대해 알 아본다.〔8〕에서는 DES, Triple DES와 SEED 암호 알고리즘을 모두 수행하는 암호 프로세서를 설계 하였고, 4가지 동작 모드(ECB, CBC, CFB, OFB) 를 모두 지원한다. SEED의 경우 1라운드 구조의 하드웨어를 배치하고 16라운드 동안 반복적으로 사용하는 구조를 사용한다. F 함수가 복잡하여 1클럭 으로 1라운드를 구현하면 많은 하드웨어가 소요되고 클럭 주파수를 감소시키므로 SEED 라운드 동작을 3개의 클럭으로 구현하고 라운드 키의 계산은 이전 라운드에 파이프라인 방식으로 미리 계산하는 방법을 사용한다. 3개의 클럭으로 SEED의 1라운드를 구현함으로써 하드웨어 공유를 극대화시켜 각 클럭에 1개의 G 함수만 필요하게 되어 하드웨어 면적을 1 라운드/1 클럭 방식에 비해 2/3 정도 감소시켰다. 이를 0.25um CMOS 공정으로 합성하여 최장 지 연 경로는 약 9.38ns이었고. lOOMhz의 동작 주파 수에서 250Mbps까지 가능하다고 서술되어있다.⑻
또한〔9〕에서는 필요한 자원을 최소로 줄여 SEED 의 모든 알고리즘이 구현되도록 하였다. F 함수에서 의 3번의 G 함수 사용을 1 개의 G 함수로 처리하기 위해 결과를 귀환시켜 처리함으로써 F 함수에서 필요한 G 함수의 수를 1개로 줄였고. G 함수 동작 에 필요한 Sl-box와 S2-box를 각각 1개씩만 구현 하여 이를 순차적으로 사용함으로써 G 함수 구현에 필요한 S-box의 수를 반으로 줄였다. 내부 메모리 를 사용하여 FPGA내에 모든 SEED 암호 알고리즘을 구현하였고. 최대 28Mhz의 클럭에서 동작이 가능하며 최대 14.9Mbps로 암호화를 수행한다.⑼
Ⅲ. 블록 암호의 운영 모드
임의의 길이 메시지를 암호화시키기 위하여 블록 암호를 이용할 때 블록 암호를 위한 운용 모드를 이 용하는데, 운용모드를 유용하게 이용하기 위해서는 사용된 암호자체 만큼 안전하고 효율적으로 처리되 어야 한다. 또한 이러한 운용 모드는 기본적인 암호 의 고유 속성이외의 속성을 가질 수도 있다. 어떤 블록 크기의 블록 암호에도 적용할 수 있는 일반화 된 네 가지의 운용 모드가 국제 표준인 ISO/IEC 10116으로 표준화되어 있으며. 이러한 모드에는 ECB(Electronic Code Block). CBC(Cipher Block Chaining). CFB (Cipher Feedback). 그리고 OFB(Output Feedback) 모드가 있다.
ECB 모드는 [그림 1〕과 같이 가장 단순한 모드로 평문 블록별로 암호 시스템에 의해 암호화한다. 일반적으로 쉽게 생각할 수 있는 모드로 동일한 평문 과 키에 의한 암호문은 항상 똑같다는 것이 단점이 나 데이터의 암호 처리 속도의 향상을 위해 파이프 라인구조의 사용이 가능하다.
[그림 1] ECB 모드의 암복호화 구조
CBC 모드는 [그림 2〕와 같은 구조로, 먼저 평문을 초기 값과 xor 연산을 한다. 이렇게 해서 첫번째 평 문을 암호화하여 전송하고 다음 평문부터는 이전 암 호문을 저장하고 있다가 이것과 xor한 값을 암호화 하여 전송한다. 이런 CBC 모드의 암호화는 이전의 암호문에 영향을 받으므로 동일한 평문과 키에 의한 암호문이라 할지라도 암호문이 경우에 따라 다르게 나타나서 암호의 해독을 더욱더 어렵게 할 수 있다. 그리고 이 모드는 통신로 상의 비트 손실이나 삽입 이 일어났는지를 알 수 있다. 예를 들어. i 번째 암 호문이 제대로 수신되지 않았다면 1번째 평문을 복 호화해내지 못함은 물론, i + 1 번째 평문을 얻어내 지도 못한다. 이런 이유로 이 CBC 모드는 정보의 인증에 사용된다. 평문을 이전 암호문과 xor 연산을 한 후 암호화하므로, 암호화 시에 파이프라인 구조의 사용이 불가능하고 복호화 시에만 파이프라인 구조를 사용할 수 있다.
[그림 2] CBC 모드의 암복호화 구조
OFB 모드는 위성 통신의 암호화에 쓰이며, 암호 시스템에서 나온 데이터와 평문을 xor하여 암호문을 만드는 것으로 오류 전파 현상이 발생하지 않는다. 그러나 송수신 사이에 동기를 인위적으로 조절해야 하고 전송 중 비트의 삽입이나 손실이 발생하면 동 기를 조절하여야 한다. 데이터의 종속성으로 보아 파이프라인 구조가 불가능하다.
CFB 모드는 이전의 암호문이 암호 시스템의 입력 으로 사용되어 의사 난수 출력을 생성하고. 이것을 다시 평문과 xor하여 암호문을 생성한다. 암호 시스템의 입력을 이전의 암호문에서 받음으로 송수신 사이에 한 비트의 오류가 발생하면 전체 비트까지 오 류가 전파된다. 반면에 별도의 동기 조절 기법이 필 요하지 않고 자동적으로 동기가 조절된다. 이 모드 는 CBC 모드와 같이 정보의 인증에 사용되고. 복 [그림 2) CBC 모드의 암복호화 구조 호화 시에만 파이프라인 구조를 사용할 수 있다.
위의 4가지 모드를 지원하도록 암호 알고리즘을 하드웨어로 구현 시 데이터의 처리 속도 향상을 위해 파이프라인 구조를 사용할 수 있다. 그러나 데이터의 종속성으로 보아 CBC, OFB. CFB 모드의 암 호화와 CFB 모드의 복호화 시에는 파이프라인 구조를 사용할 수 없다.
Ⅳ. SEED 암호 알고리즘
SEED 암호 알고리즘은 Feistel 구조로 이루어져 있으며, 128비트의 평문 블록단위당 128비트 키로 부터 생성된 16개의 64비트 라운드 키를 입력으로 사용하여 총 16라운드를 거쳐 128비트 암호문 블록 을 출력한다. Feistel 구조란 각각 t비트인 Lo. Ro 블록으로 이루어진 2t비트 평문 블록(Lo, Ro)이 r 라운드(rZl)를 거쳐 암호문(Lr. Rr)으로 변환되는 반복 구조를 말한다. 이러한 Feistel 구조는 라운드 함수에 관계없이 역 변환이 가능하며, 두 번의 수행으 로 블록간의 완전한 diffusion이 이루어지며, 알고 리즘의 수행속도가 빠르고, H/W 및 S/W로 구현이 용이하고, 아직 구조상의 문제점이 발견되고 있지 않다는 장점을 지니고 있다.(1)
4.1 SEED 전체 구조
128비트 입력 평문블록을 2개의 64비트 블록(Lo(64), R°(64))으로 나누어, 16개의 64비트 라운드 키를 이용하여 16라운드를 수행한 후. 최종 128비트 암호문 블록(玖6(64). 队(64))을 출력한다.[그림 3〕 은 SEED 알고리즘의 전체 구조를 나타낸 것이다.
[그림 3) SEED 전체 구조
4.2 F 함수
Feistel 구조를 갖는 블록 암호알고리즘은 F 함수의 특성에 따라 구분될 수 있다. SEED의 F 함수는 수정된 64비트 Feistel 형태로 구성된다. F 함수는 각 32비트 블록 2개(C. D)를 입력으로 받아. 32비 트 블록 2개(C‘, D')를 출력한다. 즉, 암호화 과정에서 64비트 블록(C, D)와 64비트 라운드 키 Ki = (Ki, 0;Ki, l)를 F 함수의 입력으로 처리하여 64비트 블록(C‘. D')을 출력한다. F 함수의 구조는 [그림 4〕와 같이 key mixing부분과 32비트 모듈러 덧셈기를 포함한 3개의 G 함수 부분으로 구성되어 있으며, 수식으로 나타내면 식 (1)과 같이 기술되어 진다. (i = 라운드 수)
[그림 4) F 함수 구조
#(1)
4.3 G 함수
전체 G 함수는 식 (2)와 같이 기술되며. [그림 5〕 는 G 함수의 구조를 나타낸 것이다.
[그림 5) G 함수 구조 - S-box 사용시
#(2)
where mO=Oxfc.ml = 0xf3.m2=Oxcf, m3=Ox.3f (& : bit-wise AND)
G 함수는 구현의 효율성을 위해 4개의 확장된 4 바이트 SS-box들(4K bytes)의 xoi로 구현할 수 있다. 이를 위해 식 (3)과 같은 4개의 SS-box들을 저장해야 한다.
#(3)
(여기서. 1 concatenation)
이 확장 SS-box들을 이용하면 G 함수의 결과는 식 (4)와 같이 기술되며. 구조는 [그림 6〕와 갇다.
[그림 6] G 함수 구조 - SS-box 이용시
#(4)
Ⅴ. SEED와 AES 최종 후보 알고리즘들의
비교 분석
5.1 기본 가정
본 논急에서는 SEED의 하드웨어 구현 측면에서의 성능을 알아보기 위해 같은 비밀키 블록 암호 알고 리즘으로 AES 최종 후보 알고리즘들이었던 MARS, RC6, RIJNDAEL. SERPENT. TWOFISH와 비교하였다. SEED와 AES 최종 후보 알고리즘들의 동등한 비교를 위해 다음과 같은 가정 하에 분석한다.
(1) 128 비트의 평문과 128비트의 키를 사용한다.
(2) 키 생성 부는 구현하지 않는다. 그 대신에. 외 부의 키 생성 부에서 읽어올 라운드 키를 저장 할 메모리를 포함시킨다. 이는 키 생성과정이 매번 일어나는 것이 아니로' 필요할 때마다 키 생성부를 외부에서 소프트웨어로 구현하고 로딩할 수 있다는 가정 하에서이다.
(3) [그림 7〕과 같이 1 라운드만 구현하고. 여기에 레지스터와 멀티플랙서를 각각 1개씩 추가한다. 먼저 멀티플랙서를 통해 평문을 입력받아 레지 스터에 저장한다. 다음 클럭에서 1라운드만을 구현한 라운드 수행부를 수행하고. 이를 멀티플 랙서를 통해 귀환시켜 레지스터에 저장한다. 이 과정을 필요한 라운드 수만큼 반복하여 데이터를 암호화한다.
(그림 7) SEED와 AES 최종 후보 알고리즘들의 비교를 위한 기본 구조
(4) 0.5um 삼성 스탠다드 셀 라이브러리를 근거로 성능을 예즉하고. 라우팅에 의해 생기는 지연은 고려하지 않는다.
5.2 최장 지연 패스
위의 4가지 가정 하에 SEED와 AES 최종 후보 알고리즘들을 하드웨어로 구현 시 클럭의 주기를 결 정하는 최장 지연 패스는 〔표 1〕과 같다.
(표 1) SEED와 AES 최종 후보 알고리즘들의 최장 지연 패스
최장 지연 패스에 의해 SEED오! AES 최종 후보 알고리즘들은 2 가지 부류로 구분할 수 있다. 첫 번째 부류로, SEED오]. MARS. RIJNDAEL. SERPENT 는 S-box와 여러개의 XOR에 의해 최장 지연 패스 가 결정되었다. 여기에 SEED와 RIJNDAEL의 최장 지연 패스에는 덧셈기도 포함된다. 두 번째 부류로 RC6와 TWOFISH는 최장 지연 패스에 S-box가 포함되지 않은 것으로. RC6는 배럴 쉬프트와 XOR. TWOFISH는 덧셈기와 XOR에 의해 최장지연 패 스가 이루어져 있다.
5.3 성능 비교
ASIC칩으로 구현할 경우를 위해 0.5um 삼성 스탠 다드 셀 라이브러리를 근거로 성능을 예측하였다. 클럭의 주기는 〔표 1〕의 최장 지연 패스를 수행하는데 걸리는 시간으로. init MUX는 로딩되어 들어오는 새로운 평문 블록과 라운드를 수행하고 귀환되어 들 어오는 데이터 중 하나를 선택하는 MUX, XORne n비트의 XOR, MUX2는 2개의 입력을 가지는 MUX, ADDne n 비트의 덧셈기, Barrel Shift32는 32 비트의 Barrel Shift. S-box nxme n비트의 입 력과 m비트의 출력을 가지는 S-box이다. 클럭의 주기는 S-box를 구현 시 사용한 메모리의 access time, 덧셈기와 배럴 쉬프트와 XOR 지연 등의 합 으로 결정되었다. SEED와 AES 최종 후보 알고리 즘들의 클럭 주기와 전체 수행 라운드 수. 클럭 수, 성능은 〔표 2〕와 같다. 성능은 클럭 주기와 클럭 수 를 곱해서 구해지는 종 수행 시간을 1 개의 평문 블 록 크기인 128비트로 나누어 구한다.
(표 2) SEED와 AES 최종 후보 알고리즘들의 성능 비교
5.3.1 MARS
MARS는 forward mixing부분의 8라운드, cryp- tographic core부분의 16라운드. backwards mixing 부분의 8 라운드로 이루어져있다.(2) MARS의 암호 화 과정은 총 32라운드로 구성되며, 1개의 평문을 암호화하는데 5ns의 클럭 주기로 114클럭이 걸리며, 224.6Mbps의 성능을 가진다.
5.3.2 RCS
RCS는 다른 알고리즘들과 달리 S-box를 시용하지 않으며 20 개의 라운드로 구성되어있다.(3) 5ns의 클럭 주기로 122클럭을 수행하여 암호화 과정을 마 치며, 209.8Mbps의 성능을 가진다.
5.3.3 RIJNDAEL
RUSDAELe ByteSub, ShiftRow, MixColumn, AddRoundKey transformation부분으로 1 라운 드가 이루어진다. 1개의 평문을 암호화하는데 이를 10번 반복 수행해야하고, 9.7ns의 클럭 주기로 10 클럭이 걸린다.(4) 성능은 1319.6Mbps로. SEED와 AES 최종 후보 알고리즘들 중 가장 좋다.
5.3.4 SERPENT
SERPENT는 SP-network 구조로, key mixing 부분과 S-box부분과 linear transformation 부 분으로 구성된 1라운드를 32번 반복 수행하여 평문을 암호화한다.⑸ 1개의 평문을 암호화하는데 6.3ns의 클럭 주기로 32클럭이 걸리며. 634.9Mbps의 성능을 가진다.
5.3.5 TWOFISH
TWOFISH는 Feistel-like 구조로. S-box와 MDS (Maximum Distance Separable) Matrices 를 사용한 G 함수와 PHT(Pseudo Hadamard Transformation)와 key addition으로 구성된 라운드 함수를 16번 반복 수행하여 암호화 과정을 수행한다.⑹ 5ns의 클럭 주기를 사용하여 암호화 과정을 처리하는데 128클럭이 소요되어 200.0Mbps 의 성능을 가진다.
5.3.6 SEED
SEED는 10.3ns의 클럭 주기로 16라운드를 48 클럭에 수행하여 258.9Mbps의 성능을 가진다.
분석 결과. RIJNDAEL이 1319.6Mbps로 가장 빠른 처리 속도를 가진다. 이는 두 번째로 빠른 SERPENT보다 2배 이상 빠를 뿐만 아니라 가장 느린 TWOFISH보다는 6.5배 이상 빠른 처리 속 도다. RIJNDAEL과 SERPENT를 제외한 나머지 알고리즘들은 200Mbps대의 처리속도를 보이며, 그 중에서는 SEED가 가장 빠른 처리 속도를 보였다.
Ⅵ. SEED의 하드웨어 설계
본 장에서는 속도 측면에서 우수한 성능을 가질 수 있는 고속 SEED 구조를 제안한다. 고속의 암호 화 과정을 처리할 수 있도록 제안한 SEED의 하드 웨어 구조는 [그림 8〕과 같다. 이 구조는 크게 암호 화 처리 블록과 컨트롤 블록의 두 부분으로 나뉘어 진다. 암호화 처리 블록은 1라운드를 key mixing 블록, J1 함수 블록. J2 함수 블록. J3 함수 블록 의 네 부분으로 나누어 구현하였고. 이를 라운드 수 만큼 반복 수행함으로써 데이터를 암호화한다. key mixing 블록은 64비트 라운드 키와 평문의 xor 연 산으로 이루어져 있다. JI, J2, J3 함수 블록은 SS-boxf- 이용하여 구현한 G 함수 블록과 32비트 모듈로 덧셈기로 이루어져 있고. J3 함수 블록은 xor 연산이 추가된다. 처리 속도를 높이기 위해 G 함수 블록에 사용되는 4개의 SS-box를 메모리에 각각 따로 저장하여 병렬로 처리하였다. [그림 9〕는 이 중 하나인 J2 함수 블록을 나타낸 것이다. 컨트롤 블록은 암호화 처리 블록의 동작을 제어하기 위한 카운터와 간단한 state machine으로 이루어져 있다.
(그림 8) 제안한 SEED engine 전체 구조
(그림 9) J2 함수 구조
본 논문에서 제안한 SEED enginee 블록 암호 의 운영 모드 4가지인 ECB. CBC, OFB. CFB 모드를 모두 지원하도록 설계하였다. 모드에 따라 파이프라인 구조를 사용하는 경우와 파이프라인 구조를 사용하지 않는 경우의 두 가지로 나뉘어진다. 3절에서와 같이 ECB 모드의 암호화, ECB, CBC, CFB 모드의 복호화 시에는 파이프라인 구조를 사용할 수 있고 나머지 경우에는 파이프라인 구조를 사용할 수 없다. 파이프라인 구조를 사용하는 경우에는 고속의 암호 처리를 위해 암호화 블록을 J1 함 수 블록, J2 함수 블록, key mixing 블록을 포함한 J3 함수 블록의 3개의 단계로 나누고, 이를 파 이프라인을 시켜 3클럭에 1라운드가 수행되도록 하였다. 1 라운드에 SS-box를 사용하는 G 함수가 3번 수행되는데. 파이프라인 구조를 사용하면 G 함수 블록 1 개로 공유하여 사용할 수 없으므로 메모리의 사용이 3 배로 늘어나게 된다. 데이터의 종속성으로 인해 파이프라인 구조를 사용할 수 없는 경우에는 파이프라인 구조를 사용할 때 보다 성능이 1/3 정도로 감소한다.
먼저 파이프라인 구조를 사용하는 경우, 암호화 시 전체 타이밍도는 [그림 10〕과 같다. 먼저 로드된 첫 번째 128 비트 평문은 멀티플랙서를 통과하고 key mixing 블록을 수행한 후 레지스터1에 저장된다. 다음 클럭에서 첫 번째 평문은 J1 함수 블록을 수행 한 후 레지스터2에 저장되고. 두 번째 평문은 전 클 럭에서의 첫 번째 평문처럼 멀티플랙서를 통과하고 key mixing 블록을 수행한 후 레지스터1에 저장 된다. 그리고 다음 클럭에서는 첫 번째 평문은 J2 함수 블록을 수행한 후 레지스터3에 저장되고. 두 번째 평문은 J1 함수 블록을 수행한 후 레지스터2에 저장되고, 마지막 세 번째 평문은 다른 평문들과 마찬가지로 멀티플랙서를 통과하고 key mixing 블 록을 수행한 후 레지스테에 저장된다. 다음 클럭부터 멀티플랙서는 로드되어 입력되는 평문이 아닌 J3 함수 블록을 수행하고 귀환되어 오는 데이터를 통과 시키며, 3개의 평문은 각각 다음 함수 블록들을 수 행한다. 이렇게 3개의 평문은 1라운드만을 구현한 암호화 블록을 각각 16번씩 반복 수행하여 암호문을 생성한다. 그러므로 파이프라인 구조를 사용하면 3개의 평문이 동시에 암호화 과정을 수행하게 된다. 3개의 평문이 암호화 과정을 거쳐 암호문이 생성된 후 다음 3개의 평문을 위의 과정처럼 멀티플랙서를 통해 받아서 암호화 과정을 수행하게 된다. 이렇게 파 이프라인 구조를 사용하여 암호화할 때 각 블록별로 수행되는 과정은 [그림 11〕과 같다.
(그림 10) 파이프라인 구조를 사용한 ECB 모드의 암복호 화와 CBC 모드의 복호화 시 타이밍도
(그림 11)파이프라인 구조를 사용 시 블록별 수행도
파이프라인 구조를 사용하지 않는 경우의 암호화 시에는[그림 12〕와 같이 하나의 평문을 로드해서 이를 16번 반복 수행하여 암호문을 생성한 후. 다음 평문을 암호화하게 된다.
(그림 12) 파이프라인 구조를 사용하지 않는 CBC 모드의 암호화 시 타이밍도
Ⅶ. 결과 및 고찰
본 논문에서 제안한 SEED enginee Verilog HDL을 사용해서 ALTERA FPGA로 검증하였으며, 검증을 위해 사용한 값들은 한국정보보호센터에서 제공한 테스트 벡터를 이용하였다.
본 논문에서 제안한 SEED engine의 총 하드웨 어 리소스와 성능을 0.5um 삼성 스탠다드 셀 라이 브러리를 근거로 산출하였다. 하드웨어 리소스를 구 할 때 게이트 카운트는 NAND를 1로 계산하였다. 아울러〔8〕을 동일한 조건하에서 분석하여 본 논문 의 제안 구조와 성능을 비교하였다.
하드웨어 리소스는 〔표 3〕과 같으며, J 함수들은 8x32 SS-box 4개와 32비트 모듈로 덧셈기 1개, 4-input xor 연산 32개가 사용되고 key mixing 블록에서는 xor 연산만이 사용된다. 여기에 입출력 값의 저장과 파이프라인 구조를 위한 레지스터, 로 드되어 들어오는 데이터와 귀환되어 들어오는 데이터 중 하나를 선택하는 멀티플랙서가 추가되어, 총 게이트 카운트를 계산하면 약 9006.9개의 게이트와 96k 비트의 메모리가 사용된다.
(표 3) 제안한 SEED engine의 하드웨어 리소스
제안한 SEED engine의 클럭 수와 수행 시간, 성능은 〔표 4〕에서와 같다. 클럭의 주기는 xor 연산 3개, 32 비트 모듈로 덧셈기 1개, mux 1개, 메모리 1개로 구성된 최장 지연 패스에 의해 결정된다. 최 장 지연 패스의 수행 시간은 3.3ns의 응답 속도를 가지는 synchronous contact ROM을 사용하여 10.3ns의 지연을 가지게 된다. 성능은 파이프라인 구조를 사용했을 때와 사용하지 않았을 때의 두 가지 로 나누어진다. 파이프라인 구조를 사용하는 ECB 모드의 암호화와 ECB, CBC, CFB 모드의 복호화 시에는 1라운드가 3클럭에 수행되고 전체는 16라운 드로 구성되므로 48클럭이 걸리고, 3단계의 파이프 라인 구조이므로 2클럭이 추가로 소요된다. 그러므로 384비트의 평문을 암호화하는데 총 50클럭이 소 요되어 97.1Mhz의 클럭에서 745.6Mbps의 성능을 가진다. 내부 메모리 대신 외부 메모리를 사용하면 가장 빠른 메모리의 응답 속도가 10ns이므로 58.8Mhz 의 클럭에서 451.8Mbps의 성능을 가진다. 파이프라 인 구조를 사용하지 않는 CBC, OFB. CFB 모드의 암호화와 OFB 모드의 복호화 시에는 128비트의 평문이 암호화하는데 48클럭이 소요되므로 내부 메 모리를 사용하면 258.9Mbps, 외부 메모리를 사용 하면 156.9Mbps의 성능을 가진다.
(표 4) 제안한 SEED engine의 성능
본 논문에서 제안한 SEED engine의 객관적인 성능 평가를 위해 최근까지 발표된 논문들 중 가장 좋은 성능을 나타내는〔8〕과 비교하였다.〔8〕과 본 논문의 성능 비교는 〔표 5〕에 보였다. 서로 공정이 다르지만 최장 지연 패스가 거의 비슷하므로. 공정 상의 변수를 제거하기 위해 100MHz 클럭을 기준으로 적용하였다.〔8〕에서는 1라운드를 수행하는데 3클럭이 걸리며. 하나의 평문을 암호화하는데 총 48클럭이 소요되어 lOOMhz의 클럭 주파수에서 266.7Mbps의 성능을 가지게 된다. 본 논문과 같은 조건으로 하기 위해 라운드 키의 온라인 및 사전 계산 기법으로 인해 생기는 3클럭은 제외하였다. 이는 본 논문의 파이프라인 구조를 사용하지 않는 경우와 거의 같은 구조와 성능을 가진다. 그러나 ECB 모드 의 암호화와 ECB, CBC, CFB 모드의 복호화 시 본 논문에서는 파이프라인 구조를 사용하여〔8〕보다 약 3배 향상된 768.0 Mbps의 성능을 가진다.⑻
(표 5) 제안한 SEED engine과〔8)의 성능 비교
Ⅸ. 결론
본 논문에서는 SEED와 AES 최종 후보 알고리 즘들을 하드웨어 구현 측면에서 비교하고. 속도 측면에서 우수한 성능을 가질 수 있는 고속의 SEED 하드웨어 구조를 제안하였다. 제안한 구조는 효율적인 구현을 위해 SS-box를 이용하여 G 함수 블록을 설계하였고, 모드에 따라 파이프라인 구조를 사용하는 경우와 사용하지 않는 경우의 두 가지 구조를 제공 한다. 파이프라인 구조를 사용하는 경우에는 1라운 드를 3단계로 나누어 파이프라인을 시켜 세 개의 평 문을 동시에 암호화할 수 있도록 하여 파이프라인 구조를 사용하지 않았을 때보다 3배의 성능 향상을 이루었다. 그리고 데이터의 종속성으로 인해 파이프라 인 구조를 사용하지 않는 경우에는 평문 한 개씩 암호 화된다. 그리고 본 논문에서 제안한 SEED engine 은 ECB 모드만 암호화와 복호화 모두 파이프라인 구조가 가능하므로 암복호가 동일한 속도를 요구하는 분야에서는 파이프라인 구조에 의한 성능 향상이 ECB 모드에서만 의미가 있다.
〔표 4〕에서 보인 SEED engine의 성능은 0.5um 기술인〔7〕을 근거로 하였지만, 이에 0.25나 0.18um 기술을 적용하면 속도나 크기에 있어서 한층 향상된 성능을 가질 수 있을 것이다. 제안한 SEED engine 은 VPN(Virtual Private Network)이나 방화벽 등의 고속 처리를 요구하는 여러 분야에 활용될 수 있을 것이다. 그리고 본 논문에서 제안한 파이프라 인 구조가 암호화 모드 중 일부만 적용 가능하므로. 파이프라인 구조가 적용되기 어려운 모드에 대한 고 속화 방식에 대한 연구가 필요하다.
이 논문은 2000년도 광운대학교 교내 학순연구비 지원에 의해 연구되었습니다.
References
- 128비트 블록 암호알고리즘 표준 한국정보통신기술협회
- MARS - a candidate cipher for AES Carolynn burwick;Don Coppersmith;Edward D'Avignon;Rosario Gennaro;Shai Halevi;Charanjit Jutla;Stephen M. Matyas Jr.;Luke O'Connor;Mohammad Peyravian;David Safford;Nevenko Zunic
- The RC6 Block Cipher Ronald L. Rivest;M. J. B. Robshaw;R. Sidney;Y. L. Yin
- AES Proposal:Rijndael Joan Daeman;Vincent Rijmen
- Serpent: A Proposal for the Advanded Encryption Standard Ross Anderson;Eli Biham;Lars Knudsen
- Twofish:A 128-Bit Block Cipher Bruch Schneier;John Kelsey;Doug Whiting;David Wagner;Chris Hall
- Samsung STD85/STDM85 0.5um High Density CMOS Standard Cell Library
- 한국통신학회논문지 SEED 알고리즘용 암호 보조 프로세서의 설계 최병윤;서정욱
- ITC-CSCC 2000 Area Efficient Implementation of 128-bit Block Cipher SEED Young-Ho Seo;Jong-Hyeon Kim;Yong-Jin Jung;Dong-Wook Kim