V predchádzajúcom blogu Čo je to vlastne kryptografia? sme si vysvetlili, ako funguje kryptografia.

Na rozdiel od symetrických šifier, ktoré fungujú na princípe, že obe komunikujúce strany majú zdieľaný kľúč, pomocou ktorého je možné dáta enkryptovať aj dekryptovať, existuje ešte iný systém šifier – asymetrické šifry. 

Podstatou asymetrických šifier je existencia 2 kľúčov – verejného a súkromného. Dáta zašifrované verejným kľúčom sa dajú dešifrovať iba súkromným kľúčom a naopak dáta zašifrované súkromným kľúčom sa dajú dešifrovať iba verejným kľúčom. 

Teda S(V(x)) = V(S(x)) = x

Zároveň je súkromný kľúč v držaní jednej strany a tá ho nikdy nikomu nesmie zverejniť a naopak verejný kľúč je verejne dostupný.

RSA

Jednou z prvých asymetrických šifier je RSA, ktorý publikovali autori Rivest, Shamir a Adleman v roku 1977. Je postavený na princípe malej Fermatovej vety použitej s veľmi veľkými prvočíslami. 

Podľa nej platí ap − 1 ≡ 1 (mod p). Keď si teda nájdeme 2 veľké prvočísla (povedzme 300 ciferné – 1024 bitové), tak ich súčin má 2048 bitov a je súčasťou verejného aj súkromného kľúču ako modulus.

Verejný kľúč sa skladá zo spomínaného modulusu n = p*q a verejného exponentu e.

Samotná operácia šifrovania verejným kľúčom je operácia S(x) = xe mod n.

Súkromný kľúč má súkromný exponent d a rovnaký modulus n. Šifrovanie verejným kľúčom je potom V(x) = xd mod n.

Čísla e a d sú získané tak, že platí xe*d mod n = x pre všetky x.

Faktorizácia

Získať z verejného kľúča súkromný kľúč teda číslo d sa dá ak sa podarí získať pôvodné prvočísla p a q. Tento problém, teda.pri známom n získať p a q, pre ktoré n = p*q je problém známy ako  faktorizácia.

Pomocou štandardných počítačov a určitých algoritmov sa od roku 1991 podarilo faktorizovať čísla až do 829 bitov. Rovnakým tempom bude možné získať privátny kľúč 2048-bitového RSA okolo roku 2050. 

Použitie

Existencia verejného a súkromného kľúču umožňuje generovať správy, ktoré prečíta iba majiteľ súkromného kľúču. Toto sa využíva pri TLS protokole, keď si v prehliadači zadávate URL adresu začínajúcu HTTPS. Pri komunikácii so serverom pošle klient (prehliadač) dáta zašifrované verejným kľúčom servera (je súčasťou certifikátu) a iba server ich vie dekryptovať. Podobne bezpečný mail (SMIME) funguje na princípe, že obsah mailu sa šifruje pomocou verejného kľúču príjemcu a jedine príjemca tak môže obsah mailu dešifrovať.

Častejšie použitie je opačné, keď sa šifrujú dáta súkromným kľúčom a každý ich môže dešifrovať. V tomto prípade sa, ale obyčajne nešifrujú celé dáta ale len ich hash. Hashovacia funkcia urobí z megabajtového dokumentu 32 bajtov a tieto sa zašifrujú súkromným kľúčom (veľmi dôležité je doplniť chýbajúce bity, pretože RSA s 2048 bitovým kľúčom potrebuje k 256 bitom hashu doplniť ešte nejaké dáta). Každý si potom môže urobiť rovnaký hash dokumentu a skontrolovať, či sa rovná dešifrovanému (t.j. uplatní sa verejný kľúč). Ak sa rovná, tak nikto dokument nezmenil, ak sa nerovná, tak došlo k zmene. Toto je digitálny podpis.