Tema 13

13. Funciones hash criptográficas: propiedades, resistencia a colisiones y preimagen

Las funciones hash criptográficas no cifran datos ni usan necesariamente una clave, pero son una pieza esencial de la seguridad moderna. Permiten resumir información de forma determinística y compacta, y a partir de esa capacidad sostienen integridad, firmas digitales, autenticación y protección de contraseñas.

Objetivo Entender qué hace una función hash criptográfica
Enfoque Conceptual, formal y aplicado
Resultado Distinguir integridad, colisiones y preimagen con claridad

13.1 Introducción

En seguridad es muy común querer responder preguntas como estas: ¿un archivo cambió?, ¿un mensaje fue alterado?, ¿dos contenidos son exactamente iguales?, ¿cómo verificar un documento sin procesarlo completo todo el tiempo? Las funciones hash criptográficas ofrecen una herramienta poderosa para abordar este tipo de problemas.

Su rol no es ocultar datos como el cifrado ni establecer identidad por sí solas como una firma completa. Su función es condensar información en una huella digital de tamaño fijo que reacciona de forma muy sensible a cualquier cambio en la entrada.

13.2 Qué es una función hash criptográfica

Una función hash criptográfica toma una entrada de tamaño arbitrario y produce una salida de longitud fija, llamada hash, digest o resumen. Esa salida actúa como una representación compacta del contenido original.

Por ejemplo, un archivo de unos pocos bytes y un video de varios gigabytes pueden procesarse por la misma función hash y ambos producirán una salida del mismo tamaño, aunque obviamente distinta si el contenido es diferente.

13.3 Qué significa que sea criptográfica

No toda función hash es criptográfica. Existen funciones hash usadas para tablas hash, índices o estructuras de datos que son rápidas y prácticas, pero no están diseñadas para resistir ataques. Una función hash criptográfica debe cumplir propiedades más fuertes relacionadas con integridad y resistencia a manipulación.

Su objetivo no es solo resumir datos eficientemente, sino hacerlo de una manera que sea robusta frente a adversarios que intentan construir entradas engañosas o explotar colisiones.

13.4 Determinismo

Una propiedad básica es el determinismo. Si procesamos exactamente la misma entrada con la misma función hash, el resultado siempre debe ser el mismo. Esto parece obvio, pero es fundamental porque permite comparar y verificar contenidos de forma consistente.

Sin determinismo, el hash no serviría como huella confiable del contenido.

13.5 Salida de longitud fija

Otra propiedad importante es que la salida tiene longitud fija. Esto hace que el resumen sea manejable y comparable sin importar cuánto mida la entrada original. Un hash de 256 bits, por ejemplo, siempre tendrá ese tamaño, independientemente del tamaño del archivo o mensaje procesado.

Esta característica es una de las razones por las que los hashes son tan útiles en integridad, índices, firmas y protocolos.

13.6 Efecto avalancha

Una buena función hash criptográfica debe presentar efecto avalancha: un cambio mínimo en la entrada, como modificar un solo bit, debe producir una salida completamente diferente y sin relación visible con la anterior.

Esto evita que pequeños cambios queden reflejados de forma demasiado predecible y refuerza la sensibilidad del resumen frente a cualquier alteración.

13.7 Resistencia a preimagen

Una de las propiedades fundamentales es la resistencia a preimagen. Significa que, dado un hash h, debe ser computacionalmente inviable encontrar una entrada m tal que la función hash de m sea precisamente h.

En otras palabras, ver la huella no debería permitir reconstruir el contenido original. Esto ayuda a entender por qué un hash no es reversible como el cifrado.

13.8 Resistencia a segunda preimagen

Otra propiedad clave es la resistencia a segunda preimagen. Si ya tenemos una entrada m, debe ser muy difícil encontrar otra entrada diferente m' que produzca exactamente el mismo hash.

Esta propiedad importa especialmente cuando se quiere evitar que un atacante sustituya un contenido legítimo por otro distinto que conserve el mismo resumen.

13.9 Resistencia a colisiones

La resistencia a colisiones significa que debe ser muy difícil encontrar dos entradas distintas cualesquiera que produzcan el mismo hash. A diferencia de la segunda preimagen, aquí el atacante puede elegir libremente ambas entradas.

Como el espacio de entradas posibles es mucho mayor que el espacio de salidas fijas, sabemos que colisiones matemáticamente existen. Lo importante es que encontrarlas sea computacionalmente impracticable.

13.10 Colisión no es lo mismo que preimagen

Estos conceptos suelen confundirse, pero no son equivalentes:

  • Preimagen: dado un hash, encontrar una entrada que lo produzca.
  • Segunda preimagen: dada una entrada, encontrar otra distinta con el mismo hash.
  • Colisión: encontrar cualquier par de entradas distintas con el mismo hash.

Cada una representa un nivel distinto de dificultad y un tipo distinto de seguridad requerida.

13.11 La paradoja del cumpleaños

Cuando hablamos de colisiones, aparece una idea importante de probabilidad: la paradoja del cumpleaños. En términos prácticos, muestra que encontrar colisiones puede requerir bastante menos esfuerzo del que intuitivamente se esperaría si solo miráramos el tamaño total del espacio de salida.

Por eso, para resistencia a colisiones, una función hash de n bits suele ofrecer una seguridad efectiva del orden de n/2 bits frente a ataques genéricos de cumpleaños.

13.12 Qué usos tiene una función hash

Las funciones hash criptográficas aparecen en numerosos contextos:

  • Verificación de integridad de archivos.
  • Firmas digitales.
  • HMAC y autenticación de mensajes.
  • Almacenamiento seguro de contraseñas, combinado con otras técnicas.
  • Deduplicación y comparación eficiente de datos.
  • Cadenas de bloques y estructuras encadenadas de integridad.

13.13 Hash no es cifrado

Es fundamental insistir en una diferencia ya anticipada: un hash no cifra. El cifrado está pensado para ocultar información y luego recuperarla con una clave. El hash, en cambio, produce un resumen fijo que no está diseñado para revertirse.

Por eso decir que una contraseña está "encriptada" cuando en realidad está almacenada como hash es técnicamente incorrecto. Son mecanismos con objetivos distintos.

Si un sistema necesita recuperar el dato original, no debe usar hashing como reemplazo del cifrado. Si solo necesita verificarlo, el hashing puede ser apropiado.

13.14 Hash tampoco es firma

Un hash por sí solo no demuestra quién produjo el contenido. Cualquiera puede calcular el hash de un mensaje si la función es pública. Para obtener autenticidad o no repudio, el hash debe integrarse con una clave o con una firma digital.

Esto explica por qué los hashes suelen ser una pieza dentro de un mecanismo mayor y no una solución completa por sí mismos.

13.15 Verificación de integridad

Uno de los usos más intuitivos del hashing es la verificación de integridad. Si un proveedor publica el hash de un archivo y luego el usuario calcula el hash de la copia descargada, ambos valores deberían coincidir si el archivo no fue alterado.

Este proceso no prueba quién generó el archivo ni protege por sí solo frente a un atacante que pueda reemplazar tanto el archivo como el hash publicado, pero sí sirve como control de consistencia e integridad cuando el canal de referencia es confiable.

13.16 Hashes y firmas digitales

En firmas digitales no se suele firmar el documento completo directamente con un algoritmo asimétrico pesado. Lo habitual es calcular primero el hash del documento y luego firmar ese hash. Esto mejora eficiencia y mantiene la sensibilidad a cualquier cambio en el contenido.

Si el documento cambia, su hash cambia, y la firma deja de verificar correctamente.

13.17 Hashes y autenticación

Las funciones hash también sirven como base para mecanismos de autenticación con clave, como HMAC. En ese caso, la función hash por sí sola no basta; se la combina con un secreto compartido para verificar tanto integridad como autenticidad del mensaje.

Más adelante estudiaremos HMAC con detalle, pero es importante anticipar que el hash es la pieza central de muchas construcciones de seguridad más complejas.

13.18 Tamaño de salida y seguridad

El tamaño del hash importa porque condiciona el costo de ataques genéricos. Cuanto más corta sea la salida, más fácil será en principio buscar colisiones o intentar ataques de preimagen. Por eso las funciones hash modernas suelen usar tamaños de salida suficientemente grandes para el nivel de seguridad buscado.

Elegir un algoritmo con salida demasiado pequeña puede dejar corto el margen de seguridad.

13.19 Qué hace vulnerable a una función hash

Una función hash deja de ser apropiada para fines criptográficos si aparecen ataques que reducen sustancialmente el costo de encontrar colisiones, segundas preimágenes o estructuras explotables. También puede volverse problemática si muestra comportamientos estadísticos débiles o propiedades no deseadas frente a construcciones reales.

Esto explica por qué algunos algoritmos históricamente populares dejaron de ser recomendables con el tiempo.

13.20 Errores conceptuales frecuentes

  • Confundir hash con cifrado reversible.
  • Creer que un hash por sí solo autentica un mensaje.
  • Pensar que "siempre que dos hashes coinciden, el origen es confiable".
  • Ignorar la diferencia entre preimagen, segunda preimagen y colisión.
  • Suponer que cualquier función hash rápida sirve para seguridad.

13.21 Qué debes recordar de este tema

  • Una función hash criptográfica produce un resumen de longitud fija a partir de entradas de tamaño arbitrario.
  • Debe ser determinística, sensible a cambios y resistente a preimagen, segunda preimagen y colisiones.
  • Hashing no es cifrado y no está pensado para recuperar el dato original.
  • Un hash por sí solo no autentica ni firma, pero es base de firmas, HMAC e integridad.
  • La seguridad depende de la robustez criptográfica del algoritmo y del contexto donde se lo use.
  • Los hashes son una pieza fundamental de múltiples mecanismos de seguridad modernos.

13.22 Conclusión

Las funciones hash criptográficas son una de las herramientas más versátiles y fundamentales de la seguridad digital. Aunque no cifran ni autentican por sí solas, permiten construir integridad, firmas, autenticación y protección de contraseñas sobre una base matemática compacta y eficiente.

En el próximo tema compararemos algoritmos concretos como MD5, SHA-1, SHA-2 y SHA-3, distinguiendo cuáles quedaron obsoletos y cuáles siguen siendo adecuados en la práctica moderna.