Threema-Sicherheit

Stelle deine Frage öffentlich an die Threema-Forum-Community - über 3.000 Mitglieder helfen dir weiter. Los gehts!
Unterstützung von offizieller Seite erhältst du direkt bei Threema: Zum offiziellen Threema-Support
  • Hallo Leute,


    die Sicherheit von Threema basiert hauptsächlich auf diesen drei Säulen:

    • Vertrauen in die Threema GmbH
    • Vertrauen in das Betriebssystem, auf dem Threema läuft (momentan iOS, Android und Windows Phone)
    • Sicherheit des privaten Schlüssels


    Grundsätzlich sollte es das Ziel sein, möglichst wenigen Parteien vertrauen zu müssen, um sicher kommunizieren zu können. Gibt es auch nur ein Problem mit einen dieser drei genannten Säulen, hat man „verloren“. Aus diesem Grund ein paar Vorschläge als Diskussionsgrundlage. Wie können wir die Abhängigkeiten reduzieren?


    Vertrauen in die Threema GmbH
    Die Firma erstellt und vertreibt nicht nur die Software und Clients, sondern betreibt auch die notwendigen Server zum Funktionieren des ganzen Systems. Alles steht und fällt damit.
    Was könnte man sicherheitstechnisch verbessern?


    • Veröffentlichung des Threema-Protokolls, um es von Experten genauer auf Sicherheit, Privatsphäre und Zuverlässigkeit untersuchen zu können.
    • Veröffentlichung des Quellcodes der Clients
    • Regelmäßige Code-Audits
    • Verteilte Threema-Server?


    Vertrauen in das Betriebssystem
    Da die aktuell unterstützen Betriebssysteme alle (mehr oder weniger) proprietär sind, kann man hier wenig machen. Android zwar (im Grunde) quelloffen, aber oft mit überdurchschnittlich vielen Sicherheitslücken und insbesondere fehlenden Updates. Smartphones können im Allgemeinen nicht aus vertrauenswürdig angesehen werden.


    Sicherheit des privaten Schlüssels
    Der vielleicht wichtigste Punkt. Die Sicherheit der Verschlüsselung basiert auf den (geheimen) privaten Schlüssel. Da das Betriebssystem allerdings nicht zu kontrollieren ist, fällt das schwer.


    Was kann man also tun?


    • Alle Threema-Clients sollten mit Tor zu benutzen sein, um die anfallenden Metadaten zu „Datenmüll“ zu machen. Threema sollte also daran arbeiten, evtl. in den Einstellung eine Option anzubieten und sie müssten dafür sorgen, dass es dann auch zu keinen Leaks der IP-Adresse kommt.
      Selbst wenn Threema die Metadaten also sammeln würde bzw. eine Anfrage von einer Behörde bekommt, für eine bestimmte Threema-ID die IP-Adresse herauszugeben, hätten sie keine Chance.
    • Es sollte min. einen offiziellen Client für ein quelloffenes Betriebssystem geben (z. B. Linux).
    • Um für die Sicherheit des privaten Schlüssels zu sorgen, muss natürlich auch der Benutzer dafür etwas tun. Man sollte aber die Anforderungen an den Benutzer so gering wie möglich halten.


    Ein konkreter Vorschlag


    Threema sollte an einem Client für Raspberry Pi arbeiten. Den Raspberry Pi kann man dann daheim an den Router anstecken und man kann folgende Vorteile genießen:


    • Threema-Client läuft auf einem quelloffenen Betriebssystem, das schnell und regelmäßig Updates bekommt
    • Raspberry Pi sollte 24h am Tag Internet-Verbindung haben, wenn er auf Router angesteckt ist
    • Man kann den Raspberry Pi so konfigurieren, dass er nur über das Tor-Netzwerk kommunizieren kann
    • Da der private Schlüssel auf dem Raspberry Pi liegt, kann man ihn nicht mal schnell verlieren. Der Angreifer müsste also physischen Zugriff auf das Gerät haben, was zumindest schon eine gewisse Hürde darstellt
    • Mit zusätzlichen Verschlüsselungstechnologien könnte man den Raspberry Pi absichern, um das Abgreifen des privaten Schlüssels weiter zu erschweren


    Und wie schreibe ich jetzt Nachrichten?


    Über Web-Client bzw. Smartphone-Client, der sich mit dem Raspberry Pi verbindet. Zugelassene Geräte können auf dem Raspberry Pi konfiguriert werden. Mal angenommen man verliert sein Smartphone: Auf dem Raspberry Pi wird sein Smartphone als zugelassenes Gerät entfernt -> Person, die Smartphone nun besitzt, kann nicht auf die Threema-Daten zugreifen. Allerdings würde das ganze womöglich mehr Datenvolumen brauchen und für Otto-Normal-Nutzer ist das ganze sowieso wohl keine Option das ganze einzurichten.


    Nun aber. Ein realistischer Vorschlag.

    • Threema baut einen quelloffenen Client für das Raspberry Pi. Da man hierfür keine GUI braucht, ist das evtl. für Threema auch „locker“ zu machen, wenn man will.
    • Threema schreibt dazu eine benutzerfreundliche Anleitung bzgl. Installation/Konfiguration auf Raspberry Pi (Tor, Verschlüsselung, etc.).
    • Da das Verbinden der Threema-App mit dem primären Threema-Client auf dem Raspberry Pi wohl deutlich mehr Datenvolumen verursachen würde (?), könnten sie es zumindest ermöglichen, dass man auf dem Desktop (Web-Client?) mit dem Raspberry Pi Threema benutzen kann.


    Aber das ganze soll nur mal als Diskussionsgrundlage und Ideenwerkstatt dienen.
    Was meint ihr?

  • Prinzipiell eine gute Idee und die Idee eines Raspberry-Clients gab es auch schon mal. Warum das mehr Datenvolumen verbrauchen soll ist mir jetzt nicht ganz klar, aber naja…


    Allerdings halte ich die Aussage "Smartphones können im Allgemeinen nicht aus vertrauenswürdig angesehen werden." in solch einer absoluten Form als nicht richtig. Wie du bereits erwähnt hast ist Android quelloffen und mit einem guten CustomROM (wie Cyanogenmod bzw. LineageOS) ist dann auch alles Open-Source. Kombiniert mit einer Geräteverschlüsselung hat man dann schon einen sehr soliden Schutz.
    Auch gibt es insbesondere in diesem Forum genügend Tipps wie man z.B. Android ohne Google nutzt und im Vergleich zu einem Linux-Server hat Android ein ausgefeiltes Sandbox-System integriert, was es bei Server und Desktop-Betriebssystemen in dieser Forum noch nicht gibt bzw. sich nicht so durchgesetzt hat.
    Dementsprechend sollte man die mögliche Sicherheit eines Smartphones nicht unterschätzen. Dennoch hast du natürlich recht, das viele Geräte mit fehlenden Updates & co nicht als sehr sicher angesehen werden können.


    Auch sehe ich das Problem des privaten Schlüssels jetzt nicht als so ein großes. Wie erwähnt können auch Handys sicher sein und es ist keineswegs gesagt, dass so ein Raspi (wenn falsch konfiguriert) wirklich sicherer ist. Das beginnt beim SSH-Passwort (wo ja eher Private/Public Keys verwendet werden sollten) und endet bei anderen Diensten/Dingen die auf dem gleichen Gerät evt. laufen und Sicherheitslücken etc. haben.
    Für Geeks sicherlich gut, aber für den Otto-Normal-Verbraucher eher nichts. Deswegen sehe ich auch keinen großen Unterschied zwischen deinem "realistischen" Vorschlag und den davor.
    Bezüglich der UI/UX, also dem Teil der den Nutzer (bzw. dessen Anforderungen) betrifft, halte ich die Umsetzung in Threema bereits für sehr gut. Backups müssen mit einem Passwort versehen werden und es wird gewarnt, dass der private Schlüssel nicht "verloren" gehen sollte. Ein QR-Code erlaubt das einfache Verifizieren von Kontakten, was jeder auch ohne kryptografische Kenntnisse machen kann.
    Allgemein kann der private Schlüssel ja auch nicht "verloren" gehen. Er kann nur in den Besitz eines anderen gelangen (wobei ich da einen physischen Angriff als eher kleineres Problem halte, schließlich sind softwarebasierte Angriffe, sprich Hacks des Gerätes, immer möglich und schwerer zu verhindern).


    Eine Tor-Integration würde ich auch nützlich finden, auch wenn dies vlt. nur eine kleine Nutzergruppe nutzen wird, aber es ist sicherlich ein gutes Feature, was sich mit einer einfachen Proxy-Einstellung (& Orbot) einfach umsetzen lässt. Natürlich kann man auch jetzt bereits den gesamten Traffic mit Orbot über Tor leiten, aber vlt. will man es ja nur für Threema machen.


    Ich gebe dir aber vollkommen recht im Bereich des "Vertrauen in die Threema GmbH". Ich denke dies ist auch das größte Problem derzeit und wird ja auch von IT-Sicherheitsexperten (siehe diese Artikel) bemängelt. Nur Open-Source schafft absolutes Vertrauen. Ich denke man muss nicht so weit gehen verteilte Threema-Server zu erlauben (da hätte man eine XMPP-Kopie), aber zumindest die Client-Quellcodes könnte Threema schon veröffentlichen, wobei dies ja noch nicht mal unter einer freien Lizenz passieren muss. All dies wäre schon ein Fortschritt und würde viele Nutzer, die Open-Source als Grundlage für eine sichere Software ansehen, evt. zu Threema bewegen bzw. verhindern, dass dieser Punkt immer wieder an Threema kritisiert wird. Auch ist dies etwas, was WhatsApp nicht so leicht nachmachen wird. :) (also hätte man ein Alleinstellungsmerkmal mehr, was nach der Einführung von E2E-Verschlüsselung in WhatsApp wohl nötig ist.)


    Das Protokoll an sich ist ja schon im Whitepaper grundlegend dokumentiert. Ich denke mit einer Veröffentlichung des Client-Quellcodes (in guter, dokumentierter Form) hätten Experten genügend Informationen um Audits durchzuführen. Aber ich habe natürlich nichts gegen ein technischeres, detaillierteres Whitepaper zum Threema-Protokoll.
    [hr]
    Als einzige Möglichkeit die Rasberry Pi-Idee auch für Otto-Normal-Verbraucher möglich zu machen, sehe ich den Verkauf einer fertigen "Threema-Box" an. Diese ist dann einfach ein kleines Gerät (evt. einfach nur ein Rasberry Pi), welches man einmal anstecken muss und dann möglichst benutzerfreundlich (und möglichst wenig) konfigurieren muss.
    Das könnte Threema dann einfach so verkaufen. Für entsprechende Nutzer (oder bspw. Firmen?), sollte man aber es dann natürlich aber dennoch möglich machen, das ganze auch auf dem Rasberry oder anderen eigenen Linux-Server zu betreiben.
    Ähnliche Angebote gibt es ja z.B. für Nextcloud, also man sieht, dass so etwas möglich ist.

  • Man stelle sich den Marketinggau vor wenn jemandem der laut genug schreit Daten vom falsch konfigurierten Server gestohlen werden.
    Nur schon deshalb sehe ich das Projekt als zum scheitern verurteilt an.

    Jeder Tag könnte Threema Web für iOS Tag sein.

    Jeder Tag ist Threema Web für iOS Tag.

    Jeder Tag könnte Threema Multidevice Tag sein.


    Nur mit Threema Safe schläft man ruhig.


  • Prinzipiell eine gute Idee und die Idee eines Raspberry-Clients gab es auch schon mal. Warum das mehr Datenvolumen verbrauchen soll ist mir jetzt nicht ganz klar, aber naja…


    Wenn der Raspberry Pi als direkter Threema-Client verwendet wird und du dich dann mit dem Smartphone verbinden möchtest, ist es unter Umständen so, dass z. B. der ganze Chat-Verlauf auf das Smartphone übertragen werden muss. Kommt etwas darauf an, wie man das technisch umsetzen möchte. Zum Beispiel solche Fragen, wie „Sollen alle Daten auf dem Smartphone nach beenden der Threema-App gelöscht werden?“, „Weiß der Raspberry Pi, welche Sachen ich schon »abgeholt« habe?“ werden dann relevant. Und wenn nach dem Beenden der App die Daten gelöscht werden (wie bei der Web-App, so viel ich weiß), dann muss beim nächsten mal unter Umständen der Verlauf wieder neu übertragen werden. Aber, wie gesagt, kommt alles darauf an, wie man das dann lösen würde und welche Ziele man konkret verfolgt.



    Allerdings halte ich die Aussage "Smartphones können im Allgemeinen nicht aus vertrauenswürdig angesehen werden." in solch einer absoluten Form als nicht richtig. Wie du bereits erwähnt hast ist Android quelloffen und mit einem guten CustomROM (wie Cyanogenmod bzw. LineageOS) ist dann auch alles Open-Source. Kombiniert mit einer Geräteverschlüsselung hat man dann schon einen sehr soliden Schutz.
    Auch gibt es insbesondere in diesem Forum genügend Tipps wie man z.B. Android ohne Google nutzt und im Vergleich zu einem Linux-Server hat Android ein ausgefeiltes Sandbox-System integriert, was es bei Server und Desktop-Betriebssystemen in dieser Forum noch nicht gibt bzw. sich nicht so durchgesetzt hat.


    Ja, die Aussage, dass man Smartphones im Allgemeinen nicht vertrauen kann ist vielleicht etwas platt ausgedrückt. Trotzdem bleibe ich dabei, dass ein überschaubarer Raspberry Pi mit z. B. Raspbian drauf sicherheitstechnisch die deutlich bessere Wahl ist.
    Siehe auch http://www.bbc.com/news/uk-34444233.



    Auch sehe ich das Problem des privaten Schlüssels jetzt nicht als so ein großes. Wie erwähnt können auch Handys sicher sein und es ist keineswegs gesagt, dass so ein Raspi (wenn falsch konfiguriert) wirklich sicherer ist. Das beginnt beim SSH-Passwort (wo ja eher Private/Public Keys verwendet werden sollten) und endet bei anderen Diensten/Dingen die auf dem gleichen Gerät evt. laufen und Sicherheitslücken etc. haben.
    Für Geeks sicherlich gut, aber für den Otto-Normal-Verbraucher eher nichts. Deswegen sehe ich auch keinen großen Unterschied zwischen deinem "realistischen" Vorschlag und den davor.


    Ja, die Lösung mit dem Raspberry Pi ist auf keinen Fall eine Lösung für die breite Masse. Aber definitiv eine schöne Sache für Leute, die sich näher damit beschäftigen möchten.



    Allgemein kann der private Schlüssel ja auch nicht "verloren" gehen. Er kann nur in den Besitz eines anderen gelangen (wobei ich da einen physischen Angriff als eher kleineres Problem halte, schließlich sind softwarebasierte Angriffe, sprich Hacks des Gerätes, immer möglich und schwerer zu verhindern).


    Definitiv richtig. Weil aber die meisten Smartphones keine Sicherheitsaktualisierungen bekommen und dazu viele proprietäre Apps parallel zu Threema laufen, ist ein „Hack” auf ein Smartphone wohl deutlich leichter zu schaffen. Man muss auch beachten, dass der Raspberry Pi hinter einem Router mit dem Heimnetzwerk eine relativ sichere Umgebung hat. Das Smartphone hat man hingegen in vielen „unsicheren“ Netzen.



    Eine Tor-Integration würde ich auch nützlich finden, auch wenn dies vlt. nur eine kleine Nutzergruppe nutzen wird, aber es ist sicherlich ein gutes Feature, was sich mit einer einfachen Proxy-Einstellung (& Orbot) einfach umsetzen lässt. Natürlich kann man auch jetzt bereits den gesamten Traffic mit Orbot über Tor leiten, aber vlt. will man es ja nur für Threema machen.


    Ja, möglich ist es bereits. Ob Threema dann auch wirklich alles über das Tor-Netzwerk leitet ist wiederum eine andere Frage. Deshalb würde es auf jeden Fall Sinn machen, dass sich Threema das mal genauer anguckt. Eine zusätzliche Option in den Einstellungen würde wohl von 99 % der Nutzer sowieso nicht genutzt, deshalb kann ich verstehen, dass es von Threema nicht umgesetzt wird. Für Leute, die aber z. B. Orbot verwenden, sollte Threema sicherstellen, dass auch der gesamte Traffic dann darüber läuft.



    Als einzige Möglichkeit die Rasberry Pi-Idee auch für Otto-Normal-Verbraucher möglich zu machen, sehe ich den Verkauf einer fertigen "Threema-Box" an. Diese ist dann einfach ein kleines Gerät (evt. einfach nur ein Rasberry Pi), welches man einmal anstecken muss und dann möglichst benutzerfreundlich (und möglichst wenig) konfigurieren muss.
    Das könnte Threema dann einfach so verkaufen. Für entsprechende Nutzer (oder bspw. Firmen?), sollte man aber es dann natürlich aber dennoch möglich machen, das ganze auch auf dem Rasberry oder anderen eigenen Linux-Server zu betreiben.
    Ähnliche Angebote gibt es ja z.B. für Nextcloud, also man sieht, dass so etwas möglich ist.


    Da hast du Recht. Die Raspberry-Pi-Lösung ist ausschließlich eine optionale Möglichkeit für die Nutzer, die sich damit beschäftigen und absolut keine Lösung für die breite Masse!
    Eine „Threema-Box“ wäre darauf eine nette Antwort. :)


  • Bezüglich Tor ein kurzer Einwurf: Ich weiß ja nicht, wie das mit SaltyRTC aussieht, aber WebRTC leakt deine lokale(!) IP-Adresse. Deswegen wurde auch der WebRTC-Kram aus dem Tor-Browser entfernt (bzw. nicht aufgenommen).


    Mit SaltyRTC ist sichergestellt, dass die IP-Adressen nur dem jeweiligen Gegenüber bekannt gegeben wird. Aber natürlich hilft es dir nicht, wenn WebRTC allgemein aktiviert ist und irgendeine andere Webseite deine IP-Adressen gathered. Hier würde eine Whitelist Abhilfe schaffen.


    Übrigens kannst du bei Chromium mittlerweile entsprechende Einstellungen setzen, die das Gatheren von lokalen Adressen (und/oder VPNs) verbieten. Es braucht dafür keine Extension mehr.

  • Quark, warum sollte die interne IP an den STUN-Server gehen? Der STUN-Server macht nichts weiteres als dir deine nach außen sichtbare IP zu sagen.


    Ergo: Threema erfährt die IP des TOR exit nodes und das wars. Mehr nicht. Wie gesagt, das hilft nur wenn man WebRTC für Threema whitelisted.

  • Ah ja stimmt. Kannst du dann kurz erklären, wann die interne IP gesendet/genutzt wird bzw. wie die Clients erkennen, dass sie im gleichen Netzwerk sind?


    Und ja, so sollte nur die externe IP für Threema sichtbar werden. Nur muss man natürlich dann aufpassen auch den Browser über Tor laufen zu lassen, denn sonst wäre de IP doch sichtbar. Also kurz: Threema-App & Browser müssen über Tor laufen, um die IP zu "verstecken".

  • Die interne IP wird gegathered und genutzt, wenn das so im Browser eingestellt ist. Vereinfacht gesagt schicken sich die Peers gegenseitig eine Liste von ihren IP-Adressen (über SaltyRTC, also E2EE) und probieren dann einfach aus, welche Paare funktionieren. Wenn du es genauer wissen willst, kannst du dir die genaue Funktionsweise von WebRTC ergooglen oder das hier als Nachtlektüre lesen.

  • Ergo: Threema erfährt die IP des TOR exit nodes und das wars. Mehr nicht. Wie gesagt, das hilft nur wenn man WebRTC für Threema whitelisted.


    Wie soll man denn unter Tor WebRTC für Threema whitelisten, wenn WebRTC dort von Haus aus gar nicht unterstützt wird?

  • Tor kann man auch ohne den Tor-Browser nutzen.
    [hr]


    Wie sieht es mit Perfect Forward Secrecy aus? Insbesondere wenn Leute wie Journalisten Threema nutzen, wäre das schon nicht unwichtig.


    Ist das eine Frage oder die Äußerung eines Wunsches? PFS gibt's bei Threema momentan nur auf Transport-Layer und bei SaltyRTC.