Función hash criptográfica

Definición

Una función hash criptográfica es un algoritmo matemático que toma cualquier dato de entrada, sin importar su tamaño, y lo convierte en un resumen de longitud fija. Algunas versiones modernas, llamadas funciones de salida extensibles (XOF), pueden producir salidas de longitud personalizable. Las funciones hash tienen varias propiedades esenciales: son deterministas, lo que significa que la misma entrada siempre produce la misma salida; son resistentes a la preimagen, por lo que es prácticamente imposible revertir un hash para encontrar la entrada original; son resistentes a colisiones, lo que hace prácticamente imposible encontrar dos entradas diferentes que produzcan el mismo hash; y exhiben el efecto avalancha, donde incluso un pequeño cambio en la entrada resulta en una salida completamente diferente. Bitcoin utiliza SHA-256 para la minería y el hash de transacciones, mientras que Ethereum utiliza Keccak-256, una variante de SHA-3. Las funciones hash son la base de la seguridad de la cadena de bloques : permiten desde probar el trabajo en la minería hasta crear pruebas de árbol Merkle y firmar transacciones.

Ilustrado de las propiedades de la función hash

Ejemplos de hash SHA-256: Entrada: “Hola” Salida: 185f8db32271fe25f561a6fc938b2e26…

Entrada: “hola” (minúsculas) Salida: 2cf24dba5fb0a30e26e83b2ac5b9e29e… → Completamente diferente (efecto avalancha)

Entrada: archivo de película de 10 MB Salida: Sigue teniendo solo 64 caracteres hexadecimales (256 bits) → Tamaño de salida fijo independientemente del tamaño de entrada.

Demostración de resistencia a la preimagen: Objetivo: Encontrar una entrada que produzca “0000abc…”. Único método: Fuerza bruta (probar miles de millones de entradas). Minería de Bitcoin: Exactamente esto: encontrar un nonce que produzca un hash por debajo del objetivo. A 500 exahash/segundo (red Bitcoin): ~500,000,000,000,000,000,000 intentos/segundo.

Resistencia a colisiones: Objetivo: Encontrar dos entradas diferentes que produzcan el mismo hash SHA-256: No se encontraron colisiones (2^128 operaciones para encontrar una) SHA-1 (obsoleto): Se encontraron colisiones (Google, 2017) → Ya no es confiable

Funciones hash utilizadas en criptografía

Función hash Tamaño de salida Utilizado en Estado
SHA-256 256 bits de Bitcoin (minería, transacciones) Seguro
Keccak-256 256 bits de Ethereum (direcciones, transacciones) Seguro
SHA-3-256 256 bits de Algunos protocolos más recientes Seguro
BLAKE2/BLAKE3 Variable (como un XOF) Zcash, algunos protocolos Seguro, más rápido
SHA-1 160 bits de Legado (obsoleto) AVERÍA (se detectó una colisión)
MD5 128 bits de Legado (obsoleto) ROTO (colisión trivial)
RIPEMD-160 160 bits de Derivación de direcciones Bitcoin Seguro (con SHA-256)

Preguntas Frecuentes

P: ¿Por qué no podemos invertir un hash para encontrar la entrada?

Las funciones hash implican operaciones matemáticas no reversibles: descartan información deliberadamente. Se puede verificar que hash(entrada) = salida, pero no se puede invertir matemáticamente hash(salida) → entrada. El único ataque general conocido es la fuerza bruta: probar muchas entradas hasta encontrar una que genere el hash deseado. Para salidas de 256 bits, esto requiere aproximadamente 2^256 intentos, más que átomos en el universo observable. Esta irreversibilidad es lo que hace que las funciones hash sean útiles para el almacenamiento de contraseñas, firmas digitales y pruebas de trabajo.

P: ¿Qué es el “efecto avalancha” y por qué es importante?

El efecto avalancha implica que incluso un solo bit (un carácter) en la entrada produce un hash completamente diferente; normalmente, la mitad de los bits de la salida cambian. Esto es crucial para la seguridad de la cadena de bloques: si se modifica ligeramente el encabezado de un bloque (para cambiar una marca de tiempo o una transacción), el hash cambia por completo y se vuelve inválido, lo que obliga a rehacer toda la prueba de trabajo. Esto hace que el historial de transacciones de la cadena de bloques sea prácticamente inmutable.

P: ¿Cómo se utilizan las funciones hash en las firmas digitales?

En lugar de firmar directamente un documento extenso, primero se aplica una función hash al documento (generando 256 bits independientemente de su tamaño) y luego se firma el hash con la clave privada. Este método es eficiente (firmar un hash de tamaño fijo es mucho más rápido que firmar un archivo de un gigabyte) y mantiene la seguridad (la firma demuestra que usted firmó este documento específico; cualquier modificación altera el hash e invalida la firma). Todas las firmas de transacciones de blockchain siguen este patrón.

Noticias y Eventos