Dzięki tej właściwości, w zastosowaniach informatycznych funkcje haszujące 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 przekłamaniami transmisji, a także mają zastosowania przy optymalizacji dostępu do struktur danych w programach komputerowych.
Szczególną podgrupą funkcji haszujących są funkcje uznawane za bezpieczne do zastosowań kryptograficznych (jak np. SHA-1, SHA2, RIPEMD-160). W przypadku takich funkcji praktycznie niewykonalne musi być stworzenie dwóch wiadomości o tym samym skrócie (to umożliwiałoby celową podmianę danych, a mimo tego pomyślne przejście weryfikacji po stronie ich odbiorcy), oraz wywnioskowanie jakichkolwiek informacji o właściwościach wiadomości na podstawie jej skrótu (to ułatwiałoby np. kryptoanalizę zaszyfrowanych danych, do których dołączono sygnaturę tego typu).
Należy zauważyć, że uznanie funkcji za bezpieczną do zastosowań kryptograficznych w większości przypadków opiera się wyłącznie na domniemanej odporności na znane ataki kryptoanalityczne, nie zaś o matematyczne dowody gwarantujące niemożność ich złamania. Poważne słabości znaleziono w wielu funkcjach skrótu, które historycznie uchodziły za bezpieczne - m.in. w MD2, MD4, SHA, czy ostatnio MD5.
Problemem znajdującym się pomiędzy efektywnymi strukturami danych a kryptografią są tzw. computational complexity attacks. Wiele struktur danych ma bardzo dobrą przeciętną złożoność obliczeniową i fatalną złożoność pesymistyczną – atakujący może za pomocą niewielkiej ilości specjalnie w tym celu przygotowanych danych przeciążyć system – choć radziłby sobie on ze znacznie większymi ilościami normalnych informacji.
Do najczęściej stosowanych typów computational complexity attacks należą właśnie ataki na niedoskonałe funkcje hashujące.
licencja: GNU FDL / źródło: Wikipedia.org
10.1.2007 - 21:19