SEAL (kryptografický algoritmus)

Aktuální verze stránky ještě nebyla zkontrolována zkušenými přispěvateli a může se výrazně lišit od verze recenzované 26. března 2014; kontroly vyžadují 9 úprav .

SEAL ( S oftware -  optimized Encryption Algorithm , softwarově optimalizovaný šifrovací algoritmus) je algoritmus symetrického proudového šifrování dat optimalizovaný pro softwarovou implementaci.

Vyvinutý v IBM v roce 1993 Philem Rogawayem a Donem Coppersmithem . _  _ Algoritmus je optimalizován a doporučen pro 32bitové procesory . K provozu vyžaduje několik kilobajtů vyrovnávací paměti a osm 32bitových registrů . Rychlost šifrování  je přibližně 4 strojové cykly na bajt textu. Pro kódování a dekódování se používá 160bitový klíč . Aby se předešlo nežádoucí ztrátě rychlosti v důsledku pomalých operací zpracování klíčů , SEAL na něm předem provede několik transformací, což vede ke třem tabulkám určité velikosti. Místo samotného klíče se tyto tabulky používají přímo k šifrování a dešifrování textu. 

Algoritmus je považován za velmi spolehlivý, velmi rychlý [1] a od prosince 1993 je chráněn patentem USA č. 5454039 [2] .

Historie

V roce 1991 Ralph C. Merkle  popsal nákladovou efektivitu softwarových šifer . Podle jeho názoru nejúčinnější z nich byly Khufu , FEAL a RC4 . Stále se zvyšující potřeby zákazníků po spolehlivé kryptografii však vyžadovaly hledání nových a zdokonalování starých řešení.

V létě 1992 byl zahájen vývoj první verze nového softwarově optimalizovaného algoritmu SEAL 1.0 . Hlavní myšlenky a princip fungování vývojáři převzali z blokové šifry Ralph Merkle ( ang.  Ralph C. Merkle ) Khufu , která se jim v té době zdála nejdokonalejší. Rozhodli se dosáhnout nejlepších vlastností projektu (hlavně rychlosti) a zúžili rozsah zařízení , na kterých je jeho realizace možná. Volba byla učiněna ve prospěch 32bitových strojů s alespoň osmi obecnými registry a mezipamětí o velikosti alespoň 8 KB . V březnu 1993 bylo rozhodnuto vytvořit blokovou šifru , ale struktura z rodiny pseudonáhodných funkcí vyvinutá do října téhož roku fungovala rychleji, což vedlo vývojáře k streamování šifrování .

Tato struktura se skládala ze čtyř registrů , z nichž každý měnil svého „souseda“ v závislosti na tabulce získané z klíče . Po řadě takových úprav se hodnoty registru přidají do sekvence klíčů, která s každou iterací roste, dokud nedosáhne určité délky.

Při vývoji byla téměř veškerá pozornost věnována vnitřní smyčce algoritmu , protože procedura inicializace registru a způsob generování tabulek z klíče měly malý vliv na jeho bezpečnost. Ve své finální podobě se projekt SEAL 1.0 objevil až v prosinci 1993 .

V roce 1996 Helen Handschuh a Henri Gilbert SEAL 1.0 a na samotný SEAL 1.0. Potřebovali texty, každé čtyři 32bitová slova, aby našli závislost pseudonáhodné funkce na klíči . V důsledku toho byla provedena některá vylepšení a změny v dalších verzích algoritmu SEAL 3.0 a SEAL 2.0 . Například ve verzi 1.0 končila každá iterace s klávesovou sekvencí úpravou pouze dvou registrů a ve verzi 3.0 byly upraveny všechny čtyři. SEAL 3.0 a SEAL 2.0 také používaly algoritmus SHA-1 ( Secure Hash Algorithm-1 ) ke generování tabulek namísto původního SHA , díky čemuž byly odolnější vůči kryptoanalýze .  

Popis

Při popisu algoritmu se používají následující operace a zápisy:

Vytváření šifrovacích tabulek z klíče

Aby se předešlo ztrátě rychlosti šifrování při pomalých operacích, používá algoritmus tři tabulky: R , S a T . Tyto tabulky jsou vypočteny pomocí procedury z algoritmu SHA-1 a závisí pouze na klíči . Plnění těchto tabulek lze popsat pomocí funkce G , která vrací 160bitovou hodnotu ze 160bitového řetězce a 32bitového čísla .

Zavádíme následující funkce a proměnné v závislosti na indexu :

160bitový řetězec je pak rozdělen do pěti 32bitových slov, takže

Je také vytvořeno šestnáct 32bitových slov

Poté se provedou konečné výpočty:

Představujeme funkci where for

Pak tabulky:

Dále se klíč v algoritmu nepoužívá.

Inicializace servisních registrů

Před generováním pseudonáhodné funkce je třeba připravit čtyři 32bitové servisní registry ( , , a ) a čtyři 32bitová slova ( , , a ). Jejich hodnoty jsou určeny z tabulek a , 32bitového čísla a nějakého čísla v následujícím postupu.

Vytvoření pseudonáhodné funkce

Pro šifrování textu je potřeba vytvořit pseudonáhodnou funkci.

      

      

            

            

            

            

            

            

            

            

            

            

            

                                

Proces šifrování se skládá z velkého počtu iterací , z nichž každá končí vygenerováním pseudonáhodné funkce . Počet prošlých iterací ukazuje počítadlo l . Všechny jsou rozděleny do několika fází s podobnými operacemi. V každé fázi je horních 9 bitů jednoho z registrů ( A , B , C nebo D ) použito jako ukazatel , kterým se vybírá hodnota z tabulky T. Tato hodnota se přičte aritmeticky nebo bitově modulo 2 (XOR) s dalším registrem (opět jedním z A , B , C nebo D ). První vybraný registr se poté otočí doprava o 9 pozic. Dále se buď upraví hodnota druhého registru sčítáním nebo XOR s obsahem prvního (již posunutým) a provede se přechod do dalšího stupně, nebo se tento přechod provede ihned. Po 8 takových kolech se hodnoty A , B , C a D sečtou (aritmeticky nebo XORed ) s určitými slovy z tabulky S a přidají se k posloupnosti kláves y . Posledním krokem iterace je přidání dalších 32bitových hodnot ( n1 , n2 nebo n3 , n4 ) do registrů . Navíc výběr konkrétní hodnoty závisí na paritě čísla této iterace .

Vlastnosti a praktické použití

Při vývoji tohoto algoritmu byla hlavní pozornost věnována následujícím vlastnostem a nápadům:

Šifra SEAL vyžaduje asi čtyři strojové cykly k zašifrování a dešifrování každého bajtu textu . Běží rychlostí přibližně 58 Mb/s na 32bitovém 50 MHz procesoru a je jednou z nejrychlejších šifer na trhu .

Poznámky

  1. P.Rogaway , D.Coppersmith . Softwarově optimalizovaný šifrovací algoritmus . — 1998.
  2. Patent USA 5 454 039 „Softwarově efektivní pseudonáhodná funkce a její použití pro šifrování“

Zdroje

Odkazy