Svage nøgler i kryptografi: definition, risici og forebyggelse

Lær om svage nøgler i kryptografi: hvad de er, sikkerhedsrisici, eksempler og praktiske forebyggelsesmetoder for sikrere nøglehåndtering.

Forfatter: Leandro Alegsa

I kryptografi er en svag nøgle en nøgle, som, når den anvendes sammen med en bestemt krypteringsmetode, får krypteringsmetoden til at opføre sig på en uønsket måde og gør det lettere at bryde (knække) krypteringsmaterialet.

Svage nøgler udgør normalt en meget lille del af det samlede nøgleområde, hvilket betyder, at hvis nogen genererer en tilfældig nøgle til at kryptere en meddelelse, er det sjældent, at svage nøgler vil forårsage et sikkerhedsproblem. Det anses dog for at være et godt design for en kryptering, hvis den ikke har nogen svage nøgler ("quality chiper"). En kryptering uden svage nøgler siges at have et fladt eller lineært nøgleområde.

Hvad menes med "svag nøgle" — uddybning

En svag nøgle er ikke nødvendigvis en nøgle der er let at gætte, men en nøgle der, i kombination med den anvendte algoritme eller implementering, fører til:

  • reduktionsmuligheder i sikkerheden (f.eks. gør brute-force lettere),
  • kryptografiske svagheder såsom gentagelse eller symmetri i krypteringsoutput,
  • mulighed for kendte angrebsteknikker (f.eks. at private nøgler afsløres ved bestemte parametre).

Typiske eksempler på svage nøgler

  • DES: Klassisk eksempel — DES har et lille sæt af egentlige "svage nøgler" (og semi-svage nøgler), hvor undernøglerne eller krypteringsfunktionen udviser symmetri, så kryptering og dekryptering ligner hinanden. Disse nøgler gør kryptoanalytiske angreb langt enklere.
  • RSA: Svage RSA-nøgler kan opstå, hvis primtallene p og q er for små, valgt med lav entropi, eller hvis to nøgler deler en primfaktor (f.eks. genbrug af primes på grund af dårlig tilfældighedsgenerator). Der findes også svagheder ved for lille privat eksponent (d), som kan udnyttes.
  • Elliptiske kurver (ECC): Svagheder kan komme fra dårligt valgte kurver, små subgroup-angreb eller manglende validering af punkter (invalid curve attacks).
  • Streamcifre / nonce-baserede alg.: Genbrug af nonce eller IV i streamcifre (eller i AES-GCM/CTR) kan føre til genbrug af nøgle-stream og dermed fuldstændig kompromittering af fortrolighed.
  • Randomness-relaterede: Mange "svage nøgler" er ikke et resultat af selve algoritmen, men af dårlig tilfældighed (CSPRNG), hvilket gør nøgler forudsigelige eller delvist gættelige.

Hvor stor er risikoen?

Ofte udgør svage nøgler kun en meget lille del af hele nøgleområdet, så en tilfældigt genereret nøgle rammer sjældent en svag nøgle. Risikoen stiger dog kraftigt, når:

  • der anvendes forældede eller designet svage algoritmer (fx DES i dag),
  • implementeringen bruger dårlig eller ingen entropi ved nøglegenerering,
  • nøglemateriale genbruges forkert (fx samme nøgle/nonce i sessioner),
  • der er interoperabilitetskrav som tvinger brug af bestemte, potentielt svage parametre.

Hvordan opdages svage nøgler?

  • Algoritmespecifikke checks: Tjek mod kendte lister over svage/semi-svage nøgler (fx for DES).
  • Randomshedstest: Kør entropi- og statistiske tests på nøglemateriale (dog giver disse ikke fuldtryghed alene).
  • RSA-kontrol: Sørg for at p og q har korrekt størrelse, at gcd(n, andre n) = 1 (undgå delte primfaktorer), og valider at eksponenterne opfylder anbefalede sikkerhedskrav.
  • Implementationsrevision og fuzzing: Test biblioteker og hardware for kanttilfælde hvor dårlige nøgler kan opstå.

Forebyggelse og bedste praksis

  • Brug moderne, velafprøvede algoritmer som AES, Ed25519, eller kurver godkendt af relevante standarder fremfor ældre svage algoritmer (fx DES, RC4).
  • Sikre tilfældighedskilder: Benyt CSPRNG fra operativsystem eller kryptografiske biblioteker (f.eks. /dev/urandom, CryptGenRandom, libsodium, platform-API’er).
  • Nøglevalidering: Implementér checks der afviser kendte svage nøgler og validerer nøglens parametre (størrelse, entropi, curve-parametre mv.).
  • Nøgle- og nonce-håndtering: Sørg for korrekt brug af noncer/IV’er (ikke genbrug), brug per-session nøgler eller ephemeral keys hvor relevant (fx ECDHE for TLS).
  • Standards og biblioteker: Brug velunderstøttede kryptobiblioteker og følg anbefalinger fra NIST, ETSI eller tilsvarende. Undlad at “rulle din egen” kryptografi.
  • Hårdwaresikring: Overvej HSM eller secure enclaves til nøglegeneration og opbevaring for at minimere risiko for lækage eller forudsigelighed.
  • Nøglerotation og politik: Roter nøgler regelmæssigt og implementer adgangs- og tilbagekaldelsespolitikker.
  • Test og revision: Udfør sikkerhedsrevisioner, penetrationstests og kontinuerlig overvågning for at finde og rette problemer tidligt.

Praktiske kontrolpunkter

  • Automatisér verifikation ved nøglegenerering: afvis kendte dårlige nøgler og log nøglegeneration hændelser.
  • Hold kryptografiske biblioteker opdaterede for at få bugfixes og forbedrede RNG-implementeringer.
  • Uddan udviklere i korrekte mønstre: hvordan man bruger nøgler, noncer og standardkonstruktionsmønstre (KDF, AEAD osv.).

Opsummering

Svage nøgler er en reel, men ofte overset, kilde til kryptografiske svagheder. Mens tilfældig nøglegenerering i et stort nøgleområde gør det usandsynligt at ramme en svag nøgle ved et tilfælde, er den største risiko dårlige implementeringer, dårlig tilfældighed og brug af forældede algoritmer. Forebyggelse består i at bruge moderne algoritmer, sikre tilfældighedskilder, validere nøgler og følge best practices for nøgle- og nonce-håndtering.

Eksempler på 128-bit svage nøgler

  • Alle nuller (0x000000000000000000000000)
  • Alle enere (0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF)
  • Skiftende "1" + "0" (0x01010101010101010101010101)
  • Skiftende "F" + "E" (0xFEFEFEFEFEFEFEFEFEFEFEFEFEFE)
  • Skiftende "E" + "1" (0xE1E1E1E1E1F0F0F0F0F0F0) eller (0x1E1E1E1E1E1E0F0F0F0F0F0F)


Søge
AlegsaOnline.com - 2020 / 2025 - License CC3