Threema-Sicherheit

Stelle deine Frage öffentlich an die Threema-Forum-Community - über 4.600 Mitglieder helfen dir weiter. > Frage stellen <
  • Was mir im Allgemeinen etwas zu kurz kommt ist die Tatsache, dass die Sicherheit von Threema mit der Einführung von Threema Web nicht mehr auf der Sicherheit des privaten Schlüssels und Endgeräts liegt, sondern beim Server von Threema, der web.threema.ch ausliefert. Wird der Server angegriffen, sind potenziell alle Nachrichten abhörbar.

    Klar, man kann es selbst hosten. Aber das machen 99 % nicht. Ich auch nicht, weil ich keinen Bock darauf habe, mir hunderte von MB an Abhängigkeiten zu installieren (npm etc.) Demzufolge hoffe ich, dass hier relativ bald eine andere Lösung gefunden wird (z. B. Electron).

    Einmal editiert, zuletzt von Crixus (13. Juli 2017 um 19:03)

  • Crixus
    Ja das ist ein sehr berechtigter Einwand. (Hinweis zur Erklärung an andere: Die JavaScript-Dateien und co, welche z.B. zur Verschlüsselung notwendig sind, werden von web.threema.ch herunter geladen. Da könnte schnell mal was verändert werden…)
    Du musst NPM jedoch auch nicht installieren und co, man (oder Threema) könnte auch eine fertige ZIP bereitstellen. Das sind dann statische Dateien, die man dann entweder mit jedem Webserver einfach hosten kann oder eingeschränkt sogar lokal im Browser einfach öffnen kann. In Electron oder einer ähnliches Anwendung würde das natürlich ähnlich funktionieren.

    Wenn das ganze zu 100% reproduzierbar wäre, könnte man dann sogar den Hash der ZIP des tar.gz-Archives vergleichen und testen, ob es das "richtige" ist.
    Ich habe das man angefragt: https://github.com/threema-ch/threema-web/issues/266
    Dann könnte man den Hash evt. mit dem offiziellen (von Threema veröffentlichten) vergleichen um leicht Archive von anderen Leuten zu prüfen, wenn man es nicht selbst builden möchte.

  • Einen fertigen Build bereitzustellen wäre vermutlich für Threema auch eine Option, allerdings muss man sich dann auch selber um Updates kümmern (und regelmässig prüfen ob solche vorhanden sind).

    Allerdings frage ich mich, was man damit genau erreichen will. Was wäre das Threat Model? Dass Threema bösen Code auf ihrem Server einschleust? Oder eine MITM-Attacke?
    [hr]
    Ich habe mir vor einiger Zeit mal testweise Threema Web heruntergeladen und gebuildet. Npm ist auf einem Linux-System ganz einfach zu installieren und für die restlichen Dependencies reicht ein einziges Kommando. Danach scheint alles statisch zu sein, d.h. man benötigt keinen speziellen Node-Webserver oder so.

    Einmal editiert, zuletzt von ladida (13. Juli 2017 um 21:09)

  • Richtig, so ist es. Angriffsmodell: MITM würde ich hier eher weniger beachten, da Threema viel dagegen tut. Aber was ist wenn der Server mal kompromittiert wird? Insbesondere sind (dann) bspw. auch sehr zielgerichtete Angriffe möglich, da man ja dann für jeden Nutzer anderen Code ausliefern kann. Das Problem dahinter ist ein ziemlich "altes", oft diskutiertes, was bei allen (Web)Diensten auftritt, die JavaScript zur Kryptographie benutzen. Für mehr Details siehe beispielsweise: https://www.nccgroup.trust/us/about-us/ne…idered-harmful/

  • Wenn der Server kompromittiert wurde, dann hat es aber den gleichen Effekt wie MITM. Statt dem Artikel hättest du genauso gut einfach sagen können, dass man somit beliebigen Code einspeisen kann und Feierabend. ;) In dem Artikel dreht es sich nämlich hauptsächlich um andere, teilweise doch sehr spezielle Probleme, insofern finde ich ihn in dem Kontext unpassend.

    (Um Verwirrung zu vermeiden: Ich arbeite bei Threema, spreche hier aber für mich.)

    Einmal editiert, zuletzt von f09fa681 (13. Juli 2017 um 22:50)


  • Klar, man kann es selbst hosten. Aber das machen 99 % nicht. Ich auch nicht, weil ich keinen Bock darauf habe, mir hunderte von MB an Abhängigkeiten zu installieren (npm etc.) Demzufolge hoffe ich, dass hier relativ bald eine andere Lösung gefunden wird (z. B. Electron).

    Falls wirklich npm die Hürde war, kannst du nun ganz einfach self-hosten: Wir haben für das neuste Release einen fertigen Build hochgeladen.

    https://github.com/threema-ch/thr…ases/tag/v1.4.0

    Es reicht, wenn du das Archiv auf einem normalen statischen Webserver entpackst und im Browser aufrufst. HTTPS ist allerdings notwendig.

  • Na, das ist doch schon mal ein Schritt in die richtige Richtung. :) :daumen:

    Aber wegen dem Webserver und HTTPS muss ich mal nachfragen:
    Habe die tar-Datei entpackt und einfach index.html im Browser aufgerufen. Hat soweit funktioniert, ohne Webserver oder HTTPS. Einfach nur

    Code
    file:///home/username/Downloads/threema-web-1.4.0-gh/index.html


    Bin jetzt etwas irritiert.

    Einmal editiert, zuletzt von Crixus (20. Juli 2017 um 12:10)

  • Ja, grundsätzlich braucht es keinen Webserver, aber soweit ich mich erinnere, erlauben einige Browser kein WebRTC auf localhost und/oder auf File-URLs. Wenn es für dich so funktionert, dann umso besser :)

    Threema Web auf einem öffentlichen Webserver ohne HTTPS hingegen würde massiv weniger Sicherheit bieten als einfach https://web.threema.ch/ zu nutzen.

    Einmal editiert, zuletzt von dbrgn (20. Juli 2017 um 12:14)

  • Darf ich fragen, warum HTTPS auf dem Webserver notwendig ist, vorausgesetzt der Webserver läuft nur lokal?

    Edit: Also wenn ich das jetzt richtig verstanden habe dbrgn:
    1. Am besten einfach normale index.html lokal aufrufen, wie oben geschehen
    2. Wenn das nicht funktioniert, lokal einen Webserver einrichten, der die Seiten ausliefert (HTTPS nicht notwendig)
    3. Alternativ die Seite auf öffentlichen Webserver laden, dann aber mit HTTPS

    Richtig so?

    Einmal editiert, zuletzt von Crixus (20. Juli 2017 um 12:18)


  • Darf ich fragen, warum HTTPS auf dem Webserver notwendig ist, vorausgesetzt der Webserver läuft nur lokal?

    Habe meine Antwort in der Zwischenzeit noch ergänzt, hat sich mit deiner Frage gekreuzt.

    - Auf dem *lokalen* Gerät ist HTTPS nicht notwendig, sofern der Browser dies nicht für WebRTC-Verbindungen voraussetzt.
    - Wenn man sich jedoch über das *Netzwerk* auf Threema Web verbindet, sollte die Verbindung aus Sicherheitsgründen immer HTTPS-gesichert sein.

    Je nach Browser ist es möglich, dass Threema Web nur eingeschränkt funktioniert wenn es über file: //-URLs aufgerufen wird.


    Edit: Also wenn ich das jetzt richtig verstanden habe dbrgn:
    1. Am besten einfach normale index.html lokal aufrufen, wie oben geschehen
    2. Wenn das nicht funktioniert, lokal einen Webserver einrichten, der die Seiten ausliefert (HTTPS nicht notwendig)
    3. Alternativ die Seite auf öffentlichen Webserver laden, dann aber mit HTTPS

    Richtig so?

    Ja, ich denke schon.

    Einmal editiert, zuletzt von dbrgn (20. Juli 2017 um 12:21)


  • Also unter Firefox scheint soweit alles zu funktionieren. Eventuell können ja noch ein paar andere hier testen! :)

    Ohne Webserver (via file: //):

    - Mit Chrome / Chromium lädt die Seite nicht, da Chrome keine Cross-Origin-Requests von file: //-URLs zulässt.
    - Unter Firefox funktioniert das Aufwecken einer gespeicherten Sitzung nicht, da Firefox bei file: //-URLs keinen Origin-Header setzt

    Ein Webserver ist deshalb also empfehlenswert. Unter Linux kannst du mit "python3 -m http.server" im aktuellen Directory einen solchen Server starten. Für Windows gibt es Lösungen wie Moongoose, das müsste mit einem Doppelklick im Threema-Web Directory ohne weitere Konfiguration bereits laufen. Habe Moongoose selber aber noch nie getestet.

  • Interessanter Bericht bzgl. der Sicherheit von Gruppenchats in Signal, WhatsApp und Threema:
    https://web-in-security.blogspot.de/2017/07/insecu…ignals-and.html
    https://eprint.iacr.org/2017/713.pdf

    Zitat


    Limitations of Threema

    Ordering. Messages received by the application are ordered by the receiving time. The sending time is additionally not protected on the end-to-end layer. Therefore the server provider can reorder messages arbitrarily during the transmission.
    Agreement. Threema does not implement an algorithm for providing agreement as Signal does not. Consequently the server provider and members can cause inconsistency of messages. The member set is managed by the administrator who can inconsistently provide a view on it to the members.
    Additional Information Leakage. When a user in Threema sends a message to a group of which she is not a member, this message is not accepted by its members. In order to indicate this non-member status, the group administrator starts the group update protocol and sends both the set of members and the title to this user in response. A user who left the group or who was removed from the group can thereby keep informed about the group’s management information. This weakness was also fixed in Threema version 3.14.

    Einmal editiert, zuletzt von Crixus (28. Juli 2017 um 12:09)