Asymetrická kryptografie (šifrování s veřejným a privátním klíčem) je logickým nástupcem symetrické kryptografie jelikož eliminuje základní problémy původního způsobu šifrování.

Princip

Na rozdíl od dosavadních symetrických šifer se v tomto případě používala dvojice klíčů. Veřejný, dostupný široké veřejnosti a soukromý ten si autor ponechá pro sebe. Cokoliv, co zašifrujeme veřejným klíčem je možné dešifrovat pouze konkrétním privátním klíčem a naopak. [1]

Untitled Diagram.drawio.png

Pokud bychom tento postup připodobnili něčemu z reálného života, vypadala by komunikace mezi Alicí a Bobem následovně. Pokud by chtěla Alice poslat Bobovi kufřík se zprávou, vyžádala by si nejprve od Boba jeho zámek, který by jí poslal poštou (klíč by si Bob ponechal u sebe). Alice by tímto zámkem zamknula kufřík, do kterého by vložila svoji zprávu. Tento kufřík by poslala Bobovi, který by si odemknul zámek svým klíčem. Je tedy vynechána řást, kdy by si Alice a Bob museli poslat kopii klíče, což je z bezpečnostního hlediska kritický bod k prolomení komunikace.

RSA

První asymetrická šifra spatřila světlo světa v dubnu 1977. Tři výzkumníci Ronald Rivest, Adi Shamir a Leonard Adleman položili základy asymetrické šifry, která změnila celý kryptologický svět. [2]

Princip vytvoření veřejného a soukromého klíče je následující:

  1. Určíme dvě prvočísla $p$ a $q$ (dostatečně velká)
  2. Spočítáme modul $n = p \cdot q$
  3. Spočítáme hodnotu Eulerovi funkce $\phi(n) = (p-1)(q-1)$
  4. Určíme veřejný exponent $e$ (menší než $\phi(n)$, větší než 1 a nemají společný násobek s $\phi(n)$ nebo $n$)
  5. Určíme číslo $d$ (určím podle následujícího vztahu $(d \cdot e) \ mod \ \phi(n)=1$ možností, které splňují tuto rovnici je více, vybereme libovolně)
  6. Určíme veřejný klíč, dvojice $n$ a $e$
  7. Soukromý klíč, dvojici $n$ a $d$, si uschováme

Od příjemce potřebuje odesilatel zprávy veřejný klíč, nechá si tedy poslat dvojici veřejného klíče a zašifruje zprávu následujícím způsobem:

$c = m^e \ mod \ n$

Příjemce poté přijatou zprávu odšifruje podle rovnice

$m=c^d\ mod \ n$

Pokud nepoužijeme dostatečně velká prvočísla p a q je velmi snadné je z n dopočítat (zkoušením všech možností). Nejen že je tento algoritmus vhodný pro šifrování, ale i pro digitální podpis, který může ověřit integritu dat případně ověřit totožnost odesilatele.