DOI QR코드

DOI QR Code

Masking-Based Block Cipher LEA Resistant to Side Channel Attacks

부채널 공격에 대응하는 마스킹 기반의 블록 암호 LEA

  • Received : 2017.09.07
  • Accepted : 2017.10.10
  • Published : 2017.10.31

Abstract

When a cryptographic device such as smart card performs an encryption for a plain text, an attacker can extract the secret key in it using side channel information. Especially, many researches found some weaknesses for side channel attack on the lightweight block cipher LEA designed to apply in IoT environments. In this paper, we survey several masking countermeasures to defeat the side channel attack and propose a novel masking conversion method. Even though the proposed Arithmetic-to-Boolean masking conversion method requires storage memory of 256 bytes, it can improve the LEA encryption speed up to 17 percentage compared to the case adopted the previous masking method.

스마트카드와 같은 정보보호용 디바이스에서 평문 데이터를 직접 암호화할 경우 누설되는 부채널 정보에 의해 사용되는 비밀 키가 노출될 수 있다. 특히, IoT 환경을 고려하여 설계된 LEA와 같은 경량 암호 알고리즘에서도 부채널 공격의 취약점이 발견되었다. 본 논문에서는 부채널 공격에 대응하기 위한 마스킹 기법을 소개하고 LEA 알고리즘에 적용할 수 있는 효율적인 마스킹 기법을 제안한다. 특히, 제안하는 산술-부울 마스킹 변환 기법은 256바이트 정도의 메모리가 필요하지만 연산 시간을 크게 감소시킴으로써 전체 암호 알고리즘의 수행 속도를 기존 알고리즘에 비해 약 17%정도 향상시킬 수 있다.

Keywords

I. 서론

스마트 카드와 같은 정보보호용 디바이스로 데이터를 암호화할 경우, 암호 알고리즘을 전용 프로세서에 직접 구현하기도 한다. 이때 사용되는 알고리즘은 일반적으로 이론적인 안전성이 검증된 것을 사용한다. 하지만 알고리즘을 디바이스에 구현하는 과정 에서 발생하는 결함을 이용하는 부채널 분석에 취약할 수 있다. 부채널 공격은 암호용 장비가 구동할 때발생하는 전력이나 전자기파와 같은 부가 정보를 분석하여 디바이스 구동 시 사용된 비밀 키를 찾아내는 공격이다[1-3]. 이 중에서 소비 전력 분석을 이용한 공격 방법이 많이 사용되고 있으며 AES (Advanced Encryption Standard)[4]나 RSA (Rivest, Shamir, and Adelman)[5]를 비롯한 대부분의 암호 시스템들이 공격 목표가 되기도 하였으며, 이 공격을 방어하기 위한 대응 기법도 많이 연구되고 있다.

한편, 사물인터넷(Internet of Things, IoT)과 같은 통신 시스템에 사용될 암호 디바이스는 전원이나 처리 장치 등 가용 자원이 제약된 경우가 많아 충분한 보안 서비스를 제공하기에는 한계가 있다. 특히, 사물들이 서로 소통하면서 자동적, 지능적으로 연산, 통신, 제어가 결합되어 운영되는 사이버 물리 시스템(Cyber-Physical System, CPS)에서 보안 기능을 제공하기 위해서는 보다 경량화된 암호 알고리즘을 필요로 하게 되었다. 이러한 요구에 의해 국내에서는 저전력, 저용량 디바이스에 적합한 경량화 블록 암호 알고리즘인 LEA(Lightweight Encryption Algorithm)를 개발하고 이를 표준화 하였다[6, 7]. LEA 암호 알고리즘은 128비트 단위로 암·복호화 연산을 수행하고 비밀 키 비트에 따라 128, 192, 256로 나누어진다. 알고리즘의 각 라운드는 ARX(Addition, Rotation, XOR) 함수를 이용하여 설계하였다.

하지만 LEA 암호 알고리즘도 부채널 공격에 의해 비밀 키가 노출될 수 있다는 취약성이 발견되었다 [8-10]. LEA에 대한 DPA(Differential Power Analysis)와 같은 부채널 공격에 대응하기 위해서는 마스킹(masking) 기법을 사용할 수 있지만 마스킹 기법의 적용에 따른 부가 연산 및 추가적인 메모리가 요구된다. 부채널 공격에 대응하기 위한 마스킹 기법을 적용하기 위해서는 부울(Boolean) 마스킹 기법과 산술(Arithmetic) 마스킹을 상호 변환 (conversion)해야 하는 과정이 필요한데, 특히, 산술-부울(Arithmetic-to-Boolean, AtoB) 마스킹 변환 기법은 알고리즘이 복잡하며 많은 연산 시간이 필요하다[11-15]. 따라서 암호 알고리즘에 따라 다르지만 어떤 산술-부울 마스킹 변환 기법을 적용하는가 하는 것이 시스템 성능을 좌우하는 중요한 요소가 되고 있다.

본 논문에서는 LEA에 대한 부채널 공격을 방어 하기 위한 효율적인 마스킹 기법을 제안하고자 한다. 특히, 마스킹 기법을 적용함으로써 발생하는 추가적인 연산 처리 시간을 감소시키기 위한 산술-부울 마스킹 변환 알고리즘을 제안한다. 제안 알고리즘은 LEA의 데이터 처리 구조를 분석하여 연산의 효율성을 높인 것으로 기존의 마스킹 변환 기법을 적용한 것보다 약 17%정도 연산 속도가 향상되었다.

본 논문의 2장에서는 LEA에 대한 DPA 공격 동향을 정리하고 3장에서는 기존의 마스킹 기법을 설명한다. 제 4장에서는 LEA 암호 알고리즘에 적용할 산술-부울 마스킹 기법을 제안하고 구현 결과를 비교 한다. 마지막으로 5장에서 결론을 맺는다.

II. LEA에 대한 DPA 공격

LEA는 ARX(Addition, Rotation, XOR) 구조로 이루어진 128비트의 블록 크기를 가지는 경량 블록 암호 알고리즘이다. 이 알고리즘은 안전도에 따라 128, 192, 256비트의 다양한 키를 사용할 수 있으며 키 길이에 따라 수행하는 라운드 수도 달라진다. 본 논문에서는 128비트의 비밀 키와 24라운드를 가지는 블록 암호 LEA-128을 수행한다는 것을 가정한다. 각 라운드 키 \(RK_r\)(0 ≤ r ≤ 23 )는 128비트의 비밀 키로 부터 유도되며 각 라운드에는 32비트로 이루어진 6개의 \(RK_r[i]\)( 0 ≤ i ≤ 5 )가 사용된다. LEA-128에서는 \(RK_r[1]\), \(RK_r[3]\) 그리고 \(RK_r[5]\)가 동일한 것이 특징이며 \(RK_r[i]\)를 알면 \(RK_{r+1}[i]\)를 유추할 수 있고 그 역도 성립한다.

암호화 과정에서 128비트의 평문은 32비트의 4개의 워드로 나누어 Addition, Rotation, XOR 연산을 수행한 후 다음 라운드의 입력 값이 되는 구조로 되어 있다. 다음 Fig. 1은 LEA-128 암호화 알고리즘의 첫 번째 라운드를 도시한 것이다.

Fig. 1. First round of LEA Encryption

LEA에 대한 부채널 공격은 2014년 Kim 등에 의해 처음 제시되었다[8]. 이 공격에서 공격자는 CPA(Correlation Power Analysis) 기법을 이용하여 한 라운드에 사용되는 서브 키의 두 쌍, 예를 들어 ( \(RK_r[0]\),\(RK_r[1]\)), \((RK_r[1],RK_r[2])\) 그리고 \((RK_r[1],RK_r[3])\)을 찾아내는 방법을 제안하였다. 즉, 입력과 출력을 알고 있다는 가정하에 첫 라운드의 \(RK_0[0]\)\(RK_0[1]\)을 추출하기 위해 \(X_0[0]\)\(X_1[0]\) 값의 해밍 거리(Hamming distance)를 계산하였다. 그리고 32비트의 키를 한번에 추측하는 것이 아니라 8비트씩 나누어 추측 키로 사용함으로써 비밀키 추출 연산을 감소시켰다. 실험 결과 50,000개의 전력 파형을 이용하여 두 바이트의 라운드 키 쌍을 찾을 수 있었고, 이를 확장하면 128비트의 비밀키를 모두 찾을 수 있음을 보였다.

또한, Park 등[9]은 LEA에 대한 1차 DPA 공격을 두 가지로 구분했는데 하나는 평문을 이용한 DPA 공격이고 다른 하나는 평문-암호문을 이용한 DPA 공격이다. 먼저, 평문만을 이용하는 DPA 공격에서는 XOR 연산이 이루어지는 곳과 모듈라 덧셈 연산이 이루어지는 곳에서 DPA 분석을 시도하였다. 이 논문에서도 서브 키 추출은 32비트 단위가 아닌 8비트씩 이루어진다. 그리고 평문-암호문을 이용한 DPA 공격은 마지막 라운드에서부터 공격을 수행하였다. 이 경우 출력된 암호문 C[0] 과 C[3] 을

사용하여 \(R)R_9(C[0])-(C[3]\oplus\) \(\widehat{k})\)연산을 수행하면 23번째 라운드의 서브 키 \(\widehat{k} = RK_{23}\) 을 찾아낼 수 있으며 역으로 첫 번째 라운드 키도 찾아 낼수 있다. 다음 Fig. 2는 Park 등이 제안한 평문만을 이용한 DPA 공격의 분석 지점을 나타낸 것이다.

Fig. 2. DPA on LEA using plain text 

Fig. 3은 평문-암호문을 이용한 공격 지점을 나타낸 것이다. 이 공격에 대한 실험 결과, 10,000개의 전력 파형을 이용하여 128비트의 비밀 키를 모두 찾을 수 있음을 보였다.

Fig. 3. DPA on LEA using plain text and cipher text

또한, Park 등은 마스킹 기법을 이용한 대응책이 이 DPA를 방어할 수 있음을 실험을 통해 확인하였다. 여기에서 부울 마스킹을 산술 마스킹으로 변환하는 부울-산술(Boolean-to-Arithmetic, BtoA) 변환 기법은 Goubin 알고리즘[11]을 사용하였으며, 산술-부울 변환은 Debraize 알고리즘[12]을 사용하였다.

III. 마스킹 기반의 부채널 공격 대응 기법

상기한 바와 같이 DPA 공격은 공격자가 특정한 비밀키 정보 중 일부를 가정한 상태에서, 암호 연산중 발생할 수 있는 중간 값을 추측함으로써 앞서 가정한 비밀 키가 맞거나 그렇지 않음을 결정하는 공격 이다. 따라서 암호 연산 시 발생하는 중간 값을 공격자가 추측할 수 없도록 블라인딩(blinding)하거나 마스킹 처리를 함으로써 이러한 부채널 공격을 방어할 수 있다.

특히, 블록 암호 시스템에 대한 DPA 공격을 방어하기 위해 중간 값들을 랜덤하게 만드는 마스킹 기법을 사용한다.

입력 데이터에 대한 마스킹은 다음과 같이 부울 마스킹과 산술 마스킹으로 나눌 수 있다.

- 부울 마스킹 : \(x' = x \oplus r\)

- 산술 마스킹 : A = x-r mod 2k

위에서 x는 마스킹이 적용되지 않은 원래의 값이 며, x′과 A 는 난수 r로 마스킹이 적용된 값을 의미 한다. 그리고 k는 처리되는 데이터의 크기를 의미한 다. 그러나 암호 알고리즘에 사용되는 연산이 부울 연산과 산술 연산을 번갈아 사용하는 경우가 많아 마스킹된 값을 상호 변환해 주는 과정이 필요하다. 즉, 암호화를 수행하는 과정에 산술-부울 변환 알고리즘과 부울-산술 변환 알고리즘을 통해 중간 값들의 마스킹 변환이 일어나야 한다.

그러나 마스킹 변환 과정에서 원 데이터 값 x가 노출되어서는 안 된다. 예를 들어, 산술 마스킹 되어 있는 x-r 값을 \(x \oplus r\) 로 바꾸기 위해서는 간단하게 \((x-r) + r \oplus r\) 식을 대입하면 된다. 하지만 이렇게 하면 +r 을 수행한 중간 값이 원래 x가 되어 이 시점에서 DPA 공격이 적용된다. 따라서 입력 데이터에 대한 마스킹이 상호 변환되는 중간 과정에서 공격 자에게 x값을 절대 노출되지 않도록 하는 것이 중요 하다.

3.1 부울-산술 마스킹 변환 기법

부울-산술 마스킹 변환 기법은 Messerges에 의해 처음 제안되었으나 취약성이 발견되었고[13], 그 후 Goubin에 의해 새로운 변환 기법[11]이 제안되었다. 부울-산술 마스킹 변환 기법에서는 부울 마스킹 된 값 x′과 마스킹에 사용되는 난수 r을 입력으로 받고, r로 산술 마스킹 된 A 값을 출력하게 된다. Goubin 기법은 연산량이 매우 적기 때문에 많은 암호 알고리듬에서 이 부울-산술 마스킹 변환 기법을 사용한다. 다음 Fig.4 는 Goubin의 부울-산술 마스킹 변환 알고리즘을 나타낸 것이다.

Fig. 4. Goubin's BtoA conversion algorithm

3.2 산술-부울 마스킹 변환 기법

3.2.1 Goubin 산술-부울 마스킹 변환 기법

산술-부울 마스킹 변환 기법은 원래 데이터를 노출하지 않고 산술 마스킹된 중간 값을 부울 마스킹된 값으로 변환하는 알고리즘이다. 다음 Fig. 5는 Goubin의 산술-부울 마스킹 변환 기법(이하 Goubin 기법)[11]을 나타낸 것으로 입력 값 A 는평문 x 와 난수 r을 산술 처리한 x-r 이고 출력 값 x′은 x ⊕ r 이다.

Fig. 5. Goubin's AtoB conversion algorithm

Goubin의 산술-부울 마스킹 변환 기법은 그림의 11단계에서 보는 바와 같이 데이터 비트 크기만큼 알고리즘이 반복하는 구조이기 때문에 연산량이 매우 많이 소요된다는 단점이 있다. 만약, m 비트의 데이터를 처리할 경우 (5m + 5) 번의 기본 연산(XOR, AND, shift)이 필요하다.

3.2.2 C-T 산술-부울 마스킹 변환 기법

Coron 등은 Goubin이 제안한 산술-부울 마스킹 변환 기법의 연산량 개선을 위해 룩업 테이블 (look-up table) 기반의 산술-부울 마스킹 변환 기법(이하 C-T 기법)[14]을 제안하였다. C-T 기법의 개념은 알고리즘에서 변환하는 데이터 단위를 k비트로 나누어 처리하는데 사전에 k비트의 산술 연산을 부울 연산으로 변환하는 G -테이블을 만들어 둔다. 또한, k비트 모듈라 덧셈 시 발생하는 캐리(carry)를 사전에 계산하여 C -테이블에 저장해 둔다.

그리고 실제 산술-부울 마스킹 과정에서는 입력값 A 와 마스킹 값 r을 k비트 단위로 나누어 처리한다. 다음 Fig. 6은 C-T 산술-부울 마스킹 변환 기법을 나타낸 것이다. 그림에서 보는 바와 같이 이 변환 기법에서는 2개의 사전 계산 값을 저장할 수 있는 G ,  C-테이블 2개가 필요하다.

Fig. 6. C-T's AtoB conversion algorithm

Fig. 7. Debraize's AtoB conversion algorithm

3.2.3 Debraize 산술-부울 마스킹 변환 기법

Debraize는 Goubin 기법과 Neiβe 등이 제안한 기법[15]의 안전성과 효율성에 대한 문제점을 지적하면서 T-테이블을 이용한 변환 기법을 제안하였다(이하 Debraize 기법)[12]. Debraize 기법에서는 메모리 참조 시 발생할 수 있는 누설 정보를 제거하기 위해 1비트의 랜덤 수를 이용하여 메모리 주소를 마스킹한다는 점이 특징이다. 이 기법에서는 \(2^{(k+1)}\)개의 사전 테이블 값을 저장할 메모리가 필요하며 메모리도 ( i + s )값을 저장할 ( k + 1 )비트 크기가 필요하다. 이러한 특징은 디바이스에서 지원하는 메모리 저장 단위 k가 8비트 혹은 32비트인 점을 고려하면 구현 효율성을 저하시키는 요인이 된다.

최근 Kim 등은 상기한 마스킹 기법을 사용하여 부채널 공격에 안전한 LEA-128 알고리즘을 구현하 였다[16]. 여러 AtoB 마스킹 변환 기법을 32비트 ARM 프로세서를 사용하는 스마트 카드에서 구현한 결과, 위의 마스킹 변환 방법 중 k = 8일 경우의 C-T 기법이 가장 빠른 속도를 나타내었으며 대응 기법이 없는 경우에 비해 7.77배의 암호 속도를 나타내었다. 이 외에도 Park 등은 Debraize 산술-부울 변환 기법을 사용하여 LEA-128을 구현한 결과 [9], 대응 기법이 없는 경우에 비해 17.74배의 연산 시간이 소요됨을 확인하였다.

IV. 제안하는 마스킹 변환 기법

본 논문에서는 부채널 공격에 대응할 수 있는 안전한 LEA 알고리즘 구현을 위한 효율적인 마스킹 기법을 제안하고자 한다. 논문에서는 지금까지의 마스킹 변환 기법을 분석하면서 다음과 같은 점에 기초 하여 산술-부울 마스킹 변환 기법을 설계하였다.

첫째, LEA 암호 알고리즘이 DPA 공격에 강인 하기 위해서는 각 라운드의 워드마다 랜덤한 값으로 마스킹되어야 하며 각 라운드가 끝나는 워드 값도 매번 다른 값으로 마스킹을 하는 것이 효과적이다. 예를 들어 2차 DPA 공격에도 강인하기 위해서는 \(X_r[0]\)값의 마스킹 값이나\(X_{r+1}[0]\)의 마스킹 값은 서로 다른 값이 사용되어야 한다. 특히, 계산 중간 값들은 마스킹이 제거된 원래 값이 절대 사용되지 않도록 해야 한다.

둘째, 구현의 효율성 측면에서 사전 계산된 테이블 값을 저장하는 메모리도 최소화 하는 것이 좋으며 불가피하게 사용하더라도 데이터가 저장되는 크기는 정보 처리 단위에 맞추도록 하는 것이 효과적이다.

셋째, 구현 속도 측면에서 볼 때 마스킹 기법의 적용으로 인해 암호화 속도가 큰 부담이 되는 것을 고려하여 수행시간을 최소화 시키는 방향으로 알고리즘을 설계하여야 한다. 이를 위해서는 변환 알고리즘 내의 반복문의 횟수를 줄이거나 반복문내의 처리 과정을 간소화하는 것이 필요하다.

4.1 LEA 알고리즘에 대한 마스킹 적용

LEA에 대한 마스킹을 적용하기 위해 암호화 구조를 분석해보면 LEA의 한 라운드는 크게 세 부분으로 나눌 수 있으며 한 부분은 두 번의 XOR 연산, 한 번의 모듈라 덧셈 그리고 한 번의 Rotation 연산으로 구성되어 있다. 그러므로 처음 부울 마스킹된두 값이 모듈라 덧셈을 수행하기 위해서는 각각 부울 -산술 마스킹 변환 연산이 필요하다. 역으로 다음 라운드 입력은 부울 연산인 XOR부터 수행하므로 산술-부울 마스킹 변환 연산이 필요하다. 이 과정에서 원문 데이터는 랜덤하게 마스킹되어야 하며 그 정보가 중간에 노출되어서는 안 된다. 다음 Fig. 8은 LEA 암호화에 적용되는 일반적인 마스킹 과정을 도시한 것이다.

Fig. 8. General masking method on LEA

따라서 부울-산술 마스킹 변환에 사용되는 입력 마스킹 값은 메시지 마스킹 값 Mi 와 라운드 키 마스킹 값 Kj 를 XOR한 값(예, \(r = K_0 \oplus M_0 , r = K_1 \oplus M_1\) )이 된다. 그리고 두 번의 부울-산술 마스킹 변환 출력은 산술 마스킹이 적용된 상태이고 이 두 마스킹 값을 더한 값(예, \(r = K_1 \oplus M_1 , K_0 \oplus M_0\) )이 산술-부울 마스킹 변환 알고리즘의 새로운 입력으로 사용된다.

다음 Fig. 9는 본 논문에서 제안하는 LEA 암호화를 위한 마스킹 과정을 나타낸 것이다.

Fig. 9. LEA encryption applied with proposed masking method

산술-부울 마스킹 변환 출력은 다음 라운드에 사용될 부울 마스킹이 적용된 값이 출력되어야 하는데 이후에 수행될 \(ROL_9\) 함수를 고려하여 미리 오른쪽 혹은 왼쪽으로 Rotation된 값(예, t = (M≫ 9) , t = (M5 ≪ 5) )을 부울 마스킹 출력이 되도록 설계하는 것이 효과적이다.

4.2 산술-부울 마스킹 변환 알고리즘

본 논문에서 제안한 LEA에 대한 마스킹 기법을 구현하기 위해서는 부울-산술 마스킹 변환 기법과 산술-부울 마스킹 변환 기법이 필요하다. 일반적으로 부울-산술 마스킹 변환 기법은 Goubin의 방법이 속도와 구현 효율성면에서 우수하므로 그대로 적용할 수 있다. 그러나 산술-부울 마스킹 변환 기법은 안전성과 효율성면에서 취약한 점들이 발견되어 개선의 여지가 있다.

본 논문에서는 LEA에 적용할 효과적인 산술-부울 마스킹 변환 알고리즘을 제안하고자 한다. 특히, 사전 계산된 테이블을 이용하는 경우 테이블의 크기와 메모리의 양이 중요하다. 일반적으로 각 테이블 저장하는 메모리의 크기는 마스킹 변환이 일어나는 최소 단위인 k에 의해 결정된다. 여기서 k는 보통 4, 8 혹은 16과 같이 데이터 처리 단위를 주로 사용한다. 다음 Fig. 10은 본 논문에서 제안하는 산술-부울 마스킹 변환 알고리즘을 도시한 것이다.

Fig. 10. Proposed AtoB conversion algorithm

제안하는 산술-부울 마스킹 변환 알고리즘에서의 입력은 r값으로 산술 마스킹된 A 값이며, 출력 값은 t 값으로 부울 마스킹된 x′값이 된다. 제안하는 변환 알고리즘을 LEA 암호화에 직접 적용할 경우, 첫 번째 r은 \( K_1 \oplus M_1 , K_0 \oplus M_0\)  이 되고 t는 ( M4 ≫ 9 ) 값이 된다. 제안 기법에서는 사용하는 사전 계산 테이블을 줄이기 위해 C-T 방식에서 사용하던 C-테이블을 만들지 않고 G-테이블 하나만 생성하였다. 그 이유는 마스킹 변환 시 필요한 랜덤수 덧셈 과정에서 발생하는 캐리를 미리 룩업 테이블에 저장하지 않고 그림의 단계 3.3에서 보는 바와 같이 알고리즘에서 캐리를 바로 더하는 연산으로 처리하였다.

이렇게 설계함으로써 기존 C-T 기법이나 Debraize 기법에서 캐리 처리에 필요한 사전 계산 과정을 생략할 수 있어 테이블 저장에 필요한 메모리를 거의 절반 수준으로 줄일 수 있다. 여기서 중요한 것은 랜덤 수 s 의 크기이다. 랜덤 수 s 가 크면 테이 블이 늘어나게 되고 이는 메모리 공간이 많이 필요하게 된다. 예를 들어 k = 8인 경우, 제안 알고리즘에서는 \(2^k = 256\)개의 바이트 정보를 저장할 수 있는 메모리만 필요하게 된다.

산술-부울 마스킹 변환 기법의 처리 속도를 빠르게 하기 위해서는 단계 3에서의 반복문 처리가 중요 하다. 변환하고자 하는 워드의 길이가 \(m = n \cdot k\) 인 경우 n번의 반복문을 수행하게 된다. 예를 들어 m =32인 경우, k = 8  그리고 m = 4 인 구조를 가정할 수 있다. 제안 알고리즘에서는 반복문내에서 이루어지는 바이트 단위 연산을 반복문 바깥에서 워드 단위로 처리하게 함으로써 반복 처리량을 줄이도록 하였다. 한편, Debraize 변환 알고리즘에서는 산술 마스킹 값 r을 제거하거나 부울 마스킹 과정을 단계 3의 반복문에서 처리하게 구성하였는데 이러한 점들이 속도를 저하시키는 요인이 된다. 따라서 제안 기법에서는 Fig. 10의 단계 1, 2, 6, 7을 반복문 내에서 바이트 단위로 처리할 수도 있지만 반복문 외부에서 워드 단위로 처리하여 연산 시간을 줄이도록 설계하였다. 중요한 점은 이렇게 알고리즘을 설계하여도 원래 데이터 x는 노출되지 않아야 한다는 것이다. 그러나 변환 과정에서 G -테이블 데이터를 읽어 오거나 랜덤 수 s 를 더할 때 발생하는 캐리 처리는 바이트 단위로 이루어지는 연산이라 단계 3에서 반복문을 이용하여 처리하였다.

4.3 구현 결과 및 비교 분석

기존 마스킹 기법들과 제안하는 마스킹 기법을 PC 상에서 구현하여 제안 기법이 얼마나 효율적인지 검증한다. 동작 시간은 테이블을 생성에 필요한 사전 연산 시간은 제외하고 측정하였다. 마스킹 기법 구현에 사용된 PC 제원 사항은 다음과 같다.

- 운영체제 : Windows 7 Enterprise K

- CPU : Intel(R) Core(TM)2 Duo CPU - RAM : 3GB 

- 개발도구 : Visual Studio 2015

- 개발언어 : C언어

다음 Table 1과 Table 2는 k = 4 일 때와 k = 8 일 때 산술-부울 마스킹 변환 기법들을 적용할 때 사전 계산 값 저장에 필요한 메모리 양과 LEA-128의 암호화 동작 시간을 나타낸 것이다.

Table 1. Computational time and memory for a masked LEA-128 ( k = 4 )

Table 2. Computational time and memory for a masked LEA-128 ( k = 8 )

각 Table에서 첫 번째 행은 마스킹이 적용되지 않은 LEA-128의 동작 시간과 각 마스킹을 적용한 LEA-128의 동작 시간을 나타낸 것이고, 두 번째 행은 마스킹이 적용되지 않은 동작 시간을 1로 두었을 때 각 마스킹이 적용된 LEA-128의 동작 시간 증가 비율을 나타낸 것이다. 세 번째 행은 사전 연산에서 룩업 테이블 생성에 필요한 메모리 양을 나타낸 것이다. Goubin 마스킹 기법은 처리되는 비트 크기 만큼 반복되는 구조이기 때문에 약 40배 정도의 많은 연산이 필요하다. 룩업 테이블 기반의 마스킹 변환 기법들은 메모리가 필요하다는 단점이 있지만 속도가 빨라지는 것을 확인할 수 있다.

연산 속도 측면에서 제안하는 마스킹 변환 기법을 적용하면 마스킹이 적용되지 않은 기본 LEA-128과 비교하여 k = 8의 환경에서 약 16배의 정도의 시간이 더 소요되었다. 개발 환경은 다르지만 Kim 등이 구현한 결과에서는k = 8일 경우의 C-T 기법이 가장 빠른 알고리즘으로 평가되었다. 그럼에도 제안 방식은 같은 조건의 C-T 기법에 비해 17%정도 속도가 향상됨을 확인할 수 있었다. 메모리 사용 측면에서도 C-T 기법과 Debraize 기법이 512바이트 정도의 메모리가 필요한 반면, 제안하는 마스킹 변환 기법에서는 절반인 256바이트의 메모리만 필요하므로 보다 효율적으로 구현할 수 있음을 알 수 있다.

V. 결론

본 논문에서는 블록 암호 알고리즘에 대한 부채널 공격 대응책으로 사용되는 마스킹 기법의 적용 방안을 연구하였다. 특히, 경량 블록 암호 알고리즘으로 알려진 LEA에 효율적으로 적용할 수 있는 마스킹 구조와 산술-부울 마스킹 변환 기법을 제안하였다. 특히, 마스킹 변환 기법을 적용하면 많은 메모리가 추가되어야 하고 수행 속도가 크게 저하된다는 점을 고려하여 메모리 사용량과 연산 속도 측면에서 효율 적인 변환 기법을 설계하였다.

제안하는 산술-부울 마스킹 변환 기법을 LEA-128 암호 알고리즘에 적용하여 구현한 결과, 현재까지 가장 빠른 기법으로 알려진 C-T 기법에 비해 사용 메모리는 절반으로 줄일 수 있었으며 수행 속도는 약 17%정도 개선되었다. 따라서 제안하는 마스킹 변환 기법은 암호 연산 중간 값에 대한 노출 가능성을 제거함으로써 부채널 공격에 안전한 LEA 알고리듬을 구현하는데 효과적으로 사용할 수 있다.

* 이 논문은 2017년도 호서대학교의 재원으로 학술연구비 지원을 받아 수행된 연구임.(2017-0057)

* 본 논문은 2017년 하계학술대회에서 발표한 우수 논문을 개선 및 확장한 것임.

References

  1. P. Kocher, "Timing Attacks on Implementation of Diffie-Hellman, RSA, DSS, and Other Systems," CRYPTO'96, LNCS 1109, pp. 104-113, 1996.
  2. J. Coron, "Resistance against differential power analysis for elliptic curve cryptosystems," CHES'99, LNCS 1717, pp. 292-302, 1999.
  3. T. Messerges, E. Dabbis, and R. Sloan, "Power analysis attacks of modular exponentiation in smartcard," CHES'99, LNCS 1717, pp. 144-157, 1999.
  4. National Institute of Standards and Technology, "Advanced Encryption Standards," NIST FIPS PUB 197, 2001.
  5. R. Rivest, A Shamir, and L, Adelman, "A method for obtaining digital signature and public-key cryptosystems," Comm. of the ACM 21, pp. 120-126, 1978. https://doi.org/10.1145/359340.359342
  6. D. Hong, J. Lee, D. Kim, D. Kwon, K. Ryu, and D. Lee, "LEA, A 128-bit block cipher for fast encryption on common processors," WISA'13, LNCS 8267, pp. 3-27, 2014.
  7. TTA, "128-bit lightweight block cipher LEA," TTAK.KO-12.0223, Dec, 2013.
  8. Y. Kim and H. Yoon, "First Experimental Result of Power Analysis Attacks on a FPGA Implementation of LEA," IACR Cryptology ePrint Archive, 2014:999, Available at https://eprint.iacr.org/2014/999.pdf
  9. J. Park, T. Kim, H. An, Y. Won, and D. Han, "Side channel attacks on LEA and its countermeasures," Journal of The Korea Institute of Information Security & Cryptology(JKIISC), Vol. 25, No. 2, pp. 449-456, 2015. https://doi.org/10.13089/JKIISC.2015.25.2.449
  10. M. Park, and J. Kim, "Differential Fault Analysis of the Block Cipher LEA", Journal of The Korea Institute of Information Security & Cryptology (JKIISC), Vol. 24 No. 6, pp. 1117-1126, 2014. https://doi.org/10.13089/JKIISC.2014.24.6.1117
  11. L. Goubin, "A sound method for switching between Boolean and arithmetic masking," CHES'01, LNCS 2162, pp. 3-15, 2001.
  12. B. Debraize, "Efficient and provably secure methods for switching from arithmetic to Boolean masking," CHES'12, LNCS 7428, pp. 107-121, 2012.
  13. T. Messerges, "Securing the AES finalists against power analysis attacks," FSE'00, LNCS 1978, pp.150-164, 2001.
  14. J. Coron and A. Tchulkine, "A new algorithm for switching from arithmetic to Boolean Masking," CHES'03, LNCS 2779, pp. 89-97, 2003.
  15. O. NeiBe and J. Pulkus, "Switching blinding with a view towards idea," CHES'04, LNCS 3156, pp. 230-239, 2004.
  16. C. Kim, J. Park, D, Han, and D. Lee, "Investigation of masking based side channel countermeasures for LEA", Journal of The Korea Institute of Information Security & Cryptology (JKIISC), Vol. 26 No. 6, pp. 1431-1441, 2014. https://doi.org/10.13089/JKIISC.2016.26.6.1431