Flash Access 3.0: Дополнительные возможности

This post is also available in: Английский

Video DRM
Статья про особенности и новые возможности в Adobe Flash Access 3.0. Слегка запоздалая попытка закрыть пробелы в документации Adobe. Впрочем, сейчас, когда скоро выйдет следующее поколение Adobe Flash Access с поддержкой iOS тема базовых возможностей текущего релиза станет еще более актуальной.

Введение

Система защиты контента Adobe Flash Access 3.0 была выпущена во второй половине 2011 года, став результатом развития продукта Adobe Flash Access 2.0. В новой версии Flash Access появились новые перспективные возможности, такие как объединение устройств в домены, создание предварительно подготовленной лицензии, изменение ключа при шифровании, синхронизация времени и т.д. Тем самым Adobe работала в двух основных направлениях: подготовка продукта для работы в высоконагруженных проектах и расширение спектра поддерживаемых бизнес моделей.

Экосистема Adobe Flash Access 3.0 включает:

  • Flash Access Java SDK, с эталонной реализацией сервера лицензий и интерфейсом командной строки
  • Flash Player 11 для Windows 32-bit
  • AIR 3 для Windows 32-bit
  • Flash Player 11 для Android 2.3,3.0,3.1 и 3.2
  • AIR 3 для Android 2.3,3.0 и 3.1
  • AIR 3 SDK с возможностью создания приложений Action Script для настольных систем и платформы Android
  • Тестовый видео плеер

Описание Flash Access SDK
С появлением Flash Access 3.0 разработчику предоставляется 2 вида SDK:

  • Flash Access Core SDK – обеспечивает функционал Flash Access 2.0 и включает базовые возможности Flash Access 3.0, такие как изменение ключей в процессе шифрования, поддержка домена, принудительная синхронизация клиента с сервером и т.д.
  • Flash Access Professional SDK – обеспечивает функционал Flash Access Core SDK и включает дополнительные возможности: создание файла лицензии для размещения на веб-сервере, а также включение лицензии в шифрованный контент.

Список функциональных возможностей Flash Access SDK

Изменение ключа шифрования (Key Rotation)
Для усиления защиты шифрованного контента добавлена возможность изменения ключа в процессе кодирования контента (key rotation). Благодаря этому отдельные блоки контента кодируются разными ключами, что значительно усиливает защиту контента.
Для активации функции “Key Rotation” при шифровании контента утилитой «AdobePackager» необходимо в конфигурационном файле утилиты «flashaccesstools.properties» указать параметр «encrypt.keys.rotation.enable = true». В таком случае ключи будут генерироваться автоматически и меняться с интервалом в 15 минут.

Для шифрования контента с пользовательскими ключами необходимо в конфигурационном файле flashaccesstools.properties указать список ключей, например:

1
2
encrypt.keys.rotation.key.1 = 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10
#encrypt.keys.rotation.key.n = 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20

Пользовательские ключи будут меняться по циклу.

Объединение устройств в домены
Для того, чтобы несколько устройств могли использовать один ваучер доступа к содержимому, Flash Access 3.0 предоставляет возможность объединения устройств в домен. Ваучер DRM содержит ключ расшифровки видео контента и генерируется сервером лицензий Flash Access. Использование домена позволяет снизить нагрузку на сервер лицензий, поскольку одного запроса ваучера достаточно для воспроизведения контента на множестве устройств.
Также для поддержки домена необходимо создать отдельный сертификат. В отличие от других сертификатов (License Server, Packager или Transport), сертификат для домена является самоподписанным или выпускается пользовательским центром сертификации.

Функция DRMManager.storeVoucher() используется для обеспечения совместного использования одного ваучера несколькими устройствами. Если развертывание поддерживает эту возможность, с помощью метода DRMManager.addToDeviceGroup() можно зарегистрировать несколько устройств в группе. Если в группе есть компьютер с действующим ваучером, привязанным к домену и дающим право на воспроизведение определенного содержимого, приложение AIR может извлекать сериализованные ваучеры DRM с помощью метода DRMVoucher.toByteArray(). Эти ваучеры можно импортировать на устройства с помощью метода

1
DRMManager.storeVoucher()

.

Лицензии
Поддержка лицензий в Flash Access 3.0 претерпела изменения. В версии Flash Access 2.0 root и leaf лицензии привязывались к устройству воспроизведения. Теперь с целью поддержки включения лицензии в шифрованный контент и обеспечения работы в домене к устройству воспроизведения привязывается только лицензия root, запрашиваемая у сервера лицензий.

Синхронизация клиента и сервера
В системе Flash Access 2.0 была предусмотрена возможность проверки времени клиента и его соответствия времени сервера (в процессе запроса лицензии), но не было предусмотрено механизма принудительной проверки и синхронизации между клиентом и сервером.
Вы можете создать политику с требованием синхронизации, используя утилиту управления политиками «AdobePolicyManager». При этом нужно указать параметр «-sync <name/value pairs>». Затем при помощи Flash Access SDK нужно добавить в созданную политику правило, например:

1
2
3
4
 try{
SyncFrequencyRequirements syncReq = new SyncFrequencyRequirements(3600);
play.setSyncFrequencyRequirements(syncReq);
}catch(Exception ex){System.out.println(ex);}

Передача сообщений синхронизации является необходимым условием обеспечения безопасности при воспроизведении контента, так как именно эти сообщения обеспечивают проверку соответствия времени клиента и времени сервера. Последующая синхронизация может носить как рекомендательный, так и обязательный характер. При сбое синхронизации, в случае обязательной синхронизации воспроизведение контента будет остановлено до возобновления связи с сервером Flash Access.

Размещение предварительно подготовленных лицензий на веб-сервере
Flash Access 3.0 (Flash Access Professional SDK) предоставляет возможность создания лицензий для определенных устройств воспроизведения заранее. Подготовленные лицензии можно разместить на обычном веб-сервере для обслуживания запросов клиентов. Для работы с ранее подготовленной лицензией необходимо, чтобы на клиенте был установлен Flash Player 11, Adobe AIR 3.0 или более поздние версии этих продуктов.
Для создания файла лицензии, необходимо:
o Зашифровать контент утилитой «AdobePackager», указав необходимые параметры в конфигурационном файле «flashaccesstools.properties», например:

1
2
3
4
5
 java -jar AdobePackager.jar pr.f4v proff.f4v -p ad-policy.pol -c flashaccesstools.properties
License ID: 3E7680FE-5461-3A99-AC62-59D04964701D
Packaging timestamp: Tue Mar 06 19:34:52 MSK 2012
Processing time: 10441 ms
SUCCESS

o При запросе лицензии на воспроизведение контента сервер лицензий определяет сертификат устройства, используя функцию

1
getMachineCertificate().getEncoded()

. Необходимо сохранить полученный сертификат устройства в файле, например: «mcert.der»
o Создать leaf-лицензию для воспроизведения контента на этом устройстве, например:

1
java -jar AdobeLicenseGenerator.jar -c flashaccesstools.properties -m proff.f4v.metadata -o -r mcert.der -leaf leaf-license
1
2
3
4
5
6
Adobe(R) Flash Access License Generator
version 3.1.0435
=======================
Signing credentials: trial-pro.pfx
License type: Leaf
Destination file: D:\....\libs\leaf-license
1
2
3
4
5
6
7
8
9
10
Generated Leaf license:
License Server: http://127.0.0.1/flashaccess
License ID: BFCB5B72-4387-39D9-BE2F-6C7DD42BE693
Policy ID: 2C5843B7-1B4F-3ABC-B86B-3F09EC9BA4F3
License End Date: Mon May 28 03:59:59 MSD 2012
Unlimited License Caching
Right: Play
Recipients:
Public Key Id: b3e397b821fee63886d6dba0c935500cd5a67c1a
SUCCESS

o Разместить файл лицензии «leaf-license» на веб-сервере, для обслуживания запросов на воспроизведение с этого устройства.
o Для запроса предварительной лицензии и помещения ее в локальный кеш Flash Player LSO (локальный общий объект) необходимо использовать функцию ActionScript

1
DRMManager.storeVoucher()

. Если лицензия на веб-сервере или в локальном кеше LSO не найдена, процесс запроса лицензии у сервера Flash Access повторяется.

Включение лицензии в шифрованный контент
В Flash Access 3.0 (Flash Access Professional SDK) появилась возможность помещения предварительно сгенерированной лицензии в шифрованный контент. Это позволяет воспроизвести контент, даже если сервер лицензий Flash Access не доступен.
Для помещения предварительно подготовленной лицензии в шифрованный контент, необходимо использовать утилиту «AdobeLicenseEmbedder», указав в качестве параметров имя шифрованного контента и имя предварительно созданной лицензии, например:

1
2
3
4
5
6
7
8
9
java -jar AdobeLicenseEmbedder.jar proff.f4v proffpre.f4v -l leaf-license
Adobe(R) Flash Access License Embedder
version 3.1.0435
=======================
License file: leaf-license
Source file: D:\....\libs\proff.f4v
Destination file: D:\....\libs\proffpre.f4v
"proffpre.f4v" created successfully.
SUCCESS

При воспроизведении контента запроса лицензии с сервера Flash Access не происходит, т.к. лицензия уже встроена в контент.

Восстановление заводских настроек
Когда пользователь устройства выбирает восстановление заводских настроек, сертификат устройства из операционной системы удаляется. Чтобы продолжить воспроизведение защищенного содержимого, приложению Flash необходимо повторно выполнить регистрацию устройства на сервере индивидуализации Adobe. Если клиент Flash Access получает устаревшую или предварительно подготовленную лицензию, то он отклоняет ее, так как лицензия создана для более ранней версии идентификатора устройства.

Более подробная информация по использованию Flash Access предоставлена на сайте Adobe в статье «Цифровые средства защиты авторских прав (DRM)».

Сеть и безопасность
После успешной установки Flash Access важно обеспечить безопасность системы.
Для обеспечения защиты сервера Flash Access от несанкционированного доступа и компрометации, необходимо в демилитаризованной зоне (DMZ) установить «reverse proxy». Он будет принимать запросы из интернета и перенаправлять их на сервер Flash Access. Задача «reverse proxy» — исключить возможность прямого обращения клиентов к серверу Flash Access.

Обеспечение доступа к серверу.
Входящие запросы. Сервер лицензий Flash Access 3.0 принимает запросы по протоколу HTTP и обслуживает их на следующих веб-интерфейсах (основные интерфейсы):

  • ../flashaccess/getServerVersion/v3 отвечает на запросы клиентов, возвращая версию сервера лицензий Flash Access
  • ../flashaccess/authn/v1 обслуживает запросы на прохождение аутентификации по методу логин/пароль
  • ../flashaccess/authn/v3 обслуживает запросы на прохождение аутентификации по методу логин/пароль
  • ../flashaccess/license/v1 обслуживает запросы на получение лицензий
  • ../flashaccess/license/v3 обслуживает запросы на получение лицензий
  • ../flashaccess/sync/v3 обслуживает запросы на прохождение синхронизации клиента с сервером
  • ../flashaccess/domain/v3 обслуживает запросы на регистрацию в домене
  • ../flashaccess/dereg/v3 обслуживает запросы на выход из домена

Исходящие запросы. Для обеспечения корректной работы Flash Access необходимо обеспечить доступ к спискам отзыва сертификатов (CRL) Adobe:

  • http://crl2.adobe.com/Adobe/FlashAccessRootCA.crl
  • http://crl2.adobe.com/Adobe/FlashAccessIntermediateCA.crl
  • http://crl3.adobe.com/ AdobeSystemsIncorporatedFlashAccessRuntime/LatestCRL.crl
  • http://crl2.adobe.com/Adobe/FlashAccessIndividualizationCA.crl

Закрытие доступа к указанным спискам приведет к прекращению приема входящих запросов от клиентов сервером.

Включение шифрования в Flash Media Server 4.5.1
Начиная с версии FlashAccess 2.0, появилась возможность интеграции системы защиты контента с Flash Media Server 4.0. Начиная с FlashAccess 3.0, возможна интеграция с Flash Media Server 4.5.1. Благодаря этому Flash Media Server обеспечивает вещание потоков по технологии HTTP DS в шифрованном виде, что исключает возможность несанкционированного перехвата потоков и записи данных.

Для включения поддержки шифрования потоков в FMS 4.5.1 необходимо:
1. Изменить конфигурационный файл «rootinstall/applications/livepkgr/events/_definst_/liveevent/Event.xml», добавив следующие параметры:

1
2
3
4
5
6
7
&lt;Recording&gt;
&lt;ContentProtection enabled="true"&gt;
&lt;ProtectionScheme&gt;FlashAccessV3&lt;/ProtectionScheme&gt;
&lt;FlashAccessV3&gt;
&lt;/FlashAccessV3&gt;
&lt;/ContentProtection&gt;
&lt;/Recording&gt;

После добавления параметров и начала вещания потока, в директории rootinstall/applications/livepkgr /streams/_definst_/…/
должны появиться файлы:
• .bootstrap – содержит информацию, необходимую для быстрого запуска воспроизведения контента, а также: место размещения контента, таблицы сегментов и т.д.
• .control – содержит информацию, необходимую для работы Live Packager.
• .drmmeta – файл дополнительной информации для защищенных Flash Access файлов
• .f4f – шифрованный контент
• .f4x – индексный файл
• .meta – содержит метаданные, такие как битрейт, размер окна и т.д.
Для включения функции key rotation необходимо в файл «rootinstall/applications/livepkgr/events/_definst_/liveevent/Event.xml» добавить параметры:
• EnableKeyRotation — включение ротации ключей. По умолчанию смена ключей отключена
true
• KeyRotationInterval — интервал ротации ключей. По умолчанию интервал составляет 15 минут.
900
• KeyRotationFilePath — файл пользовательских ключей
rotationkeyfile

Более подробная информация по совместному использованию Flash Media Server 4.5.1 и Flash Access 3.0 представлена на сайте Adobe.