Темная сторона, федерация и анархизм. Архитектуры мессенджеров

Темная сторона, федерация и анархизм. Архитектуры мессенджеров

t.me/cypherdog

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

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

Централизация

Такой тип архитектуры больше всего подходит корпорациям, англоязычные криптогики любят такое называть их "walled gardens". Определяющее свойство такой архитектуры: работа системы обеспечивается централизованной системой. Не обязательно это один единственный сервер, но важно что контроль над узлом имеет одна единственная компания.

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

Второй крупный изъян в такой архитектуре, центральную точку входа легко заблокировать. Так, например, WhatsApp был заблокирован в Бразилии. В то же время, ничуть не менее централизованный на данный момент Signal, внятно отреагировал на подобную ситуацию в Египте.

В общем и целом, распространилась такая архитектура из-за простоты построения. Ты сам себе бос, что хочу то и ворочу, никаких согласований с федерацией, никаких сложностей с разработкой универсального протокола для всех и каждого. Даже на код никто не посмотрит (в большинстве случаев), любишь грязные хаки? Пожалуйста! Костыли и велосипеды? Конечно, никто ведь не узнает. Чаще всего, централизованная архитектура означает что мессенджер для приватной переписки не подходит.

Федерация

Так работает интернет. Мощно звучит, да? Абсолютное большинство широко распространенных сервисов, на которых, без преувеличения, держится интернет, работает по этому принципу. Определяющее свойство: кто угодно может поднять сервер для работы приложения. Простой пример такой архитектуры - email. Нет разницы где у тебя почта, на gmail, yandex или, господь милостивый, на mail.ru, это не накладывает никаких ограничений на круг тех с кем ты планируешь общаться.

Главное достоинство - каждый может поднять свой собственный сервер и ни от кого не зависеть. Тут каждый сам себе злой буратино и обеспечивает себе безопасность (или дыры в оной) самостоятельно и гордо. Или, если ты без рук и VPS'ки, то волен выбрать поставщика услуг. Конкуренция, хули. На практике, как и с капитализмом, ситуация более плачевная. Возьмем например с email, даже если использовать защищенный и независимый сервер, писать скорее всего придется на gmail/mail/yandex . А это значит, что данные о том что, кому и когда ты написал, осядут в одном месте. Скорее всего, по запросу они будут выданы товарищу майору. А если ты, мой друг, очень опасен, то может даже подполковнику. Печально, но пользователи, в случае использования федеративной архитектуры, часто организуются вокруг самых удобных и продвинутых поставщиков услуг. А они, в свою очередь, могут вносить произвольные изменения в протокол, не открывать код сервера, дописывать туда что-нибудь гадкое и костыльное и так далее.

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

Разработка федеративной архитектуры сложнее. Необходимо прописать взаимодействие сервер-сервер, код держать открытым. А чтобы кто-то еще держал свои сервера для работы твоего любимого, лишенного фатальных недостатков мессенджера, придется придумать и разработать что-то уникальное. Иначе зачем кому-то кроме тебя поднимать сервера?

Среди месенджеров уже есть как минимум два вполне законченных и давно работающих федеративных протокола - IRC и XMPP (в девичестве Jabber). Более того, для них есть плагины для приватного общения, они даже высокого качества. Собственно, а почему ими не пользуются основная масса пользователей? И тут мы знакомимся с очень серьезным недостатком федеративных систем. Очень хорошо об этом рассказал Мокси Марлинспайк (разработчик Signal) в своем блоге. Дело в том, что раньше Signal имел федеративную архитектуру, но Мокси, собрав волю в кулак, сменил архитектуру на централизованную. Основной причиной такого, казалось бы, странного решения, оказалась низкая скорость разработки приложения, протокола и серверной части. И, как бы ни было грустно это признавать, это не пустые слова.

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

Большая часть распределенных технологий развиваются с настолько удручающе медленной скоростью, что хочется плакать. Разрабатывать в таком темпе приложения для пользователей становится действительно сложно. В email до сих пор нет шифрования, о внедрении IPv6 уже десяток лет говорят, да даже блин чертовы ftp серверы не всегда следуют стандарту.

Из действительно интересных продуктов среди федеративно организованных мессенджеров отмечу Matrix. Очень интересная штука, обязательно позже расскажу об этом проекте в подробностях.

Децентрализация (peer to peer)

О, дошли наконец-то до самого вкусного) Ремарочка: речь об одноранговых сетях. Так-то федерация это тоже в некоторой мере децентрализованная архитектура. Определяющая особенность: отсутствие централизации от слова совсем. Не нужно никаких серверов, для функционирования в идеальном сферическом случае достаточно двух пользователей. Вот она, по-настоящему свободная архитектура, я бы даже восторженно-фанатски сказал что лучшая из возможных. Множество чудесных вещей используют этот концепт BitTorrent, DC, Bitcoin (как и другие криптовалюты), даже Skype в лучшие свои годы.

К сожалению, реализовать такую архитектуру еще сложнее. И дело тут даже не в том что нужно как-то перевесить обязанности сервера на приложение, нужно еще и исходить из того что "серверу" в данном случае нельзя доверять, а это добавит кучу неудобств. Каждая фича дается с потом и кровью. Даже оффлайн сообщения тут реализовать это большая проблема. Казалось бы простая штука, в каждом мессенджере есть, но в распределенных сетях это адилово просто.

А из-за того что сложно разработчикам, сложно и неудобно становится и пользователям. Можете практически забыть о хранении чего-либо вне клиентского устройства. История, список контактов, какие-нибудь настройки протокола, да даже аккаунт. Ага, аккаунт. Распределенная сеть предполагает что данные для доступа к есть только у клиента на устройстве, никакого восстановления по почте/телефону или чего-то подобного. Слышали истории о потерянных ключах от биткоин кошельков с тысячами монет? Так-то.

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

Кроме прочего, быстродействие и работа приложения в данном случае опирается на количество пользователей. Начинать продвигать свое детище и так тяжело, а тут еще и физические ограничения этого бренного мира.

Заключение

Если кто не понял, "лучшей" архитектуры нет, у каждой свои плюсы и минусы. Придется выбирать в зависимости от целей)

Report Page