Šifrování RSA (prvočíselný rozklad)Existují dva typy šifer - symetrické a asymetrické. Symetrické šifry mají pouze jeden klíč, pomocí kterého se přenášená zpráva šifruje a inverzním postupem dešifruje.Asymetrické šifry mají klíče dva – soukromý a veřejný. Zatímco veřejný klíč jeho držitel oznámí celému světu, ten soukromý si pečlivě uschová. Zprávu zašifrovanou veřejným klíčem lze rozšifrovat pouze odpovídajícím klíčem soukromým. Algoritmus RSA publikovali v roce 1978 Ronald Rivest, Adi Shamir a Leonard Adleman - proto se mu říká RSA. Jedná se o asymetrickou šifru, která je založena na tom, že zatímco vynásobit dvě velká čísla je snadné, tak rozložit velké číslo na součin prvočísel (neboli faktorizace) je časově velmi obtížná úloha.
Výsledek
Princip algoritmuPrvním krokem je převést zprávu na číslo, případně více čísel, která se budou kódovat samostatně, pokud je zpráva příliš dlouhá. Tento převod není součástí algoritmu RSA.Veřejný klíč tvoří dvojice čísel n a s, pro která platí:
PlatíPokud AS ≡ B (mod n),pak BD ≡ A (mod n), kde D je inverze k S (mod φ(n)), neboli S.D ≡ 1 (mod φ(n)) a φ(n) je hodnota Eulerovy funkce v bodě n DůkazDůkaz je založen na malé Fermatově větě a jejím Eulerově zobecnění:Pokud jsou čísla a a p nesoudělná, pak ap-1 ≡ 1 (mod p) Euler větu zobecnil pomocí Eulerovy funkce φ(n) na aφ(n) ≡ 1 (mod n) pro libovolná nesoudělná čísla a a n Eulerova funkce φ(n) je definovaná jako počet všech přirozených čísel k takových, že 1 ≤ k ≤ n pro nesoudělná čísla k a n. Pro prvočísla platí φ(p) = p - 1 Můžeme tedy psát: aφ(n) ≡ 1 (mod n) pro nesoudělná a a n Pokud umocníme rovnici na k, nic se nezmění: ak*φ(n) ≡ 1 (mod n) Stejně tak ji můžeme vynásobit a ak*φ(n)+1 ≡ a1 (mod n) Tedy umocníme-li číselnou zprávu na k * φ(n) + 1 (mod n), dostaneme opět tu samou zprávu. Dále vidíme, že: Výraz k * φ(n) + 1 ≡ 1 platí vždy pokud ho upravíme mod φ(n) ... k * φ(n) mod φ(n) je vždy 0 aE ≡ a (mod n), pokud E ≡ 1 (mod φ(n)) Pokud E rozložíme na E = S * D, platí opět, že aS * D ≡ a (mod n), pokud S * D ≡ 1 (mod φ(n)) AS * D = ASD = BD = A (vše mod n) Příklad 1- vyzkoušejte si, jak funguje zašifrování a dešifrování maximálně třípísmenného slova
Příklad 2- zkuste dešifrovat následující zprávu
|