RSA (Rivest–Shamir–Adleman) on algoritm, mida kaasaegsed arvutid kasutavad sõnumite krüpteerimiseks ja dekrüpteerimiseks. See on asümmeetriline krüptograafiline algoritm. Asümmeetriline tähendab, et kasutatakse kahte erinevat võtit. Seda nimetatakse ka avaliku võtme krüptograafiaks, sest ühe võtme (avaliku võtme) võib jagada kõigiga, samas kui teine võti peab jääma privaatseks. RSA turvalisus põhineb asjaolul, et väga suure liitarvu tegurite leidmine on arvuliselt keeruline: kui tegurid on algarvud, nimetatakse seda probleemi primaarfaktoreerimiseks.

Kuidas RSA töötab (lühike ülevaade)

Peamised sammud võtme genereerimiseks ja sõnumi krüpteerimiseks on järgmised:

  • Vali kaks suurt juhuslikku eri alg­arvu p ja q.
  • Arvuta n = p × q. Mõlemad p ja q peavad jääma salajas — n on osa avalikust võtmeparist.
  • Arvuta φ(n) = (p − 1) × (q − 1) (Euler'i totientfunktsioon).
  • Vali avalik eksponent e, kus 1 < e < φ(n) ja gcd(e, φ(n)) = 1 (ehk e on φ(n)-ga ühismittea).
  • Leia privaatne eksponent d, mis on e modulaarne pöördarv suhtes φ(n); s.t. d × e ≡ 1 (mod φ(n)).
  • Avalik võti on paar (n, e); privaatvõti on (n, d) või tihti hoopis p, q, d koos optimeerimiseks vajalike lisaväärtustega.

Krüpteerimine ja dekrüpteerimine matemaatiliselt:

  • Krüpteerimine: c = me mod n (kus m on sõnumi arvuline esitus, väiksem kui n).
  • Dekrüpteerimine: m = cd mod n.

Kasutusalad

  • Andmete konfidentsiaalsus: RSA-d kasutatakse sageli võtmevahetuseks — genereeritakse juhuslik sümmeetriline võti, mis krüpteeritakse RSA abil ja saadetakse turvaliselt. Sõnumite tegelik krüptimine toimub tavaliselt kiiremate sümmeetriliste algoritmidega (nt AES).
  • Digitaalsed allkirjad: RSA võimaldab allkirjastada sõnumeid või dokumente privaatvõtmega, et vastuvõtja saaks avaliku võtmega allkirja kontrollida.
  • Transporti- ja protokollid: RSA on olnud laialdaselt kasutuses TLS/SSL, e-posti krüpteerimisel (PGP) ja muudes turvaprotokollides.

Turvalisus ja piirangud

RSA turvalisus tugineb faktoreerimisraskusele. Kui keegi suudab n-i faktoriseerida (leida p ja q), saab ta arvutada φ(n) ja sellest d — seega murda võtme. Peamised ohud ja kaalutlused:

  • Faktoreerimisrünnakud: suuremate n-de faktoreerimine on arvuliselt kallis. Tänapäeval peetakse 2048-bitiseid võtmeid üldiselt turvaliseks paljude rakenduste jaoks; kõrgema turvalisuse puhul soovitatakse 3072 või 4096 bitti. Soovituslik võtme pikkus sõltub oodatavast ohutasemest ja aeghorizonist.
  • Paddinõuded: RSA ei ole turvaline ilma sobiva täiendava täitmisrežiimita (padding). Ilma sellele lisamata (nt "textbook RSA") on võimalik sõnumeid mõne lihtsa rünnakuga taastada. Levinud täitmisstandardid on PKCS#1 v1.5 (vana, mõningad haavatavused) ja kaasaegsem OAEP (Optimal Asymmetric Encryption Padding) krüpteerimiseks ning PSS allkirjade jaoks.
  • Külgkanalirünnakud: RSA on haavatav füüsilistele rakendustele (nt ajastusanalüüs, elektrivoolu mõõtmine). Leevendused hõlmavad blindimist (blinding) ja CRT-põhiste dekrüpteerimiste turvalist implmentatsiooni.
  • Kvantarünnakud: teoreetilise kvantarvuti olemasolu korral võib Shori algoritm primaarfaktoreerimise teha polürütmiliselt kiirelt, mis muudaks RSA kiirelt ebaturvaliseks. Sellepärast uuritakse uut "postkvant" krüptograafiat.

Headempraktikad ja optimeerimine

  • Kasuta alati sobivat täitmist (nt OAEP krüpteerimiseks, PSS allkirjadeks).
  • Võtme pikkus: vali riskitundlikusest sõltuvalt vähemalt 2048 bitti (paljud organisatsioonid eelistavad 3072+ bitti pikaajaliseks konfidentsiaalsuseks).
  • Ära kasuta RSA-d otse pikemate sõnumite krüpteerimiseks — kasuta hübriidset lähenemist: RSA krüpteerib sümmeetrilise võtme, millest järgneb sõnumi AES-iga krüpteerimine.
  • Haldus: hoia privaatvõti turvaliselt (riistvarakaitstud võtmehoidjad, HSM-id) ja tagasta/kehtetu tava korral võtme muutmine (rotatsioon).
  • Implmentatsioonis kasuta kaitsemeetmeid külgkanalirünnakute ja valesisendite vastu ning kasuta usaldusväärseid krüptograafilisi teeke.

Tõhusus

RSA põhitegevused (eksponentsiaalsed teisendused suurtel arvudel) on suhteliselt aeglased võrreldes sümmeetriliste algoritmidega. Sellepärast kasutatakse RSA-t peamiselt võtmevahetuseks ja allkirjastamiseks, mitte suure mahu otse krüpteerimiseks. Dekrüpteerimisel ja allkirjade tegemisel kasutatakse sageli CRT-tehnikaid (Chinese Remainder Theorem), mis kiirendavad arvutusi, kuid nõuavad hoolikat teostust turvalisuse säilitamiseks.

Ajaloost ja patenteerimisest

RSA avalikustati 1977. aastal Ronald Rivest, Adi Shamir ja Leonard Adlemani poolt. Algusaegadel oli RSA-le seotud patent (USA-s), mis aegus 2000. aastal; sellest ajast alates on algoritmi kasutamine olnud laiemalt vabalt kättesaadav. Hoolimata vanusest on RSA endiselt üks tuntumaid avaliku võtme skeeme maailmas, kuigi kasvav huvi postkvantlahenduste vastu võib tulevikus muuta selle positsiooni.

Kokkuvõte

RSA on oluline ja laialdaselt kasutatav avaliku võtme krüptograafia meetod, mis põhineb suurte arvude primaarfaktoreerimise raskusel. See pakub nii konfidentsiaalsust kui ka autentimist/allkirjastamist, kuid nõuab õigeid täitmisstandardeid, piisavat võtme pikkust ja ettevaatusabinõusid külgkanalirünnakute ning tulevaste kvantohtude vastu. Praktikas kasutatakse RSA-d tihti koos sümmeetriliste algoritmidega, et kombineerida turvalisust ja jõudlust.