E03 ECDH Schlüsselaustausch mit Signatur

Der ECDH Schlüsselaustausch basiert auf dem Diffie-Hellmann Schlüsselaustausch und wurde um die elliptische Kurven-Kryptographie erweitert. Auch dieser Algorithmus ist mit wenigen Zeilen Programmcode nutzbar und ist ein vollwertiger Schlüsselaustausch-Code. Auch hier gilt wieder: „glaubst Du den Machern der Kurve“? Falls nicht biete ich Euch im Beispiel E04 EC Kurve25519 Schlüsselaustausch Signatur eine alternative Kurve zur Nutzung an. Dieses Beispiel erweitert den reinen ECDH-Schlüsselaustausch in Beispiel E02 ECDH Schlüsselaustausch um eine Unterschriftsmöglichkeit, d.h. das jeweilige Private-/Public Keypaar wird zusätzlich für die digitale Signatur genutzt.

Hier noch einmal in Kurzform die Vorgehensweise: beide Partner erzeugen ihre Schlüsselpaare (KeyPairs) und tauschen dann ihre öffentlichen Schlüssel (public keys) aus. Im Programm geschieht das einfach durch „Vertauschen“ in der Ansicht, in der Praxis werden die öffentlichen Schlüssel z.B. auf einer persönlichen Webseite veröffentlicht. Dann erzeugen beide Partner den gemeinsamen geheimen Schlüssel (shared secret key), der dann z.B. für eine symmetrische Verschlüsselung genutzt werden kann. In diesem Beispiel ist der gemeinsame geheime Schlüssel zwar 32 Byte lang und damit „OK“ für AES-Verschlüsselungen, aber bei der Nutzung einer „längeren“ Kurve entstehen wieder „zu lange“ Schlüssel – diese werden mittels SHA-256-Hashfunktion auf die Länge von 32 Byte gebracht; alternativ wäre auch die Nutzung von HKDF (Kryptografische Erzeugung von abgeleiteten Schlüsseln) denkbar.

Schlüsselaustauschsteckbrief
Name des Verfahrens ECDH
Langname Elliptische Kurven mit Diffie-Hellmann Schlüsselaustausch
Basis Elliptische Kurven kombiniert mit dem diskreten Logarithmus
Blocklänge (Byte)
Schlüssellänge (Byte/Bit) 256/2048, 384/3072, 521/4168
Padding genutzt Nein
Sicherheit ab 2048 Bit Schlüssellänge
Besonderes

Der nachfolgende Quellcode ist durch die Ausgaberoutinen deutlich länger als der „eigentliche“ Programmcode.

Bitte die nachfolgende Routine nicht für den Echteinsatz nutzen, da sie aus kryptographischer Sicht angreifbar ist !

Auf der Konsole erscheinen zusätzliche Angaben zur Signatur und Verifizierung:

Die Lizenz zum obigen Beispiel findet Ihr auf der eigenen Lizenz-Seite.

Letzte Aktualisierung: 18.01.2019