← На главную

Безопасность и сквозное шифрование (E2EE)

Обновлено: Июнь 2026 • Документация Чепухаграм

В мессенджере Чепухаграм конфиденциальность переписки обеспечивается математическими законами. Никакие третьи лица, включая разработчиков и администраторов серверов, не могут получить доступ к содержимому ваших чатов.

🔑

X25519

Протокол Диффи-Хеллмана для генерации общего ключа (ECDH)

⚙️

AES-256-GCM

Симметричное шифрование с проверкой целостности данных

🔒

PBKDF2

Криптографическая деривация ключей на базе мастер-пароля (600,000 ит.)

Принцип сквозного шифрования (E2EE)

Шифрование «end-to-end» означает, что шифрование информации происходит непосредственно на устройстве отправителя, а дешифрование — только на устройстве получателя. Серверная часть выполняет лишь функцию почтальона — пересылает зашифрованные пакеты байт, не имея ключей для их расшифровки.

Схема согласования ключей (X25519)

Вы
Приватный ключ A
Публичный ключ A
Общий секрет (K)
публичный ключ A →
← публичный ключ B

(сервер пересылает только публичные ключи)

Собеседник
Приватный ключ B
Публичный ключ B
Общий секрет (K)
1

Создание пары ключей

При первом запуске приложения Чепухаграм генерирует на устройстве пару асимметричных ключей X25519 (приватный и публичный). Публичный ключ отправляется на сервер для того, чтобы другие пользователи могли начать с вами чат.

2

Деривация общего секрета (Shared Secret)

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

3

Симметричное шифрование

Все отправляемые текстовые сообщения шифруются по стандарту AES-256-GCM с уникальным вектором инициализации (Nonce). Полученный шифротекст передается на сервер.

Шифрование текстовых сообщений

Каждое текстовое сообщение кодируется в массив байтов, после чего для него генерируется случайный 12-байтовый вектор инициализации (nonce). Данные шифруются на ключе sharedSecret по алгоритму AES-256-GCM. Результат представляет собой склеенный массив байтов: nonce (12 байт) + mac (16 байт) + ciphertext (зашифрованный текст), закодированный в Base64.

// Схематичный пример дешифровки сообщения на клиенте
Future<String> decryptMessage(String base64Data, SecretKey sharedKey) async {
  final data = base64Decode(base64Data);

  final nonce = data.sublist(0, 12);
  final mac = data.sublist(12, 28);
  final cipherText = data.sublist(28);

  final decrypted = await aesGcm.decrypt(
    SecretBox(cipherText, nonce: nonce, mac: Mac(mac)),
    secretKey: sharedKey,
  );

  return utf8.decode(decrypted);
}

Поблочное шифрование медиафайлов

Для предотвращения утечек данных при отправке медиафайлов (картинок, видео, голосовых заметок и документов), в Чепухаграм внедрена продвинутая поблочная система шифрования:

  1. При выборе файла генерируется случайный симметричный ключ файла (fileKey).
  2. Ключ fileKey шифруется на общем ключе чата (sharedSecret) и отправляется на сервер как поле encrypted_key.
  3. Сам файл считывается потоком и шифруется блоками по 64 КБ с использованием fileKey. К каждому зашифрованному блоку добавляется 4-байтовый заголовок, содержащий точную длину блока, и уникальный вектор инициализации с тегом аутентификации MAC.

Архитектура поблочного крипто-стрима

Исходный файл медиа
👇 Считывание блоками по 64 КБ
Блок 1 (64 КБ)
🔒 AES-256-GCM (fileKey)
Длина (4б) + Nonce (12б) + Данные + MAC (16б)
Блок 2 (64 КБ)
🔒 AES-256-GCM (fileKey)
Длина (4б) + Nonce (12б) + Данные + MAC (16б)
Остаток (<64 КБ)
🔒 AES-256-GCM (fileKey)
Длина (4б) + Nonce (12б) + Данные + MAC (16б)

Важно: Такой подход позволяет осуществлять потоковую дешифрацию медиа во время загрузки (стриминг), благодаря чему видео и аудиозаписи начинают воспроизводиться еще до полной загрузки файла.

Резервная копия ключей и мастер-пароль

Поскольку приватный ключ X25519 хранится в изолированном защищенном хранилище (Secure Storage) вашего смартфона, при переустановке приложения вы можете потерять доступ к переписке. Для предотвращения этого в Чепухаграм создана система защищенных резервных копий:

Безопасность сессий и автозавершение

Чепухаграм поддерживает одновременный вход на нескольких устройствах. Вся сессионная активность полностью подконтрольна пользователю:

При любом изменении пароля сквозного шифрования (или при полном сбросе ключей) все остальные активные сессии на сторонних девайсах автоматически инвалидируются на сервере и прекращают работу. Это защищает ваши чаты от несанкционированного доступа с ранее авторизованных устройств.