RSA (Rivest-Shamir-Adleman) ir algoritms, ko mūsdienu datori izmanto ziņojumu šifrēšanai un atšifrēšanai. Tas ir asimetrisks kriptogrāfijas algoritms. Asimetrisks nozīmē, ka ir divas dažādas atslēgas. To sauc arī par publiskās atslēgas kriptogrāfiju, jo vienu no atslēgām var nodot jebkurai personai. Otra atslēga ir jāglabā privāta. Algoritma pamatā ir fakts, ka atrast liela salikta skaitļa faktorus ir sarežģīti: ja faktori ir pirmskaitļi, šo problēmu sauc par pirmfaktorializāciju. Tas ir arī atslēgu pāra (publiskās un privātās atslēgas) ģenerators.

Kā RSA darbojas — galvenie soļi

  • Atslēgu ģenerēšana:
    • Izvēlas divus lielus nejaušus pirmskaitļus p un q.
    • Aprēķina n = p × q — modulis, ko izmanto gan publiskajā, gan privātajā atslēgā.
    • Aprēķina φ(n) = (p − 1)(q − 1) (Eilera totienta funkcija).
    • Izvēlas publisko eksponentu e tā, lai 1 < e < φ(n) un gcd(e, φ(n)) = 1 (bieži izmantoti e = 65537 vai e = 3/17 historiski).
    • Aprēķina privāto eksponentu d kā e multiplikatīvo inversu mod φ(n): d × e ≡ 1 (mod φ(n)).
    • Publiskā atslēga: (n, e). Privātā atslēga: (n, d) (vai (p, q, d, u) CRT formātā).
  • Šifrēšana: ja sūtītājs vēlas nosūtīt ziņojumu m (kurš tiek kodēts kā skaitlis mazāks par n),
    šifrtekst c = m^e mod n.
  • Atšifrēšana: saņēmējs izmanto d, lai atjaunotu m:
    m = c^d mod n.

Neliels piemērs (ilustrācijai)

Šis piemērs izmanto mazas vērtības tikai izpratnei (nekad nelietot šīs vērtības reālai drošībai): p = 61, q = 53 → n = 3233; φ(n) = 3120. Izvēlas e = 17, tad d = 2753. Ja m = 65, tad c = 65^17 mod 3233 = 2790; atšifrējot c^d mod 3233 atgriežas m = 65.

Drošība un ierobežojumi

  • RSA drošība balstās uz to, ka nozināma n = p×q faktorizācija ir grūta, ja p un q ir pietiekami lieli.
  • Mūsdienās ieteicamie atslēgu garumi ir vismaz 2048 bitu (dažkārt 3072 vai 4096 bitu atkarībā no nepieciešamās ilgtermiņa drošības).
  • Bez pareiza pakojuma (padding) RSA ir pakļauts dažādām uzbrukumu formām (piem., izvēlētā tekstā balstīti uzbrukumi). Tādēļ praktiskā lietošanā izmanto standarta pakošanas shēmas, piemēram, OAEP šifrēšanai un PKCS#1 v2.1 signatūrām.
  • Ar kvantu datoriem (ja praktiski darbināmi kvantu datori tiks izveidoti) RSA var tikt ātri salauzts, izmantojot Shor algoritmu. Tas nozīmē, ka ilgtermiņa datu aizsardzībai jāplāno pāreja uz post‑kvantu kriptogrāfiju.
  • Praktiskie uzbrukumi var ietvert arī puses kanālu uzbrukumus (side‑channel), slikti ģenerētas nejaušības, atkārtoti izmantotas vai pārāk mazas atslēgas, kā arī ļaunprātīgu pakojuma izmantošanu.

Lietojumi un labākā prakse

  • RSA plaši izmanto: TLS/HTTPS savienojumu autentifikācijai un atslēgu apmaiņai, digitālām parakstiem (piem., e‑paraksti), drošai e‑pasta apmaiņai (S/MIME) un sertifikātu sistēmās (X.509).
  • RSA ir lēnāks nekā simetriskie algoritmi; praksē bieži izmanto hibrīdu pieeju — RSA šifrē tikai simetriskās atslēgas (piem., AES), bet pašu datu šifrē ar ātrāku simetrisko algoritmu.
  • Izmantojiet pārbaudītas kriptogrāfijas bibliotēkas (OpenSSL, libsodium, BouncyCastle u.c.) un atjauniniet tās. Neizdomājiet savu realizāciju.
  • Izmantojiet drošus nejaušības avotus pirmskaitļu ģenerēšanai un pārbaudiet pirmskaitļu primaritāti ar uzticamiem testiem (piem., Miller‑Rabin).
  • Privātā atslēga jāglabā droši — šifrēta ar spēcīgu paroli, glabāta aparatūras drošības moduļos (HSM) vai drošos atslēgu krātuvēs. Ierobežojiet piekļuvi un regulāri mainiet/atsauciet atslēgas, ja nepieciešams.

Kopā — kad izmantot RSA

RSA ir robusts un pārbaudīts rīks publiskās atslēgas kriptogrāfijā, piemērots atslēgu apmaiņai, parakstiem un autentifikācijai, ja tiek ievērotas mūsdienīgas drošības prasības: pietiekami garas atslēgas, pareizi pakojumi (OAEP, PSS), droša atslēgu ģenerēšana un aizsardzība pret puses kanālu uzbrukumiem. Lai nodrošinātu drošību ilgtermiņā, jāseko attīstībai kvantu kriptogrāfijā un jāplāno pāreja uz post‑kvantu algoritmiem, kad tas būs nepieciešams.