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