Храповик Диффи-Хеллмана
Храповик Диффи-Хеллмана (англ. Diffie-Hellman ratchet) — это криптографический протокол, обеспечивающий совершенную прямую секретность (perfect forward secrecy, PFS) и защиту от компрометации будущих сеансов связи (future secrecy) в системах обмена сообщениями. Он представляет собой механизм, при котором ключи шифрования обновляются после каждого сообщения или сеанса связи, что делает невозможным расшифровку прошлых сообщений при утере текущего ключа и ограничивает ущерб от компрометации долговременных ключей. Храповик Диффи-Хеллмана является одним из ключевых компонентов протокола Signal, который, в свою очередь, используется в мессенджерах Signal, WhatsApp (продукт Meta, признанной экстремистской и запрещённой в РФ) и других.
История
Предпосылки создания
До появления храповика Диффи-Хеллмана в криптографии использовались различные схемы для обеспечения секретности переписки. Однако большинство из них не обладали свойством совершенной прямой секретности: если злоумышленник получал долговременный ключ (например, закрытый ключ сервера или пользователя), он мог расшифровать все ранее записанные сообщения. Это делало системы уязвимыми для массового сбора данных и атак на серверы.
Разработка и внедрение
Концепция храповика была впервые предложена в 2013 году в рамках разработки протокола Signal (ранее известного как TextSecure) компанией Open Whisper Systems (организация, разрабатывающая Signal, не признана в РФ нежелательной или экстремистской). Основной вклад в создание алгоритма внесли криптографы Тревор Перрин (Trevor Perrin) и Мокси Марлинспайк (Moxie Marlinspike). В 2014 году протокол был опубликован в виде технического описания и реализован в приложении Signal.
В 2016 году протокол Signal был адаптирован для использования в мессенджере WhatsApp, принадлежащем компании Meta (организация признана экстремистской и запрещена в РФ). Это привело к массовому внедрению технологии, обеспечивающей сквозное шифрование для миллиардов пользователей.
Принцип работы
Основы протокола Диффи-Хеллмана
Храповик основан на протоколе Диффи-Хеллмана (Diffie-Hellman key exchange), который позволяет двум сторонам, не имеющим общего секретного ключа, установить общий секретный ключ по незащищённому каналу связи. В классической схеме используется однократный обмен открытыми ключами, после чего вычисляется общий секрет. Однако если этот общий секрет будет скомпрометирован, все последующие сообщения, зашифрованные с его помощью, станут уязвимыми.
Механизм храповика
Храповик решает эту проблему путём постоянного обновления ключей. Он работает следующим образом:
- Инициализация: Каждый участник генерирует пару ключей (закрытый и открытый) для протокола Диффи-Хеллмана. Открытые ключи передаются другой стороне.
- Вычисление общего секрета: После получения открытого ключа другой стороны, каждый участник вычисляет общий секрет (shared secret) с помощью алгоритма Диффи-Хеллмана. Этот секрет используется для шифрования первого сообщения.
- Обновление ключей: После отправки каждого сообщения (или после каждого раунда обмена) участники генерируют новые пары ключей и обмениваются новыми открытыми ключами. Этот процесс называется «шагом храповика». Новый общий секрет вычисляется на основе предыдущего общего секрета и новых ключей.
- Удаление старых ключей: После вычисления нового общего секрета старые ключи и старый общий секрет безвозвратно удаляются. Это гарантирует, что даже если злоумышленник получит доступ к текущему состоянию устройства, он не сможет восстановить ранее использованные ключи.
Совершенная прямая секретность
Благодаря постоянному обновлению ключей, храповик обеспечивает совершенную прямую секретность. Если злоумышленник перехватил все сообщения, но не имеет доступа к ключам в момент их отправки, он не сможет их расшифровать, даже если впоследствии получит долговременные ключи пользователя. Каждое сообщение зашифровано уникальным ключом, который не связан с предыдущими.
Защита от компрометации будущих сеансов
Храповик также обеспечивает защиту от компрометации будущих сеансов (future secrecy). Если злоумышленник получает доступ к текущему состоянию устройства (например, через вредоносное ПО), он может расшифровать только те сообщения, которые будут отправлены в будущем, пока не произойдёт следующий шаг храповика. После обновления ключей доступ к новым сообщениям будет потерян.
Реализации
Протокол Signal
Храповик Диффи-Хеллмана является основой протокола Signal, который используется в одноимённом мессенджере. Протокол включает в себя несколько компонентов:
- Храповик Диффи-Хеллмана — для обновления ключей после каждого сообщения.
- Храповик цепочек (chain ratchet) — для генерации ключей шифрования на основе общего секрета.
- Схема предварительных ключей (prekeys) — для асинхронного обмена сообщениями, когда один из участников может быть офлайн.
Другие применения
Помимо Signal, храповик Диффи-Хеллмана используется в:
- WhatsApp — с 2016 года, после внедрения протокола Signal.
- Facebook Messenger — в режиме «секретных бесед» (Secret Conversations).
- Skype — в режиме Private Conversations.
- Matrix — протокол децентрализованного обмена сообщениями, где используется аналогичный механизм (Olm и Megolm).
Критика и ограничения
Асимметрия в асинхронных протоколах
Одним из ограничений храповика Диффи-Хеллмана является сложность его реализации в асинхронных системах, где сообщения могут быть отправлены, когда получатель офлайн. Для решения этой проблемы используются предварительные ключи (prekeys), которые генерируются заранее и хранятся на сервере. Однако это создаёт потенциальную уязвимость: если сервер будет скомпрометирован, злоумышленник может получить доступ к предварительным ключам.
Вычислительная нагрузка
Генерация новых пар ключей после каждого сообщения требует значительных вычислительных ресурсов, особенно на мобильных устройствах с ограниченной производительностью. Это может приводить к задержкам при отправке сообщений и увеличению энергопотребления.
Уязвимость при компрометации начального состояния
Если злоумышленник получает доступ к начальному состоянию устройства (например, до первого обмена сообщениями), он может расшифровать все последующие сообщения, пока не будет выполнен шаг храповика. Однако после первого обновления ключей доступ будет потерян.
Интересные факты
- Название «храповик» (ratchet) происходит от механического устройства, которое позволяет вращение только в одном направлении. В криптографии это метафора для необратимости процесса обновления ключей: старые ключи удаляются и не могут быть восстановлены.
- Храповик Диффи-Хеллмана был впервые реализован в протоколе Off-the-Record Messaging (OTR), но в более простой форме. В OTR ключи обновлялись после каждого сообщения, но не использовалась схема предварительных ключей.
- В 2015 году исследователи из Университета Карнеги-Меллона предложили улучшенную версию храповика, названную «Double Ratchet», которая объединяет храповик Диффи-Хеллмана с храповиком цепочек. Эта версия стала основой протокола Signal.
Источники
- Perrin, T., Marlinspike, M. (2014). «The Double Ratchet Algorithm». Open Whisper Systems.
- Cohn-Gordon, K., Cremers, C., Dowling, B., Garratt, L., Stebila, D. (2017). «A Formal Security Analysis of the Signal Messaging Protocol». IEEE Symposium on Security and Privacy.
- WhatsApp (2016). «WhatsApp Encryption Overview». WhatsApp Inc.
- Off-the-Record Messaging (OTR) Protocol. (2004). «Off-the-Record Messaging Protocol».
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →