Секретные чаты в Telegram

Секретные чаты в Telegram


Для создания секретного чата пользователи должны обменяться общим секретным ключом (симметричное шифрование), для этого User 1 запрашивает с сервера Telegram параметры DH (1) (Diffie-Hellman), генерирует сложные числа (2) и отправляет на сервер запрос на создание секретного чата с User 2 (3) (уведомление пользователю User 2 приходит на все его устройства). User 2 принимает запрос с числами от User 1 (4) и генерирует симметричный ключ для шифрования (6), отправлет на сервер подтверждение о создании секретного чата (5) (на этом шаге все остальные устройства User 2 получают уведомление о том, что данный пользователь уже принял запрос на создание секретного чата). User 1 получает уведомление (о том что User 2 принял запрос) и так-же генерирует симметричный ключ (7, 8).


После обмена ключами эти устройства могут общаться между собой, шифруя свои сообщения общим секретным ключем (9, 10, 11, 12). Секретный чат привязывается к конкретным устройствам пользователей и хранится на этих устройствах. Другие устройства этих пользователей и сервер Telegram не имеет доступа к секретному ключу для дешифровки сообщений, это позволяет избежать прослушки третьими лицами (в том числе со стороны сервера Telegram), в этом и заключается принцип работы секретных чатов.


Подробное описание работы секретных чатов: https://core.telegram.org/api/end-to-end.

API для отправки данных в секретные чаты: https://core.telegram.org/schema/end-to-end.