Secure Scuttlebutt - p2p соціальна мережа, що працює і в офлайні

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

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

Secure Scuttlebutt - p2p соціальна мережа, що працює і в офлайні

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

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

Програми, що знаходяться в одній локальній мережі, бачать один одного і автоматично запитують у сусідів оновлення в журналах, що їх цікавлять. Немає значення, з якого саме вузла ви завантажуєте оновлення, т.к. дійсність кожного запису ви можете перевірити за допомогою відкритого ключа. При синхронізації не відбувається обміну якоюсь особистою інформацією крім відкритих ключів журналів, що вас цікавлять. У міру того, як ви перемикатиметеся між різними WiFi/LAN мережами (вдома, в кафе, на роботі), копії збережених у вас локально журналів будуть автоматично передаватися на пристрої інших користувачів, що знаходяться з вами поруч. Це схоже на те, як працює "сарафанне радіо": Вася розповів Маші, Маша - Петі, а Петя - Валентині Істотна відмінність від «сарафанного радіо» у цьому, що з копіюванні журналів інформація у яких спотворюється.

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

Журнал користувача може містити записи різних типів: публічні повідомлення, подібні до записів на стіні ВКонтакті, особисті повідомлення, зашифровані відкритим ключем одержувача, коментарі до записів інших користувачів, лайки. Це відкритий перелік. Зображення та інші об'ємні файли не розміщуються безпосередньо в журналі. Натомість у нього записується хеш файлу, з якого цей файл можна запросити окремо від самого журналу. Вигляд коментарів для автора вихідного повідомлення не гарантується: якщо між вами немає достатньо короткого шляху із спільних друзів, то таких коментарів ви, швидше за все, не побачите. Таким чином, навіть якщо військові уп'ячки зроблять спробу захопити вашу посаду, то, якщо це були не ваші друзі або друзі друзів, ви нічого не помітите.

Secure Scuttlebutt не перша p2p мережа і навіть не перша p2p соціальна мережа. Прагнення спілкуватися без посередників і вийти зі сфери впливу великих компаній є давно, і він має кілька очевидних причин. Користувачів дратує нав'язування великими гравцями правил гри: мало хто хоче бачити на своєму екрані рекламу або бути забаненим і чекати на кілька днів відповіді від служби підтримки. Безконтрольний збір особистих даних і передача їх третім особам, що призводить, зрештою, до того, що ці дані іноді продаються в даркнеті, знову і знову нагадує необхідність побудови інших способів взаємодії, де користувач отримував би більший контроль над своїми даними. І сам би ніс відповідальність за їх поширення та безпеку.

Добре відомі децентралізовані соціальні мережі, такі як Діаспора або Мастодонт, та протокол Матриця не є однорангові, оскільки в них завжди є клієнтська та серверна частина. Замість загальної бази даних Facebook ви можете вибрати ваш «домашній» сервер, на якому будуть розміщені ваші дані, і це вже великий крок уперед. Проте, адміністратор вашого «домашнього» сервера все ще має багато можливостей: він може ділитися вашими даними без вашого відома, видаляти або блокувати ваш обліковий запис. Крім того, він може втратити інтерес до підтримки сервера і не попередити вас про це.

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

Хоча мережа працює досить давно, у ній небагато людей. За підрахунками André Staltz, розробника Android-програми багатовселенна, у червні 2018 у його локальній базі було близько 7 тисяч ключів. Для порівняння, у Diaspora більше 600 тисячУ Mastodon - близько 1 мільйона.

Secure Scuttlebutt - p2p соціальна мережа, що працює і в офлайні

Інструкція для початківців знаходиться тут. Основні кроки: встановити програму, створити профіль, отримати інвайт на сайті паба, скопіювати цей інвайт у програму. Можна підключати кілька пабів одночасно. Потрібно буде запастися терпінням: мережа працює набагато повільніше, ніж Facebook. Локальний кеш (папка SSB) швидко виросте до декількох гігабайт. Цікаві пости зручно шукати за хеш-тегами. Починати читати можна, наприклад, з Домініка Тарра (@EMovhfIrFk4NihAKnRNhrfRaqIhBv1Wj8pTxJNgvCCY=.ed25519).

Всі зображення — із статті André Staltz "An off-grid social network" і його твіттера.

Корисні посилання:

[1] Офіційний сайт

[2] печворк (додаток для Windows/Mac/Linux)

[3] багатовселенна (Додаток для Android)

[4] ssb-git

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

Джерело: habr.com

Додати коментар або відгук