KRYPTON | |
---|---|
Tvůrce | Che Hong Lim (Future Systems, Inc.) |
Vytvořeno | 1998 _ |
zveřejněno | 1998–1999 _ _ |
Velikost klíče | 128, 192, 256 bitů |
Velikost bloku | 128 bit |
Počet kol | 12 |
Typ | Substitučně-permutační síť |
CRYPTON je symetrický algoritmus blokové šifry (velikost bloku 128 bitů, klíč až 256 bitů), vyvinutý jihokorejským kryptologem Chae Hoon Limem z jihokorejské společnosti Future Systems , která působí na trhu síťové bezpečnosti již od konce 80. léta a ochrana informací. Algoritmus byl vyvinut v roce 1998 jako šifra AES . Jak autor přiznal, návrh algoritmu je založen na algoritmu SQUARE .
Algoritmus Crypton neobsahuje tradiční sítě Feistel pro blokové šifry . Základem této šifry je tzv. SP-network (opakující se cyklická funkce substitucí-permutací, zaměřená na paralelizované nelineární zpracování [1] celého datového bloku). Výhodou takových algoritmů je kromě vysoké rychlosti i možnost studia odolnosti šifry vůči metodám diferenciální a lineární kryptoanalýzy , které jsou dnes hlavními nástroji pro prolamování blokových šifer.
Verze algoritmu Crypton v0.5 byla původně předložena do soutěže AES. Jak však řekl Che Hong Lim, neměl dostatek času na vývoj plné verze. A již v první fázi soutěže AES, při analýze algoritmů, byla verze Crypton v0.5 nahrazena verzí Crypton v1.0. Rozdíl mezi novou verzí a původní byl ve změně náhradních tabulek, v úpravě procesu rozšíření klíče.
Stejně jako ostatní soutěžící AES je Crypton navržen tak, aby šifroval 128bitové bloky dat. Šifrování využívá šifrovací klíče několika pevných velikostí – od 0 do 256 bitů s násobkem 8 bitů.
Struktura algoritmu Crypton – struktura „Square“ – je v mnoha ohledech podobná struktuře algoritmu Square vytvořeného v roce 1997. Kryptografické transformace pro algoritmy s touto strukturou lze provádět jak na celých řádcích a sloupcích pole , tak na jeho jednotlivých bytech. (Za zmínku stojí, že algoritmus Square byl vyvinut autory budoucího vítěze soutěže AES - autory algoritmu Rijndael - Vincent Raymen a Joan Dimen .)
Algoritmus Crypton představuje 128bitový blok šifrovaných dat ve formě pole 4x4 bajtů, nad kterým se během šifrovacího procesu provádí několik kol transformací. V každém kole se předpokládá, že budou postupně provedeny následující operace:
Algoritmus Crypton používá 4 substituční tabulky. Každý z nich nahrazuje 8bitovou vstupní hodnotu výstupem stejné velikosti.
Všechny tabulky jsou odvozeny z hlavní tabulky (viz obrázek - výpočet odvozených substitučních tabulek).
Níže je uveden příklad tabulek:
Tabulka :63 | ec | 59 | aa | db | 8e | 66 | c0 | 37 | 3c | čtrnáct | ff | 13 | 44 | a9 | 91 |
3b | 78 | 8d | ef | c2 | 2a | f0 | d7 | 61 | 9e | a5 | před naším letopočtem | 48 | patnáct | 12 | 47 |
vyd | 42 | 1a | 33 | 38 | c8 | 17 | 90 | a6 | d5 | 5 d | 65 | 6a | např | 8f | a1 |
93 | c2 | 2f | 0c | 68 | 58 | df | f4 | 45 | jedenáct | a0 | a7 | 22 | 96 | fb | 7d |
1d | b4 | 84 | e0 | bf | 57 | e9 | 0a | 4e | 83 | cc | 7a | 71 | 39 | c7 | 32 |
74 | 3d | de | padesáti | 85 | 06 | 6f | 53 | e8 | inzerát | 82 | 19 | e1 | ba | 36 | cb |
0e | 28 | f3 | 9b | 4a | 62 | 94 | lf | bd | f6 | 67 | 41 | d8 | d1 | 2d | a4 |
86 | b7 | 01 | c5 | b0 | 75 | 02 | f9 | 2c | 29 | 6e | d2 | f5 | 8b | fc | 5a |
e4 | 7f | dd | 07 | 55 | b1 | 2b | 89 | 72 | osmnáct | 3a | 4c | b6 | e3 | 80 | ce |
49 | srov | 6b | b9 | f2 | 0d | DC | 64 | 95 | 46 | f7 | deset | 9a | dvacet | a2 | 3f |
d6 | 87 | 70 | 3e | 21 | fd | 4d | 7b | 3c | ae | 09 | 8a | 04 | b3 | 54 | f8 |
třicet | 00 | 56 | d4 | e7 | 25 | bb | ac | 98 | 73 | ea | c9 | 9d | 4f | 7e | 03 |
ab | 92 | a8 | 43 | 0f | fa | 24 | 5c | 1e | 60 | 31 | 97 | CD | c6 | 79 | f5 |
5e | e5 | 34 | 76 | 1c | 81 | b2 | af | 0b | 5 d | d9 | e2 | 27 | 6d | d0 | 88 |
c1 | 51 | e6 | 9c | 77 | být | 99 | 23 | da | eb | 52 | 2e | b5 | 08 | 05 | 6c |
b8 | 1b | a3 | 69 | 8c | d3 | 40 | 26 | f1 | c4 | 9f | 35 | ee | 7c | 4b | 16 |
8d | b3 | 65 | aa | 6f | 3a | 99 | 03 | DC | f0 | padesáti | ff | 4c | jedenáct | a6 | 46 |
ec | e1 | 36 | bf | 0b | a8 | c3 | 5f | 85 | 7a | 96 | f2 | 21 | 54 | 48 | 1d |
b7 | 09 | 68 | cc | e0 | 23 | 5c | 42 | 9a | 57 | 75 | 95 | a9 | fb | 3e | 86 |
4e | 2b | před naším letopočtem | třicet | a1 | 61 | 7f | d3 | patnáct | 44 | 82 | 9e | 88 | 5a | ef | f5 |
74 | d2 | 12 | 83 | např | 5 d | a7 | 28 | 39 | 0e | 33 | e9 | c5 | e4 | lf | c8 |
d1 | f4 | 7b | 41 | 16 | osmnáct | bd | 4d | a3 | b6 | 0a | 64 | 87 | ea | d8 | 2f |
38 | a0 | srov | 6e | 29 | 89 | 52 | 7c | f6 | db | 9d | 05 | 63 | 47 | b4 | 92 |
1a | de | 04 | 17 | c2 | d5 | 08 | e7 | b0 | a4 | b9 | 4b | 7d | 2e | f3 | 69 |
93 | fd | 77 | 1c | 55 | c6 | ac | 26 | c9 | 60 | e8 | 31 | da | 8f | 02 | 3b |
25 | 3f | inzerát | e6 | cb | 34 | 73 | 91 | 56 | 19 | df | 40 | 6a | 80 | 8a | fc |
5b | 1e | c1 | f8 | 84 | f7 | 35 | vyd | 0f | ba | 24 | 2a | deset | ce | 51 | e3 |
c0 | 00 | 59 | 53 | 9f | 94 | ee | b2 | 62 | CD | ab | 27 | 76 | 3d | f9 | 0c |
ae | 4a | a2 | 0d | 3c | eb | 90 | 71 | 78 | 81 | c4 | 5e | 37 | 1b | e5 | d7 |
79 | 97 | d0 | d9 | 70 | 06 | ca | být | 2c | 6d | 67 | 8b | 9c | b5 | 43 | 22 |
07 | 45 | 9b | 72 | dd | fa | 66 | 8c | 6b | af | 49 | b8 | d6 | dvacet | čtrnáct | b1 |
e2 | 6c | 8e | a5 | 32 | 4f | 01 | 98 | c7 | 13 | 7e | d4 | bb | f1 | 2d | 58 |
b1 | 72 | 76 | bf | ac | ee | 55 | 83 | vyd | aa | 47 | d8 | 33 | 95 | 60 | c4 |
9b | 39 | 1e | 0c | 0a | 1d | ff | 26 | 89 | 5b | 22 | f1 | d4 | 40 | c8 | 67 |
9d | a4 | 3c | e7 | c6 | b5 | f7 | DC | 61 | 79 | patnáct | 86 | 78 | 6e | eb | 32 |
b0 | ca | 4f | 23 | d2 | fb | 5e | 08 | 24 | 4d | 8a | deset | 09 | 51 | a3 | 9f |
f6 | 6b | 21 | c3 | 0d | 38 | 99 | lf | 1c | 90 | 64 | např | 8b | a6 | 48 | bd |
53 | e1 | ea | 57 | ae | 84 | b2 | 45 | 35 | 02 | 7f | d9 | c7 | 2a | d0 | 7c |
c9 | osmnáct | 65 | 00 | 97 | 2b | 06 | 6a | 34 | f3 | 2c | 92 | ef | dd | 7a | 56 |
a2 | c4 | 88 | b9 | padesáti | 75 | d3 | e4 | jedenáct | ce | 4b | a7 | fd | 3f | být | 81 |
8e | d5 | 5a | 49 | 42 | 54 | 70 | a1 | df | 87 | ab | 7d | f4 | 12 | 05 | 2e |
27 | 0f | c1 | třicet | 66 | 98 | 3d | cb | b8 | e6 | 9c | 63 | e3 | před naším letopočtem | 19 | fa |
3a | 2f | 9e | f2 | 6f | 1a | 28 | 3b | c2 | 0e | 03 | c0 | b7 | 59 | a9 | d7 |
74 | 85 | d6 | inzerát | 41 | ec | 8c | 71 | f0 | 93 | 5 d | b6 | 1b | 68 | e5 | 44 |
07 | e0 | čtrnáct | 8a | f9 | 73 | CD | 4e | 25 | bb | 31 | 5f | 4a | cc | 8f | 91 |
de | 6d | 7b | f5 | b3 | 29 | a0 | 17 | 6c | da | e8 | 04 | 96 | 82 | 52 | 36 |
43 | 5c | db | 8d | 80 | d1 | e2 | b4 | 58 | 46 | ba | e9 | 01 | dvacet | fc | 13 |
16 | f8 | 94 | 62 | 37 | srov | 69 | 9a | af | 77 | c5 | 3e | 7e | a5 | 2d | 0b |
b1 | f6 | 8e | 07 | 72 | 6b | d5 | e0 | 76 | 21 | 5a | čtrnáct | bf | c3 | 49 | a8 |
ac | 0d | 42 | f9 | ee | 38 | 54 | 73 | 55 | 99 | 70 | CD | 83 | lf | a1 | 4e |
vyd | 1c | df | 25 | aa | 90 | 87 | bb | 47 | 64 | ab | 31 | d8 | např | 7d | 5f |
33 | 8b | f4 | 4a | 95 | a6 | 12 | cc | 60 | 48 | 05 | 8f | c4 | bd | 2e | 91 |
9b | 53 | 27 | de | 39 | e1 | 0f | 6d | 1e | ea | c1 | 7b | 0c | 57 | třicet | f5 |
0a | ae | 66 | b3 | 1d | 84 | 98 | 29 | ff | b2 | 3d | a0 | 26 | 45 | cb | 17 |
89 | 35 | b8 | 6c | 5b | 02 | e6 | da | 22 | 7f | 9c | e8 | f1 | d9 | 63 | 04 |
d4 | c7 | e3 | 96 | 40 | 2a | před naším letopočtem | 82 | c8 | d0 | 19 | 52 | 67 | 7c | fa | 36 |
9d | c9 | 3a | 43 | a4 | osmnáct | 2f | 5c | 3c | 65 | 9e | db | e7 | 00 | f2 | 8d |
c6 | 97 | 6f | 80 | b5 | 2b | 1a | d1 | f7 | 06 | 28 | e2 | DC | 6a | 3b | b4 |
61 | 34 | c2 | 58 | 79 | f3 | 0e | 46 | patnáct | 2c | 03 | ba | 86 | 92 | c0 | e9 |
78 | ef | b7 | 01 | 6e | dd | 59 | dvacet | eb | 7a | a9 | fc | 32 | 56 | d7 | 13 |
b0 | a2 | 74 | 16 | ca | 4c | 85 | f8 | 4f | 88 | d6 | 94 | 23 | b9 | inzerát | 62 |
d2 | padesáti | 41 | 37 | fb | 75 | ec | srov | 5e | d3 | 8c | 69 | 08 | e4 | 71 | 9a |
24 | jedenáct | f0 | af | 4d | ce | 93 | 77 | 8a | 4b | 5 d | c5 | deset | a7 | b6 | 3e |
09 | fd | 1b | 7e | 51 | 3f | 68 | a5 | a3 | být | e5 | 2d | 9f | 81 | 44 | 0b |
Operace se používá v sudých kolech a v lichých kolech . Tyto operace a substituční tabulky mají řadu vlastností, které jsou důležité zejména pro sjednocení operací šifrování a dešifrování . Vlastnosti tabulek a operací:
kde je aktuální hodnota zašifrovaného datového bloku. Operace a mohou být definovány následovně:
kde:
Jsou zde použity 4 speciální konstanty , jejichž hexadecimální hodnoty jsou uvedeny níže:
Tyto konstanty jsou sloučeny do escape sekvencí , které jsou uvedeny níže:
kde je operace zřetězení .
Samotná operace je trochu obměna. V lichých kolech se používá operace :
kde:
V sudých kolech se používá operace :
Ve skutečnosti tato operace zajišťuje, že každý výsledný bajt každého sloupce má dva bity každého zdrojového bajtu stejného sloupce.
Bytová permutaceTato permutace převede řádek dat na sloupec nejjednodušším způsobem:
OperaceTato operace je bitovým přidáním celého datového pole pomocí kulatého klíče:
kde: je nová hodnota zašifrovaného datového bloku; - klíč aktuálního kola .
Upozorňujeme, že autor algoritmu, Che Hong Lima, doporučuje 12 kol šifrování, ale přesný počet kol nebyl stanoven. Kromě 12 kol šifrování se před prvním kolem algoritmu provede předběžná operace , a po 12 cyklech se provede výstupní transformace , sestávající z postupně prováděných operací , a .
Dešifrování se provádí použitím obrácených operací v opačném pořadí. Všechny operace kromě a jsou inverzní samy k sobě a samy o sobě souvisejí pomocí následujících vztahů:
proto se při dešifrování používá - v sudých kolech a - v lichých.
Za zmínku stojí ještě jedna vlastnost: každou fázi lze provádět paralelně, což je důležité při implementaci na moderních vícejádrových a vícevláknových systémech . Algoritmus má strukturu SP sítě, jako je Rijndael (který je vítězem soutěže AES) Také rysem šifry je, že stejný postup lze použít k šifrování a dešifrování, ale s různými podklíči. Algoritmus je účinný v softwarové i hardwarové implementaci. Šifra je dostatečně rychlá - na soutěži AES s použitím překladače Borland C vykázala ze všech účastníků nejlepší výsledky.
Algoritmus Crypton vyžaduje 128bitový klíč pro každé kolo a také 128bitový klíč pro předoperační σ. Rozšíření klíče probíhá ve dvou fázích:
Rozšířené klíče se generují následovně:
pro kde a jsou sekvence definované následujícími vzorci:
Pro výpočet z rozšířených klíčů - kulatých klíčů se používají následující konstanty:
Všimněte si, že pseudonáhodné konstanty A54FF53A a 3C6EF372 jsou získány z dílčích částí čísel , resp.
Nejprve se vypočítají klíče pro předběžnou operaci σ a první kolo:
kde je i-tá řada kulatého klíče . Stejně jako u šifrovaných dat je klíč poskytnut ve formě tabulky.
Konstanty se počítají bitovým otočením každého bajtu konstanty o 1 bit doleva.
Pro druhé a každé následující sudé kolo se klíč vypočítá takto:
kde <<< označuje operaci bitového otočení každého bytu (samostatně) rozšířeného klíče o zadaný počet bitů doleva a << je bitové otočení celého klíče o zadaný počet bitů doleva .
Podobně probíhá výpočet klíčů pro lichá kola:
Procedura rozšíření klíče umožňuje generovat kulaté klíče za chodu, tedy v procesu šifrování podle potřeby. To je jasná výhoda algoritmu, přinejmenším proto, že pro uložení kulatých klíčů není potřeba žádná paměť. Pro dešifrování je také možné provést přímou proceduru rozšíření klíče a použít získané kulaté klíče v opačném pořadí.
Při analýze původní verze algoritmu, Crypton v0.5, dva experti nezávisle na sobě objevili třídu slabých klíčů: 2 až 32 256bitových klíčů. Také byl objeven útok na šestikolovou verzi algoritmu Crypton, podobný útoku na algoritmus Square. To byl jeden z důvodů vzniku nové verze algoritmu – Crypton v1.0.
Podle odborníků z institutu NIST však výše uvedené nevýhody nejsou hrubé. Algoritmus měl navíc dost výhod:
Vývojář deklaroval garantovanou odolnost vůči lineární a diferenciální kryptoanalýze a obecně vůči všem útokům existujícím v době vývoje. Přepracovaný rozvrh klíčů a nové tabulky S-Box odstranily všechny zjištěné nedostatky a zranitelnosti .
Bezpečnostní analýza blokové symetrické šifry (BSC) Crypton ukazuje, že 12kolová samonahraditelná šifra (se stejnými procesy pro kódování a dešifrování) s délkou bloku 128 bitů a délkou klíče až 128 bitů má dobrou odolnost. ke stávajícím útokům. Integrální útok na 4kolový Crypton BSS je mnohem účinnější než prohledávání celého klíčového prostoru hrubou silou.
Stručný popis šifryCrypton je bloková šifra. Délka klíče a délka bloku jsou 128 bitů. Čtyři transformace pracují s mezivýsledkem zvaným Stát. Stav může být reprezentován jako obdélníkové pole o 16 bajtech:
kdeOznačme 4bajtový sloupec jako
Představme si také šifrovací klíč:
kde a .Šifra definuje Galoisovo pole , jehož prvky jsou bajty. S bajty se zachází jako s polynomy
Operace sčítání - při sčítání bajtů se odpovídající polynomy sčítají přes .
Operace násobení - při násobení se odpovídající polynomy přenásobí a výsledný polynom se vezme modulo z jednoduchého polynomu
Během činnosti algoritmu je klíč rozbalen (Key Schedule, Key Expansion). První 4 sloupce (každý 4 bajty) jsou původní klíč . Každá následující -tá sada 4 sloupců se vypočítá z předchozí sady a použije se pro -té kolo, označené . Kolo se skládá ze čtyř různých elementárních transformací, které transformují stav na stav :
Jinými slovy, nejde o nic jiného než o vynásobení sloupců maticí vlevo:
Operace je reverzibilní:
Finálové kolo neobsahuje operaci MC. Stavy propojení vzorců a :
; ; Algoritmus pro implementaci integrálního útokuIntegrální útok je založen na možnosti útočníka volného výběru určité množiny otevřených textů pro jejich následné zašifrování. Je to efektivnější než vyčerpávající výčet přes celý klíčový prostor.
Zavádíme definice.
— sada 256 vstupních bloků (stavových polí), z nichž každý má bajty (říkejme jim aktivní), jejichž hodnoty se pro všech 256 bloků liší. Zbytek bajtů (pasivní) zůstává stejný pro všech 256 bloků z -set. Tedy pro libovolné, pokud je aktivní bajt s indexem (i, j) a jinak .
- souprava. Po elementárních transformacích BS a KA vznikne z bloků -set další -set s aktivními bajty na stejných pozicích jako ten původní. Konverze SR posune tyto bajty podle offsetů v něm uvedených. Po transformaci nezůstane MC -set nezbytně -set v obecném případě (výsledek operace již nemusí splňovat definici -set). Protože každý bajt výsledku MC je lineární kombinací (s reverzibilními koeficienty) čtyř vstupních bajtů stejného sloupce , bude mít sloupec s jedním aktivním bajtem na vstupu za následek sloupec se všemi čtyřmi aktivními bajty na výstupu.
Zvažte -set šifrování. Ve všech blocích bude aktivní pouze jeden bajt. Hodnota tohoto bajtu je ve všech 256 blocích různá a zbytek bajtů je stejný. V prvním kole transformace MC převede jeden aktivní bajt na sloupec se 4 aktivními bajty, tj . je . Ve druhém kole tyto 4 bajty přejdou do 4 různých sloupců v důsledku transformace SR, je -set. Transformace MC v dalším, třetím kole převede tyto bajty na 4 sloupce obsahující aktivní bajty. Tato sada je stále -set, dokud nevstoupí do třetího kola MC vstupu.
Hlavní vlastností množiny je, že bitový součet modulo 2 ( ) všech bajtů umístěných na stejných místech v množině je roven nule (bitový součet neaktivních (se stejnými hodnotami) bajtů je podle definice „ “ nulový. operace a aktivní bajty procházející všemi 256 hodnotami, také s bitovou sumací budou dávat nulu)
Výsledkem převodu MC ve třetím kole bajtů pole vstupních dat na bajty pole výstupních dat je, že bitový součet všech bloků výstupní sady bude roven nule:
Existuje tedy . Celkový součet vstupních dat je nula. Tato rovnost je narušena následnou transformací BS.
Klíč je jednoznačně specifikován v reprezentaci R:
K provedení útoku je zapotřebí sada skládající se z 256 stavů. Množinu lze získat aplikací 2 inverzních transformací SR a MC ze vstupu šifry .
Schéma základního integrálního útoku na 4kolový krypton:
Pro všechny
pro
pokud ,
pak
V tomto schématu je 4. kolo invertováno krok za krokem, aby se získaly bajty, jejichž celkový součet je 0. Když součet
Pokud byla očekávaná hodnota bajtu klíče správná, bude zahrnuta mezi možné volby na místě . Většina hodnot špatných bajtů bude odstraněna. Vzhledem k tomu, že vyhledávání lze provádět samostatně (paralelně) pro každý bajt klíče, je rychlost výběru celé hodnoty kulatého klíče velmi vysoká. Dále podle hodnoty můžete najít a poté a - původní klíč.
Prvními kroky ke změně šifrovacích standardů bylo vytvoření soutěže AES. Jednalo se o otevřenou soutěž pořádanou americkým institutem pro standardy a technologie – NIST (National Institute of Standard and Technology). Vítězem této soutěže se měl stát nový americký šifrovací standard. Soutěže se mohli zúčastnit jednotlivci, společnosti jak ve Spojených státech, tak mimo ni.
Primární požadavky:
Navzdory malému počtu požadavků na algoritmy však bylo mnoho přání:
Upozorňujeme, že účastníkům soutěže AES bylo povoleno provádět změny v algoritmech během soutěže, pokud se jednalo o drobné úpravy. U algoritmu Crypton při poskytování nové verze porota považovala změny za významné, protože se týkaly substituční tabulky, klíčového postupu rozšíření. V důsledku toho se soutěže zúčastnila verze Crypton v0.5.
Absence zjevných nevýhod a přítomnost výhod v algoritmu Crypton mu stále neumožnila dostat se do finále soutěže AES. Důvodem byla účast v soutěži dvou algoritmů: Rijndael a Twofish . Tyto algoritmy neměly slabé klíčové problémy algoritmu Crypton. Navíc byly na cílových platformách rychlejší než Crypton. Bylo rozhodnuto, že v budoucnu Crypton s těmito algoritmy v každém případě prohraje, takže experti soutěže Crypton do finále nepustili. (Rijndael je budoucí vítěz soutěže).
Soutěž se týkala primární verze algoritmu, která po nějaké době získala index 0,5. Po nějaké době bylo navrženo několik dalších vydání, z nichž poslední byla verze 1.0 s revidovaným plánem klíčů a novými vyhledávacími tabulkami.
Symetrické kryptosystémy | |
---|---|
Streamové šifry | |
Síť Feistel | |
Síť SP | |
jiný |