Skip to content

Comparison

SHA-1 vs SHA-256: SHA-1 está muerto, pero Git sigue usándolo

SHA-1: no lo uses. SHA-256: sí, para todo.

By Published

Resumen. SHA-1 está criptográficamente roto — Google demostró una colisión práctica en 2017 y los ataques de prefijo elegido se volvieron asequibles en 2020 — así que usa SHA-256 para cualquier nueva aplicación de seguridad. Git sigue usando SHA-1 para hashes de objetos pero está migrando; las huellas digitales no relacionadas con la seguridad (cachés, deduplicación) no se ven afectadas.

SHA-1 (salida de 160 bits, 1995) y la familia SHA-2 (salidas de 256/384/512 bits, 2001) son ambas funciones hash criptográficas publicadas por NIST. SHA-1 fue el hash de integridad dominante durante la década de 2000. Ahora está deprecado en todos los lugares donde importa la seguridad — pero aún no en todos los lugares.

El resumen

PropiedadSHA-1SHA-256
Tamaño de salida160 bits (40 caracteres hex)256 bits (64 caracteres hex)
Publicado1995 (NIST FIPS 180-1)2001 (NIST FIPS 180-2)
Colisión teórica2005 (Wang et al., 2⁶⁹)Ninguna demostrada
Colisión práctica2017 (Google SHAttered, ~110.000 $ en cómputo en nube)Ninguna a partir de 2026
Estado en certificados TLSDeprecado en 2017Estándar actual
Estado en GitTodavía predeterminado, migración en cursoOpt-in mediante repositorios SHA-256
Velocidad (x86-64)~700 MB/s~400 MB/s (más lento)

Cómo se rompió SHA-1

Una función hash criptográfica debe hacer computacionalmente inviable encontrar dos entradas que produzcan el mismo hash. La salida de 160 bits de SHA-1 daba una resistencia a colisiones de 2⁸⁰ en papel — muy por encima de los presupuestos de fuerza bruta en el momento del diseño en 1995.

Tres hitos erosionaron eso:

  1. 2005: Wang, Yin y Yu publicaron un ataque teórico que reducía la búsqueda de colisiones a ~2⁶⁹ operaciones — todavía inviable en ese momento pero una advertencia clara.
  2. 2017: El proyecto SHAttered de Google demostró la primera colisión práctica de SHA-1: dos PDFs con el mismo hash SHA-1. Coste: ~110.000 $ de cómputo en GPU y 9 trillones de evaluaciones SHA-1.
  3. 2020: Leurent y Peyrin publicaron un ataque de colisión de prefijo elegido — dados dos encabezados de archivo arbitrarios, añade bytes cuidadosamente elaborados y produce archivos que colisionan. Coste: ~45.000 $ en cómputo en nube. Este es el tipo de ataque que permite falsificar certificados y suplantar firmas en la práctica.

Después de 2020, SHA-1 es inadecuado para cualquier propósito de seguridad donde la falsificación sea relevante.

Dónde SHA-1 sigue siendo aceptable

Las huellas digitales no adversariales — donde no hay incentivo de atacante para falsificar colisiones — siguen estando bien con SHA-1:

  • Hashes de objetos commit y tree de Git. Un atacante que falsifique una colisión necesitaría inyectar commits elaborados y que sean aceptados en los espejos principales. Git también ejecuta la detección de patrones de ataque conocidos (la detección de SHAttered) en cada operación, haciendo visible la inyección de ataques.
  • Almacenamiento direccionable por contenido donde tú controlas todas las entradas (cachés de compilación, deduplicación de CDN).

Incluso en estos casos, SHA-256 es el valor predeterminado correcto para nuevos sistemas. La brecha de rendimiento (SHA-256 es ~40% más lento que SHA-1 en la mayoría de CPUs modernas) es irrelevante para casi todas las cargas de trabajo.

Dónde SHA-256 es obligatorio

  • Firmas de certificados TLS. Los navegadores dejaron de aceptar SHA-1 en 2017.
  • Firmas JWT (HS256, RS256, ES256). El 256 es SHA-256.
  • Firma de código. Microsoft y Apple dejaron de aceptar firmas SHA-1 alrededor de 2016-2017.
  • Cualquier lugar donde los ataques de colisión habilitarían la falsificación. Firmas de documentos, criptomonedas, pruebas de identidad.

La migración de Git

Git ha estado migrando a SHA-256 desde 2018. La migración es técnicamente sencilla pero lleva tiempo porque cada servidor Git, cada sistema CI/CD, cada gestor de dependencias tiene que admitir ambos. Estado a partir de 2026:

  • Los repositorios SHA-256 funcionan de extremo a extremo en Git moderno.
  • GitHub admite repos SHA-256 pero usa SHA-1 por defecto para nuevos repos.
  • GitLab y Bitbucket: soporte parcial, varía según la versión.
  • La mayoría de las integraciones CI funcionan con ambos.

El comportamiento predeterminado para el CLI de Git sigue siendo SHA-1. Para crear un repositorio SHA-256: git init --object-format=sha256. Una vez que la migración se complete — probablemente en el plazo de 2027-2028 — el valor predeterminado cambiará.

La regla pragmática

  • Para nuevos sistemas: SHA-256. Siempre. La brecha de rendimiento no importa.
  • Para sistemas SHA-1 heredados: migra cuando sea factible, pero no entres en pánico — la amenaza es real pero específica.
  • Para Git específicamente: SHA-1 está bien por ahora. Observa cómo SHA-256 se convierte en el predeterminado.
  • Para TLS, firma de código, JWT, cripto: SHA-256 ya era la única opción aceptable.

Calcula ambos hashes con nuestro generador de hash.

Datos numéricos

  • Longitud hex: SHA-1 = 40 chars (160 bits); SHA-256 = 64 chars (256 bits); base64url = 27 chars vs 43 chars sin relleno.
  • Resistencia a colisiones por el cumpleaños: SHA-1 ~2⁸⁰ genérico, bajó a ~2⁶¹ después del ataque SHAttered de 2017; SHA-256 permanece ~2¹²⁸.
  • Coste SHAttered (2017): 9.223.372.036.854.775.808 evaluaciones SHA-1, ~110.000 $ en tiempo de GPU en nube, equivalente a 6.500 años-CPU.
  • Ataque de prefijo elegido (Leurent & Peyrin, 2020): ~45.000 $ en AWS — asequible para operaciones criminales de tamaño mediano.
  • Rendimiento en Intel SHA-NI (Ice Lake / Zen 3+): SHA-1 ~2,1 GB/s/núcleo; SHA-256 ~1,9 GB/s/núcleo — la aceleración por hardware reduce la brecha a ~10%, no 40%.
  • Sin aceleración por hardware: SHA-1 ~700 MB/s frente a SHA-256 ~400 MB/s — la brecha heredada de ~40% que la gente cita.
  • Tamaño de bloque: ambos usan bloques de 512 bits; SHA-1 produce un estado de 160 bits, SHA-256 un estado de 256 bits.
  • Navegadores en 2017: Chrome 56, Firefox 51, Edge — todos dejaron de aceptar certificados TLS SHA-1 el 24 de enero de 2017.

Matriz de decisión

Caso de usoHash
Firma de certificado TLSSHA-256 (SHA-1 prohibido)
JWT HS256/RS256/ES256SHA-256
HMAC para firma de solicitudes de APIHMAC-SHA-256
Firma de código (Authenticode, codesign)SHA-256
Hash de bloque Bitcoin / derivación de direcciónSHA-256 (doble hash)
Hash de objeto Git (repo heredado)SHA-1 aceptable, con detección de colisiones
Hash de objeto Git (nuevo repo)SHA-256 mediante --object-format=sha256
ETag de CDN / clave de cachéCualquiera; SHA-256 bien en CPUs modernas
Hash de contraseñaNinguno — usa argon2id / bcrypt / scrypt

Fuentes

Frequently asked questions

¿Está SHA-1 realmente roto?
Sí — en la práctica desde 2017 (SHAttered de Google demostró una colisión real de PDF por 110.000 $ de cómputo) y de forma drástica desde 2020 (colisiones de prefijo elegido por 45.000 $). Cualquier caso de uso de seguridad donde un atacante se beneficiaría de un hash falsificado es vulnerable.
¿Por qué Git sigue usando SHA-1?
Inercia y un modelo de amenaza pragmático. Los hashes de Git son direccionables por contenido, no tokens de seguridad, y la lógica de detección de SHAttered que incluye Git detecta los patrones de ataque conocidos. La migración a SHA-256 está en marcha desde 2018, pero cada servidor y herramienta de Git tiene que admitir ambos, lo cual lleva tiempo.
¿Es SHA-256 más lento que SHA-1?
Aproximadamente un 40% más lento en la mayoría de CPUs modernas — alrededor de 400 MB/s frente a 700 MB/s. Ambos están dominados por E/S para cualquier carga de trabajo realista, por lo que la diferencia rara vez es significativa. La aceleración por hardware (extensiones SHA de Intel, criptografía ARMv8) reduce aún más la brecha.
¿Dónde nunca debo usar SHA-1?
Firmas de certificados TLS (los navegadores dejaron de aceptarlas en 2017), firmas JWT, firma de código, firmas de documentos, criptomonedas, pruebas de identidad — en cualquier lugar donde una colisión falsificada beneficiaría a un atacante. SHA-256 o superior es el único valor predeterminado aceptable para nuevos sistemas.

Related

Published May 15, 2026