Безопасность Telegram
Эта статья была написана несколько лет назад, когда блокировка мессенджера Telegram активно обсуждалась сообществом и содержит мои мысли на этот счет. И хотя сегодня эта тема уже почти забыта, я надеюсь что, возможно, это все еще будет кому-то интересно
Ни для кого не секрет, что в последнее время на цифровом театре военных действий бушуют нешуточные страсти. Мы, конечно, имеем в виду одну из наиболее обсуждаемых тем российской современности, а именно блокировку мессенджера Telegram.
Противниками блокировки это подается как противостояние человека и государства, свободы слова и тотального контроля над личностью. Сторонники, наоборот, руководствуются соображениями общественной безопасности и борьбы с криминальными и террористическими структурами.
Для начала представим себе, как именно работает мессенджер Telegram. Можем зайти на их главную страницу и прочитать о том, как они сами себя позиционируют. Одним из главных преимуществ использования именно этого решения будет указан бескомпромиссный упор в безопасность конечного пользователя. Но что именно подразумевается под этим?
Как и в многих других публичных сервисах, ваши данные передаются в зашифрованном виде, но только до центральных серверов, где они лежат во вполне открытом виде и любой админ, если сильно захочет, без труда увидит всю вашу переписку. Сомневаетесь? Тогда подумайте, как реализована функция синхронизации между устройствами. Если данные секретны, то каким образом они попадают на третье устройство? Ведь никаких специальных клиентских ключей вы не предоставляете для расшифровки.
Например, как это сделано в почтовом сервисе ProtonMail, где для работы с сервисом вам необходимо предоставить ключ, который хранится на вашей локальной машине и который используется браузером для расшифровки сообщений в вашем почтовом ящике.
Но не все так просто. Помимо обычных чатов, есть еще и секретные. Здесь переписка действительно ведется только между двумя устройствами и ни о какой синхронизации речь не идет. Эта функция доступна только на мобильных клиентах, причем скриншоты чата заблокированы на уровне приложения, а чат уничтожается через заданное время. С технической стороны поток данных все еще идет через центральные сервера, однако не сохраняется там. Причем само сохранение бессмысленно, поскольку ключами дешифровки обладают только клиенты, а зашифрованный трафик особой ценности не представляет.
Эта схема будет работать, пока клиенты и сервер ее честно реализуют и пока на устройстве нет разного рода программ, без вашего ведома отправляющих снимки вашего экрана к третьим лицам. Так может причину такой не любви к Telegram со стороны правоохранительных органов стоит искать в секретных чатах? Именно в этом, на мой взгляд, кроется корень непонимания основной массы людей. И мы до конца не сможем разобраться с причиной этого непонимания, пока не разберемся, что же такое шифрование вообще и от кого оно призвано защищать ваши данные.
Представим, что некий злоумышленник хочет передать секретное сообщение своим друзьям. Настолько важное, что стоит и заморочиться, и перестраховаться. Является ли Telegram таким уж удачным выбором с точки зрения специалиста по информационной безопасности? Нет, не является. Я утверждаю, что использовать для этого любой из популярных мессенджеров — это наихудший из вариантов, который можно выбрать.
Основной проблемой является использование системы сообщений, где вашу переписку будут искать в первую очередь. И даже если она защищена достаточно хорошо, сам факт ее наличия может вас скомпрометировать. Напомним, что соединение клиентов происходит все еще через центральные сервера и как минимум факт отправки сообщения между двумя пользователями все еще может быть доказан. Поэтому бессмысленно пользоваться электронной почтой, социальными сетями и любыми другими публичными сервисами.
Как же тогда организовать переписку, удовлетворяющую всем требованиям безопасности? В рамках нашего обзора мы сознательно отбросим все нелегальные или спорные методы для того, чтобы показать, что задача может быть решена исключительно в рамках закона. Не понадобится никакого шпионского, хакерского или малодоступного программного оборудования.
Практически все инструменты входят в набор стандартных утилит, поставляемых с любой операционной системой GNU/Linux, и их запрет будет означать запрет компьютеров как таковых.
Всемирная сеть интернет напоминает огромную паутину из серверов, с как правило бегущей на них операционной системой GNU/Linux и правилами маршрутизации пакетов между этими серверами. Большинство этих серверов не доступны для прямого подключения, однако, кроме них, существуют еще миллионы серверов с вполне доступными адресами, обслуживающими всех нас с вами, пропуская через себя огромное количество трафика. И вашу переписку среди всего этого хаоса никто и никогда не будет искать, особенно если она на общем фоне ничем особым не выделяется.
Те, кто желает организовать секретный канал связи, просто купят VPS (виртуальную машину в облаке) у одного из сотен игроков, присутствующих на рынке. Цена вопроса, как не трудно убедится, несколько долларов в месяц. Конечно, анонимно это сделать не получится, и в любом случае эта виртуальная машина будет привязана к вашему платежному средству, а значит и к вашей личности. Тем не менее, большинство хостеров не волнует, что вы запускаете на их железе, пока вы не превысите их базовые ограничения, как, например, количество отданного трафика или соединений на 23 порт.
Хотя такая возможность и существует, ему просто не выгодно тратить те несколько долларов, что заработал на вас на то, чтобы еще и следить за вами.
А даже если он и захочет или будет вынужден это сделать, то сначала должен понять, какого рода программное обеспечение используется конкретно вами и, основываясь на этом знании, создать инфраструктуру слежения. В ручную это не составит труда, но автоматизировать этот процесс будет крайне сложной задачей. По этой же причине сохранять весь трафик, проходящий через ваш сервер, будет экономически не выгодно, только если вы заранее не попадете в поле зрения соответствующих структур, которые захотят это сделать.
Следующим этапом будет создание защищенного канала одним из множества существующих способов.
- Самым простым будет создание защищенного ssh соединения с сервером. Несколько клиентов подключаются по OpenSSH и общаются, например, используя команду wall. Дешево и сердито.
- Поднятие VPN сервера и подключение нескольких клиентов через центральный сервер. Как вариант ищите любую программу-чат для локальных сетей и вперед.
- Простая FreeBSD NetCat внезапно обладает встроенным функционалом для примитивного анонимного чата. Поддерживает шифрование по сертификатам и еще много чего.
Не нужно упоминать, что таким же образом, помимо простых текстовых сообщений, можно передавать любые файлы. Любой из этих способов реализуется за 5-10 минут и не является технически сложным. Сообщения будут выглядеть как простой шифрованный трафик, коего в интернете большинство.
Такой подход называется стеганография — прятать сообщения там, где их и не подумают искать. Само по себе это не гарантирует безопасность переписки, но снижает до нуля вероятность ее обнаружения. К тому же если ваш сервер еще и находится в другой стране, процесс изъятия данных может быть невозможен еще и по другим причинам. И даже если кто-то все же получит доступ к нему, то ваша переписка до этого момента, скорее всего, не будет скомпрометирована, так как она, в отличии от публичных сервисов, нигде локально не сохраняется (это, конечно, зависит от выбранного вами способа коммуникации).
Однако мне могут возразить, что я ищу не там, разведки мира уже давно все продумали и во всех протоколах шифрования уже давно есть дыры для внутреннего пользования. Вполне здравое утверждение, учитывая историю вопроса. Как же быть в этом случае?
Все системы шифрования, которые лежат в основе современной криптографии, обладают некоторым свойством — криптографической стойкостью. Предполагается, что любой шифр можно взломать — это лишь вопрос времени и ресурсов. В идеале необходимо достичь того, чтобы этот процесс был просто не выгоден взломщику, вне зависимости от того, насколько важными являются данные. Либо занимал так долго, что в момент взлома данные уже потеряют свою важность.
Так может цель блокировки — нанести ущерб конкретному мессенджеру Telegram? Если так, то опять мимо. Клиент Telegram из коробки поддерживает прокси сервера и протокол SOCKS5, что дает пользователю возможность работать через внешние сервера с не заблокированными IP адресами. Найти публичный SOCKS5 сервер для короткой сессии не сложно, а поднять такой сервер самому на своей VPS-ке еще проще.
Хотя удар по экосистеме мессенджера все же произойдет, так как для большинства пользователей эти ограничения все равно создадут непреодолимый барьер и его популярность среди населения пострадает.
Итак, подведем итог. Вся шумиха вокруг Telegram — это хайп и не более того. Блокировать его по соображению общественной безопасности — это технически безграмотно и бессмысленно. Любые структуры, жизненно заинтересованные в защищенной переписке, могут организовать свой канал, используя несколько дополняющих друг друга техник, и, что самое интересное, делается это чрезвычайно просто, пока есть хоть какой то доступ в сеть.