January 14

MyMsg: мессенджер, который невозможно заблокировать

Представьте: вы просыпаетесь утром, открываете телефон, а привычный мессенджер не работает. Сообщения не отправляются, звонки не проходят. Знакомая ситуация? За последние годы миллионы пользователей столкнулись с блокировками Telegram, WhatsApp, Signal и десятков других сервисов. Одни страны блокируют мессенджеры полностью, другие — отключают голосовые и видеозвонки, третьи — требуют «ключи шифрования» у разработчиков.

Но блокировки — лишь верхушка айсберга.

Настоящая проблема глубже. Даже когда мессенджер работает, вы не можете быть уверены, что ваша переписка остаётся приватной. И дело не в хакерах.

Проблема первая: метаданные. Большинство мессенджеров шифруют содержимое сообщений, но не скрывают, кто, когда, кому и как часто пишет. Эти метаданные — золотая жила для анализа. По ним можно восстановить круг общения, выявить связи между людьми, определить распорядок дня. Бывший директор ЦРУ Майкл Хейден однажды признал: «Мы убиваем людей на основе метаданных».

Проблема вторая: централизация. Ваши сообщения проходят через серверы компании-владельца мессенджера. Даже если они зашифрованы, компания знает, что вы существуете, с кем общаетесь и когда. Под давлением государства или при смене политики компании эти данные могут быть использованы против вас.

Проблема третья: доверие. Когда приложение закрыто — вы не можете проверить, что внутри. Вы просто верите, что шифрование работает как заявлено. Верите, что нет бэкдоров. Верите, что обновление не добавит слежку. Но вера — плохой фундамент для безопасности.

Проблема четвёртая: привязка к личности. Большинство мессенджеров требуют номер телефона или email при регистрации. Это означает, что ваша цифровая личность привязана к реальной. Анонимность невозможна по определению.

Я решил это изменить.

Что такое MyMsg

MyMsg — это мессенджер с открытым исходным кодом, созданный с нуля для решения всех перечисленных проблем. Но сначала — о главном: что он умеет.

Всё, что нужно для общения

Переписка. Текстовые сообщения — основа любого мессенджера. В MyMsg они работают мгновенно: отправили — доставлено — прочитано. Статусы доставки, индикатор набора текста, история сообщений — всё как вы привыкли. С одним отличием: каждое сообщение зашифровано ещё до того, как покинет ваш телефон. Сервер видит только бессмысленный набор байтов, а прочитать текст может только ваш собеседник.

Фотографии и файлы. Хотите отправить фото? Документ? Голосовое сообщение? Любой файл шифруется тем же надёжным алгоритмом, что и текст. Причём шифрование происходит потоково: даже если вы отправляете видео на сотни мегабайт, телефон не пытается загрузить его целиком в память. Файл шифруется и передаётся по частям — быстро и экономно.

Голосовые звонки. Иногда проще позвонить, чем писать. Звонки в MyMsg — это не просто VoIP поверх интернета. Это полноценное end-to-end шифрование в реальном времени. Голос оцифровывается, сжимается современным кодеком Opus, шифруется — и только потом передаётся собеседнику. Задержка минимальна: вы не заметите разницы с обычным звонком. Но в отличие от обычного звонка, подслушать вас невозможно — даже если кто-то перехватит весь трафик.

А теперь о том, чем MyMsg отличается от десятков других мессенджеров.

Никакой привязки к личности

Для регистрации в MyMsg не нужен телефон. Не нужен email. Не нужно имя. Вы просто устанавливаете приложение — и получаете уникальный идентификатор. Этот ID невозможно связать с вашей реальной личностью, если вы сами этого не захотите.

Хотите создать второй аккаунт? Пожалуйста. Третий? Без проблем. Каждый аккаунт полностью независим.

Шифрование, которому можно доверять

MyMsg использует Signal Protocol — тот же криптографический протокол, что применяется в Signal и WhatsApp. Но есть принципиальное отличие: мой код полностью открыт. Любой эксперт может проверить, что шифрование реализовано корректно, что нет бэкдоров, что ваши сообщения действительно защищены.

Каждое сообщение шифруется уникальным ключом. Даже если злоумышленник каким-то образом получит один ключ — он не сможет прочитать ни предыдущие, ни последующие сообщения. Это называется forward secrecy, и это не маркетинговый термин, а математическая гарантия.

Сервер не знает ничего

Сервер MyMsg — это просто почтовый ящик. Он принимает зашифрованные сообщения и передаёт их получателю. Он не может их прочитать — у него нет ключей. Он не хранит историю — сообщения удаляются после доставки.

Даже если сервер будет взломан или изъят — атакующий получит только бессмысленный набор байтов. Ни содержимого сообщений, ни связей между пользователями.

Открытый исходный код

Весь код MyMsg — от криптографической библиотеки до сервера и мобильного приложения — опубликован под лицензией MIT. Вы можете изучить каждую строчку. Вы можете собрать приложение из исходников. Вы можете поднять собственный сервер и не зависеть от нас вообще.

Я не прошу вас верить мне. Я предлагаю проверить и убедиться самим.

Невозможно заблокировать

Как можно заблокировать Telegram или Signal? Добавить IP-адреса их серверов в чёрный список. Заблокировать домены. В крайнем случае — заставить магазины приложений удалить клиент.

С MyMsg это не работает.

Свой сервер за 5 минут. Любой человек может развернуть собственный сервер MyMsg. Исходный код открыт, инструкции опубликованы. Заблокировали один сервер — поднимается другой. Заблокировали сто — поднимается сто первый. Это как игра в «ударь крота», только кротов бесконечно много.

Неотличимый трафик. Снаружи соединение с сервером MyMsg выглядит как обычный HTTPS-трафик — такой же, как при посещении любого сайта. Невозможно отличить, читаете ли вы новости или отправляете зашифрованное сообщение.

Любой домен, любой IP. Сервер можно разместить на любом хостинге, за любым доменом. Сегодня это chat.example.com, завтра — photos.another-domain.org. Для пользователя ничего не меняется: приложение находит сервер автоматически.

APK без магазинов. Android-приложение распространяется как обычный APK-файл. Его можно скачать с сайта, получить от друга, передать через любой файлообменник. Google Play не нужен — а значит, и удалить приложение из магазина не получится.

Единственный способ заблокировать MyMsg — отключить интернет полностью.

Простое добавление контактов

Как связаться с человеком, если нет ни телефона, ни email? В MyMsg есть несколько способов.

QR-код. Самый простой вариант при личной встрече. Вы показываете свой QR-код на экране — собеседник сканирует его камерой. Мгновенно. Никаких опечаток, никакого ручного ввода.

Уникальный идентификатор. Каждый пользователь получает короткий ID — например, k7xr-n4py-e1wh-b3mj. Его можно скопировать, отправить через любой канал связи, даже продиктовать голосом. Идентификатор использует специальный алфавит из 32 символов, в котором нет похожих знаков: никаких 0 и O, 1 и l, 2 и Z. Поэтому ошибиться при ручном вводе практически невозможно.

Верификация безопасности. После добавления контакта приложение показывает «код безопасности» — уникальную последовательность, которую можно сверить с собеседником. Если коды совпадают — вы точно общаетесь с тем, с кем думаете. Это защита от атаки «человек посередине», когда злоумышленник пытается подменить ключи.

Как это работает

Когда вы впервые запускаете MyMsg, приложение генерирует набор криптографических ключей прямо на вашем устройстве. Приватные ключи никогда не покидают телефон — они защищены аппаратным хранилищем (Android Keystore) и зашифрованной базой данных.

Когда вы хотите написать кому-то впервые, происходит обмен ключами по протоколу X3DH. Это сложная криптографическая процедура, но её суть проста: вы и ваш собеседник вычисляете общий секрет, который знаете только вы двое. Сервер участвует в передаче публичных ключей, но не может узнать итоговый секрет — математически это невозможно.

После установления связи каждое сообщение шифруется с помощью Double Ratchet — алгоритма, который постоянно обновляет ключи. Отправили сообщение — ключ изменился. Получили ответ — ключ снова изменился. Старые ключи уничтожаются безвозвратно.

Для тех, кто хочет подробностей

Этот раздел для технически подкованных читателей. Если криптография — не ваш конёк, можете смело пропустить.

Почему именно эти алгоритмы

В криптографии есть золотое правило: никогда не изобретай своё. Поэтому MyMsg использует только проверенные временем алгоритмы из библиотеки libsodium — она прошла десятки независимых аудитов и работает в критически важных системах по всему миру.

Ed25519 — для цифровых подписей. Это ваш криптографический паспорт: он доказывает, что сообщение отправили именно вы, а не кто-то другой. Алгоритм разработан Дэниелом Бернштейном — легендой в мире криптографии. Подделать подпись Ed25519 вычислительно невозможно: для этого потребуется больше энергии, чем выделит Солнце за всё время своего существования.

X25519 — для обмена ключами. Когда два человека хотят установить защищённый канал, им нужно как-то договориться о секретном ключе. Проблема: любой может подслушать их разговор. Решение: протокол Диффи-Хеллмана на эллиптических кривых. Каждая сторона отправляет публичную часть своего ключа, но итоговый секрет могут вычислить только они двое. Математическая магия, которая работает уже 50 лет.

XChaCha20-Poly1305 — для шифрования сообщений. ChaCha20 — это потоковый шифр, быстрый и безопасный. Poly1305 — код аутентификации, который гарантирует целостность: если хоть один бит изменится при передаче, получатель это обнаружит. Вместе они образуют AEAD-конструкцию — золотой стандарт современной криптографии. Буква «X» означает расширенный nonce: 192 бита вместо стандартных 96. Это позволяет безопасно шифровать практически неограниченное количество сообщений.

HKDF-BLAKE2b — для генерации сеансовых ключей. Из одного общего секрета нужно получить множество независимых ключей: для шифрования, для аутентификации, для каждого нового сообщения. HKDF делает это криптографически безопасно, а BLAKE2b — одна из самых быстрых хеш-функций, при этом не уступающая в безопасности классическому SHA-3.

Что происходит на вашем телефоне

Ваши ключи и сообщения хранятся в зашифрованной базе данных SQLCipher. Это SQLite с прозрачным шифрованием AES-256 — без ключа данные выглядят как случайный шум.

Но где хранить сам ключ от базы? Если просто записать его в файл — любое вредоносное приложение сможет его прочитать. Поэтому ключ хранится в Android Keystore — специальном аппаратном модуле безопасности, изолированном от основной операционной системы. Даже если телефон взломан, даже с root-доступом, извлечь ключ из Keystore практически невозможно. Он там «заперт навечно» и может только выполнять криптографические операции, но не покидать модуль.

Ещё одна деталь: скриншоты заблокированы на уровне системы. Если кто-то попытается сделать снимок экрана с вашей перепиской — получит чёрный прямоугольник. Это защита от простейшей, но распространённой атаки: вредоносное приложение, которое периодически делает скриншоты и отправляет их «куда надо».

Как защищён сервер

Сервер написан на Rust — языке программирования, который физически не позволяет совершать целые классы ошибок. Переполнение буфера? Компилятор не даст. Использование освобождённой памяти? Код просто не скомпилируется. Гонка данных? Исключена на уровне системы типов. Около 70% всех уязвимостей в традиционных программах связаны с памятью — Rust устраняет их автоматически.

Каждый запрос к серверу подписывается криптографически. Это значит, что подделать запрос от вашего имени невозможно — у злоумышленника просто нет вашего приватного ключа.

TLS 1.3 с certificate pinning — ещё один уровень защиты. Даже если кто-то выпустит поддельный сертификат для нашего домена (а такие случаи бывали), приложение его отвергнет. Оно знает, как должен выглядеть настоящий сертификат, и не примет подмену.

Rate limiting защищает от DDoS-атак: если один IP-адрес отправляет подозрительно много запросов, он временно блокируется. Это не идеальная защита от распределённых атак, но от большинства «школьных» DDoS спасает.

Аудит безопасности

Я не полагаюсь на «авось пронесёт». Весь код прошёл статический анализ безопасности — автоматизированную проверку на типичные уязвимости. Результат: 13 потенциальных проблем, от критических до незначительных. Все исправлены.

Отчёт аудита опубликован в репозитории. Вы можете посмотреть, что именно было найдено и как это было исправлено. Прозрачность — лучшая гарантия безопасности.

Что дальше

MyMsg — это не коммерческий продукт с инвесторами и планами монетизации. Это инструмент для тех, кому действительно важна приватность.

MyMsg не собирает телеметрию и не показывает рекламу. Разумеется, никакие данные не продаются — потому что у меня их нет.

Исходный код доступен на GitHub. Приложение можно собрать самостоятельно. Сервер можно развернуть на своей инфраструктуре.

Приватность не должна быть привилегией. Она должна быть нормой.

MyMsg — свободное программное обеспечение. Лицензия MIT.