home

기술동향칼럼

초경량 암호 알고리즘의 동향과 하드웨어 구현

김 동 규 교수 | 한양대학교 융합전자공학부

이 희 열 석사과정 | 한양대학교 정보보안학과

초록

  사물인터넷 기술의 발전에 따라 사물인터넷을 구성하는 디바이스들 중, 매우 제한된 환경에서 동작하는 디바이스들도 개발되고 있다. 제한된 환경에서는 보안시스템의 구현을 위하여, 일반적으로 사용되는 대칭키 블록 암호 알고리즘을 동작시키기에도 어려움이 있다. 이러한 제안된 환경의 보안을 위하여, 현재 초경량 암호 알고리즘의 연구가 활발히 진행되고있고, 몇 알고리즘은 국제 표준화의 마지막 단계에 와 있다. 본 칼럼에서는 초경량 암호 알고리즘들의 종류와 동작 방식을 소개하고자 하며, 더불어 hard-IP로 구현한 결과를 칩 면적과 동작성능을 보인다. 또한 기존의 대칭키 블록 암호 알고리즘과 소개하는 초경량 암호 알고리즘의 하드웨어 구현 성능을 비교하고자 한다.

1. 서론

  사물인터넷 산업이 발전함에 따라 다양한 분야에 사물인터넷 기기들이 자리하게되고, 이어 기존의 사이버 공간에 한정된 보안 위협이 일상생활에 직접적으로 영향을 끼칠 정도로 확산되어가고 있다. 사물인터넷 기기들이 처리하는 데이터는 스마트 가전, 스마트 홈에서 쓰이는 보안과 크게 연관성이 없는 데이터도 존재하지만 의료기기, 출입 인증기기 등에서 사용되는 보안과 매우 밀접한 데이터들도 존재한다. 각 분야에서 사용되는 사물인터넷 기술들은 전 세계적으로 활발하게 연구가 진행되고 있으며, 이에 발맞추어 해당 기기의 목적에 부합하는 안전성을 제공하기 위한 암호 알고리즘 연구의 필요성이 대두되고 있다.

  사물인터넷 기기에서 충분한 안전성을 제공하기 위해서는 해당 기기의 물리적 형태에 적용된 보안 기술도 중요하지만, 실제로 핵심적인 보안을 제공하는 원천 기술은 바로 암호 알고리즘에 있다. 암호 알고리즘은 전자 서명 및 키 교환에 사용되는 공개키 알고리즘과 데이터의 암/복호화에 사용되는 대칭키 블록 암호 알고리즘으로 나눌 수 있다. 공개키 알고리즘은 해당 알고리즘의 특성 상 블록 암호 알고리즘보다 긴 키 길이와 복잡한 수학적 연산에 기반하기 때문에 이를 하드웨어로 구현 시 많은 자원이 필요하다. 따라서 공개키 알고리즘은 한정된 자원을 사용하는 사물인터넷 기기에 탑재되기에는 적합하지 않으며, 이를 대신하여 대칭키 블록 암호 알고리즘이 주로 사용되어 왔다. 국제적으로 AES 블록 암호 알고리즘이 널리 사용되며, 중국에서는 중국 내 무선 랜 표준에 사용되는 블록 암호 알고리즘인 SM4가 대표적이다[1,4]. 국내에서는 ARIA와 SEED가 대표적인 블록 암호 알고리즘으로 알려져 있다[2,3]. 하지만 기술이 발전함에 따라 기존보다 더 제한된 자원을 사용하는 소형 사물인터넷 기기들이 개발되었고, 이에 발맞추어 보다 더 경량화된 경량 암호 알고리즘들이 제안되어 왔으며, 현재 연구가 활발히 진행 중이다.

  이에 본 칼럼에서는 사물 인터넷 플랫폼 특성상 저전력 및 경량 환경에 적합한 경량 암호 알고리즘들의 동향을 소개하고 해당 알고리즘들의 하드웨어 구현 결과를 비교한다.

2. 경량 암호 알고리즘

  대칭키 블록 암호 알고리즘의 구조는 크게 GFN(Generalized Feistel Network) 구조와 SPN(Substitution Permutation Network) 구조로 나뉘게 된다. 이에 따라 경량 암호 알고리즘의 구조도 GPN 혹은 SPN 구조를 가지며, [표 1]을 통해 LED 암호 알고리즘을 제외하고는 모두 GPN 구조로 이루어져있는 것을 확인할 수 있다. GPN 구조는 기본적으로 대칭 구조를 갖는 feistel 구조에 기반하지만, 각각의 암호 알고리즘의 특성에 맞추어 branch의 개수 및 내부 구조가 조금씩 달라지는 구조를 의미한다. SPN 구조는 substitution과 permutation의 반복으로 암호화를 진행하는 구조를 의미하며, substitution 연산을 수행하기 위하여 s-box가 반드시 포함되어 사용된다. 또한, 경량 암호 알고리즘은 주 연산에 따라 ARX(Addition or AND, Rotation, XOR) 연산 기반과 s-box를 사용하는 s-box 연산 기반으로 나누어 설명할 수 있다. ARX 연산은 s-box 연산을 제외한 간단한 산술 연산만을 수행하며, s-box 연산 기반은 대칭키 블록 암호 알고리즘의 s-box를 보다 경량화한 축소된 s-box 연산을 수행한다.

<표1> 경량 블록 암호 알고리즘의 구조 및 연산 특징

Algorithm Category Structure (Feature) Operation
SIMON ARX GFN (Classical Feistel) AND, Rotation, XOR
SPECK ARX GFN (Feistel-like) Addition, Rotation, XOR
SIMECK ARX GFN (Classical Feistel) AND, Rotation, XOR
PICCOLO S-box GFN (4-branch, Type-2 Feistel) S-box, MixCols, XOR, Permutation
TWINE S-box GFN (16-branch, Type-2 Feistel) S-box, XOR, Permutation
LED S-box SPN (similar to AES) 4 operations similar to AES

2.1 ARX 연산 기반 경량 암호 알고리즘

  대칭키 블록 암호 알고리즘의 주 연산인 s-box 연산을 하드웨어로 구현하기 위해서는 많은 자원이 필요하다. 따라서, 대칭키 블록 암호 알고리즘의 s-box 연산을 제외하고 ARX 연산을 기반으로 하는 경량 암호 알고리즘의 연구가 진행되었다. 대표적인 ARX 연산 기반 경량 암호 알고리즘으로는 SIMON, SPECK, SIMECK 등이 있다.

[그림 1] ARX 연산 기반 경량 암호 알고리즘의 구조

[그림 1] ARX 연산 기반 경량 암호 알고리즘의 구조

2.1.1 SIMON 암호 알고리즘

  SIMON은 NSA(National Security Agency)에서 공개한 ARX 연산 기반 경량 암호 알고리즘으로 다양한 블록 크기 및 비밀키 길이를 제공한다[5]. SIMON의 구조는 classical feistel 구조에 속하며, 연산은 AND, Rotation, XOR 연산으로 타 암호 알고리즘보다 적은 연산량을 갖는다. 라운드 함수는 입력 받은 데이터 블록을 두 개의 블록으로 나누어 연산한다. Li는 i번째 라운드의 왼쪽 블록을 나타내며, Ri는 i번째 라운드의 오른쪽 블록을 나타낸다. ROLn연산은 n비트 크기만큼의 Rotate Left를 의미한다. 라운드 키 ki는 매 라운드마다 키 스케줄링에 의해 생성된다. 라운드 함수에서 사용되는 알고리즘은 (1)과 같이 다음 라운드의 왼쪽 블록인 L(i+1)는 Li, Ri 및 ki를 이용하여 연산이 진행되며, 다음 라운드의 오른쪽 블록인 R(i+1)는 Li의 블록을 그대로 가져온다. 전체 라운드 구조는 [그림 1]. (a)와 같다.

  SIMON은 매 라운드마다 사용되는 라운드 키를 생성하기 위한 키 스케줄링 역시 Rotation, XOR 연산으로만 구현이 가능한 구조로 아주 적은 자원만을 사용한다. 초기 입력 키와 상수 c,z와의 XOR 연산에 의해 매 라운드마다 라운드 키를 생성한다. 키 스케줄링의 Rotation 연산은 라운드 함수와 다르게 Rotate Right 연산인 RORn을 수행한다. 상수 c는 고정되어 있으며, 상수 z는 LFSR(Linear Feed-back Shift Register)에 의해 생성된다. 따라서, SIMON의 키 스케줄링 알고리즘은 (2)와 같이 연산이 진행된다. 블록의 크기에 따라 m 값이 결정되며, m 값에 따라 알고리즘에 차이가 발생한다. I는 단위 행렬을 의미한다.

2.1.2 SPECK 암호 알고리즘

  SPECK은 SIMON과 동일하게 NSA에서 공개한 ARX 연산 기반 경량 암호 알고리즘으로 다양한 블록 크기 및 비밀키 길이를 제공한다[5]. SIMON과의 차이점은 AND 연산을 Addition 연산으로 대체하여 알고리즘을 수행한다. SPECK의 구조는 feistel-like 구조에 속하며, 이는 실제로 feistel 구조를 가지고 있지 않지만, 외부에서 보았을 때 마치 feistel처럼 보이는 구조를 말한다. 라운드 함수에서 사용되는 알고리즘은 (3)과 같이 다음 라운드의 왼쪽 블록인 L(i+1)는 Li, Ri 및 ki를 이용하여 연산이 진행되며, 다음 라운드의 오른쪽 블록인 R(i+1)는 L(i+1)과 Ri의 연산으로 생성된다. 데이터 블록의 크기가 32비트인 경우에만 (α,β)=(7,2)의 값을 가지며, 그 외의 데이터 블록의 크기는 (α,β)=(8,3)의 값을 갖는다. 전체 라운드 구조는 [그림 1]. (b)와 같다

  SPECK은 라운드 함수에서 사용한 Addition, Rotation, XOR 연산 구조를 키 스케줄링에서 동일하게 사용한다. SPECK의 초기 입력 키 블록을 K라 하면 K는 K=(l(m-2),… ,l0,k0)으로 나타낼 수 있다. m은 블록의 크기에 따라 결정된다. k_i가 라운드 키로 사용되며, 키 스케줄링 알고리즘은 (4)와 같다.

2.1.3 SIMECK 암호 알고리즘

  SIMECK은 캐나다 Waterloo 대학에서 공개한 ARX 연산 기반 경량 암호 알고리즘으로 SIMON과SPECK의 장점을 결합하였다[6]. 따라서, 하드웨어 구현 시 SIMON보다 더 작은 면적으로 구현이 가능하다. 연산 구조는 SIMON과 동일하게 AND, Rotation, XOR 연산에 기반하며 Rotation 연산을 수정하였다. 또한, SIMON, SPECK은 다양한 블록 크기와 비밀키 길이를 제공하지만, SIMECK은 블록의 최대 크기가 64비트이다. 라운드 함수는 입력 받은 데이터 블록을 두 개의 블록으로 나누어 연산하여 (5)와 같으며 전체 알고리즘 구조는 [그림 1]. (c)와 같다.

  SIMECK의 키 스케줄링 구조는 SPECK과 마찬가지로 라운드 함수의 연산 구조를 동일하게 사용한다. 이는 SIMECK 암호 알고리즘이 라운드 함수에서는 SIMON의 장점을 가져왔으며, 키 스케줄에서는 SPECK의 장점을 가져온 것을 의미한다. 따라서, 키 스케줄링 알고리즘은 라운드 함수와 유사하며, SIMECK의 초기 입력 키 블록을 K라 하면 K는 K=(t2,t1,t0,k0)로 나타낼 수 있다. SIMECK의 키 스케줄링 알고리즘은 (6)과 같으며, ki를 라운드 키로 사용한다. C는 고정된 상수 값을 사용하고 z는 LFSR을 통해 생성한다.

2.2 SBOX 연산 기반 경량 암호 알고리즘

  ARX 연산 기반 경량 암호 알고리즘은 s-box 연산을 구현하는데 많은 자원이 필요하기 때문에 대칭키 블록 암호 알고리즘의 s-box 연산을 제외함으로써 경량화를 진행하였다. 하지만, s-box 연산을 제외하지 않고 s-box 연산의 단위를 낮춤으로써 경량화를 진행하는 s-box 연산 기반 경량 암호 알고리즘들도 활발히 연구되었다. 대표적으로 PICCOLO, TWINE, LED 암호 알고리즘들이 있다.

[그림 2] s-box 연산 기반 경량 암호 알고리즘의 구조

[그림 2] s-box 연산 기반 경량 암호 알고리즘의 구조

2.2.1 PICCOLO 암호 알고리즘

  PICCOLO는 앞서 소개되었던 경량 암호 알고리즘과 달리 ARX 연산 기반이 아닌 s-box 연산 기반 경량 암호 알고리즘이다. 일본에서 개발되었으며, 64비트의 블록 크기만을 제공하며 입력 받은 데이터를 4개의 블록으로 나누어 연산한다[8]. PICCOLO의 한 라운드는 일련의 F-function과 permutation, XOR 연산으로 이루어지게 되고 F-function은 diffusion layer와 s-box 연산이 포함되어 있다. Permutation 연산인 RP(Round Permutation)는 8비트 단위로 연산을 수행하며 RP:(x0,x1,…,x7)←(x2,x7,x4,x1,x6,x3,x0,x5)로 나타낸다. 대칭키 블록 암호 알고리즘의 s-box는 바이트 단위로 연산하는데 비해 PICCOLO의 s-box는 4비트 단위로 연산을 수행한다. PICCOLO의 암호화 방법은 Algorithm 1과 같으며, 전체 알고리즘의 구조는 [그림 2]. (a)와 같다.

  PICCOLO의 키 스케줄링은 초기 입력 키를 16비트 단위의 8개 블록으로 나눈 뒤 permutation 연산과 상수 c와의 XOR 연산으로 라운드 키를 생성한다. 화이트닝 키 wk는 초기 입력 키를 그대로 사용한다. PICCOLO의 키 스케줄링 방법은 Algorithm 2와 같다.

2.2.2 TWINE 암호 알고리즘

  TWINE은 PICCOLO와 마찬가지로 일본에서 개발된 s-box 연산 기반 경량 암호 알고리즘이며, 블록 크기는 64 비트만을 제공하며 입력 받은 데이터를 16개의 블록으로 나누어 연산한다[9]. TWINE은 앞서 소개되었던 PICCOLO와 같은 s-box 연산 기반 경량 암호 알고리즘이다. TWINE은 별도의 Diffusion layer가 존재하지 않기 때문에 mixcolumns 연산 과정을 수행하지 않는 점이 PICCOLO와의 차이점이다. 라운드에서 사용되는 s-box 연산은 PICCOLO와 마찬가지로 바이트 단위가 아닌 4비트 단위로 연산을 수행한다. TWINE 알고리즘의 암호화 방법은 Algorithm 3과 같으며, 전체 알고리즘의 구조는 [그림 2]. (b)와 같다.

  TWINE의 키 스케줄링 구조는 라운드 함수와 유사한 구조를 갖고 있으며, XOR, Rotation, s-box 연산을 포함한다. 초기 입력 받은 키(K)를 이용하여 매 라운드 마다 사용하는 라운드 키 RKi를 생성하며, 마지막 라운드 키는 Permutation 연산만 수행하여 생성한다. Rotn연산은 n비트 Rotate Left연산을 의미하며, C는 상수 값을 나타낸다. TWINE의 키 스케줄링 방법은 Algorithm 4와 같다.

2.2.3 LED 암호 알고리즘

  LED는 다른 경량 암호 알고리즘과 달리 feistel 구조가 아닌 SPN 구조를 가지고 있다. 따라서, AES와 상당히 유사한 연산 구조로 이루어져 있다[10]. LED도 PICCOLO와 TWINE과 마찬가지로 64비트 블록 크기를 가지고 있으며, s-box 연산 단위도 4비트로 동일하다. LED의 연산은 AES와 유사하게 매 라운드마다 AddRoundKey, AddConstants, SubCells, ShiftRows, MixColumnsSerial 연산을 수행한다. AddRoundKey는 데이터와 라운드 키의 XOR 연산을 수행하고 AddConstants는 데이터와 상수 값의 XOR 연산을 수행한다. SubCells은 4비트 단위의 s-box 연산을 수행하며, ShiftRows는 행 단위의 Rotation 연산을 수행한다. 마지막으로, MixcolumnsSerial은 행렬 곱을 의미하며 XOR 연산으로 구현이 가능하다. 연산 중간 결과 값을 STATE라 하며, 매 라운드마다 STATE를 업데이트하여 암호화가 진행된다. rc는 AddConstants에서 사용되는 상수 값으로 LFSR에 의해 생성된다. MixColumnsSerial에서 사용되는 M은 4x4 행렬을 의미한다. LED 알고리즘의 암호화 방법은 Algorithm 5와 같으며, 전체 알고리즘의 구조는 [그림 2]. (c)와 같다.

  LED의 키 스케줄링은 128 비트 입력 키에 대해서 간단한 구조를 지닌다. 매 라운드마다 사용되는 라운드 키를 초기에 입력 받은 키의 상위 64비트와 하위 64비트를 스위칭하여 사용한다. 따라서 키를 생성하기 위한 연산은 필요하지 않으며, 매 라운드마다 상위 혹은 하위 64비트를 선택해서 사용하면 된다. 초기 입력 키를 K라 하면 K는 K=(k0,k1,… ,k30,k31 )로 나타내며 초기 입력 키를 이용하여 (7)과 같이 라운드 키를 생성한다.

3. 구현 성능 비교

  앞에서 소개한 경량 암호 알고리즘들을 하드웨어로 구현하여 대칭키 블록 암호 알고리즘들과 비교하여 하드웨어 면적과 성능을 비교한다. 더불어 다양한 경량 암호 알고리즘들 사이에서 어떠한 알고리즘이 우수한 성능을 갖는지도 비교한다. 일반적인 대칭키 블록 암호 알고리즘에서 제공하는 데이터 블록 크기와 경량 암호 알고리즘에서 제공하는 데이터 블록 크기가 서로 상이한 경우도 있어 정확한 비교는 어려울 수 있으나, 본 문서의 결과는 대략적인 차이를 파악할 수 있다.

  아래 암호 IP의 구현은 IDEC에서 제공되는 Magna 180nm 공정을 사용하여 ASIC으로 제작하고, 테스트한 결과를 보인다. [표 2]는 대칭키 블록 암호 알고리즘의 구현 결과를 보이고 있다. 대칭키 블록 암호 알고리즘은 SPN 구조를 갖는 AES, ARIA의 경우 100Mhz에서 합성 시 대략 30K GE(Gate Equivalent) 내외로 구현되며, GFN 구조를 갖는 SEED, SM4의 경우 대략 10K GE 내외로 구현이 되었다. 대칭키 블록 암호 알고리즘은 높은 속도에 기반하여 하드웨어로 구현 시 많은 자원을 사용하기 때문에 사물인터넷 기기에 탑재되기에는 다소 무리가 있을 것으로 보인다.

<표2> 대칭키 블록 암호 알고리즘 구현 결과표

Algorithm Size(bit) Area(GE) Throughput@100Mhz (Mbps)
Block Key
AES 128 128 28,752 1,280
ARIA 128 128 30,077 800
SEED 128 128 11,280 114
SM4 128 128 9,800 400

  제한된 자원만을 사용하는 소형 사물인터넷 기기에는 경량화된 암호 알고리즘이 탑재돼야 한다. 여기서는 2절에서 소개한 초경량 암호 알고리즘들을 IDEC에서 제공되는 Magna 180nm 공정을 사용하여 Hard-IP로 구현하였으며, 그 결과를 [표 3]에 정리하였다. 저전력 및 경량 환경을 갖는 소형 사물인터넷 기기들에 탑재되기 위하여, 하드웨어 구현 시 100Khz에서 합성을 진행하였다.

  대칭키 블록 암호 알고리즘과 같이 데이터 블록 크기가 128비트인 경량 암호 알고리즘으로는 SIMON, SPECK이 있으며, 그 외 경량 암호 알고리즘들은 모두 64비트 데이터 블록 크기를 지원한다. 대칭키 블록 암호 알고리즘과 동일한 128 비트의 데이터 블록 크기를 갖는 SIMON과 SPECK은 3K GE 내외로 구현이 되었다. 이는 대칭키 블록 암호 알고리즘과 비교하였을 때 월등히 적은 자원만을 사용하여 하드웨어로 구현이 가능함을 의미한다. 또한, 64비트 데이터의 블록 크기를 갖는 경량 암호 알고리즘들은 2K GE 내외로 구현되었다. 특히, PICCOLO 암호 알고리즘은 가장 작은 면적인 1,539 GE로 구현되었다. 이는 경량 암호 알고리즘들이 사물인터넷 플랫폼 특성상 제한된 자원만을 사용하는 소형 사물인터넷 기기에 탑재되기에 가장 유리할 것으로 보인다. 암호화 성능은 SPECK 암호 알고리즘이 가장 좋은 성능을 나타내었다. 다른 경량 암호 알고리즘들의 성능 또한 대칭키 블록 암호 알고리즘과 비교하여 크게 저하되지 않는 속도를 갖는 것을 확인할 수 있다.

<표3> 경량 암호 알고리즘 구현 결과표

Algorithm Size(bit) Area(GE) Throughput@100Mhz (Kbps)
Block Key
SIMON 128 128 2,532 182.9
SPECK 128 128 3,193 376.5
SIMON 64 128 1,728 133.3
SPECK 64 128 1,968 206.5
SIMECK 64 128 1,689 133.3
PICCOLO 64 128 1,539 193.9
TWINE 64 128 1,783 178.0
LED 64 128 2,329 133.3

4. 결론

  본 기고에서는 대칭키 블록 암호 알고리즘과 더불어 현재 활발히 연구가 진행중인 경량 암호 알고리즘의 동향을 소개하였고, 각 경량 암호 알고리즘들을 하드웨어로 구현한 성능 및 면적을 비교하였다. 경량 암호 알고리즘은 향후 소형 사물인터넷 기기에 탑재될 가능성이 매우 높으므로, 앞으로도 경량 암호 알고리즘에 대한 연구가 활발히 진행될 것으로 판단된다.

참고문헌
  • [1]NIST, “The Advanced Encryption Standard”, FIPS 197, 2001.
  • [2]Kwon, Daesung, et al. "New block cipher: ARIA." International Conference on Information Security and Cryptology. Springer, Berlin, Heidelberg, 2003.
  • [3]SEED 128 Algorithm Specification, KISA, 2003
  • [4]Diffie, Whitfield, and George Ledin. "SMS4 Encryption Algorithm for Wireless Networks." IACR Cryptology ePrint Archive 2008 (2008): 329.
  • [5]Beaulieu, Ray, et al. "The SIMON and SPECK lightweight block ciphers." Design Automation Conference (DAC), 2015 52nd ACM/EDAC/IEEE. IEEE, pp. 1-6, 2015.
  • [6]Yang, Gangqiang, et al. "The simeck family of lightweight block ciphers." International Workshop on Cryptographic Hardware and Embedded Systems, pp. 307-329, Springer, Berlin, Heidelberg, 2015.
  • [7]Hong, Deukjo, et al. "HIGHT: A new block cipher suitable for low-resource device." International Workshop on Cryptographic Hardware and Embedded Systems, pp. 46-59, Springer, Berlin, Heidelberg, 2006.
  • [8]Shibutani, Kyoji, et al. "Piccolo: an ultra-lightweight blockcipher." International Workshop on Cryptographic Hardware and Embedded Systems, pp. 342-357, Springer, Berlin, Heidelberg, 2011.
  • [9]Suzaki, T., Minematsu, K., Morioka, S., & Kobayashi, E. “TWINE: A Lightweight Block Cipher for Multiple Platforms“. In International Conference on Selected Areas in Cryptography, pp. 339-354, Springer Berlin Heidelberg, 2012.
  • [10]J. Guo, T. Peyrin, A. Poschmann and M. Robshaw, “The LED Block Cipher”, International Workshop on Cryptographic Hardware and Embedded Systems, pp. 339-354, Springer, Berlin, Heidelberg, 2011.
  • 이 희 열
    이 희 열 석사과정
    • 소속  한양대학교 정보보안학과
    • 주 연구분야
      Design of Security SoC, Cryptographic IP, TRNG
      (True Random Number Generator), and PUF applications.
    • E-mail  hylee17@hanyang.ac.kr
  • 김 동 규
    김 동 규 교수
    • 소속  한양대학교 융합전자공학부
    • 주 연구분야
      Design of Security SoC, Cryptographic IP,
      TRNG(True Random Number Generator), and PUF applications.
    • E-mail  dqkim@hanyang.ac.kr
상단으로