Международная конференция разработчиков
и пользователей свободного программного обеспечения

Открытые протоколы - основа распределенных социальных сетей

Александр Загацкий, Витебск, Беларусь

LVEE 2011

Distributed networks help users to control their online identity in the Internet. Their key feature is absence of a central server. Nodes in the network belong to each one of its participants, and software runs on user’s computer or on trusted server. User determines the distribution policy of his data. Distributed social networks are built upon open technologies, such as Atom, WebFinder, OpenID/OAuth, Salmon, ActivityStreams and etc. Most of developed distributed networks are opensourced and under development. Some of them are available to use, i.e. StatusNet – the open source microblogging platform that helps you share and connect in real-time within your own domain. Yet another distibuted social network OneSocialWeb is a dream of the world where all social networks are connected and work together similar to email.

Весной этого года в одном из дата-центров провайдера облачного хостинга Amazon EC2 произошел сбой 1, в результате чего перестали функционировать такие сервисы как Friendfeed, Quora, Reddit, Hootsuite, Foursquare. По неожиданной случайности это совпало с началом судного дня в сериале «Терминатор: Битва за будущее». По сюжету фильма в этот день военная компьютерная сеть SkyNet, управляющая военными роботами вышла из под контроля человека и произвела ряд ядерных атак на человечество. К каким последствиям может привести утрата контроля над персональными данными, созданными пользователями в сети и раскрывающие отдельные моменты их личной жизни?

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

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

В основе функционирования распределенных сетей лежат открытые протоколы. Ключевыми из них являются следующие:

Atom/RSS

Формат синдикации Atom основан на XML и позволяет описывать наборы веб-ресурсов. Например: новостные ленты, анонсы статей в блоге, галереи фотографий и тому подобное. Формат описан в RFC 4287 2.

XRD

Стандарт описания ресурса доступен в 3. Представляет собой последовательное описание данных аккаунта в формате XML. Среди данных — сведения о серверах аутентификации, публичные криптоключи и т.д.

WebFinder

Протокол, позволяющий идентифицироваться пользователю. В качестве идентификации используется запись вида acct:joe@example.com
По данному адресу устанавливается сервер с учетной записью
пользователя и извлекаются XRD-записи.

OpenID/OAuth

Протоколы аутентификации и авторизации. Позволяют повысить безопасность при взаимодействии нескольких независимых сервисов.

Pubsubhubbub

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

Авторами являются сотрудники Google: Brad Fitzpatrick and Brett Slatkin. Источник обновления децентрализуется. Адрес hub для обновлений указывается в RSS/Atom в следующем формате:

Salmon

Этот протокол позволяет отправлять действия по отношению к объекту (например, статье или заметке) с агрегаторов в оригинальный источник. Например, Salmon используется для сбора комментариев к оригинальной статье с других сайтов, на которых статья была опубликована.

Адрес для отправки обновлений указан в RSS/Atom:

Особенностью данного протокола является крипто-подпись сообщений, которая позволяет решить проблемы со спамом. Для получения публичного ключа используется формат XRD.

ActivityStreams

Формат описания активности пользователя на ресурсах. Благодаря этому формату происходит уведомление узлов распределенной сети о действиях пользователей: написании комментария, выставление оценки «нравится», публикации фотографий и т.д. Из форматов доступны как JSON, так и расширения Atom 4.

XMPP

Протокол обмена XMPP («Jabber») лежит в основе транспорта между узлами нескольких распределенных сетей. В качестве клиента используется как десктопные программы, так и мобильные версии.

Portable Contacts

Протокол безопасного предоставления данных о своих контактах внешним сервисам 5. При этом используется протокол OAuth, и пользователь управляет доступом к своему списку контактов.

Среди проектов создания распределенных социальных сетей можно отметить следующие:

StatusNet 6

Открытую платформу для микроблоггинга (аналог Twitter) StatusNet можно установить на собственном домене. Платформа предназначена для коллективного использования. Лицензия: AGPLv3.

GNU Social 7

Соответствует философии Unix: маленькие программы делают маленькие работы. По возможностям близка к Status.net: микроблоггинг. Лицензия: AGPLv3.

Diaspora 8

Проект Diaspora, созданный по инициативе четырех студентов, предназначен для персонального использования: ведения микроблога, публикации фотографий. Лицензия: AGPL-3.0.

friendika 9

Возможности: cервер профилей и поддержка ряда других сетей (Diaspora, Google Buzz, Identi.ca, Twitter), поддержка шифрования между серверами. Лицензия: BSD License.

OneSocialWeb 10

Данная сеть микроблоггинга использует в качестве транспорта протокол XMPP 11. В качестве идентификатора пользователя используется jabber ID, часть протоколов адаптирована для использования в Jabber-сети. Лицензия: Apache 2.

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

Список литературы

1 «Судный день для моих персональных данных». http://zag.ru/a4BR2

2 RFC 4287: The Atom Syndication Format. http://tools.ietf.org/html/rfc4287

3 Extensible Resource Descriptor (XRD). http://docs.oasis-open.org/xri/xrd/v1.0/xrd-1.0.html

4 Формат оповещений Activity Streams. http://activitystrea.ms/

5 Протокол Portable Contacts. http://code.google.com/intl/ru-RU/apis/contacts/docs/poco/1.0/developers_guide.html

6 Платформа для микроблоггинга StatusNet. http://status.net/

7 Распределенная сеть GNU Social. http://foocorp.org/projects/social/

8 Социальная сеть Diaspora. http://www.joindiaspora.com/

9 Распределенная сеть Friendika. http://project.friendika.com

10 Социальная сеть OneSocialWeb, построенная на основе протокола XMPP. http://onesocialweb.org/

11 XMPP — открытый протокол обмена сообщениями и информацией о статусе. http://ru.wikipedia.org/wiki/XMPP

presentation