Безопасная остановка PlayReady
Появилась в PlayReady версии 3.0, PlayReady Secure Stop — это функция, которая предоставляет средства для устройства PlayReady, чтобы уверенно утверждать службе потоковой передачи мультимедиа, что воспроизведение мультимедиа остановлено для любого определенного фрагмента содержимого. Благодаря этой возможности службы потоковой передачи мультимедиа могут точно применять ограничения на использование и сообщать о них на различных устройствах для заданной учетной записи.
Событие Secure Stop передается клиенту на сервер Secure Stop при остановке воспроизведения мультимедиа либо в конце носителя, либо из-за того, что пользователь остановил презентацию мультимедиа где-то в середине. При сообщении о событии Secure Stop и во время записи события Secure Stop клиент PlayReady гарантирует, что ключ содержимого удаляется из памяти. Безопасная остановка также сообщается, когда предыдущий сеанс неожиданно завершается (например, из-за сбоя системы или приложения).
Примечание
Безопасная остановка применяется только к непостояным лицензиям.
Существует два основных сценария отправки запроса безопасной остановки:
- Когда воспроизведение мультимедиа останавливается либо в конце, либо потому, что пользователь остановил презентацию мультимедиа где-то в середине.
- Когда неожиданно заканчивается предыдущий сеанс (например, из-за сбоя системы или приложения). Приложению потребуется запрашивать запросы при запуске или завершении работы для любых ожидающих сеансов secure Stop и отправлять запросы отдельно от любого другого воспроизведения мультимедиа.
Сведения о безопасной остановке в приложениях UWP см. в разделе "Добавление безопасной остановки " статьи PlayReady DRM .
Начиная с PlayReady версии 4.2 , PlayReady Secure Stop 2 обеспечивает большую безопасность, применяя функции безопасной остановки на клиенте в доверенной среде выполнения (TEE) на уровне безопасности 3000.
Служба может использовать функцию SecureStop для принудительного воспроизведения нескольких клиентов, принадлежащих одной учетной записи пользователя. В зависимости от конфигурации конкретного клиента в этой учетной записи пользователя служба будет получать несколько разные сообщения от клиента.
В следующей таблице показана логика серверного приложения на разных уровнях безопасности клиента и версиях безопасной остановки.
Версия клиента | Логика сервера SecureStop | Устойчивость |
---|---|---|
PlayReady версии 2.0+ SL2000 |
Сервер не получает от клиента сообщение SecureStop. Для этого используйте логику приложения. | Низкий |
PlayReady версии 3.0+ SL3000 (пример: приложение Windows 10) |
Сервер получает сообщение SecureStop1 от клиента. Надежность этого сообщения от атак выше простой логики приложения. |
Средний |
PlayReady версии 4.2+ SL3000 |
Сервер получает сообщение SecureStop2 от клиента. Для вредоносного сообщения SecureStop2 от этого клиента потребуется атака в доверенной среде выполнения клиента (TEE). Надежность этого сообщения от атак выше, чем SecureStop1. |
Высокий |
Чтобы воспользоваться преимуществами функции Secure Stop 2, серверное приложение должно включить эту функцию следующим образом:
- Задайте свойство SecureStop2AESKey в классе MediaLicense при выдаче лицензии с помощью Secure Stop. (Это можно сделать независимо от того, поддерживает ли клиент безопасную остановку 2.)
- Создайте класс, реализующий интерфейс ISecureStop2Handler (аналогично любому другому обработчику), чтобы для любого заданного KID он возвращал тот же ключ, который использовался при задании свойства SecureStop2AESKey в MediaLicense с этим KID.
- После вызова GetSecureStopData запросите свойство SecureStop2VerifiedSession в классе SecureStopDataChallenge. Если для него задано значение Guid.Empty, клиент отправил сообщение SecureStop1. Если для него задан любой другой guid, клиент отправил сообщение SecureStop2. Возвращенный guid — это идентификатор сеанса одного сеанса в задаче SecureStop2, которая может быть проверена как невредоносная (при условии, что доверенные среды выполнения клиента (TEE) не были успешно атакованы).