Открыть сервис

Signal Protocol

Signal Protocol — это криптографический протокол сквозного шифрования (end-to-end encryption), обеспечивающий конфиденциальность, целостность и аутентификацию сообщений при передаче через незащищённые каналы связи. Разработан компанией Open Whisper Systems (ныне Signal Messenger LLC) в 2013 году на основе протокола OTR (Off-the-Record Messaging) и более ранних разработок Тревора Перрина (Trevor Perrin) и Мокси Марлинспайка (Moxie Marlinspike). Протокол лёг в основу мессенджера Signal, а также используется в WhatsApp, Facebook (продукт Meta, признанной экстремистской и запрещённой в РФ) Messenger (в режиме «секретных чатов»), Google Messages (RCS с шифрованием) и Skype (в режиме приватных бесед). Signal Protocol сочетает в себе такие криптографические примитивы, как протокол Диффи — Хеллмана на эллиптических кривых (X25519), алгоритм шифрования AES-256 в режиме GCM, хеш-функцию SHA-256 и протокол предварительных ключей (PreKeys) для обеспечения асинхронной связи.

История

Предпосылки создания

До появления Signal Protocol большинство протоколов сквозного шифрования (например, OTR и PGP) имели существенные ограничения: OTR требовал одновременного присутствия обоих собеседников онлайн (синхронная связь), а PGP был сложен в использовании для массового пользователя и не обеспечивал совершенной прямой секретности (Perfect Forward Secrecy, PFS) в асинхронном режиме. В 2012 году команда Open Whisper Systems начала работу над протоколом, который сочетал бы асинхронность, простоту использования и высокую криптографическую стойкость.

Разработка и внедрение

В 2013 году был выпущен протокол TextSecure Protocol (предшественник Signal Protocol) для мессенджера TextSecure (ныне Signal). В 2014 году протокол был переименован в Signal Protocol после слияния TextSecure с RedPhone (голосовой шифрованный звонок). В 2014—2015 годах протокол был интегрирован в WhatsApp (принадлежит Meta, признанной экстремистской и запрещённой в РФ), что обеспечило сквозное шифрование для более чем миллиарда пользователей. В 2016 году Signal Protocol был внедрён в Facebook Messenger (Meta — организация признана экстремистской и запрещена в РФ) для режима «секретных чатов». В 2018 году Google объявила о поддержке Signal Protocol в своём приложении Messages для RCS-чатов.

Версии и аудит

Протокол прошёл несколько раундов независимого криптографического аудита. В 2016 году компания NCC Group провела аудит Signal Protocol и не выявила критических уязвимостей. В 2017 году была выпущена версия 2.0 (Signal Protocol v2), которая улучшила управление ключами и добавила поддержку групповых чатов. В 2019 году вышла версия 3.0 (Signal Protocol v3), оптимизированная для работы с большими группами и снижающая требования к памяти.

Криптографические основы

Совершенная прямая секретность (PFS)

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

Протокол тройного Диффи — Хеллмана (X3DH)

Основой установления сеанса является протокол X3DH (Extended Triple Diffie-Hellman), который позволяет двум сторонам, не имеющим предварительного общего секрета, установить защищённое соединение через ненадёжный канал. Протокол использует три обмена ключами Диффи — Хеллмана:

Результатом является общий секрет, из которого выводятся сеансовые ключи.

Протокол Ratchet (Double Ratchet)

Для поддержания безопасности в ходе длительной переписки используется протокол Double Ratchet (двойной храповик). Он состоит из двух механизмов:

Предварительные ключи (PreKeys)

Для асинхронной работы (когда получатель не в сети) используется механизм предварительных ключей. Клиент при регистрации генерирует пул одноразовых ключей (One-Time PreKeys) и один долговременный подписанный предварительный ключ (Signed PreKey). Отправитель может начать сеанс, используя один из этих ключей, даже если получатель неактивен. После установления сеанса ключи уничтожаются.

Архитектура и реализация

Компоненты протокола

Signal Protocol состоит из нескольких слоёв:

  1. Слой установления сеанса (X3DH) — создание общего секрета.
  2. Слой управления ключами (Double Ratchet) — поддержание безопасности в сеансе.
  3. Слой шифрования сообщений — AES-256-GCM для шифрования и HMAC-SHA256 для аутентификации.
  4. Слой управления групповыми чатами — протокол Sender Keys (для групп до 1000 участников) и протокол Server-Aided Group (для больших групп).

Поддержка групповых чатов

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

Управление идентификацией

Каждый пользователь имеет пару долговременных ключей (Identity Key Pair), которые привязываются к его идентификатору (например, номеру телефона в Signal). Для предотвращения атак «человек посередине» (MITM) используется механизм сравнения отпечатков ключей (fingerprints) через безопасный канал (например, QR-код или голосовое подтверждение).

Применение

Мессенджеры

Другие применения

Критика и ограничения

Зависимость от сервера

Signal Protocol требует наличия центрального сервера для хранения предварительных ключей и маршрутизации сообщений. Хотя сервер не имеет доступа к содержимому сообщений, он может отслеживать метаданные (время отправки, IP-адреса, размер сообщений). В 2021 году Signal ввёл функцию «защиты метаданных» (Sealed Sender), которая скрывает от сервера информацию об отправителе и получателе, но только при условии, что получатель ранее уже установил сеанс.

Уязвимости в реализации

В 2019 году исследователи из Университета Рутгерса обнаружили уязвимость в реализации Signal Protocol для групповых чатов: при добавлении нового участника в группу старые сообщения оставались зашифрованными старыми ключами, что позволяло новому участнику получить доступ к истории чата (если он сохранил старые ключи). Разработчики Signal исправили эту проблему в версии 2.0.

Юридические аспекты

В некоторых странах (например, в Китае, Индии, России) использование сквозного шифрования ограничено или требует предоставления доступа к ключам по запросу властей. В 2020 году в России был принят закон «о суверенном интернете», который обязывает мессенджеры предоставлять ключи шифрования по требованию ФСБ. Signal Protocol, будучи открытым и не поддающимся бэкдорингу, не может быть модифицирован для выполнения таких требований без потери безопасности, что приводит к блокировкам или ограничениям использования Signal в некоторых юрисдикциях.

Интересные факты

Источники

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →