Nell'ambito del progetto (Tinfoil Chat) è stato intrapreso un tentativo di creare un prototipo di sistema di messaggistica paranoico e sicuro, che mantenesse la segretezza della comunicazione anche in caso di compromissione dei dispositivi finali. Per facilitare l'audit, il codice del progetto è scritto in linguaggio Python e sott Licenza GPLv3.
I sistemi di messaggistica attualmente diffusi, che utilizzano la crittografia end-to-end, proteggono la corrispondenza da intercettazioni sui server intermedi e dall'analisi del traffico di transito, ma non proteggono dai problemi sul lato del dispositivo client. Per compromettere sistemi basati su crittografia end-to-end è sufficiente compromettere il sistema operativo, il firmware o l'applicazione di messaggistica sul dispositivo finale, ad esempio sfruttando vulnerabilità precedentemente sconosciute, attraverso l'inserimento iniziale di software o hardware malevoli, o tramite l'invio di un aggiornamento fasullo con un backdoor (ad esempio, sotto pressione da parte di agenzie di sicurezza o gruppi criminali). Anche se le chiavi di crittografia si trovano su un token separato, nel caso di controllo del sistema dell'utente rimane sempre la possibilità di tracciare i processi, intercettare i dati dalla tastiera e monitorare l'output sullo schermo.
TFC offre un complesso hardware e software che richiede l'uso di tre computer distinti sul lato client e uno splitter hardware speciale. Tutto il traffico durante l'interazione tra i partecipanti alla messaggistica viene trasmesso attraverso la rete anonima Tor, e i programmi per la messaggistica sono implementati come servizi nascosti di Tor (gli utenti vengono identificati tramite gli indirizzi dei servizi nascosti e le chiavi).
Il primo computer funge da gateway per connettersi alla rete e avviare il servizio nascosto di Tor. Il gateway manipola solo i dati già crittografati, mentre due computer restanti vengono utilizzati per la crittografia e la decrittografia. 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 hanno connessioni dirette alla rete e sono isolati dal computer gateway da uno splitter USB speciale, che utilizza il principio del "" e consente il passaggio dei 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, in quanto l'interruzione non esclude la trasmissione dei dati nella direzione opposta e non garantisce che la linea Tx non venga utilizzata per la lettura e Rx per la trasmissione). Lo splitter può essere assemblato con componenti facilmente reperibili, () e sono disponibili sotto la licenza GNU FDL 1.3.
Con un simile schema, la compromissione del gateway comprometterà l'accesso alle chiavi di crittografia e non permetterà di continuare l'attacco sugli altri dispositivi. In caso di compromissione del computer su cui sono memorizzate le chiavi per la decrittografia, le informazioni da esso non possono essere trasmesse al mondo esterno, poiché il flusso di dati è limitato solo alla ricezione di informazioni, mentre il ritorno dei dati è bloccato dal diodo dei dati.
La crittografia è eseguita su basi di chiavi a 256 bit su XChaCha20-Poly1305, e per la protezione delle chiavi viene utilizzata una funzione di hash lenta, . Per lo scambio di chiavi si utilizza (protocollo Diffie-Hellman basato su Curve448) o chiavi PSK (). Ogni messaggio viene trasmesso in modalità di perfetta segretezza avanzata (PFS, ) basata su hash Blake2b, in cui la compromissione di una delle chiavi a lungo termine non consente di decrittografare una sessione precedentemente intercettata. L'interfaccia dell'applicazione è estremamente semplice e include una finestra suddivisa in tre aree: invio, ricezione e un'interfaccia a linea di comando con un registro delle interazioni con il gateway. La gestione avviene tramite un apposito .
Fonte: opennet.ru
