SSL-verschlüsselte Verbindungen

Thomas LENNE, 123RF

Perfect! Forward Secrecy

Durch der Enthüllungen über die weltweite Überwachung durch Geheimdienste gerät ein SSL/TLS-Feature in den Blickpunkt, das die Sicherheit SSL-verschlüsselter Verbindungen erhöht: Perfect Forward Secrecy.
Termine planen, Nachrichten austauschen, Kundendaten verwalten, am besten auch vom Smartphone aus. Das alles und noch viel mehr sollen moderne ... (mehr)

Mit dem etwas unverbindlich klingenden Begriff der Folgenlosigkeit wird im Krypto-Jargon das englische Perfect Forward Secrecy (PFS) übersetzt. Gemeint ist damit, dass Angreifer aus einem aufgedeckten geheimen Langzeitschlüssel nicht auf damit ausgehandelte Sitzungsschlüssel eines Kommunikationskanals schließen und ihn so mithören können [1]. Die Folgen einer solchen Schwachstelle sind also eingrenzbar. Gerade bei der SSL-Verschlüsselung von HTTP-Verbindungen kann man diese Eigenschaft ausnutzen.

Zu Beginn einer SSL-Session handeln die Kommunikationspartner Session-Keys aus, mit der dann die gesammte Session verschlüsselt wird. Bei den gängigen Methoden (RSA) wird der Private-Key des Servers benutzt, um den Session-Key zu generieren – mit dem Seiteneffekt, dass sich aufgezeichnete SSL-Verbindungen mit dem Private-Key des Servers im Nachhinein entschlüsseln lassen oder aber Man-in-the-Middle-Angriffe möglich sind. Das Problem liegt darin, dass der Private-Key des Servers sowohl für Authentifizierung und Verschlüsselung benutzt wird. Authentizität ist aber nur für den Moment der Kommunikationsaufnahme wichtig, während die Verschlüsselung für Jahre sicher sein sollte.

Als Alternative dazu bietet sich der Diffie-Hellmann-Algorithmus an. Durch Einsatz dieses Verfahrens werden für jede SSL-Session Keys generiert, die sich nicht aus dem Private-Key des Servers herleiten lassen und somit eine spätere Entschlüsselung nur durch Brute-Force-Brechen des Session-Keys möglich ist. PFS ermöglicht, dass heutige SSL-verschlüsselte Kommunikation zukünftig sicher ist, auch wenn der Private-Key des Servers irgendwann kompromittiert werden sollte.

SSL und PFS

SSL unterstützt PFS über zwei Algorithmen: Diffie-Hellman (DHE) und Elliptic Curve Diffie-Hellmann (ECDHE). Eine genaue Beschreibung der beiden Methoden liefern die Artikel "SSL/TLS & Perfect Forward Secrecy" von Vincent Bernat [2] und "Deploying Forward Secrecy" von Ivan Ristic [3].

Ob die Algorithmen in der installierten OpenSSL-Version verfügbar sind, zeigt Listing 1 exemplarisch für ECDHE, unter [4] gibt es eine Übersicht unterstützter Methoden für einzelne Linux-Distributionen. ECDHE ist erst mit der OpenSSL-Version 1.x verfügbar, DHE auch in älteren Versionen.

Listing 1

Algorithmen in OpenSSL

01 $ openssl ciphers -v | grep ECDHE
02
03 ECDHE-RSA-AES256-GCM-SHA384 TLSv1.2 Kx=ECDH     Au=RSA  Enc=AESGCM(256) Mac=AEAD
04 ECDHE-ECDSA-AES256-GCM-SHA384 TLSv1.2 Kx=ECDH     Au=ECDSA Enc=AESGCM(256) Mac=AEAD
05 ECDHE-RSA-AES256-SHA384 TLSv1.2 Kx=ECDH     Au=RSA  Enc=AES(256)  Mac=SHA384
06 ECDHE-ECDSA-AES256-SHA384 TLSv1.2 Kx=ECDH     Au=ECDSA Enc=AES(256)  Mac=SHA384
07 ECDHE-RSA-AES256-SHA    SSLv3 Kx=ECDH     Au=RSA  Enc=AES(256)  Mac=SHA1
08 ECDHE-ECDSA-AES256-SHA  SSLv3 Kx=ECDH     Au=ECDSA Enc=AES(256)  Mac=SHA1
09 ECDHE-RSA-DES-CBC3-SHA  SSLv3 Kx=ECDH     Au=RSA  Enc=3DES(168) Mac=SHA1
10 ECDHE-ECDSA-DES-CBC3-SHA SSLv3 Kx=ECDH     Au=ECDSA Enc=3DES(168) Mac=SHA1
11 ECDHE-RSA-AES128-GCM-SHA256 TLSv1.2 Kx=ECDH     Au=RSA  Enc=AESGCM(128) Mac=AEAD
12 ECDHE-ECDSA-AES128-GCM-SHA256 TLSv1.2 Kx=ECDH     Au=ECDSA Enc=AESGCM(128) Mac=AEAD
13 ECDHE-RSA-AES128-SHA256 TLSv1.2 Kx=ECDH     Au=RSA  Enc=AES(128)  Mac=SHA256
14 ECDHE-ECDSA-AES128-SHA256 TLSv1.2 Kx=ECDH     Au=ECDSA Enc=AES(128)  Mac=SHA256
15 ECDHE-RSA-AES128-SHA    SSLv3 Kx=ECDH     Au=RSA  Enc=AES(128)  Mac=SHA1
16 ECDHE-ECDSA-AES128-SHA  SSLv3 Kx=ECDH     Au=ECDSA Enc=AES(128)  Mac=SHA1
17 ECDHE-RSA-RC4-SHA       SSLv3 Kx=ECDH     Au=RSA  Enc=RC4(128)  Mac=SHA1
18 ECDHE-ECDSA-RC4-SHA     SSLv3 Kx=ECDH     Au=ECDSA Enc=RC4(128)  Mac=SHA1

Werden die benötigten Algorithmen von der installierten OpenSSL-Version nicht unterstützt, muss man OpenSSL für die eigene Plattform kompilieren [5]. Nginx zum Beispiel bietet die Möglichkeit an, die OpenSSL-Quellen beim Kompilieren mit anzugeben und statisch einzubinden: »./configure ... --with-openssl=/pfad/zum/openssl_sourcecode« [6],[7].

Der höhere Aufwand beim Generieren der Session-Keys geht mit Performance-Einbußen einher: DHE-Algorithmen sind langsamer als ECDHE-Algorithmen, dafür steht ECDHE nicht überall zur Verfügung: in OpenSSL erst ab 1.x. In älteren Browsern und Clients kann die Unterstützung fehlen. Performance-Tests [2,8] belegen Einbrüche von 25 bis 50 Prozent bei DHE gegenüber ECDHE.

Wenn man also SSL-verschlüsselte Webseiten betreibt, eine möglichst große Anzahl unterschiedlicher Betriebssysteme und Browser unterstützen und für alle Besucher PFS aktivieren will, wirkt sich dies auf die Performance der SSL-Verbindungen aus.

Mit PFS kann jede SSL-fähige Kommunikation abgesichert werden, unter anderem für Webserver, Mailserver und Stunnel-Installationen. Webserver-Setups lassen sich via SSLLabs' SSL Server Test [9] überprüfen, ein im Sommer neu hinzugefügter Test überprüft die PFS-Fähigkeit des Servers. Eine Anmerkung dazu: Wird serverseitig nur ECDHE angeboten, erscheinen in der Handshake-Auswertung zwar Browser, die PFS beherrschen, da ältere Clients aber nur DHE-Algorithmen kennen, wird der Zusatz "PFS" in der Zusammenfassung nicht angezeigt. Unter Protocol Details erscheint der Zusatz: "Forward secrecy: With modern browsers".

Während für Web-Applikationen der Einsatz von PFS empfehlenswert ist, kann diese Maßnahme bei statischen Inhalten wie CSS, Javascript, Bildern und Icons unterbleiben. Dafür kann man performantere Algorithmen auswählen, wenn die Informationen nicht sonderlich schützenswert sind.

PFS hat im Web noch keine weite Verbreitung gefunden, mit Stand Oktober 2013 unterstützen gerade einmal 4,2 Prozent der populärsten Webseiten neuere PFS-Algorithmen (ECDHS), während 54 Prozent der untersuchten Webserver PFS nicht anboten [10].

Konfiguration

Die Konfiguration von PFS ist für jeden Dienst verschieden und benötigt mindestens zwei Optionen: der Server muss die am meisten bevorzugte Cipher Suite auswählen können, einzelne Cipher Suites und deren Anordnung müssen konfigurierbar sein.

Für die Webserver Apache und Nginx gibt es mehrere Anleitungen http://11,7, in Listing 2 und 3 sind die wesentlichen Optionen aufgeführt, die bei SSLLabs [9] zu einem perfekten Ergebnis führen (Abbildung 1).

Abbildung 1: Gut gemacht: Ein perfektes Ergebnis bei den Test der SSLLabs.

Listing 2

Apache-Konfiguration

01 SSLProtocol all -SSLv2 -SSLv3
02 SSLHonorCipherOrder on
03 SSLCipherSuite "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 \
04 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 \
05 EECDH EDH+aRSA RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS"

Listing 3

Nginx-Konfiguration

01 ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
02 ssl_prefer_server_ciphers on;
03 ssl_ciphers "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 \
04 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 \
05 EECDH EDH+aRSA RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS";

Ähnliche Artikel

comments powered by Disqus
Mehr zum Thema

Was von TLS übrig bleibt

Zahlreiche Angriffe haben die Sicherheit von SSL/TLS-Verschlüsselungen in den letzten Jahren erschüttert. Abhilfe schaffen würden neuere Standards, doch die sind kaum verbreitet.

Artikel der Woche

Support-Ende von SMBv1

Mit dem aktuellen Update für Windows 10 und Windows Server 2016 steht eine Änderung ins Haus, die gerade für Benutzer älterer Linux-Distributionen große Auswirkungen hat. Nachdem Microsoft es über viele Jahre schon angekündigt hat, entfernt der Konzern mit dem aktuellen Update-Release den Support für das SMB-Protokoll 1. (mehr)
Einmal pro Woche aktuelle News, kostenlose Artikel und nützliche ADMIN-Tipps.
Ich habe die Datenschutzerklärung gelesen und bin einverstanden.

Linux-Backup

Welche Backup-Lösung setzen Sie für Linux im professionellen Umfeld ein?

  • keine
  • eigene Scripts
  • rsnapshot
  • rdiff-backup
  • Bacula
  • Bareos
  • Borg
  • Duplicity
  • Amanda
  • Burp
  • Clonezilla
  • Acronis
  • Arkeia
  • SEP sesam
  • Veeam
  • Redo Backup
  • Relax-and-Recover
  • andere kommerzielle Software
  • andere Open-Source-Software

Google+

Ausgabe /2017

Microsite