Avances tecnológicos del siglo XXI y ejemplos de estos
DeCSS
1. http://www.splitcc.net/Documents/decss.html
CSS y DeCSS
split@splitcc.net
1.Introducción
Las posibilidades multimedia que han surgido en los últimos años eran
impensables hace tan solo unos años. Los formatos de compresión tanto de video
1 de 12 10/11/09 17:41
2. http://www.splitcc.net/Documents/decss.html
como de audio, permiten ver y escuchar vídeos de muy buena calidad y ocupando
un 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 tanto
permitiendo muchisimas posibilidades que otros formatos no pueden ofrecer.
La "tecnología DVD" propiamente dicha, no es dueña de ninguna compañía. La
especificación oficial fue desarrollado por un consorcio de 10 compañías: Hitachi,
JVC, Matsushita, Mitsubishi, Philips, Pioneer, Sony,Thomson, Time Warner, y
Toshiba.
Se ve últimamente cómo todos estos nuevos formatos se están introducioendo en
el mercado, complementandose por ejemplo con los videos en formato VHS. Pero
a 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 copiables
fácilmente. Con el fin de querer evitar esto, apareció el sistema CSS (Content
Scrambling System) un sistema de cifrado y protección de los datos del DVD, para
que no fuese posible la distribución y copia de los conteidos de éste.
2. CSS (Content Scrambling System)
Para poder explicar el sistema CSS debemos pararnos a ver cuales son los
elementos 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, el
sistema de descifrado de dichos datos para que sea posible la reproducción del
video.
Dicho sistema, solo puede ser leído por los reproductores que pasen un proceso de
2 de 12 10/11/09 17:41
3. http://www.splitcc.net/Documents/decss.html
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/hardware
por la llamada 'DVD Copy Control Association'.
Por otra parte disponemos de dicho reproductor, creado por una empresa con la
licencia (ya veremos más adelante que esto no es del todo cierto), que dispone de
una serie de claves para descifrar la clave de disco o Disk Key, un código de zona
que indica en qué zonas puede ser utilizado el reproductor y otra clave, es ta vez
para autentificarse con la máquina (clave de sesión).
Los estudios cinematográficos y productoras, quieren controlar los lanzamientos
locales en diferentes países ya que en el cine, los estrenos no son simultáneos; por
ejemplo, una película que todavía está proyectandose en el cine en Europa, podría
salir en vídeo en Estados Unidos). Incluso, los estudios venden los derechos de
distribución a diferentes distribuidores extranjeros y les gustaría garantizar un
mercado exclusivo. Por lo tanto, las empresas del mundo del cine, han requerido
que el estándar DVD incluya códigos que se puedan usar para prevenir la
reproducción de ciertos discos en ciertas zonas geográficas. Cada lector tiene un
código de la zona en la que es vendido. El lector se negará a leer discos que no son
permitidos en esa región. Esto quiere decir que los discos comprados en un país
podrían no leerse en lectores comprados en otro país.
Se han definido 8 regiones o también llamadas "zonas". Los lectores y los discos
se identifican con el numero de la región sobreimpresionado en un plano del
mundo. 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,
3 de 12 10/11/09 17:41
4. http://www.splitcc.net/Documents/decss.html
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 una
clave privada para poder autentificar el reproductor.
Las claves y códigos usandos para el cifrado de los datos del DVD, son los
siguientes:
Clave de región: esta clave es comparada con la clave de región del
reproductor para poder averiguar si el DVD es legalmente reproducible en
dicha 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 del
reproductor y es otorgada por la 'DVD Copy Control Association'. Se usa
para descifrar la clave de disco.
Clave de disco: utlizada para cifrar la clave de título. Es almacenada en
un sector oculto del DVD a lo largo de una tabla que contiene la clave
cifrada 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.
4 de 12 10/11/09 17:41
5. http://www.splitcc.net/Documents/decss.html
Dicha clave se encuentra en los bytes del 80 al 84 y permite volver a
cifrar los datos del sector de forma independiente del resto del disco y
sectores.
Clave de título: utilizada para cifrar mediante la operación XOR todo el
disco, sector a sector.
El proceso de lectura del contenido de un DVD para su reproducción, consta de 6
fases principales que se describen a continuación:
1. Autentificación mútua: el ordenador donde se ha
introducido el DVD y el reproductor usan un sistema de
pregunta-respuesta con el fin de poder establecer la
confiabilidad de la transmisión, estableciendo entre ellos
dos una clave de sesión.
2. Decodificación de los datos del disco: a continuación, el
reproductor prueba la serie de claves que dispone para
intentar descifrar la Clave de Disco. Esto se realiza
descifrando la entrada apropiada en la tabla de claves del
dvd y después lo verifica descifrando la clave de disco.
3. Transmisión de claves: el reproductor manda las claves de
disco y título al ordenador cifrados con la clave de sesión
para evitar posibles recogidas de información de programas
externos.
4. El DVD manda el sector al ordenador.
5. El ordenador descifra la Clave de Título usando la Clave de
Disco
6. Y por último, se descifra el sector usando la Clave de
Título y la de Sector que aparecerá en la cabecera de éste,
como hemos indicado antes.
5 de 12 10/11/09 17:41
6. http://www.splitcc.net/Documents/decss.html
Vamos a continuación a explicar más detalladamente cómo está implementando el
algoritmo CSS. Técnicamente hablando, hace uso de dos LFSRs.
La técnica LFSRs (Linear FeedBack Shift Registers) es una de las más populares
para generar flujos pseudo-aleatorios de bits. Mediante LFSRs, no podemos
generar verdaderas secuencias aleatorias, por lo que es importante la configuración
ya que de ello depende en gran medida el período de generación cíclica (tiempo
que se tardará en repetir la secuencia generada).
Para intentar ganar un grado más de complejidad, se suele combinar esta técnica
con sumadores, multiplexores o puertas Lógicas y con ello producir flujos de bits
menos predecibles.
Podemos decir por lo tanto, que un LFSR es un registro de un número determinado
de bits al que se da un cierto valor inicial denominado semilla (este paso también
es conocido con el nombre de "configuración del LFSR"). A partir de entonces, por
cada ciclo de reloj, una serie de bits determinados del registro se utilizan para
evaluar una función de retroalimentación que devuelverá un bit. Este bit es
colocado en el la posición más significativa del registro y el resto de bits son
desplazados hacia la derecha. El bit que sobra por la izquierda es lo que se
denomina "salida del registro".
Como hemos dicho entonces, CSS hace uso de dos LFSRs. El primero es de 17
bits e inicialmente contiene una semilla de 2 bytes con un "1" insertado en el bit
14. Este bit es insertado para prevenir un posible "null cycling" (fenómeno de
generar continuamente secuencias de 0s). El segundo LFSR opera de la misma
forma excepto que esta formado por 25 bits.
Otro aspecto común es la función de retroalimentación, esta es la operación XOR
de los bits de entrada. En el LFSR de 17 bits se utilizan los bits 1 y 15 y en el
LFSR 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, CSS
toma como valor de "salida" del LFSR, el valor devuelto por la función de
6 de 12 10/11/09 17:41
7. http://www.splitcc.net/Documents/decss.html
retroalimentación (que también se usa para la entrada para el registro, como hemos
visto antes).
CSS usa claves de 40 bits (5 bytes) de ahí la longitud de los LFSR: uno es
configurado inicialmente con los 2 primeros bytes de la clave y el otro con los 3
bytes 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 suma
con la recopilación de salidas del otro LFSR; el acarreo de esta suma es utilizado
posteriormente 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 la
operación de suma. Las inversiones se dan en el LFSR-17 para la Autentificación y
para 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 que
hemos descrito anteriormente y se utiliza la operación XOR con cada uno de los
bits del flujo MPEG-2 original, es decir, el vídeo del DVD. Como semilla de los
LFSRs se utiliza una combinación de la clave de título y la clave de sector. Cada
vez que se lee un sector del DVD, se toma la cabecera y con ella la clave de sector
y se utiliza, una vez más, la operación XOR con la clave de título. El resultado de
esta operación es el que se toma para inicializar los LFSRs.
A partir de este punto, se van generando los bytes (correspondientes a la salidas
acumuladas y sumadas de los LFSRs) y se toman para ir cifrando o descifrando el
flujo MPEG2 de video. Es utilizado además un sistema de dispersión mediante
una "S-box" (basada en tablas) en los bytes del flujo MPEG2 antes de utilizar la
XOR.
Antes de que el reproductor (o dispositivo) de DVD empiece a enviar datos a
través del bus del sistema hacia el propio PC, se efectúa un proceso de
autentificación mutua entre ellos. En este proceso, el reproductor negocia la clave
que se usará en el cifrado de datos que se transmitirán por el bus. Este cifrado es
necesario porque porque de otra forma sería posible obtener un volcado de los
datos 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
7 de 12 10/11/09 17:41
8. http://www.splitcc.net/Documents/decss.html
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 un
ID 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 de
bytes denominado "Nonce" o "Challenge" y se lo manda al dispositivo. El
dispositivo encripta este flujo de bytes y se lo manda de vuelta al host. Acto
seguido, el host descifra el flujo de bytes y se asegura que es correcto. De esta
forma el host consigue saber si el dispostivo es auténtico puesto que sabe el
algoritmo y el "secreto" para cicfrar el "Nonce".
El reproductor, por su parte, realiza el mismo proceso que hemos descrito
generando un "Nonce" y mandándolo al PC para que este lo cifre. Una vez
terminado este proceso, ambas partes están seguras de la veracidad del otro
participante. A lo que llamamos "secreto" es una serie de información almacenada
en el firmware de cada reproductor o dispositivo de DVD. Finalmente, la clave de
sesión se forma combinando los dos "Nonces" generados.
3. DeCSS
1.
Hace poco ha salido en diversos medios informativos que el chico noruego Jon
Johansen, de 15 años de edad, era absuelto del juicio que le imputaba la
responsabilidad del desarrollo y de la publicación del software DeCSS. Lo que
hacía este programa, es descifrar los códigos de cifrado del DVD pudiendo así leer
y reproducir el contenido de éste.
El trabajo fue realizado por varias personas trabajando en paralelo, como Derek
Fawcus 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ó el
crack propiamente dicho, aunque fue Jon Johansen quien se llevó todo el mérito
final y la "fama". Pero realmente, lo único que hizo fue copiar y hacer unas
modificaciones violando la licencia GPL por la cual se distribuía todo el trabajo
hecho hasta entonces, ya que posteriormente se negaba a distribuir el código fuente
8 de 12 10/11/09 17:41
9. http://www.splitcc.net/Documents/decss.html
de su aplicación (para windows, y no para sistemas Linux como también se ha
dicho). Derek Fawcus, en un descuido de Johansen pudo hacerse con su código
fuente, el cuál lo comparó con el suyo y mandó este mail a la lista de
desarrolladores de DeCSS:
From: Derek Fawcus <derek@spider.com>
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 el
25 de Octubre de 1999 en la lista de correo de Livid("Linux Video and DVD
Project") , donde se reunían todos los interesados por el tema y desarrolladores de
reproductores de DVD en sistemas GNU/Linux. También, Frank Stevenson ya
había publicado un programa escrito en C que realizaba un pequeño ataque al
sistema de cifrado.
Todos estos programas, aprovechan las vulnerabilidades o flaquezas de CSS. Por
ejemplo, cada disco DVD está cifrado mediante una clave única de 40 bits (por
temas de leyes norteamericanas que no permiten exportar software cifrado con una
clave 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 ataque
por fuerza bruta. Pero, por si ello no fuera suficiente, el algoritmo de cifrado (que
fue diseñado de forma privada) tiene graves defectos criptográficos que hacen que
la clave efectiva sea de apenas 25 bits, prácticamente atacable por cualquier
programador con un par de horas libres.
El primer problema, pues, es doble: por un lado, el limitar la clave de cifrado a 40
bits y, por otro, el haber diseñado un algoritmo privado cuya seguridad, como se ha
9 de 12 10/11/09 17:41
10. http://www.splitcc.net/Documents/decss.html
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 con
una clave aleatoria de 40 bits. Esa clave de sesión se cifra con la clave de apertura
de cada fabricante de hardware o software reproductor. En la práctica eso implica
que la clave de sesión aparece grabada en el DVD unas 400 veces, una vez por cada
fabricante reconocido. Cuando un reproductor (ya sea hardware o software) va a
leer un disco DVD, lee la clave de sesión cifrada con su clave de apertura, la
descifra (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 bastante
sencillo y rápido también). Los reproductores hardware son un objetivo
complicado pero para el sistema operativo Microsoft Windows existen un buen
nú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 de
apertura mediante operaciones complejas, pero se ha visto que existe al menos uno
que 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 mediante
un ataque por "fuerza bruta" de bajo coste: sencillamente se toma un DVD
cualquiera y se obtiene su clave de sesión mediante la clave de apertura del
XingDVD. Seguidamente se toman el resto de claves cifradas y se intentan
descifrar 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, de
las 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 o
empresas, que quieran o no desarrollar el reproductor para el sistema operativo que
estemos usando.
10 de 12 10/11/09 17:41
11. http://www.splitcc.net/Documents/decss.html
Ultimamente, han aparecido variaciones del DeCSS original, como un par de
programas escritos en Perl o en C que en tan solo 7 líneas, rompen con todo el
sistema de cifrado de DVD. Uno de ellos, es el creado por Charles H. Hannum que
mostramos a continuación:
/* efdtt.c Author: Charles M. Hannum <root@ihack.net> */
/* */
/* Thanks to Phil Carmody <fatphil@asdf.org> 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;}}
4. Conclusión
Ya se ha conseguido lo que se quería, poder ver DVDs en cualquier ordenador y
con cualquier sistema operativo, con independecia de que algún organismo
"oficial" quiera o no desarrollarlo, ya que de esta forma siempre habría sistemas
sin 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 algoritomo
DeCSS, se idearon muchas formas de hacerlo público, como técnicas de
esteganografí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 la
facilidad con la que se puede "rippear" un DVD y dejarlo copiado en el disco duro
descifrado en apenas unas horas.
11 de 12 10/11/09 17:41
12. http://www.splitcc.net/Documents/decss.html
La MPAA (Motion Picture Association of America) lo va a tener ciertamente
difícil para paliar todo esto ya que ya son millones los reproductores y DVDs
distribuidos y vendidos, por lo que costaría mucho más una vuelta atrás en la
especificación técnica y actualización de todos los equipos que dejar que se sigan
copiando DVDs ilegalmente. Solo el tiempo nos dará la soluciones.
5. Links:
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/
12 de 12 10/11/09 17:41