Привет, Хабр! Я пишу данную статью, по своей "выдумке", дабы найти единомышленников, и продвинуть идею в массовое использование, если уж на то пошло - простое защищённое взаимодействие по сети - мессенджер. Буду стараться объяснять всё простым языком - как могу, ибо это моя первая статья. Буду рад вашей критике.
Скажу, что я попытался прежде всего придумать эффективную архитектуру велосипеда исходя из уже существующих проектов. Потому мой проект принимает чисто научно-исследовательский вид от неопытного человека в образовательных целях, и возможно будет содержать неверные суждение и трактовки различных понятий.
XXCore. На чем основано, и почему может помочь
Начну с того, что в мире уже существуют инструменты для обхода введённых ограничений и цензуры, а также для получение анонимности в самом интернете: tor, i2p, freenet. Однако они нацелены на весь интернет. Тут я имею ввиду, что, используя tor, ты можешь заходить на недоступные ресурсы в том или ином регионе, и как следствие скрыть свой реальный IP-адрес. I2P же является оверлейной сетью, так называемый "невидимый интернет извне", который реализует анонимность в наивысшей возможной степени(наверное): своим Garlic Routing, протоколами SSU2 и NTCP2, а также постоянно сменяющимися однонаправленными туннелями. Однако при "чебурнете" сложность такой сети, хотя скорее именно избыточность, для простого общения может стать препятствующей основой для обычного человека. Потому любой из нас, на таком этапе, будет придумывать свою специализацию, в данном случае это то, что нужно уже сейчас. Развернув оверлейную сеть, можно не беспокоиться о каких-либо блокировках, хотя всё-таки стоит, но об этом позже.
XXCore - архитектура простой развёртываемой приватной сети, имеющей топологию p2p с доверенными узлами. В основе лежит PipeNet и видоизменённый SSU2 в качестве транспортного протокола.
Суть заключается в том, что такая сеть состоит из роутеров, которые могут составлять маршруты туннелей для подобных себе и становится особыми узлами сети - серверами месседжера. Тут имеется ввиду, что каждый участник сети одновременно является и клиентом и посредником для других, у него также есть возможность стать особым(дальше будем говорить - доверенным) узлом, при определённых обстоятельствах. Любое соединение двух роутеров строится на основе Noise Protocol Framework. В архитектуре нет никаких eepsite, I2P mail и прочего что существует в том же I2P, существуют только доверенные узлы являющиеся специализированными e-service - подобие SFU-серверов для мессенджера, а также одновременно STUN/TURN серверов для создания peer-to-peer сессий. Вместо расширения Garlic Routing, пакеты отправляются одновременно с постоянным фиктивным трафиком, шифруясь от узла к узлу. Сеть соответственно может расширятся и порождать другие: роутер подключенный к одному из доверенных узлов, может стать таким же доверенным, при достижении определённой нагрузки на зависимом узле.
Я уточню, что в случае если узлы(клиенты) являются firewalled(описывается ниже), то-есть кем является каждый человек который платит провайдеру только за выход в интернет, доверенным узлом он стать не сможет. Чаще всего, для приватной маленькой сети, где все друг другу доверяют, нужен всего один такой узел.
Каковы отличие от I2P и Tor?
Во первых, сеть специализирована для аудиоконференций и чатов. Транспортный протокол не реализует обработку потерь пакетов. Понятие потерь вводиться только для чатов.
Во вторых, упор архитектуры идёт на безопасную передачу данных. Анонимность при отправке пакета наступает только в случае передачи его между роутерами. То-есть, вас никто не сможет раскрыть только когда вы используете доверяемый вами роутер как самый первый промежуточный узел в туннеле.
В третьих, сложность использования и порог вхождение низок. При первом запуске I2P, вам нужно настроить проброс портов для udp/tcp трафика и... Всё! Существует более весомая проблема I2P - скорость трафика, на сегодняшний день она достаточно низкая.
В четвёртых, e-service'ом может стать любой узел.
Сейчас, вы можете с полной уверенность сказать что всё описанное ранее не имеет смысла: ведь мессенджер можно развернуть в приватной сети I2P или Tor. И это правда, однако в ответ я лишь скажу, что преимущество этой архитектуры заключается в её специализирующей основе, а также в расширении сети даже обычными пользователями, то-есть которые firewalled.
В следующей главе будет описаны подробности архитектуры с учётом того, что все технологии и понятия уже известны читателю.
Внутренняя структура XXCore
Перед введением в суть доверенных узлов, хочу сказать, что существуют несколько типов узлов:
Nonfirewalled роутер - узел, который может быть и клиентом, и посредником, и доверенным узлом в туннелях.
Firewalled роутер - узел, являющийся клиентом и посредником между двумя nonfirewalled роутерами.
Доверенный nonfirewalled роутер - узел, являющийся STUN/TURN сервером при peer-to-peer сети, и SFU сервером соответственно для SFU сети.
Доверенные узлы
Особенностью сети является возможность роутера стать "доверенным". Понятие "доверенный роутер" в данном случае синонимично с e-service.
Доверенный роутер - это узел сети который имеет туннели с не менее двумя недоверенными узлами. В данной сети таких узлов может быть несколько. В контексте мессенджера их можно называть "серверами", хотя всё ещё являются равноправными и обособленными в существующей сети. При развёртывании сети на VPS(в общем, на любом устройстве имеющее белый IP-адрес), прежде всего это поднятие узла и последующее установление соединений с другими узлами, первым доверенным роутером становится сам VPS, хотя в общем-то это определяется его собственной конфигурацией.
Понятие nonfirewalled обозначает что узел находиться за несимметричным NAT. Именно такой тип NAT позволяет узлу стать доверенным. Если узел находиться за симметричным NAT, коим будет являться каждый узел без белого IP-адреса, то он будет являться firewalled.
Туннели
Туннели(или связи) между любыми узлами в такой сети являются двунаправленными, и могут состоять из прямых соединений определённых узлов. Любое такое прямое соединение узлов обязано совершить рукопожатие, описанное noise протоколом, по паттерну определённым транспортным протоколом. Дополнительное рукопожатие выполняется между двумя конечными узлами - если туннель не является прямым, то есть состоит хотя бы из одного посредника. Если точка назначения туннеля - доверенный роутер, то образуется peer-to-peer сеть для двух узлов и SFU сеть для не менее трёх. Транспортировка пакетов по таким туннелям подобна mixnet сетям, в нашем случае специализированный PipeNet: транспортировочными пакетами являются batch(серии) состоящие из 4 внутренних пакетов с одинаковым размером, где одна часть - полезная нагрузка, а остальная - фиктивность. При передачи по туннелю, каждый последующий роутер будет менять порядок пакетов и передавать следующему, если таковой не конечный узел в туннеле.
Таким образом, туннели представляют собой двухслойное соединение: первый слой - несколько прямых последовательных соединений между узлами, второй слой - соединение между конечными узлами поверх первого слоя соответственно. В архитектуре это разделяется двумя понятиями: транспортный протокол ESSU(easy SSU2), и протокол прямого назначения EDDP(encrypted direct destination protocol) вроде I2NP.
Транспортный протокол ESSU
ESSU - транспортный протокол для передачи серий пакетов, основанный на упрощённом SSU2. Основные позиции данного протокола:
Соединение между двумя узлами строиться на основе XK паттерна noise handshake. Если сеть - peer-to-peer, для соединения двух конечных узлов используется паттерн NoisePSK_XX.
После осуществления рукопожатия, через каждые 16 пакетов производится rekey: выводится новый общий секретный ключ на основе старого с помощью KDF.
Размер одной передаваемой серии пакетов статический - 1360 байтов. В одной серии, как говорилось ранее, 4 пакетов, следовательно размер одного такого пакета - 340 байтов: 2 с полезной нагрузкой и 2 фиктивных пакетов. Полезная нагрузка также имеет детерминированный размер в соответствии с типом пакета.
Все заголовки пакетов, включая отправляемый эфемерный ключ при первом сообщении noise handshake, обфусцируются с помощью keystream ChaCha20, подобно chaobfse в SSU2.
Потери пакетов никак не обрабатываются: нет ack-blocks, повторной передачи пакетов и тп.

В дополнение хочу сказать, что перед рукопожатием рассматривается вариант для обмена собственными внешними IP адресами. Это нужно чтобы вывести эфемерный ключ-маску для обфускации первых трёх сообщений рукопожатия. Хотя не лучше ли указать это в конфигурации?
Зашифрованный протокол прямого назначения EDDP
EDDP - протокол прямого назначения, инкапсулируемый в ESSU и используемый между двумя любыми узлами в сети для взаимодействия. Данный протокол абстрагирован от уровня ESSU, потому целевой пакет данного протокола является payload-частью ESSU unit одного batch.
Пока что протокол не имеет явно описанных позиций, однако нужно отметить две особенности:
Осуществляется внутренний noise handshake по паттерну NoisePSK_XK. Где PSK - общий секретный ключ известный перед осуществлением рукопожатия, является 'паролем доступа' к предварительно созданной сессии.
Реализуется туннельная маршутизация.
Маршрутизация
В отличии от Onion/Garlic Routing, маршрутизация определяется на этапе передачи первого пакета. Заголовок пакета с полезной нагрузкой содержит поле хранящее идентификатор конечного узла, который был выбран исходным узлом. Именно по этому идентификатору каждый последующий роутер в туннеле будет искать, среди подключенных к нему роутеров(или псевдороутров), данный узел - алгоритмом подобного поиска является DHT. Следствием этого является, что каждый узел в сети имеет свой уникальный идентификатор.
После того как узел принял пакет с отличным идентификатором назначения, узел сохраняет в таблицу отражения соответствие, если такового нет, между идентификатором узла назначения и идентификатором роутера который имеет туннель с данным узлом.
Степень безопасности и анонимности сети XXCore
Всё описанное ранее создаёт безопасность в передачи пакетов, что естественно понятно. Все серии шифруются симметричными ключами между узлами, полезная нагрузка в пакетах шифруется отдельно - вспомним внутренний noise handshake между недоверенным и доверенным узлом. Порядок пакетов одной серии на каждом узле меняется для предотвращения определении корреляции между каждым отправлением, часть пакетов такой серии составляют фиктивный трафик, что увеличивает степень информационной энтропии. Анонимность же здесь встаёт на второй план: степень анонимизация увеличивается только в случае увеличения количества роутеров. Это и всё выше описанное, как я считаю, определяет масштабируемую архитектуру с максимально возможной безопасностью передачи данных.
Мессенджер на XXCore
Как ранее говорилось, архитектура является специализированной - на ней нельзя развернуть собственный сервис, ведь сеть строиться в заданных рамках топологии: peer-to-peer и SFU. Для мессенджера не хватает только внедрение RTP-сессий над EDDP.
Что же мы получаем? Расширяемая приватная анонимная сеть без нагромождений I2P, которую можно развернуть с хотя бы одним роутером. По логике, заблокировать такое сопоставимо с введением белых списков на постоянную основу.
Конечно, я возможно не описал подобие управляющих потоков SRTP и многое другое. Возможно что-то кажется размытым и противоречащим. Но я был бы рад, если бы кто-нибудь вдохновился этим и ускорил процесс создания. На данный момент моя реализация пишется на C++, так вот кому стало интересно: я был бы рад вас увидеть в списке контрибьюторов github проекта.
Реализация пишется как header-only библиотека без всяких выделений на куче, и имеет уклон на минимализм.
Спасибо!
Комментарии (9)

Aleksandr_Sv
07.04.2026 16:46Задумка у автора хорошая, но она уже реализована в Delta Chat.

svec1 Автор
07.04.2026 16:46Спасибо! О Delta chat впервые слышу, и вроде как он основан на почтовых протоколов, и как следствие нуждается в "дистрибьюторах этих почт". потому архитектура отличается от представленной в этой статье. В общем, я много чего не додумал, ведь упор был в p2p)

Aleksandr_Sv
07.04.2026 16:46В Вашей архитектуре тоже есть роутеры. Чем это отличается от почтового релея который пересылает письмо по цепочке. Тут наверное стоит взглянуть на то, что почтовых серверов очень много и их сложно заблокировать. Плюс всегда есть сервера в БС. Рекомендую взглянуть на Delta Chat в нём уже много чего реализовано.
kamnetanker
Распределённый мессенджер не требует обёртки в виде создания приватной сети, для неблокируемости достаточно множество брокеров сообщений внутри территории, на которой осуществляются ограничения доступа. Блокировака множества брокеров сообщений приводит к блокировке самого интернета, в том числе пограничных узлов.
Прикрытием трафика может служить самая простая обёртка в шифрованный https. Ввиду того, что ТСПУ определяют трафик от разного рода VPN и им подобным сервисам по принципу однородности, даже если они скрывают себя, трафик мессенджера не выглядит как однородный, ввиду того, что пересылка текста и изображений это то, что и происходит при загрузке обычных страниц в сети.
Секретность определённых чатов и сообщений может быть обеспечена шифрованным обменом p2p ключами шифрования, вместо обычных https для брокеров. Вопрос безопасности обмена сообщениями без возможности прочтения их брокерами может решаться доверенными центрами ключей, не имеющими доступа к самим сообщениям (т.е. не брокеры сообщений). Суть в чём: при необходимости отправки трафика, не приемлющего MITM перехвата, отправляется стандартный tls с сервером ключей, после чего сервер ключей выступает посредником с помощью которого передаётся открытые части p2p ключей клиентов. Соответственно трафик публичных чатов, каналов и прочего обменивается обычным tls трафиком с брокером и шифрование работает между брокером и клиентом, а в случае секретного чата открытые ключи обмениваются через брокер ключей, который не связан с брокером сообщений, к которому подключен клиент.
В целом, получается архитектура электронной почты, только современная. Брокеры могут отвечать за свои домены, доказывать свою благонадёжность электронными подписями и прочее.
Но идея такого мессенджера рождает плохие мысли в головах незаконопослушных граждан. И вопрос стоит в том, чтобы обмен данными позволял сохранять личную жизнь граждан и контроллировать преступную деятельность.
svec1 Автор
Спасибо за комментарий, но я не много не понял посыла.
В моей статье представлена архитектура ПРИВАТНОЙ сети: тут я имею ввиду то, что человек, незнающий публичного ключа одного из доверенных узлов, не сможет подключиться к самой сети.
Я думаю, что для текущей реализации это будет overhead'ом. Почему нельзя просто обфусцировать заголовок + payload данные? Ведь, в последствии, весь пакет будет состоять из случайной последовательности байтов.
Не понял к чему это.
Утверждение о незаконопослушных граждан тут думаю не надобно.
kamnetanker
В статье очень чёткий заголовок о приватном мессенджере, для приватного мессенджера наличие приватного канала связи не требуется, требуется лишь шифрование контента, передаваемого через этот канал связи. Сама статья, касательно приватной сети великолепна. Единственное замечание: сеть не может быть в описанном варианте приватной из-за того, что ВЫ сами пишете, что сеть состоит только из маршрутизаторов и доверенных маршрутизаторов, следовательно гипотетическая компрометация одного доверенного маршрутизатора руинит всю безопасность сети. А компрометация может произойти не техническими средствами, а средствами социальной инженерии , простым человеческим фактором а также случайностью. Избежать этого можно внедрением серверов ключей, отдельных от маршрутизации, а также цифровая подпись каждым маршрутизатором (читай брокером) откуда пошло сообщение, что он своей репутацией ручается за то, что пакет не скомпромитирован. Сложно кратко описать суть проблемы отсутствия отдельных от маршрутизаторов серверов ключей, но надеюсь, что донёс.
оверхед в вопросах безопасности определяется лишь тем, превышает ли цена взлома цену защищаемых данных ( в любом учебнике по инфобезу вы это прочитаете ) Случайные данные детектируются ТСПУ и блокируются, как неизвестный трафик. На этом погорели форки wireguard. Обфусцированный трафик проходил по правилу: я не знаю, что это за трафик - блокирую. Сейчас мейнстрим всех рабочих vpn это трафик, который не отличить от https. Простая обфускация и мусор в данных не даёт сейчас защиты от ТСПУ.
Поток сознания в попытке объяснить концепцию секьюрного распределённого обмена информацией без возможности подглядеть левыми лицами.
Утверждение о незаконопослушных первоочерёдно, по той причине, что любая система, гарантирующая приватность пользователей должна думать о том, чтобы наркокартели, ОПГ, мошенники и прочие нелюди не могли ею пользоваться.
Moog_Prodigy
Шо, опять бот? Идите вон проконтролируйте состояние дорог, преступные контроллеры.
kamnetanker
Какой бот. Я говорю о наркоторговцах, скаммерах и спаммерах. Считаете, что в среде обмена информацией защита ЛЮДЕЙ от этих НЕЛЮДЕЙ не нужна, то сходите и скажите это в лицо пострадавшим. Вопрос информационной безопасности это не только защита приватности данных, но и защита от инцидентов социальной инженерии и вопрос защиты от таких злоумышленников должен стоять на первом месте.
Moog_Prodigy
Эти все инсинуации сводятся к подмене декларируемого (защита людей от мошенников и прочих) к нужному повесточному смыслу (цензура, запрещение информации).
Тот, кто готов жертвовать свободой ради безопасности, не заслуживает ни того, ни другого.
А вы это пишете прям откровенно, прям как бот. Не тот бот, которые LLM нейросетевые, а тот, который за 15 рублей за комментарий готов доказать что угодно кому угодно и как угодно. И вы именно бот и есть. Не нравится слово "бот"? Хорошо, "пропагандон на зарплате" вам устроит?