Symmetriske nøglealgoritmer i kryptografi: Hvad er det? Typer og eksempler
Lær om symmetriske nøglealgoritmer: typer, eksempler (AES, Twofish, Blowfish), hvordan de virker, fordele og angrebstyper — en hurtig guide til moderne kryptering.
Symmetriske nøglealgoritmer er en metode inden for kryptografi. Det er, når nøglerne til dekryptering og kryptering er nøjagtig den samme delte hemmelighed. Du kan generere hemmeligheden tilfældigt eller ud fra et kodeord eller gennem en hemmelig nøgleudvekslingsprocedure som Diffie-Hellman.
Algoritmer med symmetriske nøgler er meget vigtige, fordi de er hurtigere på computere end den anden slags algoritmer med offentlige nøgler. I kryptografi med offentlige nøgler (asymmetrisk nøglekryptografi) kan krypteringsnøglen uden problemer gives til offentligheden, og alle kan sende hemmelige meddelelser til dig. Nøglen til kryptering er "åben", fordi den i praksis ikke kan bruges til at få nøglen til dekryptering. Dette er meget nyttigt, men algoritmer til kryptografi med offentlig nøgle er meget langsomme på computere, så de bruges kun til at sende en hemmelig nøgle. Derefter bruges symmetriske nøglealgoritmer til alt andet, fordi de er hurtigere.
Hvordan fungerer symmetrisk kryptering?
Symmetrisk kryptering bruger én fælles hemmelig nøgle til både kryptering og dekryptering. Når to parter har den samme nøgle, kan afsenderen kryptere data med nøglen, og modtageren kan dekryptere dem med samme nøgle. Hovedudfordringen er derfor nøglefordeling og nøglestyring — hvordan nøglen udveksles sikkert, gemmes og roteres.
Typer: stream ciphers og block ciphers
Der findes to slags algoritmer med symmetriske nøgler, kaldet stream ciphers og block ciphers. Kort sagt:
- Stream ciphers krypterer data som en strøm af bits eller bytes én ad gangen. De er velegnede til datakanaler og realtidsoverførsel. Et historisk eksempel er RC4, men RC4 betragtes i dag som usikker og bør undgås. Moderne alternativer inkluderer strøm-konstruktionsalgoritmer som ChaCha20 (ofte brugt sammen med Poly1305 til autentificering).
- Block ciphers tager faste blokke af bits (f.eks. 64 eller 128 bit) og krypterer hver blok som en enhed. Moderne standarder som Advanced Encryption Standard (AES) anvender blokke på 128 bit. Blokchiffrer bruges ofte i forskellige driftsformer (modes) for at kryptere vilkårligt lange meddelelser og for at opnå egenskaber som dataintegritet og fuldstændig hemmeligholdelse.
Blokchiffer-modes (driftsformer)
En blokchiffers sikkerhed og anvendelighed afhænger i høj grad af den mode, den bruges i. Almindelige modes er:
- ECB (Electronic Codebook) — hver blok krypteres uafhængigt. Simpelt, men ofte usikkert, fordi identiske plaintext-blokke bliver identiske ciphertext-blokke.
- CBC (Cipher Block Chaining) — hver plaintext-blok xores med forrige ciphertext-blok før kryptering; kræver en initialiseringsvektor (IV).
- CTR (Counter) — omdanner en blokchiffer til en strøm ved at kryptere et løbende tæller/IV og xore resultatet med plaintext; velegnet til parallelisering.
- GCM (Galois/Counter Mode) — en authentificeret krypteringsmode (AEAD) der kombinerer kryptering med autentificering (integritetsbeskyttelse); meget brugt i moderne protokoller.
Eksempler på algoritmer
Populære og historiske symmetriske cyphere inkluderer Twofish, Serpent, AES (også kendt som Rijndael), Blowfish, CAST5, RC4, TDES og IDEA. Blandt disse er AES i dag den mest udbredte standard for generel brug (f.eks. AES-128, AES-192, AES-256).
Bemærk:
- DES (også TDES/3DES) er blevet udfaset eller frarådet i mange sammenhænge pga. for lille blokstørrelse (56-bit nøgle for DES) og kendte angribbarheder; TDES har også begrænsninger pga. 64-bit blokke.
- RC4 er sårbar og bør ikke bruges til sikre protokoller.
- ChaCha20-Poly1305 er et moderne alternativ til AES-GCM i miljøer uden hardware acceleration og er særligt udbredt i mobile og internetprotokoller.
Sikkerhed, angreb og modforanstaltninger
Historisk udnyttede kryptoanalysemetoder symmetri, så nogle symmetriske systemer blev mindre sikre. Kendte angrebstyper inkluderer:
- known-plaintext attacks — angriberen kender en del af plaintext og bruger dette til at finde nøglen.
- chosen plaintext attacks — angriberen kan vælge plaintext og få tilsvarende ciphertext, hvilket kan afdække mønstre.
- differential cryptanalysis og linear cryptanalysis — avancerede statistiske angreb rettet mod svagheder i chifferstrukturen.
Derudover findes praktiske angreb som brute-force (afhængig af nøglens længde), sidekanalangreb (timing, strømforbrug, cache-adfærd) og angreb på protokolniveau (f.eks. IV-genbrug eller forkert brug af driftsformer). For at mindske risikoen anbefales bl.a.:
- Brug af stærke nøgler (tilstrækkelig længde: f.eks. 128 bit eller mere for de fleste anvendelser).
- Brug af moderne, velanmeldte algoritmer og mode som AES-GCM eller ChaCha20-Poly1305 for authenticated encryption (AEAD).
- Korrekt håndtering af IV'er/nonce: aldrig genbrug en nonce med samme nøgle i modes som CTR eller GCM.
- Anvendelse af timing- og sidekanalmodstand i implementeringer, samt brug af hardware-assistance (f.eks. AES-NI) hvor muligt.
Anvendelsesområder
Symmetrisk kryptering anvendes bredt til:
- Transportkryptering (f.eks. TLS/HTTPS bruger asymmetri til nøgleudveksling og symmetrisk kryptering til sessionstrafik).
- Datalagring (disk- og filkryptering såsom full-disk encryption, containerkryptering).
- VPN-tunneller, sikre kommunikationsapplikationer og afkodning af store datamængder, hvor ydeevne er vigtig.
Nøglestyring og bedste praksis
Symmetrisk kryptering er kun så sikker som den hemmelige nøgle og procedurerne omkring den. Vigtige anbefalinger:
- Generér nøgler med en kryptografisk sikker tilfældighedskilde.
- Brug sikre nøgleudvekslingsmetoder (f.eks. asymmetrisk kryptering eller Diffie-Hellman-variationer) til at etablere nøgler mellem parter.
- Opbevar nøgler sikkert (hardware-sikkerhedsmoduler, sikre nøglebutikker) og begræns adgang.
- Roter nøgler regelmæssigt og planlæg nøgleudskiftning ved mistanke om kompromittering.
- Anvend authenticated encryption (AEAD) for at kombinere fortrolighed og integritet i ét trin.
Andre udtryk for kryptering med symmetrisk nøgle er kryptering med hemmelig nøgle, enkelt nøgle, delt nøgle, enkelt nøgle, enkelt nøgle og i sidste ende kryptering med privat nøgle. Denne sidste betegnelse har ikke den samme betydning som begrebet privat nøgle i kryptering med offentlig nøgle.
Konklusion
Symmetriske nøglealgoritmer er grundpillen i praktisk kryptografi for datakryptering på grund af deres effektivitet og ydeevne. For at bruge dem sikkert kræves korrekte algoritmevalg, sikre driftsformer (især AEAD), korrekt nøglehåndtering og opmærksomhed på implementationens modstand mod sidekanalangreb. For de fleste formål i dag er AES (særligt i GCM-mode) og moderne konstruktioner som ChaCha20-Poly1305 anbefalede valg.

I en symmetrisk nøglealgoritme er den nøgle, der bruges til at kryptere, den samme som den nøgle, der bruges til at dekryptere. Af denne grund skal den holdes hemmelig.
Symmetriske vs. asymmetriske algoritmer
I modsætning til symmetriske algoritmer bruger asymmetriske nøglealgoritmer en anden nøgle til kryptering end til dekryptering. Det betyder, at en bruger, der kender krypteringsnøglen for en asymmetrisk algoritme, kan kryptere meddelelser, men kan ikke beregne dekrypteringsnøglen og kan ikke dekryptere meddelelser, der er krypteret med denne nøgle. Nedenfor gives en kort sammenligning af disse to typer algoritmer:
Hastighed
Symmetriske nøglealgoritmer er generelt meget mindre beregningskrævende end asymmetriske nøglealgoritmer. I praksis er asymmetriske nøglealgoritmer typisk hundredvis til tusindvis af gange langsommere end symmetriske nøglealgoritmer.
Ledelse af nøgler
En ulempe ved symmetriske nøglealgoritmer er kravet om en delt hemmelig nøgle, hvor begge parter har den samme kopi i hver ende. For at sikre sikker kommunikation mellem alle i en gruppe på n personer er der behov for i alt n(n - 1)/2 nøgler, hvilket er det samlede antal mulige kommunikationskanaler. For at begrænse virkningen af en eventuel opdagelse fra en kryptografisk angriber bør de skiftes regelmæssigt og opbevares sikkert under distribution og i brug. Processen med at udvælge, distribuere og opbevare nøgler er kendt som nøgleforvaltning og er vanskelig at udføre på en pålidelig og sikker måde.
Hybride kryptosystem
I moderne kryptosystemdesigns anvendes både asymmetriske (offentlige nøgler) og symmetriske algoritmer for at udnytte det bedste af begge dele. Asymmetriske algoritmer anvendes til at distribuere symmetriske nøgler i starten af en session. Når først en symmetrisk nøgle er kendt af alle parter i sessionen, kan hurtigere symmetriske nøglealgoritmer, der anvender denne nøgle, anvendes til at kryptere resten af sessionen. Dette forenkler problemet med nøgledistribution, fordi asymmetriske nøgler kun skal distribueres autentisk, mens symmetriske nøgler skal distribueres på både autentisk og fortrolig vis.
Systemer, der anvender en sådan hybrid tilgang, omfatter SSL, PGP og GPG osv.
Relaterede sider
- Asymmetriske nøglealgoritmer
Spørgsmål og svar
Q: Hvad er symmetriske nøglealgoritmer?
A: Symmetriske nøglealgoritmer er en metode inden for kryptografi, hvor nøglerne til dekryptering og kryptering er nøjagtig den samme delte hemmelighed.
Q: Hvordan kan man generere hemmeligheden?
Svar: Hemmeligheden kan genereres tilfældigt eller ud fra et kodeord eller gennem en procedure for hemmelig nøgleudveksling som Diffie-Hellman.
Spørgsmål: Hvorfor er symmetriske nøglealgoritmer vigtige?
Svar: Symmetriske nøglealgoritmer er meget vigtige, fordi de er hurtigere på computere end algoritmer med offentlige nøgler.
Spørgsmål: Hvad er kryptografi med offentlige nøgler (asymmetrisk nøglekryptografi)?
A: Ved offentlig nøglekryptografi (asymmetrisk nøglekryptografi) kan krypteringsnøglen uden problemer gives til offentligheden, og alle kan sende dig hemmelige meddelelser. Nøglen til kryptering er "åben", fordi den i praksis ikke kan bruges til at få nøglen til dekryptering.
Spørgsmål: Hvilke to typer symmetriske krypteringssystemer findes der?
Svar: Der findes to typer symmetriske cifre, nemlig stream ciphers og block ciphers. Stream ciphers krypterer en meddelelse som en strøm af bits én ad gangen, mens block ciphers tager blokke af bits, krypterer dem som en enkelt enhed og nogle gange også bruger svaret senere.
Sp: Hvilken størrelse blokke bruger moderne krypteringskoder?
Svar: Moderne krypteringskoder som Advanced Encryption Standard anvender 128 bit store blokke.
Spørgsmål: Hvilke typer angreb er blevet brugt til at udnytte symmetri i historien?
Svar: I historien har nogle kryptoanalysemetoder udnyttet symmetri, så symmetriske systemer var mindre sikre. Blandt de angreb, der er blevet anvendt, kan nævnes angreb med kendt klartekst, angreb med valgt klartekst, differentiel kryptanalyse og lineær kryptanalyse.
Søge