diff --git a/src/pages/posts/2026/encrypted_XMPP.md b/src/pages/posts/2026/encrypted_XMPP.md
index 40e199e..ae4eb8c 100644
--- a/src/pages/posts/2026/encrypted_XMPP.md
+++ b/src/pages/posts/2026/encrypted_XMPP.md
@@ -38,7 +38,8 @@ and the practical aspects of using it.
**End-to-end encryption** is a way to keep your chats truly private.
Only you and the person you’re messaging can read the messages.
-Not even the server owner has the keys needed to decrypt or modify them.
+Not even the server owner or your carrier has the keys
+needed to decrypt or modify them.
**XMPP** is an extensible protocol for instant messaging.
It's open, decentralized, and mature.
@@ -50,23 +51,7 @@ it on a dedicated page by Daniel Gultsch.
-Хочу также отметить,
-что я буду использовать слово Client для обозначения конкретных инстансов
-приложений на пользовательских устройствах. В документации, связанной с OMEMO
-для этого использвется термин Device, но мне он кажется запутывающим:
-в реальности на одном устройстве может быть несколько независимых клиентов.
-
-## Basic Concepts
-
-Here I'm going to explain some basic ideas behind e2e.
-
-Если основные концепции и терминология вам знакомы,
-то можете смело пропустить этот раздел
-и перейти к особенностям их практического применения касательно XMPP.
-
-Или даже сразу перейти к описанию workflow, которого я придерживаюсь сам.
-
-### Trade-offs Between Safety and Convenience
+## 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.
@@ -105,277 +90,3 @@ 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 построен вокруг Double Ratchet Algorithm.
-Там внутри всё очень интересно,
-но нам для практического применения важно только то,
-что каждый клиент пользователя хранит в себе какие-то там ключи,
-и умеет получать из них какой-то там хэш,
-который принято называть fingerprint.
-
-Ключи обычно как-то автоматически управляются XMPP клиентом
-и в норме вам никогда не стоит трогать их руками.
-Возможно, вам лучше даже и не знать, как они выглядят.
-Единственное, что с ними нужно делать --
-держать в секрете и бэкапить при необходимости.
-
-Фингерпринт позволяет отличать конкретный
-клиент собеседника и быть уверенным, что его не подмененили.
-Список фингерпринтов для конкретного аккаунта
-не является чем-то секретным:
-клиентские приложения сами анонсируют свои фингерпнинты на сервере
-и автоматически пополняют список чужих.
-Значение имеют только те,
-которые вы пометили как фингерпринты довереных клиентов.
-
-В идеале, человек должен лично при встрече
-или по уже довереному и безопасному каналу связи
-сказать вам "Да, фингерпринт XXX принадлежит моему устройству"
-и только после этого вы помечаете XXX доверенным.
-Обычно в интерфейсе это просто проставление чекбокса или сканирование QR-кода.
-
-Некоторые клиенты для удобства пользователя
-довериют любым новым фингерпринтам контактов по-умолчанию,
-но я не стал бы рекомендовать использовать такую политику,
-это легкомысленно и небезопасно.
-Политики доверия или недоверия
-можно посмотреть или поменять в настройках вашего клиента.
-
-Список доверенных фингерпринтов используется в момент отправки сообщения:
-OMEMO творит какую-то магию с жонглированием ключами и
-ни один клиент, кроме перечисленных в списке на момент зашифровки,
-не сможет его впоследствии расшифровать.
-Передать как-то доверие в прошлое, увы, невозможно.
-
-## Реалии OMEMO и XMPP
-## Особенности OMEMO и XMPP
-
-### Chat History
-
-Вообще, XMPP поддерживает хранение истории переписок на сервере.
-За это отвечает **XEP-0313: Message Archive Management**.
-
-В реальности поддержка этого XEP,
-политика хранения истории и особенно сроки хранения сообщений
-зависят от конкретного сервера.
-Рассчитывать по-умолчанию на бессрочное хранение всех переписок не стоит.
-
-В конечном счёте,
-ответственность за хранение переписок лежит исключительно на вас
-и это разумное место для применения local-first подхода.
-
-С практической точки зрения
-проще всего рассматривать серверный архив сообщений
-как некоторый кэш, который выручит вас по возвращении
-из непродолжительного офлайна
-или поможет с синхронизацей текущей переписки между разными устройствами.
-
-### Synchronisation
-
-За бесшовное переключение между клиентами отвечает
-**XEP-0280: Message Carbons**.
-До его внедрения можно было переключиться с телефона на лэптоп
-и пялиться в загруженную историю переписки,
-состоящей только из входящих сообщений от собеседника.
-Отправка своих же сообщений ещё и самому себе
-на уровне протокола -- это довольно неочевидная фича.
-
-Тут важно упомянуть, что при использовании e2e шифрования,
-упомянутая выше концепция доверенных отпечатков пальцев
-распространяется и на свои клиенты тоже.
-
-Для бесшовной синхронизации исходящих сообщений
-все ваши клиенты должны считать фингерпринты друг друга доверенными,
-иначе можно столкнуться с ситуацией,
-когда не получается прочитать своё же сообщение.
-
-Логичное, но неприятное следствие:
-Новый клиент или старый,
-который не был в списке доверенных на момент отправки сообщений,
-получит историю из MAM, но не сможет её расшифровать.
-Да, даже ваши сообщения.
-Теоретически, перепаковка сообщений
-на старых доверенных клиентах вроде как возможна,
-но на практике, никто такое пока не имплементировал
-и важные вещи придётся пересылать вручную.
-
-### Message Correction
-
-Тут же стоит отметить, что такие простые и понятные на первый взгляд фичи
-как редактирование и удаление сообщений вообще-то полагаются на
-клиентский код и могут не сработать у вашего собеседника так,
-как вы этого ожидаете.
-Ими можно пользоваться,
-это удобно и некоторые клиенты их отлично поддерживают,
-но полагаться на них для сокрытия чего-либо не стоит.
-
-### Maintenance
-
-OMEMO был задуман как решение, которое после настройки не требует какого-то
-дополнительного вмешательства.
-Можно считать, что этой заявленной цели удалось достичь
-и при наличии базового понимания работы протокола и регулярном онлайне
-никаких сюрпризов быть не должно.
-
-Всё обслуживание заключается в регулярных бэкапах и
-уведомлении своих контактов о фингерпринтах,
-которые стоит добавить в список доверенных или убрать из него.
-В нашем локальном хакспейсе мы даже проводим для этого регулярные события =)
-
-## Step-by-step guide
-
-Представим, что у меня есть аккаунт jid@some.server и несколько устройств:
-телефон, ноутбук и настольный компьютер.
-Сначала я опишу воркфлоу общими словами,
-а потом дам уточнения про использование конкретных приложений.
-
-Я предпочитаю следовать такому майндсету:
-С одной стороны,
-у меня есть мобильное устройство,
-которое всегда со мной и практические всегда онлайн:
-на нём я храню полную историю переписок и получаю уведомления в реальном
-времени.
-С другой стороны, у меня есть несколько десктопных приложений:
-я открываю их только когда мне нужно обсудить что-нибудь с использованием
-клавиатуры или копи-пастинга.
-Мне нравится думать о них, как о приложениях-сателлитах.
-
-### Before the Start
-
-Первым делом мне нужно сгенерировать на каждом устройстве приватные ключи.
-Обычно это происходит автоматически.
-
-Потом я должен на каждом своём устройстве добавить остальные:
-телефон должен считать все мои компьютеры доверенными устройствами,
-а компьютеры доверять друг другу и телефону.
-
-Фингерпринты публичные,
-их можно даже разместить у себя на какой-нибудь личной странице.
-Вот, например, моя: https://oddsquat.org/about/keys/
-
-### Start the Conversation in Person
-
-Предположим, я встретил Алису и мы решили обменяться контактами.
-Я открыл на телефоне специальный QR-код,
-затем Алиса считала его своим клиентом.
-В этот QR-код уже зашиты фингерпринты всех моих устройств, так что
-дополнительных действий не требуется.
-Аналогично, я своим мобильным клиентом считываю QR-код с экрана Алисы.
-
-Теперь мы оба уверены, что в переписке будем участвовать именно мы,
-а все наши сообщения будут доступны на всех наших устройствах и только на них.
-
-### Start the Conversation Online
-
-Предположим, что мы начали обсуждать что-то с Бобом где-то в сети
-(на форуме, в федиверсе, не важно) и решили продолжить обсуждение в мессенджере.
-
-Боб инициирует переписку, я слепо доверяю первому устройству,
-с которого он мне написал и уже потом мы обмениваемся в переписке
-фингерпринтами остальных наших устройств, если они есть.
-Такая стратегия называется ToFu.
-
-Опять же Боб может убедиться, что я это я с помощью моей страницы с ключами,
-а я могу убедиться, что Боб на форуме -- тот же самый Боб, попросив его
-прислать мне фингерпринты прямо в личных сообщениях на том же самом форуме или
-отдельно посредством email, например.
-
-В идеальном случае,
-у Боба тоже есть какая-то публичная страница с фингерпринтами.
-Тогда мы оба можем независимо убедиться,
-что мы именно те, за кого себя выдаём =)
-
-### New or Lost Devices
-
-Если я решил начать использовать
-какое-то новое устройство или установить куда-нибудь
-ещё одно клиентское приложение,
-то первым делом я должен добавить его в список доверенных клиентов
-на остальных моих существующих устройствах.
-
-Если я по каким-либо причинам потеряю любое из своих устройств
-или зачем-то удалю один из своих приватных ключей,
-то первым делом я должен исключить такой клиент из списка доверенных
-на остальных моих устройствах.
-
-После актуализации моих личных списков доверенных устройств
-стоит сообщить об изменениях моим собеседникам по довереным каналам.
-Я могу просто попросить Алису считать мой новый QR-код при следующей встрече,
-а Бобу отправить сообщение о том,
-что утраченому устройству доверять больше не стоит,
-настоящих сообщений с него уже никогда не придёт.
-
-## Client Applications
-
-Этот раздел описывает особенности применения OMEMO для конкретных клиентов,
-которыми я пользуюсь сам.
-
-### Conversations, Monocles and Other Forks
-
-Conversation - это современное полнофункциональное чат-приложение.
-Оно поддерживает всё, что должно поддерживать:
-переписки, звонки, отправку фотографий и файлов.
-У него есть несколько форков, в которых UX может отличаться,
-но core-фичи работают абсолютно одинаково.
-
-На экране с информацией о конакте (в том числе и о своём аккаунте)
-можно увидеть список фингерпринтов,
-вручную отметить галочкой доверенные или отозвать доверие.
-
-Упростить все эти рутинные вещи призвана система с QR-кодами:
-прямо на главном можно показать свой код или считать чужой.
-Так верификация устройств при личной встрече становится простой и ненапряжной.
-
-Правило большого пальца - сканируй QR-код при каждом удобном случае.
-
-### Dino
-
-Это лёгкий GUI-клиент, построенный на GTK фреймвоке.
-Опять же, все вопросы доверия и недоверия
-можно легко решить на экране "Детали контакта" с помощью чекбоксов.
-
-К сожалению, по умолчанию, Dino настроен на автоматическое доверие
-новым фингерпринтам, я рекомендую эту функцию отключить.
-
-### Profanity
-
-Это могучий TUI-клиент,
-где всё-всё-всё реализовано через встроенную систему команд.
-
-Если вы зачем-то намерены им пользоваться,
-то ниже вас ожидает небольшой читшит по использованию OMEMO,
-но я настойчиво рекомендую ознакомиться с полной документацией самостоятельно.
-
-- Генерация ключа и добавление своих устройств:
- ```text
- /omemo gen
- /omemo trust me@some.server some-cool-fingerprint-01
- /omemo trust me@some.server another-cool-fingerprint
- /omemo qrcode
- ```
-
-- Увидеть список своих или чужих fingerprint'ов:
- ```text
- /omemo fingerprint me@some.server
- /omemo fingerprint alice@another.server
- ```
- Доверенные будут помечены как `trusted`.
-
-- Начать зашифрованный диалог:
- ```text
- /omemo start alice@another.server
- ```
-
-- Добавить чужой фингерпринт в список доверенных:
- ```text
- /omemo trust alice@another.server some-cool-fingerprint-02
- /omemo trust alice@another.server some-cool-fingerprint-03
- /omemo trust bob@another.server some-cool-fingerprint-04
- ```
-
-- Перестать доверять кокретному клиенту:
- ```text
- /omemo untrust alice@another.server some-cool-fingerprint-02
- ```