У Telegram редкий талант. Сервис сумел убедить миллионы людей, что быстрый, удобный и красивый мессенджер автоматически является еще и приватным. Маркетинг сработал блестяще. Слово «шифрование» прозвучало, кто-то увидел умные схемы, кто-то прочитал про 256-bit AES, и дальше у публики в голове собрался нехитрый конструктор. Раз есть сложная криптография, значит переписка надежно спрятана. Раз разработчики любят рассказывать про MTProto, значит читать сообщения не может никто, кроме собеседников.
Я бы с удовольствием поддержал красивую сказку, но мешает скучная реальность. Проблема Telegram не сводится к фразе «протокол плохой» или «протокол сломан». Картина неприятнее и интереснее. MTProto не выглядит абсолютной катастрофой на уровне голой математики. Но как основа для реальной конфиденциальности он оброс таким количеством компромиссов, допущений и архитектурных оговорок, что полагаться на него для чувствительной переписки я бы не советовал никому.
Именно тут обычно начинается путаница. Люди спорят о криптографии, хотя сперва надо честно назвать предмет разговора. Когда пользователь пишет в обычный чат Telegram, пользователь чаще всего не получает end-to-end шифрование. Пользователь получает облачную модель, где сервис может синхронизировать историю между устройствами, хранить данные и выдавать весь привычный комфорт современного мессенджера. Комфорт прекрасен. Для конфиденциальности такой комфорт обычно продают по частям.
Главная проблема сидит не в формуле, а в модели доверия
Самый неудобный факт для поклонников Telegram звучит предельно просто. Обычные облачные чаты в Telegram не являются end-to-end по умолчанию. То есть содержание сообщения защищается на участке между клиентом и сервером, а не по принципу «только отправитель и получатель знают ключ». Для массового пользователя разница огромна, хотя внешне почти незаметна. Сообщение уходит в красивой оболочке, прилетает быстро, синхронизируется на телефоне, планшете и компьютере, и у человека создается ощущение абсолютной приватности. На деле человек просто доверил сервису роль центрального участника разговора.
Мне всегда казалось забавным, как слово «облако» в технологиях работает почти как церковный ладан. Достаточно пустить дым, и публика перестает спрашивать, кто именно держит ключи, где именно лежат данные и кто способен получить доступ в критический момент. Telegram объясняет схему через разделение инфраструктуры по юрисдикциям, распределение частей ключей и прочие меры защиты от прямого давления. Но все такие меры исходят из одной предпосылки. Пользователь должен верить, что оператор сервиса честно реализует обещанную архитектуру, честно запускает нужный код и честно соблюдает собственную модель безопасности.
Вот здесь и появляется первый фундаментальный изъян. Для конфиденциальности нельзя строить систему на вере в добродетель владельца платформы. Нельзя. Вообще. Если сервис в принципе способен получить доступ к содержимому обычных чатов или технически участвует в шифровальном контуре, сервис становится частью доверенной зоны. А раз сервис оказался внутри доверенной зоны, разговор уже не end-to-end. Разговор стал «надеюсь, ребята не подведут».
Многим хватает и такого уровня. Для бытовой переписки про доставку пиццы, мемы, споры о футболе и жалобы на начальство, который все равно однажды узнает про жалобы, подобной модели может быть достаточно. Но разговор о конфиденциальности начинается не там, где «наверное, сойдет», а там, где нельзя ошибиться. Журналист, источник, активист, юрист, врач, корпоративный инсайдер, человек под риском давления или слежки не может позволить себе роскошь путать «шифруется» и «недоступно никому, кроме собеседников».
«Секретные чаты» не спасают общую картину
Защитники Telegram обычно достают из рукава главный козырь. Мол, для параноиков есть секретные чаты. Формально да. В Telegram действительно существует отдельный режим end-to-end для личных диалогов. Но тут приходится смотреть на систему целиком, а не на рекламную карточку в витрине.
Во-первых, секретные чаты не включены по умолчанию. Пользователь должен специально создать отдельный защищенный диалог. Уже один такой шаг ломает базовую логику безопасного продукта. Настоящая приватность не должна жить в боковом меню, как запасное колесо, про которое вспоминают после аварии. Если обычный пользователь должен помнить, где спрятан «правильный» режим, массовый пользователь почти всегда останется в менее защищенном режиме.
Во-вторых, секретные чаты привязаны к устройству. История не живет нормально в облаке, не переносится как обычный чат и не ведет себя как стандартная многоплатформенная переписка. С инженерной точки зрения у такого подхода есть объяснение. С продуктовой точки зрения выходит странная мораль. Самый защищенный режим сделан максимально неудобным для повседневной жизни. Люди поэтому и не пользуются им системно. А если защищенный режим используют редко, сервис в реальности остается не про конфиденциальность, а про иллюзию выбора.
В-третьих, секретные чаты не решают проблему групп, каналов и большей части той социальной среды, ради которой многие вообще открывают Telegram. Группы, публичные каналы и обычные облачные переписки живут по другой модели. Получается довольно циничная конструкция. Платформа строит репутацию на слове «безопасность», а значительная часть реального общения проходит вне полноценного end-to-end. Очень удобно для имиджа. Менее удобно для тех, кто путает бренд с угрозомоделью.
Наконец, сам факт наличия секретных чатов не превращает весь Telegram в конфиденциальный мессенджер. Примерно так же бронежилет в багажнике не делает автомобиль танком. Особенно если водитель обычно ездит без бронежилета, а пассажиры вообще не знают, где лежит защита.
Собственный протокол всегда звучит гордо, пока не начинается аудит
Вторая неприятная тема касается самого MTProto. У Telegram исторически была тяга к собственной криптографической тропинке. Не взять максимально распространенный и многократно пережеванный индустрией путь, а проложить свой. У такого решения есть фанаты. Они любят слова «уникальный», «быстрый», «оптимизированный», «не как у всех». В криптографии фраза «не как у всех» часто должна вызывать не восторг, а нервный тик.
Причина проста. Безопасность протокола зависит не только от красивой идеи, но и от предсказуемости, простоты анализа, качества спецификации и устойчивости реализаций. Когда разработчики выбирают свой протокол вместо более стандартизованных решений, они берут на себя дополнительный долг. Нужно не просто сказать «мы придумали иначе». Нужно годами доказывать, что новое решение не привнесло лишнюю сложность, нестандартные углы атаки и ловушки для implementers.
И вот здесь у MTProto начинается все самое скучное и потому самое важное. Академические работы последних лет показали не черно-белую картину, а типичную для Telegram смесь плюсов и заноз. С одной стороны, у MTProto 2.0 есть формальные исследования, подтверждавшие многие важные свойства безопасности в модели анализа. С другой стороны, те же исследователи находили слабые места в отдельных механизмах, а еще хуже - показывали, что экосистема вокруг MTProto получается хрупкой и трудной для корректной реализации.
Перевожу с академического на человеческий. «Протокол не разваливается при первом взгляде» и «на него можно спокойно положить судьбу конфиденциального общения» - две разные фразы. Между ними пропасть. Если протокол сложно реализовать без ошибок, если третьесторонние клиенты регулярно спотыкаются о тонкие проверки, если вокруг возникают replay-атаки, побочные каналы и другие неприятные сюрпризы, у пользователя появляется очень земной риск. Пользователь зависит не только от задумки авторов, но и от качества конкретной реализации.
А сложный протокол плюс большая экосистема клиентов, библиотек и обвязки - плохая смесь. Любой криптограф скажет примерно одно и то же, только более вежливо. Чем изощреннее конструкция, тем выше шанс, что кто-то напутает в проверках, в очередности обработки, в работе с идентификаторами сообщений или в логике валидации. Криптография не любит артистизм. Криптография любит скучную дисциплину.
Открытый клиент не отменяет закрытую серверную сторону
Еще один популярный аргумент звучит так: «Но у Telegram открыт исходный код приложений». Частично верно. Код клиентов можно изучать, для официальных приложений есть сборки, а документация по протоколу опубликована. Для прозрачности клиентской части шаг полезный. Но конфиденциальность обычных облачных чатов упирается не только в клиент.
Серверную часть Telegram не публикует. И даже если бы публиковал, проблему полного доверия такой жест не снял бы. Проверить код клиента и сверить его со сборкой пользователь может. Проверить, что именно сейчас запущено на серверной стороне у оператора, пользователь не может. Значит в облачной модели снова возвращаемся к исходной точке. Приватность держится не на криптографическом запрете для платформы, а на доверии к заявлению платформы.
На практике такой режим может быть достаточно хорош для защиты от случайного перехвата в сети, от банального локального взлома канала связи, от дешевых массовых угроз. Но «достаточно хорош» и «гарантирует конфиденциальность» - разные категории. Когда на кону чувствительные данные, нужен режим, в котором оператор сервиса исключен из круга доверия не обещанием, а архитектурой.
Именно поэтому меня всегда забавляет пафос вокруг фразы «Telegram нельзя заставить отдать данные так просто». Прекрасно, если не так просто. Вопрос в другом. Система вообще технически устроена так, что оператор имеет значение? Если да, для строгой конфиденциальности модель уже проигрывает системам, где оператор по определению не видит содержимое переписки. Хорошая криптография нужна не затем, чтобы надеяться на благородство посредника, а затем, чтобы посредник был лишним.
Конфиденциальность ломают не только ключи, но и поведение системы
Даже если на минуту забыть про серверную модель, одной криптографией приватность не исчерпывается. У любого мессенджера есть метаданные, сведения об устройствах, контактах, времени взаимодействия, социальной графике, резервных механизмах входа, уведомлениях, экспорте данных и банальной уязвимости конечной точки. Если телефон разблокирован, компьютер заражен, облачная сессия угнана, а пароль от аккаунта слабый, самые красивые схемы в презентации мало кого впечатлят.
Telegram тут не уникален. Любой мессенджер упирается в устройство пользователя. Но вокруг Telegram часто существует вредная мифология тотальной защищенности. У человека возникает ощущение, что сам выбор сервиса автоматически закрывает вопрос конфиденциальности. Не закрывает. Если переписка идет в облачном чате, оператор остается значимой стороной модели. Если переписка идет в секретном чате, начинаются ограничения по устройствам и удобству. Если пользователь ставит сомнительные клиенты, пользуется подозрительными модификациями или не контролирует свои сессии, риск растет еще сильнее.
Проще говоря, MTProto не дает волшебного статуса «вне наблюдения». MTProto дает набор механизмов, часть которых работает в совсем не том режиме, который люди себе воображают. Для бытовой безопасности такой набор может быть приемлем. Для серьезной конфиденциальности мне он кажется слишком компромиссным, слишком завязанным на доверие и слишком легко превращаемым в самообман.
Что я советую вместо веры в бренд
Я бы сформулировал правило без дипломатии. Если задача состоит в том, чтобы спрятать содержание разговора даже от оператора сервиса, Telegram не должен быть базовым выбором для текстовой переписки. Тем более не должен быть таким выбором обычный облачный чат. Telegram удобен как медиаплатформа, как канал распространения контента, как быстрый универсальный комбайн для групп, каналов, ботов и больших сообществ. Но удобный цифровой супермаркет и инструмент строгой конфиденциальности редко живут в одном корпусе.
Для реально чувствительных разговоров я бы смотрел в сторону мессенджеров, где end-to-end является нормой, а не отдельной опцией для особо тревожных. Самый очевидный ориентир - Signal. Не потому, что в мире появился идеальный святой мессенджер. Таких не бывает. А потому, что у Signal модель безопасности проще, честнее и ближе к исходной идее приватной связи. Там не нужно помнить, какой именно вид чата сегодня «настоящий». Там базовая логика продукта не подталкивает пользователя в менее защищенный режим ради удобной синхронизации.
Если же Telegram нужен по социальным или рабочим причинам, подход должен быть трезвым. Каналы, группы, обычные личные чаты, боты и вся публичная активность - не место для чувствительных данных. Секретные чаты можно использовать как отдельный инструмент, но только понимая все ограничения заранее. И главное - не путать наличие слова «шифрование» с наличием гарантированной конфиденциальности.
У любой технологии полезно иногда срывать рекламную упаковку и смотреть на голый механизм. После такой процедуры MTProto перестает выглядеть мистическим амулетом безопасности. Перед глазами остается обычный компромиссный протокол внутри сервиса, который сделал ставку на облачное удобство, сложную собственную конструкцию и выборочную приватность. Для массового рынка ход понятный. Для тех, кому нужна настоящая конфиденциальность, повод задуматься более чем достаточный.
Итог у меня простой. Я не считаю честным называть Telegram надежным инструментом конфиденциального общения только потому, что внутри есть MTProto. Слишком многое зависит не от абстрактной криптографии на слайде, а от того, какой именно чат открыт, кто держит серверную сторону, как устроено доверие, насколько сложно все реализовано и сколько компромиссов зашито в удобство. Когда разговор действительно важен, вера в бренд и красивые слова про шифрование заканчивается очень быстро. А математика, как обычно, не прощает самообмана.