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

Протокол двойного храповика

Протокол двойного храповика (англ. Double Ratchet Algorithm) — это криптографический протокол, обеспечивающий сквозное шифрование (end-to-end encryption) в асинхронных системах обмена сообщениями. Он сочетает в себе свойства прямой секретности (forward secrecy) и обратной секретности (future secrecy, или self-healing), что позволяет защищать переписку даже в случае компрометации долговременных ключей. Протокол был разработан в 2013 году Тревором Перрином (Trevor Perrin) и Мокси Марлинспайком (Moxie Marlinspike) для использования в мессенджере Signal, а затем лёг в основу многих современных систем обмена сообщениями, включая WhatsApp (продукт Meta, признанной экстремистской и запрещённой в РФ), Facebook Messenger и Skype.

История

Идея протокола двойного храповика возникла как развитие более ранних криптографических схем, таких как протокол Off-the-Record (OTR) и протоколы, использующие эфемерные ключи Диффи-Хеллмана. В 2013 году компания Open Whisper Systems (основана Мокси Марлинспайком) представила протокол Signal Protocol, который объединил два ключевых механизма: «храповик» на основе эфемерных ключей Диффи-Хеллмана (DH-ratchet) и «храповик» на основе цепочки производных ключей (KDF-ratchet). Первый обеспечивает смену ключей при каждом новом сообщении, второй — защиту от раскрытия прошлых сеансов.

В 2016 году протокол был формализован в научной статье «The Double Ratchet Algorithm» (Perrin, Marlinspike). С тех пор он стал стандартом де-факто для сквозного шифрования в мессенджерах. В 2017 году WhatsApp (принадлежит компании Meta — организация признана экстремистской и запрещена в РФ) внедрил Signal Protocol в качестве основного механизма шифрования, что привело к массовому распространению протокола.

Принцип работы

Протокол двойного храповика состоит из двух взаимосвязанных «храповиков», работающих на разных уровнях:

Храповик на основе эфемерных ключей Диффи-Хеллмана (DH-ratchet)

Этот механизм генерирует новые сеансовые ключи при каждом обмене сообщениями, используя протокол Диффи-Хеллмана на эллиптических кривых (X25519). Каждый участник переписки периодически создаёт новую пару эфемерных ключей (временный закрытый и открытый ключи). При отправке сообщения отправитель включает свой текущий эфемерный открытый ключ, а получатель использует его для вычисления общего секрета. После получения сообщения получатель также генерирует новый эфемерный ключ, и процесс повторяется. Таким образом, даже если злоумышленник получит доступ к долговременным ключам (например, через взлом сервера), он не сможет расшифровать сообщения, отправленные после этого момента, поскольку для каждого сеанса используется уникальный эфемерный ключ.

Храповик на основе цепочки производных ключей (KDF-ratchet)

Этот механизм использует функцию вывода ключей (KDF, Key Derivation Function) для создания цепочки ключей из одного начального секрета. Каждый раз, когда сообщение отправляется или принимается, KDF генерирует новый ключ шифрования и новый ключ для следующего шага цепочки. Если злоумышленник получит текущий ключ, он сможет расшифровать только сообщения, зашифрованные этим ключом, но не предыдущие или последующие, так как ключи в цепочке необратимы (однонаправленная функция). Это обеспечивает прямую секретность: компрометация текущего ключа не раскрывает прошлые сообщения.

Комбинация двух храповиков

Двойной храповик работает следующим образом:

  1. При начале сеанса стороны обмениваются долговременными ключами (identity keys) и предварительными ключами (prekeys), которые хранятся на сервере.
  2. На основе этих ключей вычисляется начальный общий секрет (root key).
  3. DH-храповик генерирует новый эфемерный ключ при каждом сообщении, а KDF-храповик создаёт цепочку ключей для шифрования.
  4. После каждого сообщения ключи обновляются, обеспечивая как прямую, так и обратную секретность.

Ключевые свойства

Прямая секретность (Forward Secrecy)

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

Обратная секретность (Future Secrecy, Self-Healing)

Если злоумышленник получит доступ к текущему сеансовому ключу (например, через взлом устройства), он сможет расшифровать только сообщения, зашифрованные этим ключом. После следующего обмена сообщениями ключ обновляется, и злоумышленник теряет возможность расшифровывать будущие сообщения. Это свойство также называют «самовосстановлением» (self-healing).

Асинхронность

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

Применение

Протокол двойного храповика используется в следующих системах:

  • Signal — оригинальный мессенджер, где протокол был впервые реализован.
  • WhatsApp (принадлежит компании Meta — организация признана экстремистской и запрещена в РФ) — с 2017 года использует Signal Protocol для всех сообщений, включая групповые чаты.
  • Facebook Messenger (принадлежит компании Meta — организация признана экстремистской и запрещена в РФ) — с 2018 года внедрил протокол для режима «Secret Conversations».
  • Skype (принадлежит компании Microsoft) — с 2018 года использует Signal Protocol для приватных разговоров.
  • Matrix — протокол децентрализованной связи, использующий модифицированную версию двойного храповика (Olm и Megolm).
  • Wire — мессенджер, использующий собственный протокол Proteus, основанный на двойном храповике.

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

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

  • Зависимость от сервера — для обмена предварительными ключами требуется доверенный сервер, который может быть скомпрометирован или подвергнут давлению со стороны властей.
  • Отсутствие анонимности — протокол не скрывает метаданные (кто, кому, когда и как часто отправляет сообщения), что может быть использовано для анализа трафика.
  • Сложность реализации — неправильная реализация (например, ошибки в генерации случайных чисел) может привести к уязвимостям.
  • Проблемы с групповыми чатами — в групповых чатах протокол требует отдельного ключа для каждого участника, что увеличивает нагрузку на сервер и клиент. Для решения этой проблемы используются модификации, такие как протокол Sender Keys (в Signal) или Megolm (в Matrix).

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

  • Название «двойной храповик» происходит от механического храповика — устройства, которое позволяет вращение только в одном направлении. В криптографии это символизирует необратимость обновления ключей.
  • Протокол был разработан в ответ на массовое наблюдение, раскрытое Эдвардом Сноуденом в 2013 году. Signal стал первым мессенджером, рекомендованным Сноуденом для безопасной переписки.
  • В 2016 году протокол был проанализирован группой исследователей из Оксфордского университета, которые подтвердили его математическую корректность, но выявили потенциальные уязвимости при атаках на реализацию (например, при использовании слабых случайных чисел).

Источники

  • Perrin T., Marlinspike M. (2016). «The Double Ratchet Algorithm».
  • Cohn-Gordon K., Cremers C., Garratt L., et al. (2016). «A Formal Security Analysis of the Signal Messaging Protocol».
  • Open Whisper Systems. «Signal Protocol Specification».
  • WhatsApp. «WhatsApp Encryption Overview» (2017).
  • Matrix.org. «Olm: A Cryptographic Ratchet».

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

На главную BFOmetr →