01
Что такое Obscura
Obscura - desktop-мессенджер без телефона и почты. Аккаунт открывается recovery key: длинным секретом, который заменяет привычный логин-пароль и нужен для входа на новом устройстве.
Главный принцип: текст, файлы, голосовые и медиа шифруются на вашем устройстве до отправки. Relay получает уже зашифрованный пакет, доставляет его нужному устройству и хранит только служебные данные, без которых мессенджер не работает.
Obscura не обещает магическую невидимость. Быстрая доставка всегда оставляет часть технических следов: подключение, время, размер пакета, факт доставки. Режимы чатов дают понятный выбор между удобством, переносом истории и количеством метаданных.
02
Термины простыми словами
E2EE, или сквозное шифрование - сообщение читают только устройства участников чата. Relay видит зашифрованные байты, но не текст, не голосовое и не файл внутри.
Relay - сервер доставки. Он принимает зашифрованный пакет, держит его до получения и передает нужному устройству. Relay нужен для офлайн-доставки.
Метаданные - информация вокруг сообщения: кто кому отправил пакет, когда, примерный размер, был ли он доставлен и прочитан, с какого сетевого адреса пришло подключение.
SOCKS5-прокси - сетевой посредник между приложением и API. Если включить его принудительно, relay увидит IP прокси, а не ваш прямой IP. Прокси может быть без пароля или с логином и паролем.
Recovery key - главный ключ входа в аккаунт. Сервер не хранит его в открытом виде. Если включен второй пароль, одного recovery key для входа недостаточно.
Trusted device - устройство, которому вы разрешили работать с аккаунтом и ключами синхронизации. Новое устройство не получает приватную историю автоматически, пока не станет доверенным.
Double Ratchet - схема, где ключи сообщений постоянно меняются. Если один временный ключ утечет, он не раскрывает всю старую переписку.
03
Mailbox и sealed metadata
Mailbox - это адрес доставки, который приложение использует вместо прямой отправки на account id собеседника. Сервер сопоставляет mailbox с аккаунтом, чтобы доставить пакет, но клиентский send-запрос больше не несет прямой идентификатор получателя.
Sealed metadata - служебные данные сообщения, которые дублируются внутри зашифрованного блока. Это подготовка к более строгой sealed-sender модели: клиентам нужны эти данные для проверки и расшифровки, а серверу для доставки достаточно mailbox-адреса и технической очереди.
Важно честно: текущий mailbox-слой снижает лишние прямые идентификаторы в запросах, но сервер все еще хранит delivery records и знает, какой mailbox к какому аккаунту относится. Полный уровень Signal sealed sender требует sender certificates, отдельной проверки прав отправителя и дальнейшей ротации mailbox-адресов.
03
Как работает шифрование
Перед отправкой клиент Obscura берет публичные ключи устройств собеседника, создает ключ конкретного сообщения, шифрует тело сообщения и только после этого отправляет пакет на relay.
Медиа не лежат на сервере как открытые файлы. Клиент режет медиа на части, шифрует каждую часть и отправляет их как encrypted media chunks. Названия файлов и служебный список частей находятся внутри зашифрованного тела сообщения.
Для обычной синхронизации клиент добавляет key wrappers: зашифрованные обертки ключа сообщения для доверенных устройств. Это не открытый ключ переписки, а способ дать конкретному доверенному устройству расшифровать конкретное сообщение.
04
SOCKS5 и приватный транспорт
В Obscura можно включить обязательный SOCKS5 для всего приложения. Тогда вход, регистрация, поиск, сообщения, звонки, синхронизация и проверка обновлений идут через указанный прокси.
Поддерживаются оба сценария: открытый SOCKS5 без авторизации и SOCKS5 с логином и паролем. Если прокси требует пароль, приложение сначала проходит SOCKS5 username/password authentication, а уже потом подключается к API.
Если обязательный SOCKS5 включен, но прокси не отвечает, Obscura не подключается к API напрямую. Вместо этого появляется экран восстановления: можно ввести новый хост, порт, логин и пароль или отключить обязательный SOCKS5.
SOCKS5 отвечает только за сетевой адрес. Relay видит IP прокси, время подключения и размер трафика, но содержимое сообщений все равно защищается E2EE и не становится открытым для прокси.
Если клиент подключается к obscura.icu напрямую, relay видит IP подключения. Это не раскрывает текст сообщений, но это остается сетевым метаданным. Поэтому для сценариев, где важно скрыть прямой IP от API, включайте обязательный SOCKS5.
Компромисс простой: прямое подключение быстрее и надежнее, SOCKS5 приватнее по IP, но качество зависит от выбранного прокси.
05
Что видит сервер
Новая доставка: при отправке официальный клиент использует mailbox-адрес. Сервер видит mailbox и хранит техническую запись доставки, но сам текст, файлы, голосовые и медиа остаются внутри зашифрованного пакета.
Сервер хранит: account id, публичный профиль, публичные ключи устройств, список активных доверенных устройств, зашифрованные пакеты до доставки, технические статусы доставки, время запросов, размер зашифрованного пакета и данные для rate limit.
Сервер не хранит: recovery key в открытом виде, второй пароль в открытом виде, приватные ключи устройств, текст сообщений, расшифрованные файлы, расшифрованные голосовые, содержимое медиа и локальный кэш клиента.
Про IP: в прямом режиме relay видит IP подключения. При обязательном SOCKS5 relay видит IP прокси. В обоих случаях relay не получает ключи для чтения сообщений.
06
Режимы чатов: что выбрать
Стандартный режим - для большинства чатов. E2EE включено, история доступна на доверенных устройствах, статусы доставки и прочтения работают. Если SOCKS5 выключен, relay видит прямой IP подключения.
Приватный режим - для личных и рабочих диалогов, где важнее контроль устройств. E2EE включено, история переносится только через доверенное устройство. Relay видит mailbox-адрес, время и размер пакета, но не содержимое; прямой IP скрывается только при включенном SOCKS5.
Скрытый режим - для чувствительных разговоров. E2EE включено, сообщение не попадает в долгую историю, не переносится на новые устройства и не отправляет статус прочтения. Для скрытия прямого IP включайте обязательный SOCKS5.
Если нужна скорость и удобная история - Standard. Если нужна история, но без восстановления через один recovery key - Private. Если важнее минимальный след, чем удобство - Stealth.
07
Если сервер взломают
Злоумышленник на сервере получает зашифрованные пакеты, публичные ключи, служебные статусы, примерные размеры, время обращений и сетевые метаданные, которые дошли до relay. При прямом подключении среди них будет IP клиента; при обязательном SOCKS5 - IP прокси.
Он не получает текст переписки, приватные ключи устройств, recovery key, второй пароль и расшифрованные медиа. Эти данные не лежат на сервере в пригодном для чтения виде.
Обновления клиента подписываются отдельно. Сервер раздает файл обновления, но клиент проверяет подпись и хеш. Без приватного ключа подписи сервер не может незаметно выдать измененный клиент как официальный.
08
Если придет юридический запрос
Технически сервер может выдать только то, что у него есть: публичный профиль, публичные ключи, список устройств, служебные записи сессий, сетевые адреса подключений, время запросов, статусы доставки и зашифрованные пакеты, если они еще хранятся. При штатном SOCKS5-транспорте сетевой адрес не является вашим домашним IP.
Сервер не выдает текст сообщений, приватные ключи, recovery key, второй пароль и расшифрованные медиа, потому что не хранит их. Расшифровка выполняется на устройствах пользователей.
Юридический запрос не ломает математику E2EE. Он раскрывает серверную сторону: метаданные и зашифрованные данные, которые остались на relay.
09
Передача третьим лицам
Obscura не продает данные пользователей, не передает переписки рекламным сетям и не использует телефонную книгу как источник контактов. В продуктовой модели нет рекламных трекеров и передачи содержимого сообщений партнерам.
Хостинг и сеть видят инфраструктурный слой: TLS-соединение, IP, объем трафика и время обращения. Содержимое сообщений внутри этого трафика уже зашифровано клиентом.
Если появятся обязательные законные требования к раскрытию серверных данных, раскрывается только серверная часть из раздела выше. Содержимое E2EE-переписки и приватные ключи сервером не раскрываются.
10
От каких атак защищает Obscura
Перехват Wi-Fi или провайдера. Атакующий видит сетевое соединение и объем трафика, но не читает текст и файлы: они зашифрованы до отправки.
Взлом relay. Атакующий получает зашифрованные пакеты и метаданные, но не получает plaintext сообщений и приватные ключи.
Подмена устройства собеседника. Клиент показывает код чата и код устройств. Если коды были сверены, неожиданная смена ключей останавливает отправку до повторной проверки.
Перебор recovery key или второго пароля. API ограничивает частоту попыток. Для второго пароля действует блокировка после серии неверных вводов.
Подмена обновления. Клиент проверяет подпись и хеш обновления. Неподписанный или измененный файл не считается официальным обновлением.
11
Устройства, история и восстановление
Один recovery key открывает аккаунт, но каждое устройство имеет собственные ключи. Это нормально: устройство отдельно участвует в шифровании и синхронизации.
В Standard часть ключей истории оборачивается так, чтобы новое доверенное устройство могло восстановить больше старой истории после входа. Это удобнее, но оставляет больше восстановимых данных.
В Private старое доверенное устройство готовит доступ к истории для нового: оно создает зашифрованные обертки ключей для нового устройства. История не отправляется открытым текстом.
В Stealth история не переносится на новые устройства. Если старое устройство удалено или потеряно, старые Stealth-сообщения не восстанавливаются.
12
Коды безопасности и устройств
Код чата показывает, что вы и собеседник видите одни и те же ключи переписки. Его сверяют по независимому каналу: голосом, лично, видеозвонком или через уже доверенный способ связи.
Код устройств показывает набор доверенных устройств собеседника. Он нужен, чтобы заметить неожиданное добавление устройства или подмену ключей.
Если ничего не нажимать: чат работает как непроверенный. Obscura шифрует сообщения, но не считает контакт вручную подтвержденным.
Если подтвердить только один код: доверенным становится только этот код. Второй остается непроверенным. Это нормальный сценарий, если совпал только один из двух кодов.
Если подтвердить оба кода: Obscura запоминает и ключ чата, и набор устройств. Если позже один из них изменится, отправка остановится до повторной проверки.
Если нажать “код не совпал”: приложение ничего не подтверждает. Уже подтвержденные ранее коды не отменяются, остальные остаются непроверенными. Для чувствительных тем лучше остановиться и связаться с собеседником другим способом.
13
Исходный код и неофициальные клиенты
Для крипто-мессенджера открытый клиент повышает доверие: можно проверить, где создаются ключи, что отправляется на сервер и как устроено шифрование. План Obscura - открыть desktop-клиент, протокол, документацию, схемы API, сборочные скрипты, хеши и подписи релизов.
Неофициальный клиент не получает магический доступ к чужим сообщениям: без приватных ключей он не расшифрует чужую переписку. Но он опасен для своего пользователя: может украсть recovery key, отправить локальную историю автору мода, соврать про SOCKS5, коды безопасности или режим чата.
Поэтому официальный релиз подписывается, хеш публикуется, а сервер не должен доверять клиенту на слово. Лимиты, версии протокола, права ботов и защита от downgrade проверяются на стороне API. Серверный код стоит открывать позже, когда из него убраны операционные секреты и антиабуз не раскрывает лишнего.
14
Границы защиты
Obscura защищает содержимое переписки от сервера, перехвата сети и взлома серверного хранилища. Она снижает риск подмены устройств через коды проверки и делает режимы приватности явным выбором перед созданием чата.
Obscura не защищает от человека с доступом к разблокированному компьютеру, от вредоносной программы на устройстве, от скриншотов, от пересылки сообщений собеседником и от добровольной передачи recovery key.
Для максимальной приватности используйте Stealth, сверяйте коды, включайте второй пароль, закрывайте старые устройства, используйте надежный SOCKS5-прокси и устанавливайте обновления только из официального канала.