DOI QR코드

DOI QR Code

Collision Attacks on Crypton and mCrypton

블록 암호 Crypton, mCrypton에 대한 충돌 공격

  • Kim, Tae-Woong (Center for Information of Security of Technologies, Korea University) ;
  • Kim, Jong-Sung (Center for Information of Security of Technologies, Korea University) ;
  • Jeong, Ki-Tae (Center for Information of Security of Technologies, Korea University) ;
  • Sung, Jae-Chul (Department of Mathematics, University of Seoul) ;
  • Lee, Sang-Jin (Center for Information of Security of Technologies, Korea University)
  • 김태웅 (고려대학교 정보보호기술연구센터) ;
  • 김종성 (고려대학교 정보보호기술연구센터) ;
  • 정기태 (고려대학교 정보보호기술연구센터) ;
  • 성재철 (서울시립대학교 수학과) ;
  • 이상진 (고려대학교 정보보호기술연구센터)
  • Published : 2009.02.28

Abstract

H. Gilbert et al. proposed a collision attack on 7-round reduced Rijndael[5]. Applying this attack, we propose collision attacks on 8-round reduced Crypton, 8-round reduced mCrypton in this paper. Attacks on Crypton requires $2^{161.6}$ time complexity with $2^{96}$ chosen plaintexts, respectively. The attack on mCrypton requires $2^{81.6}$ time complexity with $2^{48}$ chosen plaintexts. These results are the best attacks on Crypton and mCrypton in published literatures.

H. Gilbert 등은 [5]에서 7-라운드 Rijndael-192/256에 대한 충돌 공격을 제안하였다. 이 공격을 이용하여, 본 논문에서는 $2^{96}$개의 선택 평문과 $2^{161.6}$의 시간 복잡도로 8-라운드 Crypton의 부분키를 복구할 수 있음을 보인다. 또한 8-라운드 mCrypton에 대하여, $2^{48}$개의 선택 평문과 $2^{81.6}$의 시간 복잡도로 부분키를 복구할 수 있음을 보인다. 본 논문의 공격 결과는 기제안된 Crypton과 mCrypton에 대한 공격 중 최대 라운드에 대한 결과이다.

Keywords

Ⅰ. 서론

Crypton[2]은 NIST에서 공모한 AES proposal에 제안된 128 비트 블록 암호로서 총 12-라운드 SPN 구조이며 최대 256 비트 비밀 키를 사용한다. 또한 involution 함수를 이용하며 키 스케줄 과정을 제외하고 암호화 과정과 복호화 과정이 동일하도록 설계되었다. 현재까지 제안된 Crypton에 대한 공격 결과는 [1]에서 제안된 6-라운드 square 공격과 5/6-라운드 Crypton에 대한 불능차분 공격[4,7], 8-라운드 Crypton에 대한 stochastic 공격[12] 등이 있다. mCrypton[13]은 WISA 2005에 제안된 64 비트 블록 암호로서, 유비쿼터스 환경에 적합하도록 Crypton의 축소 버전으로 설계되었다. 총 12-라운드로 구성되어 있으며 96/128 비트 비밀키를 사용한다. 현재까지 mCrypton에 대한 공격 결과가 제안되지 않았다.

[5]에서 7-라운드 Rijndael-192/256에 대한 충돌 공격을 제안하였는데 본 논문에서는 [5]과 [10]에서 제안된 공격 기법을 Crypton과 mCrypton에 적용하여 7/8-라운드 Crypton과 mCrypton을 제안한다. 본 논문에서 제안하는 공격을 요약하면 [표 1]과 같다.

[표 1] Crypton, mCrypton에 대한 공격 결과

Ⅱ. Crypton, mCrypton 소개

본 장에서는 블록 암호 Crypton과 mCrypton을 소개한다. mCrypton은 Crypton의 축소 버전으로서, 바이트 단위 함수를 사용하는 Crypton에 비해, 4 비트 단위 함수를 사용하지만 전체 구조는 Crypton과 매우 유사하다. 따라서 본 장에서는 Crypton을 중심으로 소개한다. 키 스케줄은 본 논문에서 제안하는 공격에 사용되지 않으므로 생략한다[2,13].

Crypton은 128 비트 평문 P를 입력 받아, 최대 256 비트 비밀키를 이용하여 [그림 1]과 같은 과정을 통해 128비트 암호문 C를 출력한다. 본 논문에서는 128 비트 데이터를 다음과 같은 4×4 바이트 단위 행렬로 표기한다.

[그림 1] Crypton(대괄호안은 mCrypton)

#

Crypton의 라운드 함수 ρ는 네 개의 함수 γ, Π, τ, σ로 구성된다([그림 1] 참조). 그리고 ρ는 홀수 라운드에서 사용되는 라운드 함수 ρo와 짝수 라운드에서 사용되는 ρe로 나뉜다. ρo와 ρe는 다음과 같이 정의된다. 여기서 K는 라운드 키를 의미한다: ρo = σK ∘ τ ∘ Πo ∘ γo, ρe = σK ∘ τ ∘ Πe ∘ γe. 마지막 라운드 Φ = τ ∘ Π ∘ τ이다.

γo와 γe는 4개의 8 비트 S-박스 S1, S2, S3, S4를 사용한다. 이 S-박스들은 #, #, γoe (A)) =γeo(A)) = A을 만족한다. (mCrypton의 γo, γe는 Crypton와 동일한 구조를 가지며, 4 비트 4개와 S-박스를 사용하며 인덱스는 다르다.)

πo와 πe는 다음과 같은 4개의 선형 함수 π​​​​​​​0, π​​​​​​​1, π​​​​​​​2, π​​​​​​​3로 구성된다. 각각의 π​​​​​​​i#를 만족하며, 전체적으로 #, #이 성립한다(단,m0 = fcx,m1 = f3x, m2 = cfx,m3 = 3fx, (i= 0,1,2,3)). mCrypton의 π​​​​​​​는 매 라운드 같은 값을 사용하며, 4 비트 mi상수를 사용한다.(단, m0 = 11102, m1 = 11012, m2 = 10112,m3 = 01112이다.)

#

τ는 다음과 같은 선형 함수로서, aij에서 aji로 변환하는 전치 함수이고 τ-1 = τ을 만족한다.

라운드 키 덧셈 함수 σK는 다음과 같이 정의된다: B= σK(A), (B= A⊕K).

Ⅲ. 4-라운드 Crypton, mCrypton의 충돌 특성

본 장에서는 [5]에서 제안된 공격 기법을 Crypton, mCrypton에 적용하여 얻은 4-라운드 충돌 특성을 소개한다. 블록 암호에서 동일한 입력 값은 동일한 출력 값을 가지며, 서로 다른 입력 값은 상이한 출력 값을 갖는다. 하지만 서로 다른 입력 값에 대하여 특정 부분을 관찰할 때, 출력 값이 같은 경우가 존재할 수 있다. 만약 출력 값의 특정 부분이 동일하다면, 이를 충돌이라 한다.

3.1 표기법

A,B,C,D,E 는 각 1, 2, 3, 4, 5번째 라운드의 입력 상태 값을 의미하며, F는 5번째 라운드의 출력 상태 값을 의미한다. 입력 상태 값 B는 b= b00를 제외한 15개의 바이트 위치에서 상수 값을 갖는다. 즉, b00을 제외한 bij는 상수 값을 갖는다. 특히 24 비트(3개의 워드 s값) 상수는 변하는 상수 값을 의미하며 bij는 고정된 상수 값이다(0≤i,j≤3). 또한 상수 s와 b= {0,1,⋯,255}와 관련된 cij, dij, eij, fij 바이트를 #, #, #로 표기한다 (0≤i,j≤3). [그림 3]의 연속된 4-라운드의 상태 값 중 충돌 특성에 관여하는 바이트들을 위의 표기법에 의해 다음과 같이 표기한다.

[그림 3] Crypton, mCrypton의 연속된 4-라운드의 상태 값

#

3.2 두 알고리즘의 4-라운드 특성 및 7-라운드 공격

본 절에서는 Crypton과 mCrypton의 암호화 과정을 함수로 표현하고, 암호화 과정 중 16개의 바이트 상태 값의 상호 의존성에 대해 살펴본다. 특히 ci, di, e, fi의 상태 값을 관찰한다 (0≤i≤3). 먼저, Crypton에 대한 충돌 특성을 다룬 후에 mCrypton 충돌 특성을 살펴본다.

다음은 2번째 라운드를 bij라고 할 때 3번째 라운드의 입력 상태 값, ci에 대해 설명한다.(0≤i,j≤3) [그림 3]에서 #는 한 바이트 라운드 키 #에 의해 결정되며, 고정된 상수 s = (s1,s2,s3)는 # 값에 영향을 미치지 않는다. 그리고 c0는 일대일 대응 함수 #으로 표현 가능하다. 또한 #, #, #에 대해서도 이와 같은 성질을 만족함을 확인할 수 있다. 따라서 ci는 키 의존-상수임을 알 수 있다 (0≤i≤3).

다음은 3번째 라운드를 cij라고 할 때 4번째 라운드의 입력 상태 값, di에 대해 설명한다.(0≤i,j≤3).

#는 한 바이트 라운드 키 # 와 c01, c02, c03에 의해 결정된다. c01은 s1#, c02는 s2#, c03는 s3#에 의해 결정된다. 하나의 고정된 상수 s에 대해서 #는 일대일 대응 함수이며, 결론적으로, 합성 함수 #은 일대일 대응 관계를 만족한다. 또한 #, #, #에 대해서도 같은 성질을 만족한다. 따라서 di는 하나의 키-의존 상수, 세 개의 상수 s와 키-의존 상수, 하나의 키에 의해 결정된다(b00 = b={0,1,⋯,255}을 제외하고 bij는 상수 값을 갖는 포화 집합의 두 라운드 후의 출력 상태 값을 관찰해 보면 일대일 대응 관계를 이용하여 모든 dij는 포화 집합이 됨을 알 수 있다).

다음 식은 4번째 라운드 입력 상태 값을 dij라 할 때, 5번째 라운드 입력 상태 값 e를 나타낸다.

#

위의 식을 통해 e는 네 개의 키-의존 상수, 네 개의 상수 s와 키-의존 상수 (네 개의 상자로 표시하며 각각은 8 비트이다.), 하나의 키에 의해 결정됨을 알 수 있다. 결론적으로 es [b]는 s= (s1,s2,s3)에 의존하고 키에 의존하는 네 개의 상수와 s= (s1,s2,s3)에 독립이고 키에 의존적인 다섯 개의 상수로 구성된다는 것을 알 수 있다. (b00 = b= {0,1,⋯,255}을 제외하고 bij는 상수 값을 갖는 포화 집합의 3번째 라운드 후의 출력 상태 값을 관찰해 보면 eij는 균일 집합이 됨을 알 수 있다.) 만약 서로 다른 상수 s′ = (s1′,s2′,s3′)와 s′′ = (s1′′,s2′′,s3′′)에 대해서 네 개의 키와 상수 s= (s1,s2,s3)에 의존하는 32비트(네 개의 네모상자) 값이 동일하다면 전체적으로 e의 값이 동일하게 된다. 즉, 모든 b= {0,1,⋯,255}에 대해서 es′[b] = es″ [b]이 성립하는 s′ =(s1′,s2′,s3′)와 s′′ =(s1′′, s2′′,s3′′)는 생일 공격을 이용하여 216개의 서로 다른 s = (s1,s2,s3)에 대해 50% 이상의 확률로 충돌 특성을 찾을 수 있다. 다음 과정은 fij를 이용하여 e를 표현하며 5번째 라운드의 입력 값을 E 라 할 때, 5번째 라운드 과정은 다음과 같이 표현할 수 있다 (0≤i,j≤3)

#

따라서 #이 성립한다. 또한 #이 성립하므로 #임을 알 수 있다. 결론적으로, S3 (e) =(f0∧m2)⊕(f1∧m1)⊕(f2∧m0)⊕(f3∧m3)⊕(Πo ∘τ(K5))30이 성립함을 알 수 있다. es′[b] = es″[b]을 만족 하는 s′ = (s1′,s2′,s3′)와 s′′ = (s1′′,s2′′,s3′′)가 존재한다면 ##을 비교해 볼 때 다음을 만족한다.

#(1)

모든 b= {0,1,⋯,255}에 대해서 es′[b] = es″[b]의 성립 여부는 식 (1)의 성립 여부를 테스트함으로서 확인 가능하다. 따라서 b= {0,1,⋯,255}에 대해 216개의 서로 다른 상수 s = (s1,s2,s3)를 이용하여 50%의 확률로 모든 b= {0,1,⋯,255}에 대하여 식 (1)이 성립할 s′, s″을 찾을 수 있다.

Crypton과 마찬가지로 mCrypton은 5-라운드 입력 값(e30)인 e값은 네 개의 키-의존 상수, 네 개의 상수 s와 키-의존 상수 그리고 하나의 키에 의해 결정됨을 알 수 있으며 mCrypton의 5번째 라운드의 e(= e00)값은 Crypton의 상수값(m0, m1, m2, m3)과 S-박스만 다를 뿐 구조는 동일하므로 생략한다. 아래의 식 (2)는 mCrypton의 es′[b] = es″ [b]를 만족하는 s′, s″쌍을 찾기 위한 식으로 [알고리즘 2]의 과정 (4)-(ㄱ)에서 다시 언급한다.

#(3)

Crypton, mCrypton의 4-라운드 충돌 특성은 식(1)과 (2)를 이용하여 다음 알고리즘을 통해 구할 수 있다.

∙[알고리즘 1] 4-라운드 충돌 특성 찾기 (단, 대괄호 안은 mCrypton의 경우이다).

① 임의의 25개의 b를 갖는 집합 Λ⊂{0,1,⋯,255}와 216[28]개의 서로 다른 상수 s = (s1,s2,s3)를 갖는 25개로 이루어진 216[28]개의 평문 집합을 선택한다 (b와 s = (s1,s2,s3)를 제외한 모든 부분은 고정된 상수 값을 갖는다). 7-라운드 충돌 공격에 사용되는 집합 Λ는 전체 추측하는 키 공간이 32+40×4 = 192[96]비트이다. 한 쌍의 s값에 대해 충돌 할 확률은 2- 8[2- 4]이며 25개의 b값에 대해서 (2- 8)25 = 2- 200[(2- 4)25 = 2- 100]이므로 2- 200 × 2192 ≪ 1[2- 100 ×296 ≪ 1]이다. 따라서 25개의 원소만으로 충분하다.

② 각 평문 집합은 2번째 라운드 입력 값을 나타내며 각 평문 집합의 5번째 라운드의 출력값을 얻는다.

③ 각 암호문 집합에 대해 #를 계산하여 저장한다 [mCrypton의 경우 #].

④ 임의의 b∈Λ에 대해서 (Ts′[b] = Ts″[b])b∈Λ이 성립하는 s′, s″를 50% 이상의 확률로 찾을 수 있다.

3.3 7-라운드 Crypton, mCrypton의 충돌 공격

본 절에서는 앞 절에서 구성한 4-라운드 충돌 특성을 이용하여 7-라운드 충돌 공격을 소개한다. [그림 4]는 7-라운드 Crypton과 mCrypton의 상태 값을 나타낸다. B, C, D, E, F는 앞 절과 동일하며, A는 첫 번째 라운드 입력 평문 상태 값, F는 5번째 라운드, G는 6번째 라운드 그리고 H는 7번째 라운드 출력 상태 값을 나타낸다.

[그림 4] 7-라운드 Crypton, mCrypton의 상태 값

다음은 각 알고리즘의 7번째 라운드 출력값(H)을 이용해 5번째 라운드 출력값(F)을 구하는 식이다. 각 알고리즘의 H는 위의 각각의 과정들을 통해 F를 복구할 수 있다.

- Crypton (5-7 라운드):

#

- mCrypton (5-7 라운드):

#

[그림 5]는 [알고리즘 2]를 설명하고 있으며, 다음은 복호화 할 때 쓰이는 변환식이다.

[그림 5] Crypton, mCrytpon의 7-라운드 충돌 공격

Crypton:

#

mCrypton:

#

∙[알고리즘 2] 7-라운드 충돌 공격 알고리즘 (단, 대괄호 안의 값은 mCrypton의 경우이다.)

① (a0,a1,a2,a3)를 제외한 모든 바이트가 상수인 232개[216개]의 text로 구성된 평문 집합 #을 획득한다. 평문 Ai에 대응하 는 암호문은 Hi이며 i는 32 비트[16 비트] 워드 a0||a1||a2||a3에 대응된다.

② 40 비트 키[20 비트 키] #, #, #, #, #을 추측하여 232개[216개]의 암호문 Hi를 fj 위치까지 복호화한다 (j = 0,1,2,3, 4×240 ×232 (= 274 )[4×220 ×216 (= 238 )]) 각각에 대해 실행). 복호화된 값을 추측한 네 개의 40 비트[20 비트]의 키, 인덱스 i, j에 따라 테이블에 저장한다. 위의 과정을 모든 네 개의 40 비트[20 비트]의 키에 대해 실행하므로 테이블의 크기는 4×240 ×232 (= 274 )[238 (= 4×216×220)]메모리 바이트를 요구한다.

③ 첫 번째 라운드 Π단계 후의 상태 (b*,#,#,#) 위치에서 25개의 원소로 구성된 216개[28개]의 집합을 선택한다. 각각의 집합은 동일한 상수 #에 대해 서로 다른 25개의 값 b*를 사용한다. 집합과 집합 사이에 사용된 #는 모두 서로 다르며, 25개의 b*는 서로 동일하도록 선택한다.

④ 32 비트[16] 비트 키 (K0)00, (K0)01, (K0)02, (K0)03을 추측하여 과정 ③ 에서 선택한 216개[28개]의 집합을 (a1,a2,a3,a4) 위치까지 복호화한다.

(ㄱ) 복호화한 216개(28개)의 집합 중 서로 다른 두 집합과 앞서 추측한 40×4 = 160 [20×4 = 80]비트 키 각각에 대해 과정 ②에서 저장한 테이블을 이용하여, 식 (1)[식 (2)]을 체크한다. 만약 25개의 원소 각각에 대해서 식 (1)[식 (2)]을 모두 만족한다면 192 비트[96 비트] 키 (K0)00, (K0)01, (K0)02, (K0)03, #, #, #, #, #을 올바른 키로 출력한다. 모든 서로 다른 두 집합과 모든 160 비트키[80 비트]에 대해서 위의 테스트를 통과하지 못한다면, 다시 과정 ④로 돌아간다.

본 7-라운드 공격은 [알고리즘 2]의 과정 ①에 의해, Crypton은 232개의 선택 평문을 요구하며 mCrypton은 216개의 선택 평문을 요구한다. 시간 복잡도와 메모리 복잡도는 [알고리즘 2]의 과정 ②의 테이블에 의해 좌우된다. 따라서 Crypton의 경우, 테이블에 저장하면 #의 시간 복잡도와 274(= 4×232 ×240)의 메모리 바이트가 요구되며 mCrypton의 경우는 #의 시간 복잡도와 238(= 4×216×220)의 메모리 바이트가 요구된다.

Ⅳ. 5-라운드 특성 및 8-라운드 공격

본 장에서는 각 알고리즘의 5-라운드 충돌 특성을 이용한 8-라운드 충돌 공격을 소개한다. 8-라운드 충돌 공격은 7-라운드 충돌 공격 방법과 유사하며 7-라운드 충돌 공격보다 시간 복잡도는 많이 요구되나 복구하는 부분 키의 비트 수는 크게 향상된다. 앞서 살펴본 것과 같이 mCrypton 공격은 Crypton의 공격과 유사하므로, 공격 과정은 생략한다.

4.1 5-라운드 Crypton, mCrypton의 충돌 특성

Crypton 5-라운드 충돌 특성은 4-라운드 충돌 특성과 표기 방식이 동일하나, 7-라운드 공격에서 2번째 라운드의 s(= s1, s2, s3)값을 8-라운드 공격에서는 8개의 바이트를 사용하며, 나머지 7개의 바이트들은 일정한 상수로 놓는다 (s =(s1 = b10, s2 = b20, s3 =b30, s4 = b11, s5 = b21, s6 = b31, s7 = b12, s8 = b22)). 아래 f(= f30)값은 Crypton 의 6-라운드 입력 상태 값을 나타낸다. 이 식을 통해 f 값은 스물 한 개의 키-의존 상수, 열여섯 개의 상수 s와 키-의존 상수에 의해 결정됨을 알 수 있다. 즉, fs [b]는 s = (s1,s2,⋯,s8)에 의존하고 키에 의존하는 열여섯 개의 상수와 s = (s1,s2,⋯,s8)에 독립이고 키에 의존적인 열여섯 개의 상수 그리고 키만 존재하는 다섯 개의 상수로 구성된다는 것을 알 수 있다. 만약 서로 다른 상수 s′와 s″에 대해서 열여섯 개의 키와 상수 s = (s1,s2,⋯,s8)에 의존하는 128 비트(16개의 네모상자) 값이 동일하다면 전체적으로 f값이 동일하게 된다. 따라서 264개의 서로 다른 s를 갖는다면 50% 이상의 확률로 s의 충돌 쌍을 찾을 수 있으며 아래의 식 (3)을 만족한다.

#(3)

∙[알고리즘 3] 5-라운드 충돌 특성 찾기(단, 대괄호 안은 mCrypton의 경우이다).

① 임의의 33개의 b를 갖는 집합 Λ⊂{0,1,⋯,255}와 264[232]개의 서로 다른 상수 s = (s1,s2,⋯,s8)를 갖는 33개로 이루어진 296[248]개의 평문 집합을 선택한다. 8-라운드 충돌 공격에 사용되는 Λ는 33개의 원소만으로 충분하다. 8-라운드 충돌 공격에 사용되는 집합 Λ는 전체 추측하는 키 공간은 96+40×4 = 256[128]비트이다. 한 쌍의 s값이 충돌할 확률은 2- 8[2- 4]이며 33개의 b값에 대해서 (2- 8)33 = 2- 264[2- 132]가 성립하므로 2- 264 ×2256≪ 1[2- 132 ×2128≪ 1]이다. 따라서 33개의 원소만으로 충분하다.

② 각 평문 집합은 2번째 라운드의 입력 값을 나타내며 각 평문 집합의 6번째 라운드의 출력 값을 얻는다.

③ 각 암호문 집합에 대해 #를 계산하여 저장한다. [mCrypton의 경우 #].

④ 임의의 b∈에 대해서 (Ts′[b] = Ts″[b])b∈Λ이 성립 하는 s′, s″를 50% 이상의 확률로 찾을 수 있다.

4.2 8-라운드 Crypton, mCrypton의 충돌 공격

7-라운드 충돌 공격과 유사한 방법으로 앞에서 구성한 5-라운드 충돌 특성을 이용하여 8-라운드 충돌 공격을 소개한다. 7-라운드 충돌 공격과 같이 8-라운드 출력값 I 를 이용하여 다음 식을 구할 수 있다(다음 식은 Crypton의 경우이며 mCrypton의 경우는 Crypton과 모든 식이 유사하므로 생략한다).

#

따라서 I 는 과정 #을 통해 G를 복구할 수 있다.

∙[알고리즘 4] 8-라운드 충돌 공격 알고리즘(단, 대괄호 안은 mCrypton의 경우이다).

① (a0, a1, a2, ⋯, a11)를 제외한 모든 바이트가 상수인 296[248]개의 text로 구성된 평문 집합 A ={Ai}0≤i≤296- 1을 획득한다. 평문 Ai에 대응하는 암호문은 Ii이며 i는 96 비트[48 비트] 워드 a0||a1||a2|| ⋯||a10||a11에 대응된다 (a0 = a00, a1 = a01, a2 = a02, a3 = a03, a4 = a01, a5 = a11, a6 = a12, a7 = a13, a8 = a20, a9 = a21, a10 = a22, a11 = a23).

② 40 비트[20 비트] 키 #, #, #, #, #을 추측하여 296[248]개의 암호문 Ii 를 gj위치까지 복호화한다 (j = 0,1,2,3 각각에 대해 실행). 복호화된 값을 추측한 네 개의 40 비트[20 비트]의 키, 인덱스 i, j 에 따라 테이블에 저장한다. 위의 과정을 모든 네 개의 40 비트[20 비트]의 키에 대해 실행하므로 테이블의 크기는 #이다.

③ 첫 번째 라운드 Πo 후의 상태 (b*, #, #,⋯, #) 위치에서 33개의 원소로 구성된 264[232]개의 집합을 선택한다. 각각의 집합은 동일한 상수 #에 대해 서로 다른 33개의 값 b*를 사용한다. 집합과 집합 사이에 사용된 #는 모두 서로 다르며, 33개의 b*는서로 동일하도록 선택한다.

④ 96 비트[48 비트] 키 (K0)00,(K0)01,(K0)02,(K0)03, (K0)10, (K0)11, (K0)12, (K0)13, (K0)21, (K0)22, (K0)20, (K0)23을 추측하여 과정 ③에서 선택한 264[232]개의 집합을 (a0, a1, ⋯,a11) 위치까지 복호화한다.

(ㄱ) 복호화한 264[232]개의 집합 중 서로 다른 두 집합과 앞서 추측한 40× 4 = 160 비트[20×4 = 80 비트] 키 각각에 대해 과정 ②에서 저장한 테이블을 이용하여, 식 (3)을 체크한다. 만약 33개의 원소 각각에 대해서 식 (3)을 모두 만족한다면 256비트 키 (K0)00, (K0)01, (K0)02, (K0)03, (K0)10, (K0)11, (K0)12, (K0)13, (K0)20, (K0)21, (K0)22, (K0 )23, #, #, #, #, #을 올바른 키로 출력한다. 모든 서로 다른 두 집합과 모든 160 비트[80 비트] 키에 대해서 위의 테스트를 통과하지 못하면, 과정 ④로 돌아간다.

Crypton 8-라운드 공격에서 [알고리즘 4]의 과정 ①에 의해 296의 선택 평문이 요구되며 시간 복잡도와 메모리 복잡도는 Crypton의 경우 #의 시간 복잡도와 #의 메모리 바이트가 요구되며 mCrypton의 경우 248의 선택 평문이 요구되며 시간 복잡도는 # 그리고 메모리 복잡도는 #이다.

Ⅴ. 결론

본 논문은 H. Gilbert와 M. Minier에 의해 제시된 충돌 공격[5]을 Crypton, mCrypton에 적용하여 7/8-라운드 Crypton과 7/8-라운드 mCrypton의 부분키를 복구할 수 있음을 보였다. 본 논문에서 제안한 공격은 블록 암호의 처음 몇 라운드의 약한 확산 성질과 생일 공격을 이용한 충돌 성질을 이용하여 공격하므로 일정한 확산 성질을 갖는 일반적인 SPN 구조인AES, Anubis, Square[8]에 적용 가능하다. 그러나 비트 단위의 확산 함수를 사용하는 KHAZAD[14]나 강한 확산 함수를 사용하는 ARIA[3], Q[11] 등의 블록 암호나, 한 라운드에 두 번의 키를 사용하는 Grand Cru[6]와 같은 블록 암호는 공격이 불가능하다.

References

  1. C. D'Halluin, G. Bijnens, V. Rijmen, and B. Preneel, "Attack on Six Rounds of Crypton," Fast Sofrware Encryption Workshop 1999, LNCS 1636, pp. 46-59, 1999
  2. C. Lim, "CRYPTON: A New 128-bit Block Cipher," AES Proposal, Aug. 1998
  3. D. Kwon, J. Kim, S.Park, S. Sung, Y. Sohn, J. Song, Y. Yeom, E. Yoon, S. Lee, J. Lee, S. Chee, D. Han, and J. Hong, "New Block Cipher: ARIA," International Conference on Information Security and Cryptology 2003, LNCS 2971, pp. 443-456, 2003
  4. H. Seki and T. Kaneko, "Cryptanalysis of Five Rounds of CRYPTON Using Impossible Differential," ASIACRYPT'99, LNCS 1716, pp. 45-51, 1999
  5. H. Gilbert and M. Minier, "A collision attack on 7 rounds of Rijndael," Proceedings of the 3rd Advanced Encryption Standard Candidate Conference, pp 230-241, Apr. 2000
  6. J. Borst, "The block cipher Grand Cru," Primitive submitted to NESSIE, Nov. 2000
  7. J. Cheon, M. Kim, K. Kim, and J. Lee, "Improved Impossible Differential Cryptanalysis of Rijndeal and Crypton," International Conference on Information Security and Cryptology 2001, LNCS 2288, pp. 39-49, 2001
  8. J. Daemen, L. Kundsen, and V. Rijmen, "The block cipher Square," Fast Sofrware Encryption Workshop 1997, LNCS 1267, pp. 149-165, 1997
  9. J. Daemen and V. Rijmen, "AES Proposal: Rijndael," Proceedings of the 1st Advanced Encryption Standard Candidate Conference, Aug. 1998
  10. J. Kim, S. Hong, S. Lee, J. Song, and H. Yang, "Truncated Differential Attacks on 8-Round CRYPTON," International Conference on Information Security and Cryptology 2003, LNCS 2971, pp. 446-456, 2004
  11. L. McBride, "Q: A Proposal for NESSIE V2.00," Submission of NESSIE Project, Nov. 2000.
  12. M. Minier and H. Gilbert, "Stochastic Cryptanalysis of Crypton," Fast Sofrware Encryption Workshop 2000, LNCS 1978, pp. 121-133, 2000
  13. C. Lim and T. Korkishko, "mCrypton - A Lightweight Block Cipher for Security of Low-Cost RFID Tags and Sensors," International Workshop on Information Security Applications 2005, LNCS 3786, pp. 243-258, 2006
  14. P. Baretto and V. Rijmen, "The KHAZAD Legacy-Level Block Cipher," Submission of NESSIE Project, 2002