¿Cómo funcionan los hash de bloque en Blockchain?

Blockchain es la tecnología principal de la criptomoneda digital Bitcoin . La string de bloques es una base de datos distribuida de registros de todas las transacciones o eventos digitales que se han ejecutado y compartido entre las partes participantes. Cada transacción es verificada por la mayoría de los participantes del sistema. Contiene todos los registros de cada transacción. Una string de bloques es un concepto de almacenamiento de datos digitales. Esta información se presenta en fragmentos. Estos bloques están vinculados entre sí para que los datos no se puedan modificar. Cuando un bloque de datos se vincula con otros bloques, los datos de ese bloque no se pueden modificar nunca más.

Considere la siguiente imagen, que representa una colección de bloques de datos de transacciones.

Blockchain Transaction#1

Figura 1. La Transacción Blockchain #1

Blockchain Transaction#2

Figura 2. La Transacción Blockchain #2

Blockchain Transaction#3

Figura 3. La Transacción Blockchain #3

¿Qué es hash?

Un hash es una función matemática que transforma una entrada de longitud arbitraria en una salida cifrada de longitud fija. Este algoritmo de consenso es una colección de reglas que regula el funcionamiento de una red blockchain. Además de las criptomonedas, la aplicación más frecuente de las funciones hash es el almacenamiento de contraseñas.

Las funciones criptográficas tienen las funciones tradicionales junto con algunos rasgos de seguridad, lo que las hace difíciles de predecir y determinar el contenido subyacente del texto o la transacción.

¿Cómo funcionan realmente los hashes de bloque?

En palabras simples, simplemente tome cualquier string de entrada de longitud y luego termine con una string de una longitud fija a través de algún trabajo cada vez que se necesite realizar el proceso de hashing. Ese trabajo es hashing. Para entenderlo mejor, mira el siguiente diagrama:

Hashing process

Figura 4. Comprensión del hash de bloque. 

Ejemplo: Digamos, por ejemplo, que hay un algoritmo hash que toma una string de entrada y genera un valor hash de salida.

Input String: Wow, this is a great Geeks for Geeks Tutorial
Output: tVP4UguDYLYf7BoyRPLMVpnuVGIMYJkmcn5KOnXmkwdxt8AGU5

Nota: Incluso el más mínimo cambio en la estructura de algo podría tener un gran impacto en el conjunto de caracteres de salida generado por el bloque hash.

Incluso si hay un cambio en la string de entrada como este-

Input String: wow, this is a great geeks for geeks tutorial

La salida entonces resultaría ser-

Output: rVuSuWYq3oE1z0ROjBPjunQ7SJbMSPTgnj7slb2Uvo9Td4Tgay

Propiedades de los bloques hash:

1. Propiedad #1: La definición: Esto significa que no importa cuántas veces se analice una entrada dada usando una función hash, el resultado siempre será el mismo. Esto es esencial ya que será difícil realizar un seguimiento de la entrada si se obtienen diferentes hashes cada vez.

2. Propiedad n.º 2: generación fácil pero rápida: la función hash debería poder devolver rápidamente el hash de la entrada. Si el procedimiento no es lo suficientemente rápido, el sistema será ineficiente.

3. Propiedad n.º 3: resistencia de imagen anterior: como se ve en el ejemplo anterior, el hash generado no debe tener resistencia de imagen previa o anterior, incluso un pequeño cambio debería poder crear un bloque de hash diferente; de ​​lo contrario, será fácil de decodificar las transacciones, algo que no se quiere.

4. Propiedad #4: Comprobación de la integridad de los datos: el uso más habitual de las funciones hash es la comprobación de la integridad de los datos. Se utiliza para calcular sumas de comprobación para archivos de datos. Este programa ofrece al usuario la seguridad de que los datos son correctos. La verificación de integridad ayuda al usuario a detectar cualquier modificación en el archivo original. Sin embargo, no garantiza la originalidad de la obra. En lugar de cambiar los datos del archivo, el atacante puede actualizar todo el archivo, calcular un nuevo hash y entregárselo al destinatario. Este programa de prueba de integridad solo es útil si el usuario confía en la autenticidad del archivo.

5. Propiedad n.º 5: almacenamiento de contraseñas: el almacenamiento de contraseñas está protegido mediante funciones hash. En lugar de guardar las contraseñas en texto no cifrado, la mayoría de los procedimientos de inicio de sesión guardan los valores hash de las contraseñas en un archivo. El archivo de contraseñas se compone de una tabla de pares en la forma (ID de usuario, h(P)).

La paradoja del cumpleaños

Los asaltos de cumpleaños se basan en una dificultad única con algoritmos hash que se basan en una noción conocida como la paradoja de cumpleaños. Este problema se basa en el concepto de que en una habitación de 183 personas, hay un 50% de probabilidad de que una de ellas tenga tu fecha de nacimiento. Sin embargo, si quisiera una probabilidad del 50% de descubrir dos personas con cumpleaños idénticos, entonces solo se necesitan 23 personas en la habitación. Esto significa que para las funciones hash, es significativamente más fácil descubrir dos coincidencias si no importa cuáles son. Es factible calcular hashes con anticipación para una longitud de contraseña particular para ver si se producen conflictos.

Los hashes se pueden usar para verificar la integridad, pero muchos desarrolladores los usan incorrectamente, lo que reduce su eficacia. Muchos sitios web, por ejemplo, permiten descargar un archivo, así como la suma de verificación MD5 para ese archivo. Hacen esto, por lo que se puede verificar la integridad del archivo, pero descargan la suma de verificación desde el mismo lugar y con la misma conexión que el archivo mismo. ¿Cómo puede confiar en el hash que se originó en el mismo lugar si uno no confía lo suficiente en el archivo como para necesitar validarlo? Si alguien tiene la capacidad de modificar el archivo, puede calcular y guardar fácilmente un nuevo hash.

Dificultades que se enfrentan al crear un bloque hash: la dificultad de descubrir un bloque está integrada en la string de bloques, pero también está vinculada a los cuatro ceros iniciales de la salida hash. La dificultad aquí se refiere a la dificultad de obtener una salida de hash que sea menor o mayor que el objetivo. Porque cualquier cero se puede codificar (o cifrar) de muchas maneras posibles.

A medida que más personas se unen a la red, o más bien a medida que aumenta el poder de hash, la complejidad de la red crece con el tiempo. Sin embargo, se modifica regularmente para garantizar que el bloque se extraiga dentro de un período de tiempo determinado.

Propósito de la función hash: las funciones hash criptográficas, como los topes de velocidad en una motocicleta de carreras, crean obstáculos para los atacantes. Pero es importante darse cuenta de que la moto finalmente llegará a la calle. Sin embargo, estos obstáculos ralentizarán a los defensores: las personas normales y el servidor. Si el aumento de velocidad se establece demasiado alto, existe el riesgo de irritar al usuario y sobrecargar el servidor. El problema continuo es ralentizar a los atacantes mientras se equilibran los requisitos y el placer de los usuarios.

Una función adaptativa unidireccional es cualquier función que pretende iterar en su funcionamiento interno, retroalimentando la salida como entrada, lo que hace que tarde más en ejecutarse al final. Es adaptable ya que el desarrollador puede cambiar el número de iteraciones que ocurren. El diseño adaptativo se ha utilizado para diseñar funciones hash (como PBKDF2) y métodos de cifrado para proteger las contraseñas guardadas (como bcrypt ).

Función hash con clave: una función hash con clave (también conocida como código de autenticación de mensaje hash o HMAC) es un método que utiliza una clave criptográfica y una función hash criptográfica para generar un código de autenticación de mensaje con clave y hash.

Ventajas: los hashes criptográficos convierten las contraseñas de texto claro en texto cifrado para su almacenamiento. Los atacantes que obtienen acceso a la base de datos deben descifrar esos valores hash para poder explotarla. Los hashes, en otras palabras, ralentizan a los atacantes.

Contras:

  • Los hashes criptográficos simples pueden obstaculizar a los atacantes, pero eventualmente serán derrotados.
  • Los atacantes con un hardware potente pueden «romper» rápidamente las credenciales cifradas.
  • Aunque los buenos algoritmos hash están destinados a ser resistentes a las colisiones, las colisiones son difíciles de evitar por completo. Se ha demostrado que MD5 y SHA-1 tienen colisiones conocidas, es decir, devuelven el mismo valor hash cuando usan diferentes credenciales.

En general, cambiar las transacciones existentes en la string de bloques requiere bloques restantes, y cuando una transacción obtiene algunas confirmaciones, hacerlo requiere grandes cantidades de poder de procesamiento. Debido a que se requiere tanta potencia de computadora, cambiar bloques es esencialmente imposible. Entonces, los bloques hash funcionan de la manera más segura. 

Publicación traducida automáticamente

Artículo escrito por icloudanshu y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *