Herramientas de desarrollo · Calculadora de hash SHA
SHA-256 vs SHA-512: tamaño de palabra, rondas y por qué 512 puede ser más rápido
· Cómo funciona
sha-256 criptografía rendimiento APIS del navegador
SHA-512 produce un resumen más largo pero a menudo se ejecuta más rápido en hardware de 64 bits. Esta publicación explica las diferencias estructurales entre los dos y cómo encaja SHA-384, para que pueda elegir según los hechos.
¿Hash más largo, ejecución más rápida? — la observación contraintuitiva que inicia la comparación
SHA-512 produce un resumen más largo pero a menudo se ejecuta más rápido que SHA-256 en hardware de 64 bits. La observación contraria a la intuición proviene del diseño de la CPU: un procesador optimizado para aritmética de 64 bits ejecuta operaciones de 64 bits más rápido que operaciones de 32 bits con los mismos datos. SHA-256 opera con palabras de 32 bits, mientras que SHA-512 opera con palabras de 64 bits. En una CPU de 64 bits, esta última se adapta al hardware de forma más natural y dedica menos tiempo a conversiones de tamaño de palabras y relleno.
Esto no hace que SHA-512 sea inherentemente mejor para cada caso de uso. Un resumen más largo requiere más almacenamiento y ancho de banda. La elección entre ellos debe hacerse en función de los requisitos de tamaño de salida y la plataforma, no en una vaga sensación de "más nuevo" o "más fuerte".
palabras de 32-bit versus 64-bit: la diferencia estructural principal y por qué se adapta a las CPU modernas
SHA-256 opera en palabras de 32 bits en todo el algoritmo. La programación de mensajes expande 16 32 palabras de bits en 64 32 palabras de bits. Cada ronda actualiza ocho variables de trabajo de 32 bits. El bloque de mensajes es de 512 bits (dieciséis palabras de 32 bits). La salida es 256 bits (ocho palabras de 32 bits). Toda la aritmética se realiza en valores de 32 bits, con ajuste de desbordamiento en 2^32.
SHA-512 opera en palabras de 64 bits. La programación de mensajes expande 16 64 palabras de bits en 80 64 palabras de bits (no 64, como en SHA-256). Cada ronda actualiza ocho variables de trabajo de 64 bits. El bloque de mensajes es de 1024 bits (dieciséis palabras de 64 bits). La salida es 512 bits (ocho palabras de 64 bits). Toda la aritmética se realiza en valores de 64 bits, con ajuste de desbordamiento en 2^64.
64 rondas versus bloques 80, 512 bits versus bloques 1024 bits: qué cambia por bloque y por byte
SHA-256 ejecuta 64 rondas por bloque; SHA-512 ejecuta 80 rondas por bloque. Esto significa que SHA-512 mezcla más por bloque. A primera vista, esto suena más lento. Pero el mayor tamaño de palabra y de bloque significa que SHA-512 procesa más bits por ronda. Para un archivo de 1 megabytes, SHA-256 procesa 1048576 / 512 = 2048 bloques, cada uno con 64 rondas, para un total de 131072 rondas. SHA-512 procesa 1048576 / 1024 = 1024 bloques, cada uno con 80 rondas, para un total de 81920 rondas. SHA-512 hace menos rondas en total, aunque hace más rondas por bloque.
La diferencia en el tiempo del reloj de pared depende de la optimización de la CPU para el tamaño de palabra. Una CPU con una ALU (unidad aritmética-lógica) de 64 bits ejecutará operaciones de 64 bits de manera eficiente. Si la misma CPU debe dividir operaciones de 32 bits SHA-256 en múltiples microoperaciones o ejecutarlas en una unidad de ejecución más pequeña, el costo por operación es mayor. Los procesadores modernos optimizan las operaciones de 64 bits, lo que hace que SHA-512 sea a menudo más rápido a pesar de las rondas adicionales por bloque.
El tamaño del bloque y el recuento de redondeos explican el trabajo por byte; el rendimiento real necesita un punto de referencia de la plataforma
La aritmética de bloques explica por qué una salida más larga no tiene por qué implicar más trabajo por byte. SHA-256 realiza sesenta y cuatro rondas por cada bloque de 512 bits, mientras que SHA-512 realiza ochenta rondas por cada bloque de 1,024 bits. El segundo diseño realiza más rondas en cada bloque pero consume el doble de entrada cada vez que procesa uno.
Esa comparación estructural no predice un punto de referencia de navegador en particular. Web Crypto puede utilizar instrucciones nativas, bibliotecas del sistema operativo u otro código optimizado, y la longitud de la entrada cambia la parte gastada en la configuración. Mida el entorno objetivo real cuando el rendimiento sea importante; el repositorio solo respalda la afirmación cualitativa de que las palabras más amplias pueden adaptarse al hardware de 64 bits.
Las longitudes de salida afectan las propiedades de representación y seguridad sin una estimación del trabajo de ataque sin fuente
SHA-384 no es un algoritmo independiente; es SHA-512 con dos cambios: las constantes hash iniciales son diferentes y la salida se trunca a 384 bits (48 bytes) en lugar de los 512 bits completos. Este truncamiento tiene una ventaja contra los ataques de extensión de longitud: un atacante no puede extender el resumen agregando datos al mensaje original, porque se desconoce el estado completo de 512 bits (solo se revelaron 384 bits).
SHA-256 es vulnerable a ataques de extensión de longitud: si conoce el resumen de un mensaje y conoce la longitud del mensaje, puede agregar datos al mensaje y calcular el resumen del mensaje extendido sin conocer el contenido del mensaje original. Esto es importante en contextos de seguridad específicos, como las implementaciones de HMAC que utilizan una construcción débil. SHA-384, a pesar de estar basado en SHA-512, no es vulnerable porque el estado completo no está expuesto. Esto hace que SHA-384 sea útil en contextos donde SHA-256 se considera riesgoso.
Ejemplo resuelto: combinar una entrada con las tres y comparar las longitudes del resumen una al lado de la otra
El tamaño de salida es la distinción más sencilla. SHA-256 produce 32 bytes (64 caracteres hexadecimales); SHA-384 produce 48 bytes (96 caracteres hexadecimales); SHA-512 produce 64 bytes (128 caracteres hexadecimales). Para el almacenamiento en URL o JSON, los resúmenes más largos ocupan más espacio. Para la resistencia a las colisiones, una salida más larga hace que las colisiones sean exponencialmente más difíciles de encontrar. Las salidas más amplias proporcionan un mayor espacio de resultados, mientras que su consecuencia inmediata del producto es más sencilla de medir: más bytes en almacenamiento, URL y campos de protocolo. Este artículo no adjunta una estimación del trabajo de ataque porque ninguna se deriva de la evidencia del repositorio.
Algunos sistemas y estándares especifican SHA-256 explícitamente; otros usan SHA-512 o permiten una elección. Las huellas digitales SSH están predeterminadas en SHA-256; Los resúmenes de imágenes del contenedor pueden ser SHA-256 o SHA-512. Los administradores de paquetes como npm usan SHA-512 para la integridad de los subrecursos. A menudo la elección la hace usted, pero comprender las diferencias le permitirá elegir sabiamente cuando tenga voz y voto.
Lo que esto no cubre: cifras de rendimiento, que dependen de la CPU, el compilador y el tamaño de entrada; la publicación sigue siendo cualitativa
La calculadora de hash ToolAcre SHA ofrece SHA-256, SHA-384 y SHA-512. Haga un hash de la misma entrada con los tres y observe las longitudes de salida. Todos los resúmenes serán completamente diferentes entre sí, como era de esperar: los algoritmos utilizan diferentes constantes redondas, diferentes programas de mensajes y diferentes operaciones de mezcla. El recuento de bytes que se muestra junto al resumen refleja sólo el tamaño de entrada, no el tamaño de salida; Los tres algoritmos procesan los mismos bytes de entrada de manera idéntica a través de sus respectivas secuencias de ronda.
Las pruebas en su propio hardware revelan la diferencia de rendimiento. Hash un archivo grande (un caso de prueba de varios megabytes) con cada algoritmo y cronometrar los resultados. En los sistemas modernos de 64 bits, SHA-512 a menudo se completará en menos tiempo, aunque el recuento de bytes pueda sugerir lo contrario. En sistemas de 32 bits o procesadores integrados, SHA-256 puede ser más rápido porque la ALU de la CPU está optimizada para operaciones de 32 bits.
Conclusión: elija por tamaño de salida y plataforma: la calculadora de hash SHA de ToolAcre ofrece SHA-256, SHA-384 y SHA-512 para que pueda ver los tres en la misma entrada
La solidez criptográfica es independiente del rendimiento. El repositorio no marca SHA-256 como roto y lo selecciona como valor predeterminado de uso general. Esa evidencia del producto no justifica llamar a ningún primitivo universalmente seguro; La idoneidad todavía depende de la construcción y del modelo de amenaza. Cambiar de SHA-256 a SHA-512 no es una actualización de seguridad; es una compensación entre almacenamiento y rendimiento. Si su sistema especifica SHA-256 y necesita ese algoritmo exacto, utilícelo. Si tiene la opción y desea un resumen más extenso o sabe que su plataforma es 64 bits, SHA-512 es una opción válida.
La implementación Web Crypto del navegador calcula los tres a través de crypto.subtle.digest. Su dispositivo, la versión del navegador y la carga del sistema en segundo plano afectan el rendimiento observado. Pero el punto clave sigue siendo: SHA-256 y SHA-512 no compiten por el título de "la mejor función hash". Son herramientas diseñadas para diferentes requisitos de salida, y la elección entre ellas se realiza en función de lo que necesita su sistema, no de afirmaciones de rendimiento generalizadas.