El hashing criptográfico genera una cadena de longitud fija a partir de un conjunto de datos de cualquier tamaño. Este conjunto de datos puede ser una palabra, una frase, un texto más largo o un archivo completo.
El hashing criptográfico puede utilizarse con fines de seguridad, es el pilar fundacional de la cripto-seguridad; El hash transforma una entrada de datos aleatoria (claves) en una cadena de bytes de longitud y estructura fijas (valor hash); El hash de una transacción facilita su identificación en la cadena de bloques.
Contenidos
¿Qué es el hashing?
La red Bitcoin se basa en un conjunto de reglas llamado algoritmo de consenso de prueba de trabajo. Este algoritmo gobierna una red blockchain. Aparte de las criptomonedas, el hashing se utiliza principalmente para almacenar contraseñas.
Volvamos a lo básico. Una función matemática se utiliza para ilustrar una expresión o relación en la que intervienen una o varias variables o conjuntos. Por lo tanto, una función vincula una entrada y una salida.
El hashing transforma una entrada (por ejemplo, un texto) en una cadena de bytes de longitud y estructura fijas. La salida, o el valor creado, es el llamado «valor hash» o «suma de comprobación». Cualquier valor hash creado a partir de datos que utilicen un algoritmo hash específico tendrá siempre la misma longitud y será siempre unidireccional, no podrá ser invertido.
💡 Nota: Como puedes ver en la imagen, la oración es idéntica, sólo que en la primera son «50 Bitcoin» y en la senguda son «5» la única diferencia es que se le quitó un «Cero». Sin embargo, basta con cambiar o agregar una letra o número para que el resultado sea completamente diferente, a esto se refiere con el termino «huella digital» ya que el valor hash es único e irrepetible.
El término «hash» proviene del verbo francés «hacher», que indica cómo se diseña una función hash para trocear datos. Otra estructura de datos, la tabla hash, se utiliza con frecuencia para identificar rápidamente dos hashes (o «valores hash») idénticos.
En los últimos veinte años, el desarrollo de la criptografía se ha acelerado después de que Diffie y Hellman identificaran la necesidad de un hashing unidireccional en su documento seminal sobre criptografía de clave pública en 1976.
En 1990, Ronald Rivest, criptógrafo y profesor del MIT, inventó el hash MD4, y posteriormente los hashes MD5 y MD6. En 1995, la NSA (Agencia de Seguridad Nacional) diseñó el SHA-1 («Secure Hash Algorithm 1»), inspirado en la creación de Rivest, seguido de su actualización SHA-2 en 2001. SHA-2 es el estándar que inspiró a SHA-256, que a su vez sirvió de base para el algoritmo de consenso de Bitcoin.
Tal vez te interese leer: ¿Qué es Bitcoin y como funciona? Guía para principiantes
El valor del hashing
El hashing nació de la necesidad de normalizar la longitud de los contenidos, por un lado, y de la necesidad de contar con identificadores únicos, por otro. Fuera de la criptosfera, los usos comunes del hashing incluyen
- El cálculo de un valor de control (corto) para un objeto, por ejemplo para un ISBN (International Standard Book Number); 📙
- La identificación «corta» de cualquier contenido, sin ambigüedad, y sin revelar nada en las aplicaciones criptográficas.
Propiedades del hash
El hash criptográfico debe ser computacionalmente eficiente, lo que significa que debe ser rápido crear el valor hash. Debe ser determinista, es decir, cada vez que se introduzca una determinada entrada, debe producirse la misma salida, pero también debe ser resistente a las imágenes previas. Por lo tanto, el hash no puede revelar ninguna información sobre las entradas y salidas.
Por último, el hash también debe ser resistente a las colisiones: debe ser imposible que dos entradas diferentes produzcan la misma salida. Esta naturaleza determinista y la resistencia a las imágenes previas y a las colisiones son las tres propiedades fundamentales del hashing en el proceso de minería de Bitcoin.
¿Que es SHA 256?
SHA256, también conocido como Secure Hash Algorithm, es un algoritmo que representa una familia de funciones hash desarrollada por la Agencia de Seguridad Nacional de Estados Unidos. Hay que tener en cuenta que Sha-2 se creó originalmente basándose en Sha-0 así como en Sha-1, por lo que representa la continuación lógica de estos algoritmos.
Cuando hablamos de SHA256, se trata en realidad de una firma para archivos de datos. Por ejemplo, para SHA256, es posible generar una firma de 32 bytes (256 bits). Sin embargo, es importante saber que un hash no «cifra» los datos. No se puede descifrar, sino que es una especie de firma y una función criptográfica.
Por lo tanto, estas características técnicas también son válidas para el algoritmo SHA512 y para el SHA256 (ambos son algoritmos casi idénticos). También es interesante saber que su principal diferencia notable es simplemente que actúan sobre tamaños de palabras que no son del todo iguales, por lo que los tamaños son :
- 64 bits para SHA512
- 32 bits para SHA256
Dado que todos estos algoritmos forman parte de la misma familia (SHA384, SHA256, SHA2, así como SHA512), en realidad se publican con SHA1 y, por tanto, sólo representan el estándar estadounidense.
Las características de SHA 256
Para entender este algoritmo, primero hay que saber que una función hash es en realidad una función matemática que transforma los datos en una huella digital. Esto es muy práctico, ya que la huella dactilar puede reconocerse muy fácilmente, y sobre todo, muy rápidamente. Esto simplifica enormemente el proceso de identificación.
Es un algoritmo que puede tomar los datos de entrada y convertirlos en una salida codificada, cuya característica principal es que tiene una longitud fija. Esta técnica es realmente útil, porque permite una mejor representación de una huella dactilar que luego será personal para cada uno de ellos.
💡 Nota: El valor hash siempre es el mismo en cuestión de «caracteres», es decir, siempre nos da el mismo numero de caracteres. No importa cuál sea la entrada, el valor siempre será el mismo. Algo importante es que si cambias un solo caracter (así sea una coma, un acento, un punto etc…) en la entrada, el resultado siempre se verá afectado.
Puedes corrovorar los resultados tú mismo en este Generador de Hash Online 😉
En resumen, el nombre SHA256 significa en realidad algoritmo de hash seguro de 256 bits. Lo que es importante saber aquí es que está representado por una función hash que se utiliza regularmente en la tecnología blockchain. Y en cuanto a su seguridad, esta función está asegurada por la técnica de la criptografía.
🤔¿Cómo funciona?
También es importante saber que los llamados datos de entrada tienen la capacidad de representar cualquier tipo de datos. Una función hash simplemente da un hash idéntico para la misma entrada. Esto se hace para cualquier dato y no depende de cómo se ejecute el algoritmo.
Algo muy importante, es que si se cambian los datos de entrada o simplemente un carácter del texto, el hash de salida también cambia. Además, hay que tener en cuenta que una función hash es una función unidireccional. Esto significa que los datos de entrada no se pueden generar a partir del hash. Esta función unidireccional convierte texto de diferentes longitudes en una cadena de 256 bits.
La categoría Sha-2
En el mundo de los algoritmos hash, la familia Sha-2 está formada principalmente por SHA12 y SHA256. Es importante señalar que los demás algoritmos son derivados de éstos:
- Un Hash no representa una encriptación.
- El Hash es de tamaño fijo para todos los textos.
- Esta función criptográfica es unidireccional.
- Sha256 es el estándar FIPS y NIST.
- Las funciones hash no se utilizan para almacenar contraseñas.
- Sha256 es una de las funciones hash más eficientes que existen actualmente.
- Una función hash toma un mensaje de cierto tamaño como entrada y produce un hash de un tamaño fijo.
Funciones Hash en general
Como ya hemos visto anteriormente, una función hash es una función que transforma datos de cualquier tipo en datos de un tamaño fijo. Estos datos pueden tener muchas formas. Por ejemplo, puede ser una imagen o simplemente un texto.
Características de SHA 256
En criptografía, una función hash es una función con un dato asociado a una imagen de tamaño fijo. El hashing sólo se utiliza si hay una transformación de una cadena en una clave o valor de longitud fija, que representa la cadena original. Se suele utilizar para indexar elementos en una base de datos.
«Esto es útil porque es más sencillo y rápido encontrar un elemento basado en la clave hash (a menudo una clave de longitud corta) en lugar del valor original.
Función hash criptográfica
Esta clase de funciones hash representa una primitiva de la criptografía simétrica. Esta primitiva es, de hecho, un bloque de construcción básico que se utiliza principalmente para diseñar esquemas criptográficos. Podemos ver esto, por ejemplo, en los códigos de autenticación o en las firmas digitales.
La gran mayoría de estas funciones hash se han hecho para tomar una secuencia de bits de cualquier longitud. Esto se hace como entrada y luego puede producir un valor hash de una longitud fija como salida.
La ventaja es que esta clase de funciones hash es casi imposible de revertir y también tiene niveles de seguridad muy diferentes. La principal ventaja es que normalmente el valor hash relacionado con un mensaje se calcula muy rápidamente.
Diseño de SHA 256
Las funciones hash criptográficas han sido diseñadas para ser resistentes a posibles ataques. Así, una persona con intenciones maliciosas no tiene la posibilidad de modificar los datos de entrada sin cambiar el hash.
Ya hemos visto que cuando se modifica una entrada, también se modifica la salida. Por ejemplo, si dos cadenas son idénticas, podemos estar seguros de que tienen la misma huella digital. Sin embargo, las funciones hash siguen siendo vulnerables a ciertos tipos de ataques.
Articulos relacionados: 👇