1. 서론
컴퓨터 기술의 발전과 더불어 네트워크 기술의 급격한 발전은 정보의 소통에 있어서 전 세계를 하나의 생활권으로 만들어주었다. 컴퓨터나 모바일 장치가 네트워크와 연동만 된다면 언제, 어디서든지 e-mail, 그림, 영상 및 문서 등 멀티미디어 정보의 교환이 가능하게 되었다[1]. PDA(Personal Data Assistant)와 휴대폰과 같은 소형 모바일 장치의 한층 진화하는 세계에서의 정보 보안은 어느 때보다도 중요한 문제로 대두되고 있다[2]. 또한 IoT(Internet of Things) 서비스의 발전은 스마트 기기, 센서 등 다양한 단말 및 이종 네트워크, 애플리케이션을 활용하므로, 발생 가능한 보안 위협도 한층 증가할 것으로 예측되고 있다[3,4]. 특히 모바일 분야에 활용하고자 하는 경량 암호 알고리즘으로는 TEA, XTEA, DES, LEA(Lightweight Encryption Algorithm), IDEA, SEA(Scalable Encryption Algorithm) 암호 알고리즘을 비롯한 다수가 제안되었다[3-5]. LEA 블록 암호 알고리즘은 국내의 국가보안기술연구소(NSRI)에서 2013년도에 개발한 128비트 경량 블록 암호 알고리즘으로 라운드 함수는 32비트 단위의 ARX(Addition, Rotation, XOR) 연산만으로 구성하여, 이를 지원하는 범용 32비트 소프트웨어 플랫폼에서 고속으로 동작하는 것으로 알려져 있다[3]. 본 논문에서 다루게 될 TEA, XTEA, XXTEA 암호 알고리즘들은 LEA 암호 알고리즘처럼 S-box를 사용하지 않고 비교적 간단한 ASR (Addition, Shift, XOR) 연산을 사용하여 구현이 가능한 것으로 알려져 있다[1, 6-7].
TEA 암호 알고리즘은 1994년 발표되었는데, 128비트의 매스터 키와 64비트 메시지 블록에 대한 단순 구현이 가능한 특징이 있어 주목받았지만, 보안 취약성이 대두되었다. TEA 암호 알고리즘은 2회의 서브라운드가 한 라운드를 구성하는데, 매 라운드마다 모든 키를 고정된 위치에 사용하는 특징이 있다. 이러한 TEA 암호 알고리즘의 단순성과 보안 취약성을 보완하여 1997년 XTEA 암호 알고리즘이 발표되었다. XTEA 암호 알고리즘은 128비트의 매스터 키와 64비트 메시지 입력을 사용하고 2회의 서브라운드가 1 라운드를 구성하는 것은 TEA 암호 알고리즘과 동일하지만, 서브라운드 키 생성 과정을 좀 더 복잡하게 하고 하나의 서브라운드마다 128비트의 매스터 키 중에서 32비트만을 선택하여 사용하는 특징이 있으나, 역시 보안 취약성이 보고된바 있다[8].
1998년 TEA와 XTEA 암호 알고리즘의 취약점을 보완하기 위해 XXTEA 암호 알고리즘이 공개되었다[9]. 논문[10]에서는 XXTEA 경량 암호 알고리즘이 GSM과 UMTS 모바일 네트워크에 사용되는 Kasumi 암호 알고리즘보다 암호화 구현에 적합하다는 것을 입증하였다. 물론 XXTEA 암호 알고리즘에 대한 보안 공격이 일부 취약할 수 있다는 것도 발표된 바 있다[11].
일반적으로 암호 알고리즘은 고정된 입력 메시지 블록에 대한 보안 강도를 강화하여 외부 보안 공격을 차단하기위해 몇 가지 매스터 키의 길이를 선택할 수 있도록 한다. 그렇지만, XXTA 암호 알고리즘은 128비트의 매스터 키를 사용하면서 입력되는 가변 길이의 메시지 블록을 암⦁복호화할 수 있는 것이 특징이다. 최소 메시지 블록의 길이는 64비트이며, 32비트의 배수로 메시지 블록 크기를 자유롭게 제공하여 암⦁복호화를 수행한다.
본 논문에서 설계한 병합 TEA 암호 프로세서는 고정된 128비트 매스터 키를 사용한다. TEA와 XTEA 암호 알고리즘은 64비트의 고정된 메시지 블록 입력에 대한 암⦁복호화를 수행하지만, XXTEA 암호 알고리즘은 가변 길이의 메시지 블록 입력을 사용하는데, 최소 입력 규정인 64비트부터 32비트의 배수인 96/128/160/192/224/256비트까지 가변적인 길이에 대해 암⦁복호화를 구현한다.
본 논문은 다음과 같이 구성된다. II장에서는 3가지 TEA 암호 알고리즘의 개념에 대해 소개하고, III장에서는 병합 TEA 암호 알고리즘의 설계에 대해 다루며, IV장에서는 설계된 병합 TEA 암호 알고리즘의 검증 및 성능 분석에 대해 다루고, 마지막으로 V장에서 결론을 맺는다.
2. 3가지 TEA 암호 알고리즘의 개념
암호 알고리즘의 개념은 주로 라운드 블록을 기준으로 설명하고자 한다. 서브라운드 키 생성 부분은 논문의 설계 부분에서 다룰 예정이다. 본 논문에서 언급하는 v, sum, key[i] 등을 포함한 값들은 모두 32비트를 의미한다. 먼저 TEA 암호 알고리즘에 대해 설명하면, 128비트 매스터 키와 64비트 메시지 입력을 사용한다. (그림 1)은 TEA 암호 알고리즘의 암⦁복호화를 수행하는 한 라운드(혹은 사이클)에 대한 블록도이다. 2회의 서브라운드가 한 라운드를 구성한다. 메시지 블록은 v0와 v1이며, 4개의 매스터 키(k[i], i=0~3) 값 중에서 서브라운드마다 2개씩 사용 되고, 암호화시에 k[0]와 k[1]이 사용된 서브라운드는 복호화시에는 k[2]와 k[3]이 사용되며, 암호화시에 k[2]와 k[3]의 키가 사용된 서브라운드는 복화시에는 k[0]과 k[1]을 사용한다. 점선으로 된 4각형은 MX 함수를 의미하며, 쉬프트 연산, 모듈로 덧셈, XOR 연산을 사용한다. MX연산 결과는 암호화시에는 메시지 입력인 v0 값과 덧셈 연산을 하고, 복호화시에는 뺄셈 연산을 수행한 후 v0과 v1을 위치를 바꾸어 다음 서브라운드를 수행한다. TEA 암호 알고리즘의 라운드 회수는 32라운드를 권고하고 있다[6]. 메시지 입력 v0와 v1의 위치도 암호화와 복호화시에는 바뀐다.
(그림 1) TEA암호의 한 라운드 암호화 및 복호화
(Figure 1) One round for encryption and decryption in TEA cipher
XTEA 암호 알고리즘은 XTEA 암호 알고리즘에서 각 서브라운드마다 고정 키 값을 사용하는 문제를 보완하기 위해 서브라운드에서 사용하는 키 값을 짝수 서브라운드는 sum[1:0]을 주소로 사용해 키를 액세스하고, 홀수 서브라운드는 sum[12:11]을 주소로 사용해 액세스한 키 값을 MX 함수에 전달한다. 복호화시에는 키 액세스 주소를 사용하는 sum 값은 짝수와 홀수 서브라운드에 대해 각각 sum[12:11] 및 sum[1:0]이다. 아울러 각 서브라운드에서는 한 개의 키 값만을 사용하므로, 한 라운드를 완료하면 2개의 키를 사용한다. 메시지 입력 v0와 v1의 위치도 암호화와 복호화시에는 바뀐다. (그림 2)는 XTEA 암호 알고리즘의 암⦁복호화를 수행하는 한 라운드에 대한 블록도이다. XTEA 알고리즘 또한 TEA 암호 알고리즘과 동일 하게 매스터 키 값은 128비트이며, 메시지 블록 입력은 64비트이다. MX 함수의 구현 방식도 TEA 암호 알고리즘과 비교하여 약간 수정되었다[7]. 32 라운드 수행을 권고하고 있다.
(그림 2) XTEA암호의 한 라운드 암호화 및 복호화
(Figure 2) One round for encryption and decryption in XTEA cipher
XXTEA 블록 암호 알고리즘은 128비트의 고정된 매스터 키 길이를 사용하고 64비트 이상의 메시지 블록에 대해 256비트까지 32비트의 배수로 암⦁복호화를 수행할 수 있다[9]. 먼저 XXTEA 암⦁복호화 알고리즘에 대한 의사(Pseudo) C 코드를 (그림 3)에 보였다. 본 알고리즘의 데이터 랜덤화의 핵심인 MX 함수 값은 32비트 변수 x, y, z 및 상수 값 델타(Delta), 32비트 4개의 키(Key) 중에서 서브라운드(Subround)의 수행 횟수를 관리하는 p값의 하위 2비트와 매 라운드마다 변경되는 sum의 하위 2비트를 XOR 연산한 값을 key 주소로 사용해 4개의 key 값 중에서 선택된 key 값을 지정된 쉬프트 연산, XOR연산 및 모듈로 덧셈 연산을 수행하여 얻어지는 값이다. q 값은 수행하는 라운드 횟수를 정의하는데,( q=6+52/length) 의 수식에서 알 수 있듯이 32비트로 입력 메시지가 몇 개인지를 알려주는 length 값에 라운드의 횟수가 가변적이다. 즉, q의 최소 값은 6이며, q의 최대값은 length 가장 작을 때 값인 2(=64비트)를 적용하면 32라운드가 된다. 따라서 XXTEA는 6라운드에서 32라운드 사이의 라운드 연산을 수행함을 알 수 있다. 그리고 32라운드는 입력 메시지가 64비트일 때이며, 256비트(32비트x8)일 경우에는 (q=6+52/8)이므로 12라운드의 라운드 연산을 수행하게 된다.
(그림 3) XXTEA암호의 암호화 및 복호화 의사 코드
(Figure 3) Pseudocode for encryption and decryption in XXTEA cipher
sum 값은 암호화시에는 상수 델타를 초기 값으로 하여 라운드 종료 후 이전 sum과 더하여 MX 함수에서 사용되며, 복호화시에는 (sum=q*DETA) 값을 초기 값으로 사용 하여 라운드 종료시 마다 sum에서 DELTA 값을 뺀 값을 MX 함수 연산에 사용한다. 또한 의사 C 코드를 보면 알 수 있듯이 y와 z 값은 변경되는 입력 메시지에 대한 순서뿐만 아니라, MX 함수의 입력으로 사용될 경우 기능이 서로 반대임을 알 수 있다. 즉, MX 함수 값 계산에서 임의의 v값이 암호화시에는 y 값으로 사용되지만, 복호화시에는 z값으로 사용된다. 역으로 암호화시에 z 값으로 사용된다면, 복호화시에는 y 값으로 사용됨을 확인할 수 있다[12].
본 논문에서는 TEA와 XTEA 암호 알고리즘을 포함하면서 XXTEA 암호 알고리즘에 대해서는 메시지의 길이를64비트부터 256비트까지 32비트의 배수로 다양하게 사용할 수 있는 면적 효율적인 하드웨어 구현 방안을 제시하고자 한다.
3. 병합 TEA 암호 알고리즘의 설계
(그림 4)는 본 논문에서 설계한 병합 TEA 블록 암호 알고리즘 프로세서를 보여준다. 외부 버스를 통해 control 레지스터에 암호화 모드 혹은 복호화 모드를 설정한다. 또한 지원하는 암호 알고리즘 TEA, XTEA 및 XXTEA에서 어느 알고리즘 방식을 사용할 것인지를 외부 버스를 통해 암호 프로세서의 TMode 레지스터에 설정해 주어야 한다. 메시지 블록의 길이가 TEA와 XTEA은 2워드(64비트)로 고정되어 있지만, XXTEA 암호 알고리즘을 채용할 경우에는 2워드부터 8(256비트)워드 중에서 선택하도록 외부 버스를 통해 num_of_words 레지스터에 설정해 주어야 한다. 128비트 매스터 키를 사용하므로 32비트 데이터 버스를 통해 키 버퍼(Key buffer)에 4회에 걸쳐 키 값을 저장하면 키 값 설정이 완료된다. 제어 정보 설정 및 매스터 키 값에 대한 설정을 완료한 후, 메시지 버퍼에 암⦁복호화할 데이터를 전달하게 된다.
(그림 4) 제안하는 병합 TEA 블록 암호 프로세서
(Figure 4) The proposed Merged TEA block cipher processor
메시지 버퍼는 설정된 처리 단위 비트 값 정보인 num_of_words 레지스터의 출력 2/3/4/5/6/7/8 워드 신호를 참조하여 규정된 양의 데이터가 메시지 버퍼에 담는 즉시 DataAvailable 신호를 생성하여 FSM(Finite State Machine)에 알린다. FSM은 CryptoStart를 활성화시켜 라운드 함수를 수행하기 위해 메시지 버퍼에서 v 레지스터로 메시지를 저장한다. 이후에는 키 스케줄링 블록과 라운드 블록이 동기되어 키 스케줄링 블록은 라운드 블록에 서브라운드 키 값을 제공하고, v 레지스터에 담긴 유효한 데이터의 워드(32비트) 수만큼 서브라운드를 수행하면 한 라운드를 종료하게 된다.
서브라운드 갱신 신호는 subrnd_update이다. 매 라운드 종료시마다 sum 값을 갱신해야 하므로 FSM은 매 라운드가 종료하는 시점에 rnd_update 신호를 활성화하여 키 스케줄링 블록에 전달한다. 규정된 모든 라운드를 완료하는 시점에 FSM은 EDResultUpdate 신호를 활성화시켜 최종 적인 결과 값을 Result buffer에 전달한다. 최종적으로 저장된 값은 다시 OutRegShiftEn 신호를 받아서 출력 값의 유효함을 알리는 DataOutValid 신호와 동기되어 유효한 결과 데이터 개수만큼 32비트 DataOut 레지스터 버스를 통해 외부로 전달하게 된다.
제안하는 병합 TEA 블록 암호 프로세서의 동작 방식을 시간적인 흐름으로 파악하면 (그림 5)와 같이 나타낼 수 있다. 먼저 암호 프로세서의 제어 레지스터를 설정하여 동작모드, 메시지 블록 크기, 사용하는 알고리즘 등을 세팅한다. 이후 128비트 키를 저장하고, 지정된 메시지 블록 크기의 데이터가 버퍼링되면 즉시 라운드 연산을 시작한다. 라운드 연산은 메시지 블록의 크기 따라 가변 적인 클럭 사이클 소요되는데, 동시에 다음에 수행할 메시지 블록을 버퍼링해 놓는다. 라운드 연산이 완료되면 결과 값을 외부로 전송하고, 버퍼링 블록의 데이터를 받아서 라운드 연산을 수행한다. 결과적으로 본 논문에서 설계한 암호 프로세서는 파이프라인 방식으로 수행하게 된다.
(그림 5) 제안한 블록 암호 프로세서의 타이밍 차트
(Figure 5) Timing chart of the proposed block cipher processor
다음은 병합 TEA 암호 프로세서의 핵심 블록인 키 스케줄링 블록에 대해 설명할 것이다. (그림 6)는 본 논문에서 설계한 키 스케줄링 블록의 구조를 보여준다. 암호화시에는 구현한 3가지 암호 알고리즘 모드 모두 sum의 초기 값이 상수 델타(Deata= 0x933779b9) 값이 된다. 그런데 복호화시에는 sum의 초기 값이 3가지 암호 알고리즘 모두 [sum=라운드회수 x Delta] 값으로 설정하도록 되어 있어서 곱셈기가 필요하다. 그러나 본 논문에서는 입력 메시지의 비트 값이 결정되면 결과 값을 알 수 있고, 7개의 값만 필요로 하므로 (그림 6)와 같이 mux를 사용해 구현 하여 곱셈기를 제거하였다. 그리고 sum의 초기 값이 결정된 이후에는 암호화시에는 라운드가 종료될 때마다 sum 값에 델타 값을 더한 결과를 새로운 sum 값으로 사용하고, 복호화시에는 sum 값에서 델타 값을 뺀 값을 새로운 sum 값으로 사용하므로 가감산기를 사용하였다. XXTEA 암호 알고리즘의 경우 각 라운드에서 사용되는 키 값은 서브라운드의 수행 회수를 알려주는 p 값의 하위 2비트인 p[1:0]과 sum[3:2]를 XOR한 결과 값이 4개의 키 값 중에서 하나를 선택하는 주소로 사용된다. 라운드 키 출력은 Subkeyi 하나만 사용하면 된다. TEA 암호 알고리즘은 고정된 키 값을 사용한다. 따라서 짝수 혹은 홀수 서브라운드에 따라 mux에서 고정된 값을 출력하도록 구현하면 된다. 이 때는 Subkeyi와 Subkeyj를 사용한다. XTEA 암호 알고리즘의 경우에는 Subkeyi만을 사용하며, 키 액세스 주소로 sum[1:0]이나 sum[12:11] 중의 하나를 사용도록 구현하였다.
(그림 6) 병합 TEA 암호의 키 스케줄링 블록
(Figure 6) The key scheduling block for the merged TEA cipher
(그림 7)은 본 논문에서 설계한 라운드 블록을 보여주고 있다.
(그림 7) 병합 TEA 암호의 라운드 블록
(Figure 7) The round block for the merged TEA cipher
3가지 암호 알고리즘을 분석한 결과 TEA와 XTEA 암호 알고리즘은 z 값만 사용하여 구현하면 되고, XXTEA 암호 알고리즘은 y와 z 값을 모두 사용하였다. 그림에서 n 값은 8로 고정하였으며, 이는 256비트까지의 메시시 암⦁복호화를 지원하도록 설계하였기 때문이다. MX 함수 블록에 대해서도 3가지 암호 알고리즘을 모두 지원하도록 수정하였다. 그리고 수정된 MX 함수 블록의 입력 x, y는 암호화와 복호화시에 서로 바꾸어 사용해야 한다. 물론 TEA나 XTEA 암호 알고리즘은 z값만 변경하면 된다. 따라서 mux를 사용하여 암⦁복호화 모드에 따라 y와 z값의 입력을 서로 바꾸어 사용하도록 구현하였다. (그림 7)의 아래 쪽에 있는 32비트 레지스터 Intermediate_reg는 MX 함수 결과 값과 v 값을 암호화 때는 더하고, 복호화 때는 빼서 저장한 값이다. 이 레지스터 값은 다음 클럭 사이클에서 모드에 따라 y혹은 z로 사용하면 하드웨어 구조가 간단해진다. 그리고 MX 함수 값과 v 값을 더하거나 뺀 값은 새롭게 갱신된 v 값에 해당되므로 유효한 워드 수에 따라 다른 위치에 담기는데 2워드(64비트)일 경우는 v1에 저장되고, 3워드일 경우에는 v2 에 담기고, 8워드(256비트)일 경우에는 v7에 저장된다. 아울러 직렬 쉬프트 레지스터로 연결된 vi 레지스터들은 다음 서브라운드 연산을 위해서 좌측 방향으로 쉬프팅한다. 수정된 MX함수로 입력되는 키 값은 TEA 암호 알고리즘에서만 2개의 키 k[i]와 k[j]를 사용하고, XTEA와 XXTEA 암호 알고리즘은 k[i] 하나의 키만 사용하도록 구현하였다.
본 논문에서 제안한 라운드 블록을 사용하기 위해서는 v[i] 레지스터에 담기는 순서가 중요하다. 암호화 모드에서 메시지 버퍼에 데이터를 저장할 경우에는 buffer0부터 순차적으로 데이터를 저장한다. 그러나 복호화 모드에서 메시지 버퍼에 데이터를 저장할 경우에는 항상 buffer0 쪽으로 데이터가 입력되도록 하고 다음 데이터를 저장할 때 기존의 buffer0은 buffer1로 이동되고 새로운 데이터는 buffer0에 입력되는 구조이다. 이렇게 하면 bufferi에서 vi 로 데이터를 전달할 때 동일한 i 값을 가지는 레지스터로 재배치된 데이터를 전달할 수 있다. (그림 8)은 데이터 재배열 기능을 구현한 메시지 버퍼를 보여주고 있다.
(그림 8) 데이터 재배열 기능을 갖는 메시지 버퍼
(Figure 8) Message buffer with data reordering
(그림 9)는 본 논문에서 설계한 수정된 MX 함수 블록을 보여준다.
(그림 9) 수정된 MX 함수 블록
(Figure 9) Modified MX function block
수정된 MX 함수 블록의 내부 자원은 최대한 공유하여 사용할 수 있도록 설계하였다. 제안한 수정된 MX 함수 블록을 수행하면 최종적으로 3가지 유형의 암호 알고리즘에 해당하는 MX_Result 값을 얻을 수 있다. 본 논문에서는 전체적으로 자원 공유를 통해 최소의 하드웨어를 사용할 수 있는 방안으로 설계를 완료하였다.
4. 설계된 병합 TEA 암호 알고리즘의 검증 및 성능분석
구현한 병합 TEA 암호 알고리즘에 대해 모든 경우에 대해 검증을 수행하였다. Verilog HDL을 사용하여 병합 TEA 모듈을 설계하였으며, 제시된 테스트 케이스의 입력과 결과 값을 설계된 모듈에서 입력에 대한 출력 값이 서로 일치하는지를 비교하여 검증을 수행하였다. 본 논문에서 설계한 병합 TEA 암호 알고리즘은 매스터 키는 고정된 길이인 128비트를 사용하며, 입력되는 메시지인 평문이나 암호문은 TEA나 XTEA 암호 알고리즘은 64비트를 사용하고 XXTEA 암호 알고리즘은 64비트부터 32의 배수에 해당되는 96비트, 128비트, 160비트, 192비트, 224비트 및 256비트의 가변 길이를 가질 수 있다.
본 논문에서는 입력 메시지의 길이가 64비트인 TEA 와 256비트의 XXTEA 2가지 경우의 시뮬레이션 결과에 대해서만 설명할 것이다. 먼저 (그림 10)은 128비트 매스터 키로 “00000000”, “00000000”, “00000000”, “00000000”를 사용하였다. 메시지 입력인 평문으로 “41ea3a0a”, “94baa940”를 적용하여 암호화를 수행하면 최종적인 암호 출력은 “b9354a86”, “1ea75492”로 테스트 케이스에 제시된 값과 일치함을 확인하였다. 결과 값을 도출하는 총 소요 시간은 65클럭 사이클이다.
(그림 10) 병합된 TEA 암호의 TEA 암호화 시뮬레이션
(Figure 10) Encryption simulation of TEA for the merged TEA cipher
(그림 11)은 TEA 암호 알고리즘에 대한 64비트 암호문에 대한 복호화 과정 시뮬레이션을 보여준다. (그림 6)과 같이 복호화 모드 설정을 제외한 동일한 매스터 키 설정에서 암호문을 입력으로 사용하여 복호화 과정을 진행하면 (그림 11)과 같이 평문을 다시 복원할 수 있다.
(그림 11) 병합된 TEA 암호의 TEA 복호화 시뮬레이션
(Figure 11) Decryption simulation of TEA for the merged TEA cipher
다음은 256비트 메시지 입력에 대한 암⦁복호화 과정 시뮬레이션을 설명할 것이다. (그림 12)는 128비트 매스터 키로 “08040201”, “80402010”, “f8fcfeff”, “80c0e0f0”를 하였다. 메시지 입력인 평문으로 “c9f39adb”, “0ca3366e”, “91776d30”, “7a5bd7f4”, “0ea4514b”, “e559879d”, “0bc4e381”, “36441b34”, 를 적용하여 암호화를 수행하면 최종적인 암호 출력은 “e0b6f15e”, “7b22a210”, “4b3737a3”, “c5ffbe59”, “05033526”, “e51fb4547”, “1e640030”, “07d17d2c”으로 테스트 케이스에 제시된 값과 일치함을 확인하였다. 결과 값을 도출하는 총 소요 시간은 97클럭 사이클이다.
(그림 12) 병합된 XXTEA 암호의 256비트 평문 암호화 시뮬 레이션
(Figure 12) Encryption simulation of 256-bit plain text for XXTEA cipher
(그림 13)은 256비트 암호문에 대한 복호화 과정에 대한 시뮬레이션으로 복호화 모드가 활성화되어 있는 것과 입력으로 (그림 13)과 같은 매스터 키를 사용하고, 복호화 모드를 활성화하여 암호문을 입력하면 본래의 평문을 얻을 수 있음을 보여준다.
(그림 13) 병합된 XXTEA 암호의 256비트 암호문 복호화 시뮬레이션
(Figure 13) Decryption simulation of 256-bit cipher text for XXTEA cipher
(표 1)은 본 논문에서 구현한 병합 TEA 암호 프로세서의 설계 결과를 요약한 것이다. Xilinx Vertex4 상에 구현하였으며, 사용한 총 슬라이스의 수는 1754개이고, 4입력 LUT는 3228개이다. 현재까지 TEA, XTEA, XXTEA 암호 알고리즘을 구현한 모듈은 존재하지 않는다. 동작 주파수는 140MHz이며, 최대 데이터 처리율은 64비트 메시지 블록을 사용하는 TEA, XTEA는 137Mbps이며, XXTEA 암호 알고리즘의 경우에는 2워드(64비트)부터 8워드(256비트)까지 7가지 유형의 메시지 블록 크기를 지원하며 256비트 메시지 블록 크기에 대해서는 369Mbps의 성능을 보였다. 참고로 논문[4]는 64비트 메시지 블록을 지원하는 XTEA 암호 알고리즘만을 구현하였는데, 129MHz의 동작 주파수를 갖는 것으로 발표하였다.
(표 1)에서는 동일한 Xilinx vertex4 디바이스를 사용하여 국내에서 발표한 경량 암호 알고리즘인 LEA 암호 알고리즘과 비교를 수행하였다. 표에서 알 수 있듯이 가장 큰 차이는 LEA 알고리즘은 키의 길이가 가변이며, 메시지의 길이는 128비트로 고정되어 있다. 반면 논문의 병합 TEA 알고리즘 코어는 발표된 모든 표준 TEA 알고리즘을 지원하도록 설계하였으며, 키의 길이가 128비트로 고정 되어 있지만, 메시지의 길이는 64비트부터 256비트까지 변경할 수 있는 특징이 있다. 하드웨어적으로 약 16%의 면적 이득을 얻을 수 있었지만, 성능 측면에서는 병합 TEA 알고리즘의 256비트 메시지 블록 모드와 비교하여 LEA 알고리즘의 256비트 키 모드가 15% 우수하였다.
(표 1) 병합된 TEA 블록 암호의 설계 요약
(Table 1) Summary of the merged TEA block cipher
5. 결론
본 논문에서는 128비트의 고정된 매스터 키를 사용하고 TEA, XTEA 및 XXTEA 암호 알고리즘을 통합하여 지원하는 암호 프로세서를 설계하였다. 데이터의 재배치가 가능한 메시지 버퍼 및 sum 초기 값 계산시 필요한 곱셈기를 제거한 멀티플렉서 사용, 수정된 MX 함수 블록을 통한 하드웨어 자원 공유 등 적용한 면적 효율적인 하드웨어 구조를 제안하였다. 구현된 병합 TEA 암호 알고리즘의 최대 암⦁복호화 처리율은 64비트 메시지 입력에 대해서는 137Mbps이며, 256비트 메시지 입력에 대해서는 369Mbps의 성능을 가진다. 본 논문의 병합 TEA 암호 알고리즘은 스마트 카드, 인터넷뱅킹, 전자상거래, IoT(Internet of Things) 등과 같은 모바일 분야의 보안 모듈로 활용이 가능할 것으로 예측된다.
References
- Satish K. Vishwakarma and Shivam Khare, "XXTEA An Optimized Encryption Design with High Feedback Substitution Box Architecture," International Journal of Modern Engineering & Management Research, Vol.2 Issue 3, pp.12-16, Sep. 2014. http://ijmemr.org/Publication/V2I3/IJMEMR-V2I3-003.pdf
- Issam Damaj, Samer Hamade, and Hassan Diab, "Efficient Tiny Hardware Cipher under Verilog," Proceedings of the 2008 High Performance Computing & Simulation Conference, 2008. https://pdfs.semanticscholar.org/5199/66452a092ba2d40b724d31a59f0fe323cfec.pdf
- Mi-Ji Sung, Kyung-Wook Shin, "An Efficeint Hardware Implementation of Lightweight Block Cipher LEA-128/192/256 for IoT Security Applications," JKIICE, Vol.19 No. 7, pp.1608-1616, Jul. 2015. http://dx.doi.org/10.6109/jkiice.2015.19.7.1608
- Shweta Gaba, Iti Aggarwal, and Sujata Pandey, "Design of Efficient XTEA Using Verilog," International Journal of Scientific and Research Publications, Vol.2 Issue 6, pp.1-5, June 2012. http://www.ijsrp.org/research_paper_jun2012/ijsrp-June-2012-18.pdf
- Soren Rinne, et al., "Performance Analysis of Contemporary Light-Weight Block Ciphers on 8-bit Microcontrollers," Software Performance Enhancement for Encryption and Decryption (SPEED), June. 2007. https://www.emsec.ruhr-uni-bochum.de/media/crypto/veroeffentlichungen/2011/01/29/lw_speed2007.pdf
- David Wheeler, Roger Needham, "TEA, a Tiny Encryption Algorithm,", Lecture Notes in Computer Science, pp.363-366, 1994. https://www.movable-type.co.uk/scripts/tea.pdf
- David Wheeler, Roger Needham, "TEA Exetensions," Computer Laboratory, University of Cambridge (Technical report), Oct. 1997. http://www.cix.co.uk/-klockstone/xtea.pdf
- Seokhie Hong, et al., "Differential cryptanalysis of TEA and XTEA," ICISC 2003, pp.402-417, Nov. 2003. https://doi.org/10.1007/978-3-540-24691-6_30
- David J. Wheeler and Roger M. Needham, "Correction to XTEA," Oct. 1998. http://www.movable-type.co.uk/scripts/xxtea.pdf
- Ion Sima, et al., "XXTEA, an Alternative Replacement of KASUMI Cipher Algorithm in A5/3 GSM, F8, F8 UMTS Data Security Functions," 9th International Conference on Communications(IEEE), pp.323-326, 2012. https://doi.org/10.1109/ICComm.2012.6262617
- Elias Yarrokov, "Cryptoanalysis of XXTEA," International Association for Cryptologic Research, pp.1-6, May 2010. https://eprint.iacr.org/2010/254.pdf
- Seungil Sonh, Design of XXTEA for Variable-Length Message Block Cipher, DSC Lab. technical report, 2015.
- Seungil Sonh, "Design of Encryption/Decryption IP for Lightweight Encryption LEA", JICS, Vol.18, No.5, pp.1-8, Oct. 2017. https://doi.org/10.7472/jksii.2017.18.5.01