Im Rahmen des Projekts (Tinfoil Chat) wurde der Versuch unternommen, einen Prototyp einer paranoid gesicherten Messaging-Plattform zu entwickeln, die die Vertraulichkeit der Kommunikation selbst bei Kompromittierung der Endgeräte bewahren würde. Um die Überprüfung zu erleichtern, wurde der Projektcode in Python geschrieben und unter Lizenz GPLv3.
Heutzutage verbreitete Messaging-Systeme, die Ende-zu-Ende-Verschlüsselung nutzen, schützen die Kommunikation vor Abhörmaßnahmen auf Zwischenservern und vor der Analyse des Transitverkehrs, schützen jedoch nicht vor Problemen auf der Seite des Client-Geräts. Um Systeme mit Ende-zu-Ende-Verschlüsselung zu kompromittieren, genügt es, das Betriebssystem, die Firmware oder die Messenger-App auf dem Endgerät zu kompromittieren, zum Beispiel durch Ausnutzung zuvor unbekannter Schwachstellen, durch initiale Implantation von Software- oder Hardware-Backdoors oder durch die Bereitstellung eines gefälschten Updates mit einem Hintertür-Programm (zum Beispiel unter Druckausübung auf den Entwickler durch Geheimdienste oder kriminelle Gruppen). Selbst wenn die Schlüssel zur Verschlüsselung auf einem separaten Token liegen, bleibt mit Kontrolle über das Benutzer-System immer die Möglichkeit, Prozesse nachzuverfolgen, Daten von der Tastatur abzufangen und die Bildschirmansicht zu überwachen.
TFC bietet ein Hard- und Software-Komplex, der den Einsatz von drei separaten Computern auf der Client-Seite und eines speziellen Hardware-Splitters erfordert. Der gesamte Datenverkehr während der Interaktion der Messaging-Teilnehmer wird über das anonyme Tor-Netzwerk geleitet, und die Messaging-Programme sind in Form von versteckten Tor-Diensten implementiert (Benutzer werden beim Messaging anhand der Adressen der versteckten Dienste und der Schlüssel identifiziert).
Der erste Computer fungiert als Gateway zum Netzwerk und startet den versteckten Tor-Dienst. Das Gateway manipuliert nur bereits verschlüsselte Daten, während die Verschlüsselung und Entschlüsselung von den beiden anderen Computern durchgeführt werden. Der zweite Computer kann nur zur Entschlüsselung und Anzeige der empfangenen Nachrichten verwendet werden, während der dritte ausschließlich zur Verschlüsselung und zum Versand neuer Nachrichten dient. Dementsprechend verfügt der zweite Computer nur über die Schlüssel zur Entschlüsselung, während der dritte lediglich die Schlüssel zur Verschlüsselung hat.
Der zweite und dritte Computer haben keine direkte Verbindung zum Netzwerk und sind durch einen speziellen USB-Splitter vom Gateway-Computer getrennt, der das Prinzip „“ verwendet und Daten physisch nur in eine Richtung durchlässt. Der Splitter erlaubt nur das Senden von Daten an den zweiten Computer und nur den Empfang von Daten vom dritten Computer. Die Richtung der Daten im Splitter wird durch eingeschränkt (ein einfacher Unterbruch der Tx- und Rx-Leitungen im Kabel reicht nicht aus, da ein Unterbruch nicht ausschließt, dass Daten in umgekehrter Richtung übertragen werden, und nicht garantiert, dass die Tx-Leitung nicht zum Lesen und die Rx-Leitung zum Senden verwendet wird). Der Splitter kann aus alltäglichen Teilen zusammengestellt werden, () und stehen unter der GNU FDL 1.3-Lizenz zur Verfügung.
Bei einem solchen Setup führt eine Kompromittierung des Gateways dazu, dass der Zugriff auf die Verschlüsselungsschlüssel erhalten bleibt und die Fortsetzung des Angriffs auf die verbleibenden Geräte nicht möglich ist. Im Falle einer Kompromittierung des Computers, auf dem die Schlüssel zur Entschlüsselung gespeichert sind, kann die Information von ihm nicht an die Außenwelt übermittelt werden, da der Datenfluss nur auf den Erhalt von Informationen beschränkt ist und die Rückübertragung durch die Daten-Diode blockiert wird.
Die Verschlüsselung erfolgt auf Basis von 256-Bit-Schlüsseln mit XChaCha20-Poly1305, zur Sicherung der Schlüssel wird eine langsame Hash-Funktion verwendet. Für den Schlüsseltausch kommt zum Einsatz (Diffie-Hellman-Protokoll auf Basis von Curve448) oder PSK-Schlüssel (). Jede Nachricht wird im Modus der perfekten Vorwärtsgeheimhaltung (PFS, ) auf Basis von Blake2b-Hashes übertragen, bei dem die Kompromittierung eines der langfristigen Schlüssel nicht ermöglicht, frühere abgefangene Sitzungen zu entschlüsseln. Die Benutzeroberfläche der Anwendung ist äußerst einfach und umfasst ein Fenster, das in drei Bereiche unterteilt ist – Senden, Empfangen und eine Befehlszeile mit einem Log zur Interaktion mit dem Gateway. Die Steuerung erfolgt über ein spezielles .
Quelle: opennet.ru
