REDOC II | |
---|---|
Tvůrce | Michael Wood |
Vytvořeno | 1990_ _ |
zveřejněno | 1990_ _ |
Velikost klíče | 70 až 17920 bitů, efektivní: 70 bitů |
Velikost bloku | 70 bitů |
Počet kol | deset |
Typ | vlastní |
REDOC III | |
---|---|
Tvůrce | Michael Wood |
Velikost klíče | Variabilní, až 2560 bajtů (20480 bitů) |
Velikost bloku | 80 bitů |
Počet kol | deset |
Typ | vlastní |
REDOC je symetrický blokový kryptoalgoritmus vyvinutý Michaelem Woodem v roce 1990 pro Cryptech a nazvaný REDOC II. Všechny operace - substituce , permutace, XOR jsou prováděny s byty, což umožňuje efektivní programovou implementaci. Algoritmus používá klíč a původní prostý text závislých sad tabulek ( S-boxů ) pomocí různých tabulkových funkcí . Algoritmus se vyznačuje použitím masek , tzn. čísla získaná z tabulky klíčů. Masky se používají k výběru tabulek konkrétní funkce konkrétního kola. To používá jak hodnotu masky, tak hodnotu dat [1] .
REDOC-II je desetikolový kryptosystém (ale bylo navrženo, že 1- nebo dvoukolová verze je bezpečná) [2] . Každé kolo v původní verzi REDOC II zahrnuje sadu manipulací na 10bajtovém bloku. Pro datové hodnoty se používá sedm bitů z každého bajtu a osmý bit je paritní bit .
Protože se však pro šifrování používá pouze prvních 7 bitů z každého bytu , je abecední prostor pro každý bajt od 0 do 127. A všechny operace se provádějí modulo 128 [3] .
Délka klíče v původní verzi REDOC II je 10 bajtů. Efektivní velikost klíče je 70 bitů. Mělo by být objasněno, že REDOC II může podporovat délku klíče v rozsahu od 70 do 17920 bitů [3] .
Každé kolo se skládá ze šesti fází:
Během každé fáze jsou data zpracovávána pomocí tabulek [4] .
1) 16 předdefinovaných vyhledávacích tabulek, které se používají ve fázích variabilního vyhledávání. (Pevný)
Příklad vyhledávací tabulky | |||||||
---|---|---|---|---|---|---|---|
Originál | = | Pod 0 | Pod 1 | Sub 4 | Pod 10 | Sub 14 | Pod15 |
hodnota | |||||||
0 | = | 90 | 47 | 25 | 66 | 73 | 0 |
jeden | = | 46 | 89 | 51 | 13 | 36 | 52 |
2 | = | 66 | 87 | 103 | 31 | 107 | 44 |
3 | = | 21 | dvacet | 116 | 7 | 43 | 83 |
… | = | ||||||
126 | = | 24 | čtrnáct | 105 | 114 | 77 | 6 |
127 | = | 122 | 62 | jedenáct | 63 | 49 | 79 |
2) 128 předdefinovaných permutačních tabulek používaných proměnnými permutačními fázemi. (Pevný)
Příklad permutační tabulky | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Originál | = | jeden | 2 | 3 | čtyři | 5 | 6 | 7 | osm | 9 | deset |
Permutace 1 | = | jeden | 6 | 7 | 9 | deset | 2 | 5 | osm | 3 | čtyři |
Permutace 2 | = | deset | čtyři | osm | 3 | jeden | 7 | 2 | 9 | 5 | 6 |
Permutace 3 | = | jeden | 6 | čtyři | 9 | osm | 5 | deset | 2 | 3 | 7 |
… | = | ||||||||||
Permutace 86 | = | 9 | 7 | 2 | 6 | 5 | osm | 3 | deset | jeden | čtyři |
Permutace 87 | = | 5 | 3 | osm | jeden | 9 | 7 | deset | 2 | čtyři | 6 |
… | = | ||||||||||
Permutace 126 | = | 9 | osm | 3 | 7 | jeden | deset | 5 | 6 | 2 | čtyři |
Permutace 127 | = | 7 | osm | 5 | deset | 9 | 3 | čtyři | 2 | jeden | 6 |
3) 128 předdefinovaných enklávových tabulek používaných proměnnými fázemi enklávy. (Pevný)
Příklad tabulky enklávy | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
A | b | C | d | ||||||||||||
Záznam 0: | 5 | 2 | 3 | 3 | 5 | 2 | 5 | čtyři | 2 | 5 | čtyři | 2 | |||
čtyři | 3 | jeden | jeden | 3 | 5 | čtyři | 3 | jeden | 2 | 5 | jeden | ||||
2 | 5 | čtyři | 2 | čtyři | jeden | jeden | 5 | 3 | jeden | 3 | 5 | ||||
jeden | čtyři | 5 | čtyři | jeden | čtyři | 3 | 2 | 5 | 3 | 2 | čtyři | ||||
3 | jeden | 2 | čtyři | 2 | 3 | 2 | jeden | čtyři | čtyři | jeden | 3 | ||||
Vstup 1: | 3 | jeden | 2 | 3 | 2 | 5 | čtyři | 2 | jeden | čtyři | 2 | 3 | |||
čtyři | 3 | jeden | 5 | jeden | čtyři | 3 | čtyři | 5 | 5 | 3 | jeden | ||||
2 | 5 | čtyři | 2 | čtyři | 3 | 5 | jeden | čtyři | 2 | jeden | 5 | ||||
5 | 2 | 3 | čtyři | 3 | jeden | jeden | 3 | 2 | 3 | 5 | čtyři | ||||
jeden | čtyři | 5 | jeden | 5 | 2 | 2 | 5 | 3 | jeden | čtyři | 2 | ||||
… | |||||||||||||||
Záznam 31: | 2 | čtyři | jeden | 2 | čtyři | 3 | jeden | 5 | 3 | čtyři | jeden | 5 | |||
3 | 5 | čtyři | čtyři | jeden | 2 | 2 | čtyři | jeden | 3 | 5 | 2 | ||||
5 | jeden | 3 | 3 | 5 | čtyři | čtyři | 3 | 2 | jeden | čtyři | 3 | ||||
jeden | 2 | 5 | 5 | 2 | jeden | 5 | 2 | čtyři | 2 | 3 | čtyři | ||||
čtyři | 3 | 2 | jeden | 3 | 5 | 3 | jeden | 5 | 5 | 2 | jeden |
4) Navíc je pro každý klíč vypočítáno 128 desetibajtových tabulek klíčů a devět tabulek masek pomocí algoritmu zpracování klíčů. (Vypočítatelné, vytvořené při inicializaci šifrování) [3] [4]
Příklad tabulky klíčů | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Klíč 0 | = | 0 | 34 | 5 | 63 | 9 | 73 | 74 | 107 | 109 | 33 |
Klíč 1 | = | deset | 62 | 48 | 85 | 32 | 101 | osm | 0 | 63 | 56 |
Klíč 2 | = | 26 | 59 | 75 | 97 | 33 | 80 | osm | 6 | 73 | 26 |
… | = | ||||||||||
Klíč 107 | = | 36 | 123 | 45 | deset | 55 | 59 | 109 | 45 | 98 | 24 |
… | = | ||||||||||
Klíč 118 | = | 95 | 25 | 48 | 47 | jeden | dvacet | 117 | 55 | 19 | 67 |
… | = | ||||||||||
Klíč 126 | = | 62 | 110 | 70 | 27 | 124 | 31 | 119 | 97 | 9 | 2 |
Klíč 127 | = | jedenáct | 54 | 25 | 87 | 107 | 73 | čtyři | 118 | 62 | 34 |
Příklad tabulky masky | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
maska 1 | = | 48 | 2 | 121 | osmnáct | 60 | 105 | 33 | padesáti | jedenáct | 60 |
Maska 2 | = | 26 | 78 | 24 | 72 | 69 | 13 | 77 | 43 | 9 | 99 |
maska 3 | = | 64 | 113 | 72 | 61 | 37 | 13 | 49 | 71 | 24 | 60 |
maska 4 | = | 104 | 62 | 69 | 87 | osmnáct | 31 | 102 | 101 | 32 | 125 |
V každé fázi permutační proměnné je přidáno všech deset bajtů dat (modulo 128) a výsledek je XORed s konkrétním bytem z tabulky masky. Výsledná hodnota je číslo permutační tabulky. Všechny datové bajty jsou nahrazeny vybranou permutací [4] .
Z dat je vybrán bajt a z tabulky masky odpovídající bajt, mezi kterými se provádí operace XOR. Výsledná hodnota je číslo tabulky klíčů. (Je vhodné připomenout, že pro šifrování se používá 7 bitů z každého bytu. Výsledné číslo tabulky klíčů tedy leží v rozsahu od 0 do 127). Všechny datové bajty, kromě vybraného, jsou XORed s odpovídajícími bajty z tabulky klíčů s přijatým číslem.
Taková operace se provádí pro všechny bajty z dat. [čtyři]
Z dat je vybrán bajt a z tabulky masky odpovídající bajt, mezi kterými se provádí operace XOR. Výsledná hodnota, bráno modulo 16, je číslo substituční tabulky. Všechny bajty, kromě vybraného, jsou nahrazeny hodnotami ze substituční tabulky s přijatým číslem.
Taková operace se provádí pro všechny bajty z dat [4] .
Předdefinovaná tabulka enklávy má pět řádků a 3 sloupce. Každý záznam obsahuje číslo od 1 do 5. Tabulka enklávy musí splňovat 2 vlastnosti:
To je způsobeno tím, že tabulka je zpracovávána řádek po řádku a následovně: Každé číslo v tabulce enklávy znamená pozici bajtu. Tři bajty zadané pomocí jednoho řádku tabulky se sečtou (modulo 128). Bajt uvedený v prvním sloupci je nahrazen přijatou částkou. [3]
Každá variabilní fáze enklávy používá 4 tabulky enklávy takto:
V původní verzi REDOC-II jsou tabulka klíčů a tabulka masky naplněny pomocí klíče K o 70 bitech.
Algoritmus pro vyplnění tabulky klíčů je následující:
Celkem je vytvořeno 128 podklíčů.
Algoritmus pro vyplnění tabulky masek vypadá takto:
Celkem se tvoří 4 masky.
Hrubá síla je považována za nejúčinnější způsob, jak otevřít klíč, k dosažení cíle bude zapotřebí 2 160 operací . Téměř jedinou účinnou kryptoanalýzou bylo otevření jednoho z kol algoritmu Thomasem Kuzikem, ale rozšíření na další kola nebylo možné. S pomocí 2300 otevřených textů bylo jedno z kol kryptoanalyzováno Shamirem a Bihamem , po 4 kolech byly získány 3 hodnoty masky, ale to jako takové nepřineslo úspěch a v tuto chvíli je algoritmus považován za kryptoodolný [ 1] .
Existuje také mnohem zjednodušená verze algoritmu - REDOC III , kterou vytvořil Michael Wood. Je použit 80bitový blok, délka klíče je variabilní, může dosáhnout 20480 bitů. Permutace a substituce jsou vyloučeny, všechny operace s blokem a klíčem jsou založeny pouze na použití XOR, díky čemuž je výrazně zvýšena rychlost šifrování na úkor odolnosti vůči diferenciální kryptoanalýze . Algoritmus je založen na 256 10bajtových klíčích generovaných na základě tajného klíče a dvou 10bajtových maskových blocích získaných na základě XOR 128 10bajtových klíčů. Úspěšné obnovení obou masek algoritmu REDOC III vyžaduje 223 otevřených textů. Tento algoritmus je jednoduchý a rychlý. Na 33 MHz procesoru 80386 šifruje data rychlostí 2,75 Mbps [1] . Kryptografický systém REDOC II je schopen šifrovat 800 kbps při taktovací frekvenci 20 MHz. [6]
Algoritmus REDOC II a jeho zjednodušená verze jsou patentovány v USA [1] .
Symetrické kryptosystémy | |
---|---|
Streamové šifry | |
Síť Feistel | |
Síť SP | |
jiný |