The mathematics behind blockchain (parte III): Tipos de cifrado y las funciones hash
Como experto en criptografía Szabo sabía muy bien que el cifrado había nacido hace muchos siglos y, para él, el cifrado más interesante era el cifrado de transposición, que consiste alterar de posición los símbolos de un texto en forma que el texto cifrado contenga las mismas letras que el texto original, había jugado de pequeño para pasar mensajes en clase.
Otra manera de cifrado que se le venía a la mente era el cifrado por sustitución que se basa en cambiar las letras del mensaje original por otras letras diferentes, como hacía Julio César en sus campaña militares.
El cifrado de sustitución polialfabético es aquel que utiliza más de un alfabeto para cifrar la información de un mensaje y sustituye las letras del mensaje por diferentes letras del alfabeto para cifrar el mensaje. El monoalfabético, en cambio, utiliza un único alfabeto para cambiar las letras del mensaje original.
Szabo se le viene a la menta la manera de cifrar de Julio César. Consistía en un cifrado de sustitución monoalfabético, monográfico y utilizaba un alfabeto. Es decir, de manera matemática podemos decir que “C = M + 3 posic 27”, siendo C la letra cifrada y M el símbolo del mensaje original que queremos cifrar. En la fórmula matemática aparece ‘posic 27’ que son las letras del alfabeto español.
Nos encontraríamos el siguiente proceso de cifrado:
M = “Este es un mensaje de Julio César”
C = HVWHHVXPOHPVDMHGHMXÑLRFHVDU
Szabo había pasado muy buenos momentos de su infancia jugando con el cifrado de mensajes y era muy útil para que los profesores, aunque interceptaran el mensaje, no entendieran lo que ponía.
Las funciones hash está relacionado con el cifrado, pensaba Szabo entre sonrisas, ya que las funciones hash se aplican dentro de un algoritmo de forma que da entrada a un texto y por medio de una serie de operaciones matemáticas se obtiene como resultado una cadena diferente con una determinada longitud.
La principal propiedad de las funciones hash es lograr comprobar la integrar de un mensaje, es decir, poder comprobar si un mensaje ha sido o no modificado a un bajo coste, ya que no necesitan mucha memoria de un ordenador para realizarlos. Además, las funciones hash permiten comprimir datos no importando el tamaño de estos datos.
Una de las principales funciones de una función hash es evitar que dos entradas diferentes se obtenga la misma salida de datos.
Existen diferentes funciones hash (Díaz Gutiérrez, Y., & Cueva Lovelle, J. M., 2018), pero las mejoradas que utiliza el bitcoin y el documento de Satoshi Nakamoto es la SHA-2. Por tanto, el SHA-2 es la que Satoshi Nakamoto ha utilizado para desarrollar el conceptos de firmas digitales con curvas elípticas.
El algoritmo SHA-1 fue creado por el National Institute of Standards and Technology (NIST), con función hash que resume 160 bits, e hicieron una evolución al SHA-2.
Si no recordaba mal Szabo, las siglas de SHA significaban ‘Secure Hash Algoritmo’, es decir, algoritmo seguro de hash, y el número que tiene delante es la especificación de bits.
La función hash realizada por SHA-2 es una cadena compuesta por 64 dígitos hexadecimales como se puede ver en la siguiente imagen:
Por tanto, la función hash se utiliza para garantizar la integridad de las transacciones depositadas en los bloques, en la creación de direcciones y como parte del funcionamiento de la red de bitcoin, como se puede ver en la siguiente imagen:
La función de estructura hash establece una estructura de bloques del mensaje que se ha dividido según el tamaño, además se obtiene otro bloque correspondiente a la longitud denominado relleno (en inglés padding) de la criptografía. El relleno de la criptografía consiste en añadir un mensaje en binario 1 y, a continuación, tantos ceros como sean necesarios para obtener un bloque de 512 bits y al final se añade la longitud en bits del mensaje.
Continuará…
Referencias:
- Díaz Gutiérrez, Y., & Cueva Lovelle, J. M. (2018). Análisis de la función Hash Criptográfica en cadenas de bloques y su impacto en la seguridad de transacciones de datos . Redes De Ingeniería, 9(2), 82-87. https://doi.org/10.14483/2248762X.14383
- Generador de la función hash: https://hash.online-convert.com/es