¿Qué es SHAttered? Ataques de colisión SHA-1, explicados
El primer día de 2016, Mozilla finalizó el soporte para una tecnología de seguridad debilitada llamada SHA-1 en el navegador web Firefox. Casi inmediatamente, revirtieron su decisión, ya que cortaría el acceso a algunos sitios web más antiguos. Pero en febrero de 2017, sus temores finalmente se hicieron realidad: los investigadores rompieron el SHA-1 al crear el primer ataque de colisión en el mundo real. Esto es lo que significa todo eso..
¿Qué es SHA-1??
El SHA en SHA-1 significa Algoritmo hash seguro, y, en pocas palabras, puede pensarlo como un tipo de problema o método matemático que revuelve los datos que se ponen en ella. Desarrollado por la NSA de los Estados Unidos, es un componente central de muchas tecnologías utilizadas para cifrar transmisiones importantes en Internet. Los métodos comunes de encriptación SSL y TLS, de los que podría haber oído hablar, pueden usar una función de hash como SHA-1 para crear los certificados firmados que ve en la barra de herramientas de su navegador.
No profundizaremos en las matemáticas y la informática de ninguna de las funciones de SHA, pero aquí está la idea básica. Un "hash" es un código único basado en la entrada de cualquier dato. Incluso una cadena de letras pequeña y aleatoria ingresada en una función hash como SHA-1 devolverá un número de caracteres largo y establecido, haciendo que sea (potencialmente) imposible revertir la cadena de caracteres a los datos originales. Así es como suele funcionar el almacenamiento de contraseñas. Cuando creas una contraseña, la entrada de tu contraseña está cifrada y almacenada por el servidor. Cuando regresa, cuando ingresa su contraseña, se vuelve a marcar. Si coincide con el hash original, se puede asumir que la entrada es la misma, y se le otorgará acceso a sus datos.
Las funciones de hash son útiles principalmente porque facilitan saber si la entrada, por ejemplo, un archivo o una contraseña, ha cambiado. Cuando los datos de entrada son secretos, como una contraseña, el hash es casi imposible de revertir y recuperar los datos originales (también conocida como la "clave"). Esto es un poco diferente del "cifrado", cuyo propósito es mezclar los datos con el fin de descifrarlos más tarde, utilizando cifrados y claves secretas. Los elementos hash están diseñados simplemente para garantizar la integridad de los datos, para garantizar que todo sea igual. Git, el software de distribución y control de versiones para código fuente abierto, utiliza hashes SHA-1 por esta misma razón..
Eso es mucha información técnica, pero para decirlo simplemente: un hash no es lo mismo que el cifrado, ya que se utiliza para identificar si un archivo ha cambiado.
¿Cómo me afecta esta tecnología??
Digamos que necesitas visitar un sitio web en privado. Su banco, su correo electrónico, incluso su cuenta de Facebook, todos utilizan el cifrado para mantener la privacidad de los datos que les envía. Un sitio web profesional proporcionará el cifrado mediante la obtención de un certificado de una autoridad de confianza, un tercero de confianza para garantizar que el cifrado se encuentre en el nivel, sea privado entre el sitio web y el usuario, y no sea espiado por ninguna otra parte. Esta relación con el tercero, llamada Autoridades de Certificación, o California, es crucial, ya que cualquier usuario puede crear un certificado "autofirmado", incluso puede hacerlo usted mismo en una máquina que ejecute Linux con Open SSL. Symantec y Digicert son dos empresas de CA ampliamente conocidas, por ejemplo.
Analicemos un escenario teórico: How-To Geek desea mantener las sesiones de los usuarios privadas con cifrado, por lo que solicita a una CA como Symantec con un Solicitud de firma de certificado, o RSE. Crean un Llave pública y llave privada para cifrar y descifrar los datos enviados a través de Internet. La solicitud de CSR envía la clave pública a Symantec junto con información sobre el sitio web. Symantec compara la clave con su registro para verificar que los datos no han sido modificados por todas las partes, ya que cualquier pequeño cambio en los datos hace que el hash sea radicalmente diferente.
Esas claves públicas y certificados digitales están firmados por funciones hash, porque la salida de estas funciones es fácil de ver. Una clave pública y un certificado con un hash verificado de Symantec (en nuestro ejemplo), una autoridad, le asegura a un usuario de How-To Geek que la clave no se modifica y no se envía de alguien malicioso..
Debido a que el hash es fácil de monitorear e imposible (algunos dirían "difícil"), la firma de hash correcta y verificada significa que se puede confiar en el certificado y la conexión, y se puede acordar que los datos se envíen cifrados de un extremo a otro. . Pero y si el hash no era realmente único?
¿Qué es un ataque de colisión, y es posible en el mundo real??
Es posible que hayas oído hablar del "Problema de cumpleaños" en matemáticas, aunque es posible que no hayas sabido cómo se llamaba. La idea básica es que si reúnes un grupo lo suficientemente grande, es muy probable que dos o más personas tengan el mismo cumpleaños. Más alto de lo que cabría esperar, de hecho, lo suficiente como para que parezca una coincidencia rara. En un grupo tan pequeño como 23 personas, hay un 50% de probabilidad de que dos compartan un cumpleaños..
Esta es la debilidad inherente en todos los hashes, incluido SHA-1. Teóricamente, la función SHA debería crear un hash único para cualquier información que se coloque en ella, pero a medida que aumenta el número de hashes, es más probable que diferentes pares de datos puedan crear el mismo hash. Así que uno podría crear un certificado no confiable con un hash idéntico a un certificado confiable. Si consiguen que instales ese certificado que no es de confianza, podría enmascararse como confiable y distribuir datos maliciosos..
Encontrar hashes coincidentes dentro de dos archivos se denomina ataque de colisión. Se sabe que al menos un ataque de colisión a gran escala ya ocurrió para los hashes MD5. Pero el 27 de febrero de 2017, Google anunció SHAttered, la primera colisión diseñada para SHA-1. Google pudo crear un archivo PDF que tenía el mismo hash SHA-1 que otro archivo PDF, a pesar de tener contenido diferente.
SHAttered se realizó en un archivo PDF. Los archivos PDF son un formato de archivo relativamente suelto; se pueden hacer muchos cambios pequeños a nivel de bits sin evitar que los lectores lo abran o causen diferencias visibles. Los archivos PDF también se utilizan a menudo para entregar malware. Si bien SHAttered podría trabajar en otros tipos de archivos, como ISOs, los certificados se especifican rígidamente, lo que hace improbable que se produzca tal ataque..
Entonces, ¿qué tan fácil es este ataque para realizar? SHAttered se basó en un método descubierto por Marc Stevens en 2012 que requería más de 2 ^ 60.3 (9.223 quintillones) operaciones de SHA-1, un número asombroso. Sin embargo, este método sigue siendo 100.000 veces menos operaciones de las que serían necesarias para lograr el mismo resultado con la fuerza bruta. Google descubrió que con 110 tarjetas gráficas de alta gama trabajando en paralelo, llevaría aproximadamente un año producir una colisión. Alquilar este tiempo de cómputo de Amazon AWS costaría alrededor de $ 110,000. Tenga en cuenta que a medida que los precios bajan para las partes de la computadora y puede obtener más potencia por menos, los ataques como SHAttered se vuelven más fáciles de lograr.
Los $ 110,000 pueden parecer mucho, pero está dentro del ámbito de la asequibilidad para algunas organizaciones, lo que significa que los cibervilleros de la vida real pueden falsificar firmas de documentos digitales, interferir con los sistemas de respaldo y control de versiones como Git y SVN, o hacer que una ISO de Linux parezca legítima..
Afortunadamente, existen factores atenuantes que impiden tales ataques. SHA-1 ya no se usa para firmas digitales. Las Autoridades de certificación ya no proporcionan certificados firmados con SHA-1, y tanto Chrome como Firefox han abandonado el soporte para ellos. Las distribuciones de Linux generalmente se lanzan con más frecuencia que una vez al año, lo que hace que sea poco práctico para un atacante crear una versión maliciosa y luego generar un relleno para tener el mismo hash SHA-1..
Por otro lado, algunos ataques basados en SHAttered ya están ocurriendo en el mundo real. El sistema de control de versiones SVN usa SHA-1 para diferenciar archivos. Cargar los dos archivos PDF con hashes SHA-1 idénticos en un repositorio SVN hará que se corrompan.
¿Cómo puedo protegerme de los ataques SHA-1??
No hay mucho que hacer para el usuario típico. Si está utilizando sumas de comprobación para comparar archivos, debe usar SHA-2 (SHA-256) o SHA-3 en lugar de SHA-1 o MD5. Del mismo modo, si eres un desarrollador, asegúrate de usar algoritmos de hashing más modernos como SHA-2, SHA-3 o bcrypt. Si le preocupa que se haya utilizado SHAttered para dar a dos archivos distintos el mismo hash, Google ha lanzado una herramienta en el sitio de SHAttered que puede verificarlo por usted..
Créditos de imagen: Lego Firefox, mucho hash, por favor, no lastimes el autor de la web desconocido, Google.