SHA1 – Secure Hash Algorithm Funkcje skrótu SHA1 – Secure Hash Algorithm
Skróty komunikatów – message digest Pęknie podpisy cyfrowe można otrzymać używając funkcji mieszającej (haszującej). Jest to funkcja jedno kierunkowa. Jako argument używa duży fragment tekstu i z tego fragmentu otrzymuje co najmniej 160-512 bitowy skrót. Tekst otwarty niech będzie P (paylaod). Tą funkcję oznaczamy przez MD (Massage Digest) i ma ona następujące własności: Obliczenie MAC = MD( P ) jest bardzo łatwo. Obliczenie P na podstawie MAC jest w praktyce nie wykonalne. Dla danego P nie da się znaleźć takiego Q, że Q≠P oraz MD( P ) = MD( Q ) Zmiana nawet 1 bitu w tekście wejściowym powoduje drastyczne zmiany w wartości funkcji
Skróty komunikatów – message digest Aby łatwe było spełnienie kryterium 3 łańcuch wynikowy funkcji mieszającej powinien mieć długość co najmniej 128 bitów. W celu zadośćuczynienia kryterium 4 funkcja mieszająca powinna wykonywać dość znaczące przetasowania bitów, zdecydowanie różne od opisywanych wcześniej symetrycznych algorytmów szyfrowania. Obliczenie skrótu z tekstu otwartego wykonywane jest znacznie szybciej niż zaszyfrowanie tego tekstu za pomocą klucza publicznego, lak więc opisywana metoda może znacząco poprawić efektywność systemów podpisu elektronicznego System oparty na skrótach komunikatów może funkcjonować także w połączeniu z kluczami publicznymi
Funkcja mieszająca – SHA1 Blok 512 bitowy wypełnienie Słowo 32 bitowe Słowo 32 bitowe SHA-1 przetwarza tekst wejściowy w podziale na bloki 512-bitowe, produkuje jednak wynik 160-bitowy Wi = S1( Wi-3Wi-8Wi-14Wi-16 ), i=16,…,79 (1) Inicjalizacja zmiennych Wypełnienie tablicy W według wzoru (1) Obliczanie zmiennych A,B,C,D i E Obliczanie zmiennych H0 -H4. W16 = S1( W13W8W2W0), W17 = S1( W14W9W3W1), ……………………………………. W79 = S1( W76W71W65W63),
SHA gdzie Sm(W) oznacza cykliczne przesunięcie (rotację) 32-słowa W o m bitów w lewo. Następnie pięć zmiennych roboczych A, B, C, D, E inicjowanych jest zawartością H0 -H4. Wykonywane dalej obliczenia dają się zapisać w postaci następującego pseudokodu: for ( i=0; i<80: i++) { temp=S5 (A) + f(B, C, D) + E + Wi; E=D; D=C; C = S30(B); B = A; A = temp; }
SHA gdzie funkcje mieszające/dane są wzorami: f(B, C, D) = ( B & C )||( !B & D ) 0 < i < 19 f(B, C, D) = B xor C xor D 20 < i < 39 f(B, C, D) = ( B & C )||( B & D )||( C & D ) 40 < i< 59 f(B, C, D) = B xor C xor D 60 < i< 79 Oraz operatory: And &, koniunkcja bitowa, Or ||, alternatywa bitowa, xor symetryczna różnica bitowej, not -!, negacja bitowa.
SHA Po wykonaniu 80 iteracji zawartość zmiennych A -E dodawana jest do zawartości zmiennych H0 -H4. H0 = H0 +A ……………. H4 = H4 +E Przy przejściu do nowego bloku tablica W ponownie inicjowana jest jego zawartością, natomiast wartość zmiennych H0 -H4 nie jest zmieniana. Po przetworzeniu ostatniego bloku zmienne te zawierają wynik funkcji. . Oraz opracowane są nowe wersje funkcji SHA-1 zwracające wyniki o długości 256,384 i 512 bitów. Patrz dokument RFC 3174
Integralność MD(Payload) = MAC ? Ann Algorytm SHA Bann 160 bitowy Skrót Otwarty text Anny o dowolnej długości Algorytm SHA Payload MAC MD(Payload) = MAC ? Payload MAC Bann
Koniec części