Diffie Hellman (DH) sleuteluitwisselingsalgoritme is een methode voor het veilig uitwisselen van cryptografische sleutels over een openbaar communicatiekanaal. De sleutels worden niet daadwerkelijk uitgewisseld – zij worden gezamenlijk afgeleid. Het is genoemd naar de uitvinders Whitfield Diffie en Martin Hellman.
Als Alice en Bob met elkaar willen communiceren, komen ze eerst onderling een groot priemgetal p overeen, en een generator (of basis) g (waarbij 0 < g < p).
Alice kiest een geheim geheel getal a (haar privésleutel) en berekent dan g^a mod p (dat is haar publieke sleutel). Bob kiest zijn private sleutel b, en berekent zijn publieke sleutel op dezelfde manier.
Bob kent b en g^a, dus hij kan berekenen (g^a)^b mod p = g^ab mod p. Daarom kennen zowel Alice als Bob een gedeeld geheim g^ab mod p. Een afluisteraar Eve die meeluisterde met de communicatie kent p, g, Alice’s publieke sleutel (g^a mod p) en Bob’s publieke sleutel (g^b mod p). Ze is niet in staat om het gedeelde geheim uit deze waarden te berekenen.
In static-static mode, behouden zowel Alice als Bob hun prive/publieke sleutels gedurende meerdere communicaties. Daarom zal het resulterende gedeelde geheim elke keer hetzelfde zijn. In ephemeral-static mode genereert één partij elke keer een nieuwe private/publieke sleutel, en wordt dus een nieuw gedeeld geheim gegenereerd.
Zowel RSA als Diffie Hellman (DH) zijn openbare-sleutel-coderingsprotocollen die worden gebruikt voor veilige sleuteluitwisseling. Het zijn onafhankelijke protocollen die niet van elkaar afhankelijk zijn.
Ephemeral Diffie-Hellman gebruikt tijdelijke, openbare sleutels. Elke instantie of run van het protocol gebruikt een andere openbare sleutel. De authenticiteit van de tijdelijke sleutel van de server kan worden geverifieerd door de handtekening op de sleutel te controleren. Omdat de openbare sleutels tijdelijk zijn, brengt een compromittering van de lange-termijnondertekensleutel van de server de privacy van vroegere sessies niet in gevaar. Dit staat bekend als Perfect Forward Secrecy (PFS).
Diffie Hellman gebruikt een privaat-publiek sleutelpaar om een gedeeld geheim te maken, typisch een symmetrische sleutel. DH is geen symmetrisch algoritme – het is een asymmetrisch algoritme dat wordt gebruikt om een gedeeld geheim te maken voor een symmetrisch sleutelalgoritme.
Authenticated Key Agreement protocollen wisselen een sessiesleutel uit in een sleuteluitwisselingsprotocol waarbij ook de identiteiten van de bij de sleuteluitwisseling betrokken partijen worden geauthenticeerd. Anonieme (of niet-geauthenticeerde) sleuteluitwisseling, zoals Diffie-Hellman, voorziet niet in authenticatie van de partijen, en is dus kwetsbaar voor man-in-the-middle aanvallen.
DH wordt vandaag de dag nog steeds gebruikt, maar er moeten bepaalde voorzorgsmaatregelen worden genomen met betrekking tot de bouwstenen ervan. Authenticatie moet ook bovenop DH worden geïmplementeerd om man-in-the-middle bedreigingen te voorkomen.
DH wordt als veilig tegen afluisteraars beschouwd als de eindige cyclische groep G en generator g juist worden gekozen. In het bijzonder moet de orde van de groep G groot zijn, vooral als dezelfde groep voor grote hoeveelheden verkeer wordt gebruikt. Met een groep G die groot genoeg is, wordt het oplossen van het Diffie-Hellman probleem om g^ab te verkrijgen als moeilijk beschouwd.
Diffie-Hellman uitwisseling op zichzelf biedt geen authenticatie van de communicerende partijen en is dus kwetsbaar voor een man-in-the-middle aanval. Een actieve aanvaller die de man-in-the-middle aanval uitvoert, kan twee verschillende sleuteluitwisselingen tot stand brengen, de ene met Alice en de andere met Bob, waarbij hij zich tegenover Bob als Alice voordoet, en omgekeerd, zodat hij de berichten die tussen hen worden uitgewisseld, kan ontsleutelen en vervolgens opnieuw kan versleutelen.
Een geheimhoudingsdiagram wordt gebruikt om te analyseren wie wat weet bij elke stap van een sleuteluitwisselingsalgoritme.