Čo je to vlastne kryptografia?
Keď kedysi dávno potreboval Gaius Iulius Caesar napísať niečo utajované, použil jednoduchý postup – každé písmeno z abecedy posunul o rovnaký počet krokov a poslal tak šifrovaný text. Miesto CAESAR tak pri posune o 3 písmená napísal FDHXDV. Toto je veľmi jednoduchá šifra, na ktorej rozlúštenie stačí 22 pokusov.
Vo všeobecnosti je symetrická šifra taká operácia, ktorá z kľúču K a dát D vytvorí iné dáta E pomocou operácii, ktorú voláme enkrypcia a z dvojice K, E vytvorí naspäť pôvodné dáta D operáciou zvanou dekrypcia.
Edgar Allan Poe v poviedke Zlatý Skarabeus použil šifru, ktorá je zdanlivo bezpečnejšia ako staré rímske šifry. Každému písmenu priradil iný znak. Teoreticky by počet permutácií bol približne 26! čo je 4*10^26 – obrovské číslo pre to, aby niekto aj s pomocou najvýkonnejších počítačov preskúmal každú možnosť. Avšak s pomocou frekvenčnej analýzy písmen sa dá ľahko zistiť, ktorý znak môže byť najčastejšou samohláskou v angličtine E, ktorý druhou najčastejšou A atď. Pri spoluhláskach sú časté písmená P, R, S, T, v angličtine ešte aj H, úplne zriedkavé je Q, Z. Takto sa potom úloha dá vyriešiť aj 10 ročným dieťaťom bez pomoci počítača.
Toto ukazuje, že sila šifrovania môže byť rádovo nižšia ako je počet permutácií danej šifry.
TLS a SSL protokoly
V súčasnosti sa pre internetovú komunikáciu používa protokol TLS (transport layer security) – následník SSL protokolu. V prípade webových stránok je použitie tohto protokolu indikované písmenom “S” v názve protokolu – HTTPS.
TLS protokol určuje to, ako si 2 strany komunikácie (napríklad prehliadač a webový server) “vymenia” kľúče k šifre tak, aby sa k nim nedostal niekto tretí – pritom sa na to používa asymetrická kryptografia, o ktorej si povieme neskôr.
TLS protokol určuje aj to, ako sa majú klient a server dohodnúť na výbere symetrickej šifry a hashovacej funkcie, obe strany môžu preferovať alebo odmietať určité šifry alebo požadovať minimálnu veľkosť kľúča, čím sa zvyšuje bezpečnosť komunikácie.
Rôzne šifrovacie algoritmy (3DES, AES, RC4) majú rôznu “silu”, takže ich prelomenie môže byť rôzne obtiažne. Napríklad na prelomenie AES-256 je hrubou silou je potrebné vykonať zhruba 2^254 operácií.
Hashovacie funkcie
Hashovacie funkcie sú potrebné pre to, aby sme z veľkého množstva dát dostali malé množstvo dát, pričom nájsť k hashu dáta musí byť veľmi zložité. Hoci sa hashovacie funkcie používajú hlavne pri asymetrickej kryptografii, sú potrebné aj pri komunikácii medzi klientom a serverom pri zriaďovaní TLS.
Príkladom jednoduchého hashovanie je pri ohodnotení znakov číslami môže byť hashom textu súčet číselných reprezentácií. Slovo CAESAR by potom malo “hash” 3+1+5+19+1+18 = 47 (v latinčine by to bolo len 45). Urobiť iné slovo s rovnakým hashom nie je zložité, ale pri skutočných hashovacích funkciách je to veľmi náročné a útok hrubou silou napríklad na SHA-256 nie je v schopnostiach všetkých počítačov, ktoré budú na svete ani o 100 rokov.
Vývoj a útoky na niektoré typy hashovacích funkcií spôsobil, že miesto zastaralého MD5 sa dnes podľa TLS 1.3 SHA-256, ktorá z ľubovoľného bloku dát vytvorí 256 bitov (32 bajtov). Preto je potrebné mať prehliadače a nástroje, ktoré využívajú kryptografiu aktualizované, inak ide len o zdanie bezpečnosti. Napríklad prehliadač Firefox nastavuje najstaršiu podporovanú verziu TLS protokolu na 1.2 z roku 2008 (verzia 1.3 je z roku 2018), nakoľko po roku 2020 sa už staršie verzie nemajú používať, pravidelné update-y programov ich už dávno nahradili najnovšou verziou.
Pokračovanie nájdete v blogu Čo je asymetrická kryptografia.