I. 서론
현대사회는 컴퓨터와 인터넷 사용의 막대한 증가로 인하여 정보보안의 중요성이 갈수록 커지고 있다. 보안의 3대 요소인 기밀성(Confidentiality), 무결성(Integrity), 가용성(Accessibility) 등의 서비스를 제공하는 것을 정보보호라 하며, 암호화 및 인증 등을 수행하는 암호 시스템 사용은 정보보호 서비스의 가장 일반적인 방법이라 할 수 있다. 암호 시스템에 사용되는 암호는 크게 대칭키와 비대칭키로 나뉜다. 대칭키 암호는 두 사용자 A와 B가 서로 같은 키를 이용해 암호화 및 복호화 과정을 수행하는 방식이며, 현재에도 데이터 암호화나 메시지 무결성 검사 등에 많이 사용 되는 방식이다.[2] 대칭키 암호는 스트림 암호(Stream cipher)와 블록 암호(Block cipher)로 나뉘며 현재 대표적인 블록암호로는 3-DES(Triple Data Encryption Standard)[3], AES (Advanced Encryption Standard)[4]등이 있고 우리나라는 자체적으로 개발한 SEED[5]와 ARIA[6]등이 있다. 하지만 국내에서는 고속, 경량, 저전력을 요구하는 암호 시스템을 필요로 하게 되었고 이에 따라 32비트 플랫폼에서 효율적으로 구동되는 LEA(Lightweight Encryption Algorithm)알고 리즘을 제안하였다.[1]
LEA는 128비트 블록 단위로 암복호화를 수행하고 128, 192, 256비트의 비밀키를 사용할 수 있으며 라운드함수는 Addtion, Rotation, XOR의 연산만으로 구성되어있어 연산 속도가 다른 블록암호에 비해 빠르고 키스케줄 과정이 간단하며 S-box를 사용하지 않으므로 경량 구현이 가능하다.[1] 또한 COSIC은 현존하는 블록암호에 대한 공격들에 대하여 안전성을 가지고 있다고 분석하였다.[7] 따라서 이러한 장점을 가진 LEA는 여러 임베디드 시스템에서 유용하게 쓰일 가능성이 매우 높다. 현대 고사양 임베디드 시스템들은 마이크로프로세서 고성능화로 인하여 32비트 프로세서를 사용하고 일부 제품은 64비트 프로세서를 사용하는 경우도 많다.[8] 하지만, 저사양 임베디드 시스템에서는 효율성을 위하여 여전히 8비트나 16비트 프로세서를 많이 사용하고 있다.[9] 이에 따라 32비트에서 뿐만 아니라 16비트에서의 암호모듈 구현은 필요할 수 밖에 없으며 기본적인 데이터를 암호화하는 블록암호는 암호모듈의 핵심이라 할 수 있다. 따라서 본 논문은 안전하고, 저용량에 고효율을 만족하는 LEA를 UICC-16bit 상에서의 구현을 목표로 하였다.
본 논문의 2장에서는 LEA의 암/복호화 과정 및 키 스케줄링 과정을 설명하고, 3장에서는 개선된 키 스케줄링과 함께 UICC-16bit에서의 구현 과정을 설명하며 ARIA와의 효율성 비교 후 4장에서 결론을 내린다.
II. LEA 알고리즘 [1, 9]
LEA의 규격은 다음 Table 1. 과 같다.
Table 1. Specification of LEA
LEA는 128비트 블록 단위로 암/복호화를 하며, 128비트, 192비트, 256비트의 가변 키 길이를 가지며 라운드 수는 각각 차례대로 24라운드, 28라운드, 32라운드이다. 먼저 암/복호화시 사용되는 기호에 대하여 정의한다.
2.1 기호 정의
P : 평문(Plaintext). 32비트 4워드로 이루어져 있다. (P = P[0]||P[1]||P[2]||P[3])
C : 암호문(Ciphertext). 32비트 4워드로 이루어져 있다. (C = C[0]||C[1]||C[2]||C[3])
E : 암호화 함수. D : 복호화 함수.
K : 메인키. T : 라운드 키 임시 변수.
RKi[j] : 라운드 키. 각 라운드 당 32비트 6워드로 이루어져있다.
δ[i] : 키 스케줄시 사용되는 라운드 상수.
Xi : i번째 라운드의 값. 암/복호화 과정시 중간값이다. (Xi= Xi[0]||Xi[1]||Xi[2]||Xi[3])
#: 비트단위 XOR.
#: 모듈로 232에서의 덧셈.
#: 모듈로 232에서의 뺄셈.
ROTLi(x) : x를 i비트 왼쪽으로 순환이동.
ROTRi(x) : x를 i비트 오른쪽으로 순환이동.
2.2 암호화 및 복호화 과정
LEA의 암호화 과정은 키 스케줄링을 통하여 얻은 192비트 라운드 키를 이용해 암호화한다. 128비트 블록을 32비트 4워드로 나누어 덧셈, 순환이동, XOR 연산 후 다음 라운드로 진행한다. 암호화 과정을 그림으로 나타내면 Fig.1.과 같고, 식으로 나타내면 Fig.2.와 같다.
Fig. 1. An encryption round function on i-round
Fig. 2. An encryption schedule
LEA의 복호화 과정은 키 스케줄링을 통하여 얻은 192비트 라운드 키를 암호화와 반대 방향으로 이용하여 복호화한다. 128비트 블록을 32비트 4워드로 나누어 뺄셈, 순환이동, XOR연산 후 다음 라운드로 진행한다. 복호화 과정을 그림으로 나타내면 Fig.3.과 같고, 식으로 나타내면 Fig.4.와 같다.
Fig. 3. A decryption round function on i-round
Fig. 4. A decryption schedule
2.3 라운드 키 생성과정
라운드 키 생성과정은 8개의 32비트 상수를 사용하며 키 스케줄링 함수를 거쳐 192비트 라운드 키를 생성한다. 이 때 사용되는 상수는,
δ[0]=0xc3efe9db, δ[1]=0x44626b02,
δ[2]=0x79e27c8a, δ[3]=0x78df30ec,
δ[4]=0x715ea49e, δ[5]=0xc785da0a,
δ[6]=0xe04ef22a, δ[7]=0xe5c40957
이며, LEA-128은 δ[0] ~ δ[3], LEA-192는 δ[0] ~ δ[5], LEA-256은 δ[0] ~ δ[7] 의 상수를 사용하며 모듈로 연산과 순환이동을 거친 후 나누어진 메인 키에 덧셈연산을 취한 후 다시 순환이동을 거쳐 최종 라운드 키가 된다. 각각 식으로 나타내면,
<LEA-128>
T[4] ← K for i = 0 to 23;
{
#
}
<LEA-192>
T[6] ← K
for i = 0 to 27;
{
#
}
<LEA-256>
T[6] ← K
for i = 0 to 31;
{
#
}
이다.
III. UICC-16bit 상에서의 구현
3.1 효율적인 키 스케줄링 과정
LEA 키 스케줄링 과정에서 LEA-k는 k비트 비밀 키를 이용해 192비트 라운드 키를 추출한다. 이 때 추출되는 라운드 키 192비트는 32비트 6워드로 이루어 져 있으며 각 워드는 #라는 식으로 나타낼 수 있다. 이 식에서 덧셈 연산 전의 T[j]는 비밀키에 따라 변경되는 가변 값이 되고, #은 고정된 상수 δ를 이용하기 때문에 비밀키 값이 변경되어도 변하지 않는 값이므로 미리 계산하여 상수화가 가능하다. LEA-128을 기준으로,
δi에서 i를 순환이동의 횟수라 하면,
i=0 : δ0[0], δ1[0], δ2[0], δ3[0]
i=1 : δ1[1], δ2[1], δ3[1], δ4[1]
i=2 : δ2[2], δ3[2], δ4[2], δ5[2]
i=3 : δ3[3], δ4[3], δ5[3], δ6[3]
i=4 : δ4[0], δ5[0], δ6[0], δ7[0]
i=5 : δ5[1], δ6[1], δ7[1], δ8[1]
i=k : δk[imod4], δk+1[imod4], δk+2[imod4], δk+3[imod4]
즉, i=[i(mod4)]일 때의 값들을 k번 왼쪽으로 순환이동 하면 된다. LEA-192는 모듈로 6에서 이루 어지므로 6라운드씩 반복되며, LEA-256은 모듈로 8에서 이루어지므로 8라운드씩 반복된다. 키 길이당 미리 계산된 상수는 Table 3.과 같다.
Table 3. Key-scheduling and Constants
16비트 환경에서는 16˟24˟8(LEA-128 기준) 만큼의 상수가 들어가게 된다. 각 LEA당 table의 크기는 Table 2.와 같다.
Table 2. Code size of Pre-computed constants
3.2 UICC 상의 구현 및 ARIA와의 효율성 비교
UICC는 애플리케이션, 파일 시스템, 보안 메커니즘, 암호 알고리즘 등을 포함하고 있는 일종의 스마트 카드이다.[10] 본 논문에서는 저사양 환경에서 많이 사용되는 UICC-16bit에서의 구현을 목적으로 두었는데 16비트 환경이므로 암호 알고리즘은 저전력, 경량화, 효율성의 특징을 지녀야 함은 당연하며 이러한 환경에 알맞게 설계된 LEA를 UICC-16bit 상에 최적으로 구현하였다. 일반 32비트 LEA는 128비트의 블록을 32비트 4워드로 분할하여 암/복호화를 수행하 고 192비트의 라운드 키는 각각 32비트 6워드로 이루 어져 있다. 16비트 전용 LEA는 블록을 16비트 8워드로 분할하여 수행하고 16비트 12워드로 이루어져있다. 단, LEA는 덧셈과 뺄셈이 모듈로 232에서 이루 어지기 때문에 16비트 환경에서는 자릿수 올림과 자릿수 내림에 대한 매크로가 필요하며 또한 순환이동도 n자리를 수행한다면 n자리만큼 넘겨줘야 할 매크로가 필요하다. 이러한 과정을 거쳐 코딩 한 후 UICC-16bit에서 구현하였으며 구현에 사용된 호스트 PC는 Intel Core(TM) i5-3230 cpu@2.60GHz 이고 타겟 시스템은 16-bit microcontroller unit인 PBS3CT9KW이며 에뮬레이터는 IM-500S를 사용 하였고, Compiler는 CalmSHINE16Plus이다. Fig.6.은 UICC 작업환경을 나타낸다.수행 결과 PBS3CT9KW는 빅엔디안(Big Endian)이므로 구현시 EndianChange 과정을 수행하였고 ARIA와 의 효율성 비교는 호스트pc에서 진행하였으며 ECB, CTR 운영모드를 사용하여 비교하였다. Fig.7.은 UICC-16bit 상에서 CTR모드를 사용하는 LEA 블록암호의 구현 결과 화면이다.
Fig. 5. Development structure of UICC
Fig. 6. LEA_CTR mode on UICC-16bit
3.3 ARIA 및 기존 LEA와의 효율성 비교
ARIA 알고리즘은[6] UICC-16bit 상에 알맞게 구현되어있는 코드를, 기존 LEA 알고리즘은 reference 코드를 이용하였으며 효율성 비교는 호스트 PC(Intel(R) Core(TM) i5-3230M cpu@2.60 (GHz)에서 benchmark코드를 이용하여[11] 비교하였다. 기존 LEA는 개선된 키 스케줄링을 사용하지 않는다면 수많은 회전이동연산을 거치게 되는데 LEA 알고리즘은 32비트 단위로 연산을 수행하기 때문에 16비트 환경에 알맞게 구현할 시 순환이동연산을 적 용할 때마다 다른 워드로 넘겨주는 매크로가 계속 실 행되야 하므로 최적화된 코드에 비해 5배 이상의 매우 비효율적인 속도가 측정되었다. 또한 ARIA와의 비교 결과는 LEA-128이 ARIA-128보다 약 1.57배(키스케줄 1.66배, 암호화 1.49배, 복호화 1.58배), CTR 모드를 기준으로 약 1.52배(키스케줄 1.66배, 암호화 1.45배, 복호화 1.45배) 빠른 것으로 나타났다. (Table 4. 참조)
Table 4. Compare code speed (16bits only)
IV. 결론
임베디드 시스템(Embedded System)은 유비쿼터스(Ubiquitous) 컴퓨팅 시스템의 핵심으로 최근 많이 사용되고 있는 전자기기들은 대부분 임베디드 시스템을 탑재하고 있으며[12] 근래 32비트 혹은 64비트 사양의 임베디드 시스템을 많이 사용하고 있지만 아직도 여전히 저사양 환경에서는 16비트 사양을 많이 사용하고 있다. 본 논문에서는 고속, 경량, 저전력 을 만족하는 LEA 블록암호를 UICC-16bit상에 구현하였으며 효율적인 키 스케줄링을 이용하여 저사양 임베디드 시스템이 요구하는 효율적인 측면에 한층 더 가깝게 LEA를 구현하였고 국내 표준 블록암호 ARIA와의 효율성을 UICC-16bit상에서 비교하였 다. 그 결과 ARIA-128보다 약 1.5배 이상의 효율을 보였다. 따라서 효율적인 16비트 기반의 LEA 블록 암호를 구현하였으며 구현 효율성 비교의 결과로 LEA의 우수성을 입증하였다. 또한 경량암호 LEA의 저전력적인 특성을 확인하기 위해 추후 타 알고리즘과 의 전력소모 비교실험을 진행할 예정이다.
참고문헌
- TTAK.KO-12.0223, "128-Bit Block Cipher LEA," Telecommunications Technology Association, pp.1-24, December 18, 2013.
- Christof Paar and Jan Pelzl, "Understanding Cryptography, A textbook for students and practitioners," Springer, pp.3-5, 2010.
- W.C Barker and Elaine Barker, SP 800-67, Revision 1, "Recommendation for the Triple Data Encryption Algorithm(TDEA) Block Cipher," NIST, pp.1-12, January, 2012.
- National Institute of Standards and Technology, "Advanced Encryption Standards," NIST FIPS PUB 197,pp.1-26, November 26, 2001.
- TTAS.KO-12.0004/R1, "128-bit Block Cipher SEED," Telecommunications Technology Association, pp.4-9, December 21, 2005.
- KS X 1213:2004, "128 bit Block Encryption Algorithm ARIA," Korean Agency for Technology and Standards (KATS), December 30, 2004,
- Andrey Bogdanov, Nicky Mouha, Elmar Tischhauser, Deniz Toz, Kerem Varici, Vesselin Velichkov, Meiqin Wang, Qingju Wang, and Vincent Rijmen, "Security Evaluation of the Block Cipher LEA Final Report," COSIC, Belgium, pp.3-30, July 7, 2011.
- Hwa-jeong Seo, Howon Kim, "Recent Trends in Implementing Cryptography with Embedded Microprocessors," JKIISC, pp.815-824, October, 2013. https://doi.org/10.13089/JKIISC.2013.23.5.815
- Hokyoon Lee, S.W Kim, and Y.S. Han, "Pair Register Allocation Algorithm for 16-bit Instruction Set Architecture (ISA) Processor," Korea Institute Processing Society, pp.265-270, December, 2011. https://doi.org/10.3745/KIPSTA.2011.18A.6.265
- Hakdoo Kim and Sungik Jeon, "UICC File System Design and Implementation for java Card," CICS"03, pp.584-587, November 21, 2003.
- http://www.kcryptoforum.or.kr/, Block cipher LEA reference code in notice board, Korea Cryptography Forum, May 14, 2014.
- Chi-Seong Park, "A Study on the Implementation of Cryptographic Modules and its Applications to Security Protocols on Embedded Systems," Master's thesis, Kookmin Univ, Korea, December, 2012.