RSA: mi ez, algoritmus és a titkosítás alkalmazása

Szerző: IT Sectr Megjelenés: 2026-04-02 Olvasási idő: 9 perc

RSA — egy nyilvános kulcsú kriptorendszer, amely titkosítást és digitális aláírást biztosít nagy számok faktorizálásának számítási komplexitásán alapulva. A NIST Special Publication 800-56B Rev. 2 (2023) szerint a 2048 bites kulcshosszúságú RSA továbbra is a biztonsági szabvány az állami és kereskedelmi rendszerek számára. Az algoritmust széles körben használják TLS protokollokban, digitális aláírásokban és adattitkosításban mobilalkalmazásokban.

Főbb pontok

  • RSA — aszimmetrikus titkosítási algoritmus, amely kulcspárt használ: nyilvános és privát.
  • Biztonság az algoritmus matematikai nehézségén alapul, egy nagy szám prímtényezőkre bontásában.
  • Kulcs mérete 2048 bit 2023 óta minimálisan megbízhatónak számít a NIST szabvány szerint.
  • RSA TLS tanúsítványokban, digitális aláírásokban és hitelesítési protokollokban használatos.
  • Mobilfejlesztés az RSA-t a beépített kriptográfiai könyvtárakon keresztül használja: Android Keystore és iOS Security Framework.

Mi az RSA?

RSA — egy nyilvános kulcsú kriptográfiai algoritmus, amelyet 1977-ben Ronald Rivest, Adi Shamir és Leonard Adleman fejlesztett ki. A név a szerzők vezetékneveinek kezdőbetűiből áll. Az algoritmus volt az első gyakorlatilag alkalmazható aszimmetrikus kriptorendszer, ahol a titkosítási és visszafejtési kulcsok különböznek.

A létrehozás története

Az RSA algoritmust 1977-ben publikálták a Scientific American folyóiratban, és Whitfield Diffie és Martin Hellman korábbi, nyilvános kulcsú kriptográfiával kapcsolatos munkáin alapult. A Massachusetts Institute of Technology 1983-ban szerzett szabadalmat az RSA-ra, amely 2000-ig volt érvényben. Az RSA Laboratories (2023) jelentése szerint az algoritmus továbbra is a világ legelterjedtebb kriptográfiai szabványai közé tartozik — naponta milliárdnyi eszközben használják.

Az aszimmetria elve

Ellentétben a szimmetrikus rejtjelekkel, ahol ugyanazt a kulcsot használják titkosításra és visszafejtésre, az RSA matematikailag összefüggő kulcspárral működik. A nyilvános kulcs mindenki számára publikálható a rendszer kompromittálásának kockázata nélkül. A privát kulcsot csak a tulajdonos ismeri, és soha nem továbbítják a hálózaton keresztül. Az IBM Security X-Force Threat Intelligence Index (2024) tanulmánya szerint az aszimmetrikus titkosítást a modern biztonságos adatátviteli protokollok 96%-ában használják.

Matematikai alapok

Az RSA biztonsága a faktorizációs problémán alapul — két nagy prímszám szorzatának tényezőkre bontásán. Ha mindegyik 1024 bites p és q prímszámot választunk, akkor az n szorzatuk 2048 bites lesz. A p és q kiszámítása csak n ismeretében modern módszerekkel gyakorlatilag lehetetlen: a CNRS (2024) szakértői értékelése szerint az RSA-2048 feltöréséhez több mint 300 milliárd év számításra lenne szükség egy klasszikus számítógépen.

Hogyan működik az RSA algoritmus

Vizsgáljuk meg az RSA teljes munkaciklusát a kulcsgenerálástól az üzenet titkosításáig és visszafejtéséig. Ezen szakaszok megértése szükséges az algoritmus helyes implementálásához mobilalkalmazásokban.

Kulcsgenerálás

A folyamat két nagy prímszám, p és q kiválasztásával kezdődik. Kiszámítjuk az n = p x q modulust, amely meghatározza a kulcs hosszát. Ezután kiszámítjuk az Euler-függvényt phi(n) = (p-1)(q-1). Kiválasztunk egy e nyilvános kitevőt, amely relatív prím phi(n)-hez. A d privát kitevőt e phi(n) modulo szerinti multiplikatív inverzeként számítjuk ki. A NIST SP 800-56B Rev. 2 szerint az n minimális hosszának 2048 bitnek kell lennie a megfelelő védelem biztosításához.

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();
    }
}

Titkosítás és visszafejtés

Az m üzenet titkosításához a feladó egész számmá alakítja, amely kisebb n-nél, és kiszámítja a c = m^e mod n rejtjelezett szöveget. A címzett a d privát kulccsal állítja vissza az eredeti üzenetet: m = c^d mod n. Fontos megjegyezni, hogy az RSA nem nagy adatmennyiségek titkosítására készült az alacsony teljesítmény miatt — a maximális üzenetméret egyenlő a kulcs hosszával mínusz a szolgáltatási bájtokkal (körülbelül 190 bájt az RSA-2048 esetén OAEP-pel).

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);
    }
}

Digitális aláírás RSA-val

Az RSA digitális aláírások létrehozására is használatos — az adatok hitelességének és integritásának ellenőrzésére szolgáló mechanizmus. A tulajdonos az üzenet hash-ét a privát kulcsával írja alá, és bárki ellenőrizheti az aláírást a nyilvános kulccsal. A Sectigo Certificate Transparency (2025) jelentése szerint az internetes TLS tanúsítványok több mint 85%-a használ RSA-t digitális aláíráshoz, ami az algoritmust a webes kommunikáció bizalmának alapjává teszi.

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)
}

Kulcsméretek és biztonsági szint

A kulcs hossza közvetlenül befolyásolja az RSA kriptográfiai ellenálló képességét. A számítási teljesítmény növekedésével a minimálisan megengedett kulcsméretet rendszeresen felülvizsgálják a nemzetközi szabványosítási szervezetek. Tekintsük át a NIST és más szabályozók jelenlegi ajánlásait.

Kulcs hosszaSzimmetrikus megfelelőStátusz
1024 bit80 bit2023 óta tiltott
2048 bit112 bitMinimális szabvány
3072 bit128 bitÚj rendszerekhez ajánlott
4096 bit256 bitBizalmas adatokhoz

Hatás a teljesítményre

Az RSA kulcs hosszának növelése jelentősen befolyásolja a műveletek végrehajtási idejét. Egy 4096 bites kulcs generálása körülbelül 10-szer több időt vesz igénybe, mint a 2048 bites. A hosszú kulccsal végzett titkosítási és visszafejtési műveletek több számítási erőforrást igényelnek, ami kritikus a korlátozott energiafogyasztású mobil eszközök számára.

Kvantumfenyegetés

A kvantumszámítógépek fejlődésével az RSA feltörhető a Shor-algoritmus segítségével polinomiális időben. Ezt az algoritmust Peter Shor javasolta 1994-ben, és lehetővé teszi nagy számok faktorizálását O((log n)^3) művelet alatt. Az IBM Quantum Roadmap (2025) szerint az RSA-2048 gyakorlati feltörése várhatóan nem korábban, mint 2035, azonban a NIST már most a CRYSTALS-Kyber és CRYSTALS-Dilithium posztkvantum algoritmusokra való fokozatos áttérést ajánlja.

RSA alkalmazása mobilfejlesztésben

Az RSA-t aktívan használják mobilalkalmazásokban a biztonságos adatátvitel biztosítására, a szerverek hitelességének ellenőrzésére és a digitális tranzakciók védelmére. Az integráció mindkét fő platform szabványos kriptográfiai API-jain keresztül történik.

Android Keystore

Az Android platform Android Keystore — egy rendszer szintű kriptográfiai kulcs tárolót biztosít, amely hardver szinten védett a Trusted Execution Environment által. A KeyStore-ban generált RSA kulcsok nem vonhatók ki az eszközből még az alkalmazás kompromittálása esetén sem. Ez védelmet nyújt a támadások széles osztálya ellen, beleértve a root hozzáféréssel rendelkező kártevőket is.

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

iOS-ben az RSA-val való munkához a Security Framework-öt használják, amely hozzáférést biztosít a Secure Enclave-hoz az A7 chipes és újabb eszközökön. A Secure Enclave egy dedikált koprocesszor, amely elkülönül a fő processzortól, kriptográfiai műveleteket hajt végre, és a kulcsokat hardver enklávéban tárolja. Az RSA kulcsok generálhatók mind a Secure Enclave-ben, mind a szoftveres Keychain-ben különböző hozzáférési szintekkel.

Hibrid titkosítás a gyakorlatban

Valós mobilalkalmazásokban az RSA-t ritkán használják nagy adatok közvetlen titkosítására. A szabványos gyakorlat a hibrid séma: az alkalmazás létrehoz egy AES munkamenet-kulcsot, titkosítja azt a szerver nyilvános RSA kulcsával, és elküldi a szervernek. Minden további forgalom AES-sel van titkosítva, ami 100–1000-szer gyorsabb, mint az adatok RSA-n keresztüli közvetlen továbbítása.

RSA előnyei és korlátai

Mint minden kriptográfiai algoritmusnak, az RSA-nak is vannak erős és gyenge pontjai, amelyeket figyelembe kell venni a biztonságos rendszerek tervezésekor. Az objektív értékelés segít kiválasztani a megfelelő eszközt egy adott feladathoz.

Fő előnyök

Az RSA fő előnye a kulcs elosztás alapvető problémájának megoldása — a nyilvános kulcs szabadon publikálható a teljes rendszer kompromittálásának kockázata nélkül. Az algoritmus univerzalitása abban nyilvánul meg, hogy ugyanaz a kulcspár támogatja mind a titkosítást, mind a digitális aláírást. Emellett az RSA kiterjedt támogatási ökoszisztémával rendelkezik: a könyvtárak minden nyelvhez és platformhoz elérhetők.

Fő korlátok

Az RSA fő hátránya az alacsony teljesítmény a szimmetrikus algoritmusokhoz képest. Az RSA-2048 visszafejtése egy modern mobil processzoron körülbelül 5–15 ezredmásodpercig tart, míg az AES-256 ugyanennyi idő alatt gigabájtnyi adatot dolgoz fel. Továbbá az RSA sebezhető a Shor-algoritmuson keresztüli kvantumtámadásokkal szemben, ami korlátozza alkalmazását a hosszú távú adatvédelmi rendszerekben.

Használati ajánlások

Mobil projektekhez a NIST szakértői a következőket ajánlják: használja az RSA-t csak kulcsok titkosítására és digitális aláírásokra, válasszon legalább 3072 bites kulcshosszt új projektekhez, kombinálja az RSA-t AES-sel hibrid sémában, és kövesse nyomon a posztkvantum szabványok fejlődését a tervezett migrációhoz hosszú távon.

Gyakran ismételt kérdések

Mi a különbség az RSA és az AES között?

RSA — aszimmetrikus algoritmus kulcspárral, kis adatmennyiségek titkosítására és digitális aláírásokra használják. AES — szimmetrikus algoritmus egyetlen megosztott kulccsal, 100–1000-szer gyorsabb, mint az RSA. A modern rendszerekben kombinálják őket: az RSA védi az AES munkamenet-kulcs továbbítását, az AES pedig a fő forgalmat titkosítja.

Milyen RSA kulcsméret számít biztonságosnak ma?

A minimális biztonságos méret 2023 óta a NIST SP 800-131A Rev. 2 szerint az RSA-2048. Az 1024 bites kulcsok hivatalosan tiltottak az amerikai kormányzati rendszerek számára. Új projektekhez 3072 bit ajánlott, ami biztonsági tartalékot és a 128 bites szimmetrikus titkosítással egyenértékű ellenállást biztosít.

Használható az RSA mobilalkalmazásokban?

Igen, az RSA-t széles körben használják mobilalkalmazásokban. Az Android Android KeyStore-t biztosít az RSA kulcsok hardveres generálásához és biztonságos tárolásához. iOS — Security Framework Secure Enclave támogatással. Nagy adatok titkosításához az RSA + AES hibrid séma ajánlott, ahol az RSA csak a munkamenet-kulcsot titkosítja.

Feltörhető az RSA-2048?

Klasszikus számítógépeken az RSA-2048 feltörése gyakorlatilag lehetetlen — a jelenlegi becslések szerint több mint 300 milliárd év folyamatos számításra lenne szükség. Azonban egy kellő számú qubittel rendelkező kvantumszámítógép néhány perc alatt feltörheti az RSA-2048-at a Shor-algoritmus segítségével. Az IBM becslései szerint egy ilyen számítógép 2035 előtt nem jelenik meg.

Milyen alternatívái vannak az RSA-nak?

Az aszimmetrikus algoritmusok közül népszerű az ECC (Elliptic Curve Cryptography), amely egyenértékű biztonságot nyújt kisebb kulcshosszal — a 256 bites ECC megfelel az RSA-3072-nek. A posztkvantum korszakra a NIST 2024-ben a CRYSTALS-Kybert választotta titkosításhoz és a CRYSTALS-Dilithiumot digitális aláírásokhoz.

Összefoglalás

  • RSA — aszimmetrikus titkosítási algoritmus nagy számok faktorizálásának nehézségén alapulva.
  • Kulcspár — nyilvános titkosításhoz és privát visszafejtéshez, megoldja a kulcselosztás problémáját.
  • 2048 bites méret a minimális biztonsági szabvány 2023 óta.
  • Teljesítmény az RSA 2–3 nagyságrenddel alacsonyabb a szimmetrikus rejtjeleknél, ezért hibrid sémákban használják.
  • Digitális aláírások RSA-val az internetes TLS tanúsítványok 85%-ában használatosak.
  • Mobil platformok Android és iOS beépített API-kat biztosítanak az RSA-val való munkához.
  • Posztkvantum migráció — 2035-ig az RSA marad a fő szabvány, majd megkezdődik az átállás az új algoritmusokra.

Kulcsrakész mobilalkalmazást fejlesztünk

Az IT Sectr 2017 óta készít iOS és Android alkalmazásokat induló vállalkozásoknak és vállalkozásoknak. Tanácsot adunk, és a legjobb megoldást javasoljuk.

Projekt megbeszélése

Olvassa el is