REDOC II | |
---|---|
Teremtő | Michael Wood |
Létrehozva | 1990_ _ |
közzétett | 1990_ _ |
Kulcsméret | 70-17920 bit, effektív: 70 bit |
Blokkméret | 70 bites |
A körök száma | tíz |
Típusú | saját |
REDOC III | |
---|---|
Teremtő | Michael Wood |
Kulcsméret | Változó, legfeljebb 2560 bájt (20480 bit) |
Blokkméret | 80 bites |
A körök száma | tíz |
Típusú | saját |
A REDOC egy szimmetrikus blokkos titkosítási algoritmus , amelyet Michael Wood fejlesztett ki 1990-ben a Cryptech számára, és REDOC II néven. Minden műveletet - helyettesítéseket , permutációkat, XOR -t - bájtokkal hajtanak végre, ami lehetővé teszi a hatékony programozást. Az algoritmus kulcsfontosságú és eredeti, egyszerű szövegtől függő táblázatkészleteket ( S-box ) használ, változó táblázatfüggvények használatával . Az algoritmust a maszkok használata különbözteti meg , pl. a kulcstáblázatból kapott számok. A maszkokat egy adott kör adott funkciójának táblázatainak kiválasztására használják. Ez a maszk értékét és az adatértéket is használja [1] .
A REDOC-II egy tízfordulós kriptorendszer (de azt javasolták, hogy egy vagy kétfordulós verzió biztonságos) [2] . A REDOC II eredeti verziójában minden kör egy sor manipulációt tartalmaz egy 10 bájtos blokkon. Minden bájtból hét bitet használunk adatértékekhez, a nyolcadik bit pedig a paritásbit .
Mivel azonban minden bájtból csak az első 7 bitet használják titkosításra , az egyes bájtok alfabetikus térköze 0 és 127 között van. És minden művelet modulo 128 [3] történik .
A REDOC II eredeti verziójában a kulcs hossza 10 bájt. A tényleges kulcsméret 70 bit. Tisztázni kell, hogy a REDOC II 70 és 17920 bit közötti kulcshosszúságot tud támogatni [3] .
Minden kör hat fázisból áll:
Az egyes fázisok során az adatok feldolgozása táblázatok segítségével történik [4] .
1) 16 előre definiált keresési tábla, amelyeket a változó keresési fázisokban használnak. (Rögzített)
Példa keresőtáblázatra | |||||||
---|---|---|---|---|---|---|---|
Eredeti | = | 0. al | 1. al | 4. al | 10. al | 14. al | Sub15 |
érték | |||||||
0 | = | 90 | 47 | 25 | 66 | 73 | 0 |
egy | = | 46 | 89 | 51 | 13 | 36 | 52 |
2 | = | 66 | 87 | 103 | 31 | 107 | 44 |
3 | = | 21 | húsz | 116 | 7 | 43 | 83 |
… | = | ||||||
126 | = | 24 | tizennégy | 105 | 114 | 77 | 6 |
127 | = | 122 | 62 | tizenegy | 63 | 49 | 79 |
2) 128 előre definiált permutációs tábla, amelyeket a változó permutációs fázisok használnak. (Rögzített)
Permutációs táblázat példa | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Eredeti | = | egy | 2 | 3 | négy | 5 | 6 | 7 | nyolc | 9 | tíz |
1. permutáció | = | egy | 6 | 7 | 9 | tíz | 2 | 5 | nyolc | 3 | négy |
2. permutáció | = | tíz | négy | nyolc | 3 | egy | 7 | 2 | 9 | 5 | 6 |
3. permutáció | = | egy | 6 | négy | 9 | nyolc | 5 | tíz | 2 | 3 | 7 |
… | = | ||||||||||
86. permutáció | = | 9 | 7 | 2 | 6 | 5 | nyolc | 3 | tíz | egy | négy |
87. permutáció | = | 5 | 3 | nyolc | egy | 9 | 7 | tíz | 2 | négy | 6 |
… | = | ||||||||||
126. permutáció | = | 9 | nyolc | 3 | 7 | egy | tíz | 5 | 6 | 2 | négy |
127. permutáció | = | 7 | nyolc | 5 | tíz | 9 | 3 | négy | 2 | egy | 6 |
3) 128 előre definiált enklávétáblázat, amelyeket a változó enklávéfázisok használnak. (Rögzített)
Enklávé táblázat példa | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
a | b | c | d | ||||||||||||
0. bejegyzés: | 5 | 2 | 3 | 3 | 5 | 2 | 5 | négy | 2 | 5 | négy | 2 | |||
négy | 3 | egy | egy | 3 | 5 | négy | 3 | egy | 2 | 5 | egy | ||||
2 | 5 | négy | 2 | négy | egy | egy | 5 | 3 | egy | 3 | 5 | ||||
egy | négy | 5 | négy | egy | négy | 3 | 2 | 5 | 3 | 2 | négy | ||||
3 | egy | 2 | négy | 2 | 3 | 2 | egy | négy | négy | egy | 3 | ||||
1. bejegyzés: | 3 | egy | 2 | 3 | 2 | 5 | négy | 2 | egy | négy | 2 | 3 | |||
négy | 3 | egy | 5 | egy | négy | 3 | négy | 5 | 5 | 3 | egy | ||||
2 | 5 | négy | 2 | négy | 3 | 5 | egy | négy | 2 | egy | 5 | ||||
5 | 2 | 3 | négy | 3 | egy | egy | 3 | 2 | 3 | 5 | négy | ||||
egy | négy | 5 | egy | 5 | 2 | 2 | 5 | 3 | egy | négy | 2 | ||||
… | |||||||||||||||
31. bejegyzés: | 2 | négy | egy | 2 | négy | 3 | egy | 5 | 3 | négy | egy | 5 | |||
3 | 5 | négy | négy | egy | 2 | 2 | négy | egy | 3 | 5 | 2 | ||||
5 | egy | 3 | 3 | 5 | négy | négy | 3 | 2 | egy | négy | 3 | ||||
egy | 2 | 5 | 5 | 2 | egy | 5 | 2 | négy | 2 | 3 | négy | ||||
négy | 3 | 2 | egy | 3 | 5 | 3 | egy | 5 | 5 | 2 | egy |
4) Ezenkívül a kulcsfeldolgozó algoritmus minden kulcshoz 128 tízbájtos kulcstáblázatot és kilenc maszktáblázatot számít ki. (Kiszámítható, a titkosítás inicializálásakor jön létre) [3] [4]
Példa kulcstáblázatra | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
0. kulcs | = | 0 | 34 | 5 | 63 | 9 | 73 | 74 | 107 | 109 | 33 |
1. kulcs | = | tíz | 62 | 48 | 85 | 32 | 101 | nyolc | 0 | 63 | 56 |
2. kulcs | = | 26 | 59 | 75 | 97 | 33 | 80 | nyolc | 6 | 73 | 26 |
… | = | ||||||||||
107-es kulcs | = | 36 | 123 | 45 | tíz | 55 | 59 | 109 | 45 | 98 | 24 |
… | = | ||||||||||
118-as kulcs | = | 95 | 25 | 48 | 47 | egy | húsz | 117 | 55 | 19 | 67 |
… | = | ||||||||||
126-os kulcs | = | 62 | 110 | 70 | 27 | 124 | 31 | 119 | 97 | 9 | 2 |
127-es kulcs | = | tizenegy | 54 | 25 | 87 | 107 | 73 | négy | 118 | 62 | 34 |
Maszk táblázat példa | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
maszk 1 | = | 48 | 2 | 121 | tizennyolc | 60 | 105 | 33 | ötven | tizenegy | 60 |
2. maszk | = | 26 | 78 | 24 | 72 | 69 | 13 | 77 | 43 | 9 | 99 |
maszk 3 | = | 64 | 113 | 72 | 61 | 37 | 13 | 49 | 71 | 24 | 60 |
maszk 4 | = | 104 | 62 | 69 | 87 | tizennyolc | 31 | 102 | 101 | 32 | 125 |
A permutációs változó minden fázisában mind a tíz bájt adat hozzáadódik (128-as modul), és az eredmény XOR-re kerül a maszktáblázat egy adott bájtjával. Az eredményül kapott érték a permutációs tábla száma. Minden adatbájtot a kiválasztott permutáció helyettesít [4] .
Az adatok közül kiválasztunk egy bájtot, a maszktáblázatból pedig a megfelelő bájtot, amelyek között az XOR művelet végrehajtásra kerül. Az eredményül kapott érték a kulcstábla száma. (Érdemes emlékeztetni arra, hogy minden bájtból 7 bitet használnak a titkosításhoz. Ezért a kapott kulcstábla száma 0 és 127 közötti tartományba esik). Minden adatbájt, a kiválasztott kivételével, XOR-re kerül a kulcstáblázat megfelelő bájtjaival a kapott számmal.
Egy ilyen műveletet az adatokból származó összes bájtra hajtanak végre. [négy]
Az adatok közül kiválasztunk egy bájtot, a maszktáblázatból pedig a megfelelő bájtot, amelyek között az XOR művelet végrehajtásra kerül. A kapott érték, modulo 16, a helyettesítési táblázat száma. A kiválasztott bájt kivételével minden bájt a kapott számmal rendelkező helyettesítési táblázat értékeire kerül.
Ilyen műveletet hajtanak végre az adatokból származó összes bájtra [4] .
Az előre meghatározott enklávé táblázat öt sorból és 3 oszlopból áll. Minden bejegyzés 1-től 5-ig terjedő számot tartalmaz. Az enklávétáblázatnak 2 tulajdonságnak kell megfelelnie:
Ez annak köszönhető, hogy a táblázat feldolgozása soronként és a következőképpen történik: Az enklávétáblázatban minden szám egy bájtpozíciót jelent. A táblázat egy sorában megadott három bájt összegzésre kerül (modulo 128). Az első oszlopban megadott bájt helyére a kapott összeg kerül. [3]
Minden változó enklávéfázis 4 enklávétáblázatot használ az alábbiak szerint:
A REDOC-II eredeti verziójában a kulcstáblázat és a maszktábla a 70 bites K kulcs használatával van feltöltve.
A kulcstáblázat kitöltésének algoritmusa a következő:
Összesen 128 alkulcs jön létre.
A maszktáblázat kitöltésének algoritmusa így néz ki:
Összesen 4 maszk keletkezik.
A nyers erőt tartják a kulcs kinyitásának leghatékonyabb módjának; 2160 műveletre lesz szükség a cél eléréséhez . Szinte az egyetlen hatékony kriptoanalízis az algoritmus egyik fordulójának Thomas Kuzik általi megnyitása volt, de a nyitást nem lehetett további körökre kiterjeszteni. 2300 nyitott szöveg segítségével az egyik kört Shamir és Biham kriptoanalízissel végezték, 4 kör után 3 maszkértéket kaptak, de ez önmagában nem hozott sikert, és jelenleg az algoritmus kriptorezisztensnek számít [ 1] .
Létezik az algoritmusnak egy jóval leegyszerűsített változata is – a REDOC III , amelyet Michael Wood készített. 80 bites blokkot használnak, a kulcs hossza változó, elérheti a 20480 bitet. A permutációk és helyettesítések kizártak, a blokkon és a kulcson végzett összes művelet csak az XOR használatán alapul, aminek köszönhetően a titkosítási sebesség jelentősen megnő a differenciális kriptoanalízissel szembeni ellenállás rovására . Az algoritmus a titkos kulcs alapján generált 256 db 10 bájtos kulcson, valamint az XOR 128 db 10 bájtos kulcs alapján kapott két 10 bájtos maszk blokkon alapul. A REDOC III algoritmus mindkét maszkjának sikeres helyreállításához 223 egyszerű szövegre van szükség. Ez az algoritmus egyszerű és gyors. A 33 MHz-es 80386 processzoron 2,75 Mbps [1] sebességgel titkosítja az adatokat . A REDOC II kriptográfiai rendszer 800 kbps titkosítására képes 20 MHz órajel mellett. [6]
A REDOC II algoritmus és annak leegyszerűsített változata szabadalmaztatott az USA-ban [1] .
Szimmetrikus titkosítási rendszerek | |
---|---|
Rejtjelfolyam adatfolyam | |
Feistel hálózat | |
SP hálózat | |
Egyéb |