VKEncrypt: сквозное шифрование для переписки ВКонтакте
Я сделал VKEncrypt — браузерное расширение, который добавляет end-to-end шифрование в веб-версию ВКонтакте. Работает везде: iPhone /Windows / Mac / Linux / Android
Что умеет:шифрует сообщения, картинки и видео.В планах еще голосовухи.
Репозиторий: https://github.com/megamen32/vkencrypt
Работает через Tampermonkey / Userscripts: Chrome на пк, Safari на iPhone, Firefox на Android. Открываете vk.com, vk.ru или web.vk.me, заходите в чат — в поле ввода появляются кнопки шифрования и управления ключами.

Зачем
У ВК есть огромный плюс: он уже установлен у миллионов людей. У него же есть очевидный минус: обычная переписка не является end-to-end encrypted.
VKEncrypt закрывает именно этот слой. Не пытается заменить мессенджер, не делает VPN, не обещает анонимность. Он делает одну вещь:
содержимое сообщения уходит в ВК уже зашифрованным.
ВК, браузерный интерфейс, логи, бэкапы, случайный доступ к аккаунту или серверной стороне видят не текст, а строку вида:
ENC[key<id>:base64(iv ciphertext tag)]
Без ключа это не сообщение, а мусор.
Как устроено?
Криптография не самописная. Используется AES-256-GCM через нативный Web Crypto API браузера. Для каждого сообщения генерируется новый 12-байтный IV/nonce. GCM-tag проверяет целостность: если шифротекст повредили или подменили, расшифровка падает.
Ключи можно получить двумя способами:
Seed-фраза Пользователь вводит фразу, из неё через PBKDF2-SHA256 генерируются k1…k4.
Готовый 64-hex ключ Можно добавить свой ключ вручную или сгенерировать временный.
Seed-фраза не сохраняется.
Сейчас VKEncrypt умеет:
шифровать исходящие сообщения кнопкой;
автоматически шифровать сообщение при Enter;
расшифровывать входящие(текст/картинки/видео) прямо в чате;
переключать [шифр] / [текст];
работать в личках, беседах и групповых чатах;
использовать несколько слотов ключей;
генерировать временный ключ;
кодировать шифротекст не только Base64, но и emoji-алфавитом.
Последнее не про криптографию, а про UX. Иногда приятнее видеть стену из эмодзи, чем технический Base64. А вероятность такого текста в мессенджерах выше.
Почему не Telegram / Мой_Любимый_Мессенджер?
Потому что это другой сценарий. В Telegram сквозное шифрование есть только в секретных чатах, а обычные чаты — не зашифрованы(Многие этого не знают).VKEncrypt нужен не для того, чтобы спорить, какой мессенджер «правильный». Он нужен для ситуации, где люди уже сидят во ВК и не хотят/не могут переезжать.
Приватность должна быть не религиозным выбором мессенджера, а функцией, которую можно включить там, где уже идёт общение.
Threat model
VKEncrypt защищает содержимое сообщений.Он не скрывает:
факт переписки;
участников переписки;
время отправки;
размер сообщения;
IP-адрес;
сам факт использования ВК;
текст, если устройство уже скомпрометировано;
ключ, если пользователь сам отправил его в тот же чат.
То есть это не Tor, не VPN и не «режим невидимости». Это именно E2EE-слой поверх существующего транспорта.
Почему открытый код важен
Криптографический инструмент без открытого кода — это «поверьте нам». Мне такой подход не нравится. Поэтому код открыт. Можно проверить реализацию, посмотреть формат сообщений, параметры KDF, работу с ключами, UI-логику, поведение при ошибке расшифровки и автообновление userscript. Плюс можно добавить Макс/Телеграм/Мой_Любимый_Мессенджер
Если найдёте проблему — issue/PR приветствуются.
Итог
VKEncrypt — это маленький слой приватности поверх ВК. Не новый мессенджер. Не самодельный шифр. Не магия. Не анонимность.
Просто нормальный AES-256-GCM в привычном чате, с открытым кодом и установкой за несколько секунд.
Репозиторий: https://github.com/megamen32/vkencrypt
