Co je šifrování 3DES a jak DES funguje?
3DES je šifrování šifra, která byla odvozena z původního Data Encryption Standard (DES). Stala se prominentní na konci devadesátých let, ale od té doby upadla v nemilost kvůli vzestupu bezpečnějších algoritmů, jako jsou AES-256 a XChaCha20.
Ačkoli bude v roce 2023 zastaralá, v některých situacích je stále implementována. Protože je založen na jednom z prvních široce publikovaných a studovaných algoritmů, DES, je stále důležité dozvědět se o tom, co je 3DES a jak funguje.
Tento průvodce vás provede:
- Každý krok procesu DES podrobně
- Jak je DES upraven v 3DES, aby byl bezpečnější
- Různé bezpečnostní problémy a zda byste měli použít algoritmus
Co je 3DES?
Ačkoli je oficiálně známý jako Triple Data Encryption Algorithm (3DEA), nejčastěji se nazývá 3DES. Důvodem je to, že algoritmus 3DES používá šifru Data Encryption Standard (DES) třikrát k šifrování svých dat.
DES je algoritmus se symetrickým klíčem založený na a Síť Feistel . Jako šifra symetrických klíčů používá stejný klíč pro procesy šifrování i dešifrování. Síť Feistel dělá oba tyto procesy téměř přesně stejné, což vede k algoritmu, který je efektivnější implementovat.
DES má jak 64bitový blok, tak velikost klíče, ale v praxi klíč poskytuje pouze 56bitové zabezpečení. 3DES byl vyvinut jako bezpečnější alternativa kvůli malé délce klíče DES. V 3DES se algoritmus DES provádí třikrát se třemi klíči; je však považován za bezpečný pouze tehdy, jsou-li použity tři samostatné klíče.
Použití 3DES
Jakmile se slabiny normálního DES staly zjevnějšími, byl 3DES přijat v široké škále aplikací. Bylo to jedno z běžněji používaných šifrovacích schémat před vzestupem AES.
Některé příklady jeho implementací zahrnovaly:
- Microsoft Office
- Firefox
- EMV platební systémy
Mnoho z těchto platforem již nepoužívá 3DES, protože existují lepší alternativy.
Národní institut pro standardy a technologie (NIST) vydal a návrh návrhu říká, že všechny formy 3DES budou do roku 2023 ukončeny a od roku 2024 budou zakázány. I když je to jen návrh, návrh znamená konec jedné éry a je již dávno na čase přejít na jiné, bezpečnější algoritmy.
Historie šifrování 3DES
Vzhledem k tomu, že 3DES je odvozen od DES, je nejlepší nejprve zavést dřívější standard.
Původ šifrování DES
V sedmdesátých letech, Národní úřad pro standardy (NBS – od té doby byla přejmenována na NIST) hledala algoritmus, který by mohla použít jako standard pro šifrování citlivých, ale neutajovaných vládních informací.
NBS přijala návrhy standardu, který by odpovídal jejím požadavkům, ale žádný z kandidátů z původního kola nebyl vhodný. Vyzvala další příspěvky a tentokrát IBM poslala prostřednictvím algoritmu, který její tým vyvinul. Podání bylo odvozeno z luciferské šifry, že Horst Feistel navržený.
V roce 1975 byl algoritmus IBM publikován NBS jako navrhovaný Data Encryption Standard. Veřejnost byla vyzvána, aby se k návrhu vyjádřila, což vyvolalo určitou kritiku.
Prominentní kryptografů jako Whitfield Diffie a Martin Hellman , návrháři výměny klíčů Diffie-Hellman, tvrdili, že délka klíče je příliš krátká a že S-boxy byly změněny oproti původnímu návrhu.
V té době si mnozí v kryptografické komunitě mysleli, že NSA projekt sabotovala a oslabila algoritmus tak, že by to byla jediná agentura, která mohla prolomit DES.
Když to bylo vyšetřováno Výběrový výbor Senátu Spojených států pro zpravodajské služby, bylo zjištěno, že:
NSA přesvědčila IBM, že zmenšená velikost klíče je dostatečná; nepřímo pomáhal při vývoji struktur S-boxu; a potvrdili, že konečný algoritmus DES byl podle jejich nejlepšího vědomí bez jakýchkoli statistických nebo matematických slabin.
Stejná zpráva pokračovala tím, že „NSA žádným způsobem nemanipulovala s designem“. Toto bylo podpořeno některými bývalými zaměstnanci IBM který tvrdil, že algoritmus DES byl navržen výhradně týmem IBM.
The Vlastní odtajněná dokumentace NSA tvrdí, že agentura:
úzce spolupracoval s IBM na posílení algoritmu proti všem útokům s výjimkou hrubou silou a na posílení substitučních tabulek…
Podezření z manipulace NSA byla zmírněna v devadesátých letech jednou diferenciálem kryptoanalýza byl veřejně objeven. Když byly pomocí nové techniky testovány tolik pomlouvané S-boxy, bylo zjištěno, že jsou odolnější vůči útoku, než kdyby byly vybrány náhodně.
To naznačuje, že tým IBM věděli o diferenciální kryptoanalýze již v sedmdesátých letech, přičemž Steven Levy tvrdil, že je NSA požádala, aby tuto techniku utajili, aby ochránili národní bezpečnost.
Slavný kryptograf Bruce Schneier jednou zavtipkoval: „Akademické komunitě trvalo dvě desetiletí, než přišla na to, že ‚vychytávky‘ NSA skutečně zlepšily zabezpečení DES.“
Navzdory počátečním otázkám o bezpečnosti algoritmu a zapojení NSA byl algoritmus IBM v roce 1976 schválen jako standard pro šifrování dat. Byl publikován v roce 1977 a znovu potvrzen jako standard v letech 1983, 1988 a 1993.
Původ 3DES
Když byla v roce 1994 poprvé publikována lineární kryptoanalýza, začalo to být klást otázky o bezpečnosti algoritmu. V roce 1997 NIST oznámil, že hledá algoritmus, který by nahradil DES. Potřeba nového algoritmu byla intenzivnější, jak se technologie dále vyvíjela a potenciální útoky sílily.
Různé pokusy o prolomení ukázaly, že prolomit algoritmus bylo méně obtížné, než se dříve myslelo. V roce 1998 distribuovaný.net dokázal prolomit DES za 39 dní.
Začátkem roku 1999 nadace Electronic Frontier Foundation Hluboká trhlina zkrátil čas na něco málo přes 22 hodin. To signalizovalo konec DES, protože útok tohoto druhu byl nyní v dosahu dobře vybaveného protivníka.
Hlavním problémem byl malý klíčový prostor a nový algoritmus byl naléhavě potřeba. To byl problém, protože by trvalo několik dalších let, než by se NIST usadil na algoritmu, který se stal náhradním standardem, Advanced Encryption Standard (AES).
Zatímco se rozhodovalo o šifře pro AES, bylo navrženo 3DES jako dočasné opatření. Zahrnuje spuštění algoritmu DES třikrát se třemi samostatnými klíči. V roce 1999 byl DES znovu potvrzen, ale s 3DES jako ideálním algoritmem. Normální DES bylo povoleno pouze ve starších aplikacích.
3DES se stal rozšířeným šifrovacím algoritmem, ačkoli jeho velké využití zdrojů a bezpečnostní omezení vedlo k jeho nahrazení AES ve většině případů použití.
Pochopení algoritmu DES
Než budeme moci mluvit o podrobnostech 3DES, je důležité porozumět algoritmu DES, ze kterého je odvozen. Začněme tedy hned na začátku.
Šifrování používáme k přeměně našich dat v prostém textu na šifrovaný text, což jsou informace, ke kterým nemají útočníci přístup (pokud používáme vhodné algoritmy).
Šifrovací algoritmy jsou v podstatě složité matematické vzorce. Když dojde na šifrování něčeho jako „Pojďme na pláž“, mnoho lidí je zmateno. Koneckonců, jak můžete aplikovat matematiku na věci, jako jsou písmena a znaky?
Kódování textu
Realita je taková, že počítače se nezabývají písmeny a znaky. Místo toho pracují na systému 1 a 0 známém jako binární. Každá 1 nebo 0 je známá jako bit a kolekce osmi z nich je známá jako bajt.
Můžete jej vyhledat ručně nebo použít online převodník vidět, že binárně se „Pojďme na pláž“ změní na:
0001100 01100101 01110100 00100111 01110011 00100000 01100111 011011100000 01110100 01101100 01 01 01 01 01 01 01 01100101 00100000 01100010 01100101 01100001 01100011 01101000
Bloky
Když jsou data zašifrována, jsou rozdělena do samostatných bloků pro zpracování. DES má 64bitovou velikost bloku, což v podstatě znamená, že do každého bloku se vejde mix 64 jedniček a nul. Náš první blok (prvních 64 číslic binárního čísla zobrazeného výše) by byl:
01001100 01100101 01110100 00100111 01110011 00100000 01100111 01101111
Naše druhá by byla:
00100000 01110100 01101111 00100000 01110100 01101000 01100101 00100000
A náš poslední blok by byl:
01100010 01100101 01100001 01100011 01101000
Vycpávka
Možná jste si všimli, že náš třetí blok má pouze 40 bitů. Než bude možné jej zašifrovat, musí být sestaven na 64bitovou velikost bloku. Toto je hotovo s vycpávka , což zahrnuje přidání dalších informací do bloku za účelem jeho dokončení. To lze provést pomocí řady různých schémat a může to také sloužit ke ztížení prolomení šifrovaných informací, ale v tomto článku se tím nebudeme zabývat.
Plán klíče DES
Šifrovací algoritmy používají klíče k přidávání dat, která změní konečný výsledek procesu. Pokud DES zahrnoval pouze kroky jako permutace a S-boxy (permutace je vysvětlena níže, zatímco S-boxy jsou zahrnuty v substituce sekce), vše, co by útočník musel udělat, je odhalit podrobnosti o algoritmu a poté provést každý z kroků obráceně, aby odhalil počáteční zprávu.
Vzhledem k tomu, že většina našich algoritmů je široce známá, nepřineslo by to příliš mnoho zabezpečení. Místo toho se přidávají tajné klíče, které mění výstup způsobem, který nelze předvídat pouze na základě znalosti algoritmu (pokud je použit dostatečně komplexní algoritmus).
Začátek: jeden klíč
DES začíná jedním klíčem, který se používá k vytvoření podklíčů, které se použijí v každém kole. Jedná se o 64bitový klíč, který má stejnou velikost jako naše bloky. Řekněme, že náš klíč je:
01001010 10101101 11101000 10100101 01110001 01010100 10101001 11111010
Nyní je tento klíč v binárním tvaru, což je způsob, jakým jsou data vyjádřena, když je počítače zpracovávají. Když se lidé zabývají klíči, normálně se objeví jako směs postav, něco takového:
kj329nf982bc9wn1
První krok: permutujte klíč
V DES je prvním krokem odvození našich kulatých klíčů permutace klíče (pohybování s ním) podle následující tabulky:
Při permutaci je každý bit našeho původního klíče zamíchán na novou pozici, jak ukazuje tabulka. Protože buňka v levém horním rohu (C) říká 57 , první číslo našeho permutovaného klíče bude číslo na 57. pozici našeho starého bloku:
01001010 10101101 11101000 10100101 01110001 01010100 10101001 1 1111010
Druhá buňka říká 49 , což znamená, že druhá číslice našeho nového klíče bude číslo, které je na 49. pozici našeho starého bloku:
01001010 10101101 11101000 10100101 01110001 01010100 1 0101001 1111010
Třetí buňka říká 41 , takže hledáme číslici na 41. pozici:
01001010 10101101 11101000 10100101 01110001 0 1010100 10101001 1111010
Náš klíč zatím tvoří „ 110 “.
Zbytek klíče je uspořádán stejným způsobem, podle hodnot v tabulce. Pohybujeme se zleva doprava a jakmile se dostaneme na konec řady, skočíme dolů na další, jako obvykle. Jednou tabulka C je hotovo, skočíme do tabulka D k dokončení druhé poloviny klíče.
Neexistuje snadný způsob, jak transponovat celý náš blok podle počáteční permutační tabulky. Můžete to celé udělat ručně nebo pro to napsat skript (nebo dokonce mít štěstí a najít nějaký v hlubinách internetu), ale budeme to podvádět a vymyslíme si to:
1100010 1010010 1010101 0101010 1010000 1111001 0001011 1000111
Můžete se obávat, že si některá čísla v této příručce vymýšlíme, ale ve skutečnosti na tom nezáleží. Nikdo již nešifruje data ručně, vše se děje prostřednictvím programů. Nejdůležitějším aspektem tohoto tutoriálu je, že získáte jasnou představu o pojmech, kterými se zabýváme. Čísla samotná vám jen pomohou představit si, co se děje.
Někteří čtenáři si možná všimli, že tabulka (a nyní náš klíč) má pouze 56 bitů místo 64. Je to proto, že každý osmý bit je přeskočen. Jedná se o artefakt ze starších dob technologie, kdy bylo důležité mít bity kontroly parity, které ověřovaly, zda byl klíč správně přijat. Tyto bity kontroly parity znamenají, že v praxi má DES zabezpečení pouze 56bitového klíče.
Tabulky C a D nám dávají klíč, který má dvě 28bitové poloviny. Někdy jsou poloviny označovány jako C a D, ale v celém tomto článku je budeme označovat jako L a R pro levou a pravou stranu. Naše levá strana je:
1100010 1010010 1010101 0101010
Zatímco naše právo je:
1010000 1111001 0001011 1000111
Druhý krok: posunutí klíče doleva
Dalším krokem je posunutí klíče o jedno nebo dvě místa doleva, v závislosti na kole. O přesném počtu míst se rozhoduje podle následující předem určené tabulky:
1 | 1 |
dva | 1 |
3 | dva |
4 | dva |
5 | dva |
6 | dva |
7 | dva |
8 | dva |
9 | 1 |
10 | dva |
jedenáct | dva |
12 | dva |
13 | dva |
14 | dva |
patnáct | dva |
16 | 1 |
Vezměme si tedy naši levou a pravou polovinu:
L 1010010 1010010 1010101 0 101010
R 1010000 1111001 0001011 1 000111
A posuňte oba o jednu pozici doleva, protože první kolo má posun o 1 podle tabulky (číslo na levém konci se přesune na pravý konec).
Podklíč prvního kola:
L 0100101 0100101 0101010 101010 1
R 0100001 1110010 0010111 000111 1
Ve druhém kole také tabulka říká 1 , takže tento výsledek bude opět změněn posunutím každého čísla o jednu pozici doleva.
Druhé kolo Podklíč:
L 1001010 1001010 101010 01010 1 10
R 1000011 1100100 010111 0 00111 10
Ve třetím kole se čísla posunou o dvě místa doleva, protože tabulka nyní říká dva .
Podklíč třetího kola:
L 0101010 0101010 1010 101 010 1010
R 0001111 0010001 0111 000 111 1010
V následujících kolech se čísla posouvají doleva podle vzdáleností uvedených v tabulce, přičemž každý posun se vztahuje na výsledek předchozího kola. To nám nakonec dává šestnáct různých podklíčů, jeden pro každé kolo procesu DES.
Třetí krok: další permutace
Dalším krokem je další permutace podle tabulky PC2 uvedené níže:
Nyní byste měli být obeznámeni s permutacemi, takže se nebudeme tímto procesem zabývat do hloubky. Pokud chcete vidět, jak to funguje podrobněji, podívejte se na vysvětlení na začátku této části. Přestože jsou pozice přemístění různé, postup je stejný.
Každý ze 16 klíčů odvozených v procesu řazení je nyní zamíchán podle tabulky, přičemž číslo ze 14. pozice se přesune na první místo, 17. na druhé, 11. na třetí atd.
Když se podíváte pozorně na tabulku, všimnete si, že tam je pouze 48 bitů, spíše než 56 bitů, které jsme měli dříve. Tento proces je známý jako kompresní permutace.
Můžete také vidět, že horní polovina tabulky obsahuje čísla mezi 1 a 28, zatímco spodní polovina obsahuje čísla od 29 do 56. To udržuje levou a pravou polovinu našich podklíčů oddělené a níže je to označeno větší mezerou uprostřed kláves.
Opět budeme podvádět a vymýšlet čísla. Řekněme, že celý tento proces nám dal následující podklíče:
První kolo: 010101 010101 101010 110100 101001 100101 101010 101010
Druhé kolo: 011010 110101 101110 110010 010100 110010 111101 101101
Třetí kolo: 010100 100110 110110 101010 100110 011000 101011 011001
Čtvrté kolo: 011001 110101 011001 110101 000011 001011 010101 010101
Páté kolo: 110101 001101 010101 010101 010011 001011 010111 100101
Šesté kolo: 010111 110101 011001 111001 101001 100101 101010 101010
Sedmé kolo: 110101 111010 101110 101010 100110 010110 111011 001110
Osmé kolo: 011001 110101 010101 001001 010011 001011 010100 101010
Deváté kolo: 111011 011010 011110 100010 100010 010110 110011 110010
10. kolo: 011010 010101 101110 101001 010010 010110 111000 101010
11. kolo: 110101 001101 101110 101010 100101 100101 101010 001010
12. kolo: 101001 100100 101001 101010 100110 011000 101011 011001
13. kolo: 010010 010010 010101 010101 010110 110001 100101 101010
14. kolo: 101001 100110 010101 011101 010001 001010 110010 111110
15. kolo: 011001 011010 011001 110101 001001 011001 100101 101101
16. kolo: 010010 100110 010101 010101 010001 101000 110010 111010
Tento proces posouvání vede k tomu, že každý bit z počátečního klíče je použit v přibližně 14 ze 16 podklíčů, ačkoli některé bity se používají o něco více než jiné.
Počáteční permutace
Jakmile jsou data rozdělena do bloků a v případě potřeby doplněna, je čas zahájit proces šifrování DES.
K podklíčům, které jsme právě vytvořili, se vrátíme později.
První krok je známý jako počáteční permutace, kdy jsou data přeskupena podle následující tabulky:
Tento počáteční permutační proces nečiní algoritmus bezpečnějším. Je to proto, že nezahrnuje zadání žádného klíče a lze jej snadno obrátit. Algoritmus byl původně navržen tímto způsobem, protože usnadnil implementaci v určitých kontextech.
Protože jsme se permutacemi několikrát zabývali, přeskočíme zde jakékoli hlavní vysvětlení. Vraťte se k rozvrh klíčů DES pokud potřebujete více informací o tom, jak fungují.
Vezměme si první blok ze zprávy „Pojďme na pláž“, kterou jsme odvodili v Blok sekce pochopení algoritmu DES :
01001100 01100101 01110100 00100111 01110011 00100000 01100111 01101111
Od první buňky říká 58 , vybrali bychom číslo z 58. pozice:
01001100 01100101 01110100 00100111 01110011 00100000 01100111 0 1 101111
Pak bychom vzali číslo z 50. pozice:
01001100 01100101 01110100 00100111 01110011 00100000 0 1 100111 01101111
A číslo ze 42. pozice:
01001100 01100101 01110100 00100111 01110011 0 0 100 000 01100111 01101111
To nám dává „ 110 ' zatím. Doplníme zbytek čísla:
11010111 01001010 10101000 10011101 01001011 10110101 10000111 10101001
Po dokončení počáteční permutace se data přesunou do dalšího kroku.
Dělení bloků
Jakmile data projdou svou počáteční permutací, rozdělí se na dvě poloviny. Vezmeme náš blok, který právě prošel svou počáteční permutací:
11010111 01001010 10101000 10011101 01001011 10110101 10000111 10101001
A rozdělíme ho na dva bloky, levý blok (složený z prvních 32 číslic), známý jako L 0 :
L 0 11010111 01001010 10101000 10011101
A pravý blok (složený z druhých 32 číslic), známý jako R 0 :
R 0 01001011 10110101 10000111 10101001
Funkce F
Nyní, když je blok rozdělen, je čas, aby se uskutečnila funkce F. V prvním kole bude aplikován pouze na pravou polovinu bloku, zatímco levá polovina je ponechána stranou na později. Pravá strana podstoupí v rámci funkce F následující čtyři kroky:
- Expanzní permutace (E v diagramu)
- Míchání klíčů (⊕ ve schématu)
- Náhrada (každý S1, S2 atd. v diagramu)
- Permutace (P v diagramu)
Expanzní permutace
Expanzní permutace dosahuje tří věcí:
- Nejdůležitější je, že umožňuje jednotlivým bitům vstupních dat ovlivnit výstup dvou dalších bitů, což způsobuje lavinový efekt
- Také dělá pravou polovinu 48bitovou, takže má stejnou velikost jako podklíč pro další krok
- Dalším účinkem expanzní permutace je to, že výstup je delší než vstup. To umožňuje jeho komprimaci v operaci substituce
Bity jsou přeskupeny podle následující tabulky. Některé jednotlivé bity jsou v tabulce dvakrát, čímž se blok rozšířil z 32 na 48 bitů:
Protože první buňka říká 32, vezmeme náš pravý blok a vybereme číslo z 32. pozice, stejně jako jsme to udělali v jiných příkladech permutace uvedených výše:
R 0 01001011 10110101 10000111 1010100 1
Potom vezmeme čísla z první pozice, druhé pozice a tak dále, až se dostaneme do pravého dolního rohu bloku. Protože existuje a 1 v této buňce bude poslední číslicí také číslo, které se objeví na první pozici našeho bloku.
Řekněme, že expanzní permutace nám dává nový 48bitový blok:
101110 100110 100100 000000 001100 001110 101101 011110
Klíčové míchání
Jakmile je blok rozšířen na 48 bitů, je čas použít podklíč prvního kola, který jsme odvodili v Rozpis klíčů DES sekce výše. Blok je modifikován podklíčem pomocí šifry XOR.
Šifra XOR je sčítací šifra, která se řídí jednoduchým procesem, zejména ve srovnání s jinými prvky, o kterých jsme již hovořili.
V šifře XOR:
0 + 0 = 0
1 + 0 = 1
1 + 1 = 0
Řekněme tedy, že musíte provést XOR následujících dvou čísel v binárním kódu:
1101
0101
Každá číslice se přičte k číslici pod ní. Podle tří výše uvedených pravidel to dává výsledek:
1000
K dokončení kroku míchání klíčů vezmeme pravou stranu našeho bloku, který jsme právě rozšířili na 48 bitů, a klíč prvního kola. Poté provedeme sčítání XOR:
Blok: 101110 100110 100100 000000 001100 001110 101101 011110
Kulatý klíč: 010101 010101 101010 110100 101001 100101 101010 101010
Výsledek XOR: 111011 110011 001110 110100 100101 101011 000111 110100
Výsledek operace XOR je pak předán do dalšího kola.
Substituce
Náhrada dodává datům zmatek. Obvykle se to provádí pomocí vyhledávacích tabulek, které jsou také známé jako substituční boxy nebo S-boxy. DES používá osm samostatných tabulek nebo S-boxů, jinou pro každých 6 bitů dat. Následující tabulka ukazuje osm S-boxů DES:
Osm samostatných S-boxů se používá k převodu každého 6bitového vstupu na 4bitový výstup. Prvním krokem v procesu je vzít číslice na začátku a konci 6bitového segmentu a poté převést tuto binární hodnotu na desítkovou.
Vezměme si data, která jsme právě dokončili XORing v předchozím kroku:
111011 110011 001110 110100 100101 101011 000111 110100
Podíváme se na první 6bitový segment, abychom vám ukázali, jak funguje proces nahrazování:
1 1101 1
Protože první i poslední číslo jsou obě 1 , to nám dává hodnotu jedenáct . Poté převedeme jedenáct z binární na desítkovou, což nám dává 3 . Jsou to pouze ekvivalentní hodnoty, zapsané různými způsoby. Představte si to jako převod počítačového jazyka na lidský. Převod si můžete ověřit sami pomocí online kalkulačka jestli chceš.
Pak vezmeme čtyři prostřední číslice prvního 6bitového segmentu:
1 1101 1
A převést je z binárního na desítkové. 1101 překládá se na číslo 13.
Nyní vezmeme tato dvě čísla a vyhledáme je v S 1 stůl:
Naše první číslo, 3 , říká nám, abychom se podívali do třetí řady, zatímco naše druhé číslo, 13 říká nám, abychom se podívali do 13. sloupce. Hodnota ve třetím řádku 13. sloupce je 0 .
Nyní, když jsme vyhledali naše číslo v tabulce, ano konvertovat zpět do čtyřmístné binární soustavy. Nula se normálně zapisuje jako 0 v binárním kódu, ale 0000 je stejný a toto je formát, který je pro naše účely nejvhodnější.
Po tomto procesu S-box převede naši první 6bitovou část dat ( 111011 ) na jinou 4bitovou hodnotu ( 0000 ). Zdá se to spletité, ale tato technika pomáhá dále zatemňovat vztah mezi šifrovým textem a otevřeným textem, se kterým je spojen.
Další 6bitová část dat pak prochází stejným procesem; ale místo toho používá výše uvedený box S2. Třetí sekce používá tabulku S3 a tak dále, dokud poslední sekce neprojde substitucí přes tabulku S8.
Opět budeme podvádět pro zbytek hodnot. Řekněme, že substituční boxy nám dávají výsledek:
0000 1010 1100 1001 0100 1001 0111 0001
Jakmile každá část dat projde svým S-boxem, přejde k dalšímu kroku.
Permutace
Poslední fází funkce F je další permutace pomocí následující tabulky:
Nyní byste měli slušně rozumět tomu, jak permutace posouvají číslice ze starého bloku na jinou pozici v novém bloku, takže to nebudeme znovu rozebírat.
Řekněme, že tato permutace bere náš předchozí výsledek:
0000 1010 1100 1001 0100 1001 0111 0001
A dává nám výstup:
0101 0110 1001 0101 0010 0100 0101 0010
Nyní, když je permutace dokončena, dokončili jsme čtyři kroky funkce F v tomto kole. V matematickém zápisu je tato hodnota známá jako f(R 0, K 1 ) . To znamená, že výsledkem je funkce (F) počáteční pravé strany bloku (R0) a podklíče prvního kola (K1).
XOR s levým blokem
Pamatujete si, jak jsme rozdělili blok na polovinu těsně předtím, než jsme začali s kroky funkce F? Odložili jsme levou stranu bloku (L0), zatímco pravá strana prošla každým z těchto procesů. No, teď je čas, aby se L0 vrátila do akce.
Vezmeme pravou stranu, kterou jsme právě zpracovali f(R 0, K 1 ) a přidejte jej na starou levou stranu ( L 0 ) pomocí šifry XOR. To nám dává R 1 , výsledek našeho prvního kola:
f(R 0, K 1 ): 0101 0110 1001 0101 0010 0100 0101 0010
L 0 : 1101 0111 0100 1010 1010 1000 1001 1101
Výsledek XOR (R 1 ): 1000 0001 1101 1111 1000 1100 1100 1111
Odkazovat na míchání klíčů výše, pokud potřebujete připomenout, jak funguje šifra XOR.
ještě 15 kol…
Pokud jste se dostali tak daleko, pak se DES pravděpodobně zdá jako náročný proces. Ale ještě ani zdaleka není hotovo. Data procházejí čtyřmi kroky funkce F, po které následuje XOR, dalších 15krát, celkem 16 kol.
Ve druhém kole vezmeme původní, nedotčenou verzi pravé strany bloku (R0) a uděláme z ní novou levou stranu (L1). Mezitím vezmeme výsledek našeho prvního kola a pošleme ho přes funkci F.
Vše se děje stejně jako minule, ale tentokrát je místo něj použit podklíč pro druhé kolo. Řekněme, že tento proces nám dává výsledek:
f(R 1, K dva ): 1011 0111 1000 1011 1001 1101 1001 1110
Výsledek jsme pak XOR XOR s L1, což je ve skutečnosti R0 (to jsme odvodili v Štípání bloků sekce). To nám dává výsledek druhého kola, R2:
f(R 1, K dva ): 1011 0111 1000 1011 1001 1101 1001 1110
L 1 : 0100 1011 1011 0101 1000 0111 1010 1001
R dva : 1111 1100 0011 1110 0001 1010 0011 0111
Tento krok se může zdát trochu matoucí, ale podle Feistelova schématu se stará pravá strana stane novou levou, zatímco výsledek operace se stane novou pravou stranou.
Následující diagram vám poskytuje vizuální znázornění toho, co se děje. IP představuje počáteční permutaci, F je náhradník pro celou funkci F, ⊕ symbolizuje funkci XOR a šipky označují každou stranu bloku pohybující se mezi levou a pravou:
Přesný vzorec pro každý krok je:
L n = R n-1
R n = L n-1 + F ( R n-1 , K n )
Kde:
L = levá polovina bloku (počínaje L0, když byl blok původně rozdělen)
R = pravá polovina bloku (počínaje R0, když byl blok původně rozdělen)
n = číslo kola (začínající 0, když byl blok původně rozdělen)
f = F funkce
Kn = Podklíč pro kolo n
Podle vzorce a diagramu se ve třetím kole R1 stává novou levou polovinou (L2), zatímco R2 je zpracována pomocí funkce F. Řekněme, že nám to dává výsledek:
f(R dva, K 3 ) 1001 0111 0000 1011 1101 0111 1011 1011
Poté vypočítáme výsledek našeho třetího kola (R3) pomocí šifry XOR, stejně jako předtím:
f(R dva, K 3 ): 1011 0111 1000 1011 1001 1101 1001 1110
L dva : 0100 1011 1011 0101 1000 0111 1010 1001
R 3 : 1111 1100 0011 1110 0001 1010 0011 0111
Stejný proces pokračuje až do patnáctého kola, přičemž se bloky přepínají a v každém kole se používá další podklíč. V 16. a závěrečném kole se bloky nepřehazují. Místo toho jsou spojeny do 64bitového bloku.
Upuštění od záměny bloků v této poslední fázi umožňuje, aby byl algoritmus použit pro šifrování i dešifrování.
Řekněme, že poslední kolo nám poskytne výsledek:
1010 0101 0100 1011 1001 0001 0100 1000 0101 1010 1101 0001 1101 1001 1001 1101
Konečná permutace
Tato permutace je inverzní k počáteční permutaci a opět nepřidává žádnou extra bezpečnostní hodnotu. Uspořádá data podle následující tabulky:
Tato permutační tabulka funguje stejně jako předchozí. Protože se jedná o poslední krok procesu šifrování, výsledkem bude šifrovaný text pro první blok „ Pojďme na pláž'. Řekněme, že šifrovaný blok je:
0100 1001 0011 0010 1001 0101 0111 0100 1011 1010 0111 0101 0111 1010 0101 0101
Nyní, pokud jste chtěli skutečný šifrovaný text pro „Pojďme na pláž“, mohli jste celý proces učení přeskočit a přejít přímo k online šifrovacímu nástroji DES. Pokud zadáme naši větu vedle klíče (řekněme kj329nf982bc9wn1), nástroj nám poskytne zašifrovaný text:
U2FsdGVkX19Pienyu3w3q4zCd2IPKEPUWBzu3AeyVu2H3FeimZe6hA
Pokud chcete, můžete pak převést klíč a šifrový text na binární a poté porovnat, jak je šifrovaný text prvního bloku v souladu s celým procesem, který byl nastíněn.
DES dešifrování
V DES je proces dešifrování neuvěřitelně přímočarý. Feistelova struktura algoritmu umožňuje jeho snadné obrácení.
Proces je spuštěn téměř přesně stejně pro dešifrování informací. Jediný rozdíl je v tom, že podklíče jsou aplikovány obráceně. Jedná se o efektivní nastavení, protože to znamená, že v procesech šifrování i dešifrování lze použít stejný software a hardware.
Pro dešifrování dat nejprve projde počáteční permutací, poté se blok rozdělí a pravá polovina projde funkcí F. Rozdíl je v tom, že v prvním kole dešifrování se použije 16. podklíč. Vše ostatní probíhá jako obvykle. Jakmile je funkce F dokončena, provede se XOR s levou stranou bloku.
Bloky se přehodí a výsledek projde stejným procesem pro druhé kolo s jedinou výjimkou, že se použije 15. podklíč. Tento proces pokračuje až do 16. kola, kdy je použit 1. podklíč.
Stejně jako v procesu šifrování se bloky v konečné fázi nevymění a data pak projdou konečnou permutací. Tím je proces dešifrování ukončen a výsledkem je původní prostý text zprávy.
3DES
Jak se bezpečnostní slabiny DES staly zjevnějšími, byl 3DES navržen jako způsob rozšíření velikosti klíče bez nutnosti vytvářet zcela nový algoritmus. Namísto použití jediného klíče jako v DES spustí 3DES algoritmus DES třikrát se třemi 56bitovými klíči:
- Klíč jedna je zvyklý zašifrovat prostý text.
- Klíč dva je zvyklý dešifrovat text, který byl zašifrován klíčem jedna.
- Klíč tři je zvyklý zašifrovat text, který byl dešifrován klíčem dva.
V každé fázi probíhá celý proces DES, jak je uvedeno výše.
Nyní se možná ptáte: „Jak může použití dešifrování ve druhém kroku zvýšit bezpečnost?
Odpověď je, že používá samostatný klíč. Pokud by byl první klíč použit také k dešifrování dat ve druhém kroku, data by byla přesně tam, kde začala.
Protože však používá jiný klíč, proces dešifrování ve skutečnosti neslouží k dešifrování dat. Může se to zdát logicky zvrácené, ale dešifrování pomocí samostatného klíče slouží pouze k ještě většímu zamíchání dat.
Jakmile druhý klíč „dešifruje“ data, použije se třetí klíč k jejich opětovnému zašifrování. Výsledkem je šifrový text 3DES.
3DES je strukturován tímto způsobem, protože umožňuje, aby implementace byly kompatibilní s jednoklíčovým DES, dvouklíčovým DES a tříklíčovým DES (ty jsou popsány v následující části). To by nefungovalo, pokud by bylo ve všech třech krocích použito šifrování.
Možnosti 3DES klíčování
Technicky lze 3DES implementovat se třemi různými konfiguracemi klíčů. Navzdory tomu je druhá a třetí možnost nejistá a neměla by být nikdy implementována.
- První možnost klíčování – Tato možnost používá tři nezávislé klíče a je nejbezpečnější
- Druhá možnost klíčování – V této konfiguraci jsou první a třetí klávesy stejné
- Možnost klíčování tři – Toto používá tři stejné klíče. Jsou-li použity identické klíče, proces dešifrování ve druhé fázi zruší první šifrování a ponechá pouze konečné šifrování ke změně dat. Díky tomu je výsledek stejné jako běžné DES
Proces 3DES: První možnost klíčování
Buďme upřímní, z celého procesu 3DES se vám může zatočit hlava, zvláště pokud jste v kryptografii nováčkem. Abychom tomu pomohli, zde je stručný souhrn celého šifrovacího schématu algoritmu 3DES:
Otevřený text vstoupí do algoritmu 3DES a je první zašifrované klíčem jedna v následujících krocích:
Plán klíče – 16 podklíčů je odvozeno od klíče jedna
Počáteční permutace
Blok je rozdělen na levou a pravou polovinu
Pravá polovina je odeslána pomocí funkce F
Expanzní permutace
XOR s podklíčem pro kolo
Substituce
Permutace
XOR výsledek funkce F s levou stranou
Udělejte ze staré pravé strany novou levou stranu a výsledkem je nová pravá strana
Opakujte výše uvedené kroky 14krát
Pravá polovina je odeslána pomocí funkce F
Expanzní permutace
XOR s podklíčem pro 16čtkolo
Substituce
Permutace
XOR výsledek funkce F s levou stranou
Spojte levou a pravou stranu bloku dohromady
Konečná permutace
Vezměte text, který byl zašifrován klíčem jedna, a poté jej odešlete přes proces „dešifrování“. klíč dva :
Plán klíče – 16 podklíčů je odvozeno od klíče dva
Počáteční permutace
Blok je rozdělen na levou a pravou polovinu
Pravá polovina je odeslána pomocí funkce F
Expanzní permutace
XOR s podklíčem pro kolo (počínaje 16čtpodklíč pro dešifrování)
Substituce
Permutace
XOR výsledek funkce F s levou stranou
Udělejte ze staré pravé strany novou levou stranu a výsledkem je nová pravá strana
Opakujte výše uvedené kroky 14krát
Pravá polovina je odeslána pomocí funkce F
Expanzní permutace
XOR s podklíčem pro první kolo
Substituce
Permutace
XOR výsledek funkce F s levou stranou
- Zkombinujte levou a pravou stranu bloku dohromady
- Konečná permutace
Vezměte data, která byla „dešifrována“ klíčem dva, a poté je odešlete přes v šifrovací proces s klíč tři :
Plán klíče – 16 podklíčů je odvozeno od klíče tři
Počáteční permutace
Blok je rozdělen na levou a pravou polovinu
Pravá polovina je odeslána pomocí funkce F
Expanzní permutace
XOR s podklíčem pro kolo
Substituce
Permutace
XOR výsledek funkce F s levou stranou
Udělejte ze staré pravé strany novou levou stranu a výsledkem je nová pravá strana
Opakujte výše uvedené kroky 14krát
Pravá polovina je odeslána pomocí funkce F
Expanzní permutace
XOR s podklíčem pro 16čtkolo
Substituce
Permutace
XOR výsledek funkce F s levou stranou
Spojte levou a pravou stranu bloku dohromady
Konečná permutace
Výsledkem je šifrový text 3DES.
Bezpečnost 3DES
Zabezpečení 3DES závisí na tom, která možnost klíčování se používá. První možnost klíčování zahrnuje tři různé 56bitové klíče, což dává celkovou délku klíče 168 bitů. Efektivní délka je výrazně snížena útoky typu meet-in-the-middle, které snižují jeho bezpečnost v reálném světě na 112 bitů.
Útoky typu Meet-in-the-middle jsou užitečné proti šifrovacím schématům, která několikrát opakují stejný algoritmus. Technika ukládá okamžité hodnoty z každé fáze šifrování a poté tyto informace používá k radikálnímu zkrácení doby, kterou by zabralo hrubé vynucení algoritmu.
Možnosti dvě a tři mají výrazně menší klíče a jsou zranitelné jak útoky se známým prostým textem, tak vybraným prostým textem, stejně jako dalšími útoky.
Útoky se známým prostým textem jsou možné, když má protivník přístup k otevřenému i šifrovanému textu zprávy. Pokud je algoritmus náchylný k těmto útokům, může útočník použít tyto informace k odvození klíče, což mu umožní prolomit všechna ostatní data, která byla zašifrována stejným klíčem.
Útok s vybraným holým textem je podobný, ale spočívá v tom, že útočník odhaluje klíč porovnáváním šifrovaných textů s libovolnými holými texty.
Kvůli těmto chybám zabezpečení a celkově malým velikostem klíčů jsou možnosti klíčování dvě a tři nejisté a neměly by být implementovány.
Je 3DES bezpečný?
Protože 3DES bude v příštích několika letech zastaralý, je nejlepší použít jiné algoritmy. I když je možnost klíčování jedna stále považována za bezpečnou pro mnoho aplikací, není mnoho dobrých důvodů, proč by měla být použita namísto alternativy, jako je AES.
Ačkoli 3DES zaujímá důležité místo v kryptografii jako pokračování DES, léta jeho slávy jsou pryč a je čas jít dál. Pokud chcete zabezpečit své systémy i do budoucna, měli byste místo toho používat aktuálnější algoritmus.
Alternativní formy šifrovacího algoritmu
Jak již bylo zmíněno, je třeba zvážit další, silnější typy šifrovacích algoritmů. Pojďme se podívat na tři z nejbezpečnějších.
Šifrování AES-256
Tento typ šifrovacího algoritmu je prakticky neprolomitelný. Žádné množství výpočetního výkonu nemůže efektivně zajistit a útok hrubou silou to by prolomilo heslo chráněné tímto druhem šifrování. Americká vláda používá k ochraně utajovaných dokumentů šifrování AES-256, takže pokud správce hesel toto používá také, můžete si být jisti, že vaše hesla budou v bezpečí.
XChaCha20 šifrování
Některé z největších technologických korporací, jako je Google a Cloudflare, používají tuto alternativu k AES-256. Tato služba je postavena na architektuře s nulovými znalostmi, což znamená, že nikdo ze společnosti zabývající se správou hesel nemůže vidět vaše hesla (včetně hlavního hesla), informace o kreditní kartě nebo zašifrované poznámky. Takže i kdyby hacker narušil systémy společnosti, vaše informace budou v bezpečí. Mezi výhody XChaCha20 oproti AES-256 patří vyšší rychlosti, menší náchylnost k lidským a technickým chybám a žádné požadavky na hardwarovou podporu.
Příbuzný: Vysvětlení běžných typů šifrování