martes, 11 de enero de 2011

Las claves (desveladas) de la PlayStation 3

Uno de los puntos de fricción más activos en la eterna guerra de usuarios contra fabricantes compete las videoconsolas.  Los grandes fabricantes desean que los usuarios se limiten a comprar el aparato, comprar los juegos y callarse.  Sin embargo, una Wii, una Xbox360 o una PS3 tienen tanta potencia de cómputo como un ordenador.  Y hay por ahí mucha gente con conocimientos técnicos, que piensan que usar una consola solamente para jugar es un desperdicio.  Puede sonar raro a algunos que alguien quiera instalar Linux en una PS3, ya que no están diseñadas para eso.  Pero si puede hacerse, ¿por qué no hacerlo?

Hasta la fecha, la PlayStation3 era la videoconsola más resistente a "usos no autorizados".  Sony la ha protegido criptográficamente hasta el límite, de forma que lo único que puedes hacer con ella es jugar y punto pelota.  Pero incluso ella ha sucumbido al "chipeado."  Esto es, se le pueden introducir chips modificados para poder realizar operaciones prohibidas, como por ejemplo jugar con juegos piratas o instalar Linux en ellas.  El problema para los fabricantes es que, al menos en España, eso no es legal.  La ley prohibe la fabricación, venta o uso de medios técnicos diseñados específicamente para neutralizar protecciones informáticas, pero la clave está en la palabra "específicamente".  Los jueces han dictaminado que usar un dispositivo que tenga también otros fines legítimos son legales.  Es decir, digamos que yo tengo un chip que me permite hacer copias de seguridad de mis partidas.  Si además sirve para reproducir juegos piratas, es otra cuestión.

Recomiendo a los interesados en el aspecto legal la excelente web del bufete Almeida, que de esto sabe la tira.  Lean las últimas sentencias sobre el asunto.  En el fondo, se trata del viejo asunto de quién controla la consola: ¿el fabricante o el usuario?  El primero la vende para ganar pasta, y pretende que el segundo la use de forma limitada y controlada; pero el usuario no es tonto, y piensa que si la consola es suya, debería poder hacer con ella lo que quiera.

Y no es solamente una tontería de cuatro frikis con demasiado tiempo libre.  Una Playstation3 es un ordenador por derecho propio, y si los usuarios pudiesen usarlo como ordenador. el propio mercado informático podría cambiar sustancialmente.  Hasta tal punto es eficiente, que se han llegado a unir diversas PS3 en un "cluster" para realizar tareas de supercomputación.  Vean, por ejemplo, cómo se pueden combinar ocho PS3 para formar un superordenador. Un proyecto de la Universidad de Stanford reclutaba voluntarios para que donasen su tiempo no usado de PS3 con fines de computación científica, como el antiguo Seti@home.  Las posibilidades solamente estaban limitadas por la imaginación...

... y por Sony.  En este punto, y antes de continuar, es interesante resaltar que la PlayStation 3 tuvo en un principio la capacidad de ejecutar Linux y otros sistemas operativos desde su disco duro.  De hecho, Sony se ha aprovechado de esta capacidad y la ha usado como argumento de ventas desde 2000, cuando la PS2 era su videoconsola estrella.  Por algún motivo, Sony acabó hartándose, y en la revisión 3.21 del firmware (1 de abril de 2010) eliminó dicha posibilidad.  Se acabó usar la PS3 para supercomputar, ejecutar Linux o cualquier otra cosa que no fuese jugar y callar.

Este fue un punto de no retorno, puesto que impulsó a muchos hackers a lanzarse sobre la PS3 para volver a convertir esta máquina en un aparato interactivo más allá de lo que sus fabricantes impusieron.  Que no se queje Sony ahora, porque en los próximos meses recogerán las tempestades que han sembrado en 2010.

La ventaja para Sony y otras empresas, dentro de lo malo, es que la modificación de consolas requiere algún tipo de chip, ya sea en USB o insertado en la consola.  Es lo que se denomina Jailbreaking.  Es algo que no puedes hacer en tu casa, así que tienes que ir a una tienda, pagar la modificación ... y esperar que funcione, cosa que no siempre está asegurada.

Ahora bien, en una reciente reunión de hackers (de los de verdad) en Alemania, varios de ellos han mostrado las claves criptográficas de la PlayStation3. Ello permite ejecutar cualquier tipo de software, incluidos juegos piratas, caseros, todo.

Para entenderlo, hemos de entender cómo funciona el mecanismo interno de la PS3.  Seguro que es un jaleo tremendo, pero vamos a ir al cogollo.  La consola no ejecuta cualquier cosa, así que debe tener un procedimiento para poder discriminar las aplicaciones autorizadas. Las webs gubernamentales lo llaman pomposamente "certificados," pero en general se conoce con el término de firma digital. Una firma digital es una operación que involucra un archivo y una clave privada.  El procedimiento consiste en tomar el archivo, convertirlo en un "destilado" muy pequeño (gracias a las denominadas funciones hash), cifrar dicho destilado con una clave privada, y listo.  He aquí, por ejemplo, el resultado de firmar el primer párrafo de este post con mi clave privada:

-----BEGIN PGP SIGNATURE-----
Version: PGPfreeware 6.5.8 for non-commercial use <http://www.pgp.com>

iQA/AwUBTSWLog7Y43Xkw2u9EQI/HACgoekeVXhZ5KKlWkzdp6Q8Rmjn3rQAoKzW m+e7oh1JPdH4hJ4yS6rYwPNX=BAjH
-----END PGP SIGNATURE-----

Otros usuarios podrán verificar mi firma, es decir, comprobar que la he firmado yo y que el archivo que he firmado no ha sido alterado. Eso es lo que hace la PlayStation3.  En algún lugar de Sony Corporation hay una cámara acorazada con una clave criptográfica guardada.  Cuando hay que "firmar" un juego, usan dicha clave y luego le dan el resultado al programador del juego para que la incluya en el disco. Al insertar el disco en la consola, ésta verifica la firma digital.  Si no coincide con lo que tiene que dar, una de dos: o se ha firmado con otra clave distinta no autorizada, o bien el juego ha sido modificado.  En cualquiera de los dos casos, rechaza ejecutar el juego.  De ese modo, la firma digital permite a la consola determinar qué programas de pueden ejecutar en ella.  Imagínense lo que podría hacer Ethan Hunt con dicha clave.  El desafío de robarla sería una auténtica Misión Imposible, pero los resultados serían espectaculares.

El problema consiste en el tipo de firma digital escogida por Sony.  En lugar de usar criptografía de clave pública (más adecuada en algunos aspectos, pero que consumen más memoria y tiempo de computación), la PS3 incorpora un sistema de firma denominado ECDSA (Elliptic Curve Digital Signature Algorithm).  Esta firma tiene como elementos secretos una clave k y un número aleatorio m.  A partir de ahí se obtienen dos elementos R,S que forman la firma digital.  No voy a detallarles los entresijos del sistema de curvas elípticas porque, sinceramente, apenas los entiendo yo mismo.  Pero voy a decirles un detalle importante: cada firma digital precisa de un número aleatorio m.

Y aquí comienza el hackeo.  Debido a las características del algoritmo ECDSA, cada firma digital necesita usar un número m distinto; si dos firmas tienen el mismo valor de m, el parámetro secreto k puede ser recuperado.  !Pero la PS3 usa el mismo valor de m siempre!  Los hackers alemanes aprovecharon esa vulnerabilidad (que no es un fallo criptográfico, sino de implementación) y sus conocimientos técnicos sobre la consola (que Sony, en un habitual ejercicio de arrogancia, pensaba que nadie más sabría) para obtener la clave k.  Pueden ustedes ver la conferencia aquí (en inglés).  Me gustó especialmente el momento en la que el hacker dice: por alguna razón, Sony usa el mismo número todo el tiempo (parte 3, minuto 7:09).  !El auditorio estalló en risas y aplausos!  Era el momento en el que los asistentes proclamaban el descubrimiento como un epic fail, que es la forma técnica de decir "la gran cagada."

¿Y qué se puede hacer con la clave k?  Pues firmar cosas.  Y con ello se desmonta toda la seguridad de la Playstation 3.  Todas las capas de algoritmos, protocolos y cifrados que Sony ha instalado en la PS3 se vienen abajo, igual que un castillo de cartas.  Epic fail.

El problema es de solución muy difícil.  Aunque puede fabricarse una nueva clave k, en la práctica eso significaría un problema aún mayor.  Sony tendría que distribuir su clave nueva a todas las PS3 del mundo.  ¿Cómo harían eso?  La única forma práctica sería mediante una actualización del firmware, y a bote pronto se me ocurren cuatro motivos por los que no sería una buena idea:
  • La nueva clave sería muy vulnerable, ya que se debería transportar hasta la consola.  Cualquiera podría captar la actualización de firmware y obtener la clave. 
  • La nueva clave tendría que ser almacenada de forma segura en algún lugar de la PS3.  ¿Cómo hacerlo, y al mismo tiempo evitar que alguien la encuentre?
  • Las actualizaciones son voluntarias.  Si un usuario no puede o no quiere actualizar su firmware ¿cómo le van a obligar?
  • En el caso de que la actualización se llevase a caso correctamente, los juegos antiguos (que están firmados con la clave antigua) dejarían de funcionar.
La alternativa sería efectuar un "recall" a escala mundial y hacer que todos los usuarios llevasen sus antiguos juegos y PS3 a un centro autorizado por Sony para cambiar las claves y/o cambiar el juego antiguo por uno nuevo (que llevase la nueva clave).  Cualquiera que sea la opción escogida por Sony, se trataría de un problema de re-distribución de clave sin precedentes en la historia.  Los costes serían astronómicos, por no hablar de la pérdida de credibilidad y de cuota de mercado.  En los próximos meses, veremos cómo Sony intenta salir de esta.  Pero creo que, hagan lo que hagan, van a llevar el Epic Fail tatuado en la frente.

Es el tipo de cosas que pasan en nuestro interconectado siglo XXI cuando alguien olvida la regla de oro del buen vendedor: EL CLIENTE SIEMPRE TIENE RAZÓN.

PD: He aquí la clave k, escrita en lenguaje hexadecimal, (web original)

BA 90 55 91 68 61 B9 77 ED CB ED 92 00 50 92 F6 6C 7A 3D 8D

Actualización:  A los pocos minutos de escribir este post, me encuentro con un artículo en el que un portavoz de Sony reconoce el hackeo y afirman que "arreglaremos el asunto mediante actualizaciones de red, pero puesto que es un asunto de seguridad, no vamos a proporcionarle [al periodista] más detalles".

2 comentarios:

  1. No se si estoy entendiendo bien el texto, pero Linux, la distro Yellow Dog se podía instalar en la PS3 en casa tranquilamente. Vamos un amigo mío sin altos conocimientos de informática lo instaló, si necesidad de ningún chip y ninguna modificación de hardware, como mucho había que particionar para el SO de la PS· y para tu linux.

    El tema de piratearla ya estaba mas chungo en ese momento, pero yo recuerdo que casi desde el primer día se podía instalar Linux.

    un saludo.

    ResponderEliminar
  2. Me callo como una bellaca, estoy en el trabajo, leyendo en horizontal y me he saltado este amplísimo párrafo XD

    "y por Sony. En este punto, y antes de continuar, es interesante resaltar que la PlayStation 3 tuvo en un principio la capacidad de ejecutar Linux y otros sistemas operativos desde su disco duro. De hecho, Sony se ha aprovechado de esta capacidad y la ha usado como argumento de ventas desde 2000, cuando la PS2 era su videoconsola estrella. Por algún motivo, Sony acabó hartándose, y en la revisión 3.21 del firmware (1 de abril de 2010) eliminó dicha posibilidad. Se acabó usar la PS3 para supercomputar, ejecutar Linux o cualquier otra cosa que no fuese jugar y callar."

    Un saludo.

    ResponderEliminar