Kryptograficzne funkcje skrótu - kwestia zapewnienia integralności danych

Metodą zapewniającą integralność danych (więcej na temat integralności danych można przeczytać tutaj), która nierozerwalnie związana jest z problemami bezpieczeństwa przetwarzanych informacji, jest zastosowanie kryptograficznych funkcji skrótu, zwanych także haszami kryptograficznymi. Ich zadaniem pozostaje zapewnienie nienaruszalności przekazu, zapobieganie skutkom przemyślanego ataku, bądź przypadkowego błędu. Skrót ma zatem weryfikować dane. Oznacza to, iż nawet niewielkie zmiany w skracanym ciągu danych powinny w rezultacie generować inny skrót.

Zastosowania

Oprócz zapewnienia integralności przekazów, kryptograficzne funkcje skrótu wykorzystywane są jako kody uwierzytelniające nadawcę (warunkiem jest tutaj parametryzowanie funkcji skrótu odpowiednim kluczem) oraz przy tworzeniu podpisów cyfrowych, gdzie szyfrowaniu poddaje się jedynie sam skrót, zastępując czasochłonne szyfrowanie i deszyfrowanie całych wiadomości. Funkcje skrótu nadają się także do przechowywania haseł w bazach danych właśnie w formie skrótów. Wykorzystywane bywają w celu określenia integralności programów, aktualizacji oraz sygnatur wirusów. Stosowane są także w różnego rodzaju protokołach (SSL, SSH). W informatyce śledczej funkcje skrótów stosowane są w celu zapewnienia nienaruszalności materiału dowodowego. Każdy cyfrowy dowód zostaje oznaczony skrótem - w razie jego nieautoryzowanej modyfikacji zmianie podlega także hasz.

Czym są hasze kryptograficzne

Pod tym terminem kryje się odpowiedni algorytm dokonujący przetworzenia pliku o dowolnej długości do postaci stałej w rozmiarze wartości quasi-losowej. Wynikiem działania algorytmu będzie określony ciąg bitów posiadających pewne cechy charakterystyczne:

  • stały rozmiar, niezależny od długości wiadomości (najczęściej od 128 do 512 bitów),
  • jednokierunkowość - odtworzenie danych do jego wygenerowanie nie powinno być możliwe,
  • nie powinno być także możliwe dokonanie zmiany danych źródłowych bez modyfikacji skrótu,
  • dwa pliki o tym samym haszu nie powinny istnieć. W praktyce jednak można spotkać takie same skróty odnoszące się do różnych wiadomości (ma to związek z występowaniem nieograniczonej liczba danych wejściowych i ograniczonej liczby danych wyjściowych). Sytuację tego rodzaju określa się terminem “kolizji”. Funkcje skrótu powinna cechować jednak wysoka odporność na możliwość jej wystąpienia, czyli złożoność obliczeniowa procesu wykrycia kolizji powinna mieć tak duży stopień skomplikowania, aby skuteczność przeprowadzenia ataku typu brute force w rozsądnym czasie przy zakładanym poziomie technologicznym była praktycznie zerowa. Wyróżnia się bezkolizyjność silną, dla której znalezienie dwóch różnych wiadomości posiadających taki sam skrót powinno być obliczeniowo bardzo trudne, oraz bezkolizyjność słabą, która określa możliwość odkrycia dwóch takich samych skrótów dla różnych wiadomości.

Rodzaje haszów kryptograficznych

Najpopularniejsze skróty kryptograficzne realizowane są w oparciu o dwa rodzaje algorytmów: MD (Message Digest) oraz SHA (Secure Hash Algorithm). Ze względu na dosyć łatwe odnalezienie kolizji, przedstawiciele pierwszej grupy (MD4, MD5) obecnie rzadko bywają rekomendowani. Zaleca się wykorzystywanie algorytmów drugiej grupy, przynajmniej w formie 256-bitowej wartości funkcji.

MD4

Funkcja MD4 od początku lat dziewięćdziesiątych dała asumpt do stworzenia całej grupy funkcji skrótów MD/SHA. Jednak udany atak na dwie ostatnie rundy algorytmu z roku 1992, a następnie wykazanie jednokierunkowości dwóch pierwszych rund oraz publikacja algorytmu znajdowania kolizji, postawiły zasadność jego stosowania pod znakiem zapytania. Ostatecznie w 2004 roku wzór na generowanie kolizji został złamany i algorytm przeszedł do historii.

MD5

Funkcja ta została zaprezentowana już w 1991 roku, a prace nad nią wynikały ze świadomości słabości poprzedniczki. Jednak już dwa lata później znalezione zostają tzw. pseudokolizje dla tej funkcji, a w roku 1995 wykazane zostają kolizje dla jej funkcji kompresującej. Kolejne słabości ujawniono w 2004 roku (metoda otrzymania kolizji dla dwublokowych wiadomości) i w 2006, kiedy to miała miejsce publikacja algorytmu precyzującego kolizje z wykorzystaniem tzw. tunelowania. Na znalezienie kolizji wystarczyła w tym przypadku zaledwie minuta.

RIPEMD

Funkcja RIPEMD powstała w ramach projektu realizowanego w latach 1988–1992. Generowała ona skrót o długości 128 bitów. Jej ulepszona wersja z roku 1995 była już 160-bitowa, jednak bardzo szybko sam projektant wykazał brak odporności na kolizje w przypadku dwóch pierwszych rund funkcji kompresującej. Niedługo potem opublikowany został wzór na wykazanie kolizji (dwie wiadomości produkujące ten sam skrót), jednak funkcja opierała się próbom jej złamania (wpływ miała prawdopodobnie mała popularność funkcji i niezbyt intensywne prace analityczne).

SHA 0/ SHA 1/ SHA 2

Pierwsza generacja funkcji z rodziny SHA (Secure Hash Algorithm), algorytmów aprobowanych przez National Institute of Standards and Technology i wykorzystywanych przez administrację USA. SHA 0 powstał w roku 1993. Publikowane z upływem lat informacje dotyczące wykazywania kolizji o coraz lepszych stopniach złożoności sprowokowały powstanie nowych generacji tej funkcji.

SHA 1, która zastąpiła SHA 0, także wykazała się brakiem odporności na ataki, co sprowokowało do dalszych prac nad ulepszaniem algorytmu.

SHA 2 przedstawiona została w 2001 roku. Posiadała trzy wersje generujące skróty o długości 256, 384 i 512 bitów. Ponieważ nie wykazano żadnych skutecznych prób złamania funkcji, w 2002 roku SHA 2 stała się zalecanym standardem (FIPS PUB 180-2). Biorąc jednak pod uwagę to, iż znalezienie kolizji może być jedynie kwestią czasu, w 2007 roku NIST rozpisała konkurs na opracowanie nowej funkcji skrótu pod roboczą nazwą SHA 3.

Keccak

Zwycięzcą konkursu ogłoszonym w 2012 roku została funkcja pod nazwą Keccak - wykorzystująca nowe podejście, odróżniające się od architektury algorytmów grup MD i SHA. Konkursowa komisja doceniła wysoki poziom bezpieczeństwa oferowanego przez algorytm, jego dużą wydajność oraz swoistą elegancję architektoniczną.

Prace nad kolejnym algorytmami tworzącymi nowe standardy trwają.

Pavel Kroupka

Galeria