SlideShare a Scribd company logo
1 of 12
Download to read offline
Matrix – прагматический подход
к децентрализации
Распределённая система хранения и обмена
сообщениями в реальном времени
• Возраст проекта – 1 год (июль 2014)
• Команда разработчиков – ~10 человек
• Состояние – late beta:
– Спецификация (WIP; достаточна для реализации клиентской части)
– Эталонная реализация серверной части: Synapse (python2/twisted)
– Веб-клиент, плагин к WeeChat, клиенты для мобильных платформ, SDK…
Matrix – прагматический подход
к децентрализации
Что представляет собой сеть Matrix
• распределённая база данных цепочек сообщений
– хронологически упорядоченная
– криптографически защищённая (Merkle tree)
– в конечном счёте согласованная (eventually consistent)
• совокупность узлов со свободным участием в сети
• протокол на основе JSON-over-HTTP(S) API
– расширяемый новыми типами событий (сообщений)
– интеграция с WebRTC как пример такого расширения
идеализм прагматизм
полный P2P
(GNUnet, Tox, …)
есть концепция сервера,
но нет центрального
(федерация)
Matrix и XMPP (Jabber)
Идейные различия:
• передача сообщений ↔ синхронизация состояния
– «вечное» хранение истории сообщений
– распределённые по нескольким серверам конференции
– принципиальная устойчивость к проблемам со связью
– полная поддержка нескольких устройств на аккаунте
(опять же, исходя из сущности протокола)
Технические различия:
• JSON эффективнее использует место, чем XML
• A/V стандартизировано с самого начала (WebRTC)
• На стороне клиента нет сложной логики
(меньше возможностей для мутаций протокола)
XMPP – Message Passing Protocol.
Архитектура Matrix
1. Homeserver – полноправный узел
сети, участвующий
(или не участвующий) в федерации
– хранение профиля пользователя
– хранение и синхронизация комнат
(независимых цепочек событий)
• Merkle tree в хронологическом порядке
• между серверами передаются вершины
и рёбра графа, а не отдельные события
– состояние комнат распределено по
всем участвующим серверам
(и только по ним)
• сейчас – полностью реплицируется
– связь – HTTPS
hs1.tld.
hs2.tld.
hs3.tld.
Архитектура Matrix
1. Homeserver – полноправный узел
сети, участвующий
(или не участвующий) в федерации
2. Клиенты – занимаются только тем,
что получают от «своего» сервера
поток событий (и отправляют свои)
– могут быть сколь угодно простыми
– модель publish/subscribe
– REST-подобное API ⇒ состояние
клиента хранится на клиенте
(и больше ничего)
– опять же, HTTP(S)
hs1.tld.
hs2.tld.
hs3.tld.
@user1:hs1.tld.
@user2:hs2.tld.
Архитектура Matrix
1. Homeserver – полноправный узел
сети, участвующий
(или не участвующий) в федерации
2. Клиенты – занимаются только тем,
что получают от «своего» сервера
поток событий (и отправляют свои)
3. Application Server – своего рода
произвольное расширение HS
– например, шлюз в другую сеть
(s2s в терминах XMPP)
– может создавать пользователей,
перехватывать и генерировать события
hs1.tld.
hs2.tld.
hs3.tld.
@user1:hs1.tld.
@user2:hs2.tld.
jabber.hs3.tld.
user3@jabber.hs3.tld.
Архитектура Matrix
1. Homeserver – полноправный узел
сети, участвующий
(или не участвующий) в федерации
2. Клиенты – занимаются только тем,
что получают от «своего» сервера
поток событий (и отправляют свои)
3. Application Server – своего рода
произвольное расширение HS
4. Identity Server – опциональная
сущность, (централизованно)
отображающая сторонние
идентификаторы на Matrix ID
– Matrix ставит перед собой цель стать
универсальным высокоуровневым
транспортом
hs1.tld.
hs2.tld.
hs3.tld.
@user1:hs1.tld.
@user2:hs2.tld.
jabber.hs3.tld.
user3@jabber.hs3.tld.
Архитектура Matrix
1. Homeserver – полноправный узел
сети, участвующий
(или не участвующий) в федерации
2. Клиенты – занимаются только тем,
что получают от «своего» сервера
поток событий (и отправляют свои)
3. Application Server – своего рода
произвольное расширение HS
4. Identity Server – опциональная
сущность, (централизованно)
отображающая сторонние
идентификаторы на Matrix ID
5. Push Gateway – шлюз для пересылки
push-оповещений на устройства
hs1.tld.
hs2.tld.
hs3.tld.
@user1:hs1.tld.
@user2:hs2.tld.
jabber.hs3.tld.
user3@jabber.hs3.tld.
Криптография в Matrix
• Соединения «сервер-сервер»
– TLS и подписывание на уровне протокола
– запросы подписываются ключом сервера (ed25519)
– ответы аутентифицируются на уровне TLS
– события подписываются ключом создавшего их сервера
– ключи и TLS-сертификаты проверяются по принципу
“trust on first use” + perspective servers
• Соединения «клиент-сервер»
– только TLS
• End-to-end шифрование (между участниками)
– в разработке; будет в ближайших релизах
– Axolotl – усовершенствованный вариант OTR
Спасибо за внимание.
Спасибо за внимание.
References:
1. Спецификация, FAQ, демонстрационный сервер
https://matrix.org
2. Perspectives
https://perspectivessecurity.files.wordpress.com/2011/
07/perspectives_usenix08.pdf
3. Axolotl
https://github.com/trevp/axolotl/wiki

More Related Content

Similar to Matrix: a pragmatic decentralized messenger

Технологии и подходы в разработке высоконагруженных приложений
Технологии и подходы в разработке высоконагруженных приложенийТехнологии и подходы в разработке высоконагруженных приложений
Технологии и подходы в разработке высоконагруженных приложенийOlga Lavrentieva
 
Вячеслав Бирюков - HTTP и HTTPS
Вячеслав Бирюков - HTTP и HTTPSВячеслав Бирюков - HTTP и HTTPS
Вячеслав Бирюков - HTTP и HTTPSYandex
 
Обзор технологии Cisco Unified Presence и Cisco IM and Presence
Обзор технологии Cisco Unified Presence и Cisco IM and PresenceОбзор технологии Cisco Unified Presence и Cisco IM and Presence
Обзор технологии Cisco Unified Presence и Cisco IM and PresenceCisco Russia
 
Практическое применение SDN/NFV в современных сетях: от CPE до Internet eXchange
Практическое применение SDN/NFV в современных сетях: от CPE до Internet eXchangeПрактическое применение SDN/NFV в современных сетях: от CPE до Internet eXchange
Практическое применение SDN/NFV в современных сетях: от CPE до Internet eXchangeARCCN
 
Hivext – облачная платформа для быстрой разработки интернет приложений
Hivext – облачная платформа для быстрой разработки  интернет приложений Hivext – облачная платформа для быстрой разработки  интернет приложений
Hivext – облачная платформа для быстрой разработки интернет приложений guest800050
 
Тестирование QoS на экспериментальном стенде
Тестирование QoS на экспериментальном стендеТестирование QoS на экспериментальном стенде
Тестирование QoS на экспериментальном стендеARCCN
 
Моделирование безопасности управления доступом и информационными потоками на ...
Моделирование безопасности управления доступом и информационными потоками на ...Моделирование безопасности управления доступом и информационными потоками на ...
Моделирование безопасности управления доступом и информационными потоками на ...Denis Kolegov
 
Моделирование безопасности управления доступом и информационными потоками на ...
Моделирование безопасности управления доступом и информационными потоками на ...Моделирование безопасности управления доступом и информационными потоками на ...
Моделирование безопасности управления доступом и информационными потоками на ...Positive Hack Days
 
Выживут ли SCADA? О будущем распределенных систем управления
Выживут ли SCADA? О будущем распределенных систем управленияВыживут ли SCADA? О будущем распределенных систем управления
Выживут ли SCADA? О будущем распределенных систем управленияTibbo
 
ZFConf 2010: Using Message Queues in Day-to-Day Projects (Zend_Queue)
ZFConf 2010: Using Message Queues in Day-to-Day Projects (Zend_Queue)ZFConf 2010: Using Message Queues in Day-to-Day Projects (Zend_Queue)
ZFConf 2010: Using Message Queues in Day-to-Day Projects (Zend_Queue)ZFConf Conference
 
Что надо знать о HTTP/2 Frontend разработчику
Что надо знать о HTTP/2 Frontend разработчикуЧто надо знать о HTTP/2 Frontend разработчику
Что надо знать о HTTP/2 Frontend разработчикуАлександр Майоров
 
Программируемые и программно- определяемые сети
Программируемые и программно- определяемые сети Программируемые и программно- определяемые сети
Программируемые и программно- определяемые сети Cisco Russia
 
Spread Zaytsev3
Spread Zaytsev3Spread Zaytsev3
Spread Zaytsev3Ontico
 
JavaScript Базовый. Занятие 01.
JavaScript Базовый. Занятие 01.JavaScript Базовый. Занятие 01.
JavaScript Базовый. Занятие 01.Igor Shkulipa
 
Лекция 1. Модель OSI.
Лекция 1. Модель OSI.Лекция 1. Модель OSI.
Лекция 1. Модель OSI.Alexey Furmanov
 
Инфраструктура Big data - от источников до быстрых витрин - версия для МИСиС
Инфраструктура Big data - от источников до быстрых витрин - версия для МИСиСИнфраструктура Big data - от источников до быстрых витрин - версия для МИСиС
Инфраструктура Big data - от источников до быстрых витрин - версия для МИСиСYury Petrov
 
Для чего мы делали свой акторный фреймворк и что из этого вышло?
Для чего мы делали свой акторный фреймворк и что из этого вышло?Для чего мы делали свой акторный фреймворк и что из этого вышло?
Для чего мы делали свой акторный фреймворк и что из этого вышло?Yauheni Akhotnikau
 

Similar to Matrix: a pragmatic decentralized messenger (20)

Технологии и подходы в разработке высоконагруженных приложений
Технологии и подходы в разработке высоконагруженных приложенийТехнологии и подходы в разработке высоконагруженных приложений
Технологии и подходы в разработке высоконагруженных приложений
 
Вячеслав Бирюков - HTTP и HTTPS
Вячеслав Бирюков - HTTP и HTTPSВячеслав Бирюков - HTTP и HTTPS
Вячеслав Бирюков - HTTP и HTTPS
 
Обзор технологии Cisco Unified Presence и Cisco IM and Presence
Обзор технологии Cisco Unified Presence и Cisco IM and PresenceОбзор технологии Cisco Unified Presence и Cisco IM and Presence
Обзор технологии Cisco Unified Presence и Cisco IM and Presence
 
Практическое применение SDN/NFV в современных сетях: от CPE до Internet eXchange
Практическое применение SDN/NFV в современных сетях: от CPE до Internet eXchangeПрактическое применение SDN/NFV в современных сетях: от CPE до Internet eXchange
Практическое применение SDN/NFV в современных сетях: от CPE до Internet eXchange
 
Hivext 04.2010
Hivext 04.2010Hivext 04.2010
Hivext 04.2010
 
Hivext – облачная платформа для быстрой разработки интернет приложений
Hivext – облачная платформа для быстрой разработки  интернет приложений Hivext – облачная платформа для быстрой разработки  интернет приложений
Hivext – облачная платформа для быстрой разработки интернет приложений
 
Тестирование QoS на экспериментальном стенде
Тестирование QoS на экспериментальном стендеТестирование QoS на экспериментальном стенде
Тестирование QoS на экспериментальном стенде
 
Моделирование безопасности управления доступом и информационными потоками на ...
Моделирование безопасности управления доступом и информационными потоками на ...Моделирование безопасности управления доступом и информационными потоками на ...
Моделирование безопасности управления доступом и информационными потоками на ...
 
Моделирование безопасности управления доступом и информационными потоками на ...
Моделирование безопасности управления доступом и информационными потоками на ...Моделирование безопасности управления доступом и информационными потоками на ...
Моделирование безопасности управления доступом и информационными потоками на ...
 
Выживут ли SCADA? О будущем распределенных систем управления
Выживут ли SCADA? О будущем распределенных систем управленияВыживут ли SCADA? О будущем распределенных систем управления
Выживут ли SCADA? О будущем распределенных систем управления
 
ZFConf 2010: Using Message Queues in Day-to-Day Projects (Zend_Queue)
ZFConf 2010: Using Message Queues in Day-to-Day Projects (Zend_Queue)ZFConf 2010: Using Message Queues in Day-to-Day Projects (Zend_Queue)
ZFConf 2010: Using Message Queues in Day-to-Day Projects (Zend_Queue)
 
Декомпозиция
ДекомпозицияДекомпозиция
Декомпозиция
 
Что надо знать о HTTP/2 Frontend разработчику
Что надо знать о HTTP/2 Frontend разработчикуЧто надо знать о HTTP/2 Frontend разработчику
Что надо знать о HTTP/2 Frontend разработчику
 
Программируемые и программно- определяемые сети
Программируемые и программно- определяемые сети Программируемые и программно- определяемые сети
Программируемые и программно- определяемые сети
 
Spread Zaytsev3
Spread Zaytsev3Spread Zaytsev3
Spread Zaytsev3
 
JavaScript Базовый. Занятие 01.
JavaScript Базовый. Занятие 01.JavaScript Базовый. Занятие 01.
JavaScript Базовый. Занятие 01.
 
SDN технологии
SDN технологииSDN технологии
SDN технологии
 
Лекция 1. Модель OSI.
Лекция 1. Модель OSI.Лекция 1. Модель OSI.
Лекция 1. Модель OSI.
 
Инфраструктура Big data - от источников до быстрых витрин - версия для МИСиС
Инфраструктура Big data - от источников до быстрых витрин - версия для МИСиСИнфраструктура Big data - от источников до быстрых витрин - версия для МИСиС
Инфраструктура Big data - от источников до быстрых витрин - версия для МИСиС
 
Для чего мы делали свой акторный фреймворк и что из этого вышло?
Для чего мы делали свой акторный фреймворк и что из этого вышло?Для чего мы делали свой акторный фреймворк и что из этого вышло?
Для чего мы делали свой акторный фреймворк и что из этого вышло?
 

Matrix: a pragmatic decentralized messenger

  • 1. Matrix – прагматический подход к децентрализации Распределённая система хранения и обмена сообщениями в реальном времени
  • 2. • Возраст проекта – 1 год (июль 2014) • Команда разработчиков – ~10 человек • Состояние – late beta: – Спецификация (WIP; достаточна для реализации клиентской части) – Эталонная реализация серверной части: Synapse (python2/twisted) – Веб-клиент, плагин к WeeChat, клиенты для мобильных платформ, SDK… Matrix – прагматический подход к децентрализации
  • 3. Что представляет собой сеть Matrix • распределённая база данных цепочек сообщений – хронологически упорядоченная – криптографически защищённая (Merkle tree) – в конечном счёте согласованная (eventually consistent) • совокупность узлов со свободным участием в сети • протокол на основе JSON-over-HTTP(S) API – расширяемый новыми типами событий (сообщений) – интеграция с WebRTC как пример такого расширения идеализм прагматизм полный P2P (GNUnet, Tox, …) есть концепция сервера, но нет центрального (федерация)
  • 4. Matrix и XMPP (Jabber) Идейные различия: • передача сообщений ↔ синхронизация состояния – «вечное» хранение истории сообщений – распределённые по нескольким серверам конференции – принципиальная устойчивость к проблемам со связью – полная поддержка нескольких устройств на аккаунте (опять же, исходя из сущности протокола) Технические различия: • JSON эффективнее использует место, чем XML • A/V стандартизировано с самого начала (WebRTC) • На стороне клиента нет сложной логики (меньше возможностей для мутаций протокола) XMPP – Message Passing Protocol.
  • 5. Архитектура Matrix 1. Homeserver – полноправный узел сети, участвующий (или не участвующий) в федерации – хранение профиля пользователя – хранение и синхронизация комнат (независимых цепочек событий) • Merkle tree в хронологическом порядке • между серверами передаются вершины и рёбра графа, а не отдельные события – состояние комнат распределено по всем участвующим серверам (и только по ним) • сейчас – полностью реплицируется – связь – HTTPS hs1.tld. hs2.tld. hs3.tld.
  • 6. Архитектура Matrix 1. Homeserver – полноправный узел сети, участвующий (или не участвующий) в федерации 2. Клиенты – занимаются только тем, что получают от «своего» сервера поток событий (и отправляют свои) – могут быть сколь угодно простыми – модель publish/subscribe – REST-подобное API ⇒ состояние клиента хранится на клиенте (и больше ничего) – опять же, HTTP(S) hs1.tld. hs2.tld. hs3.tld. @user1:hs1.tld. @user2:hs2.tld.
  • 7. Архитектура Matrix 1. Homeserver – полноправный узел сети, участвующий (или не участвующий) в федерации 2. Клиенты – занимаются только тем, что получают от «своего» сервера поток событий (и отправляют свои) 3. Application Server – своего рода произвольное расширение HS – например, шлюз в другую сеть (s2s в терминах XMPP) – может создавать пользователей, перехватывать и генерировать события hs1.tld. hs2.tld. hs3.tld. @user1:hs1.tld. @user2:hs2.tld. jabber.hs3.tld. user3@jabber.hs3.tld.
  • 8. Архитектура Matrix 1. Homeserver – полноправный узел сети, участвующий (или не участвующий) в федерации 2. Клиенты – занимаются только тем, что получают от «своего» сервера поток событий (и отправляют свои) 3. Application Server – своего рода произвольное расширение HS 4. Identity Server – опциональная сущность, (централизованно) отображающая сторонние идентификаторы на Matrix ID – Matrix ставит перед собой цель стать универсальным высокоуровневым транспортом hs1.tld. hs2.tld. hs3.tld. @user1:hs1.tld. @user2:hs2.tld. jabber.hs3.tld. user3@jabber.hs3.tld.
  • 9. Архитектура Matrix 1. Homeserver – полноправный узел сети, участвующий (или не участвующий) в федерации 2. Клиенты – занимаются только тем, что получают от «своего» сервера поток событий (и отправляют свои) 3. Application Server – своего рода произвольное расширение HS 4. Identity Server – опциональная сущность, (централизованно) отображающая сторонние идентификаторы на Matrix ID 5. Push Gateway – шлюз для пересылки push-оповещений на устройства hs1.tld. hs2.tld. hs3.tld. @user1:hs1.tld. @user2:hs2.tld. jabber.hs3.tld. user3@jabber.hs3.tld.
  • 10. Криптография в Matrix • Соединения «сервер-сервер» – TLS и подписывание на уровне протокола – запросы подписываются ключом сервера (ed25519) – ответы аутентифицируются на уровне TLS – события подписываются ключом создавшего их сервера – ключи и TLS-сертификаты проверяются по принципу “trust on first use” + perspective servers • Соединения «клиент-сервер» – только TLS • End-to-end шифрование (между участниками) – в разработке; будет в ближайших релизах – Axolotl – усовершенствованный вариант OTR
  • 12. Спасибо за внимание. References: 1. Спецификация, FAQ, демонстрационный сервер https://matrix.org 2. Perspectives https://perspectivessecurity.files.wordpress.com/2011/ 07/perspectives_usenix08.pdf 3. Axolotl https://github.com/trevp/axolotl/wiki