Wie die NSA den Diffie-Hellman Schlüsseltausch knackt

Der NSA-Whistleblower James Bamford veröffentlichte 2012 einen Artikel bei wired.com, dass der NSA ein Durchbruch bei Angriffen auf verschlüsselte Verbindungen gelungen sein muss und dass die NSA einen erheblichen Teil des verschlüsselten Datenverkehrs entschlüsseln kann. Die Dokumente des NSA-Whistleblowers Edward Snowden belegen diese Vermutung und zeigen, dass die NSA einen erheblichen Teil der SSL/TLS, SSH und VPN-Verbindungen entschlüsseln kann. Die „NSA VPN decryption infrastructur“ zeigt, dass wenige Daten an einen Supercomputer gesendet werden, wenn ein „Internet Key Exchange“-Handshake zum Aufbau einer VPN-Verbindung erkannt wird. Der Supercomputer liefert den Key zum Entschlüsseln der Daten, die dann on-the-fly entschlüsselt und in XKeyscore eingespeist werden. Doch eine gute Server-Administration schützt…

Auf der ACM CCS im Okt. 2015 wurde das Paper „How is NSA breaking so much crypto?“ mit dem Best Paper Award ausgezeichnet, da es erstmals eine plausible Erklärung für die Kapazitäten der NSA liefert. Die Autoren beschreiben einen Angriff auf den Diffie-Hellman Schlüsseltausch, wenn „common DH parameters“ mit 1024 Bit Schlüssellänge verwendet werden, wie sie im RFC 2409 empfohlen wurden.

Es ist eine Ironie, dass ausgerechnet der Diffie-Hellmann-Schlüsseltausch den Ansatzpunkt für einen Angriff der NSA auf die Verschlüsselung bietet, da diese Technik als Forward Secrecy für die Transportverschlüsselung SSL/TLS sowie für SSH und VPNs besonders guten Schutz gegen Angriffe auf die Krypto bieten sollte.

Die NSA könnte Rainbow-Tables für Default-DHE-Parameter haben

Ähnlich wie bei dem Angriff auf die GSM-Verschlüsselung im Mobilfunk, kann die NSA mit der zur Verfügung stehenden Rechenpower ihrer Supercomputer für einige häufig verwendete DH-Parametersätze Rainbowtables berechnen. Nach Ansicht der Autoren braucht die NSA mit der angenommenen Rechenpower etwa 1 Jahr, um einen DH-Parametersatz mit 1024 zu analysieren. Danach können die vorberechneten Daten genutzt werden, um einen Diffie-Hellmann-Schlüsseltausch innerhalb von wenigen Sekunden zu knacken.

Wenn ein Key Exhange von einem Lauschkonten erkannt wird, werden die ersten Daten an den Supercomputer gesendet, der entweder den Key knackt und den Schlüssel zurücksendet oder einen Fehler meldet. Wurde der Key geknackt, kann der verschlüsselte Datenverkehr on-the-fly entschlüsselt und in XKeyscore eingespielt werden. Wenn die NSA die beiden am häufigsten verwendeten 1024 Bit DH-Parametersätze mit ihren Supercomputern analysiert hat, dann kann sie etwa 2/3 der VPN Verbindungen, 1/4 der SSH Verbindungen und 1/5 der SSL/TLS Verbindungen on-the-fly knacken.

Sichere Server-Konfiguration mit individueller DHE-Tabelle

Um sich gegen diese Angriffe zu schützen, sollten die Administratoren von Web-, Mail-, SSH- und VPN-Servern ihre Konfigurationen anpassen. Einige FAQ für die Server-Konfigurationen wie z.B. die Apache FAQ sind als out-of-date zu betrachten.

  1. 1024 Bit DH-Parameter sollten nicht mehr verwendet werden.
  2. 2048 Bit DH-Parameter sollten regelmäßig gewechselt werden.

Apache 2.2

Apache 2.2 unterstützt keine 2048 Bit DH-Parameter. Der Diffie-Hellmann-Schlüsseltausch (DHE) sollte deshalb deaktiviert werden. Der ECDHE-Schlüsseltausch ist nicht von dem Angriff betroffen und kann weiter verwendet werden.

Dazu müssen alle DHE-Parameter aus

SSLCipherSuite

entfernt werden — ECDHE-Ciphers hingegen dürfen weiterhin aktiv bleiben.

Apache 2.4.x, nginx, Postfix, Dovecot

Diese Server können individuell generierte DH-Parameter verwenden. Die DH-Parameter können wöchentlich oder monatlich mit einem Cron-Job erneuert werden, der folgendes Kommando ausführt (Beispiele für Apache):

FILE=`mktemp` ; openssl dhparam 2048 -out $FILE && mv -f $FILE /etc/apache2/ssl/dh2048.pem

In den SSL-Konfigurationen der Server kann man die Datei mit den DH-Parametern konfigurieren. Für Apache 2.4.x steht folgende Option zur Verfügung:

SSLOpenSSLConfCmd DHParameters "/etc/apache2/ssl/dh2048.pem"

In der nginx-Konfiguration kann man folgende Option verwenden:

ssl_dhparam /etc/nginx/dh2048.pem

In Postfix verwendet man etwas irreführend folgende Option:

smtpd_tls_dh1024_param_file = /etc/postfix/dh2048.pem

Dovecot generiert automatisch wöchentlich neue DH-Parameter, wenn folgende Option gesetzt sind:

ssl_dh_parameters_length=2048

OpenSSH Server

OpenSSH bietet 8 Protokolle für den Schlüsseltausch. Drei Protokolle verwenden Eliptische Kurven mit NIST-Curven und werden deshalb als suspekt angesehen. Die Protokolle mit SHA1 oder 1024 Bit DH-Parametern gelten ebenfalls nicht mehr als sicher. Damit bleiben zwei als sicher geltende Protokolle für den Schlüsseltausch übrig.

In der Konfigurationsdatei /etc/ssh/sshd_config kann man festlegen, dass nur diese beiden Protokolle für den Schlüsseltausch verwendet werden dürfen:

KexAlgorithms curve25519-sha256@libssh.org,diffie-hellman-group-exchange-sha256

Wie funktioniert eigentlich kryptographische Verfahren auf Basis elliptischer Kurven?

Unser Crypto-Experte Karsten Ness hat dazu auf unserer letzten Secure Linux Administration Conference einen schönen Vortrag gehalten und gibt dort auch weitergehende Tipps zur sicheren Server-Konfiguration:

Dieser Beitrag wurde unter News veröffentlicht. Setze ein Lesezeichen auf den Permalink.

8 Responses to Wie die NSA den Diffie-Hellman Schlüsseltausch knackt

  1. Steffen sagt:

    Danke für die Tipps!

    In der „KexAlgorithms“-Zeile musste ich das Leerzeichen nach dem Komma entfernen, sonst gab es beim Starten von OpenSSH folgenden Fehler: „garbage at end of line“

    Der Android-SSH-Client „VX ConnectBot“ unterstützt leider keinen der beiden Algorithmen, aber mit dem Original „ConnectBot“ (der mittlerweile wieder weiterentwickelt wird) klappt es: https://play.google.com/store/apps/details?id=org.connectbot

  2. Leerzeichen habe ich entfernt, das hat sich vielleicht beim Einstellen in den Blog eingeschlichen, Danke für den Hinweis!

  3. Daniel sagt:

    Danke!

    Wäre schön noch courier-mta mit aufzunehmen:

    http://www.courier-mta.org/mkdhparams.html

  4. Sehr guter Artikel!
    Könntet Ihr Eure Anleitung „Perfect Forward Secrecy (PFS) für Postfix und Dovecot einrichten“ entsprechend updaten (für die Freunde des cut&paste – wie mich z.B. ;-) ) ?
    Danke!

  5. Wer einen FTP-Server betreibt, sollte diesen nicht vergessen:

    ProFTPd:

    TLSDHParamFile /etc/proftpd/dh2048.pem

    Bei PureFTPd wird automatisch die /etc/ssl/private/pure-ftpd-dhparams.pem verwendet, sofern vorhanden.

  6. Malte sagt:

    Hallo

    Wichtig ist auch die Apache und OpenSSL Version.

    Min.:

    * Apache 2.4.8
    * OpenSSL 1.02

    Damit ist Ubuntu 14.04 schonmal raus

  7. Pingback: Mailserver mit Dovecot, Postfix und MySQL unter Ubuntu 16.04 LTS

  8. Protohuman sagt:

    Laut https://wiki.dovecot.org/SSL/DovecotConfiguration werden wöchentlich neue DH-Parameter nur in Dovecot 2.1 und älter generiert, bei Dovecot 2.2 jedoch nicht. Das widerspricht der Angabe im Blogposting. Was ist nun richtig?

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.