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

Keyed state

Keyed state — это состояние синхронизации в криптографических протоколах, при котором стороны (участники) обмена данными обладают общим секретным ключом, позволяющим им аутентифицировать друг друга и шифровать/дешифровать сообщения. В отличие от «unkeyed state» (состояния без ключа), где безопасность обеспечивается только за счёт хэш-функций или других несекретных методов, keyed state предполагает наличие у сторон предварительно согласованного или переданного по защищённому каналу ключа. Это состояние является основой для работы большинства современных протоколов безопасной передачи данных, включая TLS, IPsec, SSH и многие другие.

История

Понятие keyed state восходит к ранним работам по криптографии с симметричными ключами, где для шифрования и дешифрования использовался один и тот же ключ. В 1976 году Уитфилд Диффи и Мартин Хеллман предложили протокол обмена ключами, который позволил двум сторонам, не имеющим общего ключа, безопасно установить его через открытый канал. Это открыло путь к созданию keyed state в асимметричных криптосистемах, где ключи могут быть сгенерированы и обменены без предварительной договорённости.

В 1980-х годах с развитием протоколов аутентификации, таких как Kerberos, keyed state стал стандартным элементом сетевой безопасности. В 1990-х годах с появлением SSL/TLS (Secure Sockets Layer / Transport Layer Security) keyed state стал обязательным этапом установления защищённого соединения в интернете. В России разработка и внедрение криптографических протоколов с keyed state регулируются ГОСТ Р 34.10-2012 и ГОСТ Р 34.11-2012, которые определяют стандарты электронной подписи и хэширования.

Основные характеристики

Определение и свойства

Keyed state характеризуется следующими свойствами:

  • Секретность ключа: ключ известен только уполномоченным сторонам и не должен быть раскрыт третьим лицам.
  • Целостность: ключ используется для проверки подлинности данных (например, с помощью HMAC — хэш-кода аутентификации сообщения на основе ключа).
  • Аутентификация: наличие ключа позволяет сторонам убедиться, что сообщение отправлено именно той стороной, которая владеет ключом.
  • Синхронизация: обе стороны должны иметь одинаковое состояние ключа (например, одинаковый счётчик для режимов шифрования с обратной связью).

Типы ключей

Keyed state может быть установлен с использованием различных типов ключей:

  • Симметричные ключи: один и тот же ключ используется для шифрования и дешифрования. Примеры: AES, ГОСТ 28147-89.
  • Асимметричные ключи: пара «открытый-закрытый» ключ. Открытый ключ может быть известен всем, закрытый — только владельцу. Примеры: RSA, ГОСТ Р 34.10-2012.
  • Сеансовые ключи: временные ключи, генерируемые для каждого сеанса связи. Они часто создаются с помощью протоколов обмена ключами, таких как Диффи-Хеллман.

Применение

Протоколы безопасности

Keyed state является центральным элементом в следующих протоколах:

  • TLS (Transport Layer Security): используется для защиты веб-трафика (HTTPS). В процессе handshake стороны обмениваются ключами и устанавливают keyed state, после чего начинается шифрование данных.
  • IPsec (Internet Protocol Security): обеспечивает защиту на сетевом уровне. Использует keyed state для аутентификации и шифрования IP-пакетов.
  • SSH (Secure Shell): применяется для удалённого управления серверами. После установления keyed state все команды и данные передаются в зашифрованном виде.
  • WireGuard: современный протокол VPN, который использует keyed state на основе криптографии с открытым ключом и предварительно согласованных ключей.

Аутентификация и электронная подпись

В системах электронной подписи keyed state позволяет проверять подлинность документов. Например, в России для электронной подписи используется ГОСТ Р 34.10-2012, где keyed state включает закрытый ключ подписывающего и открытый ключ проверяющего. При подписании документа создаётся цифровая подпись, которая может быть проверена только с использованием открытого ключа.

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

Keyed state применяется в протоколах, таких как:

  • Kerberos: протокол аутентификации, использующий keyed state для выдачи билетов доступа.
  • PAKE (Password-Authenticated Key Exchange): протоколы, которые позволяют установить keyed state на основе пароля без его передачи по сети.
  • OTR (Off-the-Record Messaging): протокол для защищённого обмена сообщениями, где keyed state устанавливается для каждого сеанса.

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

Установление keyed state

Процесс установления keyed state обычно включает следующие этапы:

  1. Инициализация: стороны согласовывают алгоритмы и параметры (например, тип шифрования, размер ключа).
  2. Обмен ключами: с помощью протокола обмена ключами (например, Диффи-Хеллман) стороны генерируют общий секретный ключ.
  3. Аутентификация: стороны проверяют подлинность друг друга, используя цифровые подписи или сертификаты.
  4. Синхронизация: устанавливаются начальные значения для счётчиков или векторов инициализации.
  5. Переход к защищённому режиму: после установления keyed state все последующие сообщения шифруются и/или аутентифицируются.

Пример реализации на Python

Ниже приведён упрощённый пример установления keyed state с использованием библиотеки cryptography:

```python from cryptography.fernet import Fernet

Генерация ключа

key = Fernet.generate_key() cipher = Fernet(key)

Шифрование сообщения

message = b"Секретные данные" encrypted = cipher.encrypt(message)

Дешифрование

decrypted = cipher.decrypt(encrypted) print(decrypted.decode()) # Вывод: Секретные данные ```

В этом примере keyed state устанавливается путём генерации ключа, который затем используется для шифрования и дешифрования. В реальных протоколах ключ передаётся по защищённому каналу или генерируется с помощью протокола обмена.

Классификация

По способу установления

  • Предварительно согласованные ключи: ключи устанавливаются заранее, например, при настройке VPN или Wi-Fi (WPA2-PSK).
  • Динамические ключи: ключи генерируются в процессе обмена, например, в протоколе Диффи-Хеллман.
  • Ключи на основе пароля: ключи выводятся из пароля с помощью функции PBKDF2 (Password-Based Key Derivation Function 2).

По длительности действия

  • Сеансовые ключи: действуют в течение одного сеанса связи (например, в TLS).
  • Долговременные ключи: используются для аутентификации и могут храниться годами (например, закрытые ключи для электронной подписи).

Примеры

Пример 1: TLS handshake

В протоколе TLS 1.3 установление keyed state происходит следующим образом:

  1. Клиент отправляет приветствие (ClientHello) с поддерживаемыми алгоритмами.
  2. Сервер отвечает (ServerHello) с выбранными параметрами и своим сертификатом.
  3. Клиент и сервер выполняют обмен ключами по протоколу Диффи-Хеллман.
  4. Стороны вычисляют общий секретный ключ и устанавливают keyed state.
  5. После этого все данные передаются в зашифрованном виде.

Пример 2: WireGuard

WireGuard использует keyed state на основе криптографии с открытым ключом. Каждый участник имеет пару ключей (открытый и закрытый). Для установления соединения стороны обмениваются открытыми ключами и генерируют общий сеансовый ключ с помощью протокола Диффи-Хеллман.

Критика

Keyed state, несмотря на свою широкую распространённость, имеет ряд недостатков:

  • Управление ключами: хранение и распространение ключей представляет собой сложную задачу. Потеря ключа может привести к невозможности расшифровать данные.
  • Атаки на ключи: если злоумышленник получает доступ к ключу, он может расшифровать все сообщения, защищённые этим ключом.
  • Сложность реализации: неправильная реализация keyed state может привести к уязвимостям, таким как атаки «человек посередине» (MITM) или атаки на повторное использование ключей.
  • Зависимость от доверенной третьей стороны: в некоторых протоколах (например, Kerberos) keyed state требует наличия центрального сервера аутентификации, что создаёт единую точку отказа.

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

  • В 2018 году исследователи из Университета Рурского региона (Германия) обнаружили, что многие реализации протокола TLS используют слабые случайные числа для генерации ключей, что делает keyed state уязвимым для атак.
  • В России для защиты государственной тайны используются криптографические алгоритмы, соответствующие ГОСТ, которые также требуют установления keyed state.
  • Протокол Signal, используемый в мессенджере Signal, реализует keyed state с помощью протокола Double Ratchet, который обеспечивает совершенную прямую секретность (PFS) — даже если долговременный ключ скомпрометирован, прошлые сеансы остаются защищёнными.

Источники

  1. Диффи У., Хеллман М. «Новые направления в криптографии». — IEEE Transactions on Information Theory, 1976.
  2. ГОСТ Р 34.10-2012. «Информационная технология. Криптографическая защита информации. Процессы формирования и проверки электронной цифровой подписи».
  3. ГОСТ Р 34.11-2012. «Информационная технология. Криптографическая защита информации. Функция хэширования».
  4. RFC 8446. «The Transport Layer Security (TLS) Protocol Version 1.3». — IETF, 2018.
  5. Доннелли П. «Криптография: теория и практика». — 3-е изд., 2015.
  6. Барнетт Р. «WireGuard: Next Generation Kernel Network Tunnel». — Linux Foundation, 2020.

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

На главную BFOmetr →