domingo, 14 de junio de 2009

Se reduce la complejidad para provocar colisiones en SHA1

Unos investigadores australianos acaban de dar con una nueva combinación de métodos para provocar colisiones en el algoritmo de hash SHA1 de forma mucho más rápida. Sólo se necesitarían 2^52 intentos. Esto podría resultar en ataques prácticos posibles a este sistema de hash.

SHA1 es un sistema criptográfico de cálculo de hash heredero de MD5. Cualquier entrada de datos que se introduzca en la función, es reducida a una secuencia de 160 bits (2^160 posibilidades). Se puede calcular el SHA, virtualmente, de cualquier flujo de datos independientemente de su longitud, y en la práctica (no en teoría) dar un SHA distinto. Se utiliza en muchas circunstancias y ámbitos como un identificador único de un fichero o mensaje. Pero el enemigo natural de los hashes son las colisiones: la posibilidad de encontrar por fuerza bruta un identificador que no sea único, esto es, que un mismo SHA1 represente a dos flujos de datos entrantes diferentes. Como la entrada es infinita, por definición existen las colisiones, pero se confía en que sean tan complejas de calcular (que se necesite tanto tiempo) que la fuerza bruta sea poco práctica.

Pero si se reduce el cálculo de esa fuerza bruta... Cuanta más cantidad de bits de salida de la función, más complicado encontrar colisiones. Se sabe, según la paradoja del cumpleaños, que al menos son necesarios 2^(k/2) cálculos para encontrar con una probabilidad mayor al 50% colisiones en una función con k bits de salida. En el caso de la función de hash SHA1, se necesitaría calcular el hash de 2^80 mensajes cualesquiera para tener más del 50% de probabilidad de encontrar dos de ellos con el mismo hash (una colisión). Una función hash se considera rota si se puede calcular esta colisión en menos pasos. Pero lo peor, el mayor enemigo de las funciones hash, es que se pueda manipular un flujo de entrada para que se obtenga de él un hash deseado. Esto es mucho más grave.

MD5, con solo 128 bits de salida para representar a las infinitas posibilidades de entrada, hace tiempo que se considera obsoleto y roto en todos los sentidos, aunque se sigue usando en multitud de ámbitos. MD5 ha sufrido varios reveses a lo largo de los años, el último a finales de 2008, cuando se consideró inválido para ser usado por las autoridades certificadoras.

SHA1 también se consideraba "tocado". No es la primera vez que SHA1 se ve dañado por investigaciones matemáticas que reducen considerablemente el tiempo de fuerza bruta necesario para crear una colisión. A principios de 2005 un grupo de investigadores chinos consiguió reducir el número de intentos para acelerar el proceso de colisión de dos mensajes cualesquiera a 2^69. Poco después se avanzó hasta 2^63. El departamento de algoritmos y criptografía de la Universidad de Macquarie (Australia) ha conseguido reducirlo ahora a una complejidad de 2^52.

Las posibilidades son muchas: validación de ficheros, autenticación, certificados ... en cualquier ámbito en el que se use la criptografía de clave pública, encontramos funciones hash SHA1 donde un ataque por colisión tendría un serio impacto. La buena noticia es que aún así, llevar a la práctica este tipo de ataque recién descubierto lleva una buena cantidad de fuerza bruta asociada y en la "vida real" es todavía complejo que tenga utilidad.

También es bueno saber que el National Institute of Standards and Technology (NIST) hace ya tiempo que lanzó un concurso para determinar qué algoritmo será conocido como SHA3 y se usará como estándar en 2012. El problema es que el peso de la herencia es grande, y deshacerse de algoritmos usados durante años no siempre es sencillo. MD5 sigue siendo ampliamente utilizado. Incluso los pocos que se plantean dar el salto, lo hacen a SHA1... por lo que la adopción de algoritmos mucho más robustos como SHA512 o el futuro SHA3 es algo que en la práctica se estandarizará a muy largo plazo.


Sergio de los Santos
ssantos@hispasec.com


Más información:

Differential Path for SHA-1 with complexity O(2^52)
http://eprint.iacr.org/2009/259.pdf

La paradoja del cumpleaños
http://www.jcea.es/artic/birthday.htm

No hay comentarios:

Publicar un comentario en la entrada