Pest — компактный p2p-протокол

4 октября 2022
Технологии
Pest — компактный p2p-протокол
У себя в блоге мы часто рассказываем об интересных протоколах и их реализациях. Сегодня поговорим о проекте Pest, который был разработан для создания IRC-подобных чатов, — его возможностях, особенностях, альтернативах.

Краткая концепция

Поскольку речь идет о peer-to-peer, то, очевидно, что в экосистеме Pest нет единого сервера, который собирает, обрабатывает и пересылает сообщения. Каждый пользователь — оператор собственного терминала (station). И он обращается с другими участниками доверенной сети Web of Trust (WOT).

Размер пересылаемых сообщений — 428 байт. Из них 324 байта составляют полезные данные; остальное — это метаданные, временные метки, идентификаторы. Также есть поля с хэшем предыдущих сообщений. Разработчики планируют реализовать на их основе возможность построения тредов — например, как в Usenet. Если сообщение превышает стандартный размер, терминал разбивает его на несколько пакетов с одинаковыми временными метками (они «связываются» на принимающей стороне).

Протокол делает упор на безопасность передаваемых сообщений — UDP-пакеты зашифрованы. Соответствующий ключ знают только отправитель и получатель. Если злоумышленник перехватит пакет в пути, он не извлечет полезной информации. Чтобы усложнить анализ трафика, терминал периодически отправляет «фальшивые пакеты» отдельным узлам или по случайному IP-адресу. Эти пакеты не несут смысловой нагрузки и содержат произвольный набор символов.

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

Реализация и перспективы

Существуют как минимум две реализации протокола — Blatta и Smallpest. Первый проект написан на Python 2.7 и использует SQLite3 в качестве базы данных. Он достаточно молодой, но активно обновляется. Что касается второго решения, то здесь основным языком программирования является Си, а сообщения хранятся прямо в файловой системе.

Протокол PEST

Несмотря на все преимущества, можно предположить, что протокол не выйдет за рамки нишевого проекта — особенно сейчас, когда все больше регуляторов с подозрением смотрит на p2p-сети и технологии. Так, правоохранительные органы отдельных государств настаивают на встраивании бэкдоров, ограничении end-to-end и думают о регулировании пиринговых соц. сетей. Вероятно, пользоваться протоколом Pest будет лишь небольшая группа энтузиастов, а его технологическая ниша останется экспериментальной.

Парочка похожих проектов

Еще один интересный протокол для передачи данных в распределенных сетях — Dat. Изначально он был заточен под работу в государственных учреждениях, но теперь его применяют для обмена научной информацией и результатами исследований: все благодаря тому, как протокол работает с данными.

Они транслируются в формате специальных Dat-файлов, которые нельзя удалять и модифицировать (только дополнять). Протокол уже использует open source приложение для поиска и просмотра научной литературы ScienceFair, а также peer-to-peer браузер Beaker.

Еще один пример — проект Tox, в рамках которого делают бессерверный p2p-мессенджер. Группа энтузиастов развивает одноименный протокол с 2013 года. Он использует библиотеку NaCl для шифрования и аутентификации. Однако у пользователей все же есть претензии к его безопасности и аудиту. В то же время Tox-клиенты существуют для большинства операционных систем — например, qTox для Linux и мультиплатформенный yat.

Мы используем файлы cookies для оптимизации функциональности сайта и улучшения качества услуг. Нажимая «Принять», вы даете согласие на работу с этими файлами. Чтобы узнать больше, пожалуйста, прочтите нашу Политику конфиденциальности.