În cadrul proiectului (Tinfoil Chat) a fost încercarea de a crea un prototip al unui sistem de mesagerie paranoic și securizat, care ar păstra secretul corespondenței chiar și în cazul compromisului dispozitivelor finale. Pentru a facilita auditul, codul proiectului este scris în limbajul Python și sub licența GPLv3.
Sistemele de mesagerie comune, care utilizează criptarea de la un capăt la altul, permit protejarea corespondenței împotriva interceptării pe serverele intermediare și împotriva analizei traficului de tranzit, dar nu protejează de problemele de pe dispozitivul client. Pentru a compromite sistemele bazate pe criptarea de la un capăt la altul, este suficient să se compromită sistemul de operare, firmware-ul sau aplicația de mesagerie pe dispozitivul final, de exemplu, prin exploatarea unor vulnerabilități anterior necunoscute, prin infiltrarea inițială în dispozitiv cu backdoor-uri software sau hardware sau prin livrarea unei actualizări false cu un backdoor (de exemplu, sub presiunea exercitată asupra dezvoltatorului de către agențiile de securitate sau grupările criminale). Chiar dacă cheile pentru criptare se află pe un token separat, ori de câte ori există un control asupra sistemului utilizatorului, rămâne întotdeauna posibilitatea de a urmări procesele, de a intercepta datele de la tastatură și de a monitoriza ieșirea pe ecran.
TFC oferă un complex software și hardware, care necesită utilizarea a trei computere separate pe partea clientului și a unui splitter hardware special. Tot traficul în timpul interacțiunii participanților la schimbul de mesaje este transmis prin rețeaua anonimă Tor, iar aplicațiile pentru mesagerie sunt realizate sub formă de servicii ascunse Tor (utilizatorii la schimbul de mesaje sunt identificați prin adresele serviciilor ascunse și chei).
Primul computer acționează ca un gateway pentru conectarea la rețea și lansarea serviciului ascuns Tor. Gateway-ul manipulează doar datele deja criptate, iar pentru criptare și decriptare sunt utilizate celelalte două computere. Al doilea computer poate fi folosit doar pentru decriptarea și afișarea mesajelor primite, iar al treilea doar pentru criptarea și trimiterea de noi mesaje. Prin urmare, al doilea computer are doar cheile pentru decriptare, iar al treilea are doar cheile pentru criptare.
Al doilea și al treilea computer nu au o conexiune directă la rețea și sunt separate de computerul-gateway printr-un splitter USB special care folosește principiul „„ și permite transmiterea datelor fizic doar într-o singură direcție. Splitterul permite doar trimiterea datelor către al doilea computer și doar primirea datelor de la al treilea computer. Direcția datelor în splitter este limitată prin (simpla rupere a liniilor Tx și Rx în cablu nu este suficientă, deoarece ruptura nu exclude transmiterea datelor în direcția opusă și nu garantează că linia Tx nu va fi folosită pentru citire, iar Rx pentru transmitere). Splitterul poate fi asamblat din piese disponibile, () și sunt disponibile sub licența GNU FDL 1.3.
În cazul acestei scheme, compromiterea gateway-ului accesul la cheile de criptare și nu va permite continuarea atacului asupra celorlalte dispozitive. În cazul compromiterii computerului pe care sunt stocate cheile de decriptare, informațiile de pe acesta nu pot fi transmise în exterior, deoarece fluxul de date este restricționat doar la primirea informațiilor, iar transmiterea inversă este blocată de dioda de date.
Criptarea este realizată pe baza cheilor de 256 de biți folosind XChaCha20-Poly1305, iar pentru protecția cheilor este utilizată o funcție hash lentă . Pentru schimbul de chei se utilizează (protocolul Diffie-Hellman bazat pe Curve448) sau chei PSK (). Fiecare mesaj este transmis în modul de secret perfect de avansare (PFS, ) pe baza hash-urilor Blake2b, în cadrul căruia compromiterea uneia dintre cheile pe termen lung nu permite decriptarea unei sesiuni interceptate anterior. Interfața aplicației este extrem de simplă și include o fereastră împărțită în trei zone - trimitere, primire și linie de comandă cu jurnalul interacțiunii cu gateway-ul. Controlul se realizează printr-un .
Sursa: opennet.ro
