Szyfr RSA

Jest to, tak jak szyfr plecakowy, szyfr asymetryczny.

Oprócz tego warto zobaczyć:

Małe twierdzenie Fermata

Jeśli jest liczbą pierwszą, to dla dowolnej liczby całkowitej liczba jest podzielna przez .

Wnioski:

Generowanie kluczy

W przypadku RSA, każda para kluczy posiada dwie liczby:

  • Klucz publiczny
  • Klucz prywatny

Gdzie od encryption a od decryption.

W celu wygenerowania kluczy potrzebujemy pary dwóch liczb pierwszych oraz .

Niech a

  1. Wyznaczamy i
  2. Obliczamy
  3. Obliczamy
  4. Wyznaczamy takie , które oraz , np.
  5. Wyznaczamy takie , które , np.
  6. Definiujemy parę kluczy asymetrycznych - publiczny: - prywatny:
  7. Usuwamy wszystko to czego użyliśmy do stworzenia kluczy by nie dało ich się odtworzyć, tzn.

Szyfrowanie

Szyfrowanie polega na podstawieniu wartości jawnej do następującego wzoru:

Przykład szyfrowania

Deszyfrowanie

Deszyfrowanie polega podobnemu wzorowi co przy okazji szyfrowania, jednak zamiast podstawiamy

Jak obliczyć d?

Liczymy , podobnie jak z plecakowym (dla którego liczyliśmy )

Przykład obliczania d

Bezpieczeństwo

Dlaczego RSA jest skutecznym algorytmem?

  • Próba odczytania wiadomości wymaga znalezienia
  • Aby znaleźć trzeba znaleźć i
  • Liczby i są jednoznacznym wynikiem faktoryzacji

Przykład użycia RSA

Więc co tu się dzieje? Chcemy wysłać odbiorcy wiadomość, ale RSA nie jest najszybszym algorytmem, a szyfrowanie całej wiadomości może trochę potrwać.

W tym celu:

  1. Pobieramy od odbiorcy jego klucz publiczny do RSA
  2. Wybieramy jakiś symetryczny szyfr (który po prostu jest dużo szybszy od asymetrycznego RSA)
  3. Szyfrujemy naszą wiadomość tym szyfrem symetrycznym
  4. Kluczem RSA szyfrujemy nasz klucz symetryczny
  5. Wysyłamy zaszyfrowaną wiadomość i zaszyfrowany klucz symetryczny
  6. Odbiorca odszyfrowuje klucz symetryczny swoim kluczem prywatnym
  7. Odszyfrowanym kluczem symetrycznym odszyfrowuje wiadomość

#pk#it