Tři zásadní vlastnosti jsou odolnost vůči prvnímu vzoru (digest neprozrazuje nic o svém vstupu), odolnost vůči druhému vzoru (pro daný vstup nelze najít jiný vstup se stejným digestem) a odolnost vůči kolizím (nelze vůbec najít dva vstupy se stejným digestem). Algoritmy jako MD5 a SHA-1 v těchto vlastnostech selhaly a nesmí být používány tam, kde na nich záleží.
Hašování se objevuje napříč bezpečností: kontroly integrity a důkazy manipulace, digitální podpisy podepisující digesty místo celých zpráv, adresování obsahu a — s úmyslnou dodatečnou prací — ukládání hesel. Hesla potřebují solené, výpočetně nákladné funkce jako dedikované algoritmy hašování hesel; rychlý univerzální hash je pro tento konkrétní úkol špatný nástroj.
Klíčové body
Použití pro integrituShodný digest potvrzuje, že obsah se od výpočtu digestu nezměnil — za předpokladu, že digest byl získán důvěryhodným kanálem.
Ukládání heselUkládejte digesty solených pomalých hašů místo rychlých hašů; sůl poráží předpočítané lookupy a náklad zpomaluje brute-force hádání ve měřítku.
Volba algoritmuPoužívejte aktuální schválené rodiny (SHA-2, SHA-3) a s MD5 a SHA-1 zacházejte jako s rozbitými pro bezpečnostní účely — zůstávají přijatelné pouze pro neadversariální kontrolní součty.
Důležité omezeníHash dokazuje pouze, že dva vstupy se shodly pod jednou funkcí v jednom čase. Neposkytuje důvěrnost — digest odhadnutelného vstupu je triviálně obnoven zkoušením kandidátů — a hash počítaný přes nedůvěryhodný kanál může být vyměněn spolu s obsahem, za který ručí.