Progreso del curso: 0%
Tema 33.3

Las funciones hash

33.3 Las funciones hash

Las funciones hash (o funciones de dispersión) son algoritmos matemáticos que transforman un conjunto arbitrario de datos de cualquier tamaño en una cadena de caracteres de longitud fija, denominada hash o resumen. A diferencia de los algoritmos criptográficos simétricos o asimétricos, las funciones hash no son realmente algoritmos de cifrado: no intentan ocultar información, sino crear un identificador único y verificable para datos específicos. La función hash es un componente fundamental en la firma digital, permitiendo crear firmas eficientes incluso para documentos de tamaño masivo.

Dentro del módulo de Firma Digital, después de comprender la criptografía asimétrica, las funciones hash representan el puente que hace práctica y eficiente la firma digital. Sin funciones hash, firmar un documento grande requeriría procesos criptográficos intensivos computacionalmente. Las funciones hash permiten concentrar la información relevante (la identidad y contenido único del documento) en un pequeño resumen que puede ser firmado rápidamente.

Características de las funciones hash criptográficas

Una función hash criptográfica debe cumplir con propiedades específicas que la diferencian de funciones hash simples utilizadas en programación general. Estas propiedades son:

Determinismo: el mismo entrada siempre produce el mismo hash. Si se calcula el hash de un documento dos veces, sin cambios entre cálculos, el resultado debe ser idéntico. Esta propiedad permite verificar integridad: si el hash de un documento descargado coincide con un hash conocido, se puede confirmar que no ha sido alterado.

Eficiencia: el cálculo del hash debe ser rápido, incluso para documentos muy grandes. Una función hash debe procesar un documento de 1 gigabyte en segundos, no en minutos.

Resistencia débil a colisiones: es computacionalmente improbable encontrar dos documentos diferentes que generen el mismo hash. La probabilidad debe ser tan baja que, en la práctica, se considera imposible. Esta propiedad es fundamental: si fuera fácil encontrar dos documentos con el mismo hash, alguien podría crear un documento falso que tuviera el mismo hash que un documento legítimo, invalidando toda seguridad.

Resistencia fuerte a colisiones: es computacionalmente improbable, dados un hash específico, encontrar un documento que genere ese hash. Esta propiedad es más robusta que la anterior.

Efecto alud: un cambio minúsculo en la entrada (cambiar un carácter de un documento) debe producir un hash completamente diferente. Si un documento de 1000 páginas es alterado en una coma, el nuevo hash no debe tener ningún parecido matemático al hash original.

Algoritmos hash comúnmente utilizados

MD5 (Message Digest 5) fue durante décadas un estándar industrial para crear hashes, produciendo un resumen de 128 bits. Sin embargo, en 2004 se descubrieron vulnerabilidades significativas en MD5, demostrándose que es posible crear deliberadamente dos documentos diferentes con el mismo hash (una colisión). Aunque MD5 permanece en uso en algunos contextos heredados, no es considerado seguro para aplicaciones criptográficas nuevas.

SHA-1 (Secure Hash Algorithm 1) fue el siguiente estándar, produciendo un resumen de 160 bits. Aunque fue considerado seguro durante muchos años, en 2005 se demostraron debilidades teóricas, y en 2017 se produjo el primer ataque práctico mostrando una colisión SHA-1. La mayoría de autoridades, incluyendo NIST (Instituto Nacional de Estándares y Tecnología de los EE.UU.) y organizaciones europeas, han descontinuado el uso de SHA-1 para nuevas implementaciones.

SHA-2 es una familia de funciones hash que incluye SHA-224, SHA-256, SHA-384 y SHA-512, produciendo resúmenes de 224, 256, 384 y 512 bits respectivamente. Actualmente, SHA-256 es el estándar de facto más utilizado en criptografía moderna, incluyendo blockchains como Bitcoin. No se conocen vulnerabilidades significativas en SHA-2, y es considerado seguro para nuevas implementaciones.

SHA-3 fue estandarizado por NIST en 2015 como alternativa a SHA-2, aunque no fue impulsado por el descubrimiento de vulnerabilidades sino como diversificación del portafolio de algoritmos criptográficos. SHA-3 utiliza una arquitectura matemática completamente diferente (basada en esponjas criptográficas) y es considerado altamente seguro, aunque su adopción es más lenta que SHA-2 debido a que SHA-2 continúa siendo suficientemente seguro.

Función hash en la firma digital

En la firma digital, el proceso funciona de la siguiente manera: primero se calcula el hash del documento utilizando un algoritmo como SHA-256. El resultado es un resumen de 256 bits (32 bytes). Este resumen se cifra utilizando la clave privada del firmante, produciendo la firma digital. El documento original y la firma se transmiten juntos.

La ventaja de este enfoque es que sólo el resumen pequeño debe ser cifrado, lo que es computacionalmente eficiente, mientras que la seguridad se mantiene porque cualquier alteración del documento original cambiaría el hash, invalidando automáticamente la firma. El receptor puede verificar la firma descifrar la firma usando la clave pública, obtener el hash original, calcular el hash del documento recibido, y comparar los dos hashes. Si coinciden, el documento es auténtico e íntegro.

Implicaciones para gestión comercial

En el contexto de gestión comercial, la comprensión de funciones hash tiene implicaciones prácticas. Cuando se descarga un documento firmado digitalmente de un servidor, es posible verificar su integridad comparando el hash publicado con un cálculo local. Muchas plataformas de software o documentos de importancia crítica publican hashes SHA-256 para permitir que usuarios verifiquen la autenticidad de descargas.

Adicionalmente, las funciones hash son utilizadas en auditoría y trazabilidad: registrando el hash de documentos en sistemas de timestamp (tratado en el siguiente apartado), se crea un registro verificable de que un documento existía en una fecha y hora específicas, sin revelar el contenido del documento si no es necesario.

Caso práctico: firma de contrato comercial con verificación de integridad

Una empresa española firma un contrato de suministro con un proveedor. El documento es firmado digitalmente por ambas partes utilizando sus certificados digitales. Después de firmar, el sistema calcula automáticamente el hash SHA-256 del documento firmado, produciendo un resumen único de 64 caracteres hexadecimales. Este hash es registrado en un sistema de auditoría central y también es enviado al proveedor.

Seis meses después, durante una disputa sobre términos del contrato, una de las partes alega que el contrato fue modificado. Para resolver esto, se calcula nuevamente el hash del documento contractual almacenado. Si el hash coincide con el hash original registrado, se confirma que el documento no ha sido alterado. Si el hash es diferente, evidencia que el documento ha sido modificado desde su firma, lo que constituye fraude.

Ideas clave

  • Las funciones hash transforman datos de tamaño arbitrario en un resumen de tamaño fijo que actúa como identificador único del contenido.
  • Las funciones hash criptográficas deben ser deterministas, eficientes, y resistentes a colisiones (imposible encontrar documentos diferentes con el mismo hash).
  • MD5 y SHA-1 son considerados criptográficamente debilitados; SHA-256 y SHA-3 son actualmente los estándares seguros para nuevas implementaciones.
  • En firma digital, el documento se procesa a través de una función hash, y el resumen resultante es lo que se cifra con la clave privada.
  • Un cambio microscópico en un documento produce un hash completamente diferente, detectando cualquier alteración posterior a la firma.
  • Las funciones hash permiten auditoría sin revelar contenido: registrando hashes en sistemas de timestamp se crea prueba verificable de existencia sin exponer información sensible.
¿Has terminado este apartado? Tu progreso se guarda en este navegador. Regístrate para conservarlo en tu cuenta.