Matematický aparát pro RSA
Eulerova funkce \(\phi\)
Nechť \(c \in \mathbb{N}\), Eulerova funkce \(\phi\) udává počet čísel \(k \in \{1, \dots, c-1\}\), která jsou nesoudělná s \(c\) ( \(\gcd(c,k) = 1\) ).
Pro výpočet Eulerovy funkce lze využít rozkladu na prvočinitele následujícím způsobem:
kde \(P\) je množina všech unikátních prvočíselných dělitelů \(c\) (pro \(c\) jako součin unikátních prvočísel).
Definice (z FIT ČVUT)
Eulerova funkce \(\phi(n)\)
Eulerova funkce \(\phi(n) : \mathbb{N^} \rightarrow \mathbb{N^}\) udává počet kladných celých čísel menších nebo rovných \(n\), která jsou nesoudělná s \(n\).
Věta o \(\phi(m \cdot n)\)
Nechť \(m, n \in \mathbb{N}\) a \(\gcd(m, n) = 1\). Potom \(\phi(m \cdot n) = \phi(m) \cdot \phi(n)\).
Pozorování
Nechť \(n = p_1^{\alpha_1} \cdot p_2^{\alpha_2} \dots p_k^{\alpha_k}\) je kanonický rozklad složeného čísla \(n \in \mathbb{N^+}\). Potom:
Důsledek
Důsledek vede na vztah:
Složitost problému faktorizace
Faktorizace čísla na prvočinitele patří do třídy NP (přesněji se předpokládá, že leží v průniku NP a co-NP a není v P).
Neexistuje a nepředpokládá se existence klasického algoritmu, který dokáže faktorizaci provést v polynomiálním čase.
Složitost problému výpočtu Eulerovy funkce \(\phi(n)\)
Výpočet Eulerovy funkce má stejnou složitost jako faktorizace čísla \(n\). Pokud známe faktorizaci, je výpočet triviální. Bez ní je výpočet v obecném případě považován za výpočetně ekvivalentní faktorizaci.
RSA
-
Nechť \(p\) a \(q\) jsou velká prvočísla.
-
Nechť \(n = p \cdot q\)
-
Zvolte \(e\), které splňuje: \(1 < e < \phi(n)\) a \(\gcd(e, \phi(n)) = 1\).
-
Nechť \(d \equiv e^{-1} \pmod{\phi(n)}\) (modulární multiplikativní inverze).
Privátní klíč je pár \(SK = (n, d)\)
Veřejný klíč je pár \(PK = (n, e)\)
Proces šifrování
Proces dešifrování
Díky Eulerově větě platí \(m^{e \cdot d} \equiv m \pmod{n}\).
Bonus
Použitá prvočísla \(p\) a \(q\) v příkladech bývají často malá (např. v řádu bitů). To je bezpečnostní problém; taková čísla nezaručují výpočetní bezpečnost. Ze znalosti veřejného klíče \((e, n)\) lze pomocí faktorizace nalézt čísla \(p\) a \(q\), vypočítat \(\phi(n)\) a násled