DES, standard šifrování dat | |
---|---|
Tvůrce | IBM |
Vytvořeno | 1977 _ |
zveřejněno | 1977 _ |
Velikost klíče | 56 bitů + 8 test |
Velikost bloku | 64 bit |
Počet kol | 16 |
Typ | Síť Feistel |
Mediální soubory na Wikimedia Commons |
DES ( anglicky Data Encryption Standard ) je algoritmus pro symetrické šifrování vyvinutý společností IBM a schválený vládou USA v roce 1977 jako oficiální standard ( FIPS 46-3). Velikost bloku pro DES je 64 bitů . Algoritmus je založen na Feistelově síti s 16 cykly ( koly ) a klíčem 56 bitů . Algoritmus využívá kombinaci nelineárních (S-boxy) a lineárních (E, IP, IP-1 permutace) transformací. Pro DES se doporučuje několik režimů:
Přímým vývojem DES je v současnosti algoritmus Triple DES (3DES). V 3DES se šifrování/dešifrování provádí trojím spuštěním algoritmu DES.
V roce 1972 byla provedena studie o potřebě počítačové bezpečnosti vládou USA . Americký "National Bureau of Standards" (NBS) (nyní známý jako NIST - "National Institute of Standards and Technology") identifikoval potřebu celovládního standardu pro šifrování nekritických informací.
NBS konzultovala s NSA (Národní bezpečnostní úřad USA) a 15. května 1973 vyhlásila první soutěž na vytvoření šifry. Byly formulovány přísné požadavky na novou šifru. IBM vstoupilo do soutěže se šifrou, kterou vyvinula, nazvanou „Lucifer “ . Šifry žádného ze soutěžících (včetně „Lucifera“) nezajistily splnění všech požadavků. V letech 1973-1974 dokončila IBM svůj „Lucifer“: použila dříve vytvořený algoritmus Horsta Feistela . 27. srpna 1974 začala druhá soutěž. Tentokrát byla šifra „Lucifer“ považována za přijatelnou.
17. března 1975 byl navrhovaný algoritmus DES zveřejněn ve federálním rejstříku. V roce 1976 se konala dvě veřejná sympozia k diskusi o DES. Na sympoziích byly změny provedené v algoritmu NSA silně kritizovány. NSA zmenšil původní délku klíče a S-boxy (náhradní boxy), jejichž konstrukční kritéria nebyla zveřejněna. NSA byla podezřelá ze záměrného oslabení algoritmu, aby NSA mohla snadno prohlížet šifrované zprávy. Americký Senát přezkoumal akce NSA a vydal prohlášení v roce 1978 , které uvedlo následující:
V roce 1990 provedli Eli Biham a Adi Shamir nezávislý výzkum diferenciální kryptoanalýzy , hlavní metody pro prolomení blokových symetrických šifrovacích algoritmů . Tyto studie odstranily některá podezření o skryté slabosti S-permutací. Ukázalo se, že S-boxy algoritmu DES jsou mnohem odolnější vůči útokům, než kdyby byly náhodně vybrány. To znamená, že tato analytická technika byla NSA známa již v 70. letech 20. století.
Algoritmus DES byl „hacknut“ za 39 dní pomocí obrovské sítě desítek tisíc počítačů [1] .
Veřejná organizace " EFF " , zabývající se problémy informační bezpečnosti a soukromí na internetu , iniciovala studii " DES Challenge II " k identifikaci problémů s DES . V rámci studie postavili zaměstnanci RSA Laboratory superpočítač za 250 000 USD. V roce 1998 superpočítač dešifroval data kódovaná DES pomocí 56bitového klíče za méně než tři dny. Superpočítač byl pojmenován „EFF DES Cracker“. Speciálně pro tuto příležitost vědci uspořádali tiskovou konferenci a hovořili s obavami, že útočníci si pravděpodobně nenechají ujít příležitost využít takové zranitelnosti.
Někteří vládní úředníci a experti tvrdili, že prolomení kódu DES vyžaduje superpočítač v hodnotě mnoha milionů dolarů. "Je čas, aby vláda uznala nejistotu DES a podpořila vytvoření silnějšího šifrovacího standardu," řekl prezident EFF Barry Steinhardt. Vývozní omezení uložená vládou USA se vztahují na šifrovací technologie s klíči delšími než 40 bitů. Jak však ukázaly výsledky experimentu RSA Laboratory, existuje možnost prolomení ještě výkonnějšího kódu. Problém byl umocněn tím, že náklady na stavbu takového superpočítače neustále klesaly. „Za čtyři nebo pět let budou tyto počítače na každé škole,“ řekl John Gilmour, vedoucí projektu DES Challenge a jeden ze zakladatelů EFF.
DES je bloková šifra. Abychom pochopili, jak DES funguje, je nutné vzít v úvahu princip fungování blokové šifry , sítě Feistel .
Vstupní data pro blokovou šifru jsou:
Výstupem (po aplikaci šifrovacích transformací) je zašifrovaný blok o velikosti n bitů a drobné rozdíly ve vstupních datech zpravidla vedou k výrazné změně výsledku.
Blokové šifry jsou implementovány opakovaným aplikováním určitých základních transformací na bloky zdrojového textu .
Základní transformace:
Jelikož se transformace provádějí blok po bloku, je nutné rozdělit zdrojová data do bloků požadované velikosti. V tomto případě nezáleží na formátu zdrojových dat (ať už se jedná o textové dokumenty, obrázky nebo jiné soubory). Data je nutné interpretovat v binární podobě (jako posloupnost nul a jedniček) a teprve poté je nutné je rozdělit do bloků. Vše výše uvedené lze implementovat jak softwarově, tak i hardwarově.
Jedná se o transformaci přes vektory ( bloky ) představující levou a pravou polovinu posuvného registru. Algoritmus DES využívá při šifrování dopřednou transformaci sítí Feistel (viz obr. 1) a inverzní transformaci sítí Feistel při dešifrování (viz obr. 2).
Šifrovací schéma algoritmu DES je znázorněno na obr.3.
Zdrojový text je blok 64 bitů.
Proces šifrování se skládá z počáteční permutace, 16 šifrovacích cyklů a konečné permutace.
Původní text (blok 64 bitů) je převeden pomocí počáteční permutace, která je určena tabulkou 1:
58 | padesáti | 42 | 34 | 26 | osmnáct | deset | 2 | 60 | 52 | 44 | 36 | 28 | dvacet | 12 | čtyři |
62 | 54 | 46 | 38 | třicet | 22 | čtrnáct | 6 | 64 | 56 | 48 | 40 | 32 | 24 | 16 | osm |
57 | 49 | 41 | 33 | 25 | 17 | 9 | jeden | 59 | 51 | 43 | 35 | 27 | 19 | jedenáct | 3 |
61 | 53 | 45 | 37 | 29 | 21 | 13 | 5 | 63 | 55 | 47 | 39 | 31 | 23 | patnáct | 7 |
Podle tabulky jsou první 3 bity výsledného bloku po počáteční permutaci bity 58, 50, 42 vstupního bloku a jeho poslední 3 bity jsou bity 23, 15, 7 vstupního bloku.
64bitový blok IP(T) získaný po počáteční permutaci se účastní 16 cyklů Feistelovy transformace.
- 16 cyklů Feistelovy transformace :
Rozdělte IP(T) na dvě části , kde je 32 vysokých bitů a 32 nízkých bitů bloku IP(T)=
Nechť výsledkem je (i-1) iterace, pak výsledek i-té iterace je určen:
Levá polovina se rovná pravé polovině předchozího vektoru . A pravá polovina je bitové sčítání modulo 2.
V 16 cyklech Feistelovy transformace hraje funkce f roli šifrování . Podívejme se podrobně na funkci f.
Argumenty funkce jsou 32bitový vektor a 48bitový klíč , který je výsledkem transformace původního 56bitového šifrovacího klíče . Pro výpočet funkce postupně použijte
Funkce rozšiřuje 32bitový vektor na 48bitový vektor duplikací některých bitů z ; bitové pořadí vektoru je uvedeno v tabulce 2.
32 | jeden | 2 | 3 | čtyři | 5 |
čtyři | 5 | 6 | 7 | osm | 9 |
osm | 9 | deset | jedenáct | 12 | 13 |
12 | 13 | čtrnáct | patnáct | 16 | 17 |
16 | 17 | osmnáct | 19 | dvacet | 21 |
dvacet | 21 | 22 | 23 | 24 | 25 |
24 | 25 | 26 | 27 | 28 | 29 |
28 | 29 | třicet | 31 | 32 | jeden |
První tři bity vektoru jsou bity 32, 1, 2 vektoru . Tabulka 2 ukazuje, že bity 1, 4, 5, 8, 9, 12, 13, 16, 17, 20, 21, 24, 25, 28, 29, 32 jsou duplikovány. Poslední 3 bity vektoru jsou bity 31, 32, 1 vektoru . Blok získaný po permutaci je přidán modulo 2 s klíči a poté prezentován ve formě osmi po sobě jdoucích bloků .
Každý z nich je 6bitový blok. Dále je každý z bloků transformován na 4bitový blok pomocí transformací . Transformace jsou definovány v tabulce 3.
0 | jeden | 2 | 3 | čtyři | 5 | 6 | 7 | osm | 9 | deset | jedenáct | 12 | 13 | čtrnáct | patnáct | ||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | čtrnáct | čtyři | 13 | jeden | 2 | patnáct | jedenáct | osm | 3 | deset | 6 | 12 | 5 | 9 | 0 | 7 | |
jeden | 0 | patnáct | 7 | čtyři | čtrnáct | 2 | 13 | jeden | deset | 6 | 12 | jedenáct | 9 | 5 | 3 | osm | |
2 | čtyři | jeden | čtrnáct | osm | 13 | 6 | 2 | jedenáct | patnáct | 12 | 9 | 7 | 3 | deset | 5 | 0 | |
3 | patnáct | 12 | osm | 2 | čtyři | 9 | jeden | 7 | 5 | jedenáct | 3 | čtrnáct | deset | 0 | 6 | 13 | |
0 | patnáct | jeden | osm | čtrnáct | 6 | jedenáct | 3 | čtyři | 9 | 7 | 2 | 13 | 12 | 0 | 5 | deset | |
jeden | 3 | 13 | čtyři | 7 | patnáct | 2 | osm | čtrnáct | 12 | 0 | jeden | deset | 6 | 9 | jedenáct | 5 | |
2 | 0 | čtrnáct | 7 | jedenáct | deset | čtyři | 13 | jeden | 5 | osm | 12 | 6 | 9 | 3 | 2 | patnáct | |
3 | 13 | osm | deset | jeden | 3 | patnáct | čtyři | 2 | jedenáct | 6 | 7 | 12 | 0 | 5 | čtrnáct | 9 | |
0 | deset | 0 | 9 | čtrnáct | 6 | 3 | patnáct | 5 | jeden | 13 | 12 | 7 | jedenáct | čtyři | 2 | osm | |
jeden | 13 | 7 | 0 | 9 | 3 | čtyři | 6 | deset | 2 | osm | 5 | čtrnáct | 12 | jedenáct | patnáct | jeden | |
2 | 13 | 6 | čtyři | 9 | osm | patnáct | 3 | 0 | jedenáct | jeden | 2 | 12 | 5 | deset | čtrnáct | 7 | |
3 | jeden | deset | 13 | 0 | 6 | 9 | osm | 7 | čtyři | patnáct | čtrnáct | 3 | jedenáct | 5 | 2 | 12 | |
0 | 7 | 13 | čtrnáct | 3 | 0 | 6 | 9 | deset | jeden | 2 | osm | 5 | jedenáct | 12 | čtyři | patnáct | |
jeden | 13 | osm | jedenáct | 5 | 6 | patnáct | 0 | 3 | čtyři | 7 | 2 | 12 | jeden | deset | čtrnáct | 9 | |
2 | deset | 6 | 9 | 0 | 12 | jedenáct | 7 | 13 | patnáct | jeden | 3 | čtrnáct | 5 | 2 | osm | čtyři | |
3 | 3 | patnáct | 0 | 6 | deset | jeden | 13 | osm | 9 | čtyři | 5 | jedenáct | 12 | 7 | 2 | čtrnáct | |
0 | 2 | 12 | čtyři | jeden | 7 | deset | jedenáct | 6 | osm | 5 | 3 | patnáct | 13 | 0 | čtrnáct | 9 | |
jeden | čtrnáct | jedenáct | 2 | 12 | čtyři | 7 | 13 | jeden | 5 | 0 | patnáct | deset | 3 | 9 | osm | 6 | |
2 | čtyři | 2 | jeden | jedenáct | deset | 13 | 7 | osm | patnáct | 9 | 12 | 5 | 6 | 3 | 0 | čtrnáct | |
3 | jedenáct | osm | 12 | 7 | jeden | čtrnáct | 2 | 13 | 6 | patnáct | 0 | 9 | deset | čtyři | 5 | 3 | |
0 | 12 | jeden | deset | patnáct | 9 | 2 | 6 | osm | 0 | 13 | 3 | čtyři | čtrnáct | 7 | 5 | jedenáct | |
jeden | deset | patnáct | čtyři | 2 | 7 | 12 | 9 | 5 | 6 | jeden | 13 | čtrnáct | 0 | jedenáct | 3 | osm | |
2 | 9 | čtrnáct | patnáct | 5 | 2 | osm | 12 | 3 | 7 | 0 | čtyři | deset | jeden | 13 | jedenáct | 6 | |
3 | čtyři | 3 | 2 | 12 | 9 | 5 | patnáct | deset | jedenáct | čtrnáct | jeden | 7 | 6 | 0 | osm | 13 | |
0 | čtyři | jedenáct | 2 | čtrnáct | patnáct | 0 | osm | 13 | 3 | 12 | 9 | 7 | 5 | deset | 6 | jeden | |
jeden | 13 | 0 | jedenáct | 7 | čtyři | 9 | jeden | deset | čtrnáct | 3 | 5 | 12 | 2 | patnáct | osm | 6 | |
2 | jeden | čtyři | jedenáct | 13 | 12 | 3 | 7 | čtrnáct | deset | patnáct | 6 | osm | 0 | 5 | 9 | 2 | |
3 | 6 | jedenáct | 13 | osm | jeden | čtyři | deset | 7 | 9 | 5 | 0 | patnáct | čtrnáct | 2 | 3 | 12 | |
0 | 13 | 2 | osm | čtyři | 6 | patnáct | jedenáct | jeden | deset | 9 | 3 | čtrnáct | 5 | 0 | 12 | 7 | |
jeden | jeden | patnáct | 13 | osm | deset | 3 | 7 | čtyři | 12 | 5 | 6 | jedenáct | 0 | čtrnáct | 9 | 2 | |
2 | 7 | jedenáct | čtyři | jeden | 9 | 12 | čtrnáct | 2 | 0 | 6 | deset | 13 | patnáct | 3 | 5 | osm | |
3 | 2 | jeden | čtrnáct | 7 | čtyři | deset | osm | 13 | patnáct | 12 | 9 | 0 | 3 | 5 | 6 | jedenáct |
Předpokládejme, že a my chceme najít . První a poslední číslice jsou binární reprezentací čísla a, 0<=a<=3, prostřední 4 číslice reprezentují číslo b, 0<=b<=15. Řádky tabulky S3 jsou číslovány od 0 do 3, sloupce tabulky S3 jsou číslovány od 0 do 15. Dvojice čísel (a, b) určuje číslo na průsečíku řádku a a sloupce b. Binární reprezentace tohoto čísla dává . V našem případě , , a číslo definované dvojicí (3,7) je 7. Jeho binární reprezentace je =0111. Funkční hodnota (32 bitů ) se získá permutací P aplikovanou na 32bitový blok . Permutace P je dána tabulkou 4.
16 | 7 | dvacet | 21 | 29 | 12 | 28 | 17 |
jeden | patnáct | 23 | 26 | 5 | osmnáct | 31 | deset |
2 | osm | 24 | čtrnáct | 32 | 27 | 3 | 9 |
19 | 13 | třicet | 6 | 22 | jedenáct | čtyři | 25 |
Podle tabulky 4 jsou první čtyři bity výsledného vektoru po působení funkce f bity 16, 7, 20, 21 vektoru
Klíče se získávají z počátečního klíče (56 bitů = 7 bajtů nebo 7 znaků v ASCII ) následovně. Bity se sčítají na pozicích 8, 16, 24, 32, 40, 48, 56, 64 klíče tak, že každý bajt obsahuje lichý počet jedniček. To se používá k detekci chyb při výměně a ukládání klíčů. Poté se provede permutace pro rozšířený klíč (kromě přidaných bitů 8, 16, 24, 32, 40, 48, 56, 64). Taková permutace je definována v tabulce 5.
57 | 49 | 41 | 33 | 25 | 17 | 9 | jeden | 58 | padesáti | 42 | 34 | 26 | osmnáct | |
deset | 2 | 59 | 51 | 43 | 35 | 27 | 19 | jedenáct | 3 | 60 | 52 | 44 | 36 | |
63 | 55 | 47 | 39 | 31 | 23 | patnáct | 7 | 62 | 54 | 46 | 38 | třicet | 22 | |
čtrnáct | 6 | 61 | 53 | 45 | 37 | 29 | 21 | 13 | 5 | 28 | dvacet | 12 | čtyři |
Tato permutace je určena dvěma bloky a 28 bity každý. První 3 bity jsou bity 57, 49, 41 rozšířeného klíče. A první tři bity jsou bity 63, 55, 47 rozšířeného klíče. i=1,2,3…jsou získány z jednoho nebo dvou levých cyklických posunů podle tabulky 6.
i | jeden | 2 | 3 | čtyři | 5 | 6 | 7 | osm | 9 | deset | jedenáct | 12 | 13 | čtrnáct | patnáct | 16 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Číslo směny | jeden | jeden | 2 | 2 | 2 | 2 | 2 | 2 | jeden | 2 | 2 | 2 | 2 | 2 | 2 | jeden |
Klíč , i=1,…16 se skládá ze 48 bitů vybraných z vektorových bitů (56 bitů ) podle tabulky 7. První a druhý bit jsou bity 14, 17 vektoru
čtrnáct | 17 | jedenáct | 24 | jeden | 5 | 3 | 28 | patnáct | 6 | 21 | deset | 23 | 19 | 12 | čtyři |
26 | osm | 16 | 7 | 27 | dvacet | 13 | 2 | 41 | 52 | 31 | 37 | 47 | 55 | třicet | 40 |
51 | 45 | 33 | 48 | 44 | 49 | 39 | 56 | 34 | 53 | 46 | 42 | padesáti | 36 | 29 | 32 |
Konečná permutace působí na (kde ) a je inverzní k původní permutaci. Konečná permutace je určena tabulkou 8.
40 | osm | 48 | 16 | 56 | 24 | 64 | 32 | 39 | 7 | 47 | patnáct | 55 | 23 | 63 | 31 |
38 | 6 | 46 | čtrnáct | 54 | 22 | 62 | třicet | 37 | 5 | 45 | 13 | 53 | 21 | 61 | 29 |
36 | čtyři | 44 | 12 | 52 | dvacet | 60 | 28 | 35 | 3 | 43 | jedenáct | 51 | 19 | 59 | 27 |
34 | 2 | 42 | deset | padesáti | osmnáct | 58 | 26 | 33 | jeden | 41 | 9 | 49 | 17 | 57 | 25 |
Při dešifrování dat se všechny akce provádějí v opačném pořadí. V 16 kolech dešifrování, na rozdíl od šifrování pomocí přímé transformace sítí Feistel, je zde použita inverzní transformace sítí Feistel.
Schéma dešifrování je na obr.6.
Klíč , i=16,…,1, funkce f, permutace IP a jsou stejné jako v procesu šifrování. Algoritmus generování klíčů závisí pouze na klíči uživatele, takže jsou při dešifrování identické.
DES lze použít ve čtyřech režimech.
Výhody a nevýhody režimů:
Nelinearita transformací v DES pomocí pouze S-boxů a použití slabých S-boxů umožňuje vykonávat kontrolu nad šifrovanou korespondencí. Výběr S-boxů vyžaduje splnění několika podmínek:
Vzhledem k malému počtu možných klíčů (pouze ), je možné je vyčerpávajícím způsobem vyjmenovat na vysokorychlostních počítačích v reálném čase. V roce 1998 se Electronic Frontier Foundation pomocí speciálního počítače DES-Cracker podařilo prolomit DES za 3 dny.
Slabé klíče jsou klíče k takové, že , kde x je 64bitový blok.
Známé jsou 4 slabé klíče, ty jsou uvedeny v tabulce 9. Pro každý slabý klíč jsou pevné body , tedy takové 64bitové bloky x , pro které .
Slabé klíče (hexadecimální) | ||
0101-0101-0101-0101 | ||
FEFE-FEFE-FEFE-FEFE | ||
1F1F-1F1F-0E0E-0E0E | ||
E0E0-E0E0-F1F1-F1F1 |
označuje vektor sestávající z 28 nulových bitů.
V algoritmu DES jsou slabé a částečně slabé klíče. Částečně slabé klíče jsou dvojice klíčů takové , že
Existuje 6 částečně slabých párů klíčů, které jsou uvedeny v tabulce 10. Pro každý z 12 částečně slabých klíčů existují „anti-fixed points“, tj. bloky x takové, že
Páry částečně slabých kláves | ||||
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 |
Metody útoku | Známé objevy texty | Vybráno otevřené texty | Velikost paměti | Počet operací |
Úplné vyhledávání | qweqweqweqerqe | - | Méně důležitý | |
Lineární kryptoanalýza | - | Pro text | ||
Lineární kryptoanalýza | - | Pro text | ||
Lišit. Kryptoanalýza | - | Pro text | ||
Lišit. Kryptoanalýza | - | Pro text |
Pro lineární a diferenciální kryptoanalýzu je zapotřebí dostatečně velké množství paměti pro uložení vybraných (známých) otevřených textů před začátkem útoku.
Pro zvýšení kryptografické síly DES se objevuje několik možností: dvojité DES ( 2DES ), trojité DES ( 3DES ), DESX , G-DES .
DES byl americkým národním standardem v letech 1977-1980 , ale v současnosti se DES používá (s 56bitovým klíčem) pouze pro starší systémy, nejčastěji využívající jeho kryptograficky silnější formu ( 3DES , DESX ). 3DES je jednoduchou a účinnou náhradou za DES a nyní je považován za standard. V blízké budoucnosti budou DES a Triple DES nahrazeny algoritmem AES (Advanced Encryption Standard). Algoritmus DES je široce používán k ochraně finančních informací: například modul THALES (Racal) HSM RG7000 plně podporuje operace TripleDES pro vydávání a zpracování kreditních karet VISA , EuroPay a dalších. Kanálové scramblery THALES (Racal) DataDryptor 2000 používají TripleDES k transparentnímu šifrování datových toků. Algoritmus DES se také používá v mnoha dalších zařízeních a řešeních THALES-eSECURITY.
Symetrické kryptosystémy | |
---|---|
Streamové šifry | |
Síť Feistel | |
Síť SP | |
jiný |