# Diffie-Hellman-sleuteluitwisselingsprotocol

Het diffie-hellman-sleuteluitwisselingsprotocol is een cryptografisch protocol, waarmee twee deelnemers die verder niets van elkaar weten over een onbeveiligd communicatiekanaal een geheime encryptiesleutel kunnen uitwisselen, die daarna kan worden gebruikt om communicatie tussen de deelnemers te versleutelen. Dit principe wordt bijvoorbeeld gebruikt voor een Virtueel Particulier Netwerk (VPN) gebaseerd op IPsec.

## Geschiedenis

Deze methode voor het uitwisselen van sleutels werd voor het eerst beschreven door Whitfield Diffie en Martin Hellman in 1976 in een document getiteld "New Directions in Cryptography", dat gepubliceerd werd in de IEEE Transactions on Information Theory. Later bleek dat dit principe al eerder ontdekt was door Malcolm J. Williamson van het Britse Government Communications Headquarters (GCHQ), onderdeel van de Britse geheime dienst voor signals intelligence. Dit onderzoek werd echter geheimgehouden tot in de jaren negentig.
Het diffie-hellman-protocol, waarvoor in 1977 een patent werd toegekend in de Verenigde Staten dat nu verlopen is, legde de basis voor de huidige technologie van de asymmetrische cryptografie.
Het bekendere RSA-encryptiealgoritme werd een jaar later in 1977 ontworpen.
In 2016 kregen Whitfield Diffie en Martin Hellman de 2015-Turing Award voor hun vinding.

## Diffie-Hellman wiskundig

Het idee achter dit algoritme is dat iemand mee kan luisteren en elke boodschap tussen Alice en Bob onderschept kan worden. De kunst is dus om de boodschappen zo te formuleren dat alleen Alice en Bob weten waar het over gaat. Hiervoor moeten zij vooraf een onderlinge versleuteling afspreken. Het diffie-hellman-sleuteluitwisselingsprotocol maakt dit mogelijk zonder dat meeluisteraars de versleuteling kunnen onderscheppen.
De volgende stappen worden uitgevoerd:
1. Alice bedenkt een priemgetal p en een basisgetal g.
2. Alice verzint een geheim getal a. Vervolgens berekent ze op basis van a, p en g het getal A. A = $g^{a}\mod p$ 3. Alice verstuurt p, g en A naar Bob. 4. Bob verzint ook een geheim getal b en berekent op basis van de ontvangen p en g op dezelfde manier het getal B dat hij naar Alice stuurt. B = $g^{b}\mod p$ 5. Bob berekent op basis van A,b en p het gemeenschappelijke geheime getal K.
K = $A^{b}\mod p$ 6. Alice berekent eveneens het gemeenschappelijke geheime getal K, maar dan op basis van B, a en p. K = $B^{a}\mod p$
De getallen p, g, A en B zijn publiek, wat wil zeggen dat iedereen die meeluistert, deze getallen kan onderscheppen. Maar het gemeenschappelijke getal dat Alice en Bob hebben berekend, is geheim, want om dat te berekenen is a of b nodig. Dit getal kunnen ze dus gebruiken om hun berichten naar elkaar toe te versleutelen. Voor een buitenstaander is het zeer moeilijk om de geheime sleutel ("key") K te achterhalen zonder a of b, want er zijn namelijk vele manieren om met p en g tot A of B te komen.
Hieronder het bewijs dat Alice en Bob tot een gemeenschappelijk getal K komen. A = $g^{a}\mod p$ B = $g^{b}\mod p$ K = $(g^{a}\mod p)^{b}\mod p=g^{ab}\mod p=(g^{b}\mod p)^{a}\mod p$

## Kraken van Diffie-Hellman

Men kan zich voorstellen dat men Alice's geheime getal $a$ zou kunnen oplossen uit A = $g^{a}\mod p\,$ door simpelweg de logaritme te nemen van beide zijden. Ruwweg: $\log(A)=a\log(g)$. Dit is het discrete logaritme probleem. Omdat A en g openbaar zijn, zou $a$ hieruit kunnen volgen. Het blijkt dat voor de oplossing van het discrete logaritme probleem geen goede computeralgoritmen bestaan, en de sleuteluitwisseling volgens Diffie en Hellman is dus niet – of zeer moeilijk – te kraken.