domingo, 29 de enero de 2012

Microsoft, ¿No quedamos en dejar de utilizar MD5? (y II)

Describíamos en la entrega anterior un ataque de elevación de "serie" en Windows cuyo mayor obstáculo era perpetrar un ataque ataque "second-preimage" contra MD5. Veamos por qué eso no es tan complicado.

Esquema de una operación MD5.
Fuente: Wikipedia
La función de hash criptográfico MD5 (Message-Digest algorithm 5) lleva años mostrando signos de debilidad, inadecuado para los tiempos que corren. Si bien se ha llevado varios varapalos desde su creación, hace tiempo recibió lo que se pudo considerar su golpe de gracia: se podían crear arbitrariamente dos flujos de datos que resulten en el mismo hash o firma.

Desde su diseño en 1991 por Ron Rivest (uno de los implementadores de la criptografía pública), MD5 ha sido tomado prácticamente como estándar de facto para control de hash para firma de ficheros. Por diseño, convierte cualquier flujo de datos de cualquier tamaño en una serie de 128 bits diferente. Esto permite crear una "firma" corta que identifique a un archivo o flujo de datos. En la teoría, reduce un conjunto infinito a otro finito de 2 elevado a 128, con lo que las colisiones serían siempre posibles, pero en la práctica esta cantidad ha sido suficiente.

Desde 1996 ya se vienen recomendado otros algoritmos que han demostrado mejores capacidades (como el SHA en sus distintas variantes) pero su implantación es tan fuerte que, como muchos otros estándares en informática, descartarlo es un proceso lento y a veces incluso "doloroso".

El enemigo natural de estos algoritmos son las colisiones. Es decir, que varios ficheros tengan una misma firma identificadora. Esto sería como si dos personas tuvieran el mismo número de DNI o tarjeta de la seguridad social: podrían hacerse pasar uno por el otro. La firma MD5 también es usada en algunos casos para realizar hashes que a posteriori son firmados con claves privadas, por lo que su debilidad también salpicaría a la criptografía pública. En 2004 se consiguió crear dos certificados  X.509 distintos con igual hash MD5.

Además de las colisiones, MD5 tiene otros problemas. Para una firma o hash criptográfico, por definición, debe ser matemáticamente muy complicado realizar el proceso contrario: calcular los datos que produjeron el hash. Así, por esta razón, muchos programas almacenan el hash MD5 de las contraseñas de usuarios en las bases de datos. Hace algunos años se popularizaron las tablas rainbow con información preprocesada sobre hashes MD5. Esto, en teoría, permite a alguien que tenga acceso a esos hashes, realizar el proceso inverso en tiempo razonable, o sea: pasar del hash MD5 a la palabra que lo generó. Se ha popularizado como método eficaz de "crackeo" para contraseñas de este tipo, con lo que el almacenamiento de credenciales en este formato también se considera ya inseguro.

En verano de 2005 se dio un caso realmente curioso. Un australiano consiguió anular una multa de tráfico ante la imposibilidad de las autoridades de tráfico de demostrar fehacientemente que la imagen registrada por un radar no había sido alterada. El sujeto circulaba por una carretera que estaba siendo controlada con un radar. Cuando fue cazado y su coche "fotografiado", el abogado que representaba al amonestado recurrió la denuncia, argumentando que no se había probado que la imagen obtenida por la cámara asociada al radar no hubiese sido modificada de ninguna forma. Las autoridades australianas de tráfico respondieron que se utilizaba el algoritmo MD5 para obtener el hash de las imágenes obtenidas. No encontraron a ningún perito que demostrase ante el tribunal la validez de dicho algoritmo, y por tanto se libró de la multa.

Marc Stevens, Arjen Lenstra, y Benne de Weger le dieron el tiro de gracia en 2008. Diseñaron un método por el que, añadiendo un puñado de bytes a un archivo, pueden hacer que su firma, su hash MD5, sea idéntico a otro fichero arbitrario. La diferencia en este caso es que las colisiones pueden ser elegidas, provocadas sobre dos ficheros cualesquiera. Lo consiguieron con una sola máquina en menos de dos días. Un tiempo más que razonable. Ese mismo año, investigadores consiguen hacer que cualquier certificado SSL parezca válido, usando la firma MD5. Usaron la potencia de 200 consolas PlayStation3 para conseguir su objetivo.

Todas estas son pequeñas razones por las que nadie debería usar MD5 para asuntos medianamente serios. Y menos Microsoft.

Más información:

17/08/2005 Utilizar MD5 para recurrir las multas de tráfico

High-Speed Collisions

Investigadores consiguen hacer que cualquier certificado SSL parezca válido


Sergio de los Santos
Twitter: @ssantosv

No hay comentarios:

Publicar un comentario en la entrada