Главная » Хабрахабр » [Перевод] Объяснение протокола SRTP

[Перевод] Объяснение протокола SRTP

Протокол SRTP (Secure Real-time Transport Protocol) это система безопасности, которая расширяет протокол RTP (Real-time Transport Protocol) набором защитных механизмов.

Это дает конфиденциальность за счет шифрования RTP-нагрузки и проверки подлинности. WebRTC использует DTLS-SRTP для шифрования, аутентификации и целостности сообщений, а также для защиты от атак повторного воспроизведения. Но что такое SRTP и как оно работает?
SRTP это один из компонентов для безопасности, он очень удобен для разработчиков, которые ищут надежное и безопасное API.

Что такое SRTP?

SRTP повышает безопасность RTP. Протокол был опубликован организацией IETF (Internet Engineering Task Force) в стандарте RFC 3711, в марте 2004.

Также поддерживается проверка подлинности, которая широко используется как защитный механизм в RTP. SRTP обеспечивает конфиденциальность за счет шифрования RTP-нагрузки, не включая заголовки RTP. Главный затык в SRTP – это управление ключами, так как вариантов много: DTLS-SRTP, MIKEY в SIP, SDES (Security Description) в SDP, ZRTP и пр. В то время как SRTP можно использовать во всей его полноте, также возможно отключать/включать определенные функции.

Шифрование

SRTP использует AES (Advanced Encryption Standard) как шифр по умолчанию. В AES два режима шифрования: режим счетчика (Segmented Integer Counter Mode) и режим f8. Обычно используется режим счетчика – он критично важен при передаче трафика по ненадежной сети с потенциальной потерей пакетов. Режим f8 используется в мобильных 3G-сетях и является вариантом режима обратной связи (Output Feedback), в котором расшифровка происходит так же, как и шифрование.

Нулевой шифр не делает шифрование, он копирует входящий поток напрямую в исходящий, без изменений. Еще SRTP позволяет разработчикам отключать шифрование с помощью нулевого шифра.

В действительности, валидные реализации WebRTC ДОЛЖНЫ поддерживать шифрование, на данный момент с DTLS-SRTP. В WebRTC не рекомендуется использовать нулевой шифр, так как сохранность данных довольно важна для конечных пользователей.

Целостность

Чтобы сохранить целостность сообщений в SRTP, на основание содержимого и части пакетных заголовков с помощью алгоритма создается аутентификационная метка, которая затем добавляется в RTP-пакет. Эта метка используется для валидации содержимого полезной нагрузки, что, в свою очередь, предотвращает фальсификацию данных.

Для их блокировки каждому пакету назначается последовательный индекс. Аутентификация – это также основа для отражения атак повторного доступа. Индексы эффективны благодаря целостности, описанной чуть выше; без нее есть вероятность подмены индексов. Новое сообщение будет принято только в том случае, если его индекс – следующий по порядку и еще не был получен.

Последние реализации WebRTC используют DTLS v1. Хотя в WebRTC в основном используется алгоритм HMAC-SHA1 для целостности в SRTP, строго рекомендуется выбирать наборы алгоритмов с PFS (Perfect Forward Secrecy) поверх non-PFS и AEAD (Authenticated Encryption with Associated Data) поверх non-AEAD. 2 c набором алгоритмов TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256.

Ключи

SRTP использует функцию формирования ключа (KDF) для создания ключей на основе мастер-ключа. Протокол управления ключами создает все ключи в сессии с помощью мастер-ключа. За счет того, что у каждой сессии свой уникальный ключ, все сессии защищены. Поэтому, если одна сессия была скомпрометирована, то остальные по-прежнему под защитой. Протокол управления ключами используется для мастер-ключа – обычно это ZRTP или MIKEY, но есть и другие разновидности.

Стек RTP IP

DTLS – для шифрования потоков данных, SRTP – для медиапотоков. Потоки в WebRTC защищены одним из двух протоколов: SRTP или DTLS (Datagram Transport Layer Security). Это детально раскрыто в документах IETF: WebRTC security и security arch. Тем не менее, для обмена ключами в SRTP используют DTLS-SRTP, чтобы определять атаки посредника.

SRTCP (Secure Real-time Transport Control Protocol)

У SRTP есть родственный протокол – SRTCP (Secure Real-time Transport Control Protocol). SRTCP расширяет RTCP (Real-time Transport Control Protocol) теми же функциями, что SRTP расширяет RTP, включая шифрование и аутентификацию. Подобно SRTP, почти все функции безопасности SRTCP можно отключить, кроме аутентификации сообщений – оно необходима для SRTCP.

Подводные камни SRTP

SRTP шифрует полезную нагрузку RTP-пакетов, но не расширение заголовков. Так появляется уязвимость, так как расширение заголовка в RTP-пакете может содержать важную информацию, например, уровни звука каждого пакета в медиапотоке. Потенциально это может быть знаком для злоумышленника, что в сети происходит общение двух людей – приватность беседы может быть нарушена. Данное обстоятельство рассматривалось в документе IETF Request for Comments: 6904, который требует от всех последующих реализаций SRTP шифровать расширения заголовков.

Такой посредник нарушает принцип сквозного шифрования, которое используется в peer-to-peer системах; иными словами, конечные устройства должны “доверять” еще одному участнику. В некоторых случаях – например, конференция со множеством участников – может быть необходим посредник в виде SFM (Selective Forwarding Mixer), чтобы оптимизировать RTP-параметры во время проброса потоков. PERC дают гарантии, подкрепленные hop-by-hop и сквозным шифрованиями в двух раздельных, но родственных контекстах. Для обхода этого ограничения, Privacy Enhanced RTP Conferencing (PERC, одна из рабочих групп IETF – прим.переводчика) работает над решениями вроде процедур двойного шифрования в SRTP. Мы обязательно расскажем об этом в следующих постах!


Оставить комментарий

Ваш email нигде не будет показан
Обязательные для заполнения поля помечены *

*

x

Ещё Hi-Tech Интересное!

[Перевод] Что входит в обязанности ведущего разработчика

Вот эта большая статья Джона Олспау называется «Быть ведущим инженером». В первый раз я прочитала её примерно четыре года назад, когда только перешла на нынешнюю работу, и она действительно повлияла на представления об этом направлении моей карьеры. Что, конечно, является ...

Первый интроверт в трясущемся мире

Каждый новый фильм о космосе — это шанс заинтересовать людей тем, чем прекрасна космонавтика. И, теоретически, у байопика «Первый на Луне» («First Man», КиноПоиск, IMDB), рассказывающем о жизни Нила Армстронга, были все шансы — единственная авторизованная биография в качестве источника, ...