Online Certificate Status Protocol

Das Online Certificate Status Protocol (OCSP) dient der Überprüfung des Status von X.509 Zertifikaten, die beispielsweise zur Verschlüsselung, Signatur und Authentifizierung verwendet werden. Im Rahmen dieser Nutzung kann es vorkommen, dass Zertifikate nicht mehr verwendet werden sollen, weil sie entweder nicht mehr vertrauenswürdig sind oder technische Gründe eine weitere Nutzung verhindern (siehe Warum werden Zertifikate gesperrt?). Damit ein Kommunikationspartner weiß, dass ein solches Zertifikat nicht mehr verwendet werden soll, wird dieses Zertifikat gesperrt.

Bei einer Nutzung von Zertifikaten kann der Kommunikationspartner auf Basis einer Sperrstatus-Prüfung darüber informiert werden, dass das Zertifikat nicht mehr gültig ist und für die geplante Nutzung nicht mehr den gewünschten Nutzen hat.

Die Entwicklung von OCSP hängt mit den Schwächen von Sperrlisten zusammen. Um diese darzustellen, halte ich es für sinnvoll zuerst auf das Konzept der Sperrlisten einzugehen.

Dauer der Übertragung von Sperrlisten

Die Berechnung der Größe von Sperrlisten (zeigt, dass die Übertragungsdauer von Sperrlisten bei den heute vorherrschenden Bandbreiten nicht der alleinige Grund für die Entwicklung von OCSP ist. Die gesamte Verarbeitungsdauer einer Sperrliste ist länger als die reine Übertragung und wird durch viele Faktoren bestimmt, so sind die Dauer für den Aufbau der Kommunikation, die Dauer der Verarbeitung im Rahmen der Suche nach der Seriennummer des zu überprüfenden Zertifikates usw. zu beachten.

Netzwerkseitig sind u.a. Latenzen bei den Zugriffen zu beachten, anschließend muss die Sperrliste vom jeweiligen Programm noch verarbeitet werden. Je nach Software und Implementierung kann dies unter-schiedlich lang dauern und es gibt durchaus Beispiele, in denen eine Sperrliste zu groß war um von einer Software in der zur Verfügung stehenden Zeit verarbeitet zu werden.

Neben dem Nachteil von Sperrlisten, dass bei einer Sperrlisten-Überprüfung immer erst die komplette Datei auf den Client kopiert werden muss und anschließend verarbeitet werden muss, existieren noch weitere Nachteile, die bei der Konzeption von OCSP berücksichtigt wurden und für die OCSP eine sinnvolle Alternative bietet.

Sperrlisten werden in definierten Abständen publiziert und enthalten immer nur die Sperrinformationen der letzten Publizierung. Es besteht also das theoretische Risiko, dass gesperrte Zertifikate noch eine gewisse Zeit weiterverwendet werden. OCSP erlaubt hier – abhängig von der Implementierung – aktuellere Informationen.

Sperrlisten enthalten nur die gesperrten Zertifikate und bieten keine Möglichkeit zur Überprüfung, ob ein Zertifikat wirklich ausgestellt wurde. Auch hier bietet OCSP mehr Funktionen, indem auch Informationen über nicht gesperrte Zertifikate bereitgestellt werden können.

Der Ansatz von SCVP ist in Bezug auf die Sperrung mit dem Ansatz von OCSP zu vergleichen, SCVP bietet aber weitergehende Möglichkeiten, die ich auf folgender Seite beschreibe.

Wie funktioniert OCSP?

OCSP ist ein Client Server Protokoll, bei dem immer nur der aktuelle Status für ein Zertifikat abgefragt wird. Im Gegensatz zu einer Sperrliste, die über einen Download als Ganzen gela-den wird, sendet der Client einen Request an den Server, der einen Response zurücksenden. Der Server wird daher als OCSP-Responder bezeichnet.

Der Zugriff auf einen OCSP-Responder wird über ein Attribut des X.509 Zertifikate gesteuert. Im Attribut Stelleninformationszugriff (englisch: AuthorityInfoAccess) kann ein OCSP-Responder eingetragen und die Information mit der OID 1.3.6.1.5.5.7.48.1 referenziert werden. Eine Software die OCSP unterstützt, führt bei Zertifikaten mit einem OCSP-Responder Eintrag primär ein Sperrstatusprüfung über OCSP und nur im Falle, dass OCSP nicht funktioniert, eine zusätzliche Prüfung über Sperrlisten aus.

Die genannten RFCs definieren sowohl den Request als auch den Response. Es ist hierbei zu beachten, dass OCSP neben verpflichtenden Komponenten auch optionale Zusatzfunktionen enthält, die aber nicht vollständig umgesetzt wurden.

Aufbau eines OCSP-Requests

Der OCSP-Request ist wie folgt aufgebaut.

  • Version der OCSP Implementierung
  • Definition als OCSP-Request
  • Informationen über das abgefragte Zertifikat

Der Request wird über Standard Protokolle (in der Regel http) an den OCSP-Responder ge-sandt und kann die Anfrage für mehrere Zertifikate beinhalten.

Aufbau eines OCSP-Response

Der OCSP-Responder empfängt die Nachricht und führt eine formale Prüfung durch. Nur wenn die Anfrage im richtigen Format ist, wird ein Responce generiert und über das zuvor verwendete Protokoll übertragen. Ansonsten wird eine Fehlermeldung zurückgesandt.

Der Responce enthält folgende Informationen

  • Version der OCSP-Implementierung
  • Name des OCSP-Responders
  • Antwort für jedes einzelne Zertifikate, das abgefragt wurde, dieses beinhaltet folgende Informationen zu den abgefragten Zertifikaten
    • Status des Zertifikates
    • Gültigkeitsdauer der Antwort
    • Zudem können weitere optionale Informationen enthalten sein:
      • Für die Signatur der Antwort verwendeter Algorithmus
      • Eine Signatur als Echtheitsbestätigung.
      • Eindeutige Informationen zu der CA, die das Zertifikat ausgestellt hat.

Die Antwort für eine OCSP Anfrage kann für jedes abgefragte Zertifikat folgenden Status haben:

  • good
    Die Antwort bedeutet, dass keine Sperrinformationen über das Zertifikat vorliegen.
  • revoked
    Das Zertifikat wurde gesperrt.
  • unknown
    Es liegen keine Informationen über das Zertifikat vor.

Zertifikate des OCSP-Responders

Es wird empfohlen, dass der Response signiert ist. Hierbei handelt es sich primär um eine Sicherheitsfunktion, die verhindern soll, dass gefälschte Sperrinformationen verbreitet werden. Für diese Signatur wird ein Zertifikat benötigt. Bei dem Zertifikat kann entweder das CA Zertifikat oder ein von der CA signiertes spezielles Zertifikat verwendet werden, das ausschließlich für OCSP Signatur eingesetzt werden kann.

Der Einsatz von Signaturen für die Sperrstatus-Validierung beinhaltet ein theoretisches Problem. Würde die Signatur des OCSP-Responses zu einer Sperrstatus-Prüfung führen, dann bestände ein Risiko für die Validierung. Es könnte sein, dass wegen einer fehlgeschlagenen Sperrstatusprüfung des Responder Zertifikates, der Status eines Endbenutzerzertifikates als ungültig bewertet wird. Um dies zu umgehen ermöglicht OCSP den Einsatz von speziellen OCSP Signing Zertifikaten mit kurzer Gültigkeitsdauer, für die keine Sperrlisten-Prüfung stattfindet. Entsprechend Zertifikate müssen die Erweiterung id-kp-OCSPSigning in den erweiterten Attributen des Zertifikates haben.

Woher bezieht der OCSP-Responder die Status-Informationen?

Der OCSP-Responder kann entweder Informationen direkt von der CA beziehen oder er verwendet Sperrlisten als Grundlage für eine Validierung. Bei der Verwendung von Sperrlisten, kann der OCSP-Responder allerdings nur Informationen zum Sperrstatus geben und keine Informationen, ob ein Zertifikat gültig ist. Diese Information würde ein Zugriff auf die Datenbank erfordern.
Ein Vorteil an der Verwendung von Sperrlisten ist allerdings, dass ein OCSP-Responder für mehrere CAs verwendet werden kann.