Манифест против Telegram

Манифест против Telegram

November 19, 2018

Сквозное шифрование или end-to-end encryption (E2EE) считается панацеей от настойчивых попыток хакеров и силовых ведомств ознакомиться с онлайновой перепиской. Смысл E2EE часто сводится к тому, что ключи хранятся только на устройствах собеседников и не попадают на сервер, но это не совсем так. Давайте посмотрим, как в действительности обстоят дела с E2EE на примере популярного месседжера Telegram.

Конфликт Роскомнадзора с Telegram создал отличную рекламу последнему. Рядовые пользователи теперь считают творение Дурова настоящей занозой в спине спецслужб (или чуть пониже нее), которые ничего не могут сделать с инновационным сервисом.

Однако в криптографии не бывает чудес, и особенно — в прикладной. Многие математически красивые идеи оказываются безнадежно испорчены реализацией, когда удобство и подконтрольность ставят выше безопасности и приватности (а так происходит практически всегда).

Безопасность мессенджера Telegram

С Telegram все покрыто завесой тайны. О протоколе шифрование сообщений MTProto 2.0 есть только частичные сведения. Его внешний аудит не выполнялся, а open source модель Telegram используется в сильно искаженном виде и исключительно с маркетинговыми целями. Ниже я поясню почему так считаю.

Судя по официальному описанию, все недоставленные сообщения временно (мы надеемся) хранятся на серверах Telegram, которые часто разбросаны по миру и объединены в виртуальное облако. Они синхронизируются между собой, чтобы упорядочить и доставить сообщения одному или нескольким (в случае группового чата) собеседникам в определенном порядке, как только они появятся в сети. Поэтому шифрование делится на два этапа: на участках клиент — сервер и сервер — сервер. Это обычная схема, но в ней странно то, что прямое соединение клиентов не используется вообще никогда.

В Telegram трафик передается через сервера даже при открытии секретного чата, для которого целесобразнее было бы сделать P2P-соединение. Напрашивается вывод, что без постоянного использования серверов Telegram связь в этом мессенджере вообще не работает. Другие мессенджеры могут использовать свои серверы только на начальном этапе для сопоставления текущих IP-адресов собеседников и организации между ними прямого соединения. Telegram так не умеет, и это чертовски похоже на MITM by design.

Почему-то все рассуждения о стойкости MTProto 2.0 крутятся вокруг того, что алгоритм DH надежно защищает от перехвата. Алгоритм Диффи — Хеллмана как раз уязвим для атаки MITM. Более того, в случае Telegram, он, вероятно, дополнительно ослаблен на уровне ГПСЧ.

Проблема в том, что клиентское приложение Telegram руководствуется очень невнятной оценкой энтропии. Вместо того,чтобы локально генерировать псевдослучайные числа и отсеивать качественные простые, клиент запрашивает их с сервера. "Что за ГПСЧ используется на сервере?", "Насколько удачные простые числа он генерирует?" и "Нет ли на сервере механизмов избирательной отправки простых чисел с определенными свойствами отдельным клиентам?" — вопросы без ответа. Клиентское приложение лишь выполняет проверку присланного случайного числа, причем упрощенную, поскольку на тщательный тест prime numbers за разумное время у смартфона банально не хватит вычислительных ресурсов.

Другой частый аргумент в пользу безопасности Telegram — открытые исходники. Однако в них нет исходного кода серверной части, а код клиентской обычно неактуален. Репозитории Telegram обновляются с большой задержкой (разве что урезанная веб-версия более-менее живая), и в них всегда лежат только старые версии. Нет даже возможности проверить действительно ли из исходников компилируется то, что сейчас раздается как готовый дистрибутив.

Поэтому говорить про аудит мессенджера фактически бессмысленно. Пока специалисты несколько месяцев копаются в старом коде, выйдет десяток новых версий Telegram, где будут переписаны огромные куски кода. Чтобы сделать уязвимой всю систему шифрования, достаточно замены одного байта, например одного условного перехода.

Хакатоны, которые устраивает Дуров, не заменят аудит, поскольку ничего не доказывают. В их заданиях создается искусственная ситуация, в которой у атакующей стороны есть только одно зашифрованное сообщение. В реальной жизни таких ограничений нет и для атаки на мессенджер есть множество других векторов.





Report Page