Sistema de codificación de contenido

CSS , Content Scramble System  es un sistema para proteger contenido de medios digitales en medios de DVD . El sistema es extremadamente inestable a la piratería. Debido a las restricciones a la exportación de tecnologías criptográficas de los Estados Unidos, la longitud de la clave de cifrado está limitada a 40 bits, que es extremadamente pequeña. Además, debido a la vulnerabilidad encontrada, la longitud efectiva de la clave es de aproximadamente 16 bits, es decir, todas las opciones posibles se pueden clasificar en una computadora moderna en solo unos segundos, lo que se debe a un método de protección primitivo. [1] En 2005, CSS fue reemplazado por el AACS más robusto .

Historial de creación

La especificación del DVD estuvo lista en diciembre de 1995 . Los fabricantes de reproductores de DVD y unidades de DVD necesitaban tener una cantidad significativa de películas y música en DVD. Sin embargo, los estudios de cine notaron que los DVD serían una fuente ideal para copiar películas: la información digital no perdería su calidad cuando se volviera a grabar (los videocasetes no permitían esto debido a la protección de salida analógica APS ). El DVD Consortium estaba obligado a proporcionar una protección anticopia adecuada. Como resultado, el Consorcio de DVD creó el Grupo de Trabajo Técnico de Protección de Copias (CPTWG ) .  El 29 de octubre de 1996, el CPTWG anunció el establecimiento de CSS, que fue desarrollado principalmente por Toshiba y Matsushita Electric Industrial . Se creó una organización sin fines de lucro, la Asociación de Control de Copias de DVD (DVD CCA ) , para licenciar el uso de CSS . [2] 

Historia de los hacks

El primer rastreador CSS apareció en Internet en noviembre de 1997 con el nombre de softDVDcrack. Este programa en realidad no rompió CSS, sino el reproductor Zoran. Zoran pronto solucionó los errores en la versión pirateada del reproductor, pero las copias de la versión anterior permanecieron en línea. El proceso de piratería fue bastante complicado, por lo que el programa no recibió una distribución masiva. Después de eso, hubo muchas más aplicaciones similares. Sin embargo, el colapso de CSS está asociado con el advenimiento del programa DeCSS en noviembre de 1999 . Fue escrito por un estudiante noruego, Jon Johansen, basado en la ingeniería inversa del código del jugador Xing por un equipo de programadores alemanes MoRE (Masters of Reverse Engineering). Xing no parece haber codificado una clave para desbloquear DVD protegidos. DeCSS se diferencia de todos los programas anteriores en que descifra CSS en lugar de interceptar la transmisión de video de un reproductor con licencia. Además, cualquier computadora que pueda reproducir una película en DVD podrá descifrar CSS con bastante facilidad usando DeCSS . Por lo tanto, DeCSS se extendió rápidamente por todo el mundo, aunque en algunos estados es ilegal publicar código DeCSS en sitios web. [3]

Algoritmo CSS

Hay varios componentes involucrados en el algoritmo CSS: el DVD, la unidad de DVD, el reproductor y el host. Sin embargo, todos deben tener licencia de la Asociación de Control de Copias de DVD (DVD CCA) para usar CSS. El algoritmo CSS consta de dos partes: autenticación y cifrado.

Autenticación

  1. La unidad de DVD solicita al host una ID de concesión de autenticación de 2 bits .  Este valor se utiliza para nombrar la sesión de autenticación.
  2. La autenticación mutua tiene lugar entre la unidad de DVD y el host. El host genera una secuencia aleatoria de 40 bits y la envía a la unidad de DVD. La unidad de DVD encripta esta secuencia utilizando la función hash CSS ,  recibe un valor de 80 bits, la llamada clave de desafío , y la envía al host .  El propio host descifra la respuesta y la compara con la secuencia generada. Si los valores coinciden, el host confía en la unidad de DVD, ya que solo se considera que los dispositivos y programas con licencia conocen la función hash secreta de CSS. Se realiza la operación inversa (los roles se invierten entre el host y la unidad de DVD), después de lo cual la unidad de DVD confía o no en el host, según el resultado de la comparación.
  3. Se genera una clave de bus .  El host y la unidad de DVD combinan las secuencias aleatorias utilizadas para la autenticación y, mediante la función hash CSS, cada uno obtiene una clave de bus. Esta clave encripta más transferencias de claves entre el host y la unidad de DVD. Esta clave nunca se transmite por el bus.
  4. El reproductor y el DVD están autenticados. Cada jugador con licencia tiene una o más claves de jugador de una  lista de 409 claves. En un disco protegido, en un área invisible, se encuentran una clave de disco ( eng. Disk Key ), cifrada por cada una de las 409 claves, y una clave de autenticación ( eng. Authentication Key ), es decir, la clave de disco cifrada por sí misma. almacenado. Estas claves forman un bloque de 2048 bytes. El bloque se envía al jugador. El reproductor sabe en qué área se encuentra la clave del disco, cifrada con su clave, y descifra el valor en esta área. Luego, para verificar la autenticidad de la clave, descifra la clave de autenticación utilizando la clave de disco encontrada y compara el resultado con la clave de disco. Si las claves coinciden, la autenticación se considera exitosa. De lo contrario, el jugador realiza todas las operaciones con la siguiente clave de jugador conocida, y así sucesivamente. La clave del disco se usa más tarde. [3]  

Descifrado

Los datos del DVD se cifran por sector. La información sobre si un sector está encriptado o no se almacena en el encabezado del sector. Solo se cifran los sectores que llevan información de streaming (vídeo, imagen, sonido), el resto, por ejemplo, los encargados de la navegación, no están cifrados. El cifrado de datos se basa en la suma bit a bit con una secuencia de bits pseudoaleatoria y sustitución de bytes de tabla uno a uno. Para implementar una secuencia pseudoaleatoria, se utilizan registros de desplazamiento de retroalimentación lineal ( English  Linear Feedback Shift Register, LFSR )

  1. El reproductor solicita la clave de título de la unidad de DVD .  A continuación, descifra los datos recibidos utilizando la clave del disco para obtener la clave de denominación.
  2. Los registros de desplazamiento CSS se rellenan con bytes de clave de nombre. El algoritmo CSS utiliza dos registros de desplazamiento de retroalimentación lineal: 17 bits y 25 bits. Antes de llenar, la clave de nombre se agrega bit a bit a la clave de sector ( Sector Key ) .  La clave de sector está contenida en los bytes 80 a 84 del sector. Después de la suma, el primer y segundo byte de la clave de nombre llenan un registro de 17 bits y el resto llena un registro de 25 bits. Se inserta un uno lógico en el cuarto bit de cada registro de desplazamiento para evitar el bucle cero.
  3. Los registros de desplazamiento pasan por ocho ciclos y cada uno produce un byte de salida . La función XOR se utiliza como retroalimentación en los registros de desplazamiento. En el caso de un registro de 17 bits, su entrada son los bits 1 y 15, y la salida es el bit 17 y es la salida del registro de desplazamiento. En el caso de un registro de 25 bits, la entrada a la función son los bits 1, 4, 5 y 15, y la salida es el bit 25 y la salida del registro. [cuatro]
  4. Las salidas de los registros se suman de cierta manera. Antes de la suma, la salida del registro de 17 bits se invierte bit a bit. Los bytes de salida del registro se agregan mediante la adición habitual de ocho bits, y se les agrega el bit de desbordamiento de la adición anterior, y el bit de desbordamiento resultante (el noveno bit de la suma) va a la entrada de la siguiente adición. El resultado forma la salida común de los registros de desplazamiento. En general, la salida de cada registro de desplazamiento puede invertirse o no. De ello se deduce que los registros de desplazamiento pueden operar en cuatro modos. El modo de cifrado de datos se utiliza para cifrar datos.
  5. El byte de datos cifrados pasa por una tabla de sustitución uno a uno y se agrega a la salida total de los registros de desplazamiento. El resultado se puede reproducir. [cuatro]

Registros de desplazamiento CSS

CSS utiliza dos registros de desplazamiento de retroalimentación lineal .  El cambio de registros se produce de izquierda a derecha. El bit de salida es el valor de la función de realimentación. El cuarto bit de cada registro se establece en uno lógico cuando el registro de desplazamiento se llena inicialmente. [cuatro]

Modos de cifrado

CSS tiene cuatro modos de cifrado. El modo se selecciona según la información que se cifra. El modo afecta si la salida de un registro de desplazamiento en particular se invierte o no.

Modo de encriptación LSFR-17 LSFR-25
Autenticación invertido no invertido
Cifrado de clave de bus no invertido no invertido
Cifrado de clave de nombre no invertido invertido
Cifrado de datos invertido no invertido

[cuatro]

Función de distorsión CSS

Al cifrar la clave del disco y la clave del nombre, además de los registros de desplazamiento, se utiliza la función de distorsión ( Función de manipulación en inglés  ).

Los bytes A1-A5 son la entrada de la función de distorsión, se sustituyen por los bytes de la clave que se cifra. Los bytes C1-C5 son la salida de la función. Los bytes B1-B5  son valores intermedios. Los bytes k1-k5 son bytes de la salida general de los registros de desplazamiento en el modo correspondiente. Los registros de desplazamiento se llenan inicialmente con la clave utilizada para el cifrado. El símbolo F denota un reemplazo uno a uno de un byte en la tabla. Plus significa adición bit a bit de bytes. La salida de la función de distorsión es la clave cifrada. [una]

Tipos de llaves

El sistema contaba con los siguientes tipos de llaves [5] :

Las claves del disco y del título se escribieron en el área de entrada del disco para que fuera imposible copiarlas directamente [6] .

Vulnerabilidades del sistema y posibles ataques

Véase también

Notas

  1. 1 2 3 Frank A. Stevenson. Sistema de Criptoanálisis de Contenidos Scrambling . Consultado el 16 de noviembre de 2009. Archivado desde el original el 2 de junio de 2012.
  2. Copia archivada (enlace no disponible) . Consultado el 26 de noviembre de 2009. Archivado desde el original el 1 de julio de 2013.   Opinión técnica sobre CSS
  3. 1 2 Taylor J. DVD Desmitificado . Consultado el 2 de octubre de 2017. Archivado desde el original el 25 de abril de 2018.
  4. 1 2 3 4 5 Sistemas Operativos: Diseño e Implementación. Conferenciante: Gregory Kesden . Consultado el 19 de noviembre de 2009. Archivado desde el original el 8 de enero de 2019.
  5. Criptografía en entretenimiento doméstico: una mirada a la codificación de contenido en DVD . Consultado el 16 de noviembre de 2009. Archivado desde el original el 2 de junio de 2012.
  6. Scott Müller. Actualización y reparación de PC, pág. 744 Archivado el 14 de abril de 2018 en Wayback Machine .