Az RSA (Rivest-Shamir-Adleman) egy algoritmus, amelyet a modern számítógépek használnak üzenetek titkosítására és visszafejtésére. Ez egy aszimmetrikus kriptográfiai algoritmus. Az aszimmetrikus azt jelenti, hogy két különböző kulcs létezik. Ezt nyilvános kulcsú kriptográfiának is nevezik, mivel az egyik kulcsot bárki megkaphatja. A másik kulcsot titokban kell tartani. Az algoritmus azon a tényen alapul, hogy egy nagy összetett szám faktorainak megtalálása nehéz: ha a faktorok prímszámok, a problémát prímtényezőzésnek nevezik. Ez egyben kulcspár (nyilvános és privát kulcs) generátor is.

Rövid történet és alapgondolat

Az RSA-t 1977-ben fejlesztették ki Ronald Rivest, Adi Shamir és Leonard Adleman közreműködésével. A módszer alapja egy egyszerű, de számításilag nehéz matematikai probléma: egy nagy egész szám két nagy prímszámra bontása. A biztonság abból adódik, hogy míg két nagy prím szorzata könnyen kiszámítható, ennek a szorzatnak az eredeti prímekre való visszafejtése számítógépes szempontból nagyon nehéz (ha nincsenek speciális algoritmusok vagy kvantumszámítógépek).

Kulcsgenerálás (egyszerűsített lépések)

  • Válasszunk két nagy, véletlenszerű prímszámot: p és q.
  • Számítsuk ki n = p · q. Ez lesz a nyilvános modulus.
  • Számítsuk ki a Euler-féle totiénszfüggvényt: φ(n) = (p − 1)(q − 1).
  • Válasszunk egy egész számot e-t úgy, hogy 1 < e < φ(n) és gcd(e, φ(n)) = 1 (azaz e relatív prím φ(n)-hez). Ez lesz a nyilvános kitevő.
  • Számítsuk ki d-t, az e inverzét modulo φ(n)-nek: d ≡ e⁻¹ (mod φ(n)). Ez a privát (titkos) kitevő.
  • A nyilvános kulcs a páros: (n, e), a privát kulcs: (n, d), miközben p és q is titokban tartható a gyors kiszámításhoz.

Titkosítás és visszafejtés (egyszerű képletek)

  • Tegyük fel, hogy az üzenetet számmá (m) alakítottuk, ahol 0 ≤ m < n.
  • Titkosítás: a kapott titkos szöveg c számként: c ≡ m^e (mod n).
  • Visszafejtés: m ≡ c^d (mod n). A privát kitevő d segítségével visszakapjuk az eredeti m-et.

Digitális aláírásnál a folyamat fordított: az aláíró a privát kulccsal "aláírja" (d) a hash-elt üzenetet, a vevő pedig a nyilvános kulccsal (e) ellenőrzi az aláírást.

Gyakorlati megoldások és kiegészítések

  • Az RSA önmagában nem hatékony nagy mennyiségű adat titkosítására, ezért tipikusan hibrid rendszerekben használják: RSA-vel titkosítanak egy szimmetrikus kulcsot (például AES kulcs), majd azzal titkosítják a tényleges adatokat.
  • Biztonsági okokból mindig alkalmaznak padding sémákat: például OAEP (Optimal Asymmetric Encryption Padding) titkosításhoz és PSS aláíráshoz. A padding megakadályozza a számos egyszerű támadást (például kiválasztott üzenetű, kiválasztott titkosított támadásokat).
  • RSA kulcsméretek: napjainkban legalább 2048 bites kulcs ajánlott; súlyosabb biztonsági követelményekhez 3072 vagy 4096 bites kulcs használatos. A hosszabb kulcs nagyobb biztonságot nyújt, de lassabb a számítás.

Alkalmazások

  • Biztonságos kommunikációs protokollok (például TLS/SSL) — kulcscserére és digitális tanúsítványok kezelésére.
  • Elektronikus aláírások és hitelesítés (például e‑mailek aláírása, szoftverhitelesítés).
  • Nyilvános kulcsú infrastruktúra (PKI) és tanúsítványkiadók (CA).
  • Vegyes rendszerekben kulcscsere és titkos kulcsok védelme.

Korlátok és sebezhetőségek

  • A fő biztonsági feltételezés az, hogy a modul n prímtényezőzését praktikus időn belül nem lehet elvégezni. Ha valaki gyorsan fel tudná bontani n-t p és q tényezőkre, az RSA összeomlana.
  • Oldalsávos (side‑channel) támadások: időzítés, energiakitárolás vagy cache-alapú információk kiszivárogtathatják a privát kulcsot.
  • Gyenge kulcsok és helytelen padding használata sebezhetővé teszi a rendszert (kis e értékekhez, megfelelő padding hiányában léteznek hatékony támadások).
  • A kvantumszámítógépek fenyegetése: Shor algoritmusa elméletben hatékony prímtényezőzést tesz lehetővé, ezért a kvantumbiztos (post‑quantum) algoritmusok fejlesztése fontos.

Összegzés

Az RSA egy jól bevált és széles körben használt aszimmetrikus titkosító algoritmus, amely kulcsfontosságú szerepet játszik a modern internetes biztonságban. A gyakorlati használat során fontos a megfelelő kulcsméret, biztonságos véletlenszám‑generálás és biztonságos padding sémák alkalmazása. Bár továbbra is széles körben megbízható, a jövőben a kvantumszámítógépek megjelenése miatt új, kvantumbiztos megoldásokat is be kell vezetni.