Perfect Forward Secrecy


Sicherheitstechnisch ist SSL schon einmal eine gute Sache. In Zeiten in der die NSA und andere Geheimdienste aber ungeniert Millionen Bürger ausspähen, muss aber auch die SSL-Verschlüsselung auf den Prüfstand gestellt werden. Die sonst so sichere Technologie besitzt nämlich eine Achillesferse, die im schlimmsten Fall dazu führen kann, das die ganzen aufgezeichneten und archivierten verschlüsselten Daten durch einen Dritten, wie eben die NSA, ganz einfach entschlüsselt werden können. Der Grund liegt im geheimen Schlüssel, der zwischen dem Sender und Empfänger, also beispielsweise Browser-Client und Server, ausgetauscht wird (z.B. Browser schlägt einen Schlüssel vor, den der Server dann im Gegenzug bestätigt). Zwar wird dieser geheime Schlüssel, der zum ver- und entschlüsseln der Daten dient, ebenfalls verschlüsselt übertragen, dennoch kann er aber auf diesem Weg von jemand Dritten mitgeschnitten werden. Gelingt es nun diesem Dritten, irgendwann, und sei es auch nur Jahre später, den geheimen Schlüssel zu entschlüsseln und ihm habhaft zu werden, dann kann er damit alle verschlüsselten Daten die er damals ebenfalls mitgeschnitten hat, nun ganz bequem entschlüsseln.

Hier setzt nun die Perfect Forward Secrecy (PFS), auf deutsch etwa perfekt fortgesetzte Geheimhaltung, an. Durch sie wird sichergestellt, dass durch einen aufgedeckten Schlüssel niemals schon abgeschlossene verschlüsselt aufgezeichnete Daten dadurch entschlüsselt werden können. Ermöglicht wird dies, in dem der geheime Schlüssel erst gar nicht übertragen wird, sondern jede Seite für sich durch den Austausch von mehreren Nachrichten den gemeinsamen Schlüssel temporär generiert. Ermöglicht wird dies durch das Diffie-Hellman Schlüsselaustauschverfahren.
Kurz gesagt basiert dieses Verfahren auf der mathematischen Tatsache, dass man wenig Rechenleistung braucht, um eine Potenz ga mod p zu errechnen, während das umgekehrte Problem von ga auf a zu schließen sehr schwierig ist. Lauscht nun jemand, bekommt er lediglich die Primzahl p und die feste Zahl g, auf die sich Sender und Empfänger geeinigt haben, sowie die von Empfänger und Sender errechneten Ergebnisse von ga mod p und gb mod p (wobei a zufällig vom Sender generiert wird und b zufällig vom Empfänger) mit. Um den Schlüssel nun selbst generieren zu können, benötigt der Lauscher nun aber noch a und b. An diese gelangt er aber ohne weiteres nicht, da diese niemals von Sender und Empfänger übertragen werden. Der Empfänger kann den geheimen Schlüssel hingegen mit seinem zufällige generiertem Wert b und dem vom Sender übertragenem Ergebnis A ( ga mod p) durch K= A b mod p generieren, während der Empfänger ebenfalls auf den gleichen Schlüssel durch K= B a mod p kommt, wobei B hier für das übertragene Ergebnis vom Empfänger steht ( gb mod p). Setzt man für A bzw. B jeweils die Formel der übertragenen Ergebnisse ein, sieht man schnell, dass der Schlüssel jeweils durch ga b mod p berechnet wird und es somit nicht überrascht, dass beide Seiten jeweils den gleichen Schlüssel berechnen.

Aber auch Perfect Forward Secrecy ist nicht das Maß aller Dinge. Nach wie vor ist man nämlich auch bei einem Man-In-The-Middle-Angriff völlig ungeschützt. In diesem Fall klinkt sich der Angreifer zwischen Sender und Empfänger und führt praktisch zwei Mal einen Diffie-Hellman-Schlüsselaustausch durch. Einmal mit dem Empfänger und einmal mit dem Sender. Diese bekommen davon aber natürlich nichts mit. Um dies zu verhindern, müssen zusätzlich die ausgetauschten Nachrichten authentifiziert werden. Dies ist beispielsweise durch die Verwendung von digitale Signaturen möglich.

Bei all den Vorteilen der Perfect Forward Secrecy darf ein nicht unerheblicher Nachteil nicht unterschlagen werden. Die erforderlichen Berechnungen des Schlüssels kosten Zeit und verlangsamen beispielsweise den SSL-Handshake um 15 bis 300% je nach Umsetzung.

Quellen:

  • c't 18 vom 12.08.2013