Key Delivery Message
Key Delivery Message (KDM, сообщение доставки ключа) — это служебное сообщение в протоколах защищённой передачи данных, содержащее сеансовый ключ или информацию, необходимую для его вычисления, и передаваемое от отправителя к получателю перед началом шифрованного обмена. KDM является частью механизма управления ключами и обеспечивает возможность безопасного установления сеанса связи между сторонами, не имеющими предварительно согласованного общего секрета.
История и происхождение
Понятие Key Delivery Message возникло в контексте развития криптографических протоколов в 1970–1980-х годах, когда возникла необходимость в автоматизированном распределении ключей для симметричного шифрования. Ранние системы, такие как шифровальная машина «Энигма» и её аналоги, использовали ручное распределение ключей (книги кодов), что было неэффективно для массовых коммуникаций. С появлением компьютерных сетей и протоколов, таких как SSL/TLS (разработан в 1994 году компанией Netscape), IPsec (стандарт IETF, 1995 год) и Kerberos (разработан в Массачусетском технологическом институте, 1980-е годы), KDM стал стандартным элементом.
В протоколе Kerberos, созданном в 1983 году, KDM реализован в виде билета (ticket) и аутентификатора, которые передаются от сервера аутентификации к клиенту и затем к серверу ресурсов. В протоколе IPsec KDM передаётся в рамках фазы 2 (Quick Mode) после установления защищённого канала (фаза 1). В современных реализациях TLS KDM передаётся в сообщениях ClientKeyExchange и ServerHelloDone.
Структура и содержимое
Key Delivery Message обычно включает следующие элементы:
- Идентификатор сеанса — уникальный номер или метка, связывающая KDM с конкретным сеансом связи.
- Сеансовый ключ — временный симметричный ключ, зашифрованный открытым ключом получателя или предварительно согласованным ключом.
- Параметры шифрования — алгоритм (например, AES-256, ChaCha20), режим (CBC, GCM) и длина ключа.
- Срок действия — временная метка или интервал, в течение которого ключ считается действительным.
- Цифровая подпись — аутентификационный код (HMAC) или подпись с использованием закрытого ключа отправителя для подтверждения целостности и подлинности сообщения.
В некоторых протоколах KDM может содержать дополнительные поля, такие как nonce (случайное число), используемое для предотвращения атак повторного воспроизведения (replay attacks), или информацию о сертификатах.
Классификация
Key Delivery Messages классифицируются по способу доставки ключа:
По способу шифрования ключа
- KDM с использованием асимметричного шифрования — сеансовый ключ шифруется открытым ключом получателя. Пример: протокол TLS, где клиент генерирует предварительный мастер-ключ (pre-master secret) и шифрует его открытым ключом сервера.
- KDM с использованием предварительно распределённого ключа — ключ шифруется долговременным симметричным ключом, известным обеим сторонам. Пример: протокол Kerberos, где билет зашифрован ключом сервера ресурсов.
- KDM на основе обмена Диффи-Хеллмана — ключ не передаётся явно, а вычисляется обеими сторонами на основе общих параметров. В этом случае KDM содержит только открытые значения (публичные ключи) и параметры.
По типу протокола
- KDM в протоколах аутентификации — Kerberos, RADIUS, EAP.
- KDM в протоколах защиты канала — TLS, IPsec, SSH.
- KDM в протоколах электронной почты — S/MIME, PGP.
Применение
Key Delivery Message используется в широком спектре систем и технологий:
Веб-безопасность (TLS/SSL)
В протоколе TLS, который лежит в основе HTTPS, KDM передаётся на этапе рукопожатия (handshake). Клиент генерирует случайный предварительный мастер-ключ, шифрует его открытым ключом сервера (из сертификата) и отправляет в сообщении ClientKeyExchange. Сервер расшифровывает его и использует для вычисления сеансового ключа. Этот механизм защищает передачу ключа от перехвата, так как только сервер, владеющий соответствующим закрытым ключом, может расшифровать сообщение.
Корпоративные сети (Kerberos)
В системе аутентификации Kerberos, разработанной в Массачусетском технологическом институте, KDM реализован в виде билета (ticket-granting ticket, TGT) и сервисного билета. Сервер аутентификации (Key Distribution Center, KDC) отправляет клиенту TGT, зашифрованный долговременным ключом клиента. Клиент затем использует TGT для получения сервисного билета, который содержит сеансовый ключ для доступа к конкретному ресурсу. Этот подход широко применяется в доменных средах Windows (Active Directory) и UNIX-системах.
Виртуальные частные сети (IPsec)
В протоколе IPsec, используемом для создания VPN, KDM передаётся в рамках фазы 2 (Quick Mode) протокола IKE (Internet Key Exchange). После установления защищённого канала (фаза 1) стороны обмениваются сообщениями, содержащими сеансовые ключи для шифрования и аутентификации данных. KDM может быть зашифрован и аутентифицирован с использованием ключей, полученных на этапе аутентификации.
Электронная почта (S/MIME, PGP)
В системах защищённой электронной почты KDM используется для передачи сеансового ключа, которым зашифровано тело письма. Отправитель генерирует случайный сеансовый ключ, шифрует им сообщение, а затем шифрует сам ключ открытым ключом получателя. Получатель расшифровывает KDM своим закрытым ключом и затем расшифровывает сообщение. Этот подход описан в стандартах RFC 3851 (S/MIME) и RFC 4880 (OpenPGP).
Критика и уязвимости
Key Delivery Message, несмотря на свою важность, подвержен ряду атак:
- Атака «человек посередине» (MITM) — злоумышленник может перехватить KDM и подменить его, если не используется аутентификация. В протоколах, где KDM передаётся без цифровой подписи (например, в ранних версиях TLS), это позволяет злоумышленнику внедрить свой ключ.
- Атака повторного воспроизведения — если KDM не содержит временной метки или nonce, злоумышленник может повторно отправить перехваченное сообщение, что приведёт к использованию старого ключа.
- Компрометация долговременного ключа — если злоумышленник получает доступ к долговременному ключу (например, закрытому ключу сервера), он может расшифровать все KDM, переданные с его использованием, и получить доступ к сеансовым ключам.
- Уязвимости в реализации — ошибки в генерации случайных чисел, неправильное шифрование или отсутствие проверки подписей могут сделать KDM небезопасным. Примером является уязвимость Heartbleed (2014 год) в OpenSSL, которая позволяла извлекать из памяти сервера сеансовые ключи.
Интересные факты
- В протоколе TLS 1.3 (стандарт IETF RFC 8446, 2018 год) механизм KDM был изменён: вместо отдельного сообщения ClientKeyExchange используется комбинированное сообщение, содержащее как параметры обмена Диффи-Хеллмана, так и аутентификационные данные.
- В протоколе WireGuard, разработанном в 2016 году, KDM передаётся в виде сообщения handshake, содержащего публичные ключи и nonce, что позволяет избежать явной передачи сеансового ключа.
- В системах квантового распределения ключей (QKD) KDM передаётся по квантовому каналу, что теоретически делает его защищённым от перехвата, однако практические реализации сталкиваются с ограничениями дальности и скорости.
Источники
- RFC 5246 — The Transport Layer Security (TLS) Protocol Version 1.2
- RFC 8446 — The Transport Layer Security (TLS) Protocol Version 1.3
- RFC 4120 — The Kerberos Network Authentication Service (V5)
- RFC 4306 — Internet Key Exchange (IKEv2) Protocol
- RFC 3851 — Secure/Multipurpose Internet Mail Extensions (S/MIME) Version 3.1 Message Specification
- Шнайер Б. Прикладная криптография. — 2-е изд. — М.: Триумф, 2002.
- Книга: «Криптография и безопасность сетей» — Уильям Столлингс, 5-е издание, 2011.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →


