Secure Scuttlebutt — p2p социальная сеть, работающая и в оффлайне

Scuttlebutt — сленговое слово, распространённое среди американских моряков, обозначающее слухи и сплетни. Node.js разработчик Доминик Тарр, живущий на паруснике у берегов Новой Зеландии, использовал это слово в названии p2p сети, предназначенной для обмена новостями и личными сообщениями. Secure Scuttlebutt (SSB) позволяет делиться информацией, используя лишь эпизодический доступ к сети Интернет или даже при полном его отсутствии.

SSB работает уже несколько лет. Функции социальной сети можно протестировать при помощи двух настольных приложений (Patchwork и Patchfoo) и приложения для Android (Manyverse). Для гиков есть ssb-git. Вам интересно как работает offline-first p2p сеть без рекламы и без регистрации? Прошу под кат.

Secure Scuttlebutt — p2p социальная сеть, работающая и в оффлайне

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

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

Приложения, находящиеся в одной локальной сети, видят друг друга и автоматически запрашивают у соседей обновления в интересующих их журналах. Не имеет значения, с какого именно узла вы скачиваете обновление, т.к. подлинность каждой записи вы можете проверить при помощи открытого ключа. При синхронизации не происходит обмена какой-либо личной информацией кроме открытых ключей интересующих вас журналов. По мере того, как вы будете переключаться между разными WiFi/LAN сетями (дома, в кафе, на работе), копии сохранённых у вас локально журналов будут автоматически передаваться на устройства других пользователей, находящихся с вами рядом. Это похоже на то как работает «сарафанное радио»: Вася рассказал Маше, Маша — Пете, а Петя — Валентине. Существенное отличие от «сарафанного радио» в том, что при копировании журналов информация в них не искажается.

«Быть у кого-то в друзьях» здесь приобретает конкретный физический смысл: мои друзья хранят копию моего журнала. Чем больше у меня друзей, тем доступнее мой журнал для других. В описании прокола написано, что приложение Patchwork синхронизирует журналы, находящиеся на расстоянии до 3 шагов (друзья друзей друзей) от вас. В большинстве случаев это позволяет читать длинные дискуссии со множеством участников, находясь в оффлайне.

Журнал пользователя может содержать записи разных типов: публичные сообщения, аналогичные записям на стене ВКонтакте, личные сообщения, зашифрованные открытым ключом получателя, комментарии к записям других пользователей, лайки. Это открытый список. Картинки и другие объёмные файлы не помещаются в журнал напрямую. Вместо этого в него записывается хеш файла, при помощи которого этот файл можно запросить отдельно от самого журнала. Видимость комментариев для автора исходного сообщения не гарантируется: если между вами нет достаточно короткого пути из общих друзей, то таких комментариев вы, скорее всего, не увидите. Таким образом, даже если воены упячки совершат попытку зохватить ваш пост, то, если это были не ваши друзья или друзья друзей друзей, вы ничего не заметите.

Secure Scuttlebutt не первая p2p сеть и даже не первая p2p социальная сеть. Стремление общаться без посредников и выйти из сферы влияния больших компаний существует давно, и у него есть несколько очевидных причин. Пользователей раздражает навязывание крупными игроками правил игры: мало кто хочет видеть на своём экране рекламу или быть забаненным и ждать несколько дней ответа от службы поддержки. Бесконтрольный сбор личных данных и передача их третьим лицам, приводящая, в конечном итоге, к тому, что эти данные иногда продаются в даркнете, снова и снова напоминает о необходимости построения других способов взаимодействия, где пользователь получал бы больший контроль над своими данными. И сам бы нёс ответственность за их распространение и сохранность.

Хорошо известные децентрализованные социальные сети, такие как Diaspora или Mastodon, и протокол Matrix не являются одноранговыми, поскольку в них всегда есть клиентская и серверная часть. Вместо общей базы данных Facebook вы можете выбрать ваш «домашний» сервер, на котором будут размещены ваши данные, и это уже большой шаг вперёд. Однако, у администратора вашего «домашнего» сервера всё ещё есть много возможностей: он может делиться вашими данными без вашего ведома, удалять или блокировать вашу учётную запись. Кроме того, он может потерять интерес к поддержке сервера и не предупредить об этом вас.

В Secure Scuttlebutt тоже есть узлы-посредники облегчающие синхронизацию (они называются «пабы»). Однако использование пабов опционально, а сами они — взаимозаменяемы. Если привычный вам узел недоступен, вы можете воспользоваться другими, ничего не потеряв, поскольку полная копия всех ваших данных всегда у вас. Узел-посредник не хранит невосполнимых данных. Паб, если вы его попросите, добавит вас в друзья и при соединении будет обновлять свою копию вашего журнал. Когда с ним соединятся ваши подписчики, они смогут загрузить ваши новые записи, даже если вы уже отключились. Для того, чтобы паб стал с вами дружить, вы должны получить инвайт у администратора паба. Чаще всего это можно сделать самостоятельно через веб-интервейс (список пабов). Если вы получите бан у всех администраторов пабов, то ваш журнал будет распространяться описанным ранее способом, т.е. только среди тех, с кем вы встречаетесь лично. Передача обновлений на флешке тоже возможна.

Хотя сеть работает довольно давно, в ней немного людей. По подсчётам André Staltz, разработчика Android-приложения Manyverse, в июне 2018 в его локальной базе было около 7 тысяч ключей. Для сравнения, в Diaspora — более 600 тысяч, в Mastodon — около 1 миллиона.

Secure Scuttlebutt — p2p социальная сеть, работающая и в оффлайне

Инструкция для начинающих находится здесь. Основные шаги: установить приложение, создать профиль, получить инвайт на сайте паба, скопировать этот инвайт в приложение. Можно подключать несколько пабов одновременно. Нужно будет запастись терпением: сеть работает намного медленнее, чем Facebook. Локальный кеш (папка .ssb) быстро вырастет до нескольких гигабайт. Интересные посты удобно искать по хеш-тегам. Начинать читать можно, например, с Доминика Тарра ( @EMovhfIrFk4NihAKnRNhrfRaqIhBv1Wj8pTxJNgvCCY=.ed25519 ).

Все изображения — из статьи André Staltz «An off-grid social network» и его твиттера.

Полезные ссылки:

[1] Официальный сайт

[2] Patchwork (приложение для Windows/Mac/Linux)

[3] Manyverse (приложение для Android)

[4] ssb-git

[5] Описание протокола («Scuttlebutt Protocol Guide — How Scuttlebutt peers find and talk to each other»)

Источник: habr.com

Добавить комментарий