In het kader van het project (Tinfoil Chat) is an attempt to create a prototype of a paranoid-secure messaging system that preserves the confidentiality of correspondence even when the end devices are compromised. To simplify auditing, the project's code is written in Python and onder GPLv3-licentie.
Currently prevalent messaging systems using end-to-end encryption protect correspondence from interception on intermediate servers and from transit traffic analysis, but do not safeguard against issues on the client device side. Compromising end-to-end encrypted systems requires only that the operating system, firmware, or messaging application on the end device be compromised, for example, through the exploitation of previously unknown vulnerabilities, through the initial embedding of software or hardware backdoors in the device, or through the delivery of a fake update with a backdoor (for instance, under pressure from developers by security services or criminal groups). Even if the encryption keys reside on a separate token, if there is control over the user's system, there always remains the possibility of tracing processes, intercepting data from the keyboard, and monitoring output on the screen.
TFC offers a software-hardware complex that requires the use of three separate computers and a special hardware splitter on the client side. All traffic during the interaction of messaging participants is transmitted through the anonymous Tor network, and the messaging programs run as hidden Tor services (users are identified by hidden service addresses and keys during messaging).
The first computer acts as a gateway for connecting to the network and launching the hidden Tor service. The gateway only manipulates already encrypted data, while the remaining two computers are used for encryption and decryption. The second computer can only be used for decryption and displaying received messages, while the third one is solely for encrypting and sending new messages. Accordingly, the second computer has only the keys for decryption, and the third only has the keys for encryption.
De tweede en derde computers hebben geen directe verbinding met het netwerk en zijn gescheiden van de gateway-pc door een speciale USB-splitter die het principe "" volgt en fysieke gegevens slechts in één richting doorlaat. De splitter staat alleen gegevensoverdracht in de richting van de tweede computer toe en alleen gegevensontvangst van de derde computer. De gegevensrichting in de splitter wordt beperkt door middel van (een eenvoudige onderbreking van de Tx- en Rx-lijnen in de kabel is niet voldoende, omdat een onderbreking niet uitsluit dat gegevens in omgekeerde richting worden verzonden en niet garandeert dat de Tx-lijn niet zal worden gebruikt voor lezen en de Rx-lijn voor verzenden). De splitter kan worden samengesteld uit beschikbare onderdelen, () en zijn beschikbaar onder de GNU FDL 1.3-licentie.
Bij een dergelijk schema maakt compromittering van de gateway het onmogelijk om toegang te krijgen tot de versleuteling sleutels en voorkomt verdere aanvallen op de overige apparaten. In het geval van compromittering van de computer waarop de decryptiesleutels zijn opgeslagen, zullen de gegevens niet naar de externe wereld kunnen worden verzonden, omdat de gegevensstroom alleen beperkt is tot het ontvangen van informatie en de terugzending wordt geblokkeerd door de gegevensdiode.
Versleuteling is uitgevoerd op basis van 256-bits sleutels met XChaCha20-Poly1305, voor de beveiliging van de sleutels wordt een langzame hash-functie gebruikt, . Voor het uitwisselen van sleutels wordt gebruikgemaakt van (het Diffie-Hellman-protocol op basis van Curve448) of PSK-sleutels (). Elk bericht wordt verzonden in de modus van perfecte voorwaartse geheimhouding (PFS, ) op basis van Blake2b-hashes, waarbij compromittering van een van de langetermijnsleutels niet toestaat om een eerder onderschepte sessie te ontsleutelen. De interface van de applicatie is uiterst eenvoudig en bestaat uit een venster dat is verdeeld in drie gebieden - verzenden, ontvangen en een commandoregel met een log van de interactie met de gateway. Beheer gebeurt via een speciale .
Bron: opennet.ru
