Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Some links on this page are affiliate links: if you buy through them we may earn a commission, at no extra cost to you.

Kort fortalt: RSA er asymmetrisk kryptografi, hvor en offentlig nøgle kan deles med alle, mens en matematisk forbundet privat nøgle skal holdes hemmelig. Den offentlige nøgle bruges typisk til at kryptere en lille hemmelighed eller verificere en signatur; den private nøgle bruges til at dekryptere eller signere.

RSA’s sikkerhed bygger blandt andet på, at det er let at gange to store primtal sammen, men beregningsmæssigt vanskeligt at faktorisere produktet igen. I praksis er matematikken dog kun én del af løsningen: padding, encoding, tilfældighed, protokolvalg og beskyttelse af den private nøgle er lige så afgørende.

Hvad er RSA?

RSA er en public-key-algoritme, også kaldet asymmetrisk kryptografi. Navnet kommer fra Ron Rivest, Adi Shamir og Leonard Adleman, som publicerede systemet i 1978.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Modsat symmetrisk kryptering, hvor den samme hemmelige nøgle bruges til både kryptering og dekryptering, arbejder RSA med et nøglepar:

  • Den offentlige nøgle må distribueres til andre.
  • Den private nøgle skal beskyttes og må ikke kopieres til uvedkommende.

RSA-algoritmen betyder derfor ikke kun nogle få formler. En sikker implementering består også af nøglevalidering, encoding, padding, nøgleopbevaring og korrekt brug i en protokol. Den tekniske standard RFC 8017 beskriver RSA-nøgler, primitive operationer, krypteringsordninger og signaturskemaer.

Hvorfor bruger RSA to nøgler?

En enkel analogi er en hængelås, som alle må lukke, men kun ejeren kan åbne. I RSA kan en afsender bruge modtagerens offentlige nøgle til at beskytte en besked, som modtageren derefter åbner med sin private nøgle.

Analogiens begrænsning er vigtig: digitale signaturer fungerer ikke bare som “kryptering med den private nøgle”. Her bruger afsenderen sin private nøgle til at skabe en signatur, mens modtageren bruger den offentlige nøgle til at kontrollere den.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Funktion Operation Nøgle
Kryptering Offentlig nøgle Modtagerens offentlige nøgle
Dekryptering Privat nøgle Modtagerens private nøgle
Signering Privat nøgle Afsenderens private nøgle
Verifikation Offentlig nøgle Afsenderens offentlige nøgle

Den offentlige nøgle identificerer dog ikke automatisk sin ejer. Identiteten skal bindes til nøglen gennem eksempelvis et TLS-certifikat, en SSH-fingerprint, en tillidskæde eller en anden autentificeringsmekanisme.

Matematikken bag RSA

RSA bruger to store primtal. I et forenklet nøgle-genereringsforløb sker dette:

  1. Vælg to primtal, p og q.
  2. Beregn modulus: n = p × q.
  3. Beregn normalt Eulers totientfunktion: φ(n) = (p − 1)(q − 1).
  4. Vælg en offentlig eksponent e, som er relativt primisk med φ(n).
  5. Beregn den private eksponent d, så e × d ≡ 1 mod φ(n).

Den offentlige nøgle kan skrives som (n, e). Den private nøgle indeholder d og typisk også p, q samt CRT-parametre, der gør private operationer hurtigere.

I mange moderne RSA-profiler bruges e = 65537. Det er en almindelig standardværdi, ikke en matematisk nødvendighed for alle RSA-implementeringer. En specifik profil kan dog stille strengere krav; eksempelvis angiver NIST’s PIV-materiale, at RSA-offentlige nøgler i den pågældende profil skal bruge 65537.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Hvad betyder modulo?

a mod n er resten efter division af a med n. Eksempelvis er:

64 mod 55 = 9

RSA udfører store potensberegninger modulo n. Den private eksponent konstrueres, så den kan vende den relevante operation under bestemte matematiske betingelser.

Sådan fungerer RSA-kryptering

I den forenklede matematiske model omdannes meddelelsen til et tal m, som ligger inden for modulus’ størrelse. Kryptering ser sådan ud:

c = m^e mod n

Her er c ciphertext, e den offentlige eksponent, og n modulus. Modtageren dekrypterer med:

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
m = c^d mod n

Den rå model er kun pædagogisk. I et rigtigt system skal beskeden først behandles med en standardiseret encoding- og padding-ordning. Til nye krypteringssystemer bør man normalt vælge RSAES-OAEP. RSAES-PKCS1-v1_5 findes stadig af kompatibilitetshensyn, men bør ikke være førstevalg i et nyt design. Se RFC 8017 for de præcise definitioner.

Hvorfor er padding nødvendig?

Rå RSA er deterministisk: den samme besked med den samme nøgle giver det samme resultat. Det kan afsløre mønstre og åbne for angreb. OAEP tilfører blandt andet tilfældighed og struktur, så RSA-operationen får de egenskaber, en praktisk krypteringsordning kræver.

RSA kan heller ikke kryptere vilkårligt store filer direkte. For PKCS#1 v1.5-kryptering er den maksimale beskedlængde k − 11 oktetter, hvor k er moduluslængden i oktetter. OAEP har en anden grænse, der afhænger af hashfunktionen. En fejl som “message too long” betyder derfor ofte, at man forsøger at bruge RSA som en almindelig filkrypteringsalgoritme.

Hvorfor bruges hybridkryptering?

Store datamængder krypteres normalt med en hurtig symmetrisk algoritme som AES eller ChaCha20. RSA bruges kun til en lille tilfældigt genereret sessionsnøgle eller til en signatur.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
  1. Generér en tilfældig sessionsnøgle.
  2. Krypter filen eller forbindelsesdataene med en symmetrisk, autentificeret krypteringsalgoritme.
  3. Beskyt sessionsnøglen med modtagerens RSA-offentlige nøgle og OAEP.
  4. Send den krypterede sessionsnøgle sammen med ciphertext.
  5. Modtageren bruger sin private RSA-nøgle til at hente sessionsnøglen og dekrypterer derefter dataene symmetrisk.

Denne model kombinerer RSA’s nøglefordelingsfordel med symmetrisk krypterings hastighed.

Sådan fungerer RSA-signaturer

En digital RSA-signatur beskytter primært integritet og autenticitet:

  1. Der beregnes en hash af meddelelsen.
  2. Hashværdien kodes i et defineret signaturformat.
  3. Den private RSA-nøgle bruges til at skabe signaturen.
  4. Modtageren beregner selv meddelelsens hash.
  5. Den offentlige nøgle bruges til at kontrollere signaturen og den kodede hash.

En gyldig signatur viser, at dataene passer til den private nøgle, og at de ikke er ændret siden signeringen. Den giver ikke fortrolighed: en signeret meddelelse kan normalt læses af alle, der får adgang til den.

Til nye signatursystemer bør man normalt vælge RSASSA-PSS. RSASSA-PKCS1-v1_5 bruges fortsat, hvor ældre protokoller kræver det. RFC 8017 beskriver begge ordninger og anbefaler en gradvis overgang til PSS som en forsigtighedsforanstaltning.

Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Udtrykket “kryptering med den private nøgle” kan bruges som en grov historisk analogi, men er teknisk upræcist. En moderne RSA-signatur er en hashbaseret og standardiseret signaturoperation.

Et lille RSA-regneeksempel

Følgende tal er bevidst så små, at man kan kontrollere dem manuelt. De er ikke sikre.

p = 5
q = 11
n = p × q = 55
φ(n) = (5 − 1)(11 − 1) = 40
e = 3
d = 27

Den private eksponent er korrekt, fordi:

3 × 27 = 81 ≡ 1 mod 40

Vælg nu den lille besked m = 4.

Kryptering:
c = 4^3 mod 55
c = 64 mod 55
c = 9

Dekryptering:
m = 9^27 mod 55
m = 4

Eksemplet viser den matematiske idé, men springer padding, encoding, sikker tilfældighed og alle krav til virkelige nøglestørrelser over. Produktionskode må ikke bruge disse tal eller rå RSA.

CRT-optimering

Private RSA-operationer kan optimeres med den kinesiske restsætning, CRT. I stedet for at beregne direkte modulo hele n udfører implementationen beregninger modulo p og modulo q og samler derefter resultaterne.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Det kan gøre dekryptering og signering hurtigere. Til gengæld skal implementationen beskyttes mod timingangreb, cache-angreb og fejlangreb. En matematisk korrekt algoritme er ikke nødvendigvis en sikker implementering.

Hvor bruges RSA?

TLS, HTTPS og certifikater

RSA kan indgå i TLS-certifikater og bruges til at signere certifikater eller autentificere en server. Det betyder ikke, at alle moderne HTTPS-forbindelser bruger RSA til selve nøgleudvekslingen. Moderne TLS-forbindelser anvender ofte elliptisk kurve-baseret nøgleudveksling for at opnå forward secrecy, mens RSA fortsat kan være en del af certifikat- og kompatibilitetslaget.

Software- og dokument-signering

Producenter kan signere softwarepakker, opdateringer, dokumenter eller PDF-filer med en privat nøgle. Modtagere verificerer med den offentlige nøgle, om indholdet er ændret, og om signaturen passer til den forventede udgiver.

E-mail

RSA kan bruges i systemer til e-mail-kryptering og signering, blandt andet til at beskytte en sessionsnøgle eller kontrollere afsenderens signatur. Den konkrete sikkerhed afhænger af protokollen og klienternes implementering.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

SSH

RSA-nøgler har længe været brugt til SSH-login og værtens identitet. I nye miljøer bør man følge den aktuelle SSH-implementations anbefalinger og kontrollere, hvordan nøgler, algoritmer og fingerprints administreres.

Cloud-KMS

En managed key-management-tjeneste kan udføre RSA-signering eller dekryptering uden at udlevere den private nøgle ukrypteret til applikationen. AWS KMS beskriver særskilte RSA-nøglespecifikationer for kryptering/dekryptering og signering/verifikation; Google Cloud KMS understøtter blandt andet RSA 2048-, 3072- og 4096-nøgler og RSA-OAEP.

RSA sammenlignet med andre algoritmer

Teknologi Bedst egnet til Typiske egenskaber
RSA PKI, kompatibilitet, nøgletransport og signaturer Store nøgler, større signaturer og relativt tunge operationer
AES eller ChaCha20 Store datamængder Symmetrisk og langt hurtigere til filer og forbindelsesdata
ECDSA, EdDSA og ECDH Moderne signaturer og nøgleudveksling Mindre nøgler og ofte lavere båndbredde- og beregningsomkostning

RSA er ikke automatisk forældet. Det er fortsat relevant i mange PKI- og kompatibilitetsmiljøer. Ved nye designs bør man dog sammenligne RSA med elliptiske kurver, protokolkrav, klientunderstøttelse og en realistisk migrationsplan.

RSA-nøglestørrelser og sikkerhed

  • 1024 bit: bør ikke anbefales til nye systemer.
  • 2048 bit: stadig en almindelig kompatibilitetsstørrelse, men den konkrete acceptabilitet afhænger af standard, levetid og anvendelse.
  • 3072 bit: større sikkerhedsmargin, men langsommere og med større nøgler og signaturer.
  • 4096 bit: endnu dyrere operationer; større er ikke automatisk bedre, hvis ydeevne og driftssikkerhed forringes.

Brug konkrete profiler og udgaver af standarderne, når du fastlægger levetider. NIST’s SP 800-131A Rev. 2 beskriver overgangen mellem kryptografiske algoritmer og nøglestørrelser. Senere udkast må ikke behandles som endelig politik.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Sådan bruger du RSA med OpenSSL

Eksemplerne nedenfor viser lokal test og læring med moderne OpenSSL-syntaks. Kontrollér altid kommandoerne mod den version, der er installeret hos dig; parametre og CLI-adfærd kan variere.

1. Generér en privat nøgle

openssl genpkey 
  -algorithm RSA 
  -pkeyopt rsa_keygen_bits:3072 
  -out private.pem

Beskyt filen med passende filrettigheder og helst krypteret nøgleopbevaring. En PEM-fil er ikke i sig selv en sikkerhedsmekanisme.

2. Udtræk den offentlige nøgle

openssl pkey 
  -in private.pem 
  -pubout 
  -out public.pem

3. Signér med RSA-PSS

openssl dgst 
  -sha256 
  -sign private.pem 
  -sigopt rsa_padding_mode:pss 
  -sigopt rsa_pss_saltlen:-1 
  -out signature.bin 
  message.txt

4. Verificér signaturen

openssl dgst 
  -sha256 
  -verify public.pem 
  -signature signature.bin 
  message.txt

Ved en gyldig signatur vises typisk Verified OK. En ændret fil, forkert offentlig nøgle eller beskadiget signatur skal give en fejl eller ugyldig verifikation.

5. Demonstrér RSA-OAEP

openssl pkeyutl 
  -encrypt 
  -pubin 
  -inkey public.pem 
  -in secret.txt 
  -out secret.enc 
  -pkeyopt rsa_padding_mode:oaep 
  -pkeyopt rsa_oaep_md:sha256 
  -pkeyopt rsa_mgf1_md:sha256

Dekryptering kræver den private nøgle og samme OAEP-parametre:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
openssl pkeyutl 
  -decrypt 
  -inkey private.pem 
  -in secret.enc 
  -out secret.txt 
  -pkeyopt rsa_padding_mode:oaep 
  -pkeyopt rsa_oaep_md:sha256 
  -pkeyopt rsa_mgf1_md:sha256

Fejl ved dekryptering skyldes ofte forkert privat nøgle, forskellig padding eller hash, for lang ciphertext eller beskadigede data. OpenSSL dokumenterer RSA i sin EVP_PKEY-RSA-model.

Typiske RSA-fejl

  • Rå RSA: Brug aldrig RSA uden en defineret og passende padding-ordning.
  • Forkert padding: Vælg OAEP til ny RSA-kryptering og PSS til nye RSA-signaturer, medmindre en eksisterende protokol kræver PKCS#1 v1.5.
  • Direkte kryptering af store filer: Brug hybridkryptering med en symmetrisk sessionsnøgle.
  • Selvimplementeret kryptografi: Brug et velafprøvet bibliotek i stedet for selv at implementere primtalstest, modular eksponentiering eller padding.
  • Dårlig tilfældighed: RSA kræver stærk entropy ved generering af primtal og padding. Embedded-systemer, tidlige bootmiljøer og virtuelle maskiner skal vurderes særligt omhyggeligt.
  • Ubeskyttet privat nøgle: Begræns adgang, krypter backups, brug KMS eller HSM hvor risikoen kræver det, og planlæg rotation.
  • Uautentificeret offentlig nøgle: En angriber kan ellers udskifte modtagerens eller afsenderens nøgle.
  • Ignorerede side channels: Timing, cache, fejlmeddelelser og hardwareadfærd kan lække information.
  • Genbrug uden livscyklus: Dokumentér ejerskab, rotation, tilbagekaldelse og hvad der sker ved kompromittering.

Er RSA stadig sikkert?

RSA er ikke “ukrakkeligt”. Sikkerheden afhænger af tilstrækkeligt store parametre, passende padding, korrekt protokolbrug, stærk tilfældighed, en sikker implementation og beskyttelse af den private nøgle. Factoring er den klassiske forklaring på RSA’s sikkerhed, men det er mere præcist at sige, at sikkerheden bygger på antagelser om, at relevante matematiske problemer er beregningsmæssigt vanskelige med kendte klassiske metoder og passende parametre.

Hvis en privat nøgle kompromitteres, kan en angriber skabe gyldige signaturer og i nogle protokoller dekryptere data, der er beskyttet med nøglen. Certifikater skal da tilbagekaldes eller udskiftes, og alle systemer, der stoler på nøglen, skal identificeres.

RSA er heller ikke post-quantum-sikker. En tilstrækkelig stor fejltolerant kvantecomputer vil i den almindeligt anvendte trusselsmodel kunne true RSA med Shor’s algoritme. Det betyder ikke, at dagens RSA allerede er praktisk brudt af kvantecomputere, men data med meget lang fortrolighedshorisont bør indgå i en migrationsplan. At gøre RSA-nøglen større er ikke det samme som at gøre den kvantesikker.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

OpenSSL eller en managed KMS?

OpenSSL er et godt valg til undervisning, lokal udvikling og automatiserede tests. Det er ikke i sig selv en central nøglelivscyklus, revisionsspor eller HSM-løsning.

AWS KMS passer typisk til AWS-miljøer, hvor IAM, CloudTrail og central kontrol er vigtige. AWS oplyser, at RSA-operationer som Sign, Verify, Encrypt og Decrypt med asymmetriske nøgler ikke er omfattet af den almindelige gratis request-kvote. Se de aktuelle detaljer på AWS KMS’ prisside.

Google Cloud KMS er relevant i Google Cloud-miljøer og understøtter RSA 2048, 3072 og 4096 samt software-, HSM- og eksterne beskyttelsesniveauer. Pris afhænger blandt andet af beskyttelsesniveau, nøglestørrelse og operationer; se Google Cloud KMS’ aktuelle prisside.

Vælg ikke en tilfældig “RSA-krypteringsapp”, fordi den har RSA i navnet. Det afgørende er standardiseret padding, nøglehåndtering, autentificering, opdateringer og dokumenteret sikkerhed.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Praktisk tjekliste

  • Brug et velafprøvet kryptografibibliotek.
  • Vælg OAEP til ny RSA-kryptering og PSS til nye RSA-signaturer.
  • Brug en nøglestørrelse, der passer til den konkrete standard og sikkerhedshorisont.
  • Brug RSA til små hemmeligheder eller signaturer, ikke til store filer direkte.
  • Autentificér offentlige nøgler gennem certifikater, fingerprints eller en anden tillidsmodel.
  • Beskyt, roter, sikkerhedskopiér og tilbagekald private nøgler efter en dokumenteret livscyklus.
  • Planlæg en langsigtet overgang, hvis data skal være beskyttet mod fremtidige kvanteangreb.

Kort opsummering

  1. RSA er asymmetrisk kryptografi med en offentlig og en privat nøgle.
  2. Den offentlige nøgle bruges til kryptering eller verifikation; den private bruges til dekryptering eller signering.
  3. Matematikken bygger på primtal, moduloregning og en modulær multiplikativ invers.
  4. Rå RSA er ikke produktionssikker; brug standardiseret encoding og padding.
  5. OAEP er det normale valg til ny RSA-kryptering, og PSS til nye RSA-signaturer.
  6. Store filer krypteres normalt symmetrisk, mens RSA beskytter sessionsnøglen.
  7. RSA er fortsat relevant, men sikkerheden afhænger af hele implementationen og den fremtidige migrationsplan.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.