El origen de la familia de algoritmos SHA (Secure Hash Algorithm) y las aplicaciones que tiene SHA-256 en el protocolo Bitcoin.

Un algoritmo de encriptación (o cifrado) tradicional es una función que transforma un mensaje en una serie ilegible aparentemente aleatoria, usando una clave de encriptación que puede ser revertida (es decir, obtener el mensaje original) sólo por quienes conocen dicha clave. Por medio de la encriptación, la información privada puede ser enviada públicamente por internet sin mayor riesgo de que otros puedan tener acceso a ella.
SHA es una de las muchas funciones hash. Una función hash es como una firma para un texto o fichero. SHA-256 es un hash de 64 dígitos hexadecimales (un resumen, por ejemplo bd4526534df7b33772c2f1ee26d97c39ff11379c8848e4e19d74ad849ef66423) casi único de un tamaño fijo de 256 bits (32 bytes). Un hash solo se calcula en una dirección y no se puede decodificar de vuelta.
Wikipedia: La familia SHA (Secure Hash Algorithm, Algoritmo de Hash Seguro) es un sistema de funciones hash criptográficasrelacionadas de la Agencia de Seguridad Nacional de los Estados Unidos (NSA) y publicadas por el National Institute of Standards and Technology (NIST). El primer miembro de la familia fue publicado en 1993 es oficialmente llamado SHA. Sin embargo, hoy día, no oficialmente se le llama SHA-0 para evitar confusiones con sus sucesores. Dos años más tarde el primer sucesor de SHA fue publicado con el nombre de SHA-1. Existen cuatro variantes más que se han publicado desde entonces cuyas diferencias se basan en un diseño algo modificado y rangos de salida incrementados: SHA-224, SHA-256, SHA-384, y SHA-512 (llamándose SHA-2 a todos ellos)”.
En 1998, un ataque a SHA-0 fue encontrado pero no fue confirmado para SHA-1, se desconoce si fue la NSA quien lo descubrió, pero aumentó la seguridad del SHA-1.
SHA-1 ha sido examinado muy de cerca por la comunidad criptográfica y no se ha encontrado ningún ataque efectivo. No obstante, en el año 2004, un número de ataques significativos fueron divulgados sobre funciones criptográficas de hash con una estructura similar a SHA-1, lo cual ha planteado dudas sobre la seguridad a largo plazo de SHA-1.
SHA-0 y SHA-1 producen una salida resumen de 160 bits (20 bytes) de un mensaje que puede tener un tamaño máximo de 264 bits, y se basa en principios similares a los usados por el profesor Ronald L. Rivest del MIT en el diseño de los algoritmos de resumen de mensaje MD4 y MD5.
La resistencia del algoritmo SHA-1 se vio comprometida a lo largo del año 2005. Después de que MD5, entre otros, quedara seriamente comprometido en el 2004 por parte de un equipo de investigadores chinos, el tiempo de vida de SHA-1 quedó visto para sentencia aunque se siga utilizando más que SHA-2.
La importancia de la rotura de una función hash se debe interpretar en el siguiente sentido: Un hash permite crear una huella digital, teóricamente única, de un archivo. Una colisión entre hashes supondría la posibilidad de la existencia de dos documentos con la misma huella. Por eso los criptógrafos y los algoritmos criptográficos están en una carrera constante para evitar colisiones en aplicaciones de seguridad.
Aplicaciones de SHA-256
SHA-2 se utiliza en un gran número de herramientas de seguridad y protocolos. Algunos de ellos son TLS, SSL, PGP, SSH, S/MIME, IPsec y Bitcoin.
En el protocolo Bitcoin, SHA-256 se utiliza en la creación de claves o direcciones públicas y en la minería de Bitcoin.
Creación de direcciones o claves públicas en el protocolo Bitcoin con SHA-256
El proceso de creación de una dirección pública de Bitcoin se inicia con un par de claves privada y pública de una curva elíptica ECDSA. Las direcciones públicas (por ejemplo, 31uEbMgunupShBVTewXjtqbBv5MndwfXhb) que vemos cuando utilizamos un cliente monedero/wallet Bitcoin han pasado un proceso de creación de clave pública y hashing en el que se utilizan las funciones hash SHA-256 y RIPEMD-160 para maximizar su seguridad.
Por ejemplo utilizando la herramienta online Xorbin para crear un hash con SHA-256 con la palabra “OroyFinanzas.com” (sin paréntesis) obtenemos este hash de 64 dígitos: bd4526534df7b33772c2f1ee26d97c39ff11379c8848e4e19d74ad849ef66423.
Minería de Bitcoin con SHA-256
Bitcoin fue la primera criptomoneda que utilizó SHA-2 como parte de su esquema de prueba de trabajo (proof-of-work en inglés). El auge de la minería ASIC en Bitcoin ha llevado a la creación de otras criptomonedas como Litecoin, la cual utiliza Scrypt (otro algoritmo criptográfico) para la prueba de trabajo. Bitcoin utiliza el algoritmo SHA-256 para generar de manera verificable “al azar” los números de manera que requieran una cantidad previsible de esfuerzo CPU. Generando un hash SHA-256 con un valor menor que el actual target resuelve un bloque y da una recompensa llamada coinbase (no debe confundirse con la empresa Coinbase.com que ha adoptado ese nombre como marca). Actualmente la recompensa es de 25 bitcoins.

8 Algoritmo RIPEMD-160