Warning: Table './d1394_drupal/cache' is marked as crashed and last (automatic?) repair failed query: SELECT data, created, headers, expire, serialized FROM cache WHERE cid = 'variables' in /data/web/virtuals/1394/virtual/www/includes/database.mysql.inc on line 136

Warning: Table './d1394_drupal/cache' is marked as crashed and last (automatic?) repair failed query: UPDATE cache SET data = 'a:995:{s:13:\"theme_default\";s:5:\"fever\";s:13:\"filter_html_1\";s:1:\"1\";s:18:\"node_options_forum\";a:1:{i:0;s:6:\"status\";}s:18:\"drupal_private_key\";s:64:\"5fe6eae150af4e56112c001190001c50f30fff335724864ea3d95df181c7224f\";s:10:\"menu_masks\";a:30:{i:0;i:127;i:1;i:125;i:2;i:63;i:3;i:62;i:4;i:61;i:5;i:60;i:6;i:59;i:7;i:58;i:8;i:57;i:9;i:56;i:10;i:31;i:11;i:30;i:12;i:29;i:13;i:28;i:14;i:25;i:15;i:24;i:16;i:22;i:17;i:21;i:18;i:15;i:19;i:14;i:20;i:13;i:21;i:12;i:22;i:11;i:23;i:7;i:24;i:6;i:25;i:5;i:26;i:4;i:27;i:3;i:28;i:2;i:29;i:1;}s:12:\"install_task\";s:4:\"done\";s:13:\"menu_expanded\";a:1:{i:0;s:9:\"menu-user\";}s:9:\"site_name\";s:5:\"FLOPS\";s:19:\"file_directory_temp\";s:23:\"sites/default/files/tmp\&quo in /data/web/virtuals/1394/virtual/www/includes/database.mysql.inc on line 136

Warning: Cannot modify header information - headers already sent by (output started at /data/web/virtuals/1394/virtual/www/includes/database.mysql.inc:136) in /data/web/virtuals/1394/virtual/www/includes/bootstrap.inc on line 726

Warning: Cannot modify header information - headers already sent by (output started at /data/web/virtuals/1394/virtual/www/includes/database.mysql.inc:136) in /data/web/virtuals/1394/virtual/www/includes/bootstrap.inc on line 727

Warning: Cannot modify header information - headers already sent by (output started at /data/web/virtuals/1394/virtual/www/includes/database.mysql.inc:136) in /data/web/virtuals/1394/virtual/www/includes/bootstrap.inc on line 728

Warning: Cannot modify header information - headers already sent by (output started at /data/web/virtuals/1394/virtual/www/includes/database.mysql.inc:136) in /data/web/virtuals/1394/virtual/www/includes/bootstrap.inc on line 729
Základy šifrování: symetrická a asymetrická kryptografie | FLOPS

Základy šifrování: symetrická a asymetrická kryptografie

Obory článku
bezpečnost, kryptografie

Téměř v každé učebnici je kryptografická komunikace vysvětlována na komunikaci mezi Alicí a Bobem. Jenže naše drahá Alice a její Bob jsou již tak staří, že přestali kryptograficky komunikovat. Naštěstí mají potomka Aloise, který pokračuje v rodinné tradici kryptografické komunikace se svou milou Bohumilou.

Otisk (hash)

Nejprve si ukážeme, jak mocným nástrojem je otisk (hash). Otisk je jednocestná funkce, která nám z libovolně dlouhého textu vytvoří krátký řetězec konstantní délky. Výsledný řetězec (otisk) by měl maximálně charakterizovat původní text. Typická velikost výsledného textu je 16 B (např. algoritmus MD-5) nebo 20 B (algoritmus SHA-1). Dnes se již algoritmy MD-5 a SHA-1 vesměs považují za slabé, proto se stále častěji setkáváme s novými algoritmy, produkujícími ale delší otisky: SHA-224 (otisk dlouhý 28 B), SHA-256 (otisk 32 B), SHA-384 (otisk 48 B) a SHA-256, někdy též označovanou SHA-2 s otiskem dlouhým 64 B.

Obrázek 1.1 – Otisk

Jednocestnou funkcí se rozumí algoritmy, které nejsou výpočetně náročné. Je však výpočetně velice náročné k výsledku nalézt původní text. Jednocestnou funkci lze přirovnat k manželství. Je přece jednoduché se oženit, ale často velice obtížné se rozvést.

Kvalitní jednocestné funkce pro výpočet otisku by měly dát výrazně jiný výsledek při drobné změně původního textu. Počítáme-li např. otisk pro digitální podpis z textu nesoucího platební příkaz, pak by bylo nemilé, kdyby se nám po připsání nuly k převáděné částce otisk nezměnil.

Jelikož se otisk počítá z libovolně dlouhého textu, tak ke konkrétnímu otisku je teoreticky možné najít nekonečně mnoho původních textů. U některých algoritmů (např. MD-5) se již daří nacházet texty se stejným otiskem. Výsledkem je pak opouštění těchto algoritmů a jejich nahrazení jinými (algoritmy třídy SHA-2, FIPS PUB 180-2; algoritmus WHIRLPOOL – ISO/ IEC 10118-3:2003).

Jednocestné funkce jsou konstruovány na výpočetních operacích nízké úrovně (především bitové operace a posuny), a jsou tedy výpočetně velmi rychlé a efektivní. Algoritmy pro výpočet otisku nejsou v žádném případě šifrovacími algoritmy (už vzhledem k nejednoznačnosti – obecně neexistuje inverzní funkce), ale používají se v roli kvalitního „otisku prstu dat” (fingerprint).

Jak využije Alois otisk ve své komunikaci se svou milou Bohumilou? No přece využije otisk jako důkaz, že zpráva na cestě od Aloise k Bohumile nebyla změněna, tj. využije otisk jako důkaz integrity zprávy. Alois neodešle pouze samotná data (text) zprávy, ale data doplní o patu zprávy (trailer) obsahující otisk z textu zprávy (obr. 1.2).

Bohumila, poté co přijme zprávu, spočte otisk z přijaté zprávy a porovná svůj výsledek s otiskem ze zápatí přijaté zprávy (tj. s otiskem spočteným Aloisem). Pokud jsou oba otisky shodné, zpráva nebyla cestou změněna. Tj. Bohumila provedla kontrolu integrity zprávy. Tento typ důkazu integrity přenášených dat využívají linkové protokoly (např. Ethernet) pro detekci chyb vzniklých poruchami linek (poruchami fyzické vrstvy komunikace v počítačové síti).

Obrázek 1.2: Využití otisku jako důkazu integrity zprávy

 

Jenže algoritmus výpočtu otisku používaný Aloisem je veřejně popsán v příslušné technické normě. Tuto normu si přečte i žárlivý Cyril, který zprávu od Aloise pozmění v jeho neprospěch a ten pošle Bohumile (obr. 1.3).

Obrázek 1.3: Útok na integritu zprávy na bázi otisku

 

Naštěstí Alois s Bohumilou Cyrila znají, proto si při své tajné schůzce vymění tajemství (šipka 1 na obr. 1.4), které sdílí pouze Alois s Bohumilou, a Cyril je tudíž nezná. Jako sdílené tajemství mezi Aloisem a Bohumilou stačí např. nějaký krátký textový řetězec.

Od chvíle, kdy si Alois s Bohumilou vyměnili sdílené tajemství, tak vždy, když bude Alois odesílat nějakou zprávu Bohumile, nebude otisk počítat pouze ze zprávy, ale do výpočtu otisku zahrne i sdílené tajemství (šipka 2 na obr. 1.4). Jelikož Cyril tajemství nezná, není schopen takovýto otisk spočíst, proto nemůže pozměňovat zprávu, aniž by to Bohumila nepoznala.

Obrázek 1.4: Zajištění integrity přenášených dat pomocí sdíleného tajemství. Na tomto principu je založen algoritmus HMAC (Keyed-Hashing for Message Authentication) – viz RFC-2104

 

Otisk spočtený nejenom ze zprávy, ale ze zprávy nějakým způsobem zřetězené se sdíleným tajemstvím se často označuje jako MAC (Message Authentication Code, kryptografický kontrolní součet). MAC se využívá velice často, např. v protokolech SSL/TLS, protokolu IPsec, ale ve své podstatě jsou na této technice postaveny i autentizační kalkulátory pro tvorbu jednorázových hesel.

MAC se někdy označuje jako „symetrický podpis“. Z tohoto označení však mnohým kryptologům naskakují pupínky. Proč? Protože na rozdíl od digitálního podpisu se takto nedá zaručit pravost dokumentu („nepopiratelnost“ – non repudiation), ale pouze jen integrita přenášených dat.

Vysvětlení je prosté. Kdyby Bohumila byla potvora, zprávu od Aloise by sama změnila a spočetla z ní „symetrický podpis“. A Aloisovi by se vysmála. Kdyby se Alois divil, tak by mu ukázala změněnou zprávu a řekla mu: „Vidíš, co jsi zač, vždyť mě nemáš rád.“ A Alois by se spravedlnosti nedovolal, protože by nemohl dokázat, zdali „symetrický podpis“ opravdu vytvořil on, nebo jej podvrhla Bohumila.

Replay attack, nonce

Uvedený mechanismus má jeden velký nedostatek. Útočník může odposlechnout a zaznamenat přenášená data zaslaná Aloisem Bohumile včetně MAC, a po chvíli to celé Bohumile zaslat znovu (zopakovat). Tento typ útoku se označuje jako replay attack.

Pokud Alois zasílá Bohumile milostný dopis, útočník Bohumilu nanejvýš potěší, když jí Aloisův dopis pošle ještě jednou. Avšak pokud Alois neposílá milostný dopis Bohumile, ale posílá platební příkaz do banky, pak bude jeho platební příkaz zaplacen dvakrát a Alois přijde o peníze (v bankovnictví se to označuje jako dual spend attack).

Tomuto útoku se Alois brání např. pomocí vzestupného číslování svých zpráv. Pokud Bohumila obdrží zprávu nižšího než očekávaného čísla, pochopí, že se jedná o zopakovanou starou zprávu. Obdobně banka nezpracuje dva příkazy stejného čísla.

Jinou obranou je nonce. Nonce je dostatečně dlouhé náhodné číslo (zpravidla více jak 16 B dlouhé), které Alois vždy přidává do své zprávy (k přenášeným datům). Tím zajistí, že je nepravděpodobné, aby Alois odeslal dvě stejné zprávy, a tudíž generoval dva stejné MAC. Avšak Bohumila musí kontrolovat, zdali již v minulosti neobdržela tutéž zprávou se stejnou nonce.

Jakou chybu může Alois udělat? Např. může použít chybný software, který negeneruje čísla náhodně. Pak může vytvořit dvě stejné nonce. Aby se i tomuto předešlo, tak se někdy nonce vytváří tak, že se skládá ze dvou částí: jedna část obsahuje náhodné číslo a druhá část obsahuje datum a čas, který je sám o sobě neopakovatelný.

Symetrické šifry

Jenže Alois s Bohumilou si mohou také přát, aby byl jejich vztah zachován v tajnosti (aby byla zachována privátnost jejich vztahu), proto svou komunikaci šifrují. K dispozici mají např. symetrické šifry (obr. 1.5). Při výběru této šifry si předem musí na své tajné schůzce vyměnit tajný šifrovací klíč (1). Ten budou sdílet podobně jako sdílené tajemství. Nesmí dopustit, aby se k němu dostala třetí osoba (např. Cyril).

Obrázek 1.5: Symetrická šifra

 

Alois zprávu šifruje tajným klíčem. Na výsledek pak Bohumila aplikuje dešifrovací algoritmus, pro který použije týž tajný klíč. Dešifrování se vyruší s šifrováním a Bohumila získá původní zprávu.

Symetrická šifra má v jistém smyslu autorizační účinek. Z pohledu Bohumily mohl zprávu zašifrovat pouze Alois, protože přece nikdo jiný než ona a Alois nemají k dispozici tajný klíč.

Symetrických šifrovacích algoritmů je celá řada. Snad nejrozšířenějším je algoritmus DES, používající šifrovací klíč délky 56 bitů. Dnes se však považuje za nedostatečný. Z algoritmu DES byl odvozen algoritmus 3DES s klíčem 112 bitů nebo 168 bitů (112 = 2 x 56 a 168 = 3 x 56 (56 je délka šifrovacího klíče algoritmu DES)). Dále se používají algoritmy s délkou klíče 128 bitů (IDEA, RC2, RC4 atd.). Aktuálně doporučovaným algoritmem je však algoritmus AES s délkou klíče 128, 192 nebo 256 bitů.

Jedná se vesměs o blokové šifry. Tj. data se šifrují/dešifrují po blocích dlouhých zpravidla 8 B. Pokud jsou vstupující data kratší, musí se nějak dorovnat na 8 B. I když útočník nevidí do šifrovaného textu, mohl by hypoteticky útočit tak, že by zaměnil pořadí jednotlivých zašifrovaných bloků (obr. 1.6). Tomu se šifry brání vázáním po sobě následujících bloků. Hovoříme o tzv. módu šifry, který zahrnutím obsahu předchozího bloku do bloku následujícího zajišťuje, že nelze přehazovat jednotlivé šifrované bloky.

Velice zajímavou otázkou je, jakou informaci máme zahrnout do prvního šifrovaného bloku. Pokud bychom nezahrnovali nic, dva shodou okolností stejné texty by měly i shodné zašifrované texty. Útočník by sice nebyl schopen získat původní (nešifrovaný) text, ale informace, že se jedná o tutéž zprávu, pro něj také nemusí být k zahození. Proto se často před šifrováním zprávy vygenerují náhodná čísla (tzv. inicializační vektory), která se zahrnou do prvního šifrovaného bloku, pak nelze porovnáním dvou zašifrovaných textů získat informace o rozdílech mezi vstupními texty.

Často používanými módy jsou např. módy CBC (Cipher block chaining mode) či ECB (Electro-nic codeblock mode). Pokud chceme vyjádřit to, že máme na mysli šifrovací algoritmus s konkrétním módem, říkáme např. DES-CBC či DES-ECB nebo IDEA-CBC či IDEA-ECB atd.

Obrázek 1.6: Význam módu šifry (útočník ví, že 5. a 6. blok obsahuje částku)

 

Asymetrické šifry

Jiným typem šifer jsou asymetrické šifry. Tyto šifry nepoužívají jeden tajný šifrovací klíč sdílený mezi odesilatelem a příjemcem, ale vždy se používá pár šifrovacích klíčů. Jeden klíč pro šifrování a druhý pro dešifrování. U digitálního podpisu pak uvedeme, že operace šifrování a dešifrování jsou u některých šifer zaměnitelné, proto u asymetrických šifer nemluvíme o šifrovacím a dešifrovacím klíči, ale o veřejném a soukromém klíči. Asi nejznámějším asymetrickým šifrovacím algoritmem je algoritmus RSA.

Pokud chce Alois šifrovat zprávu Bohumile asymetrickou šifrou, pak (obr. 1.7):

  1. Bohumila, tj. příjemce zprávy, si musí vygenerovat dvojici klíčů: veřejný klíč (VK-B) a soukromý klíč (SK-B).
  2. Bohumila si uloží svůj soukromý klíč do důvěryhodného úložiště klíčů. Např. na disk, na čipovou kartu atd. Soukromý klíč je aktivem Bohumily, které si musí střežit.
  3. Bohumila distribuuje svůj veřejný klíč (VK-B) do celého světa. Klidně může svůj veřejný klíč poslat Aloisovi po žárlivém Cyrilovi.
  4. Alois po obdržení veřejného klíče Bohumily šifruje zprávu Bohumile jejím veřejným klíčem (VK-B).
  5. Bohumila (příjemce) dešifruje přijatou šifrovanou zprávu svým soukromým klíčem (SK-B) a získá původní zprávu.

Základní vlastností šifrování na bázi asymetrických algoritmů je skutečnost, že je relativně jednoduché za využití veřejného klíče šifrovat text, ale na základě znalosti veřejného klíče a veřejným klíčem šifrované zprávy je velice obtížné získat původní zprávu.

Obrázek 1.7: Asymetrická šifra

 

Délka šifrovacích klíčů pro algoritmus RSA se tč. považuje za ještě bezpečnou, pokud je alespoň 1 024 bitů. Často se však používají klíče dlouhé 2 048 nebo i 4 096 bitů (v závislosti na tom, jestli je protivníkem kolega na LAN, útočník z Internetu či NSA).

Existují i jiné asymetrické algoritmy. Dnes se často mluví o algoritmu ECC – Elliptic Curve Cryp-tography (eliptické křivky). Obecně se míní, že z bezpečnostního hlediska odpovídá 1 024 bitů dlouhému RSA klíči 160 bitů dlouhý ECC klíč, přičemž výpočetní náročnost je srovnatelná.

Jiným algoritmem je Diffie-Hellmanův (DH) algoritmus. Ten se vůbec nehodí k nějakému asymetrickému šifrování, ale k bezpečnému ustavení tajných klíčů či sdílených tajemství. Aby Alois s Bohumilou mohli komunikovat symetrickou šifrou, tak se nejprve za využití algoritmu DH dohodnou na tajném klíči, aniž by museli organizovat nějakou tajnou schůzku.

Oba nejprve vygenerují dvojici: veřejné a soukromé DH číslo. Vzájemně si pak vymění (např. volně přes Internet) svá veřejná DH čísla. Obě strany jsou následně ze znalosti svého veřejného a soukromého DH čísla a veřejného DH čísla svého protějšku schopny spočíst sdílené tajemství. Od tohoto tajemství je pak snadno možné nějakou transformací odvodit symetrický šifrovací klíč, který se použije pro šifrování vzájemné komunikace např. algoritmem AES. Diffie-Hellmanův algoritmus hojně využívá např. IPsec.

Bez ohledu na délku klíčů obecně platí, že asymetrické šifrovací algoritmy jsou výpočetně mnohem náročnější než symetrické algoritmy.


Text byl převzat se svolením společnosti Computer Press z knihy Velký průvodce infrastrukturou PKI a technologií elektronického podpisu, 2. aktualizované vydání. Autory knihy jsou Libor Dostálek, Marta Vohnoutová a Miroslav Knotek.

Výše uvedený článek je úvodem první kapitoly. Kniha se po nezbytném a velmi srozumitelném základu dále věnuje zejména jednotlivým prvkům bezpečné elektronické komunikace a konkrétním postupům pro implementaci jejích fází – od vybudování vlastní certifikační autority přes zabezpečení webu či pošty až po vytváření důvěryhodných archivů pro dlouhodobé uchování dokumentů. V publikaci najdou své části či pasáže jak začínající zájemci, tak i relativně pokročilí odborníci v oboru, kteří chtějí jít do hloubky „až na význam jednotlivých bitů“.

Kniha vyšla v nakladatelství Computer Press v roce 2010. Další informace včetně podrobného obsahu a možnosti objednání najdete na webu vydavatele.
 

Váš hlas: Žádné Průměr: 9.1 (15 votes)