REDOC II | |
---|---|
Skaber | Michael Wood |
Oprettet | 1990 _ |
offentliggjort | 1990 _ |
Nøglestørrelse | 70 til 17920 bit, effektiv: 70 bit |
Blokstørrelse | 70 bit |
Antal runder | ti |
Type | egen |
REDOC III | |
---|---|
Skaber | Michael Wood |
Nøglestørrelse | Variabel, op til 2560 bytes (20480 bits) |
Blokstørrelse | 80 bit |
Antal runder | ti |
Type | egen |
REDOC er en symmetrisk blokkryptoalgoritme udviklet af Michael Wood i 1990 for Cryptech og kaldet REDOC II. Alle operationer - substitutioner , permutationer, XOR udføres med bytes, hvilket gør det muligt at implementere det effektivt programmatisk. Algoritmen bruger nøgle- og originaltekstafhængige sæt af tabeller ( S-bokse ) ved hjælp af forskellige tabelfunktioner . Algoritmen er kendetegnet ved brugen af masker , dvs. tal hentet fra nøgletabellen. Masker bruges til at vælge tabellerne for en bestemt funktion i en bestemt runde. Dette bruger både maskeværdien og dataværdien [1] .
REDOC-II er et ti-runders kryptosystem (men det er blevet foreslået, at en 1- eller to-runders version er sikker) [2] . Hver runde i den originale version af REDOC II involverer et sæt manipulationer på en 10 byte blok. Syv bit fra hver byte bruges til dataværdier, og den ottende bit er paritetsbit .
Men da kun de første 7 bits af hver byte bruges til kryptering , er det alfabetiske rum for hver byte fra 0 til 127. Og alle operationer udføres modulo 128 [3] .
Nøglængden i den originale version af REDOC II er 10 bytes. Den effektive nøglestørrelse er 70 bit. Det skal præciseres, at REDOC II kan understøtte en nøglelængde i området fra 70 til 17920 bits [3] .
Hver runde består af seks faser:
Under hver fase behandles dataene ved hjælp af tabeller [4] .
1) 16 foruddefinerede opslagstabeller, der bruges i variable opslagsfaser. (fast)
Eksempel på opslagstabel | |||||||
---|---|---|---|---|---|---|---|
Original | = | under 0 | Sub 1 | Sub 4 | Under 10 | Sub 14 | Sub15 |
værdi | |||||||
0 | = | 90 | 47 | 25 | 66 | 73 | 0 |
en | = | 46 | 89 | 51 | 13 | 36 | 52 |
2 | = | 66 | 87 | 103 | 31 | 107 | 44 |
3 | = | 21 | tyve | 116 | 7 | 43 | 83 |
… | = | ||||||
126 | = | 24 | fjorten | 105 | 114 | 77 | 6 |
127 | = | 122 | 62 | elleve | 63 | 49 | 79 |
2) 128 foruddefinerede permutationstabeller brugt af variable permutationsfaser. (fast)
Eksempel på permutationstabel | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Original | = | en | 2 | 3 | fire | 5 | 6 | 7 | otte | 9 | ti |
Permutation 1 | = | en | 6 | 7 | 9 | ti | 2 | 5 | otte | 3 | fire |
Permutation 2 | = | ti | fire | otte | 3 | en | 7 | 2 | 9 | 5 | 6 |
Permutation 3 | = | en | 6 | fire | 9 | otte | 5 | ti | 2 | 3 | 7 |
… | = | ||||||||||
Permutation 86 | = | 9 | 7 | 2 | 6 | 5 | otte | 3 | ti | en | fire |
Permutation 87 | = | 5 | 3 | otte | en | 9 | 7 | ti | 2 | fire | 6 |
… | = | ||||||||||
Permutation 126 | = | 9 | otte | 3 | 7 | en | ti | 5 | 6 | 2 | fire |
Permutation 127 | = | 7 | otte | 5 | ti | 9 | 3 | fire | 2 | en | 6 |
3) 128 foruddefinerede enklavetabeller brugt af variable enklavefaser. (fast)
Eksempel på enklavebord | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
-en | b | c | d | ||||||||||||
Indgang 0: | 5 | 2 | 3 | 3 | 5 | 2 | 5 | fire | 2 | 5 | fire | 2 | |||
fire | 3 | en | en | 3 | 5 | fire | 3 | en | 2 | 5 | en | ||||
2 | 5 | fire | 2 | fire | en | en | 5 | 3 | en | 3 | 5 | ||||
en | fire | 5 | fire | en | fire | 3 | 2 | 5 | 3 | 2 | fire | ||||
3 | en | 2 | fire | 2 | 3 | 2 | en | fire | fire | en | 3 | ||||
Indgang 1: | 3 | en | 2 | 3 | 2 | 5 | fire | 2 | en | fire | 2 | 3 | |||
fire | 3 | en | 5 | en | fire | 3 | fire | 5 | 5 | 3 | en | ||||
2 | 5 | fire | 2 | fire | 3 | 5 | en | fire | 2 | en | 5 | ||||
5 | 2 | 3 | fire | 3 | en | en | 3 | 2 | 3 | 5 | fire | ||||
en | fire | 5 | en | 5 | 2 | 2 | 5 | 3 | en | fire | 2 | ||||
… | |||||||||||||||
Indgang 31: | 2 | fire | en | 2 | fire | 3 | en | 5 | 3 | fire | en | 5 | |||
3 | 5 | fire | fire | en | 2 | 2 | fire | en | 3 | 5 | 2 | ||||
5 | en | 3 | 3 | 5 | fire | fire | 3 | 2 | en | fire | 3 | ||||
en | 2 | 5 | 5 | 2 | en | 5 | 2 | fire | 2 | 3 | fire | ||||
fire | 3 | 2 | en | 3 | 5 | 3 | en | 5 | 5 | 2 | en |
4) Derudover beregnes 128 ti-byte nøgletabeller og ni masketabeller for hver nøgle af nøglebehandlingsalgoritmen. (Beregnerbar, oprettet når kryptering initialiseres) [3] [4]
Eksempel på nøgletabel | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Nøgle 0 | = | 0 | 34 | 5 | 63 | 9 | 73 | 74 | 107 | 109 | 33 |
Nøgle 1 | = | ti | 62 | 48 | 85 | 32 | 101 | otte | 0 | 63 | 56 |
Nøgle 2 | = | 26 | 59 | 75 | 97 | 33 | 80 | otte | 6 | 73 | 26 |
… | = | ||||||||||
Nøgle 107 | = | 36 | 123 | 45 | ti | 55 | 59 | 109 | 45 | 98 | 24 |
… | = | ||||||||||
Nøgle 118 | = | 95 | 25 | 48 | 47 | en | tyve | 117 | 55 | 19 | 67 |
… | = | ||||||||||
Nøgle 126 | = | 62 | 110 | 70 | 27 | 124 | 31 | 119 | 97 | 9 | 2 |
Nøgle 127 | = | elleve | 54 | 25 | 87 | 107 | 73 | fire | 118 | 62 | 34 |
Eksempel på maskebord | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
maske 1 | = | 48 | 2 | 121 | atten | 60 | 105 | 33 | halvtreds | elleve | 60 |
Maske 2 | = | 26 | 78 | 24 | 72 | 69 | 13 | 77 | 43 | 9 | 99 |
maske 3 | = | 64 | 113 | 72 | 61 | 37 | 13 | 49 | 71 | 24 | 60 |
maske 4 | = | 104 | 62 | 69 | 87 | atten | 31 | 102 | 101 | 32 | 125 |
I hver fase af permutationsvariablen tilføjes alle ti bytes data (modulo 128), og resultatet XORed med en specifik byte fra masketabellen. Den resulterende værdi er antallet af permutationstabellen. Alle databytes erstattes af den valgte permutation [4] .
En byte vælges fra dataene og den tilsvarende byte fra masketabellen, mellem hvilke XOR-operationen udføres. Den resulterende værdi er nøgletabellens nummer. (Det er værd at huske på, at 7 bits fra hver byte bruges til kryptering. Derfor ligger det resulterende nøgletabelnummer i området fra 0 til 127). Alle databytes, undtagen den valgte, er XORed med de tilsvarende bytes fra nøgletabellen med det modtagne nummer.
En sådan operation udføres for alle bytes fra dataene. [fire]
En byte vælges fra dataene og den tilsvarende byte fra masketabellen, mellem hvilke XOR-operationen udføres. Den resulterende værdi, taget modulo 16, er nummeret på substitutionstabellen. Alle bytes, undtagen den valgte, erstattes med værdier fra substitutionstabellen med det modtagne nummer.
En sådan operation udføres for alle bytes fra dataene [4] .
Den foruddefinerede enklavetabel har fem rækker og 3 kolonner. Hver post indeholder et tal fra 1 til 5. Der er 2 egenskaber, som enklavetabellen skal opfylde:
Dette skyldes, at tabellen behandles linje for linje og som følger: Hvert tal i enklavetabellen betyder en byteposition. De tre bytes, der er specificeret ved hjælp af en række i tabellen, summeres (modulo 128). Byten angivet i den første kolonne erstattes af det modtagne beløb. [3]
Hver variabel enklavefase bruger 4 enklavetabeller som følger:
I den originale version af REDOC-II er nøgletabellen og masketabellen udfyldt ved hjælp af K-tasten på 70 bit.
Algoritmen til at udfylde nøgletabellen er som følger:
I alt dannes 128 undernøgler.
Algoritmen til udfyldning af maskebordet ser sådan ud:
I alt dannes 4 masker.
Brute force anses for at være den mest effektive måde at åbne nøglen på; 2.160 operationer vil være nødvendige for at nå målet . Næsten den eneste effektive kryptoanalyse var åbningen af en af runderne af algoritmen af Thomas Kuzik, men det var ikke muligt at udvide åbningen til yderligere runder. Ved hjælp af 2300 åbne tekster blev en af runderne kryptoanalyseret af Shamir og Biham , efter 4 runder blev der opnået 3 maskeværdier, men dette gav ikke succes som sådan, og i øjeblikket anses algoritmen for krypto-resistent [ 1] .
Der er også en meget forenklet version af algoritmen - REDOC III , skabt af Michael Wood. Der bruges en 80-bit blok, nøglelængden er variabel, den kan nå 20480 bit. Permutationer og substitutioner er udelukket, alle operationer på blokken og nøglen er kun baseret på brugen af XOR, på grund af hvilken krypteringshastigheden øges betydeligt på bekostning af modstand mod differentiel kryptoanalyse . Algoritmen er baseret på 256 10-byte nøgler genereret baseret på den hemmelige nøgle, og to 10-byte maskeblokke opnået på basis af XOR 128 10-byte nøgler. Det kræver 223 klartekster at gendanne begge masker af REDOC III-algoritmen. Denne algoritme er enkel og hurtig. På en 33 MHz 80386 processor krypterer den data med en hastighed på 2,75 Mbps [1] . REDOC II-krypteringssystemet er i stand til at kryptere 800 kbps ved en clock-hastighed på 20 MHz. [6]
REDOC II-algoritmen og dens forenklede version er patenteret i USA [1] .
Symmetriske kryptosystemer | |
---|---|
Stream-cifre | |
Feistel netværk | |
SP netværk | |
Andet |