Почему Telegram не защищает приватность переписки
Когда в 2011 году за Павлом Дуровым пришел спецназ хотя есть версия, что это инсценировка, он написал своему брату Николаю. И понял, что надежного способа обмениваться сообщениями у него, в общем-то, нет.
Николай Дуров ранее разработал протокол шифрования переписки MTProto. Она легла в основу Telegram. Фактически мессенджер стал попыткой тестирования MTProto на больших нагрузках.
Но даже сейчас, после тысяч багфиксов и улучшений, Telegram не гарантирует безопасность и конфиденциальность. И сквозное шифрование - не панацея.
Как работает сквозное шифрование в Telegram
В Telegram используется два вида шифрования: "клиент-сервер" для обычных облачных, в том числе групповых чатов, и "клиент-клиент" (сквозное, или оконечное шифрование, E2EE, end-to-end encryption).
В общих чертах сквозное шифрование работает так.
У отправителя и получателя есть по паре ключей: один приватный, второй публичный. Приватные ключи создаются и хранятся на устройствах пользователей. На сервер эти ключи не попадают.
Отправитель и получатель вместе генерируют общий секрет или эфемерный ключ. Каждый использует свой приватный ключ и оба публичных. В Telegram для этого взяли за основу алгоритм Диффи-Хеллмана. Общие ключи временные и перегенерируются автоматически, чтобы много похожих сообщений (смайликов, текста с одинаковыми метаданными) не шифровались одним и тем же ключом.
Шифрование и расшифровка выполняется на устройствах пользователей, а не на сервере. Данные остаются зашифрованными до получения.
Доступ к исходному тексту сообщения есть только у отправителя, а после расшифровки - и у получателя. и ни у кого больше.
Схема работы алгоритма Диффи-Хеллмана. Алиса и Боб имеют по паре ключей - публичный и приватный. g и p - публичные ключи, А и В - приватные. mod - деление по модулю (остаток от деления), К - секрет, или эфемерный ключ.
Метод действительно мощный. Но... все не так однозначно.
Главное достоинство алгоритма Диффи-Хеллмана - возможность передавать открытые ключи и сообщения по публичным каналам. Но все ломается, если хакер проведет активную MITM-атаку (атаку "человек посередине") и подменит трафик.
Что же с ключами для облачных чатов? Один ключ у пользователя, второй - в облаке. И теоретически "облачный" ключ можно выдать кому угодно.
Увы, Telegram уже взламывали, причем демонстративно
Пользователь Habr под ником ne555 год назад подробно описал, как взломать Telegram. Он обошел сквозное шифрование мессенджера в Android и отправил разработчикам баг-репорт.
Не получив ответа, ne555 связался с волонтерами, которые пообещали донести информацию до руководства Telegram. Но реакции не последовало.
ne555 использовал смартфоны с Android 7.0, Android 6.0 (root-доступ), Android 4.4.2 (root-доступ), а также ПК с GNU/Linux/Windows (с root-доступом) и программу для восстановления паролей по их хешам John The Ripper (JTR, доступна в публичном репозитории на GitHub). JTR позволил распарсить Telegram local code (pin приложения) за секунды, получить нужные файлы и данные для взлома.
Результат: хакер обошел двухфакторную авторизацию, получил доступ к секретным чатам со сквозным шифрованием, смог читать и отправлять сообщения в них.
При этом реальный владелец аккаунта даже не видел, что его взломали.
А когда хакер попытался с реального аккаунта выйти из всех сеансов, поддельную учетную запись даже не выбросило из сети. Сессионные и графические ключи тоже не менялись.
В общем, хакер успел провести еще несколько экспериментов, пока аккаунт в Telegram не заблокировали и не удалили секретные чаты. Небыстро, прямо скажем.
Пароль любой длины в Telegram тоже можно обойти
Действительно, четырехзначный pin - не самая надежная защита аккаунта. Полноценный пароль надежнее. Но ne555 выяснил, что и он не спасает - существует схема обхода пароля любой длины.
Хакер взломал пароль длиной более 30 символов, настроил на своем устройстве разблокировку отпечатком пальца. А также смог повторно войти в чужой аккаунт и получить доступ ко всем секретным чатам.
Эксперт отметил: в Telegram принудительно интегрирована функция "разблокировка отпечатком пальца". Если на вашем смартфоне нет сканера отпечатка, вы не сможете настроить или отключить ее в Telegram.
Кроме того, хакеру удалось обойти шифрование самого устройства. И получить данные Telegram для доступа к секретным чатам.
Серверы Telegram уже взламывали, причем публично
Еще один Habr-пост - от пользователя Bo0oM, написан в июле 2019 года. Хакер заявил, что взломал сервер Telegram через стандартные уязвимости и искренне удивился, как отвратительно компания относится к безопасности.
Взломщик подчеркнул: в 2019 году весь Telegram использует nginx, а этот конкретный сервер - не самый надежный Apache. Bo0oM отправил некорректный запрос, и сервер слегка приуныл... За описание этого и других найденных в процессе багов получил 2500 долларов от службы безопасности мессенджера.
С одной стороны, в этом случае Bo0oM взломал не весь мессенджер, а лишь конкретный сервер. Но если пойти дальше, можно было бы наворотить гораздо больше - научиться "ронять" серверы, вытаскивать логи падения и т. д.
И вы можете попробовать заработать. Письма с багами можно отправлять на [email protected].
Передаваемые через Telegram файлы уже перехватывали
В июне Symantec рассказал об уязвимости Media File Jacking для Android-версиях Telegram и WhatsApp. Оказалось, что мессенджеры сохраняют изображения в своем внутреннем хранилище, либо во внешнем разделе памяти. Второе опасно.
Если отправлять файлы во внешнее хранилище, то их можно украсть с помощью внешних вредоносных программ. А также заменить или отредактировать.
Так что скриншоты с номерами карт и кошельков таким способом точно передавать не стоит. Как и приватные фото из душа.
Связи пользователей Telegram друг с другом тоже раскрывали
Еще один скандал вокруг Telegram разразился 30 октября 2018 года. Эксперт по кибербезопасности Натаниэль Сачи выяснил, что десктопный Telegram хранит переписку на жестком диске в незашифрованном виде.
Сачи заявил: Telegram использует базу данных SQLite для хранения сообщений. Прочитать ее "в лоб" не получится, но имена и телефонные номера вполне можно проассоциировать друг с другом.
Конечно, это проблема не столько Telegram Desktop, сколько уровня защиты устройства пользователя в целом. Но... Раздолбайство со стороны разработчиков, мягко говоря. Хотя Павел Дуров не считает проблемой такое хранение данных.
У Telegram закрытый код, поэтому объективно проверить его безопасность не получается
Разработчики Telegram заявляют:
Все хранится в зашифрованном виде, чаты хорошо зашифрованы, а ключи шифрования хранятся по частям в датацентрах в юрисдикции разных стран.
Исходный код клиентов для Telegram является открытым. А вот код сервера открывать не рискнули, и это рождает массу вопросов.
Но клиент работает через API и никак не взаимодействуя напрямую с "безопасными датацентрами". Что происходит внутри этого черного ящика, неизвестно.
К тому же эксперты не верят, что ключи шифрования собираются на лету при отправке и приеме каждого сообщения. Это как минимум вызвало бы определенные задержки, а Telegram, надо признать, работает очень быстро.
Telegram для iOS издает компания Telegram LLC, а для Android - Telegram FZ-LLC. Компании основали в США и Великобритании, где действует так называемый Gag order. Он предполагает, в том числе, что правоохранительные органы могут запретить разработчикам разглашать сведения о том, что те предоставляли им информацию. В том числе о серверах, ключах шифрования, пользователях и др.
Telegram объявлял конкурс взлома на $200 тыс., которые нереально выиграть
Братья Дуровы считали MTProto настолько неуязвимым, что в 2013 году даже пообещали награду в 200 тыс. долларов за взлом этого протокола и чтение переписки между ними. В переписке содержался адрес, на который нужно было отправить письмо.
Спустя несколько дней пользователь с ником x7mz, который даже не был экспертом в криптографии, обнаружил уязвимость в протоколе. Она позволяла провести MITM-атаку на секретные чаты. Правда, переписку пользователь не расшифровал, так что ему дали лишь 100 тыс. долларов.
Протокол в дальнейшем доработали и объявили новый конкурс. Модель возможной атаки расширили - например, разрешили выступать в роли сервера MTProto и менять пересылаемые данные.
Но, по мнению экспертов, такие конкурсы - просто дешевая реклама. Они не позволяют доказать безопасности шифрования и вводят пользователей в заблуждение.
Организаторы не дают известный или выбранный открытый текст, шифротекст, возможность вызова повтора и использование других традиционных тестовых методов. Фактически вы можете отправить только одно зашифрованное сообщение - этого явно мало для полноценной атаки.
Присланные отчеты анализируют случайные люди. К тому же 100-200 тыс. долларов - слишком мало, чтобы это было интересно командам опытных криптоаналитиков.
Впрочем, дыры в MTProto находят регулярно (один, два, три). И без финансовой мотивации.
Многие эксперты считают защиту в Telegram просто маркетингом
В Telegram не намерены рассказывать о протоколе MTProto 2.0, да и внешний аудит не проводили ни разу.
Еще один момент: что происходит, когда пользователь Telegram отправляет сообщения, а адресат не в сети? Вероятно, сообщения отправляются на серверы Telegram, объединенные в виртуальное облако. Они синхронизируются между собой. Как только адресат появится в сети, он получит сообщения.
Таким образом, трафик в любом случае проходит через сервер. Хотя многие эксперты считают, что логичнее было бы установить соединение "клиент - клиент" - например, пиринговое (P2P).
В результате получается, что связь в Telegram вообще не работает без постоянного использования серверов. В других мессенджерах есть более элегантные и безопасные решения - например, когда серверы задействуют только для сравнения текущих IP-адресов собеседников и организации прямого соединения между ними.
Также специалисты считают, что алгоритм Диффи-Хеллмана в Telegram специально ослаблен на уровне генератора псевдослучайных чисел. Эти числа не генерируются на вашем смартфоне или ПК - приложение запрашивает их с сервера. Как там организована генерация, знают только разработчики.
Открытый исходный код клиента - еще один большой вопрос. Более-менее регулярно обновляется только репозиторий десктопной версии, да и то она урезанная. Из чего собираются готовые дистрибутивы, оперативно проверить нельзя.
Привязка к телефону - последний гвоздь в крышку гроба
Учетные записи в Telegram привязаны к номерам телефона. Это сказывается и на анонимности, и на безопасности.
Коды подтверждения приходят в SMS. Давно всем известная дыра в протоколе сотовой связи позволяет перехватывать и подменять их.
Перехватив код, можно получить доступ к переписке в обычных чатах. Даже не придется ломать MTProto. Сервер автоматически сменит ключ и дешифрует недоставленные сообщения. И это как минимум!
Еще одна проблема - push-уведомления. Именно они оповещают о новых входящих без запуска мессенджера. Но сервер push-уведомлений - это фактически разрешенная вами атака "человека посередине". И такая ситуация во всех популярных мессенджерах.
Что делать обычному пользователю Telegram?
Не вести приватных бесед в мессенджерах. Не передавать через них информацию, которая может быть использована против вас.
Альтернатива Telegram - например, Signal. Его рекомендовали основатель WikiLeaks Джулиан Ассандж и экс-сотрудник АНБ и ЦР Эдвард Сноуден.
Но и Signal не раз успешно атаковали. Хотя это сложнее, чем взломать Telegram.
Другой вариант - мессенджеры с поддержкой OTR: Adium, Conversations Legacy, Xabber, Pidgin (с плагином), Conversations и др. И личные встречи в чистом поле без свидетелей.