Сквозное шифрование (бета)
Бета. Внешнего аудита безопасности не было: код шифрования проверен только внутренним ревью. Само шифрование — не наше изобретение: протоколы Olm и Megolm (как в Matrix/Element) через открытые библиотеки vodozemac и matrix-sdk-crypto. Если вам нужна гарантия, проверенная независимыми экспертами, пока на неё не рассчитывайте.
Что шифруется
- Только личные сообщения и группы, в которых включено сквозное шифрование. Каналы серверов (сообществ) не шифруются никогда: иначе в них не работали бы поиск, модерация, роли и история для новых участников.
- Шифрование в чате включает любой его участник: «Включить сквозное шифрование» в сведениях о чате. В группе владелец может оставить это право только себе. Выключить шифрование в чате нельзя.
- В зашифрованном чате шифруются текст, правки и файлы (вместе с именами файлов и превью). Сообщения расшифровываются только на устройствах участников.
- Новые личные сообщения пока не шифруются сами — шифрование нужно включить. Позже администратор сделает шифрование новых личных сообщений включённым сразу; группы — по-прежнему вручную.
- Сейчас шифрование есть в приложении для Android. Приложение для Windows получит его позже, а до тех пор показывает вместо зашифрованных сообщений «Зашифрованное сообщение. Обновите приложение.»
Что видит сервер
Сервер — только почтальон: он хранит и пересылает зашифрованные данные и публичные ключи устройств. Открытый текст и закрытые ключи никогда не покидают ваши устройства. Администратор сервера не может прочитать зашифрованные сообщения и файлы.
Но сервер видит метаданные:
- кто с кем переписывается, когда и сколько, размер сообщений;
- реакции (эмодзи видны), на какое сообщение отвечают, закреплённые сообщения;
- состав групп и системные сообщения («добавлен», «вышел», «переименовано», «включено шифрование»);
- число и размеры файлов (но не их содержимое, имена и типы);
- ваши устройства (входы), их публичные ключи и время последней активности.
Звонки и видео сквозным шифрованием не защищены — даже в зашифрованных чатах.
Устройства и сверка эмодзи
- Каждый вход в аккаунт — отдельное устройство со своими ключами. Список — «Настройки → Устройства и шифрование»; там же можно выйти на ненужном устройстве.
- Сверка доказывает, что ключи устройства не подменены по пути. Нажмите «Сверить» — на обоих экранах появятся 7 эмодзи. Сравните их (лучше вживую или по телефону, а не в этом же чате): если те же и в том же порядке — «Совпадают», иначе — «Не совпадают» (возможна атака, устройство останется непроверенным).
- Сверяйте и собеседников, и свои устройства. Только проверенное своё устройство передаст новому ключи ваших прежних сообщений.
- Если у проверенного собеседника появилось новое непроверенное устройство, приложение предупредит.
- Принимайте запрос сверки, только если начали её сами или договорились с собеседником.
Ключ восстановления и бэкап ключей
- Ключи зашифрованных чатов можно хранить на сервере в бэкапе, зашифрованном вашим ключом восстановления. Сервер бэкап прочитать не может. С ключом восстановления новое устройство прочитает прежние сообщения («Восстановить историю»).
- Создайте ключ: «Устройства и шифрование → Новый ключ восстановления». Он показывается один раз: запишите его или сохраните в файл и храните отдельно от телефона.
- Потерянный ключ восстановления не восстановит никто — ни администратор, ни разработчики. Новый ключ заменяет бэкап: старый ключ перестаёт работать.
- Сообщения, прочитанные ключами из бэкапа, помечены «автор не подтверждён»: бэкап не доказывает, кто их написал. Это нормально.
Файлы ключей
- «Устройства и шифрование → Файлы ключей → Экспорт ключей» сохраняет ключи всех или выбранных зашифрованных чатов в файл под парольной фразой (не меньше 10 символов, лучше несколько слов).
- Фразу восстановить нельзя. Без неё файл бесполезен.
- Файл вместе с фразой открывает всю переписку, ключи которой в нём лежат. Храните его так же бережно, как сам телефон, и никому не пересылайте.
- «Импорт ключей» загружает такой файл (из dur.io или другого Matrix-приложения) — например, после переустановки без бэкапа. Прочитанное так тоже помечено «автор не подтверждён».
Ограничения зашифрованных чатов
- Поиск по сообщениям не работает (закреплённые сообщения работают).
- Нет превью ссылок; файлы не получают превью на сервере (картинки уменьшает само приложение).
- Звонки и видео не зашифрованы сквозным шифрованием.
- Ботов и вебхуки в зашифрованную группу добавить нельзя; группу с ботом зашифровать нельзя.
- Уведомления: сервер присылает уведомление без текста. Телефон пытается расшифровать сообщение сам; если не успел — «Новое сообщение от …». Текст можно скрыть всегда: «Устройства и шифрование → Приватность зашифрованных чатов → Скрывать текст в уведомлениях».
- Новый участник группы не видит сообщения, отправленные до его вступления.
- Новое устройство не видит прежние сообщения, пока вы не сверите его со старым или не восстановите историю ключом восстановления.
Что делать, если…
Новый телефон
- Не выходите из аккаунта на старом телефоне, пока не настроите новый.
- Войдите на новом телефоне. Приложение предложит «Сверить с другим устройством» — сверьте со старым телефоном, и он передаст ключи прежних сообщений. Либо «Восстановить ключом» — введите ключ восстановления.
- Если ни старого телефона, ни ключа восстановления нет — прежние зашифрованные сообщения прочитать не получится (поможет только импорт ранее сохранённого файла ключей). Новые сообщения работают как обычно.
- После переезда выйдите на старом телефоне («Устройства и шифрование → Выйти»).
Телефон потерян или украден
- С другого своего устройства (или сразу войдя на новом телефоне) откройте «Устройства и шифрование» и нажмите «Выйти» у потерянного: его ключи удалятся с сервера, новые зашифрованные сообщения оно получать не будет. Смените пароль аккаунта.
- Сообщения, которые уже были на потерянном телефоне, остаются на нём: защищает их только блокировка экрана.
- На новом телефоне восстановите историю ключом восстановления. Если ключ хранился только на потерянном телефоне — создайте новый.
«Обновите приложение»
- «Зашифрованное сообщение. Обновите приложение.» — приложение не умеет шифрование (старая версия или Windows-клиент). Установите последнюю версию для Android.
- «Зашифровано более новой версией приложения…» — собеседник на более новой версии. Обновитесь.
- «Данные шифрования этого устройства сохранены более новой версией приложения» — вы установили более старую версию поверх новой. Установите последнюю версию. Не нажимайте «Сбросить шифрование»: так пропадут ключи, которых нет в бэкапе.
- «Не отправлено: у собеседника ещё нет устройства с шифрованием» — собеседнику нужно обновить приложение и войти заново.
Сообщение не расшифровывается
- «Ожидание ключа…» — ключ ещё в пути, обычно приходит сам. Помогает сверка устройства со своим другим устройством или «Восстановить историю».
- «Шифрование сброшено» (ключи этого устройства утеряны) — выйдите и войдите снова, затем восстановите историю ключом восстановления или сверьте устройство с другим.
- «Подозрительное сообщение» — сообщение изменили или повторили по пути; оно скрыто. Сообщите администратору.
Отчёт диагностики
Если шифрование работает странно, отправьте отчёт: «Устройства и шифрование → Диагностика → Отправить отчёт диагностики». В отчёте — счётчики, состояния и коды ошибок шифрования на этом устройстве, версия приложения, версия Android, тип процессора и число аккаунтов. Нет сообщений, ключей, адреса сервера и ID других людей. Вы увидите весь отчёт до отправки и сами выберете, куда его отправить (например, в issues или администратору).