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

Содержание

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

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

Ниже на этой странице приведены настройки, одинаковые для всех поддерживаемых DRM систем.

По ссылкам приведены настройки для конкретных DRM. Flussonic Media Server поддерживает работу со следующими системами DRM:

Описание механизма защиты 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 fake://fake;
  drm aes128 keyserver=http://mock:5000/cas-server;
}

Примеры настроек для отдельных 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) не менее по времени, чем глубина архива.

Включение шифрования всех кадров

По умолчанию Flussonic шифрует только ключевые кадры. Как правило, этого достаточно для защиты от несанкционированного доступа к потоку, а также снижает энергопотребление при дешифровании на стороне клиента. Однако некоторые Smart TV и приставки требуют, чтобы шифровались все кадры в потоке.

Чтобы включить шифрование всех кадров, используйте опцию encryption=full при настройке DRM.

Для включения режима шифрования только ключевых кадров используйте опцию encryption=sparse.

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/ encryption=full;
}

Ротация ключей шифрования

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

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/ expires=60;
}

В случае использования опции expires параметр drm_id генерируется автоматически при каждом новом запросе ключа шифрования.

Важно! Включение опции expires означает регулярное получение новых ключей шифрования от сервера ключей. В зависимости от условий провайдер drm может взимать оплату за каждый выданный ключ. Рекомендуем перед включением опции expires проверить свой договор с провайдером drm.