Eine Zertifikatsperrliste (englisch certificate revocation list, CRL) ist eine Liste, die die Ungültigkeit von Zertifikaten beschreibt. Sie ermöglicht es, festzustellen, ob ein Zertifikat gesperrt oder widerrufen wurde und warum.
Zertifikate werden gesperrt oder widerrufen, wenn deren zugehörige Schlüssel z. B. nicht mehr sicher sind, weil sie in falsche Hände geraten sind oder „geknackt“ wurden – in solchen Fällen muss das Zertifikat noch vor dem eigentlichen Ablaufdatum gesperrt werden, damit der Schlüssel nicht weiter verwendet wird. Ein anderer Grund für die Sperrung oder den Widerruf eines Zertifikats kann ein falscher Zertifikatsinhalt sein, beispielsweise im Fall einer Namensänderung. Zertifikatssperrlisten sind daher ein wichtiger Teil der Public Key Infrastructure.
Eine Sperre (englisch hold) ist temporär und kann aufgehoben werden (z. B. wenn man nicht sicher ist, ob der private Schlüssel verloren/kompromittiert ist, man aber sichergehen will), ein Widerruf (englisch revocation) ist endgültig.
Erklärt eine Zertifizierungsstelle (engl. certificate authority, CA) ein Zertifikat (oder mehrere) für ungültig, trägt es die Seriennummer dieses Zertifikats in die Certificate Revocation List ein. Diese wird immer dann abgefragt, wenn ein Programm bei der Zertifizierungsstelle anfragt, ob ein bestimmtes Zertifikat gültig ist (was vor jeder Verwendung des Schlüssels geschehen sollte).
Die Sperrliste enthält einen Zeitstempel und ist zum Schutz vor Manipulation selbst durch eine digitale Signatur gesichert. Somit kann eine Software, die diese Sperrliste auswertet, prüfen, ob die Integrität der Sperrliste gewährleistet ist und ob sie von einem vertrauenswürdigen Herausgeber stammt.
Zu der Sperrliste gehört auch ein Gültigkeitszeitraum, außerhalb dessen die Informationen in der Liste eben nicht mehr als gültig betrachtet werden sollen. Eine Anwendung soll, nachdem der Gültigkeitszeitraum überschritten wurde, eine aktuelle Fassung dieser Liste von der ausstellenden CA herunterladen.
Solche Sperrlisten sind theoretisch recht einfach zu erstellen und zu verwalten, werden jedoch in der Praxis bislang selten verwendet. Das Problem ist, dass ein Programm vor Verwendung eines Schlüssels immer bei der Zertifizierungsstelle rückfragen muss – was voraussetzt, dass eine Internetverbindung besteht. Wenn keine Verbindung besteht, kann das Zertifikat nicht geprüft werden, und dann ist es möglich, dass ein Schlüssel benutzt wird, der bereits Unbefugten bekannt ist.
Struktur einer X.509 v2 CRL
- Version
- Erzeuger der CRL
- Algorithmus für die Signatur
- Updatezeitpunkt der Ausstellung dieser CRL
- Updatezeitpunkt der Ausstellung der nächsten CRL
- Liste der zurückgezogenen Zertifikate (Seriennummer und Zeitpunkt des Widerrufs)
- Erweiterungen
Probleme
Sperrlisten sind ihrer Definition nach Negativlisten und können somit einem Benutzer keine Auskunft darüber geben, ob ein Zertifikat gültig ist. Ebenso wenig können sie Auskunft darüber geben, ob ein Zertifikat jemals von einer Zertifizierungsstelle ausgestellt wurde.
Außerdem treffen Sperrlisten Aussagen über die Vergangenheit; es kann anhand einer solchen Liste nicht geprüft werden, ob in einem bestimmten Moment ein Zertifikat zurückgerufen ist.
Ein neueres Protokoll zur Abfrage von Zertifikatsgültigkeiten ist das Online Certificate Status Protocol (OCSP), das entwickelt wurde, um Probleme der Sperrlisten zu beheben. OCSP-Implementationen setzen jedoch oftmals auf Sperrlisten auf, so dass hier die Probleme lediglich verlagert wurden.
Normen und Standards
Die „Internet X.509 Public Key Infrastructure“ und deren Zertifikatsperrliste sind über RFC standardisiert. Es gibt einen Hauptpfad (zur aktuellen RFC 5280[1]) und Ergänzungen:
- RFC – Certificate and CRL Profile. 1999 (veraltet, englisch).
- RFC – Certificate and Certificate Revocation List (CRL) Profile. 2002 (veraltet, englisch).
- RFC – Certificate and Certificate Revocation List (CRL) Profile. Mai 2008 (englisch).
Literatur
- Ronald L. Rivest: Can We Eliminate Revocation Lists? (PDF; 122 kB; englisch).