Comments 166
фишку со sponsored channel никто из них не поддерживает, разумеется
Sponsored channel идет через сервера Telegram: Клиент подключается к серверам Telegram и в initConnection передает IP и порт используемого прокси-сервера — а тот (сервер Telegram) уже находит по ним соответствующий Sponsored channel и передает его клиенту.
github.com/dotcypress/mtproxy
Начну с довольно резкого вопроса: Что это делает на хабре?
Ни слова про техническую реализацию.
Точнее, пару раз упоминается, что это "почти 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 найдена поддержка режима конференций, похоже скоро будет сразу два больших анонса.
А это вообще какое отношение к теме статьи имеет? И снова без каких-либо ссылок или пруфов...
Даша aka koteeq из VeeSecurityПо-моему всё-таки Анна :)
Абсолютно никаких пруфов, конечно же. Просто ссылка со словами «запущен одним из разработчиков». Может расскажете, почему «похоже»?На этом канале, который часто делал сливы с приватных беток появилась информация, что это «первый настоящий». t.me/telecentr/48
Понятно, что сказать можно всё что угодно, но я просто указываю на то, откуда ноги растут.
А это вообще какое отношение к теме статьи имеет? И снова без каких-либо ссылок или пруфов...Да ладно, почему бы и нет? Пруфов в статье нет, конечно, но если чуть-чуть поискать, найти не проблема.
Обратите внимание, я не говорил в посте, что протокол обфусцирован я говорил, что трафик зашифрован.
А это вообще какое отношение к теме статьи имеет? И снова без каких-либо ссылок или пруфов...
по поводу конференций — github.com/grishka/libtgvoip/commits/public
Абсолютно никаких пруфов, конечно же. Просто ссылка со словами «запущен одним из разработчиков». Может расскажете, почему «похоже»?
Потому, что ссылку выложил один из разработчиков клиента Telegram X, больше подробностей — нет
ссылка на данную статью была бы не лишняя, добавлю в постДанная статья не содержала в себе ничего интересного с точки зрения статьи, весь срач был в комментариях, а на TJ комментарии доступны только платным подписчикам.
Потому, что ссылку выложил один из разработчиков клиента Telegram X, больше подробностей — нет
Можно чуть конкретнее? Где выложил?
АПД: Был неправ насчет Secret'а, он действительно используется в шифровании пакета.
А вообще Анна aka koteeq написала целую обширную статью про mtproto proxy и все все все: https://t.me/theyforcedme/48.
Странный подход. Почему просто не сделать ECDH-KDF-256 для генерации сессионный ключа? Тогда нету риска что расшифровка первого пакета вернет какую либо полезную информацию.
Человека можно подкупить или запугать (он что, всех родственников и близких из РФ вывез?),
Ну, приватные чаты он при всём желании не может выдать, только если бекдор, но с исходниками клиентов его намного легче найти.
Вы так наивны, во первых нет гарантии что через аппстор распространяется версия, собранная из публичных исходников
На счёт аппстор не скажу, но с десктопом можно собрать по инструкции(те же версии компиляторов и либ) и проверить побайтово.
вспоминаем openssh в debian. исходники были открыты, но никто не заметил кривого патча, люто понижающего энтропию в течение нескольких лет
так я ж написал
только если бекдор, но с исходниками клиентов его намного легче найти
Задумайтесь вот над чем. Судя по описанию нам предлагают выкинуть инструмент инструмент, который
- Был применим для множества целей, как для нелегальных, так и, в том числе, вполне легальных
- Который не камуфлировал ни под что, а был вполне открыт и прозрачен
- Который вы оплачивали из своего кармана (или не из своего, но, в любом случае — вы работали за свободу, а не за деньги)
и заменить его на инструмент, который
- Применим почти исключительно для того, чтобы обойти запрет, наложенный, как бы, вполне легитимным судом
- Пытается сделать так, чтобы «органы» вас не сразу нашли
- И за установку которого вы будете получать деньги (по крайней мере это заявлется в рекламе)
То есть, условно говоря, кухонный нож предлагается заменить на автомат и книжечку с именами «главарей подполья».
Нет, я понимаю Дурова: когда в результате кого-то посадят — будет очередной чудесный повод рассказать про то, как «кровавый режим» зажимает «свободу слова».
Но я не понимаю людей, которые всё это преподносят как «борьбу за свободу».
Да нет тут «борьбы за свободу», забудьте. Голый хайп «на жареную тему».
вполне легитимным судом
?
Который вы оплачивали из своего кармана (или не из своего, но, в любом случае — вы работали за свободу, а не за деньги)
??
И за установку которого вы будете получать деньги (по крайней мере это заявлется в рекламе)
???
Смысл вашего комментария мне не понятен.
(Куратор, поменяйте ребят в ночной смене — они у вас совсем чушь пишут, деньги зря ваши тратят.)
Не все понимают, что телефон с 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 здесь :) Ух сейчас он всех нас расставит.
Решение, кстати, гениальное… а что оно аморальное — ну так мораль никогда Пашу не останавливала.
Telegram Desktop под Linux научится E2E тогда когда научится это же делать и Telegram Desktop под Windows и macOS. ИМХО
Telegram Desktop это лишь кросс-платформенный клиент(Под Linux, macOS, Windows) его код всегда доступен на GitHub.
Если тебе нужно E2E, допиши его. (Если не можешь, это твоё дело. Писать его пока не будут, а может вообще не начнут. ИМХО)
Ну либо брось issue об этом, хотя потом все равно закроют как 871'е. Правда без обсуждения.
Ну и Телеграм «безопасным» называть никак нельзя, пока он ворует телефонный номер и книгу контактов. Безопасный мессенджер не требует от вас раскрывать свою личность.
Если никто не пишет, значит это просто никому не нужно.Но если это никому не нужно — тогда почему из-за этой, мало кому нужной, фичи, поднята настоящая война?
Ну и Телеграм «безопасным» называть никак нельзя, пока он ворует телефонный номер и книгу контактов. Безопасный мессенджер не требует от вас раскрывать свою личность.
Да и использование центрального сервера через который бегает трафик тоже сомнительно, кто знает что они там делают с данными на самом деле.
Тема центрального сервера в архитектуре кстати относиться и к теме этой статьи.
Ура, в настройках появилась опция отключения синхронизации телефонной книги. Как понимаю, благодаря GDPR...
Макосевой десктоп клиент умеет секретные чаты сто лет как.
Вы нас (35+) недооцениваете. Мы это разворачивать и будем, причем далеко не на купленном vps :)
На текущий момент прошло 20-25 лет.
Те, кому в середине девяностых уже было лет 10-20 — компьютеры и интернет был интересен, а кругозор еще не ограничен полученной специальностью и работой.
Им сейчас 10-20 + 20-25. Получаем 30-45 лет. Именно в этой аудитории сейчас можно найти подавляющее большинство грамотных людей, начавших с нуля.
Старше 45 — редкие исключения, начинавшие с ФИДО и более ранних компов. Таких относительно немного (да я понимаю что на Хабре как раз все наоборот).
Но это я к тому, что «как подключиться» это скорее для аудитории 45+, а 35+ как раз наоборот.
Согласен, разработчики очень грамотно придумали идею со спонсорством, так как понимают, что за вознаграждение помогать обходу блокировок найдется больше желающих.А также понимают, что это даст возможность правоохранительным органам этих всех желающих «винтить», а Паше — петь песни про «войну со свободой слова».
Вот в чём Дурову не откажешь — так это в умении «разводить» людей. Нужно же кому-то Мавроди заменить… впрочем он хотя бы из бабушек и дедушек последние пенсии не вытряхивает — и на том спасибо…
… это даст возможность правоохранительным органам этих всех желающих «винтить»
Каким образом?
Но тут я скорее хотел бы задать вопрос юристам, буде присутствующие в нашей тесной компании: а на самом ли деле можно утяжелить квалификацию владельцам каналов, если доказать что они (владельцы) умышленно нарушали решение суда (тут никуда не денешься — решение суда есть) с целью извлечения выгоды (монетизация аудитории)? И можно ли доказать, что использование mtproto, который является встроенным и обязательным(?) механизмом телеграма является дополнительным квалифицирующим признаком?
умышленно нарушали решение суда
Решение суда не применимо к тем, кто делает эти прокси-серверы. Максимум что могут сделать сейчас в рамках закона — заблокировать адрес.
И это все еще не отвечает на мой вопрос — как найти человека, запустившего такой сервер?
Как найти владельца канала? Ну подозреваю, что методами, похожими на методы ФБР, примененные при поимке Винника и Селезнева, ну например. В настоящее время они точно не могут так поступить в силу процессуальных ограничений, при условии, что на канале не было откровенной терры.
Вопрос к возможным юристам остается: будет ли извлечение выгоды достаточным условием для возбуждения УГОЛОВНОГО дела (сейчас это только административка) и как могут прикрутить то самое «извлечение выгоды»? (более полно вопрос в предыдущем моем сообщении).
Второе: А фиг его знает. И если сейчас я уверен, что в случае обострения гарантированно отделаюсь штрафом, то нет уверенности, что после перехода на другую схему в случае кризиса не буду иметь «бледный вид и потухший взгляд» или предложение «о сотрудничестве», от которого в таких условиях (реальный срок) достаточно тяжело будет отказаться. Грустно сознаваться, но я не герой и не идейный борец за свободу.
Это как с «канцелярскими несунами» в офисе: за пачку бумаги максимум попросят написать заявление, за бук или видео карту — тут появляются варианты.
1. Так хостер и сказал кому и что он сливает и с кем сотрудничает. Они тоже кучу бумаг подписывают по этому поводу.
2. Еще раз повторюсь, что в связи с отсутствием уголовной составляющей опера связаны процессуальными нормами. да и не интересно ради штрафа работать. Изменятся условия — изменится и ситуация. Повторится ситуация с «разносчиками кристаллов», когда опера «вызванивали» закладчика и «лотошили» при замене закладки. На ютубе достачно видосиков, снятых с дворовых уличных камер, как бравые парни без формы прыгают из машины и «пакуют курьеров смерти», который перед этим как раз отвечал на звонок. ватсап/Телеграм же безопасен, чего бы и на звонок не ответить? Оперативная работа — она такая, никаких «высоких технологий». И дедовскими методами ловко справляются.
Итак, чуть выше вы в этот пост за уши притянули Навального, сейчас — Мавроди, вы знаете, мне кажется вам стоит посидеть в ОННН (перманентно)
А также понимают, что это даст возможность правоохранительным органам этих всех желающих «винтить»
А зачем нужны правоохранительные органы, которые защищают воров от граждан?
А как с другими реализациями? Поделитесь опытом пожалуйста, кто пробовал.
Самое интересное, что решение проблемы получается лишь частичное. Проксирующих MTProto-серверов даже в самом лучшем случае будет на порядки меньше, чем в мире доступно socks5-серверов. А тех, кто откажется от рекламы, будет и того меньше. Поэтому если Роскомнадзор таки дойдёт до блокировки Telegram при помощи DPI (а он дойдёт), то удобство использования всё равно снизится достаточно заметно.
Promoted каналы — это такой канал, на который вы автоматически будете подписаны при подключении к прокси, он будет закреплен наверху списка контактов/чатов и его нельзя удалить пока вы не отключитесь от данного прокси.
Я согласен, что создатель прокси сервера должен что-то получать взамен, но иметь принудительный канал, ещё и закреплённый наверху, — идиотизм.
Возможно это станет толчком к развитию альтернативных клиентов, ведь насколько я понял "закреплен наверху списка контактов/чатов и его нельзя удалить" реализует именно клиент.
Первый вариант закончится после первой Жалобы в Apple, будет отозван сертификат. Второй вариант очень сложный для массового использования.
В плане телеги, я бы больше доверял, скачивая приложение с оф.сайта.
После первой Жалобы от телеги с пруфом — порежет, никто не хочет судов.
После первой Жалобы от телеги с пруфом — порежет, никто не хочет судов.Причём тут суды? Apple просто очень, очень не хочет делать так, чтобы кто-нибудь что-нибудь на их телефоны ставил в обход официального стора.
Но вот кровавый энерпрайз — этого не очень хочет. Потому был найден компромисс: внутренние для фирмы приложения можно ставить с внутреннего сайта. Отстегнув денюжку Apple'у.
А то, что кто-то таким путём распространяет публичный приложения — ну так это пока Apple на это «сквозь пальцы» смотрит, ни никто не гарантирует, что завтра другой сотруник Apple на вопиющее нарушение договора не взглянет попристальнее…
Ведь почему Apple всех не убивает «на корню», это ж всё детектится? А очень просто: так разработчики часто бета-тестирования проводят, а разгонять своих собственных разработчиков Apple не очень хочется…
Но всё это — ровно до тех пор пока левая пятка кого-то в Apple не решит, что кто-то уж слишком сильно «за рамки» вышел… рассматривать это как альтернативу APpStore'у по меньше мере странно.
Тестирование приложений проходит по другому, у Apple целых две платформы — TestFlight/hockeyapp
Тестирование приложений проходит по другомуТестирования приложений должно прозодить по другому. Не совсем то же самое, что происходит по другому.
Вы думаете только пользователи не читают инструкции, а разработчики все паиньки и всё делают «как написано»? Ага. Щаз.
Сомневаюсь что apple порежет сертификат после первой жалобы.После первой — нет, какое-то время, конечно, уйдёт на рассмотрения.
В плане телеги, я бы больше доверял, скачивая приложение с оф.сайта.А вот Apple — считает иначе. Эти самые сертификаты предназначены для распространения внутренних приложений компании. То есть уже один факт, что вы получаете доступ к приложению не являсь ни сотрудником, ни даже контрактором — строго говоря повод для отзыва сертификата и блокирования уже установленных приложений.
То что сейчас Apple «с одной жалобы» так не делает — добрая воля Apple, больше ничего. Соглашение разработчкика так делают позволяет.
Если у пользователя есть деньги, он просто купит дешевый VPS
На нём ещё надо поднять прокси, не все смогут, поэтому скорее заплатит за прокси без рекламы.
Понятно, что за вознаграждение прокси будут создавать куда как охотнее, чем за бесплатно
Так я с этим не спорил, почитай, о чём мой коммент.
1. Покупаем сервер %партнерская ссылка кто оплатил статью%
2. sudo curl -sSL get.docker.com | sh
3. sudo docker run --name 'mtproto_proxy'…
А еще чуть позже будет ПО типа Outline которое и эти 3 шага за пользователя сделает, только карту платёжную введи…
Генерят на клиенте случайный 32-байтовый ключ и 16-байтовый IV
Дилетанты. Вот добавили бы NoiseSocket, то провайдерам вообще бы было делать нечего
Проверил сейчас на старом телефоне Lenovo A2100, крутится Loading по средине экрана, ничего не нажимается кроме Cancel.
Клиент был скачан с Play Маркет, как ещё его обновить?
prntscr.com/jnb94y
Promoted каналы — это такой канал, на который вы автоматически будете подписаны при подключении к прокси
Нет, в описании сказано — что он просто будет показываться сверху, принудительной подписки не будет (а это значит уведомлений и кол-во новых сообщений не будет)
Переписал свой асинхронный сокс прокси на протокол mtproxy:
https://github.com/alexbers/mtprotoproxy
Пока преальфа, но, вроде работает. В первый раз заработал пол часа назад, а начал писать три часа назад. Могут быть баги.
Более стабильный socks-proxy, который легко поднять и который точно работает:
https://github.com/alexbers/tgsocksproxy
— мульти ключ
— promoted каналы
— статистика использования (желательно с привязкой к ключу)
Мультиключ и статистика использования будет в самое ближайшее время, promoted каналы чуть позже.
Ещё в планах сделать опциональный быстрый режим, когда трафик не перешифровывается aes'ом при передаче, будет менее секурно, зато быстро. Так же, в планах использовать си'шную реализацию шифрования для большей скорости
Мультиключ и статистика использования с привязкой по ключу готовы.
Ещё сделал фичу, которой, вроде, пока нет ни у кого. Рассмотрим протокол работы с mtproto-прокси. При подключении к нему клиент генерирует пару ключей: одну для приёма сообщений другую для передачи. Прокси, при подключении к тг тоже генерирует пару ключей. Идея в том, чтобы взять ключ клиента для приёма сообщений и создать соединение к тг с таким же ключём. Таким образом, входящие сообщения можно не перешифровывать, а передавать как есть, что сильно ускоряет программу т.к. основная часть сообщений именно входящие. Из-за особенностей работы протокола такая упрощенная передача данных может работать только в одну сторону. Серьезных минусов такого подхода пока не вижу, но, на всякий случай, сделал возможность отключаемой (FAST_MODE = False).
Не совсем понял вопрос. При подключении к прокси клиент отсылает число от 1 до 5 — номер сервера, к которому нужно подключиться. Ожидается, что прокси подключится именно по адресу, соответствующему заданному серверу, а если подключиться к соседнему, то соединение дропается. Можно настроить маршрутизацию так, чтобы пакеты на эти адреса шли через виртуальное устройство, которое осуществит туннелирование.
Свежие новости: ускорен aes в 665 раз за счёт использования модуля pycrypto, при его наличии. Решена проблема с загрузкой картинок и аудиозаписей — клиент телеграмма при попытке скачивания файлов указывает отрицательный номер сервера, сейчас это корректно обрабатывается. Пока неизвестно бага это или фича, ведь по количеству отрицательных номеров серверов администратор может понять сколько картинок/аудиозаписей/файлов скачал пользователь.
Следующее на очереди — promoted каналы
поправил pep8: https://github.com/alexbers/mtprotoproxy/commit/e2ade349d2013a0df1696e842637d11b272a221b
С promoted-каналами пока не всё так просто, похоже нужно уметь их регистирировать на стороне телеграма. Если кто знает как это сделать, скиньте пожалуйста личным сообщением.
Почитал исходники телеграма. Настройки promoted каналов прилетают с сервера с помощью api-вызова help.getProxyData, который возвращает или help.proxyDataEmpty (пусто) или help.proxyDataPromo. Самое интересное, что вызов help.getProxyData не имеет входных параметров, т.е. телеграм "знает" что клиент в этой сессии сидит через прокси и через какой именно.
Кроме этого, в исходниках реализован ежечасный апдейт promoted channels, что означает что они могут динамически меняться.
Самое вероятное как это может быть сделано — прокси перед передачей первого пакета клиента, вставляет в исходящее tcp-соединение ложный api-вызов со своим уникальным идентификатором (например с api_id и api_hash) и тг-сервер это запоминает.
Я пока видел только один работающий promoted-канал, который утверждает что прокси, ведущие на него, работают на официальном софте от Telegram
наконец, сделал поддержку promoted-каналов: https://github.com/alexbers/mtprotoproxy/commit/fee5a0c05ae855d97e12a46253e4ad50395df17c.
Судя по размеру этого патча, можно сделать вывод, что создатели телеграма использовали очень оригинальную схему передачи тега для таких каналов. В частности там используется ещё один слой проксей на их стороне с которым идёт общение по протоколу mtproto. Каждое сообщение помещается в RPC-вызов этого протокола. Информация о проксе передаётся в каждом исходящем RPC-сообщении, что добавляет около 96 байт оверхэда.
Теперь я понял, почему в официальном прокси сервере 22 тысячи строчки кода.
t.me/proxy?server=proxy.mtproto.host&port=1984&secret=e3095bafa2e03884de07fe6a7bcb8a85
Тестовые сервисы от энтузиастов, это хорошо — но хочется официального…
Написал на Erlang https://github.com/seriyps/mtproto_proxy. Тестовый прокси поднял, есть в README.
Запущен тут: t.me/proxy?server=139.162.152.61&port=3128&secret=DEADBEEFDEADBEEFDEADBEEFDEADBEEF
Буду мониторить, по статистике отпишусь.
А это нормально, что мтпрото прокси, что из докера, что скомпиленный и запущенный, жрет 20% ядра даже в отсутствие подключений? Ни впн, ни сокс5, ни шэдоусокс не едят даже под нагрузкой столько не потребляют
Promoted-каналы — это такой канал, на который вы автоматически будете подписаны при подключении к прокси, он будет закреплен наверху списка контактов/чатов и его нельзя удалить пока вы не отключитесь от данного прокси.
Пока есть свободные клиенты, никаких "нельзя удалить" конечно же не будет.
t.me/proxy?server=92.223.105.86&port=6968&secret=114a2b5fa9727b58ab968b6f1b1ff849
Telegram MTPROTO Proxy — всё что мы знаем о нём