RSA-Key-Exchange vs. (EC)DHE

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen

TLS 1.2 – RSA-Key-Exchange vs. (EC)DHE

Um was geht es?

  • Dieser Artikel erklärt, warum der klassische RSA-Key-Exchange in TLS 1.2 unsicher ist und warum moderne Verbindungen ausschließlich ephemere Diffie-Hellman-Verfahren (DHE/ECDHE) verwenden sollten.

Grundlagen

  • TLS 1.2 unterstützt mehrere Verfahren zum Aufbau des gemeinsamen Sitzungsschlüssels.
  • Historisch weit verbreitet war der RSA-Key-Exchange, moderner und sicherer ist jedoch das (EC)DHE-Verfahren.

RSA-Key-Exchange (veraltet und unsicher)

  • Beim RSA-Key-Exchange erzeugt der Client das Pre-Master Secret und verschlüsselt es mit dem langfristigen öffentlichen RSA-Schlüssel des Servers.
  • Der Server entschlüsselt das Pre-Master Secret mit seinem privaten RSA-Serverkey.
  • Der RSA-Serverkey ist ein statischer, langfristiger Schlüssel, der sich nicht pro Verbindung ändert.
  • Alle abgeleiteten Sitzungsschlüssel hängen direkt von diesem langfristigen RSA-Schlüssel ab.
  • Wird der private Serverkey irgendwann kompromittiert, kann ein Angreifer alle aufgezeichneten TLS-Sitzungen nachträglich entschlüsseln.
  • Der RSA-Key-Exchange bietet keine Forward Secrecy.
  • Aus diesem Grund wurde der RSA-Key-Exchange in TLS 1.3 vollständig entfernt.

(EC)DHE – Ephemeres Diffie-Hellman

  • Beim (EC)DHE-Verfahren erzeugen Client und Server jeweils einen temporären, einmaligen Diffie-Hellman-Schlüssel.
  • Diese temporären Schlüssel existieren nur während des Handshakes und werden danach gelöscht.
  • Aus den temporären Schlüsseln wird das Pre-Master Secret berechnet.
  • Der langfristige Server-Schlüssel aus dem Zertifikat wird nur zur Signatur genutzt, nicht zur Entschlüsselung.
  • Ein Angreifer, der später den Server-Private-Key erbeutet, kann alte Sitzungen nicht nachträglich entschlüsseln.