Saltar al contenido

Funciones Hash: Aplicación Bitcoin

Funciones Hash: Aplicación Bitcoin

Funciones Hash: Aplicación Bitcoin

Una palabra recurrente en la minería Bitcoin es la palabra “Hachís”. En este artículo explicaremos qué es un “Hash” y qué significa en el contexto de Bitcoin. En próximos artículos, explicaremos cómo se utiliza el “Hash” para la minería de bitcoin y en el nivel de seguridad de la cartera.

La palabra “Hash” es un verbo inglés que traducido al español significa cortar o moler, pero en el contexto de una función criptográfica significa función hash o resumen criptográfico.

Un hash se utiliza en lo que se denomina funciones de hash criptográfico o funciones unidireccionales en el área de la criptografía. Este tipo de función se caracteriza por el cumplimiento de propiedades que la hacen apta para su uso en sistemas que dependen de la criptografía para proporcionar seguridad. Como todos los datos informáticos, los hashes no son grandes, y normalmente se escriben en sistemas hexadecimales (números entre 0 y 9 y letras entre A y F).

Un algoritmo Hash convierte una cantidad arbitrariamente grande de datos en un hash de tamaño fijo. Por ejemplo, el hash de la clave pública de la palabra “oroyfinanzas.com” (sin paréntesis) sería este 1DZEazabbJqtr2uciLFNxvgm1GBuS5kaej

Funciones Hash: Aplicación Bitcoin

Funciones deterministas (funciones deterministas en inglés)

Una función puede llamarse determinista si siempre crea el mismo resumen con la misma entrada, incluso si el resumen parece aleatorio.

Colisión

Una colisión ocurre cuando dos valores de entrada diferentes generan el mismo resumen. Una función hash debe ser resistente a la colisión.

El mismo Hash siempre será el resultado de los mismos datos (funciones determinísticas), pero modificar la información, incluso si es de un solo bit, resultará en un hash totalmente diferente.

La idea básica de un valor hash es servir como una representación compacta de la cadena de entrada, como en el ejemplo que usamos para oroyfinanzas.com. Este es un ejemplo de Wikipedia que muestra la importancia de que todos los datos de entrada sean iguales para lograr el mismo valor hash a ser determinístico.

Lo importante de un hash es que es fácil crear el valor hash, pero es prácticamente imposible deducir el contenido de la entrada a partir de la lectura del valor hash. Aunque es muy fácil producir un hash de una gran cantidad de datos, cada hash es único.

En el protocolo Bitcoin, el hash se utiliza en dos áreas importantes: las direcciones y la minería.

Aplicación en la generación de claves públicas y privadas

Para generar el hash de las claves públicas y privadas (cifrado de clave pública PKI English o Infraestructura de clave pública) se utiliza el algoritmo de cifrado Bitcoin ECDSA (Elliptic Curve DSA). Con el algoritmo ECDSA es posible generar la clave pública y la dirección pública de la clave privada, pero no al revés. Esto es crítico porque la clave privada es lo que da acceso a gastar Bitcoins que tienes en tu bolso o cartera. Con nuestro ejemplo anterior de oroyfinanzas.com fue 1DZEazabbJqtr2uciLFNxvgm1GBuS5kaej la clave pública y privada es 5K9xHTLBgEvfJuFNAcvBFcpaJKf2gLQJegjU5LDscguGwrQVx1i

Funciones Hash: Aplicación Bitcoin

Aplicaciones de los mineros en la minería Bitcoin

Bitcoin utiliza el algoritmo SHA-256 para generar números de secuencia Hash “aleatorios” verificables necesarios para definir un valor predecible del esfuerzo de la CPU. Los mineros que buscan el hash correcto, el que comienza con un cierto número de ceros, dependiendo de la dificultad creada por el momento la adición de un solo uso para la generación de bloques les permite ganar el premio del bloque (la Coinbase) en consecuencia. Esta forma de hash se aparta del hash enlazando todos los bloques del “bloque de cadena” (el bloque de cadena).

En otro artículo explicaremos con más detalle las funciones de hash SHA-256 y RIPEMD-160, el funcionamiento del proceso de minería en Bitcoin, el significado de un solo uso y Coinbase como parte del bloque de cadena.