Vor zehn Jahren war der Satz „Schreib mir eine SMS“ noch völlig normal. Dann kam WhatsApp und binnen kürzester Zeit starb die SMS fast völlig aus. Mittlerweile ist WhatsApp ein absoluter Internet-Riese und Millionen von Smartphones tauschen damit Nachrichten aus. Heute wollen wir das Basiswissen aus den vorangegangenen Teilen der Internetgeschichten einmal anwenden, indem wir uns die Technik hinter WhatsApp ansehen.
Instant Messaging
Fangen wir ganz vorne an: WhatsApp ist der Name eines Computerprogramms (englisch „Application“ und daher heutzutage kurz „App“ genannt), mit dem man sich gegenseitig Nachrichten, Bilder, Videos und andere Dinge zusenden kann. Sender und Empfänger müssen dafür das Programm besitzen, zum Beispiel indem sie es auf ihrem Smartphone installiert haben. Der Sender gibt eine Nachricht in WhatsApp ein und diese wird quasi sofort im WhatsApp des Empfängers angezeigt. Wenn etwas sofort – also ohne Zeitverzögerung – von einem Ort zu einem anderen Ort übertragen wird, nennt man das „instantane“ Übertragung. Obwohl „quasi sofort“ nicht wirklich „sofort“ ist, sprechen wir auch bei Programmen wie WhatsApp von „instantaner Nachrichtenübertragung“. Das heißt auf Englisch „Instant Messaging“, was häufig mit IM abgekürzt wird. WhatsApp ist also ein IM-Programm.
IM-Programme gab und gibt es in verschiedenen Ausprägungen. Schon in den 90er Jahren war zum Beispiel das Programm ICQ auf Millionen von Computern installiert. Alle Internetriesen brachten ihr eigenes IM-Programm auf den Markt. So gab es den AOL Instante Messenger (AIM), den Yahoo Messenger oder Microsofts MSN Messenger. Viele Messenger verloren an Bedeutung als mit Skype ein Programm populär wurde, das sowohl Video-Telefonie als auch IM anbot. Im ostasiatischen Raum setzte sich dagegen das Programm „QQ“ durch. Mit der Verbreitung der Smartphones konnte dann WhatsApp seinen Siegeszug starten. Aber auch hier gibt es Alternativen wie zum Beispiel Threema oder Signal. Die Programme bieten oberflächlich alle ähnliche Funktionen, können sich aber hinter den Kulissen gewaltig voneinander unterscheiden. Wir schauen uns heute nur WhatsApp an, bitte werft nicht alle anderen IM-Programme damit in einen Topf.
Ein langer Weg für ein kurzes Hallo
Angenommen, Romeo und Julia nutzen beide WhatsApp auf Ihren Smartphones. Romeo gibt die Nachricht „Hallo Julia“ ein. Diese erscheint Millisekunden später auf Julias Smartphone. Was ist innerhalb dieser kurzen Zeitspanne passiert?
Um das zu verstehen, erinnern wir uns an Herbert aus Teil #2 (und anderen) der Internetgeschichten. Herbert sitzt im Smartphone und erledigt Aufträge, üblicherweise fährt er Anfragen und Antworten zwischen dem Smartphone und einem Server im Internet hin- und her. Wenn Romeo den „Senden“-Knopf drückt, gibt WhatsApp Herbert eine neue Aufgabe: „Bringe Romeos Nachricht zu Julias Smartphone!“
Herbert arbeitet immer nach dem gleichen Schema. Wenn er eine Nachricht zu irgendeinem anderen Computer im Internet bringen soll, frägt er als erstes nach der IP-Adresse. Das ist die eindeutige Nummer des Computers im Internet. Doch bei seinem jetzigen Auftrag hat Herbert ein Problem: Er kennt die IP-Adresse von Julias Smartphone nicht und auf Romeos Smartphone ist nur Julias Telefonnummer gespeichert. In den Teilen #2 und #3 der Internetgeschichten konnte sich Herbert damit helfen, dass er einen DNS-Server nach der IP-Adresse fragen konnte. Doch DNS-Server kann man nur nach Domänennamen befragen. Den hat man beim Aufruf einer Webseite zur Verfügung. Aber Julias Smartphone hat keinen Domänennamen. Eigentlich ist es für Herbert eine Mission Impossible, also MI statt IM.
Hier haben sich die WhatsApp-Programmierer eines alten Tricks bedient. Sie haben in ihrer Heimat USA einen Server aufgestellt und mit dem Internet verbunden. Der Domänenname dieses Servers ist „s.whatsapp.net“. Diesen Domänennamen haben sie dann einfach jedem WhatsApp-Programm mitgegeben. Herbert erhält also von WhatsApp in Wahrheit die Aufgabe „Bringe Romeos Nachricht zum Server s.whatsapp.net“. Und das ist kein Problem mehr für Herbert. Jetzt kann er einen DNS-Server nach der IP-Adresse fragen fragen. Er packt die Nachricht und Julias Telefonnummer in den Kofferraum seines Autos und macht sich auf den Weg zum WhatsApp-Server in Amerika.
Heikle Datenweitergabe
Auf diesem WhatsApp-Server findet Herbert viele Millionen von Postfächern vor. Auf jedem steht die Telefonnummer eines bestimmten Smartphones. Wie kommen die Telefonnummern da hin? Nun ja, das war auch Herbert. Das WhatsApp-Programm auf Romeos Smartphone gibt Herbert nämlich auch eigenständig Aufgaben, ohne dass Romeo aktiv ist. Herbert soll dann alle Telefonnummern aus Romeos Adressbuch zum WhatsApp-Server bringen. Romeo hat dazu sein Einverständnis geben müssen, um das WhatsApp-Programm auf seinem Smartphone nutzen zu können.
Herbert ist es egal, ob die Besitzer der Telefonnummern WhatsApp benutzen möchten oder nicht. Und so gibt es im WhatsApp-Server auch jede Menge Postfächer von Leuten, die mit WhatsApp eigentlich gar nichts zu tun haben wollen. Diese Weitergabe ohne die Einwilligung der betroffenen Personen wird regelmäßig juristisch diskutiert. Einig ist man sich wohl, dass die Datenweitergabe nicht legal ist, aber ob man dafür WhatsApp die Schuld geben kann oder den WhatsApp-Nutzern ist offenbar eine Frage der Interpretation und es benötigt noch richtungsweisende Gerichtsurteile. Die Internetgeschichten sind nur ein Technik-Blog, daher steigen wir in diese Debatte nicht weiter ein.
Herbert legt Romeos Nachricht nun also auf dem WhatsApp-Server in das Postfach, auf dem Julias Telefonnummer steht. Dann fährt er wieder zurück zu Romeos Smartphone. „Aufgabe erledigt“ sagt er. Auf Romeos Display signalisiert WhatsApp dies mit einem Haken hinter der Nachricht. Bei Julia angekommen ist die Nachricht aber freilich noch nicht.
Das Warten auf die Nachricht
Julia weiß zu diesem Zeitpunkt noch nichts von der Nachricht. Sie ist momentan nicht aktiv in Ihrem Smartphone. Das Display ist schwarz. Dennoch geschieht im Inneren etwas. Auch dort ist ein Herbert bei der Arbeit. Jedes Mal, wenn das Smartphone eine Verbindung zum Internet findet, wird das WhatsApp-Programm aktiv. Es sendet Herbert direkt zum WhatsApp-Server, um zu schauen, ob eine Nachricht in Julias Postfach liegt. Und wenn das nicht der Fall ist, dann bleibt Herbert einfach dort stehen und wartet. Er macht das gar nicht gerne. Sollte Julia nämlich das Smartphone ausmachen oder das WLAN wechseln … tja, dann stirbt Herbert vor Ort und Herbert2 wird von Julias Smartphone aus losgesendet, seinen Platz einzunehmen.
Aber heute passiert das nicht. Herbert wartet eine Weile und sieht wie Romeos Nachricht im Postfach ankommt. Die nimmt er sich dann schnell heraus und spurtet zurück zu Julias Smartphone. Auf dem Display wird nun die Ankunft einer neuen Nachricht sichtbar. Noch bevor Julia die Nachricht liest, gibt WhatsApp schon die nächste Aufgabe an Herbert: „Bringe die Empfangsbestätigung zum WhatsApp-Server!“ Diese Bestätigung nimmt nun den gleichen Weg zurück zum WhatsApp Server und wird von dort durch Romeos Smartphone abgeholt. Dort wird jetzt ein zweiter Haken hinter der Nachricht angezeigt. Und sobald Julia in ihrem WhatsApp die Nachricht liest, überbringt Herbert auch diese Information. Dann ändern die zwei Haken auf Romeos Display die Farbe von grau zu blau. Nicht nur die eigentlichen Nachrichten, sondern auch jede Status-Information läuft also über den WhatsApp-Server.
Zentrales Netzwerk
Alle Clients (d.h. die Geräte mit dem WhatsApp-Programm) tauschen also immer mit dem zentralen WhatsApp-Server „s.whatsapp.net“ Nachrichten aus. Dies nennen wir eine zentrale Netzwerkstruktur. Das Internet dagegen hat keinen zentralen Server, über den alles laufen muss. Es ist als „de-zentrales Netzwerk“ konstruiert, in dem sich kein Teilnehmer zum Diktator aufschwingen kann. Alle Teilnehmer am Internet sollen möglichst gleichberechtigt sein. Man spricht hier auch von „Netzneutralität“. WhatsApp nutzt zwar das Internet, hebelt das Prinzip der Netzneutralität aber aus. In einem zentralen Netzwerk hat derjenige die Kontrolle, der den zentralen Server besitzt. Das ist in diesem Fall der us-amerikanische Großkonzern Facebook Incorporated.
Dieser Großkonzern trägt jetzt eine Menge Verantwortung. Denn er muss die WhatsApp-Benutzer auch vor der Internet-Kriminalität beschützen. In den Teilen #6 (Man-in-the-middle) und #7 (Spione) der Internetgeschichten haben wir zwei davon kennengelernt und Verteidigungsmaßnahmen beschrieben.
Gefahren durch Internet-Kriminalität
Die Masche des Man-in-the-middle ist es, sich in die Mitte zwischen zwei Teilnehmer am Internet zu schummeln, in unserem Fall zwischen Romeo und Julia. Gegenüber Romeo würde der Man-in-the-middle dann so tun als wäre er Julia. Wenn Romeo darauf hereinfällt, würde er alle Nachrichten an den Man-in-the-middle senden. Für diesen ist ein zentrales Netzwerk ein interessantes Ziel. Wenn es ihm gelingt, sich in der Mitte des Netzwerks zu platzieren, also dort wo der WhatsApp-Server steht, dann könnte er sein fieses Spiel mit allen Teilnehmern treiben. Das Ziel könnte so interessant sein, dass der Man-in-the-middle viel dafür investieren würde und die Firma Facebook muss ihrerseits viel investieren um dagegen anzukämpfen.
Ähnlich steht es um all die Spione im Internet. Diese würden platzen vor Freude, wenn sie sich auf dem zentralen WhatsApp-Server einnisten und all die Geheimnisse ausspähen könnten, die Nutzer wie Romeo und Julia miteinander austauschen. Was macht die Firma Facebook dagegen? In Teil #7 haben wir gesehen, dass gegen Spione nur eine Ende-zu-Ende-Verschlüsselung hilft.
Ende-zu-Ende-Verschlüsselung
Die Firma Facebook gibt an, eine Ende-zu-Ende-Verschlüsselung in das WhatsApp-Programm eingebaut zu haben. Das Verschlüsselungsverfahren nennt sich „Signal“ und ist auch ausführlich – allerdings nicht besonders einfach – beschrieben. Es wurde ursprünglich von der gemeinnützigen Signal-Stiftung für den gleichnamigen Signal IM entwickelt. Im Grunde basiert es auf den üblichen Internetstandards (siehe Teil #7 „Verschlüsselung“): Wenn das WhatsApp-Programm z.B. auf einem Smartphone installiert wird, erstellt es ein Schlüsselpaar, bestehend aus einem öffentlichen und einem privaten Schlüssel. Den öffentlichen Schlüssel sendet das Smartphone dann an den WhatsApp-Server.
Bei der ersten Kontaktaufnahme von Romeo an Julia, frägt Romeos Smartphone zunächst Julias öffentlichen Schlüssel vom WhatsApp-Server an. Mit diesem Schlüssel kann Romeos Smartphone nun eine verschlüsselte Nachricht erstellen. Die Nachricht kann dann nur auf Julias Smartphone entschlüsselt werden, weil nur dort Julias privater Schlüssel liegt. Umgekehrt frägt Julias Smartphone Romeos öffentlichen Schlüssel an und kann damit eine verschlüsselte Bestätigung der Kontaktaufnahme senden.
Dieser Austausch der öffentlichen Schlüssel ist relativ aufwändig und wird daher nur einmalig durchgeführt. Beide Smartphones einigen sich dann auf einen Vorrat an Einmalschlüsseln. Jedes Mal wenn Romeo und Julia anschließend eine Nachricht schreiben, wird nach einer vorgegebenen Reihenfolge einer der Einmalschlüssel zur Verschlüsselung verwendet. Man stellt sich das vor wie das Nummerziehen auf dem Amt. Von einer langen Rolle wird immer der erste Schlüssel abgerissen, einmalig verwendet und dann gelöscht. Das geht sehr schnell (jedenfalls schneller als auf dem Amt) und nur bei Bedarf muss hin- und wieder die Rolle ausgetauscht werden. Daher nennt sich das Ganze auch Ratchet-Verfahren (von englisch „ratchet“, einem Zahnrad mit Sperrklinke, das man nur in eine Richtung drehen kann).
Alles sicher verschlüsselt?
Wir haben also eine sichere Ende-zu-Ende-Schlüsselung. Alles gut, oder? Naja, lest noch einmal genau:
Wenn das WhatsApp-Programm z.B. auf einem Smartphone installiert wird, erstellt es ein Schlüsselpaar […].
Hier kommt die Diktatoren-Rolle zum Tragen! Man kann den privaten Schüssel nicht selbst erstellen oder eine vertrauenswürdige Stelle wählen, die das erledigt. Es muss WhatsApp sein. Was macht das WhatsApp-Programm mit dem privaten Schlüssel? Wird er einfach nur auf dem Smartphone gespeichert? Das offizielle Statement ist:
The WhatsApp server has no access to the client’s private keys. (auf Deutsch: „Der WhatsApp-Server hat keinen Zugriff auf den privaten Schlüssel des Clients.“)
Wie sieht es aus mit den anderen Servern des Facebook-Konzerns? Wir wissen es nicht. Das ist ein Firmengeheimnis. Technisch können wir aber festhalten: Die Firma Facebook hätte die Möglichkeiten, die Nachrichten von Romeo und Julia mitzulesen, da sie das gesamte Verschlüsselungsverfahren unter Kontrolle hat.
Wie funktioniert die Gruppen-Kommunikation?
Ein technisch interessanter Aspekt ist die Gruppenfunktion im WhatsApp-Programm. Mehrere Teilnehmer bilden zusammen eine WhatsApp-Gruppe. Jede Nachricht eines Teilnehmers an die Gruppe, wird bei allen Gruppenmitgliedern angezeigt. Dabei wird die Nachricht an den WhatsApp-Server gesendet und der WhatsApp-Server erstellt dann eine Kopie für jedes Gruppenmitglied. Die Kopie der Nachricht wird dann bei jedem Gruppenmitglied in das Postfach gelegt. Vom WhatsApp des Senders geht tatsächlich also nur eine einzelne Nachricht ab und nicht etwa eine an jedes Gruppenmitglied. Dadurch wird Akku-Laufzeit gespart.
Aber wie funktioniert eine Ende-zu-Ende-Verschlüsselung, wenn auf der Empfänger-Seite quasi mehrere Enden existieren, nämlich eins pro Gruppenmitglied? Hier wird ein zusätzlicher Gruppenschlüssel benötigt. Wenn ein neues Gruppenmitglied seine erste Nachricht sendet, erstellt sein WhatsApp einen zusätzlichen Gruppenschlüssel. Diesen sendet es dann einzeln zu jedem anderen Gruppenmitglied und zwar jeweils über die oben beschriebene Ende-zu-Ende-Verschlüsselung für zwei Teilnehmer. Anschließend nutzen alle Gruppenmitglieder den Gruppenschlüssel zum ver- und entschlüsseln der Gruppennachrichten.
Verlässt ein Mitglied die Gruppe, wird bei allen Gruppenmitgliedern der Gruppenschlüssel gelöscht und es geht von vorne los. D.h. es wird ein neuer Gruppenschlüssel unter den verbliebenen Mitgliedern ausgetauscht. Damit können frühere Gruppenmitglieder selbst wenn sie noch irgendwie an die Nachrichten herankämen, sie nicht mehr entschlüsseln.
Übrigens: Die Status-Funktion, über die WhatsApp-Benutzer Fotos, Videos oder Texte mit allen ihren Kontakten teilen können, ist technisch gesehen auch nichts anderes als die oben beschriebene Gruppen-Funktion. Eine Status-Nachricht wird an den WhatsApp-Server gesendet und dort wird eine Kopie für alle Kontakte erstellt. Zuvor muss auch hier ein Gruppenschlüssel an alle Kontakte versendet werden. Wird ein Kontakt gelöscht wird oder von den Status-Mitteilungen ausgeschlossen, muss der Gruppenschlüssel entsprechend erneuert werden.
Internet-Telefonie
WhatsApp ist mittlerweile mehr als nur ein reiner Instant Messenger. Man kann damit auch telefonieren. Internet-Telefonie hat aber zweifellos eine eigene Internetgeschichte verdient, daher halten wir es hier kurz. Grundsätzlich unterscheiden sich das Übertragen von Texten und Geräusche nicht besonders voneinander. Für einen Computer sind das alles Datenpakete, die von einer IP-Adresse zu einer anderen IP-Adresse gesendet werden müssen. Insofern laufen auch alle Telefonate über den zentralen WhatsApp-Server und zwischen den beiden Teilnehmern findet eine Ende-zu-Ende-Verschlüsselung statt.
Datensammlung
Ein abschließender Hinweis: Die Ende-zu-Ende-Verschlüsselung sorgt dafür, dass niemand die Nachrichten mitlesen kann. Dennoch sammelt der WhatsApp-Server Daten, die nicht geheim sind. Das sind zum Beispiel Telefonnummern, Standortinformationen und ganz allgemein wer, wann mit wem Nachrichten austauscht. Wer nicht möchte, dass die Firma Facebook bzw. WhatsApp diese Daten erfasst, muss auf einen anderen IM umsteigen. Ob die Alternativen besser oder schlechter sind, klären wir jedoch in einer anderen Internetgeschichte.
War der Beitrag hilfreich? Schickt mir eine Nachricht, gebt mir Rückmeldung über die Kommentarfunktion unten oder nutzt die Facebook-Seite zum Blog. Und falls es Euch gefallen hat, lasst ein „Daumen-hoch“ da. 🙂
Mach einen Podcast, ist echt interessant aber natürlich viel Text. Ich fänds mega!
Prima Erläuterungen, gut zu verstehen…
Weiter so und viel Erfolg!
BG
sd