Ⅰ. 서론
해쉬 함수는 길이가 유한한 임의의 메시지를 입력으로 하여 고정된 길이의 비트 열을 출력하는 다대일 함수를 말한다. 이러한 성질이 암호학 분야에서 암호학적 해쉬 함수라는 이름으로 인증 및 디지털 서명 분야에 응용이 되고 있다. 암호학적으로 해쉬함수가 만족해야할 성질은 다음과 같다.
첫째, 임의의 해쉬 값이 주어졌을 때 그것에 해당하는 입력 m을 구하는 것이 계산적으로 불가능해야 한다. 둘째, 주어진 입력에 대한 해쉬 값이 주어질 때. 같은 출력을 내는 다른 입력을 찾아내는 것이 계산상 불가능해야 한다.
셋째, 동일한 해쉬 값을 갖는 서로 다른 두 개의 메시지 m, 冰를 찾는 것이 계산적으로 불가능해야 한다. 잘 알려진 전용 해쉬 함수에는 1990년 Rivest가발표한 MD4⑶ 이후로 MD5⑷ HAVAL151, SHA-1 ⑹ 등이 나왔다. 이중 MD4는 전체 라운드에 대해 공격이 되었고⑺, MD5의 경우엔 초기 값을 다르게 했을 때 공격이 되었으며⑻, HAVAL은 부분적으로 공격이 되었다⑼.
최근 FSE 2002에서 한 대완 등은 PKC'98에제안된 해쉬 함수의 부울 함수가 당초 설계자의 의도와는 달리 일부 부울 함수가 SAC (Strict Avalanche Criterian)을 만족하지 않음을 지적하였다. 그리고, 설계자의 의도에 맞게 모든 부울 함수가 SAC 을 만족할 경우 2 *의 확률로 충돌 쌍을 찾는 방법을 제안하였다⑵. 하지만, 실제 PKC'98에 제안된해쉬 함수의 각 라운드에 사용된 3개의 부울 함수 중에 단 1개만이 SAC의 성질을 만족한다. 따라서 FSE 2002에 발표된 공격이 실제 해쉬 함수에 적용되지는 않는다.
본 논문에서는 FSE 2002에서 제안한 공격 방법을 개선하여, PKC'98에 제안된 해쉬 함수의 original version의 전체 라운드에 대해 厂跖"의 확률로 충돌 쌍을 찾을 수 있음을 보인다. 그리고, PKC'98 에서 제안된 해쉬 함수의 문제점이 메시지에 의존한 쉬프트 값의 사용에 있음을 지적한다.
Ⅱ. PKC'98에 제안된 해쉬 함수의 소개
지금부터는 PKC'98에 제안된 해쉬 함수를 간단히 P-해쉬 함수라고 부르자. 먼저 P-해쉬 함수에 사용되는 용어와 기호를 다음과 같이 정의한다.
- 워드 : 32 비트 스트링
- 블록 : 512비트 메시지(16개의 워드) : 법 232 에서의 덧셈 연산
- +
- X«s : X를 왼쪽으로 S비트의 순환이동 연산 - X A Y : 두 워드의 AND 연산
- X VY : 두 워드의 OR 연산 - X ①丫 : 두 워드의 XOR 연산
2.1 입력 블록의 크기와 패딩 과정
512비트 단위로 메시지를 처리한다. 512비트의배수가 되도록 메시지 뒤에다가 패딩작업을 하는데, 마지막 메시지의 길이가 448비트가 되도록 1 다음에 필요한 0의 개수만큼 채운다. 끝의 64비트에는메시지의 길이를 mod 2时로 계산하여 채운다.
2.2 초기 값IV)
메시지를 해쉬하는데 사용되는 5개의 연쇄변수의초기값은 다음과 같다.
초기값 (IV)
=(A, B, C, D, E) = (0x67452301, 0xefcdab89, 0x98badcef, 0x10325476, 0xc3d2elf0)
2.3 상수
각 라운드에서 사용되는 상수 代의 값은 다음과 같다.
Kr = 0
/C2 = 0x5 “827999 K^ = 0x6ed9ebal K4 = Qx8fkbbcdc
2.4 메시지 변수의 확장
512비트인 Xo, Xi.“・X]5 로부터 Xi6, Xm・“X23
을 다음과 같은 방식으로 확장하여 얻는다. 그래서 실제 각 라운드에는 768비트, 즉 24개의 워드가 적용된다.
#(1)
2.5 메시지 워드의 적용 순서
메시지 워드의 적용 순서를 정의하기 위해 먼저 다음의 순열 Q를 정의한다.
(표 1) 순열 P의 정의
순열 0에 의한 메시지 적용순서는 다음과 같다.
2.6 부울 함수
각 라운드에 사용되는 부울 함수는 다음과 같다. 이 중 为만이 SAC의 성질을 만족하고, 나머지 와은 SAC의 성질을 만족하지 않는다.
#(2)
#(3)
#(4)
2.7 단계 연산
각 단계에서의 연산은 다음과 같이 정의된다.
총 4라운드(96단계)로 이루어져 있는데, 1라운드 (0〜23단계)에는 h. 2라운드(24〜47단계) 에는 A , 3라운드(48〜기단계)에는/2, 4라운드(72〜95단계) 에는 다시 /1 이 각각 적용된다.
#(5)
2.8 순환 이동
각 단계에 사용되는 순환 이동의 값 S, .는 다음과 같이 메시지 워드에 의존하여 결정된다.
#(6)
다음은 라운드별 R 함수를 나타낸 것이다.
예를 들어. 20단계의 쉬프트 값인 &0을 구해보자. 20단계는 1라운드이므로 7?함수는 疽이다. 따라서 S2o = X°, (20)mod32 = Xa mod32 가 된다.
2.9 표로 살펴본 각 단계별 연산
다음의 표는 단계 0〜10까지의 연산에서 각 변수의 변화와 입력 워드 및 쉬프트에 사용되는 워드를 나타낸 것이다.
(표 2) 단계별 메시지 입력과 각 변수의 변화표
#: 각 단계마다 갱신되는 부분
예를 들어, Aa, 码는 다음과 같이 갱신된다.
Ao = [/o (A, B, C, D, E) + X。+ KJ <<s° = <x, 1 32, Ei = [f0(E0A0B0C0Dl)) + Xi + KJ 见, 球2)
Ⅲ. P-해쉬 함수의 분석
3.1 부울 함수에 대한 분석
각 라운드에 쓰인 부울 함수는 5개의 워드를 입력으로 받아 비트별 연산을 한 후 한 개의 워드를 출력한다.
부울 함수 h는 SAC을 만족한다. SAC 이라 함은 한 비트에만 차분을 줄 때. 출력비트가 0이될 확률이 1/2이 됨을 의미한다. SAC의 성질을 공격자의 입장에서 보면, 한 비트에만 차분을 줄 때 확률 1/2로 출력 차분을 0으로 만들 수 있음을 뜻한다.
FSE 2002에서 한 대완 등은 이러한 사실을 기초로 P-해쉬 함수의 제안자들의 의도대로 세 개의부울 함수가 SAC을 만족한다는 가정하에 2~3。의 확률로 충돌쌍을 찾는 방법(부울 함수의 5개의 입력 비트 중 한 개의 입력 비트에만 차분을 주어 차분 확산을 확률적으로 막는 방법)을 제안하였다. 그러나, 은 SAC을 만족하지 않기에 그 방법은 P-해쉬함수에 적용이 되지 않는다. 그 이유는 다음과 같다. 부울 함수 九는 마지막 입력 비트의 차분만이 1일 때, 출력 차분은 확률 1로 1이 됨을 알 수 있다. 그래서 차분 확산이 일어난다.
또한 부울 함수 片은 두 번째 비트의 차분만이 1일 때, 출력 차분은 확률 1로 1이 되는 성질이 있다. 이 역시 차분 확산을 일으킨다.
이러한 이유로 인해, 부울 함수의 한 개의 입력 비트에만 차분을 주는 방법으로는 P-해쉬 함수의 충돌 쌍을 찾을 수 없다. 그러나, 차분을 주는 입력 비트의 개수를 늘리는 식으로 한 대완 등이 제안한 방법을 개선하여 생각할 때, 상황은 달라진다. 왜냐하면, 齢\는 SAC을 만족하지는 않지만, 차분을 주는 비트의 개수를 늘려서 생각하면, 확률적으로 차분 확산을 막을 수 있기 때문이다. 다음의 표는 이를 잘 보여 준다.〔표 3〕은 번호 5와 13의 경우를 제외하고는 확률적으로 차분 확산을 막을 수 있음을 뜻한다.
(표 3) f1 함수의 입력 차분 비트의 위치 변화에 따라 출력 차분 비트가 0이 될 확률
3.2 단계 연산에 대한 분석
P-해쉬 함수에서 사용된 연쇄 변수는 5개이다. 식 (5)를 보았을 때, 부울 함수에 5개의 연쇄 변수가 그대로 적용이 되며, 하나의 연쇄 변수가 새롭게 갱신된다. 이어서 두 번째 연쇄 변수가 왼쪽으로 10 만큼 순환이동을 하고, 마지막으로 5개의 연쇄변수 (A, B, C. D. E)가 (B. C. D. E. A)로 순서가바뀌어서 다음 단계의 부울 함수에 적용이 된다.
여기서 주목해야 할 부분은 세 가지이다. 첫째, 두 종류의 쉬프트 값의 적용, 둘째, 5개의 연쇄 변수를 모두 부울 함수의 입력 값으로 처리한 부분이다(이와 같은 설계 방식은 차분 확산 효과를 크게 높이지 못한다). 셋째, 부울 함수의 특성에 있어서이다.
차분 공격 관점에서 바라봤을 때, 두 가지의 쉬프트 값과 연쇄 변수의 순서를 바꾸는 과정은 차분 확산을 일으킨다. 그리고, 차분 확산의 효과는 와같이 확률 1로 차분 확산을 일으킬 수 있는 부울 함수를 쓸 때 커진다. 또는 3 변수 혹은 4변수 부울 함수를 사용하고, 나머지 연쇄 변수는 덧셈 연산을 하면 차분 확산의 효과는 커지게 된다. 특히 갱신된 연쇄변수를 그 다음 단계에서 부울 함수에 작용시키는 것이 아니라 HAS-160의 경우처럼 덧셈 연산에 작용시키면, 차분의 효과는 더욱 커지게 된다.
구체적으로, 단계 연산에 있어서의 차분 분석을 위해 다음을 고려할 필요가 있다. 단계 연산에서는 £를 쓰지 않고, 법 232 위에서의 덧셈을 사용한다. 법 232 위에서의 덧셈을 的관점에서의 차분으로 식의 확률을 계산할 때는 carry 발생에 따른 확률을 생각해야 한다. 만약 k = 31 일 때, 즉 최상위비트에 대해서는 덧셈과 ® 연산은 동일한 역할을 하기에 carry 는 발생하지 않으며 , 나머지 비트에 대해서는 1/2의 확률로 carry가 발생하게 된다. 이를 정리하면 다음과 같다. 여기서 0는 식이 성립하는 확률을 나타낸다.
#(7)
#(8)
#(9)
#(10)
3.3 입력 메시지에 의존하는 쉬프트 값에 대한 분석
P-해쉬 함수는 입력 메시지에 의존하는 쉬프트 값을 사용한다. P-해쉬 함수의 제안자들은 이러한 쉬프트 값의 사용이 기존의 공격에 대해 안전성을 증가시킬 것이라고 주장하였다.
그러나, FSE 2002에서 한 대완 등은 메시지에 의존한 쉬프트 값이 오히려 공격자로 하여금 쉬프트 값을 임의적으로 조작하게 할 수 있음을 보여 주었다. 또한 그들은 메시지 워드에 의존하는 쉬프트 값이 전용 해쉬 함수에 적절치 않을 것이라고 추측을 하며 결론을 맺었다. 이 결론은 P-해쉬 함수와 같은 형태의 전용 해쉬 함수의 경우엔 옳은 말이다. 왜냐하면, 쉬프트 값의 임의 선택이 가능한 경우 차분 공격을 가능케 하기 때문이다. 그 이유는 다음과 같다. 차분( 企의 관점) 공격을 하기 위해서는〔표 3〕 과식 (7)〜(10)이 필요하다. 그런더], 쉬프트 값의 임의선택이 가능하다는 것은 차분이 발생한 비트의 위치를 원하는 위치로 변경시킬 수 있다는 뜻이 된다. 그래서〔표 3〕과 식 (7)〜(10)을 이용한 차분 확산의 차단을 가능케 한다. 일반적으로 쉬프트 값이 고정되어 있는 MDx계열의 해쉬 함수에 대해 차분 공격을 하기 위해서는 쉬프트 값, 메시지 워드의 확장, 그리고 메시지의 입력 순서를 동시에 고려해야 한다. 그러나, P-해쉬 함수는 메시지 워드의 확장과 입력 순서와 상관없이 선택된 메시지 워드에 따라 쉬프트 값을 적절히 조절함으로써 차분 공격이 가능하다.
그래서 다음 IV절에서는 차분 확률이 가장 높아지도록 하는 메시지 블록 쌍을 먼저 선택하고, 선택된 메시지 블록 쌍을 기초로 적절한 쉬프트 값을 선택한다: 그 다음 V절에서는 실제로 P-해쉬 함수 original version에 대한 차분 공격을 시도한다.
Ⅳ. 공격 확률을 높이기 위한 메시지 블록 쌍과 이에 따른 쉬프트 값의 선택
공격 확률은 차분을 주는 메시지 워드의 수가 작을수록 높아진다. 왜냐하면, 차분 공격은 확률적으로 차분 확산을 막는 것인더L 차분이 존재하는 단계가 많을수록 차분 확산을 막기 위한 확률 값이 점점 작아지기 때문이다. 이러한 의미에서 메시지 워드의 확장에 대한 분석을 보고, 공격 확률을 극대화하기 위한 메시지 블록 쌍을 선택하는 방법을 보이는 것은 의미가 있다. 메시지 워드에 대한 확장 분석은 앞서 FSE 2002에서 한 대완 등이 보여 주었다. 먼저, 식 ⑴을 풀어 쓰면 다음과 같다.
#(11)
#(12)
#(13)
#(14)
#(15)
#(16)
#(17)
#(18)
그리고, 메시지 워드의 확장을 통한 각 메시지 워드 X, (0MzM15)에 의해 영향을 받는 메시지 워드들은 다음의 표와 같다.( X:를, 로 표기함)
(표 4) 각 메시지 워드가 영향을 주는 확장된 메시지들
예를 들어 위의 표를 보았을 때, X。에 차분을 줄 경우, 동시에 Xk와 X小도 차분을 갖게 됨을 알 수 있다. 이와 같이 한 메시지 워드는 다른 메시지 워드에 반드시 영향을 주게 되어. 하나의 메시지 워드에만 차분을 주는 것은 불가능하다. 그러나, 두 메시지 워드에는 차분을 줄 수 있다. 위의 표를 기초로 보면, 다음과 같이 네 경우가 있다. (X8, Xg), (Xg, Xi4), (X]0, X]5). (Xn, X20).
이와 같이 FSE 2002에서 한 대완 등이 보여준 메시지 워드의 확장에 대한 분석을 토대로, 두 메시지 워드에만 차분을 줄 수 있는 네가지 쌍을 찾을 수 있었다. 그리고 우리는 네가지 쌍에 대해 차분을 줄 경우 m절의 분석을 기초로 높은 확률로 충돌 쌍을 찾을 수 있음을 알 수 있었다. 본 논문에서는 그중에서도. 공격확률을 극대화하기 위해서 (Xii, X20) 을 선택한다. 왜냐하면 (Xn, X20)의 경우에 라운드별 입력 단계간의 차이가 가장 작기 때문이다. 두 메시지가 입력되는 단계간의 차이가 작을수록 차분이 존재하는 단계의 수가 작아져서 공격 확률이 높아지게 된다. 이를 표로 보면 다음과 같다.
(표 5) 각 라운드에서 두 메시지 워드가 입력되는 단계의 차이
그리고 단계 연산에서 최상위 비트에 차분을 주면 232 위에서의 덧셈을 확률 1로 的으로 바꾸어 생각할 수 있다. 또한, 차분을 주는 비트의 수가 작을수록 공격확률은 커진다. 또한, 두 메시지 블록에 대해 동일한 쉬프트 값을 적용시키기 위해 메시지 워드 X”의 최상위 비트에는 차분을 주지 않는다. 왜냐하면 식 (15)와 같이 X”의 최상위 비트에 차분을 줄 경우. X的의 최하위 비트에 차분이 발생하여, 두 메시지 블록에 대한 쉬프트 값이 달라지기 때문이다.
이상을 기초로 하여, 다음과 같이 메시지 블록 쌍과 쉬프트 값을 선택하였다. 그리고, 다음 절에서는 이를 토대로하여 충돌 쌍을 찾을 수 있음을 보인다.
► Xu © = I©。(右⑥1<31 =勤)
► Xi = Xi(2*11, 20)
► 고정시키는 메시지 워드의 최하위 5 비트의 값
(X] , Xi , X-j , X]2 , X15 , X]6 , Xyi , Xia > X23 ) =(10, 0 , 21, 21, H, 0, 10, 0, 13 )
다음은 각 단계별 메시지 워드의 입력 순서와 단계별 쉬프트 값을 나열한 표이다.(M:메시지 워드의 순서, . :임의의 값)
(표 6) 단계별 메시지 워드의 입력 순서와 쉬프트 값
Ⅴ. 전체 라운드 차분 공격
앞의 m, IV절을 기초로 하여 이 절에서는 p-해쉬함수를 전체 라운드에 대해 공격한다. 이 공격은 두 메시지의 차분을 이용하여 충돌 쌍을 찾는 것이다.
〔표 7〕은 전체 라운드에 대한 차분 공격을 나타낸 것이다. 그리고 다음에 나오는 소절들을 통해 차분이 발생하는 단계들을 부분별로 분석한다.
(표 7) 전체 라운드의 차분 공격
# : 각 단계마다 갱신되는 부분
4.1 [표 7]의 11〜21 단계의 분석
11〜21단계는 1라운드이므로 /o함수를 쓴다. 〔표 7〕의 값들은 다음과 같이 계산된다.
△ Eu = [/o(£io.A10Bw, C1o, Ao)+ Xu + 时《Su= 13
© t/o (-Eio.^io.-Bio. Go, Ao)
+ (Xi佛 1«30)kj «Sn=i3=1«n 3 = ]/2) 위의 등식은 식 (9)에 의해 확률 1/2로 성립한다. △ D|2 =[/o (Al. CU) + X|2 + K] <<Sc
© [/o(Ai £11©1 ^.^n.Bn.Cn)
+ X12 + K1]<<s, ! = 0 3=1/2)
위의 등식은〔표 3〕의 2에 의해 확률 1/2로 성립한다. △C]3= I:丿% ( *, £>12.如412.如)+ X13 + Ki\ <<S, J
® [/o(C12, A2.£12®1 <21, A12B12)
+ X13 + K1]«S" = O 3 = 3/4)
위의 등식은〔표 3〕의 3에 의해 확률 3/4으로 성립한다.
△, 如= [/o(Bi3, Ci3DaE13Aa) + 易 + ㈤ <<Su=0 ® [/o(Si3.C13, A3, £13®1 *21, A13)
+ X14 + 2f1]<<Su=° = 0 (p = 3/4)
위의 등삭은〔표 3〕의 4에 의해 확률 3/4으로 성립한다.
△&5 = [/。(&4屈4。4心4血1)+ 乂15 + ・0 <<S'S °
® lf0(A14Bl4Cu, DuEu®l *21)
+ X15 + /f1]<<Sls=0=l<21 (p = 1/2)
위의 등식은 식 (9)과〔표 3〕의 5에 의해 확률 1/2 로 성립한다.
A £16 =[龙(环 A”.%. &.Z加)+ X” + «翎=。 © [/o(£15©1 3, &部1 <21, B15C15>A5)
+ 为6 + 砧]«%=。=1«21 3=1/4)
위의 등식은 식 (9)과〔표 3〕의 6에 의해 확률 1/4로 성립한다.
△ % = [/0(Z)16, EkA16Bk.方)+ X” + KJ «s“=10 ® [/o(A6.£16®1 &6 的 1 <31, B16.C16)
+ X„ + Kl] <<Sn=lo = O (0 = 3/8)
위의 등식은〔표 3〕의 2, 3에 의해 확률 3 /8로 성립한다.
AC18=[/0(C17.Z)17.£I7.A17B17)+X18 + 2f1]<<s, 8=21 ®[/o(C17>jD17, E17®1 卩£i <31, b17)
+ X18 + ^]<<s, 8=21 = 0 3 = 3/4)
위의 등식은〔표 3〕의 10에 의해 확률 3/4으로 성립한다.
ABig = [/0(518, C1&.DKE1SA1S) + Xi, + K(\<<s, 9 ® [/o(B18.C18, Z)18, E18©1 罰, &罰)
+ Xw + K1]<<Sa = 0 (/> = 1/4)
위의 등식은〔표 3〕의 11에 의해 확률 1/4으로성립한다.
△厶2。= [/。(419, 3&G9, Z)19.E19)+ X20 + K1] «& © [/o(^19®l <31, B19, C19, A9, £19®1 <31)
+ (X20®l*3')+/C1] <<Sa> = 0 3 = 1/2)
위의 등식은 식 ⑻와〔표 3〕의 9에 의해 확률 1/2로 성립한다.
A £21 = [/o (^O. -A20.^20, C20, 7?20)+ X21 + K」<<Sa ® [丿*(E2°£1 初, /4加.32";20, 班))
+ X21 + 7f1]<<Sa = 0 3=1/2)
위의 등식은〔표 3〕의 1에 의해 확률 1/2로 성립한다.
4.2 [표 7]의 36~42 단계의 분석
앞에서 분석한 방법과 마찬가지 방법으로 등식이 성립할 확률을 계산한다. 계산과정은 다음과 같다.
△珏=Lfl(E35, /135, B35.C35, Z)35)+ X2o+ K2] " © [/1 (&5.&5.瓦展35刀35)+ (乂20観翎)
+ 瓦]«&=21=]<20 3=1)
+ K21
"
△% = [/1 (Z)36, E36.A36.B36, C36)+
® 1/1 (Z)36, 磁観 磚, AXBX, CX) + X3 + 敬]«유=1。=]《30 3=1/2)
위의 등식은 식 (9)와〔표 3〕의 13에 의해 확률 1/2로 성립한다.
△ C38 = [/1 ( C37, Z)37, E、37, , 437/37) + X& + 瓦]
©[/1(C37 O37®1*30, E37®l<30, A37.B37) + 乂22 + 瓦]«& = 0 3 = 3/8)
△ 位, =[方(3協 C3以&石38.&8)+ X6 + K2] <<Ss=21 © [人(3既 C3房38£1《8, 互38割<30, &8)
+ X6 + K2] <<s»=21=o (.P = 25/64)
위의 등식은〔표 3〕의 14, 15에 의해 확률 25/64 로 성립한다.
△/侦=[/1(^4-39. -839, Cag^Dsg Esg) + X” + JC2] <<S*° © [/1(A39. % C39.Z& 割 <8, 瓦9金1 <3°)
+ (X11®l<30)+/f2] <<s* = o (/> = 15/128)
위의 등식은 식 (10)과〔표 3〕의 15, 16에 의해 확률 15/128로 성립한다.
△ £诵=[/» (瓦町 A4O.B40, C4O.Z)40)+ 为為 + 瓦]<<S, ' ® [fl (£4o®1 <30. A40.540, C4O, Z)4O®1<8)
+ Xl9 + K2-] <<Sil = 0 (/> = 25/64) △Z)42 = [/1(%, EiL&lBuCu) + X]5 + K2]
© [A(D4lei<s, E41A41B41C41)
+ X1S + K2] <<Sc = 0 3 = 5/8)
4.3 [표 7]의 54~59 단계의 분석
앞에서 분석한 방법과 마찬가지 방법으로 등식이 성립할 확률을 계산한다. 계산과정은 다음과 같다.
△Bs4= [/2(^53, 。53刀53, &3/453)+ + K3] 21 ® \.fi (民3 . Q3.^53, -^53, ^53)+ (^C2O®1<31)
+ 砥]«&=21=1<20 3=1)
△&5 =【了2 (^54. %, (方房沁电)+ Xg + K3] <<SiS © [/2 (?154 S54®1<20, C^E^+Xs
+ 焰]3 = 0 3 = 1/2)
△E56 = L/2(E55.A5"B55, C55, Z)55)+Xi8 + K」 © [/2(晶455.3婭1«3。, 。55刀55)
+ X18+Zf3] <<Ss, = 0 (p = 1/2)
△£>57=1了2(〃56, 归56/45以3旳。56)+ X]] + 砥]° © [/项(£>56.晶.&6.民6観 *3°, (為)
+ (X11®l*30) + /f3] <<Ss!=° = 0 3 = 1/4)
△ C58= \.h (C57, D51E57tA51
+ X5 + 瓦]<<Sm
® lf2(C57D57E57A57B57®l<3°) + X5 + K3] <<Ss8 = 0
3=1/2)
A-859 = [/2(-B58, C58, £>58, 558, ^58)+ Xi + K3] <<Ss © [/2(&应严<5房58晶458)
+ X4 + 7f3] <<Ss9 = 0 3 = 1/2)
4.4 [표 7]의 87-95 단계의 분석
앞에서 분석한 방법과 마찬가지 방법으로 등식이 성립할 확률을 계산한다. 계산과정은 다음과 같다. △Z)87 = L5(£)86 *86 /4瓯瓦6工86)+ X20 + K打11 © [/1 (£虹%486.38房86)+(乂2知1«31)
_g«s*=n = i«io 3 = ])
△ Css = [/i (Q?, D^ Egi + X4 + 7^4] 0
© [/1(C87 , Z)87©1 C1°, £87.^87.^87)
+ Xi + Ki] <<s»=°=i«o 3=1/2)
위의 등식은 식 (9)와〔표 3〕의 13에 의해 확률 1/2로 성립한다.
△&9 =[片(&8, C淑£)88, 瓦8, &8)+ X17+ KJ «遍 10
© C^l 5, Z)88$l 物, Ess.Ass)
+ X17 + K4] <<Ss»=10=i«20 3 = 5/16)
위의 등식은 식 (9)와〔표 3〕의 13, 14에 의해 확률 5/16로 성립한다.
= [/1 (A^rBg, 2, C^:DfQ Efg) + X\2 + KJ <<Ss° © [/1 (4明 B89®1 物, C89®1 A9®1 物, E^+Xa + K, ] <<Ss° = 0 3 = 5/8)
△E91 = Lfi(E90. AmBgoCmZ)”)+ Xw + X、]<<Ss, ® [fl (Ego.A^Bgo®! <3。, c娅 1 <20, 玖倒 <2。) + ^19 + /C4] <<Sm = 0 3 = 25/64)
△玖2 =筋(%.ESi, As1B91, C91) + X8 + K4] «&=° 物, 砌&耳闽<30, c相1物)
©
+ X8 + K4] <<s-=() = o (/> = 15/64)
△ C93 = [/] ( C92, ^92, £92, ^92, -892)+ X9 + KJ «& © ["C92知物, 〃形., 为撰92.扇2観 <3°)
+ X9 + K4] <<Ss3 = 0 (p = 25/64)
△% = 5(B93.+ X” + K4] <<Sm © [/! (593®1 C93.%&3.&3)
+ 京禮1«3。) + 孩]«& = 0 3 = 3/16)
△心=[fi (Am. B94, C94.P94.E94) + X] + K4] «&=13 © [/i (A94. B94.Cm.%.%) + X] + KJ «요产 13
=0 3 = 1)
이상의 확률을 모두 곱하면 약 2一3〃3이 되며, 따라서 PKC'98에 제안된 해쉬 함수의 충돌 쌍을 생일공격의 확률보다 큰 2-3*3의 확률로 찾을 수 있다
Ⅴ. 실제 충돌쌍 찾기
충돌이 발생할 평균 확률은 2一"」3이다. 이를 구현할 경우 압축 함수를 평균 z—38" 번을 돌려야 한다 왜냐하면, 충돌 쌍은 두 메시지에 대해 고려되어야 하기 때문이다. zf8」'번의 계산을 하는 데에는 1초에 공격 알고리즘을 If"번을 실행하는 컴퓨터로 대략 76.45시간이 걸린다. 실제로, 충돌 쌍을 찾기 위해, 펜티엄DI 800Mhz 컴퓨터 10대를 가지고 visual C 6.0으로 공격 알고리즘을 구현메시지 블록은 랜덤 값으로 표현하였고, 메시지의 일부를 고정시켜 원하는 쉬프트 값을 갖도록 하였음)하였다. 실제적으로우리는 대략 10시간만에 한 컴퓨터에서 충돌 쌍을 찾을 수 있었다. 이 결과 찾은 충돌 쌍은 다음과 같다.
為=X]搐l<30 z= X, . (z*ll)
이때, 메시지 X, 又는 다음과 같이 동일한 해쉬값을 갖는다.
Qxfd^Adca 0^3524aa4 0xl5ce9y59 0xd200e689 0/?401j656
Ⅵ. 결론
본 논문의 분석을 통해 나타난 P-해쉬 함수의 문제점은 메시지에 의존한 쉬프트 값의 사용에 있다. 즉, P-해쉬 함수와 같은 구조를 갖는 해쉬 함수의 안전성을 위해서는 쉬프트 값을 적절하게 고정시켜놓아야 한다.
FSE 2002에서 한대완 등은 P-해쉬 함수의 부울 함수가 당초 설계자의 의도와는 달리 일부 부울함수가 SAC을 만족하지 않음을 지적하였다. 그리고 설계자의 의도에 맞게 모든 부울 함수가 SAC의 성질을 만족한다는 가정 흐]에, 2-3。의 확률로 충돌 쌍을 찾는 공격 방법을 제안하였다.
그러나 본 논문에서는 P-해쉬 함수에 사용된 부울함수(/Ui은 SAC을 만족하지 않음)를 그대로 쓴 경우에도 2一"13의 확률로 충돌 쌍을 찾을 수 있음을 보였다. 그리고, P-해쉬 함수의 문제점을 지적하였다.
그러므로, 해쉬 함수 설계자들은 해쉬 함수의 설계 시 쉬프트 값을 결정하는데 있어서 신중을 기해야 할 것이다.
References
- Public Key Cryptography '98 A New Hash Function Based on MDx-family and Its Application to MAC S.U. Shin;K.H. Rhee;D.H. Ryu;S.J. Lee
- Fast Software Encryption 2002 Cryptanalysis of a Hash Function Proposed at PKC'98 D.W. Han;S.W. Park;S.T. Chee
- RFC 1320 The MD4 message digest algorithm R. Rivest
- RFC 1321 The MD5 message digest algorithm R. Rivest
- Advances in Cryptology-Auscrypt'92 HAVAL-A one-way hashing algorithm with variable length of output Y. Zhend;J. Pieprzyk;J. Sebberry
- Federal Information Processing Standards Publication 180-1
- Fast Software Encryption Cryptanalysis of MD4 H. Dobbertin
- Cryptanalysis of MD5 Compress H. Dobbertin
- Electonics Letters 6th v.36 no.1 Cryptanalysis of reduced version of HAVAL P.R. Kasselman;W.T. Penzhorn https://doi.org/10.1049/el:20000017