stringtranslate.com

Algoritmo de codificación común

El algoritmo de codificación común ( CSA ) es el algoritmo de cifrado utilizado en la transmisión de televisión digital DVB para cifrar transmisiones de vídeo .

El sistema CSA fue especificado por el ETSI y adoptado por el consorcio DVB en mayo de 1994. Lo está reemplazando el sistema CSA3, [1] basado en una combinación de AES de 128 bits y un cifrado de bloque confidencial, XRC. Sin embargo, el sistema CSA3 todavía no se utiliza de manera significativa, por lo que el sistema CSA sigue siendo el cifrado dominante para proteger las transmisiones DVB.

Historia

El algoritmo CSA se mantuvo en gran medida en secreto hasta 2002. Los documentos de patentes ofrecían algunas pistas, pero los detalles importantes, como el diseño de las llamadas S-boxes , permanecieron en secreto. Sin ellas, no era posible implementar el algoritmo de forma libre. Inicialmente, el algoritmo CSA debía seguir implementado solo en hardware, lo que dificultaba la ingeniería inversa de las implementaciones existentes.

En 2002 se lanzó FreeDec, que implementó CSA en software . Aunque se lanzó solo en formato binario , el desensamblaje reveló los detalles faltantes y permitió la reimplementación del algoritmo en lenguajes de programación de nivel superior .

Ahora que CSA se hizo pública en su totalidad, los criptoanalistas comenzaron a buscar debilidades.

Descripción del cifrado

El algoritmo CSA se compone de dos cifrados distintos: un cifrado de bloque y un cifrado de flujo.

Cuando se utiliza en modo de cifrado, los datos se cifran primero utilizando el cifrado de bloque de 64 bits en modo CBC , comenzando desde el final del paquete. Luego, se aplica el cifrado de flujo desde el inicio del paquete.

Cifrado de bloque

El cifrado por bloques procesa bloques de 64 bits en 56 rondas. Utiliza 8 bits de una clave expandida en cada ronda.

Cifrado de bloques

Cifrado de flujo

Las primeras 32 rondas del cifrado de flujo se utilizan para la inicialización y no generan ninguna salida. Los primeros 64 bits de datos se utilizan como vector de inicialización durante esta fase y no se modifican. A continuación, el cifrado de flujo genera 2 bits de flujo pseudoaleatorio en cada ronda, que se codifican mediante XOR a partir del bit 64 del paquete.

Detalles del cifrado de flujo

Debilidades

Si se rompiera el CSA, las transmisiones DVB cifradas serían descifrables, lo que comprometería los servicios de televisión digital de pago, ya que el DVB ha sido estandarizado para la televisión digital terrestre en Europa y otros lugares, y lo utilizan muchos proveedores de televisión por satélite.

La mayoría de los ataques al sistema de televisión de pago no han tenido como objetivo a CSA en sí, sino a los diversos sistemas de intercambio de claves responsables de generar las claves CSA ( Conax , Irdeto, Nagravision , VideoGuard , etc.), ya sea mediante ingeniería inversa y rompiendo los algoritmos por completo, o interceptando las claves en tiempo real a medida que se generan en un decodificador legítimo, y luego distribuyéndolas a otros (el llamado intercambio de tarjetas ).

Implementaciones de software y segmentación de bits

La parte de cifrado de flujo de CSA es propensa al bit slicing , una técnica de implementación de software que permite descifrar muchos bloques, o el mismo bloque con muchas claves diferentes, al mismo tiempo. Esto acelera significativamente una búsqueda de fuerza bruta implementada en software, aunque el factor es demasiado bajo para un ataque práctico en tiempo real.

La parte de cifrado de bloques es más difícil de segmentar en bits, ya que las cajas S involucradas son demasiado grandes (8x8) para implementarse de manera eficiente mediante operaciones lógicas, un requisito previo para que la segmentación en bits sea más eficiente que una implementación regular. Sin embargo, como todas las operaciones se realizan en subbloques de 8 bits, el algoritmo se puede implementar utilizando SIMD regular , o una forma de "segmentación en bytes". Como la mayoría de los conjuntos de instrucciones SIMD (con la excepción de AVX2 ) no admiten tablas de búsqueda paralelas, las búsquedas de cajas S se realizan en una implementación sin segmentación en bytes, pero su integración en el resto del algoritmo no se ve obstaculizada notablemente por la segmentación en bytes.

Ambas técnicas se utilizan en libdvbcsa, una implementación gratuita de CSA.

Criptoanálisis

El criptoanálisis se vuelve más difícil ya que la mayoría de los datos están protegidos tanto por el cifrado de bloque como por el cifrado de flujo. Los códigos de adaptación pueden generar paquetes con algunos datos protegidos únicamente por el cifrado de bloque o por el cifrado de flujo. [2]

Enfoque de fuerza bruta

Si bien el algoritmo CSA utiliza claves de 64 bits, la mayoría de las veces, solo 48 bits de la clave son desconocidos, ya que los bytes 3 y 7 se utilizan como bytes de paridad en los sistemas CA y se pueden recalcular fácilmente. Esto permite posibles ataques de texto simple conocido cuando se combina con el conocimiento de la estructura de texto simple subyacente. Como los primeros tres bytes del encabezado PES son siempre 0x000001, sería posible lanzar un ataque de fuerza bruta . Tal ataque revelaría millones de claves posibles, pero aún lo suficientemente pocas como para que sea práctico intentar descifrar otras partes de los datos con la misma clave en una segunda pasada para recuperar la clave verdadera.

Ataque de texto simple conocido

En 2011, un grupo de investigadores alemanes lanzó un ataque [3] contra el CSA tal como se utiliza en el sistema DVB. Al observar que el relleno MPEG-2 con frecuencia requiere largas series de ceros, lo que lleva a que celdas enteras de 184 bytes se cifren solo con ceros, es posible construir una tabla de arco iris que recupere la clave de dicho bloque de ceros conocidos. (Se sabría que un bloque es cero si se encontraran dos bloques con el mismo texto cifrado, ya que presumiblemente ambos serían bloques de ceros). El ataque descrito requeriría alrededor de 7,9 TB de almacenamiento y permitiría a un atacante con una GPU recuperar una clave en aproximadamente siete segundos con un 96,8% de certeza. Sin embargo, el ataque solo es efectivo cuando existen dichos bloques de relleno de todos ceros (es decir, en escenas con muy poco movimiento o ruido), y se mitigaría fácilmente, por ejemplo, enviando dichas celdas de todos ceros sin cifrar.

Esto se diferencia de los ejemplos de ataques de fuerza bruta ya mencionados, en que el contenido de texto simple de toda la celda se conoce antes del ataque, no solo partes de un bloque, lo que permite el cálculo anticipado de la tabla arco iris.

Ataque de falla

En 2004 se publicó un ataque de fallos [4] sobre el cifrado de bloques. La idea básica era introducir algunos fallos deliberados en los cálculos intermedios, lo que posibilitaba deducir las últimas ocho claves de ronda. A partir de ahí, se podía calcular la clave final.

Si bien se necesitan muy pocos fallos (en promedio, dos o tres por ronda de clave recuperada), los ataques de fallos suelen ser poco prácticos de llevar a cabo, ya que requieren la capacidad de cambiar bits a voluntad dentro del hardware de un decodificador que ya tiene la clave en cuestión.

Referencias

  1. ^ Farncombe Consulting Group (2009). "Hacia un reemplazo para el algoritmo de codificación común DVB" (PDF) (informe técnico). Basingstoke. Archivado desde el original (PDF) el 2010-07-05 . Consultado el 2012-11-20 .
  2. ^ Weinmann, Ralf-Philipp; Wirt, Kai (2005). "Análisis del algoritmo de codificación común DVB" (PDF) . En David Chadwick; Bart Preneel (eds.). Seguridad de las comunicaciones y multimedia . 8.ª conferencia IFIP TC-6 TC-11 sobre seguridad de las comunicaciones y multimedia, del 15 al 18 de septiembre de 2004, Windermere, Distrito de los Lagos, Reino Unido. IFIP — Federación Internacional de Procesamiento de la Información, vol. 175. Springer. págs. 195–207. doi :10.1007/0-387-24486-7_15. ISBN . 978-0-387-24486-0.
  3. ^ Tews, Erik; Wälde, Julian; Weiner, Michael (2012). "Breaking DVB-CSA" (PDF) . En Frederik Armknecht; Stefan Lucks (eds.). Investigación en criptología . 4º Taller de Europa Occidental, WEWoRC 2011, Weimar, Alemania, 20-22 de julio de 2011. Lecture Notes in Computer Science. Vol. 7242. Springer. págs. 45-61. doi :10.1007/978-3-642-34159-5_4. ISBN . 978-3-642-34158-8.
  4. ^ Wirt, Kai (noviembre de 2003). "Ataque de falla en el algoritmo de codificación común DVB (informe 2004/289)". Archivo de ePrints de criptología .

Enlaces externos