Hash založený na rychlém syndromu | |
---|---|
Vývojáři | Daniel Ogot, Matthew Finiash, Nicolas Sandrier |
Vytvořeno | 2003 |
zveřejněno | 2008 |
Velikost hash | 160, 224, 256, 384, 512 |
Typ | hashovací funkce |
FSB (Fast Syndrome-Based Hash Function) je sada kryptografických hašovacích funkcí vytvořená v roce 2003 a přihlášená v roce 2008 jako kandidát do soutěže SHA-3 [1] . Na rozdíl od mnoha v současnosti používaných hašovacích funkcí lze do určité míry prokázat kryptografickou sílu FSB. Síla FSB dokazuje, že prolomit FSB je stejně obtížné jako vyřešit nějaký NP-úplný problém známý jako dekódování regulárního syndromu. Ačkoli stále není známo, zda jsou NP-úplné problémy řešitelné v polynomiálním čase , obecně se předpokládá, že nejsou.
Během procesu vývoje bylo navrženo několik verzí FSB, z nichž poslední byla předložena v soutěži SHA-3, ale byla zamítnuta v prvním kole. Zatímco všechny verze FSB tvrdí, že jsou bezpečné , některé předběžné verze byly nakonec prolomeny [2] . Při vývoji nejnovější verze FSB byly zohledněny všechny zranitelnosti a v tuto chvíli zůstává algoritmus kryptograficky odolný vůči všem aktuálně známým útokům.
Na druhou stranu odolnost něco stojí. FSB je pomalejší než tradiční hashovací funkce a využívá poměrně hodně paměti RAM, takže je nepraktický v prostředích, kde je omezený. Navíc kompresní funkce používaná v FSB vyžaduje velkou velikost výstupní zprávy, aby byla zaručena šifrovací síla. Tento problém byl vyřešen v posledních verzích, kde je výstup komprimován funkcí Whirlpool . Ačkoli však autoři tvrdí, že přidání této poslední kontrakce nesníží stabilitu, znemožňuje ji formálně prokázat [3] .
Kompresní funkce má parametry jako a . Tato funkce bude fungovat pouze se zprávami o délce . - výstupní velikost. Navíc a musí být přirozená čísla - binární logaritmus). Důvodem je , že chceme, aby to byla kompresní funkce, takže vstup musí být větší než výstup. Později použijeme Merkle-Damgardovu konstrukci k rozšíření vstupní domény pro zprávy libovolné délky.
Základem této funkce je (náhodně vybraná) binární matice , která interaguje se zprávou bitů násobením matice . Zde zakódujeme -bitovou zprávu jako vektor v -rozměrném vektorovém prostoru přes pole dvou prvků, takže výstupem bude zpráva o bitech.
Z bezpečnostních důvodů a také z důvodu rychlé hašovací frekvence se jako vstup do naší matice používají pouze „váha pravidelných slov“.
Zpráva se nazývá slovo o hmotnosti a délce , pokud se skládá z bitů a právě z těchto bitů jsou nenulové.
Slovo o hmotnosti a délce se nazývá pravidelné, pokud každý interval obsahuje právě jeden nenulový prvek pro všechny . To znamená, že pokud zprávu rozdělíme na w stejných částí, pak každá část obsahuje právě jeden nenulový prvek.
Existují přesně odlišná běžná slova o hmotnosti a délce , takže potřebujeme přesně ty bity dat, abychom tato běžná slova zakódovali. Opravte vzájemnou korespondenci mezi sadou dlouhých bitových řetězců a sadou běžných slov hmotnosti a délky a poté definujte funkci komprese FSB takto:
Tato verze je obecně označována jako syndromická komprese. To je poměrně pomalé a v praxi se to provádí jiným a rychlejším způsobem, který se nazývá rychlá syndromická komprese. Rozdělíme na podmatice velikosti a stanovíme korespondenci jedna ku jedné mezi bitovými řetězci délky a sadou sekvencí čísel od 1 do . To je ekvivalentní korespondenci jedna ku jedné se sadou pravidelných slov délky a váhy , protože toto slovo můžeme vidět jako posloupnost čísel od 1 do . Kompresní funkce vypadá takto:
Nyní můžeme použít Merkle-Damgardovu strukturu ke zobecnění kompresní funkce, takže vstup může mít libovolnou délku.
Počáteční podmínky :
Zprávu hašujeme pomocí matice
, která je rozdělena na podmatice , , .
Algoritmus :
Konstrukce Merkle-Damgard zakládá své zabezpečení pouze na bezpečnosti použité kompresní funkce. Musíme tedy pouze ukázat, že kompresní funkce je odolná vůči kryptoanalýze .
Kryptografická hašovací funkce musí být zabezpečena třemi různými způsoby:
Stojí za zmínku, že pokud najdete druhý předobraz, můžete samozřejmě najít kolizi . To znamená, že pokud dokážeme, že náš systém je odolný proti kolizi, bude jistě zabezpečen proti nalezení druhého předobrazu.
Obtížné obvykle v kryptografii znamená něco jako „téměř jistě mimo dosah jakéhokoli protivníka, jehož narušení systému je třeba zabránit“, ale pojďme si tento pojem definovat přesněji. Budeme předpokládat: "doba provádění jakéhokoli algoritmu, který najde kolizi nebo předobraz, závisí exponenciálně na velikosti hodnoty hash." To znamená, že s relativně malými přírůstky k velikosti hashe se můžeme rychle dostat na vysokou úroveň kryptografické síly.
Jak již bylo zmíněno dříve, kryptografická síla FSB závisí na úloze zvané pravidelné syndromické dekódování. Původně problém v teorii kódování , ale jeho NP-úplnost z něj udělala šikovnou aplikaci pro kryptografii. Je to speciální případ dekódování syndromu a je definován takto:
Dané matice dimenze a bitový řetězec délky tak, že existuje sada sloupců, jeden pro každý , které tvoří . Potřebujeme najít takovou sadu sloupců.
Ukázalo se, že tento problém je NP-úplný tím, že se vyhneme 3D shodě. Opět, ačkoli není známo, zda existují polynomiální algoritmy pro řešení časových NP-úplných problémů, žádný z nich není znám a nalezení jednoho by bylo obrovským objevem.
Je snadné vidět, že nalezení předobrazu daného hashe je přesně ekvivalentní tomuto problému, takže problém s předobrazem FSB musí být také NP-úplný.
Ještě musíme prokázat odolnost proti kolizi. K tomu potřebujeme další NP-úplnou variaci pravidelného syndromického kódování, nazývanou „biregular zero syndromic decoding“.
Jsou uvedeny matice rozměrů a bitový řetězec délky . Pak je zde sada sloupců, buď dva nebo žádný v každém , tvořící 0, kde . Potřebujeme najít takovou sadu sloupců. Ukázalo se, že tato metoda je NP-úplná, protože se vyhýbá 3D párování.
Stejně jako pravidelné syndromické dekódování je v podstatě ekvivalentní hledání regulárního slova tak, že , biregulární nulové syndromické dekódování je ekvivalentní hledání biregulárního slova , jako je . Biregulární slovo délky a váhy je bitový řetězec délky takový, že v každém intervalu jsou buď přesně dva záznamy 1, nebo žádný. Všimněte si, že 2-běžné slovo je prostě součet dvou běžných slov.
Předpokládejme, že jsme našli kolizi: Hash( m 1 ) = Hash ( m 2 ) pro . Pak můžeme najít dvě pravidelná slova a taková, že . Pak dostaneme , kde je součet dvou různých regulárních slov a musí to být bi-regulární slovo, jehož hash je nula, takže jsme vyřešili problém dekódování bi-regular null syndromu. Došli jsme k závěru, že nalezení kolizí v FSB je přinejmenším stejně obtížné jako řešení problému dekódování biregulárního nulového syndromu, a proto je algoritmus NP-úplný.
Nedávné verze FSB používaly kompresní funkci Whirlpool k další kompresi výstupu hašovací funkce. Přestože kryptografickou sílu v tomto případě nelze prokázat, autoři tvrdí, že tato poslední komprese ji nesnižuje. Všimněte si, že i kdyby bylo možné najít kolize ve Whirpoolu, stále by bylo nutné najít kolize předobrazu v původní funkci komprese FSB, aby bylo možné najít kolize ve FSB.
Při řešení problému pravidelného syndromického dekódování jsme s ohledem na hašování jakoby v opačném směru. Pomocí stejných hodnot jako v předchozím příkladu dostaneme podblok a řetězec . V každém podbloku musíme najít jeden sloupec, takže budou . Očekávaná odpověď by tedy byla , , . To je notoricky obtížné vypočítat pro velké matice. Při biregulárním dekódování nulového syndromu chceme v každém podbloku najít ne jeden sloupec, ale buď dva, nebo žádný, aby vedly k (a ne k ). V příkladu bychom mohli použít druhý a třetí sloupec (počítáno od 0) z , žádný ze sloupců , nula a druhý z . Je možných více řešení, například bez použití některého ze sloupců z .
Prokazatelné zabezpečení FSB znamená, že nalezení kolizí je NP-úplné. Důkazem je ale redukce na složitější problém. To však poskytuje pouze omezené záruky bezpečnosti, protože stále může existovat algoritmus, který snadno vyřeší problém pro podmnožinu daného prostoru. Například existuje metoda linearizace , kterou lze použít k získání kolizí během několika sekund na stolním počítači pro starší verze FSB s nárokovaným hodnocením bezpečnosti 2128 . Je ukázáno, že když je prostor zpráv zvolen určitým způsobem, hashovací funkce poskytuje minimální předobraz nebo odolnost proti kolizi.
Tabulka ukazuje složitost nejznámějších útoků proti FSB:
Výstupní velikost (bity) | Obtížnost při hledání kolizí | Složitost inverze |
---|---|---|
160 | 2 100,3 | 2 163,6 |
224 | 2 135,3 | 2229,0 _ |
256 | 2 190,0 | 2 261,0 |
384 | 2 215,5 | 2 391,5 |
512 | 2 285,6 | 2527,4 _ |
To druhé může být problematické při použití FSB na zařízeních s relativně malou pamětí.
Tento problém byl vyřešen v roce 2007 v související hashovací funkci zvané IFSB (Improved Fast Syndrome Based Hash) [4] , která je stále prokazatelně bezpečná, ale spoléhá na poněkud silnější předpoklady.
V roce 2010 byl představen S-FSB, který má rychlost o 30 % rychlejší než FSB [5] .
V roce 2011 představili Daniel Julius Bernstein a Tanya Lange RFSB, která byla 10krát rychlejší než FSB-256 [6] . RFSB při běhu na stroji Spartan 6 FPGA dosahoval propustnosti až 5 Gbps [7] .
Hashovací funkce | |
---|---|
obecný účel | |
Kryptografický | |
Funkce generování klíčů | |
Kontrolní číslo ( srovnání ) | |
Hashe |
|