Funkcje kryptograficzne Hash
Funkcje skrótu są niezwykle przydatne i pojawiają się w prawie wszystkich aplikacjach do ochrony informacji.
Funkcja skrótu to funkcja matematyczna, która konwertuje liczbową wartość wejściową na inną skompresowaną wartość liczbową. Dane wejściowe do funkcji skrótu mają dowolną długość, ale dane wyjściowe mają zawsze stałą długość.
Wywoływane są wartości zwracane przez funkcję skrótu message digest lub po prostu hash values. Poniższy obrazek ilustruje funkcję skrótu -
Funkcje funkcji skrótu
Typowe cechy funkcji skrótu to -
Fixed Length Output (Hash Value)
Funkcja skrótu ukrywa dane o dowolnej długości do stałej długości. Ten proces jest często określany jakohashing the data.
Ogólnie rzecz biorąc, skrót jest znacznie mniejszy niż dane wejściowe, dlatego czasami wywoływane są funkcje skrótu compression functions.
Ponieważ skrót jest mniejszą reprezentacją większych danych, jest również określany jako digest.
Funkcja skrótu z wyjściem n-bitowym jest określana jako plik n-bit hash function. Popularne funkcje skrótu generują wartości od 160 do 512 bitów.
Efficiency of Operation
Generalnie dla każdej funkcji haszującej h z wejściem x obliczenie h (x) jest operacją szybką.
Obliczeniowe funkcje skrótu są znacznie szybsze niż szyfrowanie symetryczne.
Właściwości funkcji skrótu
Aby być skutecznym narzędziem kryptograficznym, funkcja skrótu powinna mieć następujące właściwości -
Pre-Image Resistance
Ta właściwość oznacza, że odwrócenie funkcji skrótu powinno być trudne obliczeniowo.
Innymi słowy, jeśli funkcja skrótu h dała wartość skrótu z, wówczas znalezienie dowolnej wartości wejściowej x, która jest skrótem z z, powinno być trudnym procesem.
Ta właściwość chroni przed intruzem, który ma tylko wartość skrótu i próbuje znaleźć dane wejściowe.
Second Pre-Image Resistance
Ta właściwość oznacza, że biorąc pod uwagę dane wejściowe i ich hash, powinno być trudno znaleźć inne dane wejściowe z tym samym hashem.
Innymi słowy, jeśli funkcja skrótu h dla wejścia x daje wartość skrótu h (x), wówczas powinno być trudno znaleźć jakąkolwiek inną wartość wejściową y, taką, że h (y) = h (x).
Ta właściwość funkcji skrótu chroni przed atakującym, który ma wartość wejściową i jej skrót, i chce zastąpić inną wartość jako uzasadnioną wartość zamiast oryginalnej wartości wejściowej.
Collision Resistance
Ta właściwość oznacza, że znalezienie dwóch różnych danych wejściowych o dowolnej długości, które skutkują tym samym hashem, powinno być trudne. Ta właściwość jest również nazywana bezkolizyjną funkcją skrótu.
Innymi słowy, w przypadku funkcji skrótu h trudno jest znaleźć dowolne dwa różne dane wejściowe xiy takie, że h (x) = h (y).
Ponieważ funkcja skrótu jest funkcją kompresującą o ustalonej długości skrótu, niemożliwe jest, aby funkcja skrótu nie powodowała kolizji. Ta właściwość bezkolizyjności tylko potwierdza, że te kolizje powinny być trudne do znalezienia.
Ta właściwość bardzo utrudnia atakującemu znalezienie dwóch wartości wejściowych z tym samym hashem.
Ponadto, jeśli funkcja skrótu jest odporna na kolizje then it is second pre-image resistant.
Projektowanie algorytmów haszujących
Sercem haszowania jest funkcja matematyczna, która działa na dwóch blokach danych o stałym rozmiarze w celu utworzenia kodu skrótu. Ta funkcja skrótu stanowi część algorytmu wyznaczania wartości skrótu.
Rozmiar każdego bloku danych różni się w zależności od algorytmu. Zwykle rozmiary bloków wynoszą od 128 bitów do 512 bitów. Na poniższej ilustracji przedstawiono funkcję skrótu -
Algorytm haszujący obejmuje rundy powyższej funkcji skrótu, takiej jak szyfr blokowy. Każda runda przyjmuje dane wejściowe o ustalonym rozmiarze, zazwyczaj kombinację ostatniego bloku komunikatów i danych wyjściowych z ostatniej rundy.
Ten proces jest powtarzany przez tyle rund, ile potrzeba do skrótu całej wiadomości. Schemat algorytmu haszującego przedstawiono na poniższej ilustracji -
Ponieważ wartość skrótu pierwszego bloku komunikatu staje się wejściem do drugiej operacji mieszania, której wyjście zmienia wynik trzeciej operacji i tak dalej. Ten efekt, znany jakoavalanche efekt haszowania.
Efekt lawiny skutkuje zasadniczo różnymi wartościami skrótu dla dwóch wiadomości, które różnią się nawet jednym bitem danych.
Zrozum poprawnie różnicę między funkcją skrótu a algorytmem. Funkcja skrótu generuje kod skrótu, działając na dwóch blokach danych binarnych o stałej długości.
Algorytm haszujący to proces wykorzystujący funkcję skrótu, określający, w jaki sposób wiadomość zostanie podzielona i w jaki sposób wyniki z poprzednich bloków wiadomości są połączone razem.
Popularne funkcje skrótu
Przyjrzyjmy się pokrótce niektórym popularnym funkcjom skrótu -
Message Digest (MD)
MD5 była najpopularniejszą i szeroko stosowaną funkcją skrótu przez kilka lat.
Rodzina MD składa się z funkcji skrótu MD2, MD4, MD5 i MD6. Został przyjęty jako Internet Standard RFC 1321. Jest to 128-bitowa funkcja skrótu.
Digesty MD5 są szeroko stosowane w świecie oprogramowania w celu zapewnienia integralności przesyłanego pliku. Na przykład serwery plików często zapewniają wstępnie obliczoną sumę kontrolną MD5 dla plików, dzięki czemu użytkownik może porównać z nią sumę kontrolną pobranego pliku.
W 2004 roku w MD5 wykryto kolizje. Atak analityczny udał się dopiero po godzinie przy użyciu klastra komputerowego. Ten atak kolizyjny spowodował złamanie zabezpieczeń MD5 i dlatego nie jest już zalecane do użytku.
Funkcja Secure Hash (SHA)
Rodzina SHA składa się z czterech algorytmów SHA; SHA-0, SHA-1, SHA-2 i SHA-3. Chociaż pochodzą z tej samej rodziny, są strukturalnie różni.
Oryginalna wersja to SHA-0, 160-bitowa funkcja skrótu, została opublikowana przez National Institute of Standards and Technology (NIST) w 1993 roku. Miała kilka słabych punktów i nie stała się zbyt popularna. Później w 1995 r. SHA-1 został zaprojektowany w celu skorygowania rzekomych słabości SHA-0.
SHA-1 jest najpowszechniej używaną z istniejących funkcji skrótu SHA. Jest stosowany w kilku powszechnie używanych aplikacjach i protokołach, w tym w zabezpieczeniach Secure Socket Layer (SSL).
W 2005 r. Znaleziono metodę wykrywania kolizji SHA-1 w praktycznych ramach czasowych, przez co wątpliwe jest długoterminowe zatrudnienie SHA-1.
Rodzina SHA-2 ma cztery kolejne warianty SHA, SHA-224, SHA-256, SHA-384 i SHA-512, w zależności od liczby bitów wartości skrótu. Nie zgłoszono jeszcze żadnych udanych ataków na funkcję skrótu SHA-2.
Chociaż SHA-2 jest silną funkcją skrótu. Chociaż znacznie się różni, jego podstawowa konstrukcja jest nadal zgodna z projektem SHA-1. Dlatego NIST wezwał do nowych konkurencyjnych projektów funkcji skrótu.
W październiku 2012 roku NIST wybrał algorytm Keccak jako nowy standard SHA-3. Keccak oferuje wiele korzyści, takich jak wydajna wydajność i dobra odporność na ataki.
RIPEMD
RIPEMD to akronim od RACE Integrity Prime Evaluation Message Digest. Ten zestaw funkcji skrótu został zaprojektowany przez otwartą społeczność badawczą i jest ogólnie znany jako rodzina europejskich funkcji skrótu.
W zestawie znajdują się RIPEMD, RIPEMD-128 i RIPEMD-160. Istnieją również 256 i 320-bitowe wersje tego algorytmu.
Oryginalny RIPEMD (128-bitowy) jest oparty na zasadach projektowych zastosowanych w MD4 i zapewnia wątpliwe bezpieczeństwo. Wersja 128-bitowa RIPEMD była szybką poprawką zastępującą luki w oryginalnym RIPEMD.
RIPEMD-160 to ulepszona wersja i najczęściej używana wersja w rodzinie. Wersje 256 i 320-bitowe zmniejszają ryzyko przypadkowej kolizji, ale nie mają wyższego poziomu bezpieczeństwa w porównaniu z odpowiednio RIPEMD-128 i RIPEMD-160.
Wir
To jest 512-bitowa funkcja skrótu.
Pochodzi ze zmodyfikowanej wersji Advanced Encryption Standard (AES). Jednym z projektantów był Vincent Rijmen, współtwórca AES.
Zostały wydane trzy wersje Whirlpool; mianowicie WHIRLPOOL-0, WHIRLPOOL-T i WHIRLPOOL.
Zastosowania funkcji skrótu
Istnieją dwa bezpośrednie zastosowania funkcji skrótu w oparciu o jej właściwości kryptograficzne.
Przechowywanie haseł
Funkcje skrótu zapewniają ochronę przechowywania haseł.
Zamiast przechowywać hasło w postaci jawnej, w większości wszystkie procesy logowania przechowują wartości skrótu haseł w pliku.
Plik haseł składa się z tabeli par, które mają postać (id użytkownika, h (P)).
Proces logowania przedstawiono na poniższej ilustracji -
Intruz może zobaczyć tylko skróty haseł, nawet jeśli uzyskał dostęp do hasła. Nie może on logować się za pomocą skrótu, ani nie może wyprowadzić hasła z wartości skrótu, ponieważ funkcja skrótu ma właściwość odporności na przedobraz.
Kontrola integralności danych
Sprawdzanie integralności danych jest najczęstszym zastosowaniem funkcji skrótu. Służy do generowania sum kontrolnych w plikach danych. Ta aplikacja zapewnia użytkownikowi poprawność danych.
Proces przedstawiono na poniższej ilustracji -
Sprawdzanie integralności pomaga użytkownikowi wykryć wszelkie zmiany wprowadzone w oryginalnym pliku. Nie daje to jednak żadnej gwarancji oryginalności. Atakujący, zamiast modyfikować dane pliku, może zmienić cały plik i obliczyć razem nowy hash i wysłać do odbiorcy. Ta aplikacja do sprawdzania integralności jest przydatna tylko wtedy, gdy użytkownik ma pewność co do oryginalności pliku.