FAQ

Оглавление

Главное

Быстрый старт

Стандарт

Серверы

Клиенты

FAQ Содержание

Главное

Что такое Matrix?

Matrix - это открытый и свободный протокол для децентрализованного общения в реальном времени. Он может быть использован для мгновенных сообщений, аудио- и видеосвязи с помощью WebRTC, интернета вещей и чего угодно, где вам может понадобиться стандартный HTTP API для публикации и подписки на информацию одновременно с отслеживанием истории общения.

Matrix определяет стандарт и предоставляет open-source реализации серверов, клиентов, инструментов для разработки (или просто SDK) и сервисов приложений, чтобы помочь вам в создании новых или в расширении существующих решений для коммуникации.

В чём заключается цель Matrix?

Первоначальная цель Matrix состоит в решении проблемы фрагментации IP-коммуникаций: дать возможность пользователям переписываться или звонить друг другу без заботы о том, какие приложения они используют - сделать это таким же лёгким, как отправка электронных писем.

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

Что предоставляет Matrix?

Matrix предоставляет:

  • Открытый стандарт HTTP API для передачи JSON-сообщений (например, мгновенные сообщения, сигнализация WebRTC), включая:
  • Клиент<->Серверный API, определяющий, как клиенты Matrix будут общаться с серверами Matrix.
  • Сервер<->Серверный API, определяющий, как сервера Matrix будут общаться и синхронизироваться друг с другом.
  • API для сервиса приложений, определяющий, как расширять функциональность Matrix с «интеграциями» и «мостами» в другие сети.
  • Модули, определяющие, как конкретно должны быть реализованы классы клиентов.
  • Открытые реализации для:
  • Клиентов (Web (React), iOS, Android)
  • Инструменты разработчика клиентов (Javascript, Web (React), iOS, Android)
  • Сервера (Synapse)
  • Сервисы приложений («мосты» в IRC, Slack, Skype, Lync и другие)
  • Современную экосистему для сообщества, использующего сервера и сервисы Matrix
  • Активный вклад сообщества в развитие клиентов, инструментов разработки, серверов и сервисов.

Вы можете найти полный список Matrix-проектов на https://matrix.org/blog/try-matrix-now.

Что это значит для пользователей?

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

Что за компания Matrix.org?

Matrix.org - это открытая инициатива, которая действует как нейтральный и независимый хранитель стандарта Matrix. По состоянию на сентябрь 2017 года мы наконец занялись формированием его в виде некоммерческой организации (скорее всего британской компанией, ограниченной гарантией, называемой Matrix.org Foundation).

Кто спонсирует Matrix.org?

Matrix.org на текущий момент (сентябрь 2017) существует за счёт пожертвований сообщества, используя комбинацию различных площадок Patreon, Liberapay, Bitcoin and Ethereum), корпоративного спонсорства и получения грантов. Посмотреть текущих спонсоров уровня Elliptic на площадке Patreon и корпоративных спонсоров можно на странице наших сторонников. Если вы желаете поддержать команду Matrix в качестве члена сообщества, пожалуйста, посетите нашу страницу на Patreon и Liberapay, или вы можете внести пожертвование в биткоинах на адрес 1LxowEgsquZ3UPZ68wHf8v2MDZw82dVmAE или эфир на адрес ETH 0xA5f9a4f9E024F6D727f7afdA9257e22329A97485. Если вы желаете спонсировать команду как корпорация или заинтересованы в оплате приоритетных или дополнительных разработок, пожалуйста, свяжитесь с нами.

В течение первых трех лет разработки Matrix (2014-2017) большинство основных участников работали на Amdocs, которые оплачивали им полный рабочий день для работы над Matrix. В июле 2017 года Amdocs посчитали проект достаточно успешным, чтобы теперь он мог самоподдерживаться, и поэтому прекратили финансирование. Теперь большая часть основной команды работает на New Vector, независимую компанию, созданную для найма команды и поддержки разработки Matrix. Другие участники финансируются собственными работодателями или жертвуют свое время на проект.

Кто разрабатывает Matrix?

Основная команда состоит из ~12 человек, имеющих обширный опыт в построении VoIP и приложений для обмена сообщениями для мобильных операторов. Большая часть из нас работает в компании New Vector, но также есть растущее количество сотрудников из других компаний и людей со всего интернета.

Почему вы называетесь Matrix?

Мы называемся Matrix, потому что предоставляем инфраструктуру, в которой вся коммуникация может быть связана воедино». «Matrixed» — как связующее существо.

Нет, это не имеет отношения к фильму (но вы можете построить виртуальный мир на Matrix, если захотите :)

Почему вы развиваете этот проект как open source?

Мы убеждены, что любой открытый стандарт коммуникации должен быть подтверждён, продемонстрирован и оценен прозрачными open-source реализациями. Мы считаем, что для достижения своей цели - интероперабельности всех средств связи, Matrix должен быть истинно открытым, предоставляя людям доступ ко всему коду, который мы производим, и возможность его использования.

Что вы подразумеваете под открытостью?

Matrix - это открытый стандарт, и это означает, что мы свободно публикуем детали о том, как взаимодействовать, используя набор Matrix HTTP API. Мы призываем всех и каждого использовать API и строить свои проекты, которые реализуют их, и, таким образом, получать выгоду от взаимодействия с остальной частью экосистемы Matrix. Мы также гарантируем, что стандарт не обременён никакими известными требованиями лицензирования патентов.

Matrix также является open-source системой, подразумевающей, что мы публикуем весь исходный код базовой реализации, клиентов и сервисов для общедоступного использования под лицензией Apache Licence v2, чтобы побудить всех и каждого запускать свои сервера и клиенты, а также улучшать и вносить свой вклад по улучшению так как они это видят.

Что означает федеративность?

Федерация позволяет независимым экземплярам коммуникационных сервисов общаться между собой - например, как почтовый сервер Gmail взаимодействует с почтовым сервером Microsoft, когда вы посылаете письмо с @gmail.com на @hotmail.com.

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

Matrix обеспечивает открытую федерацию - это означает, что любой в интернете может присоединиться к экосистеме Matrix, развернув свой сервер.

Как оно сопоставимо с электронной почтой?

Когда электронная почта впервые появилась в начале 80’х, такие компании, как Compuserve, AT&T и Sprint создали изолированные сообщества, позволявшие обмениваться почтой только с пользователями той же системы. Если у вас был почтовый ящик от одного сервиса, а у вашего друга от другого, вы не могли общаться друг с другом. Такую же ситуацию мы имеем сейчас с VoIP и IM.

Почему раньше никто не сделал этого?

Было несколько попыток прежде, включая SIP, XMPP и RCS. Все они имели разный уровень успеха, но большое количество технических, экономических и архитектурных проблем привели к ограничению их успеха. К несчастью, мы не оказались в мире, где у каждого есть SIP URI или Jabber ID на его визитной карточке или номера телефона, который использует RCS.

В чём разница между Matrix и IRC?

Мы любим IRC. Фактически, на сегодня основная команда Matrix использует её в качестве основного инструмента общения. Мы писали для себя IRCd, IRC ботов и администрировали dreamforge, UnrealIRCd, epona, ircservices и несколько других. Тем не менее, у этого решения есть несколько ограничений, которые Matrix стремится преодолеть:

  • только текст
  • отсутствие истории
  • нет поддержки нескольких устройств
  • нет поддержки присутствия
  • фрагментированная модель идентичности
  • нет открытой федерации
  • нет стандартного API, только несколько ограниченных TCP протоколов
  • не стандартизирован протокол федерализации
  • нет встроенного сквозного шифрования
  • разрушающие разделения сети (split)
  • не расширяем

IRCv3 существует и решает некоторые из этих проблем; это отличная новость и мы желаем им успехов. Для открытых систем коммуникации становиться конкурентами друг другу почти противоречит здравому смыслу - мы с нетерпением ожидаем увеличения количества мостов Matrix-IRC по мере продвижения проекта.

В чём различия между Matrix и XMPP?

Команда Matrix использовала XMPP (Openfire, ejabberd, spectrum, asmack, XMPPFramework) в качестве IM до того, как начали эксперимент с разработкой открытого HTTP API в качестве альтернативы примерно в 2012 год. Главные проблемы XMPP, что сподвигли нас на этот путь в 2012 году, были:

  • Не особенно хорош для веба: вы не можете легко использовать XMPP из веб-браузера. N.B. В настоящее время существуют такие опции как XMPP-FTW и Stanza.io, которые помогут вам общаться в XMPP посредством браузера.
  • Один логический сервер на MUC - это единственная точка управления и доступности. MUC могут быть распределены по нескольким физическим серверам, но они по-прежнему остаются за одним логическим JID и доменом. FMUC улучшает ситуацию с помощью аналогичного подхода в Matrix, но по состоянию на октябрь 2015 года нет реализаций с открытым исходным кодом. Расширение MIX XMPP так же нацелено на устранение этого ограничения.
  • Функция синхронизации истории отодвинута на второй план.
  • “Мосты” в другие протоколы и дефрагментация существующих коммуникационных приложений и сетей тоже скорее второстепенны
  • XML-сообщения (станзы) не могут быть оформлены или надежно доставлены без расширений. См. wiki.xmpp.org для их использования в XMPP
  • Поддержка нескольких устройств ограничена. Carbons и MAM стараются решить эту проблему
  • Базовый набор функций настолько минимален, что фрагментация функций между клиентами и серверами является обычным явлением, особенно когда профили совместимости для функций отстают (на июль 2015 года)
  • Нет хорошей системы идентификации (т. е. нет стандартного E2E PKI, если вы не считаете таковыми сертификаты X.509, которые сомнительны)
  • Не очень хорошо спроектирован для применения на мобильных устройствах: push; эффективный транспортный протокол. С момента написания этого появился Push XEP, и wiki.xmpp.org заявляет, что XMPP применим для канала 9600 бит с 30-секундной задержкой.

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

Мы думаем, что Matrix и XMPP совершенно разные; в своей основе Matrix можно рассматривать как согласованную глобальную JSON-db с API-интерфейсом HTTP и семантикой pubsub, в то время как XMPP можно рассматривать как протокол передачи сообщений. Вы можете использовать их как для создания чат-систем, так и для создания систем pubsub: каждый из них имеет свои преимущества. Matrix имеет намеренно обширную базовую функциональность; XMPP имеет намеренно минимальный базовый набор функциональных возможностей. Если XMPP делает то, что вам нужно, то мы искренне рады за вас :) Между тем, вместо того, чтобы конкурировать, XMPP-мосты, такие как бета-версия xmpptrix от Skaverat, или matrix-xmpp-bridge от jfred, или purple-matrix от Matrix.org имеют потенциал, чтобы обе среды сосуществовали и максимально использовали преимущества друг друга.

В чём различия между Matrix и PSYC?

PSYC - это открытый федеративный протокол обмена сообщениями, слабо вдохновлённый IRC. В первой версии это был автономный протокол, а во второй версии он повторно использовался как уровень обмена сообщениями поверх GNUnet. Мы честно не знаем много о нём, помимо того, что пытались использовать psycd как мост XMPP-IRC в 2010 году. Matrix отличается прежде всего тем, что предоставляет простое HTTP API, а не более экзотический компактный протокол в PSYC v1 или всеобъемлющий стек GNUnet во второй версии, а Matrix больше фокусируется на децентрализованной истории разговоров, а не на децентрализованных чат-серверов. С другой стороны Matrix не предоставляет гарантии защиты метаданных, к которым стремится GNUnet/PSYC.

См. http://about/psyc.eu/Matrix, чтобы прочитать точку зрения PSYC на Matrix.

В чём разница между Matrix и Tox?

Tox.chat выглядит как очень классный клон Skype - полностью децентрализованная одноранговая сеть. Matrix намеренно не является “чистой” одноранговой сетью, вместо это у каждого пользователя есть строго заданный домашний сервер, который хранит его данные и от которого зависит клиент. Matrix предоставляет HTTP API, Tox.chat предоставляет C API. По состоянию на октябрь 2015 года Tox похоже не решил проблему с децентрализованным хранением истории.

Как Matrix сопоставим с чем-нибудь типа Trillian или Pidgin?

Trillian, Pidgin и другие похожие IM-агрегаторы объединяют все ваши аккаунты IM в одно приложение. Однако, ваша история сообщений и аккаунты всё ещё разбросаны по сетям. Люди не могут просто так вас найти, ваша история фрагментирована и существует только на том устройстве, где запущен клиент. И вместо использования подходящего приложения для общения с людьми, вы опираетесь на приложение-комбайн, умеющее работать со многими протоколами.

Matrix позволяет вам получить лучшее обоих миров, соединяя разные сети (XMPP, AIM, ICQ, Lync, Skype и другие) на серверной части, используя «мосты», которые могут быть запущены кем угодно. Matrix предоставляет простой стандартный HTTP API для доступа к этим сетям и даёт выбор, какой клиент вам использовать («нативный» или из той сети, с которой был соединён «мост»).

Какие есть приложения Matrix?

Довольно немного, от привычных для массового использования и до «гиковских» консольных. Даже есть макрос для Emacs. Зайдите на https://matrix.org/blog/try-matrix-now для ознакомления с текущим списком проектов, использующих Matrix.

Какие «мосты» в другие сети доступны?

Количество «мостов», разрабатываемые командой Matrix и сообществом, которые интегрируют существующие сети в Matrix, растёт с каждым днём. Полный список можно найти на https://matrix.org/blog/try-matrix-now, но основные проекты за Октябрь 2015 года: * matrix-appservice-irc - всё более всеобъемлющий Matrix-IRC «мост» * matrix-appservice-verto - объединяет Matrix и FreeSWITCH с помощью протокола Verto * matrix-appservice-slack - простой «мост» в Slack * node-purple - дающий вам возможность доступа в 20+ протоколов, поддерживающихся libpurple, включая Skype, Lync, XMPP и другие * matrix-appservice-bridge - основной фреймворк на NodeJS для написания «мостов»

Написание «мостов» невероятно весёлое и простое занятие: посмотрите на matrix-appservice-bridge HOWTO для примера, как написать полностью работающий «мост» в Slack всего в 100 строк кода!

Почему вы думаете, что существующие приложения присоединятся к вам официально?

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

Почему вы не делаете это через IETF? Или W3C? Или 3GPP?

Мы признаём преимущества работы с существующими стандартизирующими организациями. Мы были сосредоточены на написании кода и стандарт быстро развивался с момента первоначального выпуска в сентябре 2014 года. Как только стандарт созреет достаточно, вполне может быть целесообразно работать с официальным стандартизующим органом, чтобы поддерживать его в будущем.

Быстрый старт.

Как зарегистрироваться и начать общаться?

Наиболее быстрый способ - это установить клиент с https://matrix.org/blog/try-matrix-now и зарегистрироваться. Обратите внимание, что для клиента можно указать любой сервер как домашний - не обязательно использовать matrix.org, хотя, как и в первый день, matrix.org является единственным общедоступным сервером.

Что я могу с этим делать?

Типичный клиент предоставляет простой чат интерфейс в Matrix, позволяя пользователю взаимодействовать с другими пользователями и комнатами в Matrix-федерации. Поддерживаются обмен текстовыми сообщениями, картинками, файлами, подключение различных ботов и мостов. Также работают голосовые и видео-звонки (1:1 и групповые).

Как мне подключить свой сервер к публичной сети Matrix?

Зайдите на http://github.com/matrix-org/synapse для деталей.

Как мне интегрировать Matrix в моё приложение?

Если ваше приложение пока что не имеет возможностей коммуникации, вы можете использовать инструменты разработчика клиентов для интеграции. Они поставляются в разных уровнях сложности, от простых HTTP API обёрток (такие как matrix-js-sdk, matrix-ios-sdk и matrix-android-sdk) и до компонентов для построения UI (такие как matrix-react-sdk и matrix-ios-kit). Выберите инструмент для своей платформы или, если не нашли ничего подходящего, используйте созданный сообществом. Вероятно, вам также захочется почитать HOWTO по клиент-серверному API .

Если у вас уже есть рабочая инфраструктура (XMPP, собственная реализация на HTTP или что угодно), вы можете поднять «мост» в экосистему Matrix. Почитайте matrix-appservice-bridge HOWTO для руководства о том, как писать «мосты», используя фреймворк matrix-appservice-bridge или другой из списка https://matrix.org/blog/try-matrix-now. API сервиса приложений предоставляет детали об API, которым «мост» должен соответствовать.

Как я могу написать клиент Matrix?

Смотрите HOWTO по клиент-серверному API, документы и спецификации по всем деталям, которые вам нужны для написания клиента.

Как я могу вам помочь с этим?

Придите и скажите «привет» в #matrix:matrix.org! Установите synapse и скажите как он вам. Критикуйте спецификации. Пишите клиенты. Пишите «мосты»! Пройдитесь по нашим репозиториям на GitHub и отправляйте нам PR с исправлениями ошибок и реализациями новых возможностей! Вы даже можете попробовать написать реализацию сервера (но имейте в виду, архитектура Matrix делает реализацию серверов куда более сложной, чем клиентов и «мостов»).

Почитайте CONTRIBUTING.rst для подробностей, как вы можете помочь проекту. Мы рады всем!

Где я могу получить помощь?

#matrix:matrix.org он же #matrix on irc.freenode.net - это ваш лучший выбор.

Как я могу зарегистрировать собственные типы событий в Matrix?

Мы пока что не осуществляем регистрацию кастомных событий в Matrix. Если у вас есть хорошие кандидаты, о которых вы хотите сообщить миру, пожалуйста, дайте нам знать в #matrix-dev:matrix.org.

Насколько вы зрелые?

Мы начали работу над Matrix в июле 2014 года и открыли её публике в сентябре 2014. Мы реализовалии все основные функции в декабре 2014 и вошли в бету, и с тех пор развиваем архитектуру и API, исправляем ошибки и масштабируемость, добавляем новые функции, клиенты, «мосты» и прочее.

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

Стандарт.

Что такое клиент?

Пользователи в Matrix используют один или более клиентов для общения. Это может быть любая комбинация из веб-клиента, консольного клиента и мобильного клиента, или встроенного в другие существующие приложения. Это даже может быть частью оборудования (например, дрон), использующего Matrix.

Могу ли я использовать Matrix без установки клиента?

Конечно. Растущее количество протоколов объединяется «мостом» в Matrix, так что если вы используете что-нибудь типа IRC во Freenode, вы можете косвенно быть частью Matrix, так как другие клиенты могут подключиться к IRC-каналу с помощью Matrix.

Что такое хоум-сервер?

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

Что такое MXID?

Идентификатор пользователя Matrix (MXID) - это уникальный идентификатор. Они хранятся в формате @пользователь:сервер.tld (этот формат используется для того, чтобы не перепутать с адресами электронной почты). Они предназначены быть скрытыми (на данный момент это не так), вместо них предлагается использовать 3PID.

Что такое 3PID?

Сторонние идентификаторы (3PID) - это идентификаторы из других систем или платформ, таких как email, социальные сети или телефонный номер.

Что такое identity сервер?

Пользователи в Matrix идентифицируются с помощью уникального идентификатора Matrix (MXID). Однако, существующие сторонние идентификаторы (3PID), такие как email или телефонный номер, могут использоваться как для идентификации пользователей, как и для приглашения новых пользователей (инвайты). Аккаунт Matrix может определяться одновременно как и MXID, так и любым существующим идентификатором, привязанным к его аккаунту.

Пользователи Matrix могут связать сторонний идентификатор с их MXID. Связывание создаёт отображение со стороннего идентификатора на MXID. Это отображение затем может использоваться Matrix для определения MXID по его контакту.

Для того, чтобы подтвердить подлинность отображения с 3PID на MXID используется глобальный федеративный кластер доверенных “Identity серверов” (IS) для проверки 3PID, сохранения и дублирования отображения 3PID на MXID. Использование IS не является обязательным условием клиентских приложений, чтобы быть частью экосистемы Matrix. Однако без этого клиенты не смогут определить идентификатор пользователя по его стороннему идентификатору.

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

Где хранятся мои беседы?

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

Зачем нужно удаление?

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

Как производятся VoIP вызовы в Matrix?

Голосовые (и видео) звонки в Matrix работают с использованием стандарта WebRTC 1.0 для передачи медиа данных (голос или видео). Для установления и завершения звонков Matrix использует события вызова наравне с другими событиями.

Зашифрованы ли VoIP звонки?

WebRTC шифрует все данные, которые пересылваются. События сигнализации, которые устанавливают (и завершают) вызовы будут зашифрованы только если они посылаются в зашифрованной комнате.

Нужен ли мне TURN сервер?

VoIP вызовы должны работать если оба участника находятся в публичных сетях. Однако, на практике одно (или оба) устройства часто расположены за службой трансляции адресов (NAT), в таком случае необходим TURN-сервер для установления вызова.

Смотрите инструкцию для установки и настройки TURN-сервера для Synapse.

Могу ли я заходить на другие хоум-серверы со своим юзернеймом и паролем?

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

Почему лицензия Apache?

Лицензия Apache является разрешающей. Мы хотим, чтобы протокол Matrix был бесплатным и открытым, чтобы люди свободно могли создавать как бесплатные, так и коммерческие приложения и сервисы, использующие протокол. По нашему мнению, Matrix-сервис только улучшит Matrix экосистему.

Могу ли я написать Matrix хоум-сервер?

Да. Matrix это всего лишь спецификация, поэтому реализации только приветствуются! Следует отметить, что по состоянию на октябрь 2015 изменения всё ещё производятся в спецификации, поэтому, если вы хотите написать свой Matrix-сервер, настроятельно рекомендуем общаться с разработчиками Matrix.org в #matrix:matrix.orgg! Вы также можете почитать о API федерации здесь.

Насколько это безопасно?

Трафик сервер-сервер в обязательном порядке заворачивается в TLS. Трафик клиент-сервер шифруется на транспортном уровне. Сервера поддерживают пару открытый/закрытый ключей и поддерживают целостность всей истории переписки, подписываю сообщения, предотвращая подделку. Ключи серверов распределяются с использованием системы Перспектив.

Сквозное (оконечное) шифрование доступно в различных сборках Riot.im. Это позволяет вам шифровать личные и групповые чаты для защиты пользовательских данных, которые сохраняются на сервере, используя библиотеку Olm с реализацией ratchet. Узнайте больше в блоге, в котором объявлена данная функциональность.

Конфиденциальность данных в настроящее время не защищена от администраторов серверов, администратор мошеннического сервера может видеть, кто с кем общается и когда, но не может прочесть саму переписку (если включено сквозное шифрование). Смотрите презентацию от Jardin Entropique для более плотного обсуждения вопросов конфиденциальности в Matrix.

Что такое Перспективы?

Вместо того, чтобы полагаться на центры сертификации (CAs), как в традиционном SSL, Перспектив-система использует более децентрализованную модель проверки ключей. Эта модель использует нотариальные серверы для проверки того, что один и тот же ключ виден во всей сети, что делает атаку “человек посередине” (MITM) намного сложнее, потому что злоумышленник должен будет встроится в несколько мест. Для федерации в Matrix, каждый сервер выступает в качестве нотариуса. Когда один сервер подключается к другому серверу, который использует не распознаваемый ключ, происходит обращение к другим серверам, чтобы проверить, что все они видят один и тот же ключ с этого сервера.

Почему HTTP, он же лажовый? Почему вы не используете websockets/CoAP/HTTP2/итп?

HTTP действительно не самый эффективный транспорт, но он очень распространён, понятен и поддерживается почти любой платформой и языком программирования. Также у него есть опция апгрейда до HTTP/2, который относительно эффективен в плане траффика.

Поэтому он был выбран обязательным для базового минимума, но вполне возможно применение и более экзотических протоколов для коммуникации между клиентами и сервером (смотрите например этот проект websocket транспорта), и возможно в будущем для межсерверного обмена в федерации будут добавлены более эффективные протоколы, с сохранением HTTP+JSON для базовой совместимости.

Серверы

Что такое Synapse?

Synapse - это эталонная реализация сервера Matrix, разрабатываемая командой matrix.org, написанная на Python 2/Twisted. Она предназначена для демонстрации концепта Matrix и показа работы спецификации в контексте кодовой базы, а также даёт вам возможность поднять свой собственный сервер и помочь в расширении экосистемы.

Как мне присоединиться к глобальной федерации Matrix?

Вы можете скачать и запустить один из доступных серверов Matrix - подробности, пожалуйста, смотрите в соответствущих руководствах.

Какие порты я должен открыть, чтобы присоединиться к федерации Matrix?

Мы рекомендуем использовать порт 8448 для сервер-серверного HTTPS трафика. Почитайте секцию «Setting up Federation» в файле readme Synapse.

Клиент-серверный трафик может обращаться к Synapse через 8448 порт, но по умолчанию Synapse создаёт самоподписанный TLS-сертификат, который может вызывать проблемы у клиентов, которые не доверяют самоподписанным сертификатам (например, мобильные веб-браузеры). Вместо этого вы можете использовать прокси для доступа к прослушиваемому HTTP Synapse через порт 8008 с помощью существующего HTTPS прокси с действительным сертификатом (например, nginx, слушающего 443 порт) или непосредственно указать на файл действительного TLS-сертификата, подписанного X.509. В будущем Synapse будет использовать letsencrypt для автоматической генерации действительных сертификатов вместо самоподписанных при установке, чрезвычайно упрощая процесс.

Вы также можете расположить Synapse за существующим TLS балансировщиком нагрузки и не открывать порт 8448. В таком случае надо настроить Synapse, чтобы он использовал тот же самый публичный TLS-сертификат, что и балансировщик нагрузки. (поскольку Synapse использует публичный сертификат для идентификации в других областях тоже, он должен соответствовать сертификату, который видят другие серверы, когда подключаются).

Как установить свой личный сервер?

Следуя инструкциям сервера, который вы хотите поднять. Если вы хотите использовать Synapse, сервер Matrix.org, следуйте этим инструкциям.

Можно запустить свой сервер идентификации?

Да, текущая реализация - это sydent, которая позволяет вам поднять собственный сервер ID, отображающая 3PID. Это не очень полезно на данный момент и мы не рекоммендуем его к использованию.

Если вы хотите, чтобы ваш сервер учавствовал в распределённой сети MXID, дайте нам знать. Пока что мы ищем пути децентрализации «официального» MXID, чтобы сервера идентификации были на 100% децентрализованы и могли свободно общаться друг с другом посредством федерации. К вашему сведению, вы можете использовать Matrix без сервера идентификации - он нужен только для отображения 3PID (например, адреса электронной почты), для поиска пользователей.

Каковы системные требования для Synapse?

Synapse будет потреблять столько памяти, сколько вы ему выделите. В основном память используется для кэширования сообщений, чтобы избежать обращений к базe данных. Для маленьких серверов (менее 50 пользователей) будет скорее всего достаточно около 512MB памяти. Вы можете настроить количество потребляемой памяти с помощью параметра event_cache_size: чем больше событий в кеше, тем больше требуется памяти. Synapse сам по себе требует относительно мало дискового пространства кроме логов (которые по состояние на 2015 год довольно подробны для нужд откладки), но поскольку он кеширует контент своих пользователей (картинки, видео итп), вам потребуется хранилище соотвeтствующих объёмов. На текущий момент Synapse однопоточен и использует только одно ядро (на 2018 это уже не так).

Для повышения производительности можно использовать СУБД Postgres вместо SQLite, которая идёт по-умолчанию, смотрите https://github.com/matrix-org/synapse/tree/master/README.rst#using-postgresql для подробностей.

Почему Synapse на Python/Twisted?

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

Почему вы не используете ORM слой, как SqlAlchemy в Synapse?

Synapse сильно зависит от базы данных (на октябрь 2015; однако, это улучшится в ближайшем будущем), и нам нравится иметь гибкость, чтобы лепить собственные запросы.

Будет ли Synapse делиться информацией из моего чата с другими серверами в федерации?

Данные распределяются только между серверами участников комнаты. Если все участники находятся на вашем сервере, то никакие данные не синхронизируются с другими серверами.

Почему я не могу переименовать свой хоум-сервер?

Сейчас предполагается, что имя сервера никогда не изменяется. Это означает, что если переименовать свой сервер, то другие сервера начнут думать, что это другой сервер.

Возможно, в будущем будет добавлен API для изменения имени сервера, но это пока не поддерживается.

Клиенты

Где я могу найти мобильное приложение?

Riot доступен для Android и iOS.

Версию для iOS можно скачать с Apple store.

Версию для Android можно скачать с Google Play ли F-Droid. Если не знаете, какую из версий выбрать, установите Riot из Google Play.

Для Android также можно установить последнюю разрабатываемую версию, построенную Jenkinss. Используйте её на свой страх и риск и только в том случае, если знаете, что делаете.

Я установил Riot из F-droid, почему он сажает мне батарею?

Версия F-Droid не использует Google Cloud Messaging. Это даёт пользователям возможность использовать Riot, если они не хотят или не могут установить Google Services.

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

Если вы не против использования Google Services, то лучше установить версию для Google Play.

Где я могу найти веб клиент?

Вы можете использовать Riot.im - современный веб-клиент, построенный на matrix-react-sdk.

Где я могу найти десктопный клиент?

Вы можете воспользоваться десктопной сборкой Riot.im.

Есть также другие десктопные клиенты - посмотрите список на matrix.org.

Почему E2E шифрование не может быть выключено?

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

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

Ещё хуже, кто угодно с доступом к самому серверу так же может удалить флаг (напоминаем, что главная причина использования E2E-ширфования есть то, что мы не доверяем системным администраторам) и могут с лёгкостью прочитать всю вашу приватную переписку.

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

Почему E2E шифрование не включено по умолчанию?

Мы намеренно сохраняем E2E по умолчанию выключенным на стадии беты, т.к. есть небольшой риск нерасшифровки сообщений, и мы не хотим создавать у людей ложного чувства безопасности. По выходу из беты мы сделаем E2E включенным по умолчанию для комнат с приватной историей. Еще одна причина - дать другим клиентам время обзавестись поддержкой E2E прежде, чем оно станет использоваться по умолчанию.

ВОПРОСЫ, НА КОТОРЫЕ НУЖНО ОТВЕТИТЬ!

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

  • Как мне сменить TLS-ключ моего сервера?
  • Как мне поддерживать базу данных synapse (например, удалять старую историю переписок)?
  • Как мне поддерживать данные synapse (например, удалять старый контент)?
  • Почему спецификация такая большая, особенно в сравнение с XMPP?
  • Как я могу помочь в развитии спецификации?
  • Какова политика конфиденциальности Matrix.org?
  • Как именно работает E2E-шифрование?
  • Как работает Matrix архитектурно?
  • Как Matrix можно использовать в интернете вещей?
  • Почему основные реализации Matrix написаны на стольких разных языках?
  • Как работают push-уведомления?
  • Какова ваша «дорожная карта»/Каковы ваши планы на будущее?
  • Как я могу использовать Matrix для общения во Freenode или в других IRC-сетях?
  • Где я могу больше узнать о Matrix? (ссылки на PDF и другие презентации, и так далее)
  • Почему synapse потребляет столько ресурсов для построения федерации в первый раз?
  • [Здесь будет ваш вопрос…]

У вас остались вопросы? Свяжитесь с нами в #matrix:matrix.org.

Copyleft by Perevodators team. #perevodators:matrix.org

How helpful was this page? Click to give a rating