DES

Az oldal jelenlegi verzióját még nem nézték át tapasztalt közreműködők, és jelentősen eltérhet a 2015. március 22-én felülvizsgált verziótól ; az ellenőrzések 72 szerkesztést igényelnek .
DES, adattitkosítási szabvány
Teremtő IBM
Létrehozva 1977_ _
közzétett 1977_ _
Kulcsméret 56 bit + 8 teszt
Blokkméret 64 bites
A körök száma 16
Típusú Feistel hálózat
 Médiafájlok a Wikimedia Commons oldalon

A DES ( angol  adattitkosítási szabvány ) az IBM által kifejlesztett szimmetrikus titkosítási algoritmus, amelyet az Egyesült Államok kormánya 1977-ben hagyott jóvá hivatalos szabványként ( FIPS 46-3). A DES blokkmérete 64 bit . Az algoritmus egy Feistel hálózaton alapul , 16 ciklussal ( körrel ) és 56 bites kulccsal . Az algoritmus nemlineáris (S-box) és lineáris (E, IP, IP-1 permutációk) transzformációk kombinációját használja. Számos mód ajánlott a DES-hez:

A DES közvetlen fejlesztése jelenleg a Triple DES (3DES) algoritmus. A 3DES-ben a titkosítás/dekódolás a DES algoritmus háromszori futtatásával történik.

Történelem

1972 -ben tanulmányt készítettek az Egyesült Államok kormányának számítógépes biztonság iránti igényéről. Az amerikai "Nemzeti Szabványügyi Iroda" (NBS) (jelenleg NIST - "Nemzeti Szabványügyi és Technológiai Intézet") megállapította, hogy szükség van egy kormányra kiterjedő szabványra a nem kritikus információk titkosítására.

Az NBS konzultált az NSA -val (US Nemzetbiztonsági Ügynökség), és 1973. május 15- én meghirdette az első versenyt a rejtjel létrehozására. Szigorú követelményeket fogalmaztak meg az új titkosítással szemben. Az IBM egy általa kifejlesztett "Lucifer " nevű rejtjellel nevezett a versenyre . Egyik versenyző (beleértve "Lucifert" is) titkosítása nem biztosította az összes követelmény teljesítését. 1973-1974 között az IBM véglegesítette "Luciferjét": a korábban létrehozott Horst Feistel algoritmust használta . 1974. augusztus 27- én kezdődött a második verseny. Ezúttal a "Lucifer" titkosítást tartották elfogadhatónak.

1975. március 17- én a javasolt DES algoritmust közzétették a Szövetségi Nyilvántartásban. 1976- ban két nyilvános szimpóziumot tartottak a DES megvitatására. A szimpóziumokon erősen kritizálták az NSA által az algoritmuson végrehajtott változtatásokat. Az NSA csökkentette az eredeti kulcshosszt és az S-boxokat (helyettesítő dobozok), amelyek tervezési kritériumait nem hozták nyilvánosságra. Az NSA-t azzal gyanúsították, hogy szándékosan gyengítette az algoritmust, hogy az NSA könnyen megtekinthesse a titkosított üzeneteket. Az Egyesült Államok Szenátusa áttekintette az NSA tevékenységét, és 1978 -ban nyilatkozatot adott ki , amely a következőket mondta ki:

1990 -ben Eli Biham és Adi Shamir független kutatást végzett a differenciális kriptoanalízisről , amely a blokkszimmetrikus titkosítási algoritmusok  feltörésének fő módszere . Ezek a vizsgálatok eloszlattak néhány gyanút az S-permutációk rejtett gyengeségével kapcsolatban. A DES algoritmus S-boxai sokkal ellenállóbbnak bizonyultak a támadásokkal szemben, mintha véletlenszerűen választották volna ki őket. Ez azt jelenti, hogy ezt az elemzési technikát az NSA már az 1970-es években ismerte.

A DES algoritmust 39 nap alatt "feltörték" egy több tízezer számítógépből álló hatalmas hálózat segítségével [1] .

Az " EFF " állami szervezet , amely az internetes információbiztonság és személyes adatok védelmének problémáival foglalkozik , elindított egy "DES Challenge II" tanulmányt a DES-sel kapcsolatos problémák azonosítására. A tanulmány részeként az RSA Laboratory alkalmazottai egy 250 000 dolláros szuperszámítógépet építettek, 1998-ban a szuperszámítógép egy 56 bites kulccsal kevesebb mint három nap alatt visszafejtette a DES-kódolt adatokat. A szuperszámítógép az "EFF DES Cracker" nevet kapta. Kifejezetten erre az alkalomra a tudósok sajtótájékoztatót szerveztek, és aggodalommal beszéltek arról, hogy a támadók valószínűleg nem fogják elszalasztani a lehetőséget, hogy kihasználják ezt a sebezhetőséget.

Egyes kormánytisztviselők és szakértők azzal érveltek, hogy a DES kód feltöréséhez több millió dolláros szuperszámítógépre van szükség. "Itt az ideje, hogy a kormány felismerje a DES bizonytalanságát, és támogassa egy erősebb titkosítási szabvány létrehozását" - mondta Barry Steinhardt, az EFF elnöke. Az Egyesült Államok kormánya által elrendelt exportkorlátozások a 40 bitnél hosszabb kulcsú titkosítási technológiákra vonatkoznak. Amint azonban az RSA Laboratory kísérlet eredményei megmutatták, lehetőség van még erősebb kód feltörésére. A problémát súlyosbította, hogy egy ilyen szuperszámítógép megépítésének költségei folyamatosan csökkentek. „Négy-öt év múlva ezek a számítógépek minden iskolában megtalálhatóak lesznek” – mondta John Gilmour, a DES Challenge projekt vezetője és az EFF egyik alapítója.

A DES egy blokk titkosítás. A DES működésének megértéséhez figyelembe kell venni a blokk titkosítás működési elvét , a Feistel hálózatot .

Blokk titkosítás

A blokk titkosítás bemeneti adatai a következők:

A kimenet (titkosítási transzformációk alkalmazása után) egy n bites méretű titkosított blokk, és a bemeneti adatok kisebb eltérései általában az eredmény jelentős változásához vezetnek.

A blokkrejtjelek úgy valósulnak meg, hogy ismételten alkalmaznak bizonyos alapvető transzformációkat a forrásszöveg blokkjaira .

Alap átalakítások:

Mivel az átalakításokat blokkonként hajtják végre, ezért szükséges a forrásadatokat a kívánt méretű blokkokra osztani. Ebben az esetben nem számít a forrásadatok formátuma (legyen szó szöveges dokumentumokról, képekről vagy egyéb fájlokról). Az adatokat bináris formában (nullák és egyesek sorozataként) kell értelmezni, és csak ezután kell blokkokra bontani. A fentiek mindegyike megvalósítható szoftveresen és hardveresen is.

Feistel hálózati átalakítások

Ez egy transzformáció a váltóregiszter bal és jobb felét reprezentáló vektorokon ( blokkokon ). A DES algoritmus a Feistel hálózat általi előre transzformációt használja a titkosításban (lásd 1. ábra) és a Feistel hálózat általi inverz transzformációt a visszafejtésben (lásd a 2. ábrát).

DES titkosítási séma

A DES algoritmus titkosítási sémája a 3. ábrán látható.

A forrásszöveg egy 64 bites blokk.

A titkosítási folyamat egy kezdeti permutációból, 16 titkosítási ciklusból és egy végső permutációból áll.

Kezdeti permutáció

Az eredeti szöveget (64 bites blokk) a kezdeti permutációval konvertáljuk, amelyet az 1. táblázat határoz meg:

1. táblázat: IP kezdeti permutáció
58 ötven 42 34 26 tizennyolc tíz 2 60 52 44 36 28 húsz 12 négy
62 54 46 38 harminc 22 tizennégy 6 64 56 48 40 32 24 16 nyolc
57 49 41 33 25 17 9 egy 59 51 43 35 27 19 tizenegy 3
61 53 45 37 29 21 13 5 63 55 47 39 31 23 tizenöt 7

A táblázat szerint a kapott blokk első 3 bitje a kezdeti permutáció után a bemeneti blokk 58., 50., 42. bitje, utolsó 3 bitje pedig a bemeneti blokk 23., 15., 7. bitje.

Titkosítási ciklusok

A kezdeti permutáció után kapott 64 bites blokk IP(T) a Feistel transzformáció 16 ciklusában vesz részt.

- A Feistel átalakulás 16 ciklusa :

Oszd fel az IP(T)-t két részre , ahol az IP(T)=  blokk 32 magas és 32 alacsony bitje

Legyen az eredmény (i-1) iteráció, akkor az i-edik iteráció eredményét a következőképpen határozzuk meg:

A bal fele egyenlő az előző vektor jobb felével . A jobb fele pedig a modulo 2  bitenkénti összeadása .

A Feistel transzformáció 16 ciklusában az f függvény a titkosítás szerepét tölti be . Tekintsük az f függvényt részletesen.

Alapvető titkosítási funkció (Feistel funkció)

A függvény argumentumai egy 32 bites vektor és egy 48 bites kulcs , amely az 56 bites eredeti rejtjelkulcs átalakításának eredménye . A függvény kiszámításához használja egymás után

  1. bővítő funkció ,
  2. kiegészítés modulo 2 kulccsal
  3. transzformáció , amely 8 transzformációs blokkból áll ,
  4. permutáció .

A függvény egy 32 bites vektort 48 bitesre bont ki néhány bit megkettőzésével a ; a vektor bitsorrendjét a 2. táblázat tartalmazza.

2. táblázat: E kiterjesztési funkció
32 egy 2 3 négy 5
négy 5 6 7 nyolc 9
nyolc 9 tíz tizenegy 12 13
12 13 tizennégy tizenöt 16 17
16 17 tizennyolc 19 húsz 21
húsz 21 22 23 24 25
24 25 26 27 28 29
28 29 harminc 31 32 egy

A vektor első három bitje a vektor 32, 1, 2 bitje . A 2. táblázat azt mutatja, hogy az 1, 4, 5, 8, 9, 12, 13, 16, 17, 20, 21, 24, 25, 28, 29, 32 bitek megkettőződnek. A vektor utolsó 3 bitje a vektor  31, 32, 1 bitje . A permutáció után kapott blokkot modulo 2-vel adjuk hozzá a kulcsokkal , majd nyolc egymást követő blokk formájában jelenítjük meg .

Mindegyik 6 bites blokk. Továbbá mindegyik blokk 4 bites blokkká alakul transzformációk segítségével . Az átalakításokat a 3. táblázat határozza meg.

3. táblázat Transzformációk , i=1…8
0 egy 2 3 négy 5 6 7 nyolc 9 tíz tizenegy 12 13 tizennégy tizenöt
0 tizennégy négy 13 egy 2 tizenöt tizenegy nyolc 3 tíz 6 12 5 9 0 7
egy 0 tizenöt 7 négy tizennégy 2 13 egy tíz 6 12 tizenegy 9 5 3 nyolc
2 négy egy tizennégy nyolc 13 6 2 tizenegy tizenöt 12 9 7 3 tíz 5 0
3 tizenöt 12 nyolc 2 négy 9 egy 7 5 tizenegy 3 tizennégy tíz 0 6 13
0 tizenöt egy nyolc tizennégy 6 tizenegy 3 négy 9 7 2 13 12 0 5 tíz
egy 3 13 négy 7 tizenöt 2 nyolc tizennégy 12 0 egy tíz 6 9 tizenegy 5
2 0 tizennégy 7 tizenegy tíz négy 13 egy 5 nyolc 12 6 9 3 2 tizenöt
3 13 nyolc tíz egy 3 tizenöt négy 2 tizenegy 6 7 12 0 5 tizennégy 9
0 tíz 0 9 tizennégy 6 3 tizenöt 5 egy 13 12 7 tizenegy négy 2 nyolc
egy 13 7 0 9 3 négy 6 tíz 2 nyolc 5 tizennégy 12 tizenegy tizenöt egy
2 13 6 négy 9 nyolc tizenöt 3 0 tizenegy egy 2 12 5 tíz tizennégy 7
3 egy tíz 13 0 6 9 nyolc 7 négy tizenöt tizennégy 3 tizenegy 5 2 12
0 7 13 tizennégy 3 0 6 9 tíz egy 2 nyolc 5 tizenegy 12 négy tizenöt
egy 13 nyolc tizenegy 5 6 tizenöt 0 3 négy 7 2 12 egy tíz tizennégy 9
2 tíz 6 9 0 12 tizenegy 7 13 tizenöt egy 3 tizennégy 5 2 nyolc négy
3 3 tizenöt 0 6 tíz egy 13 nyolc 9 négy 5 tizenegy 12 7 2 tizennégy
0 2 12 négy egy 7 tíz tizenegy 6 nyolc 5 3 tizenöt 13 0 tizennégy 9
egy tizennégy tizenegy 2 12 négy 7 13 egy 5 0 tizenöt tíz 3 9 nyolc 6
2 négy 2 egy tizenegy tíz 13 7 nyolc tizenöt 9 12 5 6 3 0 tizennégy
3 tizenegy nyolc 12 7 egy tizennégy 2 13 6 tizenöt 0 9 tíz négy 5 3
0 12 egy tíz tizenöt 9 2 6 nyolc 0 13 3 négy tizennégy 7 5 tizenegy
egy tíz tizenöt négy 2 7 12 9 5 6 egy 13 tizennégy 0 tizenegy 3 nyolc
2 9 tizennégy tizenöt 5 2 nyolc 12 3 7 0 négy tíz egy 13 tizenegy 6
3 négy 3 2 12 9 5 tizenöt tíz tizenegy tizennégy egy 7 6 0 nyolc 13
0 négy tizenegy 2 tizennégy tizenöt 0 nyolc 13 3 12 9 7 5 tíz 6 egy
egy 13 0 tizenegy 7 négy 9 egy tíz tizennégy 3 5 12 2 tizenöt nyolc 6
2 egy négy tizenegy 13 12 3 7 tizennégy tíz tizenöt 6 nyolc 0 5 9 2
3 6 tizenegy 13 nyolc egy négy tíz 7 9 5 0 tizenöt tizennégy 2 3 12
0 13 2 nyolc négy 6 tizenöt tizenegy egy tíz 9 3 tizennégy 5 0 12 7
egy egy tizenöt 13 nyolc tíz 3 7 négy 12 5 6 tizenegy 0 tizennégy 9 2
2 7 tizenegy négy egy 9 12 tizennégy 2 0 6 tíz 13 tizenöt 3 5 nyolc
3 2 egy tizennégy 7 négy tíz nyolc 13 tizenöt 12 9 0 3 5 6 tizenegy

Tegyük fel , és meg akarjuk találni . Az első és az utolsó számjegy az a szám bináris reprezentációja, 0<=a<=3, a középső 4 számjegy a b szám, 0<=b<=15. Az S3 táblázat sorai 0-tól 3-ig, az S3 táblázat oszlopai 0-tól 15-ig vannak számozva. Az (a, b) számpár határozza meg az a sor és a b oszlop metszéspontjában lévő számot. Ennek a számnak a bináris reprezentációja ad . Esetünkben , , és a (3,7) pár által meghatározott szám 7. Bináris ábrázolása =0111. A függvényértéket (32 bit ) a 32 bites blokkra alkalmazott P permutálásával kapjuk meg . A P permutációt a 4. táblázat adja meg.

4. táblázat: P permutáció
16 7 húsz 21 29 12 28 17
egy tizenöt 23 26 5 tizennyolc 31 tíz
2 nyolc 24 tizennégy 32 27 3 9
19 13 harminc 6 22 tizenegy négy 25


A 4. táblázat szerint a kapott vektor első négy bitje az f függvény működése után a vektor 16, 7, 20, 21 bitje.

Kulcsgenerálás

A kulcsok a kezdeti kulcsból származnak (56 bit = 7 bájt vagy 7 karakter ASCII -ben ) az alábbiak szerint. A bitek a kulcs 8., 16., 24., 32., 40., 48., 56., 64. pozíciójában kerülnek hozzáadásra, így minden bájt páratlan számú egyest tartalmaz. Ez a kulcscsere és -tárolás hibáinak észlelésére szolgál. Ezután a kiterjesztett kulcshoz permutáció készül (kivéve a hozzáadott 8, 16, 24, 32, 40, 48, 56, 64 biteket). Egy ilyen permutációt az 5. táblázat definiál.

5. táblázat
57 49 41 33 25 17 9 egy 58 ötven 42 34 26 tizennyolc
tíz 2 59 51 43 35 27 19 tizenegy 3 60 52 44 36
63 55 47 39 31 23 tizenöt 7 62 54 46 38 harminc 22
tizennégy 6 61 53 45 37 29 21 13 5 28 húsz 12 négy

Ezt a permutációt két blokk és egyenként 28 bit határozza meg . Az első 3 bit a kiterjesztett kulcs 57., 49., 41. bitje. Az első három bit pedig a kiterjesztett kulcs 63., 55., 47. bitje. i=1,2,3… egy vagy két balra ciklikus eltolásból kapjuk a 6. táblázat szerint.

6. táblázat
én egy 2 3 négy 5 6 7 nyolc 9 tíz tizenegy 12 13 tizennégy tizenöt 16
Váltószám egy egy 2 2 2 2 2 2 egy 2 2 2 2 2 2 egy

Az , i=1,…16 kulcs 48 bitből áll, amelyeket a 7. táblázat szerinti vektorbitek közül választanak ki (56 bit ). Az első és a második bit a vektor 14., 17. bitje.

7. táblázat
tizennégy 17 tizenegy 24 egy 5 3 28 tizenöt 6 21 tíz 23 19 12 négy
26 nyolc 16 7 27 húsz 13 2 41 52 31 37 47 55 harminc 40
51 45 33 48 44 49 39 56 34 53 46 42 ötven 36 29 32

Végső permutáció

A végső permutáció a (ahol ) -ra hat, és az eredeti permutáció inverze. A végső permutációt a 8. táblázat határozza meg.

8. táblázat Fordított permutáció
40 nyolc 48 16 56 24 64 32 39 7 47 tizenöt 55 23 63 31
38 6 46 tizennégy 54 22 62 harminc 37 5 45 13 53 21 61 29
36 négy 44 12 52 húsz 60 28 35 3 43 tizenegy 51 19 59 27
34 2 42 tíz ötven tizennyolc 58 26 33 egy 41 9 49 17 57 25

Dekódolási séma

Az adatok visszafejtésekor minden művelet fordított sorrendben történik. A 16 dekódolási körben, ellentétben a Feistel hálózat közvetlen transzformációjával végzett titkosítással, itt a Feistel hálózat inverz transzformációját alkalmazzuk.


A visszafejtési séma a 6. ábrán látható.
Kulcs , i=16,…,1, f függvény, IP permutáció, és ugyanaz, mint a titkosítási folyamatban. A kulcsgenerálási algoritmus csak a felhasználó kulcsától függ, így azok dekódoláskor azonosak.

A DES használati módjai

A DES négy üzemmódban használható.

  1. Elektronikus kódkönyv mód ( ECB )  : A DES általános használata blokkrejtjelként . A titkosított szöveget blokkokra osztják, és mindegyik blokkot külön titkosítják anélkül, hogy interakcióba lépnének más blokkokkal (lásd 7. ábra).
  2. Cipher Block Chaining Mode ( CBC  - Cipher Block Chaining ) (lásd 8. ábra). Minden következő blokk i>=1, a titkosítás előtt a modulo 2 hozzáadódik az előző titkosított szöveg blokkhoz . A vektor  a kezdeti vektor, naponta változik és titokban marad.
  3. Cipher Feedback mód ( lásd 9. ábra). CFB módban blokkos gamma jön létre . A kezdeti vektor egy szinkronizálási üzenet, és célja annak biztosítása, hogy a különböző adatkészletek eltérő módon legyenek titkosítva ugyanazzal a titkos kulccsal. A szinkronizálási üzenetet a titkosított fájllal együtt szöveges formában küldi el a címzett. A DES algoritmus az előző módokkal ellentétben csak titkosításként használatos (mindkét esetben).
  4. Kimeneti visszacsatolási mód ( OFB  - Output Feedback ) (lásd 10. ábra). OFB módban egy "gamma" blokk jön létre , i>=1. A mód a DES-t is csak titkosításként használja (mindkét esetben).

A módok előnyei és hátrányai:

A DES algoritmus kriptográfiai erőssége

A DES-ben végzett transzformációk nemlinearitása csak S-boxok segítségével és gyenge S-boxok használata lehetővé teszi a titkosított levelezés ellenőrzését. Az S-boxok kiválasztásához több feltételnek kell teljesülnie:

A lehetséges kulcsok kis száma (csak ) miatt lehetővé válik azok kimerítő, valós idejű, nagysebességű számítógépeken történő felsorolása. 1998- ban az Electronic Frontier Foundationnek egy speciális DES-Cracker számítógép segítségével 3 nap alatt sikerült feltörnie a DES-t.

Gyenge kulcsok

A gyenge kulcsok olyan k kulcsok , ahol x egy  64 bites blokk.

4 gyenge kulcs ismert, ezeket a 9. táblázat tartalmazza. Minden gyenge kulcshoz vannak fix pontok , azaz olyan 64 bites x blokkok , amelyekhez .

9. táblázat. DES-Gyenge kulcsok
Gyenge billentyűk (hexadecimális)
0101-0101-0101-0101
FEFE-FEFE-FEFE-FEFE
1F1F-1F1F-0E0E-0E0E
E0E0-E0E0-F1F1-F1F1

28 nulla bitből álló vektort jelöl.

Részben gyenge billentyűk

A DES algoritmusban vannak gyenge és részben gyenge kulcsok. A részben gyenge billentyűk olyan kulcspárok, amelyek

6 részben gyenge kulcspár van, ezeket a 10. táblázat sorolja fel. Mind a 12 részben gyenge kulcshoz vannak „anti-fix pontok”, azaz olyan x blokkok, amelyek

10. táblázat Részben gyenge billentyűk
Részben gyenge billentyűpárok
01FE-01FE-01FE-01FE,----FE01-FE01-FE01-FE01
1FE0-1FE0-1FE0-1FE0,----E0F1-E0F1-E0F1-E0F1
01E0-01E0-01F1-01F1,----E001-E001-F101-F101
1FFE-1FFE-0EFE-0EFE,----FE1F-FE1F-FE0E-FE0E
011F-011F-010E-010E,----1F01-1F01-0E01-0E01
E0FE-E0FE-F1FE-F1FE,----FEE0-FEE0-FEF1-FEF1

Ismert támadások a DES ellen

11. táblázat: A DES elleni ismert támadások.
Támadási módszerek Ismert felfedezések szövegek Kiválasztva nyitva szövegek Memória méret Műveletek száma
Teljes keresés qweqweqweqerqe - Kisebb
Lineáris kriptoanalízis - Szöveghez
Lineáris kriptoanalízis - Szöveghez
Különbözik. Rejtjel megfejtés - Szöveghez
Különbözik. Rejtjel megfejtés - Szöveghez

A lineáris és differenciális kriptoanalízishez kellően nagy mennyiségű memória szükséges a kiválasztott (ismert) nyílt szövegek tárolására a támadás megkezdése előtt.

A DES erősségének növelése

A DES kriptográfiai erősségének növelésére több lehetőség is megjelenik: dupla DES ( 2DES ), hármas DES ( 3DES ), DESX , G-DES .

A 3DES használatakor a legnépszerűbb típus a DES-EDE3, amelynél az algoritmus így néz ki: Titkosítás : . Dekódolás : A 3DES algoritmus végrehajtásakor a kulcsok az alábbiak szerint választhatók:

Alkalmazás

1977-1980 között a DES volt az Egyesült Államok nemzeti szabványa ,  de jelenleg a DES-t (56 bites kulccsal) csak a régebbi rendszerekben használják, leggyakrabban a titkosításilag erősebb formáját ( 3DES , DESX ). A 3DES a DES egyszerű, hatékony helyettesítője, és ma már szabványnak számít. A közeljövőben a DES-t és a Triple DES - t felváltja az AES (Advanced Encryption Standard) algoritmus. A DES algoritmust széles körben használják a pénzügyi információk védelmére: például a THALES (Racal) HSM RG7000 modul teljes mértékben támogatja a TripleDES műveleteket a VISA , EuroPay és egyéb hitelkártyák kibocsátásához és feldolgozásához . A THALES (Racal) DataDryptor 2000 csatornakódolók TripleDES -t használnak az adatfolyamok transzparens titkosításához. A DES algoritmust sok más THALES-eSECURITY eszközben és megoldásban is használják.

Jegyzetek

  1. Distributed.net: RSA DES II-1 projekt . Letöltve: 2018. január 1. Az eredetiből archiválva : 2017. december 31..

Irodalom