You are on page 1of 4

Algorytm haszujcy MD5

Podobnie jak DES, algorytm haszujcy MD5 zosta opublikowany przez R. Rivesta bez podania
argumentw, uzasadniajcych matematycznie, e moe on peni funkcj dobrej jednokierunkowej
funkcji skrtu. Wejciem algorytmu jest komunikat M o praktycznie dowolnej dugoci, a wyjciem
128-bitowy skrt, czyli wycig tego komunikatu. Przetwarzanie komunikatu na skrt odbywa si
w 4 krokach. Dane w kadym kroku przetwarza si w 512-bitowych blokach, podzielonych na 16
podblokw po 32 bity.
Krok 1. Wiadomo dopenia si dodatkowymi bitami w taki sposb, by jej dugo bya o
64 bity krtsza od wielokrotnoci 512 bitw. Dodatkowe bity dodaje si nawet wwczas, gdy
warunek powyszy jest speniony, tzn. gdy K 448 (mod 512), gdzie K oznacza pierwotn
dugo komunikatu. W takiej sytuacji dopenienie ma dugo od 1 do 512 bitw. Ustalono,
e uzupeniajce bity rozpoczyna jedynka, po ktrej nastpuj same zera.
Krok 2. Po wykonaniu czynnoci, podanych w 1. kroku, do uzupenionego komunikatu dodaje si 64 bity, ktre reprezentuj liczb K, czyli dugo pierwotn komunikatu M . Jeli
pocztkowa dugo komunikatu jest wiksza od 264 , to liczb, okrelajc pierwotn dugo
komunikatu oblicza si modulo 264 . W rezultacie tej czynnoci otrzyma si L 512-bitowych
blokw Y0 , Y1 , , . . . , YL1 , z ktrych kady mona podzieli na 16 podblokw 32-bitowych,
poniewa 512=16 32.
Krok 3. Operacje, realizowane przez algorytm MD5, polegaj na modyfikacji wartoci czterech zmiennych A, B, C i D, zapamitanych w 4 rejestrach 32-bitowych. W kroku 3.
zmiennym tym nadaje si nastpujce wartoci pocztkowe, zapisane w kodzie szesnastkowym:
A
B
C
D

=
=
=
=

01234567,
89abcdef,
fedcba98,
76543210.

Krok 4. W tym kroku uywa si czterech funkcji pomocniczych, ktrych argumentami s


trzy 32-bitowe sowa, a wyjciem jedno sowo 32-bitowe. S to nastpujce funkcje:
1

F (X, Y, Z) = (X and Y ) or (( not X) and Z),


G(X, Y, Z) = (X and Z) or (Y and ( not Z)),
H(X, Y, Z) = X xor Y xor Z,
I(X, Y, Z) = Y xor (X or ( not Z)).

(1)
(2)
(3)
(4)

Funkcje te dziaaj oczywicie na odpowiadajcych sobie bitach blokw X, Y, Z zgodnie z


tablic:
x
0
0
0
0
1
1
1
1

y
0
0
1
1
0
0
1
1

z
0
1
0
1
0
1
0
1

F
0
1
0
1
0
0
1
1

G
0
0
1
0
0
1
1
1

H
0
1
1
0
1
0
0
1

I
1
0
0
1
1
1
0
0

W tym kroku stosuje si rwnie 64-elementow tablic T [1..64], ktrej elementy zawieraj
podane niej liczby cakowite, przedstawione w zapisie szesnastkowym:
T[ 1]=d76aa478
T[ 5]=f57c0faf
T[ 9]=698098d8
T[13]=6b901122
T[17]=f61e2562
T[21]=d62f105d
T[25]=21e1cde6
T[29]=a9e3e905
T[33]=fffa3942
T[37]=a4beea44
T[41]=289b7ec6
T[45]=d9d4d039
T[49]=f4292244
T[53]=655b59c3
T[57]=6fa87e4f
T[61]=f7537e82

T[ 2]=e8c7b756
T[ 6]=4787c62a
T[10]=8b44f7af
T[14]=fd987193
T[18]=c040b340
T[22]=02441453
T[26]=c33707d6
T[30]=fcefa3f8
T[34]=8771f681
T[38]=4bdecfa9
T[42]=eaa127fa
T[46]=e6db99e5
T[50]=432aff97
T[54]=8f0ccc92
T[58]=fe2ce6e0
T[62]=bd3af235

T[ 3]=242070db
T[ 7]=a8304613
T[11]=ffff5bb1
T[15]=a679438e
T[19]=265e5a51
T[23]=d8a1e681
T[27]=f4d50d87
T[31]=676f02d9
T[35]=6d9d6122
T[39]=f6bb4b60
T[43]=d4ef3085
T[47]=1fa27cf8
T[51]=ab9423a7
T[55]=ffeff47d
T[59]=a3014314
T[63]=2ad7d2bb

T[ 4]=c1bdceee
T[ 8]=fd469501
T[12]=895cd7be
T[16]=49b40821
T[20]=e9b6c7aa
T[24]=e7d3fbc8
T[28]=455a14ed
T[32]=8d2a4c8a
T[36]=fde5380c
T[40]=bebfbc70
T[44]=04881d05
T[48]=c4ac5665
T[52]=fc93a039
T[56]=85845dd1
T[60]=4e0811a1
T[64]=eb86d391

Wartoci elementw tablicy T wyznacza si z wzoru


T [ i ] = 232 | sin(i) |= 4294967296 | sin(i) |,
gdzie argument i podany jest w radianach.
Niech M [0, 1, . . . , N 1] oznacza 32-bitowe sowa uzupenionego komunikatu, skadajcego
si z L 512-bitowych blokw. Wobec tego N = 16 L, czyli kady blok Yq skada si z 16 sw
M [j], j = 0, 1, . . . , 15. Proces przetwarzania w tym kroku obejmuje kady blok 16-sowowy
Yq i przebiega nastpujco:

3
for q:=0 to L-1 do
for j:=0 to 15 do X[j]:=M[16*q+j];
{kopiowanie kolejnego sowa do tablicy X}
AA:=A; BB:=B; CC:=C; DD:=D;
{zapamitanie pocztkowych wartoci rejestrw ABCD}
{Etap 1.
Niech [abcd k s i] oznacza wykonanie operacji
a = b + ((a + F(b,c,d) + X[k] + T[i]) <<< s).
Symbol (B) <<< s oznacza sowo 32-bitowe, otrzymane przez cykliczne
przesunicie sowa B o s miejsc w lewo, zmienne a, b, c i d oznaczaj
te sowa 32-bitowe, F jest funkcj, okrelon wzorem (5.2), T - wspomnian wczeniej tablic. Dziaanie + oznacza dodawanie sw
32-bitowych bez przeniesie (dodawanie modulo 2^32).
Wykona 16 nastpujcych operacji:}
[ABCD 0
[ABCD 4
[ABCD 8
[ABCD 12

7 1]
7 5]
7 9]
7 13]

[DABC 1
[DABC 5
[DABC 9
[DABC 13

12 2]
12 6]
12 10]
12 14]

[CDAB 2 17 3]
[CDAB 6 17 7]
[CDAB 10 17 11]
[CDAB 14 17 15]

[BCDA 3 22 4]
[BCDA 7 22 8]
[BCDA 11 22 12]
[BCDA 15 22 16]

(Etap 2.
Niech [abcd k s i] oznacza wykonanie operacji
a = b + ((a + G(b,c,d) + X[k] + T[i]) <<< s).
G jest funkcj, okrelon wzorem (5.3), pozostae oznaczenia
jak w etapie 1.
Wykona 16 nastpujcych operacji:}
[ABCD 1
[ABCD 5
[ABCD 9
[ABCD 13

5
5
5
5

17]
21]
25]
29]

[DABC 6
[DABC 10
[DABC 14
[DABC 2

9
9
9
9

18]
22]
26]
30]

[CDAB 11 14 19]
[CDAB 15 14 23]
[CDAB 3 14 27]
[CDAB 7 14 31]

[BCDA 0
[BCDA 4
[BCDA 8
[BCDA 12

20
20
20
20

20]
24]
28]
32]

(Etap 3.
Niech [abcd k s i] oznacza wykonanie operacji
a = b + ((a + H(b,c,d) + X[k] + T[i]) <<< s).
H jest funkcj, okrelon wzorem (5.4), pozostae oznaczenia
jak w etapie 1.
Wykona 16 nastpujcych operacji:}
[ABCD 5
[ABCD 1
[ABCD 13
[ABCD 9

4
4
4
4

33]
37]
41]
45]

[DABC 8
[DABC 4
[DABC 0
[DABC 12

11
11
11
11

34]
38]
42]
46]

[CDAB 11 16 35]
[CDAB 7 16 39]
[CDAB 3 16 43]
[CDAB 15 16 47]

[BCDA 14 23 36]
[BCDA 10 23 40]
[BCDA 6 23 44]
[BCDA 2 23 48]

(Etap 4.
Niech [abcd k s i] oznacza wykonanie operacji
a = b + ((a + I(b,c,d) + X[k] + T[i]) <<< s).

4
I jest funkcj, okrelon wzorem (5.5), pozostae oznaczenia
jak w etapie 1.
Wykona 16 nastpujcych operacji:}
[ABCD 0
[ABCD 12
[ABCD 8
[ABCD 4

6
6
6
6

49]
53]
57]
61]

[DABC 7 10
[DABC 3 10
[DABC 15 10
[DABC 11 10

50]
54]
58]
62]

[CDAB 14 15 51]
[CDAB 10 15 55]
[CDAB 6 15 59]
[CDAB 2 15 63]

[BCDA 5 21
[BCDA 1 21
[BCDA 13 21
[BCDA 9 21

52]
56]
60]
64]

{Obliczenie nowej wartoci rejestrw ABCD (dodawanie modulo 2^32):}


A:=AA+A; B:=BB+B; C:=CC+C; D:=DD+D;
{koniec ptli j}
{koniec ptli q}
Wyjciem algorytmu jest 128-bitowy skrt komunikatu M , czyli zawarto rejestrw ABCD.
Algorytm MD5 jest atwy do zrealizowania na procesorach 32-bitowych, a obliczenia skrtu
trwaj bardzo krtko. By on szczegowo zbadany z punktu widzenia odpornoci na kryptoanaliz
i uzyska bardzo dobr ocen.

You might also like