Введение

Профиль безопасности для протокола реального времени

Протокол защищенного транспорта в реальном времени (SRTP) — это профиль для протокола реального времени (RTP), предназначенный для обеспечения шифрования, аутентификации сообщений и целостности, а также защиты от атак повторного воспроизведения данных RTP как в одноадресных, так и в многоадресных приложениях. Он был разработан небольшой группой экспертов в области интернет-протоколов и криптографии из компаний Cisco и Ericsson. Впервые он был опубликован IETF в марте 2004 года. Поскольку RTP сопровождается протоколом управления RTP (RTCP), который используется для управления сеансом RTP, у SRTP есть сопутствующий протокол — Secure RTCP (SRTCP); он безопасно предоставляет те же функции для SRTP, что и RTCP для RTP. Использование SRTP или SRTCP является необязательным в приложениях RTP или RTCP; однако даже при использовании SRTP или SRTCP все предоставляемые функции (например, шифрование и аутентификация) являются необязательными и могут включаться или отключаться независимо друг от друга. Единственным исключением является функция аутентификации сообщений, которая необходима и обязательна при использовании SRTCP.

Шифрование потока данных

SRTP и SRTCP используют Advanced Encryption Standard (AES) в качестве шифра по умолчанию. Определены два режима шифрования, позволяющие использовать блочный шифр AES как поточный шифр:

Сегментированный целочисленный счетный режим. Типичный счетный режим, обеспечивающий произвольный доступ к любым блокам, что критически важно для RTP-трафика, передаваемого по ненадежной сети с возможной потерей пакетов. В общем случае, в качестве счетчика может использоваться практически любая функция, при условии, что она не повторяется в течение большого числа итераций. Однако, стандарт для шифрования данных RTP использует обычный инкрементальный целочисленный счетчик. AES, работающий в этом режиме, является алгоритмом шифрования по умолчанию, с размером ключа по умолчанию 128 бит и длиной ключа соли по умолчанию 112 бит.

Режим f8. Вариация режима обратной связи, улучшенная для произвольного доступа и с измененной функцией инициализации. Значения ключа шифрования и ключа соли по умолчанию совпадают со значениями для AES в счетном режиме. (AES, работающий в этом режиме, был выбран для использования в мобильных сетях 3G.)

Помимо шифра AES, SRTP позволяет полностью отключить шифрование, используя так называемый нулевой шифр, который рассматривается как альтернативный поддерживаемый шифр. Фактически, нулевой шифр не выполняет никакого шифрования: алгоритм шифрования функционирует как тождественная функция, копируя входной поток в выходной поток без изменений. Реализация этого режима шифрования обязательна для любой системы, совместимой с SRTP. Таким образом, он может использоваться, когда гарантии конфиденциальности, обеспечиваемые SRTP, не требуются, в то время как другие функции SRTP, такие как аутентификация и целостность сообщений, могут быть использованы.

Хотя SRTP может легко поддерживать новые алгоритмы шифрования, стандарт SRTP устанавливает, что новые алгоритмы шифрования могут быть введены только путем публикации нового сопутствующего RFC, который должен четко определять новый алгоритм.

Аутентификация, целостность и защита от повторного просмотра

Вышеперечисленные алгоритмы шифрования сами по себе не обеспечивают целостность сообщений: злоумышленник не сможет расшифровать данные, но может подделать или повторно использовать ранее переданные данные. Поэтому стандарт SRTP также предоставляет средства для обеспечения целостности данных и защиты от повторных атак. Для аутентификации сообщения и защиты его целостности используется алгоритм HMAC SHA1. Он генерирует 160-битный результат, который затем усекается до 80 или 32 бит и становится тегом аутентификации, добавляемым к каждому пакету. HMAC вычисляется на основе полезной нагрузки пакета и данных из заголовка пакета, включая порядковый номер пакета. Для защиты от атак повторного воспроизведения приемник сохраняет порядковые номера ранее полученных сообщений, сравнивает их с порядковым номером в каждом новом полученном сообщении и принимает новое сообщение только в том случае, если оно не было получено ранее. Этот подход опирается на защиту целостности, чтобы сделать невозможным изменение порядкового номера без обнаружения.

Вывод ключа

Функция вывода ключа используется для получения различных ключей, применяемых в криптографическом контексте (ключи и соли шифрования SRTP и SRTCP, ключи аутентификации SRTP и SRTCP) из одного мастер-ключа криптографически безопасным способом. Таким образом, протоколу управления ключами необходимо обмениваться только одним мастер-ключом, а все необходимые ключи сеанса генерируются путем применения функции вывода ключа. Периодическое применение функции вывода ключа не позволяет злоумышленнику собрать большой объем зашифрованных данных, зашифрованных одним и тем же ключом сеанса. Это обеспечивает защиту от определенных атак, которые легче осуществить при наличии большого объема зашифрованных данных. Кроме того, многократное применение функции вывода ключа обеспечивает ретроспективную и перспективную безопасность в том смысле, что скомпрометированный ключ сеанса не ставит под угрозу другие ключи сеанса, полученные из того же мастер-ключа. Это означает, что даже если злоумышленнику удастся восстановить ключ сеанса, он не сможет расшифровать сообщения, защищенные предыдущими и последующими ключами сеанса, полученными из того же мастер-ключа. (Следует отметить, что, конечно, утечка мастер-ключа раскрывает все ключи сеанса, полученные из него.) SRTP полагается на внешний протокол управления ключами для установки первоначального мастер-ключа. Два протокола, специально разработанные для использования с SRTP, – ZRTP и MIKEY. Существуют также другие методы согласования ключей SRTP. Есть несколько поставщиков, предлагающих продукты, использующие метод обмена ключами SDES.

DTLS-SRTP

определил DTLS SRTP. DTLS SRTP использует протокол DTLS для передачи главного ключа и обеспечивает аутентификацию по открытому ключу.

Совместимость и применения

См. телефоны, серверы и приложения с поддержкой SRTP.