Diffie-Hellman-Schlüsselaustausch – das erste der sogenannten asymmetrischen Kryptoverfahren (auch Public-Key-Kryptoverfahren)

Der Diffie-Hellman-Schlüsselaustausch ist ein Weg, wie zwei Menschen einen geheimen Schlüssel finden können, ohne ihn direkt hin- und herzuschicken.

Zuerst einigen sie sich öffentlich auf eine große Zahl (eine Primzahl) und eine Basiszahl.

Jeder wählt dann eine geheime Zahl für sich selbst. Mit der geheimen Zahl rechnen sie eine neue Zahl aus, die sie dem anderen schicken.

Danach kann jeder mit der Zahl vom anderen und seiner eigenen geheimen Zahl denselben geheimen Schlüssel berechnen. Und zwar so:

Einfach gesagt und ein Beispiel in Java:

– Alice und Bob einigen sich auf eine große Primzahl und eine Basis . Beide Zahlen sind für jeden sichtbar

– Alice nimmt ihre geheime Zahl und rechnet A = g^a \mod p aus. Die Zahl schickt sie an Bob

– Bob macht das Gleiche mit seiner geheimen Zahl und berechnet B = g^b \mod p . Die Zahl schickt er an Alice

– Alice benutzt und ihre geheime Zahl , um den gemeinsamen Schlüssel zu berechnen: K = B^a \mod p

– Bob benutzt und seine geheime Zahl , um den Schlüssel zu berechnen: K = A^b \mod p

Am Ende haben beide den gleichen geheimen Schlüssel, obwohl jeder seine geheime Zahl für sich behalten hat.

Ein fremder Lauscher kann diesen Schlüssel praktisch nicht herausfinden. Deshalb kann der Schlüssel sicher zum Verschlüsseln verwendet werden.

Man nennt das Verfahren auch Schlüsselvereinbarung, weil beide auf sichere Weise denselben Schlüssel finden, ohne ihn direkt zu tauschen (siehe auch Wikipedia)

Hier nun noch ein einfaches Beispiel in Java:

Beispiel Ausgabe: