secret
Секрет (ключ) MTProto-прокси
Ключ из ссылки на прокси: задаёт режим работы и, для FakeTLS, домен маскировки.
Из чего состоит
В основе секрета — 16 случайных байт, их записывают 32 шестнадцатеричными символами. К ним могут добавляться префикс режима и домен:
- без префикса — обычный режим (obfuscated2);
dd+ ключ — режим со случайным дополнением пакетов (padding);ee+ ключ + домен в hex — FakeTLS.
ee473ce5d4958eb5f968c87680a23854a0676f6f676c652e636f6d
Где используется
Секрет — третий обязательный параметр ссылки на прокси рядом с сервером и портом: tg://proxy?server=…&port=…&secret=…. Клиент использует его при обфускации соединения, а сервер проверяет, что к нему подключается свой клиент.
Секрет в разных программах
Официальный MTProxy принимает несколько секретов — ключ -S можно указать повторно. В mtg секрет один, он записан в конфигурации в параметре secret. В telemt секреты привязаны к пользователям в разделе [access.users], поэтому каждому можно выдать свою ссылку и отозвать её отдельно.
Как проверить длину
Длина подсказывает режим: сверьте её со списком, чтобы заметить обрезанный секрет:
- 32 символа — обычный режим;
- 34 символа — режим dd;
- 2 + 32 + удвоенное число символов домена — режим ee; для
google.comэто 54.
Как получить
Ключ из 16 байт создают командой openssl rand -hex 16 или head -c 16 /dev/urandom | xxd -ps. Для режима ee секрет вместе с доменом выдаёт mtg generate-secret --hex домен. Секрет не отправляется по сети: он участвует в выводе ключей шифрования, поэтому без него клиент не сможет подключиться к прокси.
Как обращаться
Секрет — это и пароль, и часть маскировки. Кто его знает, тот может подключаться к прокси и делиться ссылкой дальше; а опубликованный в открытом виде секрет может попасть и к тем, кто составляет списки для блокировки. Вводить его в клиент нужно целиком, вместе с префиксом: обрезанный секрет даёт другой режим или не подключается вовсе.