Berechnung des Shared Secret
Dies ist der letzte und wichtigste Schritt. Hier werden beide Parteien ihren eigenen privaten Schlüssel und den öffentlichen Schlüssel der jeweils anderen Partei verwenden, um unabhängig voneinander das gemeinsame Geheimnis zu berechnen. Wenn das Protokoll erfolgreich ist, werden beide Parteien exakt denselben geheimen Wert erhalten.
Zuerst berechnen wir das gemeinsame Geheimnis aus der Perspektive von Partei A. Partei A verwendet ihren privaten Schlüssel (a_private_key.pem) und den öffentlichen Schlüssel von Partei B (b_public_key.pem).
Führen Sie den folgenden Befehl aus:
openssl pkeyutl -derive -inkey a_private_key.pem -peerkey b_public_key.pem -out a_shared_secret.bin
pkeyutl: Ein Dienstprogramm zur Durchführung von Public-Key-Operationen.
-derive: Diese Aktion weist das Dienstprogramm an, ein gemeinsames Geheimnis abzuleiten.
-inkey a_private_key.pem: Gibt den privaten Schlüssel von Partei A an.
-peerkey b_public_key.pem: Gibt den öffentlichen Schlüssel der anderen Partei (des "Peers") an.
-out a_shared_secret.bin: Speichert das resultierende binäre Geheimnis in einer Datei.
Als Nächstes berechnen wir das gemeinsame Geheimnis aus der Perspektive von Partei B. Partei B verwendet ihren privaten Schlüssel (b_private_key.pem) und den öffentlichen Schlüssel von Partei A (a_public_key.pem).
Führen Sie den folgenden Befehl aus:
openssl pkeyutl -derive -inkey b_private_key.pem -peerkey a_public_key.pem -out b_shared_secret.bin
Nun haben Sie zwei Dateien, a_shared_secret.bin und b_shared_secret.bin. Um den Erfolg des Schlüsselaustauschs zu überprüfen, müssen diese beiden Dateien identisch sein. Sie können den Befehl cmp (compare) verwenden, um dies zu überprüfen.
cmp a_shared_secret.bin b_shared_secret.bin
Wenn die Dateien identisch sind, erzeugt dieser Befehl keine Ausgabe und wird still beendet. Diese Stille signalisiert den Erfolg!
Für eine visuellere Bestätigung können Sie auch den kryptografischen Hash beider Dateien berechnen. Die Hashes müssen übereinstimmen.
sha256sum *.bin
Sie sollten eine Ausgabe sehen, bei der beide Dateien exakt denselben SHA256-Hash aufweisen. Die tatsächlichen Hash-Werte variieren zwischen den Ausführungen, aber sie müssen für beide Dateien identisch sein:
e3705a4ab5ae5d86f59dfe968f0177b49d5144e2d731dbd8d41b2eda318412ec a_shared_secret.bin
e3705a4ab5ae5d86f59dfe968f0177b49d5144e2d731dbd8d41b2eda318412ec b_shared_secret.bin
(Hinweis: Ihre Hash-Werte werden von diesem Beispiel abweichen, aber das Wichtigste ist, dass die Hashes für a_shared_secret.bin und b_shared_secret.bin identisch sein müssen, was beweist, dass beide Parteien dasselbe gemeinsame Geheimnis abgeleitet haben.)
Herzlichen Glückwunsch, Sie haben erfolgreich einen Diffie-Hellman-Schlüsselaustausch durchgeführt!