View a markdown version of this page

API SPEKE v2.1: personalizaciones y restricciones de la especificación DASH-IF - Especificación de API de Secure Packager and Encoder Key Exchange

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

API SPEKE v2.1: personalizaciones y restricciones de la especificación DASH-IF

La especificación CPIX 2.4 del DASH Industry Forum que aparece en el sitio DASH-IF web admite varios casos de uso y topologías. La especificación SPEKE API v2.1 define tanto un perfil CPIX como una API para CPIX. Para lograr estos dos objetivos, cumple con la especificación CPIX con las siguientes personalizaciones y restricciones:

Perfil CPIX
  • SPEKE sigue el flujo de trabajo Encriptador-Consumidor.

  • En las claves de contenido cifradas, SPEKE aplica las siguientes restricciones:

    • SPEKE no admite la verificación de firma digital (XMLDSIG) para cargas de solicitud o respuesta.

    • SPEKE requiere 2048 certificados. RSA-based

  • SPEKE usa solo un subconjunto de funcionalidades del CPIX:

    • SPEKE omite la funcionalidad UpdateHistoryItemList. Si la lista está presente en la respuesta, SPEKE la omite.

    • SPEKE omite la funcionalidad clave. root/leaf Si el atributo ContentKey@dependsOnKey está presente en la respuesta, SPEKE la omite.

    • SPEKE omite el elemento BitrateFilter y el atributo VideoFilter@wcg. Si estos elementos o atributos están presentes en la carga del CPIX, SPEKE los omite.

  • En los documentos de CPIX intercambiados con SPEKE v2.1 solo se pueden usar los elementos o atributos a los que se haga referencia como «compatibles» en la página de componentes de carga estándar o en la página del contrato de cifrado.

  • Cuando el encriptador los incluya en una solicitud de CPIX, todos los elementos y atributos deberán incluir un valor válido en la respuesta del CPIX del proveedor de claves. De lo contrario, el encriptador se detendrá y generará un error.

  • SPEKE admite la rotación de claves con elementos KeyPeriodFilter. SPEKE lo usa para rastrear el ContentKeyPeriod@index período clave. En SPEKE v2.1, el cifrador también puede indicar el intervalo de tiempo que cubre un período clave, además del. @index Para el contenido en directo, usa los ContentKeyPeriod@end atributos ContentKeyPeriod@start y (horas de inicio y finalización del reloj de pared). Para el contenido de VOD, usa los ContentKeyPeriod@endOffset atributos ContentKeyPeriod@startOffset y.

  • Para la señalización HLS, se deben usar varios DRMSystem.HLSSignalingData elementos: uno con el valor de DRMSystem.HLSSignalingData@playlist atributo «media» y otro con el valor de DRMSystem.HLSSignalingData@playlist atributo «maestro».

  • Al solicitar claves, el encriptador puede utilizar el atributo @explicitIV opcional en el elemento ContentKey. El proveedor de claves puede responder con un IV mediante @explicitIV, aunque el atributo no esté incluido en la solicitud.

  • El encriptador crea el identificador de la clave (KID), que es el mismo para cualquier ID de contenido y periodo de clave especificados. El proveedor de claves incluye el KID en la respuesta al documento de solicitud.

  • El encriptador incluirá un valor para el atributo CPIX@contentId. Al recibir un valor vacío para este atributo, el proveedor de la clave devolverá un error con la descripción «Falta el CPIX @contentId». CPIX@contentIdel proveedor de claves no puede anular el valor.

    El proveedor de claves ignorará el valor CPIX@id si no es nulo.

  • El encriptador incluirá un valor para el atributo CPIX@version. Al recibir un valor vacío para este atributo, el proveedor de claves devolverá un error con la descripción “Missing CPIX@version” (Falta CPIX@version). Al recibir una solicitud con una versión no compatible, la descripción del error devuelta por el proveedor de claves será “Unsupported CPIX@version” (CPIX@version no compatible).

    CPIX@versionel proveedor de claves no puede anular el valor.

  • El encriptador incluirá un valor para el atributo ContentKey@commonEncryptionScheme de cada clave solicitada. Al recibir un valor vacío para este atributo, el proveedor de la clave devolverá un error con la descripción «Missing ContentKey @common EncryptionScheme for KID». id

    Un documento CPIX único no puede mezclar varios valores para distintos atributos ContentKey@commonEncryptionScheme. Al recibir dicha combinación, el proveedor de la clave devolverá un error con la descripción «Combinación ContentKey @common EncryptionScheme no compatible».

    No todos los valores ContentKey@commonEncryptionScheme son compatibles con todas las tecnologías DRM. Al recibir dicha combinación, el proveedor de claves devolverá un error con la descripción «ContentKey@common EncryptionScheme no es compatible con id DRMsystem».

    ContentKey@commonEncryptionSchemeel proveedor de claves no puede anular el valor.

  • Al recibir valores diferentes para elemento <pssh> innerXML DRMSystem@PSSH y DRMSystem.ContentProtectionData en el cuerpo de la respuesta del CPIX, el encriptador se detendrá y generará un error.

API para CPIX
  • El proveedor de claves debe incluir un valor para el encabezado de respuesta HTTP X-Speke-User-Agent.

  • Un SPEKE-compliant cifrador actúa como cliente y envía las operaciones POST al punto final del proveedor de claves.

  • El cifrador debe incluir un valor para el encabezado de la solicitud X-Speke-Version HTTP, con la versión de SPEKE utilizada con la solicitud, formulada de la siguiente MajorVersion.MinorVersion manera: «2.1» para SPEKE v2.1. Si el proveedor de claves no admite la versión SPEKE utilizada por el encriptador para la solicitud actual, devolverá un error con la descripción “Unsupported SPEKE version” (versión no compatible con SPEKE) y en la medida de lo posible no procesará el documento CPIX.

    El proveedor de claves no puede modificar el valor del encabezado X-Speke-Version definido por el encriptador en respuesta a la solicitud.

  • Al recibir errores en el cuerpo de la respuesta, el encriptador emitirá un error y no volverá a intentar la solicitud con un control de versión SPEKE v1.0.

    Si el proveedor de claves no arroja error, pero no devuelve un documento CPIX que incluya la información obligatoria, el encriptador debería detenerse y generar un error.

La siguiente tabla resume los mensajes estándar que debe devolver el proveedor de claves en el cuerpo del mensaje. En caso de error, el código de respuesta HTTP debe ser 4XX o 5XX, nunca 200. El código de error 422 se puede utilizar para todos los errores relacionados con. SPEKE/CPIX

Caso de error Mensaje de error

CPIX @contentId no está definido

Falta CPIX @contentId

CPIX @version no está definido

Falta CPIX @version

No se admite CPIX @version

CPIX@version no es compatible

ContentKey@common no EncryptionScheme está definido

Falta ContentKey @common EncryptionScheme para KID id (donde id es igual al valor de ContentKey @kid)

Se utilizan varios EncryptionScheme valores de ContentKey @common en un solo documento CPIX

Combinación @common no compatible ContentKey EncryptionScheme

ContentKey@common no EncryptionScheme es compatible con la tecnología DRM

ContentKey@common EncryptionScheme no es compatible con DRMSystem id (donde id es igual al valor de DRMSystem @systemId)

X-Speke-Version el valor del encabezado no es una versión de SPEKE compatible

La versión de SPEKE no es compatible

El contrato de cifrado es incorrecto

Contrato de cifrado con formato incorrecto

El contrato de cifrado contradice las restricciones de los niveles de seguridad del DRM

No se admite el contrato de cifrado CPIX solicitado

El contrato de cifrado no incluye ningún elemento VideoFilter o AudioFilter

Falta el contrato de cifrado CPIX