DeCSS

12

Click here to load reader

description

Descripción de DeCSS, sistema de crackeo del sistema CSS (Content Scrambling System)

Transcript of DeCSS

Page 1: DeCSS

CSS y DeCSS

[email protected]

1.Introducción

Las posibilidades multimedia que han surgido en los últimos años eranimpensables hace tan solo unos años. Los formatos de compresión tanto de video

http://www.splitcc.net/Documents/decss.html

1 de 12 10/11/09 17:41

Page 2: DeCSS

como de audio, permiten ver y escuchar vídeos de muy buena calidad y ocupandoun tamaño relativamente pequeño. Si a esto añadimos la apareción de tecnologías

de almacenamiento de datos como los DVDs (Digital Video Disk)que permiten

guardar hasta 15 GB (en los grabados a doble cara y a doble cara) y por lo tantopermitiendo muchisimas posibilidades que otros formatos no pueden ofrecer.

La "tecnología DVD" propiamente dicha, no es dueña de ninguna compañía. Laespecificación oficial fue desarrollado por un consorcio de 10 compañías: Hitachi,JVC, Matsushita, Mitsubishi, Philips, Pioneer, Sony,Thomson, Time Warner, yToshiba.

Se ve últimamente cómo todos estos nuevos formatos se están introducioendo enel mercado, complementandose por ejemplo con los videos en formato VHS. Peroa parte de las ventajas que esto supone para las distribuidoras y el negocio del cine,los DVDs se pueden reproducir en los ordenadores, por lo que pueden ser copiablesfácilmente. Con el fin de querer evitar esto, apareció el sistema CSS (ContentScrambling System) un sistema de cifrado y protección de los datos del DVD, paraque no fuese posible la distribución y copia de los conteidos de éste.

CSS (Content Scrambling System)2.

Para poder explicar el sistema CSS debemos pararnos a ver cuales son loselementos que intervienen en el sistema de reproducción de los DVDs.

Por un lado tenemos el propio DVD, donde los datos están cifrados y con ellos, elsistema de descifrado de dichos datos para que sea posible la reproducción delvideo.

Dicho sistema, solo puede ser leído por los reproductores que pasen un proceso de

http://www.splitcc.net/Documents/decss.html

2 de 12 10/11/09 17:41

Page 3: DeCSS

autentificación. Las licencias para la reproducción y la manipulación de los DVDs,son suministradas a las empresas que desarrollen este tipo de software/hardwarepor la llamada 'DVD Copy Control Association'.

Por otra parte disponemos de dicho reproductor, creado por una empresa con lalicencia (ya veremos más adelante que esto no es del todo cierto), que dispone deuna serie de claves para descifrar la clave de disco o Disk Key, un código de zonaque indica en qué zonas puede ser utilizado el reproductor y otra clave, es ta vezpara autentificarse con la máquina (clave de sesión).

Los estudios cinematográficos y productoras, quieren controlar los lanzamientoslocales en diferentes países ya que en el cine, los estrenos no son simultáneos; porejemplo, una película que todavía está proyectandose en el cine en Europa, podríasalir en vídeo en Estados Unidos). Incluso, los estudios venden los derechos dedistribución a diferentes distribuidores extranjeros y les gustaría garantizar unmercado exclusivo. Por lo tanto, las empresas del mundo del cine, han requeridoque el estándar DVD incluya códigos que se puedan usar para prevenir lareproducción de ciertos discos en ciertas zonas geográficas. Cada lector tiene uncódigo de la zona en la que es vendido. El lector se negará a leer discos que no sonpermitidos en esa región. Esto quiere decir que los discos comprados en un paíspodrían no leerse en lectores comprados en otro país.

Se han definido 8 regiones o también llamadas "zonas". Los lectores y los discosse identifican con el numero de la región sobreimpresionado en un plano delmundo. Si un disco se lee en más de una región tendrá mas de un numero en

el mapa.

Zona 1 - USA, Canada, territorios USA

Zona 2 - Japón, Europa, Sur África, Medio Este (incluyendo Egipto)

Zona 3 - Sureste de Asia y Este de Asia (incluye Hong Kong)

Zona 4 - Australia, Nueva Zelanda, Islas de Pacifico, América Central,

http://www.splitcc.net/Documents/decss.html

3 de 12 10/11/09 17:41

Page 4: DeCSS

Sudamérica,

Caribe

Zona 5 - Europa del Este (Unión Soviética), subcontinente Indio, África, Corea del

Norte, Mongolia

Zona 6 - China

Zona 7 - Reservado

Zona 8 - Especial para usos internacionales (aviones, cruceros, etc...)

Y por último la máquina donde se ejecute el reproductor, que deberá contener unaclave privada para poder autentificar el reproductor.

Las claves y códigos usandos para el cifrado de los datos del DVD, son lossiguientes:

Clave de región: esta clave es comparada con la clave de región delreproductor para poder averiguar si el DVD es legalmente reproducible endicha zona.

Clave de sesión: para el cifrado de las claves de título y disco.

Clave de reproductor: es la encargada de asegurar la legalidad delreproductor y es otorgada por la 'DVD Copy Control Association'. Se usapara descifrar la clave de disco.

Clave de disco: utlizada para cifrar la clave de título. Es almacenada enun sector oculto del DVD a lo largo de una tabla que contiene la clavecifrada con una de las 409 posibles claves del reproductor. Así mismo,esta clave se guarda cifrada consigo misma.

Clave de sector: cada sector del disco, tiene una cabecera de 128 bytes.

http://www.splitcc.net/Documents/decss.html

4 de 12 10/11/09 17:41

Page 5: DeCSS

Dicha clave se encuentra en los bytes del 80 al 84 y permite volver acifrar los datos del sector de forma independiente del resto del disco ysectores.

Clave de título: utilizada para cifrar mediante la operación XOR todo eldisco, sector a sector.

El proceso de lectura del contenido de un DVD para su reproducción, consta de 6fases principales que se describen a continuación:

Autentificación mútua: el ordenador donde se haintroducido el DVD y el reproductor usan un sistema depregunta-respuesta con el fin de poder establecer laconfiabilidad de la transmisión, estableciendo entre ellosdos una clave de sesión.

1.

Decodificación de los datos del disco: a continuación, elreproductor prueba la serie de claves que dispone paraintentar descifrar la Clave de Disco. Esto se realizadescifrando la entrada apropiada en la tabla de claves deldvd y después lo verifica descifrando la clave de disco.

2.

Transmisión de claves: el reproductor manda las claves dedisco y título al ordenador cifrados con la clave de sesiónpara evitar posibles recogidas de información de programasexternos.

3.

El DVD manda el sector al ordenador.4.

El ordenador descifra la Clave de Título usando la Clave deDisco

5.

Y por último, se descifra el sector usando la Clave deTítulo y la de Sector que aparecerá en la cabecera de éste,como hemos indicado antes.

6.

http://www.splitcc.net/Documents/decss.html

5 de 12 10/11/09 17:41

Page 6: DeCSS

Vamos a continuación a explicar más detalladamente cómo está implementando elalgoritmo CSS. Técnicamente hablando, hace uso de dos LFSRs.

La técnica LFSRs (Linear FeedBack Shift Registers) es una de las más popularespara generar flujos pseudo-aleatorios de bits. Mediante LFSRs, no podemosgenerar verdaderas secuencias aleatorias, por lo que es importante la configuraciónya que de ello depende en gran medida el período de generación cíclica (tiempoque se tardará en repetir la secuencia generada).

Para intentar ganar un grado más de complejidad, se suele combinar esta técnicacon sumadores, multiplexores o puertas Lógicas y con ello producir flujos de bitsmenos predecibles.

Podemos decir por lo tanto, que un LFSR es un registro de un número determinadode bits al que se da un cierto valor inicial denominado semilla (este paso tambiénes conocido con el nombre de "configuración del LFSR"). A partir de entonces, porcada ciclo de reloj, una serie de bits determinados del registro se utilizan paraevaluar una función de retroalimentación que devuelverá un bit. Este bit escolocado en el la posición más significativa del registro y el resto de bits sondesplazados hacia la derecha. El bit que sobra por la izquierda es lo que sedenomina "salida del registro".

Como hemos dicho entonces, CSS hace uso de dos LFSRs. El primero es de 17bits e inicialmente contiene una semilla de 2 bytes con un "1" insertado en el bit14. Este bit es insertado para prevenir un posible "null cycling" (fenómeno degenerar continuamente secuencias de 0s). El segundo LFSR opera de la mismaforma excepto que esta formado por 25 bits.

Otro aspecto común es la función de retroalimentación, esta es la operación XORde los bits de entrada. En el LFSR de 17 bits se utilizan los bits 1 y 15 y en elLFSR de 25 se utilizan los bits 1,4,5 y 15.

A diferencia de los métodos típicos de cifrado en flujo basados en LFSRs, CSStoma como valor de "salida" del LFSR, el valor devuelto por la función de

http://www.splitcc.net/Documents/decss.html

6 de 12 10/11/09 17:41

Page 7: DeCSS

retroalimentación (que también se usa para la entrada para el registro, como hemosvisto antes).

CSS usa claves de 40 bits (5 bytes) de ahí la longitud de los LFSR: uno esconfigurado inicialmente con los 2 primeros bytes de la clave y el otro con los 3bytes restantes.

La salida de los 2 LFSRs comentados, es combinada usando una suma de 8 bits.Después de que cada LFSR recopile 8 bits de salida, se efectúa la operación sumacon la recopilación de salidas del otro LFSR; el acarreo de esta suma es utilizadoposteriormente para las próximas sumas.

Llegado a este punto, nos encontramos que CSS tiene cuatro modos diferentes.Dependiendo del modo, la salida de uno o de ambos LFSRs se invierte antes de laoperación de suma. Las inversiones se dan en el LFSR-17 para la Autentificación ypara Datos y en el LFSR-25 para la Clave de título.

Para cifrar y descifrar los datos, se genera un flujo de bits mediante la técnica quehemos descrito anteriormente y se utiliza la operación XOR con cada uno de losbits del flujo MPEG-2 original, es decir, el vídeo del DVD. Como semilla de losLFSRs se utiliza una combinación de la clave de título y la clave de sector. Cadavez que se lee un sector del DVD, se toma la cabecera y con ella la clave de sectory se utiliza, una vez más, la operación XOR con la clave de título. El resultado deesta operación es el que se toma para inicializar los LFSRs.

A partir de este punto, se van generando los bytes (correspondientes a la salidasacumuladas y sumadas de los LFSRs) y se toman para ir cifrando o descifrando elflujo MPEG2 de video. Es utilizado además un sistema de dispersión medianteuna "S-box" (basada en tablas) en los bytes del flujo MPEG2 antes de utilizar laXOR.

Antes de que el reproductor (o dispositivo) de DVD empiece a enviar datos através del bus del sistema hacia el propio PC, se efectúa un proceso deautentificación mutua entre ellos. En este proceso, el reproductor negocia la claveque se usará en el cifrado de datos que se transmitirán por el bus. Este cifrado esnecesario porque porque de otra forma sería posible obtener un volcado de losdatos en texto claro simplemente leyendo el bus con algún software especial.Como decíamos en anteriores ocasiones, esta clave negociada es llamada clave de

http://www.splitcc.net/Documents/decss.html

7 de 12 10/11/09 17:41

Page 8: DeCSS

Sesión o también llamada clave de bus.

La negociación comienza cuando el PC o dispositivo, pide el AGID(Autentication Grant ID) del dispositivo. Este ID puede ser un ID de Sesión o unID de Thread lo importante es que dará un nombre a la negociación.

El siguiente punto importante es que el host o PC genera una flujo arbitrario debytes denominado "Nonce" o "Challenge" y se lo manda al dispositivo. Eldispositivo encripta este flujo de bytes y se lo manda de vuelta al host. Actoseguido, el host descifra el flujo de bytes y se asegura que es correcto. De estaforma el host consigue saber si el dispostivo es auténtico puesto que sabe elalgoritmo y el "secreto" para cicfrar el "Nonce".

El reproductor, por su parte, realiza el mismo proceso que hemos descritogenerando un "Nonce" y mandándolo al PC para que este lo cifre. Una vezterminado este proceso, ambas partes están seguras de la veracidad del otroparticipante. A lo que llamamos "secreto" es una serie de información almacenadaen el firmware de cada reproductor o dispositivo de DVD. Finalmente, la clave desesión se forma combinando los dos "Nonces" generados.

1.3. DeCSS

Hace poco ha salido en diversos medios informativos que el chico noruego JonJohansen, de 15 años de edad, era absuelto del juicio que le imputaba laresponsabilidad del desarrollo y de la publicación del software DeCSS. Lo quehacía este programa, es descifrar los códigos de cifrado del DVD pudiendo así leery reproducir el contenido de éste.

El trabajo fue realizado por varias personas trabajando en paralelo, como DerekFawcus que descubrió y analizó todo el tema de autentificación, Frank Stevenson,grupos como MoRE("Masters of Reverse Engineering") o DoD ("Drink or Die")que escribieron el software y un cracker alemán que fue quien realmente realizó elcrack propiamente dicho, aunque fue Jon Johansen quien se llevó todo el méritofinal y la "fama". Pero realmente, lo único que hizo fue copiar y hacer unasmodificaciones violando la licencia GPL por la cual se distribuía todo el trabajohecho hasta entonces, ya que posteriormente se negaba a distribuir el código fuente

http://www.splitcc.net/Documents/decss.html

8 de 12 10/11/09 17:41

Page 9: DeCSS

de su aplicación (para windows, y no para sistemas Linux como también se hadicho). Derek Fawcus, en un descuido de Johansen pudo hacerse con su códigofuente, el cuál lo comparó con el suyo y mandó este mail a la lista dedesarrolladores de DeCSS:

From: Derek Fawcus <[email protected]> Subject: Re: [Livid-dev] DeCSS 1.1b has been released Date: Wed, 6 Oct 1999 19:49:25 +0100

I've just read through the source to DeCSS,  compare CSSauth.cpp to css-auth.c in my authentication package.

The authors have taken it almost verbatim - all they did was remove my copyright header,  one block comment, and rename the functions. I don't mind them using the code - it's out there, but they could have left my name on it.

Interesting this - I only released that file under GPL!

El código que rompía el criptograma de CSS, fue publicado de forma anónima el25 de Octubre de 1999 en la lista de correo de Livid("Linux Video and DVDProject") , donde se reunían todos los interesados por el tema y desarrolladores dereproductores de DVD en sistemas GNU/Linux. También, Frank Stevenson yahabía publicado un programa escrito en C que realizaba un pequeño ataque alsistema de cifrado.

Todos estos programas, aprovechan las vulnerabilidades o flaquezas de CSS. Porejemplo, cada disco DVD está cifrado mediante una clave única de 40 bits (portemas de leyes norteamericanas que no permiten exportar software cifrado con unaclave superior a dicha cantidad de bits). Ello supone un grave riesgo en sí mismo,ya que 40 bits es un valor lo bastante pequeño como para que sea factible un ataquepor fuerza bruta. Pero, por si ello no fuera suficiente, el algoritmo de cifrado (quefue diseñado de forma privada) tiene graves defectos criptográficos que hacen quela clave efectiva sea de apenas 25 bits, prácticamente atacable por cualquierprogramador con un par de horas libres.

El primer problema, pues, es doble: por un lado, el limitar la clave de cifrado a 40bits y, por otro, el haber diseñado un algoritmo privado cuya seguridad, como se ha

http://www.splitcc.net/Documents/decss.html

9 de 12 10/11/09 17:41

Page 10: DeCSS

comprobado, deja mucho que desear (clave efectiva de 25 bits).

Pero los problemas no acaban ahí. Como ya se ha dicho, cada DVD se cifra conuna clave aleatoria de 40 bits. Esa clave de sesión se cifra con la clave de aperturade cada fabricante de hardware o software reproductor. En la práctica eso implicaque la clave de sesión aparece grabada en el DVD unas 400 veces, una vez por cadafabricante reconocido. Cuando un reproductor (ya sea hardware o software) va aleer un disco DVD, lee la clave de sesión cifrada con su clave de apertura, ladescifra (usando su clave de apertura) y luego la utiliza para reproducir la película.

Obviamente si fuese posible obtener la clave de apertura de algún reproductor"legal" de DVD, podría leerse cualquier película, sin necesidad de atacar por"fuerza bruta" su clave de sesión (aunque ya hemos explicado que esto es bastantesencillo y rápido también). Los reproductores hardware son un objetivocomplicado pero para el sistema operativo Microsoft Windows existen un buennúmero de reproductores DVD por software. Son programas. Y, como tales,pueden ser estudiados y analizados hasta en sus más íntimos detalles.

Por seguridad, la mayoría de los reproductores software protegen su clave deapertura mediante operaciones complejas, pero se ha visto que existe al menos unoque apenas protege su clave de apertura. Por ejemplo, el reproductor XingDVD.Por ingeniería inversa, se obtuvo la clave de este programa.

Una vez obtenida su clave de apertura, se tiene acceso a cualquier DVD. Es más,con esa clave de apertura es posible obtener el resto de claves de apertura medianteun ataque por "fuerza bruta" de bajo coste: sencillamente se toma un DVDcualquiera y se obtiene su clave de sesión mediante la clave de apertura delXingDVD. Seguidamente se toman el resto de claves cifradas y se intentandescifrar mediante claves aleatorias hasta obtener de nuevo la clave de sesión.

Utilizando esta técnica, los autores del DeCSS han encontrado unas 170 claves, delas 400 que existen en un DVD actual, en apenas unas pocas horas de cálculo.

A partir de estas técnicas fue por las que se sacó el algoritmo de descifrado de CSS,que nos permite ver DVDs en el ordenador sin tener que depender de compañías oempresas, que quieran o no desarrollar el reproductor para el sistema operativo queestemos usando.

http://www.splitcc.net/Documents/decss.html

10 de 12 10/11/09 17:41

Page 11: DeCSS

Ultimamente, han aparecido variaciones del DeCSS original, como un par deprogramas escritos en Perl o en C que en tan solo 7 líneas, rompen con todo elsistema de cifrado de DVD. Uno de ellos, es el creado por Charles H. Hannum quemostramos a continuación:

/*     efdtt.c     Author:  Charles M. Hannum <[email protected]>             */

/*                                                                         */

/*     Thanks to Phil Carmody <[email protected]> for additional tweaks.    */

/*                                                                         */

/*     Length:  434 bytes (excluding unnecessary newlines)                 */

/*                                                                         */

/*     Usage is:  cat title-key scrambled.vob | efdtt >clear.vob           */

#define m(i)(x[i]^s[i+84])<<

unsigned char x[5],y,s[2048];main(n){for(read(0,x,5);read(0,s,n=2048);write(1,s

,n))if(s[y=s[13]%8+20]/16%4==1){int i=m(1)17^256+m(0)8,k=m(2)0,j=m(4)17^m(3)9^k

*2-k%8^8,a=0,c=26;for(s[y]-=16;--c;j*=2)a=a*2^i&1,i=i/2^j&1<<24;for(j=127;++j<n

;c=c>y)c+=y=i^i/8^i>>4^i>>12,i=i>>8^y<<17,a^=a>>14,y=a^a*8^a<<6,a=a>>8^y<<9,k=s

[j],k="7Wo~'G_\216"[k&7]+2^"cr3sfw6v;*k+>/n."[k>>4]*2^k*257/8,s[j]=k^(k&k*2&34)

*6^c+~y;}}

Conclusión4.

Ya se ha conseguido lo que se quería, poder ver DVDs en cualquier ordenador ycon cualquier sistema operativo, con independecia de que algún organismo"oficial" quiera o no desarrollarlo, ya que de esta forma siempre habría sistemassin poder reproducir DVDs.

Una vez más se ha vuelto a reafirmar el dicho de "hecha la ley, hecha la trampa",ya que a pesar de la prohibición que existe sobre el código fuente del algoritomoDeCSS, se idearon muchas formas de hacerlo público, como técnicas deesteganografía, grabar la lectura por alguien del código y distribuirlo en mp3...

Por desgracia, todo esto también aumenta el pirateo de películas debido a lafacilidad con la que se puede "rippear" un DVD y dejarlo copiado en el disco durodescifrado en apenas unas horas.

http://www.splitcc.net/Documents/decss.html

11 de 12 10/11/09 17:41

Page 12: DeCSS

La MPAA (Motion Picture Association of America) lo va a tener ciertamentedifícil para paliar todo esto ya que ya son millones los reproductores y DVDsdistribuidos y vendidos, por lo que costaría mucho más una vuelta atrás en laespecificación técnica y actualización de todos los equipos que dejar que se sigancopiando DVDs ilegalmente. Solo el tiempo nos dará la soluciones.

Links:5.

HYPERLINK "http://www.lemuria.org/DeCSS/decss.html"HYPERLINK "http://www.lemuria.org/DeCSS/decss.html"

http://www.lemuria.org/DeCSS/decss.html

http://www.gnu.org/directory/security/crypt/libdvdcss.html

http://www.linuxvideo.org/

http://www-2.cs.cmu.edu/~dst/DeCSS/Gallery/

Alvaro Marin, 2004. Algunos derechos reservados.http://creativecommons.org/licenses/by-nc-sa/2.0/

http://www.splitcc.net/Documents/decss.html

12 de 12 10/11/09 17:41