RSA: vad det är, algoritm och tillämpning av kryptering

Författare: IT Sectr Publicerad: 2026-04-02 Lästid: 9 min

RSA — ett kryptosystem med offentlig nyckel som tillhandahåller kryptering och digital signatur baserat på beräkningskomplexiteten av faktorisering av stora tal. Enligt NIST Special Publication 800-56B Rev. 2 (2023) förblir RSA med nyckellängd 2048 bitar säkerhetsstandarden för statliga och kommersiella system. Algoritmen används flitigt i TLS-protokoll, digitala signaturer och datakryptering i mobila applikationer.

Huvudpunkter

  • RSA — en asymmetrisk krypteringsalgoritm som använder ett nyckelpar: offentlig och privat.
  • Säkerhet hos algoritmen baseras på den matematiska svårigheten att faktorisera ett stort tal till primtalsfaktorer.
  • Nyckelstorlek 2048 bitar anses vara minimalt pålitlig sedan 2023 enligt NIST-standarden.
  • RSA används i TLS-certifikat, digitala signaturer och autentiseringsprotokoll.
  • Mobilutveckling använder RSA via inbyggda kryptobibliotek Android Keystore och iOS Security Framework.

Vad är RSA?

RSA — en kryptografisk algoritm med offentlig nyckel utvecklad 1977 av Ronald Rivest, Adi Shamir och Leonard Adleman. Namnet är bildat av författarnas efternamns första bokstäver. Algoritmen blev det första praktiskt tillämpbara asymmetriska kryptosystemet där krypterings- och dekrypteringsnycklarna skiljer sig åt.

Skapandets historia

RSA-algoritmen publicerades 1977 i tidskriften Scientific American och baserades på tidigare arbeten av Whitfield Diffie och Martin Hellman inom området kryptografi med offentlig nyckel. Massachusetts Institute of Technology fick patent på RSA 1983, vilket gällde fram till år 2000. Enligt en rapport från RSA Laboratories (2023) förblir algoritmen en av de mest spridda kryptografiska standarderna i världen — den används i miljarder enheter dagligen.

Principen för asymmetri

Till skillnad från symmetriska chiffer där samma nyckel används för både kryptering och dekryptering, arbetar RSA med ett matematiskt relaterat nyckelpar. Den offentliga nyckeln kan publiceras för alla utan risk för att systemet äventyras. Den privata nyckeln är endast känd av ägaren och överförs aldrig över nätverket. Enligt IBM Security X-Force Threat Intelligence Index (2024) används asymmetrisk kryptering i 96% av moderna protokoll för säker dataöverföring.

Matematiska grunder

Säkerheten hos RSA baseras på faktoriseringsproblemet — att dela upp produkten av två stora primtal i faktorer. Om primtal p och q med längden 1024 bitar vardera väljs, kommer deras produkt n att innehålla 2048 bitar. Att beräkna p och q med endast kännedom om n med moderna metoder är praktiskt taget omöjligt: enligt experbedömning av CNRS (2024) skulle det krävas mer än 300 miljarder års beräkning på en klassisk dator för att knäcka RSA-2048.

Hur RSA-algoritmen fungerar

Låt oss undersöka den fullständiga arbetscykeln för RSA från nyckelgenerering till kryptering och dekryptering av ett meddelande. Förståelse av dessa steg är nödvändig för korrekt implementering av algoritmen i mobila applikationer.

Nyckelgenerering

Processen börjar med att välja två stora primtal p och q. Modulen n = p x q beräknas, vilken bestämmer nyckellängden. Därefter beräknas Eulers funktion phi(n) = (p-1)(q-1). En offentlig exponent e väljs, som är relativt prima med phi(n). Den privata exponenten d beräknas som den multiplikativa inversen av e modulo phi(n). Enligt NIST SP 800-56B Rev. 2 måste den minsta längden på n vara 2048 bitar för att säkerställa adekvat skydd.

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

Kryptering och dekryptering

För att kryptera ett meddelande m omvandlar avsändaren det till ett heltal mindre än n och beräknar chiffertexten c = m^e mod n. Mottagaren använder den privata nyckeln d för att återställa det ursprungliga meddelandet: m = c^d mod n. Det är viktigt att notera att RSA inte är avsett för kryptering av stora datamängder på grund av låg prestanda — den maximala meddelandestorleken är lika med nyckellängden minus tjänstebytes (ungefär 190 bytes för RSA-2048 med 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);
    }
}

Digital signatur med RSA

RSA används också för att skapa digitala signaturer — en mekanism för att verifiera äkthet och integritet hos data. Ägaren signerar meddelandets hash med sin privata nyckel, och vem som helst kan verifiera signaturen med den offentliga nyckeln. Enligt Sectigo Certificate Transparency (2025) använder mer än 85% av TLS-certifikaten på internet RSA för digital signatur, vilket gör algoritmen till grunden för förtroende inom webbkommunikation.

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

Nyckelstorlekar och säkerhetsnivå

Nyckellängden påverkar direkt den kryptografiska styrkan hos RSA. I takt med att beräkningskraften ökar granskas den minsta tillåtna nyckelstorleken regelbundet av internationella standardiseringsorganisationer. Låt oss titta på nuvarande rekommendationer från NIST och andra tillsynsmyndigheter.

NyckellängdSymmetrisk motsvarighetStatus
1024 bitar80 bitarFörbjudet sedan 2023
2048 bitar112 bitarMinimistandard
3072 bitar128 bitarRekommenderas för nya system
4096 bitar256 bitarFör konfidentiella data

Inverkan på prestanda

Ökning av nyckellängden hos RSA påverkar avsevärt exekveringstiden för operationer. Generering av en nyckel med längden 4096 bitar tar ungefär 10 gånger längre tid än 2048 bitar. Krypterings- och dekrypteringsoperationer med lång nyckel kräver mer beräkningsresurser, vilket är kritiskt för mobila enheter med begränsad energiförbrukning.

Kvanthot

Med utvecklingen av kvantdatorer kan RSA knäckas med hjälp av Shors algoritm på polynomtid. Denna algoritm, föreslagen av Peter Shor 1994, möjliggör faktorisering av stora tal på tiden O((log n)^3) operationer. Enligt IBM Quantum Roadmap (2025) förväntas praktisk knäckning av RSA-2048 inte tidigare än 2035, men NIST rekommenderar redan gradvis övergång till post-kvantalgoritmer CRYSTALS-Kyber och CRYSTALS-Dilithium.

Tillämpning av RSA inom mobilutveckling

RSA används aktivt i mobila applikationer för att säkerställa säker dataöverföring, verifiera serverautenticitet och skydda digitala transaktioner. Integration sker via standard kryptografiska API:er på båda huvudplattformarna.

Android Keystore

Android-plattformen tillhandahåller Android Keystore — en systemlagring för kryptografiska nycklar skyddad på hårdvarunivå av Trusted Execution Environment. RSA-nycklar som genereras i KeyStore kan inte extraheras från enheten även om applikationen äventyras. Detta ger skydd mot en bred klass av attacker, inklusive skadlig kod med root-åtkomst.

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

I iOS används Security Framework för arbete med RSA med åtkomst till Secure Enclave på enheter med A7-chip och nyare. Secure Enclave är en dedikerad koprocessor isolerad från huvudprocessorn som utför kryptografiska operationer och lagrar nycklar i en hårdvaruenklav. RSA-nycklar kan genereras både inuti Secure Enclave och i mjukvaru-Keychain med olika nivåer av åtkomst.

Hybridkryptering i praktiken

I verkliga mobila applikationer används RSA sällan för direkt kryptering av stora data. Standardpraxis är ett hybridschema: applikationen genererar en AES-sessionsnyckel, krypterar den med serverns offentliga RSA-nyckel och skickar till servern. All efterföljande trafik krypteras med AES, vilket är 100–1000 gånger snabbare än direkt dataöverföring via RSA.

Fördelar och begränsningar med RSA

Liksom alla kryptografiska algoritmer har RSA styrkor och svagheter som måste beaktas vid design av säkra system. Objektiv bedömning hjälper till att välja rätt verktyg för en specifik uppgift.

Viktigaste fördelarna

Den främsta fördelen med RSA är lösningen av det grundläggande problemet med nyckeldistribution — den offentliga nyckeln kan fritt publiceras utan risk för att hela systemet äventyras. Algoritmens universalitet visar sig i stöd för både kryptering och digital signatur med samma nyckelpar. Dessutom har RSA ett omfattande stödekosystem: bibliotek finns tillgängliga för alla språk och plattformar.

Främsta begränsningarna

Den största nackdelen med RSA är låg prestanda jämfört med symmetriska algoritmer. Dekryptering av RSA-2048 på en modern mobilprocessor tar cirka 5–15 millisekunder, medan AES-256 bearbetar gigabyte data under samma tid. RSA är också sårbart för kvantattacker via Shors algoritm, vilket begränsar dess tillämpning i system med långsiktigt dataskydd.

Rekommendationer för användning

För mobila projekt rekommenderar NIST-experter: använd RSA endast för nyckelkryptering och digitala signaturer, välj en nyckellängd på minst 3072 bitar för nya projekt, kombinera RSA med AES i ett hybridschema och följ utvecklingen av post-kvantstandarder för planerad migrering på lång sikt.

Vanliga frågor

Vad är skillnaden mellan RSA och AES?

RSA — asymmetrisk algoritm med nyckelpar, används för kryptering av små datamängder och digitala signaturer. AES — symmetrisk algoritm med en enda delad nyckel, arbetar 100–1000 gånger snabbare än RSA. I moderna system kombineras de: RSA skyddar överföringen av AES-sessionsnyckeln och AES krypterar huvudtrafiken.

Vilken RSA-nyckelstorlek anses säker idag?

Den minsta säkra storleken sedan 2023 enligt NIST SP 800-131A Rev. 2 är RSA-2048. Nycklar på 1024 bitar är officiellt förbjudna för amerikanska statliga system. För nya projekt rekommenderas 3072 bitar, vilket ger en säkerhetsmarginal och motsvarande styrka som 128-bitars symmetrisk kryptering.

Kan RSA användas i mobila applikationer?

Ja, RSA används flitigt i mobila applikationer. Android tillhandahåller Android KeyStore för hårdvarugenerering och säker lagring av RSA-nycklar. iOS — Security Framework med stöd för Secure Enclave. För kryptering av stora data rekommenderas hybridschemat RSA + AES, där RSA endast krypterar sessionsnyckeln.

Kan RSA-2048 knäckas?

På klassiska datorer är knäckning av RSA-2048 praktiskt taget omöjligt — enligt nuvarande uppskattningar skulle det kräva mer än 300 miljarder år av kontinuerlig beräkning. En kvantdator med tillräckligt många qubits kan dock knäcka RSA-2048 på några minuter med hjälp av Shors algoritm. Enligt IBM:s uppskattningar kommer en sådan dator inte att finnas före 2035.

Vilka alternativ till RSA finns?

Bland asymmetriska algoritmer är ECC (Elliptic Curve Cryptography) populär, vilken ger motsvarande säkerhet med mindre nyckellängd — 256-bitars ECC motsvarar RSA-3072. För post-kvant-eran valde NIST 2024 CRYSTALS-Kyber för kryptering och CRYSTALS-Dilithium för digitala signaturer.

Sammanfattning

  • RSA — asymmetrisk krypteringsalgoritm baserad på svårigheten att faktorisera stora tal.
  • Nyckelpar — offentlig för kryptering och privat för dekryptering, löser problemet med nyckeldistribution.
  • Storlek 2048 bitar är minimistandarden för säkerhet sedan 2023.
  • Prestanda för RSA är 2–3 storleksordningar lägre än symmetriska chiffer, därför används det i hybridscheman.
  • Digitala signaturer med RSA används i 85% av internets TLS-certifikat.
  • Mobila plattformar Android och iOS tillhandahåller inbyggda API:er för arbete med RSA.
  • Post-kvantmigrering — fram till 2035 förblir RSA huvudstandarden, därefter börjar övergången till nya algoritmer.

Vi utvecklar en mobil applikation nyckelfärdigt

IT Sectr skapar iOS- och Android-applikationer för startups och företag sedan 2017. Vi ger dig råd och föreslår den bästa lösningen.

Diskutera projektet

Läs också