LINUX.ORG.RU

Прототип P2P-версии клиента Matrix поверх новой overlay-сети Pinecone

 , , , ,


0

2

Эксперименты с децентрализацией продолжаются!

Ранее разработчики Matrix предложили бессерверный вариант веб-клиента Element с использованием библиотеки libp2p (использующуюся в IPFS). Параллельно с этим шло тестирование iOS-клиента Element поверх overlay-сети Yggdrasil. Изучив доступные инструменты, был привлечён Neil Alexander (разработчик Yggdrasil и Dendrite) для создания дизайна и разработки новой P2P overlay-сети, оптимизированной специально для Matrix — Pinecone (видеопрезентация для FOSDEM 2021).

Пользователям предлагаются для тестирования мобильные клиенты, работающие поверх Pinecone в условиях локальной mesh-сети и глобального Интернета.

Matrix

Протокол Matrix построен на основе линейной истории событий (events) в формате JSON внутри ациклического графа событий (DAG): простыми словами, является распределённой базой данных, хранящей полную историю отправленных сообщений и данные участвующих пользователей, реплицируя эту информацию между участвующими серверами — ближайшей аналогичной по работе технологией может быть Git и блокчейн.

Основной реализацией этой сети является мессенджер с поддержкой сквозного шифрования и VoIP (аудио- и видеозвонков, групповых конференций). Эталонные реализации клиентов и серверов разрабатываются коммерческой компанией Element, сотрудники которой также возглавляют некоммерческую организацию Matrix.org Foundation, курирующую разработку спецификации протокола Matrix.

Dendrite — сервер сети Matrix нового поколения, основанный на микросервисной архитектуре, написанный на Go.

Yggdrasil — зашифрованная (с поддержкой TLS), одноранговая (P2P), IPv6, overlay-сеть, написанная на Go.

Pinecone

Дизайн Pinecone вдохновлён Yggdrasil и создан для решения проблемы создания маршрутов между пирами сети, используя source routing или virtual ring routing вместо greedy routing. Введение overlay-сети решает только часть проблем, сам протокол Matrix всё ещё остаётся full-mesh. В дальнейшем могут быть введены оптимизации, вроде механизма gossip или store-and-forward. Больше подробностей во всё той же видеопрезентации для FOSDEM 2021 от Neil Alexander.

В текущем виде на телефонах пользователей запускается полноценный Matrix-сервер на Go — Dendrite, встроенный прямо в клиенте Element и работающий в фоне. Всё ещё не предусмотрено никакого механизма для использования одного пользовательского идентификатора на нескольких устройствах, но это может измениться после принятия правки в протокол под номером MSC2787: Portable Identities. Она позволит отвязать идентификатор пользователя от конкретного сервера, используя вместо этого публичный ключ и привязку внешних идентификаторов к этому публичному ключу. Подразумевается, что после этого пользователь сможет привязать к своему публичному ключу произвольное количество человекочитаемых алиасов вида @username:domain.tld, настроив синхронизацию своего профиля с избранными публично доступными серверами. Пользователь сможет дать и забрать разрешение серверу отправлять сообщения от своего имени.

Matrix потенциально может стать самой крупной и эффективной mesh-сетью: европейские правительства и учебные заведения уже используют федерацию серверов этой сети в публичном секторе. После появления P2P-опции, сотни и тысячи госслужащих и студентов, сосредоточенные в одном месте, смогут коммуницировать друг с другом, минуя серверы. Точно так же и вся остальная имеющаяся пользовательская база сети Matrix может быть конвертирована в бессерверный вариант.

P2P и создание маршрутов не единственные нововведение, также стоит ожидать появление нового транспортного протокола вместо текущего JSON over HTTPS.

Для тестирования достаточно установить клиент на свой смартфон. После запуска программы вам будет доступна связь между клиентами с помощью локальной mesh-сети. Для подключения к глобальной Интернет-сети зайдите в настройки, раздел «Peer-to-Peer», и включите опцию «Connect to static peer». После этого вы можете зайти в тестовую комнату, предлагаемую самими разработчиками, по адресу #beachparty:3bf0258d23c60952639cc4c69c71d1508a7d43a0475d9000ff900a1848411ec7 или создать свою, оставив её адрес в комментариях! После входа в комнату должна загрузиться история предыдущих отправленных сообщений и картинок.

>>> Прототип для Android (10+)

>>> Прототип для iOS

>>> Подробности

★★★★★

Проверено: Shaman007 ()

Ответ на: комментарий от commagray

WUT?!

Шо «WUT»? :P Там Viber нет. Да и вообще хоть каких-либо сторонних клиентов к нему нет.

Это даже не случай с WhatsApp и LINE, когда понаделали реализаций первичных клиентов, а потом за разработчиками начали гоняться с cease&desist, а пользователей банить. Эту парашу вообще отреверсить никто не осилили (видимо, потому, что за пределами Украины и Беларуси она никому особо и не нужна, ага). Как и Skype в своё время, пока его не купили Microsoft и не переделали тихо в перекрашенный MSN.

mertvoprog ()
Ответ на: комментарий от Alve

убеждать своих знакомых сменить понятный мессенджер на это

Лучше задумайтесь над тем, как в своё время удалось уговорить людей сменить привычные и понятные ICQ/Skype/AIM на Telegram/WhatsApp/Viber ;)

Каковы основания считать, что сценарий нельзя повторить? В конце концов, даже телега влезла на этот рыночек на несколько лет позже WhatsApp/Viber, и успешно влезла туда, когда они уже прижились.

mertvoprog ()
Ответ на: комментарий от mertvoprog

Лучше задумайтесь над тем, как в своё время удалось уговорить людей сменить привычные и понятные ICQ/Skype/AIM на Telegram/WhatsApp/Viber ;)

О чем тут задумываться? WhatsApp/Viber в свое время просто предложили на голову лучший функционал: нормальный мобильный клиент с пушем, который не убивает батарею за 2 часа, и замену смс + простота международных звонков. Т.е. новые месенджеры на несколько голов превосходили старые. Как это понимание можно применить?

anonymous ()
Ответ на: комментарий от mertvoprog

А толку, если история чата недоступна новоприбывшим?

Я заходил на болгарский ресурс и даже видел полуобнажённые фотки местечковых битардов. Всё было доступно.

kostyarin_ ★★ ()
Ответ на: комментарий от mertvoprog

Каковы основания считать, что сценарий нельзя повторить? В конце концов, даже телега влезла на этот рыночек на несколько лет позже WhatsApp/Viber, и успешно влезла туда, когда они уже прижились.

В телеге были стикеры прикольные и сказки про «безопасность и приватность», которые рассказываются и по сей день людям, зарегистрировавшимся там с симкой по паспорту. Те, кто в Скайпе сидел, по моему так в нём и сидят.

Короч, чтобы повторить сценарий, нужна пиар-компания, реклама и идол вроде Паши.

Alve ★★★★★ ()
Ответ на: комментарий от Alve

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

iav ()
Ответ на: комментарий от anonymous

на голову лучший функционал

Ну вот и предложите на голову лучший функционал ;) А швабодность лишь в довесок. Швабодность ради швабодности интересует только фанатиков.

Если свободный продукт реально хороший, его даже шиндузятники охотно жрут — как, например, VLC, Audacity, Inkscape. Или Blender, например (хотя тут пример не совсем корректный, он изначально проприетарный).

Собственно, Telegram таковым уже и является, но у многих припекает, что он, мол, недостаточно свободный и вообще подгэбэшный — но сделать ничего не могут, только скулят ;) Не умеют люди довольствоваться малым, что тут говорить, всё за розовыми слонами бегают.

с пушем, который не убивает батарею за 2 часа

Уже неактуально. Эти ваши ведроиды обломались с идеей не находиться большую часть времени в спячке, как «тупые» мобильники, и в последних версиях таки спят (man Doze), просыпаясь раз в n минут, с чем очень сложно воевать.

Мы, собственно, давно на ископаемом сонерике отказались от IMAP PUSH в пользу поллинга ;) На батарейке ощутимо сказывается. Да, не моментально, но если нужна такая срочность, что 5 минут не подождут, то писать — не лучшая идея даже с пушами, их многие игнорят и сразу за мобилу не хватаются ;)

простота международных звонков

Это и в Skype было, ничего нового.

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

Сабж, что характерно, к этому фанатизму отчасти не причастен, через Element вполне можно по номеру телефона регистрироваться ;) Но это и в Jabber-клиентах некоторых было, типа Talkonaut, сильно не помогло. Беда ведь в том, что можно регистрироваться и без телефона, то есть телефон не является универсальным идентификатором любого пользователя мессенджера для тех, кто кроме номера телефона других идентификаторов не понимают. И с очередным криптопараноиком обычные смертные просто связаться не смогут, не осилят ввести MXID с эс-как-доллар ;) Telegram, впрочем, тоже от этого претерпевает, там можно параноить и не публиковать для связи номер телефона, а только @юзернейм, особенно мутные люди это любят, исписывая ими стены ;)

mertvoprog ()
Ответ на: комментарий от kostyarin_

Тут речь о том, что могут выключить ;) Что будет тоаврищ майор делать?

mertvoprog ()
Ответ на: комментарий от Alve

нужна пиар-компания, реклама и идол вроде Паши

Дерзайте. Бабло на пиар сабж находит. За идолами проследуйте в криптосообщество, запросто можно на горбу какого-то Виталика распиарить нескучный мессенджер на кефирном блокчейне с токенами МММ ;)

mertvoprog ()
Ответ на: комментарий от iav

Тут очень хотелось бы надеяться, что власть ЕС обяжет наконец проприетарные мессенждеры хотя бы к интерконнекту, хоть через шматрицу, хоть через RCS, хоть ещё через что. С GDPR-плашками и microUSB же прокатило. А то ведь неслыханное дело, с любого опсоса на любого можно звонить и текстить (пусть и дорого), даже на стационарный телефон можно SMS-ку послать и её зачитают; та же фигня с электронной почтой; а мессенджеры — каждый сам по себе, перетягивают пользователей и заставляют ставить свои говноприложения для каждого.

курьерской почтой

А е-мыло закопают? ;)

Оно к шматрице прикручивается ничуть не сложнее, чем IRC у мозиллы.

mertvoprog ()
Ответ на: комментарий от anonymous

Проходили мимо околоЛОРовского чятега, а там ссылку на эту новость вбросили, вот и залетели ;)

А ещё некоторые личности продолжают кастовать попусту, просили же не кастовать! :P

mertvoprog ()

Да, кстати, забаньте @fernandos за постоянную рекламу шпионской adware «Brave», маскирующейся под браузер.

anonymous ()
Ответ на: комментарий от anonymous

Оно ещё и стучит в спецтеме круглосуточно как дятел. Какой трындец.

anonymous ()
Ответ на: комментарий от mertvoprog

А мылом с госорганами и сейчас общаться не получается, мыло считается ненадёжным и годится только для уведомлений «зайдите в свой личный кабинет на портале госуслуг».

iav ()

https://innereq.org/Прототип_P2P-версии_клиента_Matrix_поверх_новой_overlay-сети_Pinecone#Обновление_за_6_мая_2021

В блоге Matrix.org появилась официальная новость про Pinecone со ссылкой на исходный код.

В ней даётся пояснение про новый механизм поиска маршрута между пирами. Как и в Yggdrasil, в Pinecone используется global spanning tree, но вместо того, чтобы пересылать весь трафик с использованием этой топологии, она используется в качестве механизма начальной маршрутизации для линейной/змеевидной топологии с использованием ed25519-ключей под названием SNEK (Sequentially Networked Edwards Key).

Пиры ищут своих ближайших соседей в сети и строят пути между ними аналогично тому, как работает Chord DHT. Эти пути затем используются для пересылки трафика без предварительного поиска, что позволяет очень быстро устанавливать и стабильно держать устойчивое к изменениям соединение между пирами. Также проводились эксперименты с комбинацией микротранспортного протокола (μTP) и TLS, чтобы обеспечить установку соединения с отслеживанием состояния, контролем перегрузки (TCP congestion control) и сквозным шифрованием для всего федеративного трафика.

В случае успешной разработки и внедрения Pinecone, разработчики Matrix думают о внедрении этого протокола в библиотеку libp2p от разработчиков проекта IPFS.


И даны ответы на часто задаваемые вопросы.

Могу ли я запустить Pinecone на своей платформе?

Реализация написана на языке Go и протестирована на macOS, Linux, Windows, Android и iOS. Скорее всего, нет никаких причин считать, что проект не заработает на других поддерживаемых компилятором платформах.

Почему не Yggdrasil?

Pinecone был разработан после тестирования прототипа с использованием Yggdrasil и учёта его недостатков. Топология global spanning tree, используемая в Yggdrasil, не подходит для работы в условиях частоизменяемой сети. Такой способ соединения пиров может привести к тому, что пути между ними станут временно недействительными, что приведёт к прерыванию связи.

Почему не libp2p?

libp2p хорошо работает в условиях, где пиры соединяются друг с другом напрямую (либо через локальную сеть, либо через Интернет), что не всегда справедливо для Matrix в условиях P2P. Компоненты, которые могут быть полезны для решения этой проблемы (например, «пробивание» NAT и оверлейная маршрутизация), всё еще находятся на ранней стадии разработки.

Анонимен ли Pinecone?

Нет, Pinecone не ставит своей основной задачей обеспечение анонимности. Пакеты Pinecone маршрутизируются с использованием наиболее прямых возможных путей (в отличие от Tor и друзей, которые намеренно передают трафик в несколько шагов). Пакеты Pinecone содержат информацию в своих заголовках об отправителе и получателе — вероятно, мы сможем когда-нибудь скрыть часть этой информации, но не сегодня.

Что такое «static peer»?

Пиры в сети Pinecone могут автоматически обнаруживать друг друга в зависимости от платформы (например, клиенты Android и iOS могут обнаруживать друг друга с помощью Bluetooth без какой-либо дополнительной настройки). Однако пиры могут физически находиться отдалённо друг от друга и вне одной локальной сети, поэтому вместо этого вы можете присоединиться к более широкой сети Pinecone, подключившись к статическому одноранговому пиру через Интернет. Тем самым трафик будет маршрутизироваться через одноранговое соединение.

Могу ли я запустить свой «static peer»?

Конечно, просто запустите бинарный файл cmd/pinecone с аргументом командной строки -listen. Вероятно, вы также захотите указать флаг -connect для подключения к уже существующему одноранговому пиру.

«Пробивает» ли Pinecone фаервол и NAT?

Да. Pinecone выглядит как обычное TCP- или WebSocket-соединение. Если вы установите соединение со статическим пиром, вы всё равно сможете получать входящий трафик Pinecone через это соединение.

commagray ★★★★★ ()
Ответ на: комментарий от derlafff

Сначала отказываются от libp2p, где это все уже реализовано, потом снова героически переизобретают. Классические matrix-макаки.

См. пост выше про libp2p. Прототип P2P-версии клиента Matrix поверх новой overlay-сети Pinecone (комментарий)

commagray ★★★★★ ()

Ранее разработчики Matrix предложили бессерверный вариант веб-клиента Element с использованием библиотеки libp2p (использующуюся в IPFS) Закопать. Рвётся под любым NAT и никогда не сумеет в tor и i2p.

anonymous ()

Ранее разработчики Matrix предложили бессерверный вариант веб-клиента Element с использованием библиотеки libp2p (использующуюся в IPFS)

Закопать. Рвётся под любым NAT и никогда не сумеет в tor и i2p.

anonymous ()
Ответ на: комментарий от commagray

Самое прекрасное в этих «меш-сетях поверх интернета» то, что майор может запросто откопать всю цепочку участников, которая вдобавок к тому ещё является цепью связей между людьми, ведь соединения прописывают сами люди.

anonymous ()
Ответ на: комментарий от anonymous

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

anonymous ()
Ответ на: комментарий от iav

ненадёжным

В Украине для этого специально разработано ДСТУ-шифрование, важные документы шифруются ЭЦП и спокойно пересылаются по мылу ;)

mertvoprog ()
Ответ на: комментарий от anonymous

Потому-то такие штуки и пытаются усердно популяризировать ;) Чем больше народу пользуется, тем меньше вероятность, что бутылок хватит ;)

mertvoprog ()
Ответ на: комментарий от commagray

Как и в Yggdrasil, в Pinecone используется global spanning tree, но вместо того, чтобы пересылать весь трафик с использованием этой топологии, она используется в качестве механизма начальной маршрутизации для линейной/змеевидной топологии

То есть Pinecone умеет находить промежуточные узлы для связи, например, двух клиентов за NAT-ом?

Если да, то где бы прочитать про как в Pinecone устроены:
• стартовый запуск (bootstrap)
• поиск маршрута к узлу, недоступному по прямому TCP/IP соединению (например, за натом)
• реакция на ситуацию, когда один из узлов в этом маршруте вдруг стал недоступен

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

Стоп. Разве в Chord DHT есть «пути»? По-моему там «все-со-всеми». Не все соединения будут установлены, но возможность любого соединения обязана быть (особенно с «предшественником» и с «последователем»).

Почему не Yggdrasil?
...
Почему не libp2p?
...

У меня вопрос покруче: почему не Tor? Стабилен, распространён, проверен, никаких проблем с NAT-ами.

Я уже сто лет использую Tor, чтобы достучаться до домашней машины по SSH через любые NAT-ы.

anonymous ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.