Se ha denunciado esta presentación.
Utilizamos tu perfil de LinkedIn y tus datos de actividad para personalizar los anuncios y mostrarte publicidad más relevante. Puedes cambiar tus preferencias de publicidad en cualquier momento.
Cargando en…3
×
1 de 55

Common Scrambling Algorithm al descubierto

0

Compartir

Ataques para Common Scrambling Algorithm

Libros relacionados

Gratis con una prueba de 30 días de Scribd

Ver todo

Audiolibros relacionados

Gratis con una prueba de 30 días de Scribd

Ver todo

Common Scrambling Algorithm al descubierto

  1. 1. DVB CSA Common Scrambling Algorithm Emilie Hertzberg Yasmine Rattel Jose María Ruiz de la Fuente Miguel Ángel González
  2. 2. Índice <ul><li>Introducción </li></ul><ul><li>Historia </li></ul><ul><li>El algoritmo CSA </li></ul><ul><ul><li>Flujo </li></ul></ul><ul><ul><li>Ataque de Flujo </li></ul></ul><ul><ul><li>Bloque </li></ul></ul><ul><ul><li>Ataque de bloque </li></ul></ul><ul><li>Conclusión </li></ul>
  3. 4. Introducción <ul><li>¿Cómo transmitir emisiones de televisión digital? </li></ul><ul><li>DVB-S => Por satélite </li></ul><ul><li>DVB-C => Por cable </li></ul><ul><li>DVB-H => Para dispositivos moviles </li></ul><ul><li>DVB-T => Por tierra </li></ul>
  4. 5. Introducción <ul><li>ETSI espicifica procesos de modificación cuando se usa transmisión terrestre: </li></ul><ul><li>DVB-T ( Digital Video Broadcasting – Terrestrial ) </li></ul><ul><li>es el estándar para la transmisión de televisión digital terrestre </li></ul>
  5. 6. Introducción <ul><li>El estándar DVB-T comprende: </li></ul><ul><li>Modulación </li></ul><ul><ul><li>multiplexación por división de frecuencias ortogonales </li></ul></ul><ul><li>Codificación digital </li></ul>
  6. 7. Introducción <ul><li>¿Cómo se encripta el video en DVB? </li></ul><ul><li>CSA (Common Scrambling Algorithm) </li></ul><ul><li>Usa cifrado en flujo y cifrado por bloques, en cascada, con llave en común </li></ul><ul><li>Más seguro </li></ul><ul><li>Menos sensible a errores </li></ul><ul><li>Simétrico </li></ul>
  7. 8. <ul><li>Para crear la clave de CSA se usan palabras de control, que se obtienen de un mecanismo de acceso condicional. Hay diferentes tipos de mecanismos </li></ul><ul><li>Una nueva clave se genera cada 10-120 segundos </li></ul><ul><li>Todas transmisiones de Pay Per View en Europa usan CSA </li></ul>Introducción
  8. 9. Historia CSA <ul><li>CSA fue adoptado por ETSI en 1994 </li></ul><ul><li>No se podía usar en software por razones de seguridad </li></ul><ul><li>Se desconocía el algoritmo hasta 2002 </li></ul><ul><li>En 2002 apareció un programa llamado FreeDec que usaba el algoritmo en software. Los autores no se conocen </li></ul>
  9. 10. <ul><li>El cifrado de flujo de CSA </li></ul>
  10. 11. Visión global <ul><li>El cifrado de flujo consta de: </li></ul><ul><ul><li>Dos feedback shift registers. </li></ul></ul><ul><ul><li>Un mezclador. </li></ul></ul><ul><li>Tiene dos modos de actuación: </li></ul><ul><ul><li>Modo inicialización. </li></ul></ul><ul><ul><li>Modo generación. </li></ul></ul>
  11. 12. Visión global : descrambling
  12. 13. Esquema bloque
  13. 14. FSR 1
  14. 15. FSR 2
  15. 16. Combiner
  16. 17. Modo inicialización <ul><li>El nonce que permite inicializar el criptosistema consiste de la clave K y del primer bloque entrelazado del flujo de transporte SB 0 . </li></ul><ul><li>El primer paso de la inicialización consta en introducir la clave K de 64 bits en los dos registros A y B. </li></ul>
  17. 18. Modo inicialización <ul><li>Regla de introducción de la clave común K: </li></ul>
  18. 19. Modo inicialización <ul><li>Usaremos ahora SB 0 y el registro de feedback D como entrada y hacemos 32 ciclos para calcular el estado inicial. </li></ul><ul><li>Las entradas de los FSR 1 y 2 serán: </li></ul><ul><ul><li>Entonces en los ciclos de reloj pares el IA es el nibble inferior y el IB el nibble superior. </li></ul></ul>
  19. 20. Modo generación <ul><li>FSR 1: </li></ul><ul><ul><li>Donde el a i es el registro a i,0 , …, a i,3 los 10 registros de 4 bits. </li></ul></ul>Si no estamos en la fase de inicialización
  20. 21. Modo generación <ul><li>FSR 2 </li></ul><ul><ul><li>Donde el b i es el registro b i,0 , …, b i,3 los 10 registros de 4 bits. </li></ul></ul>Si no estamos en la fase de inicialización rol = rotate left
  21. 22. Modo generación <ul><li>Otros registros: </li></ul><ul><ul><li>X, Y, Z, p y q sus valores serán deducidas de cajas que se llaman S-Boxes, estas cajas son siete y sus dimensiones son 5 x 2. </li></ul></ul><ul><ul><li>La entrada de los S-Boxes es una serie de bits del registro A. </li></ul></ul><ul><ul><li>Los registros X, Y, Z, p y q vienen dados como funciones de las salidas de los S-Boxes. </li></ul></ul>
  22. 23. Modo generación S1 a 3,0 a 0,2 a 5,1 a 6,3 a 8,0 S2 a 1,1 a 2,2 a 5,3 a 6,0 a 8,1 S3 a 0,3 a 1,0 a 4,1 a 4,3 a 5,2 S4 a 2,3 a 0,1 a 1,3 a 3,2 a 7,0 S5 a 4,2 a 3,2 a 5,0 a 7,1 a 8,2 S6 a 2,1 a 3,1 a 4,0 a 6,2 a 8,3 S7 a 1,2 a 2,0 a 6,1 a 7,2 a 7,3 X S 4,0 S 0,3 S 2,1 S 1,1 Y S 6,0 S 5,0 S 4,1 S 3,1 Z S 2,0 S 1,0 S 6,1 S 5,1 p S 7,1 q S 7,0
  23. 24. Modo generación Tablas de las S-boxes
  24. 25. Modo generación <ul><li>Combiner: </li></ul><ul><ul><li>El cifrado de flujo utiliza un combiner que tiene una memoria para calcular 2 bits de salida cada clock. </li></ul></ul><ul><ul><li>La memoria del combiner consta en los tres registros E, F y c. </li></ul></ul>
  25. 26. Modo generación <ul><li>El estado de los registros esta definido por: </li></ul>
  26. 27. Modo generación <ul><li>La salida del generador esta dada por: </li></ul><ul><ul><li> donde </li></ul></ul><ul><ul><li>Donde: </li></ul></ul>
  27. 28. <ul><li>Ataque del cifrado de flujo </li></ul>
  28. 29. Ataque del cifrado de flujo <ul><li>Indice: </li></ul><ul><li>Definiciones y Suposiciones </li></ul><ul><li>Longitud de Ciclo </li></ul><ul><li>Probar Estados </li></ul><ul><li>Reconstruir Registros </li></ul><ul><li>Resultado </li></ul>
  29. 30. 1. Definiciones y Suposiciones <ul><li>El estado del cifrado de flujo consiste en 103 bits (la suma de todos los bits de los registros=103) </li></ul><ul><li>=> periodo maximo = 2^103 </li></ul><ul><li>Se espera que un ciclo tenga por lo menos 2^80 estados </li></ul>
  30. 31. 1. Definiciones y Suposiciones <ul><li>Lw=un ciclo entero, el numero de estados j-i por los que pasamos antes de que todos los registros en el estado ti sean iguales que en el estado tj </li></ul>t1 t2 t3 t4 t5 t6 t7 t8 t9 t10 t11 t12 t13
  31. 32. 1. Definiciones y Suposiciones <ul><li>Ls=un ciclo pequeño, el numero de estados j-i por los que pasamos antes de que los registros A y X en el estado ti sean iguales que en el estado tj </li></ul>
  32. 33. 2. Longitud de ciclo <ul><li>Para encontrar la longitud de un ciclo se usa el Algoritmo Floyd </li></ul><ul><li>Observaciones: </li></ul><ul><ul><li>Los ciclos tienen una longitud mas pequeña de lo esperado: <10^9 </li></ul></ul><ul><ul><li>Si dos ciclos tienen sus lw iguales, ls tambien son iguales </li></ul></ul><ul><ul><li>Si las ls son iguales, A y X recorren los mismos valores </li></ul></ul>
  33. 34. 2. Longitud de ciclo <ul><li>Se realizaron 10^5 experimentos para determinar las mas probables ls </li></ul><ul><li>Resultó que en 98,4% de los casos eran las mismas 7 longitudes que aparecían </li></ul>
  34. 35. 3. Probar estados <ul><li>El procedimiento del ataque será: </li></ul><ul><li>Nos quedaria explicar como se hacen los pasos 3 y 4 </li></ul><ul><li>Calcular una tabla T con los posibles estados de los ciclos pequeños para registros A y X </li></ul><ul><li>for ”cada estado en T” </li></ul><ul><li>Probar si el estado es correcto </li></ul><ul><li>Reconstruir los demas registros </li></ul><ul><li>end </li></ul>
  35. 36. 3. Probar Estados <ul><li>Hay que repetir el bucle para todos posibles estados de A y X. Estas son 2^44. (A 40 bits, X 4 bits) </li></ul><ul><li>Es suficiente probar 313169 posibilidades, que es la suma del las longitudes de ciclos que tienen una longitud que pertenecen a los 7 mas frecuentes. Sabemos si dos ciclos tienen igual ls los registros serán iguales. </li></ul>
  36. 37. 4. Reconstruir Registros <ul><li>Cómo reconstruir los demás registros: </li></ul><ul><li>Suponemos valores de A (para cada iteración) y por eso conocemos también Z y Y. Falta por conocer E, F y c. </li></ul>
  37. 38. 4. Reconstruir Registros <ul><li>Para cada posible valor (2^9 posibilidades) de E,F y c hacemos lo siguiente: </li></ul><ul><li>Considerar los bits de B como variables </li></ul><ul><li>Generar sistema de ecuaciones suponiendo los dos bits de salida como combinaciín lineal de las variables B </li></ul><ul><li>Resolver sistema con eliminación de Gauss </li></ul>
  38. 39. 4. Reconstruir Registros <ul><li>Si la solución es inconsistente los valores de E,F, c no son correctos </li></ul><ul><li>Si la solución es consistente los valores de E, F y c son una posible solución </li></ul><ul><li>Finalmente determinamos cual de las soluciones es la correcta, pasando el estado encontrado por el generador y comparando la salida con la salida verdadera </li></ul>
  39. 40. 5. Resultado <ul><li>Resultado : </li></ul><ul><li>Hay que resolver un sistema de 2^28 sistemas de ecuaciones, cada uno contiene 60 ecuaciones, que son las para hallar los valores de B </li></ul><ul><li>Esto se puede realizar en menos de una hora con un 1.25 GHz Power PC G4. </li></ul><ul><li>Posibles mejoras del ataque: </li></ul><ul><li>Mejores pruebas de A a partir de datos estadisticos </li></ul>
  40. 41. <ul><li>El cifrado de bloque </li></ul>
  41. 42. <ul><li>CSA emplea un cifrador de bloque iterativo que opera con bloques de 64 bits de datos y usa una llave de 64 bits, la comunmente llamada K . </li></ul><ul><li>En cada ronda emplea la misma transformación de ronda Φ , la cual toma un vector de 8 bytes de datos con un solo byte de la llave expandida como entrada y como salida un vector de 8-bytes. Esta transformación de ronda es aplicada 56 veces. </li></ul>Visión global
  42. 43. <ul><li>ρ permuta según la lista de 64-bit consecutivos definidos en la tabla 2: </li></ul><ul><li>La llave expandida K E =(K 0 E ,…, K 447 E ) consiste en un total de 448 bits recursivos. Creados como vemos a continuación: </li></ul><ul><li>K 0 E ,…, K 63 E = K 0 ,…, K 63 </li></ul><ul><li>K 64i E ,…, 64i+63 = ρ (K 64(i-1) E ,…, 64i-1 ) 0x0i0i0i0i0i0i0i0i 1<=i<=6 </li></ul><ul><li>Donde la expresión 0x0i0i0i0i0i0i0i0i es una constante hexadecimal </li></ul>Creación de llaves
  43. 44. <ul><li>Lo importante de aplicar la ronda de transformación Φ son: </li></ul><ul><li>las funciones no lineales f y f’ . </li></ul><ul><li>Producimos permutaciones en todos los valores de bytes que pueden ser vistas como las S-cajas de cifrador de flujo. Estas permutaciones tienen un ciclo longitud máxima y son relacionadas con cada uno de las otras por la permutación de un bit. Esta permutación de bit mapea el bit 0 al 1, el bit 2 al 5,el bit 3 al 4, el bit 4 al 2, el bit 5 al 6, el bit 6 al 0 y el bit 7 al 3. </li></ul>La función de ronda
  44. 45. <ul><li>S=(s 0 ,…,s 7 ) es el vector de bytes que representa el estado interno del cifrador de bloque en una ronda arbitraria de las 56. La función Φ tomando el estado interno “S” de la ronda i a la ronda i+1 puede ser definida como: </li></ul><ul><li>Mientras que para desencriptar un bloque el cifrador de texto necesitamos la función inversa: </li></ul>La función de ronda
  45. 46. <ul><li>Encriptando el texto plano P= </li></ul><ul><li>Es conseguido mediante </li></ul><ul><li>Los cuales ceden el texto cifrado C= </li></ul><ul><li>Para desencriptar este texto cifrado la siguiente secuencia de operaciones necesita ser hecha: </li></ul>Encriptación/desencriptación
  46. 47. <ul><li>Ataque del cifrado de bloque </li></ul>
  47. 48. Ataque de fallos al cifrado de bloque <ul><li>El objetivo de este ataque es la última parte del sistema de encriptación. </li></ul><ul><li>Éste da las 8 primeros bits de la clave de ronda. </li></ul><ul><li>Estos 8 primeros bits son iguales en la clave de ronda y la clave común </li></ul>
  48. 49. Ataque de fallos al cifrado de bloque <ul><li>Deberíamos verificar para cada clave de ronda k’ </li></ul><ul><li>si </li></ul><ul><li>Podemos determinar que el número de claves de ronda posibles son 2 por cada error introducido </li></ul><ul><li>Si repetimos el ataque para 2 o 3 errores diferentes la clave de ronda puede ser descubierta </li></ul>
  49. 50. Ataque de fallos al cifrado de bloque <ul><li>Después de descubrir la clave de ronda para las rondas 0…i el atacante introduce una error en la ronda i+1 del proceso de desencriptado. </li></ul><ul><li>Utiliza las claves para hacer i+1 rondas del proceso de encriptado con texto plano y texto modificado, consiguiendo: </li></ul>
  50. 51. Ataque de fallos al cifrado de bloque <ul><li>Se puede recuperar los bits de las claves </li></ul><ul><li>E iterativamente recuperar las 8 claves de ronda requeridas. </li></ul><ul><li>Por tanto la clave común está dada por: </li></ul>
  51. 52. Ataque de fallos al cifrado de bloque <ul><li>En la implementación el atacante tiene que introducir aprox. 2 errores por clave de ronda </li></ul><ul><li>Total de 16 errores </li></ul><ul><li>Para obtener 1 sola clave de ronda el atacante tiene que evaluar la g(k’) de todas las 256 valores diferentes de k’ para cada error introducido </li></ul><ul><li>Complejidad: </li></ul><ul><li>- 16 introducciones de error </li></ul><ul><li>- 8·2·256=4096 evaluaciones de g </li></ul>
  52. 53. Ataque de fallos al cifrado de bloque <ul><li>ERRORES UNIFORMEMENTE DISTRIBUIDOS </li></ul><ul><ul><li>Es el caso de que el atacante no sea capaz de introducir errores en registros y rondas especificas. </li></ul></ul><ul><ul><li>Si consigue introducir un error uniforme se puede fraguar el ataque igualmente. </li></ul></ul>
  53. 54. Conclusión <ul><li>Teoricamente implementando en una FPGA con 42 hebras que pongan a prueba 1 llave cada ciclo de reloj, con una frecuencia de reloj de 50Mhz, encontraríamos la clave en aproximadamente 1 segundo, en promedio, para encontrar la clave después de 2 31 intentos para una clave de 2 32 . El problema sería determinar cuándo la clave es válida, ya que ello implica comprobar los datos descifrados, y esto podría ser difícil de ejecutar de manera eficiente en las FPGAs actuales. </li></ul>
  54. 55. Conclusión <ul><li>Si CSA pudiese romperse, las transmisiones cifradas de DVB serían descifrables, con independencia de cualquier sistema de acceso condicional patentado que se utilice. Esto comprometería los servicios de Pay Per View de televisión digital. Sin embargo, aún no se ha publicado ningún ataque. </li></ul>

Notas

  • Thus in every odd cycle number IA is the high nibble of SB0 whereas IB is the low nibble. In even cycles the nibbles are used the other way round. See below for the equations which update the internal cipher state.
  • ×