Certificate Pinning / CA-Pinning / Certification Authority Authorization (CAA)
Ein zentraler Aspekt der Sicherheit bei der Verwendung von Zertifikaten, zum Beispiel mit TLS, ist sicherzustellen, dass nur autorisierte Zertifizierungsstellen (Certification Authority, kurz CA) diese Zertifikate ausstellen. Hierfür existiert zum Beispiel das Konzept der Certification Authority Authorization (CAA).
Certification Authority Authorization (CAA) ist ein Verfahren, beim dem der Domain-Inhaber im DNS festlegen kann, welche Zertifizierungsstellen (Certification Authority, CA) für seine Domain Zertifikate ausstellen dürfen und für die Validierung zuständig sind.
Das allgemein als CA-Pinning bezeichnete Verfahren trägt offiziell die Bezeichnung Certification Authority Authorization. Gelegentlich findet man auch die Bezeichnungen Certificate Pinning und SSL-Pinning.
Beim CA-Pinning wird ein Zertifikat nicht nur an einen bestimmten Host, sondern auch an eine bestimmte Zertifizierungsstelle gebunden.
Ein Vorteil von CAA ist, dass es im Gegensatz zu anderen Sicherheitsmechanismen einfacher zu implementieren ist. In der Vergangenheit gab es Verfahren, die eine sorgfältige Konfiguration durch den Betreiber erforderte. Bei Fehlern konnten im schlimmsten Fall Server oder Webseiten nicht mehr erreicht werden. CAA ist nur ein Resource Record, der Text enthält und über DNS abgerufen werden kann. Fehler können leichter korrigiert werden.
Warum CA-Pinning?
Das ursprüngliche CA-Modell von SSL bzw. TLS erlaubt es, dass jede Zertifizierungsstelle für jeden Host- oder Domain-Namen ein Zertifikat ausstellen darf. Das bedeutet, dass es mehrere Zertifikate von unterschiedlichen Zertifizierungsstellen für den gleichen Host- bzw. Domain-Namen geben kann. Beispielsweise kann sich ein Angreifer für einen Man-in-the-Middle-Angriff ein gültiges Zertifikat ausstellen lassen, obwohl er nicht der Inhaber der Domain oder des Hosts ist. Der Angreifer könnte sich dann mit dem "gefälschten" Zertifikat als Server ausgeben, der er gar nicht ist (Identitätsdiebstahl) und sogar eine verschlüsselte Verbindung zwischen Client und Server übernehmen.
Wenn jetzt ein Zertifikat eines bestimmten Hosts an eine bestimmte Zertifizierungsstelle gebunden ist, dann fällt bei der Zertifikatsprüfung auf, dass das Zertifikat von einer fremden Zertifizierungsstelle unterschrieben ist. In dem Fall muss das Zertifikat als ungültig angesehen werden.
Funktionsweise von CAA
Mit einem CAA-Eintrag im DNS kann ein Domain-Administrator festlegen, welche CAs für eine Domain Zertifikate ausstellen dürfen. Das bedeutet, dass eine Zertifizierungsstelle nur dann ein Zertifikat ausstellen darf, wenn sie in den CAA-Einträgen der betreffenden Domain aufgeführt ist. Das muss die Zertifizierungsstelle vor dem Ausstellen eines Zertifikats prüfen.
Die CAA-Einträge werden im DNS der Domain gespeichert. Ein Beispiel für einen CAA-Eintrag könnte wie folgt aussehen:
example.com. IN CAA 0 issue "letsencrypt.org"
Dieser Eintrag besagt, dass nur Let’s Encrypt berechtigt ist, Zertifikate für die Domain example.com auszustellen. Wenn eine nicht autorisierte Zertifizierungsstelle einen Zertifikatsantrag für diese Domain erhält, muss sie diesen ablehnen.
Um die CAA-Einträge einer Domain zu überprüfen, können Administratoren Tools wie dig oder host verwenden:
host -t CAA google.com
Einschränkungen von CAA
Grundsätzlich soll CAA die Sicherheit von Zertifikaten erhöhen, in dem es das Risiko verringert, dass unbefugte Zertifizierungsstellen Zertifikate ausstellen, die für Phishing oder andere böswillige Aktivitäten verwendet werden könnten. Nur was ist, wenn eine Zertifizierungsstelle sich nicht daran hält?
Wenn eine Zertifizierungsstelle die CAA-Vorgaben ignoriert und dennoch ein Zertifikat ausstellt, hat dies zunächst keine direkten Konsequenzen. Browser und andere Anwendungen können das Zertifikat akzeptieren. Denkbar wäre es aber, dass eine Anwendung die CAA-Vorgabe prüft und Zertifikate von anderen Zertifizierungsstellen ablehnt.
Eine Zertifizierungsstelle, die ernst genommen werden will, wird sich selbstverständlich an die CAA-Vorgaben halten. Wenn nicht, outet sie sich damit als unseriös. Niemand wird mit einer solchen Zertifizierungsstelle zusammenarbeiten wollen. Es besteht dabei die Gefahr, dass alle anderen Zertifikate dieser Zertifizierungsstelle als nicht vertrauenswürdig gelten. Damit wäre der Betrieb der Zertifizierungsstelle in Gefahr.
Erweiterung durch Certificate Transparency (CT)
Da CAA als Sicherheitsmaßnahme nicht ausreicht, kommt noch ein weiteres Konzept zur Anwendung: Certificate Transparency, kurz CT. Mit CT werden CAs verpflichtet, alle ausgestellten Zertifikate in ein öffentliches, revisionssicheres Log zu protokollieren. Ein solches Log ermöglicht es Domain-Eigentümern, unbefugte Zertifikate zu erkennen.
Der Chrome-Browser akzeptiert nur noch Zertifikate, die in einem CT-Log protokolliert wurden. Weil die CT-Logs praktisch alle ausgestellten Zertifikate umfassen, werden fälschlich ausgestellte oder gefälschte Zertifikate vergleichsweise leicht entdeckt.
Wie sicher ist Certificate Pinning bzw. Certification Authority Authorization?
Certificate Pinning, CA-Pinning bzw. Certification Authority Authorization ist dafür gedacht, um manipulierte Zertifikate zu erkennen. Es ersetzt nicht die Zertifikats-Validierung von TLS, sondern ist ein zusätzlicher Teil der Validierung, um die Vertrauenswürdigkeit eines Zertifikats zu erhöhen.
Der Knackpunkt von CA-Pinning ist die Implementierung auf der Client-Seite. CA-Pinning wird abgeschaltet, wenn man ein Root-Zertifikat im lokalen Zertifikatsspeicher hat.
Warum ist das so? Wegen regulatorischen Vorschriften (Compliance).
Beispiel: Banken und Versicherungen müssen den Datenverkehr ihrer Mitarbeiter mitprotokollieren können, damit man nachträglich Insider-Trading nachweisen kann. Dazu wird den Mitarbeitern ein Root-Zertifikat auf den PC installiert. Damit ist es möglich, einen Man-in-the-Middle in die Kommunikation einzuschleusen, die durch CA-Pinning erkannt wird und deshalb der Browser jedesmal meckern würde. Um das zu vermeiden wird bei einem installiertem Root-Zertifikat CA-Pinning von den Browsern in der Regel abgeschaltet.
Was sind die Konsequenzen? Der Inhaber des Root-Zertifikats kann jegliche Kommunikation ausspähen.
Und das ist tatsächlich auch passiert. Facebook hat eine VPN-App angeboten, die ein Root-Zertifikat installiert hat, und damit den Datenverkehr seiner Konkurrenten mitgeschrieben und vermutlich analysiert. Dieser Vorgang wurde in einem Gerichtsverfahren festgestellt.
Übersicht: SSL / TLS
- SSL - Secure Socket Layer
- TLS - Transport Layer Security
- Schwachstellen von SSL/TLS
- HTTPS / HTTP Secure
- HSTS - HTTP Strict Transport Security
- HPKP - HTTP Public Key Pinning
- OCSP - Online Certificate Status Protocol
- PFS - Perfect Forward Secrecy
- CT - Certificate Transparency
- DANE - DNS-based Authentication of Named Entities
- Analyse von SSL/TLS-Verbindungen
Weitere verwandte Themen:
Lernen mit Elektronik-Kompendium.de
Noch Fragen?
Bewertung und individuelles Feedback erhalten
Aussprache von englischen Fachbegriffen
Netzwerktechnik-Fibel
Alles was du über Netzwerke wissen musst.
Die Netzwerktechnik-Fibel ist ein Buch über die Grundlagen der Netzwerktechnik, Übertragungstechnik, TCP/IP, Dienste, Anwendungen und Netzwerk-Sicherheit.
Netzwerktechnik-Fibel
Alles was du über Netzwerke wissen musst.
Die Netzwerktechnik-Fibel ist ein Buch über die Grundlagen der Netzwerktechnik, Übertragungstechnik, TCP/IP, Dienste, Anwendungen und Netzwerk-Sicherheit.
Artikel-Sammlungen zum Thema Netzwerktechnik
Alles was du über Netzwerktechnik wissen solltest.