# Cryptocat

Cryptocat war eine freie Software für Ende-zu-Ende-verschlüsselten Chat. Nachrichten konnten damit auf dem gesamten Übertragungsweg nicht entschlüsselt werden. Die Arbeit an dem Projekt wurde von Nadim Kobeissi eingestellt und die notwendigen Server abgeschaltet.

## Geschichte

Cryptocat wurde 2011 erstmals veröffentlicht. Cryptocat wurde zunächst als Webanwendung auf einer Website angeboten, wodurch die Auslieferung des Programmcodes bei jeder Anwendung erneut erfolgen musste und nur durch das System der TLS-Zertifizierungsstellen authentisiert ist, welches durch seine unüberschaubar große Angriffsfläche als anfällig für Mittelsmannangriffe gilt. Nadim verteidigte diese Methode zunächst für über ein Jahr und behauptete, sie sei sicher, solange der ausliefernde Server nicht kompromittiert sei. Cryptocat wird stattdessen nunmehr als von den Browser-Herstellern signierte Browsererweiterungen angeboten, welche lokal vorgehalten werden.
Cryptocat-Entwickler Nadim Kobeissi sagte, dass er im Juni 2012 vom Ministerium für Innere Sicherheit der Vereinigten Staaten an der US-Grenze festgehalten und zur Zensurresistenz von Cryptocat verhört wurde. Er twitterte nachher über den Vorfall, was zu Medienecho und einem Anstieg der Popularität der Software führte.
Im November 2012 wurde bekannt, dass Cryptocat Initialisierungs-Nonces für den Zählermodus der AES-Blockverschlüsselung mehrfach verwendete, da beide Gesprächspartner mit demselben Wert starteten. Cryptocat startet nun mit zufälligen Nonces und übermittelt und speichert verwendete Nonces, um bei einer Wiederverwendung Nachrichten zu verwerfen und Warnmeldungen auszugeben.
Im selben Monat wurden auch Ergebnisse einer unabhängigen Code-Prüfung durch Mario Heiderich et al. veröffentlicht, in der auf eine Schwäche für Cross-Site-Scripting aufmerksam gemacht wird.
Im Juni 2013 wurde Cryptocat von dem Journalisten Glenn Greenwald bei seinem Hongkong-Aufenthalt genutzt, um den NSA-Whistleblower Edward Snowden erstmals zu treffen, nachdem andere Verschlüsselungssoftware den Dienst versagt hatte. Im November 2013 wurde Cryptocat im Iran verboten, kurz nachdem Irans neuer Präsident Hassan Rohani gewählt worden war, welcher eine offenere Internet-Gesetzgebung versprochen hatte.
Seit 2013 kann Cryptocat mit dem Facebook Messenger verbinden, um darüber verschlüsselte Gesprächssitzungen mit anderen Cryptocat-Nutzern aufzubauen.
Nachdem Apple am 27. Dezember 2013 die Aufnahme der iOS-App in seinen App Store aus geheimen Gründen zunächst abgelehnt hatte, ist es dort mittlerweile auch erhältlich.
2014 führte Cryptocat eine verbesserte Benutzerauthentifizierung ein, um das Erkennen von Mittelsmannangriffen zu erleichtern. Die Verbesserungen wurden vorgenommen, nachdem eine Prüfung durch iSec Partners das vorherige Verfahren als unzureichend kritisiert hatte.
In einer von der deutschen PSW Group im Juni 2014 durchgeführten Untersuchung zur Datensicherheit und Benutzbarkeit von Sofortnachrichten-Verschlüsselungssoftware wurde Cryptocat neben Threema und Surespot am besten bewertet. Im November 2014 erreichte Cryptocat 7 von 7 Punkten auf der Wertungsliste für sichere Textnachrichtendienste von der Electronic Frontier Foundation. Im selben Jahr erhielt die Software den internationalen Elevate Award.
Am 19. Februar 2016 wurde Cryptocat aus dem Google Web Store, scheinbar vom Autor selbst, entfernt. Daraufhin meldete sich Nadim Kobeissi auf Twitter und wies auf einen Brief an die Benutzer auf der Cryptocat-Website hin, in dem es um die Zukunft von Cryptocat ginge. Das Schreiben erklärte, der Service würde temporär komplett eingestellt werden, bis eine komplette Neuprogrammierung des Codes fertig sei. Kobeissi begründete die vorübergehende Einstellung des Messengers damit, dass er veraltet sei. Auch schrieb er, die zukünftige Version sei nur noch als Desktop-Client verfügbar, und nicht mehr wie bisher als Erweiterung für den Browser, außerdem sollen viele interessante Technologien integriert werden, an denen er bei INRIA arbeitet. Aus weiteren Twitter-Posts ließ sich herauslesen, dass im neuen Cryptocat Funktionen wie Emoticons, das Senden von Dateien oder eine Freundesliste vorhanden sein werden, weiterhin werde es möglich sein, Accounts anzulegen.
Die neue Version von CryptoCat wurde Ende Mai 2016 veröffentlicht und wurde, laut Aussage der Entwickler, innerhalb von 24 Stunden über 10.000 Mal heruntergeladen, einen Monat danach verzeichnete die Software bereits über eine Million Downloads.
Am 5. Februar 2019 gab das Team bekannt, CryptoCat nicht länger weiterzuentwickeln und man den Service mit dem kommenden Tag einstellt. Als Alternative empfiehlt man den Messenger Wire.

## Zweck

Cryptocat wird als eine Erweiterung für die meisten gebräuchlichen Webbrowser oder als Anwendungssoftware („App“) für GNU/Linux, Windows, macOS, iOS und Android (Beta) angeboten. Es wird hauptsächlich von Nadim Kobeissi entwickelt und als freie Software auch im Quelltext veröffentlicht. Die Browsererweiterungen sind unter den Bedingungen von Version 3 der GNU Affero General Public License (AGPL) verfügbar, die eigenständigen Anwendungen unter Version 3 der GNU General Public License (GPL).
Cryptocats erklärtes Ziel ist es, sicher verschlüsselte Kommunikation zugänglicher für durchschnittliche Anwender zu machen. Die Chat-Software soll Datensicherheit und einfache Nutzbarkeit in Einklang bringen und dabei mehr Vertraulichkeit als Dienste wie Google Talk oder Internet Relay Chat bieten, wobei ein höheres Niveau an Benutzerfreundlichkeit gewahrt werden soll als bei Pidgin. Cryptocat war beteiligt an der Entwicklung von (standardisierter) Grundlagentechnik für kryptographische Webanwendungen allgemein und wird so auch als Vorreiter für eine neue Generation besonders benutzerfreundlicher, browserbasierter Verschlüsselungsanwendungen gesehen.
Bis 2013 wurden mehrere schwerwiegende Fehler im Verschlüsselungssystem bekannt. Nach mehreren professionellen Sicherheitsprüfungen wurden keine weiteren gravierenden Probleme bekannt, und Cryptocat schaffte es zu einer Empfehlung durch die Electronic Frontier Foundation (EFF). Von Entwicklerseite wird es nach wie vor als unfertig bezeichnet und davor gewarnt, der Software sein Leben anzuvertrauen.

## Merkmale

Cryptocat ermöglicht auf jedem Desktop-Rechner mit einem modernen Webbrowser die schnelle Einrichtung einer Ende-zu-Ende-verschlüsselten Chatumgebung. Cryptocat ist derzeit kompatibel mit Google Chrome, Mozilla Firefox, Safari und Opera sowie iOS-Geräten und macOS.
Alle über Cryptocat versandten Nachrichten, einschließlich Gruppenchat-Nachrichten und Dateiübertragungen, sind Ende-zu-Ende-verschlüsselt, wodurch dem gesamten Übertragungssystem unterwegs nur verschlüsselte Daten anvertraut werden, zu denen nur die gewünschten Empfänger passende Entschlüsselungsschlüssel haben. Cryptocats Kryptographie gewährleistet Vertraulichkeit, Integrität, Authentifizierung und Folgenlosigkeit bei allen Unterhaltungen und bietet bei Dateiübertragungen und Zweiergesprächen mit OTR zusätzlich Abstreitbarkeit. Cryptocat bietet Ende-zu-Ende-Verschlüsselung mit Folgenlosigkeit bei Schlüsselverlust (englisch forward secrecy) und Abstreitbarkeit (deniability), sowohl für Einzel- wie auch für Gruppengespräche und Dateiübertragungen.
Cryptocat bietet selber keine Lösung für bleibende Kontaktlisten. Als Alternative wurde eine Funktion zur Integration des Facebook Messengers implementiert.
Cryptocat bietet selber keine Lösung zur Anonymisierung der Verkehrsdaten. Das Projekt plant eine Version für gemeinnützige Organisationen zur eingebetteten Nutzung in Raspberry-Pi-Geräten. Im Juli 2013 wurde auch mit der Entwicklung einer Commotion-Netzwerk-kompatiblen Version begonnen.

## Architektur

Die Client-Software ist als Browsererweiterung implementiert oder für Mac OS X und iOS auch als native Anwendung. Die weite Verbreitung von Webbrowsern wird häufig als Grund für die Entscheidung für diese Plattform angeführt.

### Verschlüsselung

Cryptocat nutzt das Off-the-Record-Messaging-Protokoll (OTR), welches verschlüsselte Nachrichtenübermittlung zwischen jeweils zwei Beteiligten ermöglicht. Es nutzt weiterhin ein eigenes Protokoll zur Verschlüsselung von Gruppengesprächen, welches auf Curve25519, AES-256 und HMAC-SHA512 basiert, die allesamt Industriestandards für Kryptographieanwendungen darstellen. Da Cryptocat für jede Unterhaltung neue Schlüsselpaare erzeugt, setzt es eine Form von Folgenlosigkeit um.
Die Verschlüsselung für Dateiübertragungen basiert auf herkömmlichem OTR. OTR liefert den Einmalschlüssel, aus dem dann mit SHA512 der eigentliche Verschlüsselungsschlüssel und Daten für die Authentisierung abgeleitet werden. Die Datei wird dann in 63-Kilobyte-Abschnitten per AES256 im Zählermodus verschlüsselt. Ein mittels HMAC gewonnener Authentisierungsprüfwert über die verschlüsselten Daten wird angefügt. Dann wird eine XMPP-Dateiübertragung eingeleitet (gemäß XEP-0096) und die verschlüsselte Datei mit XMPP als sogenannter „In Band Bytestream“ (gemäß XEP-0047) übertragen.

### Netzwerk

Cryptocats Netzwerk basiert auf Extensible Messaging and Presence Protocol (XMPP) und Bidirectional-streams Over Synchronous HTTP (BOSH). Das System transportiert nur Daten und speichert den Datenschutzrichtlinien des Projektes zufolge nichts. Das Projekt nutzt ejabberd und nginx für das XMPP-BOSH-Relais. Zusätzlich zur clientseitigen Ende-zu-Ende-Verschlüsselung wird Kommunikation zwischen Client und Server mit Transport Layer Security (TLS/SSL) abgesichert.
Cryptocat veröffentlicht seine Server-Konfigurationsdateien und Anweisungen für andere zur Einrichtung eigener Server für die Nutzung mit dem Cryptocat-Client.
2013 wurde Cryptocats Server zu dem schwedischen Internet-Dienstleister Bahnhof migriert, der auch WikiLeaks und The Pirate Bay bediente. Die Server sind in Stockholm in einem Bunker aus Zeiten des Kalten Krieges untergebracht.

## Sicherheitsbelange

Manche Versionen von Cryptocat wurden beanstandet, da sie den Browser zur Verschlüsselung von Nachrichten nutzten, was einige Forscher für weniger sicher halten als die Desktop-Umgebung. Jüngere Versionen stützten sich auf browsereigene Zufallszahlenerzeugung.
Nach Zweifeln an der Sicherheit von TLS insgesamt wurde das TLS-Zertifikat von Cryptocat in Google Chrome und Chromium gepinnt.
Im Juli 2013 wurde von dem Sicherheitsforscher Steve Thomas ein Problem mit der Konvertierung von Werten aus dem eigentlich sicheren Pseudozufallszahlengenerator gemeldet.

### Decryptocat

Steve Thomas machte im selben Monat auf eine weitere Sicherheitslücke aufmerksam, die zur Entschlüsselung beliebiger Gruppennachrichten genutzt werden kann, die mit Cryptocat zwischen September 2012 und dem 19. April 2013 verschlüsselt wurden. Dieser bisher schwerwiegendste Fehler war durch die Nichtberücksichtigung der schwachen Typisierung von JavaScript entstanden. Bei der Schlüsselerzeugung wurden anstatt von 32 Bytes, die jeweils 256 Werte annehmen können, 32 Dezimalstellen erzeugt. Dies reduzierte die Schlüsselstärke von einer Komplexität von etwa 2$^{250}$ auf etwa 2$^{54}$. Einzelgesprächsnachrichten waren nicht betroffen und der Fehler war einen Monat zuvor behoben worden. Zwei externe Code-Prüfungen, durch Cure53 und VeraCode, übersahen diesen Fehler. Nachdem Thomas’ Entdeckungen veröffentlicht wurden, gab Cryptocat eine Sicherheitsempfehlung aus, die alle Nutzer aufforderte, die Aktualisierung ihrer Software sicherzustellen. Seit 2011 findet sich auf der Startseite der Webpräsenz und in der Software selbst eine Warnung über die experimentelle Natur des Projektes. Auf dem Cryptocat-Blog wurde eine Warnung eingestellt, die Nutzern erklärt, dass über die Software geführte Gruppenunterhaltungen in der Vergangenheit gebrochen worden sein könnten.