Wie der Iran mit Hilfe einer niederländischen Firma GMAIL abhörte

Die in Holland ansässige Firma Diginotar hat der iranischen Regierung offenbar zu einem SSL-Zertifikat verholfen, mit dem verschlüsselte SSL-Verbindungen zu Gmail abgehört werden konnten. (zuletzt in dieser Reihe: Wie Bahrain bei der Überwachung auf deutsche Wertarbeit setzt und Was ist da in Tunesien los?)

Die Herausforderung bei verschlüsselten Verbindungen ist, dass sichergestellt werden muss, dass man nicht nur verschlüsselt, sondern auch so verschlüsselt, dass niemand anderes mithören kann. Mithören könnte ja zum Beispiel ein man-in-the-middle-Angreifer, indem er sich zwischen die beiden kommunizierenden Rechner (Client & Server) klinkt, eine verschlüsselte Verbindung zum Nutzer mit einem eigenen Zertifikat aufbaut, diese abhört, und dann erst mit dem richtigen Zertifikat verschlüsselt an den richtigen Server weiterleitet. Um das zu verhindern, sollen die zur Verschlüsselung genutzten Zertifikate immer von einer vertrauenswürdigen Instanz signiert sein.

Einem üblichen Browser wie Firefox werden deshalb eine ganze Reihe an root-CAs mitgeliefert, denen standardmäßig vertraut wird. Wenn ein Zertifikat von einer Instanz signiert ist, deren CA nicht um Browser (per default oder nachträglich) installiert ist, kommt die altbekannte Warnmeldung „Dieser Verbindung wird nicht vertraut“ – Der Nutzer muss das Zertifikat dann selbst prüfen und ihm quasi einmal das Vertrauen aussprechen. Die gleiche (oder bei manchen Browsern sehr ähnliche) Warnung bekommt ihr, wenn ein mittelloser Hacker euch zum Ziel einer man-in-the-middle-Attacke auserwählt hat, aber nicht im Besitz eines signierten Zertifikats ist.

Die Firmen im Besitz der standardmäßig mitgelieferten CAs verdienen also gutes Geld, weil sie der einzige Weg sind, einem DAU die vermeintlich sichere Nutzung der Seite ohne unverständliche Fehlermeldungen zu ermöglichen. Noch mehr Geld aber können sie natürlich damit verdienen, bösen Menschen Zertifikate für Domains auszustellen, die sie gar nicht besitzen.

So beispielsweise der iranischen Regierung, wenn diese gerne GMAIL-Verbindungen ihrer Bürger abhören möchte. Mit einem eigenen signierten Zertifikat (zu dem sie dann auch den private key hat), könnte sie automatisiert das Gmail-Zertifikat on the fly gegen ihr (signiertes) gefälschtes tauschen, ohne dass die meisten Browser sich beklagen. Das Zertifikat ist ja von einer vertrauenswürdigen Instanz signiert. Und genau das ist jetzt über 5 Wochen passiert.

[Update] Diginotar erklärt, sie wären gehackt worden – auch nicht besser! Dass sie das Zertifikat gegen Bezahlung erstellt haben ist immer eine Möglichkeit, aber natürlich auch eine möglicherweise ungeheuerliche Unterstellung. Das Problem ist, dass jede einzelne dieser vielen CAs, von denen man selbst keine bis wenige kennt, geschweige denn ihre Vertrauenswürdigkeit oder die Sicherheit ihres Systems beurteilen zu kann. [/Update]

Dass dieses Modell irgendwann mal schief gehen muss, ist offensichtlich, vor allem wenn man sich die Anzahl der default-CAs in Firefox anschaut, oder einfach mal einen Blick auf die Firmen wirft, die da überall ihre Finger im Spiel haben. Deshalb gibt es Ansätze wie CAcert, die das Signieren kostenlos, als Community und transparent gestalten. Viel mehr Vertrauen hat man dadurch aber natürlich auch nicht unbedingt verdient.

Deshalb ist es interessanter zu schauen, wie Zertifikat-Manipulationen herauskommen: Indem Nutzer sich die Zertifikate anschauen und vergleichen. Und zwar mit Personen, denen sie vertrauen. Die einzig sicherere Konsequenz scheint also zu sein, sich von den großen zentralen SSL-CAs, die viel Macht in sich versammeln (ein paar Hundert Firmen wachen quasi über ca. 80% des „sicheren“ Web-Traffics) zu trennen, und wie ähnlich wie beim GPG web of trust vorzugehen: Man vertraut Menschen. Das würde aber eine Menge an Fingerprint-Vergleichen auf sicheren Wegen mit Personen denen man vertraut, und eine Menge Warnmeldungen beinhalten. Wir können also davon ausgehen, dass sich das nicht unbedingt durchsetzen wird, denn Bequemlichkeit ist den meisten Menschen leider weitaus wichtiger als Sicherheit.

Wer es aber mal ausprobieren möchte, löscht einfach mal alle CA aus seinem Browser und nimmt nur jene wieder auf, denen er vertraut. Auf jeden Fall aber sollte man wohl Diginotar rauswerfen. Wie das geht, ist hier erklärt.

Wir lernen: In Zeiten, in denen sich HTTPS noch immer nicht ganz durchgesetzt hat, können wir es uns eigentlich schon wieder von der Backe putzen. Genau, wie es uns schon erklärt wird, seit es HTTPS gibt.

29 Ergänzungen

  1. Ich sage schon die ganze Zeit, dass SSL broken beyond repair ist. Also, nicht die Technologie, sondern die Trustketten und alles, was mit den Zertifikaten zu tun hat.

    1. SSL ist nicht broken, es ist unverstanden (wie der Artikel, die Presse und die Kommentare zeigen). Die derzeitige Situation ist, die Browser sind durch Dritte vertrauensvoll vorkonfiguriert bzw. deren Zertifikat-Storages sind von vornherin auf vertrauensvoll eingestellt.

      Jede Voreinstellung in der Root-CA-Zertifikate per default als Vertrauenswürdig eingestuft weden ist nachteilig, bevormundend oder defekt weil damit Vertrauen an viele Stellen delegiert wird, die nicht zwangsläufig vertrauensvoll sind oder kompromittiert werden können, in diesem Fall DigiNotar bzw. Vasco.

      Es ist völlig unrelevant, wer nun dieses Zertifikat erstellt hat, er war auf jeden Fall nicht besonders intelligent. Wenn er in der Lage ist MITM durchzuführen oder Endpunkt-Addressen zu manipulieren, ist der Aufwand selbst eine CA zu implementieren und entsprechende Zertifikate zu erstellen marginal, die Wahrscheinlichkeit entdeckt zu werden ist wesentlich geringer wenn man keine dritte Instanz hinzuzieht.

      Derzeit delegiert man sein Vertrauen durch seinen Browser z.B. an die Mozilla Foundation, Google, MicroSoft oder wem auch immer (Opera, Apple usw. usf.).

      Dein Browserhersteller delegiert anschliessend weiter an die jeweiligen präferierten CAs, nur deshalb sind solche Angriffe möglich, siehe auch: https://bugzilla.mozilla.org/show_bug.cgi?id=647959 – ich halte Honest Achmed für ähnlich vertrauensvoll wie Verisign oder Thawte, niemand kann objektiv für jemand anderen beurteilen welche Zertifikatsstelle vertrauenswürdig ist oder nicht – das kann man nur selbst.

      Da hilft auch CAcert nicht. Keine Organisation kann bzw. sollte das für Dich tun.

      Solange man nicht selbst Zertifikate prüft und anschließend selbst in den Browser importiert, ist man in Sachen Krypto und bei MITM immer angeschmiert – soll heissen man kann auf SSL verzichten, wenn man nicht selbst prüft – das wäre dann der Status Quo.

      Wenn man schon dabei ist selbst zu prüfen, oder damit anfängt, kann man auch gleich den Mittelsmann, die Zertifizierungsstelle (CA), eliminieren und selbstzertifizierte Zertifikate verwenden.

      D.h. das Vertrauensverhältnis besteht dann zwischen zwei Parteien z.B. Netzpolitik, der Netzpolitik CA und dem Netzpolitik-Leser (Dir).

      Anschliessend kann man sich auch selbst Zertifikate ausstellen und sicher mit anderen Menschen kommunizieren.

      Natürlich kann man das auch alles wie bisher an Zertifizierungsstellen oder Browserhersteller delegieren und behaupten es würde nicht funktionieren oder nur solange funktionieren bis eine CA kompromittiert wird.

      Es ist aber wesentlich sinnvoller sich selbst mit Krypto auseinander zusetzen und es für sich selbst besser zu machen, anstatt zu inisistieren SSL wäre defekt oder einer CA zu attestieren, sie wäre (nicht) vertrauensvoll – es löst das Problem nicht.

      Linus man kann nicht „onthefly“ ein Zertifikat austauschen, sondern man kann die SSL-bedingte sichere Sitzungs-Schlüsselübertragung zwischen Webserver und Browser kompromittieren, ein SSL-Relay erstellen und damit die sichere Ende-zu-Ende Verschlüsselung aufheben.

      Lasst Euch bitte nochmal SSL/TLS erklären, bevor Ihr einem unverstandenem Verfahren attestiert es wäre defekt, unbrauchbar oder nicht mehr zeitgemäss.

  2. Gerade die Anleitung zum Zertifikatsrausschmiss mit Iceweasel 5 probiert, unter Debian wheezy/sid. Interessant: Die Authority wird mit dem „Delete / Distrust“-Button aus der Liste entfernt; öffne ich den Einstellungsdialog erneut, ist sie zwar wieder da, beim Klick auf „Edit Trust“ zeigt sich aber: DigiNotar wird nicht mehr vertraut.

    Bei Chromium 13 sind die relevanten Einstellungen übrigens unter „Edit → Preferences → Under the Hood → Manage Certificates → Authorities“ zugänglich. Dort DigiNotar anwählen und „Edit …“ klicken, der „Delete“-Button ist ausgegraut.

  3. Na dann hoffen wir mal das Zertifikate von Diginotar in Zukunft nicht mehr als „gültig“ dastehen, sondern erst bestätigt werden müssen, wie bei unbekannten Quellen.

  4. Eine halbwegs sichere Mail ist eine PGP usw. verschlüsselte Mail, wenn man nicht gerade Staatsfeind # 1 ist. Ich hab HTTPS noch nie vertraut.

  5. Ich finde es reichlich dreist von Linus, in diesem Text kaum versteckt einer bisher einigermaßen seriösen CA pauschal zu unterstellen, dass sie absichtlich falsche Zertifikate ausstellt, um viel Geld zu machen mit bösen Staaten. (Der Vertrauensverlust sowie die Probleme mit jetzt nicht mehr vertrauenswürdigen Zertifikaten zum Beispiel in den Niederlanden wiegt sehr schwer, das können ein paar 1000 € aus dem Iran nicht rechtfertigen.) Es ist doch eher von Dummheit (ungenaue Prüfung der Daten) oder einem Hack/Angriff von Innen auszugehen — und die Pressemitteilung nennt ja auch einen Hack.

    Linus‘ Verschwörungstheorien passen auf Fefes Blog, nicht ab auf netzpolitik.org!

      1. Stringente Argumentation, mit Quellen belegte Fakten — danke, Linus, Deine Diskussionskultur sollte ein Vorbild für uns alle sein.

  6. Das die Diginotar Leuts dumm und/oder unvorsichtig waren glaube ich sofort, dass sie aber gegen Geld absichtlich ein ein Cert an nicht berechtigte ausgegeben haben (wie Linus‘ Eingangsartikel anzudeuten scheint) glaube ich keine Sekunde. So bescheuert ist keiner, sein gesamtes Geschäft zu riskieren. So Theorien gehören für mich in die selbe Ecke wie Chemtrail, wenn ich das mal so deutlich sagen darf.

  7. Salve,

    kein Hinweis auf die Quelle, kein Hinweis auf igendeine Art von Beweis …

    Klingt ja glaubwürdig und technisch auch möglich, aber etwas mehr Butter wollen die Fische schon haben.

    Einfach: Die Firma hat es zugegeben, wenn auch als Fehler dargestellt.

    Vasco Data Security International Inc. (VDSI, $7.05, -$0.39, -5.24%) said a security incident at its DigiNotar unit resulted in the fraudulent issuance of public key certificate requests for a number of domains, including Google.com. The certificates are used to encrypt information and provide authentication online.
    http://online.wsj.com/article/BT-CO-20110830-709520.html

    Gruss

    Christoph

    1. Hättest Du den Artikel gelesen, wüsstest Du, dass das Zertifikat von Facebook stammt und Syrien eben nicht Facebook (jedenfalls mit diesem Zertifikat) abgehört hat.

Dieser Artikel ist älter als ein Jahr, daher sind die Ergänzungen geschlossen.