RSA: ce este, algoritmul și aplicarea criptării

Autor: IT Sectr Publicat: 2026-04-02 Timp de citire: 9 min

RSA — un criptosistem cu cheie publică ce asigură criptarea și semnătura digitală bazată pe complexitatea computațională a factorizării numerelor mari. Conform NIST Special Publication 800-56B Rev. 2 (2023), RSA cu lungimea cheii de 2048 biți rămâne standardul de securitate pentru sistemele guvernamentale și comerciale. Algoritmul este utilizat pe scară largă în protocoalele TLS, semnăturile digitale și criptarea datelor în aplicațiile mobile.

Principalele puncte

  • RSA — algoritm de criptare asimetrică ce utilizează o pereche de chei: publică și privată.
  • Securitatea algoritmului se bazează pe dificultatea matematică a descompunerii unui număr mare în factori primi.
  • Dimensiunea cheii de 2048 biți este considerată minim sigură din 2023 conform standardului NIST.
  • RSA este utilizat în certificatele TLS, semnăturile digitale și protocoalele de autentificare.
  • Dezvoltarea mobilă folosește RSA prin bibliotecile criptografice încorporate Android Keystore și iOS Security Framework.

Ce este RSA?

RSA — un algoritm criptografic cu cheie publică dezvoltat în 1977 de Ronald Rivest, Adi Shamir și Leonard Adleman. Denumirea este formată din primele litere ale numelor de familie ale autorilor. Algoritmul a fost primul sistem criptografic asimetric practic aplicabil în care cheile de criptare și decriptare diferă.

Istoria creării

Algoritmul RSA a fost publicat în 1977 în revista Scientific American și s-a bazat pe lucrările anterioare ale lui Whitfield Diffie și Martin Hellman în domeniul criptografiei cu cheie publică. Massachusetts Institute of Technology a obținut brevetul pentru RSA în 1983, care a fost valabil până în 2000. Conform raportului RSA Laboratories (2023), algoritmul rămâne unul dintre cele mai răspândite standarde criptografice din lume — este utilizat în miliarde de dispozitive zilnic.

Principiul asimetriei

Spre deosebire de cifrurile simetrice, unde aceeași cheie este folosită atât pentru criptare, cât și pentru decriptare, RSA operează cu o pereche de chei legate matematic. Cheia publică poate fi publicată pentru toată lumea fără riscul compromiterii sistemului. Cheia privată este cunoscută doar de proprietar și nu este niciodată transmisă prin rețea. Conform studiului IBM Security X-Force Threat Intelligence Index (2024), criptarea asimetrică este utilizată în 96% din protocoalele moderne de transmitere securizată a datelor.

Bazele matematice

Securitatea RSA se bazează pe problema factorizării — descompunerea produsului a două numere prime mari în factori. Dacă se aleg numerele prime p și q cu lungimea de 1024 de biți fiecare, atunci produsul lor n va avea 2048 de biți. Calcularea p și q cunoscând doar n prin metode moderne este practic imposibilă: conform evaluării experților CNRS (2024), spargerea RSA-2048 ar necesita peste 300 de miliarde de ani de calcul pe un computer clasic.

Cum funcționează algoritmul RSA

Să examinăm ciclul complet de funcționare a RSA de la generarea cheilor până la criptarea și decriptarea mesajului. Înțelegerea acestor etape este necesară pentru implementarea corectă a algoritmului în aplicațiile mobile.

Generarea cheilor

Procesul începe cu alegerea a două numere prime mari p și q. Se calculează modulul n = p x q, care determină lungimea cheii. Apoi se calculează funcția Euler phi(n) = (p-1)(q-1). Se alege exponentul public e, relativ prim cu phi(n). Exponentul privat d se calculează ca inversul multiplicativ al lui e modulo phi(n). Conform NIST SP 800-56B Rev. 2, lungimea minimă a n trebuie să fie de 2048 de biți pentru a asigura o protecție adecvată.

java
import java.security.KeyPairGenerator;
import java.security.KeyPair;
import java.security.SecureRandom;

public class RSAKeyGenerator {
    public static KeyPair generateKeyPair() throws Exception {
        KeyPairGenerator generator = KeyPairGenerator.getInstance("RSA");
        generator.initialize(2048, new SecureRandom());
        return generator.generateKeyPair();
    }
}

Criptarea și decriptarea

Pentru a cripta mesajul m, expeditorul îl transformă într-un număr întreg mai mic decât n și calculează textul cifrat c = m^e mod n. Destinatarul folosește cheia privată d pentru a restabili mesajul original: m = c^d mod n. Este important de menționat că RSA nu este destinat criptării volumelor mari de date din cauza performanței scăzute — dimensiunea maximă a mesajului este egală cu lungimea cheii minus octeții de serviciu (aproximativ 190 de octeți pentru RSA-2048 cu OAEP).

java
import javax.crypto.Cipher;
import java.security.PublicKey;
import java.util.Base64;

public class RSAEncryptor {
    public static String encrypt(String data, PublicKey publicKey) throws Exception {
        Cipher cipher = Cipher.getInstance("RSA/ECB/OAEPWithSHA-256AndMGF1Padding");
        cipher.init(Cipher.ENCRYPT_MODE, publicKey);
        byte[] encrypted = cipher.doFinal(data.getBytes());
        return Base64.getEncoder().encodeToString(encrypted);
    }
}

Semnătura digitală pe RSA

RSA este, de asemenea, utilizat pentru crearea semnăturilor digitale — un mecanism de verificare a autenticității și integrității datelor. Proprietarul semnează hash-ul mesajului cu cheia sa privată, iar oricine poate verifica semnătura cu cheia publică. Conform raportului Sectigo Certificate Transparency (2025), peste 85% din certificatele TLS de pe internet folosesc RSA pentru semnătura digitală, ceea ce face algoritmul baza încrederii comunicațiilor web.

kotlin
import java.security.Signature

fun signData(data: ByteArray, privateKey: java.security.PrivateKey): ByteArray {
    val signature = Signature.getInstance("SHA256withRSA")
    signature.initSign(privateKey)
    signature.update(data)
    return signature.sign()
}

fun verifySignature(
    data: ByteArray, signedData: ByteArray, publicKey: java.security.PublicKey
): Boolean {
    val signature = Signature.getInstance("SHA256withRSA")
    signature.initVerify(publicKey)
    signature.update(data)
    return signature.verify(signedData)
}

Dimensiunile cheilor și nivelul de securitate

Lungimea cheii influențează direct rezistența criptografică a RSA. Odată cu creșterea puterii de calcul, dimensiunea minimă admisibilă a cheii este revizuită periodic de organizațiile internaționale de standardizare. Să examinăm recomandările actuale ale NIST și ale altor autorități de reglementare.

Lungimea cheiiEchivalent simetricStatus
1024 biți80 bițiInterzis din 2023
2048 biți112 bițiStandard minim
3072 biți128 bițiRecomandat pentru sisteme noi
4096 biți256 bițiPentru date confidențiale

Impactul asupra performanței

Creșterea lungimii cheii RSA afectează semnificativ timpul de execuție a operațiunilor. Generarea unei chei cu lungimea de 4096 de biți durează de aproximativ 10 ori mai mult decât 2048 de biți. Operațiunile de criptare și decriptare cu cheie lungă necesită mai multe resurse de calcul, ceea ce este critic pentru dispozitivele mobile cu consum limitat de energie.

Amenințarea cuantică

Odată cu dezvoltarea calculatoarelor cuantice, RSA poate fi spart folosind algoritmul lui Shor în timp polinomial. Acest algoritm, propus de Peter Shor în 1994, permite factorizarea numerelor mari în timp O((log n)^3) operații. Conform IBM Quantum Roadmap (2025), spargerea practică a RSA-2048 este așteptată nu mai devreme de 2035, însă NIST recomandă deja tranziția treptată la algoritmii post-cuantici CRYSTALS-Kyber și CRYSTALS-Dilithium.

Aplicarea RSA în dezvoltarea mobilă

RSA este utilizat activ în aplicațiile mobile pentru asigurarea transmiterii securizate a datelor, verificarea autenticității serverelor și protejarea tranzacțiilor digitale. Integrarea se realizează prin API-urile criptografice standard ale ambelor platforme principale.

Android Keystore

Platforma Android oferă Android Keystore — un depozit de sistem al cheilor criptografice protejat la nivel hardware prin Trusted Execution Environment. Cheile RSA generate în KeyStore nu pot fi extrase din dispozitiv chiar și în cazul compromiterii aplicației. Aceasta asigură protecția împotriva unei clase largi de atacuri, inclusiv malware cu acces root.

kotlin
import android.security.keystore.KeyGenParameterSpec
import android.security.keystore.KeyProperties
import java.security.KeyPairGenerator

fun generateKeyInAndroidKeystore() {
    val generator = KeyPairGenerator.getInstance(
        KeyProperties.KEY_ALGORITHM_RSA,
        "AndroidKeyStore"
    )
    val spec = KeyGenParameterSpec.Builder(
        "rsa_key_pair",
        KeyProperties.PURPOSE_ENCRYPT or KeyProperties.PURPOSE_DECRYPT
    )
        .setKeySize(2048)
        .setBlockModes(KeyProperties.BLOCK_MODE_ECB)
        .setEncryptionPaddings(KeyProperties.ENCRYPTION_PADDING_RSA_OAEP)
        .build()
    generator.initialize(spec)
    val keyPair = generator.generateKeyPair()
}

iOS Security Framework

În iOS, pentru lucrul cu RSA se utilizează Security Framework cu acces la Secure Enclave pe dispozitivele cu cip A7 și mai noi. Secure Enclave este un coprocesor dedicat, izolat de procesorul principal, care execută operațiuni criptografice și stochează cheile în incinta hardware. Cheile RSA pot fi generate atât în interiorul Secure Enclave, cât și în Keychain software cu diferite niveluri de acces.

Criptarea hibridă în practică

În aplicațiile mobile reale, RSA este rareori utilizat pentru criptarea directă a datelor mari. Practica standard este o schemă hibridă: aplicația generează o cheie de sesiune AES, o criptează cu cheia publică RSA a serverului și o trimite pe server. Tot traficul ulterior este criptat cu AES, care este de 100–1000 de ori mai rapid decât transmiterea directă a datelor prin RSA.

Avantajele și limitările RSA

Ca orice algoritm criptografic, RSA are puncte tari și puncte slabe care trebuie luate în considerare la proiectarea sistemelor securizate. Evaluarea obiectivă ajută la alegerea instrumentului potrivit pentru o sarcină specifică.

Avantaje cheie

Principalul avantaj al RSA este rezolvarea problemei fundamentale a distribuției cheilor — cheia publică poate fi publicată liber fără riscul compromiterii întregului sistem. Universalitatea algoritmului se manifestă prin suportul atât pentru criptare, cât și pentru semnătura digitală cu aceeași pereche de chei. În plus, RSA are un ecosistem extins de suport: bibliotecile sunt disponibile pentru toate limbajele și platformele.

Limitări principale

Principalul dezavantaj al RSA este performanța scăzută în comparație cu algoritmii simetrici. Decriptarea RSA-2048 pe un procesor mobil modern durează aproximativ 5–15 milisecunde, în timp ce AES-256 procesează gigabytes de date în același timp. De asemenea, RSA este vulnerabil la atacurile cuantice prin algoritmul lui Shor, ceea ce limitează aplicarea sa în sistemele cu termen lung de protecție a datelor.

Recomandări de utilizare

Pentru proiectele mobile, experții NIST recomandă: utilizați RSA doar pentru criptarea cheilor și semnăturile digitale, alegeți o lungime a cheii de cel puțin 3072 de biți pentru proiecte noi, combinați RSA cu AES într-o schemă hibridă și urmăriți dezvoltarea standardelor post-cuantice pentru o migrare planificată pe termen lung.

Întrebări frecvente

Care este diferența dintre RSA și AES?

RSA — algoritm asimetric cu o pereche de chei, utilizat pentru criptarea volumelor mici de date și semnăturile digitale. AES — algoritm simetric cu o singură cheie comună, care funcționează de 100–1000 de ori mai rapid decât RSA. În sistemele moderne, ele sunt combinate: RSA protejează transmiterea cheii de sesiune AES, iar AES criptează traficul principal.

Ce dimensiune a cheii RSA este considerată sigură astăzi?

Dimensiunea minimă sigură din 2023 conform NIST SP 800-131A Rev. 2 este RSA-2048. Cheile de 1024 de biți sunt oficial interzise pentru sistemele guvernamentale americane. Pentru proiecte noi se recomandă 3072 de biți, ceea ce asigură o marjă de securitate și o rezistență echivalentă criptării simetrice de 128 de biți.

Se poate utiliza RSA în aplicațiile mobile?

Da, RSA este utilizat pe scară largă în aplicațiile mobile. Android oferă Android KeyStore pentru generarea hardware și stocarea securizată a cheilor RSA. iOS — Security Framework cu suport Secure Enclave. Pentru criptarea datelor mari se recomandă schema hibridă RSA + AES, unde RSA criptează doar cheia de sesiune.

Poate fi spart RSA-2048?

Pe calculatoarele clasice, spargerea RSA-2048 este practic imposibilă — conform estimărilor actuale, ar necesita peste 300 de miliarde de ani de calcul continuu. Cu toate acestea, un calculator cuantic cu un număr suficient de qubiți va putea sparge RSA-2048 în câteva minute folosind algoritmul lui Shor. Conform estimărilor IBM, un astfel de calculator nu va apărea mai devreme de 2035.

Care sunt alternativele la RSA?

Printre algoritmii asimetrici populari se numără ECC (Elliptic Curve Cryptography), care asigură o securitate echivalentă cu o lungime mai mică a cheii — ECC de 256 de biți este echivalent cu RSA-3072. Pentru era post-cuantică, NIST a ales în 2024 CRYSTALS-Kyber pentru criptare și CRYSTALS-Dilithium pentru semnăturile digitale.

Rezumat

  • RSA — algoritm de criptare asimetrică bazat pe dificultatea factorizării numerelor mari.
  • Perechea de chei — publică pentru criptare și privată pentru decriptare, rezolvă problema distribuției cheilor.
  • Dimensiunea de 2048 de biți este standardul minim de securitate din 2023.
  • Performanța RSA este cu 2–3 ordine de mărime mai mică decât a cifrurilor simetrice, de aceea este utilizat în scheme hibride.
  • Semnăturile digitale pe RSA sunt utilizate în 85% din certificatele TLS de pe internet.
  • Platformele mobile Android și iOS oferă API-uri încorporate pentru lucrul cu RSA.
  • Migrarea post-cuantică — până în 2035 RSA va rămâne standardul principal, apoi va începe tranziția la noi algoritmi.

Vom dezvolta o aplicație mobilă la cheie

IT Sectr creează aplicații iOS și Android pentru startup-uri și afaceri din 2017. Vă vom consilia și vă vom propune cea mai bună soluție.

Discutați proiectul

Citiți și