posts: encrypted_XMPP: update draft

This commit is contained in:
He4eT 2026-04-12 16:58:40 +02:00
commit 5da77a6fc6

View file

@ -50,6 +50,12 @@ it on a&nbsp;<a
href='https://contrapunctus.codeberg.page/the-quick-and-easy-guide-to-xmpp.html'
target='_blank'>dedicated page by Daniel Gultsch</a>.
Хочу также отметить,
что я буду использовать слово Client для обозначения конкретных инстансов
приложений на пользовательских устройствах. В документации, связанной с OMEMO
для этого использвется термин Device, но мне он кажется запутывающим:
в реальности на одном устройстве может быть несколько независимых клиентов.
## Basic Concepts
Here I'm going to explain some basic ideas behind e2e.
@ -144,6 +150,7 @@ OMEMO творит какую-то магию с жонглированием к
Передать как-то доверие в прошлое, увы, невозможно.
## Реалии OMEMO и XMPP
## Особенности OMEMO и XMPP
### Chat History
@ -194,7 +201,7 @@ OMEMO творит какую-то магию с жонглированием к
но на практике, никто такое пока не имплементировал
и важные вещи придётся пересылать вручную.
### Message Editing
### Message Correction
Тут же стоит отметить, что такие простые и понятные на первый взгляд фичи
как редактирование и удаление сообщений вообще-то полагаются на
@ -204,7 +211,171 @@ OMEMO творит какую-то магию с жонглированием к
это удобно и некоторые клиенты их отлично поддерживают,
но полагаться на них для сокрытия чего-либо не стоит.
## Mindset
## Before the Start
## Checking the Keys
## In case of fire
### 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
```