Что такое сквозное шифрование?

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

End-to-end (E2E) шифрование — это запечатанный конверт, который может открыть только получатель. Шифрование происходит на вашем устройстве перед отправкой, расшифровка — на устройстве получателя после доставки. Сервер посередине видит только нечитаемый зашифрованный поток.

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

Как это работает технически

Под капотом E2E-шифрование строится на двух механизмах: асимметричном шифровании для обмена ключами и симметричном для шифрования самих сообщений.

Шаг 1 — Обмен ключами (ECDH)

Каждый пользователь создаёт пару ключей: публичный (можно раздавать всем) и приватный (хранится только на вашем устройстве). Когда Алиса хочет написать Бобу, происходит следующее:

// ECDH P-256 — упрощённая схема
Алиса: 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 с встроенной проверкой целостности. Расшифровать без точного ключа вычислительно невозможно при современных мощностях.

// Web Crypto API — шифрование прямо в браузере
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 плюс полностью ваша инфраструктура. Первый пользователь при запуске автоматически становится администратором — никаких аккаунтов у нас, никакой зависимости от облаков.