SHA-1 ha muerto, ataque de colisión con prefijo elegido
Los ataques contra el algoritmo de hash SHA-1 se volvieron mucho más peligrosos la semana pasada con el descubrimiento de un "ataque de colisión con prefijo elegido", una versión más práctica del ataque de colisión SHA-1 que realizó Google hace dos años.
Lo que esto significa es que los ataques de colisión SHA-1 ahora pueden llevarse a cabo con entradas personalizadas, y ya no son solo colisiones "accidentales", lo que permite a los atacantes apuntar a ciertos archivos para duplicarlos y crearlos bajo demanda.
Combinando diferentes técnicas como búsqueda de cumpleaños, aproximación de multibloque atendiendo al efecto de clústering y aplicando también técnicas de colisión con las que han mejorado los ataques, se ha reducido su complejidad a entre 2^66.9 y 2^69.4.
Esto es muy útil para crear documentos con un mismo hash y diferente contenido. Como un documento o binario con un formato compartido contiene muchas partes idénticas por esa misma razón, es bastante habitual realizar pruebas de concepto de este tipo.
Esto se popularizó con el algoritmo de Xiaoyun Wang y Yu en 2004. Diseñó un código para crear ficheros que podían llegar a ser diferentes en hasta 128 bytes, pero compartir un mismo hash MD5. Un año más tarde se publicó el famoso artículo "Attacking Hash Functions by Poisoned Messages – The Story of Alice and her Boss", donde se mostraban dos ficheros PS (PostScript) con idéntico MD5. Lo consiguieron Magnus Daum y Stefan Lucks. Recordemos que MD5 son 128 bits y SHA-1, 160. Google no se consiguió lo mismo con SHA-1 hasta doce años más tarde y un coste más elevado.
Esto se mejoró sustancialmente en 2007 cuando Marc Stevens, Arjen K. Lenstra, y Benne de Wege pudieron crear dos binarios ejecutables completamente diferentes con mismo MD5, gracias a los prefijos "elegidos". Con los prefijos elegidos se abría una nueva fórmula, en la que se ponían en peligro los certificados, por ejemplo, con firmas digitales completamente diferentes pero que se podía simular que disponían del mismo hash, puesto que en un certificado solo se firma el hash de su información.
Por tanto, tenemos por un lado los ataques clásicos de Wang y demás con prefijo idéntico y por otro lado, Stevens y demás con sus prefijos elegidos. Uno más sencillo computacionalmente que el otro, y el segundo también más potente.
Los criptógrafos predijeron que SHA-1 se rompería en un escenario del mundo real, pero la investigación de SHAttered se realizó tres años antes de lo que esperaban, y costó solo U$S 110.000 mediante el uso de potencia en la nube, mucho menos de lo que la gente pensaba que podría costar .
"Encontrar un ataque práctico de colisión rompe la función de hash, por supuesto, pero el daño real que se puede hacer con tal colisión es algo limitado, ya que el atacante tendrá poco o ningún control sobre los datos reales que colisionan", dijo Thomas Peyrin, uno de los investigadores. "Un ataque mucho más interesante es encontrar una llamada 'colisión de prefijo elegido', donde el atacante puede elegir libremente el prefijo para los dos mensajes en colisión. Estas colisiones cambian todo en términos de amenaza porque ahora puede considerar tener colisiones con datos significativos dentro (como nombres o identidades en un certificado digital, etc.)".
Lo que esto significa es que los ataques de colisión SHA-1 ya no son un juego de ruleta, y ahora, los atacantes pueden falsificar cualquier documento firmado por SHA-1 que deseen, desde documentos de negocios hasta certificados TLS.
Los ataques de colisión con el prefijo SHA-1 también son más baratos y entran en el presupuesto de los ciberdelincuentes. "Se cree que estas colisiones de prefijo elegido son mucho más difíciles de encontrar que las colisiones clásicas. Para SHA-1, el mejor método de búsqueda anterior requirió 2^77 evaluaciones de SHA-1, que permanecieron fuera de alcance en la práctica. La novedad en nuestro artículo es que explicamos cómo reducir drásticamente el costo de encontrar colisiones con el prefijo elegido para SHA-1, hasta casi el mismo costo que encontrar una colisión clásica".
"Actualmente estamos trabajando en mejoras adicionales (aún no publicadas), y evaluamos que se puede encontrar una colisión de prefijo elegido para SHA-1 con un presupuesto menor que U$S 100.000, lo que es realmente práctico".
Este es aproximadamente el mismo costo que la investigación original de SHAttered, sin embargo, esta versión del ataque es lo que los atacantes probablemente usarían si alguna vez quisieran atacar los datos protegidos por SHA-1.
Los navegadores han comenzado hace mucho tiempo eliminar el soporte para el tráfico TLS firmado con SHA-1 dentro de sus productos; sin embargo, otras aplicaciones todavía dependen de él.
"Todavía hay muchos usuarios con navegadores antiguos y muchos protocolos y software que permiten las firmas SHA-1. En concreto, todavía es posible comprar un certificado SHA-1 de una CA confiable, y muchos clientes de correo electrónico aceptan un certificado SHA-1 cuando están abriendo una conexión TLS", dijo Peyrin.
"El uso de SHA-1 para firmas digitales o certificados es muy peligroso, y no se debe permitir. Se recomienda encarecidamente a las personas que lo hagan cambiar a SHA-2 o SHA-3 ahora".
Por tanto el paralelismo el claro, muy pronto podremos ver ataques prácticos de colisión de prefijos elegidos en SHA-1, bien porque se mejore aún más el algoritmo, bien porque la capacidad de computación lo permita. Como pasó con MD5, el siguiente paso será crear un certificado o entidad certificadora falsa con mismo SHA-1. Para entonces, más nos vale haber dejado de usar SHA-1 para siempre.
En orden de preferencia, estos son los algotimos que se deben utilizar:
Lo que esto significa es que los ataques de colisión SHA-1 ahora pueden llevarse a cabo con entradas personalizadas, y ya no son solo colisiones "accidentales", lo que permite a los atacantes apuntar a ciertos archivos para duplicarlos y crearlos bajo demanda.
Combinando diferentes técnicas como búsqueda de cumpleaños, aproximación de multibloque atendiendo al efecto de clústering y aplicando también técnicas de colisión con las que han mejorado los ataques, se ha reducido su complejidad a entre 2^66.9 y 2^69.4.
- 1995: se publica SHA-1. En teoría se debería romper en 2^80 (la mitad de 160) con fuerza bruta.
- 2005: SHA-1, se publica un primer ataque de colisión con prefijos idénticos en 2^69, algo computacionalmente costoso para el momento y por tanto complejo en la práctica. Aun así ya el NIST recomendó ir migrando. Lo consideraría obsoleto en 2011.
- 2012: se consigue mejorar los ataques de prefijo idéntico en 2^61. Algo posible, pero muy caro. Ese mismo año se consiguen que los ataques de prefijo elegido caigan a 2^77.1.
- 2017: Google consigue dos PDF diferentes con mismo hash. Utiliza ataques de prefijo idéntico, que en teoría estaban en 2^61, pero ellos lo consiguen en 2^63 tras varios meses de computación y un coste de más de 100.000 dólares (en GPU).
- 2019: se consigue reducir la complejidad del algoritmo de colisión de prefijos elegidos hasta entre 2^66 y 2^69. Esto hoy por hoy requeriría bastante computación, pero... ¿y mañana?
Prefijos idénticos y prefijos elegidos
Explican en Blog Think Big que con los prefijos idénticos, el atacante no tiene control sobre los mensajes en los que se encuentra la colisión, sino que los elige el algoritmo. Por tanto es menos útil desde el punto de vista práctico (para un atacante). Se tiene que partir de la base de que existe un prefijo con mismo hash,y a partir de ahí se le añaden payloads diferentes para que todo el conjunto tenga el mismo hash, aunque el contenido sea diferente.Esto es muy útil para crear documentos con un mismo hash y diferente contenido. Como un documento o binario con un formato compartido contiene muchas partes idénticas por esa misma razón, es bastante habitual realizar pruebas de concepto de este tipo.
Esto se popularizó con el algoritmo de Xiaoyun Wang y Yu en 2004. Diseñó un código para crear ficheros que podían llegar a ser diferentes en hasta 128 bytes, pero compartir un mismo hash MD5. Un año más tarde se publicó el famoso artículo "Attacking Hash Functions by Poisoned Messages – The Story of Alice and her Boss", donde se mostraban dos ficheros PS (PostScript) con idéntico MD5. Lo consiguieron Magnus Daum y Stefan Lucks. Recordemos que MD5 son 128 bits y SHA-1, 160. Google no se consiguió lo mismo con SHA-1 hasta doce años más tarde y un coste más elevado.
Esto se mejoró sustancialmente en 2007 cuando Marc Stevens, Arjen K. Lenstra, y Benne de Wege pudieron crear dos binarios ejecutables completamente diferentes con mismo MD5, gracias a los prefijos "elegidos". Con los prefijos elegidos se abría una nueva fórmula, en la que se ponían en peligro los certificados, por ejemplo, con firmas digitales completamente diferentes pero que se podía simular que disponían del mismo hash, puesto que en un certificado solo se firma el hash de su información.
Por tanto, tenemos por un lado los ataques clásicos de Wang y demás con prefijo idéntico y por otro lado, Stevens y demás con sus prefijos elegidos. Uno más sencillo computacionalmente que el otro, y el segundo también más potente.
Ataques de colisión SHA-1
La función de hash SHA-1 se rompió teóricamente en 2005; sin embargo, el primer ataque exitoso de colisión en el mundo real se llevó a cabo en 2017. Hace dos años, académicos de Google y CWI produjeron dos archivos que tenían el mismo hash SHA-1, en el primer ataque de colisión SHA-1 en el mundo, conocido como "SHAttered".SHA-1 ataques de prefijo elegido
Pero la semana pasada, un equipo de académicos de Francia y Singapur llevó la investigación de SHAttered un paso más allá al demostrar un ataque de colisión con el "prefijo elegido" SHA-1, en un nuevo documento de investigación titulado "Desde las colisiones a las colisiones con prefijo elegido en SHA-1" [PDF]."Encontrar un ataque práctico de colisión rompe la función de hash, por supuesto, pero el daño real que se puede hacer con tal colisión es algo limitado, ya que el atacante tendrá poco o ningún control sobre los datos reales que colisionan", dijo Thomas Peyrin, uno de los investigadores. "Un ataque mucho más interesante es encontrar una llamada 'colisión de prefijo elegido', donde el atacante puede elegir libremente el prefijo para los dos mensajes en colisión. Estas colisiones cambian todo en términos de amenaza porque ahora puede considerar tener colisiones con datos significativos dentro (como nombres o identidades en un certificado digital, etc.)".
Lo que esto significa es que los ataques de colisión SHA-1 ya no son un juego de ruleta, y ahora, los atacantes pueden falsificar cualquier documento firmado por SHA-1 que deseen, desde documentos de negocios hasta certificados TLS.
Los ataques de colisión con el prefijo SHA-1 también son más baratos y entran en el presupuesto de los ciberdelincuentes. "Se cree que estas colisiones de prefijo elegido son mucho más difíciles de encontrar que las colisiones clásicas. Para SHA-1, el mejor método de búsqueda anterior requirió 2^77 evaluaciones de SHA-1, que permanecieron fuera de alcance en la práctica. La novedad en nuestro artículo es que explicamos cómo reducir drásticamente el costo de encontrar colisiones con el prefijo elegido para SHA-1, hasta casi el mismo costo que encontrar una colisión clásica".
"Actualmente estamos trabajando en mejoras adicionales (aún no publicadas), y evaluamos que se puede encontrar una colisión de prefijo elegido para SHA-1 con un presupuesto menor que U$S 100.000, lo que es realmente práctico".
Este es aproximadamente el mismo costo que la investigación original de SHAttered, sin embargo, esta versión del ataque es lo que los atacantes probablemente usarían si alguna vez quisieran atacar los datos protegidos por SHA-1.
Alejándose de SHA-1
Los navegadores han comenzado hace mucho tiempo eliminar el soporte para el tráfico TLS firmado con SHA-1 dentro de sus productos; sin embargo, otras aplicaciones todavía dependen de él.
"Todavía hay muchos usuarios con navegadores antiguos y muchos protocolos y software que permiten las firmas SHA-1. En concreto, todavía es posible comprar un certificado SHA-1 de una CA confiable, y muchos clientes de correo electrónico aceptan un certificado SHA-1 cuando están abriendo una conexión TLS", dijo Peyrin.
"El uso de SHA-1 para firmas digitales o certificados es muy peligroso, y no se debe permitir. Se recomienda encarecidamente a las personas que lo hagan cambiar a SHA-2 o SHA-3 ahora".
Por tanto el paralelismo el claro, muy pronto podremos ver ataques prácticos de colisión de prefijos elegidos en SHA-1, bien porque se mejore aún más el algoritmo, bien porque la capacidad de computación lo permita. Como pasó con MD5, el siguiente paso será crear un certificado o entidad certificadora falsa con mismo SHA-1. Para entonces, más nos vale haber dejado de usar SHA-1 para siempre.
¿Qué usar?
"Los ataques contra SHA-1 solo van a mejorar", dijo Scott Arciszewski, un destacado criptógrafo.En orden de preferencia, estos son los algotimos que se deben utilizar:
- BLAKE2b / BLAKE2s / Online
- SHA-512/256
- SHA3-256
- SHA-384
- Cualquier otra función hash de la familia SHA2 como último recurso
0 Comments:
Publicar un comentario
Gracias por dejar un comentario en Segu-Info.
Gracias por comentar!