(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
EMS SQL Management Studio for InterBase/Firebird (Business) + 1 Year Maintenance
Business Studio 4.2 Professional. Персональная лицензия. Лицензия на 1 месяц.
SAP Crystal Server 2011 WIN INTL 5 CAL License
CAD Import .NET Professional пользовательская
VMware Workstation 14 Player for Linux and Windows, ESD
 
Другие предложения...
 
Курсы обучения   WWW.ITSHOP.RU
 
Другие предложения...
 
Магазин сертификационных экзаменов   WWW.ITSHOP.RU
 
Другие предложения...
 
3D Принтеры | 3D Печать   WWW.ITSHOP.RU
 
Другие предложения...
 
Новости по теме
 
Рассылки Subscribe.ru
Информационные технологии: CASE, RAD, ERP, OLAP
Безопасность компьютерных сетей и защита информации
CASE-технологии
Программирование на Microsoft Access
OS Linux для начинающих. Новости + статьи + обзоры + ссылки
СУБД Oracle "с нуля"
Программирование на Visual Basic/Visual Studio и ASP/ASP.NET
 
Статьи по теме
 
Новинки каталога Download
 
Исходники
 
Документация
 
 



    
rambler's top100 Rambler's Top100