En el marco del proyecto (Tinfoil Chat) se ha intentado crear un prototipo de un sistema de mensajería paranoicamente protegido que mantenga la privacidad de la correspondencia incluso ante la compromiso de los dispositivos finales. Para facilitar la auditoría, el código del proyecto está escrito en Python y bajo la licencia GPLv3.
Los sistemas de mensajería actuales que utilizan cifrado de extremo a extremo protegen la correspondencia de la interceptación en los servidores intermedios y del análisis del tráfico en tránsito, pero no protegen contra problemas en el dispositivo del cliente. Para comprometer sistemas basados en cifrado de extremo a extremo, es suficiente comprometer el sistema operativo, el firmware o la aplicación de mensajería en el dispositivo final, por ejemplo, a través de la explotación de vulnerabilidades previamente desconocidas, mediante la inserción inicial de malware en el dispositivo o mediante la entrega de actualizaciones falsas con puertas traseras (por ejemplo, bajo presión de agencias de seguridad o grupos criminales). Incluso si las claves para el cifrado están en un token separado, siempre existe la posibilidad de rastrear procesos, interceptar datos desde el teclado y monitorear la salida en pantalla con el control del sistema del usuario.
TFC ofrece un complejo software-hardware que requiere el uso de tres computadoras separadas por parte del cliente y un divisor de hardware especial. Todo el tráfico durante la interacción de los participantes de la mensajería se transmite a través de la red anónima Tor, y los programas de mensajería se implementan en forma de servicios ocultos de Tor (los usuarios se identifican al enviar mensajes mediante direcciones de servicios ocultos y claves).
La primera computadora actúa como puerta de enlace para conectarse a la red y activar el servicio oculto de Tor. La puerta de enlace solo manipula datos ya cifrados, mientras que los dos restantes se utilizan para cifrar y descifrar. La segunda computadora se puede utilizar solo para descifrar y mostrar los mensajes recibidos, y la tercera solo para cifrar y enviar nuevos mensajes. En consecuencia, la segunda computadora tiene solo las claves para descifrar, y la tercera solo las claves para cifrar.
Los segundo y tercer ordenadores no tienen una conexión directa a la red y están separados del ordenador puente mediante un divisor USB especial que utiliza el principio de "y permite el paso de datos físicamente solo en una dirección. El divisor permite únicamente el envío de datos hacia el segundo ordenador y solo la recepción de datos desde el tercer ordenador. La dirección de los datos en el divisor está limitada por (una simple interrupción de las líneas Tx y Rx en el cable no es suficiente, ya que la interrupción no excluye la transmisión de datos en dirección inversa y no garantiza que la línea Tx no se utilizará para leer, y Rx para transmitir). El divisor puede ser construido con materiales accesibles, () y están disponibles bajo la licencia GNU FDL 1.3.
Con este esquema, la compromisión del puente acceder a las claves de cifrado y no permitirá continuar el ataque contra los dispositivos restantes. En caso de comprometer el ordenador donde están almacenadas las claves para la descifrado, no será posible transmitir información al mundo exterior, ya que el flujo de datos está limitado solo a la recepción de información, y la transmisión inversa está bloqueada por el diodo de datos.
El cifrado se ha realizado con claves de 256 bits utilizando XChaCha20-Poly1305, y para proteger las claves se aplica una función hash lenta . Para el intercambio de claves se utiliza (protocolo Diffie-Hellman basado en Curve448) o claves PSK (). Cada mensaje se transmite en modo de perfecta confidencialidad directa (PFS, ) sobre la base de hashes Blake2b, donde la compromisión de una de las claves a largo plazo no permite descifrar sesiones que hayan sido interceptadas anteriormente. La interfaz de la aplicación es extremadamente simple e incluye una ventana dividida en tres áreas: envío, recepción y una línea de comandos con el registro de interacción con el puente. El control se realiza a través de un .
Fuente: opennet.ru
