(495) 925-0049, ITShop интернет-магазин 229-0436, Учебный Центр 925-0049
  Главная страница Карта сайта Контакты
Поиск
Вход
Регистрация
Рассылки сайта
 
 
 
 
 

Безопасен ли Telegram? Или как я искал закладку в MTProto

Источник: habrahabr

Telegram- мессенджер для смартфонов позиционирующий себя как безопасный, защищающий не только от злоумышленников, но и от гос. структур вроде АНБ. Для достижения этой безопасности Telegram использует собственную разработку - криптографический протокол MTProto, в надежности которого сомневаются многие, сомневаюсь и я.

После объявления награды за дешифрацию сообщений я попытался разобраться в MTProto. То, что дешифровать некий набор байтов невозможно (по крайней мере очень сложно) понятно сразу, но прослушка трафика мессенджера не единственный вид атаки.

Первой мыслью была возможность MITM-атаки(человек посередине) и я пошел читать api протокола. Где выяснилось, что тут защита достаточно надежная: в момент первого запуска клиента создается авторизационный ключ, создается он непосредственно на клиентском устройстве с помощью протокола обмена ключами Диффи-Хелмана, но с небольшим отличием - открытый ключ сервера Telegram уже прошит в коде клиента, что исключает его подмену третьими лицами.

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

Идем дальше. В Telegram существуют чаты с end-to-end шифрованием, когда ключ известен только собеседникам, на нем и шифруются сообщения. Этот ключ получается все тем же алгоритмом Диффи-Хелмана. Многие пользователи мессенджера требуют дать возможность обмениваться открытыми ключами через NFC и QR-коды, чтобы на 100% исключить возможность MITM-атак, в том числе и со стороны сервера Telegram. Сотрудники Digital Fortress (компания разработавшая мессенджер) утверждают, что такой функционал излишен (что уже подозрительно), а убедиться в том, что никто не подменил публичные ключи сгенерированные собеседником можно сравнив визуализацию ключа (в виде картинки). 

И тут есть парочка но:

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

Я заглянул в api защищенных чатов. И мой глаз зацепился вот за этот псевдокод:
key = (pow(g_b, a) mod dh_prime) xor nonce
Это код получения общего ключа по алгоритму DH, почти. Напомню что оригинальный алгоритм DH имеет вид
key = pow(g_b, a) mod dh_prime

Переменные в выражениях:

  • key - секретный ключ используемый для шифрования трафика,
  • g_b - открытый ключ собеседника,
  • a - Ваш закрытый ключ,
  • dh_prime - открытое простое число,
  • nonce - "случайная", полученная от сервера Telegram, последовательность для вычисления ключа.

Вопрос! Зачем такая модификация в алгоритме? Если nonce - одинаковая последовательность для обоих клиентов, то она просто вывернет ключ на изнанку не сделав его безопаснее. А вот если она разная то сервер Telegram может подобрать такую nonce, при которой ключи пользователей совпадут даже при MITM-атаке и никто не будет знать, что его слушают. И даже если nonce совпадает для 2х собеседников сегодня, нет никаких гарантий что nonce будет совпадать завтра, когда в офис Digital Fortress придет АНБ / ФСБ / другая не хорошая организация. 

Для разъяснений обратимся к Алисе и Бобу. Атака может проходить так:

  1. Алиса начинает секретный чат с Бобом и об этом сообщает серверу Telegram. Сервер выдает Алисе открытое простое число (p) и первообразный корень по модулю р (g). Алиса генерирует свой закрытый ключ (a) и на его основе открытый ключ (A) который передает серверу.
  2. Сервер генерирует собственные ключи (t и T) и передает T Бобу под видом открытого ключа Алисы. Вместе с T он передает g, p и случайную последовательность (b_nonce).
  3. Боб аналогично генерирует ключи (b, B) и вычисляет секретный ключ (s). Серверу он возвращает свой открытый ключ (B).
  4. Сервер вычисляет s и на его основе совсем не случайную последовательность (a_nonce), передает T под видом открытого ключа Боба и a_nonce под видом случайной последовательности.
  5. Алиса вычисляет секретный ключ который равен и ключу у Боба и ключу у сервера
  6. Боб смотрит на визуализацию ключа в телефоне Алисы и увидев тот же ключ что и у себя без подозрений пользуется сервисом. А Telegram копит длинные логи без каких-либо препятствий.

image

Так стоит ли пользоваться? Если Вам нужен простой быстрый чат, Telegram - отличное приложение. Если Вы параноик, то пользоваться не следует однозначно. Потому что даже если я ошибся и написал полную ересь Telegram знает о Вас все: номер телефона, контакты, смс сообщения, местоположение, с кем и когда вы общаетесь. Обратите внимание на список разрешений для приложения. Т.е. мое мнение Telegram - быстрый, удобный, но нисколько не приватный чат. 

UPD: История закончилась хорошо. Уязвимость исправлена, документация и приложения обновлены, искатели сокровищ багов мотивированы, что уже дало плоды. Нужно отдать должное разработчикам Telegram-а, моментально отреагировавшим на статью

Ссылки по теме


 Распечатать »
 Правила публикации »
  Написать редактору 
 Рекомендовать » Дата публикации: 27.12.2013 
 

Магазин программного обеспечения   WWW.ITSHOP.RU
Panda Internet Security - ESD версия - на 1 устройство - (лицензия на 1 год)
Dr.Web Security Space, продление лицензии на 1 год, 1 ПК
SmartBear Collaborator - Named User License (Includes 1 Year Maintenance)
ZBrush 4R6 Win Commercial Single License ESD
ESET NOD32 Антивирус на 1 год для 3ПК или продление на 20 месяцев
 
Другие предложения...
 
Курсы обучения   WWW.ITSHOP.RU
 
Другие предложения...
 
Магазин сертификационных экзаменов   WWW.ITSHOP.RU
 
Другие предложения...
 
3D Принтеры | 3D Печать   WWW.ITSHOP.RU
 
Другие предложения...
 
Новости по теме
 
Рассылки Subscribe.ru
Информационные технологии: CASE, RAD, ERP, OLAP
Безопасность компьютерных сетей и защита информации
Программирование на Microsoft Access
CASE-технологии
СУБД Oracle "с нуля"
Программирование на Visual С++
Утиль - лучший бесплатный софт для Windows
 
Статьи по теме
 
Новинки каталога Download
 
Исходники
 
Документация
 
 



    
rambler's top100 Rambler's Top100