Pasar al contenido principal

SHA-256

En criptografía, se conoce como SHA-256 al Algoritmo de Hash Seguro (Secure Hash Algorithm) de 256 bits, que se utiliza para la seguridad criptográfica. Estos algoritmos generan hashes (cadenas de caracteres de longitud fija) irreversibles y únicos. Cuanto mayor sea la cantidad de hashes posibles, menor será la probabilidad de que dos valores creen el mismo hash.

Ejemplos:

  • SHA2-256("kaixo") = d050c1cbf2956cde459da5c8fd8851da352c10c52f758d0e3bfbef2473a802b7
  • SHA2-256("agur") = d3404c774cf3207c4fe9d82751da0b96a7db8679b11e71cb7fc4cd4e40ee247c

La familia SHA (Algoritmo de Hash Seguro o Secure Hash Algorithm) es un sistema de funciones hash criptográficas desarrollado por la Agencia Nacional de Seguridad estadounidense y publicado por el National Institute of Standards and Technology (NIST). La primera de estas funciones fue publicada en 1993 bajo el título Secure Hash Standard, FIPS PUB 180, y se conoce oficialmente como SHA. Esta función se ha popularizado como SHA-0, para evitar confusiones con sus sucesoras. Dos años después del desarrollo de la primera función fue publicado el primer sucesor de SHA, que recibió el nombre de SHA-1. Desde entonces se han publicado cuatro variantes más bajo el nombre de SHA-2; las diferencias entre ellas se basan en un diseño algo modificado y en rangos de salida incrementados: se trata de SHA-224, SHA-256, SHA-384, y SHA-512. SHA-3 es el último miembro de la familia, publicado por NIST en agosto de 2015; su algoritmo genera hashes de la misma longitud que SHA-2 mediante la utilización de un método diferente basado en el algoritmo Keccak.

El procesamiento del algoritmo SHA-256 consta de estos 5 pasos:

  1. Se incorporan bits adicionales de relleno al mensaje de entrada. Este relleno sirve para ocultar la estructura y longitud del contenido, dificultando al ciberdelincuente su posible ataque. Esta operación consiste en la adición de un "1" seguido de los "0" que sean necesarios hasta completar el bloque de 512 bits.
  2. Se le añade un bloque de 64 bits que represente la longitud del mensaje original antes de ser rellenado.
  3. Se inicializa una caché de 256 bits para almacenar los resultados intermedios y finales de la función hash. Consta de 8 registros (A, B, C, D, E, F, G, H) de 32 bits cada uno.
  4. Se procesa el mensaje en bloques de 512 bits. El algoritmo utiliza seis funciones lógicas básicas y consta de 64 operaciones iterativas. Cada paso toma el valor del búfer de 256 bits ABCDEFGH como entrada y luego actualiza el contenido del búfer. Cada paso utiliza un valor constante Kt de 32 bits y un Wt de 32 bits.
  5. Una vez procesados todos los bloques de 512 bits, la salida obtenida por el último bloque generado por el algoritmo SHA-256 es un resumen de 256 bits.

El algoritmo SHA-256 es utilizado en un gran número de herramientas de seguridad y protocolos, entre ellos TLS, SSL, PGP, SSH o IPsec. Otra aplicación de interés que brinda SHA-256 está relacionada con el bitcoin y otras criptomonedas. El protocolo de Prueba de Trabajo (del inglés Proof-Of-Work) fue diseñado teniendo en cuenta este algoritmo, requiriendo resolver complejos acertijos criptográficos en los que debía hacerse un uso intensivo de esta función. 

En la actualidad, SHA-256 se considera seguro, a pesar de tener las mismas debilidades matemáticas que su predecesor SHA-1, y sabiendo que los mejores ataques públicos han conseguido romper 46 de las 64 iteraciones. Aun así, existen sucesores, como SHA3, que pueden ser utilizados como reemplazo de SHA-256.