Funkcja SHA-1 - Zabezpieczenia kryptograficzne

Transkrypt

Funkcja SHA-1 - Zabezpieczenia kryptograficzne
ZABEZPIECZENIA KRYPTOGRAFICZNE
FUNKCJA SHA-1
SHA-1
(Secure
Hash
Algorithm)
jest
jednokierunkową
funkcją
hashującą
zaprojektowaną przez National Security Agency (NSA) i opublikowaną przez National
Institute of Standards and Technology (NIST). Wytwarza ona skrót o długości 160 bitów
z wiadomości o dowolnym rozmiarze, nie większym niż
2 64 -bitów. Funkcja SHA-1 jest
oparta na zasadach podobnych, do użytych przez profesora Ronalda L. Rivesta z MIT przy
projektowaniu funkcji hashujących MD4 i MD5, i w znacznym stopniu naśladuje te
algorytmy.
Oryginalna specyfikacja tego algorytmu została opublikowana w 1993 roku jako
Secure Hash Standard, FIPS PUB 180. Ta wersja jest teraz często nazywana jako SHA-0.
Była ona wycofana przez NSA krótko po publikacji i zastąpiona przez poprawioną wersję
opublikowaną w 1995 roku w FIPS PUB 180-1 i nazwaną SHA-1 [16].
Opis algorytmu SHA-1
W pierwszej kolejności wiadomość jest uzupełniana w ten sposób, że jej długość
jest wielokrotnością 512 bitów (uzupełnienie to jest takie samo jak w algorytmie MD5).
Na początku jest dopisywana jedynka, a później tyle zer, ile jest niezbędnych, aby
uzyskać długość o 64 bity krótszą od wielkości liczby 512. Na końcu jest dołączany 64bitowy ciąg, w którym jest zapisana długość wiadomości przed rozpoczęciem operacji
dopisywania.
Pięć 32-bitowych zmiennych jest inicjowanych następująco:
A = 67 45 23 01
B = EF CD AB 89
C = 98 BA DC FE
D = 10 32 54 76
E = C3 D2 El F0
Następnie rozpoczyna się główna pętla algorytmu. W pętli tej jest przetwarzany
każdorazowo 512-bitowy blok wiadomości i proces ten jest powtarzany tyle razy, ile 512bitowych bloków zawiera ta wiadomość.
Najpierw wartości powyższych pięciu zmiennych są kopiowane na wartości pięciu
innych zmiennych: A na AA, B na BB, C na CC, D na DD i E na EE.
Główna pętla składa się z czterech cykli, z których każdy zawiera 20 operacji.
Każda operacja składa się z nieliniowej operacji na trzech spośród czterech zmiennych A,
B, C i D oraz z przesunięcia i sumowania, podobnie jak w algorytmie MD5. Zbiór
nieliniowych funkcji SHA jest następujący:
f t (X, Y, Z) = XY OR (NOT X)Z - dla pierwszych dwudziestu operacji
f t (X, Y, Z) = X XOR Y XOR Z - dla kolejnych dwudziestu operacji
www.b-skrzypczyk.republika.pl
ZABEZPIECZENIA KRYPTOGRAFICZNE
f t (X, Y, Z) = XY OR XZ OR YZ - dla trzeciej dwudziestki operacji
f t (X, Y, Z) = X XOR Y XOR Z - dla ostatnich dwudziestu operacji
W algorytmie używa się też czterech stałych:
Kt
Kt
Kt
Kt
= 5A827999 - dla pierwszych dwudziestu operacji
= 6ED9EBA1 - dla drugiej dwudziestki operacji
= 8F1BBCDC - dla trzeciej dwudziestki operacji
= CA62C1D6 - dla czwartej dwudziestki operacji
M 0 do M 15
do W79 ) przy
Pojedynczy blok wiadomości składający się z szesnastu 32-bitowych słów (od
) jest transformowany na osiemdziesiąt słów 32-bitowych (od
W0
wykorzystaniu następującego algorytmu:
Wt = M t dla t = 0,1,...,15
Wt = Wt − 3 ⊕ Wt − 8 ⊕ Wt − 14 ⊕ Wt − 16 dla t = 16,17,...,79
Jeśli t oznacza numer operacji (numery od 1 do 80),
wiadomości o numerze j (od 0 do 15), a
M j reprezentuje podblok
< < < s oznacza cykliczne przesunięcie w lewo o s
bitów, to te 80 operacji może być przedstawionych następująco:
TEMP = ( A < < < 5) + f t ( B, C , D) + E + Wt + K t
E=
D=
C=
B=
A=
D
C
( B < < < 30)
A
TEMP
Po wykonaniu wszystkich powyższych działań zmienne A, B, C, D i E są dodawane
odpowiednio do zmiennych AA, BB, CC, DD i EE i algorytm jest kontynuowany dla
następnego bloku wiadomości. Ostatecznie wyjściem algorytmu jest konkatenacja
zmiennych A, B, C, D i E [32].
Stopień bezpieczeństwa SHA-1
SHA-1 jest nazywany bezpiecznym algorytmem, gdyż jest on tak zaprojektowany,
aby było obliczeniowo niewykonalne uzyskanie wiadomości odpowiadającej danemu
skrótowi wiadomości lub znalezienie dwóch różnych wiadomości mających takie same
skróty. Jakakolwiek zmiana w wiadomości, powstała podczas jej przesyłania, spowoduje,
z bardzo dużym prawdopodobieństwem, powstanie innego skrótu wiadomości [32].
Inne warianty SHA
NIST opublikował trzy dodatkowe warianty SHA, każdy z dłuższym skrótem. Ich nazwy,
są zależne od długości wytwarzanego skrótu (w bitach): SHA-256, SHA-384 i SHA-512.
Funkcje te były pierwszy raz opublikowane w 2001 roku w projekcie FIPS PUB 180-2,
który także zawiera SHA-1. Projekt ten został uznany za oficjalny standard w 2002 roku.
www.b-skrzypczyk.republika.pl
ZABEZPIECZENIA KRYPTOGRAFICZNE
Te nowe funkcje nie zostały jeszcze tak dobrze zbadane jak SHA-1 i nie są uważane
jeszcze za bezpieczne [16].
www.b-skrzypczyk.republika.pl