Aaron Fischer Ingenieur, Vater, Heimwerker, Problemlöser

12 August, 2013

Die Zertifikatslüge

Netzkultur

Seit der NSA-Geschichte habe ich das Vertrauen in die SSL CAs (Certified Authorities) komplett verloren. Ich gehe jede Wette ein, dass VeriSign, Equifax, GeoTrust usw. schon längst ihre Root-Zertifikate herausgegeben haben. Kann sich noch jemand an DigiNotar erinnern? So unwarscheinlich ist es nicht, dass jemand an das Root Zertifikat kommt. Erst Recht nicht, wenn dahinter eine Regierung/Organisation und viel Geld steht.

Für diejenigen, die sich damit noch nicht beschäftigt haben, hier ein kleiner Einblick in die Machenschaften von SSL-Zertifikaten:

Wenn man eine Webseite mit dem Browser öffnet und ein Schloss, ein grünes Feld oder ein vertrauenswürdig ausschauendes Schild in der Adressleiste erscheint, ist für die meisten klar: Jetzt ist die Verbindung sicher, keiner kann mein Passwort mitlesen. Manchmal kommt es vor, dass folgende Meldung erscheint:

Browser trust fail

Anstelle der Webseite wird eine bedrohliche Warnung angezeigt, in der die Rede von Hackern, falscher Identität und Vertrauen ist. Das ist für die meisten unverständlich. Warum wird der einen Webseite vertraut, aber der anderen nicht? Hat die Webseite womöglich einen Virus der auch mein iPad befallen kann?

Natürlich nicht. Dieser Mechanismus sorgt dafür, dass sich nicht jeder als google.de ausgeben kann. Es gibt dem Browser/User die Sicherheit, dass sich unter google.de auch wirklich google.de verbirgt und nicht ein gehackter Server in Russland.

Damit dieses System funktioniert, muss der Browser oder das Betriebssystem entscheiden können, welchen Webseiten er traut und welchen nicht. Den kryptographischen Teil ausgeschlossen (TLS), ist das Prinzip recht simpel: Das Betriebssystem bzw. der Browser bringt eine Reihe von Zertifikaten mit sich, die vom Browserhersteller (Mozilla, Google, Apple, ...) bzw. vom Betriebssystemhersteller (Microsoft, Apple, Debian, ...) als vertrauenswürdig auserwählt wurden. Welche das sind, kann man einsehen:

Browser Trust

Alle Zertifikate in dieser Liste traut der Browser/Betriebssystem von Grund auf. Aber nicht nur diesen, sondern allen anderen die von einem in dieser Liste signiert wurden. Traut also Equifax Google und Google www.google.de, wird www.google.de automatisch auch vertraut (Web of Trust).

Google

Ähnlich hier auf meiner Seite. CACert traut mir. Ist das Root Zertifikat von CACert in deinem Browser als vertrauenswürdig eingebunden, traut dein Browser automatisch meiner Seite.

CACert

Um dieses Vertrauensverhältnis (Zertifikatskette) herzustellen, muss die jeweils darüberliegende Instanz der darunterliegenden ihr Vertrauen ausprechen. In meinem Fall hat also CACert meiner Domain aaron-fischer.net das Vertrauen gegeben. Für diesen Service wird von den meisten CAs (Zertifizierungsstellen) Geld verlangt (100 EUR oder 20.000 EUR im Jahr, je nach Einstellung(!)).

Was passiert nun aber, wenn einer der vielen Zertifizierungstellen bestochen/gezwungen/beraubt wird? Angenommen, Equifax gibt ihren privaten Schlüssel weiter, so dass jemand anderes außer Equifax Zertifikate ausstellen oder ungültig machen kann. So könnte dieser sich als google.de ausgeben und keiner würde es merken, da der Browser weiterhin Equifax vertraut. Und die verschlüsselte SSL-Verbindung würde zwischen deinem Browser und einem beliebigen anderen Server (der sich als google.de ausgibt) stattfinden. Zugegeben, es müssten ein paar Faktoren zusammentreffen (DNS-Einstellungen, ausreichend Hardware, sauber konfigurierter Reverse Proxy), aber für eine NSA sollte das kein Problem darstellen.

Also: Der Warnhinweis im Browser hat nichts damit zu tun, welche Inhalte sich auf der Webseite befinden. Er sagt nur aus, dass dein Browser der Webseite momentan nicht vertraut. Vertraut wird Equifax und GoDaddy (bzw. Microsoft, Google und Mozilla) statt realen Personen die man wirklich kennt und zu denen man echtes Vertrauen hat. Und die CA's sind natürlich wenig bestrebt, an der jetzigen Situation etwas zu ändern -- sie verdienen schließlich eine Menge Geld mit dem Verteilen von Vertrauen.

Was also tun? Eine Kombination aus Monkeysphere (OpenGPG für den Browser) und keybase.io (OpenGPG für jedermann; wer noch eine Invitation braucht, bitte melden, hab noch ein paar!), doch hier müssen die Browserhersteller den ersten Schritt machen. Ich bin gespannt wer sich hier als erstes traut :)