SHA-256 o Secure Hash Algorithm 256 (Algoritmo Hash Seguro) es un algoritmo de hashing usado para convertir texto de cualquier longitud en uno de longitud fija de 256 bits (32 bytes).
Originalmente publicado en 2001, SHA-256 fue desarrollador por la Agencia Nacional de Seguridad de los Estados Unidos (NSA).
Este algoritmo es utilizado comúnmente en los certificados SSL de los sitios web y en el estándar de firma de mensajes DKIM para clientes de correo electrónico.
SHA-256 es una función de hash bastante popular utilizada para la encriptación de Bitcoin. Su paso por las criptomonedas comenzó con la introducción de la primera en 2009, y luego ha sido adoptada por un gran número de proyectos blockchain, incluyendo otras monedas que son forks del código original de Bitcoin.
Entre las 3 criptomonedas que utilizan SHA-256 con mayor capitalización de mercado encontramos al Bitcoin, Bitcoin Cash y Bitcoin Satoshi’s Vision. En total, el algoritmo asegura más de mil billones de dólares.
En este artículo vamos a explorar como es que funciona y porque fue implementado en Bitcoin.
Contenido
¿Cómo funciona SHA-256?
El algoritmo SHA-256, al igual que otras funciones de hash, toman una entrada y producen una salida (que usualmente conocemos como hash) que tiene una longitud fija.
No importa si la entrada es una sola palabra, una oración completa o un libro, la salida de este tipo de algoritmos es siempre la misma.
En particular, en este caso será de 256 bits, que son 32 bytes y que se muestran como 64 caracteres alfanuméricos. Además, todas las salidas parecen aleatorias y no ofrecen ninguna información de la entrada que les dio vida.
Otras características importantes de SHA-256 es el hecho de que es determinista, que significa que siempre produce la misma salida para la misma entrada, y que es una función de una sola calle. No existe forma de hacer ingeniera inversa para obtener la entrada a partir de la salida.
Por último, SHA-256 es computacionalmente eficiente y cualquier ordenador pude realizar la operación cientos o miles de veces por segundos.
¿Qué significa SHA-256?
Las siglas SHA-256 significan Secure Hash Algorithm 256-bit o algoritmo de hash seguro de 256 bits de longitud.
Donde SHA hace referencia a que este algoritmo es parte de la familia de las funciones de hashing SHA, especialmente las de tipo 2.
Y el 256 nos habla acerca de su salida, debido a que es una función de hash que toma cualquier entrada de longitud variable y la transforma en una salida de 256 bits de largo.
¿Para qué sirve SHA-256?
Este algoritmo es utilizado para muchas aplicaciones, como las firmas digitales, autenticación de contraseña y las cadenas de bloques.
Para las criptomonedas, el algoritmo SHA-256 es importante porque es una parte integral de la minería de Bitcoin, así como para otras criptomonedas que utilizan un mecanismo de Prueba de Trabajo.
Y, por tanto, también es importante para el mundo, ya que asegura la primera criptomoneda y la que hoy tiene el mayor valor de mercado en términos de capitalización.
Ejemplo de SHA-256
Para entender mejor que es y como funciona SHA-256, es interesante ver ejemplos de qué resultados genera la utilización de un generador de esta función criptográfica.
Por ejemplo, obtenemos el hash de la dirección de esta web “criptotario.com” conseguimos:
8ba8dd9080692a888d3ee39b3ae536ac69c4a85e2db20882ecab59d8790da051
Mientras que si lo hacemos con todo el texto de este artículo, lo cual es notoriamente más extenso, obtenemos esto:
90b20b38942afed0f3c0fe8bf221e002adc1e974326df896cd2ba698cc9868d2
¿Quién invento SHA-256?
SHA-256 fue creado por la Agencia de Seguridad Nacional (NSA) del gobierno de los Estados Unidos. Con la intención de que las agencias federales comenzaran a utilizarlo en lugar de su predecesor, el SHA-1, ya que se habían descubierto ciertas vulnerabilidades.
Esto porque el gobierno y una multitud de protocolos de cifrado que se usaba popularmente utilizan hash criptográficos para proteger información confidencial.
SHA-256 no es el único algoritmo de la familia de los SHA. En realidad, es solo una variación de una clase de algoritmos hash seguros publicados por el Instituto Nacional de Estándares y Tecnología (NIST) como Norma Federal de Procesamiento de Información (FIPS) de Estados Unidos.
Veamos como han evolucionado con el tiempo.
SHA-0 y SHA-1
SHA-0 es una función hash de 160 bits publicada por primera vez en 1993 con el nombre de “SHA”. En la actualidad, se la conoce como SHA-0, ya que posteriormente se desarrollaron más iteraciones.
SHA-0 fue retirado poco después de su publicación debido a un “fallo significativo” no revelado.
Desarrollada como reemplazo de SHA-0, SHA-1 es una función hash de 160 bits publicada por primera vez en 1995. Se parece mucho a la función hash MD5, que se publicó por primera vez en 1992.
SHA-1 fue diseñado por la Agencia de Seguridad Nacional (NSA) para formar parte del Algoritmo de Firma Digital.
Desde 2005, SHA-1 ya no se recomienda para usos criptográficos para proteger contra personas que tengan mucho poder computacional.
En su día, SHA-1 se utilizaba de forma generalizada para los certificados SSL, pero ya no es así debido a las deficiencias de seguridad.
Por ejemplo, Microsoft dejó de aceptar certificados SHA-1 a finales de 2016. Realmente no hay debate sobre si usar SHA-1 vs SHA-256. Este último es claramente el algoritmo más seguro.
SHA-2
SHA-2 consta de dos funciones hash con diferentes tamaños de bloque.
- SHA-256 se publicó por primera vez en 2001 y produce resultados de 32 bytes.
- SHA-512 se publicó por primera vez en 2004 y produce resultados de 64 bytes.
- SHA-224, SHA-384, SHA-512/224 y SHA-512/256 son versiones truncadas de estos dos estándares.
Al igual que SHA-1, todas las funciones hash de SHA-2 fueron desarrolladas por la NSA. Toda la familia SHA-2 está patentada bajo la patente estadounidense 6829355.
Aunque sabemos quién inventó SHA-256, no sabemos exactamente quién inventó Bitcoin. La patente de SHA-2 fue liberada bajo una licencia libre de derechos, poniéndola a disposición de gente como Satoshi Nakamoto, que es solo el pseudónimo de su creador.
SHA-3
La familia SHA-3, antes conocida como Keccak, consta de cuatro funciones hash criptográficas: SHA3-224, SHA3-256, SHA3-384 y SHA3-512, y dos funciones de salida extensible (XOF), llamadas SHAKE128 y SHAKE256.
Las funciones de salida extensible son diferentes de las funciones hash, pero es posible utilizarlas de forma similar.
El diseño de SHA-3 se seleccionó de un concurso público mundial de 64 algoritmos de hash y se publicó por primera vez en 2015.
¿Para qué utiliza Bitcoin SHA-256?
Como mencionamos anteriormente, Bitcoin utiliza el algoritmo SHA-256 como algoritmo de Prueba de Trabajo para la minería de criptomonedas.
SHA-256 también se utiliza junto con otra función hash criptográfica llamada RIPEMD-160 como parte del “doble hashing”, que es un paso en el proceso de creación de una dirección Bitcoin a partir de una clave pública.
Satoshi Nakamoto respondió a esta pregunta en un comentario en junio de 2010:
SHA-256 es muy fuerte. No es como el paso gradual de MD5 a SHA1. Si SHA-256 se rompiera por completo, creo que podríamos llegar a un acuerdo sobre cuál era la cadena de bloques honesta antes de que empezaran los problemas, fijarla y continuar a partir de ahí con una nueva función hash.
Bitcoin lleva utilizando SHA-256 desde que fue lanzada en 2009. Esto ha llevado a que emerjan nuevos y más poderosos rigs de minería con el tiempo.
Estos nuevos equipos de hardwares especializados para la tarea se los conoce como ASIC. Los cuales han generado un gran debate en la comunidad, de si se debería hacer algo para incrementar la resistencia a estos.
Algunas consideran que limitar el uso de estos permitirán prevenir el surgimiento de monopolios de granjas de minería y la posible centralización de los BTC.
Las soluciones para esto se han discutido entre los desarrolladores, y consisten básicamente en cambiar a una función hash diferente o cambiar el algoritmo de consenso a uno de Prueba de Participación, por ejemplo.
A pesar de esto, no se han realizado grandes cambios y la red sigue utilizando SHA-256.
Esto talvez se debe a que la mayoría de personas priorizan la seguridad de la red a una resistencia a los mineros ASIC. Además, un ataque del 51% nunca ha sido un problema para Bitcoin.
El costo actualmente en electricidad para hacerlo es de un par de millones por hora, un número que no incluye la inversión en los quipos de minería para realizar dicho ataque y que elevaría la cifra todavía más.
Algunas cadenas de bloques que surgieron a partir del código fuente de Bitcoin han intentado mejorar el diseño de SHA-256.
Un ejemplo de esto es Bitcoin Diamond (BCD), que fue lanzada en noviembre de 2017. Los creadores eran dos mineros de Bitcoin que decidieron dejar la red.
Los desarrolladores dejaron de lado SHA-256 para utilizar el algoritmo de hashing X13, por la resistencia, justamente, a la minería ASIC.
Prueba de trabajo
SHA-256 fue el primer algoritmo de minería usado para verificar las transacciones en la cadena de bloques a través del mecanismo de consenso llamado Prueba de Trabajo.
Sin embargo, Bitcoin no fue el primer sistema en utilizar Prueba de Trabajo. HashCash, un algoritmo creado en 1997, es considerado ampliamente como el primero en implementarlo.
Es más, Satoshi Nakamoto cita HashCash como una influencia de Bitcoin en su whitepaper:
Para implementar un servidor de marcas de tiempo distribuido entre pares, necesitaremos utilizar un sistema de prueba de trabajo similar a Hashcash de Adam Back
Satoshi Nakamoto
En términos básicos, el hash SHA 256 soporta una red que utiliza Prueba de Trabajo en la que los ordenadores compiten para resolver un complicado problema matemático.
Cuando un ordenador encuentra la solución, la transmite al resto de ordenadores de la red punta a punto.
Esto demuestra su trabajo a las otras máquinas que estaban tratando de resolver el mismo problema, ya que cada ordenador de la red verifica la solución de forma independiente.
Si la solución es correcta, el minero que la encontró recibe una recompensa. A continuación, se presenta un nuevo problema y la competición comienza de nuevo.
¿Cuáles son las limitaciones de SHA-256 en la minería de Bitcoin?
Cuando Bitcoin fue lanzado en 2009, SHA-256 era el algoritmo de hash más seguro disponible. Pero desde entonces, las cosas han cambiado y se han encontrados peligros y limitaciones.
Aquí te dejo algunas de las más importantes.
1. Mineros ASIC
Hay que entender que el algoritmo SHA-256 nunca fue pensado para ser resistente a máquinas con mucho poder computacional. Por tanto, la discusión acerca de la resistencia a los ASIC surgió mucho después de la introducción de Bitcoin.
De acuerdo a un reporte, la evolución del hardware de minería de Bitcoin se puede dividir en 6 generaciones.
Cuando fue lanzada en 2019, solo las CPU eran necesarios para minar Bitcoin. Esto creo un sistema justo para los mineros de la red.
Algo que cambio dinámicamente con le paso del tiempo y a medida que nuevas generaciones de equipos de mineros surgían para el público en general.
Cada nueva generación era capaz de producir cada vez más poder de hash que su antecesor.
Primero fueron las GPU en 2010, luego las FPGA en 2011 y por último los ASIC en 2012-2013. Estos últimos volvieron prácticamente inservibles a las CPU y las GPU para el minado de los BTC con el tiempo.
Los ASIC dominan la escena de la minería actualmente, y continuamente ofrecen nuevas versiones que acentúan más todo esto. Podemos observar como ha crecido exponencialmente la taza de hash de la red de Bitcoin.
2. Rentabilidad de la minería
Actualmente, para ser rentable con la minería en SHA-256 es necesario contar con equipos ASIC. Sin embargo, no todos son capaces de conseguir los mismos resultados.
Por ejemplo, el Bitmain Antminer S19 Pro produce una cantidad descomunal de hashrate, consiguiendo una gran cantidad de beneficios para su dueño si lo comparamos con otras alternativas más antiguas como el Antminer T15.
Sin embargo, también hay que decir que el primero tiene un costo 3 veces superior.
Esto nos demuestra que esta industria es muy competitiva, y que con el paso del tiempo es necesario invertir mucho dinero para mantenerse actualizado.
El resultado es que solo las personas o empresas con grandes bolsillos pueden mantenerse rentables y competitivos en este sector, desplazando a los mineros más terrenales, por llamarlos de alguna forma.
Comparativa entre SHA-256 y otros algoritmos de hashing
La familia SHA-2 no es la última en una larga lista de algoritmos. Actualmente SHA-3, conocido anteriormente como Keccak, es considerado más rápido y seguro que SHA-256.
Este algoritmo es utilizado por algunas criptomonedas como Nexus (NXS), SmartCash (SMART), entre otras.
Al igual que SHA-256, SHA-3 es compatible con ASIC, lo que dificulta la minería de criptomonedas SHA-3 con CPU y GPU.
Muchos proyectos de blockchain han citado la falta de resistencia a los ASIC entre todos los algoritmos de hash seguros, específicamente la implementación de SHA-256 de Bitcoin, como una razón importante para el desarrollo de otros algoritmos de hash como Scrypt, Equihash, CryptoNight y Lyra2REv2.
SHA-1 vs SHA-256
Si bien tanto SHA-1 y SHA-256 fueron inventados por el gobierno de los EE. UU. la diferencia se encuentra en la longitud de su salida.
Mientras que la salida de SHA-1 es de 160 bits, la de SHA-256 es de 256 bits. Además de que SHA-1 ha sido catalogado como un algoritmo inseguro, por eso se ha dejado de utilizar.
SHA-256 vs RSA
RSA es un algoritmo de encriptación asimétrica. Donde la entrada puede ser encriptada en una salida, pero la salida puede ser desencriptada y obtener la entrada.
Esta es una gran diferencia con SHA-256 y otros algoritmos de hash que no pueden ser revertidos. Donde RSA utiliza una clave pública para encriptar y una clave privada para desencriptar.
Permitiendo que se genere un mensaje que solo la persona que tiene la clave privada pueda leer.
SHA-256 vs Bcrypt
Bcrypt no fue diseñado para encriptar grandes cantidades de información, por eso es más utilizado para implementar contraseñas.
Por lo que SHA-256 es más rápido que Bcrypt y su implementación es más barata, ya que necesita menos poder computacional.
SHA-256 vs MD5
Las principales diferencias entre se encuentra en la longitud de la salida de ambos algoritmos, el nivel de seguridad y de rendimiento.
Donde mientras que SHA-256 tiene una longitud de 256 bits, la de MD5 es de 128 bits. Esto permite que MD5 sea más rápido. Sin embargo, también es más vulnerable.
SHA-256 vs SHA3-256
En primero lugar, SHA-256 y toda la familia de funciones SHA-2 es más rápida que SHA3-256.
Por otro parte, SHA3-356 es tiene una fortaleza criptográfica más grande que SHA-256 para la misma longitud de hash, en este caso 256 bits.
Además, el cálculo de los hash es completamente diferente internamente para estas funciones. Donde SHA-256 utiliza una estructura Davies-Meyer y SHA3-256 utiliza una estructura de esponja con la permutación de Keccak.
¿Como pasar de SHA-256 a texto?
No se puede, ya que SHA-256 es un algoritmo de encriptación, por lo que no tiene una función inversa. Donde sin importar la entrada, siempre vamos a obtener una salida de la misma longitud.
La única forma de conseguirlo es de manera indirecta. Haciendo pruebas de diferentes entradas hasta hallar a un hash igual, lo que nos tomaría mucho tiempo porque es básicamente un ataque de fuerza bruta donde probamos todas las combinaciones.
Agrega un Comentario