Symmetriska nyckelalgoritmer är en metod inom kryptografi. Det innebär att nycklarna för dekryptering och kryptering är exakt samma delade hemlighet. Denna hemlighet kan skapas slumpmässigt, härledas från ett lösenord, eller etableras genom ett hemligt nyckelutbytesförfarande som Diffie-Hellman. För att vara säker måste nyckeln hållas hemlig för alla obehöriga parter.

Varför används symmetrisk kryptering?

Algoritmer med symmetriska nycklar är viktiga eftersom de generellt är mycket snabbare än algoritmer för kryptografi med offentlig nyckel (asymmetrisk kryptografi). I asymmetrisk kryptografi kan krypteringsnyckeln göras offentlig så att vem som helst kan skicka ett sekretessbelagt meddelande, eftersom den öppna nyckeln inte i praktiken kan användas för att härleda dekrypteringsnyckeln. Men asymmetriska algoritmer är långsamma, så de används ofta bara för att säkert överföra en kort, symmetrisk sessionnyckel. Därefter används symmetrisk kryptering för att skydda själva kommunikationen eftersom den ger bättre prestanda vid stora datamängder.

Typer av symmetriska algoritmer

Det finns två huvudtyper av symmetriska chiffer: stream ciphers och block ciphers. Streamciphers krypterar data som en ström av bitar eller bytes, en i taget, vilket gör dem lämpliga för strömmande data. Blockchiffer tar fasta block av bitar (t.ex. 64 eller 128 bitar) och krypterar varje block som en enhet. Tidigare användes ofta 64-bitarsblock, men moderna chiffrer som Advanced Encryption Standard (AES) använder 128-bitarsblock för bättre säkerhet och prestanda.

Driftslägen (modes of operation)

Blockchiffer används nästan alltid i något driftsläge som definierar hur blocken kedjas ihop och hur slumphjälp (IV eller nonce) används. Vanliga driftslägen är CBC (Cipher Block Chaining), CTR (Counter), GCM (Galois/Counter Mode) och OFB/CFB. Valet av läge påverkar både säkerhet och flexibilitet:

  • CBC kräver en slumpmässig IV och är sårbart för vissa paddingrelaterade attacker om inte autentisering används.
  • CTR och GCM är strömlinjeformade lägen som förvandlar ett blockchiffer till en ström och möjliggör parallellisering. GCM ger dessutom inbyggd autentisering (AEAD).
  • Alltid använd lämplig IV/nonce och se till att icke återanvända nonce-värden med samma nyckel, särskilt i CTR/ GCM-lägen.

Populära symmetriska chiffer

Exempel på populära symmetriska cyphers är Twofish, Serpent, AES (även kallad Rijndael), Blowfish, CAST5, RC4, TDES och IDEA. I moderna system rekommenderas ofta AES (i lägen som GCM eller CBC med separat autentiseringssteg) eller moderna Authenticated Encryption-algoritmer som ChaCha20-Poly1305 (utan länkade i texten).

Säkerhetsaspekter och attacker

Symmetriska system kan fortfarande vara sårbara för olika typer av attacker om de implementeras eller används felaktigt. Historiskt har vissa kryptoanalysmetoder utnyttjat symmetri, vilket gjorde tidiga system mindre säkra. Vanliga attacker inkluderar "known-plaintext"-attacker, "chosen plaintext"-attacker, differentialkryptoanalys och linjär kryptoanalys. Andra praktiska problem är:

  • Återanvändning av nycklar eller noncer som kan leda till att hela trafiken avslöjas.
  • Padding-orakelattacker mot CBC-läge om felmeddelanden läcks.
  • Dålig nyckelhantering — om nyckeln komprometteras förloras all konfidentialitet.

Nyckelhantering och best practices

Några rekommenderade riktlinjer för säker användning av symmetrisk kryptering:

Användningsområden

Symmetrisk kryptering används i många praktiska tillämpningar där prestanda och effektivitet är viktiga, exempelvis:

  • Transportlagersäkerhet (TLS) där asymmetrisk kryptografi används för att byta sessionnyckel och symmetrisk kryptering skyddar själva datatrafiken.
  • Disk- och filkryptering (t.ex. full-disk encryption) för att skydda data i vila.
  • VPN-tunnlar och krypterade lagringslösningar.
  • Säkra meddelandeapplikationer och autentiserade protokoll.

Sammanfattningsvis är symmetrisk kryptering en effektiv och central del av modern kryptografi: snabb för stora datamängder, men beroende av säker nyckelhantering, korrekt användning av driftslägen och skydd mot praktiska implementeringsfel för att uppnå god säkerhet.

Andra termer för kryptering med symmetrisk nyckel är kryptering med hemlig nyckel, enkel nyckel, delad nyckel, en nyckel och slutligen kryptering med privat nyckel. Den sista termen har inte samma betydelse som termen privat nyckel har i kryptering med offentlig nyckel.