Проект TFC развивает параноидально защищённую систему обмена сообщениями
3 февраля 2020 года
В рамках проекта TFC (Tinfoil Chat) предпринята попытка создания прототипа параноидально-защищённой системы обмена сообщениями, которая сохраняла бы тайну переписки даже при компрометации конечных устройств. Для упрощения проведения аудита код проекта написан на языке Python и доступен под лицензией GPLv3.
Распространённые ныне системы обмена сообщениями, использующие сквозное шифрование, позволяют защитить переписку от перехвата на промежуточных серверах и от анализа транзитного трафика, но не защищают от проблем на стороне клиентского устройства. Для компрометации систем на базе сквозного шифрования достаточно на конечном устройстве скомпрометировать операционную систему, прошивку или приложение-мессенджер, например, через эксплуатацию ранее неизвестных уязвимостей, через изначальное внедрение в устройство программных или аппаратных закладок или через доставку фиктивного обновления с бэкдором (например, при оказании давления на разработчика спецслужбами или криминальными группами). Даже если ключи для шифрования находятся на отдельном токене, при наличии контроля за системой пользователя всегда остаётся возможность трассировки процессов, перехвата данных от клавиатуры и отслеживания вывода на экран.
TFC предлагает программно-аппаратный комплекс, требующий применения на стороне клиента трёх отдельных компьютеров и специального аппаратного сплиттера. Весь трафик в процессе взаимодействия участников обмена сообщениями передаётся через анонимную сеть Tor, а программы для обмена сообщениями выполнены в форме скрытых сервисов Tor (пользователи при обмене сообщениями идентифицируются по адресам скрытых сервисов и ключам).
Первый компьютер выступает шлюзом для подключения к сети и запуска скрытого сервиса Tor. Шлюз манипулирует только уже зашифрованными данными, а для шифрования и расшифровки используются два остальных компьютера. Второй компьютер может использовать только для расшифровки и отображения полученных сообщений, а третий только для шифрования и отправки новых сообщений. Соответственно, второй компьютер имеет только ключи для расшифровки, а третий только ключи для шифрования.
Второй и третий компьютеры не имеют прямого подключения к сети и отделены от компьютера-шлюза специальным USB-сплиттером, использующим принцип "диод данных" и пропускающим данные физически только в одном направлении. Сплиттер допускает только отправку данных в сторону второго компьютера и только приём данных от третьего компьютера. Направление данных в сплиттере ограничивается при помощи оптронов (простого обрыва линий Tx и Rx в кабеле недостаточно, так как обрыв не исключает передачи данных в обратном направлении и не гарантирует, что линия Tx не будет использована для чтения, а Rx для передачи). Сплиттер можно собрать из подручных деталей, схемы прилагаются ( PCB) и доступны под лицензией GNU FDL 1.3.
При подобной схеме компрометация шлюза не позволит получить доступ к ключам шифрования и не даст возможность продолжить атаку на оставшиеся устройства. В случае компрометации компьютера, на котором размещены ключи для расшифровки, информацию с него не получится передать во внешний мир, так как поток данных ограничен только получением информации, а обратную передачу блокирует диод данных.
Шифрование выполнено на базе 256-разрядных ключей на XChaCha20-Poly1305, для защиты ключей паролем применяется медленная хеш-функция Argon2id. Для обмена ключами применяется X448 (протокол Диффи — Хеллмана на базе Curve448) или PSK-ключи ( pre-shared). Каждое сообщение передаётся в режиме совершенной прямой секретности (PFS, Perfect Forward Secrecy) на базе хэшей Blake2b, при котором компрометация одного из долговременных ключей не позволяет расшифровать ранее перехваченный сеанс. Интерфейс приложения предельно прост и включает окно, разбитое на три области - отправка, получение и командная строка с логом взаимодействия со шлюзом. Управление производится через специальный набор команд.
Источники
править
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.