Algoritmos de Hash Seguros (Secure Hash Algorithm, SHA)
Familia de funciones de resumen criptográfico estandarizadas por NIST, usadas para integridad, firmas, derivación de claves y HMAC; incluye SHA-1, SHA-2 y SHA-3.
Resumen
Los Algoritmos de Hash Seguros, comúnmente conocidos por sus siglas en inglés SHA, forman una familia de funciones diseñadas para producir un resumen o valor hash de longitud fija a partir de datos de longitud variable. En el contexto de la criptografía, estas funciones se clasifican como funciones de hash criptográficas y se emplean para comprobar integridad, identificar cambios en mensajes y como componente en mecanismos criptográficos más complejos. Las especificaciones y estándares de la familia SHA fueron publicadas y mantienen su referencia en el Instituto Nacional de Estándares y Tecnología (NIST).
Versiones y características
La familia incluye varias generaciones principales con diferencias en diseño y tamaño de salida:
- SHA-1: produce un resumen de tamaño tradicionalmente usado en muchas aplicaciones; en la práctica moderna se considera débil frente a ataques de colisión y su uso está desaconsejado para aplicaciones nuevas.
- SHA-2: conjunto que abarca variantes con salidas más largas y mayor resistencia, comúnmente referidas por sus longitudes de salida; están ampliamente soportadas y recomendadas para la mayoría de usos seguros.
- SHA-3: resultado de un concurso público que seleccionó el algoritmo Keccak; su diseño de tipo "sponge" (esponja) difiere internamente de SHA-2 y ofrece una alternativa por diversidad de diseño.
Funcionamiento básico
Las implementaciones típicas procesan el mensaje en bloques y aplican transformaciones internas que mezclan y comprimen el estado interno hasta producir el resumen final. SHA-1 y SHA-2 usan una estructura heredada de compresión por bloques, mientras que SHA-3 emplea una construcción de esponja que absorbe el mensaje y luego extrae el valor hash. La representación legible del valor hash suele hacerse en notación hexadecimal para facilitar su comparación y almacenamiento.
Propiedades criptográficas deseables
Se espera que una buena función SHA sea resistente a preimagen (no permitir encontrar un mensaje que produzca un hash dado), resistente a colisiones (no permitir hallar dos mensajes distintos con el mismo hash) y exhiba efecto avalancha (pequeñas variaciones en la entrada producen cambios importantes en el resumen). Además, las implementaciones deben mitigar canales laterales y fugas de información.
Usos y recomendaciones
Las funciones SHA se emplean en verificación de integridad de archivos, firmas digitales, esquemas HMAC para autenticación de mensajes, y como parte de procesos de derivación de claves. No obstante, para el almacenamiento de contraseñas es recomendable usar funciones específicas de derivación de claves con sal y coste computacional (por ejemplo PBKDF2, bcrypt o Argon2) en lugar de aplicar SHA directamente. Para nuevas implementaciones se recomienda evitar SHA-1 y elegir SHA-2 o SHA-3 según compatibilidad y requisitos de seguridad.
Implementación y seguridad práctica
Además de seleccionar una variante adecuada, es importante prestar atención a detalles de implementación: uso correcto de sal y no reutilizar hashes como sustituto de autenticación; protección frente a ataques por canales laterales; y actualización de bibliotecas criptográficas ante hallazgos de debilidades. La existencia de múltiples familias (SHA-2 y SHA-3) ayuda a reducir el riesgo de fallo catastrófico si una sola construcción resulta comprometida.
Historia y estandarización
A lo largo del tiempo, el NIST ha publicado recomendaciones sobre el uso y la migración entre versiones. La evolución de SHA refleja la necesidad de adaptarse a avances en criptanálisis y potencia computacional, y la comunidad de seguridad sigue evaluando y recomendando prácticas para el empleo seguro de estas funciones.
Familia
- SHA-0: Era el nombre utilizado para el Algoritmo de Enclavamiento Seguro original que fue lanzado en 1993. Dejó de utilizarse porque no era seguro de usar y fue rápidamente sustituido por SHA-1.
- SHA-1: Es el primer nombre utilizado para el Algoritmo de Hashing Seguro oficial. Fue lanzado después de una debilidad en SHA-0. Fue realizado por la Agencia de Seguridad Nacional (NSA). También se descubrió que era débil e inseguro.
- SHA-2: Es uno de los tipos más populares de SHA. Hay opciones para establecer la longitud (cambiando el tamaño del resumen) del hash a 256 o 512 bits. SHA256 y SHA512 se refieren a estos algoritmos. También fue creado por la Agencia de Seguridad Nacional.
- SHA-3 (Keccak): El último tipo de SHA. Fue realizado por Guido Bertoni, Joan Daemen, Michaël Peeters y Gilles Van Assche. Fue seleccionado tras un concurso celebrado por el NIST.
Los algoritmos de hashing seguro, al ser algoritmos conformes a la Norma Federal de Procesamiento de Información (FIPS), están sujetos al Programa de Validación de Algoritmos Criptográficos
Artículos relacionados
Autor
AlegsaOnline.com Algoritmos de Hash Seguros (Secure Hash Algorithm, SHA) Leandro Alegsa
URL: https://es.alegsaonline.com/art/89321
Fuentes
- csrc.nist.gov : "Hash Functions | CSRC"
- nvlpubs.nist.gov : "Freedom to Tinker: Report from Crypto 2004" · web.archive.org
- csrc.nist.gov : "NIST Policy on Hash Functions - Hash Functions | CSRC"
- stackoverflow.com : "security - Hash Functions which are used and more popular"
- nist.gov : "NIST Releases SHA-3 Cryptographic Hash Standard"
- keccak.team : "Keccak Team"
- federalregister.gov : "Announcing Approval of Federal Information Processing Standard (FIPS) 202, SHA-3 Standard: Permutation-Based Hash and Extendable-Output Functions, and Revision of the Applicability Clause of FIPS 180-4, Secure Hash Standard"
- csrc.nist.gov : "Secure Hashing - Cryptographic Algorithm Validation Program | CSRC"