Program pro převod výkresů do jiných formátů. Online obrazový multikonvertor s podporou RAW. Zdarma Převod a změna velikosti obrázků z DVDVideoSoft

Data Encryption Standard (DES) je standard pro šifrování dat vynalezený ve Spojených státech v 80. letech minulého století. Mezi šiframi je právem považován za „důchodce“, přičemž zůstává tahounem kryptografie. DES přestal být vhodný v podmínkách ultrarychlé technologie a velké objemy data kvůli omezením 56 bitů na klíč a 64 bitů na data. Stále se však používá.

Co jsou to blokové šifry?

DES - algoritmus blokové šifrování. Za posledních 20–30 let bylo vytvořeno mnoho blokových šifer, ale vytvořit dobrou šifru, která je bezpečná, je obtížný úkol. Je důležité, aby šifra měla vlastnosti, které jí umožní fungovat v mnoha oblastech a odvětvích.

Blokové šifry se skládají z několika iterací použití šifry postupně. Každá iterace se nazývá kolo. Jak ukazuje praxe, i některé z primitivních algoritmů, jsou-li používány konzistentně, jsou schopny vytvářet spolehlivé šifry. Algoritmus DES je příkladem, který zůstal spolehlivý a nerozbitný již 20 let.

Tento přístup k vývoji šifry značně zjednodušuje proces a zjednodušuje bezpečnostní analýzu. Například, zkušební útok na bloková šifra začíná s minimálním počtem kol a pokračuje metodicky se zvyšujícím se počtem kol.

Pomocí DES

Ačkoli DES je považován za zastaralý a nevyhovující moderní požadavky, lze jej použít např. ve formě 3DES, kdy je šifra aplikována třikrát za sebou. Tento přístup odstraňuje omezení velikosti klíče, ale blok šifrovaných dat zůstává stejný. Svého času byla DES poměrně rychlá a bezpečná šifra. Nyní tomu tak není a 3DES pracuje třikrát pomaleji. Navzdory tomu se DES stále používá v řadě systémů, ale jeho použití v nových projektech je zakázáno.

Oficiálně byl šifrovací algoritmus DES standardem ve Spojených státech až do roku 1998. V roce 1997 začala tvorba nového standardu, který se jmenoval System), a přestože kryptanalýza ukazuje, že pokus prolomit DES vede k mnoha systémům nelineární rovnice, analytické metody nejsou schopni pomoci vyřešit problém - jeho slabé místo je malá sada možných klíčů. Jejich počet je 2 56 a všechny možnosti lze pomocí moderních technologií vyřešit za relativně krátkou dobu krátkodobý.

Jedno kolo v algoritmu

Pro přehlednost prezentace a popisu Algoritmus DES Použijme obrázek 4.1, který ukazuje strukturu jednoho kola.

Každý obdélník v čárový diagram představuje některé výpočty a šipka z něj vycházející ukazuje, kam budou přeneseny výsledky bloku. Zakroužkované znaménko plus označuje operaci „exclusive or“, která se v programování nazývá XOR. Operace se také nazývá „bitové sčítání“ nebo „sčítání bez přenosu“. Algoritmus DES v C můžete najít online a prostudovat si jej pro lepší pochopení.

DES přijímá textový blok o velikosti 64 bitů. Prochází počáteční permutací podle určitého principu. Při analýze algoritmu se ukázalo, že tato permutace má malý smysl, protože nedává žádný kryptografický efekt. Textový blok je rozdělena na 2 stejné části: pravou (R) a levou (L). Zašifrované části se pak prohodí a zkombinují a na konci kola se získá 64bitový blok dat, pouze zašifrovaný.

Obecný algoritmus

Algoritmus DES obsahuje 16 kol, prováděných podle výše popsaného schématu. Všechna kola jsou číslována přes i, kde i = (1; 16). Každé i-té kolo z dvojice (Li-1, Ri-1) obdrží nový pár(Li, Ri) pomocí klávesy Ki. Hlavní transformace probíhají uvnitř funkce F.

Algoritmus operace funkce F

Jak můžete vidět na obrázku 4.1, R prochází operací Expand. Tento blok duplikuje řadu bitů z R a doplňuje ji jimi, což vede k 48bitové hodnotě. Výsledný výsledek je předán bitovým sčítáním pomocí 48bitového klíče Ki. A výsledek této operace se přenese do bloku S. Blok S obsahuje 8 malých substitučních matic, které jsou vybírány speciálním způsobem.

Každá matice přijímá 6 bitů informace jako vstup a vytváří 4 bitovou hodnotu. Výsledkem je, že blok S přijímá 48bitová data na vstupu a na výstupu prezentuje výsledek jako 32bitovou hodnotu.

Tato 32bitová hodnota prochází další permutační operací, než je xoredována pomocí L. Nakonec pravé a levá strana změnit místa a kolo končí. Jak již bylo zmíněno dříve, algoritmus provede 16 takových kol.

Zde nebudeme článek zahlcovat příklady, které zabírají hodně místa. Práce DES a příklady si můžete prohlédnout online.

Feistelova šifra

Algoritmus DES je založen na Feistelově šifře. Jeho nápad je docela elegantní. V každém kole se část L přičte k hodnotě F(R, Ki) a L změní pozici s R. Klíčová vlastnost Feistelův algoritmus spočívá v tom, že dešifrování a šifrování se skládají ze stejných kroků: části L a R se zamění a poté se provede operace sčítání L a F (R, Ki). Díky tomu jsou postupy šifrování a dešifrování jednoduché a přímočaré.

Feistelovy šifry často zavádějí jednu zajímavá změna- zrušení přeskupení L a R v poslední iteraci. Díky tomu jsou šifrovací a dešifrovací algoritmy zcela symetrické. Jediný rozdíl je v pořadí, ve kterém se používají klávesy Ki. Tento princip se ukázal jako mimořádně vhodný pro použití na úroveň programu, protože šifrování a dešifrování probíhá pomocí jedné funkce. Například stručná implementace algoritmu DES šifrování na C.

Šifrovací klíče

DES používá k šifrování dat šestnáct 48bitových klíčů. Jeden klíč na kolo. Každý klíč je vytvořen vzorkováním 48 bitů z 56bitového hlavního klíče. Generování klíčů pro konkrétní kolo je určeno mechanismem podrobně popsaným v dokumentaci DES.

Stručně řečeno, algoritmus pro výběr klíče i je následující. Bity jsou přidány do hlavního klíče na pozicích 8, 16, 24, 32, 40, 48, 56, 64. To se provádí tak, že každý bajt obsahuje lichý počet jedniček. Dodržování pravidla pomáhá odhalit chyby při výměně klíčů. Poté, pomocí speciálních tabulek, rozšířený klíč prochází permutacemi a posuny, s výjimkou bitů, které byly přidány. Tímto způsobem se získá požadovaný klíč.

DES komponenty

Každá součást algoritmu DES řeší konkrétní problém:

  1. Feistelův algoritmus zjednodušuje šifrování a dešifrování a zároveň zajišťuje, že obě poloviny textu jsou smíšené.
  2. Bitová sumarizace částí textu s klíči smísí otevřený text s klíčem a zašifruje jej.
  3. S-box a korespondenční tabulky činí algoritmus nelineárním a zvyšují jeho odolnost vůči různým útokům.
  4. Expanze, S-box a permutace zajišťují rozšíření algoritmu - lavinový efekt. Jinými slovy, pokud se ve vstupních datech funkce F změní alespoň 1 bit, způsobí to změnu v mnoha bitech najednou. Pokud v šifře není žádný lavinový efekt, pak změny v otevřených datech povedou k ekvivalentním změnám v zašifrované podobě, kterou lze sledovat a použít k prolomení. V kryptografii existuje kritérium pro lavinový efekt. Algoritmus to splňuje, pokud změna 1 bitu prostých dat změní alespoň polovinu zašifrovaných dat. Algoritmus DES to splňuje od 4. kola. Výsledkem je, že pokud změníte 1 bit prostých dat v šifře DES, změní se 29 bitů.

Bezpečnostní problémy v DES

Zjevný problém DES je výběr šifrovacích klíčů ze sdíleného klíče. Co se stane, když vyberete nulová hodnota(všechny klíčové bity jsou 0)? To povede k tomu, že výběr všech šifrovacích klíčů v každém kole bude stejný a všechny klíče se budou rovnat nule. Nejen, že s jedním klíčem bude fungovat 16 šifrování, ale protože se šifrovací a dešifrovací algoritmy DES liší pouze v pořadí, ve kterém jsou klíče použity, budou naprosto stejné. Celý bod šifrování bude ztracen.

DES má 4 klávesy, které se nazývají slabé, což vede k popsanému efektu. DES má 12 poloslabých a 48 pseudoslabých klíčů, což má za následek omezenou variabilitu klíčů generovaných napříč koly. Jinými slovy, existuje možnost, že během 16 kol šifrování nebude použito 16 různých klíčů, ale 8, 4 nebo dokonce 2.

Méně zřejmou nevýhodou DES je jeho komplementarita. Znamená to, že pokud k šifrování použijete doplněk prostého textu a doplněk klíče, skončíte s hodnotou, která je doplňkem šifrovaného textu. Tato zvláštní vlastnost může vést k úspěšným útokům proti projektům, které používají DES pro zabezpečení.

Problém s šifrovacím klíčem

Je základní pro DES a je zvažován hlavní důvod, proč byste měli opustit tento algoritmus. Protože velikost klíče v DES je 56 bitů, pro výčet všech klíčů budete muset prozkoumat 2 56 možností. Je to tolik?

Pokud provedete 10 milionů klíčových kontrol za sekundu, bude ověření trvat asi 2000 let. Algoritmus se zdá být poměrně robustní. Bylo tomu tak v minulém století, kdy vytvořit počítač takového výkonu byl z technického i finančního hlediska téměř nemožný úkol.

Pokud postavíte počítač s milionem čipů, prohledání celé sady klíčů DES zabere 20 hodin. První podobný počítač pro dešifrování pomocí algoritmu DES se objevil již v roce 1998, který dokončil úkol za 56 hodin. Moderní technologie sítě a paralelní procesy mohou tuto dobu ještě zkrátit.

Kryptoanalýza a DES

Bez nadsázky lze říci, že DES byl důvodem pro vznik aplikované vědy zvané „ Kryptografická analýza„Od samého počátku příchodu DES byly činěny pokusy o jeho prolomení, vědeckých prací tím, že to studujete. To vše vedlo ke vzniku takových oblastí matematiky, jako jsou:

  • lineární kryptoanalýza - studium a identifikace závislostí mezi otevřeným a šifrovaným textem;
  • diferenciální kryptoanalýza - studium a analýza závislostí mezi několika otevřenými texty a jejich zašifrovanými verzemi;
  • související kryptoanalýza klíčů - studium závislostí mezi šifrovanými texty získanými na primární klíč a klíče nějakým způsobem související s primární.

DES vydržel 20 let celosvětové kryptoanalýzy a útoků, ale zůstává silnou šifrou. Ale kdo hledá, vždy najde...

  1. Biham a Shamir, vědci z Izraele, v roce 1991 pomocí diferenciální kryptoanalýzy ukázali, že útok lze provést na DES, ve kterém byl klíč vypočítán za předpokladu, že útočník měl 2 47 speciálně vybraných párů otevřeného textu a šifrovaného textu.
  2. Japonský vědec Mitsuru Matsui v roce 1993 ukázal, že klíč lze vypočítat pomocí lineární kryptoanalýza. K tomu stačí znát 2 47 párů prostého textu a odpovídající zašifrovanou verzi.

Následně byly tyto hackerské metody mírně zpřesněny, vylepšeny a zjednodušeny a objevila se i řada nových hackerských metod. Ve srovnání se svým původem však zůstávají příliš složité dokončit hledání ze všech klíčových možností vypadá jako nejadekvátnější útok na DES.

Nejběžnějším a nejznámějším symetrickým šifrovacím algoritmem je DES (Standard šifrování dat). Algoritmus byl vyvinut v roce 1977 a byl přijat NIST (National Institute of Standards and Technology, USA) jako standard v roce 1980.

DES je klasická síť Feishtel se dvěma větvemi. Data jsou šifrována v 64bitových blocích pomocí 56bitového klíče. Algoritmus během několika kol převádí 64bitový vstup na 64bitový výstup. Délka klíče je 56 bitů. Proces šifrování se skládá ze čtyř fází. První fáze provede počáteční permutaci (IP) 64bitového zdrojového textu (vybělení), během níž se bity přeskupí podle standardní stůl. Další fáze se skládá z 16 kol stejné funkce, která využívá operace posunu a substituce. Ve třetí fázi se prohodí levá a pravá polovina výstupu poslední (16.) iterace. Nakonec čtvrtá fáze provede permutaci IP-1 výsledku získaného ve třetí fázi. Permutace IP-1 je inverzní k počáteční permutaci.

Obr.4. Algoritmus DES

Obrázek ukazuje metodu, která používá 56bitový klíč. Zpočátku je klíč přiveden na vstup permutační funkce. Potom pro každé ze 16 kol je podklíč Kj kombinací levého kruhového posunu a permutace. Permutační funkce je pro každé kolo stejná, ale podklíče Ki pro každé kolo se liší v důsledku opakovaného posunu bitů klíče.

Počáteční permutace a její inverze jsou určeny standardní tabulkou. Jestliže M je libovolných 64 bitů, pak X = IP(M) je přeskupených 64 bitů. Pokud použijeme inverzní permutační funkci Y = IP-1 (X) = IP-1 (IP(M)), dostaneme původní bitovou sekvenci.

Popis kulatého des

Podívejme se na posloupnost transformací použitých v jednotlivých kolech.

Obr.5. Ilustrace kola algoritmu DES

64bitový vstupní blok prochází 16 kola, přičemž každá iterace vytváří střední 64bitovou hodnotu. Levá a pravá strana každé mezilehlé hodnoty jsou považovány za samostatné 32bitové hodnoty, označené L a R. Každou iteraci lze popsat následovně:

Ri = Li-1 F(Ri-1, Ki)

Výstup levé poloviny L i je tedy roven vstupu pravé poloviny R i-1. Výstup pravé poloviny Ri je výsledkem aplikace operace XOR na Li-1 a funkce F v závislosti na Ri-1 a Ki.

Podívejme se na funkci F podrobněji. Ri, který je přiveden na vstup funkce F, má délku 32 bitů. Nejprve se R i rozšíří na 48 bitů pomocí tabulky, která specifikuje permutaci plus 16bitové rozšíření. Expanze probíhá následovně. 32 bitů je rozděleno do skupin po 4 bitech a poté rozšířeno na 6 bitů přidáním nejvzdálenějších bitů ze dvou sousedních skupin. Například pokud je součástí vstupní zprávy

Efgh ijkl mnop . . .

pak výsledkem expanze je zpráva

Defghi hijklm lmnopq. . .

Výsledná 48bitová hodnota je pak XORed pomocí 48bitového podklíče Ki. Výsledná 48bitová hodnota je poté přivedena do substituční funkce, jejímž výsledkem je 32bitová hodnota.

Substituce se skládá z osmi S-boxů, z nichž každý přijímá 6 bitů jako vstup a produkuje 4 bity jako výstup. Tyto transformace jsou definovány speciálními tabulkami. První a poslední kousky Vstupní hodnota S-box určuje číslo řádku v tabulce, prostřední 4 bity určují číslo sloupce. Průsečík řádku a sloupce určuje 4bitový výstup. Pokud je například vstup 011011, pak číslo řádku je 01 (řádek 1) a číslo sloupce je 1101 (sloupec 13). Hodnota v řádku 1 a sloupci 13 je 5, tzn. výstup je 0101.

Výsledná 32bitová hodnota je následně zpracována pomocí permutace P, jejímž účelem je co nejvíce přeuspořádat bity tak, aby v dalším kole šifrování byl každý bit pravděpodobně zpracován jiným S-boxem.

Klíč pro jednotlivé kolo K i se skládá ze 48 bitů. Klíče Ki se získají pomocí následujícího algoritmu. Pro 56bitový klíč použitý jako vstup do algoritmu se nejprve provede permutace v souladu s tabulkou Permuted Choice 1 (PC-1). Výsledný 56bitový klíč je rozdělen na dvě 28bitové části, označené jako C0 a D0. V každém kole jsou Ci a Di nezávisle cyklicky posunuty doleva o 1 nebo 2 bity, v závislosti na čísle kola. Výsledné hodnoty jsou vstupem pro další kolo. Jsou také vstupem do Permuted Choice 2 (PC-2), který vytváří 48bitovou výstupní hodnotu, která je vstupem pro funkci F(R i-1, K i).

Proces dešifrování je podobný procesu šifrování. Vstupem do algoritmu je šifrovaný text, ale klíče K i se používají v opačném pořadí. K 16 se použije v prvním kole, K 1 se použije v posledním kole. Nechť výstup i-tého šifrovacího kola je L i ||R i . Potom odpovídající vstup (16-i)-tého dešifrovacího kola bude R i ||L i.

Po posledním kole dešifrovacího procesu se obě poloviny výstupu prohodí tak, že vstup konečné permutace IP-1 je R 16 ||L 16 . Výstupem této fáze je prostý text.

Algoritmus DES je docela vhodný pro šifrování i autentizaci dat. Umožňuje přímo převádět 64bitový vstup prostý text na 64bitový výstupní šifrový text, ale data jsou zřídka omezena na 64 bitů.

Aby bylo možné použít algoritmus DES k řešení různých kryptografických problémů, byly vyvinuty čtyři provozní režimy:

· elektronický číselník ECB (Electronic Code Book);

· zřetězení CBC šifrovacích bloků (Cipher Block Chaining);

· Zpětná vazba pomocí šifrovaného textu CFB (Cipher Feed Back);

· zpětná vazba na výstupu OFB (Output Feed Back).

Režim "Elektronická kódová kniha".

Dlouhý soubor jsou rozděleny do 64bitových segmentů (bloků) po 8 bytech. Každý z těchto bloků je zašifrován nezávisle pomocí stejného šifrovacího klíče (obr. 3.6).

Hlavní výhodou je snadná implementace. Nevýhoda: Relativně slabá odolnost vůči zkušeným kryptoanalytikům. Vzhledem k pevné povaze šifrování s omezenou délkou bloku 64 bitů je možná „slovníková“ kryptoanalýza. Blok této velikosti se může ve zprávě opakovat kvůli vysoké redundanci textu v přirozeném jazyce.

Obrázek 3.6 – Schéma algoritmu DES v režimu elektronické číselnice

To způsobí, že identické bloky prostého textu ve zprávě jsou reprezentovány identickými bloky šifrovaného textu, což dává kryptoanalytovi nějaké informace o obsahu zprávy.

Režim „řetězení šifrovacích bloků“.

V tomto režimu původní soubor M je rozdělen do 64bitových bloků: M = M 1 M 2 ...M n. K prvnímu bloku M 1 je přidán modulo 2 s 64bitovým počátečním vektorem IV, který se denně mění a je uchováván v tajnosti (obr. 3.7). Přijatá částka je poté zašifrována pomocí klíče DES známého odesílateli i příjemci informace. Výsledná 64bitová šifra C1 se přidá modulo 2 s druhým blokem textu, výsledek se zašifruje a získá se druhá 64bitová šifra C2 atd. Postup se opakuje, dokud nejsou zpracovány všechny bloky textu.

Pro všechna i = 1…n (n je počet bloků) je tedy výsledek šifrování C i určen následovně: C i =

DES (М i  C i –1), kde С 0 = IV je počáteční hodnota šifry, rovna počátečnímu vektoru (inicializačnímu vektoru).

Je zřejmé, že poslední 64bitový blok šifrovaného textu je funkcí tajného klíče, počátečního vektoru a každého bitu

Obrázek 3.7 – Schéma algoritmu DES v režimu řetězení šifrových bloků

prostý text bez ohledu na jeho délku. Tento blok šifrovaného textu se nazývá ověřovací kód zprávy (MAC).


UAS kód může být snadno ověřen příjemcem, který jej vlastní tajný klíč a počáteční vektor, opakováním procedury provedené odesílatelem. Osoba zvenčí však nemůže vytvořit UAS, který příjemce vnímá jako pravý, aby jej přidal k falešné zprávě nebo oddělil UAS od skutečné zprávy pro použití s ​​upravenou nebo falešnou zprávou.

Důstojnost tento režim spočívá v tom, že neumožňuje hromadění chyb během přenosu.

Blok Mi je funkcí pouze C i –1 a C i . Chyba přenosu tedy způsobí ztrátu pouze dvou bloků zdrojového textu.

Režim „Cypher feedback“.

V tomto režimu se může velikost bloku lišit od 64 bitů (obr. 3.8). Soubor, který má být zašifrován (dešifrován), se čte v po sobě jdoucích blocích o délce k bitů (k=1...64).

Vstupní blok (64bitový posuvný registr) nejprve obsahuje vpravo zarovnaný inicializační vektor.

Předpokládejme, že v důsledku dělení do bloků jsme obdrželi n bloků o délce k bitů každý (zbytek je připojen nulami nebo mezerami). Potom pro libovolný i=1…n blok šifrovaného textu

С i = M i  P i –1 ,

kde P i–1 označuje k nejvýznamnějších bitů předchozího zašifrovaného bloku.

Posuvný registr se aktualizuje odstraněním jeho nejvyšších k bitů a zápisem C i do registru. Obnova zašifrovaných dat je také poměrně jednoduchá: P i –1 a C i se vypočítávají podobným způsobem a

М i = С i  Р i –1 .


Obrázek 3.8 – Schéma algoritmu DES v režimu zpětné vazby šifrovaného textu

Režim výstupní zpětné vazby

Tento režim také používá variabilní velikost blok a posuvný registr, inicializovaný stejným způsobem jako v režimu CFB, totiž vstupní blok obsahuje nejprve inicializační vektor IV, zarovnaný doprava (obr. 3.9). V tomto případě je pro každou relaci šifrování dat nutné použít nový počáteční stav registru, který musí být odeslán kanálem jako prostý text.

M = M 1 M 2 ... M n.

Pro všechna i = 1… n

C i = M i  P i ,

kde Р i je nejvyšších k bitů operace DES (С i –1).

Odlišností od režimu zpětné vazby šifrovaného textu je způsob aktualizace posuvného registru.

To se provádí vyřazením nejvyšších k bitů a přidáním P i doprava.

Obrázek 3.9 – Schéma algoritmu DES v režimu výstupní zpětné vazby

3.3. Oblasti použití algoritmu DES

Každý z uvažovaných režimů (ECB, CBC, CFB, OFB) má své výhody a nevýhody, což určuje oblasti jejich použití.

Režim ECB je vhodný pro šifrování klíčů: režim CFB je obvykle určen pro šifrování jednotlivých znaků a režim OFB se často používá pro šifrování v satelitní systémy komunikace.

Režimy CBC a CFB jsou vhodné pro autentizaci dat. Tyto režimy vám umožňují používat algoritmus DES k:

· interaktivní šifrování při výměně dat mezi terminálem a hostitelským počítačem;

· šifrování kryptografického klíče v praxi automatizované distribuce klíčů;

· šifrování souborů, poštovní zásilky, satelitní data a další praktické problémy.

Zpočátku standard DES určené pro šifrování a dešifrování počítačových dat. Jeho aplikace však byla zobecněna na autentizaci.

V systémech automatické zpracování data, osoba není schopna data zkontrolovat, aby zjistila, zda v nich nebyly provedeny nějaké změny. S obrovským množstvím procházejících dat moderní systémy zpracování, prohlížení by trvalo příliš dlouho. Navíc redundance dat nemusí být dostatečná k detekci chyb. I v případech, kdy je možná kontrola člověkem, mohou být data změněna způsoby, které lidem velmi znesnadňují odhalení změn. Například „do“ lze nahradit „ne“, „1900 $“ za „9100 $“. Bez dodatečné informace osoba, která si jej prohlíží, může snadno zaměnit změněná data za pravá data. Taková nebezpečí mohou existovat i při použití šifrování dat. Proto je vhodné mít automatický nástroj odhalování záměrných i neúmyslných změn dat.

Běžné kódy, které detekují chyby, jsou nevhodné, protože pokud je znám algoritmus pro generování kódu, nepřítel se může vyvinout správný kód po provedení změn v datech. Pomocí algoritmu DES je však možné vytvořit kryptografii kontrolní součet, které mohou chránit před náhodnými i úmyslnými, ale neoprávněnými změnami dat.

Tento proces popisuje standard pro ověřování počítačových dat (FIPS 113). Podstatou standardu je, že data jsou šifrována v režimu zpětné vazby šifrovaného textu (režim CFB) nebo v režimu zřetězení šifrového bloku (režim CBC), což vede k finálnímu šifrovému bloku, který je funkcí všech bitů otevřeného textu. Zprávu, která obsahuje prostý text, lze následně přenést pomocí vypočítaného konečného bloku šifry, který slouží jako kryptografický kontrolní součet.

Stejná data lze chránit pomocí šifrování i ověřování. Data jsou chráněna před přístupem šifrováním a změny jsou detekovány pomocí ověřování. Autentizační algoritmus lze použít na prostý i šifrovaný text. Na finanční transakce zatímco ve většině případů je implementováno jak šifrování, tak autentizace, autentizace platí i pro otevřené

mu text.

K ochraně dat uložených v počítači se používá šifrování a ověřování. V mnoha počítačích jsou hesla nevratně zašifrována a uložena v paměti zařízení. Když uživatel přistoupí k počítači a zadá heslo, heslo je zašifrováno a porovnáno s uloženou hodnotou. Pokud jsou obě zašifrované hodnoty stejné, uživatel získá přístup k počítači, jinak je odepřen.

Často je pomocí algoritmu DES generováno zašifrované heslo, přičemž klíč se rovná heslu a prostý text se rovná identifikačnímu kódu uživatele.

Pomocí algoritmu DES můžete také šifrovat počítačové soubory pro ukládání.

Jeden z většina důležité aplikace algoritmus DES je ochrana zpráv elektronický systém platby (ESP) pro transakce s širokou klientelou a mezi bankami.

Algoritmus DES je implementován v bankomatech, terminálech v maloobchodní prodejny, automatizované pracovní stanice a sálové počítače. Rozsah dat, která chrání, je velmi široký – od plateb 50 dolarů až po převody mnoha milionů dolarů. Flexibilita základního algoritmu DES umožňuje jeho použití v široké řadě aplikací elektronických platebních systémů.

Algoritmus DES

Hlavní výhody algoritmu DES:

· je použit pouze jeden klíč o délce 56 bitů;

· po zašifrování zprávy pomocí jednoho balíčku můžete k dešifrování použít jakýkoli jiný;

· zajišťuje relativní jednoduchost algoritmu vysoká rychlost zpracování informací;

· dostatečně vysoká stabilita algoritmu.

DES šifruje 64bitové bloky dat pomocí 56bitového klíče. Dešifrování v DES je obrácená operace šifrování a provádí se opakováním šifrovacích operací v opačném pořadí (i přes zdánlivou samozřejmost to není vždy provedeno. Později se podíváme na šifry, ve kterých se šifrování a dešifrování provádí pomocí různých algoritmů).

Proces šifrování se skládá z počáteční permutace bitů 64bitového bloku, šestnácti šifrovacích cyklů a nakonec zpětné permutace bitů (obr. 1).

Ihned je třeba poznamenat, že VŠECHNY tabulky uvedené v tomto článku jsou STANDARDNÍ, a proto by měly být součástí vaší implementace algoritmu beze změny. Všechny permutace a kódy v tabulkách vybírají vývojáři tak, aby výběrem klíče co nejvíce ztížili proces dešifrování. Struktura algoritmu DES je znázorněna na obr. 2.

Obr.2. Struktura šifrovacího algoritmu DES

Necháme načíst další 8bajtový blok T ze souboru, který je transformován pomocí počáteční permutační matice IP (tabulka 1) takto: bit 58 bloku T se stane bitem 1, bit 50 bitem 2 atd., což bude výsledkem je: T(0) = IP(T).

Výsledná bitová sekvence T(0) je rozdělena do dvou sekvencí po 32 bitech: L(0) - levý nebo vyšší bit, R(0) - pravý nebo nižší bit.

Tabulka 1: Počáteční permutační matice IP

58 50 42 34 26 18 10 02

60 52 44 36 28 20 12 04

62 54 46 38 30 22 14 06

64 56 48 40 32 24 16 08

57 49 41 33 25 17 09 01

59 51 43 35 27 19 11 03

61 53 45 37 29 21 13 05

63 55 47 39 31 23 15 07

Poté se provede šifrování, které se skládá z 16 iterací. Výsledek i-tá iterace je popsána následujícími vzorci:

R(i) = L(i-1) xor f(R(i-1), K(i)),

kde xor je operace EXCLUSIVE OR.

Funkce f se nazývá šifrovací funkce. Jeho argumenty jsou 32bitová sekvence R(i-1), získaná v (i-1)-té iteraci, a 48bitový klíč K(i), který je výsledkem převodu 64bitového klíče K. Níže je podrobně popsána šifrovací funkce a algoritmus pro získání klíčů K(i).

Při 16. iteraci jsou získány sekvence R(16) a L(16) (bez permutace), které jsou zřetězeny do 64bitové sekvence R(16)L(16).

Poté se pozice bitů této sekvence přeskupí v souladu s maticí IP-1 (tabulka 2).

Tabulka 2: Inverzní permutační matice IP -1

40 08 48 16 56 24 64 32

39 07 47 15 55 23 63 31

38 06 46 14 54 22 62 30

37 05 45 13 53 21 61 29

36 04 44 12 52 20 60 28

35 03 43 11 51 19 59 27

34 02 42 10 50 18 58 26

33 01 41 09 49 17 57 25

Matice IP -1 a IP spolu souvisí takto: hodnota 1. prvku matice IP -1 je 40 a hodnota 40. prvku matice IP je 1, hodnota 2. prvek matice IP -1 je 8 a hodnota 8. prvku matice IP je rovna 2 atd.

Proces dešifrování dat je inverzní k procesu šifrování. Všechny kroky musí být provedeny v opačném pořadí. To znamená, že dešifrovaná data jsou nejprve přeskupena podle matice IP-1 a poté jsou provedeny stejné akce na sekvenci bitů R(16)L(16) jako v procesu šifrování, ale v opačném pořadí.

Iterativní proces dešifrování lze popsat pomocí následujících vzorců:

R(i-1) = L(i), i = 1, 2, ..., 16;

L(i-1) = R(i) xor f(L(i), K(i)), i = 1,2,...,16.

Při 16. iteraci jsou získány sekvence L(0) a R(0), které jsou zřetězeny do 64bitové sekvence L(0)R(0).

Bitové pozice této sekvence se pak přeskupí podle matice IP. Výsledkem takové permutace je původní 64bitová sekvence.

Nyní zvažte šifrovací funkci f(R(i-1),K(i)). Schematicky je to znázorněno na Obr. 3.


Obr.3. Výpočet funkce f(R(i-1), K(i))

Pro výpočet hodnoty funkce f se používají následující maticové funkce:

E - rozšíření 32bitové sekvence na 48bitovou,

S1, S2, ..., S8 - převod 6bitového bloku na 4bitový blok,

P - permutace bitů ve 32bitové sekvenci.

Expanzní funkce E je definována v tabulce 3. Podle této tabulky jsou první 3 bity E(R(i-1)) bity 32, 1 a 2 a poslední jsou 31, 32 a 1.

Tabulka 3: Funkce rozšíření E

32 01 02 03 04 05

04 05 06 07 08 09

08 09 10 11 12 13

12 13 14 15 16 17

16 17 18 19 20 21

20 21 22 23 24 25

24 25 26 27 28 29

28 29 30 31 32 01

Výsledkem funkce E(R(i-1)) je 48bitová sekvence, ke které je přidán modulo 2 (operace xor) pomocí 48bitové klávesy K(i). Výsledná 48bitová sekvence je rozdělena do osmi 6bitových bloků B(1)B(2)B(3)B(4)B(5)B(6)B(7)B(8). to je:

E(R(i-l)) xor K(i) = B(l)B(2)...B(8).

Funkce S1, S2, ..., S8 jsou definovány v tabulce 4.

Tabulka 4

K tabulce 4. je nutné další objasnění. Nechť je vstupem maticové funkce Sj 6bitový blok B(j) = b1b2b3b4b5b6, pak dvoubitové číslo b1b6 udává číslo řádku matice a b2b3b4b5 číslo sloupce. Výsledkem Sj(B(j)) bude 4bitový prvek umístěný na průsečíku zadané linky a sloupec.

Například B(1)=011011. Potom se S1(B(1)) nachází na průsečíku řádku 1 a sloupce 13. Ve sloupci 13 řádku 1 je hodnota 5. To znamená S1(011011)=0101.

Aplikováním operace výběru na každý z 6bitových bloků B(1), B(2), ..., B(8) získáme 32bitovou sekvenci S1(B(1))S2(B(2). ))S3(B(3))...S8(B(8)).

Nakonec, abychom získali výsledek šifrovací funkce, musí být bity této sekvence přeskupeny. K tomuto účelu se používá permutační funkce P (tabulka 5). Ve vstupní sekvenci se bity přeskupí tak, že z bitu 16 se stane bit 1, z bitu 7 se stane bit 2 a tak dále.

Tabulka 5: Permutační funkce P

Tím pádem,

f(R(i-1), K(i)) = P(S1(B(1)),...S8(B(8)))

Pro úplný popis algoritmu šifrování dat zbývá představit algoritmus pro získání 48bitových klíčů K(i), i=1...16. Při každé iteraci se použije nová hodnota klíče K(i), která se vypočítá z počátečního klíče K. K je 64bitový blok s osmi paritními bity umístěnými na pozicích 8,16,24,32,40,48, 56. 64.

K odstranění řídicích bitů a přeuspořádání zbytku se používá funkce G počáteční přípravy klíče (tabulka 6).

Tabulka 6

Matice G počáteční přípravy klíče

57 49 41 33 25 17 09

01 58 50 42 34 26 18

10 02 59 51 43 35 27

19 11 03 60 52 44 36

63 55 47 39 31 23 15

07 62 54 46 38 30 22

14 06 61 53 45 37 29

21 13 05 28 20 12 04

Výsledek transformace G(K) je rozdělen do dvou 28bitových bloků C(0) a D(0) a C(0) se bude skládat z bitů 57, 49, ..., 44, 36 klíče K, a D(0 ) se budou skládat z bitů 63, 55, ..., 12, 4 klíče K. Po definování C(0) a D(0), C(i) a D(i), i= 1...16, jsou určeny rekurzivně. Chcete-li to provést, použijte cyklický posun doleva o jeden nebo dva bity, v závislosti na čísle iterace, jak je uvedeno v tabulce 7.

Tabulka 7

Tabulka posunů pro výpočet klíče

Iterační číslo Shift (bity)
01 1
02 1
03 2
04 2
05 2
06 2
07 2
08 2
09 1
10 2
11 2
12 2
13 2
14 2
15 2
16 1

Výsledná hodnota je opět „namíchána“ podle matice H (tabulka 8).

Tabulka 8: Klíčová matice H

14 17 11 24 01 05

03 28 15 06 21 10

23 19 12 04 26 08

16 07 27 20 13 02

41 52 31 37 47 55

30 40 51 45 33 48

44 49 39 56 34 53

46 42 50 36 29 32

Klíč K(i) se bude skládat z bitů 14, 17, ..., 29, 32 sekvence C(i)D(i). Tím pádem:

K(i) = H(C(i)D(i))

Blokové schéma algoritmu výpočtu klíče je na obr. 4. Obr.

Obr.4. Blokové schéma algoritmu pro výpočet klíče K(i)

Zotavení zdrojový text se provádí podle tohoto algoritmu, ale nejprve použijete klíč

K(15), potom K(14) a tak dále. Nyní byste měli pochopit, proč autor vytrvale doporučuje používat dané matice. Pokud se zblázníte, můžete skončit s velmi tajným kódem, ale sami ho nerozluštíte!

Provozní režimy algoritmu DES

Aby plně uspokojil všechny požadavky na komerční systémyšifrování, je implementováno několik režimů provozu algoritmu DES. Nejpoužívanější režimy jsou:

· elektronický číselník (Electronic Codebook) - ECB;

· řetězec digitálních bloků (Cipher Block Chaining) - CBC;

· digitální zpětná vazba (Cipher Feedback) - CFB;

· externí zpětná vazba (Output Feedback) - OFB.

V tomto režimu je zdrojový soubor M rozdělen na 64bitové bloky (každý 8 bajtů): M = M(1)M(2)...M(n). Každý z těchto bloků je zašifrován nezávisle pomocí stejného šifrovacího klíče (obr. 5). Hlavní výhodou tohoto algoritmu je jeho snadná implementace. Nevýhodou je, že je relativně slabý proti zkušeným kryptoanalytikům.




Horní