HDCP

La versión actual de la página aún no ha sido revisada por colaboradores experimentados y puede diferir significativamente de la versión revisada el 31 de enero de 2020; las comprobaciones requieren 11 ediciones .

HDCP ( High-bandwidth Digital Content Protection  ) es una tecnología de protección de contenido multimedia desarrollada por Intel  [ 1] y diseñada para evitar la copia ilegal de video de alta calidad transmitido a través de interfaces DVI (HDCP es una opción opcional para esta interfaz [2] ), DisplayPort (HDCP es opcional para esta interfaz), HDMI , GVIF o UDI . La señal de video protegida solo se puede reproducir en equipos compatibles con HDCP.

La versión 1.x del sistema de encriptación HDCP finalmente se descifró en 2010 (se restauró la clave maestra del sistema) [3] [4] .

Tecnología

HDCP está diseñado para proteger la transmisión de contenido multimedia entre un transmisor HDCP y un receptor HDCP. La tecnología también prevé el uso de repetidores HDCP con puertos seguros para el flujo de datos descendente (desde el proveedor hasta el cliente del servicio). El sistema puede tener hasta siete niveles de repetidores HDCP y hasta 128 dispositivos compatibles con HDCP.

El sistema de protección consta de tres componentes principales:

Encontrar la matriz secreta de DCP LLC

El 14 de septiembre de 2010, varios medios en línea (ZDNet, Engadget) informaron el hecho de la publicación abierta de la clave maestra HDCP, con la que se pueden crear claves privadas para dispositivos HDCP ( claves privadas de dispositivos ) sin la ayuda de la infraestructura de claves HDCP. operador ( The Digital Content Protection LLC ) . Con la publicación de la clave maestra, se neutralizaron todas las medidas para revocar las claves de dispositivo, ya que siempre se puede generar una nueva en lugar de la antigua (revocada) clave de dispositivo [5] [6] . No está del todo claro cómo se obtuvo la clave maestra, se sabe que la publicación de la clave, junto con las instrucciones de uso, se produjo a través de Twitter y pastebin . Engadget cree que el atacante pudo haber utilizado el método de Crosby (2001).

2 días después, el 16 de septiembre, Intel (el creador de HDCP) confirmó que esta clave maestra era real y que la protección de HDCP se había roto [3] [7] [8] . Intel está amenazando con emprender acciones legales contra cualquiera que fabrique dispositivos de hardware que eludan la protección HDCP [9] .

Protocolo de autenticación

Se utiliza un protocolo de autenticación entre un transmisor HDCP y un receptor HDCP para verificar que este último es un dispositivo que puede recibir el contenido apropiado . Confirmación: conocimiento de un conjunto secreto de claves. Cada dispositivo HDCP cuenta con un conjunto exclusivo de cuarenta claves secretas de 56 bits, denominadas  DPK ( claves privadas del dispositivo ), obtenidas de DCP LLC . Durante la comunicación, los dispositivos crean un secreto compartido que no se puede espiar durante la comunicación, y este secreto se usa luego como una clave simétrica para descifrar el contenido HDCP destinado al dispositivo autenticado.

Cada dispositivo HDCP almacena, además de las claves privadas del dispositivo, el identificador de 40 bits correspondiente: KSV ( vector de selección de clave en inglés  , vector de selección de clave), que, al igual que DPK, recibe de DCP LLC.

El protocolo de autenticación se puede dividir en tres partes:

La primera parte del protocolo de autenticación

La figura muestra la primera parte del protocolo de autenticación. En el primer paso, el transmisor HDCP ( dispositivo A ) envía un mensaje de activación al receptor HDCP ( dispositivo B ). El mensaje contiene el KSV del transmisor ( Aksv ) y un número pseudoaleatorio de 64 bits ( An ) (el número es generado por la función hdcpRngCipher ).

El transmisor puede iniciar el proceso de autenticación en cualquier momento, incluso si el anterior acaba de completarse.

En el segundo paso, el receptor HDCP responde con un mensaje con el KSV ( Bksv ) del receptor y un bit REPETIDOR que indica si el dispositivo B es un repetidor o no. El transmisor HDCP verifica que Aksv contenga exactamente 20 ceros y 20 unos y no esté en la lista negra.

En esta etapa, se calculan Km y Km' secretos comunes de 56 bits en ambos dispositivos .

El cálculo se realiza de la siguiente manera:

Del conjunto DPK, las claves se suman de acuerdo con la representación de bits del KSV recibido: si el bit es igual a uno, entonces se usa la clave correspondiente. Se añaden teclas módulo sin desbordamiento.

Ejemplo:

Digamos que Bksv es 0x5A3. La representación binaria es 10110100011.
Por lo tanto, el dispositivo A suma sus claves secretas en las posiciones 0, 1, 5, 7, 8, 10 y calcula el secreto compartido Km .

El dispositivo B realiza un cálculo similar utilizando su propio conjunto de claves secretas y el vector de elección recibido del dispositivo A para calcular Km' .

El tercer paso utiliza la función hdcpBlockCipher para calcular Ks , M0 , R0 . Los valores de activación para que funcione esta función son Km (o Km' ) y la concatenación del bit REPETIDOR con An ( el bit REPETIDOR indica que el receptor HDCP admite más transmisión de datos HDCP, es decir, es un repetidor) .

Si la autenticación fue exitosa, entonces R0 = R0' , de lo contrario, son desiguales en la mayoría de los casos. Además, con la ayuda de Ri' obtenida durante la tercera parte del protocolo, será posible detectar que la autenticación ha fallado, en el caso de que el valor de R0 indique erróneamente el éxito de la autenticación.

La segunda parte del protocolo de autenticación

Se requiere la segunda parte del protocolo de autenticación si el receptor HDCP es un repetidor HDCP. El transmisor HDCP ejecuta la segunda parte del protocolo solo cuando se establece el bit REPETIDOR , lo que significa que el receptor HDCP es un repetidor HDCP. Esta parte del protocolo enumera todos los dispositivos KSV conectados al repetidor HDCP aguas abajo: puertos protegidos HDCP, repetidores HDCP, receptores HDCP. Esta lista se representa como un conjunto contiguo de bytes, en el que cada KSV ocupa 5 bytes escritos en orden directo.

Longitud total de la lista KSV = 5 bytes * número de dispositivos HDCP activos conectados

Los puertos protegidos por HDCP con dispositivos HDCP inactivos no agregan nada al conjunto KSV, al igual que el propio repetidor HDCP que inicia la creación de la lista no agrega su propio KSV.

Se requiere verificación de integridad para agregar la lista KSV recibida del repetidor HDCP anterior. El repetidor HDCP que solicitó la lista calcula V y lo compara con el V' recibido .

V = SHA-1 (lista KSV || estado B || M0 )

Dónde:

Todas las representaciones de bits están en orden directo.

Si V≠ V' , la verificación de integridad falla y el repetidor HDCP no aceptará la lista. Esto expirará el temporizador de vigilancia y el transmisor HDCP podrá detectar este error.

Además de compilar la lista KSV, la información topológica (número y profundidad) se propaga por el árbol de dispositivos hasta el transmisor HDCP. El número de dispositivos ( recuento de dispositivos ing.  ) se calcula como el número de todos los repetidores y receptores HDCP desde el dispositivo que cuenta la suma. La profundidad de un repetidor HDCP es igual al valor máximo de profundidad recibido de los dispositivos aguas abajo en el árbol de repetidores HDCP, más uno. Por ejemplo, para un repetidor HDCP con cuatro destinos HDCP aguas abajo, la profundidad es uno y la cantidad de dispositivos es cuatro.  

La cantidad de dispositivos en un árbol no puede exceder los 127 y la cantidad de niveles (profundidad) no puede exceder los siete.

Ejemplo:

El transmisor HDCP, al detectar que se ha transmitido el bit REPETIDOR , establece un temporizador de vigilancia de 5 segundos y solicita el estado LISTO del repetidor HDCP . Si el bit de estado se establece en 1 (listo), el transmisor HDCP lee la lista KSV y verifica si la lista de dispositivos excede el tamaño y la profundidad especificados por la especificación, luego verifica la integridad de la lista calculando V . Si alguna de las condiciones no se cumple o el temporizador caduca, no se realiza la autenticación.

El reintento se realiza pasando un nuevo valor de An y Aksv .

Representación de bits del estado del dispositivo B
Nombre del campo Bits ocupados Campo Descripción
Reservado 15:14 Reservado. El valor es 0.
HDMI_RESERVADO_2 13 Reservado.
MODO_HDMI 12 Modo HDMI. Cuando el bit se establece en uno, el receptor HDCP cambia del modo DVI al modo HDMI. El bit se restablece cuando el dispositivo se enciende, se reinicia, se conecta o desconecta un transmisor HDCP o el receptor HDCP no ha recibido datos durante 30 fotogramas.
MAX_CASCADE_EXCEEDED once Muestra errores en la topología. Si se establece en uno, hay más de siete niveles de repetidores en el árbol de dispositivos.
PROFUNDIDAD 10:8 Muestra el número de niveles en el sistema
MAX_DEVS_EXCEEDED 7 Muestra errores en la topología. Si se establece en uno, hay más de 127 dispositivos en el árbol del sistema.
DEVICE_COUNT 6:0 El número total de dispositivos conectados. Siempre cero para repetidores HDCP. Este número no incluye los repetidores HDCP en sí, sino los dispositivos conectados a ellos.

La tercera parte del protocolo de autenticación

La tercera parte del protocolo se ejecuta durante el intervalo de borrado vertical que precede al cuadro .  Cada uno de los dos dispositivos HDCP calcula nuevos números semilla Ki , Mi y Ri , donde el índice i representa el número de cuadro, comenzando en uno para el primer cuadro cifrado (después de completar la primera parte del protocolo de autenticación). El índice se incrementa en uno con cada cuadro, o con cada cuadro cifrado, dependiendo de si el modo ADVANCE_CIPHER está habilitado . El contador de fotogramas no aumenta si el dispositivo HDCP está en el estado HDMI AVMUTE (el modo en el que el sonido se apaga si se producen cambios que pueden generar ruido en el canal de audio [10] ), y no aumenta después de salir de este estado hasta el primer cuadro cifrado.

El transmisor HDCP verifica Ri' con sus propios cálculos para confirmar que el receptor de video puede decodificar correctamente la información. Esta verificación se realiza al menos cada dos segundos, también es posible leer Ri sincrónicamente durante su próximo cambio (cada 128 cuadros). En este caso, la lectura de Ri' debe completarse en un milisegundo desde que el transmisor HDCP inicia esta acción, si por alguna razón la operación falla, entonces el transmisor HDCP considera que el receptor HDCP no ha sido autenticado.

Para aumentar la probabilidad de detectar la falta de sincronización en el cifrado, el transmisor y el receptor HDCP pueden admitir opcionalmente la Verificación de enlace mejorada, en la que se realizan cálculos para mantener el control del tiempo de cifrado si se transmite un píxel específico.

El modo ADVANCE_CIPHER  es un modo opcional en el que el estado de cifrado y el contador de cuadros se incrementan cada cuadro en el modo DVI o cada cuadro en el modo HDMI (a menos que esté en el estado AVMUTE ), independientemente de si el cifrado está habilitado o no.

Cifrado de datos

El cifrado HDCP se produce en la entrada del TMDS ( Transición de señalización diferencial minimizada , transmisión de señal diferencial con minimización de las diferencias de nivel) del codificador, y el descifrado se produce en la salida del decodificador TMDS. El procedimiento de cifrado consiste en la suma bit a bit ( XOR ) del flujo de datos con una secuencia pseudoaleatoria generada por el cifrado HDCP.  

Durante el intervalo vertical , la función hdcpBlockCipher prepara el cifrado HDCP para generar, para cada píxel del flujo de entrada, una secuencia pseudoaleatoria de 24 bits dependiente de la clave. Estos bits se superponen en los canales TMDS como se muestra en la tabla para un flujo de video RGB de ejemplo.

Visualización de transmisión cifrada
Salida de cifrado canal TMDS Bits de transmisión de video
23:16 2 rojo [7:0]
15:8 una Verde [7:0]
7:0 0 Azul [7:0]

Durante el intervalo de supresión horizontal , el  cifrado HDCP reasigna la clave cada 56 bits, lo que dificulta romper el cifrado línea por línea.

Cifrado HDCP

La estructura general de un cifrado HDCP se puede dividir en tres capas. La primera capa consta de cuatro registros de desplazamiento de retroalimentación lineal ( registro de desplazamiento de retroalimentación lineal en inglés  , LFSR ), cuya salida es un bit. Si se da una señal clave de reentrada, este bit se coloca en la capa intermedia. La capa intermedia consta de dos partes similares. La primera parte, la función de ronda B  , realiza una ronda del cifrado de bloque utilizando tres registros de 28 bits Bx, By, Bz . La segunda parte, la función de ronda K  , es similar en estructura a la función B , pero funciona como la salida del cerrojo Ky (un flujo de claves de ronda de 28 bits a la función de ronda B con una frecuencia de una clave de 28 bits por reloj). En la capa inferior, cada ciclo comprime las cuatro salidas de los registros By, Bz, Ky, Kz de 28 bits en un bloque de secuencia pseudoaleatoria de 24 bits .

Módulo de registro de desplazamiento de retroalimentación lineal

El módulo de registro de desplazamiento lineal consta de cuatro LFSR de varias longitudes y diferentes mezcladores ( función de combinación ) .  La función de mezcla depende de tres toques ( English tap ) de cada registro.  

Registre los polinomios y las derivaciones utilizadas
Número de registro registro polinomio Salidas utilizadas para la función de mezcla
0 una 2
3 5 once dieciséis
2 5 9 quince
una cuatro ocho 13
0 3 7 12

La función de reproducción aleatoria consta de cuatro redes de reproducción aleatoria en cascada , cada una de las cuales incluye dos bits de estado .  Se realiza una operación XOR en una de las derivaciones de cada uno de los cuatro registros para formar los datos de entrada para la primera etapa de la red. Se utilizan otros toques de registro para seleccionar la entrada a una de las redes. La salida de la cuarta red se agrega ( XOR ) con un toque de cada registro.

Red con canal de movimiento

La figura muestra esquemáticamente una red con movimiento de canales. En el caso de que la red contenga un par de valores booleanos (A, B), la entrada es un valor booleano D y la entrada de selección es S, entonces el valor del parámetro S determina el siguiente estado. Si S es cero, entonces la salida es A y se establece el estado (B, D). Si S es uno, entonces la salida es B y se establece el estado (A, D).

En todos los modos de funcionamiento, LSFR y la función de combinación se inicializan en un número de 56 bits. Los 60 bits del estado LSFR usan estos 56 bits directamente, más la adición de unos cuatro bits. Las redes aleatorias se inicializan con el mismo valor.

El flujo de salida de 1 bit de la función de mezcla es el único dato obtenido de la operación del módulo LSFR. Este flujo suministra al módulo de bloques material para generar claves si se recibe una señal para redefinir la clave.

Inicializar los registros de desplazamiento
Un poco Valor inicial
LFSR3 [dieciséis] Complemento al bit de entrada [47]
[15:0] Bits de entrada [55:40]
LFSR2 [quince] Complemento al bit de entrada [32]
[14:0] Bits de entrada [39:25]
LFSR1 [13] Complemento al bit de entrada [18]
[12:0] Bits de entrada [24:12]
LFSR0 [12] Complemento al bit de entrada [6]
[11:0] Bits de entrada [11:0]
Redes aleatorias Registro A 0
Registro B una

Módulo de bloque

Este módulo consta de dos componentes separados llamados funciones redondas . Uno de los componentes, la función de ronda K, proporciona al otro componente, la función de ronda B  , un flujo de claves. Cada componente trabaja con un conjunto correspondiente de tres registros de 28 bits.

Si se recibió una señal para redefinir la clave, el bit del flujo de salida del módulo LSFR se escribe en el decimotercer bit del registro Ky .

Las cajas S para ambas funciones redondas constan de siete cajas S con cuatro entradas y cuatro salidas. Para una función redonda K , las cajas S se denominan SK0, SK1.., SK6 . Para la función de ronda B, las cajas S se denominan SB0, SB1.., SB6 . El número de bit I*7+J de los registros Bx o Kx se escribe en la entrada I-ésima del bloque J , y el bit I*7+J de los registros Bz, Kz se alimenta a la salida I del bloque J. En este caso, el bit cero se considera el bit menos significativo.

Las redes de difusión para la función redonda K se muestran en la tabla. Cabe señalar que no existen entradas adicionales para esta función en ninguna red de difusión. La mitad de los componentes de difusión de la función B contienen entradas adicionales, que reciben bits del registro Ky de la función de ronda K .

Función de salida lógica

Los registros Ky, Kz, By, Bz forman una función de salida lógica. Cada uno de los 24 bits se obtiene sumando (XOR) nueve términos, como se muestra en la siguiente fórmula:


Donde  - XOR , a  - multiplicación lógica

Ejemplo: El bit de salida 0 se calcula de la siguiente manera:

Algunas de las funciones utilizadas

hdcpBlockCipher

Esta secuencia se utiliza durante la primera parte del protocolo de autenticación para generar la clave de sesión Ks y durante el intervalo vertical que precede a la trama cifrada para derivar la clave de trama Ki .

Secuencia de funcionamiento de la función hdcpBlockCipher Estados iniciales y salida de hdcpBlockCipher \
Escenario Acción
una Carga de los registros B y K del módulo de bloque
2 Haciendo 48 ciclos de los registros
3 Guardar 56 bits bajos para uso futuro como Ks, Ki
cuatro Mover 84 bits de registros B a registros K
5 Recargar registro B
6 Inicialización del módulo LFSR
7 Solicitud de cambio de clave
ocho Realización de 56 ciclos de funcionamiento del LFSR y módulo de bloque, guardando el valor Mi de 64 bits durante los últimos cuatro ciclos
9 Eliminación de una solicitud de cambio de clave
Escenario Vos tambien Valor inicial de LFSR
(56 bits)
Valor K inicial Valor inicial B
(65 bits)
Salida B
(84 bits)
Salida de función
hdcpBlockCipher
durante
la autenticación
1-3 48 km (56 bits) REPETIDOR || Un Kansas
6-9 56 Kansas Ks (84 bits) REPETIDOR || Un
hdcpBlockCipher
durante
el tramo vertical
1-3 48 Ks (56 bits) REPETIDOR ||
6-9 56 (84 bits) REPETIDOR ||

Para los números a y b de 8 bits, el resultado de concatenar ab es un número de 16 bits, donde a es el bit más significativo y b es el bit menos significativo.

En las funciones de ronda B y K , los registros x, y, z pueden considerarse como un registro de 84 bits de longitud.

Cuando se requieren menos de 84 bits de registro, se utilizan los bits menos significativos. Si hay menos de 84 bits disponibles para la inicialización, los bits menos significativos se completan y los bits restantes se establecen en cero.

Ejemplo: El resultado de 65 bits de la concatenación del bit REPETIDOR y el valor An se escribirá en los registros Bx y By , más en los 9 bits menos significativos del registro Bz , mientras que los 19 bits superiores del registro se llenarán con ceros. El origen de los bits Mi y Ri se muestra en la tabla anterior.

hdcpRngCipher

Esta función se usa como un generador de números aleatorios y la función debe admitir un método que le permita recibir bits de una fuente externa. Los bits deben mezclarse externamente con los valores de los registros (sin reemplazo). Es decir, no debería haber forma de determinar el valor generado.

La fuente externa debe tener una probabilidad o entropía razonable . Es decir, si, por ejemplo, se dan 1000000 ciclos diferentes, entonces el número de números repetidos entre 1000000 An no debe exceder el 50%. Esto corresponde a unos cuarenta (suponiendo que ) bits arbitrarios de 64.

Criptoanálisis

Para obtener el secreto compartido, los dispositivos agregan sus claves secretas Ai según el vector de clave recibido. El resultado es un Km (transmisor) y un Km' (receptor) secretos de 56 bits , y deben ser iguales.

Luego, después de la autenticación, el receptor encripta la oportunidad con la clave recibida y la envía al transmisor. Que, a su vez, comprueba con su clave Km que el evento está encriptado correctamente.

Por lo tanto, si definimos 40 vectores linealmente independientes (claves secretas de dispositivos), entonces podemos romper completamente el sistema, ya que estas claves formarán la base de un espacio de claves secretas de 40 dimensiones, y podemos componer cualquier conjunto de claves secretas de cualquier dispositivo de ellos. Por otro lado, si no todas las 40 claves son linealmente independientes, aún podemos crear ciertos conjuntos de claves secretas incluidas en el subespacio encontrado.

Ejemplo: Supongamos que tenemos 40 dispositivos para los cuales conozco sus vectores de selección clave y conjuntos de claves secretas , luego, como resultado del intercambio de información con el dispositivo, que queremos descifrar, obtenemos un sistema de ecuaciones:

al resolver cuál, obtendremos las claves secretas del dispositivo atacado. La suposición que hacemos es que los 40 vectores de selección de teclas ksv son linealmente independientes.

Si el espacio cubierto no es de 40 dimensiones, entonces todavía debe haber una laguna. O estos vectores de selección clave están construidos de tal manera que no será posible formar la base de un espacio de cuarenta dimensiones a partir de ellos, o necesitamos más de 40 KSV para cubrir todo el espacio (cada dispositivo adicional tiene una pequeña posibilidad de ser linealmente dependiente del conjunto ya obtenido, aproximadamente , donde n es la dimensión del espacio cubierto)

También podemos crear nosotros mismos los conjuntos correctos del vector de selección de claves y las claves secretas del dispositivo a partir de una combinación lineal que ya conocemos.

Ejemplo:

1. Elijamos un dispositivo arbitrario B, si B puede autenticar Ai, entonces la igualdad es verdadera:

2. Deja

3. Sabemos que cuando el dispositivo B autentica el dispositivo X , se utiliza el valor Km :

4. Es decir, recordando que (Ki)'m = Ki para todo i , podemos calcular Km' :

5. Dado que la elección de B fue arbitraria, esto funcionará para cualquier B, y

La autenticación entre B y X tendrá éxito. La única dificultad puede ser construir Xksv de modo que consista en 20 ceros y 20 unos.

Usando HDCP

Se utiliza en reproductores de HD DVD y Blu-ray . Si el dispositivo de reproducción y, si se utiliza una computadora, el software no es compatible con HDCP, entonces la señal no se transmitirá a la salida, o lo será, pero con calidad degradada ( bandera de token de restricción de imagen ) . 

Aprobado el 4 de agosto de 2004 por la Comisión Federal de Comunicaciones de EE. UU. ( FCC) como " Tecnología de protección de salida digital " .  

La tecnología es compatible con Windows Vista .

La compatibilidad con HDCP es un requisito previo para cumplir con la marca " HD ready ", y las leyes de EE. UU. exigen su uso para todos los receptores de transmisión HD.

Véase también

Notas

  1. Protección de contenido digital - Acerca de DCP , < http://www.digital-cp.com/about_dcp > Archivado el 5 de diciembre de 2009 en Wayback Machine . 
  2. Especificación HDCP v1.4 (pdf)  (enlace descendente) . Protección de Contenidos Digitales (8 de julio de 2009). Archivado desde el original el 25 de febrero de 2012. , Página 31 0x15, Página 35
  3. 1 2 Pájaro Kiwi. El final de una era. El criptosistema HDCP ha sido total y completamente pirateado . Computerra Online (20 de septiembre de 2010). Consultado el 26 de septiembre de 2019. Archivado desde el original el 23 de septiembre de 2010.
  4. Nathan Willis. El impacto del lanzamiento de la clave maestra HDCP [LWN.net ]  . lwn.net (29 de septiembre de 2010). Consultado el 31 de enero de 2020. Archivado desde el original el 31 de enero de 2020.
  5. Adrián Kingsley-Hughes. La protección de contenido digital de gran ancho de banda (HDCP) podría romperse fatalmente (enlace no disponible) . ZDNet (14 de septiembre de 2010). Archivado desde el original el 16 de junio de 2013. 
  6. Lawler, Richard La 'clave maestra' de HDCP supuestamente liberada desbloquea la protección anticopia de HDTV de forma permanente . Participar. Consultado el 14 de septiembre de 2010. Archivado desde el original el 14 de septiembre de 2010.
  7. HDTV Code Crack Is Real, Intel confirma , Fox News  (16 de septiembre de 2010). Archivado desde el original el 19 de abril de 2012. Consultado el 15 de enero de 2014.
  8. Intel confirma que la clave maestra de HDCP está rota
  9. ↑ Con cable. " Intel amenaza con demandar a cualquiera que use crack HDCP Archivado el 22 de febrero de 2014 en Wayback Machine ".
  10. Especificación HDMI 1.3a (PDF), Licencias HDMI, LLC. (10 de noviembre de 2006). Archivado desde el original el 29 de diciembre de 2009. Consultado el 24 de noviembre de 2009. , Sección: 5.3.6 Paquete de control general

Enlaces