Что такое сквозное шифрование?
Представьте, что вы отправляете письмо. Если оно идёт в незапечатанном конверте — почтальон может его прочитать, курьерская служба может сделать копию, и получит ли его адресат именно то, что вы написали — большой вопрос. Так работает большинство привычных каналов связи: ваше сообщение видит сервер, через который оно проходит.
End-to-end (E2E) шифрование — это запечатанный конверт, который может открыть только получатель. Шифрование происходит на вашем устройстве перед отправкой, расшифровка — на устройстве получателя после доставки. Сервер посередине видит только нечитаемый зашифрованный поток.
Ключевое здесь — только получатель. Не сервер, не разработчик приложения, не регуляторы — никто, кроме участников переписки.
Как это работает технически
Под капотом E2E-шифрование строится на двух механизмах: асимметричном шифровании для обмена ключами и симметричном для шифрования самих сообщений.
Шаг 1 — Обмен ключами (ECDH)
Каждый пользователь создаёт пару ключей: публичный (можно раздавать всем) и приватный (хранится только на вашем устройстве). Когда Алиса хочет написать Бобу, происходит следующее:
Алиса: alice_public, alice_private = ECDH.generate()
Боб: bob_public, bob_private = ECDH.generate()
// Оба вычисляют одинаковый shared secret
shared_secret = ECDH.compute(alice_private, bob_public)
== ECDH.compute(bob_private, alice_public)
Магия ECDH (Elliptic Curve Diffie-Hellman) в том, что обе стороны получают одинаковый shared secret, не передавая его по сети. Перехватить ключ невозможно — по каналу ходят только публичные ключи, из которых нельзя восстановить приватный.
Шаг 2 — Шифрование сообщения (AES-GCM)
На основе shared secret генерируется симметричный ключ, которым шифруется каждое сообщение. SecureChat использует AES-GCM 256-бит — стандарт NIST с встроенной проверкой целостности. Расшифровать без точного ключа вычислительно невозможно при современных мощностях.
const key = await crypto.subtle.deriveKey(/* shared_secret */);
const iv = crypto.getRandomValues(new Uint8Array(12));
const cipher = await crypto.subtle.encrypt(
{ name: 'AES-GCM', iv },
key,
new TextEncoder().encode(plaintext)
);
// cipher — это то, что уходит на сервер.
// Сервер видит байты, но не текст.
Все криптографические операции в SecureChat выполняются через Web Crypto API — стандартный браузерный интерфейс, реализованный на уровне операционной системы. Никаких сторонних крипто-библиотек с потенциальными уязвимостями.
Forward Secrecy — защита прошлых сообщений
Представьте: злоумышленник записывал весь ваш зашифрованный трафик последний год, а потом каким-то образом получил ваш долгосрочный приватный ключ. Если мессенджер использует один статичный ключ — он сможет расшифровать все прошлые сообщения разом.
Perfect Forward Secrecy (PFS) решает эту проблему. Для каждой сессии генерируется новый эфемерный ключ, который уничтожается после использования. Если сегодняшний ключ скомпрометирован — вчерашние сообщения остаются защищены, потому что вчерашний ключ уже не существует.
SecureChat генерирует новые ключевые пары при каждом подключении. Долгосрочные ключи используются только для верификации, не для шифрования содержимого сообщений.
E2E в популярных мессенджерах: что реально зашифровано
Telegram — не E2E по умолчанию
Это самое распространённое заблуждение. Обычные чаты Telegram хранятся на серверах Telegram в расшифрованном виде. E2E включается только в «Секретных чатах» — исключительно один на один, не в группах и не в каналах.
Голосовые сообщения, файлы, вся история обычных чатов лежат на серверах Telegram и теоретически доступны по судебному запросу или в случае утечки данных.
WhatsApp — E2E есть, но метаданные у Meta
WhatsApp использует протокол Signal для шифрования сообщений — это настоящее E2E. Проблема в другом: Meta собирает обширные метаданные — с кем, когда, как часто вы общаетесь, ваше местоположение, тип устройства. Эти данные активно монетизируются.
Signal — золотой стандарт публичных мессенджеров
Signal — некоммерческая организация с открытым исходным кодом. E2E по умолчанию везде, минимальные метаданные, независимый аудит протокола. Для личного использования это лучший выбор среди публичных сервисов.
SecureChat — E2E + полный контроль над сервером
SecureChat строится на тех же криптографических принципах, что и Signal, но добавляет главное преимущество: сервер принадлежит вам. Ни разработчик, ни облачный провайдер, ни иностранная юрисдикция — никто не имеет доступа к вашим данным или метаданным.
Почему важно, кто контролирует сервер
Даже при идеальном E2E-шифровании сервер знает немало:
- Кто с кем переписывается — граф общения
- Когда и как часто происходят контакты
- Размер сообщений — косвенный индикатор содержимого
- IP-адреса участников
- Список пользователей и их аккаунты
Эти данные называются метаданными, и в руках спецслужб или корпораций они дают огромные возможности для анализа без расшифровки сообщений. Именно поэтому «зашифровано» ≠ «приватно».
Когда вы размещаете SecureChat на собственном сервере, метаданные физически не покидают вашу инфраструктуру. Запрос третьей стороны на ваши данные должен пройти через вас лично — и вы сами решаете, что отвечать.
Для компаний, работающих с персональными данными под 152-ФЗ или GDPR, хранение данных на собственном сервере — это не просто преимущество, а часть требований регуляторов.
Чек-лист: как проверить свой мессенджер
Задайте эти вопросы перед тем, как доверить мессенджеру важные переписки:
- □ E2E включено по умолчанию? Не только в отдельном режиме, а везде: в группах, звонках, при передаче файлов.
- □ Открытый исходный код? Шифрование должно поддаваться независимой проверке — «доверяй, но проверяй».
- □ Где хранятся ключи? Только на вашем устройстве, не на сервере разработчика.
- □ Кто владеет сервером? Иностранная компания — это потенциально иностранная юрисдикция и иностранный доступ.
- □ Есть ли Forward Secrecy? Компрометация одного ключа не должна раскрывать всю историю переписки.
- □ Что происходит с метаданными? Кто может узнать, с кем и когда вы общаетесь?
Итог
E2E шифрование — необходимый минимум для приватного общения, но не достаточное условие. Полная приватность требует контроля над сервером и минимизации метаданных.
SecureChat решает оба вопроса: криптография уровня Signal плюс полностью ваша инфраструктура. Первый пользователь при запуске автоматически становится администратором — никаких аккаунтов у нас, никакой зависимости от облаков.