Мобильный протокол MTProto
(https://core.telegram.org/mtproto)
Пожалуйста, прочтите наш технический FAQ (https://tlgrm.ru/techfaq)
Разработчикам клиентов нужно соблюдать наши требования безопасности (https://core.telegram.org/mtproto/security_guidelines)
Связанные статьи
Мобильный протокол: детальное описание
https://core.telegram.org/mtproto/description
Создание ключа авторизации
https://core.telegram.org/mtproto/auth_key
Создание ключа авторизации: пример
https://core.telegram.org/mtproto/samples-auth_key
Мобильный протокол: уведомления
https://core.telegram.org/mtproto/service_messages
Мобильный протокол: уведомления о сообщениях
https://core.telegram.org/mtproto/service_messages_about_messages
Сериализация бинарных данных
https://core.telegram.org/mtproto/serialize
Язык TL
https://core.telegram.org/mtproto/TL
MTProto TL-схема
https://core.telegram.org/schema/mtproto
Требования безопасности
https://core.telegram.org/mtproto/security_guidelines
Общее описание
Протокол создан для доступа к API сервера из приложений, запущенных на мобильных утсройствах. Хотим подчеркнуть, что веб-браузер к таким приложениям не относится.
Протокол подразделён на три фактически независимых компонента:
|
|
- компонент высокого уровня (язык запроса API): определяет метод, посредством которого запросы и ответы API конвертируются в двоичные сообщения.
- криптографический слой (слой авторизации): определяет метод, которым шифруются сообщения перед тем как они будут переданы посредством протокола доставки.
- компонент доставки: определяет для клиента и сервера метод передачи сообщений через некий другой существующий сетевой протокол (такой как http, https, tcp, udp).
NB: после дешифровки, msg_key должен равняться SHA-1 полученных данных
(Есть вопросы по поводу этой системы? Прочтите techFAQ - (https://tlgrm.ru/techfaq)
Примечание 1: Каждое текстовое сообщение, которое нужно зашифровать через MTProto, всегда содержит следующие данные, которые проверяются расшифровкой, чтобы сделать систему устойчивой против известных проблем с компонентами:
- server salt (соль сервера) (64-битная)
- session id (идентификатор сессии)
- message sequence number (порядковый номер сообщения)
- message length (длина сообщения)
- time (время)