En cipher (eller cypher) er en algoritme til kryptering (kodning) eller dekryptering (dekodning). En cipher består af en række veldefinerede trin, der følges som en procedure for at omdanne data. At kryptere eller kode betyder at omdanne information fra klar tekst til en uforståelig form, ofte kaldet ciphertext, så kun personer med den rette nøgle kan læse den.

I ikke-teknisk sprogbrug bruges ordet "ciffer" ofte synonymt med "kode". Inden for kryptografi skelnes der dog mellem cifre og koder: et ciffer arbejder typisk på symbolniveau (bogstaver eller bits), mens en kode erstatter hele ord eller sætninger gennem en kodebog. Historisk blev koder (store kodebøger) brugt til at erstatte ord med tilfældige tegnrækker, f.eks. kunne "UQJHSE" betyde "Fortsæt til følgende koordinater". I moderne kryptografi er koder i denne forstand sjældne, og man krypterer for det meste bitstrømme.

Klassiske og moderne eksempler

Klassiske cifre omfatter simple substitutioner og transpositioner, f.eks. Caesar-cifferet (hvor hvert bogstav forskydes et fast antal pladser) og Vigenère-cifferet (en gentaget nøgle bruges til forskydning). Mere avancerede historiske metoder kombinerede flere trin for at øge sikkerheden.

Moderne cifre er designet til digitale data og omfatter:

  • symmetriske nøglealgoritmer (kryptografi med privat nøgle): Samme nøgle bruges til kryptering og dekryptering. Eksempler: AES (Advanced Encryption Standard) og tidligere DES. Symmetriske cifre kan være enten blokkiffer (processerer faste blokke af data) eller strømcifre (generatorer af en nøgle-stream der kombineres med data).
  • asymmetriske nøglealgoritmer (kryptografi med offentlige nøgler): Her anvendes to forskellige nøgler — en offentlig nøgle til kryptering (eller verifikation) og en privat nøgle til dekryptering (eller signering). Eksempler: RSA, ECC (Elliptic Curve Cryptography).

Nøgler, nøglestyring og principper

En nøgle bestemmer den specifikke transformation fra klartekst til ciffertekst og omvendt. Nøglens styrke (længde og kvalitet) er afgørende for sikkerheden: længere nøgler giver normalt større modstand mod brute-force-angreb. Nøglestyring (opbevaring, distribution, udskiftning) er ofte det svageste led i et system.

Vigtige principper og teknikker:

  • Kerckhoffs' princip: Sikkerheden bør ikke afhænge af hemmeligholdelse af selve algoritmen, men kun af hemmeligholdelse af nøglen.
  • One-time pad: Når den anvendes korrekt (helt tilfældig nøgle, samme længde som klarteksten, kun bruges én gang), er den teoretisk ubrydelig.
  • Nøgleudveksling: Protokoller som Diffie–Hellman bruges til at etablere fælles symmetriske nøgler over usikre kanaler.

Sikkerhedsegenskaber og autentificering

Kryptografiske cifre bruges ikke kun til fortrolighed, men også til integritet og autentificering. Almindelige egenskaber og mekanismer omfatter:

  • Fortrolighed: Sikrer at kun autoriserede parter kan læse indholdet.
  • Integritet: Sikrer at data ikke er ændret (ofte opnået med hashfunktioner og Message Authentication Codes — MAC).
  • Autentificering og digitale signaturer: Asymmetrisk kryptografi bruges til at bevise identitet og ikke-afviselighed.
  • Authenticated encryption (f.eks. AES-GCM): Kombinerer kryptering og integritetsbeskyttelse i én konstruktion.

Angreb og modforanstaltninger

Kryptosystemer kan angribes på mange måder:

  • Brute force: Prøver alle mulige nøgler — modvirkes ved tilstrækkelig nøglelængde.
  • Kryptanalyse: Metoder som udnytter strukturer i cifret (f.eks. frekvensanalyse mod simple substitutioner).
  • Sidekanalangreb: Angreb der udnytter information fra implementeringen (tidsmålinger, strømforbrug osv.).
  • Svag nøglehåndtering: Hvis nøgler kompromitteres, er selv stærke algoritmer værdiløse.

Anvendelser

Cifre anvendes bredt i moderne IT og kommunikation: sikre forbindelser (TLS/HTTPS), krypterede lagringsløsninger, VPN, digitale signaturer, e‑post-kryptering og IoT-sikkerhed. Valg af algoritme, nøglelængde og drift (f.eks. hvilke krypteringsmodes som CBC, CTR eller GCM) afgør både sikkerhed og ydeevne.

Etymologi

Ordet cifre stammer fra fransk cifre og middelalderlatin cifra, fra arabisk sifr, der betyder "nul". Den første kendte engelske brug af nul var i 1598.

Samlet set er en cipher et centralt værktøj i moderne sikker kommunikation. For praktisk anvendelse er det vigtigt ikke blot at vælge stærke kroner og algoritmer, men også at sikre korrekt implementering, nøglestyring og beskyttelse mod sidekanalangreb.