sábado, 25 de febrero de 2017

Demostración práctica de colisión en SHA-1

Un grupo de investigadores ha anunciado que han logrado desarrollar una técnica que hace práctico para elaborar dos archivos con la misma huella digital SHA-1. 

Por supuesto, como es habitual en los últimos años un descubrimiento de estas características necesitaba un nombre atractivo, una página web y un logo chulo: SHAttered http://shattered.io/

Hay que recordar que una función hash no cifra, sino que crea un resumen o "firma" de un conjunto de datos, que es pasado como parámetro a esta función. Así, nos es útil para verificar la integridad, por ejemplo, de un archivo. Tan solo tenemos que aplicar dicha función sobre el archivo recibido y verificar que el hash obtenido es el mismo que el anunciado por el emisor.

Un "hash" es una función criptográfica que produce una salida de longitud fija a partir de una entrada arbitrariamente larga. Un buen "hash" debe cumplir las siguientes propiedades:

a) El resultado final no debe dejar traslucir ninguna información sobre los datos originales.

b) Dado un resultado determinado, no hay otro sistema aparte de la fuerza bruta que genere datos de entrada capaces de producir dicho resultado.

c) Dados unos datos de entrada y su "hash", no debe haber un atajo (aparte de la fuerza bruta) para generar otros datos de entrada distintos y con el mismo "hash".

SHAttered

10 años después de la introducción del algoritmo SHA-1 como función hash, se ha anunciado la primera técnica práctica para generar una colisión. Esto es dado un "archivo A", generar otro "archivo B" que produzca el mismo hash que el del "archivo A".

Tras dos años de investigación y la colaboración del CWI Institute en Amsterdam y Google, este equipo de investigadores ha conseguido crear un método para generar colisiones. Como prueba del ataque, publican dos archivos PDF que tienen hash SHA-1 idénticos pero con contenido diferente (PDF 1 y PDF 2).

En la actualidad, muchas aplicaciones todavía dependen de SHA-1, a pesar de que fue oficialmente desaprobado por el NIST en 2011. Esperamos que esta demostración práctica aumentará la conciencia y convenza a la industria, de manera definitiva, a migrar a alternativas más seguras, como SHA-256 o superiores.

Por otra parte el propio SANS señala que en la práctica poco han cambiado las cosas. El ataque sigue considerándose complicado y según el instituto, para muchas aplicaciones, SHA-1 seguirá siendo un nivel adecuado de protección. Sin embargo, presenta un riego alto en entornos y aplicaciones donde los niveles de confianza sean máximos, como: la banca, los contratos legales o las firmas digitales. Un uso muy común de SHA-1 es para la integridad de archives, incluso Git y muchos desarrolladores y compañías lo emplean con ese propósito.


La complejidad del ataque aún sigue siendo elevada, y requiere una gran potencia de cálculo. El ataque requirió más de 9,223,372,036,854,775,808 cálculos SHA1. Esto conlleva una potencia de procesamiento de unos 6.500 años para una sola CPU o 110 años de cálculos GPU. A pesar de ello, SHAttered es 100.000 veces más rápido que el ataque de fuerza bruta que se basa en la paradoja del cumpleaños y que requeriría 12 millones de años de cálculos GPU.

También desde VirusTotal confirman que ya han encontrado más ejemplos de colisiones SHA-1.

Como es habitual Google sigue su política de publicación de detalles sobre las vulnerabilidades, por lo que la información completa sobre el ataque no se publicará hasta dentro de 90 días. Esto da tiempo para que muchos empiecen a migrar a sistemas de hash más seguros como SHA-256.

Tras un muy superado MD5, Bruce Schneier ya nos avisaba 10 años atrás que la vida de SHA-1 no iba a ser muy larga. Incluso desde Hispasec, en una-al-día, mucho antes ya informábamos en varias ocasiones de los avances que se efectuaban al reducir la complejidad de romper este algoritmo. De hecho, desde hace unos pocos años se recomendaba no usarlo para la firma de certificados digitales hasta que, definitivamente, la industria optó por dar dejar de confiar en certificados SSL a partir del año pasado.

Más información:

SHAttered

Announcing the first SHA1 collision

Practical collision attack against SHA-1

Antonio Ropero
Twitter: @aropero

No hay comentarios:

Publicar un comentario en la entrada