NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

Lekce 2 - Symetrická a asymetrická kryptografie

V minulé lekci, Základní pojmy a zásady kybernetické bezpečnosti, jsme si ukázali proč zabezpečovat, co zabezpečovat a proti čemu zabezpečovat naše koncová zařízení.

V dnešní lekci navážeme na základní pojmy kybernetické bezpečnosti a budeme se zabývat symetrickou a asymetrickou kryptografií.

Kryptografie

Nejprve si vysvětlíme pojmy kryptografie a kryptoanalýza. Kryptografie je věda o tvorbě šifer a naopak kryptoanalýza je věda o luštění šifer. V dnešní době je většina bezpečnostních opatření založena právě na kryptografických technikách, a tak si o nich dnes něco málo řekneme.

Kódování a šifrování

Ačkoli každý z nás má zajisté nějakou představu o tom, co šifrování a kódování znamená, bývají právě tyto dva termíny často zaměňovány. Kódování je prostý zápis jiným způsobem, matematici používají termín zobrazení. Zatímco šifrování je zobrazení, které je navíc parametrizované klíčem.

Pokud převedeme běžný text do Morseovy abecedy nebo přeložíme například do němčiny, jedná se o kódování. U kódování nejde o nějakou ochranu či utajení. I když pokud neumíme například již zmíněnou němčinu, tak nám takto zakódovaný text samozřejmě srozumitelný nebude. Naproti tomu v případě šifrování by nemělo být možné provést operaci šifrovaní či dešifrování bez přesné znalosti klíče, a to bez ohledu na to, zda samotný postup šifrování známe či nikoliv.

V případě kvalitní šifry závisí tedy odolnost proti prolomení pouze na jejím klíči.

Při luštění šifry existují dva základní postupy ke zjištění klíče:

  • Klíč odhadneme na základě informací o osobě, která klíč vytvářela. Můžeme k tomu využít například jména, data narození, jména domácích mazlíčků, oblíbených zpěváků či herců, matematické řady a podobně.
  • Postupně všechny možné klíče vyzkoušíme, dokud se netrefíme do toho správného. Tato metoda se nazývá BFA (Brutal Force Attack) neboli útok hrubou silou a v principu je ji možné použít na většinu šifer.

Útok hrubou silou není možné použít například u Vernamovy šifry, ale tento speciální případ v tomto kurzu řešit nebudeme.

Symetrická šifra

Tento typ šifry odpovídá nejvíce tomu, co si většina lidí pod pojmem šifra představí. Jedná se postup, který používá stejný klíč pro šifrování i dešifrování textu či dat obecně. V kryptografii se ale pro data používá běžně výraz otevřený / šifrovaný text. Otevřený text je text určený k utajení, který se při procesu šifrování převede do šifrovaného textu.

Dnes se všeobecně používá AES (Advanced Encryption Standard). Někdy je toto označení ještě doplněno o délku klíče v bitech, tedy například AES-256. AES s 256 bitovým true random (skutečně náhodným) klíčem je v současnosti pokládána za prakticky neprolomitelnou šifru, a to včetně využití kvantových počítačů při procesu lámání. AES se používá jako primární šifra pro ochranu dat obecně a důvěřuje ji americká vláda pro utajení informací úrovně Přísně tajné, takže my budeme také :)

Výhody a nevýhody symetrické šifry

Symetrické šifry mají spoustu výhod, a to například že jsou velice rychlé a klíče nemusejí být příliš dlouhé. Nicméně kdybychom je chtěli použít například pro šifrování komunikace E2E, narazili bychom hned na první problém, a to jak si bezpečně vyměnit úvodní šifrovací klíč s protistranou. Pokud je to kamarád vedle nás, nemáme problém, sejdeme se a na klíči se domluvíme. Ale jak výměnu bezpečně vyřešit, když je protistrana na druhé straně zeměkoule?

Dalším problémem je počet klíčů. U symetrické šifry nestačí pro každého pouze jeden klíč, to by musel mít zvláštní kombinaci klíčů pro každého, s kým chce takto komunikovat. Ještě mnohem komplikovanější by to bylo, kdybychom chtěli použít symetrickou šifru k podpisu. V tomto případě by musela existovat zvláštní kombinace klíčů nejenom pro všechny zúčastněné strany, ale také pro každý takto podepsaný text. A tímto se dostáváme k asymetrické kryptografii.

Asymetrická šifra

Asymetrická šifra využívá způsob šifrování, kde je nutný jeden klíč pro šifrování a zase druhý pro dešifrování. Tedy pokud text zašifrujeme šifrovacím klíčem, potřebujeme poté i dešifrovací klíč, abychom ho byli schopni zpět dešifrovat do otevřené podoby. Přičemž z jednoho klíče nelze odvodit ten druhý.

To ale není úplně pravda. Principiálně to samozřejmě možné je, ale postup je tak výpočetně náročný, že v praxi jej nejsme schopni provést.

Proces asymetrického šifrování funguje tak, že si na začátku vygenerujeme z náhodných hodnot pár klíčů (key pair). Jeden klíč, tzv. tajný klíč si pečlivě uschováme do nějakého souboru nebo na čipovou kartu. Zkrátka tak, aby se k němu nikdo kromě nás nemohl dostat. Druhý klíč, tzv. veřejný klíč můžeme zveřejnit či někomu poslat otevřeným e-mailem.

Pokud nám pak bude chtít někdo poslat zprávu, aniž by ji mohl číst kdokoli jiný, stačí když ji zašifruje naším veřejným klíčem. Protože jen my máme odpovídající tajný klíč, můžeme ji zase dešifrovat.

Ve skutečnosti se kvůli větší rychlosti zpracování vlastní zpráva šifruje symetricky pomocí AES náhodně zvoleným jednorázovým symetrickým klíčem, ten se pak zašifruje asymetricky veřejným klíčem příjemce a přibalí ke zprávě.

Digitální podpis

Na výše uvedeném principu funguje i digitální podpis. Pokud k naší zprávě přiložíme tu samou zprávu, ale naopak zašifrovanou našim tajným klíčem, každý si poté pomocí našeho veřejného klíče může snadno ověřit, že jsme ji skutečně zašifrovali my. V praxi se opět nešifruje a nepřikládá celá zpráva znovu, ale pouze její zkrácený otisk neboli hash, kterému se budeme věnovat v průběhu kurzu.

V tuto chvíli by mohlo vypadat, že jsme již úspěšně vyřešili i všechny problémy s autentizací. Z čistě kryptografického hlediska je to pravda, nicméně v praxi nám vyvstává ještě jeden problém. Metodou digitálního podpisu sice ověříme, že se jedná o stejnou protistranu, jež nám veřejný klíč poskytla, nicméně každý z nás si může takových klíčů vygenerovat kolik jen bude chtít a při jejich zaslání tvrdit, že je například prezident USA :)

V některých situacích nám to může být jedno, protože pro nás není důležité, jaké jméno si kdo pro své označování vybral. Avšak například banka nebo úřad potřebuje ještě ztotožnit daný veřejný klíč s reálnou identitou v občanském životě. Nebo naopak my potřebujeme jistotu, že se jedná skutečně o banku nebo státní instituci s danou pravomocí. Jsme tedy zpět u toho, že se dvě protistrany zase musejí nejdříve sejít. Tentokrát sice ne proto, aby si vyměnili klíče, ale proto, aby se ujistili, že daný klíč skutečně označuje daný subjekt.

Certifikáty a certifikační autority

K vyřešení této situace do hry vstupují certifikáty a certifikační autority. Certifikační autorita (CA) funguje jako zprostředkovatel důvěry mezi dvěma stranami tím, že ověří identitu žadatele a vytvoří pro něho certifikát. Certifikát obsahuje veřejný klíč žadatele, doplněný o informace o jeho reálné identitě a to vše je podepsané tajným klíčem příslušné certifikační autority.

Celý proces je velmi podobný tomu, jako když stát po ověření naší identity vydá občanský průkaz, kterým se následně prokazujeme dalším subjektům. Jen namísto občanského průkazu zde ověřovací funkci plní digitální podpis dané autority.

Pro ověření takového certifikátu potom stačí znát veřejný klíč dané certifikační autority a důvěřovat jí. Tím se nutnost ověření každé strany každou redukuje pouze na ověření stran u daleko menšího počtu certifikačních autorit. Dále lze při tom procesu ověření využít tzv. řetězení důvěry. Jestliže platí, že subjekt A věří B a subjekt B věří C, pak také platí, že A může věřit C.

Více si o důvěryhodnosti certifikátů povíme v jedné z následujících lekcí. Zatím si jen uvedeme, že v ČR aktuálně působí tři certifikační autority:

Asymetrické algoritmy

Asymetrických šifrovacích algoritmů není zdaleka takové množství, jako je těch symetrických. A to z důvodu, že symetrických algoritmů je z logiky jejich fungování možné vytvořit víceméně nekonečno. V praxi se tak nejspíše setkáme zejména s následujícími algortimy:

  • RSA - První algoritmus, který se začal všeobecně používat. Založený na problému faktorizace velkých čísel a v současnosti se považuje za bezpečný, pokud používá klíč o délce alespoň 2048 bitů. Pokud ale generujeme nový pár klíčů, použijeme raději délku 3072 bitů nebo dokonce 4096 bitů, pokud je v daném software dostupná.
  • ECDSA/EdDSA - Je modernější varianta založená na problému řešení diskrétních logaritmů nad eliptickými křivkami. Umožňuje vyšší bezpečnost při využití podstatně kratšího klíče. Pokud generujeme nový pár klíčů a nepotřebujeme zpětnou kompatibilitu pro nějaký historický systém, použijeme spíše tento algoritmus.

Oba výše uvedené algoritmy by ale teoreticky mohly být někdy v budoucnu prolomitelné za pomoci kvantových počítačů. Proto byly vyvinuty algoritmy odolné i proti tomuto způsobu útoku. Z nich je vhodnou alternativou například NTRU, šifrovací systém, který pro šifrování a dešifrování dat používá asymetrickou kryptografii založenou na celočíselných mřížích.

V příští lekci, Hesla a biometrická ochrana, se podíváme na další využití kryptografie při ochraně dat. Budeme se zabývat zejména hesly, jejich bezpečností a ukládáním. Řeč bude ale i o biometrii a ochraně soukromí.


 

Předchozí článek
Základní pojmy a zásady kybernetické bezpečnosti
Všechny články v sekci
Kybernetická bezpečnost
Přeskočit článek
(nedoporučujeme)
Hesla a biometrická ochrana
Článek pro vás napsal David Janko
Avatar
Uživatelské hodnocení:
146 hlasů
Autor se věnuje poradenství převážně v oblasti kybernetické bezpečnosti.
Aktivity