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 las secuencias de vídeo .
CSA fue especificado por ETSI y adoptado por el consorcio DVB en mayo de 1994. Está siendo reemplazado por CSA3, [ 1 ] basado en una combinación de AES de 128 bits y un cifrado de bloques confidencial, XRC. Sin embargo, CSA3 aún no se utiliza de forma significativa, por lo que CSA continúa 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 detalles importantes, como la disposición de las llamadas cajas S , permanecieron ocultos. Sin estos detalles, no era posible realizar implementaciones libres del algoritmo. Inicialmente, CSA debía implementarse únicamente en hardware, lo que dificultaba la ingeniería inversa de las implementaciones existentes.
En 2002 se lanzó FreeDec, que implementaba CSA en software . Aunque se lanzó solo como 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 conoce públicamente en su totalidad, los criptoanalistas comenzaron a buscar vulnerabilidades.
Descripción del cifrado
El algoritmo CSA se compone de dos cifrados distintos: un cifrado por bloques y un cifrado de flujo.
Cuando se utiliza en modo de cifrado, los datos se cifran primero mediante el cifrado de bloques de 64 bits en modo CBC , comenzando desde el final del paquete. A continuación, se aplica el cifrado de flujo desde el inicio del paquete.
Cifrado por bloques
El cifrado por bloques procesa bloques de 64 bits en 56 rondas. Utiliza 8 bits de una clave expandida en cada ronda.
![]()
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 permanecen sin cambios. A continuación, el cifrado de flujo genera 2 bits de secuencia pseudoaleatoria en cada ronda, que se combinan mediante la operación XOR a partir del bit 64 del paquete.
![]()
Debilidades
Si se lograra vulnerar el protocolo CSA, las transmisiones DVB encriptadas serían descifrables, lo que comprometería los servicios de televisión digital de pago, ya que DVB se ha estandarizado para la televisión digital terrestre en Europa y otros lugares, y es utilizado por 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 el propio CSA, sino 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 por completo los algoritmos, 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 uso compartido de tarjetas ).
Implementaciones de software y segmentación de bits
La parte de cifrado de flujo de CSA es vulnerable al seccionamiento de bits , una técnica de implementación de software que permite descifrar varios bloques, o el mismo bloque con varias claves diferentes, simultáneamente. Esto acelera significativamente una búsqueda por fuerza bruta implementada en software, aunque el factor es demasiado bajo para un ataque práctico en tiempo real.
La parte del cifrado por bloques es más difícil de segmentar por bits, ya que las cajas S involucradas son demasiado grandes (8x8) para implementarse eficientemente mediante operaciones lógicas, requisito indispensable para que la segmentación por bits sea más eficiente que una implementación convencional. Sin embargo, dado que todas las operaciones se realizan sobre subbloques de 8 bits, el algoritmo puede implementarse mediante SIMD convencional o una forma de segmentación por 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 en las cajas S se realizan en una implementación sin segmentación por bytes, pero su integración en el resto del algoritmo no se ve afectada significativamente por dicha segmentación.
Ambas técnicas se utilizan en libdvbcsa , una implementación gratuita de CSA.
Criptoanálisis
El criptoanálisis se dificulta ya que la mayoría de los datos están protegidos tanto por el cifrado de bloques como por el cifrado de flujo. Los códigos de adaptación pueden generar paquetes con algunos datos protegidos únicamente por el cifrado de bloques o por el cifrado de flujo. [ 2 ]
Enfoque de fuerza bruta
Aunque el algoritmo CSA utiliza claves de 64 bits, en la mayoría de los casos solo se desconocen 48 bits de la clave, ya que los bytes 3 y 7 se utilizan como bytes de paridad en los sistemas CA y pueden recalcularse fácilmente. Esto permite posibles ataques de texto plano conocido al combinarse con el conocimiento de la estructura subyacente del texto plano. Dado que los tres primeros bytes del encabezado PES son siempre 0x000001, sería posible lanzar un ataque de fuerza bruta . Dicho ataque revelaría millones de claves posibles, pero aún así, lo suficientemente pocas como para que resulte 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 plano conocido
En 2011, un grupo de investigadores alemanes publicó un ataque [ 3 ] contra CSA, tal como se utiliza en el sistema DVB. Al observar que el relleno MPEG-2 frecuentemente requiere largas series de ceros, lo que lleva a que celdas completas de 184 bytes se cifren solo con ceros, es posible construir una tabla arcoíris que recupera la clave a partir de un bloque de ceros conocido. (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 cero). El ataque descrito requeriría aproximadamente 7,9 TB de almacenamiento y permitiría a un atacante con una GPU recuperar una clave en unos siete segundos con un 96,8 % de certeza. Sin embargo, el ataque solo es efectivo cuando hay presentes dichos bloques de relleno de ceros (es decir, en escenas con muy poco movimiento o ruido), y se podría mitigar fácilmente, por ejemplo, enviando dichas celdas de ceros sin cifrar.
Esto difiere de los ejemplos de ataques de fuerza bruta ya mencionados, en que el contenido en texto plano 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íris.
Ataque de fallas
En 2004, se publicó un ataque de fallos [ 4 ] contra el cifrado por bloques. La idea básica consistía en introducir algunos fallos deliberados en los cálculos intermedios, lo que permitía deducir las últimas ocho claves de ronda. A partir de esto, se podía calcular la clave final.
Si bien se necesitan muy pocos fallos (en promedio, dos o tres por ronda para recuperar la clave), los ataques de fallos suelen ser poco prácticos, ya que requieren la capacidad de cambiar bits a voluntad dentro del hardware de un decodificador que ya posee la clave en cuestión.
Referencias
- ↑ Farncombe Consulting Group (2009). "Hacia un reemplazo para el algoritmo de codificación común de DVB" (PDF) (documento técnico). Basingstoke. Archivado del original (PDF) el 5 de julio de 2010. Consultado el 20 de noviembre de 2012 .
- ↑ Weinmann, Ralf-Philipp; Wirt, Kai (2005). "Análisis del algoritmo de codificación común DVB" (PDF) . En David Chadwick; Bart Preneel (eds.). Seguridad en comunicaciones y multimedia . 8.ª Conferencia IFIP TC-6 TC-11 sobre seguridad en comunicaciones y multimedia, 15-18 de septiembre de 2004, Windermere, Distrito de los Lagos, Reino Unido. IFIP — Federación Internacional para el 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.
- ↑ Tews, Erik; Wälde, Julian; Weiner, Michael (2012). "Rompiendo 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. pp. 45-61 . doi : 10.1007/978-3-642-34159-5_4 . ISBN 978-3-642-34158-8.
- ↑ Wirt, Kai (noviembre de 2003). "Ataque de fallos al algoritmo de codificación común DVB (Informe 2004/289)" . Cryptology ePrint Archive .
Enlaces externos
- Análisis del algoritmo de codificación común DVB
- libdvbcsa: Una implementación gratuita del algoritmo de codificación común de DVB.
- Criptoanálisis mejorado del algoritmo de codificación común Cifrado de flujo
- Sistemas DVB CSA de ETSI.org
- Algoritmos criptográficos
- Radiodifusión de vídeo digital