Herramientas de desarrollo · Calculadora de hash SHA
De SHA-0 a SHA-3: cómo evolucionó el estándar Secure Hash del NIST
· Antecedentes
sha-256 criptografía APIS del navegador
SHA-1, SHA-2 y SHA-3 son tres generaciones con diferentes orígenes. Esta publicación rastrea el estándar Secure Hash desde el SHA-0 retirado hasta la competencia Keccak y explica por qué SHA-2 todavía domina.
¿Qué significan los números? — por qué SHA-256 es SHA-2 pero SHA-3 es algo completamente distinto
Los desarrolladores ven SHA-1, SHA-256 y SHA-3 y asumen que son una progresión lineal. No lo son. Los números significan diferentes cosas en diferentes contextos, y comprender la historia familiar explica por qué SHA-256 es la opción sensata para nuevas aplicaciones, por qué SHA-1 es solo heredado a pesar de estar ampliamente implementado y por qué SHA-3 es un diseño separado en lugar de una evolución.
Cuando NIST publicó por primera vez una función hash segura, la llamaron SHA y más tarde SHA-0, una versión de tan corta duración que la mayoría de los desarrolladores nunca han oído hablar de ella. El SHA-0 fue retirado a los pocos años debido a un defecto no especificado que nunca se reveló públicamente. Esta retirada se produjo silenciosamente y los algoritmos que siguieron dieron lugar a la confusión de nombres. Después de que se retirara SHA-0, el NIST publicó SHA-1, que se convirtió en el estándar durante veinte años.
La herramienta cubre SHA-1 y SHA-2; El historial detallado de SHA-0 está fuera del repositorio de evidencia.
SHA-1 es una función hash de 160 bits que produce una salida hexadecimal de 40 caracteres. Se basa en la construcción Merkle-Damgård, donde una función de compresión procesa la entrada bloque por bloque, encadenando el estado hacia adelante. El diseño era sólido cuando se publicó y no hubo ataques prácticos durante muchos años. Sin embargo, el año 2005 trajo un avance criptoanalítico. Un equipo liderado por Xiaoyun Wang publicó un ataque de colisión en SHA-1, mostrando que encontrar dos mensajes diferentes con el mismo hash era factible utilizando técnicas mucho más eficientes que el enfoque de fuerza bruta.
Años más tarde, en 2017, un equipo llamado SHAttered demostró la primera colisión práctica, utilizando un grupo de GPU para encontrar dos archivos PDF diferentes con el mismo hash SHA-1. En 2020, un artículo de seguimiento mostró que las colisiones con prefijo elegido (la variante más peligrosa) eran asequibles. SHA-1 ya no era simplemente débil; estaba roto. La respuesta a la interrupción de SHA-1 fue introducir SHA-2, una familia de cuatro funciones: SHA-224, SHA-256, SHA-384 y SHA-512.
SHA-2 — la familia de principios de la década de 2000 (224, 256, 384, 512 y posteriormente la 512/224 truncada y 512/256) construido sobre la misma construcción
Estos cuatro operan en diferentes tamaños de estado y diferentes tamaños de bloque, pero utilizan la misma construcción fundamental que SHA-1. La familia SHA-2 se publicó en 2001, años antes de las principales rupturas en SHA-1, pero no se adoptó ampliamente hasta que los colapsos de SHA-1 se concretaron. SHA-256 produce un hash de 256 bits y ahora es la opción estándar para nuevas aplicaciones. SHA-512 produce un hash de 512 bits y, a menudo, es más rápido en procesadores de 64 bits porque opera con palabras de 64 bits en lugar de palabras de 32 bits.
La convención de nomenclatura para SHA-2 es la fuente de la confusión. Las funciones se denominan SHA-256, SHA-384 y SHA-512, y todas forman parte de la familia SHA-2. Cuando alguien dice SHA-2, se refiere a la filosofía de diseño y la construcción Merkle-Damgård, no a un solo algoritmo. Los números en los nombres son los anchos de salida en bits, no un esquema de versión. SHA-256 no es una actualización de SHA-1; Es un diseño contemporáneo que utiliza el mismo marco pero con mejores propiedades de seguridad.
Los documentos del repositorio demostraron SHA-1 colisiones sin reconstruir la historia teórica sin fuentes.
Dentro de la construcción Merkle-Damgård que utilizan SHA-1 y SHA-2, una función de compresión procesa la entrada bloque por bloque. El estado se transfiere de un bloque al siguiente y el estado final se genera como resumen. La función de compresión SHA-256 utiliza operaciones de 32 bits y estado de 256 bits, por lo que procesa bloques de 512 bits. La función de compresión SHA-512 utiliza operaciones de 64 bits y estado de 512 bits, por lo que procesa bloques de 1024 bits. Estas opciones afectan el rendimiento y el ancho de banda: SHA-512 suele ser más rápido porque la aritmética de 64 bits es nativa del hardware moderno.
La decisión entre SHA-256 y SHA-512 para un nuevo sistema generalmente se basa en pruebas de rendimiento y limitaciones de espacio en lugar de seguridad, porque ambos todavía son seguros a principios de la década de 2020. La calculadora de hash SHA de ToolAcre proporciona SHA-256, SHA-384 y SHA-512, y cuando los lectores comparan los resúmenes uno al lado del otro, ven la diferencia de cuatro caracteres entre SHA-256 (64 caracteres hexadecimales) y SHA-512 (128 caracteres hexadecimales).
SHA-3 está fuera de la API admitida; El historial de competencia no se afirma a partir de la evidencia del repositorio.
Las motivaciones para reemplazar SHA-1 estaban claras a principios de la década de 2000, por lo que el NIST comenzó el proceso de selección de SHA-3. En lugar de diseñar un reemplazo de forma aislada, el NIST abrió la competencia a la comunidad de investigación criptográfica. El objetivo era seleccionar una función hash que fuera fundamentalmente diferente de la construcción Merkle-Damgård, para ganar confianza en una diversidad de diseños. Varios equipos presentaron propuestas y, durante varios años, el concurso seleccionó a Keccak como ganador. Keccak era una construcción de esponja, una forma diferente de construir una función hash que no se había utilizado antes en un estándar.
SHA-3 es la estandarización NIST de Keccak, finalizada en 2015. A diferencia de SHA-2, que es una familia de algoritmos, SHA-3 generalmente se denomina algoritmo único, aunque también tiene múltiples anchos. SHA-3 aún no está ampliamente implementado, lo cual es sorprendente considerando que ha sido estándar durante casi una década. La razón es que SHA-2 no está roto. No existe ningún motivo de seguridad apremiante para actualizar de SHA-2 a SHA-3. La Web Crypto API del navegador implementa SHA-1 y SHA-2 pero no SHA-3, razón por la cual la calculadora de hash ToolAcre SHA no ofrece SHA-3.
SHA-2 sigue siendo la herramienta predeterminada; este artículo evita una afirmación de seguridad universal sin fundamento
Por qué SHA-2 sigue estando en todas partes es la cuestión central de la elección del algoritmo hash. SHA-2 no tiene colisiones prácticas conocidas. Las implementaciones de hardware están maduras. Todos los lenguajes y plataformas de programación lo admiten. Cambiar el algoritmo hash de un sistema es disruptivo: cada hash almacenado debe migrarse o retenerse para su verificación, cada punto de integración debe actualizarse y se deben realizar pruebas para garantizar que el nuevo algoritmo funcione con todos los sistemas posteriores.
Para los sistemas donde SHA-2 todavía es seguro, esta interrupción no está justificada. Para nuevos sistemas y nuevos protocolos, SHA-2 es el valor predeterminado sensato. La calculadora de hash ToolAcre SHA muestra SHA-256 y SHA-512 en una posición destacada porque son lo que deben usar las nuevas aplicaciones. SHA-1 aparece como solo heredado. SHA-384 se muestra para que esté completo y para los casos de uso en los que se requiere específicamente.
Lo que esto no cubre: las partes internas de Keccak, que merecen su propia publicación
El futuro de los estándares de hash no está claro en este momento. SHA-3 es seguro y maduro, y proporciona una alternativa si SHA-2 alguna vez se rompe. La computación cuántica plantea una amenaza a largo plazo para todas las funciones hash actuales, pero los diseños de funciones hash resistentes a los cuánticos son un área de investigación abierta. El NIST tiene en marcha una competencia de Criptografía Post-Cuántica, seleccionando algoritmos destinados a resistir ataques cuánticos, pero las funciones hash no son una prioridad en esa competencia en comparación con los sistemas de clave pública.
Para aplicaciones prácticas en la década de 2020, SHA-256 es la respuesta a la pregunta "¿qué hash debo usar?" Para verificación de integridad, direccionamiento de contenido y toma de huellas digitales, SHA-256 es el estándar. Para sistemas que necesitan un resumen más amplio, SHA-512 suele ser más rápido en hardware de 64 bits. SHA-384 es más común en las especificaciones del conjunto de cifrado TLS. SHA-1 es solo para verificación heredada. La calculadora de hash ToolAcre SHA proporciona los cuatro algoritmos Web Crypto para que los desarrolladores puedan ver sus resultados.
Conclusión: tres generaciones, un apellido: la calculadora de hash SHA de ToolAcre cubre los algoritmos SHA-1 y SHA-2 que proporciona el navegador
Comprender la historia de SHA aclara por qué los números y los nombres significan lo que hacen y por qué las decisiones tomadas en los años 1990 y 2000 todavía dictan lo que hacen las nuevas aplicaciones hoy. SHA-0 se retiró silenciosamente, SHA-1 se rompió mediante ataques prácticos, SHA-2 todavía es seguro y SHA-3 es un diseño alternativo elegido para su robustez futura. El nuevo código debe usar SHA-256 para hash de propósito general. Los sistemas heredados todavía usan SHA-1 y la interoperabilidad con esos sistemas requiere la capacidad de calcular hashes SHA-1.
La calculadora de hash SHA ToolAcre incorpora esta perspectiva: ofrece SHA-256 como valor predeterminado, SHA-512 como una opción más amplia, SHA-384 para requisitos específicos y SHA-1 etiquetado como heredado. Esto proporciona a los desarrolladores herramientas precisas y etiquetado preciso. La implementación Web Crypto del navegador proporciona estos algoritmos, y ToolAcre utiliza esa implementación directamente en lugar de enviar código personalizado. La elección refleja décadas de evolución criptográfica y el estado actual de la práctica.