Real-Time Backend

Encryption

В 2014 году утечка iCloud (The Fappening) раскрыла личные фотографии знаменитостей. Данные хранились без E2EE - Apple могла расшифровать всё. Именно этот инцидент ускорил индустриальный переход к E2EE по умолчанию.

  • **Signal** обеспечивает E2EE для 40+ млн пользователей; даже под давлением властей компания предоставляла только дату регистрации и дату последнего входа - больше нечего было дать.
  • **WhatsApp** перешёл на Signal Protocol в 2016 году - 2 млрд пользователей, ~100 млрд сообщений в день шифруются E2EE; Facebook (владелец) не может читать переписку.
  • **Cloudflare** предоставляет Geo Key Manager для организаций, которым нельзя хранить TLS-ключи за пределами конкретной юрисдикции - приватный ключ остаётся на территории клиента, Cloudflare проксирует handshake.

TLS для WebSocket

WebSocket поверх TLS (WSS) - стандарт для любого production-трафика. TLS 1.3, выпущенный в 2018 году, сокращает handshake с 2 RTT до 1 RTT и добавляет 0-RTT resumption для повторных соединений. Для WebSocket это критично: handshake происходит при каждом reconnect, а мобильные клиенты переподключаются часто.

Forward Secrecy (FS) - свойство, при котором компрометация долгосрочного приватного ключа сервера не раскрывает прошлые сессии. TLS 1.3 требует ECDHE для каждого handshake, что делает FS обязательным. TLS 1.2 с RSA key exchange - без FS.

Злоумышленник записал весь зашифрованный WSS-трафик за год. Затем получил приватный ключ сервера. Какое свойство TLS-конфигурации определяет, сможет ли он расшифровать записанный трафик?

End-to-End Encryption

TLS шифрует канал между клиентом и сервером - сервер видит plaintext сообщений. End-to-end encryption (E2EE) шифрует данные так, что только участники переписки держат ключи расшифровки. Сервер хранит и доставляет зашифрованный ciphertext, но не может прочесть содержимое. WhatsApp внедрил E2EE по умолчанию в 2016 году - 2 млрд пользователей, сервер не видит сообщений.

E2EE усложняет server-side модерацию контента - сервер физически не может проверить содержимое. Apple предложила client-side scanning в 2021 году и отозвал предложение после критики. Это фундаментальный trade-off: privacy vs safety.

Мессенджер использует E2EE. Правительство запрашивает у компании содержимое переписки конкретного пользователя. Что компания технически способна предоставить?

Signal Protocol

Signal Protocol, разработанный Moxie Marlinspike в 2013 году, стал стандартом de facto для E2EE мессенджеров. Используется в Signal, WhatsApp, Facebook Messenger (Secret Chats), Google Messages. Ключевые свойства: Forward Secrecy (компрометация не раскрывает прошлое) и Break-in Recovery (автоматическое восстановление безопасности после компрометации).

Double Ratchet сочетает два механизма: Symmetric-key ratchet обеспечивает forward secrecy для каждого сообщения (из chain key нельзя получить предыдущие). Diffie-Hellman ratchet при каждом ответе обновляет root key - это break-in recovery: даже скомпрометированный ключ станет неактуален после следующего DH exchange.

Атакующий получил доступ к устройству Alice и извлёк текущий chain key. Alice и Bob после этого обменялись ещё 10 сообщениями. Сколько из этих 10 сообщений атакующий сможет расшифровать благодаря Double Ratchet?

Key Exchange

X3DH (Extended Triple Diffie-Hellman) - протокол начального обмена ключами в Signal Protocol. Позволяет установить общий секрет даже если Bob offline - его PreKeys хранятся на сервере. Сервер не знает общего секрета, потому что финальный DH-шаг вычисляется локально на устройствах.

One-Time PreKey делает каждое новое соединение уникальным - даже если Identity Key и Signed PreKey утекут, без OPK атакующий не воспроизведёт точный Master Secret прошлых сессий. Signal рекомендует пул из 100 OPK; при исчерпании сервер сообщает Alice, и X3DH продолжается без DH4 - с небольшим снижением безопасности.

TLS уже шифрует трафик - E2EE для мессенджера избыточна

TLS шифрует канал клиент-сервер, сервер видит plaintext. E2EE шифрует данные так, что сервер остаётся слепым посредником.

При компрометации сервера или получении данных по судебному запросу - TLS не защищает содержимое. E2EE защищает именно от этих сценариев.

Bob загрузил на сервер 100 One-Time PreKeys. Все 100 были использованы разными пользователями, новые Bob ещё не загрузил. Alice хочет отправить первое сообщение Bob. Что произойдёт?

Итоги

  • **TLS 1.3 с ECDHE** обязателен для WSS: 1-RTT handshake + Forward Secrecy гарантируют, что компрометация серверного ключа не раскрывает прошлые сессии.
  • **E2EE** перемещает доверие с сервера на устройство: сервер хранит ciphertext и метаданные, но не может расшифровать содержимое без ключей пользователей.
  • **Signal Protocol (X3DH + Double Ratchet)** решает задачу offline key exchange и обеспечивает Break-in Recovery - автоматическое восстановление безопасности после компрометации.

Связанные темы

Шифрование в real-time системах пересекается с несколькими областями:

  • Authentication и JWT — JWT передаётся в WSS handshake; TLS защищает токен от перехвата при передаче
  • Audit и Compliance — E2EE создаёт tension с требованиями GDPR к праву на доступ и логированием для compliance
  • Input Validation — Шифрование не заменяет валидацию - ciphertext может скрывать вредоносный payload до расшифровки

Вопросы для размышления

  • Как реализовать E2EE в групповом чате из 500 участников без N^2 шифрования для каждого получателя?
  • Что происходит с E2EE-архивом сообщений при утере устройства пользователя - можно ли обеспечить backup без компромисса безопасности?
  • Как правительственные требования к backdoor в E2EE системах влияют на безопасность для всех пользователей, не только целевых?

Связанные уроки

  • net-23-https-tls
  • sec-01
Encryption

0

1

Войти