Definition og idéen bag

Diffie–Hellman key exchange er en kryptografisk metode, hvor to parter kan aftale en fælles hemmelighed over en kommunikationskanal, selv om andre kan se den udvekslede information. Pointen er, at den fælles hemmelighed kan beregnes af begge parter, fordi de hver især bruger deres private oplysninger sammen med offentligt udvekslede tal/komponenter.

Den vigtigste praktiske forståelse er: Der sendes ikke en direkte “fælles hemmelig nøgle” som kan kopieres. I stedet opstår en fælles hemmelig værdi gennem en matematisk proces, hvor mellemliggende observatører ikke umiddelbart kan udlede den hemmelige værdi ud fra de offentlige oplysninger alene.

Et enkelt modelbillede af hvordan det fungerer

Forestil dig, at begge parter aftaler nogle offentlige parametre på forhånd. Derefter vælger hver part et privat, midlertidigt tal (typisk tænkt som en engangsværdi for den pågældende session). De beregner en offentlig “komponent” ud fra deres private tal og de offentlige parametre og sender komponenten til den anden part.

Når hver part modtager den andens offentlige komponent, kombinerer de den med deres egen private værdi i en tilsvarende beregning. Resultatet bliver en fælles hemmelighed, som begge kan nå frem til, mens en tredjepart, der kun ser de offentlige komponenter, ikke får den samme beregningsmulighed.

I praksis bruges denne fælles hemmelighed typisk ikke alene som “krypteringsnøgle” direkte, men som input til videre nøgleafledning (key derivation) i en etableringsproces.

Hvad begrebet bruges til i praksis

Når man siger, at “Diffie–Hellman bruges” i en protokol, handler det normalt om nøgleaftale: at etablere en sessionnøgle eller et nøglemateriale mellem parter, der kommunikerer. Derfra kan man bruge den aftalte hemmelighed til at beskytte fortrolighed og/eller integritet i efterfølgende data.

Det ses ofte i forbindelse med transportprotokoller og andre systemer, hvor der er behov for at etablere nøgler dynamisk. Selve navnet “Diffie–Hellman” kan dække flere varianter (f.eks. forskellige grupper/parametre og forskellige former for udveksling), men den centrale ide om fælles hemmelighed fra offentlige udvekslinger forbliver.

Begrænsninger og beslægtede begreber du bør kende

En vigtig begrænsning er, at Diffie–Hellman key exchange i sig selv ikke automatisk giver modstand mod alle aktive angreb. Hvis en angriber kan indsætte sig mellem parterne og kontrollere, hvad hver part tror, den anden har sendt, kan protokollen blive udsat for et man-in-the-middle-angreb, medmindre der samtidig findes en måde at autentificere modparterne på.

Derfor bør du kende forskellen på:

  • Nøgleaftale (key exchange): At etablere fælles hemmelighed.
  • Autentifikation: At sikre, at den man taler med, virkelig er den forventede part.

I mange systemer kombineres Diffie–Hellman-baseret nøgleaftale med autentikation (via certifikater, signaturer eller andre mekanismer) og derefter nøgleafledning og ofte yderligere sikringer.

En anden praktisk begrænsning er korrekt brug: Sikkerhed afhænger af, at private engangsværdier holdes private, og at parametre vælges og håndteres hensigtsmæssigt. Forkert implementering eller svage valg kan forringe sikkerheden betydeligt.

Sådan kan du kontrollere din forståelse

Når du møder Diffie–Hellman i en beskrivelse, kan du tjekke tre ting: (1) om der er tale om nøgleaftale og ikke direkte kryptering, (2) om der samtidig er autentifikation mod aktive angreb, og (3) om beskrivelsen nævner parametre/valg og engangsværdier (eller tilsvarende begreber) som noget, der skal håndteres rigtigt. Hvis autentifikation ikke nævnes, er det rimeligt at antage, at der kan være en sårbarhed over for man-in-the-middle, afhængigt af den konkrete sammenhæng.

Hvis du vil være helt sikker på den konkrete trusselmodel i et system, skal du derfor se på den kombinerede protokolbeskrivelse, ikke kun navnet “Diffie–Hellman”.