Projekti raames (Tinfoil Chat) on prooviti luua prototüüpi paranoiliselt kaitstud sõnumivahetussüsteemist, mis säilitaks vestluste saladuse isegi lõppseadmete kompromiteerimise korral. Projekti koodi lihtsustamiseks on see kirjutatud Pythonis ja GPLv3 litsentsi alusel.
Tänapäeval levinud sõnumite exchange süsteemid, mis kasutavad lõpp-punktide krüptimist, kaitsevad vestlusi keskkonna serverites pealtkuulamise ja ülekandeanalüüsi eest, kuid ei kaitse kliendi seadme probleemide eest. Krüptimisega põhinevate süsteemide kompromiteerimiseks piisab lõpp-seadmest operatsioonisüsteemi, püsivara või sõnumirakenduse kompromiteerimisest, näiteks varem tundmatute haavatavuste kasutamise kaudu, seadmesse tark- või riistvara tagavarade algse paigutamisega või vale uuenduse edastamisega, mis sisaldab tagaukse (näiteks survetegevuse kaudu arendajate suhtes riigiagente või kuritegelikke gruppe). Isegi kui krüptimise võtmed asuvad eraldi tokenil, säilib alati võimalus, et kasutaja süsteemi jälgimise korral on võimalik jälgida protsesse, pealt kuulata klaviatuuri andmeid ja jälgida ekraani väljundit.
TFC pakub tarkvara- ja riistvarakompleksi, mis nõuab kolme eraldi arvuti ja spetsiaalse riistvaralise jaoturi kasutamist kliendi poolel. Kogu liiklus osalejate vahelises suhtluses edastatakse anonüümse Tor-võrgu kaudu ning sõnumivahetussüsteemid on loodud Tor-i peidetud teenustena (kasutajad identifitseeritakse sõnumivahetuses peidetud teenuste aadresside ja võtmete kaudu).
Esimene arvuti toimib väravana võrku sisenemiseks ja Tor-i peidetud teenuse käivitamiseks. Värav manipuleerib ainult juba krüpteeritud andmetega, samas kui krüpteerimiseks ja dekodeerimiseks kasutatakse kahte ülejäänud arvutit. Teist arvutit võib kasutada ainult saadud sõnumite dekodeerimiseks ja kuvamiseks, samas kui kolmandat ainult uute sõnumite krüpteerimiseks ja saatmiseks. Vastavalt sellele on teisel arvutil ainult dekodeerimisvõtmed, kolmandal aga ainult krüpteerimisvõtmed.
Teisel ja kolmandal arvutil ei ole otseühendust võrguga ja need on eraldatud väravaarvutist spetsiaalse USB-jaoturiga, mis kasutab põhimõtet „» ja füüsiliselt andmeid ainult ühes suunas edastavad. Jaotur lubab andmete saatmist vaid teise arvuti suunas ning ainult kolmandalt arvutilt andmete vastuvõttu. Andmete suund jaoturis on piiratud (lihtsast Tx ja Rx joonte katkestamisest ei piisa, kuna katkestamine ei välista andmete edastamist vastupidises suunas ja ei taga, et Tx liini ei kasutata lugemiseks ning Rx liini edastamiseks). Jaoturi saab kokku panna koduste komponentidega, () ja on saadaval GNU FDL 1.3 litsentsi all.
Sellise skeemi korral kompromiteerimine saab võimaluse krüpteerimisvõtmete juurde pääseda ja takistab rünnaku jätkamist ülejäänud seadmetele. Kui arvuti, kus krüpteerimise võtmed asuvad, on kompromiteeritud, ei õnnestu sellelt teavet välismaailma edastada, kuna andmevoog on piiratud ainult teabe vastuvõtmisega ja vastupidist edastust blokeerib andme diood.
Krüpteerimine on teostatud 256-bitiste võtmete alusel XChaCha20-Poly1305, võtmete kaitsmiseks parooliga kasutatakse aeglast räsifunktsiooni . Võtmete vahetamiseks kasutatakse (Curve448 põhine Diffie-Hellmani protokoll) või PSK- võtmed (). Iga sõnum edastatakse täiustatud esimese järgu saladuse (PFS, ) alusel Blake2b hash'ide põhjal, kus ühe pikaajalise võtme kompromiteerimine ei võimalda varasemalt haaratud seansi dešifreerimist. Rakenduse liides on äärmiselt lihtne ning sisaldab akent, mis on jagatud kolme piirkonda — saatmine, vastuvõtmine ja käsurea logi, mis kajastab suhtlust väravaga. Halduse teostamine toimub spetsiaalse .
Allikas: opennet.ru
