Введение
криптографический протокол Multimedia Internet KEYing (MIKEY) — это протокол управления ключами, предназначенный для использования с приложениями реального времени. Он может быть использован для установления ключей шифрования для мультимедийных сеансов, защищенных с помощью SRTP — протокола безопасности, обычно используемого для защиты коммуникаций в реальном времени, таких как VoIP. MIKEY был впервые определен в RFC 3830. Дополнительные режимы MIKEY были определены в RFC 4873, RFC 5234, RFC 6378 и RFC 8333.
Multimedia Internet KEYing (MIKEY) is a key management protocol that is intended for use with real time applications. It can specifically be used to set up encryption keys for multimedia sessions that are secured using SRTP, the security protocol commonly used for securing real time communications such as VoIP. MIKEY was first defined in Additional MIKEY modes have been defined in , , , and .
Цель программы MIKEY
Как описано в RFC 3830, протокол MIKEY предназначен для обеспечения сквозной безопасности между пользователями для поддержки обмена сообщениями. Для этого он обменивается ключом сеанса, известным как Ключ шифрования трафика (TEK), между участниками сеанса связи. Протокол MIKEY также может аутентифицировать участников обмена сообщениями. MIKEY предоставляет множество методов для обмена ключом сеанса и аутентификации участников.
Использование MIKEY на практике
MIKEY используется для управления ключами с целью защиты протокола мультимедийной связи. Соответственно, обмен сообщениями MIKEY обычно происходит в рамках протокола сигнализации, поддерживающего эту связь. Распространенная схема заключается в использовании MIKEY для обеспечения безопасности VoIP, предоставляя механизм управления ключами для протокола VoIP (SRTP). Управление ключами реализуется путем включения сообщений MIKEY в содержимое SDP сигнальных сообщений SIP.
Основные методы транспортировки и обмена
MIKEY поддерживает восемь различных методов установки общего секрета (для использования, например, в качестве ключа сеанса или сеансового KEK):
Предопределенный ключ (MIKEY PSK): Это наиболее эффективный способ передачи общего секрета, поскольку используется только симметричное шифрование и требуется обмен небольшим объемом данных. Однако, для каждого участника необходимо передать индивидуальный ключ, что приводит к проблемам масштабируемости в больших группах пользователей.
Публичный ключ (MIKEY PK): Общий секрет обменивается с использованием шифрования с открытым ключом. В крупных системах для этого требуется инфраструктура открытых ключей (PKI) для безопасного распространения открытых ключей.
Diffie–Hellman (MIKEY DH): Для установки общего секрета используется обмен ключами Diffie–Hellman. Этот метод требует больше ресурсов (как вычислительного времени, так и пропускной способности), чем предыдущие, но обеспечивает прямой секрет. Кроме того, он может использоваться без PKI.
DH HMAC (MIKEY DHHMAC) (Diffie–Hellman с аутентификацией HMAC): Это облегченная версия Diffie–Hellman MIKEY: вместо сертификатов и RSA-подписей используется HMAC для взаимной аутентификации сторон. DH HMAC определен в RFC 4650.
RSA R (MIKEY RSA R) (Обратный RSA): Общий секрет обменивается с использованием шифрования с открытым ключом без необходимости использования PKI: инициатор отправляет свой открытый ключ RSA респонденту, который выбирает общий секрет и отправляет его обратно инициатору, зашифрованным открытым ключом инициатора. RSA R определен в RFC 4738.
TICKET (MIKEY TICKET): Режим распределения ключей на основе билетов в MIKEY (Multimedia Internet KEYing). MIKEY TICKET определен в RFC 6043.
IBAKE (MIKEY IBAKE): Режим распределения ключей с аутентификацией на основе идентификатора (IBAKE) в MIKEY (Multimedia Internet KEYing). MIKEY IBAKE определен в RFC 6267.
SAKKE (MIKEY SAKKE): Шифрование ключа Sakai-Kasahara в MIKEY (Multimedia Internet KEYing). Это метод обмена ключами с аутентификацией на основе идентификатора. MIKEY SAKKE определен в RFC 6509.
Pre Shared Key (MIKEY PSK): This is the most efficient way to handle the transport of the Common Secret, since only symmetric encryption is used and only a small amount of data has to be exchanged. However, an individual key has to be shared with every single peer, which leads to scalability problems for larger user groups. Public Key (MIKEY PK): The Common Secret is exchanged with the help of public key encryption. In larger systems, this requires a PKI to handle the secure distribution of public keys. Diffie–Hellman (MIKEY DH): A Diffie–Hellman key exchange is used to set up the Common Secret. This method has a higher resource consumption (both computation time and bandwidth) than the previous ones, but has the advantage of providing perfect forward secrecy. Also, it can be used without any PKI. DH HMAC (MIKEY DHHMAC) (HMAC Authenticated Diffie–Hellman): This is a light weight version of Diffie–Hellman MIKEY: instead of certificates and RSA signatures it uses HMAC to authenticate the two parts to one another. DH HMAC is defined in RFC 4650. RSA R (MIKEY RSA R) (Reverse RSA): The Common Secret is exchanged with the help of public key encryption in a way that doesn't require any PKI: the initiator sends its public RSA key to the responder, which responds by selecting the Common Secret and then send it back to the initiator encrypted with the initiator's public key. RSA R is defined in RFC 4738. TICKET (MIKEY TICKET): Ticket Based Modes of Key Distribution in Multimedia Internet KEYing (MIKEY). MIKEY TICKET is defined in RFC 6043. IBAKE (MIKEY IBAKE): Identity Based Authenticated Key Exchange (IBAKE) Mode of Key Distribution in Multimedia Internet KEYing (MIKEY). MIKEY IBAKE is defined in RFC 6267. SAKKE (MIKEY SAKKE): Sakai Kasahara Key Encryption in Multimedia Internet KEYing (MIKEY). This is an Identity Based Authenticated Key Exchange method. MIKEY SAKKE is defined in RFC 6509.
Сообщения от MIKEY
Большинство методов MIKEY требует от инициатора отправки сообщения участникам (I MESSAGE), а от получателей – ответа другим сообщением (R MESSAGE). После завершения этого обмена участники могут сгенерировать ключ сессии. MIKEY SAKKE не требует R MESSAGE.
Содержание сообщения MIKEY
Сообщения MIKEY состоят из нескольких полезных нагрузок. Каждая полезная нагрузка описывает следующую в сообщении MIKEY. Таким образом, протокол MIKEY продемонстрировал свою гибкость в плане расширения и адаптации. Первая полезная нагрузка всегда является общим заголовком (HDR). Он определяет версию протокола MIKEY, используемый метод (тип данных), требуется ли ответ и идентифицирует криптографическую сессию, которая будет установлена в ходе обмена. Дальнейшие полезные нагрузки определяются используемым методом MIKEY. Часто они включают информационные полезные нагрузки, такие как:
Полезная нагрузка временной метки (T) – содержит время и, следовательно, помогает защититься от атак повторного воспроизведения. Полезные нагрузки идентификации (ID) – идентифицируют участников. Этот тип полезной нагрузки также может содержать сертификаты (CERT). В RFC 6043 он был расширен для включения «роли» пользователя в качестве части идентификатора (IDR). Полезная нагрузка RAND (RAND) – это случайные данные, используемые для добавления соли к производному ключу после обмена. Политики безопасности (SP) – содержат ограниченный набор политик безопасности для поддержки связи. Хеш сертификата (CHASH) – хеш, указывающий на сертификат, используемый для шифрования с открытым ключом. Кроме того, сообщение MIKEY содержит как минимум одну полезную нагрузку, которая заключает в себе ключевой материал. К ним относятся:
Транспорт ключевых данных (KEMAC) – заключает ключ в оболочку, шифруя его с использованием предварительно общего секрета. В RFC 4650 он расширен для поддержки аутентифицированного Diffie-Hellman (DHHMAC). Diffie-Hellman (DH) – содержит криптографическую информацию, поддерживающую протокол Diffie-Hellman. Данные Envelope (PKE) – заключают ключ в оболочку с использованием шифрования с открытым ключом. Расширен в RFC 4738 и RFC 6267. Sakai Kasahara (SAKKE) – заключает ключ в оболочку с использованием протокола Sakai Kasahara, основанного на идентификации. Определен в RFC 6509. Ticket (TICKET) – предоставляет криптографический токен для запроса ключевого материала с внешнего сервера (KMS). Определен в RFC 6043. Наконец, сообщение MIKEY может содержать полезную нагрузку аутентификации. К ним относятся:
Подпись (SIGN) – подпись к сообщению MIKEY. Проверка (V) – MAC, отправленный получателем для подтверждения получения.
A timestamp payload (T) this contains the time and hence helps protect against replay attacks. Identity Payloads (ID) this identifies the participants. This payload type can also contain certificates (CERT). This was extended in RFC 6043 to include the 'role' of the user as part of the ID (IDR). A RAND payload (RAND) this is random data used to salt the post exchange key derivation. Security Policies (SP) this contains a limited set of security policies to support the communication. Certificate Hash (CHASH) a hash indicating a certificate used for public key encryption. In addition to this, the MIKEY message will contain at least one payload which encapsulates key material. These include:
Key data transport (KEMAC) this encapsulating the key by encrypting it using a pre shared secret. This is extended by RFC 4650 to support authenticated Diffie–Hellman (DHHMAC). Diffie–Hellman (DH) this contains cryptographic information supporting the Diffie–Hellman protocol. Envelope Data (PKE) this encapsulates the key using public key encryption. This is extended by RFC 4738 and RFC 6267. Sakai Kasahara (SAKKE) this encapsulates the key using the identity based Sakai Kasahara protocol. This is defined by RFC 6509. Ticket (TICKET) provides a cryptographic token to request key material from an external server (KMS). This is defined by RFC 6043. Finally, the MIKEY message may contain an authentication payload. These include:
Signature (SIGN) a signature on the MIKEY message. Verification (V) a MAC sent by the receiver to verify receipt.