Nell'ambito del progetto (Tinfoil Chat) è stato tentato di creare un prototipo di sistema di messaggistica paranoico e protetto, che mantenesse segreta la corrispondenza anche in caso di compromissione dei dispositivi finali. Per semplificare il processo di audit, il codice del progetto è scritto in Python e sotto licenza GPLv3.
I sistemi di messaggistica popolarmente utilizzati oggigiorno, che impiegano crittografia end-to-end, proteggono le conversazioni dalla cattura sui server intermedi e dall'analisi del traffico transitorio, ma non difendono dai problemi lato dispositivo client. Per compromettere i sistemi basati su crittografia end-to-end è sufficiente compromettere il sistema operativo, il firmware o l'app di messaggistica sul dispositivo finale, per esempio, attraverso l'exploitation di vulnerabilità sconosciute, l'inserimento iniziale di backdoor software o hardware nel dispositivo, o la distribuzione di un aggiornamento fasullo con un backdoor (ad esempio, sotto pressione da parte di servizi segreti o gruppi criminali). Anche se le chiavi per la crittografia si trovano su un token separato, in presenza di controllo sul sistema dell'utente resta sempre la possibilità di tracciare i processi, captare i dati da tastiera e monitorare le uscite sullo schermo.
TFC offre un sistema hardware e software che richiede l'uso di tre computer separati da parte del cliente e un particolare splitter hardware. Tutto il traffico durante l'interazione tra i partecipanti alla messaggistica viene trasmesso attraverso la rete anonima Tor, e i programmi di messaggistica sono realizzati come servizi nascosti di Tor (gli utenti vengono identificati dagli indirizzi dei servizi nascosti e dalle chiavi).
Il primo computer funge da gateway per la connessione al network e l'attivazione del servizio nascosto Tor. Il gateway manipola solo i dati già crittografati, mentre per la crittografia e la decrittografia vengono utilizzati gli altri due computer. Il secondo computer può essere utilizzato solo per decrittografare e visualizzare i messaggi ricevuti, mentre il terzo solo per crittografare e inviare nuovi messaggi. Di conseguenza, il secondo computer ha solo le chiavi per la decrittografia, mentre il terzo ha solo le chiavi per la crittografia.
Il secondo e il terzo computer non sono connessi direttamente alla rete e sono separati dal computer gateway tramite uno speciale USB splitter, che utilizza il principio «» e trasmette i dati fisicamente solo in una direzione. Lo splitter consente solo l'invio di dati verso il secondo computer e solo la ricezione di dati dal terzo computer. La direzione dei dati nello splitter è limitata tramite (una semplice interruzione delle linee Tx e Rx nel cavo non è sufficiente, poiché l'interruzione non esclude la trasmissione di dati nella direzione opposta e non garantisce che la linea Tx non sarà utilizzata per la lettura e Rx per la trasmissione). Lo splitter può essere assemblato da componenti comuni, () e sono disponibili sotto licenza GNU FDL 1.3.
Con uno schema di questo tipo, la compromissione del gateway consentirebbe di accedere alle chiavi di crittografia e non permetterebbe di continuare l'attacco agli altri dispositivi. In caso di compromissione del computer su cui sono memorizzate le chiavi di decrittazione, le informazioni non possono essere trasmesse nel mondo esterno, poiché il flusso di dati è limitato solo alla ricezione di informazioni, mentre la trasmissione inversa è bloccata dal diodo dati.
La crittografia è effettuata sulla base di chiavi a 256 bit su XChaCha20-Poly1305, per la protezione delle chiavi viene utilizzata una funzione di hash lenta . Per lo scambio delle chiavi viene utilizzato (protocollo Diffie — Hellman basato su Curve448) o chiavi PSK (). Ogni messaggio viene trasmesso in modalità perfezionata di segretezza diretta (PFS, ) sulla base degli hash Blake2b, per cui la compromissione di una delle chiavi a lungo termine non consente di decrittare una sessione precedentemente intercettata. L'interfaccia dell'applicazione è estremamente semplice e comprende una finestra suddivisa in tre aree: invio, ricezione e riga di comando con il log delle interazioni con il gateway. Il controllo avviene tramite un .
Fonte: opennet.ru
