Algoritmus RSA publikovali v roce 1978 Ronald Rivest, Adi Shamir a Leonard Adleman. Jedná se o asymetrickou šifru, která je založena na Eulerově větě, a která je použitelná jak pro šifrování, tak pro podepisování dokumentů.
Princip asymetrické kryptografie
Symetrické šifry, jako je například Caesarova šifra nebo exponenciální šifra, 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á.
Zároveň platí, že cokoliv, co je zašifrováno veřejným klíčem, lze rozšifrovat pouze odpovídajícím klíčem soukromým. Z opačné strany lze zprávy zašifrované soukromým klíčem rozšifrovat pouze příslušným veřejným klíčem.
Šifrování
Pokud tedy chceme poslat uživateli zprávu takovým způsobem, aby ji nikdo kromě nemohl přečíst, tak si seženeme jeho veřejný klíč . Pomocí něj zprávu zašifrujeme a nakonec ji odešleme přes (nezabezpečenou) síť. Obsah zprávy zůstane všem případným útočníkům utajen, protože ji je schopen rozšifrovat pouze držitel odpovídajícího soukromého klíče – uživatel .
Digitální podpis
Druhým případem užití asymetrické kryptografie je digitální podpis. Představme si, že chceme vydat důležité prohlášení, ale nepřejeme si, aby s ním kdokoliv manipuloval a zároveň chceme, aby si každý mohl ověřit, že jsme jej skutečně napsali my (tzn. že se za nás nikdo nevydává).
V případě asymetrické kryptografie pouze zhotovíme hash (otisk zprávy), zašifrujeme jej svým soukromým klíčem a výsledný řetězec přiložíme ke zprávě. Tuto dvojici poté odešleme (samotná zpráva není nijak šifrována, aby si ji mohl kdokoliv přečíst). Každý, kdo si bude chtít ověřit, že je zpráva autentická, může dešifrovat otisk pomocí našeho veřejného klíče a porovnat jej s vlastnoručně vytvořeným otiskem příchozí zprávy. Pokud jsou otisky totožné, tak příjemce ví, že jsme zprávu napsali my, a že s ní nebylo nijak manipulováno.
Komunikace pomocí RSA
Mějme dva uživatele, říkejme jim a . Ukažme si, jakým způsobem musí postupovat, pokud spolu chtějí komunikovat pomocí RSA.
Výpočet klíčů
si zvolí dvě náhodná velká prvočísla a a jejich součin označí jako . Následně si zvolí číslo takové, že je nesoudělné s , kde je hodnota Eulerovy funkce pro n (zároveň platí ). Nakonec vypočítá číslo , které je multiplikativní inverzí čísla . Dvojici zveřejní jakožto svůj veřejný klíč, dvojici si ponechá – jedná se o soukromý klíč.
postupuje analogicky a vytvoří si také veřejný a soukromý klíč.
Šifrování a dešifrování
Pokud nyní bude chtít a poslat přirozené číslo (zprávu), tak jej zašifruje pomocí veřejného klíče jako . B přijatou zprávu dešifruje pomocí vzorce .
Příklad
Monika a Karel spolu chtějí utajeně komunikovat a volí protokol RSA. Pro společnou komunikaci budou postupovat následujícím způsobem.
Výpočet klíčů
Monika
Monika volí náhodně dvě prvočísla, vypočte modulo a hodnotu Eulerovy funkce.
Nyní zvolí číslo a pomocí rozšířeného Euklidova algoritmu spočítá jeho inverzi v .
Monika nyní zveřejní svůj veřejný klíč . Soukromý klíč si ponechá.
Karel
Karel volí náhodně dvě prvočísla, vypočte modulo a hodnotu Eulerovy funkce.
Nyní zvolí číslo a pomocí rozšířeného Euklidova algoritmu spočítá jeho inverzi v .
Karel nyní zveřejní svůj veřejný klíč . Soukromý klíč si ponechá.
Komunikace
Karel chce nyní poslat Monice zprávu. Zprávou bude pro jednoduchost číslo 15.
Karel má přístup k veřejnému klíčí Moniky a zašifruje zprávu jako:
Zašifrovanou zprávu pošle Monice a ta ji rozšifruje pomocí svého soukromého klíče jako:
Útok na RSA hrubou silou
Nejjednodušším a nejméně efektivním útokem na RSA je útok hrubou silou, při kterém se útočník snaží prolomit pomocí faktorizace veřejný klíč uživatele.
Příklad
Prolomte veřejný klíč Moniky z předchozího příkladu tj. .
Víme, že se první část klíče dá rozložit na prvočísla.
323 % 5 = 3
323 % 7 = 1
323 % 11 = 4
323 % 13 = 11
323 % 17 = 0 => 323 = 19*17
Nyní již známe obě prvočísla, která Monika použila pro vytvoření svých klíčů, nyní již můžeme vypočítat soukromý klíč (viz výpočet klíče Moniky).
Poučení z útoku
Z tohoto útoku plyne poučení, že se nikdy nesmí volit velmi krátká prvočísla pro výpočet klíčů. V reálném světě se obvykle používají klíče dlouhé 1024-2048 bitů, které se již nedají žádnými prostředky faktorizovat (faktorizace čísla je velmi obtížný problém).
Literatura
- VELEBIL, Jiří. Diskrétní matematika : Text k přednášce. Praha : [s.n.], 2007. 193 s.