- PVSM.RU - https://www.pvsm.ru -
Telegram [1]— мессенджер для смартфонов позиционирующий себя как безопасный, защищающий не только от злоумышленников, но и от гос. структур вроде АНБ. Для достижения этой безопасности Telegram использует собственную разработку — криптографический протокол MTProto, в надежности которого сомневаются многие, сомневаюсь и я.
После объявления награды [2] за дешифрацию сообщений я попытался разобраться в MTProto. То, что дешифровать некий набор байтов невозможно (по крайней мере очень сложно) понятно сразу, но прослушка трафика мессенджера не единственный вид атаки.
Первой мыслью была возможность MITM-атаки [3] (человек посередине) и я пошел читать api [4] протокола. Где выяснилось, что тут защита достаточно надежная: в момент первого запуска клиента создается авторизационный ключ, создается он непосредственно на клиентском устройстве с помощью протокола обмена ключами Диффи-Хелмана [5], но с небольшим отличием — открытый ключ сервера Telegram уже прошит в коде клиента, что исключает его подмену третьими лицами.
После я установил клиент, ввел номер телефона и больше всего меня удивило то, что мне не нужно вводить паролей, вместо этого на телефон приходит смс с одноразовым пятизначным ключом подтверждения номера. Я взял второй телефон, установил клиент, ввел тот же номер что и в первый раз, так же пришло пятизначное число, которое я ввел на телефоне №2 и успешно авторизовался. Т.е. вот и первая уязвимость. В Telegram накрутили множество алгоритмов, исключили возможность перехвата и подмены трафика, а про банальный пароль забыли. Злоумышленнику не нужно слушать трафик мессенджера, а всего лишь нужно перехватить смс и доступ получен без проблем.
Идем дальше. В Telegram существуют чаты с end-to-end шифрованием, когда ключ известен только собеседникам, на нем и шифруются сообщения. Этот ключ получается все тем же алгоритмом Диффи-Хелмана. Многие пользователи мессенджера требуют дать возможность обмениваться открытыми ключами через NFC и QR-коды, чтобы на 100% исключить возможность MITM-атак, в том числе и со стороны сервера Telegram. Сотрудники Digital Fortress (компания разработавшая мессенджер) утверждают, что такой функционал излишен (что уже подозрительно), а убедиться в том, что никто не подменил публичные ключи сгенерированные собеседником можно сравнив визуализацию ключа (в виде картинки).
И тут есть парочка но:
После логаута одного из собеседников ключ для чата будет перегенерирован, а проверить то, что я имею тот же ключ что и собеседник я могу только посмотрев в его телефон глазами. Зачем мне шифрованный чат если собеседник в метре от меня?
Я заглянул в api защищенных чатов [6]. И мой глаз зацепился вот за этот псевдокод:
key = (pow(g_b, a) mod dh_prime) xor nonce
Это код получения общего ключа по алгоритму DH, почти. Напомню что оригинальный алгоритм DH имеет вид
key = pow(g_b, a) mod dh_prime
Переменные в выражениях:
Вопрос! Зачем такая модификация в алгоритме? Если nonce – одинаковая последовательность для обоих клиентов, то она просто вывернет ключ на изнанку не сделав его безопаснее. А вот если она разная то сервер Telegram может подобрать такую nonce, при которой ключи пользователей совпадут даже при MITM-атаке и никто не будет знать, что его слушают. И даже если nonce совпадает для 2х собеседников сегодня, нет никаких гарантий что nonce будет совпадать завтра, когда в офис Digital Fortress придет АНБ / ФСБ / другая не хорошая организация.
Для разъяснений обратимся к Алисе и Бобу. Атака может проходить так:

Так стоит ли пользоваться? Если Вам нужен простой быстрый чат, Telegram – отличное приложение. Если Вы параноик, то пользоваться не следует однозначно. Потому что даже если я ошибся и написал полную ересь Telegram знает о Вас все: номер телефона, контакты, смс сообщения, местоположение, с кем и когда вы общаетесь. Обратите внимание на список разрешений для приложения. Т.е. мое мнение Telegram – быстрый, удобный, но нисколько не приватный чат.
P.S. Экспертом в криптографии не являюсь, поправьте если я ошибся.
Автор: x7mz
Источник [7]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/informatsionnaya-bezopasnost/51313
Ссылки в тексте:
[1] Telegram : http://telegram.org/
[2] объявления награды: http://habrahabr.ru/post/206476/
[3] MITM-атаки: http://ru.wikipedia.org/wiki/%D0%A7%D0%B5%D0%BB%D0%BE%D0%B2%D0%B5%D0%BA_%D0%BF%D0%BE%D1%81%D0%B5%D1%80%D0%B5%D0%B4%D0%B8%D0%BD%D0%B5
[4] api: http://core.telegram.org/api
[5] Диффи-Хелмана: http://ru.wikipedia.org/wiki/%D0%9F%D1%80%D0%BE%D1%82%D0%BE%D0%BA%D0%BE%D0%BB_%D0%94%D0%B8%D1%84%D1%84%D0%B8_%E2%80%94_%D0%A5%D0%B5%D0%BB%D0%BB%D0%BC%D0%B0%D0%BD%D0%B0
[6] api защищенных чатов: http://core.telegram.org/api/end-to-end
[7] Источник: http://habrahabr.ru/post/206900/
Нажмите здесь для печати.