Herramientas de desarrollo · Calculadora de hash SHA
Colisión, preimagen y segunda preimagen: los tres objetivos de seguridad hash
· Antecedentes
sha-256 criptografía seguridad
Un aviso dice que un algoritmo tiene problemas de colisión y usted necesita saber si su uso se ve afectado. Esta publicación define las tres propiedades de resistencia, muestra qué casos de uso dependen de cuáles y las aplica a SHA-1.
¿Mi uso se ve afectado? — la pregunta que un aviso rara vez responde directamente
Llega un aviso que dice que SHA-1 tiene problemas de colisión, por lo que su sistema debe actualizarse. Pero, ¿qué pasa si su sistema usa SHA-1 solo para derivar claves, no para autenticar mensajes? ¿Qué pasa si SHA-1 solo se usa para deduplicar archivos idénticos, no para demostrar su autenticidad? La pregunta "¿está mi sistema afectado?" No se puede responder sin comprender qué propiedad de la función hash está realmente rota y de qué propiedad depende su caso de uso.
Una función hash proporciona múltiples propiedades de seguridad: resistencia a la preimagen, resistencia a la segunda preimagen y resistencia a colisiones. Una interrupción en una propiedad no interrumpe otra y algunos casos de uso dependen únicamente de propiedades que permanecen seguras. La calculadora de hash ToolAcre SHA muestra los algoritmos y sus anchos de resumen, propiedades que determinan los límites para cada objetivo de seguridad. Comprender estas propiedades es el primer paso para decidir si un aviso afecta a su sistema.
Resistencia previa a la imagen: dado un hash, no puedes encontrar una entrada que lo produzca
La resistencia a la preimagen significa que, dado un resumen, no debería ser factible encontrar una entrada que produzca ese resumen. Recibes el hash de una contraseña y quieres adivinar la contraseña; Este es un ataque previo a la imagen. La segunda resistencia a la preimagen significa que, dado un mensaje y su hash, no debería ser factible encontrar un mensaje diferente con el mismo hash. Tiene un archivo descargado y su suma de comprobación SHA-256; un atacante quiere intercambiar el archivo con un archivo diferente que tenga el mismo hash; Este es un segundo ataque previo a la imagen.
La resistencia a la colisión significa que no debería ser factible encontrar dos mensajes diferentes con el mismo hash. Estás firmando un documento; un atacante quiere crear un documento diferente con la misma firma; Este es un ataque de colisión. Estos tres escenarios requieren diferentes cantidades de trabajo por parte del atacante y los límites de seguridad difieren. La resistencia a la preimagen es la propiedad más fuerte y rara vez es la que se rompe. Dado un resumen, encontrar una preimagen requiere una búsqueda de fuerza bruta en el espacio de posibles entradas. El ancho del resumen afecta el espacio de búsqueda genérico, pero este artículo no indica un recuento de operaciones sin derivarlo y definir el modelo de ataque.
Segunda resistencia de preimagen: dada una entrada, no puedes encontrar una entrada diferente con el mismo hash
La segunda resistencia previa a la imagen es la siguiente más fuerte y rara vez se rompe de forma aislada. Dado un mensaje y su hash, encontrar un mensaje diferente con el mismo hash también requiere un trabajo exponencial en el tamaño del resumen. Las búsquedas de segunda preimagen y de colisión otorgan al atacante diferentes opciones, por lo que sus límites genéricos no son intercambiables. La distinción cualitativa es suficiente aquí; no se afirma ningún límite numérico sin una derivación en línea. Un algoritmo pierde la resistencia de la segunda preimagen si hay un ataque estructural que no requiere fuerza bruta.
La resistencia a la colisión es la más débil de las tres propiedades y es la que se rompe o dobla con mayor frecuencia. Una búsqueda de colisión permite al atacante elegir ambas entradas, a diferencia de los otros dos objetivos, por lo que tiene un límite genérico diferente. Este artículo omite intencionalmente las cifras de cumpleaños y los cronogramas de hardware porque derivarlos y obtenerlos están fuera del material verificado.
Resistencia a la colisión: no puedes encontrar dos entradas con el mismo hash y por qué esta es la más débil de las tres
La asignación de las tres propiedades de seguridad a casos de uso muestra qué propiedad se requiere para cada tarea. La deduplicación se basa en el supuesto de que si dos archivos tienen el mismo hash, son el mismo archivo. Esto requiere resistencia a las colisiones: si las colisiones son posibles, un atacante puede crear dos archivos diferentes con el mismo hash y romper la invariante de deduplicación. Sin embargo, este es un requisito débil, porque las colisiones prácticas son extremadamente raras, incluso si son teóricamente posibles.
Las firmas digitales requieren una fuerte resistencia a las colisiones. Cuando un firmante produce una firma para el hash de un documento y un verificador luego verifica la firma, los dos deben estar verificando el mismo hash. Si las colisiones son fáciles, un atacante puede falsificar una firma para un documento diferente al encontrar una colisión con el documento firmado. Este es el ataque que motivó la actualización de SHA-1 a SHA-256 en los certificados. Un certificado firmado por una CA y un certificado falsificado con la misma firma pasan la verificación si el hash tiene una colisión.
La resistencia a la colisión difiere de los objetivos previos a la imagen; no aparecen cifras vinculadas al cumpleaños sin derivación
El almacenamiento dirigido a contenido utiliza hashes como claves de búsqueda. Si un archivo se almacena en la ubicación determinada por su hash y luego se recupera usando el mismo hash, las dos operaciones deben llegar al mismo archivo. Esto requiere resistencia a la colisión si hay atacantes activos, pero solo requiere una segunda resistencia previa a la imagen si los atacantes son pasivos. Un atacante pasivo no puede crear una colisión; sólo pueden observar si los archivos legítimos chocan por casualidad.
La verificación de descarga utiliza una suma de verificación para confirmar que un archivo recuperado de Internet no está dañado. La suma de verificación generalmente se publica junto con el archivo desde una fuente confiable. Un atacante que modifica el archivo descargado no puede actualizar la suma de comprobación sin acceder a la fuente confiable. Este caso de uso requiere una segunda resistencia previa a la imagen: dado el archivo original y su suma de verificación, el atacante no debería poder producir un archivo diferente con la misma suma de verificación. SHA-1 la segunda resistencia a la preimagen sigue siendo sólida a pesar de que se detiene la colisión.
Asigna la integridad y los usos de nombres a las propiedades requeridas; los hashes simples no son almacenamiento de contraseñas
El almacenamiento de contraseñas es el único caso de uso en el que una función hash no es la herramienta adecuada. Si las contraseñas se almacenan como hashes SHA-256 y se filtra la base de datos de hash, un atacante puede ejecutar un ataque de diccionario: aplicar hash a millones de conjeturas y comprobar si alguna coincide con los hashes almacenados. El atacante solo necesita una imagen previa para cada contraseña, y una función rápida le brinda al atacante un ciclo de comparación fuera de línea eficiente sin límites de tasa de aplicación.
Las contraseñas necesitan una función salada por usuario, deliberadamente lenta y con mucha memoria, como Argon2id, scrypt o bcrypt. Una sal única por usuario hace que contraseñas idénticas produzcan diferentes registros almacenados, mientras que la memoria configurada de la función de contraseña y los costos de tiempo hacen que cada candidato sea deliberadamente más caro. Los parámetros exactos requieren una evaluación comparativa local y no se prescriben aquí. La calculadora de hash ToolAcre SHA no realiza hash de contraseñas y la documentación de la guía explica por qué SHA-256 no es adecuado para este caso de uso.
Ejemplo resuelto: aplicar la asignación a SHA-1 en un repositorio Git frente a SHA-1 en un certificado
Un ejemplo resuelto: SHA-1 en un repositorio Git. Cada confirmación de Git tiene un hash SHA-1 como ID de objeto. Si se rompe la resistencia a colisiones SHA-1, ¿es vulnerable un repositorio de Git? La respuesta es: tal vez. Un atacante podría crear una confirmación con el mismo SHA-1 que una confirmación existente y enviarla a un servidor de repositorio, que luego podría entregar diferentes confirmaciones a diferentes clientes. Sin embargo, esto requiere elegir un objetivo específico y calcular una colisión, lo cual es costoso incluso con SHA-1 roto.
Los miembros del proyecto Git han publicado una hoja de ruta para migrar a SHA-256, pero la urgencia es moderada porque el ataque práctico requiere tanto técnicas de colisión como compromiso del servidor. Para un desarrollador que pregunta "¿la seguridad de mi repositorio Git depende de la resistencia a las colisiones SHA-1?" la respuesta es sí, pero el riesgo práctico es bajo en comparación con otras amenazas a la seguridad. La calculadora de hash SHA de ToolAcre proporciona SHA-1 y SHA-256, etiquetados adecuadamente, para que los desarrolladores puedan calcular cualquiera de ellos y comprender la diferencia.
Conclusión: nombre la propiedad antes de que entre en pánico: la calculadora de hash SHA de ToolAcre le permite ver las longitudes de resumen que establecen los límites de cada algoritmo
Para cualquier sistema que utilice SHA-1, la decisión de actualizar depende de si el caso de uso requiere la propiedad específica que no funciona. Si el caso de uso son firmas digitales o deduplicación contra atacantes activos, se requiere resistencia a colisiones y SHA-1 está roto, así que actualice a SHA-256 inmediatamente. Si el caso de uso es almacenamiento de contenido o sumas de verificación, se requiere una segunda resistencia previa a la imagen y SHA-1 sigue siendo seguro para ese propósito, aunque SHA-256 es preferible para pruebas futuras.
Si el caso de uso es la derivación de claves o la verificación de contraseñas, se requiere resistencia previa a la imagen y no se debe utilizar nada de este kit de herramientas porque las funciones más rápidas son mejores para la derivación de claves. La calculadora de hash ToolAcre SHA permite a los desarrolladores calcular resúmenes y ver las propiedades en acción. Comprender estas tres propiedades y relacionarlas con los casos de uso es la base para tomar decisiones criptográficas seguras en sistemas reales.