I .서 론
암호화는 컴퓨터 네트워크를 통해 전달되는 정보 및 데이터를 제삼자가 가로채어 그 내용을 외부로 노출시키거나 의도적으로 내용을 조작.변경하는 등 의 보안공격으로부터 정보를 보호하기 위한 수단으 로 사용되며, 컴퓨터와 인터넷을 중심으로 한 정보 화 사회가 도래함에 따라 그 중요성이 점점 증대되 고 있는 핵심기술이다. 암호화 기술은 군사용과 국 가 기관의 정보 보호를 목적으로 극히 제한적인 분 야에만 사용되어 왔으나, 최근 인터넷을 기반으로 한 민간분야로 응용분야가 급속히 확산되고 있다. 암호화 기술은 인터넷 뱅킹 및 전자상거래, 증권거 래 시스템의 안전성 확보, 차세대 이동전화, smart card, 전자주민증 등 휴대형 정보 단말기의 보안, 컴퓨터 파일 시스템의 기밀성 확보 등 매우 폭넓게 응용되고 있다”2).
DES를 중심으로 한 대칭키 암호 방식의 경우, 컴 퓨터의 계산 능력 향상으로 인한 안전성 저하 문제가 대두되고 있다. 미국 상무부 기술표준국 (NIST)은 DES 보다 보안 기능이 훨씬 뛰어난 차세대 암호 표 준 (Advanced Encryption Standard: AES)을 결정하기 위해 1997년 1월부터 준비작업을 시작했으 며, 약 3년 동안의 평가과정을 통해 2000년 10월 미 니에폴리스 연구그룹의 Joan Daemen과 Vincent Rijmen에 의해 제안된 "Rijndael" (레인달) 암호 알고리듬을 최종 AES로 선정하였다⑹ Rijndael 로 암호화된 메시지의 해독을 위해서는 현재의 컴퓨 터로 148조년이 걸리는 것으로 평가되는 등 모든 알려진 보안 공격에 대해 안전성이 뛰어나며, 다양 한 형태의 플랫폼에서 처리 속도와 코드의 간결성, 그리고 설계의 단순성 등을 특징으로 한다.
정보보안 시스템은 크게 나누어 소프트웨어 구현 과 하드웨어 구현으로 구분된다. 소프트웨어 구현은 암호 알고리듬의 업그레이드가 용이하고 시스템간의 이식성과 유연성이 좋다는 장점을 가지나, 동작 속 도가 느리고 해킹에 의한 암호 키의 노출 가능성이 있어 물리적인 안전성이 완벽히 보장되지 않는다는 단점을 갖는다. 반면에, 하드웨어 구현은 외부의 침 입자에 의한 암호 알고리듬과 암호 키의 노출 및 조 작이 불가능하므로 물리적인 안정성이 보장된다는 장점을 갖는다.
최근, 휴대형 정보 단말기를 통한 고속 정보 서비 스의 확대와 함께 물리적인 안전성이 강조되면서 전 용 하드웨어를 이용한 보안 시스템의 구현이 궁극적 인 방안으로 인식되고 있다. 이들 휴대형 정보기기를 위해서는 고속/고집적/저전력 특성을 갖는 암호화 전 용 프로세서의 개발이 필요하며, 다음과 같은 세 가 지 형태로 구현된다. 첫째, 범용 마이크로 컨트롤러 와 암호 프로세서 코어를 결합하여 구현하는 방식은 기존의 소프트웨어 환경을 사용할 수 있어 시스템 개 발 시간을 단축할 수 있다는 장점이 있다. 반면에, 2 개의 프로세서로 구성되므로 하드웨어 부담이 크다는 단점이 있다. 두 번째 방식은 암호화 전용 ASIC (Application Specific Integrated Circuit)을 개발하는 것으로, 고속/저전력 실현이 가능하고 대량 생산 시 저렴한 가격으로 구현이 가능하다는 장점이 있으나, 개발 기간이 길며 알고리듬 및 파라메터의 변경이 불가능하여 유연성이 떨어진다. 셋째 방식은 FPGA(Field-Programmable Gate Array)와 같 은 프로그램 가능 디바이스를 이용하여 구현하는 것 으로, 암호 알고리듬의 업그레이드 및 파라메터 변 경 등이 가능하면서도 물리적인 안전성이 보장된다 는 장점을 갖는다“⑻.
본 논문에서는 AES Rijndael 암호 알고리듬의 효율적인 구현을 위한 하드웨어 구조를 제안하고. 이 를 Verilog-HDL로 모델링하여 설계하였다. II장에 서는 Rijndael 암호 알고리듬에 대해 간략히 기술 하고, ID장에서는 아키텍쳐 및 내부 기능블록의 설 계와 검증 결과를 기술하였다. IV장에서는 설계된 Rijndael 암호 코어의 검증결과를 기술하고, V장 에서 결론을 제시하였다.
II. Rijndael 블록 암호 알고리듬(6)
대부분의 대칭키 암호 시스템은 Feistel 구조⑼의 라운드 변환을 기반으로 하는 반면에, Rijndael 암호 알고리듬은 non-Feistel 구조를 바탕으로 하고 있으 며, 역 변환이 가능한 3개의 독립된 라운드 변환으로 구성된다. 블록 길이는 128비트이고, 키 길이는 128비 트/192비트/256비트 중에서 선택할 수 있으며, 라운 드 수 (Nr)는 키 길이 (Nk) 에 따라 10/12/14로 구 성된다. Rijndael 알고리듬의 암호화 연산 과정은(그림 1〕과 같으며, 초기 라운드 키 가산, (Nr-1)번의 반복 라운드 및 최종 라운드의 순서로 처리된다. 최종 라운드를 제외한(Nr-1)번의 라운드는 ByteSub, ShiftRow, MixColumn 및 KeyAdd 등의 변환으 로 구성되며, 이들은 4행xNb열(단, Nb = 4)로 구성 되는 State(128비트 데이터를 4x4바이트의 2차원 배열로 만든 것을 State라고 한다.)에 대해 다음과 같은 연산을 수행한다.
(그림 1) AES Rijndael 알고리듬의 라운드 변환
첫째, ByteSub 변환은(그림 2〕에서 보는 바와 같이, State를 구성하는 각각의 바이트에 대해 서로 독립적인 비선형 치환을 수행한다. 여기에 사용되는 치환 테이블을 S-box라고 하며, 이는 역변환이 가능 한 두 단계의 변환 과정 즉. 유한체 (finite field) GF(28)에서 곱셈의 역원(multiplicative inverse) 을 취하는 ;r-매핑과 GF(2)에서의 affine 변 환으로 구성된다.
(그림 2) ByteSub 변환
둘째, ShiftRow 변환은(그림 3〕과 같으며, State 의 값을 변경시키지 않으면서 State를 구성하는 바 이트들의 위치를 교환한다. 첫째 행을 제외한 나머 지 행들을 각각 서로 다른 offset으로 바이트 단위 의 순환 이동을 통해 위치를 교환한다. 즉, Row 0 를 제외한 Row 1, 2, 3은 각각 1, 2, 3 바이트만 큼 왼쪽으로 순환이동 시킨다.
(그림 3) ShiftRow 변환
셋째, MixColumn 변환은 State의 행을 유한체 GF08)의 다항식으로 생각하여(그림 4〕에 나타낸 것과 같은 b(x) = c(x) ® a(x) 의 다항식 곱셈을 연산한다. 마지막으로, KeyAdd 블록은 State의 모든 바이트에 라운드 키를 가산하며, 이는 비트 단 위의 EXOR 연산으로 처리된다. 암 . 복호화 라운드 에서 사용되는 라운드 키는 외부에서 입력된 암호 키와 Rijndael 키 생성 알고리듬에 의해 생성된다. 한편, Rijndael의 복호화 연산은 암호화의 역순 으로 이루어지며, 암호화에 사용된 연산의 역 변환 (InvByteSub, InvShiftRow, InvMixColumn) 이 사용되고, 라운드 키는 암호화 연산의 역순으로 사용된다.
(그림 4) MixColumn 변환
III. 회로 설계
본 장에서는 II장에서 설명된 AES Rijndael 블 록 암호 알고리듬의 하드웨어 구현에 대해 기술한 다. 설계된 Rijndael 암호 프로세서 코어는 블록길 이와 암호 키 길이가 모두 128비트인 AES-128 알 고리듬을 구현하였으며, 동작모드 신호에 의해 암호 화와 복호화 처리가 제어된다.
3.1 아키텍쳐 개요
Rijndael 알고리듬의 효율적인 하드웨어 구현을 위해 다음과 같은 설계 원칙을 고려하였다.
첫째, AES 표준안에 의하면, Rijndael 알고리 듬의 라운드 수는 암호 키의 길이에 따른 가변 라운 드 구조를 갖는다. 따라서, 라운드 연산에 개별적인 회로를 사용하면 암호 키 길이의 변경에 대한 융통 성이 떨어지고, 또한 전체적인 하드웨어 복잡도가 너무 크게된다. 본 논문에서는 단일 라운드 연산회 로를 사용하여 Nr번의 라운드 연산을 반복 수행하 는 방식을 채택하였다.
둘째, 하드웨어 복잡도와 연산처리 시간 사이의 trade-off 관계에 대한 분석을 통해 라운드 연산 블 록의 회로 구조를 결정하였다. 라운드 연산의 State 가 4행X4-바이트의 2차원 배열로 구성되므로 16 바이트(즉, 128비트)의 State를 병렬 처리하는 경 우. ByteSub 변환을 위해 32개의 S-box(암호화 에 16개, 복호화에 16개)와 MixColumn 변환을 위해 32개의 유한체 곱셈기(암호화에 16개, 복호화 에 16개)가 필요하여 하드웨어가 매우 복잡해진다. 본 논문에서는 State를 4 바이트 단위로 병렬 처리 함으로써 완전 병렬처리 방식에 비해 하드웨어 복잡 도를 1/4로 줄였으며, 라운드 연산이 4 클록에 처리 되도록 하였다.
셋째, II장에서 언급된 바와 같이, Rijndael 알고 리듬의 라운드 연산에서 ShiftRow 변환은 State의 행 단위로 처리되고, MixColumn 변환은 열 단위로 처리된다. 따라서, 본 논문에서는 라운드 연산을 전 반부 처리(ByteSub 변환, ShiftRow 변환)와 후반 부 처리(MixColumn 변환, 라운드 키 가산) 두 부 분으로 나누고, 이들 사이에 파이프라인을 삽입함으 로써 암 . 복호화 연산 처리의 속도가 향상되도록 하 였다.
넷째, 하드웨어 구현의 측면에서 Rijndael 알고리 듬을 분석하면, S-box는 하드웨어 복잡도에 가장 큰 영향을 미치는 요소이며, 나머지 ShiftRow 변환, MixColumn 및 라운드 키 가산 등의 연산은 상대 적으로 하드웨어 복잡도가 작다. 본 논문에서는 이와 같은 분석을 토대로 암 . 복호화 연산의 하드웨어 공 유를 극대화하기 위한 방안으로서, S-box의 일반적 인 구현 방법인 룩업 테이블(lookup table) 대신에 유한체 연산회로를 이용하였다. 이를 통해, 4개의 S-box만을 사용하여 암. 복호화의 라운드 연산이 구현되도록 하였다.
설계된 AES 암호 프로세서의 내부 구조는(그림 5〕 와 같으며, II장에서 설명된 Nr번의 라운드 연산을 처리하는 라운드 블록(Round Block), 라운드 키 생성블록任Cey Scheduler), 그리고 이들 두 블록 에서 필요한 각종 제어신호를 생성하는 제어블록 등 으로 구성된다. 외부와의 인터페이스는 32비트씩 이 루어지며, 입 . 출력 핀 수를 최소화하기 위하여 암 호 키와 평문 데이터의 입력은 동일 포트를 사용하 도록 하였으며, 이를 위해 DeMUX 블록을 추가하 였다. 키 생성블록의 입력단은 32비트 레지스터 4개 를 쉬프트 레지스터로 구성하여 4 클록동안 128비 트의 암호 키가 입력되도록 하였다.
[그림 5]AES 암호 프로세서의 구조
3.2 라운드 변환 블록
3.1 절에서 설명된 아키텍쳐 설계 원칙을 적용하여 설계된 라운드 연산 블록의 내부 구조는(그림 6〕과 같다. 라운드 연산을 전반부 처리 (ByteSub 변환, ShiftRow 변환)와 후반부 처리(MixColumn 변환, 라운드 키 가산)로 나누어 파이프라인을 삽입하였 다. 데이터 패스는 32비트로 구성되어 단일 클록에 4 바이트씩 처리되도록 하였으며, 따라서 각 파이프 라인 스테이지는 4 클록으로 동작된다.
(그림 6) 라운드 변환 블록
초기 라운드 키 가산 블록은 32개의 XOR로 구성 된다. ByteSub 변환은 암호화 연산과 복호화 연산 에 하드웨어 공유 기법을 적용하여 4개의 S-box로 구현하였다. 이를 위해 기존의 룩업 테이블 구현 방 법 대신에 유한체상의 곱셈의 역원 계산 회로를 이용
하여 $-18成를 설계하였다(3.3절 참조). S-box에서 처 리된 State는 ShiftRow 블록을 거쳐 파이프라인 레 지스터로 인가된다. MixColumn 변환은 알고리듬 특 성상 하드웨어 공유가 불가능하므로 암호화 연산 블록 (MixColumn)과 복호화 연산 블록(InvMixColumn) 을 병렬로 배치하고 그 출력에 MUX를 사용하여 구 현하였다. 라운드 키 가산은 XOR로 구현되며, 그 결과는 다시 ByteSub 블록으로 귀환되어 다음 라 운드 연산이 처리된다.
(그림 7〕은 라운드 연산블록의 동작 타이밍도를 보인 것이다. 3.1 절에서 언급된 바와 같이, 라운드 연산은 전반부(ByteSub 변환, ShiftRow 변환)와 후반부(MixColumn 변환, 라운드 키 가산)의 두 부분으로 나누어 파이프라인 처리된다. 그런데, 라 운드 연산 전반부의 ShiftRow 변환은 State의 행 단위로 수행되고 후반부의 MixColumn 변환은 열 단위로 처리되므로 이들 사이에 직접 파이프라인을 삽입하는 것은 불가능하다. 본 논문에서는 i-번째 라운드의 후반부 연산과 (i + 1)-번째 라운드의 전반 부 연산 사이에 파이프라인 처리가 이루어지도록 하 였다.
(그림 7) 라운드 변환 블록의 서브 파이프라인 동작
설계된 라운드 연산블록은 32비트 데이터 패스를 가지므로(그림 6 참조), 4행 X4-바이트의 State를 처리하기 위해 각 파이프라인 스테이지는 4개의 클 록으로 구현된다. 한편, 라운드 키는 해당 라운드의 전반부 처리가 진행되는 동안 on-the-fly 방식으로 생성되며, 후반부 처리기간에 가산된다.
3.3 GF(28)2| 곱셈의 역원회로를 이용한 S-box구현
S-box는 라운드 블록의 하드웨어 복잡도에 가장 큰 영향을 미치는 요소이므로, Rijndael 알고리듬 의 하드웨어 구현에 있어서 가장 우선적으로 고려해 야 하는 요소로 인식되고 있다.(그림 7〕과 같이 단 일 클록에 4 바이트씩 처리하는 하드웨어 구조 및 동작 방식의 경우, 암호화 연산과 복호화 연산에 각 각 4개씩 총 8개의 S-box가 필요하며 , 키 생성 블 록에서도 4개의 S-box가 필요하다.
S-box의 일반적인 구현방법은 S-box와 affine 변 환을 하나로 묶어 치환 테이블(256바이트의 ROM에 해당)로 구현하는 것이며, 이 경우 설계가 단순하고 속도가 빠르다는 장점을 갖는다. 그러나, Rijndael의 하드웨어 구현에서는 암호화/복호화, 그리고 라운드 키 생성을 위해 각각 서로 다른 S-box가 필요하므 로 하드웨어의 공유가 불가능하다는 단점을 갖는다. 본 논문에서는 치환 테이블 대신에 GF(28)에서 곱 셈의 역원을 연산하는 회로를 사용함으로써 암호화와 복호화 과정에서 S-box를 공유하여 사용하도록 하였 다.(그림 8〕은 본 논문에서 제안된 S-box의 구조이 며, GF(28)에서 곱셈의 역원을 계산하는 회로와 affine 변환 블록으로 구성된다. 암호화 과정은 역원 계산 후에 affine 변환이 수행되며, 복호화는 역 affine 변환이 먼저 수행된 후 역원이 계산된다.
(그림 8) 제안된 S-box 구조
GF(28)에서 곱셈의 역원 연산은 Euclid 알고리 듬을 이용하는 방법과 Fermat 정리를 이용하는 방 법으로 구분할 수 있다. Euclid 알고리듬을 이용한 시스토릭 어레이 (systolic array) 구조는 연산 속 도가 빠르고 체(field)의 위수에 관계없이 규칙적인 구조를 갖는 장점이 있으나, 면적과 전력소모가 크 다는 단점을 갖는다한편, Fermat 정리는 역원 연산을 유한체상의 멱승(power) 연산과 곱셈 연산으로 분해하여 연산하는 방법이며, 유한체의 원 소 표시 방법에 따라 회로 구조가 달라진다. 정규기 저 (normal basis) 표현의 경우, 멱승 회로는 순환 이동(cyclic shifting)으로 구현할 수 있어 회로가 단순하지만 곱셈 회로가 복잡하며 다항식 기 저 (polynomial basis) 표현의 경우에는 정규기저 에 비해 멱승회로는 복잡하지만 곱셈회로가 단순하고 기저변환이 필요 없다는 장점을 갖는다“气 그 외에 이중기저 (dual basis)를 이용하는 구현 방법마5)과 power-sum 연산을 이용하는 방법™ 등이 제안되 고 있다. 본 논문에서는 Fermat 정리를 이용한 역 원 회로를 설계하였다.
Rijndael 알고리듬은 다항식 기저 표현을 사용하며, 기약 다항식(irreducible polyno而al)은 다음과 같다.
#(1)
Fermat 정리에 의하면, 유한체 GF(2”)상의 임의 의 원소 8에 대하여 82”=6의 관계가 성립하며, 유한체 연산의 특성을 이용하면 6의 역원은 식(2)과 같이 표현된다.
#(2)
본 논문에서는 식(2)를 이용하여 GF(28)상의 역원 연산 회로를(그림 9〕와 같이 설계하였으며, GF(28)상의 멱승 회로와 곱셈 회로로 구성된다. 한편, 유한체 GF(28)상의 멱승 연산은 식(3)와 같이 정의되며, 식(1)에 정의된 Rijndael 알고리듬 의 원시 다항식으로 modular reduction을 취하여 정리하면 유한체 상의 원소 8에 대한 멱승 序, 乱… 8* 를 계산할 수 있다.(그림 10〕은 房을 계산하는 멱승 회로를 보인 것이다.
(그림 9) GF(28)상의 곱셈의 역원
(그림 10) GF(28)상의 역승 (B2) 회로
#(3)
유한체 GF(28)상의 두 원소 4(於와 剧0의 곱셈 은 부분곱 £血) = 4(以8(砂을 구한 후, modular reduction P(x) = D(x) mod G(x)을 취하여 계산 되며, 다항식 ZXx)와 Rx)의 계수들은 각각 식(4) 및 식(5)와 같이 정의된다. 이를 이용하여 구현된 GF]%)상의 곱셈기 회로는(그림 11〕과 같다.
[그림 11]GF(28) 곱셈기
#(4)
# (5)
3.4 ShiftRow 및 MixColumn 뷸록
ShiftRow 변환은 ByteSub 블록의 출력에 대
해 행 단위의 순환이동으로 수행되므로, 순환기능을 갖는 쉬프트 레지스터로 구현이 가능하다. 그러나, ByteSub 변환은 열 단위로 처리되므로, State를 구성하는 16바이트에 대한 ByteSub 연산이 모두 완료된 후에 ShiftRow 연산이 시작될 수 있다. 본 논문에서는 32비트(4바이트) 레지스터 3개와 출력 MUX를 이용하여(그림 12〕와 같이 설계하였으며, 출력 쪽의 MUX는 ShiftRow 변환(암호화 연산) 과 InvShiftRow 변환(복호화 연산)의 하드웨어 공유를 위해 사용되었다. 입력단의 3x4-바이트 레 지스터는 ByteSub 블록에서 열 단위로 입력되는 State를 4 바이트씩 쉬프트 하여 저장하며, 실제 순환이동 동작은 쉬프팅 대신에 바이트 단위의 배선 에 의해 이루어지도록 하였다. ShiftRow 변환기의 출력은 파이프라인 레지스터를 거쳐 MixColumn 변환기로 인가된다.
(그림 12) ShiftRow 변환기
MixColumn 변환은 식(6)과 같이 정의되는 유 한체상의 행렬 곱셈으로 연산된다.
#(6)
식 (6)에서 기호 ®는 유한체 상의 다항식 곱셈을 나타내며, C(x)= '02'必 + '01'/+, 01 言; + '03'이고, '01', '02', '03'은 16진수 상수 값을 나타낸다.
한편, 식(6)은 식(7)와 같이 다시 표현할 수 있 으며, 이는 유한체 GF(2 8)상의 곱셈과 XOR 연산 에 의해 구현될 수 있다.
#
행렬계수 C(x)가 상수이므로, 유한체 연산의 특성 을 이용하면 식(7)을 식(8)과 같이 전개할 수 있고, 따라서 본 논문에서는 유한체 곱셈기를 사용하는 대 신에(그림 13〕과 같이 Xtime 연산회로와 XOR를 사용하여 구현하였다.
(그림 13) MixColumn 변환기
#
여기서, Xtime 연산은 GF(2 8)상의 16진수 '02' 에 대한 곱셈을 의미하며, 다항식 표기법인 경우 다항 식에 %를 곱한 후 기약 다항식으로 modulo reduc- tion을 취하여 구해지며, (그림 14〕와 같이 구현하 였다.
(그림 14) Xtime 회로
3.5 라운드 키 생성블록
Rijndael 암호 알고리듬에서는 외부에서 입력되 는 암호 키 (cipher key)를 받아 라운드 연산에 사 용되는 암호키를 생성하며, 오프라인 또는 on-the- fly 방식으로 생성될 수 있다. 오프라인 생성방식은 필요한 모든 라운드 키를 미리 생성하여 별도의 메 모리나 레지스터에 저장한 후, 매 라운드마다 선택 적으로 사용하는 방법이다. 한번 생성된 라운드 키 는 새로운 암호키가 입력되기 전까지 암호화뿐만 아 니라 복호화에도 그대로 사용될 수 있으므로 동작 속도나 전력 소모 면에서 장점을 가지며, 라운드 키 생성을 위한 하드웨어는 작지만 생성된 라운드 키를 저장하기 위한 메모리나 레지스터의 부가 하드웨어 를 필요로 하는 단점이 있다.
본 논문에서는 매 라운드마다 on-the-fly 방식으 로 라운드 키를 생성하여 사용하는 방법을 채택하였 다. 이 방법은 암호화 라운드 키 생성을 위한 하드 웨어와 복호화 라운드 키 생성을 위한 부가의 하드 웨어가 필요하지만 라운드 키를 저장하는 별도의 메 모리나 레지스터가 필요 없다. 그러나 복호화에서는 암호화 과정의 역순으로 라운드 키가 사용되므로 이 를 생성하기 위해 추가의 시간이 필요하다. 본 논문 에서는 라운드 블록의 전반부 연산 4 클록 동안에 라운드 키를 생성하여 후반부 연산 4 클록에서 사용 되도록 하였으며((그림 7) 참조), 암호화 최종 라운 드 키를 레지스터에 저장하여 복호화 키 생성에 소 요되는 시간을 줄였다.
설계된 라운드 키 생성블록의 내부 구조는(그림 15〕 와 같다. 외부에서 32비트씩 입력되는 암호 키는 입 력 레지스터에 32비트씩 쉬프트 되어 저장된 후, 키 스케줄러로 인가된다. 키 스케줄러는 S-box, 라운드 상수 생성기, RotWord, XOR 게이트 및 MUX 등 으로 구성된다. 암호화와 복호화 과정의 라운드 키 생성을 위해 각각 4x32비트개의 XOR 게이트를 사용하였으며, 32비트 단위의 처리를 위해 4개의 S-box가 사용되었다.
(그림 15) 라운드 키 생성블록
N. 설계 검증
설계된 Rijndael 암호 코어는 Verilog-HDL로 모델링하였으며, AES 표준안(17〕에 명시된 테스트 벡터를 이용하여 검증하였다. 128비트의 평문 "FF EEDDCCBBAA99887766554433221100” 와 128 비트의 암호키 , , F0E0D0C0B0A0908070605040 30201000"을 입력벡터로 사용한 시뮬레이션 결과는 (그림 16〕과 같으며, 암호화 결과값 "5AC5B47080 B7CDD830047B6AD8E0C469"이 출력되었고, 이를 다시 복호화한 결과는 입력으로 사용된 평문과 동일 한 값이 출력되었으며, 따라서 모든 논리기능이 정상 적으로 동작함을 확인하였다. 시뮬레이션이 완료된 Verilog-HDL 모델은 최종적으로 FPGA 구현을 통 해 검증하였으며, 검증 시스템은(그림 17(a)〕와 같 이 FPGA 보드, PC 및 ISA 인터페이스 보드, 구동 소프트웨어 등으로 구성된다. FPGA 디바이스는 Xilinx XCV1000E를 사용하였으며, Visual C+ + 언어로 테스트 프로그램을 작성하였다.(그림 17(b)〕 는 검증시스템의 실행 화면이며, 평문과 암호키를 입력하면 암호문이 출력되고 이를 다시 복호화하면 원래의 평문과 동일한 내용이 출력됨을 확인할 수 있다. 이와 같은 FPGA 구현 검증을 통해 설계된 AES 암호 코어가 정상적으로 동작함을 확인하였다.
(그림 16) 설계된 Rijndael 암호 코어의 시뮬레이션 결과
(그림 17) AES Rijndael 코어의 검증 시스템 및 실행 화면
검증이 완료된 HDL 모델은 0.25-伽 CMOS 셀 라이브러리와 Synopsys CAD 툴을 이용하여 회로 합성을 하였다. S-box는 1, 900 게이트, 라운드 블록 은 10, 720 게이트로 구현되었으며, 전체 Rijndael 암호 코어는 총 23, 000게이트로 구현되었다. 설계 된 회로의 시뮬레이션 결과에 의하면, 최대지연은 8-ns이며, 최대 2.5-V 전원전압에서 120-MHz로 동작 가능할 것으로 평가되었다. 설계된 Rijndael 암호 코어의 특징은(표 1〕과 같다.(표 2〕는 본 논문의 설계 결과를 문헌에 발표된 구현 사례와 비교한 것이 다. 문헌(18〕-(20〕의 설계사례는 16개의 S-box를 사용하여 128비트씩 처리하는 회로구조를 가지며, 본 논문의 설계는 4개의 S-box를 사용하여 32비트씩 처 리하는 회로구조를 갖는다. 따라서, 본 논문에서 설계 된 Rijndael 암호 프로세서 코어는 적은 칩 면적과 저 전력 소모를 필요로 하는 분야에 적합할 것으로 판단된다.
(표 1) 설계된 Rijndael 암호 코어의 특징
(표 2) Rijndael 구현 비교
Ⅴ. 결 론
본 논문에서는 미 상무부 기술표준국에서 차세대 블록 암호 표준(AES)으로 선정된 Rijndael 암호 알 고리듬용 프로세서 코어를 설계하였다. 블록 길이와 키 길이가 모두 128비트인 AES-128 알고리듬을 구 현하였으며, 단일 라운드 연산회로를 사용하여 라운드 연산을 반복 수행하는 방식을 채택하였다. 또한, 하드 웨어 복잡도를 줄이기 위해 단일 라운드 연산이 4 클 록으로 처리되도록 하였으며, 라운드 연산 중간에 파 이프라인을 삽입함으로써 연산속도가 향상되도록 하 였다. 라운드 키는 on-the-fly 방식으로 생성되며, 라운드 블록의 전반부 연산 4 클록 동안에 라운드 키 를 생성하여 후반부 연산 4 클록에서 사용되도록 하 였다. S-box는 치환 테이블 대신에 GF(28)에서 곱 셈의 역원 연산회로를 사용함으로써 암호화와 복호화 과정에서 S-box가 공유되도록 설계하였다. 설계된 AES Rijndael 암호 코어는 Xilinx FPGA 디바이 스로 구현하여 정상 동작함을 확인하였다. 0.25-㈣ CMOS 셀 라이브러리로 합성한 결과, 약 22, 310개 의 게이트로 구성되며, 2.5-V의 전원전압에서 120- MHz로 동작 가능할 것으로 평가되어 약 300-Mbps 의 암 . 복호율의 성능을 갖는다.
본 논문에서는 AES-128 알고리듬만을 구현하였으 나, AES 표준안에 정의된 확장모드인 AES-192(키 길이 192비트)과 AES-256(키 길이 256비트)알고 리듬은 라운드 키 생성블록을 수정하여 쉽게 구현될 수 있다. 설계된 AES 암호 코어는 반도체 지적재 산권인 소프트 IP(Intellectual Property)로 가 공하여 네트웍, 전자상거래, smart card, 전자주 민증 등 휴대형 정보 단말기의 보안 모듈 설계에 사 용될 수 있을 것으로 판단된다.
참고문헌
- 암호이론과 보안 박창섭
- Cryptography and Network Security W. Stalling
- NBS FIPS PUB 46 Data Encryption Standard National Bureau of Standards
- Communications of the ACM v.21 no.2 A method for obtaining digital signatures and public-key cryptosystems R.L. Rivest;A. Shamir;L.M. Adleman https://doi.org/10.1145/359340.359342
- London Mathematical Society Lecture Note Series v.265 Elliptic Curves in Cryptography I.F. Blake;G. Seroussi;N.P. Smart
- NIST Document (ver.2) AES Proposal : Rijndael Block Cipher J. Daemen;V. Rijmen
- Annual Research Review 2000 An embedded Cryptographic processor for the Rijndael AES algorithm H. Kuo;I. Verbauwhede
- IEEE Trans. on Very Large Scale Integration (VLSI) Systems v.9 no.4 An FPGA-based Performance evaluation of the AES block cipher candidate algorithm finalists A.J. Elbirt;W. Yip;B. Chetwynd;C. Parr
- Applied Cryptography : Protocols, Algorithms and Source Code in C B. Schneier
- Proc. of the IEEE Int. Sym. on circuits and Systems v.2 Systolic array implementation of Euclid's algorithm for inversion and division in GF(2m) J.H. Guo;C.L. Wang
- IEEE Tans. on Circuits & Systems Ⅱ-Analog And Digital Signal Processing v.47 no.9 Highspeed easily testable Galois-field inverter C.T. Huang;C.W. Wu https://doi.org/10.1109/82.868459
- 13th Annual IEEE International ASIC/SOC Conference Improved VLSI designs for multiplication and inversion in GF(2m) over normal bases L. Gao;G.E. Sobelman
- IEEE Trans. Comput. v.38 no.10 A VLSI architecture for fast inversion in GF(2m) G.L. Feng
- IEEE Pro. of the 2000 Canadian Conf. on Electrical and Computer Engineering v.1 A low latency architecture for computing multiplicative inverses and divisions in GF(2m) A.V. Dinh;R.J. Palmer;R.J. Bolton;R. Mason
- IEEE Trans. on Computers v.45 no.3 GF(2m) multiplication and division over the dual basis S.T.J. Fenn;M. Benaissa;D. Taylor https://doi.org/10.1109/12.485570
- IEEE Trans. on Circuits and Systems Ⅱ-Analog & Digital Signal Processing v.44 no.10 VLSI architecture for computing exponentiations, multiplicative inverses, and divisions S.W. Wei https://doi.org/10.1109/82.633444
- FIPS PUB ZZZ Announcing the Advanded Encryption Standard(AES) NIST
- Hardware performance simulation of round 2 Advanced Encryption Standard Algorithms M. Bean;C. Ficke;T. Rozylowicz;B. Weeks
- Workshop on Cryptographic Hardware and Embedded Systems 2001(CHES 2001) Architectural optimization for a 1.82Gbits/sec VLSI implementation of the AES Rijndael Algorithm H. Kuo;I. Verbauwhede
- 정보보호학회 논문지 v.11 no.6 Rijndael 암호 알고리즘을 구현한 암호 프로세서의 설계 전신우;정용진;권오준