DOI QR코드

DOI QR Code

A New Type of Differential Fault Analysis on DES Algorithm

DES 알고리즘에 대한 새로운 차분오류주입공격 방법

  • So, Hyun-Dong (Graduate School of Information Management & Security, Korea University) ;
  • Kim, Sung-Kyoung (Graduate School of Information Management & Security, Korea University) ;
  • Hong, Seok-Hie (Graduate School of Information Management & Security, Korea University) ;
  • Kang, Eun-Sook (Department of Information & Mathematics, Korea University)
  • 소현동 (고려대학교 정보경영공학전문대학원) ;
  • 김성경 (고려대학교 정보경영공학전문대학원) ;
  • 홍석희 (고려대학교 정보경영공학전문대학원) ;
  • 강은숙 (고려대학교 정보수학과)
  • Received : 2010.07.21
  • Accepted : 2010.09.29
  • Published : 2010.12.31

Abstract

Differential Fault Analysis (DFA) is widely known for one of the most efficient method analyzing block cipher. In this paper, we propose a new type of DFA on DES (Data Encryption Standard). DFA on DES was first introduced by Biham and Shamir, then Rivain recently introduced DFA on DES middle rounds (9-12 round). However previous attacks on DES can only be applied to the encryption process. Meanwhile, we first propose the DFA on DES key-schedule. In this paper, we proposed a more efficient DFA on DES key schedule with random fault. The proposed DFA method retrieves the key using a more practical fault model and requires fewer faults than the previous DFA on DES.

차분오류주입공격(Differential Fault Analysis, DFA)은 블록 암호를 분석하는 가장 효과적인 부채널 공격(Side-Channel Attacks, SCAs) 방법 중 하나로 알려져 있다. 본 논문에서는 DES (Data Encryption Standard)에 대한 새로운 DFA 방법에 대하여 제안한다. DES에 대한 DFA 방법은 Biham과 Shamir에 의하여 처음으로 제안된 이후, 2009년 Rivain에 의하여 DES의 중간 라운드 (9~12 라운드)에 대한 DFA 방법에 이르기 까지 많은 DFA 방법이 소개되었다. 하지만 기존의 DES에 대한 DFA 방법은 암호화 (또는 복호화)과정에 오류를 주입하는 공격방법임에 비해 본 논문에서 제안하는 DES에 대한 DFA 방법은 DES의 키 생성과정에 오류를 주입하여 분석하는 방법을 처음으로 제안한다. 제안하는 DFA 방법은 기존의 방법들에서 사용하는 오류 모델을 포괄하는 오류 모델을 사용하고 더 척은 오류의 개수로 공격이 가능하다.

Keywords

Ⅰ. 서론

근래 암호 알고리즘에 대한 분석은 암호 알고리즘에 기반이 되는 수학적 이론에 의한 직접적인 분석 방법뿐만 아니라 알고리즘의 실행에서 얻을 수 있는 부 채널 정보를 이용한 부채널 분석 (Side Channel Attacks, SCAs)방법 또한 널리 연구되고 있다. 1996년 SCAs의 개념이 소개된 이후〔1〕, 내장형 장치 (embedded device)의 암호알고리즘의 실행에서 얻을 수 있는 시간 차, 소비전력, 전파 방사량 등의 정보를 이용하여 여러 SCAs 방법이 제안되고 있다. SCAs는 크게 수동적인 분석 (Passive SCAs) 방법과 능동적인 분석 (Active SCAs)방법의 두 가지 범주로 나눌 수'있다. 수동적인 분석 방법으로 시간차공격 (Timing Attack, TA)[1), 단순전력분석 (Simple Power Analysis, SPA), 차분전력분석 ①ifferential Power Analysis. DPA)[2], 전자파 분석 (Electromagnetic Analysis, EMA)〔3〕 등이 있고, 능동적인 분석 방법으로 오류주입공격 (Fault Analysis, FA)(〔4〕, 〔5〕)과 차분 오류 주입 공격 (Differential Fault Analysis, DFA)(6] 이 있다.

FA를 이용한 첫 번째 분석은 1997년 Boneh 등에 의해 CRT-RSA (Chinese Remaider Theorem0!] 기반한 RSA) 서명 스킴과 Rabin 서명 스킴에 오류를 주입하여 비밀 정보를 얻는 방법으로 제안되었다〔4〕. 이후, FA 방법을 대칭키 암호 알고리즘에 적용한 DFA 방법이 Biham과 Shamir에 의해 처음 소개 되었다〔6〕. 대칭키 알고리즘의 DFA 방법은 FA 방법과 차분공격법 (Differential Cryptanalysis, DC)을 적용하여 공격하는 방법으로, 블록암호 알고리즘 또는 스트림암호 알고리즘의 데이터 흐름에서 특정한 부분에 오류를 주입하여 얻은 옳은 암호문과 오류를 주입한 암호문의 차분을 이용하여 비밀키를 얻는 방법이다(〔7〕.〔8〕, [9], 〔10〕).

가장 널리 .쓰이는 블록 암호 중 하나인 DES에 대한 DFA 방법은 Biham 등에 의하여 처음 제안되었고, 2004년 Akkar에 의해 차분공격법을 이용하여 개선된 DFA 방법이 제안되었다〔11〕. 2009년 Akkar의 방법을 일반화하고 확장하여 , Rivaine 중간라운드 (9-12라운드)의 왼쪽 입력 값에 오류를 주입하여 비밀키를 얻는 DFA 방법을 제안하였다. 이로서 암호화 과정과 복호화 과정에 적용하여 DES의 모든 라운드에 DFA 방법을 적용할 수 있게 되었다. 하지만 현재까지 제안된 DES에 대한 DFA는 오직 DES의 암호화 과정 (또는 복호화 과정)의 특정한 라운드의 입력 값에 오류를 발생시켜 비밀키를 얻는 방법만이 고려되었다. 반면 AES의 경우, Giraud에 의해 AES의 암호화 과정이 아닌 AES 키 생성과정에 오류를 주입하여 비밀키를 찾는 DFA 방법〔13〕이 처음 제안된 이후, AES의 키 생성과정에 오류를 주입하여 DFA 방법을 적용한 여러 분석 방법이 제안되었다(〔14〕, (15), 〔16〕).

본 논문은 DES의 마지막 세 라운드 (14, 15, 16 라운드)의 키 생성과정에 오류를 주입하여 DES의 비밀키를 복구하는 DFA 방법을 제안한다. AES의 키 생성과정은 Permutation 과정이 없으므로 하나의 워드에 오류가 발생하면 ZL 오류가 다른 워드에 확산되지 않아 분석이 쉬운 반면. DES의 키 생성과정의 경우 하위 라운드 키에 오류가 발생하면. Permutation 과정을 거쳐 상위 라운드 키의 여러 워드에 오류의 영향을 받아 분석이 어렵다. 또한, 처음으로 오류가 발생한 라운드의 데이터는 상위 라운드를 거치면서 또 다른 오류와 데이터 암호화 과정에 영향을 받아 여러 개의 오류를 주입하는 효과가 나타난다. 따라서 본 논문에서 제안하는 DFA 방법에서 주입된 오류는 각 라운드에 중첩적으로 발생하여 기존의 DES에 대한 DFA 방법의 오류 모델에 비하여 오류의 확산을 분석하기 어렵다.

본 논문에서 제안하는 DFA 방법은 기존의 DES 암호화 과정에 대한 DFA가 1-비트 또는 1-바이트 랜덤 오류 모델을 이용하여 분석하는 것과는 달리, DES의 키 생성과정의 1-비트 또는 1-바이트 랜덤 오류 모델을 포함하는 28-비트 레지스터에 랜덤 오류 모델을 이용하여 분석한다. 그러므로 제안하는 DFA 방법은 키 생성과정에 제약이 적은 오류를 주입하여 DFA 방법을 적용할 수 있고’ 그 결과 기존에 제안된 DES에 대한 DFA 방법에 비하여 적은 개수의 오류를 이용한 DFA 방법을 적용하여 비밀키를 찾아 낼 수 있다.

본 논문의 구성은 다음과 같다. 2절에서는 DES 블록 암호 알고리즘과 기존의 연구에 대해 설명하고 3절에서는 오류주입 가정과 제안하는 DES의 키 생성과정에 대한 DFA 방법을 설명한다. 그리고 4절에서는 제안하는 방법에 대한 실험결과를 제시하고 마지막으로 5절에서 결론을 내린다.

Ⅱ. DES 블록 알고리즘과 기존의 차분 오류 주입 공격

본 장에서는 본 논문에서 사용하는 표기법을 정리하고 DES 블록 알고리즘 (Data Encryption Standard)고} 지금까지 제안된 DEB에 대한 차분 오류 주입 공격 (DFA)방법에 대해 설명한다.

2.1 표기법

A[n]- 데이터 4의 n번째 비트

湖 : /의 n번째 비트에서 加번째 비트의 (m-n+1)-비트

AW- S와 0의 배타적 논리합 (XOR) P, a 평문, 옳은 암호문 (각 64-비트) K: 비밀키 (64-비트)

RKt'- S번째 라운드 키

regf. /번째 라운드 키 생성과정의 Compression Permutation의 좌측 입력 값 레지스터

regf '■ 〃번째 라운드 키 생성과정의 Compression Permutation의 우측 입력 값 레지스터

§ (以): r以赤妒)에 오류가 주입된 암호문

4(4): 浬째 라운드의 좌측 (우측) 32-비트 옳은 출력 값

中旳: 오류가주입된 痺째 라운드의 좌측 (우측) 32-비트 출력 값

2.2 DES 블록 알고리즘 설명

DES는 1976년 미국 NBS (National Bureau of Standards, 현재 NIST)에서 데이터의 암호를 위하여 미국 암호표준으로 정한 블록암호 알고리즘이다〔17〕. DES는 64-비트 블록크기와 패리티 체크 비트 8비트를 포함하는 64-비트 키 길이를 가지고. F~ 함수를 포함하는 16라운드의 일반적인 Feistel 네트워크 (Generalized Feistel Network, GFN) 구조이다. 입력 값 64-비트의 P는 Initial Permutation (IP)과정을 거쳐 2개의 32-비트 블록 么과 R[ 로 나눠져, 16라운드 암호화 과정을 거친 후 Final Permutation (丑宀)과정을 거쳐 64-비트 C을 출력한다.

2.2.1 함수

户함수는 우측 32-비트 입력 값 (■%_])과 48■비트 라운드 키를 입력 받고, 32T키트를 출력한다.[그림 1 (A)〕는 R함수를 나타낸 것이며 . F-함수는 Expansion Permutation (EP)고].정 . 라운드 키 XOR 연산 (Add round-key)과정 , S-box (SI.....S8) 연산과정, Straight Permutation (SP)과정의 4개의 과정으로 이루어진다.

(그림 1] (A)F-함수와 (B)라운드 키 생성과정

2.2.2 라운드 키 생성 (Round-key Scheduling)과정

DES의 비밀키는 56-비트 키와 패리티 체크 비트 8-비트를 포함하여 64-비트이다. DES의 라운드 키생성과정은 [그림 1 (B)〕와 같고, 56-비트의 비밀키를 이용하여 16개의 48-비트 라운드 키를 생성한다. 라운드 키 생성과정은 아래와 같이 크게 3단계로 구성된다.

단계 1. 패리티 드롭 (Parity drop)과정

비밀키 64-비트에서 8-비트 패리티 비트를 제외한 56-비트 암호하 키(Cipher keyX 생성하는 과정.

단계 2. Left circular- shift 과정

좌측 레지스터 (reg:)와 우측 레지스터 (regf)에 일시적으로 저장된 28-비트를 2비트 (1, 2, 9, 16라운드는 1비트) Left circular-shift 연산하는 과정’

단계 3. Compression Permutation 과정

56-비트 입력 값을 치환하여 48-비트 출력 값으로 출력하는 과정.

2.3 DES에 대한 기존 DFA 방법

DES에 대한 DFA 방법은 1997년 Biham과 Shamir에 의해 처음 제안되었다〔6〕. Biham 등은 13라운드 - 16라운드의 왼쪽 입력 값에 오류를 발생 시켜 얻은 암호문의 차분에 대하여 차분공격법을 적용하여 비밀키를 찾아내었다. 이때, 약 10개의 1-비트 오류를 사용■하여 16라운드 키를 찾고 비밀키의 남은 8-비트를 전수조사 (Exhaustive search)하여 비밀키를 획득하는 방법을 사용하였다. 이후 Akkare 차분 공격법을 DFA에 적용하여 Biham의 DFA 방법을 일반화하였으며, Rivaine 구별자 (Distinguisher) 개념을 이용하여 중간라운드 (9라운드~12라운드)에 대한 DFA 방법을 제안하였다〔12〕. 특히 Rivaine 1■비트 또는 1-바이트 오류를 주입하고 공격자의 오류의 인지 정도에 따라 구별자를 선택하여 DES에 대한 DFA공격의 성공확률을 높이는 방법을 사용하였다. 이로서 DES에 대한 DFA 방법을 암호화와 복호화 과정에 적용하여 모든 라운드에서 DFA 가 가능하게 되었다.

하지만 현재까지 제안된 DES에 대한 DFA 방법은 암호화 과정에서 오류를 주입하는 방법으로 제안되었고, DES의 키 생성과정에 대한 DFA 방법은 존재하지 않는다. 본 논문에서는 DES의 키 생성과정에 오류를 주입하는 DFA 방법에 대하여 제안한다’

Ⅲ. 제안하는 차분오류주입공격

본 장에서는 제안하는 DES의 키 생성과정에 대한 DFA 방법의 오류주입 모델에 대한 정의와 공격 방법에 대하여 설명한다. 14라운드와 15라운드에서의 공격 방법과는 달리 , 오류확산에 대한 분석이 필요 없는 16라운드 공격 방법은 (Appendix 1]에서 따로 설명한다.

3.1 오류주입 모델

본 절에서는 본 논문에서 제안하는 라운드 키 생성과정에 대한 DFA 방법에서 고려하는 오류주입 모델에 대하여 설명한다. 제안하는 DFA 방법은 공격자가 고정된 /에 대하여 옳은 C를 얻을 수 있고, regf (또는 regf , j=14, 15)에 랜덤 오류를 주입하여 此 (또는 <%)을 얻을 수 있다고 가정한다. 본 논문에서 가정하는 오류주입에 대한 표현은〔Definition 1〕과 같이 정의한다.

Definition 1. (Random bit Fault Notation) x를 오류가 주입될 28-비트 레지스터라고 하면, 오류가 주입된 是는 X* 라고 표현하고 다음과 같이 정의된다.

#(1)

이때. #는 공격자가 모르는 값이고 #을 만족한다.

공격자는 주입한 랜덤 오류의 값을 모르고 주입된 오류가 암호화 과정에서 어떻게 영향을 미치는지 알 수 없지만, 오류를 주입할 위치를 선택하여 주입할 수 있다고 가정한다. 즉. 공격자는 (reg幻 . ve此 , 冲命 . 脾朮 ) 중 하나의 레지스터에 랜덤 오류를 주입하여 대응하는 암호문 쌍을 얻을 수 있다.

지금까지 제안된 DES에 대한 DFA 방법에서의 오류주입 모델은 32■비트 암호화 (또는 복호화) 연산의 한 시점에 1-비트 또는 1-바이트 랜덤 오류가 주입되는 것으로 가정하고 있다. 이때 1-비트 랜덤 오류주입 모델은 타겟 32-비트의 임의의 비트 값이 0이면 1로 변화되고, 1이면 0으로 변화되는 오류주입 모델이다. 즉, 타겟이 되는 32-비트에서 정확히 1-비트만이 원래의 값과 다른 값으로 바뀌고 그 값이 여러 라운드를 거치면서 다른 암호문으로 출력된다. 비슷한 방법으로 1-바이트 랜덤 오류모델은 心의 임의의 1-바이트를 다른 값으로 변화되는 오류주입 모델이다. 따라서 1-바이트 랜덤 오류모델을 이용한 DFA 방법은 1-비트 랜덤 오류모델을 이용한 DFA 방법을 포함하는 더 일반적인 랜덤 오류주입 모델이다.

하지만 본 논문에서 제안하는 오류주입 모델은 마지막 3 라운드 (14, 15, 16라운드)에 대한 키 생성과정의 28-비트 레지스터에서의 랜덤 오류를 고려한다. 하드웨어 실행 관점에서 28-비트 레지스터 랜덤 오류주입 모델은 DES의 키 생성과정에서 저장된 레지스터에 임의의 오류를 주입하여 실제적으로 공격 가능하다. 이는 기존의 1-비트 랜덤 오류와 1-바이트 (8-비트) 랜덤 오류주입 모델을 포함하여 기존의 오류주입모델에 비하여 더 일반적인 오류주입 모델이다n 따라서 제안하는 오류주입 모델은 이전 오류주입 모델에, 비하여 더 실제적인 방법으로 오류를 주입하여 비밀키를 얻을 수 있다.

3.2 키 생성과정에 주입한 오류의 확산 분석

본 논문에서 제안하는 DES의 키 생성과정에 대한 DFA 방법을 설명하기 전에 제안하는 오류주입 모델에 따른 오류가 암호화 과정에서 확산되는 성질을 본 절에서 분석한다.

다음에 제시하는 [Fact 1〕과 (Fact 2〕는 공격자가 옳은 암호문과 오류가 주입된 암호문을 얻었을 때.

16라운드의 특정 S-box에 대한 입력 차분을 알 수 있음을 보여준다.

Fact 1.〔표 1〕은 CP의 입력 값과 출력 값의 관계를 나타낸다. C?이 입력 값을 28-비트로 나누었을 때, 28-비트 데이터는 각각 독립적으로 치환된다. 따라서 오류가 reg? (또는 regf, »=14, 15)에 주입되면, 时;(j = 4 + l, ..., 16)의 72妇 1:24] (또는 7간 車 25:4잉)에만 오류가 주입된다.

(표 1) 키 생성과정의 테이블

Fact 2. 約 0 = 1, ..., 8)를 각각 16라운드의 7번째 S-box 에 대응하는 옳은 입력 값이라 하고, 药«=1, ..”8)를 reg;(j= 14, 15)에 오류가 발생하여 얻은 S-box 의 입력 값이라 하면, 공격자는 3:推药, ”., 电®T;를 알 수 있다.

유사하게 气*(?: = 1, ..., 8)가 re妒(顶 =14, 15)에 오류가 발생하여 얻은 입력 값이면, 공격자는 #를 알 수 있다.

15라운드 키 생성과정에서 오류가 발생하면, [그림 2〕와 같이 16라운드 F-함수의 출력 값에 대한 차분 如知添을 알 수 있다. 반면 14라운드 키 생성과정에서 오류가 발생하면.[그림 3〕과 같이 16라운드 F-함수의 출력 값에 대한 차분은 #이고, 공격자가 알 수 없는 값이다. 다음에 제시하는〔Fact 3〕과 [Proposition 1〕은 知M話斗推球의 일부 비트 값을 알 수 있음을 보여준다.

(그림 2) 15라운드의 오류확산

(그림 3) 14라운드의 오류확산

Fact 3. re拓에 오류가 발생하면, 14라운드 키의 왼쪽 24-비트에 오류가 주입된다.[그림 3〕 과같이 오류는 14라운드의 Sl-box, .... S4-box에 의해 庄꽈정 입력 값의 1-비트~16-비트에 영향을 미친다. 그 결과 5写과정을 거치면, 〔표 2〕와 같이 16비트에 오류가 발생한다. 따라서 F-함수의 출력 차분은 #와 같고 里q*=o 이다. 단, n = 3, 4, 5, 7, 8, 11, 12, 14, 15, 19, 21, 22, 25, 27, 29, 32이 다 . 같은방법으로re弗에 오류가발생하면 曲3 同 = °이다. 단, n=l, 2, 6, 9, 10, 13, 16, 17, 18, 20, 23, 24, 26, 28, 30, 31 애斗.

(표 2) 14라운드 F-함수의 SP 테이블 오류 확산 (@ : 오류 발생 비트)

Proposition 1. re死(또는 冲苦)에 오류가 주입되면, 공격자는 16라운드 F-함수의 S5-box....... S8-box(또는 Sl-box S4-box)에 대한 출력 차분 값을 알 수 있다.

증명. re 死에 오류가 주입되었다고 가정하면, [Fact 3〕에 의하여 &仮 =心5$说의 &15浦에 오류가 주입될 수 있다. 단, n = l, 2, 6, 9, 10, 13, 16, 17, 18, 20, 23, 24, 26, 28, 30, 31 이다. 따라서 16라운드 F-함수의 출력 차분 #는 다음을 만족한다.

#(2)

n = 3, 4, 5, 7, 8, 11, 12, 14, 15, 19, 21, 22, 25, 27, 이 때 ,

29, 32이다.

그러므로 必-1(厶6$瓦1)를 이용하여 S5-box, .... S8-box의 출력 값을 얻을 수 있고, 동일한 방법으로 re就에 오류가 주입되었을 경우 Sl-box, …, S4-box의 출력 값을 얻을 수 있다.

3.3 일반적인 DES 키 생성과정에 대한 DFA 방법

〔3.2〕에서 키 생성과정의 오류가 발생한 레지스터의 위치에 따른 오류의 확산을 살펴보았다. 본 절에서는 이를 이용하여 일반적인 DES의 키 생성과정에 대한 DFA 방법에 대하여 서술한다. 먼저 랜덤하게 선택한 户에 대응하는 C를 얻는다.〔3.1〕에서 제안하는 오류 모델에 부합하는 오류를 reg: (또는 regf, i = 14, 15) 에 주입하여 6(또는 3)를 충분히 모으고, 砰의 역과정을 적용하여 16라운드의 옳은 출력 값 06, 46) 과 오류가 주입된 출력 값 (孩M龍 )을 얻는다. 16라운드 F-함수의 줄력 차분은 &七6 = ®A5®*5 A 이고, 16라운드 F-함수의 옳은 입력 값과 오류가 주입된 입력 값은 각각 %6, 이다. [Proposition 1〕 을 적용하면 16라운드의 모든 (또는 일부) S-box 출력 차분 값을 얻을 수 있다. 그리고 얻은 S-box 출력 차분 값에 대응하는 옳은 S~box 입력 값과 오류가 주입된 S-box 입력 값에 대한 후보쌍을 구한다. 한편 [Fact 2〕에 의하여 16라운드 S5-box, .... S8-box (또는 Sl-box, .... S4-box)의 입력 차분은 알고 있는 값이다. 이러한 정보를 이용하여 후보쌍의 차 분과입력 차분 값이 같지 않은 후보쌍을 제거 할 수 있다. 후보쌍이 1개로 결정될 때까지 이러한 과정을 반복하여 옳은 S-box 차분과 EP国°)을 XOR연산하여 옳은 16라운드 키를 계산한다. 비슷한 방법으로 15라운드 키를 구하고, 키 생성과정의 역 과정을 적용하여 비밀키를 찾아 낼 수 있다.

3.4 15라운드 키 생성과정에 대한 DFA 방법

본 절에서는 앞 절의 내용을 바탕으로 15라운드 키 생성과정에 대한 DFA 방법을 상세히 서술한다.

■ Step 1. 옳은 암호문과 오류가 주입된 암호문 획득

랜덤하게 선택한 임의의 P (공격자가 모르는 값) 에대응하는 C를 얻는다. 그리고 제안하는 오류주입 모델에 따라 15라운드 키 생성과정의 Teg% (또는 性就) 에 오류를 주입하여, 쎄 대응하는 (또는 信)을 얻는다.

■ Step 2. S-box 출력 값의 후보쌍 리스트 생성

- Step 2-1. S-box 출력 값 리스트。5, Os 생성

C와 3 에서 16라운드의 옳은 출력 값 心"%6과 오류가 주입된 출력 값 瓜, 咼6을 얻는다. 이때, 16라운드 F-함수의 입력 값 쌍 国6, 此* 6)과 F-함수의 출력 차분 Z静叫*6 는 알고 있는 값이므로 (如曲琮) 을구할 수 있다. 6写的 =1, ..., 8)을 陟 역 과정의 寸 번째 4-비트라 하면, , 아厂(心6赛;6)(, =5, ”・, 8)은 각각 S5-box, .… S8-box의 출력 차분이고 각 S-box는 옳은 출력 값과 오류가 주입된 출력 값에 대한 16개의 후보쌍이 존재한다. 각 S5-box.......S8-box에서 구한 16개의 후보쌍을 리스트 Q, …皿에 각각 저장한다.

- Step 2-2. S-box 출력 값 리스트 Q, Q 생성

C와 ©. 에서 16라운드의 옳은 출력 값 2㎛, %과 오류가 주입된 줄력 값 ^"/琮을 얻는다. Step 2T 과 같은 방법으로 S4-box의 출력 값 후보 쌍을 리스트 에 저장한다.

■ Step 3. S-box 입력 값의 후보쌍 리스트 생성

- Step 3-1. S-box 입력 값 리스트 4 생성

DES의 S-box의 특성상 4개의 S-box 입력 값이 같은 출력 값을 갖는다’ 따라서 리스트。.의 각 원소는 16개의 옳은 입력 값과 오류가 주입된 입력 값 후보 쌍을 갖는다. 즉, /번째 Sebox (Z = 5, ..., 8)는 16X16(= 256)개의 후보쌍을 갖는다. 각 S-box에서 생성된 S-box 입력 값 후보쌍을 리스트 妇 …, 4에 저장한다.

- Step 3-2. S-box 입력 값 리스트 4 생성

Step 3-1과 같은 방법으로 Sl-box, .... S4-box의 입력 값 후보쌍을 저장한 리스트 zv..., /4 를 생성한다’

■ Step 4. 16라운드 키 후보쌍 리스트 생성

- Step 4-1. 리스트< 砂;臨 >G = 5, ..., 8)생성

(Fact 2〕에 의하여 S5-box, .… S8-box의 입력값 차분의 값은 알고 있는 값이다. 따라서〔Algorithm 1〕과 같이 EPC弗危战七&危叫为丑宜와 4(z = 5, …, 8)의 각각의 후보쌍의 차분을 비교하여 16 라운드 키에 대한 후보쌍을 얻는다. 16라운드 키의 i 번째 (i = 5, ..., 8)6-비트에 대한 후보쌍을 리스트 <7冰以5 >에 각각 저장한다.

- step 4-2. 리스트 <RK[g >0=1, …, 4)생성

Step 4T과 같은 방법으로 [Algorithm 1〕에 4(§ = 1, ..., 4)을 적용하여 16라운드 키 후보값 리스트 <砂;“ >을 생성한다.

■ Step 5. 16라운드 키 획득

옳은 암호문과 오류가 주입된 암호문 쌍 에대하여 Step 2^1-Step 4T과정을 적용하여 16라운드 키 후보쌍 리스트 < 敬皿, : > (?, =5, 6, 7, 8)을 생성한다. 다른 오류에 대하여 같은 방법을 적용한 16라운드 키 후보쌍의 리스트 >*0 = 5, 6, 7. 8)를 생성하면 다음과 같이 나타낼 수 있다.

#

여기서 %, 云는 옳은 라운드 키 후보값 (j'e(i, , /必는 오류가 주입된 라운드 키 후보 값이다’ (je{l, ■■■, «}, fcG(l, ---, m})

각 0丿에 대하여 勺 = 矽인 驾가 존재하면 <7苗", , >와 <及翁 >*에서 각각(勺为)와 (驾, , 心) 를 남기고 그렇지 않으면 제거한다. 즉, 옳은 라운드 키 후보값을 비교하여 두 리스트에 모두 존재하는 옳은 라운드 키를 가지는 라운드 키 쌍만 남긴다. 또 다른 오류를 주입한 리스트를 생성하고 생성된 모든 리스트에 같은 방법으로 원소를 제거하여각 리스트에 원소가 한 개 남을 때까지 반복한다. 그 결과 하나의 옳은 라운드 키 원소를 포함하는 여러 개의 16라운드 키 쌍 리스트를 얻을 수 있다. 그 원소를 좌측 16라운드 키 쌍에 대한 리스트 <欣#" >(, :=5, ・-, 8)에 저장한다. 리스트 <*.> RK 은 다음과 같이 나타낼 수 있다.

#

여기서 也는 /번째 6-비트 옳은 16라운드 키이고 疋는 项번째 오류가 주입되어 생성된 6-비트 16라운드 키이며 71은 오류의 개수이다.

이러한 과정은 각 Z에 대하여 병렬적으로 수행되고 모든 / = 5, ・-, 8에 대하여 >의 옳은 라운드 키원소가 하나로 결정될 때까지 반복한다.

같은 방법으로 여러 개의 옳은 암호문과 오류가 주입된 암호문 쌍(C§)에 대하여 우측 16리운드 키 쌍에 대한 리스트 < 孩靠“ > (» = 1, ・“, 4)를 생성한다’ 그 결과 옳은 16라운드 키 友缶;를 얻을 수 있고 주입한 오류에 따른 오류가 주입된 6-비트 16 라운드키를 얻을 수 있다.

■ Step 6. 15라운드 키와 비밀키 획득

Step 5에서 얻은 16라운드 키를 I)脆의 키 생성 과정의 역 과정에 적용하면, 15라운드 키의 8비트 (无構], 0=12, 13, 14, 17, 30, 37, 39, 46)를 제외한 모든 비트를 알 수 있다. /?绮°와 Z侣를 알고 있으므로 45 =, 0任以4"%6)을 알 수 있다.(尸国°』如은 16라운드 F-함수 출력 값) 그리고 耳(浅席6은 15라운드 f-함수의 출력 차분이므로 15라운드의 입력 값과 출력 값의 차분을 알 수 있다. 따라서 <RK釘 >와 <敬結>에서 8비트를 제외한 15라운드 키 차분을구하여 16라운드 키를 획득하는 방법과 비슷한 방법으로 15라운드 키를 얻을 수 있다. 그 결과 15라운드 키와 16라운드 키를 DES의 키 생성과정의 역 과정에 적용하여 비밀키를 구할 수 있다.

Algorithm 1 : <RKle i > G = l, ..., 8)생성 알고리즘

3.5 14라운드드 키 생성과정에 대한 DFA 방법

〔3.4〕절의 15라운드 키 생성과정에 대한 DFA 방법에서 16라운드 F-함수의 입력 값 쌍 国田页6)과 S-box의 출력 차분 값을 이용하여 비밀키를 복구 할 수 있다. 이때 S-box의 출력 차분의 경우. 모든 S-box의 출력 차분이 아닌 일부의 값만을 이용하여 공격한다. 즉, 오류가 *亦에 주입되면 S5-box, .… S8-b0X의 출력 차분 값만 이용하고 re(浩에 주입되었을 경우 Sl-box S4~box의 출력 차분 값만을 이용한다. 14라운드 키 생성과정에 오류를 주입할 경우, 16라운드 F-함수의 입력 값 쌍 (耳, 韻은 알고있고 〔3.3. Proposition 1〕에 의해 14라운드 키 생성과정에서 오류가 발생할 경우 필요한 S-box의 출력차 분을 구할 수 있다. 따라서 15라운드 키 생성과정에 대한 DFA 방법과 같은 방법으로 14라운드 키 생성과정에 오류를 주입하여 15라운드 키와 16라운드 키를 복구하고 비밀키를 획득할 수 있다.

Ⅳ. 실험결과

본 절에서는 DES의 키 생성과정에 대한 DFA 방법에 대한 실험결과를 제시한다. 본 실험은 Intel Pentium D 3.4GHz PC를 이용하여。코드로 시뮬레이션을 실행 하였다. 14라운드 키 생성과정과 15라운드 키 생성과정에 오류가 주입된 DFA방법은 동일하므로 랜덤하게 선택한 /와 K에 대하여 랜덤 오류를 res匕“eg負에 주입하여 14라운드 키 생성과정에 대한 DFA 방법을 이용하여 비밀키를 획득하는 실험을 하였다. 총 100,000개의 오류를 주입하여 본 논문에서 제안하는 14라운드 키 생성과정에 오류를 주입한 DFA 방법을 이용하여 비밀키를 얻는데 필요한 오류의 개수는[그림 4〕와 같다. 실험결과에서 5개의 오류를 주입하면 99.52% (reg:에 오류를 주입)와 99.54% (re妒에 오류를 주입)의 확률로 비밀키를 얻을 수 있었다. 따라서 본 실험결과는 5개의 오류를 각각의 레지스터에 오류를 주입하면 99%이상의 확률로 옳은 비밀키를 획득 할 수 있음을 보여준다.

[그림 4] DES의 14라운드 키 생성과정에 대한 DFA 실험결과

Ⅴ. 결론

본 논문은 DES의 키 생성과정에 오류를 주입하여 DFA 방법을 처음으로 제안한 논문이다. 제안하는 DFA 방법은 마지막 3라운드 (14, 15, 16라운드)의 28-비트 레지스터에 랜덤 오류를 주입하여 비밀키를 찾는다. 제안하는 오류 모델에서 기존 DFA 방법이 1-비트 또는 1-바이트 오류를 주입하는 것에 비하여 제안하는 오류 모델은 28-비트 레지스터에 랜덤 오류를 사용함으로서 더욱 실제적으로 쉽고 효과적으로 오류를 주입하여 공격할 수 있다. 또한 제안하는 DFA 방법에서 라운드 키의 후보를 추측하고 후보를 줄여가는 방법을 사용하여 비밀키를 찾는 방법을 이용한다. 제안한 DFA 방법을 확인하기 위한 실험에서 10개 이하의 오류를 사용하여 99%이상의 확률로 공격을 성공할 수 있으므로 기존의 DFA 방법에 비하여 더 효율적으로 공격할 수 있다. (〔표 3} 참조). 결론적으로 DES의 암호화 과정 (또는 복호화 과정)에 대한 DFA뿐만 아니라 키 생성과정에 대한 DFA 방법을 효율적으로 적용할 수 있음을 알 수 있다.

〔표 3) DES에 대한 DFA

References

  1. P. Kocher, "Timing Attacks on Implementations of Diffie Hellman, RSA, DSS, and Other Systems," CRYPTO 1996, LNCS 1109, pp. 104-113, Springer-Verlag, 1996.
  2. P. Kocher, J. Jaffe, and B. Jun, "Differential Power Analysis," CRYPTO 1999, LNCS 1666, pp. 388-397, Springer-Verlag, 1999.
  3. Ç. K. Koç, D. Naccache, and C. Paar, "Electromagnetic Analysis:Concrete Results," CHES 2001, LNCS 2162, pp. 251-261, Springer-Verlag, 2001.
  4. D. Boneh, R. A. DeMillo, and R. J. Lipton, "On the importance of checking cryptographic protocols for fault," EUROCRYPTO 1997, LNCS 1233, pp. 37-51, Springer-Verlag, 1997.
  5. T. C. May, M. H. Woods, "A New Physical Mechanism for Soft Errors in Dynamic Memories," Proceedings 16 Int'l Reliability Physics Symposium, pp. 33-40, Apr. 1978.
  6. E. Biham, A. Shamir, "Differential Fault Analysis of Secret Key Cryptosystem," CRYPTO 1997, LNCS 1294, pp. 513-525, Springer-Verlag, 1997.
  7. H. Chen, W. Wu, and D. Feng, "Differential Fault Analysis on CLEFIA," ICISC 2007, LNCS 4861, pp. 284-295, Springer- Verlag, 2007.
  8. J. Takahashi, T. Fukunaga, "Improved Differential Fault Analysis on CLEFIA," FDTC 2007, pp. 62-72, Aug. 2007.
  9. L. Hemme, "A Differental Fault Attack Against Early Round of (Triple-)DES," CHES 2004, LNCS 3156, pp. 254-267, Springer-Verlag, 2004.
  10. L. Wei, G. Dawu, and L. Juanru, "Differential Fualt Analysis on the ARIA Algorithm," ELSEVIER Information Sciences 178 (2008), pp. 3727-3737, Oct. 2008. https://doi.org/10.1016/j.ins.2008.05.031
  11. M.-L. Akkar, "Attaques et méthodes de protections de systemes crypto- graphiques embarqués," PhD thesis, Universite de Versailles Saint-Quentin, Jan. 2004.
  12. M. Rivain, "Differential Fault Analysis on DES Middle Rounds," CHES 2009, LNCS 5747, pp. 457-469, Springer-Verlag, 2009.
  13. C. Giraud, "DFA on AES," AES 2004, LNCS 3373, pp. 27-41, Springer- Verlag, 2005.
  14. D. Peacham, B. Thomas, "A DFA attack against the AES key schedule," SiVenture White Paper 001 (26 Oct. 2006), http: //www.siventure.com/pdfs/AES KeySchedule DFA whitepaper.pdf.
  15. J. Takahashi, T. Fukunaga, and K. Yamakoshi, "DFA mechanism on the AES key schedule," FDTC 2007, pp. 62-72, Sep. 2007.
  16. C. H. Kim, J.-J. Quisquarter, "New Differential Fault Analysis on AES Key Schedule : Two Fault Are Enough," CARDIS 2008, LNCS 5189, pp. 48-60, Springer-Verlag, 2008.
  17. NIST, "Data Encryption Standard (DES)," FIPS PUB 46-2, Dec. 1993.