Средства защиты потокового вещания в Wowza Streaming Engine

2015-08-03 14:21:00

Медиасервер Wowza Streaming Engine позволяет не только организовать трансляций на плееры абонентов и обеспечивает трансляцию VOD контента, поддерживает технологии адаптивного стриминга и транскодинга входящих потоков (с помощью процессора или на базе GPU), но и позволяет защитить передаваемый поток от несанкционированного просмотра и перехвата.

Есть несколько методов защиты, которые поддерживает Wowza: StreamLock : является опцией, обеспечивающей передачу шифрованных данных; разработкой ведется компанией Wowza. Позволяет практически на-лету осуществлять подготовку 256-битных SSL (Secure Socket Layer) сертификатов, осуществляя проверку пользователей Wowza на возможность просмотра контента сервера. StreamLock SSL сертификаты наиболее эффективны для передачи данных по RTMP протоколу, но могут быть также использованы и внутри защищенного HTTP (HTTPS). HTTPS: представляет собой передачу данных по протоколу HTTP с применением SSL. Данный метод защиты актуален для Apple HTTP Live Streaming (HLS), Adobe HTTP Dynamic Streaming (HDS), а также Microsoft Smooth Streaming. HTTPS сам по себе не является защитой, но в сочетании с Token-Based аутентификационными системами обеспечивает высокий уровень защиты. RTMPS: по аналогии с HTTP является способом передачи данных по RTMP-протоколу с использованием SSL. Данный метод используется для защиты стриминга по технологии Adobe Flash RTMP и обеспечивает, совместно с системой SecureToken, шифрование передаваемого потока. RTMPE: еще один метод защиты потока Flash RTMP, используемый в сочетании с SecureToken, однако обеспечивающий меньшую степень шифрования, чем RTMPS. Разработчики Wowza рекомендуют использовать опцию StreamLock.

Методы позволяют организовать защищенный трансфер данных по определенным протоколам и обеспечить шифрование. Для создания полноценного сервиса защищенного просмотра этого недостаточно, и поэтому существуют различные механизмы обработки пользовательских запросов, генерации ключей защиты, выдачи пользовательских сертификатов и разрешений на просмотр. Продукт Wowza поддерживает различные механизмы, в их числе Microsoft PlayReady и Verimatrix Video Content Authority System (VCAS) . Так как описание данных механизмов требует развернутого описания, их интеграцию с Wowza в рамках данной статьи мы рассматривать не будем.

В начале статьи упоминалась система защиты SecureToken, она работает по принципу запрос/ответ и помогает защитить контент при попытке подмены абонентского устройства. Соединение защищается с помощью сгенерированного случайным образом разового ключа и пароля. Начиная с версии 4.1 данная технология доступна для всех протоколов стриминга и включает различные опции хэширования для генерации так называемых «защитных маркеров» (security token) для обмена ими между сервером и клиентским приложением. Администратор может выбирать требуемый алгоритм хэширования (SHA, secure hash algorithm) для генерации ключа для всех поддерживаемых сервером протоколов, среди них SHA-256, SHA-384 и SHA-512.

В тот момент, когда клиентский плеер запрашивает URL потока, он отправляет на сервер специальный запрос с набором параметров, один из которых представляет собой хэш, генерируемый на клиентской веб-странице. Данный хэш генерируется из пути к материалу, параметров SecureToken и частного секретного кода. После получения запроса модуль SecureToken выполняет на серверной стороне генерацию хэша, содержащего все полученные данные. Далее в процессе работы сервер постоянно сравнивает свой хэш и хэш клиента на полное соответствие данных. Таким образом, поток становится доступным к просмотру только с определенного ресурса и полностью исключает получение доступа к потоку через сторонние плееры. Другими словами, опубликованный LIVE или VOD контент может быть просмотрен только через конкреный плеер, размещенный на сайте, и никакие другие средства (программные или аппаратные) данный материал просмотреть никак не смогут.

В настройках на серверной стороне администратор может также включить поддержку алгоритма Tiny Encryption Algorithm (TEA) вместо стандартного алгоритма хэширования. Данный алгоритм поддерживается только для RTMP протокола. В тот момент, когда Flash плеер запрашивает RTMP-поток от Wowza Streaming Engine, модуль SecureToken будет использовать TEA для генерации шифровального ключа, основанного на специальном частном кодовом наборе (private shared secret), которое откроет доступ, вернув ключ шифрования в клиентскую часть. Плеер расшифрует этот ключ и пошлет результат на сервер для сравнения данных и принятия решения о предоставлении доступа.
Данный алгоритм легче в исполнении, а передаваемый ключ содержит меньше данных, что повышает вероятность дешифровки, об этом стоит помнить, если принимается решение о применении TEA.

Выше мы рассмотрели стандартную встроенную в Wowza систему защиты, которая не требует дополнительной платы и входит в базовую поставку медиасервера, нужно лишь выполнить настройки на серверной и клиентской стороне. Однако для полноценной интеграции Wowza с системой авторизации веб сайта можно использовать модули от сторонних разработчиков, например STi Streaming Protection for Wowza и Wrench for Wowza Streaming Engine .

STi Streaming Protection for Wowza.

Данный модуль позволяет обеспечить безопасность запросов на просмотр потоков через плееры Flash по протоколу RTMP или HTTP iOS для RTSP или HLS потоков с поддержкой Android устройств, а также других устройств, поддерживающих RTP. В дальнейшем планируется постоянно расширять число поддерживаемых устройств и протоколов. Настройки модуля сохраняются в XML файле. Также стоит отметить, что данный модуль поддерживает работу с MySQL, то есть основные параметры и данные хранятся в собственной БД, обеспечивая не только защиту, но и позволяя осуществлять безопасную интеграцию со сторонними системами.

Модуль позволяет настроить, какие маркеры (tokens) к каким потокам будут применены, будет ли это разовый доступ или многократный, отключать маркеры (tokens), если необходимо закрыть доступ к материалу. Также есть возможность настроить так называемый «поток по умолчанию», который будет показан абоненту в том случае, когда доступ к оригинальному контенту закрыт. При работе с данным модулем доступ к потокам (как Live, так и VOD) будет закрыт, если они отсутствуют в базе данных.

Wrench for Wowza Streaming Engine.

Разработчики позиционируют свой продукт как решение по «закручиванию гаек» в системе безопасности (дословно Wrench переводится как гайковерт )), позволяя обеспечить высокий уровень защиты материала на сайте, будь то бесплатный Drupal или Android-приложение. По аналогии с предыдущим модулем, работа осуществляется через базу данных MySQL.

Структура работы модуля позволяет организовать доступ к материалу для пользователей через авторизацию на веб-сайте. Для абонента это выглядит максимально просто: логин и пароль правильные, значит можно посмотреть видео контент. Само собой, что доступ настраивается как для групп материала, так и индивидуально, на разовый или неограниченный просмотр.

А внутри происходит следующее: клиент авторизуется на сайте, движок веб-сайта проверяет эти данные и делает запрос в базу данных. После чего клиент получает доступ к видео страничке и материалам на ней. Затем клиент обращается к какому-то видео ролику (неважно, Live или VOD), используя ссылку с маркером token. Это видео расположено на сервере Wowza. Затем движок Wrench ассоциирует запрос клиента и полученный token, идентифицирует клиента и дает ему доступ к видео или запрещает его.

Кроме того, можно дополнительно задействовать следующие методы дополнительной защиты:
  • Проверка IP-адреса.
  • Проверка через внешние веб-сервисы логина, пароля, имени потока и т.д.
  • Срок действия маркера Token.
  • Предотвращение доступа к материалам нескольких пользователей по одинаковому логину/паролю
  • Аутентификация запроса к базе SQL. Проверяется уникальный тип запроса к базе данных. Такой запрос может быть настроен индивидуально под каждого пользователя.
  • Поддержка «черного списка.

Методы опциональны и могут быть применены по желанию.

Подводя итог.

Оригинальный движок Wowza Streaming Engine предоставляет средства шифрования потоков, обеспечивает безопасную передачу данных по различным протоколам и с поддержкой шифрования любой сложности. Но для того, чтобы эти средства работали на реальном веб-сайте с реальными пользователями, нужно использовать дополнительные модули сторонних разработчиков, чтобы обеспечить интеграцию с различными системами, дать доступ абоненту лишь через авторизацию, при этом поддерживая безопасность на высоком уровне. Затронутые в данной статье технологии, продукты и решения дают разработчикам все необходимые средства для решения задач от простой публикации видео на сайте-визитке, до создания большого видео хостинга на серверном кластере.