Atendiendo al interés del amigo McPolu, y aprovechando que tenía un borrador de una reflexión sobre criptología, paso a «copypastearla» en el blog, para que quien esté interesado, la lea. Sin más, os dejo con ella :)
Tras los recientes avances efectuados por la Doctora Xiaoyun Wang y su equipo de analistas criptográfos, parece obvio que se avecinan nuevos tiempos para la critpografía.
Durante los últimos meses hemos asistido a lo que sólo era una cuestión de tiempo: algunos algoritmos como SHA-1 y MD5 han quedado en entredicho, al ejecutar distintos investigadores, principalmente los adscritos al equipo de Wang, ataques mediante los cuales se ha posibilitado la ruptura de ambos algoritmos.
Las funciones hash de una dirección cumplen siempre dos propiedades: la primera es la unidireccionalidad, mediante la cual se establece la imposibilidad de obtener la palabra clave a partir del hash obtenido, siendo únicamente posible calcular el hash a partir de la palabra clave. Esta imposibilidad debe entenderse como capacidad de revertir la función hash en un tiempo razonable. La segunda propiedad básica es que las funciones hash deben estar libres de colisiones. Es decir, dos mensajes distintos no pueden generar una misma suma hash. En el momento que alguna o ambas condiciones se incumple, la función hash se dice ha sido rota.
A la hora de documentar colisiones, es fundamental hablar de la posibilidad de encontrar una colisión en función de la robustez del algoritmo. Para un algoritmo como SHA-1, que emplea 160 bit, tenemos que la posibilidad de encontrar una colisión por fuerza bruta es de 1 entre 280. En el caso de MD5, que emplea 128 bit, la posibilidad aumenta a 264. El patrón de hallar esa posibilidad es siempre 1/2^[n/2], siendo n el número de bit. Sea como fuere, es frecuente hablar de hash o algoritmo roto cuando se demuestra matemáticamente que es posible encontrar colisiones con una velocidad inferior al número teórico anteriormente citado.
La doctora Wang y su equipo, por ejemplo, han documentado la ruptura de SHA-1 con una reducción probabilística a 2^63. Previamente, habían logrado reducir la cifra a 2^69. Tal ycomo hemos visto, la complejidad de ruptura por fuerza bruta es de 2^80. Dividiendo, es fácil comprobar que la doctora Wang y su equipo han hallado colisiones 131072 veces más rápido que mediante un ataque de fuerza bruta. Y según opinan muchos expertos, 2^63 no parece un límite no mejorable. Todo apunta a que según progrese la investigación, se mejorarán las cifras y por tanto, SHA-1 será paulatimanente más vulnerable.
Llegados a este punto, conviene preguntarse qué implica esto para la vida útil de los algoritmos MD5 y SHA-1. Muchos medios se apresuran a tachar los algoritmos como totalmente inválidos a tenor de los resultados, y proclaman su sustitución inmediata como estándar de facto. Pensando sobre el tema, llegamos a la conclusión de que quizás esto sea algo precipitado.
Un algoritmo debe tener, sobre todo, dos propiedades para definir su utilidad: debe ser robusto y debe ser rápido a la hora de emplearse en computación. Es decir, de nada nos serviría por ejemplo un algoritmo de 4 bit que fuera muy rápido, y de nada sirve cifrar con 4096 bit, si el tiempo de cómputo nos va a paralizar los procesos. Un buen algoritmo combina ambas propiedades y ambas deben ser consideradas nunca en general, sino en producciones determinadas y casos individuales. Es decir, las necesidades que tiene un usuario de UNIX cuando invoca los comandos «md5sum» o «sha1sum» para verificar la integridad de una imagen ISO que ha descargado no son las mismas que las que puede tener un laboratorio de alta seguridad que conserva muestras nucleares y cuyos medios de acceso físico requieren de cifrados muy robustos, por motivos obvios. Tampoco son iguales las necesidades de un portal PHP+SQL que conserva hashes SHA-1 de las claves de usuario, por citar meros ejemplos.
Parece sensato pues, antes de tirar a la papelera de reciclaje, o a /dev/null (según se prefiera) a MD5 y SHA-1, optar por un camino bidireccional: por un lado, asumir que la endeblez de los algoritmos nos debe invitar a usarlos para fines donde sean efectivos y conserven su utilidad, y por otro lado aprovechar las mejoras en técnicas y aparamenta computacional para ir endureciendo los algoritmos, e ir escogiendo nuevas tendencias que aseguren que nuestra seguridad está bien salvaguardada.
Las nuevas tendencias invitan a incrementar SHA de 160 bit a 384 y 512 bit respectivamente, mediante SHA-384 y SHA-512, en lo que se han venido a denominar variantes SHA-2 . Algunos expertos recomiendan al empleo de algoritmos de especial robustez, como Tiger, diseñado por Ross Anderson y Eli Biham y que proporciona valores hash de 192 bits, y sobre todo, WHIRPOOL, una interesante construcción del tipo Miyaguchi-Preneel basada en una modificación muy cuantiosa de Advanced Encryption Standard (AES), diseñada por los profesores Vincent Rijmen y Paulo S. L. M. Barreto. WHIRPOOL es la recomendación que NESSIE (New European Schemes for Signatures, Integrity and Encryption) ofrece a quienes buscan soluciones criptográficas seguras. WHIRPOOL genera hashes de 512 bit.
Enlaces de interés
Schneier on Security: New Cryptanalytic Results Against SHA-1
http://www.schneier.com/blog/archives/2005/08/new_cryptanalyt.html
Xiaoyun Wang: Finding Collisions in the Full SHA-1 Collision Search Attacks on SHA1
http://202.194.5.130/admin/infosec/download.php?id=2
Xiaoyun Wang
http://www.infosec.sdu.edu.cn/people/wangxiaoyun.htm
Wikipedia: Función Hash
http://es.wikipedia.org/wiki/Funci%C3%B3n_hash
Wikipedia: Función hash criptográfica
http://en.wikipedia.org/wiki/Cryptographic_hash_function
Wikipedia: MD5
http://es.wikipedia.org/wiki/MD5
Wikipedia: SHA-0 y SHA-1
http://en.wikipedia.org/wiki/SHA-1
Wikipedia: Tiger
http://en.wikipedia.org/wiki/Tiger_%28hash%29
Wikipedia: WHIRPOOL
http://en.wikipedia.org/wiki/Whirlpool_%28algorithm%29
Un pensamiento en “Nuevas tendencias criptográficas”
Comentarios cerrados.