Compartir a través de


Cifrado de contenido de PlayReady

En este tema se proporciona información general sobre los algoritmos de cifrado que se usan para proteger el contenido del ecosistema de PlayReady.

Nota

Consulte Glosario para conocer los términos y definiciones de cifrado.

Conceptos básicos de cifrado

La criptografía de clave simétrica es el tipo de cifrado más sencillo. Con criptografía de clave simétrica, se usa la misma clave para cifrar el contenido y descifrarlo. Los algoritmos de clave simétricos suelen ser pequeños y rápidos. Normalmente, la mayor parte de cualquier tarea de cifrado se controla mediante algún tipo de cifrado de clave simétrica.

La criptografía de clave pública, en cambio, usa una clave pública publicada para cifrar y otro secreto, clave privada que se va a descifrar. Por lo tanto, si el usuario "A" proporciona al usuario "B" una clave pública, B puede cifrar el contenido de A sin ninguna otra información. Independientemente de cómo se transmita el contenido, solo A podrá leerlo. Los interceptores de contenido carecen de la clave privada (clave secreta) y no pueden descifrar el mensaje. Dado que la clave pública está abiertamente disponible, cualquier persona puede cifrar para A, pero solo A puede descifrarse. La criptografía de clave pública requiere algoritmos computacionalmente complejos.

La criptografía de curva elíptica (ECC) es un algoritmo de criptografía de clave pública que se usa para cifrar y descifrar contenido. Es una función computacionalmente compleja que describe una curva elíptica. Los componentes de este algoritmo se comparten como una clave pública. Otros componentes, usados para el descifrado, forman la clave privada.

Los códigos de autenticación de mensajes de una clave (OMAC) son un código de autenticación de mensajes construido a partir de un cifrado de bloques. Hay dos algoritmos OMAC, OMAC1 y OMAC2.

Los certificados se usan para garantizar la autenticidad de las entidades que no son de confianza. El remitente de un certificado firma su nombre (identificador de dispositivo) mediante su clave privada. A continuación, el destinatario del certificado comprueba la firma del certificado con la clave pública del remitente para garantizar la identidad del remitente. Dado que el remitente es el único propietario de la clave privada, es difícil crear una clave privada dada una clave pública y el certificado no se comprobará correctamente a menos que esté firmado con la clave privada; en este caso, se supone que el origen de datos es correcto y la comunicación certificada es segura.

Algoritmos de cifrado de PlayReady

Algoritmos simétricos

Se admiten los siguientes modos de cifrado AES:

  • Modo CTR de AES 128 : los sistemas PlayReady pueden proteger archivos y secuencias donde las muestras están cifradas en su totalidad o donde solo se cifra un patrón de las muestras, en modo de operación CTR. Estos incluyen los modos de cifrado común 'cenc' (esquema de cifrado común) y 'cens' (esquema de cifrado común con un patrón de bytes sin cifrar o cifrado), que se definen en ISO/IEC 23001-7.

  • Modo CBC de AES 128 : los sistemas PlayReady a partir de la versión 4.0 pueden proteger archivos y secuencias que están totalmente o parcialmente cifrados con una clave de contenido AES 128, en modo de funcionamiento CBC. Estos incluyen los modos de cifrado común 'cbc1' y 'cbcs' como se define en ISO/IEC 23001-7, y cualquier otro formato cifrado con una clave de contenido AES 128 en modo CBC.

Nota

Los sistemas PlayReady con la versión 1.X, 2.X y 3.X solo pueden proteger los archivos cifrados en modo CTR (modo de cifrado común "cenc"). No se admite 'cens'. Los sistemas PlayReady con la versión 4.0 y posteriores pueden proteger los archivos cifrados en modo CTR (modos de cifrado común 'cenc') y en modo CBC (modos de cifrado común 'cbcs'). No se admiten los otros modos "cens" y "cbc1".

Algoritmos ECC

Microsoft PlayReady sistemas usan ECC (criptografía de curva elíptica) para cifrar claves de contenido y firmar mensajes de protocolo.

  • Algoritmo ECC ElGamal : se usa para claves de contenido cifradas.
  • ECDSA (algoritmo de firma digital de curva elíptica): se usa para firmar mensajes siempre que sea aplicable en los protocolos PlayReady.
  • NIST: los sistemas Microsoft PlayReady usan algoritmos NIST estándar para el cifrado ECC cuando corresponda y actualmente usan la curva elíptica P-256.

Algoritmos de firma

Para firmar licencias, claves transitorias o datos, los sistemas PlayReady usan AES OMAC1, que es equivalente a CMAC (código de autenticación de mensajes basado en cifrado) y se convirtió en una recomendación de NIST en mayo de 2005. Las claves se generan aleatoriamente, pero los datos se hashan con SHA256 y, a continuación, el hash se firma con ECC256.

Consideraciones sobre tiempo de ejecución y rendimiento

Cuando se desencadena la reproducción de contenido, el cliente de PlayReady debe realizar algunos pasos antes de que pueda comenzar la reproducción inicial. Esto incluye buscar una licencia, enlazar o interpretar la licencia, descifrar la clave de contenido y, por último, prepararse para descifrar el contenido. La pila de cliente de PlayReady tarda tiempo en enlazar una licencia a un fragmento de contenido y esta operación es necesaria antes de iniciar el descifrado de contenido y la representación. Esto significa que el tiempo para enlazar una licencia afecta al tiempo de primer fotograma al iniciar una reproducción o a la brecha entre pistas. Es posible que el desarrollador cliente, así como el desarrollador de aplicaciones, quiera considerar la posibilidad de optimizar su código para problemas de tiempo de ejecución y rendimiento, para reducir el tiempo de primer fotograma y permitir la reproducción sin intervalos.

Los contenedores protegidos usan el cifrado de claves simétricas para cifrar la mayor parte del contenido. Sin embargo, el cifrado de clave pública se usa dentro de la licencia. Esto se debe a que la licencia contiene la clave simétrica del contenido y el servidor usa la clave pública del cliente para cifrar la clave simétrica del contenido.

Cuando es el momento de descifrar el contenido, la clave privada del cliente se usa para descifrar la clave simétrica de la licencia. Solo el cliente al que está enlazada la licencia puede extraer la clave simétrica.

El descifrado de clave privada es más intensivo de cálculo, que el descifrado simétrico; por lo tanto, la interpretación de la licencia es de cálculo intensivo. Una vez que la licencia se ha controlado correctamente, se descifra la clave simétrica y el contenido se puede descifrar mediante algoritmos pequeños y rápidos.

En el caso de las aplicaciones o dispositivos que están restringidos por recursos, el inicio requiere un tiempo y recursos significativos. Una vez completado, sin embargo, los recursos se liberan, el descifrado puede continuar de forma eficaz y se requieren pocos ciclos de CPU o recursos del sistema.