Michael HönnigMichael Hönnig
Da kauft Facebook WhatsApp und viele wechseln zum angeblich sicheren Threema. Doch ist Threema wirklich sicherer? Und wie sähe ein wirklich sicher Messenger aus?

Die Probleme der Verschlüsselung bei Closed Source

Jeder Messenger, wie auch Threema, dessen Quelltext nicht verfügbar ist (Closed Source), kann theoretisch viel mehr oder ganz anderes machen, als er vorgibt. Wenn er dies jetzt nicht tut, dann vielleicht, nachdem dessen Hersteller ebenfalls verkauft wurde. Nur bei Open Source Quellcode, welcher verifzizierbar in die aus den App-Stores installierte App compliliert, kann man relativ sicher sein, dass die App nur das tut, was sie zu tun vorgibt. Dies ist so, weil die App funktionsbedingt die Nachrichten im Klartext erhält und die der Kommunikationsteilnehmer im Klartest anzeigen muss, hat die Verschlüsselung einen Bruch. Denn, um es noch einmal zu betonen, der Programmcode der App steht unter voller Kontrolle des Herstellers. Es wäre z.B. möglich, jede Nachricht nicht nur mit dem privaten Schlüssel des Empfängers, sondern zudem mit einen Zweitschlüssel entschlüsselbar zu versenden bzw. jede Nachricht bzw. selektiv Nachrichten zusätzlich mit einer zweiten Verschlüsselung zu versenden. Wenn auch nicht jetzt, dann vielleicht nachdem ein Geheimdienst den Hersteller dazu gezwungen hat, dies zu tun. Sicherheit ist also immer nur ein Versprechen und nicht etwa systembedingt vorhanden, wenn der Vorgang der Verschlüsselung und der Datenübertragungsendstellen nicht nachweislich aus einem bestimmten Open Source Quellcode compliliert wurde. [Nachtrag 21.02.2014] Genau genommen gilt dies schon für das Betriebsystem (iOS, Android etc.), da auch dieses Hintertüren enthalten kann, wenn es nicht vollständig in Open Source vorliegt.

Kontakte/Adressbuch

Der Zugriff einer Messenger App auf das Adressbuch mag praktisch nützlich sein, so können z.B. die Profilbilder zu den Nachrichten angezeigt werden. Andererseits ist auch, wie bei WhatsApp, unsicher, was damit geschieht. Selbst wenn die App die Daten heute nicht überträgt: Wer garantiert, dass sie dies auch in Zukunft nicht tut, sobald sie Millionen von Anwendern hat und vielleicht den Eigentümer wechselt? Wenn man auf den Luxus des Adressbuch-Zugriffs nicht verzichten möchte, sollten mindestens zwei Versionen der App angeboten werden: eine mit und eine ohne dieses Zugriffsrecht (zumindest unter Android mit seinem ganz-oder-garnicht-Rechtemanagement).

Schlüsselgenerierung

Üblicherweise wird ein Messenger, wie auch E-Mail, asynchrone Verschlüsselung verwenden. Diese basiert auf einem Paar aus öffentlichem und privatem Schlüssel. Nachrichten, die mit dem öffentlichen Schlüssel verschlüsselt wurden, können nur mit dem privaten Schlüssel entschlüsselt werden. Zur Anwendung kommt dabei eine mathematische Falltürfunktion, die nur mit extremem Rechenaufwand umgekehrt werden kann. Tatsächlich wird aber i.d.R. nicht die Nachricht selbst so verschlüsselt, sondern nur ein einmalig generierter symmetrischer Schlüssel; und dieser wird mit übertragen. Dies wird zum einen gemacht, weil asynmetrische Ver- und Entschlüsselung größerer Datenmengen langsam ist, zum anderen kann somit der symmetrische Schlüssel jeweils mit dem privaten Schlüssel mehrerer Empfänger verschlüsselt werden, und jeder der Empfänger, aber niemand anders, kann diese Nachricht entschlüsseln. Die Schwachstelle ist hierbei die Kenntnis der privaten Schlüssel. Wenn die Messenger App diese selbst generiert, könnte sie auch die privaten Schlüssel heimlich mit übertragen und somit doch wieder jede Nachricht entschlüsseln. Das Schlüsselpaar muss also unbedingt unabhängig von der Messenger App generiert werden und die privten Schlüssel dürfen zumindest einem Closed-Source Messenger niemals bekannt werden. Wie das aufzulösen ist, wird weiter unten beschrieben. Zudem müssen auch die öffentlichen Schlüssel der Kommunikationspartner auf sicherem Wege zwischen diesen ausgetauscht werden. Denn ansonsten könnte ein Man in the Middle seinen Schlüssel dazwischen schieben und jede Nachricht zunächst mit seinem privaten Schlüssel entschlüssen und mitlesen und dann zur Weiterleitung mit dem echten privaten Schlüssel des Empfängers weiterleiten - theoretisch sogar verändert.

Man in the Middle

Unter Man in the Middle versteht man üblicherweise ein Computerprogramm, welches sich in den Kommunikationsweg einschaltet und zu beiden seiten so tut, als wäre es der eigentliche Kommunkikationspartner, um Nachrichten mitzulesen oder gar zu verfälschen/einzuschleusen. Bei einer Messenger-App mit einem zentralen Server-Betreiber kann dieser aber auch selbst der Man in the Middle sein. Zumindest hier ist bekannt, wer wann mit wem kommuniziert - selbst wenn die Nachrichten selbst verschlüsselt sind, um sie zuzustellen, muss schließlich der Empfänger bekannt sein. Wünschenswert wäre hier ein dezentraler Dienst, bei dem jeder seinen eigenen Kommunikationsserver verwenden könnte. Damit könnten Gruppen untereinander ihre Kommunikation ganz einem zentralen Dienst entziehen. Ein Man in the Middle auf dem Übertragungsweg müsste mindestens eine Verschlüsselung brechen, um auch nur an die konkreten Kommunikationspartner heran zu kommen.

Lösungsansatz: Trennung Messenger App von Verschlüsselung+Übertragung

Was ich mir daher wünschte, wäre ein Messenger mit folgenden Eigenschaften:
  • Eine Messenger Frontend-App, welche die Benutzerschnittselle implementiert. Diese müsste entweder im Open Source vorliegen oder keinerlei besondere Rechte benötigen, außer auf die folgende Dienst-App zugreifen zu können.
  • Eine Messenger Dienst-App, zur Verschlüsselung und Datenübertragung, die separat installiert werden kann und über standardisierte Schnittstellen mit dem Messenger-Frontend kommuniziert.
  • Ein standardisiertes Datenübertragungs- und -vermittlungsprotokoll, welches von Open Source Messenger Dienst-Apps sowie Open Source Servern implementiert werden kann. Es müsste zudem dezentral sein, d.h. das Untergruppen nur über ihre eigenen Server kommunizieren können, die dann externe Kommunikation vermitteln. XMPP wäre ein solcher Kandidat, allerdings fehlt eine Optimierung für Mobildevices und Integration in die Push-Dienste der Smartphone-Betriebssysteme.
Die beiden Apps könnten durchaus in einer einzigen zusammengefasst sein, diese müsste dann aber komplett Open Source sein. Viele Open Source Apps sind andererseits nicht besonders bedienungsfreundlich und nicht schick designed. Bei einer Trennung der beiden Programmteile Benutzeroberfläche und Verschlüsselung-/Übertragung könnten schicke und benutzerfreundliche kommerzielle Apps mit einbezogen werden. Zudem wäre die Validierung des verbleibenden Open Source Programmcodes einfacher, weil wesentlich kürzer.

Tradeoff: Geschäftsmodelle vs. Sicherheit

Ein Messenger-System ohne zentralen allmächtigen Anbieter bietet kein so profitables Geschäftsmodell. Es tut sich also die Frage auf, wer ein solches System bezahlen und bewirbt. Das müssen wir tun, diejenigen, die Sicherheit wollen. Bei Diensten, die wir nicht bezahlen, sind wir nicht Kunde sondern Ware! Kleinere Geschäftsmodelle ergeben sich durch das Angebot benutzerfreundlicher und schicker Frontend-Apps sowie den Betrieb zuverlässiger und schneller Server, was sich auch kombinieren lässt. Mit den bisherigen Programmierschnittstellen der Smartphone-Betriebssysteme ist allerdings Werbefinanzierung ohne Internet-Zugriffsrecht meines Wissens nach nicht möglich, dafür bräuchte es spezieller Werbe-Programmierschnittstellen. Und das Recht des direkten Internet-Zugriffs müss aus Sicherheitsgründen für Messenger-Apps nach diesem Sicherheitskonzept tabu sein.

Tradeoff: Benutzerfreundlichkeit vs. Sicherheit

Externe Schlüsselgenerierung, sichere Schlüsselübertragung, die Installation zweier Apps statt nur einer, ggf. Konfiguration des Kommunikationsservers - wie wir sehen, hat Sicherheit einen stark negativen Einfluss auf die Benutzerfreundlichkeit. Hierzu gibt es leider keine gute Lösung. Ein Gewinn an Benutzerfreudlichkeit wird oft auf Kosten der Sicherheit gehen. Dies stellt leider auch gleichzeitig eine Bremse in der Verbreitung eines solchen Messenger-Systems dar. Was schwieriger in Betrieb zu nehmen ist, wird von weniger Menschen verwendet und somit gibt es weniger Kommunikationspartner. Und genau darauf kommt es bei einem Messenger-System an: dass ich möglichst viele meiner Kontakte darüber erreichen kann. Dies ist außerdem auch der Grund, aus dem ich selbst noch bei WhatsApp bin, auch wenn ich mich sehr über Googles Ignoranz ändere, dass man unter Android einzelnen Apps nicht den Zugriff auf die Kontakte verwehren kann ohne ganz auf diese Apps zu verzichten.

Windows/MacOS/Linux und Co.

Nicht unerwähnt bleiben soll, dass all diese Gedanken über Sicherheit von Messenger-Apps mit herkömmlichen Anwendungsprogrammen unter Betriebssystemen wie Windows für PCs, Mac OS sowie Linux und Co ad absurdum geführt sind. Denn dort hat üblicherweise jedes Anwendungsprogramm nicht nur Zugriff auf alle Daten seines Benutzers sondern auch freien Internet-Zugang. Erst neuerdings oder durch Einsatz besonderer Sicherheitsoftware können die Rechte der Anwendungsprogramme eingeschränkt werden. Unter Open Source Betriebssystemen, wie Linux, ist dabei zumindest die Wahrscheinlichkeit recht hoch, dass solche Hintertüren in Open Source Anwendungsprogrammen entdeckt werden können. Die Komplexität der Systeme ist aber viel zu groß als dass dies wirklich ausreichen würde.

Zusammenfassung

Ob ein Messenger sicher ist oder nicht, hängt also ganz offensichtlich nicht alleine von der verwendeten Verschlüsselung ab. Mir ist auch, Stand heute, keine Messenger App bekannt, der systembedingt wirklich sicher wäre. Falls ein Messenger Hersteller, z.B. der von Threema, anderer Meinung ist, möge er dies nachvollziehbar aufzeigen - eine auf Versprechen basierende Sicherheit zählt hier leider nicht. Zudem geht Sicherheit immer auch zu Lasten der Benutzerfreundlichkeit und des Geschäftsmodells, beides hemmt die Verbreitung des Systems und damit auch seines Nutzens. Ein Ansatz für eine Lösung wurde hier skizziert und je mehr über solche Ideen nachgedacht wird und je mehr sich das Bewusstsein verbreitet, desto größer die Chance, dass wir eines Tages einen systembedingt sicheren Messenger verwenden können. Ein großer Schritt ist jedoch bereits getan, wenn sich viele Menschen diesen Problemen bewusst werden, auch wenn es absolute Sicherheit kaum geben wird.