- PVSM.RU - https://www.pvsm.ru -

Безопасен ли Telegram? v2

С момента самого его появления Telegram не критиковал только ленивый. Этим с одинаковым энтузиазмом занимались резиденты Reddit, Hacker News, etc.

В порыве урезонить самых яростных критиков был объявлен конкурс с главным призом в 200 000$ для первого из тех кому удастся взломать протокол, и прочесть содержимое секретного чата между двумя вымышленными пользователями.
Конкурс, как, судя по всему, и рассчитывали устроители, привлек к себе внимание, однако вызвал шквал [1] еще большей критики в силу ограниченности потенциальных исследователей в выборе инструментов для анализа: доступно было лишь зашифрованное содержимое переписки, без возможности влиять на ее содержимое или вступать в какое-либо взаимодействие с ее авторами (исключая таким образом возможности для MITM, replay-атак, etc.).

В ответ, некоторые [2] даже предлагали встречный челлендж [3] на аналогичных условиях, с заведомо уязвимым протоколом, указывая на нереалистичность предложенного сценария.

Спустя год, учтя критику, Telegram объявил о новом контесте [4] с призовым фондом в 300 000$ за взлом протокола и дополнительным в 100 000$ за успешно проведенную атаку, итогом которой станет прием ботом зашифрованного сообщения от атакующего.

На этот раз любой исследователь может выступать не только в пассивной роли наблюдателя, но и имеет возможность для проведения активных аттак (MITM, CPA, tampering, etc.).

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

Apple’s 'goto fail' (CVE-2014-1266 [5])
OpenSSL’s 'Heartbleed' (CVE-2014-0160 [6]).
Bash's 'ShellShock' (CVE-2014-6271 [7])

И это лишь небольшой список тех, что обрели существенный резонанс в силу критичности и охвата.

Памятуя о том, что программисты ошибаются, чаще чем математики*, я решил начать исследование не с протокола, а с клиентов, реализующих этот самый протокол. Начать было решено с консольного клиента (https://github.com/vysheng/tg).

Безопасен ли Telegram? v2 - 1

Каково же было удивление, когда обнаружилось, что все данные «секретного» чата (включая _приватный_ ключ) хранятся на диске в незашифрованном виде:

Безопасен ли Telegram? v2 - 2

Безопасен ли Telegram? v2 - 3

И считываются двумя функциями `read_secret_chat_file`

Безопасен ли Telegram? v2 - 4

и `read_secret_chat`:

Безопасен ли Telegram? v2 - 5

Что легко подтверждается отладчиком:

Безопасен ли Telegram? v2 - 6

Что это означает для конечного пользователя?

Поскольку протокол Telegram не гарантирует forward secrecy (PFS [8]), это означает, что, злоумышленник, долгое время находившийся в режиме пассивного прослушивания (eavesdropping), получив контроль над вашим устройством, помимо содержимого всех секретных чатов (открытых на данном устройстве), получит также возможность продолжить от вашего имени любой из них, не являющийся к тому моменту принудительно завершенным.

Насколько надежным выглядит протокол с такой перспективы?

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

Stay tuned

* Что, конечно же, неправда.

Автор: f0rbidik

Источник [9]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/informatsionnaya-bezopasnost/76030

Ссылки в тексте:

[1] шквал: https://news.ycombinator.com/item?id=6931457

[2] некоторые: http://twitter.com/moxie

[3] челлендж: http://www.thoughtcrime.org/blog/telegram-crypto-challenge/

[4] контесте: https://core.telegram.org/contest300K

[5] CVE-2014-1266: http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2014-1266

[6] CVE-2014-0160: http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2014-0160

[7] CVE-2014-6271: http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2014-6271

[8] PFS: http://en.wikipedia.org/wiki/Forward_secrecy

[9] Источник: http://habrahabr.ru/post/244735/