posts: encrypted_XMPP: update draft

This commit is contained in:
He4eT 2026-04-12 11:44:39 +02:00 committed by Alexey
commit 32a4df554d

View file

@ -38,8 +38,7 @@ and the practical aspects of using it.
**End-to-end encryption** is a way to keep your chats truly private.<br>
Only you and the person youre messaging can read the messages.
Not even the server owner or your carrier has the keys
needed to decrypt or modify them.
Not even the server owner has the keys needed to decrypt or modify them.
**XMPP** is an extensible protocol for instant messaging.
It's open, decentralized, and mature.
@ -55,7 +54,6 @@ it on a&nbsp;<a
Here I'm going to explain some basic ideas behind e2e.
Вы можете пропустить этот раздел
Если основные концепции и терминология вам знакомы,
то можете смело пропустить этот раздел
и перейти к особенностям их практического применения касательно XMPP.
@ -104,48 +102,61 @@ is actually based on XMPP, but incompatibly altered and defederated.
### Keys, Fingerprints and Trust
Как и положено любому ассиметричному шифрованию,
в OMEMO используются приватные и публичные ключи.
OMEMO построен вокруг Double Ratchet Algorithm.
Там внутри всё очень интересно,
но нам для практического применения важно только то,
что каждый клиент пользователя хранит в себе какие-то там ключи,
и умеет получать из них какой-то там хэш,
который принято называть fingerprint.
Приватные обычно как-то автоматически управляются XMPP клиентом
Ключи обычно как-то автоматически управляются XMPP клиентом
и в норме вам никогда не стоит трогать их руками.
Возможно, вам лучше даже и не знать,
как они выглядят.
Возможно, вам лучше даже и не знать, как они выглядят.
Единственное, что с ними нужно делать --
держать в секрете и бэкапить при необходимости.
Публичные ключи принято называть отпечатками пальцев.
Фингерпринт позволяет отличать конкретный
клиент собеседника и быть уверенным, что его не подмененили.
Список фингерпринтов для конкретного аккаунта
не является чем-то секретным или важным.
Клиентские приложения сами анонсируют свои фингерпнинты
и обычно автоматически пополняют список чужих.
Значение имеют только те фингерпринты, которые вы пометили как довереные.
не является чем-то секретным:
клиентские приложения сами анонсируют свои фингерпнинты на сервере
и автоматически пополняют список чужих.
Значение имеют только те,
которые вы пометили как фингерпринты довереных клиентов.
В идеале, человек должен лично при встрече
или по уже довереному и безопасному каналу связи
сказать вам "Да, фингерпринт XXX принадлежит моему устройству"
и только после этого вы помечаете XXX доверенным.
Обычно в интерфейсе это просто проставление чекбокса или сканирование QR-кода.
Политику доверия и недоверия можно поменять в настройках вашего клиента,
некоторые клиенты для удобства довериют любым новым фингерпринтам по умолчанию,
но я не стал бы рекомендовать использовать такую политику.
Некоторые клиенты для удобства пользователя
довериют любым новым фингерпринтам контактов по-умолчанию,
но я не стал бы рекомендовать использовать такую политику,
это легкомысленно и небезопасно.
Политики доверия или недоверия
можно посмотреть или поменять в настройках вашего клиента.
Список доверенных фингерпринтов используется в момент отправки сообщения:
OMEMO творит какую-то магию с жонглированием ключами и
ни один клиент, кроме перечисленных в списке на момент зашифровки,
не сможет его впоследствии расшифровать.
Передать как-то доверие в прошлое невозможно.
Передать как-то доверие в прошлое, увы, невозможно.
## Реалии OMEMO и XMPP
### Chat History and Synchronisation
### Chat History
Вообще, XMPP поддерживает хранение истории переписок на сервере.
За это отвечает `XEP-0313: Message Archive Management`.
За это отвечает **XEP-0313: Message Archive Management**.
В реальности поддержка этого XEP,
политика хранения истории и особенно сроки хранения сообщений
зависят от конкретного сервера.
Рассчитывать на бессрочное по-умолчанию хранение всех переписок не стоит.
Рассчитывать по-умолчанию на бессрочное хранение всех переписок не стоит.
Чаще всего ответственность за хранение переписок лежит исключительно на вас
В конечном счёте,
ответственность за хранение переписок лежит исключительно на вас
и это разумное место для применения local-first подхода.
С практической точки зрения
@ -154,8 +165,10 @@ is actually based on XMPP, but incompatibly altered and defederated.
из непродолжительного офлайна
или поможет с синхронизацей текущей переписки между разными устройствами.
### Synchronisation
За бесшовное переключение между клиентами отвечает
`XEP-0280: Message Carbons`.
**XEP-0280: Message Carbons**.
До его внедрения можно было переключиться с телефона на лэптоп
и пялиться в загруженную историю переписки,
состоящей только из входящих сообщений от собеседника.
@ -172,11 +185,16 @@ is actually based on XMPP, but incompatibly altered and defederated.
когда не получается прочитать своё же сообщение.
Логичное, но неприятное следствие:
Новый клиент, который не был в списке доверенных на момент отправки сообщений,
Новый клиент или старый,
который не был в списке доверенных на момент отправки сообщений,
получит историю из MAM, но не сможет её расшифровать.
Да, даже ваши сообщения.
Теоретически, перепаковка сообщений
на старых доверенных клиентах вроде как возможна,
но на практике, никто такое пока не имплементировал.
но на практике, никто такое пока не имплементировал
и важные вещи придётся пересылать вручную.
### Message Editing
Тут же стоит отметить, что такие простые и понятные на первый взгляд фичи
как редактирование и удаление сообщений вообще-то полагаются на