Третья часть цикла
Сегодня затронем все те вопросы которые всплывают в комментариях: есть ли вообще в MAX шифрование? Как он смотрится в сравнении с Telegram, WhatsApp и Signal? Что там с безопасностью личных файлов?
TL;DR
Как сказал один «великий» человек: добавить шифрование можно, а зачем ?
-
В MAX нет сквозного e2e шифрования (от пользователя к пользователю) ни для одного типа общения — личные чаты, группы, звонки, голосовые, файлы
-
Все сообщения идут открытым текстом через внутри обычного TLS — сервер VK видит каждое слово
-
Для сравнения: в Telegram есть Secret Chats и E2E-звонки, в WhatsApp заявлен и проверен исследователями E2E для всего, в Signal — E2E + open source
-
На телефоне всё хранится в открытой SQLite базе данных
-
Фотографии из чатов доступны по прямой ссылке без авторизации и не истекают годами
-
MAX — единственный из четвёрки, где владелец видит 100% сообщений и файлов
Часть 1: Шифрование в MAX — его просто нет
Сначала объясню простыми словами
Когда вы отправляете сообщение в мессенджере, оно проходит через сервер. Вопрос: может ли сервер его прочитать?
Два варианта:
-
TLS (транспортное шифрование) — сообщение зашифровано по дороге от вас до сервера и от сервера до собеседника. Но на сервере оно лежит в открытом виде. Сервер видит всё. Это как если бы вы отправили письмо в конверте через почту, а на сортировочном пункте его открыли, прочитали, положили в новый конверт и только потом отправили получателю.
-
E2E (сквозное шифрование от пользователя к пользователю) — сообщение зашифровано ключом, который есть только у вас и собеседника. Сервер передаёт зашифрованный blob и не может его прочитать. Это как отправить запертый сейф — почта передаёт, но ключ только у получателя.
В MAX — только TLS. E2E нет.

Проверил все типы общения
Декомпилировал APK, посмотрел wire-протокол, проанализировал трафик. Вот мои результаты:
Личные сообщения — plaintext MsgPack по TCP. Из одного перехвата за 30 минут я извлёк 22 телефонных номера и 6 уведомлений о прочтении — всё открытым текстом.
Групповые чаты — тот же протокол, тот же формат. Никакой разницы с личными.
Каналы — аналогично.
Голосовые звонки — шифрование DTLS-SRTP есть, но оно от вас до сервера VK, не от вас до собеседника. Все звонки идут через TURN-сервер VK. Ключи шифрования у VK.
Видеозвонки — то же что голосовые. Тот же TURN-сервер, те же ключи у VK.
Конференции — через отдельный vchat API на OK.ru, та же схема с relay.
Голосовые сообщения — загружаются на CDN без шифрования. Сервер VK их ещё и переводит в текст (отдельная фича).
Видеосообщения — то же что и голосовые.
Файлы / фотографии / Аудио и Видеокружки — без шифрования на CDN. Про это отдельная история ниже.
Секретные чаты — их нет. Вообще. В коде нашёл UI-ресурсы с названиями вроде secret_mode_started, но крипто-кода за ними ноль. Ни DH-обмена ключами, ни отдельного протокола.
А что на сайте MAX написано про шифрование?
Я проверил все официальные документы:
-
legal.max.ru/pp (политика конфиденциальности) — слово «шифрование» не встречается ни разу.
-
legal.max.ru/ps (пользовательское соглашение) — ноль информации
-
help.max.ru/help/security (раздел безопасности) — пароли, сессии, онлайн-статус, родительский контроль. Шифрование не упоминается.
-
«Безопасный режим» — скрытие из поиска, звонки только от контактов, фильтр контента 16+/18+.
Для сравнения: у Telegram есть отдельная страница про MTProto и шифрование . У WhatsApp — Security Whitepaper. У Signal — полная документация протокола и исходный код. У MAX — ничего, потому что нечего описывать.
Часть 2: MAX vs Telegram vs WhatsApp vs Signal
Самый частый запрос в комментариях: «а Telegram тоже так делает?» и «разбери WhatsApp».
Собрал таблицу от наименее защищённого к наиболее. Данные по MAX — мой анализ кода. По Telegram — документация + open source клиент. По WhatsApp — их Whitepaper + внешние аудиты (код закрыт). По Signal — open source + аудиты.

MAX единственный из четырёх, где: код закрыт + нет E2E ни для чего + сервер видит 100% + медиа без авторизации + ни одного аудита.
Источники:
-
Telegram E2E: core.telegram.org/api/end-to-end
-
Telegram код: github.com/DrKLO/Telegram
-
MTProto верификация: Miculan et al., Computers & Security, 2022
-
WhatsApp Whitepaper: whatsapp.com/security/WhatsApp-Security-Whitepaper.pdf
-
Cloudflare аудит: blog.cloudflare.com/key-transparency (2024)
-
Signal документация: signal.org/docs
-
Signal код: github.com/signalapp
-
Signal аудит: Oxford/QUT/McMaster
Часть 3: Медиафайлы для всех, удаление не удаляет
Эта информация уже упоминалась в других исследованиях, но не мог не затронуть это. Я отправил фото в чат, потом удалил сообщение, а потом открыл ссылку на это фото в другом браузере без логина и фото загрузилось. Потом сделал то же самое с голосовым сообщением. Аудио тоже доступно после удаления.
Фотографии — без авторизации, навсегда
Каждая фотография хранится на CDN по адресу вроде i.oneme.ru/i?r=%3C%D1%82%D0%BE%D0%BA%D0%B5%D0%BD%3E. Токен — подписанная строка, которую генерирует сервер.
-
Авторизация не нужна. Открываете ссылку в любом браузере, без логина — фото загружается
-
Ссылка не истекает.
-
CORS открыт: Access-Control-Allow-Origin: * — любой сайт может подгрузить картинку
-
Удалил сообщение, а фото осталось. Проверено: отправил фото, удалил, открыл по ссылке и увидел свое «удаленное» изображение
Токен уникальный и изменённый токен возвращает 400. Но сами токены раздаются всем участникам чата открытым текстом через wire-протокол. Переслали кому-то фото и этот кто-то навсегда имеет рабочую ссылку. Отозвать ссылку нельзя у пользователя механизма отзыва нет, только у сервера.
Вот пример отправленного фото в чат и позже удаленное из него ссылка :
https://i.oneme.ru/i?r=BTExG6MjcZqk1JkYftXzTuS6B5wJnWe_slW64…

Вы это можете так же легко проверить загрузите большое изображение, удалите его и попробуйте загрузить его еще раз и оно загрузится мгновенно так как файл уже есть…
Аудиосообщения — без авторизации, 24 часа
Голосовые сообщения хранятся на maxvd*.okcdn.ru. Тут чуть лучше — URL подписан и живёт 24 часа. Но:
-
Авторизация не нужна. Так же как с фотографиями
-
Удалил сообщение, а аудио осталось. Проверено: отправил фото, удалил, открыл по ссылке и услышал свое «удаленное» аудио. Вы так же можете это легко проверить
-
Срок жизни — 24 часа (поле expires в URL). В пределах суток аудио доступно кому угодно
-
Все параметры URL подписаны подменить srcIp, id, sig нельзя (400). Но имея полную ссылку — скачать может любой
URL аудио содержит IP (srcIp=146.70.231.14) и ID пользователя (userId=125915255) открытым текстом. Ссылка
https://maxvd177.okcdn.ru/?expires=1776129938878&srcIp=1…
Часть 4: FAQ из комментариев
«TLS — это тоже шифрование. В чём проблема?»
TLS шифрует канал между вами и сервером. Никто посередине (провайдер, сосед с Wi-Fi) не прочитает. Но сервер — прочитает. А сервер MAX — это сервер VK. VK зарегистрирован как «организатор распространения информации» и по закону обязан хранить переписку и отдавать по запросу.
E2E шифрование решает эту проблему — даже владелец сервера не может прочитать сообщения. В MAX его нет.
«Мне скрывать нечего»
Не про то, есть ли что скрывать. Про то, кто контролирует ваши данные.
Без E2E:
-
Взлом сервера = все сообщения утекли.
-
Запрос по закону = все сообщения отдали.
-
Инсайдер в компании = все сообщения / контакты / файлы доступны (а учитывая сколько сейчас стоит пробив по номеру телефона и другие «сервисы». то скоро появится новая услуга).
С E2E: даже если сервер взломан — данные зашифрованы ключами, которые есть только у вас.
«Может, VK добавит шифрование позже?»
Добавить E2E в существующий мессенджер — это не флаг на сервере переключить. Нужно:
-
Реализовать протокол обмена ключами (DH / X3DH)
-
Добавить double ratchet или аналог для каждого чата
-
Переписать хранение сообщений (сервер больше не может их читать)
-
Переделать поиск, превью, пуши (всё это сейчас работает потому что сервер видит текст)
В коде MAX нет ни одного класса связанного с E2E — ни DH, ни pre-keys, ни session keys. Архитектура строилась без расчёта на это.
«В Telegram обычные чаты тоже не E2E — значит то же самое?»
Не совсем. У Telegram есть альтернатива:
-
Есть Secret Chats — настоящий E2E (правда только 1-на-1 и только мобильные)
-
Звонки — E2E с emoji-верификацией
-
CDN-файлы требуют авторизацию и зашифрованы AES-256-CTR
-
Есть certificate pinning
У MAX ничего из этого нет. Ни одной альтернативы для пользователя, который хочет приватность.
Telegram не идеален — обычные чаты действительно сервер может читать и просматривать. Но у пользователя есть выбор открытые чаты или защищенные. В MAX выбора нет.
Если вам нужен E2E для всех чатов (не только секретных) — WhatsApp или Signal. В WhatsApp E2E включён по умолчанию для всего. В Signal — E2E + open source + независимые аудиты. Так же можно еще посмотреть на мессенджер Threema
Часть 5: Доказательства
5.1 Plaintext MsgPack — перехват трафика
Через Frida-хуки на SSL_read/SSL_write я перехватил расшифрованный трафик MAX. Формат — MsgPack (бинарный JSON). Декодер писал сам
За 30 минут работы приложения перехватил 85 фреймов. Из них:
-
Опкод 0x80 (INCOMING_MESSAGE_PUSH) — входящие сообщения, plaintext, видно текст и sender
-
Опкод 0x40 (SEND_MESSAGE_NEW) — исходящие сообщения, plaintext
-
Опкод 0x23 (SUBSCRIBE_PRESENCE) — кто онлайн
MAX:
— Формат: точный timestamp + status (1=online, 2=offline)
— Максимальная точность: секунда. Unix timestamp seen: 1776043570 = 2026-04-13 01:26:10 UTCTelegram:
— Точность плавает: был недавна, был на этой неделе….
-
Опкод 0x84 (REPORT_READ_RECEIPT) — кто прочитал
-
22 телефонных номера в открытом виде
Всё это идёт внутри TLS. Сервер VK видит тот же plaintext.

5.2 Protos.java — нет полей шифрования
Файл: ru/ok/tamtam/nano/Protos.java
Класс Audio (голосовые сообщения):
-
url, token, audioId, duration, transcription
-
Полей IV, key, cipher, encrypted — нет

Класс Video (видеосообщения):
-
url, token, videoId, duration, thumbnail, transcription
-
Полей IV, key, cipher, encrypted — нет
Для сравнения: в Signal Protocol каждое сообщение содержит ratchet key, counter, cipher header. В MAX — просто текст.
5.3 network_security_config.xml — нет certificate pinning
Файл: res/xml/network_security_config.xml
Ноль элементов <pin-set>. Зато 5 доменов с cleartextTrafficPermitted=»true» — это HTTP без шифрования вообще (для MobileID российских операторов).
Certificate pinning — это защита от MiTM-атак (подмена сертификата на уровне провайдера или wifi). Telegram, WhatsApp, Signal — все его используют. MAX — нет.

5.4 Хранение на устройстве
Вся переписка в SQLite без шифрования:
-
Нет SQLCipher — база открывается любым SQLite-просмотрщиком
-
Нет EncryptedSharedPreferences — токены авторизации в plaintext
-
AndroidKeyStore используется только для биометрической авторизации, не для сообщений

Выводы
MAX — мессенджер который не шифрует ничего. Ни сообщения, ни звонки, ни файлы, ни фотографии. Сервер VK видит всё. На устройстве всё так же хранится в открытом виде. Фотографии доступны по ссылке навсегда без входа и проверки прав дотсупа.
VK нигде не обещает шифрование — ни на сайте, ни в документах. Потому что его нет.
В следующей части — практическая защита: что реально можно сделать если MAX приходится использовать. Split VPN, Knox, Frida, Virtual Device…