Ⅰ. 서론
해쉬 함수(hash function)는 메시지 인증, 디지털 서명 등의 많은 암호 응용 서비스에 사용되는 대표적인 암호 논리이다. 해쉬 함수는 임의의 길이의 메시지를 입력으로 받아, 고정된 짧은 길이의 해쉬값을 출력하는 함수이며, 안전한 해쉬 함수는 충돌 회피성 (collision resistance)을 만족하는 해쉬 함수이다. 충돌 회피성이란 동일한 해쉬값을 가지는 서로 다른 두 개의 메시지, 즉. 충돌쌍(collision) 을 찾는 것이 계산상 불가능함을 의미한다.
R. Rivest가 해쉬 함수 MD4[1]를 제안한 이후로, MD4의 설계 원칙을 기반으로 하는 많은 전용 해쉬 함수(dedicated hash function)들이 제안되었다. MD4의 설계 원칙을 기반으로 하는 전용 해쉬 함수들을 MD-계열 해쉬 함수라 하는데, 대표적인 MD-계열전용 해쉬 함수로는 MD5[2], HAVAL[3], RIPEMD[4] RIPEMD-160[5], SHA-1[6]등이 있다.
MD-계열 해쉬 함수의 안전성에 관한 연구도 계속되어 왔다. den Boer와 Bosselaers는 MD4의 마지막 두 라운드에 대한 공격 방법을 제안하였으며[7], Vaudenay는 MD4의 처음 두 라운드에 대한 공격 방법을 제안하였다[8]. 참고로, MD4는 3 라운드로 구성된다. Dobbertine MD4 전체 라운드에 대한 공격 방법을 제안하였으며[9], 결과적으로 MD4는 안전하지 않은 해쉬 함수임이 입증되었다. 또한, Dobbertine RIPEMD의 처음 두 라운드와 마지막 두 라운드의 충돌쌍을 찾는 공격 방법을 제안하였다[10].Debaert와 Gilbert는 RIPEMD의 병렬형태 각각의 충돌쌍을 찾는 방법을 제안하였다[11]. 그리고, den Boer와 Bosselaers는 MD5의 의사 충돌 쌍을 찾는 방법을 제안하였다[12]. Chabaud와 Jaux는 SHA-0의 충돌쌍을 찾는 방법을 제안하였으며 , 공격량은 약 261 정도이다. Kasselman과 Penzhorne 3-pass HAVAL의 마지막 두 라운드에 대한 충돌쌍을 찾는 공격 방법을 제안하였다[13].
HAVALe Zheng 등이 제안한 MD-계열의 전용해쉬 함수이다[3]. HAVALe 임의의 길이의 메시지를 입력으로 하여, 128, 160, 192, 224, 256 비트의 모두 5 가지 종류의 길이의 해쉬값을 출력한다. HAVALe 입력 메시지를 1, 024 비트 단위로 구분하여 처리하는데, 1, 024 비트 한 블록을 처리하는 회수에 따라 3-pass HAVAL, 4-pass HAVAL. 5-pass HAVAL로 구분된다. 여기서, 패스(pass) 는 MD4나 MD5의 라운드에 해당한다.
본 논문에서는 3-pass HAVAL의 축소 라운드의 충돌쌍을 찾는 방법을 제안한다. 3-pass HAVAL 의 처음 두 라운드와 마지막 두 라운드에 대한 충돌 쌍을 찾는 공격 방법을 제안하는데, 이는 MD4에 대한 공격이 초기에는 MD4의 축소 라운드에 대하여 이루어진 것을 고려하면[7, 8], 의미 있는 연구 분야가 된다. 본 논문에서는 3-pass HAVAL의 처음두 라운드를 HAVAL-12, 마지막 두 라운드를 HAVAL-23으로 표시한다.
Ⅱ. HAVAL의 구성 및 동작 방식
본 논문에서 +는 모듈러 232 덧셈을 표시한다. X®Y, XY, XNY는 각각 비트별 배타적 논리합 (bitwise exclusive OR). 비트별 논리곱(bitwise AND), 그리고, 비트별 논리합(bitwise OR)을 표시한다. ~X는 X의 비트별 보수(bitwise complement) 를 그리고, X≫s는 X를 s 비트 우측 순환(right cyclic shift)함을 표시한다.
HAVAL의 압축 함수(compression function) 는 8-워드(256-비트) 초기값 A0, B0. C0, D0, E0, F0. G0. H0와 32-워드 메시지 블록 X= (X0, X1, …, X31)을 256-비트 출력값 (AA, BB, CC. DD, EE, FF. GG. HH)로 변환한다. 8-워드 초기값은 다음과 같다.
\(\begin{array}{ll} A_{0}=0 x e c 4 e 6 c 89, & B_{0}=0 x 082 e f a 98 \\ C_{0}=0 x 299 f 31 d 0, & D_{0}=0 x a 4093822, \\ E_{0}=0 x 03707344, & F_{0}=0 x 13198 a 2 e \\ G_{0}=0 x 85 a 308 d 3, & H_{0}=0x 243 f 6 a 88 \end{array}\)
HAVAL 압축 함수의 각 패스는 32 단계로 구성되며, 각 단계는 서로 다른 워드들을 처리한다. 워드 처리 순서는 패스마다 다르며, 구체적인 순서는〔표 1〕 과 같다.
[표 1] 워드 처리 순서
각 패스는 서로 다른 부울 함수(Boolean function) 를 사용한다. i번째 패스에 사용되는 부울 함수 fi는 다음과 같다.
\(\begin{aligned} &f_{1}\left(x_{6}, x_{5}, x_{4}, x_{3}, x_{2}, x_{1}, x_{0}\right) \\ &\quad=x_{1} x_{4} \oplus x_{2} x_{5} \oplus x_{3} x_{6} \oplus x_{0} x_{1} \oplus x_{0} \\ &f_{2}\left(x_{6}, x_{5}, x_{4}, x_{3}, x_{2}, x_{1}, x_{0}\right) \\ &\quad=x_{1} x_{2} x_{3} \oplus x_{2} x_{4} x_{5} \oplus x_{1} x_{2} \oplus x_{1} x_{4} \oplus x_{2} x_{6} \oplus \\ &x_{3} x_{5} \oplus x_{4} x_{5} \oplus x_{0} x_{2} \oplus x_{0} \\ &f_{3}\left(x_{6}, x_{5}, x_{4}, x_{3}, x_{2}, x_{1}, x_{0}\right) \\ &\quad=x_{1} x_{2} x_{3} \oplus x_{1} x_{4} \oplus x_{2} x_{5} \oplus x_{3} x_{6} \oplus x_{0} x_{3} \oplus x_{0} \\ &f_{4}\left(x_{6}, x_{5}, x_{4}, x_{3}, x_{2}, x_{1}, x_{0}\right) \\ &=x_{1} x_{2} x_{3} \oplus x_{2} x_{4} x_{5} \oplus x_{3} x_{4} x_{6} \oplus x_{1} x_{4} \oplus x_{2} x_{6} \\ &\oplus x_{3} x_{4} \oplus x_{3} x_{5} \oplus x_{3} x_{6} \oplus x_{4} x_{5} \oplus x_{4} x_{6} \oplus x_{0} x_{4} \oplus x_{0} \\ &f_{5}\left(x_{6}, x_{5}, x_{4}, x_{3}, x_{2}, x_{1}, x_{0}\right) \\ &=x_{1} x_{4} \oplus x_{2} x_{5} \oplus x_{3} x_{6} \oplus x_{0} x_{1} x_{2} x_{3} \oplus x_{0} x_{5} \oplus x_{0} \end{aligned}\)
다음으로, HAVAL의 단계 함수(step function) 를 소개한다. Ti,j(j=0, 1, ..., 7)를 단계 i에서의 단계 함수의 입력으로 설정한다. 그리고, Q를 다음으로 설정한다.
• 3-pass HAVAL:
\(Q=f_{r}\left(P_{3, r}\left(T_{i, 6}, T_{i, 5}, T_{i, 4}, T_{i, 3}, T_{i, 2}, T_{i, 1}, T_{i, 0}\right)\right)\)
• 4-pass HAVAL:
\(Q=f_{r}\left(P_{4, r}\left(T_{i, 6}, T_{i, 5}, T_{i, 4}, T_{i, 3}, T_{i, 2}, T_{i, 1}, T_{i, 0}\right)\right)\)
• 5-pass HAVAL:
\(Q=f_{r}\left(P_{5, r}\left(T_{i, 6}, T_{i, 5}, T_{i, 4}, T_{i, 3}, T_{i, 2}, T_{i, 1}, T_{i, 0}\right)\right)\)
HAVAL의 단계 함수는 다음 형태를 가진다.
\(\begin{aligned} &R=Q^{\gg 7}+T_{i, 7}^{\gg 11}+X_{\text {ord },(i)}+K_{i} \\ &T_{i+1,7}=T_{i, 6} ; T_{i+1,6}=T_{i, 5} ;\\ &T_{i+1,5}=T_{i, 4} ; T_{i+1,4}=T_{i, 3} ;\\ &T_{i+1,3}=T_{i, 2} ; T_{i+1,2}=T_{i, 1} ;\\ &T_{i+1,1}=T_{i, 0} ; T_{i+1,0}=R, \end{aligned}\)
위 식에서 r은 패스 번호이며, ordr(i)는〔표 1〕 의워드 처리 순서이고, Ki는 32-비트 상수이다. 모든 상수는 \(\pi\)의 소수점 이하 값으로부터 결정된다. 패스 1 에서 상수 Ki(i=0, …, 31)는 생략된다. 패스 2부터 패스 5에서는 상수는 각 단계마다 모두 서로 다르다. 단계 i의 입력 (Ti, 6, Ti,5, Ti,4, Ti,3, Ti,2, Ti,1, Ti,0)는 3-pass HAVAL에서는 P3,r로. 4-pass HAVAL에서는 P4,r로, 5-pass HAVAL에서는 P5, r 로 순환되어 부울 함수 fr, 로 처리된다. P3,r P4,r, P5,r은〔표 2〕와 같다.
[표 2] 단계 입력 순환 방법
Ⅲ. HAVAL-12에 대한 공격 방법
본 절에서는 3-pass HAVAL의 처음 두 라운드인 HAVAL-12의 충돌쌍을 찾는 공격 방법을 제안한다.
두 개의 32-비트 벡터 X와 \(\tilde X\)에 대하여, X와 \(\tilde X\)의 difference \(\Delta\)X를 다음으로 정의한다.
\(\Delta X=X-\widetilde{X}\left(\bmod 2^{32}\right)\)
Ai, Bi, Ci, Di, Ei, Fi, Gi, Hi 를 입력 메시지 블록 X=(X0, ..., X31)에 대한 단계 i이후의 연결 변수로 정의한다. 그리고, \(\widetilde A_i, \widetilde B_i, \widetilde C_i, \widetilde D_i, \widetilde D_i, \widetilde E_i, \widetilde F_i, \widetilde G_i \widetilde H_i\)를 입력 메시지 블록 , \(\tilde X\)=(\(\widetilde X_0\)…, \(\widetilde X_{31}\))에 대한 단계 i 이후의 연결 변수로 정의한다.
HAVAL-12의 충돌쌍을 찾는다는 것은 단계 64 이후의 연결 변수 값이 서로 동일하게 되는 서로 다른 두 개의 메시지 블록 X와 \(\tilde X\)를 찾는 것이다.
HAVAL 압축 함수는 8개의 연결 변수들을 가지고 있으며, 각 단계에서 단지 한 개의 연결 변수만이 update된다. 따라서, 단계, 에서 X와 \(\tilde X\)에 의해 update된 연결 변수에 0이 아닌 difference가 발생하면, 단계 i + 8 까지는 그 difference를 제거할 기회가 없다.
HAVALT2에서 메시지 워드 X28은 단계 29와 단계 38에서 입력되며, 두 단계의 차이는 9가 된다. 그러므로, 본 절에서는 다음과 같은 두 개의 서로 다른 메시지 블록 X와 : \(\tilde X\)를 고려하도록 한다.
\(X_{28} \neq \widetilde{X}_{28}, \quad X_{i}=\widetilde{X}_{i}(i \neq 28)\)
〔표 3〕은 단계 29부터 단계 38에서 적용되는 연결 변수와 메시지 워드를 나타낸다. 음영 있는 네모로 표시된 연결 변수는 각 단계에서 update되는 연결 변수이다.
[표 3] 단계 29~단계 38의 연결 변수
(X, \(\tilde X\))가 HAVAL-12의 충돌쌍이 되려면 다음을 만족하여야 한다.
\(\begin{aligned} &A_{38}=\widetilde{A_{38}}, \quad B_{38}=\widetilde{B_{38}}, \quad C_{38}=\widetilde{C_{38}} \text {, }\\ &D_{38}=\widetilde{D_{38}}, \quad E_{38}=\widetilde{E_{38}}, \quad F_{38}=\widetilde{F}_{38} \text {, }\\ &G_{38}=\widetilde{G}_{38}, \quad H_{38}=\widetilde{H}_{38} \text {. } \end{aligned}\)
그런데, 우리는 다음 사실을 알고 있다.
\(\begin{aligned} &\Delta A_{38}=\Delta A_{32}, \Delta B_{38}=\Delta B_{31}, \Delta D_{38}=\Delta D_{37}, \\ &\Delta E_{38}=\Delta E_{36}, \Delta F_{38}=\Delta F_{35}, \Delta G_{38}=\Delta G_{34}, \\ &\Delta H_{38}=\Delta H_{33} \end{aligned}\)
그러므로, (X, \(\tilde X\))이 HAVAL-12의 충돌쌍이 되기 위한 조건을 다음으로 수립할 수 있다.
\(\begin{aligned} &\Delta A_{32}=0, \Delta B_{31}=0, \Delta C_{38}=0, \Delta D_{37}=0 \\ &\Delta E_{36}=0, \Delta F_{35}=0, \Delta G_{34}=0, \Delta H_{33}=0 . \end{aligned}\)
이제, 단계 29부터 단계 38 까지의 각 단계를 분석하고, (X, \(\tilde X\))이 충돌쌍이 되는 조건을 만족하는 방정식들을 수립한다. 연결 변수 D29와 \(\widetilde {D_{29}}\)는 단계 29에서 다음으로 update된다.
\(\begin{aligned} D_{29}=&\left(G_{28} H_{28} \oplus C_{28} E_{28} \oplus B_{28} F_{28} \oplus A_{28} G_{28} \oplus A_{28}\right)^{\gg 7} \\ &+D_{28}^{\gg 11}+X_{28} \end{aligned} \\ \widetilde{D_{29}}=\left(\widetilde{G_{28}} \widetilde{H_{28}} \oplus \widetilde{C}_{28} \widetilde{E_{28}} \oplus \widetilde{B_{28}} \widetilde{F}_{28} \oplus \widetilde{A_{28}} \widetilde{G_{28}}\right. \\ \qquad \oplus \widetilde {A_{28}}^{\gg7}) + \widetilde {D_{28}}^{\gg11} + \widetilde {X_{28}}\)
그런데,
\(\begin{aligned} &A_{28}=\widetilde{A_{28}}, \quad B_{28}=\widetilde{B_{28}}, C_{28}=\widetilde{C_{28}}, D_{28}=\widetilde{D_{28}}, \\ &E_{28}=\widetilde{E_{28}}, \quad F_{28}=\widetilde{F_{28}}, G_{28}=\widetilde{G_{28}}, H_{28}=\widetilde{H_{28}} \end{aligned}\)
이므로, 다음 방정식을 얻을 수 있다.
\(\Delta D_{29}=\Delta X_{28} \neq 0\)
연결 변수 C30과 \(\widetilde {C_{30}}\)은 단계 30에서 다음으로 update 된다.
\(\begin{aligned} &C_{30}=\left(F_{29} G_{29} \oplus B_{29} D_{29} \oplus A_{29} E_{29} \oplus H_{29} F_{29} \oplus H_{29}\right)^{\gg 7}\\ &+C_{29}^{\gg 11}+X_{29}\\ &\widetilde{C_{30}}=\left(\widetilde{F_{29}} \widetilde{G_{29}} \oplus \widetilde{B_{29}} \widetilde{D_{29}} \oplus \widetilde{A_{29}}{\widetilde{E_{29}} \oplus}\widetilde {H_{29}} \widetilde{F_{29}}\right. \end{aligned} \\ \oplus \widetilde {H_{29}})^{\gg 7} + \widetilde {C_{29}})^{\gg 11}+ \widetilde {X_{29}})\)
그런데,
\(\begin{aligned} &\Delta A_{29}=\Delta B_{29}=\Delta C_{29}=\Delta E_{29}=0 \\ &\Delta F_{29}=\Delta G_{29}=\Delta H_{29}=0, \\ &\Delta X_{29}=0 \end{aligned}\)
이므로, 다음 방정식을 얻을 수 있다.
\(\begin{aligned} C_{30}-& \widetilde{{C}_{30}}=\left(F_{29} G_{29} \oplus B_{29} D_{29} \oplus A_{29} E_{29} \oplus H_{29} F_{29}\right.\\ &\left.\oplus H_{29}\right)^{\gg 7}-\left(F_{29} G_{29} \oplus B_{29} \widetilde{D_{29}} \oplus A_{29} E_{29}\right.\\ &\left.\oplus H_{29} F_{29} \oplus H_{29}\right)^{\gg 7} \end{aligned}\)
다음 단계에서 B31과 \(\widetilde {B_{31}}\)은 다음으로 update 된다.
\(\begin{aligned} B_{31}=&\left(E_{30} F_{30} \oplus A_{30} C_{30} \oplus H_{30} D_{30} \oplus G_{30} E_{30} \oplus G_{30}\right)^{\gg 7} \\ &+B_{30}^{\gg 11}+X_{30} \end{aligned} \\ \begin{aligned} \widetilde{B_{31}}=&\left(\widetilde{E_{30}} \widetilde{F_{30}} \oplus \widetilde{A_{30}} \widetilde{C_{30}} \oplus \widetilde{H_{30}} \widetilde{D_{30}} \oplus \widetilde{G_{30}} \widetilde{E_{30}}\right.\\ & \oplus \widetilde{G_{30}}{ }^{\gg 7}+\widetilde{B_{30}}^{\gg 11}+\widetilde{X_{30}} . \end{aligned}\)
그런데,
\(\begin{aligned} &\Delta A_{30}=\Delta B_{30}=\Delta E_{30}=0 \\ &\Delta F_{30}=\Delta G_{30}=\Delta H_{30}=0 \end{aligned}\)
이고, \(\Delta X_{30}=0\)이므로, 다음 방정식을 얻을 수 있다.
\(\begin{aligned} &\Delta B_{31}=0 \\ &\Leftrightarrow E_{30} F_{30} \oplus A_{30} C_{30} \oplus H_{30} D_{30} \oplus G_{30} E_{30} \oplus G_{30} \\ &\quad=E_{30} F_{30} \oplus A_{30} \widetilde{C_{30}} \oplus H_{30} \widetilde{D_{30}} \oplus G_{30} E_{30} \oplus G_{30} \\ &\Leftrightarrow A_{30} C_{30} \oplus H_{30} D_{30}=A_{30} \widetilde{C_{30}} \oplus H_{30} \widetilde{D_{30}} \\ &\Leftrightarrow H_{30} \cdot\left(D_{30} \oplus \widetilde{D_{30}}\right)=A_{30} \cdot\left(C_{30} \oplus \widetilde{C_{30}}\right) . \end{aligned}\)
유사한 방법으로 단계 32부터 단계 38을 분석하여, 다음의 10개 방정식을 얻을 수 있다.
\(D_{29}-\widetilde{{D}_{29}}=X_{28}-\widetilde {{X}_{28}}\) (1)
\(\begin{gathered} C_{30}-\widetilde{{C}_{30}}=\left(F_{27} G_{26} \oplus B_{23} D_{29} \oplus A_{24} E_{28} \oplus H_{25}\right)^{\gg 7} \\ -\left(F_{27} G_{26} \oplus B_{23} \widetilde{D_{29}} \oplus A_{24} E_{28} \oplus H_{25}\right)^{\gg 7} \end{gathered}\) (2)
\(\left(C_{30} \oplus \widetilde{C_{30}}\right) A_{24}=\left(D_{29} \oplus \widetilde{D_{29}}\right) H_{25}\) (3)
\(\left(D_{29} \oplus \widetilde{D_{29}}\right)\left(E_{28} \oplus F_{27}\right)=\left(C_{30} \oplus \widetilde{C}_{30}\right) G_{26}\) (4)
\(\begin{aligned} &\left(C_{30} \oplus \widetilde{C_{30}}\right)\left(F_{27} B_{31} \oplus A_{32} \oplus B_{31}\right) \\ &=\left(D_{29} \oplus \widetilde{D}_{29}\right)\left(F_{27} A_{32} \oplus F_{27} \oplus B_{31}\right) \end{aligned}\) (5)
\(\begin{aligned} &\left(C_{30} \oplus \widetilde{C_{30}}\right)\left(E_{28} H_{33} \oplus E_{28} \oplus A_{32}\right) \\ &=\left(D_{29} \oplus \widetilde{D}_{29}\right) E_{28} \end{aligned}\) (6)
\(\begin{aligned} &\left(D_{29} \oplus \widetilde{D_{29}}\right)\left(B_{31} G_{34} \oplus H_{33} A_{32} \oplus B_{31} \oplus E_{28}\right) \\ &=D_{29} C_{30} \oplus \widetilde{D_{29}} \widetilde{C_{30}} \end{aligned}\) (7)
\(\left(C_{30} \oplus \widetilde{{C}_{30}}\right)\left(A_{32} F_{35} \oplus G_{34} H_{33} \oplus A_{32} \oplus B_{31}\right)\\ =D_{29} C_{30} \oplus \widetilde{D_{29}} \widetilde{D_{30}} \oplus D_{29} \oplus \widetilde{D_{29}}\) (8)
\(\begin{aligned} &\left(H_{33} B_{31} E_{36} \oplus B_{31} F_{35} G_{34} \oplus H_{33} B_{31}\right. \\ &\oplus H_{33} F_{35} \oplus B_{31} A_{32} \oplus E_{36} G_{34} \\ &\left.\oplus F_{35} G_{34} \oplus C_{30} B_{31} \oplus C_{30}\right)^{\gg 7}+D_{29}^{\gg 11} \\ &=\left(H_{33} B_{31} E_{36} \oplus B_{31} F_{35} G_{34} \oplus H_{33} B_{31}\right. \\ &\quad \oplus H_{33} F_{35} \oplus B_{31} A_{32} \oplus E_{36} G_{34} \\ &\left.\quad \oplus F_{35} G_{34} \oplus C_{30} B_{31} \oplus C_{30}\right)^{\gg 7}+\widetilde{D_{29}^{\gg 11}} \end{aligned}\) (9)
\(C_{30}^{\gg 11}+X_{28}=\widetilde{C_{30}^{>11}}+\widetilde{X_{28}}\) (10)
상기의 10개 방정식에서, i=1, 2, …, 7에 대하여,
\(\begin{array}{lll} A_{24}=A_{24+i}, & A_{32}=A_{32+i}, & B_{23}=B_{23+i}, \\ B_{31}=B_{31+i}, & C_{30}=C_{30+i}, & D_{29}=D_{29+i}, \\ E_{28}=E_{28+i}, & E_{36}=E_{36+i}, & F_{27}=F_{27+i}, \\ F_{35}=F_{35+i}, & G_{26}=G_{26+i}, & G_{34}=G_{34+i}, \\ H_{25}=H_{25+i}, & H_{33}=H_{33+i} & \end{array}\)
이다. 이제, (1)부터 (10)의 방정식의 해를 구하고, (X, \(\widetilde X\))가 충돌쌍이 되는 연결 변수의 값을 결정한다. 우선, 다음을 설정한다.
\(A_{24}=H_{25}=G_{26}=F_{27}=E_{28}=B_{31}=A_{32}=0 .\)
그러면, 방정식 (3), (4), (5), (6)이 만족된다. 방 정식 (1)과 (10)에 의해 다음 방정식을 얻는다
\(C_{30}^{\gg 11}-\widetilde{C_{30}^{\gg 11}}+D_{29}-\widetilde{D_{29}}=0 .\)
결과적으로, 충돌쌍을 찾기 위해서는 다음의 5개 방정식의 해를 구하여야 한다.
\(C_{30}-\widetilde{{C}_{30}}=\left(B_{23} D_{29}\right)^{\gg 7}-\left(B_{23} \widetilde{D_{29}}\right)^{\gg 7}\) (11)
\(D_{29} C_{30} \oplus \widetilde{D_{29}} \widetilde{C_{30}}=0\) (12)
\(\begin{aligned} &\left(C_{30} \oplus \widetilde{{C}_{30}}\right) G_{34} F_{35} \\ &=D_{29} C_{30} \oplus \widetilde{D_{29}} \widetilde{C_{30}} \oplus D_{29} \oplus \widetilde{D_{29}} \end{aligned}\) (13)
\(\begin{aligned} &\left(H_{33} F_{35} \oplus E_{36} G_{34} \oplus F_{35} G_{34} \oplus C_{30}\right) ^{\gg 7} \\ &+D_{29}^{\gg 11}=\left(H_{33} F_{35} \oplus E_{36} G_{34} \oplus F_{35} G_{34}\right. \\ &\left.\oplus \widetilde{C_{30}}\right)^{\gg 7}+\widetilde{D_{29}^{\gg 11}} \end{aligned}\) (14)
\(C_{30}^{\gg 11}-\widetilde{C_{30}^{\gg 11}}+D_{29}-\widetilde{D_{29}}=0\) (15)
다음은 방정식 (11). (12). (13), (14), (15) 의해들이다.
\(\begin{aligned} &B_{23}=2^{7}=0 x 80 \\ &D_{29}=-1=0 x f f f f f f f f, \quad \widetilde{D_{29}}=0 \\ &C_{30}=0, \quad \widetilde{C_{30}}=-1=0 x f f f f f f f f \\ &H_{33}=G_{34}=-1=0 x f f f f f f f f \\ &E_{36}=0 \end{aligned}\)
여기서, 우리는 F35의 구체적인 값을 설정할 수 없다. 왜냐하면, 단계 27에서 X26에 의해 F27이 update 되고, 단계 35에서도 X26에 의해 F35가 update 되기 때문이다. 그리고, F27 = 0임을 이미 알고 있다.
이제 충돌쌍 (X, \(\widetilde X\))를 결정한다. Xi(22≤i≤25, 27≤i≤31)의 값을 쉽게 결정할 수 있다. 단계 33에서
\(\begin{aligned} &H_{33}=\left(D_{32} F_{32} A_{32} \oplus F_{32} B_{32} C_{32}\right. \\ &\oplus D_{32} F_{32} \oplus D_{32} B_{32} \oplus F_{32} E_{32} \oplus A_{32} C_{32} \oplus B_{32} C_{32} \\ &\left.\oplus G_{32} F_{32} \oplus G_{32}\right)^{\gg 7}+H_{32}^{\gg 11}+X_{5}+0 x 452821 e 6 . \end{aligned}\)
임을 알고 있다.[표 4]의 해들을 사용해서, 다음을 계산할 수 있다.
[표 4] 방정식 (1)~(10)의 해
\(X_{5}=0 x f f f f f f f f-0 x 452821 e 6 .\)
유사한 방법으로, 단계 34에서, 다음을 얻을 수 있다.
\(X_{14}=0 x f f f f f f f f-0 x 38 d 01377\)
다음으로, X18과 X26의 값을 결정한다. F35는 임의의 값을 가질 수 있으므로, 단계 27에서 얻은 X26의 값을 활용할 수 있다. 단계 35에서
\(\begin{aligned} &F_{35}=\left(B_{34} D_{34} G_{34} \oplus D_{34} H_{34} A_{34} \oplus B_{34} D_{34}\right. \\ &\oplus B_{34} H_{34} \oplus D_{34} C_{34} \oplus G_{34} A_{34} \oplus H_{34} A_{34} \\ &\left.\oplus E_{34} D_{34} \oplus E_{34}\right)^{\gg 7}+F_{34}^{\gg11}+X_{26}+0 x b e5466 c f \end{aligned}\)
이므로.
\(F_{35}=X_{26}+0 x b e55466 c f\)
를 얻을 수 있다. 또한, 단계 36에서
\(\begin{aligned} &E_{36}=\left(A_{35} C_{35} F_{35} \oplus C_{35} G_{35} H_{35} \oplus A_{35} C_{35}\right. \\ &\oplus A_{35} G_{35} \oplus C_{35} B_{35} \oplus F_{35} H_{35} \oplus G_{35} H_{35} \\ &\left.\oplus D_{35} C_{35} \oplus D_{35}\right)^{\gg 7}+E_{35}^{\gg 11}+X_{18}+0 x 34 e 90c6 c \end{aligned}\)
이므로,
\(X_{18}=-\left(F_{35}^{\gg 7}+0 x 34 e 90 c 6 c\right)\)
임을 알 수 있다. 그러므로, 다음을 얻는다.
\(X_{26}=-0 x b e 5466 c f+\left(-0 x 34 e 90 c 6 c-X_{18}\right)^{\gg 25}\)
그리고, 단계 27로부터 \(X_{26}=-\left(C_{22}^{\gg 7}+F_{19}^{\gg 11}\right)\) 이므로, X18에 대한 다음 조건을 얻을 수 있다.
\(\begin{aligned} &-\left(C_{22}^{\gg 7}+F_{19}^{\gg 11}\right) \\ &=-0 x b 5466 c f+\left(-0 x 34 e 90 c 6 c-X_{19}\right)^{\gg 25} \end{aligned}\)
위 방정식을 해결하기 위하여, X18을 임의의 값으로 놓고 C22를 계산한다.
\(\begin{aligned} C_{22}=&\left(F_{19}^{\gg 11}+0 x b e 5466 c f\right.\\ &\left.-\left(-0 x 34 e 90 c 6 c-X_{18}\right)^{\gg 25}\right)^{\gg 25} \end{aligned}\)
단계 22로부터,
\(\begin{aligned} C_{22}=&\left(F_{21} G_{21} \oplus B_{21} D_{21} \oplus A_{21} E_{21} \oplus H_{21} F_{21} \oplus H_{21}\right)^{\gg 7} \\ &+C_{21}^{\gg 11}+X_{21} \end{aligned}\)
이므로, X21에 대한 다음 방정식을 얻는다.
\(\begin{aligned} X_{21} &=\left(F_{19}^{\gg 11}+0 x b e5466 c f-(-0 x 34 e 90 c 6 c\right.\\ &\left.\left.-X_{18}\right)^{\gg 25}\right)^{\gg 25}-\left(F_{21} G_{21} \oplus B_{21} D_{21}\right.\\ &\left.\oplus A_{21} E_{21} \oplus H_{21} F_{21} \oplus H_{21}\right)^{\gg 7}+C_{21}^{\gg 11} \end{aligned}\)
결과적으로 우리는 충돌쌍에 대한 다음 조건을 얻게 된다.
\(\begin{aligned} X_{5}=& 0 x f f f f f f f f-0 x 452821e6 \\ X_{14}=& 0 x f f f f f f f-0 x 38 d 01377 \\ X_{21}=&\left(F_{19}^{\gg 11}+0 x b e5466 c f-(-0 x 34 e 90 c 6 c\right.\\ &\left.\left.-X_{18}\right)^{\gg 25}\right)^{\gg 25}-\left(F_{21} G_{21} \oplus B_{21} D_{21}\right.\\ &\left.\oplus A_{21} E_{21} \oplus H_{21} F_{21} \oplus H_{21}\right)^{\gg 7}+C_{21}^{\gg 1} \end{aligned}\)
Xi(22≤i≤ 31) 는 단계 함수로부터 결정되며, Xj(j≠5, 14, 21≤i≤31)는 임의의 값을 가질 수 있다. 따라서, HAVAL-12에 대한 많은 충돌쌍이 존재한다. 〔표 5〕에 충돌쌍 중에 한 개을 제시하며, 〔표 5〕 의 충돌쌍은 다음을 해쉬값으로 가진다.
\(\begin{array} 0xa273fd7f, & 0x483d4aa4, & 0xab5eafc5, & 0x2e8bef9, \\ 0xe1d63dc2, & 0xa2c51648, & 0xdbf75650, & 0x13548df. \end{array}\)
HAVAL-12에서 메시지 워드 X26은 단계 26과 단계 34에서 입력되며, 두 단계의 차이는 8이다. 따라서, X26과 \(\widetilde {X_{26}}\)을 이용한 HAVAL-12 공격을 고려할 수 있다. 그러나, X26과 \(\widetilde {X_{26}}\)을 이용해서는 HAVAL-12의 충돌쌍을 찾을 수 없다. 지금부터, 다음 메시지 블록 X와 \(\widetilde X\)를 고려하면, HAVAL-12의 충돌 쌍을 찾을 수 없음을 보인다.
\(X_{26} \neq \widetilde{X}_{26}, \quad X_{i}=\widetilde{X}_{i}(i \neq 26) .\)
[표 5] HAVAL-12의 충돌쌍 (X, X)
HAVAL-12에서 메시지 워드 X26은 단계 26과 단계 34에서 입력되며, 두 단계의 차이는 8이다. HAVAL-23에 적용한 공격과 유사한 방법으로 단계 26부터 단계 34를 분석하면 충돌쌍을 찾기 위한 다음의 방정식을 구할 수 있다.
\(F_{27}-\widetilde{F_{27}}=X_{26}-\widetilde{{X}_{26}}\) (29)
\(\left(F_{27} \oplus \widetilde{F_{27}}\right) D_{21}=0\) (30)
\(\left(F_{27} \oplus{\widetilde{F_{27}}}) B_{23}=0\right.\) (31)
\(\left(F_{27} \oplus \widetilde{F}_{27}\right)\left(G_{26} \oplus H_{25}\right)=0\) (32)
\(\left(F_{27} \oplus \widetilde{F_{27}}\right) E_{28}=0\) (33)
\(\left(F_{27} \oplus \widetilde{F}_{27}\right)\left(E_{28} \oplus 0 x f f f f f f f f\right)=0\) (34)
\(\left(F_{27} \oplus \widetilde{F_{27}}\right)\left(D_{29} A_{32} \oplus B_{31} C_{30} \oplus C_{29} \oplus E_{28} \oplus G_{26}\right)=0\) (35)
\(\left(F_{27} \oplus \widetilde{F_{27}}\right)\left(E_{28} \oplus 0 x f f f f f f f f\right)=0\) (36)
\(F_{27}^{\gg 11}-\widetilde {{F}_{27}}^{\gg 11}=-\left(X_{26}-\widetilde{X_{26}}\right)\) (37)
식 (29)부터 식 (37)을 만족하는 해를 찾아보자.\(X_{26} \neq \widetilde {{X}_{26}}\)이므로 식 (10)에서 \(F_{27} - \widetilde {F_{27}}\)임을 알 수 있다. 그리고, \(F_{27} \oplus \widetilde{F}_{27} \neq 0\)이므로, 적당한 k 에 대해 k번째 성분이 '1'인 것이 존재한다. 즉, \((F_{27} \oplus \widetilde{F}_{27}) (k)\)를 \(F_{27} \oplus \widetilde{F}_{27}\)의 k번째 성분이라고 하면, \((F_{27} \oplus \widetilde{F}_{27}) (k)=1\)인 k가 존재한다. 식 (33) 으로부터 E28(k)=0이다. 그런데, 식 (36)으로부터 E28(k)=0이 되어 모순이 발생한다. 따라서, 식 (29) 부터 식 (37)을 만족하는 해는 존재하지 않으며, 결과적으로 X26과 \(\widetilde {X_{26}}\)을 이용한 HAVAL-12의 충돌 쌍을 찾을 수 없다.
Ⅳ. HAVAL-23에 대한 공격 방법
Kasselman과 Penzhorn 이미 HAVAL-23의 충돌쌍을 찾는 공격 방법을 제안한 바 있다.[13] 본 절에서는 Kasselman과 Penzhorn의 방법 (KP 공격)과 유사한 방법으로 HAVAL-23의 충돌 쌍을 찾고자 한다.
HAVAL-23의 충돌쌍을 찾는 다는 것은 단계 96이후에 다음을 만족하는 두 개의 서로 다른 메시지 블록 X와 \(\widetilde X\)를 찾는 것이다.
\(\begin{aligned} &A_{96}=\widetilde{A_{96}}, \quad B_{96}=\widetilde{B_{96}}, \quad C_{96}=\widetilde{C_{96}}, \quad D_{96}=\widetilde{D_{96}} \text {, }\\ &E_{96}=\widetilde{E}_{96}, \quad F_{96}=\widetilde{F}_{96}, G_{96}=\widetilde{G_{96}}, \quad H_{96}=\widetilde{H}_{96} . \end{aligned}\)
충돌쌍을 찾기 위하여 다음을 만족하는 메시지 블록 X와 \(\widetilde X\)를 고려한다.
\(X_{19} \neq \widetilde{X}_{19}, \quad X_{i}=\widetilde{X}_{i}(i \neq 19)\)
HAVAL-23에서 메시지 워드 X19은 단계 57과 단계 65에서 입력되며, 두 단계의 차이는 8이다.〔표 6] 은 단계 57부터 단계 65에서 적용되는 연결 변수와 메시지 워드를 나타낸다. 음영 있는 네모안에 있는 연결 변수는 각 단계에서 update되는 연결 변수를 표시한다.
(X, \(\widetilde X\))가 HAVAL-23의 충돌쌍이 되기 위해서는 다음을 만족하여야 한다.
[표 6] 단계 57~단계 65의 연결 변수
\(\begin{aligned} &A_{65}=\widetilde{A_{65}}, \quad B_{65}=\widetilde{B_{65}}, \quad C_{65}=\widetilde{C_{65}}, \quad D_{65}=\widetilde{D_{65}} \text {, }\\ &E_{65}=\widetilde{E}_{65}, \quad F_{65}=\widetilde{F}_{65}, G_{65}=\widetilde{G_{65}}, \quad H_{65}=\widetilde{H}_{65} . \end{aligned}\)
그런데,
\(\Delta A_{65}=\Delta A_{64}, \Delta B_{65}=\Delta B_{63}, \Delta C_{65}=\Delta C_{62},\\ \Delta D_{65}=\Delta D_{61}, \Delta E_{65}=\Delta E_{60}, \Delta F_{65}=\Delta F_{59},\\ \Delta G_{65}=\Delta G_{58},\)
이므로, (X, \(\widetilde X\))이 HAVAL-23의 충돌쌍이 되는 조건을 다음으로 수립할 수 있다.
\(\begin{aligned} &\Delta A_{64}=0, \Delta B_{63}=0, \Delta C_{62}=0, \Delta D_{61}=0, \\ &\Delta E_{60}=0, \Delta F_{59}=0, \Delta G_{58}=0, \Delta H_{65}=0 . \end{aligned}\)
단계 57부터 단계 65를 분석하여 다음의 9개 방정식을 수립할 수 있다.
\(H_{57}-\widetilde{H}_{57}=X_{19}-\widetilde{X}_{19}\) (16)
\(\left(H_{57} \oplus \widetilde{H}_{57}\right)\left(C_{54} E_{52} \oplus B_{55}\right)=0\) (17)
\(\left(H_{57} \oplus \widetilde{H}_{57}\right)\left(D_{53} A_{56} \oplus B_{55} \oplus A_{56}\right)=0\) (18)
\(\left(H_{57} \oplus \widetilde{H}_{57}\right)\left(C_{54} G_{58} \oplus F_{59} \oplus G_{58}\right)=0\) (19)
\(\left(H_{57} \oplus \widetilde{H_{57}}\right)\left(B_{55} E_{60} \oplus B_{55} \oplus F_{59}\right)=0\) (20)
\(\left(H_{57} \oplus \widetilde{H}_{57}\right) A_{56}=0\) (21)
\(\begin{aligned} &\left(H_{57} \oplus \widetilde{{H}_{57}}\right)\left(F_{59} C_{62} \oplus D_{61} E_{60} \oplus F_{59}\right. \\ &\left.\oplus G_{38} \oplus A_{56}\right)=0 \end{aligned}\) (22)
\(\left(H_{57} \oplus \widetilde{H}_{57}\right)\left(G_{58} \oplus 0 x f f f f f f f f\right)=0\) (23)
\(H_{57}^{\gg 11}-\widetilde{H_{57}^{\gg 11}}=-\left(X_{19}-\widetilde{X_{19}}\right)\) (24)
가장 먼저, H57과 \(\widetilde {H_{57}}\)의 값을 결정한다. 식 (16) 으로부터 , 다음 식을 얻을 수 있다.
\(H_{57}^{\gg11} - \widetilde {H_{57}^{\gg 11}}+H_{57} - \widetilde {H_{57}} =0.\) (25)
Eurocrypt'92에서 Berson은 n-비트 X와 Y와 주어지면, \((X-Y)^{\gg k}-\left(X^{\gg k}-Y^{\gg k}\right)\)의 값은 0, 2n-k-1, 2n-k, 2n-1중에 하나임을 증명하였다.[14] 그러므로, 식(25)의 해는 다음 식들의 해를 결정하는 방법으로 찾을 수 있다.
\(\left(H_{57}-\widetilde{H}_{57}\right)^{\gg 11}+\left(H_{57}-\widetilde{H}_{57}\right)=0\) (26)
\(\left(H_{57}-\widetilde{H}_{57}\right) ^{\gg 11}+\left(H_{57}-\widetilde{H}_{57}\right)=2^{21}-1\) (27)
\(\left(H_{57}-\widetilde{H}_{57}\right)^{\gg 11}+\left(H_{57}-\widetilde{H}_{57}\right)=2^{21}\) (28)
\(\left(H_{57}-\widetilde{H}_{57}\right)^{\gg 11}+\left(H_{57}-\widetilde{H}_{57}\right)=2^{32}-1\) (29)
\(t=H_{57}-\widetilde {{H}_{57}}\)로 설정한다. 그러면, 식 (26)에 대해서는 t=0이며, 식 (28)에 대해서는 t=0x5555555b과 t=0xaaaaaaab이고, 식 (29)에 대해서는 t=0x55555555이고 t=0xaaaaaaaa이다. 그리고, 식 (27)에 대한 해는 존재하지 않는다. 그러므로, \(H_{57}\)과 \(\widetilde {{H}_{57}}\)의 값을 결정하기 위해서는 \(H_{57}-\widetilde {{H}_{57}}\)이 0x55555555, 0x5555555b, 0xaaaaaaaa, 그리고, 0xaaaaaaab이 되는 \(H_{57}\)과 \(\widetilde {{H}_{57}}\)을 찾고, 이들 이식 (25)를 만족하는지 여부를 확인하여야 한다.
\(\left(H_{57} \oplus \widetilde{H}_{57}\right)(k)\)를 \(H_{57} \oplus \widetilde{H}_{57}\)의 k번째 비트라고 하자. \(\left(H_{57} \oplus \widetilde{H}_{57}\right)(k)=1\)이면, 식 (17)부터 식 (25) 로부터 다음을 얻는다.
\(\begin{aligned} &C_{54}(k) E_{52}(k) \oplus B_{55}(k)=0 \\ &D_{53}(k) A_{56}(k) \oplus B_{55}(k) \oplus A_{56}(k)=0 \\ &C_{54}(k) G_{58}(k) \oplus F_{59}(k) \oplus G_{58}(k)=0 \\ &B_{55}(k) E_{60}(k) \oplus B_{55}(k) \oplus F_{59}(k)=0 \\ &A_{56}(k)=0 \\ &F_{59}(k) C_{62}(k) \oplus D_{61}(k) E_{60}(k) \oplus F_{59}(k) \oplus G_{38}(k) \\ &\quad \oplus A_{56}(k)=0 \\ &G_{58}(k) \oplus 1=0 \end{aligned}\)
상기 식들의 해는 다음과 같다.
\(\begin{array}{lll} E_{52}(k)=0, & C_{54}(k)=1, & B_{55}(k)=0, \\ A_{56}(k)=0, & G_{58}(k)=1, & F_{59}(k)=0, \\ E_{60}(k)=1, & D_{61}(k)=1 . & \end{array}\)
그리고, D53(k)와 C62(k) 는 임의의 값을 가질 수 있다. 식 (16)부터 식 (24)의 해는 다음과 같다. \(S=H_{57} \oplus \widetilde{H}_{57}\)이고 R은 32-비트 랜덤수이다.
\(\begin{aligned} &E_{52}=(\sim S) R, \quad G_{58}=S \vee R, \\ &D_{53}=\text { 임의의 값, } \quad F_{59}=(\sim S) R, \\ &C_{54}=S \vee R, \quad E_{60}=S \vee R, \\ &B_{55}=(\sim S) R, \quad D_{61}=S \vee R, \\ &A_{56}=(\sim S) R, \quad C_{62}=\text { 임의의값 } \end{aligned}\)
이제 HAVAL-23의 충돌쌍 (X, \(\widetilde X\))을 결정하는 알고리즘을 제안한다.
〔단계 1〕 i≠2, 6, 9, 12, 13, 15, 19, 24, 29에 대한 Xi 의 값을 임의의 값으로 설정한다.
〔단계 2〕 Xg를 다음으로 결정한다.
\(\begin{aligned} X_{9}=& E_{52}-\left(A_{51} C_{51} F_{51} \oplus C_{51} G_{51} H_{51} \oplus A_{51} C_{51}\right.\\ & \oplus A_{51} G_{51} \oplus C_{51} B_{51} \oplus F_{51} H_{51} \oplus G_{51} H_{51} \\ &\left.\oplus D_{51} C_{51} \oplus D_{51}\right)^{\gg 7}-E_{51}^{\gg 11}-0 x b 3916 c f 7 \end{aligned}\)
〔단계 3〕 D53을 다음으로 설정한다.
\(\begin{aligned} D_{53}=&\left(H_{52} B_{52} E_{52} \oplus B_{52} F_{52} G_{52} \oplus H_{52} B_{52}\right.\\ & \oplus H_{52} F_{52} \oplus B_{52} A_{52} \oplus E_{52} G_{52} \oplus F_{52} G_{52} \\ &\left.\oplus C_{52} B_{52} \oplus C_{52}\right)^{\gg 7}+D_{52}^{\gg 11}+X_{17}+0 x 0801 f 2 e 2 \end{aligned}\)
〔단계 4〕 X24, X29, X6을 계산한다.
\(\begin{aligned} X_{24}=& C_{54}-\left(G_{53} A_{53} D_{53} \oplus A_{53} E_{53} F_{53} \oplus G_{53} A_{53}\right.\\ & \oplus G_{53} E_{53} \oplus A_{53} H_{53} \oplus D_{53} F_{53} \oplus E_{53} F_{53} \\ &\left.\oplus B_{53} A_{53} \oplus B_{53}\right)^{\gg 7}-C_{53}^{\gg 11}-0 x 858 e f c 16 \end{aligned}\)
\(\begin{aligned} X_{29}=& B_{55}-\left(F_{54} H_{54} C_{54} \oplus H_{54} D_{54} E_{54} \oplus F_{54} H_{54}\right.\\ & \oplus F_{54} D_{54} \oplus H_{54} G_{54} \oplus C_{54} E_{54} \oplus D_{54} E_{54} \\ &\left.\oplus A_{54} H_{54} \oplus A_{54}\right)^{\gg 7}-B_{54}^{\gg 11}-0 x 636920 d 8 \end{aligned}\)
\(\begin{aligned} X_{6}=& A_{56}-\left(E_{55} G_{55} B_{55} \oplus G_{55} C_{55} D_{55} \oplus E_{55} G_{55}\right.\\ & \oplus E_{55} C_{55} \oplus G_{55} F_{55} \oplus B_{55} D_{55} \oplus C_{55} D_{55} \\ &\left.\oplus H_{55} G_{55} \oplus H_{55}\right)^{\gg 7}-A_{55}^{\gg 11}-0 x 71574e69 \end{aligned}\)
〔단계 5〕 X19와 \(\widetilde {X_{19}}\)를 계산한다.
\(\begin{aligned} &X_{19}=H_{57}-\left(D_{56} F_{56} A_{56} \oplus F_{56} B_{56} C_{56}\right. \\ &\quad \oplus D_{56} F_{56} \oplus D_{56} B_{56} \oplus F_{56} E_{56} \oplus A_{56} C_{56} \\ &\left.\oplus B_{56} C_{56} \oplus G_{56} F_{56} \oplus G_{56}\right)^{\gg 7}-H_{56}^{\gg 11}-0 x a 458 \text { fea3 } \end{aligned}\)
\(\begin{aligned} &\widetilde {{X}_{19}}=\widetilde{H}_{5 \mathrm{7}}-\left(D_{56} F_{56} A_{56} \oplus F_{56} B_{56} C_{56}\right. \\ &\oplus D_{56} F_{56} \oplus D_{56} B_{56} \oplus F_{56} E_{56} \oplus A_{56} C_{56} \oplus B_{56} C_{56} \\ &\left.\oplus G_{56} F_{56} \oplus G_{56}\right)^{\gg 7}-H_{56}^{\gg 11}-0 x a 458 \text { fea3 } \end{aligned}\)
〔단계 6〕유사한 방법으로 X12, X15, X13, X2을 결정한다,
H57=0xaaaab004, \(\widetilde {H_{57}}\)=0x0000055a, 그리고, \(S=H_{57} \oplus \widetilde {{H}_{57}}=0 x a a a a b 55 e\)로 설정한다. 〔표 7〕은 다음을 해쉬값으로 가지는 HAVAL-23의 충돌쌍이다.
[표 7] HAVAL-23의 충돌쌍 (X, \(\widetilde {X}\))
\(\begin {array} 0xd3ad3176, & 0x40e4b13c, & 0x374e6bde, & 0xcda35c41, \\ 0x83b2496d, & 0xb4931a23, & 0xa08a1d28, & 0x5b8ef68c. \end {array}\)
Ⅴ. 결론
본 논문에서는 3-pass HAVAL의 축소 라운드의 안전성을 분석하였다. 3-pass HAVAL의 처음두 라운드인 HAVAL-12와 마지막 두 라운드인 HAVAL-23 각각에 대해서, 충돌쌍이 존재하는 조건을 수립하고, 조건을 안족하는 식을 분석홍}.여, 결과적으로 충돌쌍을 결정할 수 있었다. 본 논문 예서 제안하는 공격 방법이 3-pass HAVAL의 전체 라운드에 대한 것이 아니나, 3~pass HAVALe 암호 적으로 취약함을 가지고 있는 것으로 판단할 수 있다.
• 본 연구는 정보통신부의 대학IT연구센터(ITRC) 지원을 받아 수행되었습니다.
References
- Lecture Notes in Computer Science v.537 The MD4 message digest algorithm Ronald L.Rivest;In Alfred J.Menezes(ed);Scott~A.Vanstone(ed) https://doi.org/10.1007/3-540-38424-3_22
- In Request for Comments (RFC) 1321,April. Internet Activities Board, Internet Privacy Task Force The MD5 message digest algorithm Ronald L.Rivest
- Lecture Notes in Computer Science v.718 HAVAL-A One-Way Hashing Algorithm with Variable Length of Output Yuliang Zheng;Josef Pieprzyk;Jennifer Seberry;In Jennifer Seberry(ed);Yuliang Zheng(ed)
- Final Report of RACE Integrity Primitives Evaluation (R1040) RIPE-Integrity primitives for secure information systems Research and Development in Advanced Communications Technologies in Europe
- RIPEMD-160: A strengthened version of RIPEMD Hans Dobbertin;Antoon Bosselaers;Bart Preneel
- FIPS PUB 180-1:Secure Hash Standard National Institute of Standards and Technology
- Lecture Notes in Computer Science v.576 An attack on the last two rounds of MD4 Bert den Boer;Antoon Bosselaers;In Joan Feigenbaum(ed) https://doi.org/10.1007/3-540-46766-1_14
- Lecture Notes in Computer Science v.1008 On the need for multipermutations : Cryptanalysis of MD4 and SAFER Serge Vaudenacy;In Bart Preneel(ed) https://doi.org/10.1007/3-540-60590-8_22
- Journal of Cryptology v.11 no.4 Cryptanalysis of MD4 Hans Dobbertin https://doi.org/10.1007/s001459900047
- Journal of Cryptology v.10 no.1 RIPEMD with two rounds compress functions in not collisionfree Hans Dobbertin https://doi.org/10.1007/s001459900019
- In Preproceegins of FSE 2001, 8th Fast Software Encryption Workshop The RIPEMD L and RIPEMD R improved variants of MD4 are not collision free Christophe Debaert;Henri Gilbert
- Lecture Notes in Computer Science v.765 Collisions for the compression function of MD5 Bert den Boer;Antoon Bosselaers;In Tor Helleseth(ed)
- Electronics Letters v.36 no.1 Cryptanalysis of reduced version of HAVAL P.R.Kasselman;W.T.Penzhorn https://doi.org/10.1049/el:20000017
- Lecture Notes in Computer Science v.658 Differential cryptanalysis mod 2 32 with applications to MD5 Thomas A.Berson;In Rainer A Rueppel(ed)