Cómo verificar la integridad de un archivo con hashes

· 9 min de lectura

Cuando descargas software, firmware o documentos importantes, ¿cómo sabes que el archivo es exactamente lo que el editor pretendía? El hashing de archivos te da una huella criptográfica, una cadena única que cambia si incluso un solo byte del archivo es diferente. Verificar un hash lleva segundos y puede salvarte de instalar software manipulado, flashear un firmware corrupto que bricke un dispositivo, o confiar en una copia de seguridad alterada que falle cuando realmente necesitas restaurarla.

Breve historia de las funciones hash

La idea de un checksum es más antigua que la informática, los contables usaban sumas de dígitos para detectar errores de transcripción mucho antes de que hubiera archivos que verificar. Los hashes criptográficos aparecieron a finales de los 80. Ron Rivest publicó MD4 en 1990 y MD5 en 1991, que se convirtió en el checksum de facto durante dos décadas. NIST estandarizó SHA-0 en 1993, luego lo retiró rápidamente en favor de SHA-1 en 1995 tras descubrirse un fallo. La familia SHA-2 (SHA-224, SHA-256, SHA-384, SHA-512) siguió en 2001 para abordar la debilidad inminente de SHA-1.

Cada generación fue retirada por ataques que resultaron más baratos de lo esperado. Las colisiones MD5 se demostraron en 2004, se hicieron prácticas para certificados digitales en 2008, y ahora son triviales. SHA-1 cayó con el ataque SHAttered de Google en 2017, cuando investigadores produjeron dos PDF diferentes con huellas SHA-1 idénticas. SHA-2 ha aguantado desde 2001, y SHA-3 (Keccak, estandarizado en 2015) proporciona un respaldo estructuralmente diferente por si SHA-2 alguna vez se rompe. La lección es que los algoritmos de hash tienen vida útil; el algoritmo correcto hoy puede tener que reemplazarse en una década.

Cómo funciona el hashing de archivos

Una función hash lee cada byte de un archivo y produce una cadena de longitud fija. El mismo archivo siempre produce el mismo hash. Cambia un byte, y el hash cambia por completo, esto se llama efecto avalancha y es la propiedad que hace útiles a los hashes para verificación.

Ejemplo:

Los dos hashes no comparten ningún patrón reconocible aunque los archivos difieran en un solo bit. Esa sensibilidad es lo que hace posible la verificación: genera el hash, compáralo con el hash publicado, y sabrás al instante si el archivo es auténtico.

Internamente, las funciones hash modernas trocean el archivo en bloques de tamaño fijo (64 bytes para SHA-256, 128 para SHA-512), pasan cada bloque por una función de compresión y encadenan el estado adelante. La salida es el estado final tras incorporar el último bloque. Como la cadena depende de cada byte, ningún atajo permite a un atacante cambiar contenido sin reescribir todo el hash.

Cómo verificar un archivo

  1. Encuentra el hash oficial, el editor de software típicamente lista los hashes de archivo en su página de descarga, a menudo etiquetados como "checksum SHA-256" o "archivo SHA256SUMS".
  2. Sube tu archivo descargado: selecciona el archivo en el calculador de hash. El hash se computa localmente en tu navegador; el archivo nunca sale de tu máquina.
  3. Compara los hashes: si tu hash calculado coincide exactamente con el hash oficial, el archivo es auténtico y no está corrupto. Copia-pega ambos en un diff de texto si las cadenas son largas.
  4. Empareja el algoritmo: los hashes SHA-256 solo coinciden con otros hashes SHA-256. Si el editor te da SHA-512, genera SHA-512 también; mezclar algoritmos es el error de "no coinciden" más común.
  5. Verifica el hash publicado en sí cuando puedas: un archivo SHA256SUMS firmado (firmado con la clave GPG del editor) te dice que la lista de hashes no fue alterada, lo que el hash desnudo en una página de descarga no hace.

Cuándo verificar hashes de archivo

Algoritmos soportados

AlgoritmoLongitud del hashBits de salidaRecomendación
MD532 hex128Solo heredado, roto, solo para corrupción accidental
SHA-140 hex160Solo heredado, roto, no confiar para seguridad
SHA-22456 hex224De nicho; prefiere SHA-256
SHA-25664 hex256Estándar general recomendado
SHA-38496 hex384Alta seguridad, usado en suites de cifrado TLS 1.3
SHA-512128 hex512Fuerza máxima de SHA-2, rápido en CPU 64 bits
SHA3-25664 hex256Diseño interno diferente de SHA-2, a prueba de futuro
BLAKE2b/BLAKE3varía256 o 512Hashes modernos más rápidos, usados por rsync, restic
CRC328 hex32Solo detección de error, no es un hash de seguridad

Si puedes elegir, SHA-256 es el valor por defecto correcto. Usa SHA-512 en máquinas de 64 bits para rendimiento ligeramente mejor (el algoritmo está afinado para palabras de 64 bits). Recurre a BLAKE3 cuando importe más el rendimiento, puede saturar SSD NVMe modernos de formas que SHA-256 no puede.

Hash vs firma digital

Un hash te dice si un archivo cambió. Una firma digital te dice si cambió Y quién creó el hash. Una firma es un hash cifrado con la clave privada del editor; lo descifras con su clave pública, recomputas el hash, y compruebas que ambos coincidan. Si coinciden, sabes que el archivo está intacto Y que el editor (o alguien con su clave privada) lo aprobó.

Cuando una página de descarga muestra tanto un hash SHA-256 como un archivo .sig o .asc, el hash protege contra la corrupción y la alteración accidental, pero la firma protege contra un atacante que vulneró el servidor de descarga. El atacante puede cambiar el archivo y actualizar el hash mostrado; no puede falsificar una firma válida sin la clave del editor.

Errores comunes

Herramientas y contextos alternativos

Un calculador de hash web es el camino más rápido cuando tienes un archivo que verificar. Para uso repetido o scripting, las herramientas de línea de comandos son el estándar.

HerramientaPlataformaFortalezaA tener en cuenta
Calculador de hash webNavegadorSin instalación, el archivo nunca se subeUn archivo a la vez
sha256sumLinuxRápido, scriptable, GNU coreutils--check lee archivos SHA256SUMS
shasum -a 256macOS, BSDIncluido, mismo formato de salidaNombre de binario diferente al de Linux
Get-FileHashWindows PowerShellDe primera clase en WindowsFormato de salida difiere de sha256sum
certutil -hashfileWindows cmdDisponible en cada WindowsSalida verbosa necesita parsing
openssl dgst -sha256MultiplataformaSi ya tienes OpenSSLMás lento que herramientas dedicadas
b3sumMultiplataformaBLAKE3, rendimiento multi-GB/sMás nuevo, menos omnipresente
rhashMultiplataformaComputa muchos algoritmos a la vezInstalación extra

En pipelines CI/CD la misma tarea normalmente corre como sha256sum file > file.sha256 durante el build y sha256sum -c file.sha256 durante la verificación, a veces envuelto en un manifiesto firmado. El principio (computar, publicar, comparar al recuperar) es idéntico al que la herramienta del navegador hace interactivamente.

Privacidad y el calculador de hash

El calculador de hash corre enteramente en tu navegador. El archivo que seleccionas se lee con la API FileReader, se pasa por la interfaz SubtleCrypto de Web Crypto, y el hash resultante se te muestra. Los bytes del archivo nunca viajan a nuestros servidores, no hay subida, ni registro de qué archivos se hashearon, ni analítica sobre tamaños o extensiones de archivo. Para material sensible, contratos, registros médicos, claves privadas, la diferencia entre una herramienta que sube y una que hashea localmente es la diferencia entre confiar en un tercero y no confiar en ninguno. Un hash es una salida diminuta (64 caracteres hex para SHA-256), pero la entrada que resume puede ser muy reveladora. Mantener esa entrada del lado del cliente es el valor por defecto correcto para cualquier tarea de verificación.

Preguntas frecuentes

¿Cómo comparar el hash de un archivo con el oficial?

Tras generar el hash, compáralo carácter por carácter con el hash publicado por la fuente (normalmente en la página de descarga). Si todos los caracteres coinciden, el archivo es auténtico y no está corrupto. Una sola diferencia significa que el archivo se ha modificado.

¿Qué algoritmo de hash usar?

SHA-256 es el estándar para la verificación de archivos. Usa el que proporcione el editor. Si puedes elegir, SHA-256 ofrece un buen equilibrio entre seguridad y rendimiento.

¿Puede un archivo corrupto tener el hash correcto?

Es teóricamente posible (una colisión), pero estadísticamente insignificante con SHA-256. Las probabilidades son tan astronómicamente bajas que, en la práctica, hashes idénticos garantizan archivos idénticos.

¿Se envía mi archivo a un servidor?

No. El hash se calcula íntegramente en tu navegador. Tu archivo nunca sale de tu dispositivo, lo cual lo hace seguro para cualquier tipo de documento, incluido el sensible.

What is the difference between a hash and a digital signature?

A hash proves a file has not changed since the hash was computed; anyone can verify it. A digital signature proves both integrity AND identity, the publisher signs the hash with their private key, and you verify with their public key. Hashes alone do not protect against a hacker who replaced both the file and the published hash on the same compromised mirror.

Why are MD5 and SHA-1 considered insecure?

Researchers have demonstrated practical collision attacks for both. In 2017 Google produced two different PDFs with identical SHA-1 hashes (the SHAttered attack), and MD5 collisions can be generated in seconds on a laptop. For deliberate-tamper detection use SHA-256 or stronger; MD5 and SHA-1 still work for catching accidental corruption but should never be trusted as security boundaries.