Nahlédněte RSA pod sukni – obecné základy

Zajímá Vás, jak vlastně funguje nejpoužívanější šifrovací algoritmus RSA? Mě ani moc ne, ale k jednomu projektu jsem tyto znalosti potřeboval a tak bych se o ně rád podělil. A to pěkně polopaticky.

Motivace k šifrování jako takovému je jasná – jednoduše nechceme, aby někdo četl naše tajné informace, nebo informace, které někomu posíláme a často k tomu musíme využít nějaký nezabezpečený prostředek.

Šifrování známe dva základní typy – Symetrické a Asymetrické.

Symetrické šifrování je takové, kde se k zašifrování informace a jejímu opětovnému rozšifrování používá stejný klíč. Výhodou je jednoduchost, ale značnou nevýhodou je, že když se někdo takového klíče zmocní, může s informacemi libovolně nakládat.

Naproti tomu asymetrické šifrování využívá dva jedinečné klíče. Jeden z nich umí informace jen zašifrovat a druhý z nich je umí jen rozšifrovat. Představte si to jako obálku s tajnou informací. Vy máte lepidlo na její zalepení a adresát má rozpouštědlo na její otevření. Stejně jako Vy nemůžete zalepenou obálku znovu otevřít, adresát nemůže rozlepenou obálku zase zalepit. Pokud budete jen posílat obálky někomu dalšímu, stačí Vám jeden pár lepidlo – rozpouštědlo. Pokud by měl být tok informací obousměrný, potřebovali byste dvě lepidla na lepení a k nim dvě adekvátní rozpouštědla.

Dobré je si uvědomit, že veřejné klíče (lepidla) se mohou distribuovat veřejně, protože s jejich pomocí Vám případný útočník sice může poslat tajnou zprávu, ale nikdy si nepřečte jiné Vám adresované zprávy. Naproti tomu soukromé klíče (rozpouštědla) se musí uchovat v tajnosti, protože je to jediný způsob, jak zprávy šifrované veřejným klíčem přečíst.

Výhodou je větší bezpečnost. Nevýhodou je vetší složitost s více klíči.

V dalším díle mini seriálu si ukážeme, jak se takové klíče generují a popíšeme si matematický základ celé operace. Pokud byste si chtěli zkusit něco podobného naprogramovat, doporučuji si nejdříve sehnat nějakou knihovnu pro práci s opravdu velkými čísly. My budeme celý proces programovat v javascriptu s použitím knihovny BigInt.js.

Kategorie:
Komentáře

1 Komentáře.

Okomentovat

Trackbacks and Pingbacks:

  • harvey - Trackback on 2013/12/06/ 04:43