Guías Seguridad

Cómo funciona el hashing

Qué hace una función hash, el efecto avalancha mostrado con salida real de SHA-256, qué algoritmos siguen siendo seguros, HMAC y cómo guardar contraseñas correctamente.

Última revisión:

AdSense Placeholder
Slot: header_reference_page
En esta página

Una función hash convierte cualquier entrada, desde una sola letra hasta una película entera, en una huella corta de tamaño fijo. La misma entrada da siempre la misma huella; una entrada distinta da una completamente distinta; y no hay forma práctica de volver de la huella a la entrada. Cree una con el Generador de Hash.

Propiedades de un buen hash

  • Determinista. hello con SHA-256 da siempre 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824.
  • Longitud fija. El hash de una cadena vacía y el de un archivo de 4 GB son ambos de 64 caracteres hexadecimales (256 bits) con SHA-256.
  • Efecto avalancha. Cambie una letra y cambia aproximadamente la mitad de los bits de salida. hello y hellp difieren en un carácter, pero sus hashes SHA-256 difieren en 131 de 256 bits: fdd7585e08c4e2afd71dcabdb4636c89d557a3f42db9e2040c8bbd1708aa4ce7.
  • Unidireccional. Conocer el hash no permite recuperar la entrada, salvo adivinando entradas y calculando su hash.
  • Resistente a colisiones. Debería ser inviable encontrar dos entradas distintas con el mismo hash.

Algoritmos habituales

Algoritmo Tamaño de salida Longitud hex Estado
MD5 128 bits 32 Roto: las colisiones son fáciles. Solo vale para sumas de control sin fines de seguridad
SHA-1 160 bits 40 Roto para firmas: existen colisiones prácticas. Evítelo
SHA-256 256 bits 64 Seguro; la opción estándar
SHA-512 512 bits 128 Seguro; a menudo más rápido que SHA-256 en CPU de 64 bits
SHA3-256 256 bits 64 Seguro; un diseño distinto al de la familia SHA-2

Para qué se usan los hashes

  • Comprobar la integridad de archivos. Publique el SHA-256 de una descarga para que se confirme que se obtuvo el archivo exacto. Un solo bit cambiado da un hash distinto.
  • Firmas digitales. Se firma el hash de un mensaje en lugar del mensaje entero.
  • Deduplicación y caché. El contenido idéntico tiene hash idéntico.
  • Guardar contraseñas, pero solo con los métodos especiales de abajo. Un SHA-256 simple es la herramienta equivocada.
  • Autenticación de mensajes. HMAC mezcla una clave secreta en el hash: el HMAC-SHA-256 de The quick brown fox jumps over the lazy dog con la clave key es f7bc83f430538424b13298e6aa6fb143ef4d59a14946175997479dbc2d1a3cd8. Solo quien tiene la clave puede producirlo o comprobarlo.

Hashear no es cifrar

El cifrado se puede revertir con una clave; un hash no se puede revertir en absoluto. Un hash tampoco dice que un archivo sea seguro, solo que está sin cambios desde que se calculó.

Guardar contraseñas correctamente

El problema son los hashes rápidos: un atacante con una base de datos robada puede probar miles de millones de intentos SHA-256 por segundo con una tarjeta gráfica, y las contraseñas comunes caen al instante.

  • Añada una sal (salt), un valor aleatorio único por usuario guardado junto al hash. Dos usuarios con la misma contraseña obtienen entonces hashes distintos y las «tablas arcoíris» precalculadas no sirven.
  • Use un hash de contraseñas deliberadamente lento y que consuma memoria: Argon2id (preferido), scrypt, bcrypt o PBKDF2 con muchas iteraciones. Pruebe bcrypt con el Generador Bcrypt.
  • No invente nunca su propio esquema ni guarde contraseñas en texto plano, cifradas de forma reversible o con MD5 o SHA-1.

Calcule lo adivinable que es una contraseña con el Auditor de Fortaleza y Entropía de Contraseñas.

Errores habituales

  • Usar MD5 o SHA-1 donde importa la seguridad.
  • Comparar hashes con una comparación de cadenas normal cuando protegen secretos. Use una comparación de tiempo constante para evitar fugas por tiempos.
  • Hashear entradas cortas o predecibles (un teléfono, una fecha de nacimiento) y llamar anónimo al resultado. Cualquiera puede calcular el hash de todos los valores posibles y buscarlo.

Vea Hash, Sal (salt) y HMAC.

Pruebe estas herramientas

Véase también

  • Glosario Hash
    Un hash es la huella de longitud fija que calcula una función hash a partir de cualquier entrada.
  • Glosario Sal (salt)
    Una sal (salt) es un valor aleatorio único que se añade a una contraseña antes de calcular su hash.
  • Glosario HMAC
    HMAC (código de autenticación de mensajes basado en hash) es un hash calculado con una clave secreta.
  • Glosario Suma de comprobación (checksum)
    Una suma de comprobación (checksum) es un valor pequeño calculado a partir de un bloque de datos y usado para detectar errores accidentales.
  • Guía Cómo funcionan los JSON Web Tokens (JWT)
    Las tres partes de un JWT con un ejemplo real decodificado, los claims registrados, cómo verifican la firma los servidores.

Preguntas frecuentes

No matemáticamente, pero las entradas débiles se pueden recuperar calculando hashes de intentos hasta que uno coincida. Por eso las contraseñas necesitan una sal y un algoritmo lento.

AdSense Placeholder
Slot: footer_leaderboard