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

  1. Быстрый старт
  2. How-to
  3. Потоковое вещание
    1. Варианты источников
    2. Переключение источников
    3. Публикация на Flussonic
    4. Прием мультикаста
    5. Серверные плейлисты
    6. Микширование
    7. Захват с SDI
    8. Отправка на другие серверы
    9. Распознавание DVB субтитров
    10. Наложение логотипа
  4. Транскодер
    1. Логотип
    2. Hardware
    3. Скриншоты
    4. Мозаика
  5. DRM
    1. Simple CAS
    2. Conax DRM
    3. BuyDRM (KeyOS)
    4. Widevine
    5. PallyCon
    6. EzDRM
  6. Авторизация
    1. Конструктор бэкендов
    2. Сервис сбора статистики
    3. Domain lock
    4. Middleware
    5. Secure links
    6. Ограничение сессий
    7. Мультиавторизация
    8. Бан IP адресов
    9. DVR
    10. Aliaser
  7. API
    1. HTTP API
    2. Events API
    3. MySQL API
    4. SQL API для кластеров
    5. SNMP
  8. Кластер
    1. Ретрансляция
    2. Кластерный захват
    3. Балансировщик нагрузки
    4. Пиринг
    5. Организация CDN
  9. VOD
    1. Кэш
    2. Облако
    3. Транскодирование файлов
    4. Мультибитрейтный VOD из файлов
  10. DVR
    1. Настройка
    2. Timeshift
    3. Catchup
    4. Проигрывание
    5. Экспорт в MP4
    6. Доступ по протоколам
    7. Timelapse
    8. API
    9. Кластеризация DVR
    10. Репликация
    11. Облако
  11. Воспроизведение
    1. HLS
    2. embed.html
    3. HTML5 с низкой задержкой
    4. Плеер HTML5 с низкой задержкой
    5. MPEG-TS
    6. RTMP
    7. DASH
    8. HDS
    9. RTSP
    10. Multicast
    11. Multicast с постоянным битрейтом
    12. WebRTC
    13. H.265
  12. Администрирование
    1. Установка
    2. Обновление
    3. Конфигурация
    4. Мониторинг
    5. Производительность
    6. Лицензия
    7. LUA скрипты
    8. Безопасность
    9. Let's Encrypt
    10. Миграция
  13. IPTV
    1. Захват спутникового видео
    2. Транскодирование
    3. Middleware в IPTV OTT
    4. Экспорт EPG со спутника
    5. Группы каналов
    6. Реклама

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

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

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

А также поддерживается метод шифрования AES128.

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

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

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

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

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

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

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

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

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 для файлов Anchor Anchor x2

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

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

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 Anchor Anchor x2

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

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