Snefru je kryptografická hashovací funkce navržená Ralphem Merklem . (Samotné jméno Snefru, navazující na tradici blokových šifer Khufu a Khafre , rovněž vyvinuté Ralphem Merklem, je jméno egyptského faraona ). Funkce Snefru převádí zprávy libovolné délky na hash délky (obvykle nebo ).
Vstupní zpráva je rozdělena do bloků bitové délky. Základem algoritmu je funkce , která bere jako vstup bitovou hodnotu a vypočítává bitovou hodnotu. Každý nový blok zprávy je zřetězen s hash vypočítaným pro předchozí blok a je přiváděn na vstup funkce . První blok je zřetězen řetězcem nul. Hash posledního bloku je zřetězen s binární reprezentací délky zprávy ( MD - amplifikace ) a výsledné zřetězení je hašováno naposledy.
Funkce je založena na funkci (reverzibilní) blokové šifry , která přijímá a počítá - bitové hodnoty. vrací XOR – kombinaci prvních bitů vstupu funkce a posledních bitů výstupu funkce . Funkce míchá vstupní data v několika krocích. Každý krok se skládá z 64 kol. V jednom kole se vezme slovo zprávy a nejméně významný bajt tohoto slova se aplikuje na blok, jehož výstupem je také slovo. Dále se provede operace XOR přijatého slova se dvěma sousedními slovy ve zprávě. V jednom kole se tedy pomocí jednoho bajtu slova změní dvě sousední slova ve zprávě. Na konci kola se bajty použitého slova smíchají tak, aby se příště na vstup bloku dostal další bajt (dochází k řadě cyklických posunů o 8, 16 nebo 24 bitů). Protože existuje 64 kol a 16 slov, každé slovo je použito čtyřikrát, proto je každý bajt zprávy použit jako vstup bloku. Konstrukce bloku je podobná konstrukci v algoritmu Khafre .
Je-li počet kroků ve funkci ( kol), pak se funkce Snefru nazývá dvouprůchodová, je-li počet kroků ( kol ), pak je Snefru tříprůchodová atd.
V březnu 1990 byla udělena odměna 1 000 $ tomu, kdo jako první prolomil dvouprůchodový Snefru tím, že našel dvě zprávy se stejným hash kódem (to znamená, že ukázal, že Snefru není odolný vůči kolizím typu 2 ). Podobná odměna byla později oznámena za hacknutí čtyřprůchodové varianty Snefru.
Eli Biham a Adi Shamir pomocí nástrojů diferenciální analýzy ukázali , že dvouprůchodová funkce Snefru (s bitovým hashem) není odolná vůči kolizím typu 1 a typu 2 .
Standardní útok na hashovací funkce je založen na paradoxu „narozenin“ . Pokud hashujeme ( , when ) různé zprávy, pak s vysokou pravděpodobností bude možné najít pár se stejným hashem. Takový útok je použitelný pro jakoukoli hashovací funkci bez ohledu na její implementaci.
Pro Snefru Biham a Shamir vyvinuli metodu diferenciální kryptoanalýzy, která nezávisí na výběru bloků a může být dokonce použita, když kryptoanalytik bloky nezná .
U hash length je délka bloků, do kterých je vstupní zpráva rozdělena, . V tomto útoku byl použit algoritmus, který hledá dvě vstupní hodnoty funkce ( - bit values), které se liší pouze v prvních bitech vytvořených z bloků vstupní zprávy, ale zároveň mají stejný hash.
Kroky algoritmu:
Výpočtem funkce přibližně párů bloků lze tedy najít kolizi typu 2 pro Snefru.
Vzhledem k tomu, že změny použité v kroku ovlivňují pouze bajty použité v kolech a , budou hodnoty bloků po kolech očíslovaných < v krocích a stejné.
V -tém kole se bajt z -tého slova použije ke změně -tého a -tého slova. Na vstup bloku je přiveden bajt, jehož výstupem je slovo. Dále se provede operace XOR s -tým a -tým slovem. Pokud se tento bajt změní (v kroku ), stejně jako bajt -tého slova, které je použito jako vstup bloku v -tém kole, s pravděpodobností, že po provedení operace XOR se bajt v -té slovo bude stejné jako stejný bajt v bloku v kroku po -a zaokrouhlí. Poté, když tento bajt dodáme v -tém kole na vstup bloku, dostaneme na výstupu stejnou hodnotu jako v -tém kole, provedené na bloku z kroku . Proto -té slovo bude po kole stejné pro oba kroky. -té slovo po kole, -té slovo po kole, ..., -té slovo po kole, -té slovo po kole, ..., -té slovo po kole bude také stejné , protože vstup bloku pro oba kroky v těchto kolech je stejný a stejný.
-té slovo je jiné pro kroky již po -tém kole. Proto v -tém kole způsobí, že se významy -tého a -tého slova pro obě fáze budou lišit. Totéž se stane v tém kole pro slova a . A opět, s pravděpodobností , bajt v -tém slově, který bude použit jako vstup bloku v -tém kole, bude stejný pro kroky a . Takže slova -e, ..., -e, -e, ..., -e budou stejná. Změny začnou, když se v -tém kole použije -té slovo .
Pokud tedy po , , , a -th zaokrouhlí bajt v -tém slově, který bude použit jako vstup pro blok v následujících kolech, stejný pro oba kroky, pak budou slova , , … , být stejný po celých kolech . Pravděpodobnost této události . Protože hodnota operace XOR z prvních 4 slov vstupního bloku funkce a prvních 4 slov výstupního bloku funkce je brána jako hash bloku , hash vypočítaný v obou krocích bude stejný. .
Metoda byla také aplikována na tříprůchodovou a čtyřprůchodovou funkci Snefru, přičemž vykazovala lepší výsledky ve srovnání s narozeninovou metodou.
Počet průchodů funkce Snefru |
hash délka, | Obtížnost útoku | Narozeninová metoda |
---|---|---|---|
2 | 128–192 | — | |
224 | |||
3 | 128–192 | — | |
224 | |||
čtyři | 128–192 | — | |
224 |
Pomocí tohoto útoku můžete najít mnoho dvojic, které mají stejný hash, a navíc najít několik zpráv, jejichž hash je roven hashu této zprávy (kolize 1. druhu). Počet operací potřebných k nalezení kolize 1. druhu při tomto útoku je menší než u metody „hrubé síly“ .
Počet průchodů funkce Snefru |
hash délka, | Obtížnost útoku | metoda hrubé síly |
---|---|---|---|
2 | 128–224 | — | |
3 | 128–224 | — | |
čtyři | 128–192 | — |
V tuto chvíli Merkle doporučuje používat funkci Snefru s alespoň osmi průchody. S tolika průchody se však výpočet funkce Snefru výrazně zpomaluje ve srovnání s funkcemi MD5 nebo SHA .
Hashovací funkce | |
---|---|
obecný účel | |
Kryptografický | |
Funkce generování klíčů | |
Kontrolní číslo ( srovnání ) | |
Hashe |
|