|
|||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||
Funkcja skrótu, jednokierunkowa funkcja mieszająca lub funkcja haszująca - funkcja, która przyporządkowuje dowolnie dużej liczbie (wiadomości) krótką, zwykle posiadającą stały rozmiar wartość (skrót wiadomości). W informatyce funkcje skrótu pozwalają na ustalenie krótkich i łatwych do weryfikacji sygnatur dla dowolnie dużych zbiorów danych. Takie sygnatury mogą chronić przed przypadkowymi lub celowo wprowadzonymi modyfikacjami danych (sumy kontrolne), a także mają zastosowania przy optymalizacji dostępu do struktur danych w programach komputerowych (tablice haszujące).
edytuj Bezpieczne funkcje skrótuSzczególną podgrupą funkcji skrótu są funkcje uznawane za bezpieczne do zastosowań kryptologicznych (jak np. SHA-1, SHA-2, RIPEMD-160). Kryptograficzna funkcja skrótu powinna spełniać następujące kryteria:
Należy zauważyć, że uznanie funkcji za bezpieczną do zastosowań kryptograficznych opiera się zawsze wyłącznie na domniemanej odporności na znane ataki kryptoanalityczne, nie zaś na matematycznych dowodach gwarantujących niemożność złamania. W szczególności bezpieczna funkcja skrótu musiałaby być funkcją jednokierunkową, a istnienie takich funkcji nie zostało dotychczas dowiedzione. Poważne słabości znaleziono w wielu funkcjach skrótu, które historycznie uchodziły za bezpieczne - m.in. w MD2, MD4, SHA0, MD5 czy ostatnio SHA1. edytuj Ataki na funkcje skrótuNawet bezpieczne funkcje skrótu mogą być obiektem ataków kryptograficznych, wykorzystujących miejsce gdzie funkcje te są wykorzystywane w strukturach danych. Wiele struktur danych działa bardzo efektywnie w przeciętnym przypadku, ale słabo w przypadku pesymistycznym. Atakujący może za pomocą niewielkiej ilości specjalnie w tym celu przygotowanych danych przeciążyć system (atak DoS). edytuj PrzykładZałóżmy, że serwer trzyma pewne dane w tablicy mieszającej – ma k kubełków (buckets), i w każdym trzyma te dane, dla których ostatnie kilka cyfr wartości funkcji skrótu jest równe numerowi kubełka. Wyszukiwanie wśród danych odbywa się bardzo szybko - jeśli liczba kubełków jest proporcjonalna do ilości danych, to przeciętnie wyszukiwanie odbywa się w czasie stałym. Jeśli potrafimy jednak znaleźć serię danych, dla których ostatnie cyfry wartości funkcji skrótu używanej przez serwer są identyczne, możemy zmusić serwer do wrzucenia wszystkich danych do tego samego kubełka. Wtedy każde wyszukiwanie będzie wymagać przeszukania wszystkich danych. Już niezbyt duża ilość danych potrafi spowolnić serwer tak bardzo, że nie będzie w stanie wypełniać swojej funkcji. Jest to szczególnie groźne, jeśli serwer ten miał znaczenie dla bezpieczeństwa (IDS, firewall, serwer SSH). edytuj ZabezpieczeniaMożliwe zabezpieczenia przed atakami to między innymi:
edytuj Zobacz teżedytuj Bibliografia
|
| All Right Reserved © 2007, Designed by Stylish Blog. |