Ⅰ. 서론
해쉬함수는 임의의 길이의 비트열M시지)을 입력받아 고정된 길이의 비트열(해쉬값)을 출력하는 메시지 압축함수로, 전자서명, 메시지 인증, 전자화폐, 키 생성 알고리즘 등 여러 분야에서 암호시스템의 핵심요소로서 널리 사용되고 있다. 해쉬함수가 암호시스템 (프로토콜)에서 암호학적으로 안전하게 이용되기 위해서는 기본적으로 다음과 같은 세 가지 성질을 만족하여야 한다.
0 역상저항성 : g가 주어졌을 때, hS=g를 만족하는 r를 찾는 것이 계산상 불가능하다.
。제 2 역상저항성 : 九(挤 = 9을 만족하는 X, g가 주어졌을 때, Xex , /i(z')=4를 만족하는 £을 찾는 것이 계산상 불가능하다.
0 충돌 저항성 : /i(z) =/i(z')을 만족하는 서로 다른 z, /을 찾는 것이 계산상 불가능하다.
위의 세 가지 성질을 모두 만족해야만 해쉬함수는암호시스템에서 안전하게 사용될 수 있다. 하지만, 2005년 중국의 Wange 현재 가장 널리 사용되고 있는 전용 해쉬함수들(MD4, MD5, HAVAL, RIPEMD, SHA-0/1) 에 대한 일반화된 충돌쌍 공격 기법을 소개하였다〔6-9〕. Wang의 충돌쌍 공격이 소개된 이후, 많은 암호학자들은 Wang의 공격기법을 토대로 더욱 더 강력하고 일반화된 해쉬함수 분석방법들을 소개하였다. 더 나아가 Wang의 분석기법을 토대로 완성된 해쉬함수 분석방법은 해쉬함수가 기반이 되는 실제 프로토콜의 취약점 분석에도 이용되었다. FSE'07 에서 Leurent는 Wang의 충돌쌍 공격을 이용하여 MD4와 MD5에 기반을 둔 APOP 프로토콜의 비밀키 복구 공격을 소개하였으며〔1〕, AFRICACRYPT'08에서 Sasaki 등은 블록암호의 불능차분공격 기법을 이용하여 MD4 기반 도전-응답 프로토콜의 비밀키 복구 공격을 소개하였다〔10, 11〕.
ASIACRYPT'06에서 Contini 등은 해쉬함수의충돌쌍 공격을 이용하여 MD4. MD5, SHA-0, reduced SHAT을 기반으로 하는 HMAC/NMAC 에 대한 구별 공격 , 내부 키 복구 공격 및 위조 공격을 소개하였다⑸. CRYPTO'07에서 Fouque 등은 MD4와 MD5를 사용하는 HMAC/NMAC에 대한 외부 키 복구 공격을 소개하였다〔4〕. 기존에 제시된 키 복구 공격은 충돌 쌍을 발생시키는 차분 경로를 이용하였다. 즉, 충돌 쌍을 발생시키는 차분 경로를 이용하여 공격을 시도하였다. 그러나 키 복구 공격의 경우 충돌쌍을 발생시키는 차분 경로가 아니라 높은 확률로 특정 차분을 발생시키는 차분 경로가 존재한다면 좀 더 효율적으로 공격을 성공시킬 수 있다.
EUROCRYPT'08에서 Lei Wang 등은 그들이 발견한 MD4 근사 충돌쌍 공격을 이용한 HMAC/NMAC -MD4 키 복구 공격과, MD5 pseudo 충돌쌍 공격을 이용한 HMAC/NMAC-MD5 키 복구 공격을 소개하였다〔2〕.
본 논문에서는 EUROCRYPT'08에서 Lei Wang 등이 소개한 HMAC/NMAC-MD4 키 복구 공격을 향상시킨 분석방법을 소개한다. Lei Wang 등은 근사 충돌 쌍을 발생시키는 새로운 차분 경로를 제시하고, 외부 키를 복구하기 위하여 근사 충돌쌍 특성을 이용하였다. 하지만 Lei Wang의 HMAC/ NMAC-MD4 키 복구 공격의 경우, 외부 키 복구 알고리즘에서 공격자가 복구하고자 하는 외부 키 128비트 중 특성식이 존재하지 않는 비트들을 전수조사를 통해 복구하기 때문에 매우 비효율적이다. 본 논문에서는 HMAC/NMAC -MD4의 외부 키 128비트를 특성식을 기준으로 하위비트들로 분할하고 순차적으로 부분 키 비트를 복구하는 분할-정복(divide and conquer) 공격 알고리즘을 제시한다.〔표 1〕은 본 논문에서 제시하는 외부 키복구 공격 알고리즘을 이용한 분석 결과와 기존의 결과를 비교한 것이다.
〔표 1) 기 제안된 분석 결과와 본 논문의 분석 결과 비교
본 논문은 구성은 다음과 같다. 2장에서는 공격을 소개하기에 앞서 MD4 알고리즘과, HMAC/NMAC 알고리즘을 소개한다. 3장에서는 기 제안된 HMAC/ NMAC 공격 과정을 간략히 소개하고, 4장에서는 3장에서 제시된 공격 과정을 토대로 향상된 외부 키 복구 공격 알고리즘을 소개하고 공격 복잡도를 계산한다. 5 장은 결론이다.
Ⅱ. 배경 이론
본 절에서는 MD4 해쉬함수를 간략히 소개하고, HMAC/NMAC 알고리즘에 대하여 소개한다.
2.1 MD4 해쉬함수
MD4는 1990년 Rivest에 의하여 개발된 해쉬함수로서 임의의 길이 메시지를 입력받아 128비트 해쉬값을 출력한다. 임의의 메시지가 주어지면 MD4 해쉬함수는 메시지의 길이가 512비트의 배수가 되도록 덧붙이기 (padding)를 수행하고, Merkle-Damgard 구성 방법을 이용하여 128비트 해쉬값을 출력한다. MD4의 압축함수는 32비트 워드 단위로 동작하며 효율성을 극대화하기 위해서 다음과 같은 단순한 연산들의 조합으로 설계되었다.
0 <: 왼쪽 순환 이동 연산
0 田: 워드간의 产을 법으로 하는 덧셈 연산
0 V, A, e: 각각 비트별 NOT, AND, OR, XOR 연산
0 A+= B-. 임의의 A, 3에 대하여』와 3를 더한 값을』에 입력
MD4 압축함수는 3라운드로 구성되며 각 라운드는 16단계로 수행된다. 각 라운드는 다음과 같은 비선형부울함수를 이용한다. 단, X, 匕 Z는 32비트 워드이다.
0 1라운드(0MZ<16):
/, UK2)= (XAy)vGXAZ) 0
2라운드 (16 < i < 32)-
/, (X, 匕Z) = (X/\ Y) V (XAZ) V (YAZ) 0
3라운드(32 < « <48):
ft(X, Y, ^) = X®Y®Z
MD4 압축함수에 입력된 512비트 메시지는 16개의 메시지 워드로 분할되며, 메시지 확장과정을 통하여 48개의 메시지 워드로 확장된다. MD4 해쉬함수의 메시지 확장과정은 다음과 같이 메시지를 재배열하며 메시지 재배열 규칙은〔표 2〕와 같다.
[표 2] MD4 압축함수의 메시지 확장 과정
MD4 압축함수는 4개의 내부 상태값을 가지며 , 각 단계마다 1개의 내부 상태값이 갱신되며 본 연구에서는, 번째 단계에 갱신되는 내부 상태값을 a„ bt. c, , dt 라 한다. k, 와 与를 각각 2번째 단계에 사용되는 32비트상수와 순환 이동값이라고 한다면 MD4 압축함수는 〔표 4〕와 같이 정의된다. 각 단계별 순환 이동값、는 〔표 3〕과 같다.
[표 3] MD4 압축함수의 Z번째 단계에 필요한 순환 이동값
[표 4] MD4 압축함수
2.2 HMAC/NMAC 알고리즘
HMAC과 NMACe Bellare, Canetti, Krawczyk에 의하여 제안된 해쉬함수 기반 메시지 인증 코드〔3〕 로서 다음과 같은 이유에서 매우 흥미로운 연구분야다.
0 HMACe 표준화됨 : ANSI, IETF, ISO, NIST
o HMACe 다양한 프로토콜 환경에서 이용됨: SSL, TLS, SSH, IPsec
o HMAC과 NMAC는 안정성 증명이 이루어짐
0 HMAC과 NMAC는 단순한 구조를 가지고 있음
Me 메시지. fc는 비밀키, 〒는 해쉬함수의 블록 크기만큼 k에 0을 덧붙이기 한 값(씨HX)...O)이라고 할 때, HMACe 다음과 같이 정의된다.
HMACjM= H(k(f)crpad || jH(k(Sipad || AJ)).
단, opad와 ipad는 고정된 1 블록 크기의 상수 값이다. (如电)를 비밀키라고 할 때, NMACe 다음과 같이 정의된다.
海件疽物=끼%
따라서 덧붙이기에 포함되는 메시지 길이의 변화를 제외하면 HMACe 板4%谜” 成命湖로 정의할 수 있다. 우선적으로 NMAC에 대한 안정성 증명이 이루어졌으며 , 이를 이용하여 HMAC에 대한 안전성으로 확장되었다. 본 논문에서는 糾과 를 각각 외부 키와 내부 키를 표기한다. 따라서 4과 电는 각각 외부 해쉬함수 %, (.)와 내부 해쉬함수 %, (.)에 대응한다.
Ⅲ. 기 제안된 HMAC/NMAC-MD4 키 복구 공격 시나리오
본 절에서는 ASIACRYPT'06에서 ConEini와 Yin 이 제시한 내부 키 복구 공격〔5〕과 CRYPTO'07에서 Fouque, Leurent, Nguyen이 제시한 외부 키 복구 공격〔4〕을 소개한다. 더 나아가, EUROCRYPT'08에서 Wang, Ohta, Kunihiro가 제시한 향상된 외부 키 공격을 소개한다〔2〕.
3.1 Contini와 Yin이 제안한 내부 키 복구 공격(CY 공격) ⑸
Contini와 Yine MD4의 충돌쌍 공격을 이용한 내부 키 복구 공격을 소개하였다. Contini와 Yine 내부함수 티、.)가 충돌하면 반드시 %(%㎛)가 충돌히는 성질을 이용하였다〔5〕. 즉, 공격자가 구성한 메시지 차분을 만족하는 서로 다른 메시지쌍에 대하여 내부함수 %.(-)의 결과값이 충돌할 확률은 매우 높으며 내부충돌이 발생하면 반드시 NMA(XM)^ = 海4«归')을 만족한다. 반면, 내부 충돌이 발생하지 않은 조건하에 외부 함수 NMA(XM} = NMA<XM'} 을 만족할 확률은 으로 매우 낮다. 따라서 메시지쌍(MM')에 대하여 A財4C(蘋 = 을 만족하면, 내부 충돌이 발생함을 확인할 수 있고, 공격자가 구성한 메시지 차분 △也과 메시지 차분 경로 DP을이용하여 내부 키 楊를 복구할 수 있다. Contini와 Yin이 제안한 내부 키 姻의 복구 공격은 다음과 같다.
① MD4 충돌쌍 공격을 위한 메시지 차분 과메시지 차분 경로 DP를 결정한다. ne 충돌 쌍 공격을 성공시키기 위한 충분조건의 개수이다.
② 랜덤한 메시지 블록 Af을 생성하고. HMAC/ NMAC에 대한 충돌쌍 "A( +△物을 찾을 때까지. 메시지쌍 (M財+△制를 HMAC/ NMAC 오라클에게 질의한다. 충분조건의 개수가 n개이기 때문에 평균적으로 麥개의 질의를 하면 1개의 충돌쌍을 찾을 수 있다.
③ 충돌쌍 (以, 必+△汨)의 충분조건을 이용하여. 내부함수 H(奶, 域)의 첫 번째 라운드 특정 t 단계에 갱신되는 내부 상태값 Q를 알 수 있다.
④ t 단계의 내부 상태값과 메시지 綱값을 이용하여 MD4 단계함수의 역 연산을 통하여 내부키 电를 복구할 수 있다.
3.2 Fouque, Leurent, NguyenOI 제안한 외부 키복구 공격(FLN 공격)〔4〕
Fouque, Leurent, Nguyene CRYPTO'07에서 MD4 기반 HMAC/NMAC에 대한 전체 키 복구 공격을 소개하였다〔4〕. Contini와 Yin이 제안한 내부 키 공격을 이용하여 내부 키를 복구하면, 외부 키 死를 찾을 수 있다. 복구된 내부 키 幻를 이용하여 메시지 别에 대한 내부 해쉬함수의 결과값을 HJM 계산할 수 있다. 따라서 충돌쌍 공격을 위해 구성한 메시지 차분을 라고 할 때, 생일 공격을 이용하여
을 만족하는 메시지 쌍 (MA/)을 생성할 수 있다. 생성된 메시지 쌍 W』/)은 %(』/') = %㎛+ △財을만족하며 , 비록 내부 충돌이 발생하지는 않더라도 외부 충돌이 발생한다. 즉, 을만 족할 확률이 매우 높다. 공격자는 내부 해쉬함수의결과값 风妙을 계산할 수 있으므로, 공격자가 구성한 메시지 차분 AA?4 메시지 차분 경로 DP을 이용하여 외부 키 "을 복구할 수 있다. Fouque, Leurent, Nguyen이 제안한 외부 키 &의 복구 공격은 다음과 같다.
① MD4 충돌쌍 공격을 위한 메시지 차분 △归과외부 키 4의한 비트에 의하여 종속적으로 결정되는 충분조건을 갖는 메시지 차분 경로 成를결정한다. ne 충돌쌍 공격을 성공시키기 위한 충분조건의 개수이다.
② Hk> {M') =+ 厶M을 만족하는 메 시 지 쌍 (溷, 订‘)을 생성한다.
③ 메시지쌍 WH)을 HMAC/NMAC 오라클에게 질의한다. 충분조건의 개수가 ”개이기 때문에 평균적으로 2”개의 질의를 하면 1개의 충돌 쌍 "絕')을 찾을 수 있다. 충돌쌍 W, 藉') 에 대하여 외부 키 尙의 특정비트는 충분조건을 만족한다. 따라서 2" + i개의 질의를 통하여 외부키 4의한 비트를 복구 할 수 있다.
④ 메시지 차분 △7VZ과 메시지 차분 경로 DI를 변경하여 외부 키 4의 다른 비트들을 복구한다.
3.3 Wang, Ohta, Kunihiro가 제안한 향상된 외부키 복구 공격〔2〕
Wang, Ohta, Kunihiro는 EUROCRYPT'08에서 Fouque, Leurent, Nguyen이 제안한 외부 키 복구 공격을 근사 충돌쌍 공격을 이용하여 향상시켰다〔2〕. 즉, Fouque, Leurent, Nguyen이 외부 키 복구 공격을 위한 특성식으로 충돌쌍 경로를 이용하였다면 Wang, Ohta, Kunihiro는 외부 키 복구 공격을 위한 특성 식으로 근사 충돌쌍 경로를 이용한다. Wang, Ohta, Kunihiro가 제안한 근사 충돌쌍 경로가 기 제안된 충돌 쌍 경로보다 만족할 확률적으로 매우 높기 때문에 (충분조건의 개수가 작음) , 외부 키 4을 복구하는 공격 복잡도가 매우 향상되었다.
본 논문에서는 Wang, Ohta, Kunihiro의 외부키 복구 공격 개념을 이용하므로, 본 절에서 Wang, Ohta, Kunihiro의 외부 키 복구 공격을 자세히 살펴본다. 본 소절에서는 Contini와 Yin이 제안한 내부 키 공격을 이용하여 내부 키를 복구하였다고 가정한다. 각각의 워드를 32비트라고 할 때, HMAC/ NMAC에 대한 외부 키 如은 &也, 处也)로 표기하고, 외부 해쉬함수 丑의 48번째 단계의 출력값은 (* % 膈 %, 必)로 표기한다. 따라서 HMAC/NMAC 의 출력값은 다음과 같다.
(K, 如 hc, hj= (fc, , +a48, kb + biS, kb + cis, kb + dis).
위 수식을 이용하여 다음의 성질을 이끌어 낼 수 있다.
△如=Aa48, Ahb = Abw
사匕 = 사爲 = A(i48-
따라서 HMAC/NMAC의 출력값으로부터 외부해쉬함수 H, A . )의 출력 차분을 알 수 있으며, 결과적으로 마지 막 네 단계(45-단계 , 46-단계 , 47-단계 , 48-단계 ) 에서 갱신되는 내부 상태값의 차분 형태를 알 수 있다. 위 특성을 이용하여 ka, kc, 处의 특정 비트값들을 복구할 수 있다. 본 절에서는 Wang. Ohta, Kunihiro의 MD4 근사 충돌쌍 공격을 소개하고, 이를 이용한 MD4 기반 HMAC/NMAC 키 복구 공격을 소개한다.
3.3.1 MD4 근사 충돌쌍 공격
Wang, Ohta, Kunihiro의 근사 충돌쌍 공격을 위한 메시지 차분 형태는 다음과 같다〔2〕.
△M= M' — M= (Am0, Am1, ■■■, Am15),
Am3 = 2! 0 = 3 ~5, 7 ~17, 20 ~25), △叫=0(0 < J < 15, 丿 x 3).
즉, 메시지 吸에만 차분이 존재하며, 2 = 3일 때 메시지 차분에 대한 차분경로를 부록 A에 제시한다. 단지 "=3 ~5, 7~17, 20~25일 때만 주어진 차분 경로가 유지된다. 그 밖의 경우에는 차분경로에서 발생하는 올림(carry)이 끊기기 때문에 차분경로를 만족하지않는다. 위에서 제시한 메시지 차분에 대한 차분 경로는 29번째 단계에서 충돌을 발생시키며, 45번째 단계에서 추가적으로 메시지 차분이 입력되기 때문에, 45 번째 입력된 차분에 의하여 48번째 단계의 출력값의 차분 형태가 결정되며 근사 충돌을 발생시킨다. 즉, MD4에 대한 근사 충돌쌍 형태는 메시지 屿의 차분에 따라 결정된다.
3.3.2 온라인 과정데이터 수집 과정)
메시지 차분 =* 2(1 = 3-5, 7- 17, 20-25)) 을 만족하는 메시지 쌍 들에 대하여 다음 과정에 따라 각각의 조건을 만족하는 메시지로 분류한다.
① 생일공격을 이용하여 MDA」、k» M') = MD4腿M) + △〃을 만족하는 메시지 쌍 WW)을 생성한다.
② 생성된 메시지 쌍 을 HMAC/NMAC 오라클에 질의하고, 응답을 받아 근사 충돌이 발생하는 메시지 쌍 (MAT)을 다음과 같이 분류한다.
®HMAC/NMAC의 출력차분이
△纪=2好 3, △如, =* 2" + 23 ±2好 M ± 2, + 3,
△& =* 矿 + 12을 만족하는 메시지 쌍
®(Ag, <): HMAC/NMAC의 출력차분이
△奴=2' +3, △知=* 牙 + 23 * 牙 + %
△ 을 만족하는 메시지 쌍
©(A们闻'): HMAC/NMAC 의 출력차분이
△& =2' + 3, A/Ic=*2 , + 14 ±2' + 23 ±* 2 +气
△知 =*2 好*을 만족하는 메시지 쌍
③ 가능한 모든 메시지 차분 Z에 대하여 차분의 위치 z를 변경하여 ①과 ②의 과정을 반복한다.
단, *는 어떠한 부호여도 상관없다는 뜻이며, 土는 부호의 형태가 + 혹은 -로 동일하게 유지되어야 함을 뜻한다. HMAC/NMAC의 출력값 중 3개의 워드가 조건을 만족하여야 하므로, 임의의 메시지쌍에 대하여주어 진 근사 충돌 형태를 가질 확률은 2- 如이다. 하지만, 주어진 메시지 차분 △也에 대하여 주어진 근사 충돌 형태를 가질 확률은 2-"(厂就 + 时)이다. 29번째 단계까지의 차분 경로를 만족할 확률이 2*枫(충분조건의 개수가 60)이고, 근사 충돌을 발생하기 위한 확률이 厂4이다. 자세한 설명은〔幻를 참고하여라.
위에서 제시한 데이터 수집과정을 통하여 수집된 데이터는 다음을 만족한다. 자세한 설명은〔2〕를 참고하여라.
K :知, "3 = 1; K : %章 + 23 = 1;」场:<48., + 12 = 1 위의 식에서 <, 网, 에 대한 i 값은 다음의 조건일 때만 만족한다.
0 / = 3~5, 7~15, 20~25일 때만 만족
0 域 : 4 = 3~5, 9~17, 20~23일 때만 만족
0 ■物 : 2 = 3~5, 9~17, 21 ~25일 때만 만족
그 밖에는 차분 경로에서 발생하는 올림이 끊기기 때문에 차분경로를 만족하지 않는다. 여기서 〃는 메시지의 차분이 존재하는 비트의 위치를 뜻한다.
3.3.3 오프라인 과정(키 복구 과정)
fe0, fcc, 를 복구하는 방법은 모두 동일하며 본 소절에서는 단지 4를 복구하는 방법만을 설명한다. 如를 복구하는 과정은 다음과 같다.
0 Wang, Ohta, Kimihiro의 HMAC/NMAC 외부 키 k, =(ka, kb, kc, kd) 복구 알고리즘
① 메시지 차분 絕「3으로부터 a依, 의 등식을 획득할 수 없는 ?; = 0 ~ 5, 9, 19 ~ 22, 29 ~ 31에 대하여, 纭, 의 값을 추측한다(총 14비트). 이 비트들은 이후 전수조사를 통하여 복구할 것이다.
② 处의 다른 비트들은 최하위비트에서 최상위비트로 M-3을 이용하여 복구할 수 있다. 우선 知, 6 을 姬을 이용하여 다음과 같이 복구한다.
- 哈 복구 방법 : k…。과 % -。의 값을 비교한다. @ 만약 虹… > 奴""이면, 如+知을 계산할 때 5번째 비트에서 6번째 비트로 올림이 존재한다.
® 만약 그렇지 않으면, 如+<知을 계산할 때 5 번째 비트에서 6번째 비트로 올림이 존재하지 않는다.
© 細"6 = 1을 만족하며. 九"의 값, 그리고 5번째 비트에서 6번째 비트로 올림의 값을 알기떄문에, 저成의 값을 계산할 수 있다
③ 따라서 § = 6 ~ 8, 10~ 18, 23~ 28에 대하여 , 을 이용하여 최하위비트부터 최상위비트로 虹“ 를 단계적으로 복구할 수 있다.
3.3.4 공격 복잡도
3.3.3에서 제시한 키 복구 과정을 이용하면, 如의 18비트, 处의 17비트, 险의 16비트를 복구할 수 있다. 따라서 총 51비트를 복구할 수 있으며, 나머지 77(128-51)비트는 복구할 수 없으므로 전수조사를 통하여 복구한다. 따라서 128비트 키를 모두 복구하기 위해서는 2* 의 MD4 연산이 필요하다. 데이터 수집과정에서는 51비트의 키를 복구하기 위한 근사 충돌 쌍을 수집하여야 한다. 각각의 也 , 理, "을 만족하는 근사 충돌쌍이 발생할 확률은 2的4이므로 51 x264<272 의 질의량이 필요하다.
Ⅳ. 개선된 HMAC/NMAC-MD4 외부 키 복구 공격
본 절에서는 Wang, Ohta, Kunihiro 등이 제안한 HMAC/NMAC 외부 키 복구 과정을 향상시킨새로운 외부 키 복구 공격 알고리즘을 소개하고 공격복잡도를 계산한다’
4.1 향상된 HMAC/NMAC-MD4 키 복구 과정
향상된 HMAC/NMAC 키 복구 공격 중 온라인과정(데이터 수집과정)은 Wang, Ohta, Kunihiro 의 방법과 동일하므로 본 소절에서는 설명을 생략한다. 본 소절에서는 오프라인 과정(키 복구 과정) 만을설명한다. HMAC/NMAC의 외부 키 복구 과정을 설명하기에 앞서 몇 가지 표기법을 정의한다.
0 Keysete 如의 0번째 비트부터 2번째 비트까지 好1비트로 구성된 키 후보 집합으로 2好1개의 원소로 초기화된다. 그러나 하위 비트를 복구한 경우 키 후보 집합의 원소의 개수는 복구된 키 비트만큼 줄어든다.
0 DataSet1-. 知 ~ °을 복구하기 위해 필요한 데이터 집합으로 3을 만족하는 해쉬값을 원소로 갖는다. "「을 복구하기 위해 필요한 데이터 집합 DataSe0의 양은 다음 소절에서 자세히 제시한다.
ka, kc, 处를 복구하는 방법은 모두 동일하며 본 소절에서는 단지 如를 복구하는 방법만을 설명한다. 如를 복구하는 과정은 다음과 같다.
0 개선된 HMAC/NMAC 외부 키 kx = (&, kb, kc, kd) 복구 알고리즘
① 가능한 모든 키 후보 如宀。을 키 후보 집합 压株에 저장한다.
② 也f 을 만족하는 해쉬값 邕…을 데이터 집합 DataSet'^ 저장한다.
③ 데이터 집합 DataSet'^ 저장된 &3~(击〕에 대하여 다음 과정을 반복한다.
@ 키 후보 집합 压gSet:에 속한 모든 원소 处” ~ 에 대하여 다음 과정을 반복한다.
o 만약 虹, t)攝]>y—)~。外면, k+ 緬을 계산할 때 5번째 비트에서 6번째 비트로 올림이 존재한다.
© 만약 그렇지 않으면, k + c%을 계산할 때 5번째 비트에서 6번째 비트로 올림이 존재하지 않는다.
© 知" =1을 만족하며 , 如의 값, 그리고 5번째 비트에서 6번째 비트로 올림의 값을 알기 때문에, 如"'의 값을 계산할 수 있다. Still'll:carry
® 幻“ = 如:이면 키 후보 집합 网龙에 남겨두고, 그렇지 않으면 버린다.
④ 만약 키 후보 집합 KeySet'a$\ 원소가 한 개면 ⑤ 번을 실행하고, 그렇지 않으면 顶 = 顶 + 1하고 ③ 을 실행한다.
⑤ 따라서 Z = 6 ~ 8, 10 ~ 18, 23 ~ 28에 대하여 , ①을실행한다. 驱「3을 만족하는 데이터 집합 DMSe弋을 이용하여 최하위부터 최상위비트로 如-。를 복구할 수 있다. 2 = 6일 때 妇-。을 복구할 수 있으며, z = 7일 때는 이미 fc„ 6 - °을 복구하였으므로 如”만을 복구하면 된다. 같은 방법으로 키의 상위비트를 순차적으로 복구해 나간다.
(표 6) 4를 복구하기 위하여 필요한 데이터 양
(표 7) 相를 복구하기 위하여 필요한 데이터 양
4.2 공격 복잡도
본 소절에서는 HMAC/NMAC의 외부 키 幻 = (队也也也)를 복구하기 위해 필요한 공격 복잡도를 계산한다. 우선 공격을 위해 필요한 데이터양을 계산하고, 필요한 데이터를 획득하기 위해 HMAC/ NMAC 오라클에 질의하여야 하는 양을 계산한다. 그리고 HMAC/NMAC 오라클 질의에 의하여 획득한 데이터를 이용하여 HMAC/NMAC의 외부 키 妃을복구하기 위한 공격 복잡도를 계산한다.
4.2.1 온라인 질의량 (데이터 복잡도)
본 소절에서는 옳은 키 如을 유일하게 결정하기 위해서 필요한 데이터 집합 就의 크기를 계산한다. 만약 추측한 키 »心顼이 c비트라고 한다면 한 개의 데이터를 이용하여 如키 후보 집합을 계산하면 정확하게 개가 존재한다. 왜냐하면(비트 덧셈에서 최상위 비트가 특정 충분조건(知, = 幻“')을 만족할 확률은 이기 때문이다. 남겨진 개의 후보 키에 대하여 추가적으로 두 개의 데이터를 이용하여(비트키 후보 집합을 계산하면 확률적으로 2。-2개가 존재한다. 왜냐하면, 덧셈 연산 시 c-1 번째 키 비트에 의하여 올림이 발생하여 c번째 비트에 영향을 줄 확률이 厂1이기 때문이다. 따라서 추가적으로 약 두 개의 데이터를 이용하면 후보 키를 2宀로 줄일 수 있다.
개의 후보 키에 대하여 추가적으로 네 개의 데이터를 이용하여 c비트 키 후보 집합을 계산하면 확률적으로 2。-3개가 존재한다. 왜냐하면, 덧셈 연산 시 c-2 번째키 비트에 의하여 올림이 발생하여 c번째 비트에 영향을 줄 확률이 2-2이기 때문이다. 따라서 추가 적으로 약 네 개의 데이터를 이용하면 후보 키를 로 줄일 수 있다. 이와 같은 성질을 이용하여 공격자가 유일한 키를 결정하기 위한 데이터양을 계산할 수 있다.
〃(砂를 키 知-。를 유일하게 결정하기 위해서 필요한 데이터 집합 DataSet'^ 크기라고 한다면 는 다음과 같이 계산 할 수 있다.
P(j) = 1 + 21 + 22 +...+2<
=丄啓+ "=2宀_]. 2-1
따라서 4 = 6일 경우 필요한 데이터양은 2, -1이다. 그리고 키 给…。을 유일하게 결정하기 위해서 필요한 데이터를 얻기 위해서 공격자가 HMAC/ NMAC 오라클에게 질의하여야 할 메시지쌍의 개수를 QVG) 라 할 때 QA&)는 다음과 같이 계산 할 수 있다.
따라서 寸 = 6일 경우 필요한 데이터양은(2, -l) 이다.〔표 5〕는 灰를 복구하기 위해 필요한 데이터양을 나타낸다. 如의 최하위부터 순차적으로 키를 복구하기 때문에 상위비트 복구하기 위해서 추가적으로 하위 비트의 키를 복구하지 않아도 된다. 예를 들어, =7일때, %, °~°은 복구되었으므로 奴7만 복구하면 된다. ③-每)-(©에서 瞄=嘴 조건을 만족할 확률은 기이므로 队”을 복구하기 위해서 필요한 데이터양은 1개이다.
(표 5) 如를 복구하기 위하여 필요한 데이터 양
〔표 5, 6, 7〕에 의하여 fco, k” 幻를 복구하기 위해 필요한 질의량은 다음과 같다.
(162+ 8225 +544)X264 - 8931 X264 ^ 277'1246.
4.2.2 공격 복잡도
幻, 幻, 处를 복구하기 위한 공격 복잡도 계산 방법은 모두 동일하다. 따라서 본 소절에서는 々를 복구하기 위해 필요한 공격 복잡도 계산 방법만을 설명하고, kc, 处를 복구하기 위해 필요한 공격 복잡도는 결과만을 제시한다. 앞서 공격 방법에서 설명하였듯이 处의하위비트부터 순차적으로 키 비트를 복구해 가기 때문에 순차적으로 공격 복잡도를 계산한다.。侦)는을 복구하기 위해 필요한 공격 복잡도이다.
0 을 복구하기 위한 공격 복잡도 : M.aSets 에 포함된 를 이용하여 2, 개의 후보 키에 대하여 ③-④를 수행하면 후보 키는 2。개로 줄어들고, 두 개의 데이터 /静-。図, 山 -。(3)을이용하여 2。개의 후보에 대하여 ③-(1)를 수행하면 후보 키는 2, 개로 줄어든다. 이와 같은 과정을 반복하므로, 奴을 복구하기 위한 공격 복잡도는 다음과 같이 계산된다.
0(6)- 27 XI + 26 X21 + 25 X22 + 24 X23 + 23 X24 + 22 X25 + 21 X2fi - 7 . 27.
0 <7, 叽을 복구하기 위한 공격 복잡도: 이미 如"-0을 복구하였으므로, 歸1을 복구하기 위 해서는 如JU을 이용하여 2】개의 후보 키에 대하여 ③-®를 수행하면 S을 복구할 수 있다. 마찬가지로 歸"。을 복구하였으므로, 奴8을 복구하기 위해서는 妃丄 1]을 이용하여 21개의 후보 키에 대하여 ③-④를 수행하면 奴8을 복구할 수 있다. 0 知」。“를 복구하기 위한 공격 복잡도: 이 미 幻 SO을 복구하였으므로, 如, m —9를 복구하기 위해서는 奴을 이용하여 2?개의 후보 키에 대하여 ③, ④를 수행하면 奴1。~ 9를 복구할 수 있다. 幻.『9를 복구하기 위한 공격 복잡도는 다음과 같이 계산된다.
0(10)= 22 XI + 21 X22 = 2 . 22.
위에 설명된 방법에 의하여 키 如를 복구할 수 있으며 , 如를 복구하는데 필요한 공격 복잡도는〔표 8〕 와같다. 또한 키 kc, 处를 복구하기 위해 필요한 공격 복잡도는 〔표 9, 10〕과 같다.
〔표 8) 如를 복구하기 위한 공격복잡도
(표 9) 处를 복구하기 위한 공격복잡도
(표 10) 屁를 복구하기 위한 공격복잡도
본 논문에서 제시한 향상된 HMAC/NMAC 외부키 복구 방법을 이용하면 1086 + 106608 + 4710= 112404 = 216383의 공격 복잡도로 k노 29비트, 奴는 32비트, 处는 30비트를 복구 할 수 있다. 따라서 그 밖의 키 37(128-91)비트는 전수조사를 통하여 복구할 수 있다. 따라서 128비트 키를 모두 복구하기 위해서는 2* 의 MD4 연산이 필요하다.
Ⅴ. 결론
본 논문에서는 EUROCRYPT'08 에서 Lei Wang 등이 소개한 HMAC/NMAC-MD4 키 복구 공격을 향상시킨 분석 방법을 소개하였다. Lei Wang 등은 근사 충돌쌍을 발생시키는 새로운 차분 경로를 제시하고, 외부 키를 복구하기 위하여 근사 충돌 쌍 특성을 이용하였다. 하지만 Lei Wang의 HMAC/NMAC- MD4 키 복구 공격의 경우, 외부키 복구 알고리즘에서 공격자가 복구하고자 하는 외부키 128비트 중 특성식이 존재하는 5[비트만을 특성 식을 통하여 복구하고, 그 이외의 77비트는 전수 조사를 통하여 복구하기 때문에 매우 비효율적이다 본 논문에서는 HMAC/NMAOMD4의 외부 키 128비트 중 특성 식이 존재하는 비트의 하위 비트를 특성식을 기준으로 분할하여 순차적으로 외부 키 128비트 복구하기 때문에 Lei UEng의 HMAC/ NMAC-MD4 외부키 복구 공격을 향상시킬 수 있었다. 본 논문에서 제시한 분할-정복(divide and eonquer)을 이용한 새로운 외부 키 복구 공격 알고리즘은 HMAC/NMAC 오라클에 대한 질의량 2, "郷과 MD4 계산량 1泸으로외부 키를 복구할 수 있다.〔표 1〕에서 제시한 바와 같이 본 논문의 분석 결과는 기 제안된 Lei Wang의 분석 방법의 MD4 계산량은 2〃에서 2混으로 대폭 감소 시 켰다.
참고문헌
- G. Leurent, "Message Freedom in MD4 and MD5 Collisions: Application to APOP," Advances in Cryptology - FSE 2007, LNCS 4593 pp. 309-328, 2007 https://doi.org/10.1007/978-3-540-74619-5
- L. Wang, K. Ohta. and N. Kunihiro, ''New Key-Recovery Attacks on HMAC/NMACMD4 and NMAC-MD5," Advances in Cryptology - EUROCRYPT 2008, LNCS 4965, pp. 237-253, 2008 https://doi.org/10.1007/978-3-540-78967-3
- M. Bellare. R. Canetti. and H. Krawczyk. "Keying Hash Functions for Message Authentication." Advances in Cryptology - CRYPTO 1996, LNCS 1109, pp. 1-15,1996 https://doi.org/10.1007/3-540-68697-5
- PA Fouque. G. Leurent. and P.Q. Nguyen, "Full Key-Recovery Attacks on HMAC/NMAC- MD4 and NMAC-MD5," Advances in Cryptology CRYPTO 2007,LNCS 4622. pp. 13-30, 2007 https://doi.org/10.1007/978-3-540-74143-5_2
- S. Contini and Y.L. Yin, "Forgery and Partial Key-Recovery Attacks on HMAC and NMAC Using Hash Collisions," Advances in Cryptology - ASlACRYPT 2006, LNCS 4284. pp. 37-53, 2006 https://doi.org/10.1007/11935230_3
- X. Wang. X. Lai. D. Feng, H. Chen. and X. Yu. "Cryptanalysis of the Hash Functions MD4 and RIPEMD," Advances in Cryptology - EUROCRYPT 2005, LNCS 3494, pp. 1-18, 2005 https://doi.org/10.1007/b136415
- X. Wang and H. Yu. "How to Break MD5 and Other Hash Functions." Advances in Cryptology - EUROCRYPT 2005, LNCS 3494, pp. 19-35, 2005 https://doi.org/10.1007/b136415
- X. Wang. H. Yu, and Y.L. Yin, "Efficient Collision Search Attacks on SHA-O," Advances in Cryptology CRYPTO 2005, LNCS 3621. pp. 1-16, 2005 https://doi.org/10.1007/11535218
- X. Wang. Y.L. Yin, and H. Yu, "Finding Collisions in the Full SHA-l," Advances in Cryptology CRYPTO 2005, LNCS 3621, pp. 17-36, 2005 https://doi.org/10.1007/11535218_2
- Y. Sasaki. G. Yamamoto, and K. Aoki. "Practical Password Recovery on an MD5 Challenge and Response," IACR ePrint archive 2007-101, Mar. 2007
- Y. Sasaki. L. Wang, K. Ohta, and N. Kunihiro. "Password Recovery on Challenge and Response: Impossible Differential Attack on Hash Function," Advances in Cryptology - AFRICACRYPT 2008, LNCS 5023, pp. 290-307, 2008 https://doi.org/10.1007/978-3-540-68164-9_20