¿Qué es y cómo funciona el algoritmo SHA-256?

Qué- es y cómo funciona el algoritmo SHA-256
8 min read

Seguramente hayas escuchado hablar sobre las siglas SHA-256. Estas se encuentran en el funcionamiento de innumerables criptomonedas debido al alto nivel de seguridad que puede aportar. 

En el mundo tecnológico existen numerosos sistemas para codificar la información, sin embargo, se podría decir que el que más destaca es SHA-256. En pocas palabras, se trata de un algoritmo empleado en Bitcoin con el objetivo de garantizar la seguridad de la información. Mediante esta función se mantienen los mecanismos de Proof of Work de Bitcoin. 

Sin embargo, esta no es la única función de SHA-256, ya que también se utiliza en la creación de direcciones, de identificadores de transacción y de bloques. En este artículo veremos todo sobre el funcionamiento de SHA-256.

 

 

Origen de SHA-256

La función SHA-256 comenzó a conocerse hace muchos años. Surgió a raíz de la necesidad de Internet para conseguir un medio confiable y rápido para confirmar los datos que transitaban por la red. 

Antes de la creación de SHA-256 su tarea era realizada por la función llamada MD5. Dicha función se caracterizaba por ser especialmente sencilla en términos computacionales. Aunque era la mejor alternativa en su época, la función Hash MD5 se categorizó como poco segura en el año 1996.

Después de diversas investigaciones el criptoanalista Hans Dobbertin encontró un problema de seguridad en la función hash MD5. Así se encontró la forma en que los hackers, con la habilidad y recursos necesarios, podrían romper el algoritmo de seguridad y así dejar las comunicaciones en Internet totalmente vulnerables

Como era de esperarse diversas instituciones comenzaron a buscar soluciones a este problema. Entre ellas la Agencia de Seguridad Nacional de Estados Unidos (NSA). Esta comenzó a trabajar en el desarrollo de distintas funciones hash capaces de sustituir la función MD5. No obstante, en el año 1993 había salido a la luz el primer protocolo SHA conocido como SHA-0. Las investigaciones continuaron y dos años después estaba creada la función SHA-1, una versión mejorada en cuanto a resistencia.

Para el año 2001, la NSA presentó ante el Instituto Nacional de Estándares y Tecnología de los E.E.U.U. (NIST) el conjunto de funciones SHA-2. En este conjunto de funciones se encontraban las siguientes: SHA-224, SHA-256, SHA-384 y SHA-512.

Posteriormente estas funciones se reconocieron como un Estándar Federal de Procesamiento de la Información (FIPS), bajo la identificación FIPS PUB 180-4. En este punto la función SHA-256 se convirtió en una función esencial para el mundo de la informática. Las propiedades que la hacen tan especial van desde la seguridad hasta la rapidez de cálculo. En poco tiempo su uso comenzó a extenderse a software para servidores y aplicaciones donde se necesitaban funciones robustas y seguras para garantizar la integridad de los datos.

Qué es y cómo funciona el algoritmo SHA-256

¿Cómo funciona el algoritmo SHA-256?

Para entender el funcionamiento de la función SHA-256 primero debemos ver sus principales características. Lo primero que debemos tener en cuenta es que un algoritmo SHA-256 funciona de forma unidireccional. Esta característica significa que a partir de cualquier dato podemos generar un hash, sin embargo, no podemos generar el contenido del Hash a partir de él.

Existen incontables formas de crear Hashes, sin embargo, SHA-256 es uno de los más usados debido a su seguridad y balance de coste computacional de generación. Cabe destacar que con SHA-256 la longitud del resultado es siempre la misma sin importar qué tan largo sea el contenido mediante el cual se genera el Hash. El resultado de una frase de 5 palabras o de un libro de 200 páginas siempre será una cadena combinada de 64 letras y números. Su codificación es de 256 bites, 34 bytes.

Centrándonos en el funcionamiento de SHA-256, su seguridad parte de construir una serie de funciones criptográficas. Estas son las llamadas funciones de Hash de Merkle-Damgard e Ivan Damgard creadas en el año 1979. Para ello usaron una comprensión One-way del tipo Davies-Meyer. Mediante estos métodos buscaban garantizar la resistencia a repeticiones de Hashes y una mayor seguridad para la función.

Así se creó la función SHA-256, como una función para introducir datos y lograr un resumen de la información con medida fija. En este sistema se garantiza lo que llamamos efecto avalancha. Esto significa que al mínimo cambio en la información de la función se generará un Hash totalmente distinto al inicial. Sin embargo, si sometemos al proceso de Hash la misma frase obtendremos el mismo resultado todas las veces, ya que el proceso es determinista.

Qué-es-y-cómo-funciona-el-algoritmo-SHA-256

SHA-256 y Bitcoin

La seguridad que brinda este sistema lo convierte en uno de los más atractivos para su aplicación en criptomonedas como Bitcoin. Desde sus inicios en el año 2009 Satoshi dio a conocer Bitcoin destacando el uso de esta función. De hecho, prácticamente toda su seguridad parte de SHA-256.

Para poder implementar SHA-256, Satoshi Nakamoto creó PoW. Por ello los mineros de Bitcoin deben resolver complejos acertijos criptográficos que desembocan en el uso de dicha función.

Para lograr la minería, los mineros deben acumular Hashes SHA-256 hasta encontrar un valor decimal menor al objetivo solicitado en la red, tarea que no es nada fácil. Además, el sistema regulariza la dificultad de minado aumentándola o disminuyéndola y con ello varía la potencia de la red para calcular los hashes SHA-256. En otras palabras, a mayor potencia de la red más difícil será el trabajo de minería y con ello costará más alcanzar el hash correcto.

Todo este proceso se resume en un único resultado llamado Hash de bloque o Block ID, un identificador único e irrepetible que encontramos en cada bloque Bitcoin. Se da en forma de Hash y claramente se trata de un SHA-256.

Cabe destacar que Bitcoin no es el único proyecto en emplear SHA-256. De hecho, la mayoría de proyectos de criptomonedas creados a partir de Bitcoin lo utilizan. Incluso los proyectos independientes de Bitcoin. La razón es clara, un estándar seguro, fácil de implementar y confiable. El listado de criptomonedas que lo emplean no es corto, sin embargo a continuación veremos algunas de las que emplean SHA-256 en su minería: Bitcoin Cash, Namecoin, Peercoin o Steem Dollars.

Seguridad en el futuro

Con el avance de las tecnologías muchos usuarios se preguntan qué tan segura será en el futuro una función creada en el año 2001. Actualmente se conocen formas de ataque que romperían la seguridad de SHA-256, sin embargo, ninguno de ellos podría aplicarse hasta el momento. 

Todo esto nos lleva a pensar que SHA-256 puede no ser tan seguro, pero lo será durante un buen tiempo. En caso de que sea vulnerado en algún momento, SHA-256 solo tendría que actualizarse y actualizar los procesos de minería así como los de generación de identificadores. Esto sumado a la actualización de las direcciones sería suficiente para esquivar el problema y mantener a las criptomonedas en un campo seguro.