Herramientas de desarrollo · Calculadora de hash SHA
El efecto Avalancha: Por qué un carácter cambiado reescribe un hash SHA
· Cómo funciona
sha-256 criptografía seguridad validación
Cambie una letra y aproximadamente la mitad de los bits de salida se invertirán. Esta publicación explica la propiedad de avalancha, por qué es esencial para la detección de manipulaciones y cómo las rondas de SHA-2 la logran.
Esperar que el hash cambie un poco: la intuición que aporta la mayoría de las personas y por qué el diseño la rompe deliberadamente
La mayoría de la gente espera que insumos similares produzcan resultados similares. Cambie un carácter en un archivo y el resumen debería cambiar ligeramente. En cambio, los hashes criptográficos están diseñados para hacer lo contrario: un cambio de un solo bit en la entrada debería invertir aproximadamente la mitad de los bits de salida, de manera impredecible. Esta propiedad se llama efecto avalancha y es deliberada. El diseño tiene un propósito específico: la detección de manipulaciones.
El efecto avalancha es la razón por la cual "casi coincidente" no es un concepto en el mundo del hash. Un hash coincide exactamente o no. No existe un "lo suficientemente cerca". Esta propiedad hace que el hash sea útil para comprobaciones de integridad y direccionamiento de contenido, y hace que los algoritmos de hash débiles sean inutilizables por motivos de seguridad.
Avalancha significa amplia difusión de la producción; este artículo no hace ninguna afirmación de probabilidad exacta sin fuente
Formalmente, el efecto de avalancha significa que para dos entradas que difieren en un solo bit, los resúmenes de salida deben diferir en aproximadamente el 50% de sus bits. Para SHA-256 (256 bits de salida), cambiar un bit de entrada debería invertir aproximadamente 128 bits de salida. El efecto no es exacto; es una propiedad estadística. Pero es fuerte: en la práctica, cada bit de la entrada se mezcla completamente con cada bit de la salida.
¿Por qué aproximadamente la mitad? Porque una salida verdaderamente aleatoria se diferenciaría de otra salida aleatoria en exactamente la mitad de sus bits en promedio (según el principio de casillero y las estadísticas básicas). Una buena función hash se aproxima a la aleatoriedad; produce resultados que parecen no tener un patrón discernible. La mitad de los bits que se voltean en promedio es el sello distintivo de la aleatoriedad. Si un hash solo volteara el 10% de los bits, un atacante podría encontrar patrones y explotarlos.
Por qué es necesaria la detección de manipulaciones: las pequeñas ediciones en un documento no deben producir un hash casi idéntico que un vistazo rápido aceptaría
La detección de manipulación se basa en avalancha. Si descarga un archivo y calcula su SHA-256, el resumen esperado es ba7816... (como ejemplo). Un atacante modifica el archivo cambiando un byte. El nuevo resumen cambia de ba7816... a algo como 3d4e92... (completamente diferente). Cuando verifica el archivo con el resumen esperado, la discrepancia es inmediata y total. No hay lugar a malas interpretaciones: el archivo ha sido manipulado.
Sin avalancha, un atacante podría cambiar un byte y el resumen podría cambiar sólo ligeramente, a ba7817... (un dígito hexadecimal diferente). Una comparación casual podría pasar por alto la diferencia. Un atacante podría incluso buscar entradas que produzcan un resumen que comience con ba78, afirmando que el archivo es auténtico. Avalanche hace que esto sea prohibitivamente costoso: encontrar incluso dos entradas donde los resúmenes comiencen con los mismos cuatro dígitos hexadecimales requiere más trabajo del que permite el diseño.
Cómo cambian las rondas: rotaciones, sumas y funciones no lineales que llevan la influencia de un bit a todo el estado
Las rondas en SHA-256 (y las rondas en SHA-512) están diseñadas para difundir los cambios. Cada ronda mezcla los datos utilizando funciones no lineales (elección, mayoría) y rotaciones. Un cambio de un solo bit en la entrada ingresa al programa de mensajes y se propaga a través de las rondas. Las rotaciones cambian las posiciones de las brocas. Las funciones no lineales ocultan la influencia del bit: cambiar un bit de control en una operación de elección puede invertir cualquiera de los bits de salida, dependiendo de los datos que se seleccionen.
Las constantes hash iniciales, las constantes de programación de mensajes, las cantidades de rotación y el número de rondas se eligieron para maximizar el efecto de avalancha. Estos números no son arbitrarios; Provienen de la especificación SHA-2 y han sido criptoanalizados exhaustivamente. Cualquier cambio en las constantes o en el recuento de rondas produciría un algoritmo diferente (probablemente uno más débil).
Ejemplo resuelto: aplicar hash a dos entradas que difieren en un carácter y comparar los resúmenes bit a bit
Probar avalancha es sencillo. Haga un hash en la entrada abc y observe el resumen. Luego haga un hash abc seguido de un espacio, o reemplace un carácter con otra cosa: abd. Compare las salidas hexadecimales. Para SHA-256, aproximadamente la mitad de los dígitos hexadecimales 64 serán diferentes. Cuéntalos. El vector de prueba de la publicación de ToolAcre: abc produce ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad. Una cadena vacía produce e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855. Esos resúmenes no tienen dígitos hexadecimales en común.
Pruebe esto en la calculadora ToolAcre con cualquier entrada. Hash una oración. Luego cambie una letra y vuelva a aplicar hash. Cuente los diferentes dígitos hexadecimales. Descubrirá que aproximadamente la mitad (32 de 64, en la mayoría de los casos) difieren. Este es el efecto avalancha en acción. Es una propiedad del diseño del algoritmo, no una coincidencia.
Avalanche no proporciona búsqueda de similitud ni cuantifica por sí sola la resistencia a la colisión
Avalanche no crea búsquedas de similitud ni coincidencias aproximadas. Si tiene un resumen ba7816... y desea encontrar un resumen similar, no tiene atajos. Debe adivinar o aplicar fuerza bruta a las entradas de los candidatos, aplicar hash a cada una y comprobar si hay una coincidencia exacta. El efecto de avalancha hace que cada suposición tenga la misma probabilidad de producir un resultado similar o completamente diferente. Algunos algoritmos hash (llamados hash sensibles a la localidad) están diseñados para preservar la similitud; son útiles para la detección y agrupación de casi duplicados, pero no son hashes criptográficos.
Avalanche tampoco protege contra una búsqueda de colisión determinada. Un criptoanalista todavía puede buscar dos entradas diferentes que produzcan el mismo resumen, pero el espacio de búsqueda es enorme. Una búsqueda determinada de colisiones es una cuestión diferente a la difusión visual. Este artículo no cita una cifra de cumpleaños ni una cronología de hardware porque no ha derivado ninguna aquí. El límite defendible es que la avalancha por sí sola no prueba ni cuantifica la resistencia a la colisión.
Conclusión: no hay casi errores: pruebe el experimento de un carácter en la calculadora de hash SHA de ToolAcre y observe cómo cambia el resumen completo
La calculadora de hash SHA de ToolAcre ejecuta los algoritmos SHA a través de la implementación Web Crypto del navegador. Puedes usarlo para verificar la avalancha por tu cuenta. Cada detalle de precisión del algoritmo se refleja en el resultado, y el proveedor del navegador audita y mantiene la implementación de Web Crypto. Estás viendo el algoritmo real ejecutándose en entradas reales. La propiedad contraria a la intuición de que un cambio de carácter reescribe todo el resumen no es un defecto; es la característica que hace que el hash funcione.
Cuando usas un hash para verificar la integridad, estás confiando en la avalancha. Cuando lo usa para abordar contenido (como resúmenes de imágenes de contenedores), depende de la propiedad de que pequeños cambios producen resúmenes muy diferentes. Cuando lo usa en una firma digital (donde la firma se calcula sobre un hash del mensaje), el efecto de avalancha garantiza que la manipulación del mensaje produzca un cambio detectable. La propiedad es la base de la seguridad basada en hash.