Maturitní otázka č. 12 – šifrování a ověřování dat

Odbočka na začátek: symetrické šifry

Šifra je symetrická, když tentýž klíč používá pro zašifrování i dešifrování zprávy. Odesilatel i příjemce se musí na klíči nějakým způsobem předem domluvit, třeba si ho předat v úschovně zavazadel na nádraží. (Šiframi bez klíče se vůbec zabývat nebudeme, nejsou k ničemu dobré.)

Symetrické šifry obvykle nebývají založené na vysoké matematice, ale jen na pečlivém zamotávání vstupu. Jednoduchá symetrická šifra je Caesarova, posuv v abecedě. Ta se dá jednoduše zlomit vyzkoušením 26 možných variant, nebo lépe frekvenční analýzou. Jejím jednoduchým rozšířením je šifraVigenèrova: ke zprávě připíšeme dokola zopakovaný klíč (řetězec písmen) a sečteme příslušné dvojice písmen zprávy a klíče. Je potřeba nějak tipnout délku klíče, pak jde rozluštit stejně triviálně jako Caesarova. Slavná a výrazně bezpečnější šifra je německá Enigma, k jejímu prolomení Britové používali jeden z prvních počítačů.

Všechny dosud popsané šifry byly proudové v tom smyslu, že šifrový text vyrábí znak po znaku. V počítačích se mnohem častěji používají šifry blokové, které pracují s několika (například šestnácti) bajty naráz. Typicky jsou to AES (Advanced Encryption Standard) nebo starší DES (Data Encryption Standard), Blowfish či Twofish.

Vysvětlete technologii asymetrických šifer a digitálních podpisů

Asymetrická šifra umožňuje něco na první pohled absurdního: i když Velký Bratr odposlouchává spojení od začátku do konce, šifrovanou komunikaci nedokáže rozluštit. Není potřeba posílat klíč předem; vyrobíme totiž klíče dva. Jeden označíme jako soukromý a budeme jej pečlivě střežit před špiony, druhý prohlásíme za veřejný a řekneme jej s klidem jak příjemci zprávy, tak i Velkému Bratrovi. Kouzlo spočívá v tom, že zprávu jde zašifrovat veřejným klíčem a dešifrovat jen klíčem soukromým.

Digitální podpis je asymetrická šifra použitá naruby: budeme si hlídat klíč pro šifrování a zveřejníme naopak klíč pro dešifrování. Nikdo jiný pak není schopný naše zprávy zašifrovat a každý tedy může pomocí veřejného klíče ověřit, že jsme zprávu psali právě my, přesněji – někdo s naším soukromým klíčem.

Je velmi nepraktické používat asymetrickou šifru přímo, především proto, že je strašně pomalá. S digitálním podpisem je to ještě horší: když chceme všem umožnit zprávu číst a podpis poslat jen pro ověření, museli bychom posílat zprávu v otevřené i šifrované podobě, tedy zhruba dvojnásobek dat. Tenhle problém elegantně řeší mechanizmus PGP (Pretty Good Privacy), který zapojí do hry i symetrickou šifru a hashovací funkci.

Myšlenka opět není nijak zvlášť složitá: protože symetrické šifry jsou na výpočet výrazně rychlejší, použijeme je pro šifrování zpráv. Pro každou zprávu vygenerujeme nový náhodný klíč, a teprve ten zašifrujeme asymetrickou šifrou tak, aby jej mohl přečíst jen příjemce zprávy. Takhle zašifrovaný symetrický klíč pak ke zprávě prostě přibalíme. Další výhodou je, že takhle můžeme přibalit klíče pro několik různých příjemců a všichni budou schopni zprávu přečíst.

Digitální podpis pomocí PGP používá hashovací funkci (ta převádí libovolně dlouhou zprávu jednoznačně na několikabajtové číslo, podrobněji v poznámkách z loňska). Ze zprávy nejdřív spočítáme hash, a jen ten digitálně podepíšeme. Kdokoli pak může hash dešifrovat a porovnat jej s hashem přijaté zprávy, aby ověřil její pravost. Mimochodem, pro podepisování a dešifrování používáme dva různé soukromé klíče, nikdy ten samý.

Perlička navíc: RSA

Nejznámější a poměrně jednoduchá je šifra RSA. Je založená na jedné z mnoha vět známých pod jménem Eulerova; pro účely RSA ta věta říká, že pro dvě prvočísla p, q a libovolné x platí (x(p-1)(q-1)) % (p·q) = 1 (kde a%b je zbytek z čísla a po dělení číslem b). Příjemce náhodně vygeneruje obě prvočísla o délce řádově stovek bitů (!) a pak navíc (téměř libovolně) zvolí číslo e, řádově desetibitové.

Zprávu M odesilatel zašifruje jako C = (Me) % (p·q); veřejný klíč tedy obsahuje číslo e a součin p·q. Obě prvočísla přímo ale zná jen příjemce a není prakticky možné je ze součinu zpětně získat. S jejich pomocí může příjemce dopočítat hodnotu (p-1)(q-1) a potom vhodný soukromý klíč d tak, aby platilo (d·e) % ((p-1)(q-1)) = 1. Díky Eulerově větě (a také díky jednoduché úpravě výrazu) potom platí (Md·e) % (p·q) = M, tedy (Cd) % (p·q) = M. Jedním klíčem umocňujeme a tím šifrujeme, druhým umocňujeme a dešifrujeme.

Popište některé uplatnění kryptografických hashovacích funkcí

Další použití jsou podrobně rozebraná v poznámkách z loňska.

Zmiňte se o běžných způsobech šifrování místních dat a síťové komunikace

Pro bezpečné stahování webových stránek se používá aplikační protokol HTTPS (HTTP Secure), což je nadstavba nad šifrovacím protokolem TLS (Transport Layer Security). Jejich princip blízce připomíná PGP – pro každé spojení vyrobíme nový symetrický klíč. Krom samotného šifrování a digitálních podpisů se ještě uživatel chce ujistit, že hostitel skutečně odpovídá zadané webové adrese; to vyžaduje složitý strom certifikačních autorit a jsou v tom velké peníze.

Chybí ještě zmínka o způsobech šifrování místních dat.