¿Qué es el hash? Una guía completa para el hash

Una función hash toma una cadena de entrada de cualquier longitud y proporciona un hash de salida de una longitud fija. Al realizar el hash, obtiene una cadena de alfabetos y números pseudoaleatorios como salida que se verá así -> 242485AB6BFD3502BCB3442EA2E211687B8E4D89.

Las funciones hash son la piedra angular de la arquitectura de blockchain. Por lo tanto, si desea comprender mejor la cadena de bloques y las criptomonedas, debe tener total claridad sobre qué es el hash y qué puede hacer potencialmente. También analizaremos varias notas al margen, como el hash y el cifrado, para ayudarnos a comprender las principales diferencias entre ellas.

¿Qué son las propiedades hash?

Veamos algunas de las propiedades y características únicas de estas funciones hash.

1 determinista

En primer lugar, las funciones hash criptográficas son de naturaleza determinista. Esto significa que no importa cuántas veces analice una entrada a través de una función hash específica, siempre obtendrá la misma salida. Esto es extremadamente importante por varias razones, la menor de ellas es la precisión operativa.

2 Operaciones más rápidas

Las funciones hash deben ser muy rápidas y eficientes. El cálculo del hash debe ser lo más rápido posible. De lo contrario, será imposible utilizarlos en escenarios de cálculo en tiempo real.

3 Resistencia previa a la imagen

Primero, comprendamos qué significa la resistencia previa a la imagen. Si H (A) es el hash y H () es la función hash, A será la imagen previa. En pocas palabras, es el valor que obtiene la función hash. Entonces, la resistencia previa a la imagen establece que si se le da H (A), no es factible calcular el valor de A.

Entonces, ¿por qué decimos inviable en lugar de imposible?

La razón es que no es imposible encontrar la imagen previa de un hash. Todo lo que requiere es un ataque de fuerza bruta y mucho tiempo y paciencia para romper un hash. Pero la verdadera pregunta es, ¿cuánto tiempo necesitarás para romper este hash? Suponga que está utilizando un hash de 128 bits y desea averiguar cuál podría ser la imagen previa. En esta situación, hay tres escenarios posibles con los que nos enfrentamos:

  • En el mejor de los casos: de alguna manera tienes suerte con la respuesta correcta en tu primer intento. Sin embargo, esto es prácticamente imposible.
  • En el peor de los casos: finalmente obtiene la respuesta después de 2 ^ 128-1 intentos. En otras palabras, lo encontrará al final de todos los datos.
  • En algún lugar intermedio: obtienes tu respuesta después de (2 ^ 128) / 2 = 2 ^ 127 = 1.7 X 10 ^ 38 veces.

De cualquier manera, es un número enorme y tomará mucho tiempo y una gran cantidad de cálculos incluso intentar romperlo. En otras palabras, simplemente no vale la pena.

4 efecto bola de nieve

Para comprender esta propiedad, veamos un ejemplo sencillo. Mira la siguiente tabla. Tenga en cuenta que estamos utilizando un algoritmo hash SHA-256.

¿Ves lo que pasó aquí? Acabamos de cambiar el alfabeto de la entrada de mayúsculas a minúsculas, lo que provocó un gran cambio en el hash de salida. Esta es una propiedad valiosa, así que téngala en cuenta para el futuro.

5: resistente a colisiones

Dados dos hashes H (A) y H (B), con imágenes previas A y B, H (A) no puede ser igual a H (B). Básicamente, cada hash, en su mayor parte, es único. La palabra clave aquí es “en su mayor parte”. Para entender lo que queremos decir, analicemos la paradoja del cumpleaños.

Si sales a la calle, es muy probable que tengas el mismo cumpleaños que algún extraño al azar con el que te encuentres. Sin embargo, si reúne a 20-30 personas en una habitación, existe una probabilidad de 50-50 de que dos personas compartan el mismo cumpleaños.

¿Por qué pasó esto?

Imagina que tienes N posibilidades diferentes de que ocurra un evento. En este caso, necesita una raíz cuadrada de N para tener un 50% de probabilidad de colisión. Cuando se trata de cumpleaños, hay 365 posibilidades distintas de que ocurra ese evento. Al enraizar eso al cuadrado, obtenemos sqrt (365) = ~ 23. Por eso, en una sala con 20-30 personas, existe la posibilidad de una colisión.

¿Cómo es esto aplicable en hash? Bueno … si tiene un hash de 128 bits con 2 ^ 128 posibilidades. Por enraizamiento cuadrado, tenemos 2 ^ 64 opciones. Lo que esto significa es que tenemos una instancia de colisión en la instancia 2 ^ 64. Según esta lógica, ninguna función hash en el mundo está libre de colisiones.

6: Rompecabezas amigable

La propiedad final es la facilidad para los rompecabezas. Para cada salida Y, si elegimos una variable aleatoria “k” de una distribución de minentropía alta, no es factible encontrar un número aleatorio x, tal que:

H (k | x) = Y.

Veamos los términos que se describen aquí:

  • Distribución de minientropía alta: una distribución muy variada que se conoce por tener una minientropía alta. Elegir un número entre 1 y 3 es una distribución mínima de entropía baja, mientras que seleccionar un número entre 1 y millón es una distribución mínima de entropía alta.
  • k | x: el “|” es un signo de concatenación. La concatenación es un término que se utiliza para describir la adición de dos cadenas. Entonces, concatenar “HARRY” y “POTTER” te da “HARRY POTTER”.

Hashing en informática

En informática, hay dos estructuras de datos muy conocidas que desempeñan un papel fundamental en las arquitecturas blockchain:

  • Punteros
  • Listas vinculadas

Punteros

En la programación tradicional, los punteros son variables que almacenan la dirección de otra variable. Estas variables apuntan hacia otra variable. Un puntero hash es una clase especial de punteros que contienen el hash del valor de la variable a la que apunta. Este es uno de los casos más conocidos de hash en informática.

Listas vinculadas

Así es como se ve una lista enlazada:

Una lista vinculada es una secuencia de bloques, cada uno de los cuales contiene algunos datos. Un puntero vincula los bloques entre sí y contiene la dirección del siguiente bloque. Probablemente se esté preguntando si todo esto está muy bien, sin embargo, este no es un ejemplo de hash en la informática, ¿verdad?

Bueno, llevemos las cosas a otro nivel.

¿Qué pasa si, en lugar de un puntero, usamos un puntero hash que contiene el hash del bloque anterior?

¿Te suena familiar?

Bueno, debería, porque eso es lo que técnicamente es una cadena de bloques.

Hashing vs cifrado

Antes de continuar, hay otro concepto que debe quedar claro cuando se trata de hash en informática: hash vs cifrado. Si bien ambas son técnicas utilizadas en criptografía, siguen siendo muy diferentes.

  • Cifrado: el cifrado y el descifrado son dos partes de la criptografía asimétrica y simétrica. El cifrado es el proceso en el que el texto del archivo se convierte en texto cifrado. La única forma de decodificar el texto cifrado es utilizar la clave de descifrado correspondiente.
  • Hashing: Hashing no es un proceso bidireccional. La idea es simplemente convertir sus datos de entrada en un hash de salida.

Esperamos que esto le haya aclarado todo el debate sobre el cifrado y el hash. Muy bien, sigamos adelante.

Hashing en estructuras blockchain

La siguiente es una versión simplificada de la cadena de bloques de bitcoin.

Como puede ver, parece una simple lista enlazada con punteros hash. Ahora probablemente se esté preguntando, ¿por qué estamos usando un puntero hash en primer lugar? Bueno, así es como impartimos una de las características más importantes de blockchain: la inmutabilidad.

La inmutabilidad significa que una vez que ingresa datos en la cadena de bloques, no debe ser manipulado por completo. No hay nada que pueda hacer para eliminar los datos. Para comprender cómo funciona esto, tenga en cuenta la propiedad de “efecto bola de nieve” de las funciones hash. Ahora imagine que alguien ha intentado eliminar datos del bloque 2 de nuestra cadena de bloques.

  • Cambiar los datos en el bloque 2 cambia drásticamente el hash almacenado en el bloque 3 (bola de nieve).
  • Cambiar el hash almacenado en el bloque 3 cambia los datos generales almacenados en él.
  • Esto cambia el hash general del bloque 3, que se almacena en el bloque 4.

Esto crea una reacción en cadena completa, que en teoría debería cambiar toda la cadena de bloques, pero como eso es imposible, la cadena de bloques se vuelve inmutable.

¿Qué algoritmo de hash utiliza bitcoin para los bloques de hash?

Ahora que tenemos una comprensión básica de cómo funciona el hash criptográfico, respondamos la pregunta del millón de dólares: ¿qué algoritmo de hash utiliza bitcoin para los bloques de hash? En secciones anteriores, hemos utilizado repetidamente este algoritmo hash, llamado “SHA-256”. Aquí, SHA son las siglas de Secure Hashing Algorithms.

Algoritmos hash seguros (SHA)

SHA es una familia de algoritmos hash criptográficos que han sido publicados por NIST o el Instituto Nacional de Estándares y Tecnología. El SHA es un estándar federal de procesamiento de información (FIPS) de EE. UU. Los diferentes tipos de algoritmos SHA son los siguientes:

  • SHA-0: publicado originalmente en 1993 y era una función hash de 160 bits. Sin embargo, se eliminó tan pronto como los investigadores descubrieron una falla significativa en el sistema y lo reemplazaron con SHA-1.
  • SHA-1: esta versión fue diseñada por la Agencia de Seguridad Nacional (NSA) para ser parte del algoritmo de firma digital. Esta es también una función hash de 160 bits. Sin embargo, también tenía debilidades criptográficas específicas.
  • SHA-2: NSA creó esto utilizando el paradigma Merkle-Damgard. Hay dos funciones hash SHA-2: SHA-256 y SHA-512. Bitcoin usa SHA-256.
  • SHA-3: se creó en 2012 durante un concurso público de diseñadores que no pertenecen a la NSA. Si bien tiene las mismas longitudes que SMA -2, su estructura interna difiere del resto de los algoritmos SHA.

Hashing en operaciones de Bitcoin

El hash se utiliza principalmente en dos operaciones de Bitcoin:

  • Minería: un proceso intensivo en recursos en el que los mineros resuelven acertijos criptográficamente difíciles para encontrar un bloque apropiado para agregar a la cadena. Este proceso se llama prueba de trabajo.
  • Creación de direcciones: se utiliza una combinación de algoritmos hash SHA-256 y RIPEMD-160 para convertir su clave pública en una dirección pública. Cambiar la clave pública a una dirección pública la hace más segura y eficiente.

1 Hashing en minería

Los nodos de Bitcoin especializados llamados “mineros” extraen continuamente nuevos bloques de Bitcoin y garantizan que la cadena de bloques siga creciendo en longitud. Para comprender la minería POW, debemos comprender una métrica llamada “dificultad”. Recuerde, solo hay 21 millones de bitcoins que se extraerán. Si los mineros no están restringidos, nada les impedirá extraer a fondo todas las monedas existentes.

Junto con esto, también debe tener en cuenta que Bitcoin debe tener un tiempo de bloqueo constante de 10 minutos. Si no se mantiene este tiempo de bloqueo, resulta en:

  • Más colisiones, ya que dará lugar a la generación de más hashes.
  • Dado que los mineros extraerán con más frecuencia, inevitablemente conducirá a más bloques huérfanos, también conocidos como bloques que se han extraído correctamente pero que no llevan ninguna transacción dentro de ellos.

Para cumplir con estas restricciones, el protocolo de Bitcoin tiene una métrica llamada “dificultad”. Como es bastante evidente, la métrica de dificultad define cuán criptográficamente difícil debe ser el rompecabezas que los mineros deberán resolver. El objetivo de dificultad es una cadena de 64 caracteres y comienza con un montón de ceros cuando se trata de bitcoins. Dependiendo de la facilidad de la minería, el nivel de dificultad cambia cada bloque 2016.

¿Cómo funciona la minería de Bitcoin?

  • Los mineros recogen transacciones aleatorias que están en cola en el mempool y las colocan en un bloque.
  • El contenido del bloque tiene hash.
  • Luego, se agrega una cadena nonce o hexadecimal aleatoria al frente del hash.
  • La nueva cadena compuesta se vuelve a aplicar hash y se compara con la métrica de dificultad.
  • Si el nuevo hash se valora por debajo del nivel de dificultad, entonces la minería es un éxito y el minero puede agregar el bloque al bhain principal y recibir una recompensa.
  • Sin embargo, si no satisface los parámetros, los mineros deben cambiar el nonce y continuar el proceso hasta que tengan éxito.

Propiedad hash aplicable en minería

Una propiedad de hash fascinante que vimos durante nuestra discusión anterior es la facilidad de uso de los rompecabezas. Para darle un resumen rápido, para cada salida “Y”, no es factible encontrar una entrada “x” tal que H (k | x) = Y. En este caso:

  • Y es el hash final, que debe ser menor que la dificultad objetivo.
  • k es el nonce elegido por los mineros.
  • x es el hash del contenido del bloque actual.

Los principios de diseño de todo el proceso minero son los siguientes:

  • La parte de resolver acertijos es desafiante.
  • Sin embargo, comprobar si la solución es correcta combinando el nonce con el hash de bloque es fácil (según la propiedad “Operaciones más rápidas”).

¿Qué es la tasa de hash?

Otro término que se usa mucho cuando se trata de criptomonedas Bitcoin y POW, en general, es “tasa de hash”. Es una métrica que calcula la velocidad con la que se realizan las operaciones hash dentro de la red.

  • Una tasa de hash alta es indicativa de la red que tiene operaciones de hash más rápidas. Por tanto, esta red es más rápida y segura.
  • Una tasa de hash baja indica una red que tiene operaciones de hash más lentas. Estas redes son comparativamente más lentas y menos seguras.

2 Hashing en creaciones de megafonía

El segundo caso de uso importante de hash en las criptomonedas es la creación de direcciones públicas. Entonces, ¿cómo convierte su clave pública en direcciones públicas?

  • La clave pública que corresponde a su clave privada se genera primero mediante la multiplicación de criptografía de curva elíptica (ECC).
  • La clave pública primero se analiza a través de SHA-256.
  • El hash luego pasa a través de RIPEMD-160 para generar HASH_1 (nombre hipotético).
  • HASH_1 luego se analiza a través de SHA-256. Los primeros siete dígitos de este nuevo hash se convierten en HASH_2.
  • HASH_1 y HASH_2 se combinan para formar la dirección pública.

Conclusión: ¿Qué es el hash?

El hash es uno de los componentes que forman el corazón y el alma de las criptomonedas y la tecnología blockchain. Esperamos que esta guía haya podido demostrarle claramente qué es el hash. Además, también analizamos qué algoritmo de hash utiliza bitcoin para los bloques de hash. Si le apasiona este espacio, entonces tener una idea general de cómo funcionan las funciones hash criptográficas es una necesidad absoluta.

Hablando de eso, si realmente te apasiona este espacio y quieres forjar tu carrera aquí, ¡ven! Inscríbase en uno de nuestros cursos de educación blockchain de fama mundial en Ivan on Tech Academy. Los cursos han sido creados por expertos de la industria y nuestros propios formadores internos.

CriptoMundo

CriptoMundo.com es un medio digital independiente que difunde noticias y contenido sobre criptomonedas y tendencias emergentes de tecnologías financieras. Ofrece noticias, guías, artículos de opinión y gráficos en tiempo real.

Monedas

Bitcoin

Ethereum