Empaquetado y entrega de contenido
La funcionalidad básica de PlayReady es proteger el contenido del uso no autorizado. Para ello, el contenido debe cifrarse primero y se insertará un encabezado playReady asociado en el contenido. El sistema que realiza esta operación es el empaquetador, también conocido como el cifrador, que a veces se integra con el codificador.
En este tema se describen varias maneras de cifrar y entregar el contenido mediante PlayReady.
Empaquetado del contenido de PlayReady: cifrado e inserción del encabezado DRM
El proceso de cifrado de contenido no cifrado consiste en definir una o varias claves de cifrado, usando estas claves para cifrar los bytes que constituyen el propio contenido e insertar un encabezado DRM en el contenido (en los archivos del contenido o en el manifiesto si el contenido tiene uno).
Todo el contenido cifrado protegido por PlayReady debe tener un encabezado playReady insertado en el archivo cifrado. Un cliente de PlayReady usa este encabezado playReady para buscar o adquirir una licencia para ese elemento de contenido determinado. Un encabezado PlayReady se compone de XML codificado en UTF-16. Incluye los identificadores de clave (KID) que se usan para cifrar el contenido, una dirección URL predeterminada que el cliente usará para adquirir una licencia de si no se proporciona ningún otro y cualquier atributo personalizado.
Cualquier empaquetador que paquetes borre contenido debe implementar un generador de encabezados de PlayReady para compilar el encabezado e insertarlo en el contenido cifrado. El encabezado PlayReady debe implementarse según la especificación del encabezado PlayReady. Hay varias maneras de crear un generador de encabezados de PlayReady en el empaquetador:
- Desarrollarlo usted mismo en función de la especificación del encabezado PlayReady.
- Use la API del SDK de PlayReady Server que genera un encabezado playReady.
- Use la API de Windows 10 que genera un encabezado de PlayReady.
El contenido cifrado puede contener varios encabezados DRM, incluidos los encabezados playReady junto con encabezados DRM de terceros. Para obtener más información sobre cómo funciona, consulte Uso de herramientas de cifrado.
Tipo de contenido
PlayReady se puede usar para proteger el contenido de audio y vídeo. Los tipos de codificación más comunes que se usan con PlayReady son los estándares MPEG-4 AVC (H.264), High Efficiency Video Coding (HEVC) H.265 y AV1 estándar. PlayReady no se limita a estos estándares y se puede usar con cualquier formato de audio y vídeo compatible con el dispositivo cliente.
La versión 1 y 2 de PlayReady le permite crear un paquete protegido que contenga contenido que no esté limitado a cargas de audio o vídeo. Estos paquetes, denominados sobres, pueden contener archivos como una colección de archivos de datos y ejecutables (por ejemplo, una aplicación distribuida por un almacén de aplicaciones), imágenes (por ejemplo, papel tapiz de pantalla) o libros electrónicos. Este contenido se empaqueta mediante la encapsulación de los archivos en un archivo de sobre, que se puede descifrar de una manera similar al contenido de audio y vídeo.
Estos tipos de contenido que no son de audio o vídeo ya no se admiten en PlayReady 3.0 y versiones posteriores.
Herramientas de cifrado
Microsoft no incluye un empaquetador como parte de las entregas de PlayReady. En su lugar, PlayReady proporciona especificaciones basadas en estándares de cifrado comunes para su uso por parte de los codificadores. Por lo tanto, el formato de cifrado no es específico de PlayReady, sino una función del formato de archivo. El formato de cifrado más usado actualmente es el formato estándar ISO de cifrado común, ISO/IEC 23001-7.
Básicamente, puede crear su propio empaquetador o trabajar con cualquier tipo de cifrado de código abierto (por ejemplo, ffmpeg). Además, podría trabajar con una empresa de codificadores profesionales si desea cifrar contenido con PlayReady (como Harmonic, Elemental, Ericsson, Wowza, Allegro). Azure Media Services también proporciona una funcionalidad de empaquetado para contenido claro.
Uso de herramientas de cifrado
PlayReady admite el estándar de cifrado común ISO IEC. Este proceso es el mismo que se describe en El proceso básico de cifrado y licencias, excepto los encabezados se incluirán para otros DRM, cada uno como la carga del cuadro Encabezado específico del sistema de protección ('pssh'), identificado por el SystemID de DRM. Todos esos encabezados tendrán su propia sintaxis que designa los KID o la información necesaria para acceder en última instancia a las claves de contenido. Y las claves de contenido de este recurso serán las mismas para todos los DRM.
Uso de claves de cifrado
Hay muchas maneras diferentes de cifrar los recursos. La más sencilla a la más sofisticada depende de la complejidad que desea diseñar en el sistema y de cuáles son las necesidades del servicio.
Vamos a tomar, por ejemplo, un recurso de streaming adaptable, como se muestra en la ilustración siguiente. Tiene cuatro calidades de vídeo diferentes, una pista de audio y una pista de subtítulos. Se codifica en archivos MP4 segmentados, con segmentos de 2,0 segundos cada uno. Es un recurso que se sirve en varios formatos en función de lo que el cliente prefiera reproducir. Smooth Streaming, HLS y DASH son las variantes más comunes. Durante la reproducción, el cliente (el reproductor de vídeo) va a descargar sucesivamente los segmentos del recurso a través de la red, seleccionando para cada vez que el segmento de vídeo se reproduce desde la pista de vídeo adecuada, con el fin de mantener la calidad de reproducción lo más alta posible, dadas las restricciones del ancho de banda de red, la velocidad de reproducción y otros recursos limitados, como las funcionalidades del reproductor. Esta lógica se conoce como reproducción de streaming adaptable, que se rige por algunas reglas heurísticas implementadas en el reproductor.
Cifrado del recurso con una sola clave
La manera más sencilla de cifrar estos recursos sería usar una sola clave de contenido para cifrar todo (normalmente los subtítulos no están cifrados, no es en ninguna regla, pero normalmente se mantienen sin cifrar). El uso de una clave de contenido facilita la vida al servidor de licencias porque el servidor de licencias tiene que entregar una clave {KID, CK}. Normalmente, el cliente adquiriría esta clave antes de que se produjera la reproducción.
Nota
Los clientes de PlayReady pueden adquirir licencias de forma proactiva o reactiva. Consulte la página Adquisición de licencias para obtener una descripción de estos dos modos.
Cifrado del recurso con dos claves, dedicando una a la más alta calidad
En los últimos años se han realizado algunas mejoras para usar varias claves por recurso, principalmente controladas por el requisito de permitir que solo determinados clientes de mayor solidez consuman el contenido de mayor calidad. Con la llegada de contenido Ultra HD (4K) y con la adición de alto rango dinámico (HDR) para contenido de color superior, hubo una necesidad de estudios y servicios para permitir la máxima calidad solo en determinados clientes, que normalmente tienen DRM de hardware integrado. En este escenario, el recurso se cifra con una clave de contenido {kid1, ck1} para todas las pistas, excepto para la pista 4K cifrada con una clave de contenido diferente {kid2, ck2}. Es decir:
- Un cliente que pueda reproducir solo hasta Full HD (no la pista de 4K) se entregará una licencia de PlayReady que incluya solo {kid1, ck1}.
- Un cliente que tenga permiso para jugar hasta 4K será entregado una licencia de PlayReady incluyendo {kid1, ck1} y {kid2, ck2}.
Con esta complejidad adicional, el servicio puede asegurarse de que algunos clientes no podrán descifrar la pista 4K y que la pista de 4K solo se puede reservar a los clientes en los que más confía el servicio.
Cifrado del recurso con una clave por pista
El servicio puede tener un mapa de derechos más complejo para aplicar. Algunos clientes, según su tamaño de pantalla, su solidez, sus salidas y su ubicación, pueden tener acceso solo a algunas pistas de vídeo, algunas calidades de vídeo y algunas pistas de audio. Para asegurarse de que el servicio tiene plena flexibilidad para aplicar un conjunto arbitrario de restricciones en el futuro, puede cifrar un recurso con una clave de contenido específica para cada pista. Por ejemplo:
- Un cliente que pueda jugar solo 720p se entregará una licencia de PlayReady, incluyendo {kid1, ck1}, {kid2, ck2}, y {kidA, ckA}.
- Un cliente que tenga permiso para jugar hasta 4K será entregado una licencia de PlayReady incluyendo {kid1, ck1}, {kid2, ck2}, {kid3, ck3}, {kid4, ck4}, y {kidA, ckA}.
- Un cliente que juega sin conexión la versión 4K del recurso (descargado previamente) se entregará una licencia de PlayReady, incluida {kid4, ck4} y {kidA, ckA}.
Cambio de las claves de cifrado periódicamente (recurso de varios períodos): rotación de licencias
En algunos escenarios, el servicio quiere cambiar las claves de cifrado ocasionalmente, normalmente en los límites del programa. Por ejemplo, una transmisión lineal en vivo tiene varios períodos con contenido gratuito al aire al que desea que todos los usuarios tengan acceso, seguidos de algún contenido restringido a los suscriptores. Cambiar las claves de cifrado en los límites del programa permite que el servicio entregue las claves de aire {KIDi1, CKi1} a todos los usuarios sin restricciones y entregue las claves de contenido {kidi2, cki2} solo a los suscriptores que hayan iniciado sesión correctamente en el servicio.
Tenga en cuenta que esta rotación de licencias no es muy escalable: cada vez que cambian las claves de cifrado, todos los clientes solicitan las nuevas claves de cifrado mediante su propia solicitud de licencia. Esto puede dar lugar a un pico elevado de solicitudes de licencia en sistemas con un gran número de clientes.
Cambio de las claves de cifrado con frecuencia: rotación de claves escalables
Hay un mecanismo avanzado en PlayReady denominado rotación de claves escalable (en lugar de la rotación de licencias). Este método almacena un almacén de licencias insertado (ELS) en el flujo del contenido real. En este mecanismo, la clave usada para cifrar el segmento A2 se denomina clave hoja {kidA2, ckA2}, y se entrega en el ELS del segmento A2, siendo cifrado con una clave independiente que es la misma para todos los segmentos de la pista A, denominada clave raíz {kidRA, ckRA}. Si está familiarizado con MPEG-2 TS y el cifrado de Palabra de control, este es un mecanismo similar, excepto que el cifrado es mucho más fuerte y también es más flexible.
Supongamos que este recurso es tv lineal en vivo. Cuando el cliente intenta la reproducción, encuentra kidRA en el encabezado PlayReady del manifiesto de secuencia y solicita una licencia para kidRA. El servidor de licencias devuelve una licencia raíz para la clave raíz {kidRA, ckRA}. A continuación, el cliente analiza el segmento A1 y detecta el ELS en el encabezado del segmento. Al analizar este ELS, se encuentra la licencia hoja {kidA1, ckA1} en este ELS. Con la clave raíz {kidRA, ckRA} y la licencia hoja {kidA1, ckA1}, puede obtener el valor de ckA1, y descifrar y representar el segmento A1.
La característica de rotación de claves escalables de PlayReady es extremadamente escalable porque no requiere que los clientes se comuniquen con el servidor de licencias cada vez que se cambien las claves de cifrado. Mantiene el volumen de solicitudes de licencia al menor posible, ya que un cliente solo necesita una licencia raíz del servidor de licencias por secuencia o realizar un seguimiento. Permite que las claves de cifrado giren con tanta frecuencia como cada segmento, normalmente cada dos segundos si es necesario.