Сразу после событий с блокировками Telegram в Иране и России, в бета-версиях мессенджера начал появлятся новый тип Proxy, а если быть точным, новый протокол — MTProto Proxy.
Этот протокол был создан командой Telegram для решения проблем обхода блокировок, но так ли он хорош?
Как сейчас?
Основный тип прокси с которым сейчас работает телеграм — socks. У него есть фатальный недостаток: Логин и пароль при подключении к прокси — передаётся в открытом виде, нет, ваш телеграм таким образом «увести» нельзя, но вот заглянуть внутрь прокси и понять, что Иван Иванов пользуется телеграмом — можно.
В тех странах, которые используют DPI для анализа трафика, так и сделано. Это устройство разбирает туннель и смотрит, что же там внутри, если видит запрещенный трафик — блокируем.
Что предлагает Дуров?
MTProto Proxy — протокол семейства MTProto (на нем работает Telegram), решает сразу несколько проблем:
- Для подключения вместо логин+пароль, достаточно только пароля
- Трафик не отличается от обычного HTTPS/TLS (ну почти)
- Пароль не передается до сервера при подключении
- Трафик зашифрован
- Возможна работа через прокси только Telegram'a (другие приложения работать не будут)
- Promoted каналы
Как вы видите — набор особенностей делает данный тип прокси узкоспециальным — для Telegram, обычный трафик вы туда не сможете передавать и это, как не странно — огромный плюс.
Только Telegram
Ранее каналы (и боты) делали свои прокси и раздавали их в мир для сохранения аудитории в случае блокировки. Их прокси попадали в глобальные списки прокси и через них осуществлялись рассылки спама и другие нехорошие вещи. С новым типом прокси — вы не сможете нарушить закон, максимум что произойдет — telegram забанит ваш IP-адрес.
Пример нарушения закона в случае с socks: Через ваш прокси пытались взломать банк/гос.ведомство, ваш хостер получит официальную жалобу и в самом лучшем случае просто вас заблокирует, в худшем — велкам ту суд.
Promoted-каналы
Promoted-каналы — это такой канал, на который вы автоматически будете подписаны при подключении к прокси, он будет закреплен наверху списка контактов/чатов и его нельзя удалить пока вы не отключитесь от данного прокси.
Грубо говоря, telegram позволяет монитизировать proxy, если раньше вы могли взять прокси от канала X (тк он работает быстрее), но вообще его не читать а пойти читать Y, (а при этом, канал X тратит деньги на поддержку прокси в пустоту), то теперь за пользования прокси вы будете платить подписью на канал.
Таким образом, можно ожидать взрывной рост таких прокси, если ранее создание прокси было больше порывом доброй воли или благотворительностью, то сейчас — чем больше пользователей на вашем прокси = тем больше подписчиков у канала --> рекламу можно продать дороже.
Трафик зашифрован
Запустив Wireshark я пошел смотреть, как же выглядит трафик при работе через прокси. А выглядит он как обычное TCP/SSL соединение (без некоторых пакетов/заголовков которые относятся к https). Другими словами, трафик может маскироватся под такие решения как Cisco Anyconnect и аналогичные решения которые используют TCP+SSL.
Внутри тоннеля — «каша» из шифрованного трафика, трафик зашифрован, как можно догадатся, тем самым паролем/секретной фразой которую вы вводите при подключении. Но не только ей, конечно же, тут используются все возможности SSL/TLS.
Когда будет в продакшене?
На данный момент, MTProto Proxy доступен в стабильной версии Telegram for OS X, Telegram or Android, и в бета-версиях Telegram Desktop, iOS Telegram X.
Похоже мы ждем релиза в «продакшен» данного прокси в клиентах Desktop и обычная iOS версия (не Х) сразу после этого, мы должны увидеть новый пост от команды с рассказом о том, почему это хорошо и как жить дальше.
А потестировать где?
На просторах чатов в телеграмм был найден полу-официальный прокси который прекрасно работает с новым протоколом и (похоже) запущен одним из разработчиков, собственно вот он:
t.me/proxy?server=proxy.digitalresistance.dog&port=443&secret=d41d8cd98f00b204e9800998ecf8427e
Но и это еще не все, энтузиасты на Github методом анализа исходников пытаются сделать свои прокси сервера (пока официального еще нет), вот (PHP) пару (C#) проектов (Rust).
PS А еще в самой свежей версии библиотеки для VOIP звонков которая используется в telegram найдена поддержка режима конференций, похоже скоро будет сразу два больших анонса.
UPD: MTProto proxy — в данный момент часть инфраструктуры Telegram и когда телеграм «бегает» от блокировок — он именно множит и переносит копии своего MTProto Proxy между хостерами, сами же обрабатывающие сервера никуда не переезжают. Таким образом, в скором времени, Telegram позволит часть своей инфраструктуры развернуть у себя. (Протокол «родных» прокси может отличатся от того, что телеграм в данный момент реализует у себя в клиентах под названием MTPROTO)
UPD: Аналогичный пост от Анны (Vee Security) по поводу видов прокси в Telegram и про MTProto Proxy (включая разбор конкретного вида шифрования)
UPD: MTProto Proxy от создателей TgVPN mtproto.tgproxy.cloud/mtproxy.html просят протестировать
UPD: Самая стабильная версия сервера MTProto (на мой взгляд) — на Rust, доступна на Github github.com/dotcypress/mtproxy
Самый простой вариант для запуска «своего» прокси:
sudo docker run --name 'mtproto_proxy' --restart unless-stopped -p 1984:1984 -dti dotcypress/mtproxy -s 'proxy secret'
Вместо proxy secret — стоит указать свою фразу на основе которой будет сгенерирован ключ
Получить ключ:
docker logs mtproto_proxy
Комментарии (144)
stek29
26.05.2018 14:43+4Начну с довольно резкого вопроса: Что это делает на хабре?
Ни слова про техническую реализацию.
Точнее, пару раз упоминается, что это "почти TLS". Это не соответствует правде.
Недавно подобная статья была на TJournal, где Даша aka koteeq из VeeSecurity дала неплохое описание протокола "obfuscated2", который используется в том числе для "mtproto proxy". Процитирую:
На днях по приколу писала DPI, определяющий пакеты Telegram по содержимому:) Обфускация "anti-DPI" там простая. Генерят на клиенте случайный 32-байтовый ключ и 16-байтовый IV, ими шифруют пакет с AES CTR и отправляют. При этом сами ключ и IV отправляются перед зашифрованной нагрузкой.
В итоге, если вы провайдер, вам нужно ВСЕГО ЛИШЬ брать от каждого исходящего пакета 8-40 байты (ключ) и 40-56 байты (IV), расшифровывать содержимое (64-… байты). В расшифрованном содержимом уже вполне стандартный mtproto-формат, где первые 8 байт — сигнатура авторизационного ключа. Поймали несколько пакетов, где первые 8 байт после расшифровки совпадают — смело вносим конечный адрес в реестр запрещённых ресурсов.
насчёт ВСЕГО ЛИШЬ и почему я вообще об этом открыто говорю, не боясь дать подсказку РКН: сама идея слишком простая, глупая, а защиты-то по сути никакой, но вот только ни у одного провайдера не хватит мощностей каждый пакет расшифровывать с AES-256 и какие-то проверки проводить на предмет наличия там Telegram.Идем дальше:
Внутри тоннеля — «каша» из шифрованного трафика, трафик зашифрован, как можно догадатся, тем самым паролем/секретной фразой которую вы вводите при подключении. Но не только ей, конечно же, тут используются все возможности SSL/TLS.
"Секретная фраза" не принимает участия в шифровании, и нужна только для авторизации — можете сами в этом убедиться, просто открыв и бегло просмотрев код любой (неофициальной) реализации. Про "все возможности SSL/TLS" я уже сказал выше.
На просторах чатов в телеграмм был найден полу-официальный прокси который прекрасно работает с новым протоколом и (похоже) запущен одним из разработчиков, собственно вот он
Абсолютно никаких пруфов, конечно же. Просто ссылка со словами "запущен одним из разработчиков". Может расскажете, почему "похоже"?
PS А еще в самой свежей версии библиотеки для VOIP звонков которая используется в telegram найдена поддержка режима конференций, похоже скоро будет сразу два больших анонса.
А это вообще какое отношение к теме статьи имеет? И снова без каких-либо ссылок или пруфов...
L11R
26.05.2018 14:58Даша aka koteeq из VeeSecurity
По-моему всё-таки Анна :)
Абсолютно никаких пруфов, конечно же. Просто ссылка со словами «запущен одним из разработчиков». Может расскажете, почему «похоже»?
На этом канале, который часто делал сливы с приватных беток появилась информация, что это «первый настоящий». t.me/telecentr/48
Понятно, что сказать можно всё что угодно, но я просто указываю на то, откуда ноги растут.
А это вообще какое отношение к теме статьи имеет? И снова без каких-либо ссылок или пруфов...
Да ладно, почему бы и нет? Пруфов в статье нет, конечно, но если чуть-чуть поискать, найти не проблема.stek29
26.05.2018 15:49-1По-моему всё-таки Анна :)
Да, у меня постоянно проблемы с запоминанием имен...
Насчет пруфов и ссылок — да, можно поискать и найти. А можно сразу оставить их в статье.
shifttstas Автор
26.05.2018 15:12ссылка на данную статью была бы не лишняя, добавлю в пост.
Обратите внимание, я не говорил в посте, что протокол обфусцирован я говорил, что трафик зашифрован.
А это вообще какое отношение к теме статьи имеет? И снова без каких-либо ссылок или пруфов...
по поводу конференций — github.com/grishka/libtgvoip/commits/public
Абсолютно никаких пруфов, конечно же. Просто ссылка со словами «запущен одним из разработчиков». Может расскажете, почему «похоже»?
Потому, что ссылку выложил один из разработчиков клиента Telegram X, больше подробностей — нетL11R
26.05.2018 15:14ссылка на данную статью была бы не лишняя, добавлю в пост
Данная статья не содержала в себе ничего интересного с точки зрения статьи, весь срач был в комментариях, а на TJ комментарии доступны только платным подписчикам.shifttstas Автор
26.05.2018 15:16Тогда предлагаю позвать сюда koteeq из VeeSecurity, если у неё нет инвайта — я готов предоставить. Я только за, если мы соберём больше информации по тому как MTProto proxy работает
stek29
26.05.2018 15:47Потому, что ссылку выложил один из разработчиков клиента Telegram X, больше подробностей — нет
Можно чуть конкретнее? Где выложил?
shifttstas Автор
26.05.2018 16:13Конечно t.me/tgiostests это чат теста telegram x iOS
stek29
26.05.2018 19:37Это вы про t.me/tgiostests/34850, а разработчик — это sadal?
Если да, то вынужден вас расстроить — sadal не является разработчиком Telegram, и имеет к Telegram в целом не большее отношение, чем Я — занимается модерацией и ещё парой волонтерских проектов у Telegram.
stek29
26.05.2018 19:32АПД: Был неправ насчет Secret'а, он действительно используется в шифровании пакета.
А вообще Анна aka koteeq написала целую обширную статью про mtproto proxy и все все все: https://t.me/theyforcedme/48.
shifttstas Автор
26.05.2018 22:14И в своём посте она прямо говорит, что все таки в пакетах каша и трафик обфусцирован…
herrjemand
26.05.2018 19:33Странный подход. Почему просто не сделать ECDH-KDF-256 для генерации сессионный ключа? Тогда нету риска что расшифровка первого пакета вернет какую либо полезную информацию.
unxed
27.05.2018 00:36+2Странный подход. Почему вообще борьба за цифровую свободу идет под флагом корпоративного и централизованного мессенджера, а не каких-нибудь серверлесс-штук типа tox? Очевидно же, что в телеге всегда главным уязвимым звеном будет сам Дуров. Человека можно подкупить или запугать (он что, всех родственников и близких из РФ вывез?), а открытый децентрализованный мессенджер с комьюнити-разработкой — нет: если что, его просто форкнут аки трукрипт.
devalone
27.05.2018 00:51Потому что tox сложно для большинства, а телеграм простой, удобный, в красивой обёрткой и с кучей полезных функций вроде ботов, каналов и т.д. А ещё потому что Дуров поднял хайп, не будет же он в подобной ситуации говорить, что есть другие более безопасные методы общения, чем телеграм.
Человека можно подкупить или запугать (он что, всех родственников и близких из РФ вывез?),
Ну, приватные чаты он при всём желании не может выдать, только если бекдор, но с исходниками клиентов его намного легче найти.mspain
27.05.2018 15:38Вы так наивны, во первых нет гарантии что через аппстор распространяется версия, собранная из публичных исходников. во вторых, вспоминаем openssh в debian. исходники были открыты, но никто не заметил кривого патча, люто понижающего энтропию в течение нескольких лет
devalone
27.05.2018 21:05Вы так наивны, во первых нет гарантии что через аппстор распространяется версия, собранная из публичных исходников
На счёт аппстор не скажу, но с десктопом можно собрать по инструкции(те же версии компиляторов и либ) и проверить побайтово.
вспоминаем openssh в debian. исходники были открыты, но никто не заметил кривого патча, люто понижающего энтропию в течение нескольких лет
так я ж написал
только если бекдор, но с исходниками клиентов его намного легче найти
khim
27.05.2018 02:15-1А где вы тут видите «борьбу за цифровую свободу»? Вы ещё скажите, что Навальный, выходя детей на несанкционированные митинги за свободу борется.
Задумайтесь вот над чем. Судя по описанию нам предлагают выкинуть инструмент инструмент, который
- Был применим для множества целей, как для нелегальных, так и, в том числе, вполне легальных
- Который не камуфлировал ни под что, а был вполне открыт и прозрачен
- Который вы оплачивали из своего кармана (или не из своего, но, в любом случае — вы работали за свободу, а не за деньги)
и заменить его на инструмент, который
- Применим почти исключительно для того, чтобы обойти запрет, наложенный, как бы, вполне легитимным судом
- Пытается сделать так, чтобы «органы» вас не сразу нашли
- И за установку которого вы будете получать деньги (по крайней мере это заявлется в рекламе)
То есть, условно говоря, кухонный нож предлагается заменить на автомат и книжечку с именами «главарей подполья».
Нет, я понимаю Дурова: когда в результате кого-то посадят — будет очередной чудесный повод рассказать про то, как «кровавый режим» зажимает «свободу слова».
Но я не понимаю людей, которые всё это преподносят как «борьбу за свободу».
Да нет тут «борьбы за свободу», забудьте. Голый хайп «на жареную тему».shifttstas Автор
27.05.2018 02:32+1Зачем сюда было тащить политоту?
вполне легитимным судом
?
Который вы оплачивали из своего кармана (или не из своего, но, в любом случае — вы работали за свободу, а не за деньги)
??
И за установку которого вы будете получать деньги (по крайней мере это заявлется в рекламе)
???
Смысл вашего комментария мне не понятен.
(Куратор, поменяйте ребят в ночной смене — они у вас совсем чушь пишут, деньги зря ваши тратят.)
L11R
26.05.2018 14:46+3На мой взгляд MTProto Proxy в первую очередь решает проблему с оверхедом, который дает SOCKS.
Не все понимают, что телефон с Telegram не подключается сразу к датацентрам. Telegram сначала подключается к MTProto-серверам, развернутыми по всему мира, а вот они уже роутят юзера на датацентры в Нидерландах, Америке, Азии и т.д.
Telegram остается в России рабочим, как раз потому что команда Павла разворачивает эти MTProto-сервера тысячами на Amazon, Digital Ocean, Azure и т.д.
В итоге мы получаем вот такую картину:
Без прокси (так работало и работает до и после блокировки):
Ваш Телефон <-> MTProto-сервер <-> Telegram DC
С SOCKS-прокси:
Ваш Телефон <-> SOCKS-сервер <-> MTProto-сервер <-> Telegram DC
C MTProto Proxy:
Ваш Телефон <~> MTProto-сервер <-> Telegram DC
Где ~ дополнительная обфускация канала.
Другими словами proxy эта штука называется лишь формально. А по факту Telegram предоставляет нам развернуть часть инфраструктуры Telegram самому.
В итоге основной профит будет как раз таки в скорости работы на мой взгляд и вернет Telegram ту быстроту, как было до блокировок.
P.S. Смотрю stek29 здесь :) Ух сейчас он всех нас расставит.shifttstas Автор
26.05.2018 15:14Еще очень похоже, что это отголосок тех самых TON Proxy которые нам обещали в рамках TON
L11R
26.05.2018 15:20TON пока очень мутная тема. Да, там была вроде как в проекте некая сеть а-ля Tor, но как это будет реализовано и будет ли вообще, большой вопрос.
shifttstas Автор
26.05.2018 15:22вот очень похоже, что эти прокси — аналог entry узлов в Tor которые позволяют уже подключится к самой инфраструктуре. А пока нету TON — оплата за пользование — подписка на канал
serf
26.05.2018 14:56Telegram Desktop под Linux уже умеет делать end-to-end?
AntonAlekseevich
26.05.2018 15:02+1Telegram Desktop под Linux научится E2E тогда когда научится это же делать и Telegram Desktop под Windows и macOS. ИМХО
serf
26.05.2018 16:36+1Значит нет, зачем тогда такая поделка нужна.
AntonAlekseevich
26.05.2018 17:41+1Telegram Desktop это лишь кросс-платформенный клиент(Под Linux, macOS, Windows) его код всегда доступен на GitHub.
Если тебе нужно E2E, допиши его. (Если не можешь, это твоё дело. Писать его пока не будут, а может вообще не начнут. ИМХО)
Ну либо брось issue об этом, хотя потом все равно закроют как 871'е. Правда без обсуждения.serf
26.05.2018 18:21+2Вопрос был риторическим если кто-то не понял. Дело в том что они называют свое поделие сикюрным, однако в то же время на безопасности фокуса не видно.
Sabubu
27.05.2018 00:16Это open source, и любой может написать реализацию — протокол открыт. Если никто не пишет, значит это просто никому не нужно.
Ну и Телеграм «безопасным» называть никак нельзя, пока он ворует телефонный номер и книгу контактов. Безопасный мессенджер не требует от вас раскрывать свою личность.khim
27.05.2018 02:19-1Если никто не пишет, значит это просто никому не нужно.
Но если это никому не нужно — тогда почему из-за этой, мало кому нужной, фичи, поднята настоящая война?
serf
27.05.2018 05:25Ну и Телеграм «безопасным» называть никак нельзя, пока он ворует телефонный номер и книгу контактов. Безопасный мессенджер не требует от вас раскрывать свою личность.
Да и использование центрального сервера через который бегает трафик тоже сомнительно, кто знает что они там делают с данными на самом деле.
Тема центрального сервера в архитектуре кстати относиться и к теме этой статьи.
Chupaka
27.05.2018 12:19Ура, в настройках появилась опция отключения синхронизации телефонной книги. Как понимаю, благодаря GDPR...
Pongo
26.05.2018 20:54Разраб недавно писал, что сейчас tdesktop работает как веб-версия, поэтому там нет секретных чатов.
BugM
26.05.2018 15:54+2Монетизация сделана великолепно. Неудобства будут только у тех кто не читает каналы вообще и не может развернуть свой прокси. Всем остальным будут одни плюсы.
shifttstas Автор
26.05.2018 16:14-2Я думаю это аудитория 35+ для них будут статьи «как подключится» заодно начнут каналы читать.
kolu4iy
26.05.2018 18:00+5Вы нас (35+) недооцениваете. Мы это разворачивать и будем, причем далеко не на купленном vps :)
saboteur_kiev
27.05.2018 00:32В СНГ интернет начался в середине девяностых. Массовый веб — в конце девяностых.
На текущий момент прошло 20-25 лет.
Те, кому в середине девяностых уже было лет 10-20 — компьютеры и интернет был интересен, а кругозор еще не ограничен полученной специальностью и работой.
Им сейчас 10-20 + 20-25. Получаем 30-45 лет. Именно в этой аудитории сейчас можно найти подавляющее большинство грамотных людей, начавших с нуля.
Старше 45 — редкие исключения, начинавшие с ФИДО и более ранних компов. Таких относительно немного (да я понимаю что на Хабре как раз все наоборот).
Но это я к тому, что «как подключиться» это скорее для аудитории 45+, а 35+ как раз наоборот.shifttstas Автор
27.05.2018 00:36Прошу прощения если задел своим предположением, если дела обстаят так как вы описали — это же отлично!
ingiboy
28.05.2018 20:07У вас в профиле написано, что вы 71 года рождения. Это вы соврали, чтобы казаться старше или думаете, что один такой умный в 35+?))
Sabubu
27.05.2018 00:19Согласен, разработчики очень грамотно придумали идею со спонсорством, так как понимают, что за вознаграждение помогать обходу блокировок найдется больше желающих. Единственное, жаль, что это не универсальное решение и каждое приложение должно само аналогичную схему выстраивать, чтобы надежно работать в странах с неадекватным руководством.
khim
27.05.2018 02:25-2Согласен, разработчики очень грамотно придумали идею со спонсорством, так как понимают, что за вознаграждение помогать обходу блокировок найдется больше желающих.
А также понимают, что это даст возможность правоохранительным органам этих всех желающих «винтить», а Паше — петь песни про «войну со свободой слова».
Вот в чём Дурову не откажешь — так это в умении «разводить» людей. Нужно же кому-то Мавроди заменить… впрочем он хотя бы из бабушек и дедушек последние пенсии не вытряхивает — и на том спасибо…valera5505
27.05.2018 02:32… это даст возможность правоохранительным органам этих всех желающих «винтить»
Каким образом?acyp
27.05.2018 07:25Мне кажется, khan ранее имел возможность познакомиться с механизмами дознания :). И мысль его проистекает, как мне кажется, как раз оттуда: противоправное деяние, совершенное без умысла получения выгоды — чаще можно свернуть на административку, в тот же момент, когда умысел извлечения выгоды из противоправного деяния очевиден — это уже уголовка и прочие прелести.
Но тут я скорее хотел бы задать вопрос юристам, буде присутствующие в нашей тесной компании: а на самом ли деле можно утяжелить квалификацию владельцам каналов, если доказать что они (владельцы) умышленно нарушали решение суда (тут никуда не денешься — решение суда есть) с целью извлечения выгоды (монетизация аудитории)? И можно ли доказать, что использование mtproto, который является встроенным и обязательным(?) механизмом телеграма является дополнительным квалифицирующим признаком?valera5505
27.05.2018 10:39умышленно нарушали решение суда
Решение суда не применимо к тем, кто делает эти прокси-серверы. Максимум что могут сделать сейчас в рамках закона — заблокировать адрес.
И это все еще не отвечает на мой вопрос — как найти человека, запустившего такой сервер?acyp
27.05.2018 15:23Если я правильно понял из статьи, то прокси-сервер будет обязательным атрибутом канала.
Как найти владельца канала? Ну подозреваю, что методами, похожими на методы ФБР, примененные при поимке Винника и Селезнева, ну например. В настоящее время они точно не могут так поступить в силу процессуальных ограничений, при условии, что на канале не было откровенной терры.
Вопрос к возможным юристам остается: будет ли извлечение выгоды достаточным условием для возбуждения УГОЛОВНОГО дела (сейчас это только административка) и как могут прикрутить то самое «извлечение выгоды»? (более полно вопрос в предыдущем моем сообщении).shifttstas Автор
27.05.2018 15:32Т.е за создание прокси и канала с мемами — «действовать методами фбр»?
acyp
27.05.2018 17:07Первое: вопрос не ставился «будут или не будут», я задал совсем другой вопрос: могут или не могут при необходимости возбуждать УГОЛОВНЫЕ дела.
Второе: А фиг его знает. И если сейчас я уверен, что в случае обострения гарантированно отделаюсь штрафом, то нет уверенности, что после перехода на другую схему в случае кризиса не буду иметь «бледный вид и потухший взгляд» или предложение «о сотрудничестве», от которого в таких условиях (реальный срок) достаточно тяжело будет отказаться. Грустно сознаваться, но я не герой и не идейный борец за свободу.
Это как с «канцелярскими несунами» в офисе: за пачку бумаги максимум попросят написать заявление, за бук или видео карту — тут появляются варианты.shifttstas Автор
27.05.2018 17:33Если вы хотите чувствовать себя в безопасности — напишите своему хостеру вопрос, будут ли они сотрудничать с РФ, при отсутствии суда на территории EU/USA. С вероятностью 99.5% они не передадут никаких данных (если хостер крупный и ему дорого имя)
acyp
27.05.2018 18:00+1И все-таки хотелось бы услышать юридическую оценку, и вот почему:
1. Так хостер и сказал кому и что он сливает и с кем сотрудничает. Они тоже кучу бумаг подписывают по этому поводу.
2. Еще раз повторюсь, что в связи с отсутствием уголовной составляющей опера связаны процессуальными нормами. да и не интересно ради штрафа работать. Изменятся условия — изменится и ситуация. Повторится ситуация с «разносчиками кристаллов», когда опера «вызванивали» закладчика и «лотошили» при замене закладки. На ютубе достачно видосиков, снятых с дворовых уличных камер, как бравые парни без формы прыгают из машины и «пакуют курьеров смерти», который перед этим как раз отвечал на звонок. ватсап/Телеграм же безопасен, чего бы и на звонок не ответить? Оперативная работа — она такая, никаких «высоких технологий». И дедовскими методами ловко справляются.shifttstas Автор
27.05.2018 18:031. Я не понимаю жаргон
2. Как вас технически найти, когда сервер в европе, связь с владельцем канала — через бота, перевод денег за рекламу — в биткоинах
shifttstas Автор
27.05.2018 02:34+1На основе чего «винтить»?
Итак, чуть выше вы в этот пост за уши притянули Навального, сейчас — Мавроди, вы знаете, мне кажется вам стоит посидеть в ОННН (перманентно)
devalone
27.05.2018 12:06А также понимают, что это даст возможность правоохранительным органам этих всех желающих «винтить»
А зачем нужны правоохранительные органы, которые защищают воров от граждан?
DarkByte
26.05.2018 18:19+2Попробовал запустить mtproto-proxy сервер на пхп… Подключилось 4000 человек, сожрало 10Гб памяти, на каждого клиента в системе висит по форку пхп. Весело конечно, но с такой реализацией я лучше в socks посижу, там хоть и лаг больше, зато хостить можно на калькуляторе.
А как с другими реализациями? Поделитесь опытом пожалуйста, кто пробовал.SlavikMIPT
26.05.2018 18:30жиза — сырые неофициальные серваки эти все с мемори ликами, а монетизацию можно сделать и без mtproto такую — через бота просто и radius какой нить
shifttstas Автор
26.05.2018 18:59+1Это ж пока костыльные реализации на коленке, я бы подождал на c++
Fedcomp
26.05.2018 21:30Чем Rust не устраивает?
shifttstas Автор
26.05.2018 22:15Устраивает, но судя по стеку разработки, «оригинальный» прокси будет именно на c++ (на основе библиотек которые написаны для voip например)
cher-nov
26.05.2018 20:26Самое интересное, что решение проблемы получается лишь частичное. Проксирующих MTProto-серверов даже в самом лучшем случае будет на порядки меньше, чем в мире доступно socks5-серверов. А тех, кто откажется от рекламы, будет и того меньше. Поэтому если Роскомнадзор таки дойдёт до блокировки Telegram при помощи DPI (а он дойдёт), то удобство использования всё равно снизится достаточно заметно.
shifttstas Автор
26.05.2018 22:17Так никто не говорит не использовать socks, а dpi мало поможет с mtproto, надо будет пытаться расшифровать каждый SSL пакет, что бы понять телега это или нет.
Sabubu
27.05.2018 00:21Наоборот. socks5-сервера, тем более бесплатные, вряд ли созданы для пользователей Телеграм и будут постоянно ломаться, отказываться работать итд. А тут грамотная схема — делаешь прокси и получаешь за это плашку с рекламой. Создавать прокси за вознаграждение, очевидно, найдется больше желающих, чем делать это за бесплатно.
SlavikMIPT
27.05.2018 01:03бесплатный не значит фиговый и ломается постоянно — у меня например бесплатный как приложение к боту AudioTubeBot и каналу MediaTube_stream, ну а мотивация подписываться на канал просто делается — обновление настроек переодическое с уведомлением в канал — кто подписан — переподключается, кто не подписан — не получил уведомление, отвалился
devalone
26.05.2018 20:47+1Promoted каналы — это такой канал, на который вы автоматически будете подписаны при подключении к прокси, он будет закреплен наверху списка контактов/чатов и его нельзя удалить пока вы не отключитесь от данного прокси.
Я согласен, что создатель прокси сервера должен что-то получать взамен, но иметь принудительный канал, ещё и закреплённый наверху, — идиотизм.kITerE
26.05.2018 21:47Возможно это станет толчком к развитию альтернативных клиентов, ведь насколько я понял "закреплен наверху списка контактов/чатов и его нельзя удалить" реализует именно клиент.
shifttstas Автор
26.05.2018 22:18Не вижу плохого если получится симбиоз, предположим вы читаете 10 каналов, один из них поднимет прокси, вы продолжаете читать все те же 10 каналов, просто 1 из них будет закреплён.
devalone
26.05.2018 22:25Ключевое слово если, да и сам факт закреплённости также мне не нравится, т.к. я хочу сам управлять чатами/каналами/ботами в быстром доступе и некоторые я ну никак не хочу видеть рядом с важными для меня(«закреплений», кстати, всего 5, это не относится к теме, но прям вообще не хватает).
shifttstas Автор
26.05.2018 22:29Я думаю всех кого очень сильно бесит — переедут на платные прокси без канала или настроится свой за 1€/месяц
devalone
26.05.2018 23:01А ещё можно пропатчить клиент, open-source же :)
shifttstas Автор
26.05.2018 23:11+1Можно, но 95% этого делать не будут, особенно на мобильных платформах, с которых, я догадываюсь, 80% трафика
devalone
27.05.2018 00:46Понятно, что не будут, да и не смогут, большинству будет выбор использовать прокси с назойливой рекламой, платить за прокси без рекламы, пользоваться сторонним клиентом с риском взлома либо использовать другие методы обхода блокировок. Только чем принципиально отличаются мобильные платформы? У телеграма все клиенты open-source.
shifttstas Автор
27.05.2018 00:48Тем, что на Android установка в обход маркета требует некоторых телодвижений, а на Apple — практически невозможна.
devalone
27.05.2018 01:03некоторых телодвижений — это поставить одну галочку в настройках?
shifttstas Автор
27.05.2018 01:06Я не уверен (понятия не имею), что на всех телефонах под Android это просто галочка
acdee
27.05.2018 13:27Я бы не говорил так категорично. У меня стоит несколько приложений не из appstore. И поставил я их так же просто, как в «android» устройствах. Пару подтверждений и все.
tvr
27.05.2018 13:56И поставил я их так же просто, как в «android» устройствах.
А можно чуть подробнее?
shifttstas Автор
27.05.2018 14:27Есть только 2 метода как поставить приложения на iOS. В обход магазина: приложение должно иметь Enterprise сертификат, компиляция самим только для себя на Mac.
Первый вариант закончится после первой Жалобы в Apple, будет отозван сертификат. Второй вариант очень сложный для массового использования.acdee
27.05.2018 16:20Не возьмусь утверждать как это реализовано, но смысл такой: нажал на сайте на иконку с приложение .ipa если не ошибаюсь. Что то было про согласие на установку. После появилась иконка приложения, но как бы в тени. Нажав на него вылез pop up с текстом о том, что нужно подтвердить установку в настройках. После подтверждения приложение успешно встало и работает. Как то так
shifttstas Автор
27.05.2018 17:35Это и есть enterprise сертификат
acdee
27.05.2018 23:31Так в чем невозможность, вы не пояснили. Заплатить разрабу 300$ или боятся одной жалобы. Сомневаюсь что apple порежет сертификат после первой жалобы.
В плане телеги, я бы больше доверял, скачивая приложение с оф.сайта.shifttstas Автор
27.05.2018 23:34Какому разрабу и зачем заплатить?
После первой Жалобы от телеги с пруфом — порежет, никто не хочет судов.khim
28.05.2018 02:19После первой Жалобы от телеги с пруфом — порежет, никто не хочет судов.
Причём тут суды? Apple просто очень, очень не хочет делать так, чтобы кто-нибудь что-нибудь на их телефоны ставил в обход официального стора.
Но вот кровавый энерпрайз — этого не очень хочет. Потому был найден компромисс: внутренние для фирмы приложения можно ставить с внутреннего сайта. Отстегнув денюжку Apple'у.
А то, что кто-то таким путём распространяет публичный приложения — ну так это пока Apple на это «сквозь пальцы» смотрит, ни никто не гарантирует, что завтра другой сотруник Apple на вопиющее нарушение договора не взглянет попристальнее…
Ведь почему Apple всех не убивает «на корню», это ж всё детектится? А очень просто: так разработчики часто бета-тестирования проводят, а разгонять своих собственных разработчиков Apple не очень хочется…
Но всё это — ровно до тех пор пока левая пятка кого-то в Apple не решит, что кто-то уж слишком сильно «за рамки» вышел… рассматривать это как альтернативу APpStore'у по меньше мере странно.shifttstas Автор
28.05.2018 07:47Тестирование приложений проходит по другому, у Apple целых две платформы — TestFlight/hockeyapp
khim
28.05.2018 08:35Тестирование приложений проходит по другому
Тестирования приложений должно прозодить по другому. Не совсем то же самое, что происходит по другому.
Вы думаете только пользователи не читают инструкции, а разработчики все паиньки и всё делают «как написано»? Ага. Щаз.shifttstas Автор
28.05.2018 08:47Разработчик может сам подписать своё приложение и без корпоративного сертификата
khim
28.05.2018 02:12Сомневаюсь что apple порежет сертификат после первой жалобы.
После первой — нет, какое-то время, конечно, уйдёт на рассмотрения.
В плане телеги, я бы больше доверял, скачивая приложение с оф.сайта.
А вот Apple — считает иначе. Эти самые сертификаты предназначены для распространения внутренних приложений компании. То есть уже один факт, что вы получаете доступ к приложению не являсь ни сотрудником, ни даже контрактором — строго говоря повод для отзыва сертификата и блокирования уже установленных приложений.
То что сейчас Apple «с одной жалобы» так не делает — добрая воля Apple, больше ничего. Соглашение разработчкика так делают позволяет.
Sabubu
27.05.2018 00:22Если у пользователя есть деньги, он просто купит дешевый VPS. А если нет, что с него взять, кроме показа рекламы? Понятно, что за вознаграждение прокси будут создавать куда как охотнее, чем за бесплатно.
devalone
27.05.2018 00:37Если у пользователя есть деньги, он просто купит дешевый VPS
На нём ещё надо поднять прокси, не все смогут, поэтому скорее заплатит за прокси без рекламы.
Понятно, что за вознаграждение прокси будут создавать куда как охотнее, чем за бесплатно
Так я с этим не спорил, почитай, о чём мой коммент.shifttstas Автор
27.05.2018 00:43После релиза прокси в продакшен на каждом столбе с заголовком «Настрой себе свой MTproto proxy» будет инструкция состоящая из 3 пунктов:
1. Покупаем сервер %партнерская ссылка кто оплатил статью%
2. sudo curl -sSL get.docker.com | sh
3. sudo docker run --name 'mtproto_proxy'…
А еще чуть позже будет ПО типа Outline которое и эти 3 шага за пользователя сделает, только карту платёжную введи…devalone
27.05.2018 00:57Это всё равно для людей не видевших никогда терминал сложно, да и зачем, когда будут наверняка будут платные без рекламы(не уверен, получится ли сделать с mtproto proxy, т.к. для подключения нужен только пароль, мб он как-то сможет проверять id пользователя, хотя это противоречит идее анонимности).
shifttstas Автор
27.05.2018 00:59Платные прокси можно делать очень просто: для каждого оплатившего генерировать новый secret, и ставить ограничение на количество одновременных коннектов по одному secret, скажем не более 5.
Scratch
26.05.2018 22:21Генерят на клиенте случайный 32-байтовый ключ и 16-байтовый IV
Дилетанты. Вот добавили бы NoiseSocket, то провайдерам вообще бы было делать нечего
QDeathNick
26.05.2018 22:34Интересно, когда уже запилят в официальном клиенте возможность подключения прокси до авторизации аккаунта. Люди же мучаются, видят РКН рекламирует мессенджер, а подключится не могут, так как пока не войдёшь, прокси в настройках подключить нельзя.
Andrusha
26.05.2018 23:29Так давно уже, нужно нажать на «Подключение...» или не помню, какая там точно надпись появляется и ввести.
QDeathNick
27.05.2018 10:31Проверил сейчас на старом телефоне Lenovo A2100, крутится Loading по средине экрана, ничего не нажимается кроме Cancel.
L11R
27.05.2018 17:20У вас клиент старый, обновите.
QDeathNick
27.05.2018 17:49Клиент был скачан с Play Маркет, как ещё его обновить?
L11R
27.05.2018 22:31Нужно нажать прям на надпись в шапке «Подключение...». Крайне не интуитивно, конечно, надеюсь исправят.
QDeathNick
27.05.2018 22:38До Lenovo сегодня не добраться, вот сделал скрин на Xiaomi, про какую надпись в шапке вы говорите? Там где написано Connecting… не нажимается.
prntscr.com/jnb94yL11R
27.05.2018 22:51Вы сначала отмените этот Loading, потом кликните туда, да.
QDeathNick
28.05.2018 11:20Жму Cancel — возвращается к вводу телефона.
L11R
28.05.2018 11:44Ну так всё верно! Вам же настройки прокси надо выставить. А их надо установить ещё до всех этих вводов телефона. Жмете Cancel и затем на верхний бар.
QDeathNick
28.05.2018 19:04Верхний бар это как? Там написано Your phone и галочка, которая при вводе телефона начинает соединение. Никаких настроек не вижу.
Sabubu
27.05.2018 00:24Плохо (для нас) конечно то, что этот протокол ориентирован только на Телеграм и поднятые прокси не могут быть использованы для других сайтов и приложений, в отличие от socks5. Лучше бы они задействовали shadowsocks прокси, который работает даже в Китае и определенно был бы полезен в условиях плохо работающего российского интернета.
shifttstas Автор
27.05.2018 00:38как вы сами выше написали — цель другая, тем более promoted каналы были бы невозможны без модификации протокола shadowsocks, а зачем править то, что хорошо работает? даже гугл в своём Outline — не трогали протокол shadowsocks сделав только красивый интерфейс для пользователя.
F0iL
27.05.2018 11:45а в чем сложность promoted-каналов без своего протокола?
при использовании прокси или туннеля, для серверов Telegram виден IP-адрес выходной ноды, с которой и вылезает во внешний мир пользователь, и далее нет никакой проблемы автоматически добавлять пользователю канал владельца в зависимости от его внешнего IP.
Способов верифицировать владельца выходной ноды для того, чтобы дать ему возможность управлять своим каналом, тоже много — например, запускать крохотный бинарник с нужной конфигурацией на том же хосте, что и прокси стоит.shifttstas Автор
27.05.2018 12:12Вангую что бы не было фрода сильного, тк так можно обладая любой сетью через которую выходят в интернет клиенты, можно показывать promoted channel + как доказывать, что сеть — ваша?
F0iL
27.05.2018 13:42А тут обе проблемы можно решить, добавив в сам протокол битовый флаг «лезем мы через прокси, или нет», который будет ставить телеграм-клиент.
Если клиент говорит, что подключается через прокси, то даем пользователю promoted каналы основываясь на его внешнем IP, а если клиент говорит, что цепляется напрямую, то, соответственно, не даем — и тогда химичить со стороны владельцев NAT'ов будет особо бесполезно.
Hakhagmon
27.05.2018 00:55Promoted каналы — это такой канал, на который вы автоматически будете подписаны при подключении к прокси
Нет, в описании сказано — что он просто будет показываться сверху, принудительной подписки не будет (а это значит уведомлений и кол-во новых сообщений не будет)
alexbers
27.05.2018 13:20+1Переписал свой асинхронный сокс прокси на протокол mtproxy:
https://github.com/alexbers/mtprotoproxy
Пока преальфа, но, вроде работает. В первый раз заработал пол часа назад, а начал писать три часа назад. Могут быть баги.
Более стабильный socks-proxy, который легко поднять и который точно работает:
https://github.com/alexbers/tgsocksproxyshifttstas Автор
27.05.2018 14:29Планируете ли развивать?
— мульти ключ
— promoted каналы
— статистика использования (желательно с привязкой к ключу)L11R
27.05.2018 17:25Я думаю с Питоном всё равно быстро упрешься в потолок производительности. Тут нужно каждое соединение шифровать, а с мультисекретом придется как-то лавировать между воркерами и портами. О миллионах юзеров думать не приходится вообще.
shifttstas Автор
27.05.2018 17:37Дополнительная трата ресурсов на брут-форс фразы будет только 1 раз на сессию, далее первые байты пакета можно кэшировать и сразу знать чем расшифровывать.
alexbers
27.05.2018 22:25+1Мультиключ и статистика использования будет в самое ближайшее время, promoted каналы чуть позже.
Ещё в планах сделать опциональный быстрый режим, когда трафик не перешифровывается aes'ом при передаче, будет менее секурно, зато быстро. Так же, в планах использовать си'шную реализацию шифрования для большей скорости
shifttstas Автор
27.05.2018 22:27Очень круто! Когда базовые функции будут сделаны — напишите пост — я думаю многим будет интересно.
alexbers
28.05.2018 00:59Мультиключ и статистика использования с привязкой по ключу готовы.
Ещё сделал фичу, которой, вроде, пока нет ни у кого. Рассмотрим протокол работы с mtproto-прокси. При подключении к нему клиент генерирует пару ключей: одну для приёма сообщений другую для передачи. Прокси, при подключении к тг тоже генерирует пару ключей. Идея в том, чтобы взять ключ клиента для приёма сообщений и создать соединение к тг с таким же ключём. Таким образом, входящие сообщения можно не перешифровывать, а передавать как есть, что сильно ускоряет программу т.к. основная часть сообщений именно входящие. Из-за особенностей работы протокола такая упрощенная передача данных может работать только в одну сторону. Серьезных минусов такого подхода пока не вижу, но, на всякий случай, сделал возможность отключаемой (FAST_MODE = False).
vesper-bot
28.05.2018 11:01А можно в вашей прокси сделать разными входящий и исходящий адреса (т.е. проксировать соединение с телеграмом от прокси через хотя бы ssh-туннель)?
alexbers
28.05.2018 15:49+1Не совсем понял вопрос. При подключении к прокси клиент отсылает число от 1 до 5 — номер сервера, к которому нужно подключиться. Ожидается, что прокси подключится именно по адресу, соответствующему заданному серверу, а если подключиться к соседнему, то соединение дропается. Можно настроить маршрутизацию так, чтобы пакеты на эти адреса шли через виртуальное устройство, которое осуществит туннелирование.
Свежие новости: ускорен aes в 665 раз за счёт использования модуля pycrypto, при его наличии. Решена проблема с загрузкой картинок и аудиозаписей — клиент телеграмма при попытке скачивания файлов указывает отрицательный номер сервера, сейчас это корректно обрабатывается. Пока неизвестно бага это или фича, ведь по количеству отрицательных номеров серверов администратор может понять сколько картинок/аудиозаписей/файлов скачал пользователь.
Следующее на очереди — promoted каналы
YaakovTooth
29.05.2018 00:51Почитайте, пожалуйста, PEP8.
alexbers
29.05.2018 08:00+1поправил pep8: https://github.com/alexbers/mtprotoproxy/commit/e2ade349d2013a0df1696e842637d11b272a221b
С promoted-каналами пока не всё так просто, похоже нужно уметь их регистирировать на стороне телеграма. Если кто знает как это сделать, скиньте пожалуйста личным сообщением.
YaakovTooth
29.05.2018 08:02Про python way совсем всё плохо, но автор пусть лучше пишет как умеет, потом код причешем и приведём к соответствию.
shifttstas Автор
29.05.2018 11:34а пока неизвестно как это делать, но уже есть прокси которые работают с promoted channels
pantsarny
28.05.2018 16:38Еще прокси для тестирования:
t.me/proxy?server=proxy.mtproto.host&port=1984&secret=e3095bafa2e03884de07fe6a7bcb8a85
vconst
28.05.2018 17:16Подскажите — где отслеживать статус проекта, что бы не пропустить готовый продакшн сервис от самих разработчиков, который можно накатить на свой VPS и использовать?
Тестовые сервисы от энтузиастов, это хорошо — но хочется официального…shifttstas Автор
28.05.2018 19:20Как только будет официальный анонс, либо я, либо другие пользователи Хабр 100% напишут об этом пост
vconst
А на свой vps его можно будет поставить?
L11R
Его можно поставить уже сейчас, неофициальные реализации существуют на PHP, C# и Rust (фишку со sponsored channel никто из них не поддерживает, разумеется). Но я думаю команда Telegram предоставит свою реализацию в ближайшее время.
stek29
Sponsored channel идет через сервера Telegram: Клиент подключается к серверам Telegram и в initConnection передает IP и порт используемого прокси-сервера — а тот (сервер Telegram) уже находит по ним соответствующий Sponsored channel и передает его клиенту.
L11R
Так и думал на самом деле. Выходит будет какой-то официальный бот типа @BotFather, где можно будет произвести эту привязку?
shifttstas Автор
Почему именно IP? А если ip несколько? DNS из-за чего не выбрали
L11R
Домен по DNS ресолвит клиент Телеграма на устройстве. Просто придется Telegram предъявить все IP адреса, если используется домен.
L11R
Судя по TL-схеме, кстати, ничего не мешает передать домен:
inputClientProxy#75588b3f address:string port:int = InputClientProxy;
forcam
Релиз на Rust'е подскажете где найти? Ну кроме гугла конечно)
rail-ka
Думаю речь идет об этом репозитории:
github.com/dotcypress/mtproxy
shifttstas Автор
Когда будует официальная документация — да, пока все реализации — кустарные пока не известны спеки.