Artikel mit Tag messenger

Bob schickt Alice eine Nachricht - wie sicher ist das denn?

red mailbox on blue wall

Zur Einordnung: Dieser Artikel soll keine fachlich bis ins kleinste fundierte Betrachtung von Verschlüsselungs- und Sicherheitesmechanismen sein. Dazu fehlt mir sicherlich auch die Expertise. Vielmehr möchte ich auf etwas vereinfachte Weise anschaulich darstellen, was man bei der Nutzung von Messengern für die Sicherheit tun kann und beachten muss.

Bob schickt Alice über $Messenger eine private Nachricht mit einem netten privaten Bild. Natürlich möchte Bob, dass die Nachricht sicher bei Alice ankommt und - da sie ja privat ist - auch nur von Alice gelesen werden kann. Mal schauen, was die beiden dabei so alles beachten müssen.

(Als Vorraussetzung nehmen wir mal an, dass Bob und Alice einen Messenger benutzen, bei dem ein Provider mit einer Server-Infrastruktur beteiligt ist. Dieses Konzept verfolgen die meisten Messenger, um die Problematik zu lösen, dass nich immer alle Beteiligten einer Konversation ständig online sind. Es gibt auch Messenger, die eine direkt Peer-to-Peer-Verbindung herstellen, aber diese Konstallation muss nochmal anders betrachtet werden.)

Abhörsicher

Zunächst einmal wollen Bob und Alice natürlich sicher gehen, dass ihre Nachricht dem Transportweg von Bobs auf Alice' Endgerät nicht von von unbeteiligten mitgelesen werden kann, die zufällig den Datenstrom von Bob zum Provider oder vom Provider zu Alice mitbekommen. Hierzu eignet sich ersteinmal eine Transportverschlüsselung über SSL. Dieses bewährte Verfahren sichert den Datenverkehr zwischen zwei Geräten (z.B. Smartphone und Server des Providers) mittels Zertifikaten ab, die - sofern sie richtig implementiert wurden - sicherstellen, dass der Datenverkehr vom und zum Provider verschlüsselt ist und sich niemand dazwischen schalten kann.

Das Problem bei diesem Verfahren ist, dass die Verschlüsselung nur bis zum jeweiligen Endpunkt der Server-Software beim Provider genutzt wird. Sobald Bobs Nachricht dort ankommt, wird sie entschlüsselt und vom Provider im Klartext gepeichert, bevor sie - dann wieder verschlüsselt - an Alice weitergereicht wird. Der Provider und jeder, der irgendwie Zugriff auf den Server erlangt, könnte also mühelos alle Nachrichten der Nutzer lesen. Dieses Verfahren reicht daher auf jeden Fall nicht aus, um Bobs Nachricht an Alice zuverlässig abzusichern.

(Heutzutage dürfte es keinen Messenger-Dienst mehr geben, der ausschließlich eine solche Transportverschlüsselung ohne zusätzliche Verschlüsselungsmechanismen nutzt.)

Hinter verschlossenen Türen

Um zu verhindern, das Bobs Nachricht auf dem Weg zu Alice entschlüsselt und eventuell sogar im Klartext gespeichert wird, sollte der Provider von $Messenger also zumindest eine serverbasierte Verschlüsselung einsetzen, um die Daten seiner Nutzer zu schützen.

(Wie funktioniert so eine Verschlüsselung eigentlich?
Grob gesagt nutzt man immer ein Schlüsselpaar, jeder Teilnehmer einer Konversation besitzt einen privaten Schlüssel, den nur er kennt, und einen öffentlichen Schlüssel, den er weiter geben kann.
Teilnehmer A kann etwas mit dem öffentlichen Schlüssel von Teilnehmer B verschlüsseln. Diesen verschlüsselten Inhalt kann danach nur noch Teilnehmer B mit seinem privaten Schlüssel wieder lesbar machen. Genauso funktioniert das in der anderen Richtung. Teilnehmer B verschlüsselt etwas mit dem öffentlichen Schlüssel von Teilnehmer A, der mit seinem privaten Schlüssel wieder lesbar macht.
Eine zweite Funktion dieses Schlüsselpaares ist das Signieren von Inhalten. Teilnehmer A kann mit seinem privaten Schlüssel etwas signieren und jeder andere kann mit dem öffentlichen Schlüssel von Teilnehmer A diese Signatur überprüfen, also die Herkunft des Inhalts sicherstellen. Beides, verschlüsseln und signieren funktioniert einzeln und kann auch kombiniert werden.)

Bei der serverbasierten Verschlüsselung benutzt der Provider einen einzigen Schlüssel für alle Benutzer. Je nach Verfahren werden die Nachrichten noch mit einer Session-ID des Clients oder einer Nachrichten-ID verschlüsselt. Die so verschlüsselten Nachrichten werden dann bei Bedarf auf dem Server des Providers gespeichert und können dann auch sicher an den Client des Empfängers weitergeleitet werden. Das ist schonmal insoweit gut, dass jemand, der den Server des Providers unter Kontrolle bekommt, die dort gespeicherten Nachrichten nicht lesen kann, sofern der Provider seinen privaten Schlüssel entsprechend abgesichert hat. So weit so gut, Bob und Alice können also beruhigt sein, oder?

Das Problem bei dieser Art der Verschlüsselung ist aber, dass der Provider jederzeit Zugriff auf die Inhalte hat (und haben muss). Ein Fehler im Sicherheitssystem des Providers oder auch eine Anfrage einer Regierungsorganisation, mit der der Provider zusammen arbeitet, würde die Offenlegung der Inhalte von Bobs Nachricht an Alice zur Folge haben. Wie kann man das also noch besser machen?

Du siehst mich nicht

Das Zauberwort heisst: Ende-zu-Ende-Verschlüsselung.

Hierbei nutzt der Provider keinen einheitlichen Schlüssel, um die Inhalte der Nutzer abzusichern. Die Schlüssel der Benutzer werden direkt ausgetauscht und Bob verschlüsselt seine Nachricht direkt mit dem öffentlichen Schlüssel von Alice. Nur Alice hat also mit ihrem privaten Schlüssel Zugriff auf diese Nachricht. Auch der Provider hat keine Möglichkeit, die Inhalte von Bobs Nachricht an Alice zu entschlüsseln, er kann auch nicht von dritter Seite dazu gezwungen werden. Bob und Alice können also sicher sein, dass ihre Inhalte sicher und nur für die beiden lesbar transportiert werden? Ja, allerdings gibt es dabei einige Voraussetzungen, die die beiden beachten und umsetzen müssen.

Wer bin ich und wie viele?

Erstes Problem: Wie erhält Bob den öffentlichen Schlüssel von Alice, um anschließend die Nachricht an sie damit zu verschlüsseln. Das sicherste wäre hier, die beiden würden sich treffen und Alive übergibt ihren öffentlichen Schlüssel direkt an Bob, der ihn dann auf seinem Client speichern kann. Es wäre aber ziemlich mühsam, wenn jeder Nutzer von $Messenger das mit jedem seiner Chat-Partner so machen müsste. Also sendet $Messenger den öffentlichen Schlüssel von Alice automatisch an Bob. Bob hat dann verschiedene Möglichkeiten, um die Echtheit des Schlüssels zu prüfen. So kann Bob zum Beispiel Alice anrufen und dann mit ihr gemeinsam am Telefon den Hash-Wert der Schlüsselsignatur zu vergleichen, den beide in ihrem Client aufrufen können. Sollten sich die beiden doch einmal persönlich treffen, könnten Bob mit seinem Smartphone auch einen QR-Code scannen, den Alice auf ihrem Device anzeigen lässt. Nach diesem Vergleich ist Bob also sicher, dass der öffentliche Schlüssel, den er bekommen hat, auch wirklich von Alice stammt.

Das Schlüsselpaar von Alice wird automatisch per Zufallsgenerator erzeugt, wenn sei $Messenger auf ihrem Smartphone installiert. Wenn sie $Messenger neu installieren muss oder ein neues Gerät erhält, wird ein neues Schlüsselpaar erzeugt, dessen öffentlicher Teil auch wieder direkt an Bob gesendet wird. Das ist auch wichtig, denn Nachrichten, die Bob mit dem alten öffentlichen Schlüssel von Alice verschlüsseln würde, könnte Alice ab sofort nicht mehr lesen. Der Client von Bob macht ihn auf diesen Umstand auch aufmerksam, in dem er einen Text wie "Die Sicherheitsnummer von Alice hat sich geändert." anzeigt. Für Bob bedeutet das, dass er ab jetzt nicht mehr sicher sein kann, ob dieser neue öffentliche Schlüssel immer noch von Alice stammt. Erst, wenn die beiden über eine der oben beschriebenen Möglichkeiten die Herkunft des Schlüssels sicher gestellt haben, ist die Kommunikation wieder sicher.

(Ihr macht das bei allen Kontakten in eurem E2E-verschlüsselnden Messenger so, oder? ;-) )

Es gibt noch ein Problem bei der E2E-Verschlüsselung. Die Sicherheit funktioniert nur dann, wenn Bob und Alice sicher sein können, dass sie jeweils das Original ihrer privaten Schlüssel besitzen und es keine weiteren Kopien (z.B. beim Provider) gibt. Das die Erzeugung und Verteilung der Schlüssel automatisch durch den Client von $Messenger erfolgt, haben die beiden hier keine Möglichkeit, auf diesen Prozess Einfluß zu nehmen. Um hier eine Kontrollmöglichkeit zu haben, könnten Bob und Alice zum Beispiel einen $Messenger verwenden, dessen Programmcode offengelegt ist, also Open Source ist. Hier hätte man die Möglichkeit zu überprüfen, ob der Client ordentlich mit den erzeugten Schlüsselpaaren umgeht. Natürlich ist auch eine Bestätigung durch einen unabhängigen Prüfer möglich, hierbei ist es aber immer nötig, dass Bob und Alice diesem Prüfer auch vertrauen.

Zum schlechten Schluß

Nun haben Alice und Bob alle oben beschriebenen Aspekte berücksichtigt, nutzen Ende-zu-Ende-Verschlüsselung, haben die Echtheit und Vertraulichkeit ihrer Schlüsselpaare sichergestellt. Bob kann seine Nachricht mit dem privaten Foto also sicher an Alice schicken. Allerdings habe ich jetzt noch eine schlechte Nachricht für die beiden. Sobald Nachricht und Foto auf Alice' Device angekommen sind, werden sie wieder entschlüsselt, damit Alice sie lesen kann. Ab jetzt hat Bob leider keinerlei Kontrolle mehr darüber, was Alice (oder ihr Smartphone) mit den Inhalten macht. Wird das Foto auf eine (wie auch immer gesicherten) Cloud hochgeladen? Wer hat dort Zugriff darauf? Gibt Alice das Smartphone ab und zu an ihre Kinder, damit diese damit spielen? Landet die Nachricht auf dem Uralt-Laptop von Alice, der noch unter Windows XP läuft und von dem ein oder anderen Trojaner verseucht ist?

Es ist für unsere beiden wichtig und richtig, einen sicheren $Messenger zu nutzen und sicherzustellen, dass Inhalte vertraulich und sicher an den jeweils anderen Gesprächspartner weitergeleitet werden. Wir sollten uns aber auch bewusst sein, dass unser Kontent, wenn er erstmal beim (sicher richtigen) Empfäger angekommen ist, weiter gesichert und geschützt werden muss. Nur das hängt dann in keinster Weise mehr vom genutzten Messenger ab.

Telegram als Cloudspeicher und Notizapp nutzen

Telegram Logo

Update 01.01.2018

Telegram hat den "Chat mit sich selbst" umbenannt, er nennt sich jetzt "Saved Messages" bzw. in der deutschen Übersetzung "Gespeichertes". Ich habe den Artikel dahingehend angepasst.

Überarbeiteter Artikel

Der Messenger Telegram ist praktisch, weil man ihn quasi auf allen Geräten benutzen kann. Es gibt Apps für fast alle Smartphones und Desktopsysteme.

Schon seit letztem Jahr gibt es die Möglichkeit, einen speziellen Chat zu öffnen um darin alles mögliche aufzubewahren und so auf mehreren Devices zu nutzen. Eine Art Cloudspeicher also.

Dieser spezielle Chat nennt sich "Gespeichertes" (im Englischen "Saved Messages"). Die Handhabung ist einfach: Zum erstmaligen Aufrufen erreicht man den Chat über die Andoid-Seitenleiste der App bzw. unter iOS über die Einstellungen. Schon habt ihr einen Chat mit der Bezeichnung "Gepeichertes" geöffnet und könnt dort alles mögliche hineinposten. Ich habe ein paar Anregungen dazu gesammelt, wie ihr das nutzen könntet.

Wichtiges aus anderen Chats speichern

Zunächst ist der Chat dafür vorgesehen, Nachrichten aus beliebigen Chats dorthin weiterzuleiten, um sie zu Archivieren. "Gespeichertes" erscheint beim Weiterleiten von Chat-Nachrichten immer als erstes in der Zielauswahl-Liste. Hinter solchen Nachrichten erscheint im Chatverlauf dann ein kleines Pfeilsymbol. Wenn ihr das antippt, kommt ihr in den Originalchat an eben diese Stelle zurück.

Cloudspeicher für Bilder und andere Dateien

Ein Telegram-Chat ermöglicht es natürlich auch, beliebige Dateien anzuhängen. Das kann ich mir zu nutze machen, um mal schnell ein Bild oder eine andere Datei dort abzulegen.

Telegram Screenshot 1

Auf den anderen Devices, auf denen ich Telegram auch nutze, lade ich die Datei einfach herunter und habe sie dort zur Verfügung. Da die Datei in der Chat-Historie so lange erhalten bleibt, bis ich sie lösche, kann ich beliebig oft und lange auf diese Dateien zugreifen.

Notizen

Eine schnelle Notiz machen, eine Einkaufsliste festhalten oder Kontaktdaten kurz erfassen, um sie später "richtig" in einen Kontakt einzupflegen. Der Fantasie sind hier keine Grenzen gesetzt. Wieder habe ich den Vorteil, diese Notiz auf allen Geräten abrufen zu können.

Lesezeichen für Weblinks

Oftmals stosse ich beim durchscrollen der Timeline von sozialen Netzwerken auf Links zu Artikeln, Beiträgen oder Videos, die ich in dem Moment nicht sofort lesen kann. Um diese Links für das spätere Lesen zu sichern, teile ich sie einfach mit meinem persönlichen Telegram Chat. Sicher gibt es dafür Apps wie Pocket, die dafür speziell ausgelegt sind, aber warum soll ich eine weitere App nutzen, wenn Telegram mir das auch bietet?

Organisation der Inhalte

Ein Problem habe ich natürlich bei der ganzen Sache. Die oben beschriebenen Inhalte stehen in der Chathistorie einfach chronologisch hintereinander. Da etwas wieder zu finden, ist erstmal schwer. Aber auch hier habe ich eine Möglichkeit gefunden. Ich markiere die einzelnen Inhalte mit Hashtags. Dadurch kann ich über die "suchen im Chat"-Funktion Inhalte einer bestimmten Kategorie (Bilder, Gifs, ungelesene Artikel usw.) einfach suchen und auswählen.

Telegram Screenshot 2

Auch habe ich die Möglichkeit, über die Chat-Eigenschaften den Punkt "Geteilte Medien" aufzurufen. Hier finde ich eine schnelle Übersicht über alle Dateien und Links, die ich abgelegt habe.

Nachteile

Das ganze wird natürlich ab einer gewissen Datenmenge unübersichtlich. Ich weiß gar nicht, wie viel Speicherplatz ich da letztendlich bei Telegram belegen darf. :-) Auch muss man natürlich bedenken, dass schon ein kleiner Fehler auf der Serverseite, die den Chatverlauf löscht, alle meine Daten in die ewigen Jagdgründe schickt. Es ist also keinesfalls als Backup-Ersatz verwendbar! Auch ein falscher Klick von mir selbst kann den Chat beenden und so die Historie auf Nimmerwiedersehen verschwinden lassen.

Wenn ihr das also so wie ich nutzt, seid euch dessen immer bewusst und legt dort nur Dinge ab, die ihr nochmal an anderer Stelle gespeichert habt oder auf die ihr im Notfall auch mal verzichten könnt.

Weiterhin solltet ihr bedenken, dass dieser Chat nicht Ende-zu-Ende verschlüsselt ist. Lediglich der Transportweg vom Client zum Server und zurück ist hier abgesichert. Ihr solltet also keine vertraulichen oder allzu privaten Dinge ablegen.

Vorschläge?

Sicher gibt es noch mehr Nutzungsmöglichkeiten. Würdet ihr das so nutzen und habt ihr noch andere Ideen?

Telegram: Der VillageGameBot will nur spielen

Der Messenger Telegram unterstützt seit einiger Zeit auch Bots. Diese kleinen Helfer können über die Telegram-API für allerlei nützliche Dinge programmiert werden. So gibt es zum Beispiel Bots, die einem in Chat mal schnell ein passendes GIF zu einem Stichwort anbieten und dieses posten. Aber auch die Begrüßung eines neuen Mitglieds in einer Gruppe kann so ein Bot erledigen.

Nun gibt es mit "Village Game" einen Bot, der tatsächlich so wie ein Strategie-Spiel funktioniert. Indem man mit ihm chattet, kann man das Spiel steuern. Der Entwickler nutzt auch die neueste Funktion von Telegram aus, mit der Bots auch eigene Buttons und Steuerelemente in Chats installieren können.

Wie bei Telegram-Bots üblich, beginnt man einfach einen Chat mit @VillageGameBot und sendet ein "/start". Man kann verschiedene Sprachen auswählen, die deutsche Übersetzung ist aber noch sehr schlecht, weshalb ich die englische Variante ausgewählt habe.

Das Spiel teilt einem nun mit, dass man ein neues Dorf gegründet hat und man auch gleich zwei Arbeiter bekommt, die Getreide für Brot anbauen. Mit dem Verkauf dieser Ernte erhält man Geldsäcke, die Währung des Spiels. Wenn man nicht aktiv ist, produzieren die Arbeiter fleissig weiter. Wenn die Speicher voll sind, sendet der Bot eine entsprechende Chatnachricht, dass man mal wieder etwas verkaufen sollte.

VillageGameBot Screen1

Weiter kann man sich die Zeit mit sogenannten Quests vertreiben. Hierbei kann man Wölfe verjagen, eine Karawane beschützen oder das Dorf gegen Räberbanden verteitigen, was aber je nach Laune des VillageGameBots ziemlich ins Geld gehen kann.

VillageGameBot Raeuber

Nicht zuletzt kann man gegen zufällig ausgewählte Spieler Kämpfen und ihnen Geldsäcke abjagen und Medallien sammeln. Auch hier darf man mit Geldsäcken nicht knauserig sein.

VillageGameBot Schlacht

Das ganze ist noch relativ einfach gestrickt, zeigt aber sehr gut, was man mit Bots alles so anstellen kann. Es gibt Chatgruppen in verschiedenen sprachen, in denen man sich mit anderen Spielern austauschen kann. Auch ein Telegram-Kanal mit News und FAQs steht zur Verfügung. Alles ist über den Hilfe-Button im Botchat erreichbar.

Neue Arbeiter bekommt man übrigens, wenn man neue Spieler über einen speziellen Link einlädt. Wer sich das Spiel mal in Telegram ansehen mag und mir ein paar Arbeiter zukommen lassen will ;-) kann das über diesen Link tun: https://telegram.me/VillageGameBot?start=d1de42ac46

Viel Spass beim ausprobieren (und Zeit verschwenden). :-)

BBUGKS-Live Folge 3 veröffentlicht

BBUGKS-Live-Logo

Oliver und ich haben mal wieder eine Folge unseres BlackBerry Podcasts aufgezeichnet. Diesmal dreht sich alles um das Thema Messenger. Wir sprechen darüber, welche Messenger auf der BlackBerry-Plattform zur Verfügung stehen, aber auch allgemein über Funktionen und Sicherheit. Also ist diese Folge auch für die Nutzer anderer Smartphones nicht uninteressant.

Weitere Infos und die Downloads gibt es auf unserem BBUGKS-Blog. Hört doch mal rein. :-)

Warum ich schliesslich doch WhatsApp nutze

WhatsApp-Logo

Lange Zeit habe ich mich gesträubt und dagegen gewehrt, WhatsApp zu nutzen. Jetzt habe ich den Widerstand aufgegeben und auf meinem Smartphone WhatsApp installiert. Und hier sind die Gründe dafür:

Warum wollte ich WhatsApp nicht nutzen?

Als BlackBerry-Nutzer nutze ich schon immer den BlackBerry-Messenger, und versuche immer, andere zur Nutzung dieser App zu bewegen, zumal sie auch für alle gängigen Plattformen (BlackBerry, iPhone, Android, Windowsphone) zur Verfügung steht. WhatsApp ist schon immer verschriehen, nicht besonders sicher zu sein. Die Verschlüsselung und der Datenschutz sind fragwürdig und die ein oder andere Sicherheitslücke wurde bereits gefunden.

Jeder, der meine Handynummer hat, kann mich automatisch über WhatsApp anschreiben. Bei anderen Messengern - wie auch beim BBM - muss man sich erst über eine wie auch immer geartete ID verknüpfen. Ich kann mir also meine Chatpartner gewissermaßen aussuchen.

Und überhaupt hat der BBM viel bessere Funktionen bei den Gruppenchats und andere Vorzüge, die ich nicht missen möchte.

Das ganze hat nur einen Haken: Es gibt zu wenige, die BBM nutzen und fast alle nutzen WhatsApp.

Warum ich WA jetzt doch installiert habe

Selbst bei kleinen Gruppen, mit denen ich kommunizieren möchte, hat es nicht funktioniert, alle zur Installation von BBM zu bewegen. Und es ist dann immer ziemlich umständlich, alle zu kontaktieren oder auch mal innerhalb einer Gruppe etwas abzusprechen. Natürlich funktioniert SMS noch immer, aber das ist nicht wirklich komfortabel und nicht jeder hat eine SMS Flatrate und somit entstehen beim Senden von SMS unter Umständen Kosten.

Wenn ich Facebook nutze, habe ich nicht wirklich einen Vorteil gegenüber WhatsApp. Und dann kommt es natürlich immer wieder vor, dass es in Klassen oder anderen Gruppen unserer Kinder eine WhatsApp-Gruppe gibt. Wenn man da mitmischen möchte und nichts verpassen dann hat man also fast keine andere Wahl, als den Messenger mit dem grünen Logo zu nutzen.

Wie gehe ich mit den Datenschutz und Sicherheitsbedenken um?

Ich nutze soziale Netzwerke wie Twitter und Facebook, gebe also ohnehin Daten von mir in die Hände von Diensten, die von eben diesen Daten leben müssen. Da WhatsApp ja von Facebook gekauft wurde, wäre es nich logisch, Facebook zu nutzen aber gleichzeitig WhatsApp aus Datenschutzgründen nicht zu nutzen. Bei der Verschlüsselung ist WhatsApp auf gar keinem so schlechten Weg, indem es schrittweise die Ende-zu-Ende Verschlüsselung einführt. Man muss sich eben bei der Nutzung im Klaren sein, dass momentan die Daten auf dem Server des Anbieters durchaus mitgelesen oder anderweitig gespeichert oder weitergegeben werden können. Aber das ist selbst beim BBM der Fall, sofern man nicht die Variante für Geschäftskunden mit eigenem BlackBerry-Server nutzt.

Fazit

Der WhatsApp Messenger ist genial einfach und unkompliziert zu bedienen. Der Kniff, den Kontakt über die Handynummer herzustellen, so dass ich alle Bekannten, von denen ich diese Nummer ohnehin im Adressbuch habe, sofort erreichen kann, wenn diese WhatsApp auch nutzen, sind ein unschlagbarer Vorteil für viele Nutzer, war für mich als BBM Nutzer aber immer eher abschreckend (siehe oben).

Ich nutze WhatsApp also jetzt auch, präferiere aber weiterhin den BBM, da ich viele seiner Funktionen sehr zu schätzen weiss. Wer es etwas genauer wissen will, kann sich meine kleine Artikelserie dazu auf dem Blog der BlackBerry-User-Group Kassel anschauen. Welche und wieviel private Daten und Informationen in einem Messenger preisgibt (egal welchem), sollte jeder für sich entscheiden und dabei immer im Hinterkopf haben, wer was mit diesen Daten anfangen könnte.

Ich werde mal beobachten, wie sich der Messenger so nutzen lässt und bei Neuigkeiten oder anderen Erkenntnissen natürlich hier im Blog berichten.