July 26, 2013

Apache und Perfect Forward Secrecy

Apache und Perfect Forward Secrecy

Einleitung

In den heutigen Zeiten scheint es ratsam, eventuellen Schnüffeleien einen Riegel vorzuschieben.

Normalerweise funktioniert der Austausch mit einem Kommunikationspartner, bei dem die Konversation verschlüsselt ist, nach folgendem Schema:

  • Wir rufen eine SSL verschlüsselte Webseite auf
  • Die Gegenstelle weist sich mit einem Zertifikat aus, welches einen öffentlichen Schlüssel enthält
  • Wir verschlüsseln unsere Nachrichten mit dem öffentlichen Schlüssel aus dem erhaltenen Zertifikat
  • Die Gegenstelle kann die Nachrichten mit dem zugehörigen geheimen Schlüssel entschlüsseln.
  • Wir schlagen einen geheimen Sitzungsschlüssel vor
  • Die Gegenstelle bestätigt den geheimen Sitzungsschlüssel

Dies funktioniert soweit gut, ist aber verhängnisvoll, sobald ein Mitschnitt dieser verschlüsselten Konversation analysiert wird und der Schnüffler an unseren geheimen Sitzungsschlüssel gelangt. Dann kann auch im Nachhinein jegliche, verschlüsselte Kommunikation dechiffriert werden.
Um diesem Problem zu begegnen bedient man sich Perfect Forward Secrecy, welches mittels des Diffie-Hellman-Verfahren zum Schlüsselaustausch einen Sitzungsschlüssel generiert, der auch im Nachhinein nicht zum dechiffrieren verwendet werden kann. Näheres dazu weiß Wikipedia.

Konfiguration

Um Perfect Forward Secrecy auf dem Apache zu aktivieren müssen lediglich wenige konfigurative Einstellungen vorgenommen werden.
Folgende Optionen müssen in der /etc/apache2/mods-enabled/ssl.conf gesetzt werden:

# enable only secure protocols: SSLv3 and TLSv1, but not SSLv2
SSLProtocol all -SSLv2

# Use Ciphers in the order we want them to be used (most secure to least secure)
SSLHonorCipherOrder On

# Finally, our preferred Cipher order
SSLCipherSuite EECDH+AES:EDH+AES:-SHA1:EECDH+RC4:EDH+RC4:RC4-SHA:EECDH+AES256:EDH+AES256:AES256-SHA:!aNULL:!eNULL:!EXP:!LOW:!MD5

Abschließend muss der Apache einmal neu gestartet werden. Nach dem Neustart bzw. Reload der Konfiguration wird Apache nun mit seinen bevorzugten Cipher Algorithmen Clients bedienen, des Weiteren wird der Schlüsselaustausch nun dafür sorgen, dass ein Entschlüsseln der Kommunikation nur durch inversive Eingriffe wie etwa Man in the Middle Angriffe möglich ist.
Nun kann die eigene Seite über Dienste wie SSLLabs geprüft werden.