ŽRALOK | |
---|---|
Tvůrce | Vincent Rayman , Joan Dymen , Bart Presnel , Antun Bossalers a Eric de Veen |
Vytvořeno | 1996 _ |
zveřejněno | 1996 _ |
Velikost klíče | 128 bit |
Velikost bloku | 64 bit |
Počet kol | 6 [1] (8 [2] ) |
Typ | Substitučně-permutační síť |
SHARK ( anglicky Secure Hash Algorithm Regenerative Keys – bezpečný hashovací algoritmus s obnovenými klíči) je symetrický blokový šifrovací algoritmus vyvinutý skupinou kryptografů, včetně Vincenta Raymana , autora šifry AES . Teoreticky umožňuje použití bloků a klíčů různých délek, nicméně autorská implementace používá 128bitový klíč a 64bitové bloky. Struktura je podobná struktuře permutační sítě .
Šifra SHARK je první ze série algoritmů vyvinutých jako součást studie k vytvoření bezpečných a účinných blokových šifer založených na strategii návrhu Wide Trail [3] . Výsledkem výzkumu bylo později vytvoření standardní šifry AES [2] .
Autoři umístili SHARK jako algoritmus navržený tak, aby nahradil tehdy rozšířenou šifru DES . Novému algoritmu byly předloženy následující požadavky:
Přestože šifry založené na SP-net ( MMB, SAFER , 3-Way ) již existovaly dříve , SHARK byl první, kdo pro lineární transformaci použil kódy MDS [4] , konkrétně kódy Reed-Solomon [1] .
Existují dvě verze šifry SHARK : SHARK-A ( angl. affine transform ) a SHARK-E ( ang. exor ), pojmenované podle různých způsobů zavádění kulatých klíčů [5] .
Algoritmus SHARK se skládá ze tří částí:
Každá součást algoritmu je uvažována samostatně a každá musí mít určité vlastnosti. Difúzní vrstva by tedy měla mít jednotné a dobré difúzní vlastnosti. Nelineární vrstva musí mít také jednotné nelineární vlastnosti a komponenty algoritmu jsou nezávislé v následujícím smyslu: pokud se změní implementace např. nelineární vrstvy (některé S-boxy jsou nahrazeny jinými S-boxy se stejnými vlastnostmi), bezpečnost algoritmu zůstává nezměněna. Taková strategie je variantou strategie Wide trail [3] popsané v doktorské práci Joan Dymen [1] .
SHARK se skládá z nábojů, další vrstvy pro přidání klíče a další vrstvy obrácené difúze. Každé kolo zase sestává z přidání klíče, nelineární náhrady a difúzní vrstvy. Je potřeba další vrstva přidání klíče, aby se zabránilo útočníkovi oddělit poslední kolo. Pro zjednodušení dešifrovací operace je zapotřebí další vrstva obrácené difúze [1] .
Nelineární substituční vrstva se skládá z S-boxů, z nichž každý je -bitová permutace. Algoritmus je tedy schopen zašifrovat bloky délky [1] .
Difúzní vrstva přijímá -bitová čísla, která lze považovat za prvky nad polem . Dotyčná vrstva je nezbytná pro vytvoření lavinového efektu . Tento efekt se projevuje v lineárních a rozdílových kontextech:
Nechť je vratná lineární transformace , je prvek pole , je Hammingova vzdálenost , pak se kvantitativně lavinový efekt odhaduje podle čísla skoku ( angl. číslo větve ) [1] .
Pokud , tak . se nazývá optimální číslo skoku ( ang. optimální číslo větve ). V hlavním článku autoři ukázali, že pomocí MDS kódů je možné sestrojit reverzibilní lineární transformaci s optimálním počtem skoků. Implementace využívá Reed-Solomonovy kódy [1] .
Nelineární S-boxy poskytují ochranu proti lineární a diferenciální kryptoanalýze. Jednou z důležitých číselných charakteristik bezpečnosti šifry je matice exkluzivních zobrazení OR ( anglicky exor table ) , jejíž prvky jsou určeny vzorcem , kde - označuje počet prvků splňujících podmínku, - prvky oboru . Velké hodnoty maticových prvků mohou vést k náchylnosti šifry k diferenciálnímu útoku [1] .
Autoři zvolili S-boxy na základě mapování nad polem . V tomto případě, když je sudý, má matice následující vlastnosti:
Pro odstranění pevných bodů a je použita invertibilní afinní transformace výstupních bitů [1] .
Plánování klíčů vám umožňuje rozšířit původní klíč získáním kulatých klíčů . Dobré plánování vám umožní získat kulaté klíče s maximální entropií. Autoři navrhují dva způsoby, jak zadat kulatý klíč:
Vypočítá se jednoduchý XOR vstupních bitů kola a podklíče. Výhody metody jsou rychlost a stabilita: žádný klíč není silnější nebo slabší než jiný. Nevýhodou metody je, že entropie kulatého klíče nepřesahuje [1] .
Afinní transformaceNechť je nesingulární matice nad polem , v závislosti na klíči (přesněji na jeho rozšíření). Uveďme klíčovou operaci se vstupními daty takto: . Jedná se o lineární operaci, takže nezavádí slabé klávesy. Navíc se entropie kulatých kláves zvýší na . Tato operace je však z hlediska výkonu poměrně nákladná, takže autoři navrhují omezit podprostor diagonálních matic . V tomto případě se entropie kulatých klíčů blíží [1] .
Generování podklíčeV algoritmu SHARK jsou kulaté klíče generovány následovně:
Mechanismus generování podklíče v zásadě umožňuje použití klíče bitové délky, autoři však doporučují použít klíč nepřesahující 128 bitů [1] .
Pro dosažení vysokého výkonu jsou difúzní vrstva a substituční bloky kombinovány v jedné operaci [1] . Nechť označí vstupní data kola; - výstup; — permutační matice (S-boxy); je matrice definující difúzní vrstvu; a - označují sčítání a násobení přes pole . Pak
Pomocí rozšířených substitučních tabulek dimenze , určených vzorcem , můžeme zapsat transformaci v jednoduchém tvaru:
Jedno kolo tedy vyžaduje vyhledávání v tabulce a binární operace. Avšak vzhledem k tomu, že bity tabulky zabírají bajt délky bloku, algoritmus pro bloky o délce 128 bitů nebo více se ukázal být neefektivní pro většinu procesorů té doby (1996), proto existující omezení na délka bloku 64 bitů ( ) [2] .
Pro , lze sestavit matici, která definuje difúzní vrstvu na základě Reed-Solomonova kódu [2] .
Pro popis dešifrování zvažte 2kolovou verzi SHARK [1] . Dovolit být lineární operace, být nelineární náhrada a být operace sčítání klíče pro kulatou klávesu . Šifrovací funkce je v tomto případě rovna , kde je operace kombinovaná z difúzní vrstvy a S-boxů. Protože operace přidání klíče a operace difúze jsou lineární operace, jejich pořadí může být obráceno [1] :
,
kde je zápis
Výsledný vzorec aplikujeme na [1] :
Ukažme nyní, že operace dešifrování má stejnou strukturu. Chcete-li to provést, nejprve změňte operaci šifrování [1] :
Prohozením operace přidání klíče a operace difúze získáme stejnou strukturu jako v operaci šifrování [1] :
V současné době nebyly nalezeny žádné zranitelnosti klasické implementace algoritmu. Existují útoky pouze na varianty algoritmu:
Symetrické kryptosystémy | |
---|---|
Streamové šifry | |
Síť Feistel | |
Síť SP | |
jiný |