V rámci projektu (Tinfoil Chat) byla podniknuta pokus o vytvoření prototypu paranoidně zabezpečeného systému pro směnu zpráv, který by uchovával tajemství konverzací i při kompromitaci koncových zařízení. Pro usnadnění provádění auditu je kód projektu napsán v jazyce Python a distribuován pod licencí GPLv3.
Dnešní běžně používané systémy pro směnu zpráv, které využívají šifrování end-to-end, chrání konverzace před odposlechem na prostředních serverech a před analýzou transitního provozu, ale nechrání před problémy na straně klientského zařízení. Pro kompromitaci systémů založených na end-to-end šifrování stačí kompromitovat operační systém, firmware nebo aplikaci-messenger na koncovém zařízení, například prostřednictvím exploitace dosud neznámých zranitelností, počátečním zavedením softwarových nebo hardwarových zadních vrátek do zařízení, nebo dodáním falešné aktualizace s backdoorem (například při tlaku na vývojáře ze strany tajných služeb nebo kriminálních skupin). I když jsou šifrovací klíče uchovávány na samostatném tokenu, při existenci kontroly nad systémem uživatele vždy zůstává možnost trasování procesů, odposlechu dat z klávesnice a sledování výstupu na obrazovku.
TFC nabízí programově-hardwarový komplex, který vyžaduje použití na straně klienta tří samostatných počítačů a speciálního hardwarového splitteru. Veškerý provoz během interakce účastníků směny zpráv je přenášen prostřednictvím anonymní sítě Tor, a programy pro směnu zpráv jsou provedeny ve formě skrytých služeb Tor (uživatelé při směně zpráv se identifikují podle adres skrytých služeb a klíčů).
První počítač funguje jako brána pro připojení k síti a spuštění skryté služby Tor. Brána manipuluje pouze s již zašifrovanými daty, zatímco pro šifrování a dešifrování jsou použity dva zbývající počítače. Druhý počítač může být použit pouze pro dešifrování a zobrazování přijatých zpráv, třetí pouze pro šifrování a odesílání nových zpráv. Příslušně má druhý počítač pouze klíče pro dešifrování, zatímco třetí má pouze klíče pro šifrování.
Dva a třetí počítače nemají přímé připojení k síti a jsou odděleny od počítače-gateway speciálním USB rozbočovačem, který používá princip „“ a přenáší data fyzicky pouze jedním směrem. Rozbočovač povoluje pouze odesílání dat směrem k druhému počítači a pouze přijímání dat od třetího počítače. Směr dat v rozbočovači je omezen pomocí (obyčejné přerušení Tx a Rx linek v kabelu nestačí, protože přerušení nevylučuje přenos dat v opačném směru a nezaručuje, že linka Tx nebude použita pro čtení, zatímco Rx pro přenos). Rozbočovač lze sestavit z dostupných komponentů, () a jsou k dispozici pod licencí GNU FDL 1.3.
Při podobném schématu kompromitace gateway získat přístup k šifrovacím klíčům a neumožní pokračovat v útoku na zbývající zařízení. V případě kompromitace počítače, na kterém jsou umístěny klíče pro dešifrování, nebude možné informace z něj přenést do vnějšího světa, protože tok dat je omezen pouze na přijímání informací a zpětný přenos blokuje datová dioda.
Šifrování je realizováno na základě 256bitových klíčů na XChaCha20-Poly1305, pro ochranu klíčů heslem se používá pomalá hashovací funkce . Pro výměnu klíčů se používá (protokol Diffie-Hellman na základě Curve448) nebo PSK klíče (). Každá zpráva je přenášena v režimu dokonalé přímé tajnosti (PFS, ) na základě hashů Blake2b, při kterém kompromitace jednoho z dlouhodobých klíčů neumožňuje dešifrovat dříve zachycenou relaci. Rozhraní aplikace je maximálně jednoduché a zahrnuje okno rozdělené na tři oblasti – odesílání, přijímání a příkazový řádek s logem interakce s gateway. Řízení probíhá prostřednictvím speciálního .
Zdroj: opennet.ru
