diff --git a/src/pages/posts/2026/encrypted_XMPP.md b/src/pages/posts/2026/encrypted_XMPP.md index ae4eb8c..c3a0aa7 100644 --- a/src/pages/posts/2026/encrypted_XMPP.md +++ b/src/pages/posts/2026/encrypted_XMPP.md @@ -51,7 +51,18 @@ it on a dedicated page by Daniel Gultsch. -## Trade-offs Between Safety and Convenience +## Basic Concepts + +Here I'm going to explain some basic ideas behind e2e. + +Вы можете пропустить этот раздел +Если основные концепции и терминология вам знакомы, +то можете смело пропустить этот раздел +и перейти к особенностям их практического применения касательно XMPP. + +Или даже сразу перейти к описанию workflow, которого я придерживаюсь сам. + +### Trade-offs Between Safety and Convenience Unfortunately, things that are truly secure are rarely convenient. They often require some initial efforts and a bit of ongoing attention. @@ -90,3 +101,91 @@ In general, the XMPP experience today could be described as a "WhatsApp with benefits and frictions". It's kinda ironic, considering that WhatsApp’s protocol is actually based on XMPP, but incompatibly altered and defederated. + +### Keys, Fingerprints and Trust + +Как и положено любому ассиметричному шифрованию, +в OMEMO используются приватные и публичные ключи. + +Приватные обычно как-то автоматически управляются XMPP клиентом +и в норме вам никогда не стоит трогать их руками. +Возможно, вам лучше даже и не знать, +как они выглядят. + +Публичные ключи принято называть отпечатками пальцев. +Список фингерпринтов для конкретного аккаунта +не является чем-то секретным или важным. +Клиентские приложения сами анонсируют свои фингерпнинты +и обычно автоматически пополняют список чужих. +Значение имеют только те фингерпринты, которые вы пометили как довереные. + +В идеале, человек должен лично при встрече +или по уже довереному и безопасному каналу связи +сказать вам "Да, фингерпринт XXX принадлежит моему устройству" +и только после этого вы помечаете XXX доверенным. +Обычно в интерфейсе это просто проставление чекбокса или сканирование QR-кода. +Политику доверия и недоверия можно поменять в настройках вашего клиента, +некоторые клиенты для удобства довериют любым новым фингерпринтам по умолчанию, +но я не стал бы рекомендовать использовать такую политику. + +Список доверенных фингерпринтов используется в момент отправки сообщения: +ни один клиент, кроме перечисленных в списке на момент зашифровки, +не сможет его впоследствии расшифровать. +Передать как-то доверие в прошлое невозможно. + +## Реалии OMEMO и XMPP + +### Chat History and Synchronisation + +Вообще, XMPP поддерживает хранение истории переписок на сервере. +За это отвечает `XEP-0313: Message Archive Management`. + +В реальности поддержка этого XEP, +политика хранения истории и особенно сроки хранения сообщений +зависят от конкретного сервера. +Рассчитывать на бессрочное по-умолчанию хранение всех переписок не стоит. + +Чаще всего ответственность за хранение переписок лежит исключительно на вас +и это разумное место для применения local-first подхода. + +С практической точки зрения +проще всего рассматривать серверный архив сообщений +как некоторый кэш, который выручит вас по возвращении +из непродолжительного офлайна +или поможет с синхронизацей текущей переписки между разными устройствами. + +За бесшовное переключение между клиентами отвечает +`XEP-0280: Message Carbons`. +До его внедрения можно было переключиться с телефона на лэптоп +и пялиться в загруженную историю переписки, +состоящей только из входящих сообщений от собеседника. +Отправка своих же сообщений ещё и самому себе -- это довольно неочевидная фича. + +Важно, что при использовании e2e шифрования, +упомянутая выше концепция доверенных отпечатков пальцев +распространяется и на свои клиенты тоже! + +Для бесшовной синхронизации исходящих сообщений +все ваши клиенты должны считать фингерпринты друг друга доверенными, +иначе можно столкнуться с ситуацией, +когда не получается прочитать своё же сообщение. + +Логичное, но неприятное следствие: +Новый клиент, который не был в списке доверенных на момент отправки сообщений, +получив лог из MAM не сможет их расшифровать. +Теоретически, перепаковка сообщений +на старых доверенных клиентах вроде как возможна, +но на практике, никто такое не имплементировал. + +Если вы хотите использовать больше чем одно клиентское приложение, +на одном или нескольких устройствах, +то прежде чем общаться с кем-либо, +нужно авторизоваться во всех своих клиентах +и добавить в каждый из них все фингерпринты всех остальных. +Так вы никогда не столкнётесь с раздражающей ситуацией, +когда не можете прочитать сообщения, которые сами же кому-то отправляли. + +## Mindset +## Before the Start +## Checking the Keys +## In case of fire