Хабрахабр

[Из песочницы] Secure Scuttlebutt — p2p социальная сеть, работающая и в оффлайне

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

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

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

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

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

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

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

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

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

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

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

Основные шаги: установить приложение, создать профиль, получить инвайт на сайте паба, скопировать этот инвайт в приложение. Инструкция для начинающих находится здесь. Нужно будет запастись терпением: сеть работает намного медленнее, чем 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»)

Теги
Показать больше

Похожие статьи

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»
Закрыть