REDOC II | |
---|---|
Skapare | Michael Wood |
Skapad | 1990 _ |
publiceras | 1990 _ |
Nyckelstorlek | 70 till 17920 bitar, effektiv: 70 bitar |
Block storlek | 70 bitar |
Antal omgångar | tio |
Sorts | egen |
REDOC III | |
---|---|
Skapare | Michael Wood |
Nyckelstorlek | Variabel, upp till 2560 byte (20480 bitar) |
Block storlek | 80 bitar |
Antal omgångar | tio |
Sorts | egen |
REDOC är en symmetrisk blockkrypteringsalgoritm utvecklad av Michael Wood 1990 för Cryptech och kallad REDOC II . Alla operationer - substitutioner , permutationer, XOR utförs med bytes, vilket gör att det effektivt kan implementeras programmatiskt. Algoritmen använder nyckel- och klartextberoende uppsättningar av tabeller ( S -boxar ) med olika tabellfunktioner . Algoritmen kännetecknas av användningen av masker , dvs. siffror hämtade från nyckeltabellen. Masker används för att välja tabellerna för en viss funktion i en viss omgång. Detta använder både maskvärdet och datavärdet [1] .
REDOC-II är ett tiorunda kryptosystem (men det har föreslagits att en 1- eller tvårunda version är säker) [2] . Varje omgång i den ursprungliga versionen av REDOC II involverar en uppsättning manipulationer på ett 10 byte block. Sju bitar från varje byte används för datavärden, och den åttonde biten är paritetsbiten .
Men eftersom endast de första 7 bitarna av varje byte används för kryptering , är det alfabetiska utrymmet för varje byte från 0 till 127. Och alla operationer utförs modulo 128 [3] .
Nyckellängden i den ursprungliga versionen av REDOC II är 10 byte. Den effektiva nyckelstorleken är 70 bitar. Det bör förtydligas att REDOC II kan stödja en nyckellängd i intervallet från 70 till 17920 bitar [3] .
Varje omgång består av sex faser:
Under varje fas bearbetas data med hjälp av tabeller [4] .
1) 16 fördefinierade uppslagstabeller som används i variabla uppslagsfaser. (Fast)
Exempel på uppslagstabell | |||||||
---|---|---|---|---|---|---|---|
Original | = | sub 0 | Sub 1 | Sub 4 | Sub 10 | Sub 14 | Sub15 |
värde | |||||||
0 | = | 90 | 47 | 25 | 66 | 73 | 0 |
ett | = | 46 | 89 | 51 | 13 | 36 | 52 |
2 | = | 66 | 87 | 103 | 31 | 107 | 44 |
3 | = | 21 | tjugo | 116 | 7 | 43 | 83 |
… | = | ||||||
126 | = | 24 | fjorton | 105 | 114 | 77 | 6 |
127 | = | 122 | 62 | elva | 63 | 49 | 79 |
2) 128 fördefinierade permutationstabeller som används av variabla permutationsfaser. (Fast)
Exempel på permutationstabell | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Original | = | ett | 2 | 3 | fyra | 5 | 6 | 7 | åtta | 9 | tio |
Permutation 1 | = | ett | 6 | 7 | 9 | tio | 2 | 5 | åtta | 3 | fyra |
Permutation 2 | = | tio | fyra | åtta | 3 | ett | 7 | 2 | 9 | 5 | 6 |
Permutation 3 | = | ett | 6 | fyra | 9 | åtta | 5 | tio | 2 | 3 | 7 |
… | = | ||||||||||
Permutation 86 | = | 9 | 7 | 2 | 6 | 5 | åtta | 3 | tio | ett | fyra |
Permutation 87 | = | 5 | 3 | åtta | ett | 9 | 7 | tio | 2 | fyra | 6 |
… | = | ||||||||||
Permutation 126 | = | 9 | åtta | 3 | 7 | ett | tio | 5 | 6 | 2 | fyra |
Permutation 127 | = | 7 | åtta | 5 | tio | 9 | 3 | fyra | 2 | ett | 6 |
3) 128 fördefinierade enklavtabeller som används av variabla enklavfaser. (Fast)
Exempel på enklavtabell | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
a | b | c | d | ||||||||||||
Post 0: | 5 | 2 | 3 | 3 | 5 | 2 | 5 | fyra | 2 | 5 | fyra | 2 | |||
fyra | 3 | ett | ett | 3 | 5 | fyra | 3 | ett | 2 | 5 | ett | ||||
2 | 5 | fyra | 2 | fyra | ett | ett | 5 | 3 | ett | 3 | 5 | ||||
ett | fyra | 5 | fyra | ett | fyra | 3 | 2 | 5 | 3 | 2 | fyra | ||||
3 | ett | 2 | fyra | 2 | 3 | 2 | ett | fyra | fyra | ett | 3 | ||||
Post 1: | 3 | ett | 2 | 3 | 2 | 5 | fyra | 2 | ett | fyra | 2 | 3 | |||
fyra | 3 | ett | 5 | ett | fyra | 3 | fyra | 5 | 5 | 3 | ett | ||||
2 | 5 | fyra | 2 | fyra | 3 | 5 | ett | fyra | 2 | ett | 5 | ||||
5 | 2 | 3 | fyra | 3 | ett | ett | 3 | 2 | 3 | 5 | fyra | ||||
ett | fyra | 5 | ett | 5 | 2 | 2 | 5 | 3 | ett | fyra | 2 | ||||
… | |||||||||||||||
Post 31: | 2 | fyra | ett | 2 | fyra | 3 | ett | 5 | 3 | fyra | ett | 5 | |||
3 | 5 | fyra | fyra | ett | 2 | 2 | fyra | ett | 3 | 5 | 2 | ||||
5 | ett | 3 | 3 | 5 | fyra | fyra | 3 | 2 | ett | fyra | 3 | ||||
ett | 2 | 5 | 5 | 2 | ett | 5 | 2 | fyra | 2 | 3 | fyra | ||||
fyra | 3 | 2 | ett | 3 | 5 | 3 | ett | 5 | 5 | 2 | ett |
4) Dessutom beräknas 128 tio-byte nyckeltabeller och nio masktabeller för varje nyckel av nyckelbehandlingsalgoritmen. (Beräkningsbar, skapad när kryptering initieras) [3] [4]
Exempel på nyckeltabell | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Nyckel 0 | = | 0 | 34 | 5 | 63 | 9 | 73 | 74 | 107 | 109 | 33 |
Nyckel 1 | = | tio | 62 | 48 | 85 | 32 | 101 | åtta | 0 | 63 | 56 |
Nyckel 2 | = | 26 | 59 | 75 | 97 | 33 | 80 | åtta | 6 | 73 | 26 |
… | = | ||||||||||
Nyckel 107 | = | 36 | 123 | 45 | tio | 55 | 59 | 109 | 45 | 98 | 24 |
… | = | ||||||||||
Nyckel 118 | = | 95 | 25 | 48 | 47 | ett | tjugo | 117 | 55 | 19 | 67 |
… | = | ||||||||||
Nyckel 126 | = | 62 | 110 | 70 | 27 | 124 | 31 | 119 | 97 | 9 | 2 |
Nyckel 127 | = | elva | 54 | 25 | 87 | 107 | 73 | fyra | 118 | 62 | 34 |
Exempel på maskbord | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
mask 1 | = | 48 | 2 | 121 | arton | 60 | 105 | 33 | femtio | elva | 60 |
Mask 2 | = | 26 | 78 | 24 | 72 | 69 | 13 | 77 | 43 | 9 | 99 |
Mask 3 | = | 64 | 113 | 72 | 61 | 37 | 13 | 49 | 71 | 24 | 60 |
mask 4 | = | 104 | 62 | 69 | 87 | arton | 31 | 102 | 101 | 32 | 125 |
I varje fas av permutationsvariabeln läggs alla tio byte av data till (modulo 128), och resultatet XORed med en specifik byte från masktabellen. Det resulterande värdet är numret på permutationstabellen. Alla databytes ersätts av den valda permutationen [4] .
En byte väljs från data och motsvarande byte från masktabellen, mellan vilken XOR-operationen utförs. Det resulterande värdet är nyckeltabellnumret. (Det är värt att komma ihåg att 7 bitar från varje byte används för kryptering. Därför ligger det resulterande nyckeltabellnumret i intervallet från 0 till 127). Alla databytes, exklusive den valda, XORed med motsvarande byte från nyckeltabellen med det mottagna numret.
En sådan operation utförs för alla bytes från data. [fyra]
En byte väljs från data och motsvarande byte från masktabellen, mellan vilken XOR-operationen utförs. Det resulterande värdet, taget modulo 16, är numret på substitutionstabellen. Alla bytes, förutom den valda, ersätts med värden från substitutionstabellen med det mottagna numret.
En sådan operation utförs för alla bytes från datan [4] .
Den fördefinierade enklavtabellen har fem rader och 3 kolumner. Varje post innehåller ett nummer från 1 till 5. Det finns 2 egenskaper som enklavtabellen måste uppfylla:
Detta beror på att tabellen bearbetas rad för rad och enligt följande: Varje nummer i enklavtabellen betyder en byteposition. De tre byte som specificeras med en rad i tabellen summeras (modulo 128). Byten som anges i den första kolumnen ersätts med det mottagna beloppet. [3]
Varje variabel enklavfas använder fyra enklavtabeller enligt följande:
I den ursprungliga versionen av REDOC-II fylls nyckeltabellen och masktabellen med hjälp av K-nyckeln på 70 bitar.
Algoritmen för att fylla nyckeltabellen är som följer:
Totalt bildas 128 undernycklar.
Algoritmen för att fylla masktabellen ser ut så här:
Totalt bildas 4 masker.
Brute force anses vara det mest effektiva sättet att öppna nyckeln, 2 160 operationer kommer att krävas för att uppnå målet . Nästan den enda effektiva kryptoanalysen var öppnandet av en av omgångarna av algoritmen av Thomas Kuzik, men det var inte möjligt att utöka öppningen till ytterligare omgångar. Med hjälp av 2300 öppna texter , kryptoanalyserades en av omgångarna av Shamir och Biham , efter 4 omgångar erhölls 3 maskvärden, men detta gav inte framgång som sådan och för närvarande anses algoritmen vara kryptoresistent [ 1] .
Det finns också en mycket förenklad version av algoritmen - REDOC III , skapad av Michael Wood. Ett 80-bitars block används, nyckellängden är variabel, den kan nå 20480 bitar. Permutationer och substitutioner är uteslutna, alla operationer på blocket och nyckeln är endast baserade på användningen av XOR, på grund av vilket krypteringshastigheten ökas avsevärt på bekostnad av motståndet mot differentiell kryptoanalys . Algoritmen är baserad på 256 10-byte nycklar genererade baserat på den hemliga nyckeln, och två 10-byte maskblock erhållna på basis av XOR 128 10-byte nycklar. Det krävs 223 klartexter för att framgångsrikt återställa båda maskerna i REDOC III-algoritmen. Denna algoritm är enkel och snabb. På en 33 MHz 80386-processor krypterar den data med en hastighet av 2,75 Mbps [1] . Det kryptografiska systemet REDOC II kan kryptera 800 kbps med en klockfrekvens på 20 MHz. [6]
REDOC II-algoritmen och dess förenklade version är patenterade i USA [1] .
Symmetriska kryptosystem | |
---|---|
Streama chiffer | |
Feistel nätverk | |
SP nätverk | |
Övrig |