Som en del af projektet (Tinfoil Chat) er der gjort et forsøg på at skabe en prototype af et paranoid sikkert messagesystem, som ville bevare hemmeligheden om kommunikationen selv ved kompromittering af de endelige enheder. For at forenkle revisionen er projektets kode skrevet i Python og under GPLv3 licens.
De nuværende messagesystemer, der bruger ende-til-ende-kryptering, beskytter kommunikationen mod aflytning på mellemliggende servere og mod analyse af transit-trafik, men beskytter ikke mod problemer på klientens side. For at kompromittere systemer baseret på ende-til-ende-kryptering er det tilstrækkeligt at kompromittere operativsystemet, firmware eller messaging-app på den endelige enhed, for eksempel ved at udnytte tidligere ukendte sårbarheder, ved oprindeligt at indføre software- eller hardwarebagdøre i enheden eller ved at levere en falsk opdatering med en bagdør (for eksempel under pres fra myndighederne eller kriminelle grupper). Selv hvis nøglerne til kryptering ligger på en separat token, er der altid mulighed for at spore processerne, aflytte data fra tastaturet og overvåge output på skærmen, når der er kontrol over brugerens system.
TFC tilbyder et software-hardware-kompleks, der kræver anvendelse af tre separate computere på klientsiden og en specialiseret hardware-splitter. Al trafik under interaktionen mellem deltagerne i messagesystemet sendes gennem det anonyme netværk Tor, og programmerne til messaging fungerer som skjulte Tor-tjenester (brugerne identificeres under messaging ved hjælp af adresserne til de skjulte tjenester og nøglerne).
Den første computer fungerer som gateway til tilslutning til netværket og opstart af den skjulte Tor-tjeneste. Gatewayen manipulerer kun med allerede krypterede data, mens de to andre computere bruges til kryptering og dekryptering. Den anden computer kan kun bruges til dekryptering og visning af modtagne beskeder, mens den tredje kun bruges til kryptering og afsendelse af nye beskeder. Den anden computer har derfor kun nøgler til dekryptering, mens den tredje kun har nøgler til kryptering.
De anden og tredje computere har ikke direkte forbindelse til netværket og er adskilt fra gateway-computeren af en speciel USB-splitter, der bruger princippet "" og kun tillader data at passere fysisk i én retning. Splitteren tillader kun data at sende til den anden computer og kun modtage data fra den tredje computer. Retningen af data i splitteren begrænses ved hjælp af (en simpel afbrydelse af Tx- og Rx-linjerne i kabel er ikke tilstrækkelig, da afbrydelsen ikke udelukker transmission af data i modsat retning og ikke garanterer, at Tx-linjen ikke vil blive brugt til at læse, og Rx til at sende). Splitteren kan laves af let tilgængelige materialer, () og er tilgængelige under GNU FDL 1.3-licensen.
Med en sådan opsætning vil kompromittering af gatewayen få adgang til krypteringsnøglerne og forhindre yderligere angreb på de resterende enheder. I tilfælde af kompromittering af computeren, hvor nøglerne til dekryptering er gemt, kan oplysningerne ikke overføres til omverdenen, da datastreamen kun er begrænset til modtagelse af oplysninger, og den omvendte overførsel blokeres af datadioden.
Kryptering er udført med 256-bit nøgler baseret på XChaCha20-Poly1305, og en langsom hash-funktion bruges til at beskytte nøglerne med et password . Til nøgleudveksling anvendes (Diffie-Hellman-protokollen baseret på Curve448) eller PSK-nøgler (). Hver meddelelse overføres i perfekt fremadrettet hemmelighed (PFS, ) baseret på Blake2b-hashes, hvor kompromittering af en af de langvarige nøgler ikke tillader dekryptering af tidligere opsnappede sessioner. Applikationens interface er meget enkelt og inkluderer et vindue opdelt i tre områder — afsendelse, modtagelse og kommandolinje med log over interaktionen med gatewayen. Styringen sker via et specielt .
Kilde: opennet.ru
