U okviru projekta (Tinfoil Chat) poduzet je pokušaj izrade prototipa paranoično zaštićenog sustava za razmjenu poruka koji bi čuvao tajnost komunikacije čak i u slučaju kompromitacije krajnjih uređaja. Kako bi se olakšala revizija, kod projekta napisan je na jeziku Python i pod GPLv3 licencom.
Danas rašireni sustavi za razmjenu poruka koji koriste end-to-end enkripciju zaštitili su komunikaciju od presretanja na posredničkim poslužiteljima i od analize prijenosnog prometa, ali ne štite od problema na strani klijentskog uređaja. Za kompromitiranje sustava temeljenih na end-to-end enkripciji dovoljno je kompromitirati operativni sustav, firmware ili aplikaciju za razmjenu poruka na krajnjem uređaju, primjerice, eksploatacijom ranjivosti prethodno nepoznatih, ranijim umetanjima softverskih ili hardverskih zaklada u uređaj ili putem dostave lažnog ažuriranja s backdoorom (primjerice, pod pritiskom agencija za provođenje zakona ili kriminalnih grupa). Čak i ako su ključevi za enkripciju pohranjeni na zasebnom tokenu, uz kontrolu nad korisničkim sustavom uvijek postoji mogućnost praćenja procesa, presretanja podataka s tipkovnice i praćenja ispisa na ekranu.
TFC nudi softversko-hardverski kompleks koji zahtijeva korištenje tri odvojena računala i posebnog hardverskog splitter-a na strani klijenta. Sav promet tijekom interakcije sudionika u razmjeni poruka prenosi se putem anonimne mreže Tor, a programi za razmjenu poruka izvršeni su u obliku skrivenih Tor usluga (korisnici se identificiraju prema adresama skrivenih usluga i ključevima).
Prvo računalo služi kao gateway za povezivanje s mrežom i pokretanje skrivene Tor usluge. Gateway manipulira samo već enkriptiranim podacima, dok se za enkripciju i dekripciju koriste preostala dva računala. Drugo računalo može se koristiti samo za dekripciju i prikaz primljenih poruka, a treće samo za enkripciju i slanje novih poruka. Prema tome, drugo računalo ima samo ključeve za dekripciju, a treće samo ključeve za enkripciju.
Drugi i treći računalni nemaju izravnu vezu s mrežom i odvojeni su od računala-gatewaya posebnim USB splitterom koji koristi princip „” i fizički propušta podatke samo u jednom smjeru. Splitter omogućava samo slanje podataka prema drugom računalu i samo prijem podataka od trećeg računala. Smjer podataka u splitteru ograničen je pomoću (obični prekid linija Tx i Rx u kabelu nije dovoljan, jer prekid ne isključuje prijenos podataka u suprotnom smjeru i ne jamči da linija Tx neće biti korištena za čitanje, a Rx za slanje). Splitter se može sastaviti od dostupnih komponenti, () i dostupne su pod licencom GNU FDL 1.3.
Uz ovakvu shemu, kompromitacija gatewaya omogućit će pristup ključevima za šifriranje i neće omogućiti nastavak napada na preostala uređaja. U slučaju kompromitacije računala, na kojem su pohranjeni ključevi za dešifriranje, informacije s njega neće moći biti prenesene u vanjski svijet, jer je protok podataka ograničen samo na primanje informacija, a povratni prijenos blokira dioda podataka.
Šifriranje je izvedeno na temelju 256-bitnih ključeva na XChaCha20-Poly1305, a za zaštitu ključeva uporabom je spora heš funkcija . Za razmjenu ključeva koristi se (Diffie – Hellman protokol na osnovi Curve448) ili PSK ključevi (). Svaka poruka se prenosi u režimu savršene neposredne tajnosti (PFS, ) na temelju hashova Blake2b, pri čemu kompromitacija jednog od dugoročnih ključeva ne omogućava dešifriranje ranije presretnute sesije. Sučelje aplikacije izuzetno je jednostavno i uključuje prozor podijeljen u tri područja — slanje, primanje i komandnu liniju s logom interakcije s gatewayem. Upravljanje se obavlja preko posebnog .
Izvor: opennet.ru
