Wie jeder andere Mensch in der IT-Branche werde ich von Freunden und Bekannten hin und wieder mal nach dem Thema IT-Sicherheit befragt. Der Hintergrund ist da meistens, dass der interessierte Freund oder Bekannte Facebook, Whatsapp als ein eher unsicheres Medium einstuft und sich im Dschungel der „ABSOLUT 100% SICHER, PATENTIERTER NSA-SCHUTZ“ Messenger nicht mehr zurecht findet.
Normalerweise antworte ich da mit einer Gegenfrage: „Vor wem willst Du Dich eigentlich schützen?“ Man sollte schließlich seinen Gegner kennen, aber es gibt auch ein paar Maßnahmen, die man ergreifen kann, um die eigene IT-Security ein bisschen zu verbessern. In diesem Beitrag geht es nun darum, was so ein sicherer Messenger alles können muss, welche Messenger diese Kriterien erfüllen und auf welche Probleme man dabei stößt.
Worauf kommt es bei sicheren Messengern an?
Die meisten „sicheren“ Messenger kann man vergessen, aber es gibt auch ein paar gute Messenger. Um diese besser zu erkennen, hat die Electronic Frountier Found Foundation (EFF) hierfür eine Secure Messenger Scorecard entwickelt (https://www.eff.org/de/node/82654), bei welcher verschiedene Messenger in 7 Kategorien geprüft werden. Die Liste wird auch hin und wieder aktualisiert, es lohnt sich daher mal wieder rein zu schauen. Die Kategorien sind:
- Verschlüsselte Übertragung
- Ende-zu-Ende-Verschlüsselung
- Verifizierbarkeit von Kontakten
- Sicherheit der vergangenen Kommunikation bei verlorenem Schlüssel
- Quellcode einsehbar
- Dokumentation des IT-Security-Designs
- Hat Quellcode-Audit stattgefunden
Alle (!) Kriterien gehören zu einem sicheren Messenger.
Man kann schließlich ein Haus nicht als „einbruchssicher“ verkaufen, wenn die Sicherheitsmaßnahmen umgangen werden können. Über die „Sicherheit der vergangenen Kommunikation bei verlorenem Schlüssel“ lässt sich diskutieren, da dies beinhaltet, dass keine entschlüsselbaren Nachrichten auf den Servern gespeichert werden, und das hat 2 Folgen: Nachrichten können nicht mehr an Offline-Kontakte übertragen werden und sie sind endgültig weg, wenn das Smartphone mit den Nachrichten verloren geht.
Im Gegenzug bedeuten diese Kriterien aber auch nicht, dass Messenger dadurch automatisch „sicher“ sind – es sind nur Grundvoraussetzungen dafür. Meines Erachtens fehlen hier auch noch 3 Kategorien, nämlich:
- Metadaten (alles rund um den Netzwerkverkehr; kann man nachvollziehen, wer wann mit wem wie oft und wie lange kommuniziert hat?)
- Zuverlässigkeit in der Vergangenheit (nützlich um das IT-Security Know-How einschätzen zu können)
- Einfachheit des Einsatzes der Verschlüsselung (wird die Verschlüsselung immer und überall eingesetzt oder muss der Benutzer selber dafür sorgen – warum mir das konkret wichtig ist, berichte ich weiter unten)
Und komplett unabhängig vom Messenger sollte man sich auch über die Sicherheit der verwendeten Plattform (Windows, Mac OS X, Linux, iOS, Android etc.) Gedanken machen, aber dazu ein ander mal.
Die 7 sicheren Messenger
In der Secure Messenger Scorecard der EFF gibt es Stand heute (07.06.2016) 7 Messenger bzw. Messenger-Konstellationen, welche alle Kriterien erfüllen:
- ChatSecure + Orbot (https://chatsecure.org/)
- Pidgin mit OTR-Plugin unter Windows (https://www.pidgin.im/)
- Signal (https://whispersystems.org/)
- Silent Phone (https://www.silentcircle.com/products-and-solutions/software/)
- Silent Text (mittlerweile in Silent Phone intergriert)
- Telegram mit geheimen Chats (https://telegram.org/)
- TextSecure (Vorgänger von Signal)
Cryptocat war früher mal in der Liste und erfüllte alle Kriterien. Der Messenger wurde mit der Begründung entfernt, dass der Dienst temporär eingestellt wurde, mittlerweile steht er wieder zur Verfügung. Egal, Cryptocat ist ein wunderbares Beispiel für die Kategorie „Zuverlässigkeit in der Vergangenheit“: Der Hauptentwickler hatte damals hehre Ziele aber offensichtlich nur wenig Ahnung von der richtigen Implentierung, die Verschlüsselung des Messengers konnte deswegen umgangen werden (http://www.golem.de/news/unsicheres-cryptocat-das-ist-ein-desaster-1307-100233.html). Mittlerweile hat es Quellcode-Audits gegeben, die Fehler sind alle behoben worden und das Projekt galt zwischenzeitlich als Beispiel dafür, wie ein einfacher und sicherer Messenger aussehen kann. Es bleibt aber die Frage, ob das Projekt auch in Zukunft seinen Anspruch an einfache Verschlüsselung halten kann.
ChatSecure und Pidgin nutzen XMPP/Jabber (ein uraltes Chat-Protokoll, welches aber auch heute noch bspw. für den Facebook-Chat genutzt wird) und versehen dieses Protokoll mit Verschlüsselungstools, diese Messenger können dadurch aber auch untereinander komunizieren. Die anderen Messenger nutzen eigene Entwicklungen und sind jeweils auf den eigenen Messenger beschränkt. Die Basis ist für die Sicherheit sowieso nicht so relevant, die eigentlichen Problemstellen liegen heutzutage woanders.
Das Problem mit den Schlüsseln
Eines der Hauptprobleme ist der Schlüsselaustausch, denn die Schlüssel sind die Basis der ganzen IT-Sicherheit. Jeder kann einen Schlüssel erstellen und mit etwas Ahnung von der Thematik auch einen Schlüssel erstellen, welcher eine falsche Identität vorgibt. Der Schlüssel muss also nachprüfbar sein. Glücklicherweise geht das mit allen genannten Messengern, leider wird da aber viel zu wenig Wert darauf gelegt. Es gibt da grundsätzlich 3 Möglichkeiten, wie man diese Nachprüfbarkeit erreicht:
- Man verwendet eine zentrale Instanz, welche das übernimmt. So funktioniert das im World Wide Web meistens, ist aber anfällig für staatliche Eingriffe wie den National Security Letter in den USA. Damit können Staaten Unternehmen verpflichten, bestimmte falsche Identitäten auszustellen (und das ist leider auch schon häufiger vorgekommen). Außerdem können diese zentrale Instanzen gehackt werden, aber das muss ich hoffentlich niemanden mehr erklären.
- Man prüft die Daten nicht wirklich und sorgt eher dafür, dass systembedingt keine „falschen“ Schlüssel erstellt werden können (z.B. dadurch, dass diese über die eigene App erstellt werden). Sehr, sehr gefährlich, ist schon öfter mal schief gegangen.
- Der Benutzer überprüft die Schlüssel selbst und der Messenger weist auf nicht überprüfte Schlüssel hin. Am besten unterstützt der Messenger diesen Vorgang durch einfache Methoden wie das Einscannen eines QR-Codes. Die Überprüfung darf dabei aber nicht über den Weg erfolgen wie die Schlüsselübertragung, da die Gefahr besteht, dass dann die Überprüfung ebenfalls manipuliert wird.
Nur der dritte Weg ist tatsächlich sicher, die Messenger greifen dabei aber lieber auf Variante 2 zurück. Es wirkt einfach smarter und die Messenger warnen nicht ständig paranoid, außerdem kann der Benutzer den Schlüssel ja trotzdem noch zusätzlich manuell überprüfen. Aber wer macht das schon?
Diese Kategorie gewinnen ChatSecure und Pidgin für sich – beide melden, dass der Schlüssel des Gesprächspartners nicht überprüft wurde, allerdings nur mittels eines Icons. Ich würde mir hier eine prägnante gelbe oder rote Leiste wünschen, wenn der Schlüssel nicht überprüft wurde, sodass man später auch direkt merkt, wenn der Schlüssel (von Hackern, Geheimdiensten etc.) mal geändert wird – das ist aber heutzutage noch Wunschdenken.
Die anderen Messenger bieten zwar eine Möglichkeit, den Schlüssel manuell zu überprüfen, zeigen aber nicht an, wenn sich der Schlüssel ändert.
In jedem Fall ist die vergangene verschlüsselte Kommunikation sicher, bei spätere Hacks auf den Servern der Betreiber können die Nachrichten nach dem aktuellen Stand der Technik nicht mehr entschlüsselt werden.
Freizügigkeit bei den Kontakten
Ein anderes Problem stellt das Finden der Kontakte dar. Man könnte jetzt jeden Bekannten fragen, ob er einen bestimmten Messenger nutzt – oder man gleicht einfach die Kontaktliste mit der Benutzerliste auf den Servern des Anbieters ab. Abgleichen heißt in diesem Fall: Alle Telefonnummern werden an den Anbieter geschickt und der Anbieter schickt eine Liste mit Benutzern zurück. Habt Ihr Euch schonmal überlegt, ob es überhaupt klug ist in Zeiten der Totalüberwachung alle eigenen Kontakte über das Internet zu verschicken? Und das in regelmäßigen Abständen?
Zum Glück kann man die Kontaktendaten, anhand derer die Kontakte dann beim Server gefunden werden, zuvor „hashen“ (also quasi Einwegverschlüsseln): Der Anbieter und im Zweifelsfall auch alle Mitleser der Übertragung können mit diesen Kontaktdaten nichts anfangen, der Anbieter kann dennoch die Hashs den einzelnen Benutzern zuordnen. Open Whisper Systems (der Betreiber von Signal) hat über die Problematik des Kontaktfindens einen recht ausführlichen und verständlichen Blogbeitrag (leider auf Englisch) veröffentlicht: https://whispersystems.org/blog/contact-discovery/
Leider können mit einigem Aufwand Netzwerke aus den gehashten Kontaktdaten rekonstruiert werden.
Die Alternative dazu ist das Führen einer eigenen Kontaktliste, ähnlich wie man das von E-Mail-Adressen oder Telefonnummern kennt. Das hat sich leider in der Vergangenheit nur bedingt durchgesetzt.
Über das Für und Wider kann man lange diskutieren. Fakt ist, dass sich Messenger, bei denen Kontakte manuell eingetragen werden müssen, bis heute nicht wirklich durchgesetzt haben und die Messenger mit automatisierter Kontaktsuche (unter anderem Whatsapp) weiter auf dem Vormarsch sind.
Pidgin und ChatSecure setzen hier auf eine manuelle Kontaktlisten, die anderen Messenger verwenden einen gehashten Kontaktabgleich.
Metadaten
Und zuletzt noch: Metadaten. Das sind alle Daten, die während und über die Kommunikation anfallen, also IP-Adressen, Uhrzeit, Datenmenge, Frequenz, Namen, Adressen etc. sowie allen Daten, die sich direkt daraus schließen lassen wie Ort oder Anlass (und das natürlich jeweils auf Seiten des Senders und des Empfängers). Für sich genommen sind Metadaten vollkommen harmlos, aber wenn sie in einen Kontext gesetzt werden, erzählen sie auch kleinste Details. Die NSA benutzt Metadaten zum Berechnen des Bekanntenkreises und damit, wer alles überwacht wird. Netzpolitik.org hat mal dazu einen schönen Artikel aus den Niederlanden übersetzt, was nur eine Woche an Metadaten einer einzelnen Person über diese aussagen (https://netzpolitik.org/2014/metadaten-wie-dein-unschuldiges-smartphone-fast-dein-ganzes-leben-an-den-geheimdienst-uebermittelt/).
Metadaten sind also böse, wie vermeidet man diese? Ganz vermeiden kann man sie nicht, da sie elementar für die Kommunikation sind. Es gibt aber ein paar Strategien, wie man die Spuren im Internet verwischt:
- TOR (zur Verschleierung der eigenen IP-Adresse bis hin zum kompletten Datenverkehr)
- Dezentralisierung (sodass Metadaten nicht gehäuft auftreten)
- Verkürzen der Übertragungskette (um Punkte zum Abgreifen von Metadaten zu verringern)
TOR wird unter Android leider nur von ChatSecure unterstützt
Warum das die anderen Clients nicht unterstützen ist mir schleierhaft. Der Implementierungsaufwand für TOR hält sich wirklich in Grenzen. TOR lässt sich unter Android einfach über die App Orbot (https://play.google.com/store/apps/details?id=org.torproject.android&hl=de) installieren. Sofern man über ein gerootetes Android Smartphone verfügt, kann man eine Übertragung über TOR aber auch erzwingen, in meinem Test hatte keiner der Messenger damit Probleme. Unter Windows, Mac OS X und Linux kann TOR auch recht einfach benutzt werden, Besitzer eines iOS Gerätes können meines Wissens nach TOR (noch) nicht nutzen.
Dezentralisierung wird aktuell auch nur von ChatSecure und Pidgin (bzw. eigentlich das zugrundeliegende Chat-Protokoll) unterstützt, alle anderen Messenger setzen auf zentrale Strukturen, was natürlich technische Vorteile hat, aber für Hacker und Geheimdienste ein gefundenes Fressen ist.
Das Verkürzen der Übertragungskette und Dezentralisierung widersprechen sich ein wenig (das ist leider in der IT-Security häufiger so), da eine größere Dezentralisierung mehr oder weniger bedeutet, dass die Übertragungskette länger wird. Es gibt aber Möglichkeiten dem entgegenzuwirken, indem beispielsweise die Server nur als Vermittlungsstelle dienen und die Kommunikation dann nur zwischen den Messengern direkt läuft. IMHO wird das von keinem Messenger so praktiziert.
Und last but not least:
Wie einfach ist der Einsatz der Verschlüssselung?
Bei einigen Messengern wird nicht nur der Messenger genannt, sondern auch noch ein Zusatztool oder eine bestimmte Funktion. Die Sicherheitsmaßnahmen werden hier dann nicht durchgängig verwendet und im Zweifelsfall vom Benutzer gar nicht verwendet. Theoretisch kann ein potentieller Angreifer sogar eine verschlüsselte Kommunikation blockieren oder erschweren und so die Nutzer dazu bewegen, doch eine weniger sichere Variante zu verwenden.
Signal und Silent Phone (und Silent Text und TextSecure) sind in dieser Hinsicht vorbildlich und verschlüsseln durchgehend die komplette Übertragung.
In Telegram sind tatsächlich nur die geheimen Chats Ende-zu-Ende-verschlüsselt, alles andere wird auf den Telegram-Servern gespeichert und vermutlich (bei der Popularität von Telegram) bereits fleißig von den Geheimdiensten mitgelesen.
ChatSecure verschlüsselt zwar automatisch alle Nachrichten, aber nur wenn es die Gegenseite auch unterstützt. Bei Pidgin mit installiertem OTR-Plugin sieht das ähnlich aus. Man kann in den Einstellungen aber eine Verschlüsselung erzwingen, dies sollte auch auf jeden Fall eingestellt werden.
Die Messenger im Detail
Puh, das jetzt vermutlich viel Input für eine Einführung. Daher hier nachmal eine Zusammenfassung, welche Messenger was können und was nicht.
ChatSecure + Orbot
- Erfüllt alle Kriterien der EFF Scorecard
- Kann in Verbindung mit TOR genutzt werden
- Dezentral
- Keine automatische Suche von Kontakten, diese müssen manuell hinzugefügt werden
- Verschlüsselung nur wenn der Kontakt dies auch unterstützt
Pidgin mit OTR-Plugin unter Windows
- Erfüllt alle Kriterien der EFF Scorecard
- Kann in Verbindung mit TOR genutzt werden
- Dezentral
- Keine automatische Suche von Kontakten, diese müssen manuell hinzugefügt werden
- Verschlüsselung nur wenn der Kontakt dies auch unterstützt
Signal (und TextSecure)
- Erfüllt alle Kriterien der EFF Scorecard
- Verschlüsselung erfolgt automatisch
- Kontakte werden anhand einer Telefonnummer automatisch gefunden
Silent Phone (und Silent Text)
- Erfüllt alle Kriterien der EFF Scorecard
- Verschlüsselung erfolgt automatisch
- Kontakte werden anhand der Kontakte auf dem Smartphone automatisch gefunden
Telegram mit geheimen Chats
- Erfüllt alle Kriterien der EFF Scorecard
- Verschlüsselung nur manuell
- Kontakte werden anhand einer Telefonnummer automatisch gefunden
- Die Sicherheit des Messengers wird angezweifelt (https://de.wikipedia.org/wiki/Telegram_Messenger#Sicherheit_und_Kritik)
And the winner is…
Tja, wer gewinnt hier? Klar ist, dass alle Messenger ihre Schwächen haben und einige Messenger punkten auch in Bereichen, die nicht so wirklich was mit IT-Sicherheit zu tun haben.
ChatSecure und Pidgin arbeiten am zuverlässigsten, wenn sie richtig eingerichtet wurden – einem unerfahrenen Benutzer halte ich das aber nicht für zumutbar.
Signal und Silent Phone (und TextSecure und Silent Text) bieten beide eine vorbildliche Verschlüsselung. Silent Phone kann zusätzlich noch (unverschlüsselte) Anrufe an Benutzer außerhalb des Silent Phone Netzwerks starten und empfangen, im Gegenzug kostet der Dienst etwas.
Von Telegram rate ich ab, da die Verschlüsselung nicht durchgängig verwendet wird und Signal und Silent Phone den geheimen Chats in nichts nachsteht – eher im Gegenteil.
Wichtig ist aber auch, welcher Messenger von den eigenen Kontakten benutzt wird, schließlich kommuniziert man mit niemandem sicher, wenn alle Kontakte einen anderen Messenger verwenden. In so einem Fall kann man auch Telegram nutzen, auch wenn man hier darauf achten sollte geheime Chats zu verwenden. Oder einen anderen Messenger der hier nicht genannt wird, selbst Whatsapp erreicht in der EFF Scorecard 6 von 7 möglichen Punkten (mehr als Telegram ohne geheime Chats).
Glücklicherweise bleibt die Zeit nicht stehen und die Messenger werden weiterentwickelt. Vor ein paar Jahren war Verschlüsselung von Nachrichten einigen wenigen Geeks vorbehalten, heute können die Messenger ganz passable Verschlüsselungen vorweisen und in ein paar Jahren kann ich vielleicht sogar einen Messenger uneingeschränkt empfehlen 🙂
Nachtrag:
Da ich jetzt ein paar Mal danach gefragt wurde, wie man denn als Laie einschätzen kann, ob ein Messenger sicher ist: Leider geht das nur sehr oberflächlich. Aber anhand von ein paar Punkten kann man sich schonmal einen recht guten Überblick behalten.
- Was sagt die EFF Scorecard (https://www.eff.org/de/node/82654) zu dem Messenger? Hat der Messenger nicht alle Haken, lasst die Finger davon.
- Was sagt Wikipedia zu dem Messenger? Gibt es keinen Eintrag, lasst lieber die Finger davon. Meistens haben die Wikipedia-Einträge eines Messengers einen Abschnitt zum Thema „Sicherheit und Kritik“. Wenn da etwas darüber steht, dass die Sicherheit des Messengers bezweifelt wird: Finger davon lassen.
- Wird die Verschlüsselung immer eingesetzt? Gibt es ein System, welches die Sicherheit der Kommunikation anzeigt?
Eine abschließende Beurteilung kann natürlich nur von jemanden erfolgen, der viel Ahnung von Kryptographie hat.