No Image

Шифруйся грамотно выбираем мессенджер

СОДЕРЖАНИЕ
0 просмотров
22 января 2020

Содержание статьи

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

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

  • 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, который обеспечивает голосовую и видеосвязь, возможность отправлять мгновенные сообщения и передавать файлы, режим конференции с несколькими участниками, а также другие фичи, присущие практически каждому современному мессенджеру. А главное — в нем отсутствует реклама.

Antox

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

Официальный сайт
Лицензия: 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 не существует в природе.

Итоги

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

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

В таблице также приведены результаты по мессенджерам из предыдущей статьи.

Содержание статьи

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

Крабе отаке!!1

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

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

Критерии

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

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

Здесь возможен один из трех вариантов:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Мы выбрали лишь часть критериев, которые могут сыграть роль при выборе мессенджера. Существуют и другие, но не всегда они связаны с безопасностью. Группа ученых из европейских университетов неплохо разложила все по полочкам в работе 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 и включено по умолчанию, даже в настольной версии. Для дополнительной безопасности существуют секретные чаты с возможностью общаться группой.

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

Продолжение доступно только участникам

Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», увеличит личную накопительную скидку и позволит накапливать профессиональный рейтинг Xakep Score! Подробнее

Добавлено в закладки: 0

Сквозное шифрование, или 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 и многих других мессенджерах, поддерживающих сквозное шифрование по умолчанию или как отдельную опцию (секретные чаты).

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

Схема 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 не используется в групповых чатах, а структура обмена сообщениями в них лишена основных криптографических свойств.

Авторы показывают, какие манипуляции может выполнять контролируемый злоумышленником сервер в групповых чатах из-за отсутствия в них 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 и продемонстрировали успешную атаку на него.

Как видишь, сторонним и тем более проприетарным мессенджерам доверять сложно, даже если их рекомендовали Сноуден, Ассанж и 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.

Комментировать
0 просмотров
Комментариев нет, будьте первым кто его оставит

Это интересно
Adblock detector