Diffie-Hellman (DH)


Diffie-Hellman (DH) är en asymmetrisk matematisk algoritm som används för att etablera en gemensam hemlig nyckel mellan två parter över ett osäkert nätverk. Denna nyckel utbyts aldrig direkt mellan parterna, men båda kan ändå beräkna samma värde oberoende av varandra.

Den framräknade nyckeln används därefter av en symmetrisk krypteringsalgoritm för att skydda den fortsatta kommunikationen.

Användningsområden

Diffie-Hellman används i flera centrala säkerhetsprotokoll:

  • IPsec (via IKE)
  • Transport Layer Security
  • Secure Shell (SSH)

Grundprincip (förenklad modell)

För att illustrera hur Diffie-Hellman fungerar används ofta en modell med färger istället för stora tal:

  1. Alice och Bob kommer överens om en gemensam publik parameter (t.ex. färgen gul)
  2. Var och en väljer en hemlig privat parameter (Alice: röd, Bob: blå)
  3. De kombinerar den gemensamma färgen med sin hemliga färg och skapar en publik variant (Alice: orange, Bob: grön)
  4. Dessa publika värden utbyts över nätverket
  5. Varje part kombinerar det mottagna värdet med sin egen hemliga parameter

Resultatet blir att båda parter oberoende av varandra beräknar samma slutliga hemliga värde, som kan användas som symmetrisk nyckel.

Säkerhetsprincip

Säkerheten i Diffie-Hellman bygger på svårigheten att lösa problemet med diskreta logaritmer.

Algoritmen använder mycket stora tal i sina beräkningar. Till exempel motsvarar ett 1024-bitars tal ungefär ett decimaltal med cirka 309 siffror. Som jämförelse består en miljard endast av 10 siffror (1 000 000 000), vilket illustrerar hur komplexa och omfattande beräkningar är de beräkningar som används.

Till exempel:

Ett binärt tal med 4 bitar kan till exempel vara: 1011
Det består av 4 bitar och motsvarar talet 11 i decimalform. Med 4 bitar finns totalt 24 = 16 möjliga kombinationer, vilket innebär att talen kan representera värden från 0 till 15.

Ett binärt tal med 1024 bitar ger däremot: 21024 möjliga kombinationer, vilket är ett extremt stort antal. När ett sådant tal skrivs i decimalform kan det innehålla ungefär 309 siffror. Ett exempel på början av ett sådant tal är:

1797693134862315907708391567937874531978602960487…

Talet fortsätter sedan tills det innehåller ungefär 309 siffror totalt.

Detta illustrerar hur snabbt storleken på talen växer när fler bitar används i kryptografiska algoritmer som Diffie-Hellman. Det är dock inte enbart storleken på talen som ger säkerheten, utan framför allt att det matematiska problemet bakom algoritmen är praktiskt omöjligt att lösa inom rimlig tid.

I moderna system anses 1024-bitars Diffie-Hellman inte längre vara tillräckligt säkert. Därför används idag större nyckellängder, exempelvis 2048 bitar eller mer, samt elliptiska kurvor (ECDHE) för att uppnå högre säkerhet.

Viktig begränsning

Klassisk Diffie-Hellman ger ingen autentisering och är därför sårbar för man-in-the-middle-attacker. Därför används den i praktiken tillsammans med digitala certifikat och digitala signaturer.

Sammanfattning

  • Diffie-Hellman används för nyckelutbyte, inte för kryptering av data
  • Den möjliggör säker kommunikation utan att en hemlig nyckel delas i förväg
  • Moderna implementationer använder ECDHE
  • Används tillsammans med symmetrisk kryptering i protokoll som TLS och IPsec