February 5, 2020

Проект TFC разработал USB-сплиттер для мессенджера из 3-х компьютеров

Проект TFC (Tinfoil Chat) предложил аппаратное устройство с 3-мя USB-портами для соединения 3-х компьютеров и создания параноидально-защищённой системы обмена сообщениями.

Первый компьютер выступает шлюзом для подключения к сети и запуска скрытого сервиса Tor, он манипулирует уже зашифрованными данными.

Второй компьютер имеет ключи для расшифровки и используется только для расшифровки и отображения полученных сообщений.

Третий компьютер имеет ключи для шифрования и используется только для шифрования и отправки новых сообщений.

USB-сплиттер работает на оптронах по принципу «диод данных» и физически пропускает данные только в заданных направлениях: отправку данных в сторону второго компьютера и приём данных от третьего компьютера.

Компрометация первого компьютера не позволит получить доступ к ключам шифрования, к самим данным и не даст возможность продолжить атаку на оставшиеся устройства.

При компрометация второго компьютера злоумышленник прочитает сообщения и ключи, но не сможет передать их во внешний мир, так как данные только принимаются снаружи, но не отправляются вовне.

В случае компрометации третьего компьютера злоумышленник может выдавать себя за абонента и писать от его имени сообщения, но не сможет читать поступающие извне данные (т.к. они идут на второй компьютер и там расшифровываются).

Шифрование выполнено на базе 256-разрядного алгоритма XChaCha20-Poly1305, для защиты ключей паролем применяется медленная хеш-функция Argon2id. Для обмена ключами применяется X448 (протокол Диффи — Хеллмана на базе Curve448) или PSK-ключи (pre-shared). Каждое сообщение передаётся в режиме совершенной прямой секретности (PFS, Perfect Forward Secrecy) на базе хэшей Blake2b, при котором компрометация одного из долговременных ключей не позволяет расшифровать ранее перехваченный сеанс.

Интерфейс приложения предельно прост и включает окно, разбитое на три области - отправка, получение и командная строка с логом взаимодействия со шлюзом. Управление производится через специальный набор команд.

Программный код проекта написан на языке Python и доступен под лицензией GPLv3. Схемы сплиттера прилагаются (PCB) и доступны под лицензией GNU FDL 1.3, сплиттер можно собрать из подручных деталей.