Szyfrowanie asymetryczne

Metoda wykorzystująca parę kluczy: publiczny do szyfrowania i prywatny do odszyfrowania. Stanowi podstawę m.in. protokołu TLS i podpisów cyfrowych.

Szyfrowanie asymetryczne to metoda kryptograficzna, w której zamiast jednego wspólnego hasła używasz pary matematycznie powiązanych kluczy: publicznego i prywatnego. To, co zaszyfrujesz jednym, odszyfrujesz wyłącznie drugim. Klucz publiczny możesz rozdawać na prawo i lewo (stąd nazwa), a prywatny trzymasz jak hasło do banku, czyli tylko dla siebie. Drugie określenie, które spotkasz, to kryptografia klucza publicznego (public-key cryptography).

Genialność tego pomysłu polega na tym, że rozwiązuje odwieczny problem szyfrowania symetrycznego: jak bezpiecznie przekazać klucz drugiej stronie, skoro kanał jest podsłuchiwany? Tutaj nie musisz nic uzgadniać po cichu. Ktoś, kto chce wysłać Ci poufną wiadomość, szyfruje ją Twoim kluczem publicznym, a odczytasz ją tylko Ty, swoim prywatnym. Działa to też w drugą stronę: jeśli zaszyfrujesz coś kluczem prywatnym, każdy może to zweryfikować Twoim publicznym, i tak właśnie powstają podpisy cyfrowe potwierdzające autentyczność.

Gdzie to spotkasz w praktyce

Za każdym razem, gdy widzisz kłódkę w przeglądarce, asymetryka pracuje pod maską. W TLS (protokół za HTTPS) klucze asymetryczne służą do bezpiecznego uzgodnienia wspólnego klucza sesji, którym dalej, już szybciej, szyfruje się ruch symetrycznie. To tzw. podejście hybrydowe, bo asymetryka jest poprawna, ale wolna.

Najprostszy przykład z życia developera to klucze SSH. Generujesz parę poleceniem:

ssh-keygen -t ed25519 -C "[email protected]"

Powstają dwa pliki: id_ed25519 (prywatny, zostaje u Ciebie) i id_ed25519.pub (publiczny, wrzucasz na serwer albo do GitHuba). Od teraz logujesz się bez hasła, a serwer ma pewność, że to Ty. Pod spodem działają algorytmy takie jak RSA, ECDSA czy nowocześniejszy Ed25519.

Najczęstsze pomyłki

  • Wysłanie nie tego klucza. Na serwer/GitHuba wrzucasz publiczny (.pub). Jeśli kiedykolwiek wkleisz gdzieś prywatny, traktuj go jak skompromitowany i wygeneruj nową parę.
  • Mylenie szyfrowania z podpisem. Szyfrowanie chroni poufność (nikt nie odczyta). Podpis chroni integralność i autentyczność (wiadomo, że to od Ciebie i nikt nie zmienił). To dwa różne zastosowania tej samej pary kluczy.
  • Wiara, że asymetryka zastępuje symetryczną. Nie zastępuje, uzupełnia. Do szyfrowania dużych danych i tak używa się szybkiego AES, a asymetryka tylko bezpiecznie dostarcza klucz.
  • Klucz publiczny to nie sekret. Możesz go pokazać całemu światu i nic złego się nie stanie, na tym polega cały mechanizm.

Pojęcia powiązane

Warto skojarzyć to z: szyfrowanie symetryczne (AES), RSA, ECC, TLS/SSL, certyfikat cyfrowy, urząd certyfikacji (CA), PKI, podpis cyfrowy, funkcja skrótu (hash) oraz PGP/GPG.