Документация Flussonic Media Server

Contents

Защита контента с помощью DRM

DRM (Digital Rights (Restrictions) Management) — это способ защиты видео-контента при помощи шифрования парой ключей. Ключи выдаются сервером ключей DRM-системы.

Flussonic Media Server поддерживает работу со следующими системами DRM:

Многие серверы DRM периодически меняют (ротируют) ключи с целью более надежной защиты. Flussonic ротирует ключи сам — он запрашивает у DRM сервера новый ключ каждые 10 минут.

Описание механизма защиты DRM

Apple в спецификации протокола HLS описывает два штатных механизма шифрования: AES-128 и SAMPLE-AES. Flussonic Media Server поддерживает оба механизма, а также ряд DRM систем.

Механизмы отличаются лишь непосредственным способом шифрования данных и работают по трехсторонней схеме:

  1. Flussonic запрашивает и получает ключ для шифрования контента от сервера ключей и URL этого ключа.
  2. Клиент получает от Flussonic шифрованный контент и URL ключа для дешифрования.
  3. Сервер ключей получает от клиента запрос на ключ для дешифрования и решает: отдавать ключ или нет.

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

Механизмы получения ключа для видео-потоков и для файлов не отличаются.

Настройка шифрования в общем случае

Flussonic Media Server хранит контент в нешифрованном виде. Шифруется контент при отдаче клиенту.

Чтобы включить шифрование, добавьте строку drm в настройки потока или зоны файлов, укажите метод шифрования и сервер ключей.

stream channel0 {
  url udp://239.0.0.1:1234;
  drm aes128 keyserver=http://192.168.0.80:4500/;
}

Примеры настроек для отдельных DRM приведены в одноименных разделах (см. ссылки выше на этой странице).

После сохранения настроек Flussonic будет шифровать контент для всех протоколов, которые могут работать с указанным методом шифрования.

Внимание! Необходимо отключить все протоколы, которые несовместимы с выбранным DRM. Если указанный метод шифрования поддерживается в протоколе HLS, но у вас остался работающим протокол HDS, то пользователь сможет без проблем проиграть видео по HDS без шифрования.

Чтобы этого не произошло, надо отключить все лишние протоколы для нужного потока или зоны файлов:

stream channel0 {
  url udp://239.0.0.1:1234;
  rtsp off;
  rtmp off;
  hds off;
  mpegts off;
  dash off;
  drm aes128 keyserver=http://192.168.0.80:4500/;
}

file vod {
  rtsp off;
  rtmp off;
  hds off;
  mpegts off;
  dash off; 
  drm aes128 keyserver=http://192.168.0.80:4500/;  
}

Теперь доступ к контенту доступен только по протоколу HLS.

DRM для файлов

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

Необходимо сконфигурировать файл на явное обращение к серверу ключей:

file drm {
  path priv;
  hds off;
  rtmp off;
  rtsp off;
  dash off;
  drm aes128 keyserver=http://192.168.0.80:4500/;
}

При такой конфигурации Flussonic будет делать HTTP GET запросы к серверу ключей с параметром ?name=: http://192.168.0.80:4500/?name=drm/bunny.mp4&number=1

В ответ Flussonic ожидает ответ, в котором первые 32 байта будут HEX представлением ключа, используемого для шифрования. Также в этом ответе ожидается заголовок X-Key-Url, который будет сообщен клиенту. Поэтому X-Key-Url клиент будет ожидать 16-байтный ключ (не в HEX виде) для дешифровки.

Защита DVR архива с помощью DRM

Архив шифруется посегментно одним ключом, и каждые 10 минут Flussonic запрашивает новый ключ для следующей группы сегментов.

Внимание! Чтобы DRM защита DVR архива работала, сервер ключей должен хранить старые ключи (по старым URL) не менее по времени, чем глубина архива.