Представлен метод атаки на групповой чат WhatsApp и Signal

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

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

Слабой стороной WhatsApp является то, что участие в чате координируется сервером и каждый новый пользователь, который получил от сервера полномочия участия в чате, обретает возможность получения и отправки сообщений каждому участнику чата. В случае контроля за сервером можно обходным путём без получения пригласительного кода от члена группы добавить в группу фиктивного участника, который сможет установить end-to-end соединения со всеми остальными участниками и получать отправляемые в чат сообщения.

В мессенджере Signal недоработка связана с отсутствием проверки факта участия в группе пользователя отправившего управляющее сообщение c включением нового участника в группу. Данная особенность позволяет любому пользователю Signal отправить служебное сообщение с включением участника в группу, но для этого участник должен определить секретный идентификатор группы (128-разрядное случайное значение), узнать который нереально, даже имея доступ к серверу (идентификатор передаётся между участниками только в зашифрованном виде).

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

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

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

Тем временем, Facebook, который владеет сервисом WhatsApp, опубликовал на GitHub реализацию нового протокола ART (Asynchronous Ratcheting Tree) для создания защищённых групповых чатов. В протоколе используется end-to-end шифрование и гарантируется конфиденциальность передаваемых сообщений. Прототип реализации написан на языке Java и поставляется под лицензией CC-BY-NC. В отличие от систем групповых чатов, подобных Signal, WhatsApp и Facebook Messenger, в ART предоставляется защита от подслушивания в случае компрометации одного из участников. Например, если кто-то получил контроль за одним из участников чата, в Signal он cможет прослушивать все дальнейшие разговоры группы.

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