Blog - Jak działa szyfrowanie asymetryczne

Klucz publiczny i prywatny, RSA w skrócie, podpis cyfrowy, wymiana kluczy i typowe pułapki implementacji.

Autor
2code
Opublikowano
Tagi
  • kryptografia
  • RSA
  • security

Szyfrowanie asymetryczne (public-key cryptography) opiera się na parze kluczy: publicznym (można udostępniać) i prywatnym (trzymamy w tajemnicy). Operacja łatwa w jedną stronę jest praktycznie nieodwracalna bez sekretu.

Intuicja

Wyobraź skrzynkę z dwoma zamkami:

  • każdy może wrzucić list, zamykając kluczem publicznym,
  • otworzyć skrzynkę potrafi tylko właściciel klucza prywatnego.

Matematycznie mamy funkcję jednokierunkową z „trapdoor”: ff łatwe, f1f^{-1} trudne — chyba że znasz sekret dd.

RSA w skrócie

Wybieramy duże liczby pierwsze p,qp, q, n=pqn = pq, φ(n)=(p1)(q1)\varphi(n) = (p-1)(q-1). Publiczny wykładnik ee (np. 6553765537), prywatny dd taki, że:

ed1(modφ(n))e \cdot d \equiv 1 \pmod{\varphi(n)}

Szyfrowanie wiadomości mm (po dopełnieniu / padding):

c=memodnc = m^{e} \bmod n

Odszyfrowanie:

m=cdmodnm = c^{d} \bmod n

Bezpieczeństwo opiera się m.in. na trudności faktoryzacji nn.

Dwa główne zastosowania

  1. Poufność — szyfrujemy kluczem publicznym odbiorcy.
  2. Podpis cyfrowy — podpisujemy kluczem prywatnym; każdy weryfikuje kluczem publicznym.

W TLS/HTTPS asymetria zwykle nie szyfruje całego ruchu: służy do uwierzytelnienia i uzgodnienia klucza sesji (AES itd.), bo symetria jest tańsza.

ECDH — wymiana sekretu

Przy krzywych eliptycznych strony ustalają wspólny sekret bez przesyłania go wprost. Alice ma aa, Bob bb, punkt bazowy GG:

S=a(bG)=b(aG)S = a \cdot (bG) = b \cdot (aG)

Obserwator widzi aGaG i bGbG, ale bez logarytmu dyskretnego nie odzyska SS.

Typowe pułapki

  1. Brak paddingu (np. surowe RSA) — podatne na ataki; używaj OAEP / PSS.
  2. Mieszanie ról kluczy — klucz do podpisu ≠ klucz do szyfrowania (w praktyce osobne pary / certyfikaty).
  3. Słaba entropia przy generowaniu p,qp,q lub seedzie RNG.
  4. „Security through obscurity” — algorytm może być publiczny; sekret to klucz prywatny.

Wniosek

Asymetria rozwiązuje dystrybucję zaufania (kto jest kim, jak bezpiecznie zacząć rozmowę), a niekoniecznie masowe szyfrowanie danych. W systemach produkcyjnych zwykle: asymetria na starcie + symetria w sesji.

Wróć do bloga

Porozmawiajmy o Twoim projekcie