Проект TFC развивает параноидально защищённую систему обмена сообщениями

В рамках проекта TFC (Tinfoil Chat) предпринята попытка создания прототипа параноидально защищённой системы обмена сообщениями, которая сохраняла бы тайну переписки даже при компрометации конечных устройств. Для упрощения проведения аудита код проекта написан на языке Python и распространяется под лицензией GPLv3.

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

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

0_1580723940.png

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

Второй и третий компьютеры не имеют прямого подключения к сети и отделены от компьютера-шлюза специальным USB-сплиттером, использующим принцип «диод данных» и пропускающим данные физически только в одном направлении. Сплиттер допускает только отправку данных в сторону второго компьютера и только приём данных от третьего компьютера. Направление данных в сплиттере ограничивается при помощи оптронов (простого обрыва линий Tx и Rx в кабеле недостаточно, так как обрыв не исключает передачи данных в обратном направлении и не гарантирует, что линия Tx не будет использована для чтения, а Rx для передачи). Сплиттер можно собрать из подручных деталей, схемы прилагаются (PCB) и доступны под лицензией GNU FDL 1.3.

0_1580723913.png

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

0_1580726891.png

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

Источник: http://www.opennet.ru/opennews/art.shtml? num=52305

©  OpenNet