SHA, que significa Algoritmo de Hash Seguro, es una familia de funciones hash criptográficas relacionadas, desarrolladas por la Agencia de Seguridad Nacional de los Estados Unidos (NSA) y publicadas por el Instituto Nacional de Estándares y Tecnología (NIST) como un Estándar de Procesamiento de Información Federal de EE. UU. (FIPS).
Un Poco de Historia
La historia de SHA comenzó en 1993 con la publicación del primer miembro de la familia, llamado oficialmente SHA, aunque para evitar confusiones con sus sucesores, a menudo se le conoce como SHA-0. Sin embargo, esta versión original fue retirada poco después debido a una «flaw significativa» no revelada y reemplazada por la versión ligeramente revisada, SHA-1.
Dos años después, en 1995, se presentó SHA-1, una función hash de 160 bits que se asemejaba al algoritmo MD5 anteriormente utilizado. SHA-1 fue diseñado específicamente por la NSA para ser parte del Algoritmo de Firma Digital (DSA) y se utilizó en numerosas aplicaciones y protocolos de seguridad, como TLS, SSL, PGP, SSH, S/MIME e IPSec. Aunque en su momento fue ampliamente utilizado, en 2010 se descubrieron debilidades criptográficas en SHA-1, lo que llevó a su desaprobación para la mayoría de los usos criptográficos.
SHA-2: Un Paso hacia Adelante
Tras las vulnerabilidades detectadas en SHA-1, la familia SHA evolucionó con la introducción de SHA-2. SHA-2 consta de dos funciones hash similares, pero con diferentes tamaños de bloque: SHA-256 y SHA-512. La diferencia radica en el tamaño de palabra que utilizan, siendo SHA-256 de 32 bits y SHA-512 de 64 bits. Además, existen versiones truncadas de cada estándar, como SHA-224, SHA-384, SHA-512/224 y SHA-512/256. Todos estos algoritmos fueron también diseñados por la NSA.
SHA-3: La Competencia Pública
En 2012, después de una competencia pública entre diseñadores no pertenecientes a la NSA, se seleccionó SHA-3, que antes era conocido como Keccak. SHA-3 presenta longitudes de hash idénticas a las de SHA-2, pero su estructura interna difiere significativamente del resto de la familia SHA.
Estándares Asociados
Los estándares asociados con la familia SHA son FIPS PUB 180 (SHA original), FIPS PUB 180-1 (SHA-1) y FIPS PUB 180-2 (SHA-1, SHA-256, SHA-384 y SHA-512). El NIST ha actualizado el Borrador de Publicación FIPS 202, que trata sobre el Estándar SHA-3, separado del Estándar de Hash Seguro (SHS).
En conclusión, SHA ha sido un pilar fundamental en el mundo de la criptografía y ha sido ampliamente utilizado en diversas aplicaciones de seguridad a lo largo de los años. Aunque algunas de sus versiones han mostrado debilidades, la evolución constante y la competencia en el campo de la criptografía han llevado al desarrollo de algoritmos más seguros y confiables. La familia SHA continúa siendo relevante y sigue siendo un componente esencial en la seguridad y autenticación de la información en el mundo digital.