Mi a 3DES titkosítás és hogyan működik a DES?

Mi a 3DES titkosítás és hogyan működik a DES (1)


A 3DES egy titkosító rejtjel, amelyet az eredeti Data Encryption Standardból (DES) származtattak. Kilencvenes évek végén vált kiemelkedővé, ám azóta a biztonságosabb algoritmusok megjelenése következtében kevésbé részesült előnyben..

Noha 2023-ban elavul, bizonyos helyzetekben továbbra is végrehajtják. Mivel az egyik első széles körben publikált és tanulmányozott algoritmuson, a DES-n alapul, továbbra is fontos megismerni, mi a 3DES és hogyan működik.

Ez az útmutató részletesen bemutatja a DES-folyamat egyes lépéseit, majd bemutatja, hogyan módosítják a DES-t a 3DES-ben a biztonságosabbá tétele érdekében. Érinti a különféle biztonsági kérdéseket is, valamint azt, hogy kell-e használni az algoritmust.

Mi a 3DES??

Noha hivatalosan háromszoros adattitkosítási algoritmusnak (3DEA) nevezik, leggyakrabban 3DES-nek nevezik. Ennek oka az, hogy a 3DES algoritmus az Data Encryption Standard (DES) titkosítást háromszor használja az adatok titkosításához..

A DES egy szimmetrikus kulcsú algoritmus, amely egy Feistel-hálózaton alapul. Szimmetrikus kulcs rejtjelként ugyanazt a kulcsot használja mind a titkosítási, mind a dekódolási folyamatokhoz. A Feistel-hálózat mindkét folyamatot szinte pontosan ugyanazzá teszi, ami eredményesebb algoritmust eredményez.

A DES 64 bites blokkot és kulcsméretet is tartalmaz, de a gyakorlatban a kulcs csak 56 bites biztonságot nyújt. A 3DES-t biztonságosabb alternatívaként fejlesztették ki, mivel a DES kis kulcshosszú. A 3DES-ben a DES algoritmust háromszor futtatják három gombbal, ám csak biztonságosnak tekintik, ha három különálló kulcsot használnak.

A 3DES felhasználásai

Amint a normál DES gyengeségei nyilvánvalóbbá váltak, a 3DES-t széles körben alkalmazták. Ez volt az egyik leggyakrabban használt titkosítási séma az AES emelkedése előtt.

A megvalósítás néhány példája a Microsoft Office, a Firefox és az EMV fizetési rendszerek. Ezen platformok többsége már nem használja a 3DES-t, mert vannak jobb alternatívák.

A Nemzeti Szabványügyi és Technológiai Intézet (NIST) kiadta javaslattervezetét, amely szerint a 3DES minden formája 2023-ig elavul, és 2024-től már nem engedélyezett. Bár ez csak egy tervezet, a javaslat egy korszak végét jelenti, és már jó ideje eljutni más, biztonságosabb algoritmusokra.

A 3DES titkosítás története

Mivel a 3DES a DES-ből származik, a legjobb, ha előbb a korábbi szabványt vezetjük be. A hetvenes években a Nemzeti Szabványügyi Iroda (NBS - azóta átnevezték NIST-nek) egy algoritmust keresett, amelyet szabványként használhatna az érzékeny, de nem osztályozott kormányzati információk titkosítására..

Az NBS elfogadta a szabvány követelményeinek megfelelő javaslatokat, ám az eredeti fordulóban egyik jelölt sem volt megfelelő. További beadványokat hívott fel, és ezúttal az IBM elküldte egy algoritmust, amelyet a csapata fejlesztett ki. A beadvány a Horst Feistel által kidolgozott Lucifer rejtjelből származik.

1975-ben az NBS közzétette az IBM algoritmust, mint javasolt adattitkosítási szabvány. A nyilvánosságot felkérték, hogy tegye meg véleményét a tervről, ami némi kritikát váltott ki.

Az olyan prominens kriptográfusok, mint a Whitfield Diffie és Martin Hellman, a Diffie-Hellman kulcscsere tervezői, azt állították, hogy a kulcs hossza túl rövid, és az S-dobozokat megváltoztatták eredeti kialakításuktól.

Abban az időben a kriptográfiai közösségben sokan azt hitték, hogy az NSA szabotálja a projektet és gyengítette az algoritmust, így ez lesz az egyetlen ügynökség, amely megtörheti a DES-t..

Amikor ezt az Egyesült Államok Szenátusának Intelligencia Kiválasztási Bizottsága megvizsgálta, kiderült, hogy az NSA meggyőzte az IBM-t, hogy elegendő a csökkentett kulcsméret; közvetett módon segített az S-box struktúrák fejlesztésében; és igazolta, hogy legjobb tudásuk szerint a végső DES algoritmus mentes minden statisztikai vagy matematikai gyengeségtől. "

Ugyanezen jelentés azt állította, hogy az „NSA semmilyen módon nem befolyásolta a kialakítást.” Ezt támasztotta alá néhány volt IBM alkalmazott, aki azt állította, hogy a DES algoritmust teljes egészében az IBM csapata tervezte..

Az NSA saját dekódolt dokumentációja szerint az ügynökség „szorosan együttműködött az IBM-szel az algoritmus megerősítésében a brutális erőszakos támadások kivételével és a helyettesítő táblázatok megerősítése érdekében…”

Az NSA hamisításának gyanúja a kilencvenes években enyhült, miután a kriptoanalízist nyilvánosan felfedezték. Amikor a sokat rosszindulatú S-dobozokat az új technikával tesztelték, úgy találták, hogy azok jobban ellenállnak a támadásoknak, mintha véletlenszerűen választanák őket..

Ez azt jelzi, hogy az IBM csapata már a hetvenes években tudott a differenciális kriptoanalízisről; Steven Levy azt állította, hogy az NSA arra kérte őket, hogy tartsák titokban a technikát a nemzeti biztonság védelme érdekében..

A híres kriptográfus, Bruce Schneier egyszer megszólalt: „Két évtizedre telt el az akadémiai közösségnek, hogy kiderüljön, hogy az NSA„ csípései ”valóban javították-e a DES biztonságát.”

Az algoritmus biztonságával és az NSA részvételével kapcsolatos kezdeti kérdések ellenére az IBM algoritmust 1976-ban hagyták jóvá Data Encryption Standardként..

Amikor a lineáris kriptoanalízist 1994-ben először publikálták, kérdéseket vetett fel az algoritmus biztonságával kapcsolatban. 1997-ben a NIST bejelentette, hogy egy algoritmust keres a DES helyettesítésére. Az új algoritmus szükségessége fokozódott, ahogy a technológia tovább fejlődött, és a potenciális támadások egyre erősebbé váltak.

Különböző feltörési kísérletek azt mutatták, hogy az algoritmus törése kevésbé volt bonyolult, mint azt korábban gondolták. 1998-ban a Distrib.net képes volt feltörni a DES-t, 39 nap.

1999 elejére az Electronic Frontier Foundation Deep Crack-je valamivel több mint 22 órát töltött le. Ez jelezte a DES végét, mivel egy ilyen jellegű támadás most egy jól erõforrással ellátott ellenfél elérhetõségén volt.

A fő kérdés a kis kulcsterület volt, és komoly szükség volt egy új algoritmusra. Ez problémát okozott, mivel még néhány évbe telhet, amíg a NIST elfoglalja az algoritmust, amely a helyettesítő standard, az Advanced Encryption Standard (AES) lett..

Amíg az AES rejtjeléről döntenek, a 3DES-t javasolták megállási intézkedésként. Ez magában foglalja a DES algoritmus háromszori futtatását, három különálló billentyűvel. 1999-ben a DES-t megerősítették, de a 3DES-t, mint az ideális algoritmust. A normál DES csak régi alkalmazásokban volt megengedett.

A 3DES ezután széles körben elterjedt titkosítási algoritmussá vált, bár erőforrásfelhasználása és a biztonsági korlátozások miatt a legtöbb esetben az AES váltotta fel..

A DES algoritmus megértése

Mielőtt beszélnénk a 3DES részleteiről, fontos megérteni a DES algoritmust, amelyből származik. Tehát kezdjük már az elején.

Titkosítást használunk a szöveges adatok titkosított szöveggé alakításához, amely olyan információ, amelyhez a támadók nem férnek hozzá (mindaddig, amíg megfelelő algoritmusokat használunk).

A titkosítási algoritmusok alapvetően összetett matematikai képletek. Amikor valami olyan titkosítunk, mint például a „Menjünk a tengerpartra”, sok ember összezavarodik. Végül is, hogyan lehet matematikát alkalmazni olyan dolgokra, mint betűk és karakterek?

A szöveg kódolása

A valóság az, hogy a számítógépek nem foglalkoznak betűkkel és betűkkel. Ehelyett az 1-es és a 0-os rendszerek bináris néven működnek. Mindegyik 1 vagy 0 egy kicsit, és nyolc gyűjteményük byte-ként ismert.

Vagy manuálisan megnézheti, vagy egy online konverter segítségével megnézheti, hogy binárisan a "Menjünk a tengerpartra" kifejezés:

01001100 01100101 01110100 00100111 01110011 00100000 01100111 01101111 00100000 01110100 01101111 00100000 01110100 01101000 01100101 00100000 01100010 01100101 01100001 01100011 01101000

Blocks

Amikor az adatok titkosítva vannak, azokat külön blokkokra osztják fel a feldolgozás céljából. A DES 64 bites blokkmérettel rendelkezik, ami lényegében azt jelenti, hogy minden blokk illeszkedik 64 blokk és nulla keverékéhez. Az első blokkunk (a fenti bináris első 64 számjegye) a következő lenne:

01001100 01100101 01110100 00100111 01110011 00100000 01100111 01101111

A második lenne:

00100000 01110100 01101111 00100000 01110100 01101000 01100101 00100000

És az utolsó blokkunk a következő lenne:

01100010 01100101 01100001 01100011 01101000

Párnázás

Lehet, hogy észrevetted, hogy a harmadik blokkunk csak 40 bit hosszú. A titkosítás előtt 64 bites blokkméretre kell építeni. Ez a következővel történik párnázás, amely magában foglalja további információk hozzáadását a blokkhoz annak kiegészítése érdekében. Ezt számos különféle sémával meg lehet tenni, és arra is szolgálhat, hogy a titkosított információkat nehezebb feltárni, de ebben a cikkben nem foglalkozunk ezzel..

A DES kulcs ütemezése

A titkosítási algoritmusok kulcsokat használnak olyan adatok beillesztésére, amelyek megváltoztatják a folyamat végeredményét. Ha a DES csak olyan lépéseket tartalmazott, mint a permutáció és az S-boxok (a permutációt az alábbiakban magyarázzuk, míg az S-boxokat a Helyettesítés szakasz), a támadónak csak annyit kell tennie, hogy feltárja az algoritmus részleteit, majd végezze el az összes lépést fordítva, hogy felfedje a kezdeti üzenetet.

Mivel a legtöbb algoritmusunk széles körben ismert, ez nem járna sok biztonsággal. Ehelyett titkos kulcsokat adunk hozzá, hogy olyan módon változtassuk meg a kimenetet, amelyet nem lehet előre megjósolni az algoritmus ismeretével (mindaddig, amíg kellően összetett algoritmust használnak).

A DES egyetlen gombbal kezdődik, amelyet az egyes körökben alkalmazott alkulcsok készítéséhez használnak. Ez egy 64 bites kulcs, amely megegyezik a blokkjaink méretével. Tegyük fel, hogy kulcsunk:

01001010 10101101 11101000 10100101 01110001 01010100 10101001 11111010

Ezt a kulcsot binárisan kell megadni, azaz az adatok kifejezésre kerülnek, amikor a számítógépek feldolgozzák. Amikor az emberek a kulcsokkal foglalkoznak, általában karakterek keverékeként jelennek meg, ehhez hasonlóan:

kj329nf982bc9wn1

A DES-ben a kerek gombok levezetésének első lépése a kulcs permutálása (mozgatása) a következő táblázat szerint:

3DES-2a

Permutációban az eredeti kulcs minden egyes bitjét új pozícióba helyezzük, amint azt a táblázat jelzi. Mivel a (C) bal felső sarkában lévő cella ezt mondja 57, a permutált kulcs első száma a régi blokk 57. pozíciójában lévő szám lesz:

01001010 10101101 11101000 10100101 01110001 01010100 10101001 11111010

A második cella azt mondja 49, ami azt jelenti, hogy új kulcsunk második számjegye a régi blokk 49. pozíciójában lévő szám lesz:

01001010 10101101 11101000 10100101 01110001 01010100 10101001 1111010

A harmadik cella azt mondja 41, tehát a 41-es pozíción keressük a számjegyet:

01001010 10101101 11101000 10100101 01110001 01010100 10101001 1111010

Eddig a kulcsot „110”.

A kulcs többi része ugyanolyan módon van elrendezve, a táblázat értékeinek megfelelően. Balról jobbra haladunk, és miután egy sor végére jutunk, ugrunk le a következőre, akárcsak a normál. Egyszer C. táblázat kész, ugrunk D táblázat hogy befejezze a kulcs második felét.

Nincs egyszerű mód a teljes blokk átültetésére a kezdeti permutációs táblázat szerint. Megteheted az egész dolgot kézzel, vagy megírhatsz egy forgatókönyvet (vagy akár szerencséd lesz, és megtalálhatsz egyet az internet mélyén), de megcsaljuk és kitaláljuk:

1100010 1010010 1010101 0101010 1010000 1111001 0001011 1000111

Lehet, hogy aggódik, hogy az útmutatóban szereplő számokat feltesszük, de a valóság az, hogy nem igazán számít. Senki sem titkosítja az adatokat manuálisan, mindez programon keresztül történik. Ennek az oktatóanyagnak a legkritikusabb szempontja az, hogy világosan megismerje az általunk tárgyalt fogalmakat. Maguk a számok csak arra szolgálnak, hogy elképzeljék, mi folyik.

Néhány olvasó észrevette, hogy a tábla (és most a kulcsunk) csak 56 bittel rendelkezik, a 64 helyett. Ennek oka az, hogy minden nyolcadik bit kihagyásra kerül. Ez a műszaki régebbi időszaktól származó mű, amikor fontos volt paritásellenőrző bitek, amelyek ellenőrizték, hogy a kulcs helyesen érkezett-e. Ezek a paritásellenőrző bitek azt jelentik, hogy a gyakorlatban a DES csak egy 56 bites kulcsot biztonságos.

A C és a D táblázat ad egy kulcsot, amelynek két 28 bites fele van. Időnként a feleket C és D néven említik, ám ebben a cikkben balra és jobbra L és R néven hivatkozunk rájuk. Bal oldalunk:

1100010 1010010 1010101 0101010

Míg a jobbunk:

1010000 1111001 0001011 1000111

A következő lépés a kulcs elmozgatása egy vagy két szóközzel balra, a fordulótól függően. A helyek pontos számát az alábbi előre meghatározott táblázat szerint kell meghatározni:

Kerek számA bal oldali műszakok száma
1 1
2 1
3 2
4 2
5 2
6 2
7 2
8 2
9 1
10 2
11 2
12 2
13 2
14 2
15 2
16 1

Vegyük tehát a bal és a jobb felünket:

L 1010010 1010010 1010101 0101010

R 1010000 1111001 0001011 1000111

És mozgassa el mindkettőt egy pozícióval balra, mivel az első forduló eltolódik 1 a táblázat szerint (a bal oldalon lévő szám a jobb oldalra kerül).

Első kör alkulcs:

L 0100101 0100101 0101010 1010101

R 0100001 1110010 0010111 0001111

A második fordulóban az asztal azt is mondja 1, így ez az eredmény ismét megváltozik, ha mindegyik helyzetet balra mozgatjuk.

Második kör rá:

L 1001010 1001010 1010101 0101010

R 1000011 1100100 0101110 0011110

A harmadik körben a számokat két helyre balra mozgatják, mert az asztal most azt mondja 2.

Harmadik forduló alkulcs:

L 0101010 0101010 1010101 0101010

R 0001111 0010001 0111000 1111010

A következő fordulókban a számokat balra mozgatják a táblázatban megadott távolságok szerint, mindegyik eltolást alkalmazva az előző forduló eredményére. Végül ez tizenhat különböző alkulcsot ad nekünk, egy a DES folyamat minden egyes fordulójához.

A következő lépés egy további permutáció az alábbi PC2 táblázat szerint:

des-3a

Mostanra már ismeri a permutációkat, így nem fogunk mélyebben belemenni a folyamatba. Ha részletesebben szeretné megtudni, hogyan működik, olvassa el a magyarázatot e szakasz elején. Bár az áthelyezési helyzetek eltérőek, a folyamat ugyanaz.

A váltás során kapott 16 kulcs mindegyikét a táblázat szerint cseréljük el, a 14. helyről az első helyre, a 17. a másodikra, a 11.re a harmadikra ​​stb...

Ha alaposan megnézed az asztalt, észreveszed, hogy mindössze 48 bit van, ahelyett, hogy korábban volt. Ezt a folyamatot tömörítési permutációnak nevezzük.

Láthatjuk azt is, hogy a táblázat felső felében egy és 28 közötti szám szerepel, míg az alsó részben 29 és 56 közötti szám szerepel. Ez külön tartja az alkulcsok bal és jobb felét, és az alábbiakban a nagyobb szóköz jelöli. a kulcsok közepén.

Megint megcsaljuk és kitaláljuk a számokat. Tegyük fel, hogy az egész folyamat a következő alkulcsokat adott nekünk:

Első kör:         010101 010101 101010 110100 101001 100101 101010 101010

Második forduló:         011010 110101 101110 110010 010100 110010 111101 101101

Harmadik forduló:     010100 100110 110110 101010 100110 011000 101011 011001

Negyedik forduló:         011001 110101 011001 110101 000011 001011 010101 010101

Ötödik forduló:         110101 001101 010101 010101 010011 001011 010111 100101

Hatodik forduló:           010111 110101 011001 111001 101001 100101 101010 101010

Hetedik forduló:     110101 111010 101110 101010 100110 010110 111011 001110

Nyolcadik forduló:       011001 110101 010101 001001 010011 001011 010100 101010

Kilencedik forduló:         111011 011010 011110 100010 100010 010110 110011 110010

10. forduló:             011010 010101 101110 101001 010010 010110 111000 101010

11. forduló:             110101 001101 101110 101010 100101 100101 101010 001010

12. forduló:             101001 100100 101001 101010 100110 011000 101011 011001

13. forduló:             010010 010010 010101 010101 010110 110001 100101 101010

14. forduló:             101001 100110 010101 011101 010001 001010 110010 111110

15. forduló:             011001 011010 011001 110101 001001 011001 100101 101101

16. forduló:             010010 100110 010101 010101 010001 101000 110010 111010    

Ez az eltolásos folyamat azt eredményezi, hogy az egyes biteket a kezdeti kulcs használatához a 16 alkulcsból körülbelül 14-nél használják, bár egyes biteket valamivel többet használnak, mint mások.

Kezdeti permutáció

Miután az adatokat blokkokra osztottuk és szükség esetén feltöltöttük, ideje elkezdeni a DES titkosítási folyamatot. Visszatérünk a későbbiekben éppen létrehozott alkulcsokhoz. Az első lépést kezdeti permutációnak nevezzük, ahol az adatokat a következő táblázat szerint rendezzük át:

3DES-12

Ez a kezdeti permutációs folyamat nem teszi biztonságosabbá az algoritmust. Ennek oka az, hogy nem tartalmaz semmilyen kulcsot, és könnyen megfordítható. Az algoritmust eredetileg így tervezték, mert bizonyos kontextusokban megkönnyítette a megvalósítást.

Mivel néhányszor lefedtük a permutációkat, itt minden fontosabb magyarázatot kihagyunk. Menj vissza a A DES kulcs ütemezése szakasz, ha további információra van szüksége a működésükről.

Vegyük az első blokkot a „Menjünk a partra” üzenetből, amelyet a Blokk szakasz alatt A DES algoritmus megértése:

01001100 01100101 01110100 00100111 01110011 00100000 01100111 01101111

Az első cella óta 58, a számot az 58. pozícióból választanánk ki:

01001100 01100101 01110100 00100111 01110011 00100000 01100111 01101111

Akkor a számot az 50. helyről vesszük:

01001100 01100101 01110100 00100111 01110011 00100000 01100111 01101111

És a szám a 42. pozícióból:

01001100 01100101 01110100 00100111 01110011 00100000 01100111 01101111

Ez megadja nekünk110" eddig. A maradék számot fogjuk kitölteni:

11010111 01001010 10101000 10011101 01001011 10110101 10000111 10101001

Amikor a kezdeti permutáció befejeződött, az adatokat továbbmozgatják a következő lépésre.

A blokkok felosztása

Miután az adatok megváltoztak a kezdeti permutáción, azokat felére osztják. Vegyük azt a blokkot, amely éppen átesett a kezdeti permutációján:

11010111 01001010 10101000 10011101 01001011 10110101 10000111 10101001

És elválasztjuk két blokkba, egy bal oldali blokkba (az első 32 számjegyből áll), úgynevezett L0:

L0    11010111 01001010 10101000 10011101

És egy jobb oldali blokk (a második 32 számjegyből áll), az úgynevezett R0:

R0    01001011 10110101 10000111 10101001

Az F funkció

Most, hogy a blokk fel lett osztva, itt az ideje, hogy az F funkció megtörténjen. Az első fordulóban csak a blokk jobb oldalára alkalmazzák, míg a bal felét később maradják meg. A jobb oldal az F funkció részeként a következő négy lépésben megy keresztül:

  • Tágulási permutáció (E az ábrán)
  • Kulcskeverés (⊕ az ábrán)
  • Helyettesítés (az ábrán mindegyik S1, S2 stb.)
  • Permutáció (P az ábrán)

des-5

Bővítő permutáció

A tágulási permutáció három dolgot valósít meg. A legfontosabb az, hogy lehetővé teszi, hogy az egyes bemeneti adatok befolyásolják két másik bit kimenetét, ezáltal lavinahatást okozva. Emellett a jobb oldali 48 bitből áll, így azonos méretű, mint a következő lépés alkulcsa. A tágulási permutáció másik hatása az, hogy hosszabb ideig teszi a kimenetet, mint a bemeneti. Ez lehetővé teszi a tömörítést a helyettesítési művelet során.

A biteket a következő táblázat szerint rendezzük át. Az egyes bitek némelyike ​​kétszer található a táblázatban, így bővült a blokk 32-ről 48 bitre:

des - 6a

Mivel az első cella 32-et mond, úgy vesszük a jobb oldali blokkot, és a 32. helyből kiválasztjuk a számot, ahogyan a fentiekben felsorolt ​​permutáció más példáin is tettük:

R0    01001011 10110101 10000111 10101001

Ezután vesszük a számokat az első, a második és így tovább, egészen addig, amíg el nem érünk a blokk jobb alsó sarkába. Mivel van egy 1 ebben a cellában az utolsó számjegy az a szám is, amely blokkunk első pozíciójában jelenik meg.

Tegyük fel, hogy a bővítési permutáció új, 48 bites blokkot ad nekünk:

101110 100110 100100 000000 001100 001110 101101 011110

Kulcskeverés

Miután a blokkot 48 bitre kibővítették, itt az ideje alkalmazni az első kör alkulcsát, amelyet a A DES kulcs ütemezése fenti szakaszban. A blokkot az alkulcs módosítja az XOR rejtjelet használva.

Az XOR rejtjel egy összekapcsoló rejtjel, amely egy egyszerű folyamatot követ, különös tekintettel a már tárgyalt többi elemhez.

XOR rejtjelben:

0 + 0 = 0

1 + 0 = 1

1 + 1 = 0

Tegyük fel, hogy a következő két számot XOR-ban kell elküldenie binárisan:

1101

0101

Minden számjegyet hozzáadnánk az alatta lévõ számhoz. A fent bemutatott három szabály szerint ez az eredményt adja:

1000

A kulcskeverési lépés befejezéséhez vesszük a blokkunk jobb oldalát, amelyet éppen 48 bitre kibővítettünk, és az első kerek kulcsot. Ezután végrehajtjuk az XOR kiegészítést:

Blokk:                      101110 100110 100100 000000 001100 001110 101101 011110

Kerek egy kulcs:     010101 010101 101010 110100 101001 100101 101010 101010

XOR eredmény:             111011 110011 001110 110100 100101 101011 000111 110100

Az XOR művelet eredményét ezután továbbviszik a következő körbe.

Helyettesítés

A helyettesítés zavart okoz az adatokban. Ez általában keresési táblákkal történik, amelyeket csere- vagy S-mezőkként is ismertek. A DES nyolc különálló táblát vagy S-négyzetet használ, külön-külön mindegyik 6 bit adathoz. Az alábbi táblázat a DES nyolc S-mezőjét mutatja be:

des - 7

A nyolc különálló S-box felhasználásával minden 6 bites bemenetet 4 bites kimenetre lehet fordítani. A folyamat első lépése a 6-bites szegmens elején és végén lévő számjegyek bevétele, majd a bináris érték decimálisra konvertálása.

Vegyük azokat az adatokat, amelyeket az előző lépésben éppen befejeztünk az XORing használatára:

111011 110011 001110 110100 100101 101011 000111 110100

Megvizsgáljuk az első 6 bites szegmenst, hogy megmutatjuk, hogyan működik a helyettesítési folyamat:

111011

Az első és az utolsó szám óta egyaránt 1, ez ad nekünk egy értéket 11. Ezután konvertálunk 11 bináris tizedesjegyig, ami megadja nekünk 3. Ezek csak egyenértékű értékek, különböző módon írva. Gondolj arra, hogy a számítógépes nyelvet emberi nyelvré konvertálják. Ha szeretné, ellenőrizze magának az átalakítást egy online számológéppel.

Ezután az első 6 bites szegmens négy középső számjegyét vesszük:

111011

És konvertálja őket binárisról decimálisra. 1101 fordítja a 13-as számra.

Most felvesszük ezt a két számot, és nézzük meg őket a S1 asztal:

                des - 7a

Az első számunk, 3, azt mondja nekünk, hogy nézzünk a harmadik sorba, míg a második számunk, 13 azt mondja nekünk, hogy nézzük meg a 13. oszlopot. A 13. oszlop harmadik sorában szereplő érték: 0.

Most, hogy felkutattuk a számot a táblázatban, konvertáljuk vissza négy számjegyű bináris értékre. A nullát általában 0-ra írják binárisan, de 0000 ugyanaz, és ez a formátum a legmegfelelőbb célunkhoz.

Ezt a folyamatot követően az S-box konvertálja az első 6 bites adatrészünket (111011) egy másik 4 bites értékre (0000). Úgy tűnik, hogy kanyargós, de ez a technika tovább elhomályosítja a rejtjelezett szöveg és a sima szöveg közötti kapcsolatot, amelyhez kapcsolódik..

A következő 6 bites adatszakasz ugyanazon a folyamaton megy keresztül, ám ehelyett a fent bemutatott S2 mezőt használja. A harmadik szakasz az S3 táblát használja és így tovább, egészen addig, amíg az utolsó szakasz az S8 táblán keresztül cserélésre kerül.

Megint megcsaljuk az összes többi értéket. Tegyük fel, hogy a cseredobozok az alábbiak eredményét adják:

0000 1010 1100 1001 0100 1001 0111 0001

Miután az adatok minden szakasza átkerült az S-dobozba, továbblép a következő lépésre.

Permutáció

Az F függvény utolsó szakasza egy másik permutáció, az alábbi táblázat felhasználásával:des - 8a

Mostanra jól meg kell értenie, hogy a permutációk hogyan változtatják a számjegyeket a régi blokkból az új blokk másik helyére, így nem fogunk újra belemenni.

Tegyük fel, hogy ez a permutáció az előző eredményünket veszi át:

0000 1010 1100 1001 0100 1001 0111 0001

És eredményeket ad nekünk:

0101 0110 1001 0101 0010 0100 0101 0010

Most, hogy a permutáció befejeződött, befejeztük az F függvény négy lépését ebben a körben. A matematikai jelölésben ezt az értéket nevezzük f (R0, K1). Ez azt jelenti, hogy az eredmény a függvény (f) a blokk kezdeti jobb oldalának (R0) és az első kör alkulcsának (K1).

XOR a bal oldali mondattal

Emlékszel, hogyan osztottuk fel a blokkot felére közvetlenül az F függvény lépéseinek megkezdése előtt? A blokk bal oldalát (L0) félretettük, míg a jobb oldalon mindezen folyamatoknak megyünk keresztül. Nos, itt az ideje, hogy az L0 újra fellépjen.

A jobb oldalt vesszük, amelyet éppen dolgoztunk fel f (R0, K1) és adjuk hozzá a régi bal oldalhoz (L0) az XOR rejtjel használatával. Ez ad nekünk R1, első fordulónk eredménye:

f (R0, K1):                         0101 0110 1001 0101 0010 0100 0101 0010

L0:                                    1101 0111 0100 1010 1010 1000 1001 1101

XOR eredmény (R1):              1000 0001 1101 1111 1000 1100 1100 1111

Utal Kulcskeverés a fenti szakaszban, ha emlékeztetőre van szüksége az XOR rejtjel működéséről.

További 15 forduló ...

Ha eddig elérted, akkor a DES valószínűleg nehéz folyamatnak tűnik. De még nem közel van ahhoz, hogy befejezze. Az adatok az F függvény négy lépésén keresztül mennek, majd az XOR követi, további 15 alkalommal, összesen 16 fordulóban.

A második fordulóban a tömb jobb oldalának eredeti, érintetlen változatát (R0) vesszük, és az új bal oldalról (L1) készítjük. Időközben vesszük az első fordulónk eredményét, és elküldjük az F függvényen. Minden ugyanúgy történik, mint utoljára, ám ehelyett a második forduló alkulcsát használjuk. Tegyük fel, hogy ez a folyamat az alábbiak eredményét eredményezi:

f (R1, K2):        1011 0111 1000 1011 1001 1101 1001 1110

Ezután XOR-ban XOR az eredményt L1-gyel, amely valójában R0 (ezt a Hasító blokkok szakasz). Ez adja meg a második forduló R2 eredményét:

f (R1, K2):           1011 0111 1000 1011 1001 1101 1001 1110

L1:                      0100 1011 1011 0101 1000 0111 1010 1001

R2:                     1111 1100 0011 1110 0001 1010 0011 0111

Ez a lépés kissé zavarónak tűnhet, de a Feistel séma szerint a régi jobb oldal lesz az új bal, míg a művelet eredménye az új jobb oldal lesz..

Az alábbi ábra vizuálisan ábrázolja a történést. Az IP a kezdeti permutációt jelenti, F a teljes F funkció beindulását jelzi, az ⊕ az XOR funkciót szimbolizálja, és a nyilak jelzik a mondat mindkét oldalát a bal és a jobb oldal között:

des-9

Az egyes lépések pontos képlete:

Ln = RN-1

Rn = LN-1 + f(RN-1,Kn)

Hol:

L = a blokk bal fele (L0-vel kezdve, amikor a blokk eredetileg fel lett osztva)

R = a blokk jobb oldala (R0-vel kezdve, amikor a blokk eredetileg fel volt osztva)

n = a kerek szám (0-val kezdődik, amikor a blokk kezdetben fel volt osztva)

f = az F függvény

Kn = az n kör alkulcsa

A képlet és az ábra szerint a harmadik fordulóban R1 lesz az új bal fele (L2), míg R2 az F függvényen kerül feldolgozásra. Tegyük fel, hogy az eredményeket ad nekünk:

f (R2, K3)        1001 0111 0000 1011 1101 0111 1011 1011

Ezután kiszámoljuk a harmadik fordulónk eredményét (R3) az XOR rejtjel használatával, mint korábban:

f (R2, K3):           1011 0111 1000 1011 1001 1101 1001 1110

L2:                      0100 1011 1011 0101 1000 0111 1010 1001

R3:                      1111 1100 0011 1110 0001 1010 0011 0111

Ugyanez a folyamat folytatódik a tizenötödik körig, a blokkok átváltásával és a következő alkulcs felhasználásával minden körben. A 16. és az utolsó fordulóban a blokkokat nem váltják át. Ehelyett 64 bites blokkot képeznek. Ha elmarad a blokkok cseréjétől ebben az utolsó szakaszban, akkor az algoritmust titkosításhoz és dekódoláshoz is lehet használni.

Tegyük fel, hogy az utolsó forduló eredményekkel jár:

1010 0101 0100 1011 1001 0001 0100 1000 0101 1010 1101 0001 1101 1001 1001 1101

Végső permutáció

Ez a permutáció a kezdeti permutáció fordítottja, és ismét nem ad extra biztonsági értéket. Az adatokat a következő táblázat szerint rendezi át:

des-10a

Ez a permutációs táblázat ugyanúgy működik, mint az előzőek. Mivel ez a titkosítási folyamat utolsó lépése, az eredmény a „Gyerünk a tengerpartra". Tegyük fel, hogy a titkosított blokk:

0100 1001 0011 0010 1001 0101 0111 0100 1011 1010 0111 0101 0111 1010 0101 0101

Most, ha a „Menjünk a tengerpartra” valódi rejtjelezett szöveget szeretnénk, akkor kihagyhatta volna a teljes tanulási folyamatot, és egyenesen egy online DES titkosító eszközhöz ment. Ha egy kulcs mellett írjuk be a mondatunkat (mondjuk: kj329nf982bc9wn1), akkor az eszköz titkosított szöveget ad nekünk:

U2FsdGVkX19Pienyu3w3q4zCd2IPKEPUWBzu3AeyVu2H3FeimZe6hA

Ha szeretné, konvertálhatja a kulcsot és a rejtjelet binárisra, majd összehasonlíthatja a az első blokk rejtjel szövege megfelel a vázolt teljes folyamatnak.

DES dekódolás

A DES-ben a dekódolási eljárás hihetetlenül egyszerű. Az algoritmus Feistel-felépítése lehetővé teszi annak egyszerű megfordítását. A folyamat szinte pontosan ugyanazzal az idővel fut az információ visszafejtéséhez. Az egyetlen különbség az, hogy az alkulcsokat fordított irányban alkalmazzák. Ez egy hatékony beállítás, mivel azt jelenti, hogy ugyanaz a szoftver és hardver használható mind a titkosítási, mind a dekódolási folyamatban.

Az adatok visszafejtéséhez először egy kezdeti permutáción megy keresztül, majd a blokkot megosztják, és a jobb oldal az F függvényen megy keresztül. A különbség az, hogy a dekódolás első körében a 16. alkulcsot alkalmazzák. Minden más a szokásos módon zajlik. Miután az F funkció befejeződött, a blokk bal oldalával XOR-ra kell rányomni.

A blokkokat átváltják, és az eredmény ugyanazon a folyamaton megy keresztül a második körben, azzal az egyetlen kivétellel, hogy a 15. alkulcsot alkalmazzák. Ez a folyamat a 16. fordulóig folytatódik, amikor az 1. alkulcsot használják.

Csakúgy, mint a titkosítási folyamatban, a blokkokat nem cserélik meg a végső szakaszban, majd az adatok végleges permutáción megy keresztül. Ez befejezi a dekódolási folyamatot, és az üzenet eredeti szövege lesz.

3DES

Ahogy a DES biztonsági gyengeségei nyilvánvalóbbá váltak, a 3DES-t javasolták annak kulcsának kibővítésére, anélkül, hogy teljesen új algoritmust kellene felépíteni. Egyetlen kulcs használata helyett, mint a DES-ben, a 3DES háromszor futtatja a DES algoritmust, három 56 bites billentyűvel:

  • Az egyik kulcs hozzászokott titkosítása a sima szöveg.
  • A második kulcs hozzászokott hírbe a kulcsot titkosított szöveg.
  • A harmadik kulcs hozzászokott titkosítása a szöveg, amelyet a harmadik kulcs dekódolt.

Mindegyik szakaszban a teljes DES folyamatot követjük a fentiekben leírtak szerint.

Most felmerül a kérdése: „Hogyan javíthatjuk a dekódolás második lépésben a biztonságot?”

A válasz az, hogy külön kulcsot használ. Ha az első kulcsot szintén az adatok dekódolásához használták volna a második lépésben, akkor az adatok már ott lennének, ahol elindultak.

Mivel azonban más kulcsot használ, a dekódolási folyamat valójában nem szolgál az adatok dekódolásához. Logikusan perverznek tűnhet, de a különálló kulccsal történő visszafejtés csak az adatok további növelésére szolgál.

Miután a második kulcs „dekódolta” az adatokat, a harmadik kulcsot újra titkosítani kell. Az eredmény a 3DES rejtjel szövege.

A 3DES ilyen módon van felépítve, mivel lehetővé teszi a megvalósítások kompatibilitását az egyetlen kulcsú DES, a két kulcsos DES és a három kulcsos DES (ezekkel a következő szakasz foglalkozik). Ez nem működne, ha mind a három lépésben titkosítást használnának.

3DES kulcsbeállítási lehetőségek

Technikailag a 3DES megvalósítható három különféle kulcskonfigurációval. Ennek ellenére a második és a harmadik lehetőség nem biztonságos, ezért azokat soha nem szabad végrehajtani.

  • Az első kulcsbeviteli lehetőség - Ez az opció három független kulcsot használ, és a legbiztonságosabb.
  • Második kulcsbeállítás - Ebben a konfigurációban az első és a harmadik gomb azonos.
  • A harmadik kulcsfontosságú lehetőség - Ez három azonos kulcsot használ. Ha azonos kulcsokat használunk, a dekódolási folyamat a második lépésben törli az első titkosítást, és csak az utolsó titkosítást hagyja az adatok megváltoztatására. Ez az eredményt teszi ugyanaz, mint a szokásos DES-nél.

A 3DES folyamat: Az első lehetőség megadása

Legyünk őszinték, a 3DES folyamat egésze foroghat a fejedben, főleg ha még nem ismeri a kriptográfiát. A süllyedés érdekében itt található egy rövid összefoglaló a 3DES algoritmus teljes titkosítási sémájáról:

A sima szöveg belép a 3DES algoritmusba, és az első titkosítva az egyik kulccsal a következő lépésekben:

    • Kulcsütemezés - a 16 alkulcs az egyik kulcsból származik

    • Kezdeti permutáció

    • A blokk balra és jobbra van felosztva

      • A jobb oldal az F funkción keresztül kerül továbbításra

        • Bővítő permutáció

        • XOR a kör kulcsszójával

        • Helyettesítés

        • Permutáció

      • XOR az F funkció bal oldali eredményét

      • Tegye a régi jobb oldalt az új bal oldalsá, és az eredmény az új jobb oldalt

        Ismételje meg a fenti lépéseket 14-szer

      • A jobb oldal az F funkción keresztül kerül továbbításra

        • Bővítő permutáció

        • XOR az alkulccsal a 16. fordulóra

        • Helyettesítés

        • Permutáció

      • XOR az F funkció bal oldali eredményét

      • Kombinálja össze a blokk bal és jobb oldalát

    • Végső permutáció

Vegye ki a kulcsmal titkosított szöveget, majd küldje el a „Dekódolási” folyamat kulcs két:

    • Kulcsütemezés - a 16 alkulcs a második kulcsból származik

    • Kezdeti permutáció

    • A blokk balra és jobbra van felosztva

      • A jobb oldal az F funkción keresztül kerül továbbításra

        • Bővítő permutáció

        • XOR a kör kulcsszójával (a dekódoláshoz a 16. alkulcstól kezdve)

        • Helyettesítés

        • Permutáció

      • XOR az F funkció bal oldali eredményét

      • Tegye a régi jobb oldalt az új bal oldalsá, és az eredmény az új jobb oldalt

        Ismételje meg a fenti lépéseket 14-szer

      • A jobb oldal az F funkción keresztül kerül továbbításra

        • Bővítő permutáció

        • XOR az alkulccsal az első fordulóban

        • Helyettesítés

        • Permutáció

      • XOR az F funkció bal oldali eredményét

      • Kombinálja össze a blokk bal és jobb oldalát
    • Végső permutáció

Vegye ki az adatokat, amelyeket a második kulcs „dekódolt”, majd küldje el a enkriptográfia kulcs három:

    • Kulcsütemezés - a 16 alkulcs a harmadik kulcsból származik

    • Kezdeti permutáció

    • A blokk balra és jobbra van felosztva

      • A jobb oldal az F funkción keresztül kerül továbbításra

        • Bővítő permutáció

        • XOR a kör kulcsszójával

        • Helyettesítés

        • Permutáció

      • XOR az F funkció bal oldali eredményét

      • Tegye a régi jobb oldalt az új bal oldalsá, és az eredmény az új jobb oldalt

        Ismételje meg a fenti lépéseket 14-szer

      • A jobb oldal az F funkción keresztül kerül továbbításra

        • Bővítő permutáció

        • XOR az alkulccsal a 16. fordulóra

        • Helyettesítés

        • Permutáció

      • XOR az F funkció bal oldali eredményét

      • Kombinálja össze a blokk bal és jobb oldalát

    • Végső permutáció

Az eredmény a 3DES rejtjel szövege.

A 3DES biztonsága

A 3DES biztonsága attól függ, hogy melyik kulcsbeállítási lehetőséget használja. Az elsõ kulcsbeállítás három különbözõ 56 bites kulcsot foglal magában, amely teljes kulcshosszúságot 168 bitre ad. A tényleges hosszúságot jelentősen lecsökkentik a közép-támadások, amelyek valós biztonságát 112 bitre csökkentik.

A középen találkozó támadások olyan titkosítási sémák ellen hasznosak, amelyek ugyanazt az algoritmust többször megismételik. A technika eltárolja az egyes titkosítási szakaszok azonnali értékeit, majd ezt az információt radikálisan javítja az algoritmus brutálásához szükséges idő eléréséhez.

A második és a harmadik opció lényegesen kisebb kulcsokkal rendelkezik, és érzékenyek mind az ismert sima szöveg, mind a választott síkos szöveg támadásokra, valamint a többire.

Az ismert sima szöveges támadások akkor fordulnak elő, ha az ellenfél hozzáféréssel rendelkezik az üzenet sima és szöveges szövegéhez. Ha egy algoritmus érzékeny ezekre a támadásokra, a támadó ezeket az információkat felhasználhatja a kulcs levezetésére, amely lehetővé teszi számukra, hogy feltörjék az összes többi adatot, amelyet ugyanaz a kulcs titkosított..

A választott sima szöveges támadás hasonló, de magában foglalja a támadót, hogy fedezze fel a kulcsot, ha a rejtjeleket összehasonlítja az önkényes szövegekkel..

Ezeknek a sebezhetőségeknek és az általános kis méretű kulcsnak köszönhetően a második és a harmadik kulcsbeállítási lehetőség nem biztonságos, ezért nem szabad bevezetni.

A 3DES biztonságos?

Mivel a 3DES leépül az elkövetkező néhány évben, a legjobb, ha más algoritmusokat használ. Noha az egyik kulcsfontosságú lehetőséget továbbra is biztonságosnak tekintik sok alkalmazás számára, nincs sok jó oka annak, hogy miért kellene ezt használni az AES alternatívája helyett..

Bár a 3DES fontos helyet foglal el a kriptográfia területén, mint a DES nyomon követése, dicsőségévei véget értek, és itt az ideje továbblépni. Ha rendben szeretné biztosítani a rendszereket a jövőben, akkor inkább egy korszerűbb algoritmust kell használnia.

Összefüggő: Általános titkosítási típusok magyarázatok

X terv a DoD által licenc alatt CC0

Brayan Jackson Administrator
Candidate of Science in Informatics. VPN Configuration Wizard. Has been using the VPN for 5 years. Works as a specialist in a company setting up the Internet.
follow me

About the author

Candidate of Science in Informatics. VPN Configuration Wizard. Has been using the VPN for 5 years. Works as a specialist in a company setting up the Internet.

Leave a Reply

Your email address will not be published. Required fields are marked *

9 + 1 =