Стриминг
Безопасность. Шифрование AES-128 для видео
Что такое AES-128?
AES-128 (от англ. Advanced Encryption Standard) — это алгоритм блочного шифрования, основанный на нескольких подстановках и перестановках, происходящих с блоками данных по 16 байт. Длина ключа этого вида шифрования равна 128 бит.
Шифрование подходит, когда нужно разрешить определенному кругу зрителей доступ к контенту, например, к контенту по подписке для тех, кто её оплатил.
AES-128 очень надёжный и используется в качестве стандарта шифрования для систем высокой безопасности, поэтому перехватить и расшифровать ключи сложно.
Для максимальной защиты можно комбинировать шифрование AES-128 и блокировку по странам или доменам.
Как AES-128 работает с видео?
Мы доставляем видео по протоколу HLS, при котором оно разбивается на плейлисты, состоящие из фрагментов (чанков).
Фрагменты видео, используя алгоритм AES-128, передаются в зашифрованном виде, ключ расшифровки видео для зрителей передаётся в отдельном запросе. Для настройки вам понадобится сервер (сервер ключей), который определяет, какие пользователи имеют доступ к видео, а какие — нет. Пользователям с доступом к контенту наша система выдаст ключ расшифровки.
Процесс получения ключа расшифровки:
1. Пользовательский запрос на просмотр видео передаётся на ваш сервер ключей.
2. Ваш сервер анализирует запрос на наличие cookie и других параметров сессии, и определяет, можно ли выдать этому пользователю доступ на просмотр видео.
3а. Если запрос не содержит определённые параметры, доступ к видео не предоставляется.
3б. Если запрос содержит определённые параметры, сервер отправляет GET-запрос к нашему API на получение ключа расшифровки.
4. API предоставляет ключ серверу.
5. Сервер передаёт ключ зрителю и предоставляет ему доступ к просмотру видео.
Настройка AES-128 для работы с видео
Настройки на платформе Стриминг
Для подключения возможности передавать видео с использованием шифрования AES-128 обратитесь в техническую поддержку на почту support@edgecenter.ru или в чат. В сообщении укажите URL вашего сервера, например, videos.access.com.
После включения шифрования в URL плейлистов (M3U8) ваших видео добавятся символы _s_ :
https://videos.access.com/videos/12345_0sKTplhwDSmbV9Z_s_/master.m3u8
Обратите внимание. После подключения шифрования запрос на просмотр видео и получение ключа расшифровки отправляются на серверы Стриминга. На серверах Стриминга нет настроек, позволяющих понимать, по какому принципу разрешать или запрещать просмотр видео конкретному зрителю, поэтому просмотр будет разрешён всем зрителям. Чтобы избежать этого, выполните настройки на своём сервере, описанные ниже.
Настройки на вашем сервере
Для перенаправления и обработки запросов на получение ключа расшифровки необходимо настроить сервер:
1. Создайте API, на который будет приходить запрос получения ключа расшифровки.
2. Создайте домен, на который зритель будет перенаправлен для проверки и получения ключа. Домен должен подставляться в ссылку после символов _s_ следующим образом:
https://videos.access.com/videos/12345_0sKTplhwDSmbV9Z_s_videos.access.com/master.m3u8
3. В случае успешной валидации зрителя сервер должен отправить GET-запрос к нашему API для получения ключа расшифровки:
https://api.edgecenter.ru/streaming/vod/videos/12345_0sKTplhwDSbV9Z/encryption
Где:
-
12345 — это ID вашего аккаунта
-
_0sKTplhwDSbV9Z — это slug, идентифицирующий видео
4. После получения ключа сервер должен передать его зрителю в таком виде, в котором он его получил от API.
Чтобы передать ключ в таком формате, используйте заголовки:
-
content-transfer-encoding: binary
-
content-type: application/octet-stream