OCSP (Stapling): das Gute, das Schlechte und das H├Ąssliche

Eine der wichtigsten Komponenten f├╝r ein sicheres Internet ist die verschl├╝sselte Kommunikation. Wer sich zum Beispiel zu seinem Online-Banking-Portal sicher verbinden m├Âchte, braucht digitale Zertifikate. Diese werden oft von einer zentralen Stelle ausgestellt und sie sollen die Echtheit von Webseiten und anderen Diensten beweisen.

Nur g├╝ltige Zertifikate erlauben

Damit Zertifikate g├╝ltig sind, m├╝ssen sie bestimmten kryptografischen Anforderungen gen├╝gen. Au├čerdem besitzen Zertifikate immer einen festen G├╝ltigkeitszeitraum: Sie sind nicht vor und nicht nach einem bestimmten Zeitpunkt g├╝ltig, wodurch Zertifikate vor Missbrauch gesch├╝tzt werden.

In der Vergangenheit war es nicht un├╝blich, dass Zertifikate f├╝nf oder mehr Jahre g├╝ltig waren, und nat├╝rlich wurden einige von ihnen in dieser Zeit von Hackern erbeutet. Die Hacker wiederum konnten sich bis zum Ablauf der G├╝ltigkeit als der Dienst ausgeben, von dem sie das Zertifikat erbeutet hatten. Diesen Zeitraum also m├Âglichst klein zu halten war mit ein Grund, weshalb f├╝hrende Browserhersteller j├╝ngst den G├╝ltigkeits┬ş­zeitraum auf 398 Tage begrenzt haben. Die Zertifizierungsstelle LetÔÇÖs Encrypt geht sogar einen Schritt weiter und stellt Zertifikate mit maximal 90 Tagen G├╝ltigkeit aus und empfiehlt diese sogar auf 60 Tage zu verk├╝rzen.

G├╝ltigkeit in Echtzeit ├╝berpr├╝fen

Doch all die Zeitr├Ąume helfen nicht, wenn man doch bemerkt hat, dass mit dem Server etwas nicht stimmt und das Zertifikat m├Âglicherweise einem Hacker in die H├Ąnde gefallen ist: Man muss es f├╝r ung├╝ltig erkl├Ąren, und zwar m├Âglichst schnell und sofort!

Neben relativ unhandlichen Zertifikatssperrlisten (Certificate Revocation Lists), die es im Internet zu keiner wirklich gro├čen Verbreitung geschafft haben, existiert ein Verfahren, um die G├╝ltigkeit von Zertifikaten bei einem Validierungsdienst abzufragen: das Online Certificate Status Protocol (OCSP).

Bei der Zertifikatsvalidierung ├╝ber das Online Certificate Status Protocol stellt der Webbrowser beim Aufruf einer Webseite eine Anfrage (OCSP Request) an den Validierungsdienst der Zertifizierungsstelle, auch OCSP Responder genannt. Dieser Validierungsdienst liefert dem Webbrowser eine Antwort (OCSP Response) zur├╝ck. Sobald der Webbrowser die OCSP-Antwort erhalten hat, kann der Browser den G├╝ltigkeitsstatus des Zertifikats in quasi Echtzeit ├╝berpr├╝fen und das Zertifikat ablehnen, wenn es ung├╝ltig ist.

OCSP Schema
Ab­bildung 1 OCSP Schema

Wie so h├Ąufig hat der Mechanismus aber auch eine Kehrseite: es kann zu Datenschutzproblemen kommen, wenn unverschl├╝sselte OCSP-Anfragen abgeh├Ârt werden. Das hat j├╝ngst den Tech-Gigan­ten Apple zu einer Klar­stellung zur Daten­verwen­dung gezwungen, nachdem erneut kritisiert wurde, Betriebs­system­her­steller oder Internet­an­bieter k├Ânnten anhand der teilweise unver­schl├╝s­sel­ten Nutzungs­daten pr├Ązise Personen­profile erstellen. Gleiches gilt nat├╝rlich f├╝r den Validierungs­dienst, der s├Ąmtliche OCSP-Anfragen erh├Ąlt.

Ebenso kann es bei Webseitenaufrufen zu l├Ąngeren Ladezeiten kommen, da zus├Ątzlich eine OCSP-Abfrage durchgef├╝hrt werden muss. F├Ąllt der Validierungsdienst aus, kann die Verbindung unter Umst├Ąnden ├╝berhaupt nicht hergestellt werden.

Die Abh├Ąngigkeit zu einem zweiten Dienst

OCSP Angriff
Ab­bildung 2 OCSP Angriff

Blockiert ein Angreifer die OCSP-Kommunikation und erh├Ąlt der Browser in der Folge keine Antwort, wird die Webseite dennoch aufgerufen, ohne dabei eine Warnmeldung anzuzeigen. Dieses Verhalten bezeichnet man als sogenannten Soft Fail, der bei Ausfall des Validierungsdiensts nicht auch noch den Ausfall der Webseite nach sich ziehen soll.

Ein Verfahren nach dem Hard Fail Prinzip w├╝rde den Verbindungsaufbau blockieren und den Nutzer mit einer Warnmeldung ├╝ber eine nicht erfolgreiche OCSP Validierung informieren. Allerdings wurde bisher nur im Mozilla Browser Firefox eine solche Warnmeldung integriert, die gleichzeitig auch den Verbindungsaufbau blockiert.

Alle Chromium-basierten Webbrowser (Chrome, Opera, Edge, Vivaldi et cetera) verzichten auf eine Warnmeldung und setzen auf die Verwendung von CRLSets, anstatt auf OCSP. Dadurch wollen sie die Benutzerfreundlichkeit wahren und Internetnutzer nicht mit einer Warnmeldung ├╝berfordern, die sie m├Âglicherweise nicht verstehen w├╝rden. Bei CRLSets trifft man jedoch auf die typischen Probleme von Zertifikatssperrlisten: Gr├Â├čenbeschr├Ąnkung, Unhandlichkeit und eine durch Versionen beschr├Ąnkte Aktualit├Ąt.

├ťber Umwege direkt zum Ziel: OCSP Stapling

Statt dass der Browser eine OCSP-Anfrage stellt, wird diese Aufgabe fortan vom Webserver ├╝bernommen. Der Webserver stellt selbst in regelm├Ą├čigen Abst├Ąnden eine OCSP-Anfrage und ├╝bermittelt die Antwort im Verbindungsaufbau an den Browser. Die Antwort wird quasi an den Verbindungsaufbau angetackert, woher der Name OCSP Stapling r├╝hrt. Zun├Ąchst waren die Implementierungen der Webserver wie Nginx oder Apache f├╝r Stapling fehlerbehaftet, doch hat sich diese Situation wesentlich verbessert und es existiert mit mod_md in aktuellen Apache-Versionen eine einfache M├Âglichkeit OCSP-Stapling f├╝r alle ausgelieferten Zertifikate zu aktivieren.

Stapling l├Âst das Datenschutzproblem, das durch die zus├Ątzliche OCSP-Anfrage entsteht, da diese nun vom Webserver durchgef├╝hrt wird. Ebenso verbessert sich die Verbindungsgeschwindigkeit durch die eingesparte Abfrage und die Validierungsdienste werden entlastet. Durch die enthaltene Signatur der Zertifizierungsstelle und die Kurzlebigkeit der OCSP-Antwort kann ihr vertraut werden, obwohl sie nicht direkt vom OCSP Responder gesendet wird, sondern vom Webserver, an den ohnehin die eigentliche Webseiten-Anfrage gestellt wird.

OCSP Stapling
Ab­bildung 3 OCSP Stapling

Theoretisch ist es durch Stapling nicht mehr m├Âglich die OCSP-Kommunikation zu blockieren. Ein Angreifer, der in Besitz eines gestohlenen Server-Zertifikats ist, m├╝sste jedoch als b├Âswilliger Dienstanbieter kein OCSP-Stapling anbieten. Der Browser w├╝rde die verschl├╝sselte Verbindung herstellen und anschlie├čend versuchen eine OCSP-Anfrage durchzuf├╝hren. Diese k├Ânnte der Angreifer wiederum blockieren und mit einem bereits zur├╝ckgezogenen Zertifikat den Nutzer t├Ąuschen.

Um derartige Downgrade Angriffe zu verhindern, wurde eine Erweiterung f├╝r X.509-Zertifikate Must-Staple entworfen. Mittels dieser Erweiterung wird ├╝ber das Zertifikat mitgeteilt, dass der Dienstbetreiber OCSP-Stapling anbieten muss.

Damit die Erweiterung Must-Staple zum Einsatz kommen kann, m├╝ssen Browserhersteller diese Zertifikatserweiterung umsetzen, was derzeit noch nicht von allen getan wird. Der Browser w├╝rde anhand des Zertifikats die Information Must-Staple erhalten und in der Folge eine OCSP-Antwort im Verbindungsaufbau erwarten. Erh├Ąlt er diese Antwort nicht, muss er in einen Hard Fail-Zustand ├╝bergehen und die Verbindung versagen.

Durch diese Erweiterung kommen nur noch Verbindungen zustande, die eine g├╝ltige angeheftete OCSP -Information im Verbindungsaufbau mitliefern.
Es kann dennoch vorkommen, dass es einem Angreifer gelingt ein Zertifikat, den dazugeh├Ârigen Schl├╝ssel und eine g├╝ltige OCSP-Antwort zu entwenden. Im ung├╝nstigsten Fall w├╝rde zwar das Zertifikat vom eigentlichen Dienstanbieter zur├╝ckgezogen werden, aber der Angreifer k├Ânnte trotz Must-Staple w├Ąhrend des ├╝blichen G├╝ltigkeitszeitraums der OCSP-Antwort von sieben Tagen das Zertifikat verwenden. Mit der n├Ąchsten Aktualisierung der OCSP-Antwort, sp├Ątestens nach sieben Tagen, w├╝rde das Zertifikat abschlie├čend f├╝r ung├╝ltig erkl├Ąrt werden.

Fazit: Mehr Gutes als Schlechtes, manchmal aber H├Ąsslich

Um die G├╝ltigkeit von Zertifikaten in Echtzeit zu ├╝berpr├╝fen, wird das Online Certificate Status Protocol (OCSP) eingesetzt. Browser erhalten damit ein Werkzeug, um die Ung├╝ltigkeit von zur├╝ckgezogenen Zertifikaten festzustellen. Doch nur OCSP-Stapling in Verbindung mit der Zertifikatserweiterung Must-Staple behebt wesentliche Schw├Ąchen und sorgt f├╝r ein belastbares Verfahren. Auch wenn dieses nicht neu ist, mangelt es teilweise noch an der Unterst├╝tzung durch Webserver- oder Browser-Hersteller; diese hat sich j├╝ngst wesentlich verbessert.

aramido wird in K├╝rze eine L├Âsung f├╝r OCSP-Stapling mit dem HAProxy in diesem Blog vorstellen.