Documente Academic
Documente Profesional
Documente Cultură
1.1 MD4 este o funcție de hash dezvoltată de Rivest în 1990. Servește ca bază
pentru majoritatea funcțiilor de hash dedicate, cum ar fi MD5, SHAx,
RIPEMD și HAVAL. În 1996, Dobbertin a arătat cum să găsească coliziuni
ale MD4 cu o complexitate echivalentă cu 220 de calcule de hașă MD4. În
acest articol, prezentăm un nou atac asupra MD4, care poate găsi o coliziune
cu probabilitatea 2−2 până la 2−6iar complexitatea găsirii unei coliziuni nu
depășește 28 de operații de hașă MD4. Bazat pe atacul de căutare a coliziunii,
prezentăm un atac de imagine pre-imagine ales pe MD4 cu complexitate sub
28. De asemenea, arătăm că pentru un mesaj slab, putem găsi un alt mesaj care
Să descriem acum calculul amprentei numerice, codificată pe 128 biţi. Algoritmul
de gene- rare este:
Amprenta numerică este ı̂n final concatenarea celor patru cuvinte A, B, C, D (numite
re- gistre). Algoritmul ı̂mparte tabelul M ı̂n şiruri de câte 16 cuvinte consecutive, cărora
le aplică trei etape de transformări (ca la DES). Adunările de la pasul 8 sunt efectuate
modulo 232 .
Cele trei etape de transformări sunt distincte (spre deosebire de DES, unde cele 16 etape
erau identice).
Fie α, β două cuvinte de lungimi egale. Etapele de transformări vor folosi
următoarele operaţii:
Aceste operaţii sunt extrem de rapide şi pot fi implementate direct ţinând cont de
arhitectura calculatorului. Să detaliem puţin acest lucru.
Fie a1 a2 a3 a4 un cuvânt de patru octeţi şi ai un număr ı̂ntreg din intervalul [0, 255].
• ˆIntr-o arhitectură little-endian (cum este familia Intel 80xxx), un cuvânt reprezintă
ˆıntregul a4224 + a3216 + a228 + a1
1. Se inter-schimbă x1 ↔ x4 , x2 ↔ x3 , y1 ↔ y4 , y2 ↔ y3
3. Se inter-schimbă z1 ↔ z4 , z2 ↔ z3
Cele trei etape de construcţie ale funcţiei de dispersie MD4 folosesc trei funcţii f, g şi
respectiv
h, definite astfel:
f (X, Y, Z) = (X ∧ Y ) ∨ ((¬X) ∧ Z)
g(X, Y, Z) = (X ∧ Y ) ∨ (X ∧ Z) ∨ (Y ∧ Z)
h(X, Y, Z) = X ⊕ Y ⊕ Z
Descrierile celor trei etape sunt:
Etapa 1:
1. A ←− (A + f (B, C, D) + X[0]) << 3 9. A ←− (A + f (B, C, D) + X[8])<<3
2. D ←− (D + f (A, B, C) + X[1]) << 7 10. D ←− (D + f (A, B, C) + X[9]) << 7
3. C ←− (C + f (D, A, B) + X[2]) << 11 11. C ←− (C + f (D, A, B) + X[10]) << 11
4. B ←− (B + f (C, D, A) + X[3]) << 19 12. B ←− (B + f (C, D, A) + X[11])<<19
5. A ←− (A + f (B, C, D) + X[4]) << 3 13. A ←− (A + f (B, C, D) + X[12]) << 3
6. D ←− (D + f (A, B, C) + X[5]) << 7 14. D ←− (D + f (A, B, C) + X[13]) << 7
7. C ←− (C + f (D, A, B) + X[6]) << 11 15. C ←− (C + f (D, A, B) + X[14]) <<11
8. B ←− (B + f (C, D, A) + X[7]) << 19 16. B ←− (B + f (C, D, A) + X[15]) << 19
Etapa 2:
1. A ←− (A + g(B, C, D) + X[0] + P ) << 3 9. A ←− (A + g(B, C, D) + X[2] + P ) << 3
2. D ←− (D + g(A, B, C) + X[4] + P ) <<5 10. D ←− (D + g(A, B, C) + X[6] + P )
<<5
3. C ←− (C + g(D, A, B) + X[8] + P ) << 9 11. C ←− (C + g(D, A, B) + X[10] + P )
<<9
4. B ←− (B+g(C, D, A)+X[12]+P ) << 13 12. B ←− (B+g(C, D, A)+X[14]+P ) <<
13
5. A ←− (A + g(B, C, D) + X[1] + P ) << 3 13. A ←− (A + g(B, C, D) + X[3] + P )
<<3
6. D ←− (D + g(A, B, C) + X[5] + P ) << 5 14. D ←− (D + g(A, B, C) + X[7] + P ) <<
5
7. C ←− (C + g(D, A, B) + X[9] + P )<<9 15. C ←− (C + g(D, A, B) + X[11] + P )
<<9
8. B ←− (B+g(C, D, A)+X[13]+P )<<13 16. B ←− (B+g(C, D, A)+X[15]+P ) <<
13
unde s-a notat P = 5A827999.
Etapa 3:
1. A ←− (A + h(B, C, D) + X[0] + P ) << 3 9. A ←− (A + h(B, C, D) + X[1] + P ) << 3
2. D ←− (D + h(A, B, C) + X[8] + P ) << 9 10. D ←− (D + h(A, B, C) + X[9] + P ) <<
9
3. C ←− (C + h(D, A, B) + X[4] + P ) << 11 11. C ←− (C + h(D, A, B) + X[5] + P )<<
11
4. B ←− (B +h(C, D, A)+X[12]+P ) << 15 12. B ←− (B +h(C, D, A)+X[13]+P ) <<
15
5. A ←− (A + h(B, C, D) + X[2] + P ) << 3 13. A ←− (A + h(B, C, D) + X[3] + P ) <<
3
6. D ←− (D + h(A, B, C)+ X[10]+ P ) << 9 14. D ←− (D + h(A, B, C)+ X[11]+ P )
<<9
7. C ←− (C + h(D, A, B) + X[6] + P ) << 11 15. C ←− (C + h(D, A, B) + X[7] + P ) <<
11
8. B ←− (B +h(C, D, A)+X[14]+P ) << 15 16. B ←− (B +h(C, D, A)+X[15+P ])
<<15 unde P = 6ED9EBA1.
O operațiune MD4: MD4 constă din 48 din aceste operațiuni, grupate în trei runde
de 16 operații. F este o funcție neliniară; o funcție este utilizată în fiecare rundă. Mi
denotă un bloc pe 32 de biți din intrarea mesajului, iar Ki denotă o constantă pe 32
de biți, diferită pentru fiecare operație.
Mesaj: CARAUSVICTORIAAB
01000011 01100001 01110010 01100001 01110101 01110011 01010110 01101001 01100011 01110100 01101111
01110010 01101001 01100001 01000001 01000010
1. F= B xor C xor D
1111111011001100111100001011001
2.A+F mod 2^32= (01000011 01100001 01110010 01100001 + 01000001 01001100 01000101
01011000)mod2^32= 334330315
Concluzie
Funcțiile Hash sunt instrumente utilizate în integritatea mesajelor, a semnăturilor
digitale și a timbrului digital. MD4 este o funcție de hash care servește ca bază
pentru majoritatea funcțiilor de hash dedicate, cum ar fi MD5, SHAx, RIPEMD și
HAVAL. Toate aceste funcţii de dispersie au avantajul de a fi foarte rapide, deci
practice în semnarea de mesaje lungi.
Bibliografie
1. http://practicalcryptography.com/hashes/md4-hash/
2. https://searchsecurity.techtarget.com/definition/MD4
3. http://xor.pw/
4. https://bit-calculator.com/bit-shift-calculator
5. Curs3 has.pdf