¿Qué es una función de hash?
Una función de hash transforma cualquier contenido — una frase, un programa, una copia de seguridad de varios gigabytes — en una cadena de longitud fija llamada hash o resumen. Tres propiedades la definen: la salida tiene siempre el mismo tamaño sea cual sea la entrada, el mismo contenido produce siempre el mismo hash, y remontar del hash a la entrada debe ser imposible en la práctica. Es ese tercer punto lo que distingue un hash criptográfico de una suma de comprobación como el CRC32.
En la práctica, dos usos ocupan la mayor parte del terreno. Verificar la integridad : el editor publica el hash de su archivo, tú lo recalculas y la igualdad demuestra que la descarga no ha sido alterada. Comparar contenidos : en lugar de conservar los propios documentos, se conservan sus hashes — idénticos, significan contenidos idénticos, sin revelar nada sobre su naturaleza.
¿Qué algoritmo elegir hoy?
SHA-256 es la respuesta por defecto: estandarizado por la NSA y luego adoptado en todas partes, implementado en cada lenguaje y sin colisiones conocidas. SHA-512 conviene para grandes volúmenes cuando el procesador es de 64 bits, a menudo más rápido que su primo en este tipo de arquitectura. SHA-384 no aporta nada especial más allá de una variante más larga. Para firmar mensajes con clave, el HMAC-SHA-256 es la referencia: combina la clave secreta y el hash, de modo que solo el poseedor de la clave puede producir el mismo valor.
El MD5 y el SHA-1 siguen siendo útiles para controles no sensibles — un índice, una caché, una detección de duplicados — donde la rapidez importa más que la resistencia. El CRC32, en cambio, no es un hash criptográfico: detecta alteraciones accidentales, pero una alteración deliberada se fabrica en pocos segundos.
¿Por qué se consideran rotos MD5 y SHA-1?
Porque investigadores han fabricado, para cada uno de ellos, dos documentos distintos que comparten el mismo hash. En el caso de MD5, la demostración data de 2004; en el de SHA-1, se produjo una colisión real en 2017 con el nombre de SHAttered. Basta una colisión para romper una firma: si el atacante elige el documento y el editor no hace más que hashearlo, puede terminar firmando un contenido distinto. Por eso los certificados TLS, las actualizaciones de software y las firmas de paquetes abandonaron estos algoritmos.
Lo que el hash no hace
Hashear no es cifrar: un hash es irreversible por diseño, pero no protege el contenido volviéndolo ilegible. El hash no cifra nada, no sustituye ni a TLS ni a una clave de cifrado, y tampoco protege una contraseña por sí solo — para eso están bcrypt, scrypt o Argon2, diseñados para ser lentos. Por último, hashear dos veces no refuerza nada: encadenar algoritmos solo añade una capa frágil donde basta una única función no rota.
Recomendado para
Administradores de sistemas y responsables de TI que verifican sumas de comprobación de distribuciones, desarrolladores que sellan artefactos o autentican webhooks, auditores y equipos de cumplimiento que comprueban la integridad de copias de seguridad, periodistas y analistas que comparan documentos sin difundirlos, estudiantes de criptografía que trabajan con los conceptos de hash, colisión y sal — y cualquier persona que quiera hashear un contenido rápido y sin dejar rastro, con como complementos el generador de contraseñas, el codificador y decodificador Base64, el decodificador JWT, el probador de regex y el contador de caracteres.