Шифруйся грамотно! Изучаем перспективные мессенджеры для приватной переписки.

Friend

Professional
Messages
2,653
Reaction score
849
Points
113
Содержание статьи
  • Шифрование в мессенджерах
  • Сквозное шифрование
  • Диффи, Хеллман! Дайте три!
  • Наследие Enigma
  • Проблема групповых чатов
  • Странности Telegram
  • Тысяча и одна уязвимость
  • XMPP
  • Выводы
Сквозное шифрование, или end-to-end encryption (E2EE), считается панацеей от настойчивых попыток хакеров и силовых ведомств ознакомиться с онлайновой перепиской. Смысл E2EE часто сводится к тому, что ключи хранятся только на устройствах собеседников и не попадают на сервер… но это не совсем так. Давай посмотрим, как в действительности обстоят дела с E2EE, на примере популярных мессенджеров.

Шифрование в мессенджерах

Написать эту статью меня подтолкнуло исследование Obstacles to the Adoption of Secure Communication Tools (PDF). Как выяснили его авторы, «подавляющее большинство участников опроса не понимают основную концепцию сквозного шифрования». Проще говоря, люди обычно выбирают мессенджер сердцем, а не мозгом.

Начнем с того, что E2EE имеет свои особенности в каждом мессенджере. В Signal оно почти образцовое. В WhatsApp формально такое же, как в Signal, за исключением одного очень важного момента: смена основного ключа абонента WhatsApp не блокирует отправку ему сообщений. Максимум можно включить бесполезное уведомление (которое отключено в дефолтных настройках). В Viber сквозное шифрование неактивно по умолчанию, да и появилось только в шестой версии. В Telegram E2EE также используется только в секретных чатах, причем реализованы они довольно странно.

Конфликт Роскомнадзора с Telegram вообще создал отличную рекламу последнему. Рядовые пользователи теперь считают творение Дурова настоящей занозой в спине спецслужб (или чуть пониже ее), которые ничего не могут сделать с пуленепробиваемым инновационным сервисом. Поклонники Telegram сравнивают его с Signal и утверждают о превосходстве первого.

Однако в криптографии не бывает чудес, и особенно — в прикладной. Многие математически красивые идеи оказываются безнадежно испорчены реализацией, когда удобство и подконтрольность ставят выше безопасности и приватности (а так происходит практически всегда).

Исходно в мессенджерах применялся протокол OTR (Off-the-Record). Он использует симметричное шифрование AES в режиме CTR, протокол обмена ключами DH и хеш-функцию SHA-1. Схема AES-CTR обеспечивает так называемое «спорное» (в хорошем смысле) шифрование и возможность отрицания авторства текста, если его перехватят. Всегда можно сослаться на то, что перехвативший трафик сам изменил шифротекст так, чтобы он соответствовал другому варианту расшифровки той же длины. Например, вместо «сходи за хлебом» получилось «отрави королеву» — технически это возможно, и такое свойство специально заложено в алгоритм.

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

Главный недостаток OTR заключается в том, что после отправки нового ключа требуется дождаться подтверждения от собеседника. Если он офлайн, то связь будет временно невозможна. Одним из выходов стал алгоритм Double Ratchet (DR), разработанный пять лет назад Тревором Перрином и Мокси Марлинспайком в Open Whisper Systems. Сегодня DR используется в Signal, WhatsApp, Viber и многих других мессенджерах, поддерживающих сквозное шифрование по умолчанию или как отдельную опцию (секретные чаты).

Шифруйся грамотно! Почему мессенджеры не защитят тайну твоей переписки, изображение №2

asvOaAQLmn0.jpg

Упрощенная схема алгоритма Double Ratchet (источник: signal.org). Алиса и Боб начинают сессию, обмениваясь публичными ключами

Сквозное шифрование

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

Начало схемы ты наверняка знаешь, поскольку оно стандартно для всех систем асимметричного шифрования, — генерируется пара ключей. Это необходимо потому, что криптосистемы с одним ключом (вроде AES) использовать в переписке в чистом виде слишком трудно. С ними пришлось бы как-то организовывать защищенный канал для передачи ключа (например, встречаться лично), а потом делать это снова при каждой его смене.

Тут же все как в привычном PGP: есть два собеседника (Алиса и Боб), каждый из которых генерирует свою пару ключей. Затем они обмениваются публичными ключами, сохраняя в тайне парные им секретные. Публичные ключи передаются по открытому каналу (на то они и публичные, пусть перехватывают на здоровье) и служат для двух целей: они позволяют зашифровать сообщение и проверить его подпись. Соответственно, секретные ключи используются для расшифровки и формирования подписи.

Термин «сообщение» используется здесь в широком смысле. Сообщением может быть текст, медиафайл или служебные метаданные, которыми мессенджер обменивается с сервером. Часть этих данных содержит временные метки, состояние клиентского приложения и новые ключи.
Такая криптосистема кое-как работает в электронной почте, поскольку это сервис для доставки отдельных зашифрованных сообщений произвольной длины. Пользуясь им, собеседники не обязаны одновременно быть онлайн. Все сообщения накапливаются на сервере и скачиваются с него по требованию после того, как пользователь успешно пройдет авторизацию. Расшифровка происходит локально при помощи секретных ключей, которые никуда не передаются. Почта с PGP популярна, но работает далеко не идеально. Почему? См. статью «Алиса и Боб в стране PGP».

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

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

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

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

Диффи, Хеллман! Дайте три!

Из открытой документации известно, что в Telegram аутентифицированное распределение ключей обеспечивает классический протокол Диффи — Хеллмана (DH). Он создает мост между асимметричным (RSA) и симметричным (AES) шифрованием, давая возможность энному количеству собеседников вести зашифрованную переписку, передав только публичные ключи по открытому каналу. Для этого в нем генерируются сессионные ключи, представляющие собой общий секрет или общий эфемерный ключ. Он вычисляется на основе секретного ключа одного собеседника и публичного ключа другого. Эфемерные ключи аутентифицируются долговременными открытыми ключами.

В DH канал передачи может быть не защищен от прослушивания (пассивного наблюдения), но обязан иметь защиту от атаки подмены. Если атакующая сторона может подменить трафик (выполнить активную атаку MITM), то вся схема летит к черту.
Поэтому для своего мессенджера Signal компания Open Whisper Systems использует метод тройного преобразования Диффи — Хеллмана X3DH c Curve25519 (эллиптическая кривая Бернстайна для быстрого DH) или X448. В качестве других криптографических примитивов в X3DH используется HMAC-SHA-256 и AES-256.

Протокол Extended Triple Diffie — Hellman устанавливает общий секретный ключ между двумя сторонами, которые взаимно аутентифицируют друг друга на основе открытых ключей. Дополнительно ключи сверяются сразу после установки сессии и перед началом передачи сообщений. Это сводит к минимуму риск MITM-атак, делая их очень сложными.

В X3DH используются четыре типа ключей, три из которых постоянно меняются:

IK (identity keys). Секретные ключи, которые создаются один раз и служат основой для формирования всех остальных;
EK (ephemeral key). Эфемерный ключ, который нужен для проверки личности собеседника (без разглашения истинной);
SPk (signed public key, signed proof of knowledge) — по сути, это эфемерный ключ, подписанный секретным. Обычно в мессенджерах он меняется с частотой от одного дня до недели. Иногда вместо времени жизни SPk задают число сообщений, после которого он меняется;
OPK (one-time public key) — одноразовый эфемерный ключ. Он создается отправителем перед установкой сеанса связи и удаляется сразу после успешного «рукопожатия» (handshake).

Наследие Enigma

Смена вспомогательных ключей в X3DH происходит по алгоритму Double Ratchet. Он пришел на смену OTR и ввел понятие цепочки, или пула, ключей. На случай, если собеседник будет офлайн, предусмотрено создание пула OPK. Несколько разовых эфемерных ключей заранее загружаются на сервер и расходуются по мере общения. Это позволяет серверу принимать зашифрованные сообщения, аутентифицируя их отправителя по новой паре ключей, даже когда получатель не в сети. Если пул OPK исчерпан, то сервер использует запасной EK.

Название «двойной храповик» — отсылка к устройству шифровальной машины Enigma с зубчатыми колесиками, которые исключали обратное движение и повторное использование прежних значений. Цифровая аналогия в том, что DR используется для генерирования новых эфемерных ключей, которыми шифруется следующее сообщение (или небольшая порция сообщений). При этом эфемерные ключи гарантированно отличаются, не повторяют предыдущие и не могут быть предсказаны за разумное время атаки.

На X3DH основан протокол TextSecure, который позже был переименован в Signal. В чистом или слегка модифицированном виде протокол Signal используется в одноименном мессенджере, а также в WhatsApp, Viber и других. Разработчики могут давать протоколам собственные названия, но по сути это все тот же X3DH с варьирующимся набором хеш-функций, ГПСЧ и иных криптографических примитивов.

Проблема групповых чатов

Организация групповых чатов в мессенджерах подробно разобрана в свежей статье «More is Less: On the End-to-End Security of Group Chats in Signal, WhatsApp, and Threema» (PDF). Приведу основные выводы из нее.

Наш систематический анализ выявил, что целостность коммуникаций (представленная целостностью всех сообщений) и групповая принадлежность (определяемая возможностью членов группы управлять ими) не имеют end-to-end-защиты. Кроме того, мы показали, что обратная секретность (ключевое свойство безопасности) не сохраняется при использовании протокола Signal для групповых чатов.
Пояснение: краеугольный камень сквозного шифрования — аутентифицированное распределение ключей по классическому или усиленному протоколу DH. Оно работает только для двух собеседников, формирующих общий секрет. Ожидаемо, что в мессенджерах DH не используется в групповых чатах, а структура обмена сообщениями в них лишена основных криптографических свойств.

seXMXYG3aNY.jpg

Шифрование в групповых чатах. A — отправитель, B — получатель, G — группа пользователей

Авторы показывают, какие манипуляции может выполнять контролируемый злоумышленником сервер в групповых чатах из-за отсутствия в них E2EE. Свои исследования они проводили на примере Signal и WhatsApp, но вряд ли стоит ожидать, что у других мессенджеров эта проблема имеет какое-то изящное решение.

Странности Telegram

С Telegram все покрыто завесой тайны. О протоколе MTProto 2.0 есть только частичные сведения. Его внешний аудит не выполнялся, а опенсорсная модель Telegram используется в сильно искаженном виде и исключительно с маркетинговыми целями. Ниже я поясню, почему так считаю.

Судя по официальному описанию, все недоставленные сообщения временно (мы надеемся) хранятся на серверах Telegram, которые часто разбросаны по миру и объединены в виртуальное облако. Они синхронизируются между собой, чтобы упорядочить и доставить сообщения одному или нескольким (в случае группового чата) собеседникам в определенном порядке, как только они появятся в сети. Поэтому шифрование делится на два этапа: на участках клиент — сервер и сервер — сервер. Это обычная схема, но в ней странно то, что прямое соединение клиентов не используется вообще никогда.

В Telegram трафик передается через серверы даже при открытии секретного чата, для которого логичнее было бы сделать P2P-соединение. Напрашивается вывод, что без постоянного использования серверов Telegram связь в этом мессенджере вообще не работает. Другие мессенджеры могут использовать свои серверы только на начальном этапе — для сопоставления текущих IP-адресов собеседников и организации между ними прямого соединения. Telegram так не умеет, и это чертовски похоже на MITM by design.

Почему-то все рассуждения о стойкости MTProto 2.0 крутятся вокруг того, что алгоритм DH надежно защищает от перехвата. Это не так. Алгоритм Диффи — Хеллмана как раз уязвим для атаки MITM. Более того, в случае Telegram он, вероятно, дополнительно ослаблен на уровне ГПСЧ.

Проблема в том, что клиентское приложение Telegram руководствуется очень невнятной оценкой энтропии. Вместо того чтобы локально генерировать псевдослучайные числа и отсеивать качественные простые, клиент запрашивает их с сервера. Что за ГПСЧ используется на сервере, насколько удачные простые числа он генерирует и нет ли на сервере механизмов избирательной отправки простых чисел с определенными свойствами отдельным клиентам — вопросы без ответа. Клиентское приложение лишь выполняет проверку присланного случайного числа, причем упрощенную, поскольку на тщательный тест prime numbers за разумное время у смартфона банально не хватит вычислительных ресурсов.

Другой частый аргумент в пользу безопасности Telegram — открытые исходники. Однако в них нет исходного кода серверной части, а код клиентской обычно неактуален. Репозитории Telegram обновляются с большой задержкой (разве что урезанная веб-версия более-менее живая), и в них всегда лежат только старые версии. Нет даже возможности проверить, действительно ли из исходников компилируется то, что сейчас раздается как готовый дистрибутив.

Поэтому говорить про аудит мессенджера фактически бессмысленно. Пока специалисты несколько месяцев копаются в старом коде, выйдет десяток новых версий Telegram, где будут переписаны огромные куски кода. Чтобы сделать уязвимой всю систему шифрования, достаточно замены одного байта — например, одного условного перехода.

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

Тысяча и одна уязвимость

Signal — один из немногих мессенджеров, чей протокол проходил внешний аудит (PDF). Отчет о его результатах очень объемный, поэтому процитирую главные выводы в своем переводе.

Наш анализ показывает, что [протокол] Signal удовлетворяет стандартным криптографическим предположениям и свойствам безопасности. Мы не обнаружили серьезных недостатков в его дизайне, что очень обнадеживает. При реальном использовании Signal остаются неопределенности. Поэтому невозможно сказать, всегда ли [приложение] Signal достигает заявленных целей.
Нужно осознавать, что анализ протокола передачи сообщений — важный этап аудита, но далеко не единственная составляющая безопасности. Любой мессенджер работает в реальной и очень уязвимой среде. Обычно он запускается на не самой свежей версии Android, параллельно с сотней левых приложений (часть из которых наверняка злоупотребляют разрешениями или даже содержат троянские закладки), а сам аккаунт привязан к номеру мобильного телефона.

Огромная брешь заключается в том, что коды подтверждения приходят в SMS. Их можно перехватить через известную уязвимость в протоколе сотовой связи SS7. Так атакующий получит доступ ко всей переписке, не зная ключей шифрования и даже не пытаясь взломать Signal/Proteus/MTProto (или иной секьюрный протокол). Сервер мессенджера сам сменит ключ и услужливо дешифрует последнюю переписку (как минимум, недоставленные сообщения). Даже твои стикерпаки восстановит. Главное же — удобство, верно?

Еще одна зияющая дыра в модели безопасности — push-уведомления. Без них ты не узнаешь, что тебе пришло сообщение, пока вручную не запустишь мессенджер. С ними ты превращаешь сервер push-уведомлений в легализованного «человека посередине». Например, чтобы в iMessage работали уведомления, он отправляет ключи шифрования на серверы Apple. Уже они выполняют аутентификацию пользователей и (как минимум) дешифровку заголовков сообщений. Восстанови учетку Apple на другом устройстве, и ты получишь все как было — вплоть до переписки и паролей от Wi-Fi. Почти такая же ситуация с серверами Google и Microsoft. Или ты еще веришь в сквозное шифрование с привязкой к номеру мобильного и основному аккаунту на смартфоне?

Проблема небезопасного управления ключами и большой поверхности атаки касается вообще всех мессенджеров. WhatsApp, Viber и многие другие позволяют создавать копии переписки (в том числе облачные) и не шифруют метаданные (а иногда сам факт разговора важнее его содержания). У Signal дела обстоят чуть лучше, но и его я не считаю идеальным мессенджером по целому ряду причин:

Во-первых, Signal также использует гугловский сервис push-уведомлений. Поэтому на смартфоне без сервисов Google (например, все китайские модели для внутреннего рынка без GApps) он просто не работает.
Во-вторых, для голосового общения в Signal используется закрытый сервер RedPhone.
В-третьих, Signal (как и многие другие мессенджеры) позволяет открыть параллельную сессию на другом устройстве, просто отсканировав QR-код.
В-четвертых, на HITBSecConf2017 рассказали (PDF) про ряд концептуальных проблем Signal и продемонстрировали успешную атаку на него.

XMPP

Как видишь, сторонним и тем более проприетарным мессенджерам доверять сложно, даже если их рекомендовали Сноуден, Ассанж и EFF. Поэтому некоторые организуют общение через свой мессенджер — с опенсорсом и плагинами. Для простой переписки годится плагин OTR, но он не поддерживает групповые чаты. Есть родственные протоколы mpOTR и GOTR, в которых добавлена эта функция.

Так или иначе, для коллективного общения удобнее использовать открытый протокол XMPP (Extensible Messaging and Presence Protocol), который ранее назывался Jabber. XMPP переводится как «расширяемый протокол обмена сообщениями и информацией о присутствии», это очень емкое название. Открытость означает полную доступность исходных кодов. Ты можешь поднять свой сервер XMPP, ни от кого не зависеть и ничего за это не платить. Также есть уйма готовых серверов и клиентов на любой вкус — например, десктопный Pidgin и Xabber для Android.

Расширяемость подразумевает возможность передачи не только текста, но и данных другого типа, а также добавление разных функций и схем шифрования. Например, по XMPP легко передать голосовые сообщения, видео и файлы, при желании зашифровав их средствами TLS или PGP. Не так давно на базе XMPP был создан протокол расширения OMEMO, в котором используется тот же DR от Open Whisper Systems, что и в Signal и WhatsApp, но без прочих недостатков последних.

Выводы

В современных мессенджерах заявлена поддержка сквозного шифрования, но часто оказывается, что она реализована со странностями. К тому же в их коде много других дыр, которые были оставлены случайно либо намеренно. Последнее куда вероятнее, если учесть, сколько денег и труда профессионалов было вложено в их разработку. Я стараюсь соблюдать баланс между комфортом и привычным наслаждением паранойей. Использую разные мессенджеры (какие удобнее моим собеседникам), но никогда не веду через них действительно приватных бесед. Для этого есть множество опенсорсных альтернатив. Помимо Xabber, пользователям Android я бы рекомендовал присмотреться к Conversations — свободному XMPP-клиенту с поддержкой OTR, OMEMO, openPGP и SOCKS5.

WWW

Документация схемы шифрования в Signal
Документация схемы шифрования в Telegram
Рекомендации EFF по защите от слежки
 
Шифруйтесь грамотно! Выбираем мессенджер для безопасной и приватной переписки.

Парадоксально, но факт: при всем разнообразии мессенджеров выбирать их обычно не приходится — люди просто пользуются тем же, чем их друзья и знакомые. Но что, если секретность действительно важна? В этой статье мы пройдемся по списку современных мессенджеров и посмотрим, какие гарантии защиты есть у каждого из них.

Недавно на «Хакере» был опрос «Какой мессенджер ты считаешь самым надежным для хакера?», и самый популярный ответ (Telegram) серьезно настораживал. Насколько все далеко зашло, если даже средний читатель «Хакера» уже потерял связь с реальностью после атаки маркетинг‑хедкраба ?

Мы составили список мессенджеров, чтобы посмотреть, как у каждого из них обстоят дела с безопасностью. В подборку пошли как популярные, так и перспективные в плане безопасности программы. Предупреждаем, что углубляться в техническую сторону мы будем настолько, насколько это необходимо для среднего пользователя, не дальше.
Во многом мы повторили путь авторов серии статей Electronic Frontier Foundation под названием Secure Messaging Scorecard, но выбрали другие критерии — на наш взгляд, более важные.

КРИТЕРИИ

FOSS
Распространяется ли исходный код мессенджера на условиях одной из свободных лицензий? Если да, то ведется ли разработка открытым методом? Насколько тесно разработчики взаимодействуют с сообществом? Принимают ли pull request’ы? Все это важно учитывать при выборе.

Степень централизации
Здесь возможен один из трех вариантов:
⚫ централизованный — требует сервера, возможно заблокировать. Пример: VK, Telegram, Facebook;
⚫ федеративный — сеть из серверов, которые общаются друг с другом. Каноничные примеры: электронная почта, Jabber (XMPP), Riot Matrix;
⚫ децентрализованный (имеется в виду P2P) — каждый клиент является одновременно и сервером.

Возможность анонимной регистрации и использования
Для некоторых сервисов телефон может понадобиться только для защиты от спама при регистрации, соответственно, очень просто использовать сервисы аренды номеров для SMS.
В остальных случаях мессенджер плотно привязан к телефону. Это плохо тем, что если не включена двухфакторная аутентификация, то при получении доступа к этому номеру можно зайти в аккаунт и слить все данные. Но даже если двухфакторка включена, все равно остается возможность удалить все данные с аккаунта. Ну и конечно, это, считай, регистрация по паспорту (используем реалии РФ, других не завезли).
Но не все так плохо. Есть мессенджеры, которые позволяют регистрироваться с использованием почтового ящика или учетной записи в социальной сети. Есть и такие, где учетную запись можно создать в самом мессенджере без привязки к чему‑то.

Наличие End-to-End Encryption (E2EE)
Некоторые мессенджеры имеют такую функцию по умолчанию, в других ее можно включить, но есть и те, где сквозного шифрования просто нет.

Синхронизация E2EE-чатов
Опять же эта функция пока что встречается не так часто, как хотелось бы. Ее наличие сильно упрощает жизнь.

Уведомление о необходимости проверки отпечатков E2EE
При старте E2EE-чатов некоторые мессенджеры предлагают проверить отпечатки собеседников, другие не предлагают это открыто. Но не все мессенджеры имеют функцию проверки отпечатков.

Запрет делать скриншот секретного чата
Не самая полезная функция, потому что для обхода запрета достаточно, например, иметь под рукой второй телефон.

Групповые E2EE-чаты
Групповые E2EE-чаты обычно не такая уж необходимая функция, но весьма удобная. Правило «больше двух — говори вслух» стоит оставить для детей.

Уведомление о необходимости проверки отпечатков E2EE в групповых чатах
При добавлении нового собеседника, с которым не сверены отпечатки, в секретный групповой чат не все мессенджеры предлагают проверить его отпечатки. Из‑за такого упущения теряется смысл секретных чатов.

Защита социального графа
Некоторые мессенджеры собирают информацию о контактах пользователя и другие данные, например кому звонил пользователь, как долго разговаривал. На эту тему есть интересная заметка.

WWW
Мы выбрали лишь часть критериев, которые могут сыграть роль при выборе мессенджера. Существуют и другие, но не всегда они связаны с безопасностью. Группа ученых из европейских университетов неплохо разложила все по полочкам в работе Obstacles to the Adoption of Secure Communication Tools (PDF). Также всегда полезно знакомиться с результатами независимого аудита, если они есть. Например, в случае с Signal такой аудит проводился (PDF).

TELEGRAM
Лицензия: формально — GPLv3. Однако важная часть разработки закрыта. Если взглянуть на репозитории, то видно, что в последнее время какое‑то движение наблюдалось только в вебовой версии. Увы, в таком виде это скорее иллюзия открытости
Степень централизации: централизованный
Возможность анонимной регистрации и работы: нет
Наличие E2EE: реализованы, но как дополнение. По умолчанию чаты не шифруются
Синхронизация E2EE-чатов: нет. Секретный чат можно использовать только с одного устройства, с другого доступа к нему уже не будет
Уведомление о проверке отпечатков E2EE: нет. Пользователи могут сами зайти в настройки, чтобы сравнить отпечатки
Запрет на скриншоты секретных чатов: есть, но работает не на всех устройствах
Групповые чаты E2EE: нет
Защита социального графа: нет

Мессенджер, созданный командой Павла Дурова, построен на технологии шифрования переписки MTProto. На данный момент частично заблокирован на территории России, но эта блокировка — отдельная тема для разговора.
Мессенджер неоднозначный. Вокруг него много шума, но оправдан ли он? Доступа к исходникам нет, чаты по умолчанию не шифруются, нет защиты социального графа (все твои контакты хранятся на серверах Telegram), нет групповых E2EE-чатов, E2EE-чаты не поддерживаются в настольной версии программы, только в мобильной, мессенджер централизованный, сообщения хранятся на сервере (и они, как уже было отмечено, не зашифрованы), и при всем этом отсутствует возможность анонимной регистрации.
Если ты хочешь использовать Telegram, то для защиты переписки не забывай создавать секретные чаты. В мобильной версии для этого нужно выбрать команду New Secret Chat. Из настольных версий секретные чаты поддерживают только некоторые (например, один из двух клиентов для macOS).
В секретном чате сообщения шифруются и не хранятся на серверах мессенджера. Также нельзя сделать скриншот секретного чата, но ничто не мешает сфотографировать такой чат с экрана.

SIGNAL
Лицензия: AGPLv3
Степень централизации: централизованный
Возможность анонимной регистрации и работы: нет. Кроме номера телефона, других вариантов нет
Наличие E2EE: есть
Синхронизация E2EE-чатов: есть
Уведомление о проверке отпечатков E2EE: нет. Пользователям предлагается сосканировать QR-коды друг у друга или сравнить отпечатки
Запрет на скриншоты секретных чатов: можно включить или выключить
Групповые чаты E2EE: есть
Уведомление о необходимости проверки отпечатков E2EE в групповых чатах: нет
Защита социального графа: есть

Мессенджер Signal разработан американским стартапом Open Whisper Systems, где, кроме двоих основателей, работает всего несколько человек. Для шифрования сообщений используется созданный специально для него криптографический протокол — Signal Protocol. Он применяется для сквозного (end-to-end) шифрования звонков (голосовых и видео), а также обычных сообщений. Протокол Signal с тех пор стали использовать и другие мессенджеры: WhatsApp, Facebook Messenger, Google Allo.
Казалось бы, в этом случае любой мессенджер может стать таким же безопасным, как и Signal. Но, как показывает практика, — нет. В отличие от Signal, где шифрование включено по умолчанию, в этих мессенджерах оно выключено. Для его включения в Facebook Messenger нужно активировать Secret Conversations, а в Google Allo — режим инкогнито (Incognito Mode).
Хоть Signal и централизованный, но код открыт и распространяется по свободной лицензии. У Signal есть поддержка групповых E2EE-чатов, защита социального графа, поддерживаются исчезающие по таймеру сообщения.
Однако не стоит путать защиту с анонимностью. Signal не анонимен: при регистрации нужно указывать номер телефона, к которому мессенджер и привязывается. Что касается исчезающих сообщений, то эта фишка встречается и в других мессенджерах, например в Viber и Telegram (в меню секретного чата нужно выбрать команду Set self-destruct timer).

VIBER
Лицензия: проприетарная
Степень централизации: централизованный
Возможность анонимной регистрации и работы: только по номеру телефона
Наличие E2EE: есть, по умолчанию. Также есть секретные и скрытые чаты, которые обеспечивают дополнительную безопасность
Синхронизация E2EE-чатов: нет. Созданный в мобильной версии секретный чат не отобразился в десктопной версии
Уведомление о проверке отпечатков E2EE: нет
Запрет на скриншоты секретных чатов: есть
Групповые чаты E2EE: есть
Уведомление о необходимости проверки отпечатков E2EE в групповых чатах: нет
Защита социального графа: нет

Viber— интересный мессенджер. С одной стороны, он проприетарный, централизованный, привязывается только к номеру телефона, не обеспечивает защиту социального графа. С другой стороны, сквозное шифрование основано на протоколе Signal и включено по умолчанию, даже в настольной версии. Для дополнительной безопасности существуют секретные чаты с возможностью общаться группой.
Секретные чаты позволяют настроить таймер самоуничтожения для каждого сообщения: оно будет удалено через установленное время после просмотра — как с твоего устройства, так и со всех устройств получателей. Сообщения секретного чата защищены от пересылки, а скриншоты или запрещены, или оставляют уведомление на экране чата.
Для перехода в секретный чат нужно открыть чат с пользователем и выбрать из меню команду «Перейти в секретный чат». Такой чат будет отмечен замком.
Дополнительно Viber позволяет создавать скрытые секретные чаты. Чтобы получить доступ к такому чату, нужно ввести установленный ранее PIN-код. Это дополнительная защита на тот случай, если телефон попадет в чужие руки.
Для проверки отпечатков предлагается совершить звонок собеседнику, сообщить свой идентификатор, после чего подтвердить его корректность, но уведомления, что это необходимо для обеспечения собственной безопасности, нет.

WHATSAPP
Лицензия: проприетарная
Степень централизации: централизованный
Возможность анонимной регистрации и работы: только по номеру телефона
Наличие E2EE: по умолчанию
Синхронизация E2EE-чатов: есть
Уведомление о проверке отпечатков E2EE: есть только в случае смены ключа собеседником. Чтобы уведомление пришло, необходимо зайти в настройки и включить эту функцию. При старте чата никаких уведомлений нет
Запрет на скриншоты секретных чатов: нет
Групповые чаты E2EE: есть
Уведомление о необходимости проверки отпечатков E2EE в групповых чатах: нет
Защита социального графа: нет

WhatsApp использует Signal Protocol, но это само по себе не дает никаких гарантий. Конечно, этот мессенджер интересен тем, что не хранит твои сообщения на своих серверах. Вместо этого сообщения хранятся на телефоне или в облачных сервисах, с которыми он синхронизирован (например, в iCloud). Также E2EE используется по умолчанию с поддержкой групповых чатов.
Однако хоть WhatsApp и не получает самой переписки, его владельцы имеют доступ к метаданным, в том числе собирают телефонные номера из адресной книги, время отправки сообщений и звонков и так далее. Представь, что в 2:30 ты звонил в «секс по телефону» и твой разговор длился 24 минуты. Ну да, никто не узнает, как конкретно шла беседа, но это в данном случае не очень‑то и нужно.
Кроме этого, WhatsApp собирает тонны информации о пользователе: модель его телефона, ОС, информацию, полученную от браузера, IP-адрес, мобильный номер и так далее.
Добавь к этому проприетарный код, и ты получишь далеко не самый лучший с точки зрения анонимности вариант. Может, никто и не перехватит твои сообщения, но сам мессенджер будет знать о тебе многое.

INFO
Наличие сквозного шифрования — еще не гарантия того, что переписка не будет перехвачена. Его можно обойти либо проэксплуатировать какую‑то уязвимость, как это уже было в случае с WhatsApp.

BRIAR
Лицензия: GPLv3
Степень централизации: децентрализованный
Возможность анонимной регистрации и работы: есть
Наличие E2EE: есть, по умолчанию
Синхронизация E2EE-чатов: нет
Уведомление о проверке отпечатков E2EE: при добавлении контакта необходимо сосканировать QR-код собеседника с экрана его телефона, другого варианта добавить его нет. Считаем, что уведомление есть
Запрет на скриншоты секретных чатов: есть
Групповые чаты E2EE: есть
Уведомление о необходимости проверки отпечатков E2EE в групповых чатах: в групповой чат можно добавить только собеседника из тех, чьи QR-коды уже проверены. Также считаем, что уведомление есть
Защита социального графа: есть

Briar — не очень популярный мессенджер: возможно, даже не все наши читатели о нем знают. Однако он хорош: основан на технологии децентрализованных сетей (mesh), может работать по Bluetooth или Wi-Fi напрямую либо через интернет (в последнем случае он подключится через Tor).
Исходники Briar открыты, есть возможность анонимной регистрации и использования, а чаты шифруются по умолчанию, причем не хранятся на серверах Briar — то есть твои сообщения в зашифрованном виде хранятся только на твоем телефоне. Есть защита социального графа (никто никому не сливает твою адресную книгу), есть групповые E2EE-чаты, но нет синхронизации E2EE-чатов между устройствами, поскольку нет возможности использовать одну и ту же учетку на разных девайсах.
На фоне всех остальных мессенджеров Briar выглядит очень неплохо, если нужна анонимность общения. Но у него есть и недостатки: нет версии для iPhone, нет возможности голосовых звонков. Если с отсутствием звонков еще можно мириться, то без версии для одной из крупных платформ круг общения окажется еще более узким.

ТАМТАМ
Лицензия: проприетарная
Степень централизации: централизованный
Возможность анонимной регистрации и работы: возможна регистрация с использованием почты Google или через «Одноклассники»
Наличие E2EE: нет
Защита социального графа: нет
При создании «ТамТама» никто не делал упор на безопасность, и об этом нужно помнить. Внимание к нему может привлечь разве что возможность регистрации через почту Google или «Одноклассники». Однако шифрование сообщений не поддерживается (или разработчики об этом не сообщают), и нет защиты социального графа. То есть, как бы ты ни регистрировался, без дополнительных мер все равно будет понятно, кто ты. В общем, даже как замена для «Телеграма» этот мессенджер не годится, несмотря на все чаяния его разработчиков.

ВКОНТАКТЕ
Лицензия: проприетарная
Степень централизации: централизованный
Возможность анонимной регистрации и работы: только по номеру телефона
Наличие E2EE: нет
Защита социального графа: нет
Снова проходим мимо: вряд ли кому‑то в здравом уме придет в голову мысль использовать «Вконтакте» как средство для анонимного общения. Сообщения хранятся на серверах соцсети, не шифруются, регистрация только по номеру телефона — в общем, полный набор того, чего мы тут пытаемся избежать.

FACEBOOK MESSENGER
Лицензия: проприетарная
Степень централизации: централизованный
Возможность анонимной регистрации и работы: есть. Регистрация в «Фейсбуке» возможна с использованием электронной почты, а вход в Messenger — через учетную запись Facebook
Наличие E2EE: есть, но не по умолчанию
Синхронизация E2EE-чатов: нет
Уведомление о проверке отпечатков E2EE: нет. Но собеседники могут сравнить отпечатки друг друга
Запрет на скриншоты секретных чатов: нет
Групповые чаты E2EE: нет
Защита социального графа: нет

8.jpg


9.jpg


Мессенджер, прилагающийся к Facebook, построен на основе открытого протокола MQTT. На всякий случай напомним, что это именно протокол обмена сообщениями — не путать с протоколом шифрования. После того как на мобильных телефонах Messenger выселили в отдельное приложение, у пользователей Facebook оставалось мало выбора, кроме как установить еще и его. Однако регистрироваться в «Мессенджере» можно и без аккаунта в FB.
Если сравнивать чаты «Вконтакте» и Facebook Messenger, то второй оказывается на голову выше. Во‑первых, можно регистрироваться с анонимной почтой. Во‑вторых, поддерживаются E2EE-чаты, но не по умолчанию. Для включения шифрования сообщений нужно активировать Secret Conversations.
Однако помни, что Facebook собирает очень много всевозможной информации о пользователе, поэтому вряд ли подойдет для анонимного общения. Также не поддерживается синхронизация E2EE-чатов и многие другие полезные вещи (см. выше). Если тебе интересно, какую информацию собирает Facebook, прочитай политику конфиденциальности (если у тебя нет аккаунта, то можно в форме скриншота).

WIRE
Лицензия: GPLv3
Степень централизации: централизованный
Возможность анонимной регистрации и работы: есть. С помощью почты
Наличие E2EE: есть, по умолчанию
Синхронизация E2EE-чатов: есть
Уведомление о проверке отпечатков E2EE: нет, но возможность есть
Запрет на скриншоты секретных чатов: нет
Групповые чаты E2EE: есть
Уведомление о необходимости проверки отпечатков E2EE в групповых чатах: есть. Если один из пользователей отправляет в секретный групповой чат сообщение с устройства, которое не верифицировано у другого пользователя, то, когда второй попытается отправить сообщение, перед ним появится предупреждение о том, что у первого новое устройство
Защита социального графа: есть

10.jpg


Wire — один из наиболее анонимных мессенджеров. В его основе — протокол Wire Swiss, основанный на Signal. Чем он хорош? Во‑первых, есть возможность анонимной регистрации. Во‑вторых, по умолчанию поддерживается сквозное шифрование с возможностью синхронизации зашифрованных чатов. В‑третьих, есть защита социального графа, поддерживаются групповые зашифрованные чаты (до 128 человек) и безопасные конференц‑звонки (до десяти человек). Что‑то подобное мы видели в Briar, но у Wire еще и огромный выбор поддерживаемых платформ: Android, iOS, Windows, macOS, Linux.
Должна быть ложка дегтя? Будем считать, что она есть: в отличие от Briar, Wire — не децентрализованный, и за ним стоит небольшой швейцарский стартап (а стартапы, как известно сегодня есть, а завтра — нет). Разработчики предполагают зарабатывать на продажах корпоративной версии и конкурировать со Slack. Стоит такая подписка 6 евро в месяц или 4 при оплате за год. Остается надеяться, что эта модель действительно позволит компании поддерживать бесплатный, качественный и анонимный мессенджер.

JABBER (OMEMO)
Лицензия: разные свободные лицензии
Степень централизации: федеративный
Возможность анонимной регистрации и работы: есть. Регистрация с использованием почтового ящика, учетной записи в Facebook или Twitter
Наличие E2EE: есть. Необходимо дополнение OMEMO
Синхронизация E2EE-чатов: есть
Уведомление о проверке отпечатков E2EE: уведомления нет, но возможность есть
Запрет на скриншоты секретных чатов: нет
Групповые чаты E2EE: есть
Уведомление о необходимости проверки отпечатков E2EE в групповых чатах: нет
Защита социального графа: нет

11.jpg


Если старина Jabber и выбивается из компании современных мессенджеров с веселыми стикерами и голосовыми звонками, то в плане приватности он по‑прежнему во многом незаменим. Он федеративный, поддерживает анонимную регистрацию, E2EE-шифрование (нужно расширение OMEMO), в том числе групповое. Да, возможности не поражают воображение, но Jabber проверен временем и к тому же имеет реализации на всех возможных платформах. ChatSecure для iOS, Conversations — для Android, Pidgin — для Linux и так далее, список огромен.

RIOT (MATRIX)
Лицензия: Apache
Степень централизации: федеративный
Возможность анонимной регистрации и работы: есть
Наличие E2EE: есть, по выбору пользователя
Синхронизация E2EE-чатов: есть
Уведомление о проверке отпечатков E2EE: есть
Запрет на скриншоты секретных чатов: нет
Групповые чаты E2EE: есть
Уведомление о необходимости проверки отпечатков E2EE в групповых чатах: есть
Защита социального графа: есть

12.jpg


Чего создателям этого мессенджера не занимать, так это умения придумывать крутые названия. Собственно, Matrix — это протокол коммуникации, а Riot — клиентское приложение (бывают и другие — в том числе для консоли). Использовать можно как вебовый вариант, так и программы для iOS и Android.
В целом это еще один малоизвестный федеративный мессенджер с поддержкой и синхронизацией чатов E2EE, в том числе групповых. Регистрация анонимная, без привязки к номеру мобильного телефона или почте. Поддерживается голосовая связь и видеозвонки.
Шифрование переписки в Riot можно включить или выключить — индикатором этого служит значок замочка рядом с полем отправки сообщения. Также если в секретном групповом чате появится пользователь, чьи устройства не верифицированы другими пользователями, собеседники увидят сообщение об этом при попытке отправить сообщение.
В целом Matrix выглядит как интересный вариант, смутить может только его новизна в сочетании с тем, что протокол свой.

STATUS
Лицензия: MPLv2
Степень централизации: децентрализованный
Возможность анонимной регистрации и работы: есть
Наличие E2EE: по умолчанию
Синхронизация E2EE-чатов: частичная (см. описание)
Уведомление о проверке отпечатков E2EE: есть. Чтобы начать диалог с пользователем, необходимо ввести его идентификатор или сосканировать с экрана смартфона
Запрет на скриншоты секретных чатов: нет
Групповые чаты E2EE: нет
Защита социального графа: есть
Status — это нечто большее, чем просто мессенджер. Конечно, его можно использовать только для общения, но это все равно что ставить Windows ради «Блокнота». Да и общаться здесь не очень‑то удобно, даже картинку не отправишь, не говоря уж про такую роскошь, как стикер. Зато прямо в чате есть возможность отправить ETH и создать запрос на его получение.
Приложение пока находится на стадии бета‑теста. Да, без глюков пока никак. Мы установили Status на два телефона (оба с Android). На одном из телефонов приложение работало нормально, на втором постоянно слетала авторизация и приходилось вводить пароль при каждом обращении к мессенджеру (считай, после каждой блокировки экрана) — не очень‑то удобно.
Иногда не знаешь, баг перед тобой или никак не объясненная фича. Когда мы создали аккаунты на обоих телефонах (для этого ничего не нужно — просто вводи имя) и сосканировала QR-код на экране одного телефона другим, на втором отобразилось совершенно другое имя, которое мы видели впервые, — Puny Moral Gonolek. Только после добавления пользователя в контакты имя стало нормальным. При этом имя первого собеседника всю дорогу отображается нормально.
Поскольку есть возможность анонимной регистрации и все чаты шифруются по умолчанию, можно считать, что каждый чат в Status — секретный. Есть и синхронизация секретных чатов, но синхронизироваться будут только входящие сообщения, а вот отправленные с одной учетной записи, но с разных устройств — нет.
Еще один возможный недостаток: сообщения хранятся и на телефоне, и на сервере мессенджера, но разработчики уверяют, что в зашифрованном виде. Зато твоя книга контактов не сливается на серверы мессенджера, что нынче дорогого стоит. В общем, безопасность здесь есть, а возможность перевода криптовалюты, вероятно, кого‑то порадует. Но Status пока что скорее интересная диковинка, чем рабочий инструмент.

THREEMA
Лицензия: проприетарная у приложений, AGPLv3 у веб‑клиента
Степень централизации: централизованный
Возможность анонимной регистрации и работы: есть. Можно создать учетную запись без привязки к номеру телефона или почте. Пользователю присваивается уникальный ID, который можно сменить
Наличие E2EE: есть, по умолчанию
Синхронизация E2EE-чатов: частичная (см. описание)
Уведомление о проверке отпечатков E2EE: есть. Сообщения в групповых чатах отправляются каждому собеседнику индивидуально, а диалог можно начать только с тем, чей идентификатор подтвержден
Запрет на скриншоты секретных чатов: нет
Групповые чаты E2EE: есть
Уведомление о необходимости проверки отпечатков E2EE в групповых чатах: есть
Защита социального графа: есть. Адресная книга по умолчанию не загружается на сервер, но при желании пользователь может разрешить доступ к ней
Threema — проприетарный централизованный мессенджер, серверы которого находятся в Швейцарии. Кроме текстового общения, пользователям доступны голосовые звонки, возможность отправлять свое местоположение, голосовые сообщения и файлы. Поддерживаются групповые чаты до 50 человек.
Сообщения здесь шифруются полностью и децентрализованным способом на устройствах пользователя, а не на сервере Threema. Сервер скорее играет роль коммутатора: сообщения пересылаются через него, но не хранятся постоянно. Подробно о том, какие данные хранятся и как долго, ты можешь прочитать в FAQ.
Для регистрации не нужно указывать данные, которые могут способствовать установлению личности, — ни номер телефона, ни email. При первом запуске программы случайным образом генерируется идентификатор пользователя, на его основе будет сгенерирован QR-код. Все это обеспечивает анонимность общения.
Чтобы начать диалог с собеседником, необходимо ввести его идентификатор. В Threema есть три уровня доверия личности пользователя. Наивысший будет при сканировании идентификатора с экрана смартфона, а самый низкий — при вводе его вручную. Где‑то посередине находится синхронизация контактов. Уровень проверки каждого контакта отображается в виде точек рядом с именем.
Threema, в отличие от WhatsApp или, например, Facebook Messenger не регистрирует, кто и с кем общается, и не хранит адресную книгу пользователя на своих серверах. Все сообщения на устройствах пользователя хранятся в зашифрованном виде. Способ шифрования зависит от устройства. В iOS используется функция iOS Data Protection, в Android и Windows Phone — AES-256. Шифруются сообщения, изображения и другие данные, передаваемые между пользователями. Дополнительная информация доступна в whitepaper (PDF).
Хоть каждый чат шифруется и может считаться секретным, помимо этого, есть и приватные чаты. Они защищены PIN-кодом и помечены значком со шляпой и очками. Нечто подобное мы уже встретили в Viber.
В общем, Threema оставляет неплохое впечатление. Сообщения не могут быть расшифрованы — даже по решению суда, так как хранятся только на телефоне и Threema не имеет доступа к секретным ключам пользователей. Серверы Threema знают только, кто отправляет сообщение и кому, но они не логируют эту информацию и не могут расшифровать содержимое сообщения.
Переходим к минусам. Во‑первых, это необходимость заплатить. 2,6 евро разово — не Бог весть что, но сам факт оплаты может быть нежелательным. Во‑вторых, тут довольно непростая ситуация с синхронизацией чатов: сообщения можно синхронизировать между вебовой версией и телефонной, а вот зайти в одну учетку с двух телефонов уже не получится. Для каждого устройства генерируется уникальный ID, так что перенести логи на другой девайс можно только через бэкап.

INFO[
Групповые чаты всегда обладают меньшей безопасностью из‑за упрощенного механизма распределения ключей.

ИТОГИ
Рекомендовать какой‑либо мессенджер мы не будем. Мы предоставили тебе все данные, и выбор остается за тобой, тем более что выбирать есть из чего. Ниже — табличка, которая поможет тебе в этом.
13.jpg


Тайна переписки заботит не только тру‑хакеров, но и миллионы простых пользователей, которые совсем не хотят, чтобы их интимные фотки и любовные послания стали достоянием прогрессивной общественности. В прошлой статье мы исследовали приватность и безопасность самых популярных мессенджеров. Настало время пристально изучить их менее распространенных, но оттого не менее интересных конкурентов, претендующих на более серьезную защищенность.

Критерии оценки
Здесь мало что изменилось по сравнению с предыдущим исследованием. Я убрала проверку на блокирование скриншотов (это все равно слишком легко обойти), но добавила пункты о возможности использования одной учетной записи сразу на нескольких устройствах и проверку на то, могут ли передаваться сообщения каким‑либо способом, кроме как в интернете.
⚫ FOSS — доступен ли исходный код по свободной лицензии, как разработчики взаимодействуют с сообществом, принимают ли патчи.
⚫ Степень централизации — требуется ли наличие центрального сервера, который можно заблокировать, используется ли сеть серверов, или каждый клиент является одновременно и сервером (P2P).
⚫ Возможность анонимной регистрации и использования — есть ли привязка к телефону, и используются ли иные методы «жесткой аутентификации».
⚫ Наличие End-to-End Encryption (E2EE) — некоторые мессенджеры имеют такую функцию по умолчанию, в других ее можно включить, но попадаются и те, где сквозного шифрования просто нет.
⚫ Синхронизация End-to-End encrypted чатов — наличие этой функции сильно упрощает жизнь, но технически реализовать ее непросто, и встречается она редко.
⚫ Необходимость проверки отпечатков E2EE (в том числе в групповых чатах) — не все мессенджеры имеют функцию проверки отпечатков, некоторые не предлагают делать это открыто. Групповые чаты без проверки отпечатков собеседников перестают быть приватными.
⚫Групповые E2EE-чаты — интересная функция, которая позволяет шифровать переписку между несколькими пользователями.
⚫ Возможность добавления устройств — использовать одну и ту же учетную запись на разных устройствах бывает не просто удобно, а необходимо.
⚫ Защита социального графа — важно, собирает ли мессенджер информацию о контактах пользователя и другие данные.
⚫ Альтернативные способы передачи данных — проверка возможности передавать сообщения каким‑либо способом, кроме как через интернет.

WICKR
Лицензия: проприетарный клиент, открытый протокол (исходники)
Централизация: централизованный
Анонимность: регистрация доступна без номера телефона, но при желании можно его добавить
E2EE: есть, по умолчанию
Синхронизация E2EE: нет, при входе в учетную запись с другого девайса предыдущая переписка не сохранилась
Проверка отпечатков: можно отправить собеседнику короткое видео со своим лицом, чтобы он мог убедиться, что ты — это ты, но никакого уведомления об этом нет. И эта функция в программе спрятана слишком глубоко
Возможность добавления устройств: есть
Групповые E2EE-чаты: есть
Уведомление о проверке E2EE: уведомлений нет, возможность есть
Защита социального графа: приложению можно разрешить доступ к списку контактов (делать это, конечно, не стоит)
Альтернативные способы передачи данных: нет
Мессенджер, основанный на блокчейне, — по уверениям разработчиков, анонимный на 100%. Переписка осуществляется через серверы, но все сообщения удаляются как с них, так и с компьютеров, смартфонов и других девайсов, при этом пользователь может сам настроить продолжительность хранения истории сообщений.
Вся передаваемая информация может шифроваться с использованием стандартов (AES-256, ECDH-521, RSA-4096 TLD). Ради пущей безопасности для каждого нового сообщения формируется свой ключ. Вся переписка пользователей обезличена — сообщения не содержат имен отправителя, получателя и геометок.
На сайте разработчика доступны три версии: me, ent и pro, однако бесплатно для личного использования можно скачать только первую из них. Ent и pro платные и имеют расширенный набор функций.
Интересно, что этот мессенджер используется в некоторых государственных и правительственных учреждениях. Хорошо это или плохо, сказать сложно.

TOX (ANTOX)
Antox в Google Play
Лицензия: GPLv3 (исходники)
Централизация: децентрализованный
Анонимность: да
E2EE: есть, по умолчанию
Синхронизация E2EE: нет
Проверка отпечатков: чтобы начать диалог, необходимо или ввести идентификатор собеседника, или считать его QR-код
Возможность добавления устройств: можно импортировать профиль c одного смартфона на другой
Групповые E2EE-чаты: есть
Уведомление о проверке E2EE: в групповой чат может добавиться любой пользователь, который знает его ID, без предварительной проверки отпечатков
Защита социального графа: есть
Альтернативные способы передачи данных: нет
Этот мессенджер создала группа независимых разработчиков, ратующих за безопасность и приватность переписки. Программа опенсорсная, все сообщения передаются со сквозным шифрованием, отключить которое не получится никак. Интерфейс мессенджера простой и понятный, что меня очень порадовало.

В основе Antox лежит протокол Tox, который обеспечивает голосовую и видеосвязь, возможность отправлять мгновенные сообщения и передавать файлы, режим конференции с несколькими участниками, а также другие фичи, присущие практически каждому современному мессенджеру. А главное — в нем отсутствует реклама.

Для каждой ОС разработчики придумали свое клиентское приложение. Программы qTox и μTox — это десктопные версии, Antox — мобильная версия для Android, а Antidote предназначен для пользователей iOS. Я рассмотрела только Antox, оценить преимущества и недостатки реализаций мессенджера для других платформ ты можешь самостоятельно.

JAMI
Лицензия: GPLv3 (исходники десктопной версии, исходники клиента для Android)
Централизация: децентрализованный
Анонимность: да
E2EE: есть, по умолчанию
Синхронизация E2EE: нет — переписки, предшествовавшие моменту входа в аккаунт с нового устройства, не синхронизировались
Проверка отпечатков: чтобы добавить контакт, можно отсканировать QR-код, но можно найти контакт по нику или по идентификатору телефона. Под идентификатором телефона подразумевается последовательность из сорока символов, которая служит идентификатором пользователя. Можно также поделиться своими контактными данными через любой другой мессенджер, почту или передать их по Bluetooth
Возможность добавления устройств: к одному устройству с помощью генерируемого пин‑кода можно привязать несколько аккаунтов
Групповые E2EE-чаты: нет
Защита социального графа: есть
Альтернативные способы передачи данных: нет
Jami — это полностью опенсорсный мессенджер, код которого публикуется по лицензии GPLv3. Программа выросла из проекта SFLphone.
Раньше эта программа называлась Ring, но за время написания статьи ее успели переименовать в Jami. Возможно, разработчики сделали это, чтобы избежать путаницы с другим мессенджером под таким же названием, который не попал в мой список.
Как и любой другой мессенджер, Jami поддерживает отправку текстовых сообщений, безопасные и надежные аудио- и видеозвонки, а также передачу документов и файлов.
Для установки соединения между пользователями применяются распределенные хеш‑таблицы. Все ключи шифрования и идентификации остаются в пределах смартфона пользователя. Серверы не используются, то есть пользователи образуют одноранговую сеть, что очень хорошо с точки зрения безопасности.

CHAT.ONION
Лицензия: исходники открыты, без лицензии
Централизация: децентрализованный
Анонимность: да, пользователю сразу присваивается идентификатор
E2EE: да, по умолчанию
Синхронизация E2EE: нет
Проверка отпечатков: чтобы добавить собеседника, необходимо отсканировать его QR-код и дать ему отсканировать свой
Возможность добавления устройств: существует версия только для смартфонов, функцию входа в существующую учетную запись обнаружить не удалось
Групповые E2EE-чаты: нет
Защита социального графа: есть
Альтернативные способы передачи данных: нет
Этот мессенджер основан на onion-маршрутизации, которая используется в браузере Tor. Она позволяет скрыть IP-адрес пользователя, метаданные и любую другую идентифицирующую информацию. Для этого каждое сообщение передается между несколькими прокси‑серверами в рандомном порядке, прежде чем достигнет адресата. Анонимность обеспечивается благодаря тому, что каждый сервер «знает», только откуда пришло сообщение и куда его надо отправить дальше.
Каждому пользователю присваивается ID, состоящий из 16 символов, но для упрощения жизни можно просто отсканировать QR-код собеседника.
Само приложение порадовало своим минимализмом, как и сайт разработчиков.

FIRECHAT
Лицензия: проприетарный
Централизация: децентрализованный
Анонимность: и да и нет. Свои данные вроде номера телефона указывать не надо, но вот примерное местоположение пользователя можно определить
E2EE: есть
Синхронизация E2EE: при выходе из приложения можно импортировать ключи, чтобы иметь возможность затем дешифровать сообщения
Проверка отпечатков: можно ограничить возможность пересылки зашифрованных сообщений — они будут отправляться только тем пользователям, чьи отпечатки верифицированы
Возможность добавления устройств: есть
Групповые E2EE-чаты: есть
Защита социального графа: вроде бы есть, но то, что в «общую комнату» по умолчанию объединяются пользователи, находящиеся на небольшом расстоянии друг от друга, не очень‑то сочетается с безопасностью
Альтернативные способы передачи данных: по Bluetooth и Wi-Fi
Проприетарный мессенджер, созданный в компании Open Garden. Работает весьма необычным способом: объединяет всех пользователей мессенджера, находящихся на расстоянии 200 шагов друг от друга, в одну сеть посредством Bluetooth или Wi-Fi. Обычное подключение к интернету ему не требуется.
Сложно сказать, как соотносится с безопасностью такой режим работы. Возможно, если очень постараться, получится определить личности пользователей, например методами социальной инженерии. Ну и для общения с приятелем, живущим в другой стране, этот мессенджер никак не подходит.
Интерфейс приложения крайне неочевидный, особенно если учесть необычный способ коммуникации. И ситуаций, когда подобная программа может пригодиться, не так много, разве что координация митингов и забастовок. Но если такое приложение создано и его разработка продолжается, значит, спрос есть.

АДАМАНТ
Лицензия: GPLv3 (исходники)
Централизация: децентрализованный
Анонимность: есть
E2EE: есть
Синхронизация E2EE: есть
Проверка отпечатков: можно отсканировать QR-код собеседника или ввести его идентификатор
Возможность добавления устройств: есть, по парольной фразе (как в кошельках для «битков»)
Групповые E2EE-чаты: нет
Уведомление о проверке E2EE: нет
Защита социального графа: есть
Альтернативные способы передачи данных: нет
Еще один мессенджер, основанный на блокчейне. Создан он в России и имеет большую рекламную поддержку, не побоюсь сказать, со всех заинтересованных сторон.
По уверениям разработчиков, его приватность максимальна, непонятно только, по сравнению с чем. При регистрации не нужно вводить никакой персональной информации. История сообщений не хранится на устройстве, а загружается из блокчейна, поэтому доступ к переписке возможен сразу с нескольких устройств пользователя — в этом как раз и заключается основной смысл технологии.
В мессенджере также предусмотрена возможность отправлять собеседникам криптовалюту, а именно ADM, ETH и BNB, причем разработчики обещают расширить этот список. Правда, актуальность этой фичи остается под вопросом, учитывая резкое падение биткойна, а следом за ним и других криптовалют.
При регистрации новому юзеру сразу присваивается ID мессенджера и адрес, по которому можно получить криптовалютный перевод, а также начисляется поощрительный приз в размере 0,1 ADM.

CYPHR
Лицензия: проприетарный
Централизация: централизованный
Анонимность: зарегистрироваться можно только по адресу электронной почты
E2EE: есть (сообщение отправится, только если собеседник будет онлайн)
Синхронизация E2EE: есть
Проверка отпечатков: нет
Возможность добавления устройств: есть
Групповые E2EE-чаты: есть. Сообщение отправится, только если все собеседники будут онлайн
Уведомление о проверке E2EE: нет
Защита социального графа: есть
Альтернативные способы передачи данных: нет
Этот мессенджер разрабатывают в компании Golden Frog, и он проприетарный. Конечно, его создатели обещают не хранить на своих серверах связанные с пользователями метаданные и называют свое приложение zero-knowledge.
Но все же, несмотря на эти уверения, кое‑что будет храниться на сервере до того, как адресат получит сообщение. А именно — само сообщение в зашифрованном виде, время его отправки и имя адресата, то есть данные, которые необходимы для успешной передачи сообщения. Сообщения шифруются с помощью 256-битного симметричного шифрования.
В общем, в Cyphr хорошо практически все, кроме закрытых исходников.

SILENCE
Лицензия: GPLv3 (исходники)
Централизация: децентрализованный
Анонимность: нет, SMS-сообщения отправляются на номер телефона
E2EE: есть
Синхронизация E2EE: нет
Проверка отпечатков: есть
Возможность добавления устройств: нет, при установке приложения не создается учетная запись, а идет привязка к телефонному номеру
Групповые E2EE-чаты: нет
Защита социального графа: нет (у оператора останется информация о факте отправки SMS-сообщения)
Альтернативные способы передачи данных: нет
Мессенджер, отколовшийся от проекта Signal, который в свое время вырос из мессенджера TextSecure. Его особенность заключается в том, что шифрует он только SMS-сообщения. Из‑за этого Silence выделяется из общего списка рассматриваемых мною мессенджеров, но тем не менее он весьма интересен. Silence можно установить на телефон под управлением Android в качестве основного приложения для отправки и приема SMS-сообщений.
Этот мессенджер работает там, где нет доступа к интернету или где возможности его использования ограничены. Но доступен Silence только для Android, версии для iOS не существует в природе.

ИТОГИ
В этот раз дела в целом обстоят получше: у всех рассмотренных мессенджеров как минимум есть функция шифрования переписки. Рекомендовать какой‑то конкретный из них не буду: лучше выбирай то, что тебе ближе и удобнее. Моя цель более скромная — помочь сориентироваться в многообразии мессенджеров.

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

14.jpg
 
Шифруйтесь грамотно! Почему мессенджеры на защитят тайну твоей переписки.

Сквозное шифрование, или end-to-end encryption (E2EE), считается панацеей от настойчивых попыток хакеров и силовых ведомств ознакомиться с онлайновой перепиской. Смысл E2EE часто сводится к тому, что ключи хранятся только на устройствах собеседников и не попадают на сервер… но это не совсем так. Давай посмотрим, как в действительности обстоят дела с E2EE, на примере популярных мессенджеров.

ШИФРОВАНИЕ В МЕССЕНДЖЕРАХ
Написать эту статью меня подтолкнуло исследование Obstacles to the Adoption of Secure Communication Tools https://jbonneau.com/doc/ASBDNS17-IEEESP-secure_messaging_obstacles.pdf (PDF). Как выяснили его авторы, «подавляющее большинство участников опроса не понимают основную концепцию сквозного шифрования». Проще говоря, люди обычно выбирают мессенджер сердцем, а не мозгом.
Начнем с того, что E2EE имеет свои особенности в каждом мессенджере. В Signal оно почти образцовое. В WhatsApp формально такое же, как в Signal, за исключением одного очень важного момента: смена основного ключа абонента WhatsApp не блокирует отправку ему сообщений. Максимум можно включить бесполезное уведомление (которое отключено в дефолтных настройках). В Viber сквозное шифрование неактивно по умолчанию, да и появилось только в шестой версии. В Telegram E2EE также используется только в секретных чатах, причем реализованы они довольно странно.
Конфликт Роскомнадзора с Telegram вообще создал отличную рекламу последнему. Рядовые пользователи теперь считают творение Дурова настоящей занозой в спине спецслужб (или чуть пониже ее), которые ничего не могут сделать с пуленепробиваемым инновационным сервисом. Поклонники Telegram сравнивают его с Signal и утверждают о превосходстве первого.
Однако в криптографии не бывает чудес, и особенно — в прикладной. Многие математически красивые идеи оказываются безнадежно испорчены реализацией, когда удобство и подконтрольность ставят выше безопасности и приватности (а так происходит практически всегда).
Исходно в мессенджерах применялся протокол OTR (Off-the-Record). Он использует симметричное шифрование AES в режиме CTR, протокол обмена ключами DH и хеш‑функцию SHA-1. Схема AES-CTR обеспечивает так называемое «спорное» (в хорошем смысле) шифрование и возможность отрицания авторства текста, если его перехватят. Всегда можно сослаться на то, что перехвативший трафик сам изменил шифротекст так, чтобы он соответствовал другому варианту расшифровки той же длины. Например, вместо «сходи за хлебом» получилось «отрави королеву» — технически это возможно, и такое свойство специально заложено в алгоритм.
Протокол OTR выполняет аутентификацию собеседников и шифрует переписку между ними. Он безопасен до тех пор, пока участники разговора регулярно проверяют отпечатки открытых ключей друг друга и противостоят атакам по другим векторам (включая социальный инжиниринг).
Главный недостаток OTR заключается в том, что после отправки нового ключа требуется дождаться подтверждения от собеседника. Если он офлайн, то связь будет временно невозможна. Одним из выходов стал алгоритм Double Ratchet (DR), разработанный пять лет назад Тревором Перрином и Мокси Марлинспайком в Open Whisper Systems. Сегодня DR используется в Signal, WhatsApp, Viber и многих других мессенджерах, поддерживающих сквозное шифрование по умолчанию или как отдельную опцию (секретные чаты).

image-23-07-19-03-46-1.jpg


Упрощенная схема алгоритма Double Ratchet (источник: signal.org). Алиса и Боб начинают сессию, обмениваясь публичными ключами

СКВОЗНОЕ ШИФРОВАНИЕ
Схема E2EE использует комбинацию из криптографических систем с открытым и закрытым ключом. Она очевидна в общих чертах и довольно сложна на уровне деталей. В ней используется масса взаимосвязанных ключей, часть из которых обязательно попадает на сервер и, более того, обязательно загружается на него до начала переписки, чтобы ее можно было начать в произвольный момент. Давай рассмотрим ее подробнее.
Начало схемы ты наверняка знаешь, поскольку оно стандартно для всех систем асимметричного шифрования, — генерируется пара ключей. Это необходимо потому, что криптосистемы с одним ключом (вроде AES) использовать в переписке в чистом виде слишком трудно. С ними пришлось бы как‑то организовывать защищенный канал для передачи ключа (например, встречаться лично), а потом делать это снова при каждой его смене.
Тут же все как в привычном PGP: есть два собеседника (Алиса и Боб), каждый из которых генерирует свою пару ключей. Затем они обмениваются публичными ключами, сохраняя в тайне парные им секретные. Публичные ключи передаются по открытому каналу (на то они и публичные, пусть перехватывают на здоровье) и служат для двух целей: они позволяют зашифровать сообщение и проверить его подпись. Соответственно, секретные ключи используются для расшифровки и формирования подписи.

INFO
Термин «сообщение» используется здесь в широком смысле. Сообщением может быть текст, медиафайл или служебные метаданные, которыми мессенджер обменивается с сервером. Часть этих данных содержит временные метки, состояние клиентского приложения и новые ключи.

Такая криптосистема кое‑как работает в электронной почте, поскольку это сервис для доставки отдельных зашифрованных сообщений произвольной длины. Пользуясь им, собеседники не обязаны одновременно быть онлайн. Все сообщения накапливаются на сервере и скачиваются с него по требованию после того, как пользователь успешно пройдет авторизацию. Расшифровка происходит локально при помощи секретных ключей, которые никуда не передаются. Почта с PGP популярна, но работает далеко не идеально. Почему? См. статью «Алиса и Боб в стране PGP».
К сожалению, в чистом виде схема асимметричного шифрования также не годится для мессенджеров, поскольку эти сервисы ориентированы на интенсивную онлайновую переписку в виде цепочки коротких сообщений. Они должны отображаться в строго определенном порядке, а собеседник может в любое время оказаться офлайн и нарушить структуру диалога.
К тому же шифровать множество коротких сообщений одним ключом — плохая идея. Всего за день переписки их создаются сотни (если не тысячи). Во многих сообщениях количество шифротекста минимальное и предсказуемое (смайлик, стикер). Также у них есть стандартные заголовки, которые упрощают криптоанализ.
Особенность переписки в мессенджерах в том, что из‑за типовых метаданных за короткое время атакующий может перехватить большой объем предсказуемого шифротекста. Его львиная доля будет соответствовать известному открытому тексту. Если она будет шифроваться одним ключом, то при успешной атаке окажутся скомпрометированными все ранее написанные сообщения и даже те, которые собеседники напишут в будущем.
Чтобы этого не происходило, в мессенджерах предусмотрены такие свойства, как прямая и обратная секретность. Они подразумевают невозможность прочитать отправленные ранее и написанные в будущем сообщения, имея на руках только текущий ключ шифрования. Для этого используется многослойное шифрование с переходом от асимметричной к симметричной криптографии и дополнительные ключи с разным временем жизни.

ДИФФИ, ХЕЛЛМАН! ДАЙТЕ ТРИ!
Из открытой документации https://core.telegram.org/api/end-to-end известно, что в Telegram аутентифицированное распределение ключей обеспечивает классический протокол Диффи — Хеллмана (DH). Он создает мост между асимметричным (RSA) и симметричным (AES) шифрованием, давая возможность энному количеству собеседников вести зашифрованную переписку, передав только публичные ключи по открытому каналу. Для этого в нем генерируются сессионные ключи, представляющие собой общий секрет или общий эфемерный ключ. Он вычисляется на основе секретного ключа одного собеседника и публичного ключа другого. Эфемерные ключи аутентифицируются долговременными открытыми ключами.

INFO
В DH канал передачи может быть не защищен от прослушивания (пассивного наблюдения), но обязан иметь защиту от атаки подмены. Если атакующая сторона может подменить трафик (выполнить активную атаку MITM), то вся схема летит к черту.

Поэтому для своего мессенджера Signal компания Open Whisper Systems использует метод тройного преобразования Диффи — Хеллмана X3DH https://signal.org/docs/specifications/x3dh/ c Curve25519 (эллиптическая кривая Бернстайна для быстрого DH) или X448 https://www.ietf.org/rfc/rfc7748.txt. В качестве других криптографических примитивов в X3DH используется HMAC-SHA-256 и AES-256.

Протокол Extended Triple Diffie — Hellman устанавливает общий секретный ключ между двумя сторонами, которые взаимно аутентифицируют друг друга на основе открытых ключей. Дополнительно ключи сверяются сразу после установки сессии и перед началом передачи сообщений. Это сводит к минимуму риск MITM-атак, делая их очень сложными.
В X3DH используются четыре типа ключей, три из которых постоянно меняются:
⚫ IK (identity keys). Секретные ключи, которые создаются один раз и служат основой для формирования всех остальных;
⚫ EK (ephemeral key). Эфемерный ключ, который нужен для проверки личности собеседника (без разглашения истинной);
⚫ SPk (signed public key, signed proof of knowledge) — по сути, это эфемерный ключ, подписанный секретным. Обычно в мессенджерах он меняется с частотой от одного дня до недели. Иногда вместо времени жизни SPk задают число сообщений, после которого он меняется;
OPK (one-time public key) — одноразовый эфемерный ключ. Он создается отправителем перед установкой сеанса связи и удаляется сразу после успешного «рукопожатия» (handshake).

НАСЛЕДИЕ ENIGMA
Смена вспомогательных ключей в X3DH происходит по алгоритму Double Ratchet. Он пришел на смену OTR и ввел понятие цепочки, или пула, ключей. На случай, если собеседник будет офлайн, предусмотрено создание пула OPK. Несколько разовых эфемерных ключей заранее загружаются на сервер и расходуются по мере общения. Это позволяет серверу принимать зашифрованные сообщения, аутентифицируя их отправителя по новой паре ключей, даже когда получатель не в сети. Если пул OPK исчерпан, то сервер использует запасной EK.
Название «двойной храповик» — отсылка к устройству шифровальной машины Enigma с зубчатыми колесиками, которые исключали обратное движение и повторное использование прежних значений. Цифровая аналогия в том, что DR используется для генерирования новых эфемерных ключей, которыми шифруется следующее сообщение (или небольшая порция сообщений). При этом эфемерные ключи гарантированно отличаются, не повторяют предыдущие и не могут быть предсказаны за разумное время атаки.

INFO
Подробнее о Double Ratchet читай в статье «Почему шифрование в Signal, WhatsApp, Telegram и Viber не защитит твою переписку от взлома».

На X3DH основан протокол TextSecure, который позже был переименован в Signal. В чистом или слегка модифицированном виде протокол Signal используется в одноименном мессенджере, а также в WhatsApp, Viber и других. Разработчики могут давать протоколам собственные названия, но по сути это все тот же X3DH с варьирующимся набором хеш‑функций, ГПСЧ и иных криптографических примитивов.

Проблема групповых чатов
Организация групповых чатов в мессенджерах подробно разобрана в свежей статье «More is Less: On the End-to-End Security of Group Chats in Signal, WhatsApp, and Threema» https://eprint.iacr.org/2017/713.pdf (PDF). Приведу основные выводы из нее.

Наш систематический анализ выявил, что целостность коммуникаций (представленная целостностью всех сообщений) и групповая принадлежность (определяемая возможностью членов группы управлять ими) не имеют end-to-end-защиты. Кроме того, мы показали, что обратная секретность (ключевое свойство безопасности) не сохраняется при использовании протокола Signal для групповых чатов.

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

image-23-07-19-03-46.jpg


Шифрование в групповых чатах. A — отправитель, B — получатель, G — группа пользователей

Авторы показывают, какие манипуляции может выполнять контролируемый злоумышленником сервер в групповых чатах из‑за отсутствия в них E2EE. Свои исследования они проводили на примере Signal и WhatsApp, но вряд ли стоит ожидать, что у других мессенджеров эта проблема имеет какое‑то изящное решение.

СТРАННОСТИ TELEGRAM
С Telegram все покрыто завесой тайны. О протоколе MTProto 2.0 есть только частичные сведения. Его внешний аудит не выполнялся, а опенсорсная модель Telegram используется в сильно искаженном виде и исключительно с маркетинговыми целями. Ниже я поясню, почему так считаю.
Судя по официальному описанию, все недоставленные сообщения временно (мы надеемся) хранятся на серверах Telegram, которые часто разбросаны по миру и объединены в виртуальное облако. Они синхронизируются между собой, чтобы упорядочить и доставить сообщения одному или нескольким (в случае группового чата) собеседникам в определенном порядке, как только они появятся в сети. Поэтому шифрование делится на два этапа: на участках клиент — сервер и сервер — сервер. Это обычная схема, но в ней странно то, что прямое соединение клиентов не используется вообще никогда.
В Telegram трафик передается через серверы даже при открытии секретного чата, для которого логичнее было бы сделать P2P-соединение. Напрашивается вывод, что без постоянного использования серверов Telegram связь в этом мессенджере вообще не работает. Другие мессенджеры могут использовать свои серверы только на начальном этапе — для сопоставления текущих IP-адресов собеседников и организации между ними прямого соединения. Telegram так не умеет, и это чертовски похоже на MITM by design.
Почему‑то все рассуждения о стойкости MTProto 2.0 крутятся вокруг того, что алгоритм DH надежно защищает от перехвата. Это не так. Алгоритм Диффи — Хеллмана как раз уязвим для атаки MITM. Более того, в случае Telegram он, вероятно, дополнительно ослаблен на уровне ГПСЧ.
Проблема в том, что клиентское приложение Telegram руководствуется очень невнятной оценкой энтропии. Вместо того чтобы локально генерировать псевдослучайные числа и отсеивать качественные простые, клиент запрашивает их с сервера. Что за ГПСЧ используется на сервере, насколько удачные простые числа он генерирует и нет ли на сервере механизмов избирательной отправки простых чисел с определенными свойствами отдельным клиентам — вопросы без ответа. Клиентское приложение лишь выполняет проверку присланного случайного числа, причем упрощенную, поскольку на тщательный тест prime numbers за разумное время у смартфона банально не хватит вычислительных ресурсов.
Другой частый аргумент в пользу безопасности Telegram — открытые исходники. Однако в них нет исходного кода серверной части, а код клиентской обычно неактуален. Репозитории Telegram обновляются с большой задержкой (разве что урезанная веб‑версия более‑менее живая), и в них всегда лежат только старые версии. Нет даже возможности проверить, действительно ли из исходников компилируется то, что сейчас раздается как готовый дистрибутив.
Поэтому говорить про аудит мессенджера фактически бессмысленно. Пока специалисты несколько месяцев копаются в старом коде, выйдет десяток новых версий Telegram, где будут переписаны огромные куски кода. Чтобы сделать уязвимой всю систему шифрования, достаточно замены одного байта — например, одного условного перехода.
Хакатоны, которые устраивает Дуров, не заменят аудит, поскольку ничего не доказывают. В их заданиях создается искусственная ситуация, в которой у атакующей стороны есть только одно зашифрованное сообщение. В реальной жизни таких ограничений нет и для атаки на мессенджер есть множество других векторов.

ТЫСЯЧА И ОДНА УЯЗВИМОСТЬ
Signal — один из немногих мессенджеров, чей протокол проходил внешний аудит (PDF). Отчет о его результатах очень объемный, поэтому процитирую главные выводы в своем переводе.

Наш анализ показывает, что [протокол] Signal удовлетворяет стандартным криптографическим предположениям и свойствам безопасности. Мы не обнаружили серьезных недостатков в его дизайне, что очень обнадеживает. При реальном использовании Signal остаются неопределенности. Поэтому невозможно сказать, всегда ли [приложение] Signal достигает заявленных целей.


Нужно осознавать, что анализ протокола передачи сообщений — важный этап аудита, но далеко не единственная составляющая безопасности. Любой мессенджер работает в реальной и очень уязвимой среде. Обычно он запускается на не самой свежей версии Android, параллельно с сотней левых приложений (часть из которых наверняка злоупотребляют разрешениями или даже содержат троянские закладки), а сам аккаунт привязан к номеру мобильного телефона.

Огромная брешь заключается в том, что коды подтверждения приходят в SMS. Их можно перехватить через известную уязвимость в протоколе сотовой связи SS7. Так атакующий получит доступ ко всей переписке, не зная ключей шифрования и даже не пытаясь взломать Signal/Proteus/MTProto (или иной секьюрный протокол). Сервер мессенджера сам сменит ключ и услужливо дешифрует последнюю переписку (как минимум, недоставленные сообщения). Даже твои стикерпаки восстановит. Главное же — удобство, верно?

Еще одна зияющая дыра в модели безопасности — push-уведомления. Без них ты не узнаешь, что тебе пришло сообщение, пока вручную не запустишь мессенджер. С ними ты превращаешь сервер push-уведомлений в легализованного «человека посередине». Например, чтобы в iMessage работали уведомления, он отправляет ключи шифрования на серверы Apple. Уже они выполняют аутентификацию пользователей и (как минимум) дешифровку заголовков сообщений. Восстанови учетку Apple на другом устройстве, и ты получишь все как было — вплоть до переписки и паролей от Wi-Fi. Почти такая же ситуация с серверами Google и Microsoft. Или ты еще веришь в сквозное шифрование с привязкой к номеру мобильного и основному аккаунту на смартфоне?

Проблема небезопасного управления ключами и большой поверхности атаки касается вообще всех мессенджеров. WhatsApp, Viber и многие другие позволяют создавать копии переписки (в том числе облачные) и не шифруют метаданные (а иногда сам факт разговора важнее его содержания). У Signal дела обстоят чуть лучше, но и его я не считаю идеальным мессенджером по целому ряду причин:
Во‑первых, Signal также использует гугловский сервис push-уведомлений. Поэтому на смартфоне без сервисов Google (например, все китайские модели для внутреннего рынка без GApps) он просто не работает.
Во‑вторых, для голосового общения в Signal используется закрытый сервер RedPhone.
В‑третьих, Signal (как и многие другие мессенджеры) позволяет открыть параллельную сессию на другом устройстве, просто отсканировав QR-код.
В‑четвертых, на HITBSecConf2017 рассказали про ряд концептуальных проблем Signal и продемонстрировали успешную атаку на него.

XMPP
Как видишь, сторонним и тем более проприетарным мессенджерам доверять сложно, даже если их рекомендовали Сноуден, Ассанж и EFF. Поэтому некоторые организуют общение через свой мессенджер — с опенсорсом и плагинами. Для простой переписки годится плагин OTR, но он не поддерживает групповые чаты. Есть родственные протоколы mpOTR и GOTR, в которых добавлена эта функция.
Так или иначе, для коллективного общения удобнее использовать открытый протокол XMPP (Extensible Messaging and Presence Protocol), который ранее назывался Jabber. XMPP переводится как «расширяемый протокол обмена сообщениями и информацией о присутствии», это очень емкое название. Открытость означает полную доступность исходных кодов. Ты можешь поднять свой сервер XMPP, ни от кого не зависеть и ничего за это не платить. Также есть уйма готовых серверов и клиентов на любой вкус — например, десктопный Pidgin и Xabber для Android.
Расширяемость подразумевает возможность передачи не только текста, но и данных другого типа, а также добавление разных функций и схем шифрования. Например, по XMPP легко передать голосовые сообщения, видео и файлы, при желании зашифровав их средствами TLS или PGP. Не так давно на базе XMPP был создан протокол расширения OMEMO https://conversations.im/omemo, в котором используется тот же DR от Open Whisper Systems, что и в Signal и WhatsApp, но без прочих недостатков последних.

ВЫВОДЫ
В современных мессенджерах заявлена поддержка сквозного шифрования, но часто оказывается, что она реализована со странностями. К тому же в их коде много других дыр, которые были оставлены случайно либо намеренно. Последнее куда вероятнее, если учесть, сколько денег и труда профессионалов было вложено в их разработку. Я стараюсь соблюдать баланс между комфортом и привычным наслаждением паранойей. Использую разные мессенджеры (какие удобнее моим собеседникам), но никогда не веду через них действительно приватных бесед. Для этого есть множество опенсорсных альтернатив. Помимо Xabber, пользователям Android я бы рекомендовал присмотреться к Conversations — свободному XMPP-клиенту с поддержкой OTR, OMEMO, openPGP и SOCKS5.

О выборе мессенджера: carder.market/showthread.php?t=90091
 
Silence https://silence.im/#download — мессенджер, который предназначен для обмена зашифрованными SMS и MMS сообщениями и работает там, где нет доступа к интернету, а есть лишь мобильная сеть.

Изначально был частью мессенджера Signal, но сейчас это свободный проект с открытым исходным кодом.

Только для пользователей Android.

---

Delta Chat https://delta.chat/ru/ — децентрализованный мессенджер поверх электронной почты со сквозным шифрованием, реализованным посредством протокола Autocrypt https://en.wikipedia.org/wiki/Autocrypt Открытый исходный код.

Особенности:

1. У Delta Chat нет единого сервера или инфраструктуры — приложение подключается к любому серверу электронной почты, выбранному вами;

2. Адресатом может быть любой владелец электронной почты, даже если он пока не установил себе Delta Chat;

3. Отображение отметок о прочтении и статусе доставки и быстрые уведомления функционируют благодаря протоколу Push-IMAP https://en.wikipedia.org/wiki/Push-IMAP

---

Dino https://dino.im/ — десктопный безопасный мессенджер, похожий на CoyIM. Передача данных основана на протоколе XMPP, точнее на его расширении OMEMO https://ru.wikipedia.org/wiki/OMEMO, посредством которого и реализовано сквозное шифрование. Открытый исходный код https://github.com/dino/dino/

Dino также поддерживает OpenPGP.

---

Protox https://play.google.com/store/apps/details?id=org.protox&hl=ru — еще один анонимный мессенджер с поддержкой E2E шифрования. Для того, что бы начать диалог, необходимо или ввести идентификатор собеседника, или считать его QR-код.

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

В основе Protox лежит протокол Tox, который обеспечивает голосовую и видеосвязь, возможность отправлять мгновенные сообщения и передавать файлы и другие фичи.

Для каждой ОС разработчики придумали свое клиентское приложение. Программы qTox https://qtox.github.io/ru.html и μTox https://utox.org/ — это десктопные версии, Protox https://play.google.com/store/apps/details?id=org.protox&hl=ru https://play.google.com/store/apps/details?id=chat.tox.antox — мобильная версия для Android, а Antidote https://apps.apple.com/app/apple-store/id933117605 предназначен для пользователей iOS.

---

CoyIM https://coy.im/ — защищенный мессенджер с шифрованием и функцией секретных чатов. Передача данных основана на протоколе XMPP, точнее на его расширении OMEMO https://ru.wikipedia.org/wiki/OMEMO, посредством которого и реализовано сквозное шифрование.

К слову, это тот самый мессенджер, который советуют разработчики Tor Messenger https://xakep.ru/2018/04/03/rip-tor-messenger/, который так и не был реализован.

Пожалуй, самый главный недостаток CoyIM - это отсутствие Android версии.

---

Safe Text https://safe-text.com/ — еще один анонимный мессенджер с Е2Е шифрованием, возможностью удаления сообщений у собеседника (даже таймер можно ставить) и запретом на скриншоты.

Все сообщения автоматически удаляются из переписок в течении 24 часов или меньше, можно настроить.

Веб клиент https://client.safe-text.com/

Скачать для iOS https://apps.apple.com/us/app/safe-text/id1031914272

Скачать для Android https://play.google.com/store/apps/details?id=com.imd.safetext&hl=en

---

Rocket.chat https://rocket.chat/ — это платформа для общения в чатах + осуществления VoIP звонков. Есть экспериментальное Е2E шифрование. Открытый исходный код https://github.com/rocketchat/

Скачать для Android https://play.google.com/store/apps/details?id=chat.rocket.android

Скачать для iOS https://apps.apple.com/app/rocket-chat/id1148741252

Скачать для Windows, Linux, Mac https://rocket.chat/install

---

Element (бывший Riot) https://element.io/get-started — еще один малоизвестный федеративный мессенджер с поддержкой и синхронизацией чатов E2EE, в том числе групповых.

Регистрация анонимная, без привязки к номеру мобильного телефона или почте. Поддерживается голосовая связь и видеозвонки. Работает по протоколу Matrix https://ru.wikipedia.org/wiki/Matrix

Скачать в App Store https://apps.apple.com/app/vector/id1083446067

Скачать в Google Play https://play.google.com/store/apps/details?id=im.vector.app

Скачать Desktop версию https://element.io/get-started

---

Jami https://jami.net/ — децентрализованный мессенджер, использующий сквозное шифрование во всех чатах с применением криптографического протокола TLS 1.3.

По заявлению разработчиков сообщения хранятся только на устройствах пользователей. Есть функция видеозвонков.
 
Last edited:
Приветствую друзья! Мы исследовали приватность и безопасность самых популярных мессенджеров. Настало время пристально изучить их менее распространенных, но оттого не менее интересных конкурентов, претендующих на более серьезную защищенность.

Критерии оценки​

Здесь мало что изменилось по сравнению с предыдущим исследованием. Я убрала проверку на блокирование скриншотов (это все равно слишком легко обойти), но добавила пункты о возможности использования одной учетной записи сразу на нескольких устройствах и проверку на то, могут ли передаваться сообщения каким-либо способом, кроме как в интернете.

  • FOSS — доступен ли исходный код по свободной лицензии, как разработчики взаимодействуют с сообществом, принимают ли патчи.
  • Степень централизации — требуется ли наличие центрального сервера, который можно заблокировать, используется ли сеть серверов, или каждый клиент является одновременно и сервером (P2P).
  • Возможность анонимной регистрации и использования — есть ли привязка к телефону, и используются ли иные методы «жесткой аутентификации».
  • Наличие End-to-End Encryption (E2EE) — некоторые мессенджеры имеют такую функцию по умолчанию, в других ее можно включить, но попадаются и те, где сквозного шифрования просто нет.
  • Синхронизация End-to-End encrypted чатов — наличие этой функции сильно упрощает жизнь, но технически реализовать ее непросто, и встречается она редко.
  • Необходимость проверки отпечатков E2EE (в том числе в групповых чатах) — не все мессенджеры имеют функцию проверки отпечатков, некоторые не предлагают делать это открыто. Групповые чаты без проверки отпечатков собеседников перестают быть приватными.
  • Групповые E2EE-чаты — интересная функция, которая позволяет шифровать переписку между несколькими пользователями.
  • Возможность добавления устройств — использовать одну и ту же учетную запись на разных устройствах бывает не просто удобно, а необходимо.
  • Защита социального графа — важно, собирает ли мессенджер информацию о контактах пользователя и другие данные.
  • Альтернативные способы передачи данных — проверка возможности передавать сообщения каким-либо способом, кроме как через интернет.

Wickr​

Официальный сайт

Лицензия: проприетарный клиент, открытый протокол (исходники)

Централизация: централизованный

Анонимность: регистрация доступна без номера телефона, но при желании можно его добавить

E2EE: есть, по умолчанию

Синхронизация E2EE: нет, при входе в учетную запись с другого девайса предыдущая переписка не сохранилась

Проверка отпечатков: можно отправить собеседнику короткое видео со своим лицом, чтобы он мог убедиться, что ты — это ты, но никакого уведомления об этом нет. И эта функция в программе спрятана слишком глубоко

Возможность добавления устройств: есть

Групповые E2EE-чаты: есть

Уведомление о проверке E2EE: уведомлений нет, возможность есть

Защита социального графа: приложению можно разрешить доступ к списку контактов (делать это, конечно, не стоит)

Альтернативные способы передачи данных: нет

Мессенджер, основанный на блокчейне, — по уверениям разработчиков, анонимный на 100%. Переписка осуществляется через серверы, но все сообщения удаляются как с них, так и с компьютеров, смартфонов и других девайсов, при этом пользователь может сам настроить продолжительность хранения истории сообщений.

wickr1.jpg


Вся передаваемая информация может шифроваться с использованием стандартов (AES-256, ECDH-521, RSA-4096 TLD). Ради пущей безопасности для каждого нового сообщения формируется свой ключ. Вся переписка пользователей обезличена — сообщения не содержат имен отправителя, получателя и геометок.

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

Интересно, что этот мессенджер используется в некоторых государственных и правительственных учреждениях. Хорошо это или плохо, сказать сложно.





Tox (Antox)​

Antox в Google Play

Лицензия: GPLv3 (исходники)

Централизация: децентрализованный

Анонимность: да

E2EE: есть, по умолчанию

Синхронизация E2EE: нет

Проверка отпечатков: чтобы начать диалог, необходимо или ввести идентификатор собеседника, или считать его QR-код

Возможность добавления устройств: можно импортировать профиль c одного смартфона на другой

Групповые E2EE-чаты: есть

Уведомление о проверке E2EE: в групповой чат может добавиться любой пользователь, который знает его ID, без предварительной проверки отпечатков

Защита социального графа: есть

Альтернативные способы передачи данных: нет

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

tox1.jpg

tox2.jpg

ToxВ основе Antox лежит протокол Tox, который обеспечивает голосовую и видеосвязь, возможность отправлять мгновенные сообщения и передавать файлы, режим конференции с несколькими участниками, а также другие фичи, присущие практически каждому современному мессенджеру. А главное — в нем отсутствует реклама.

antox1.jpg

Antox
Для каждой ОС разработчики придумали свое клиентское приложение. Программы qTox и μTox — это десктопные версии, Antox — мобильная версия для Android, а Antidote предназначен для пользователей iOS. Я рассмотрела только Antox, оценить преимущества и недостатки реализаций мессенджера для других платформ ты можешь самостоятельно.



Jami​

Официальный сайт

Лицензия: GPLv3 (исходники десктопной версии, исходники клиента для Android)

Централизация: децентрализованный

Анонимность: да

E2EE: есть, по умолчанию

Синхронизация E2EE: нет — переписки, предшествовавшие моменту входа в аккаунт с нового устройства, не синхронизировались

Проверка отпечатков: чтобы добавить контакт, можно отсканировать QR-код, но можно найти контакт по нику или по идентификатору телефона. Под идентификатором телефона подразумевается последовательность из сорока символов, которая служит идентификатором пользователя. Можно также поделиться своими контактными данными через любой другой мессенджер, почту или передать их по Bluetooth

Возможность добавления устройств: к одному устройству с помощью генерируемого пин-кода можно привязать несколько аккаунтов

Групповые E2EE-чаты: нет

Защита социального графа: есть

Альтернативные способы передачи данных: нет

Jami — это полностью опенсорсный мессенджер, код которого публикуется по лицензии GPLv3. Программа выросла из проекта SFLphone.

ring1.jpg


Раньше эта программа называлась Ring, но за время написания статьи ее успели переименовать в Jami. Возможно, разработчики сделали это, чтобы избежать путаницы с другим мессенджером под таким же названием, который не попал в мой список.

Как и любой другой мессенджер, Jami поддерживает отправку текстовых сообщений, безопасные и надежные аудио- и видеозвонки, а также передачу документов и файлов.

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



Chat.Onion​

Страница с описанием

Лицензия: исходники открыты, без лицензии

Централизация: децентрализованный

Анонимность: да, пользователю сразу присваивается идентификатор

E2EE: да, по умолчанию

Синхронизация E2EE: нет

Проверка отпечатков: чтобы добавить собеседника, необходимо отсканировать его QR-код и дать ему отсканировать свой

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

Групповые E2EE-чаты: нет

Защита социального графа: есть

Альтернативные способы передачи данных: нет

Этот мессенджер основан на onion-маршрутизации, которая используется в браузере Tor. Она позволяет скрыть IP-адрес пользователя, метаданные и любую другую идентифицирующую информацию. Для этого каждое сообщение передается между несколькими прокси-серверами в рандомном порядке, прежде чем достигнет адресата. Анонимность обеспечивается благодаря тому, что каждый сервер «знает», только откуда пришло сообщение и куда его надо отправить дальше.

onion1.jpg


Каждому пользователю присваивается ID, состоящий из 16 символов, но для упрощения жизни можно просто отсканировать QR-код собеседника.

Само приложение порадовало своим минимализмом, как и сайт разработчиков.

Firechat​

Официальный сайт

Лицензия: проприетарный

Централизация: децентрализованный

Анонимность: и да и нет. Свои данные вроде номера телефона указывать не надо, но вот примерное местоположение пользователя можно определить

E2EE: есть

Синхронизация E2EE: при выходе из приложения можно импортировать ключи, чтобы иметь возможность затем дешифровать сообщения

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

Возможность добавления устройств: есть

Групповые E2EE-чаты: есть

Защита социального графа: вроде бы есть, но то, что в «общую комнату» по умолчанию объединяются пользователи, находящиеся на небольшом расстоянии друг от друга, не очень-то сочетается с безопасностью

Альтернативные способы передачи данных: по Bluetooth и Wi-Fi

Проприетарный мессенджер, созданный в компании Open Garden. Работает весьма необычным способом: объединяет всех пользователей мессенджера, находящихся на расстоянии 200 шагов друг от друга, в одну сеть посредством Bluetooth или Wi-Fi. Обычное подключение к интернету ему не требуется.

firechat1.jpg

firechat2.jpg

Сложно сказать, как соотносится с безопасностью такой режим работы. Возможно, если очень постараться, получится определить личности пользователей, например методами социальной инженерии. Ну и для общения с приятелем, живущим в другой стране, этот мессенджер никак не подходит.

Интерфейс приложения крайне неочевидный, особенно если учесть необычный способ коммуникации. И ситуаций, когда подобная программа может пригодиться, не так много, разве что координация митингов и забастовок. Но если такое приложение создано и его разработка продолжается, значит, спрос есть.

Адамант​

Официальный сайт

Лицензия: GPLv3 (исходники)

Централизация: децентрализованный

Анонимность: есть

E2EE: есть

Синхронизация E2EE: есть

Проверка отпечатков: можно отсканировать QR-код собеседника или ввести его идентификатор

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

Групповые E2EE-чаты: нет

Уведомление о проверке E2EE: нет

Защита социального графа: есть

Альтернативные способы передачи данных: нет

Еще один мессенджер, основанный на блокчейне. Создан он в России и имеет большую рекламную поддержку, не побоюсь сказать, со всех заинтересованных сторон.

adamant1.jpg


По уверениям разработчиков, его приватность максимальна, непонятно только, по сравнению с чем. При регистрации не нужно вводить никакой персональной информации. История сообщений не хранится на устройстве, а загружается из блокчейна, поэтому доступ к переписке возможен сразу с нескольких устройств пользователя — в этом как раз и заключается основной смысл технологии.

В мессенджере также предусмотрена возможность отправлять собеседникам криптовалюту, а именно ADM, ETH и BNB, причем разработчики обещают расширить этот список. Правда, актуальность этой фичи остается под вопросом, учитывая резкое падение биткойна, а следом за ним и других криптовалют.

При регистрации новому юзеру сразу присваивается ID мессенджера и адрес, по которому можно получить криптовалютный перевод, а также начисляется поощрительный приз в размере 0,1 ADM.

Cyphr​

Официальный сайт

Лицензия: проприетарный

Централизация: централизованный

Анонимность: зарегистрироваться можно только по адресу электронной почты

E2EE: есть (сообщение отправится, только если собеседник будет онлайн)

Синхронизация E2EE: есть

Проверка отпечатков: нет

Возможность добавления устройств: есть

Групповые E2EE-чаты: есть. Сообщение отправится, только если все собеседники будут онлайн

Уведомление о проверке E2EE: нет

Защита социального графа: есть

Альтернативные способы передачи данных: нет

Этот мессенджер разрабатывают в компании Golden Frog, и он проприетарный. Конечно, его создатели обещают не хранить на своих серверах связанные с пользователями метаданные и называют свое приложение zero-knowledge.

cyphr1.jpg

cyphr2.jpg

Но все же, несмотря на эти уверения, кое-что будет храниться на сервере до того, как адресат получит сообщение. А именно — само сообщение в зашифрованном виде, время его отправки и имя адресата, то есть данные, которые необходимы для успешной передачи сообщения. Сообщения шифруются с помощью 256-битного симметричного шифрования.

В общем, в Cyphr хорошо практически все, кроме закрытых исходников.

Silence​

Официальный сайт

Лицензия: GPLv3 (исходники)

Централизация: децентрализованный

Анонимность: нет, SMS-сообщения отправляются на номер телефона

E2EE: есть

Синхронизация E2EE: нет

Проверка отпечатков: есть

Возможность добавления устройств: нет, при установке приложения не создается учетная запись, а идет привязка к телефонному номеру

Групповые E2EE-чаты: нет

Защита социального графа: нет (у оператора останется информация о факте отправки SMS-сообщения)

Альтернативные способы передачи данных: нет

Мессенджер, отколовшийся от проекта Signal, который в свое время вырос из мессенджера TextSecure. Его особенность заключается в том, что шифрует он только SMS-сообщения. Из-за этого Silence выделяется из общего списка рассматриваемых мною мессенджеров, но тем не менее он весьма интересен. Silence можно установить на телефон под управлением Android в качестве основного приложения для отправки и приема SMS-сообщений.

silence1.jpg


Этот мессенджер работает там, где нет доступа к интернету или где возможности его использования ограничены. Но доступен Silence только для Android, версии для iOS не существует в природе.

Итоги​

В этот раз дела в целом обстоят получше: у всех рассмотренных мессенджеров как минимум есть функция шифрования переписки. Рекомендовать какой-то конкретный из них не буду: лучше выбирай то, что тебе ближе и удобнее. Моя цель более скромная — помочь сориентироваться в многообразии мессенджеров.

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

messengers-table3.jpg


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

В этом посте мы пройдемся по списку современных мессенджеров и посмотрим, какие гарантии защиты есть у каждого из них.

Не так давно я заглянула полистать статьи в журнале «Хакер» и наткнулась на опрос «Какой мессенджер ты считаешь самым надежным для хакера?». Самый популярный ответ (Telegram) меня насторожил. Тогда я поняла, что все это зашло слишком далеко и даже средний читатель «Хакера» уже потерял связь с реальностью после атаки маркетинг-хедкраба (на картинке).

edward-snowden.jpg

Крабе отаке!!1
Я решил составить список мессенджеров и посмотреть, как у каждого из них обстоят дела с безопасностью. В список пошли как популярные, так и перспективные в плане безопасности программы. Сразу предупреждаю, что углубляться в техническую сторону мы будем настолько, насколько это необходимо для среднего пользователя, не дальше.

Во многом я повторила путь авторов серии статей Electronic Frontier Foundation под названием Secure Messaging Scorecard, но выбрала другие критерии — на мой взгляд, более важные.

Критерии​

FOSS​

Распространяется ли исходный код мессенджера на условиях одной из свободных лицензий? Если да, то ведется ли разработка открытым методом? Насколько тесно разработчики взаимодействуют с сообществом? Принимают ли pull request’ы? Все это важно учитывать при выборе.

Степень централизации​

Здесь возможен один из трех вариантов:
  • централизованный — требует сервера, возможно заблокировать. Пример: VK, Telegram, Facebook;
  • федеративный — сеть из серверов, которые общаются друг с другом. Каноничные примеры: Email, Jabber (XMPP), Riot Matrix;
  • децентрализованный (имеется в виду P2P) — каждый клиент является одновременно и сервером.

Возможность анонимной регистрации и использования​

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

В остальных случаях мессенджер плотно привязан к телефону. Это плохо тем, что если не включена двухфакторная аутентификация, то при получении доступа к этому номеру можно зайти в аккаунт и слить все данные. Но даже если двухфакторка включена, все равно остается возможность удалить все данные с аккаунта. Ну и конечно, это, считай, регистрация по паспорту (используем реалии РФ, других не завезли).

Но не все так плохо. Есть мессенджеры, которые позволяют регистрироваться с использованием почтового ящика или учетной записи в социальной сети. Есть и такие, где учетную запись можно создать в самом мессенджере без привязки к чему-то.

Наличие End-to-End Encryption (E2EE)​

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

Синхронизация E2EE-чатов​

Опять же эта функция пока что встречается не так часто, как хотелось бы. Ее наличие сильно упрощает жизнь.

Уведомление о необходимости проверки отпечатков E2EE​

При старте E2EE-чатов некоторые мессенджеры предлагают проверить отпечатки собеседников, другие не предлагают это открыто. Но не все мессенджеры имеют функцию проверки отпечатков.

Запрет делать скриншот секретного чата​

Не самая полезная функция, потому что для обхода запрета достаточно, например, иметь под рукой второй телефон.

Групповые E2EE-чаты​

Групповые E2EE-чаты обычно не такая уж необходимая функция, но весьма удобная. Правило «больше двух — говори вслух» стоит оставить для детей.

Уведомление о необходимости проверки отпечатков E2EE в групповых чатах​

При добавлении нового собеседника, с которым не сверены отпечатки, в секретный групповой чат не все мессенджеры предлагают проверить его отпечатки. Из-за такого упущения теряется смысл секретных чатов.

Защита социального графа​

Некоторые мессенджеры собирают информацию о контактах пользователя и другую метаинформацию, например кому звонил пользователь, как долго разговаривал. На эту тему есть интересная заметка.

Telegram​

Лицензия: формально — GPLv3. Однако важная часть разработки закрыта. Если взглянуть на репозитории, то видно, что в последнее время какое-то движение наблюдалось только в вебовой версии. Увы, в таком виде это скорее иллюзия открытости

Степень централизации: централизованный

Возможность анонимной регистрации и работы: нет

Наличие E2EE: реализованы, но как дополнение. По умолчанию чаты не шифруются

Синхронизация E2EE-чатов: нет. Секретный чат можно использовать только с одного устройства, с другого доступа к нему уже не будет

Уведомление о проверке отпечатков E2EE: нет. Пользователи могут сами зайти в настройки, чтобы сравнить отпечатки

Запрет на скриншоты секретных чатов: есть, но работает не на всех устройствах

Групповые чаты E2EE: нет

Защита социального графа: нет

tlg1.jpg

Мессенджер, созданный командой Павла Дурова, построен на технологии шифрования переписки MTProto. На данный момент частично заблокирован на территории России, но эта блокировка — отдельная тема для разговора.

Мессенджер неоднозначный. Вокруг него много шума, но оправдан ли он? Доступа к исходникам нет, чаты по умолчанию не шифруются, нет защиты социального графа (все твои контакты хранятся на серверах Telegram), нет групповых E2EE-чатов, E2EE-чаты не поддерживаются в настольной версии программы, только в мобильной, мессенджер централизованный, сообщения хранятся на сервере (и они, как уже было отмечено, не зашифрованы), и при всем этом отсутствует возможность анонимной регистрации.

Если ты хочешь использовать Telegram, то для защиты переписки не забывай создавать секретные чаты. В мобильной версии для этого нужно выбрать команду New Secret Chat. Из настольных версий секретные чаты поддерживают только некоторые (например, один из двух клиентов для macOS).

В секретном чате сообщения шифруются и не хранятся на серверах мессенджера. Также нельзя сделать скриншот секретного чата, но ничто не мешает сфотографировать такой чат с экрана.

Signal​

Лицензия: AGPLv3

Степень централизации: децентрализованный

Возможность анонимной регистрации и работы: нет. Кроме номера телефона, других вариантов нет. Использование временного приведет к тому же результату, что и в случае с Telegram

Наличие E2EE: есть. Используется Signal Protocol — специально разработанный для этого мессенджера протокол шифрования сообщений

Синхронизация E2EE-чатов: есть

Уведомление о проверке отпечатков E2EE: нет. Пользователям предлагается сосканировать QR-коды друг у друга или сравнить отпечатки

Запрет на скриншоты секретных чатов: можно включить или выключить

Групповые чаты E2EE: есть

Уведомление о необходимости проверки отпечатков E2EE в групповых чатах: нет

Защита социального графа: есть

signal1.jpg

Мессенджер Signal разработан американским стартапом Open Whisper Systems, где, кроме двоих основателей, работает всего несколько человек. Для шифрования сообщений используется созданный специально для него криптографический протокол — Signal Protocol. Он применяется для сквозного (end-to-end) шифрования звонков (голосовых и видео), а также обычных сообщений. Протокол Signal с тех пор стали использовать и другие мессенджеры: WhatsApp, Facebook Messenger, Google Allo.

Казалось бы, в этом случае любой мессенджер может стать таким же безопасным, как и Signal. Но, как показывает практика, — нет. В отличие от Signal, где шифрование включено по умолчанию, в этих мессенджерах оно выключено. Для его включения в Facebook Messenger нужно активировать Secret Conversations, а в Google Allo — режим инкогнито (Incognito Mode).

Помимо этого, Signal децентрализованный, а его исходные коды открыты. Есть поддержка групповых E2EE-чатов, есть защита социального графа, поддерживаются исчезающие по таймеру сообщения.

Однако не стоит путать защиту с анонимностью. Signal не анонимен: при регистрации нужно указывать номер телефона, к которому мессенджер и привязывается. Что касается исчезающих сообщений, то эта фишка встречается и в других мессенджерах, например в Viber и Telegram (в меню секретного чата нужно выбрать команду Set self-destruct timer).

Нужно ли в мессенджерах уведомление о смене ключа?

Viber​

Лицензия: проприетарная

Степень централизации: централизованный

Возможность анонимной регистрации и работы: только по номеру телефона

Наличие E2EE: есть, по умолчанию. Также есть секретные и скрытые чаты, которые обеспечивают дополнительную безопасность

Синхронизация E2EE-чатов: нет. Созданный в мобильной версии секретный чат не отобразился в десктопной версии

Уведомление о проверке отпечатков E2EE: для проверки отпечатков предлагается совершить звонок собеседнику, сообщить свой идентификатор, после чего подтвердить его корректность, но уведомления, что это необходимо для обеспечения собственной безопасности, нет

Запрет на скриншоты секретных чатов: есть

Групповые чаты E2EE: есть

Уведомление о необходимости проверки отпечатков E2EE в групповых чатах: нет

Защита социального графа: нет

viber1.jpg

viber2.jpg

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

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

Для перехода в секретный чат нужно открыть чат с пользователем и выбрать из его меню команду «Перейти в секретный чат». Такой чат будет отмечен замком.

Дополнительно Viber позволяет создавать скрытые секретные чаты — они не будут отображаться в общем списке. Чтобы получить доступ к скрытому чату, нужно ввести установленный ранее PIN-код. Это дополнительная защита на тот случай, если телефон попадет в чужие руки.



WhatsApp​

Лицензия: проприетарная

Степень централизации: централизованный

Возможность анонимной регистрации и работы: только по номеру телефона

Наличие E2EE: по умолчанию

Синхронизация E2EE-чатов: есть

Уведомление о проверке отпечатков E2EE: есть только в случае смены ключа собеседником. Чтобы уведомление пришло, необходимо зайти в настройки и включить эту функцию. При старте чата никаких уведомлений нет

Запрет на скриншоты секретных чатов: нет

Групповые чаты E2EE: есть

Уведомление о необходимости проверки отпечатков E2EE в групповых чатах: нет

Защита социального графа: нет

whats1.jpg

whats3.jpg

whats2.jpg

WhatsApp использует Signal Protocol, но это само по себе не дает никаких гарантий. Конечно, этот мессенджер интересен тем, что не хранит твои сообщения на своих серверах. Вместо этого сообщения хранятся на телефоне (а также в облачных сервисах, с которыми он синхронизирован, например iCloud). Также E2EE используется по умолчанию с поддержкой групповых чатов.

Однако хоть WhatsApp и не получает самой переписки, его владельцы имеют доступ к метаданным, в том числе собирают телефонные номера из адресной книги, время отправки сообщений и звонков и так далее. Представь, что в 2:30 ты звонил в «секс по телефону» и твой разговор длился 24 минуты. Ну да, никто не узнает, как конкретно шла беседа, но это в данном случае не очень-то и нужно.

Кроме этого, WhatsApp собирает тонны информации о пользователе: модель его телефона, ОС, информацию, полученную от браузера, IP-адрес, мобильный номер и так далее.

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

Наличие сквозного шифрования — еще не гарантия того, что переписка не будет перехвачена. Его можно обойти либо проэксплуатировать какую-то уязвимость, как это уже было в случае с WhatsApp.

Briar​

Лицензия: GPLv3

Степень централизации: децентрализованный

Возможность анонимной регистрации и работы: есть

Наличие E2EE: есть, по умолчанию

Синхронизация E2EE-чатов: нет

Уведомление о проверке отпечатков E2EE: при добавлении контакта необходимо сосканировать QR-код собеседника с экрана его телефона, другого варианта добавить его нет. Считаем, что уведомление есть

Запрет на скриншоты секретных чатов: есть

Групповые чаты E2EE: есть

Уведомление о необходимости проверки отпечатков E2EE в групповых чатах: в групповой чат можно добавить только собеседника из тех, чьи QR-коды уже проверены. Также считаем, что уведомление есть

Защита социального графа: есть

briar1.jpg

Briar — не очень популярный мессенджер, и готов поспорить, что далеко не все наши читатели знают о его существовании. Однако он хорош: основан на технологии децентрализованных сетей (mesh), может работать по Bluetooth или Wi-Fi либо через интернет, но в таком случае он подключится через Tor.

Исходники Briar открыты, есть возможность анонимной регистрации и использования, а чаты шифруются по умолчанию, причем не хранятся на серверах Briar (то есть твои сообщения в зашифрованном виде хранятся только на твоем телефоне). Есть защита социального графа (никто никому не сливает твою адресную книгу), есть групповые E2EE-чаты, но нет синхронизации E2EE-чатов между устройствами, поскольку нет возможности использовать одну и ту же учетку на разных устройствах.

На фоне всех остальных мессенджеров Briar выглядит очень неплохо, если нужна анонимность общения. Но у него есть и недостатки: нет версии для iPhone, нет возможности голосовых звонков. Если с отсутствием звонков еще можно мириться, то без версии для одной из крупных платформ круг общения окажется еще более узким.

ТамТам​

Лицензия: проприетарная

Степень централизации: централизованный

Возможность анонимной регистрации и работы: возможна регистрация с использованием почты Google или через «Одноклассники»

Наличие E2EE: нет

Защита социального графа: нет

При создании «ТамТама» никто не делал упор на безопасность, и об этом нужно помнить. Внимание к нему может привлечь разве что возможность регистрации через почту Google или «Одноклассники». Однако шифрование сообщений не поддерживается (или разработчики об этом не сообщают), и нет защиты социального графа. То есть, как бы ты ни регистрировался, без дополнительных мер все равно будет понятно, кто ты. В общем, даже как замена для «Телеграма» этот мессенджер не годится, несмотря на все чаяния его разработчиков.

Вконтакте​

Лицензия: проприетарная

Степень централизации: централизованный

Возможность анонимной регистрации и работы: только по номеру телефона

Наличие E2EE: нет

Защита социального графа: нет

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





Facebook Messenger​

Лицензия: проприетарная

Степень централизации: централизованный

Возможность анонимной регистрации и работы: есть. Регистрация в «Фейсбуке» возможна с использованием электронной почты, а вход в Messenger — через учетную запись Facebook

Наличие E2EE: есть, но не по умолчанию

Синхронизация E2EE-чатов: нет

Уведомление о проверке отпечатков E2EE: нет. Но собеседники могут сравнить отпечатки друг друга

Запрет на скриншоты секретных чатов: нет

Групповые чаты E2EE: нет

Защита социального графа: нет

fsb1.jpg

fsb2.jpg

Мессенджер, прилагающийся к Facebook, построен на основе открытого протокола MQTT. На всякий случай напомню, что это именно протокол обмена сообщениями — не путать с протоколом шифрования. После того как на мобильных телефонах Messenger выселили в отдельное приложение, у пользователей Facebook оставалось мало выбора, кроме как установить еще и его. Однако регистрироваться в «Мессенджере» можно и без аккаунта в FB.

Если сравнивать чаты «Вконтакте» и Facebook Messenger, то второй оказывается на голову выше. Во-первых, можно регистрироваться с анонимной почтой. Во-вторых, поддерживаются E2EE-чаты, но не по умолчанию. Для включения шифрования сообщений нужно активировать Secret Conversations.

Однако помни, что Facebook собирает очень много всевозможной информации о пользователе, поэтому вряд ли подойдет для анонимного общения. Также не поддерживается синхронизация E2EE-чатов и многого другого (см. выше). Если тебе интересно, какую информацию собирает Facebook, прочитай политику конфиденциальности (если у тебя нет аккаунта, то можно в форме скриншота).

Wire​

Лицензия: GPLv3

Степень централизации: централизованный

Возможность анонимной регистрации и работы: есть. С помощью почты

Наличие E2EE: есть, по умолчанию

Синхронизация E2EE-чатов: есть

Уведомление о проверке отпечатков E2EE: нет, но возможность есть

Запрет на скриншоты секретных чатов: нет

Групповые чаты E2EE: есть

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

Защита социального графа: есть

wire1.jpg

Wire — один из наиболее анонимных мессенджеров. В его основе — протокол Wire Swiss, основанный на Signal. Чем он хорош? Во-первых, есть возможность анонимной регистрации. Во-вторых, по умолчанию поддерживается сквозное шифрование с возможностью синхронизации зашифрованных чатов. В-третьих, есть защита социального графа, поддерживаются групповые зашифрованные чаты (до 128 человек) и безопасные конференц-звонки (до 10 человек). Что-то подобное мы видели в Briar, но у Wire еще и огромный выбор поддерживаемых платформ: Android, iOS, Windows, macOS, Linux.

Должна быть ложка дегтя? Она есть: мессенджер платный и стоит шесть евро в месяц (четыре при оплате за год). Разработчики утверждают, что это плюс: подобная бизнес-модель — это хоть какая-то гарантия того, что на твоих данных не попытаются заработать. С другой стороны, денежные транзакции плохо ладят с анонимностью. Зато есть пробный период на месяц!





Jabber (OMEMO)​

Лицензия: разные свободные лицензии

Степень централизации: федеративный

Возможность анонимной регистрации и работы: есть. Регистрация с использованием почтового ящика, учетной записи в Facebook или Twitter

Наличие E2EE: есть. Необходимо дополнение OMEMO

Синхронизация E2EE-чатов: есть

Уведомление о проверке отпечатков E2EE: уведомления нет, но возможность есть

Запрет на скриншоты секретных чатов: нет

Групповые чаты E2EE: есть

Уведомление о необходимости проверки отпечатков E2EE в групповых чатах: нет

Защита социального графа: нет

jabber1.jpg

Если старина Jabber и выбивается из компании современных мессенджеров с веселыми стикерами и голосовыми звонками, то в плане приватности он по-прежнему во многом незаменим. Он федеративный, поддерживает анонимную регистрацию, E2EE-шифрование (правда, нужно расширение OMEMO), в том числе групповое. Да, возможности не поражают воображение, но Jabber проверен временем и к тому же имеет реализации на всех возможных платформах. ChatSecure для iOS, Conversations — для Android, Pidgin — для Linux и так далее, список огромен.





Riot (Matrix)​

Лицензия: Apache

Степень централизации: федеративный

Возможность анонимной регистрации и работы: есть

Наличие E2EE: есть, по выбору пользователя

Синхронизация E2EE-чатов: есть

Уведомление о проверке отпечатков E2EE: есть

Запрет на скриншоты секретных чатов: нет

Групповые чаты E2EE: есть

Уведомление о необходимости проверки отпечатков E2EE в групповых чатах: есть

Защита социального графа: есть

matrix1.jpg

Чего создателям этого мессенджера не занимать, так это умения придумывать крутые названия. Собственно, Matrix — это протокол коммуникации, а Riot — это клиентское приложение (бывают и другие — в том числе для консоли). Использовать можно как вебовый вариант, так и программы для iOS и Android.

В целом это еще один малоизвестный федеративный мессенджер с поддержкой и синхронизацией чатов E2EE, в том числе групповых. Регистрация анонимная, без привязки к номеру мобильного телефона или почте. Поддерживается голосовая связь и видеозвонки.

Шифрование переписки в Riot можно включить или выключить — индикатором этого служит значок замочка рядом с полем отправки сообщения. Также если в секретном групповом чате появится пользователь, чьи устройства не верифицированы другими пользователями, собеседники увидят уведомление об этом при попытке отправить сообщение.

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





Status​

Лицензия: MPLv2

Степень централизации: децентрализованный

Возможность анонимной регистрации и работы: есть

Наличие E2EE: по умолчанию

Синхронизация E2EE-чатов: частичная (см. описание)

Уведомление о проверке отпечатков E2EE: есть (чтобы начать диалог с пользователем, необходимо ввести его идентификатор или сосканировать с экрана смартфона)

Запрет на скриншоты секретных чатов: нет

Групповые чаты E2EE: нет

Защита социального графа: есть

Status — это нечто большее, чем просто мессенджер. Конечно, его можно использовать только для общения, но это все равно что ставить Windows ради «Блокнота». Да и общаться здесь не очень-то удобно, даже картинку не отправишь, не говоря уж про такую роскошь, как стикер. Зато прямо в чате есть возможность отправить ETH и создать запрос на его получение.

Приложение пока находится на стадии бета-теста. Да, без глюков пока никак. Установила на два телефона (Samsung и Android). На одном из телефонов приложение работало нормально, на втором постоянно слетала авторизация и приходилось вводить пароль при каждом обращении к мессенджеру (считай, после каждой блокировки экрана) — не очень-то удобно.

Иногда не знаешь, баг перед тобой или никак не объясненная фича. Когда я создала аккаунты на обоих телефонах (для этого ничего не нужно — просто вводи имя) и сосканировала QR-код на экране одного телефона другим, на втором отобразилось совершенно другое имя, которое я видела впервые, — Puny Moral Gonolek. Только после добавления пользователя в контакты имя стало нормальным. При этом имя первого собеседника всю дорогу отображается нормально.

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

Еще один возможный недостаток: сообщения хранятся и на телефоне, и на сервере мессенджера, но разработчики уверяют, что в зашифрованном виде. Зато твоя книга контактов не сливается на серверы мессенджера, что нынче дорогого стоит. В общем, безопасность здесь есть, а возможность перевода криптовалюты, вероятно, кого-то порадует. Но Status пока что скорее интересная диковинка, чем рабочий инструмент.





Threema​

Лицензия: проприетарная для приложений, AGPLv3 для веб-клиента

Степень централизации: централизованный

Возможность анонимной регистрации и работы: есть. Можно создать учетную запись без привязки к номеру телефона или почте. Пользователю присваивается уникальный ID, который можно сменить

Наличие E2EE: есть, по умолчанию

Синхронизация E2EE-чатов: нет: для каждого устройства генерируется отдельный ID

Уведомление о проверке отпечатков E2EE: есть. Сообщения в групповых чатах отправляются каждому собеседнику индивидуально, а диалог можно начать только с тем, чей идентификатор подтвержден

Запрет на скриншоты секретных чатов: нет

Групповые чаты E2EE: есть

Уведомление о необходимости проверки отпечатков E2EE в групповых чатах: есть

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

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

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

Для регистрации не нужно указывать данные, которые могут способствовать установлению личности, — ни номер телефона, ни email. При первом запуске программы случайным образом генерируется идентификатор пользователя, на его основе будет сгенерирован QR-код. Все это обеспечивает анонимность общения.

Чтобы начать диалог с собеседником, необходимо ввести его идентификатор. В Threema есть три уровня доверия личности пользователя. Наивысший будет при сканировании идентификатора с экрана смартфона, а самый низкий — при вводе его вручную. Где-то посередине находится синхронизация контактов. Уровень проверки каждого контакта отображается в виде точек рядом с именем.

В отличие от WhatsApp или, например, Facebook Messenger Threema не регистрирует, кто и с кем общается, и не хранит адресную книгу пользователя на своих серверах. Все сообщения на устройствах пользователя хранятся в зашифрованном виде. Способ шифрования зависит от устройства. В iOS используется функция iOS Data Protection, в Android и Windows Phone — AES-256. Шифруются сообщения, изображения и другие данные, передаваемые между пользователями. Дополнительная информация доступна в whitepaper (PDF).

Хоть каждый чат шифруется и может считаться секретным, помимо этого, есть и приватные чаты. Они защищены PIN-кодом и помечены значком со шляпой и очками. Нечто подобное мы уже встретили в Viber.

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

Переходим к минусам. Во-первых, это необходимость разово заплатить. 2,6 евро разово — не бог весть что, но сам факт оплаты может быть нежелательным. Также отсутствие синхронизации и хранения сообщений означает, что сохранить историю ты можешь только сам, сделав бэкап.

Итоги​

Рекомендовать какой-либо мессенджер мы не будем. Мы предоставили тебе все данные, и выбор остается за тобой, тем более что выбирать есть из чего. Ниже — табличка, которая поможет тебе в этом.
0bbe907f2f024eacaab20.png
 
Шифруйся грамотно! Почему мессенджеры не защитят тайну твоей переписки.

Сегодня хотел бы отойти от всеми нами любимой темы и поговорить о приватности нашей переписки. Сам материал получился слишком длинный, поэтому я разделил его на несколько частей, надеюсь он вам понравиться.

Приятного прочтения ?

Сквозное шифрование, или end-to-end encryption (E2EE), считается панацеей от настойчивых попыток хакеров и силовых ведомств ознакомиться с онлайновой перепиской. Смысл E2EE часто сводится к тому, что ключи хранятся только на устройствах собеседников и не попадают на сервер… но это не совсем так. Давай посмотрим, как в действительности обстоят дела с E2EE, на примере популярных мессенджеров.

Шифрование в мессенджерах​

Написать эту статью меня подтолкнуло исследование Obstacles to the Adoption of Secure Communication Tools (PDF). Как выяснили его авторы, «подавляющее большинство участников опроса не понимают основную концепцию сквозного шифрования». Проще говоря, люди обычно выбирают мессенджер сердцем, а не мозгом.

Начнем с того, что E2EE имеет свои особенности в каждом мессенджере. В Signal оно почти образцовое. В WhatsApp формально такое же, как в Signal, за исключением одного очень важного момента: смена основного ключа абонента WhatsApp не блокирует отправку ему сообщений. Максимум можно включить бесполезное уведомление (которое отключено в дефолтных настройках). В Viber сквозное шифрование неактивно по умолчанию, да и появилось только в шестой версии. В Telegram E2EE также используется только в секретных чатах, причем реализованы они довольно странно.

Конфликт Роскомнадзора с Telegram вообще создал отличную рекламу последнему. Рядовые пользователи теперь считают творение Дурова настоящей занозой в спине спецслужб (или чуть пониже нее), которые ничего не могут сделать с пуленепробиваемым инновационным сервисом. Поклонники Telegram сравнивают его с Signal и утверждают о превосходстве первого.

Однако в криптографии не бывает чудес, и особенно — в прикладной. Многие математически красивые идеи оказываются безнадежно испорчены реализацией, когда удобство и подконтрольность ставят выше безопасности и приватности (а так происходит практически всегда).

Исходно в мессенджерах применялся протокол OTR (Off-the-Record). Он использует симметричное шифрование AES в режиме CTR, протокол обмена ключами DH и хеш-функцию SHA-1. Схема AES-CTR обеспечивает так называемое «спорное» (в хорошем смысле) шифрование и возможность отрицания авторства текста, если его перехватят. Всегда можно сослаться на то, что перехвативший трафик сам изменил шифротекст так, чтобы он соответствовал другому варианту расшифровки той же длины. Например, вместо «сходи за хлебом» получилось «отрави королеву» — технически это возможно, и такое свойство специально заложено в алгоритм.

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

Главный недостаток OTR заключается в том, что после отправки нового ключа требуется дождаться подтверждения от собеседника. Если он офлайн, то связь будет временно невозможна. Одним из выходов стал алгоритм Double Ratchet (DR), разработанный пять лет назад Тревором Перрином и Мокси Марлинспайком в Open Whisper Systems. Сегодня DR используется в Signal, WhatsApp, Viber и многих других мессенджерах, поддерживающих сквозное шифрование по умолчанию или как отдельную опцию (секретные чаты).

DR-01.png


DR-02.png

Упрощенная схема алгоритма Double Ratchet (источник: signal.org). Алиса и Боб начинают сессию, обмениваясь публичными ключами

Сквозное шифрование​

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

Начало схемы ты наверняка знаешь, поскольку оно стандартно для всех систем асимметричного шифрования, — генерируется пара ключей. Это необходимо потому, что криптосистемы с одним ключом (вроде AES) использовать в переписке в чистом виде слишком трудно. С ними пришлось бы как-то организовывать защищенный канал для передачи ключа (например, встречаться лично), а потом делать это снова при каждой его смене.

Тут же все как в привычном PGP: есть два собеседника (Алиса и Боб), каждый из которых генерирует свою пару ключей. Затем они обмениваются публичными ключами, сохраняя в тайне парные им секретные. Публичные ключи передаются по открытому каналу (на то они и публичные, пусть перехватывают на здоровье) и служат для двух целей: они позволяют зашифровать сообщение и проверить его подпись. Соответственно, секретные ключи используются для расшифровки и формирования подписи.

Термин «сообщение» используется здесь в широком смысле. Сообщением может быть текст, медиафайл или служебные метаданные, которыми мессенджер обменивается с сервером. Часть этих данных содержит временные метки, состояние клиентского приложения и новые ключи.
Такая криптосистема кое-как работает в электронной почте, поскольку это сервис для доставки отдельных зашифрованных сообщений произвольной длины. Пользуясь им, собеседники не обязаны одновременно быть онлайн. Все сообщения накапливаются на сервере и скачиваются с него по требованию после того, как пользователь успешно пройдет авторизацию. Расшифровка происходит локально при помощи секретных ключей, которые никуда не передаются. Почта с PGP популярна, но работает далеко не идеально. Почему? См. статью «Алиса и Боб в стране PGP».

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

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

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

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

Диффи, Хеллман! Дайте три!​

Из открытой документации известно, что в Telegram аутентифицированное распределение ключей обеспечивает классический протокол Диффи — Хеллмана (DH). Он создает мост между асимметричным (RSA) и симметричным (AES) шифрованием, давая возможность энному количеству собеседников вести зашифрованную переписку, передав только публичные ключи по открытому каналу. Для этого в нем генерируются сессионные ключи, представляющие собой общий секрет или общий эфемерный ключ. Он вычисляется на основе секретного ключа одного собеседника и публичного ключа другого. Эфемерные ключи аутентифицируются долговременными открытыми ключами.

В DH канал передачи может быть не защищен от прослушивания (пассивного наблюдения), но обязан иметь защиту от атаки подмены. Если атакующая сторона может подменить трафик (выполнить активную атаку MITM), то вся схема летит к черту.
Поэтому для своего мессенджера Signal компания Open Whisper Systems использует метод тройного преобразования Диффи — Хеллмана X3DH c Curve25519 (эллиптическая кривая Бернстайна для быстрого DH) или X448. В качестве других криптографических примитивов в X3DH используется HMAC-SHA-256 и AES-256.

Протокол Extended Triple Diffie — Hellman устанавливает общий секретный ключ между двумя сторонами, которые взаимно аутентифицируют друг друга на основе открытых ключей. Дополнительно ключи сверяются сразу после установки сессии и перед началом передачи сообщений. Это сводит к минимуму риск MITM-атак, делая их очень сложными.

В X3DH используются четыре типа ключей, три из которых постоянно меняются:
  • IK (identity keys). Секретные ключи, которые создаются один раз и служат основой для формирования всех остальных;
  • EK (ephemeral key). Эфемерный ключ, который нужен для проверки личности собеседника (без разглашения истинной);
  • SPk (signed public key, signed proof of knowledge) — по сути, это эфемерный ключ, подписанный секретным. Обычно в мессенджерах он меняется с частотой от одного дня до недели. Иногда вместо времени жизни SPk задают число сообщений, после которого он меняется;
  • OPK (one-time public key) — одноразовый эфемерный ключ. Он создается отправителем перед установкой сеанса связи и удаляется сразу после успешного «рукопожатия» (handshake).

Наследие Enigma​

Смена вспомогательных ключей в X3DH происходит по алгоритму Double Ratchet. Он пришел на смену OTR и ввел понятие цепочки, или пула, ключей. На случай, если собеседник будет офлайн, предусмотрено создание пула OPK. Несколько разовых эфемерных ключей заранее загружаются на сервер и расходуются по мере общения. Это позволяет серверу принимать зашифрованные сообщения, аутентифицируя их отправителя по новой паре ключей, даже когда получатель не в сети. Если пул OPK исчерпан, то сервер использует запасной EK.

Название «двойной храповик» — отсылка к устройству шифровальной машины Enigma с зубчатыми колесиками, которые исключали обратное движение и повторное использование прежних значений. Цифровая аналогия в том, что DR используется для генерирования новых эфемерных ключей, которыми шифруется следующее сообщение (или небольшая порция сообщений). При этом эфемерные ключи гарантированно отличаются, не повторяют предыдущие и не могут быть предсказаны за разумное время атаки.

На X3DH основан протокол TextSecure, который позже был переименован в Signal. В чистом или слегка модифицированном виде протокол Signal используется в одноименном мессенджере, а также в WhatsApp, Viber и других. Разработчики могут давать протоколам собственные названия, но по сути это все тот же X3DH с варьирующимся набором хеш-функций, ГПСЧ и иных криптографических примитивов.

Проблема групповых чатов​

Организация групповых чатов в мессенджерах подробно разобрана в свежей статье «More is Less: On the End-to-End Security of Group Chats in Signal, WhatsApp, and Threema» (PDF). Приведу основные выводы из нее.

Наш систематический анализ выявил, что целостность коммуникаций (представленная целостностью всех сообщений) и групповая принадлежность (определяемая возможностью членов группы управлять ими) не имеют end-to-end-защиты. Кроме того, мы показали, что обратная секретность (ключевое свойство безопасности) не сохраняется при использовании протокола Signal для групповых чатов.
Пояснение: краеугольный камень сквозного шифрования — аутентифицированное распределение ключей по классическому или усиленному протоколу DH. Оно работает только для двух собеседников, формирующих общий секрет. Ожидаемо, что в мессенджерах DH не используется в групповых чатах, а структура обмена сообщениями в них лишена основных криптографических свойств.

group-chats.png

Шифрование в групповых чатах. A — отправитель, B — получатель, G — группа пользователей
Авторы показывают, какие манипуляции может выполнять контролируемый злоумышленником сервер в групповых чатах из-за отсутствия в них E2EE. Свои исследования они проводили на примере Signal и WhatsApp, но вряд ли стоит ожидать, что у других мессенджеров эта проблема имеет какое-то изящное решение.

Странности Telegram​

С Telegram все покрыто завесой тайны. О протоколе MTProto 2.0 есть только частичные сведения. Его внешний аудит не выполнялся, а опенсорсная модель Telegram используется в сильно искаженном виде и исключительно с маркетинговыми целями. Ниже я поясню, почему так считаю.

Судя по официальному описанию, все недоставленные сообщения временно (мы надеемся) хранятся на серверах Telegram, которые часто разбросаны по миру и объединены в виртуальное облако. Они синхронизируются между собой, чтобы упорядочить и доставить сообщения одному или нескольким (в случае группового чата) собеседникам в определенном порядке, как только они появятся в сети. Поэтому шифрование делится на два этапа: на участках клиент — сервер и сервер — сервер. Это обычная схема, но в ней странно то, что прямое соединение клиентов не используется вообще никогда.

В Telegram трафик передается через серверы даже при открытии секретного чата, для которого логичнее было бы сделать P2P-соединение. Напрашивается вывод, что без постоянного использования серверов Telegram связь в этом мессенджере вообще не работает. Другие мессенджеры могут использовать свои серверы только на начальном этапе — для сопоставления текущих IP-адресов собеседников и организации между ними прямого соединения. Telegram так не умеет, и это чертовски похоже на MITM by design.

Почему-то все рассуждения о стойкости MTProto 2.0 крутятся вокруг того, что алгоритм DH надежно защищает от перехвата. Это не так. Алгоритм Диффи — Хеллмана как раз уязвим для атаки MITM. Более того, в случае Telegram он, вероятно, дополнительно ослаблен на уровне ГПСЧ.

Проблема в том, что клиентское приложение Telegram руководствуется очень невнятной оценкой энтропии. Вместо того чтобы локально генерировать псевдослучайные числа и отсеивать качественные простые, клиент запрашивает их с сервера. Что за ГПСЧ используется на сервере, насколько удачные простые числа он генерирует и нет ли на сервере механизмов избирательной отправки простых чисел с определенными свойствами отдельным клиентам — вопросы без ответа. Клиентское приложение лишь выполняет проверку присланного случайного числа, причем упрощенную, поскольку на тщательный тест prime numbers за разумное время у смартфона банально не хватит вычислительных ресурсов.

Другой частый аргумент в пользу безопасности Telegram — открытые исходники. Однако в них нет исходного кода серверной части, а код клиентской обычно неактуален. Репозитории Telegram обновляются с большой задержкой (разве что урезанная веб-версия более-менее живая), и в них всегда лежат только старые версии. Нет даже возможности проверить, действительно ли из исходников компилируется то, что сейчас раздается как готовый дистрибутив.

Поэтому говорить про аудит мессенджера фактически бессмысленно. Пока специалисты несколько месяцев копаются в старом коде, выйдет десяток новых версий Telegram, где будут переписаны огромные куски кода. Чтобы сделать уязвимой всю систему шифрования, достаточно замены одного байта — например, одного условного перехода.

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

Тысяча и одна уязвимость​

Signal — один из немногих мессенджеров, чей протокол проходил внешний аудит (PDF). Отчет о его результатах очень объемный, поэтому процитирую главные выводы в своем переводе.

Наш анализ показывает, что [протокол] Signal удовлетворяет стандартным криптографическим предположениям и свойствам безопасности. Мы не обнаружили серьезных недостатков в его дизайне, что очень обнадеживает. При реальном использовании Signal остаются неопределенности. Поэтому невозможно сказать, всегда ли [приложение] Signal достигает заявленных целей.
Нужно осознавать, что анализ протокола передачи сообщений — важный этап аудита, но далеко не единственная составляющая безопасности. Любой мессенджер работает в реальной и очень уязвимой среде. Обычно он запускается на не самой свежей версии Android, параллельно с сотней левых приложений (часть из которых наверняка злоупотребляют разрешениями или даже содержат троянские закладки), а сам аккаунт привязан к номеру мобильного телефона.

Огромная брешь заключается в том, что коды подтверждения приходят в SMS. Их можно перехватить через известную уязвимость в протоколе сотовой связи SS7. Так атакующий получит доступ ко всей переписке, не зная ключей шифрования и даже не пытаясь взломать Signal/Proteus/MTProto/другойсекьюрныйпротокол. Сервер мессенджера сам сменит ключ и услужливо дешифрует последнюю переписку (как минимум, недоставленные сообщения). Даже твои стикерпаки восстановит. Главное же — удобство, верно?

Еще одна зияющая дыра в модели безопасности — push-уведомления. Без них ты не узнаешь, что тебе пришло сообщение, пока вручную не запустишь мессенджер. С ними ты превращаешь сервер push-уведомлений в легализованного «человека посередине». Например, чтобы в iMessage работали уведомления, он отправляет ключи шифрования на серверы Apple. Уже они выполняют аутентификацию пользователей и (как минимум) дешифровку заголовков сообщений. Восстанови учетку Apple на другом устройстве, и ты получишь все как было — вплоть до переписки и паролей от Wi-Fi. Почти такая же ситуация с серверами Google и Microsoft. Или ты еще веришь в сквозное шифрование с привязкой к номеру мобильного и основному аккаунту на смартфоне?

Проблема небезопасного управления ключами и большой поверхности атаки касается вообще всех мессенджеров. WhatsApp, Viber и многие другие позволяют создавать копии переписки (в том числе облачные) и не шифруют метаданные (а иногда сам факт разговора важнее его содержания). У Signal дела обстоят чуть лучше, но и его я не считаю идеальным мессенджером по целому ряду причин:
  • Во-первых, Signal также использует гугловский сервис push-уведомлений. Поэтому на смартфоне без сервисов Google (например, все китайские модели для внутреннего рынка без GApps) он просто не работает.
  • Во-вторых, для голосового общения в Signal используется закрытый сервер RedPhone.
  • В-третьих, Signal (как и многие другие мессенджеры) позволяет открыть параллельную сессию на другом устройстве, просто отсканировав QR-код.
  • В-четвертых, на HITBSecConf2017 рассказали (PDF) про ряд концептуальных проблем Signal и продемонстрировали успешную атаку на него.

XMPP​

Как видишь, сторонним и тем более проприетарным мессенджерам доверять сложно, даже если их рекомендовали Сноуден, Ассанж и EFF. Поэтому некоторые организуют общение через свой мессенджер — с опенсорсом и плагинами. Для простой переписки годится плагин OTR, но он не поддерживает групповые чаты. Есть родственные протоколы mpOTR и GOTR, в которых добавлена эта функция.

Так или иначе, для коллективного общения удобнее использовать открытый протокол XMPP (Extensible Messaging and Presence Protocol), который ранее назывался Jabber. XMPP переводится как «расширяемый протокол обмена сообщениями и информацией о присутствии», это очень емкое название. Открытость означает полную доступность исходных кодов. Ты можешь поднять свой сервер XMPP, ни от кого не зависеть и ничего за это не платить. Также есть уйма готовых серверов и клиентов на любой вкус — например, десктопный Pidgin и Xabber для Android.

Расширяемость подразумевает возможность передачи не только текста, но и данных другого типа, а также добавление разных функций и схем шифрования. Например, по XMPP легко передать голосовые сообщения, видео и файлы, при желании зашифровав их средствами TLS или PGP. Не так давно на базе XMPP был создан протокол расширения OMEMO, в котором используется тот же DR от Open Whisper Systems, что и в Signal и WhatsApp, но без прочих недостатков последних.

Выводы​

В современных мессенджерах заявлена поддержка сквозного шифрования, но часто оказывается, что она реализована со странностями. К тому же в их коде много других дыр, которые были оставлены случайно либо намеренно. Последнее куда вероятнее, если учесть, сколько денег и труда профессионалов было вложено в их разработку. Я стараюсь соблюдать баланс между комфортом и привычным наслаждением паранойей. Использую разные мессенджеры (какие удобнее моим собеседникам), но никогда не веду через них действительно приватных бесед. Для этого есть множество опенсорсных альтернатив. Помимо Xabber, пользователям Android я бы рекомендовал присмотреться к Conversations — свободному XMPP-клиенту с поддержкой OTR, OMEMO, openPGP и SOCKS5.
 
Adamant https://adamant.im/ — анонимный и защищённый мессенджер, работающий на блокчейне Ethereum. В комплекте идёт криптокошелёк для крипты.

Общение зашифровано end-to-end с помощью таких алгоритмов, как Diffie-Hellman Curve25519, Salsa20, Poly1305, и подписано SHA-256 + Ed25519 EdDSA. Данные никогда не передаются на сервер.
 

Анонимные мессенджеры! Миф?​

secure-message-1000x563.jpg

END-TO-END encryption (E2EE) — оно же сквозное шифрование, которое считается одним из безопасных методов шифрования так как ключи хранятся лишь на устройствах пользователей чата / переписки и не хранятся на сервере мессенджера, но это не совсем так…
Примеры использования E2EE в известных мессенджерах:

Начнём пожалуй с Signal. В этом мессенджере шифрование END-TO-END используется образцово, как по книжке и описывать тонкости не стоит, так как ничего нового там или интересного нет, обычный E2EE.
Signal — один из немногих мессенджеров, чей протокол проходил внешний аудит. Отчёт слишком объёмный, поэтому вкратце.
Наш анализ показывает, что протокол Signal удовлетворяет стандартным криптографическим предположениям и свойствам безопасности. Мы не обнаружили серьезных недостатков в его дизайне, что очень обнадеживает. При реальном использовании Signal остаются неопределенности. Поэтому невозможно сказать, всегда ли приложение Signal достигает заявленных целей.
Нужно осознавать, что анализ протокола передачи сообщений — важный этап аудита, но далеко не единственная составляющая безопасности. Любой мессенджер работает в реальной и очень уязвимой среде. Обычно он запускается на не самой свежей версии Android, параллельно с сотней левых приложений (часть из которых, наверняка злоупотребляют разрешениями или даже содержат троянские закладки), а сам аккаунт привязан к номеру мобильного телефона, то есть регистрационный код подтверждения приходит на номер телефона, сигнал которого можно перехватить и тогда уже и не нужно будет расшифровывать переписку, так как можно будет просто получить код по смс и войти в аккаунт.

Viber — он же любимый мессенджер «динозавров» и любителей побеседовать из-за рубежа. Соответственно изначально методов шифрования чатов не было совершенно, но после взлёта Телеги Дурова, viber решили пойти в ногу со временем (хоть обе ноги сильно хромают) и добавить секретные чаты. Не знаю, кто из читателей пользуется данным мессенджеров, но всё же вести дела в нём — очевидно не стоит. Во-первых это большая корпорация, а как любая корпорация — сольют службам без сомнений.
Первая Уязвимость Viber в том, что он позволяет создавать копии переписки (в том числе облачные) и не шифруют метаданные (а иногда сам факт разговора важнее его содержания). Вторая уязвимость в push-уведомлениях. Проблема в том, что для отображения уведомления, мессенджер передаёт связку ключей Google или Apple, а уже они в свою очередь выполняют аутентификацию пользователей и (как минимум) дешифровку заголовков сообщений. Восстанови учётку Apple на другом устройстве, и ты получишь все как было — вплоть до переписки и паролей от Wi-Fi.

WhatsApp — удобный по своему мессенджер. В основе тот же E2EE с одной особенностью: смена основного ключа пользователя не блокирует отправку ему сообщений. Не советую использовать данный мессенджер даже по мелочам, так как весь интернет кипит информацией о том, что WhatsApp в наглую сливает информацию службам. Уязвимости точно такие же как и в Viber.
На сладкое — всеми любимый Telegram. E2EE используется только в секретных чатах и исключительно на мобильных устройствах, что совершенно непонятно. Так как множество пользователей, в том числе и «МЫ» в основном юзаем Portable или Desktop версии, потому как есть возможность сидеть с виртуалки или дедика, спрятав тем самым наше настоящее железо, а так же есть возможность пробрасывать трафик через мост на примере VPN — TOR — SSH.
На самом деле криптография позволяет абсолютно безопасно обмениваться информацией, но к сожалению не в наше время, когда БОЛЬШОЙ БРАТ хочет знать всё и о всех.
Исходно в Telegram применялся протокол OTR (Off-the-Record), который мы используем в Jabber, но о нём поговорим попозже. OTR Использует симметричное шифрование AES в режиме CTR, протокол обмена ключами Диффи Хелмана и хеш-функцию SHA-1.
Этот метод безопасный только если пользователи будут проверять перед каждой перепиской отпечатки открытых ключей, так как их могут перехватить третьи лица.
Недостатком OTR есть то, что после отправки нового ключа требуется дождаться подтверждения от собеседника. А если он offline, то сообщение не будет отправлено к нему. Для этого Тревором Перрином и его коллегой Мокси Марлинспайком был разработан алгоритм Double Ratchet.
Данный алгоритм может быть использован как часть криптографического протокола для того, чтобы обеспечить сквозное шифрование для мгновенного обмена сообщениями. После первоначального обмена ключами он управляет текущим обновлением и обслуживанием коротких ключей сеанса. Он объединяет криптографический храповик на основе обмена ключами по протоколу Диффи-Хеллмана и храповик построенный на основе функции формирования ключа, такой как, например, хеш-функция. Таким образом алгоритм представляет собой двойной храповой механизм, что и отражено в его названии.
Сегодня DR используется в Signal, WhatsApp, Viber и многих других мессенджерах.
После тёрок между Роскомнадзором и Telegram создался хайп данного мессенджера, как для обычных пользователей так и для нас. Но мы все помним, что в конце концов Дяди в Погонах получили заветные ключики шифрования. Так же за каналами и чатами вроде кардинг тематики — стали тщательно наблюдать модераторы, что уже не безопасно. Но так как телеграм стал нашей средой обитания, то пребывайте в ней грамотно: обязательно с виртуалки или дедика и через мост VPN — TOR — SSH или подобные.

Сквозное Шифрование
Схема END-TO-END Encryption использует комбинацию из криптографических систем с открытым и закрытым ключом. Всё на первый взгляд прозрачно и понятно, хотя технически всё довольно-таки сложно. Сложность заключается в множестве вариаций взаимосвязи с ключами, к примеру часть ключей обязательно загружаются на сервер до начала переписки, а делается это для того, чтобы можно было начать чат в произвольный момент.
Выглядит это примерно так: генерируется пара публичных ключей обоих пользователей и затем происходит собственно их обмен по открытому каналу с целью шифрования сообщения, а вот уже секретные ключи остаются на устройствах собеседников и служат исключительно для расшифровки сообщения и формирования подписи. То есть из этого следует вывод, что даже при перехвате публичных ключей третьими лицами — невозможно будет расшифровать информацию без секретных, которые хранятся на вашем устройстве.
По такой же схеме отправляются письма по email, используя шифрование PGP, но с одной различностью: используя PGP не обязательно находится в online, при этом для шифрования OTR это необходимо. Каждый из этих методов являются практичными и безопасными, но с уязвимостью в виде потери секретных ключей.
К сожалению, в чистом виде схема асимметричного шифрования не пригодна для мессенджеров, поскольку они созданы для интенсивной онлайн переписке между многого количества пользователей, которые в свою очередь могут находиться офлайн, что произведёт к сбою алгоритма шифрования. К тому же шифровать множество коротких сообщений одним ключом — плохая идея, так как часть основных коротких словосочетаний предсказуемые для расшифровки.
Особенность переписки в мессенджерах в том, что из‑за типовых метаданных за короткое время атакующий может перехватить большой объем предсказуемого шифротекста. Его львиная доля будет соответствовать известному открытому тексту. Если она будет шифроваться одним ключом, то при успешной атаке окажутся скомпрометированными все ранее написанные сообщения и даже те, которые собеседники напишут в будущем.
Чтобы этого не происходило, в мессенджерах предусмотрены такие свойства, как прямая и обратная секретность. Они подразумевают невозможность прочитать отправленные ранее и написанные в будущем сообщения, имея на руках только текущий ключ шифрования. Для этого используется многослойное шифрование с переходом от асимметричной к симметричной криптографии и дополнительные ключи с разным временем жизни.

ДИФФИ ХЕЛЛМАН — Гарант надёжности?
Из открытой документации известно, что в Telegram аутентифицированное распределение ключей обеспечивает классический протокол Диффи — Хеллмана (DH). Он создает мост между асимметричным (RSA) и симметричным (AES) шифрованием, давая возможность N-му количеству собеседников вести зашифрованную переписку, передав только публичные ключи по открытому каналу. Для этого в нем генерируются сессионные ключи, представляющие собой общий секрет или общий эфемерный ключ. Он вычисляется на основе секретного ключа одного собеседника и публичного ключа другого. Эфемерные ключи аутентифицируются долговременными открытыми ключами.
Но так как закрытые ключи попали в руки спецслужб — telegram перестал быть полностью надёжным и доступен для расшифровки, для этого необходимо теперь использовать более жёсткие меры сохранения анонимности: подключить прокси к телеге, если с телефона, а в идеале к примеру прокинуть мост через VNP — TOR — SSH + сидеть с Виртуалки или с Дедика через веб версию.

XMPP он же Jabber
Подойдя к концу статьи можно и поговорить о самом надёжном мессенджере, который используют уже годами наши собратья, но и тут нужно знать несколько тонкостей.
Во первых: нужно выбрать надёжный сервер для регистрации учётной записи. Так как не раз бывали взломы и сливы переписок. Вот следующий список jabber-серверов, которым можно более менее доверять:
  • prv.st
  • darknet.im
  • antispam.im
  • xakep.im
  • dark.cash
  • zloy.im
  • xmpp.jp
Во вторых: не забываем подключаться к серверу через мост VPN-TOR-SSH на виртуалке или дедике.
В третьих: Используем OTR и следим за отпечатками ключей + так же не упоминаем информацию, которая может вас задеанонить (имена, страну проживания, город, улицы, заведения и так дальше). Если это конечно не связано с работой — от этого уже никуда не деться.
Данная статья является вымышленной и не призывает ни кого к совершению написанного. Данный сайт не несёт ответственность за содеянное, а содержит чисто ознакомительную информацию.
 
Top