2. diel - Symetrická a asymetrická kryptografia
V minulej lekcii, Základné pojmy a zásady kybernetickej bezpečnosti , sme si ukázali prečo zabezpečovať, čo zabezpečovať a proti čomu zabezpečovať naše koncové zariadenia.
V dnešnej lekcii nadviažeme na základné pojmy kybernetickej bezpečnosti a budeme sa zaoberať symetrickou a asymetrickou kryptografiou.
Kryptografia
Najprv si vysvetlíme pojmy kryptografie a kryptoanalýza. Kryptografia je veda o tvorbe šifier a naopak kryptoanalýza je veda o lúštení šifier. V dnešnej dobe je väčšina bezpečnostných opatrení založená práve na kryptografických technikách, a tak si o nich dnes niečo málo povieme.Kódovanie a šifrovanie
Hoci každý z nás má určite nejakú predstavu o tom, čo šifrovanie a kódovanie znamená, bývajú práve tieto dva termíny často zamieňané. Kódovanie je jednoduchý zápis iným spôsobom, matematici používajú termín zobrazenia. Zatiaľ čo šifrovanie je zobrazenie, ktoré je navyše parametrizované kľúčom.Pokiaľ prevedieme bežný text do Morseovej abecedy alebo preložíme napríklad do nemčiny, jedná sa o kódovanie. Pri kódovaní nejde o nejakú ochranu či utajenie. Aj keď ak nevieme napríklad už spomínanú nemčinu, tak nám takto zakódovaný text samozrejme zrozumiteľný nebude. Naproti tomu v prípade šifrovania by nemalo byť možné vykonať operáciu šifrovania či dešifrovania bez presnej znalosti kľúča, a to bez ohľadu na to, či samotný postup šifrovania poznáme alebo nie.
V prípade kvalitnej šifry závisí teda odolnosť proti prelomeniu iba na jej kľúči.
Pri lúštení šifry existujú dva základné postupy na zistenie kľúča:
- Kľúč odhadneme na základe informácií o osobe, ktorá kľúč vytvárala. Môžeme na to využiť napríklad mená, dátumy narodenia, mená domácich miláčikov, obľúbených spevákov či hercov, matematické rady a podobne.
- Postupne všetky možné kľúče vyskúšame, pokiaľ sa netrafíme do toho správneho. Táto metóda sa nazýva BFA (Brutal Force Attack) alebo útok hrubou silou av princípe je ju možné použiť na väčšinu šifier.
Útok hrubou silou nie je možné používať napríklad pri Vernamovej šifri, ale tento špeciálny prípad v tomto kurze riešiť nebudeme.
Symetrická šifra
Tento typ šifry zodpovedá najviac tomu, čo si väčšina ľudí pod pojmom šifra predstaví. Ide o postup, ktorý používa rovnaký kľúč pre šifrovanie aj dešifrovanie textu alebo dát všeobecne. V kryptografii sa ale pre dáta používa bežne výraz otvorený/šifrovaný text. Otvorený text je text určený na utajenie, ktorý sa pri procese šifrovania prevedie do šifrovaného textu.Dnes sa všeobecne používa AES (Advanced Encryption Standard). Niekedy je toto označenie ešte doplnené o dĺžku kľúča v bitoch, teda napríklad AES-256. AES s 256 bitovým true random (skutočne náhodným) kľúčom je v súčasnosti pokladaná za prakticky neprelomiteľnú šifru, a to vrátane využitia kvantových počítačov pri procese lámania. AES sa používa ako primárna šifra pre ochranu dát všeobecne a dôveruje ju americká vláda pre utajenie informácií úrovne Prísne tajné, takže my budeme tiež:)
Symetrické šifry majú veľa výhod, a to napríklad že sú veľmi rýchle a kľúče nemusia byť príliš dlhé. Avšak keby sme ich chceli použiť napríklad na šifrovanie komunikácie E2E, narazili by sme hneď na prvý problém, a to ako si bezpečne vymeniť úvodný šifrovací kľúč s protistranou. Ak je to kamarát vedľa nás, nemáme problém, zídeme sa a na kľúči dohodneme. Ale ako výmenu bezpečne vyriešiť, keď je protistrana na druhej strane zemegule?
Ďalším problémom je počet kľúčov. U symetrickej šifry nestačí pre každého iba jeden kľúč, to by musel mať zvláštnu kombináciu kľúčov pre každého, s kým chce takto komunikovať. Ešte oveľa komplikovanejšie by to bolo, keby sme chceli použiť symetrickú šifru na podpis. V tomto prípade by musela existovať osobitná kombinácia kľúčov nielen pre všetky zúčastnené strany, ale aj pre každý takto podpísaný text. A týmto sa dostávame k asymetrickej kryptografii.
Asymetrická šifra
Asymetrická šifra využíva spôsob šifrovania, kde je nutný jeden kľúč na šifrovanie a zase druhý na dešifrovanie. Teda pokiaľ text zašifrujeme šifrovacím kľúčom, potrebujeme potom aj dešifrovací kľúč, aby sme ho boli schopní späť dešifrovať do otvorenej podoby. Pričom z jedného kľúča nemožno odvodiť ten druhý.To ale nie je úplne pravda. Principiálne to samozrejme možné je, ale postup je tak výpočtovo náročný, že v praxi ho nie sme schopní vykonať.
Proces asymetrického šifrovania funguje tak, že si na začiatku vygenerujeme z náhodných hodnôt pár kľúčov (key pair). Jeden kľúč, tzv. tajný kľúč, si starostlivo uschováme do nejakého súboru alebo na čipovú kartu. Skrátka tak, aby sa k nemu nikto okrem nás nemohol dostať. Druhý kľúč, tzv. verejný kľúč môžeme zverejniť alebo niekomu poslať otvoreným e-mailom.
Ak nám potom bude chcieť niekto poslať správu bez toho, aby ju mohol čítať ktokoľvek iný, stačí keď ju zašifruje naším verejným kľúčom. Pretože len my máme zodpovedajúci tajný kľúč, môžeme ju zase dešifrovať.
V skutočnosti sa kvôli väčšej rýchlosti spracovania vlastná správa šifruje symetricky pomocou AES náhodne zvoleným jednorazovým symetrickým kľúčom, ten sa potom zašifruje asymetricky verejným kľúčom príjemcu a pribalí k správe.
Digitálny podpis
Na vyššie uvedenom princípe funguje aj digitálny podpis. Pokiaľ k našej správe priložíme tú istú správu, ale naopak zašifrovanú našim tajným kľúčom, každý si potom pomocou nášho verejného kľúča môže ľahko overiť, že sme ju skutočne zašifrovali my. V praxi sa opäť nešifruje a neprikladá celá správa znova, ale iba jej skrátený odtlačok alebo hash, ktorému sa budeme venovať v priebehu kurzu.V tejto chvíli by mohlo vyzerať, že sme už úspešne vyriešili aj všetky problémy s autentizáciou. Z čisto kryptografického hľadiska je to pravda, avšak v praxi nám vyvstáva ešte jeden problém. Metódou digitálneho podpisu síce overíme, že sa jedná o rovnakú protistranu, ktorá nám verejný kľúč poskytla, avšak každý z nás si môže takýchto kľúčov vygenerovať koľko len bude chcieť a pri ich zaslaní tvrdiť, že je napríklad prezident USA:)
V niektorých situáciách nám to môže byť jedno, pretože pre nás nie je dôležité, aké meno si kto pre svoje označovanie vybral. Avšak napríklad banka alebo úrad potrebuje ešte stotožniť daný verejný kľúč s reálnou identitou v občianskom živote. Alebo naopak, my potrebujeme istotu, že ide skutočne o banku alebo štátnu inštitúciu s danou právomocou. Sme teda späť pri tom, že sa dve protistrany zase musia najskôr stretnúť. Tentoraz síce nie preto, aby si vymenili kľúče, ale preto, aby sa uistili, že daný kľúč skutočne označuje daný subjekt.
Certifikáty a certifikačné autority
K vyriešeniu tejto situácie do hry vstupujú certifikáty a certifikačné autority. Certifikačná autorita (CA) funguje ako sprostredkovateľ dôvery medzi dvoma stranami tým , že overí identitu žiadateľa a vytvorí pre neho certifikát. Certifikát obsahuje verejný kľúč žiadateľa, doplnený o informácie o jeho reálnej identite a to všetko je podpísané tajným kľúčom príslušnej certifikačnej autority.Celý proces je veľmi podobný tomu, ako keď štát po overení našej identity vydá občiansky preukaz, ktorým sa následne preukazujeme ďalším subjektom. Len namiesto občianskeho preukazu tu overovaciu funkciu plní digitálny podpis danej autority.
Pre overenie takého certifikátu potom stačí poznať verejný kľúč danej certifikačnej autority a dôverovať jej. Tým sa nutnosť overenia každej strany každú redukuje iba na overenie strán u oveľa menšieho počtu certifikačných autorít. Ďalej možno pri tom procese overenia využiť tzv. reťazenie dôvery. Ak platí, že subjekt A verí B a subjekt B verí C, potom tiež platí, že A môže veriť C.
Viac si o dôveryhodnosti certifikátov povieme v jednej z nasledujúcich lekcií. Zatiaľ si len uvedieme, že v SR aktuálne pôsobia tri certifikačné autority:
Asymetrické algoritmy
Asymetrických šifrovacích algoritmov nie je zďaleka také množstvo, ako je tých symetrických. A to z dôvodu, že symetrických algoritmov je z logiky ich fungovania možné vytvoriť viac-menej nekonečno. V praxi sa tak najskôr stretneme najmä s nasledujúcimi algortímami:- RSA - Prvý algoritmus, ktorý sa začal všeobecne používať. Je založený na probléme faktorizácie veľkých čísel av súčasnosti sa považuje za bezpečný, ak používa kľúč s dĺžkou aspoň 2048 bitov. Pokiaľ ale generujeme nový pár kľúčov, použijeme radšej dĺžku 3072 bitov alebo dokonca 4096 bitov, pokiaľ je v danom software dostupná.
- ECDSA/EdDSA - Je modernejší variant založený na probléme riešenia diskrétnych logaritmov nad eliptickými krivkami. Umožňuje vyššiu bezpečnosť pri využití podstatne kratšieho kľúča. Pokiaľ generujeme nový pár kľúčov a nepotrebujeme spätnú kompatibilitu pre nejaký historický systém, použijeme skôr tento algoritmus.
Oba vyššie uvedené algoritmy by ale teoreticky mohli byť niekedy v budúcnosti prelomiteľné za pomoci kvantových počítačov. Preto boli vyvinuté algoritmy odolné aj proti tomuto spôsobu útoku. Z nich je vhodnou alternatívou napríklad NTRU.
V budúcej lekcii, Heslá a biometrická ochrana , sa pozrieme na ďalšie využitie kryptografie pri ochrane dát. Budeme sa zaoberať najmä heslami, ich bezpečnosťou a ukladaním. Reč bude ale aj o biometrii a ochrane súkromia.