El hash: Concepto fundamental en criptografía y blockchain

El hashing es un proceso que transforma datos de cualquier tamaño en una cadena de longitud fija. Este procedimiento se realiza mediante fórmulas matemáticas conocidas como funciones hash, implementadas como algoritmos.

Aunque no todas las funciones hash involucran criptografía, las denominadas funciones hash criptográficas son esenciales en el mundo de las criptomonedas. Gracias a ellas, las cadenas de bloques y otros sistemas descentralizados logran altos niveles de integridad y seguridad de datos.

Las funciones hash, tanto convencionales como criptográficas, son deterministas. Esto significa que, mientras la entrada no cambie, el algoritmo siempre producirá la misma salida (también llamada digest o hash).

Generalmente, los algoritmos hash en criptomonedas están diseñados como funciones unidireccionales, lo que implica que no pueden revertirse fácilmente sin una cantidad significativa de tiempo y recursos computacionales. En otras palabras, es relativamente sencillo generar la salida a partir de la entrada, pero extremadamente complejo hacer lo contrario. En términos generales, cuanto más difícil sea encontrar la entrada original, más seguro se considera el algoritmo hash.

Funcionamiento de una función hash

Distintas funciones hash generan resultados de diferentes tamaños, pero los posibles tamaños de salida para cada algoritmo hash son siempre constantes. Por ejemplo, el algoritmo SHA-256 solo puede producir resultados de 256 bits, mientras que SHA-1 siempre generará un digest de 160 bits.

Para ilustrar, pasemos las palabras "Gate" y "gate" por el algoritmo hash SHA-256 (el utilizado en Bitcoin).

SHA-256

Entrada

Salida (256 bits)

Gate

e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855

gate

b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9

Observe que un cambio mínimo (la mayúscula de la primera letra) resultó en un valor hash completamente diferente. Sin embargo, al utilizar SHA-256, las salidas siempre tendrán un tamaño fijo de 256 bits (o 64 caracteres), independientemente del tamaño de entrada. Además, no importa cuántas veces ejecutemos las dos palabras a través del algoritmo, las dos salidas permanecerán constantes.

En contraste, si ejecutamos las mismas entradas a través del algoritmo hash SHA-1, obtendríamos los siguientes resultados:

SHA-1

Entrada

Salida (160 bits)

Gate

3a7bd3e2360a3d29eea436fcfb7e44c735d117c4

gate

5df9954f1ca26eabf18c663cc9258ba7f7712c45

Es importante mencionar que SHA significa Secure Hash Algorithms. Se refiere a un conjunto de funciones hash criptográficas que incluyen los algoritmos SHA-0 y SHA-1 junto con los grupos SHA-2 y SHA-3. El SHA-256 forma parte del grupo SHA-2, junto con el SHA-512 y otras variantes. Actualmente, solo los grupos SHA-2 y SHA-3 se consideran seguros.

Importancia del hashing

Las funciones hash convencionales tienen una amplia gama de aplicaciones, incluyendo búsquedas en bases de datos, análisis de archivos grandes y gestión de datos. Por otro lado, las funciones hash criptográficas se utilizan extensamente en aplicaciones de seguridad de la información, como la autenticación de mensajes y la toma de huellas digitales. En el contexto de Bitcoin, las funciones hash criptográficas son una parte esencial del proceso de minería y también juegan un papel crucial en la generación de nuevas direcciones y claves.

El verdadero poder del hashing se manifiesta cuando se trata de enormes cantidades de información. Por ejemplo, se puede ejecutar un archivo o conjunto de datos grande a través de una función hash y luego usar su salida para verificar rápidamente la precisión e integridad de los datos. Esto es posible debido a la naturaleza determinista de las funciones hash: la entrada siempre producirá una salida simplificada y condensada (hash). Esta técnica elimina la necesidad de almacenar y "recordar" grandes cantidades de datos.

El hashing es particularmente útil en el contexto de la tecnología blockchain. La cadena de bloques de Bitcoin tiene varias operaciones que involucran hash, la mayoría de ellas dentro del proceso de minería. De hecho, casi todos los protocolos de criptomonedas se basan en hash para vincular y condensar grupos de transacciones en bloques, y también para producir enlaces criptográficos entre cada bloque, creando efectivamente una cadena de bloques.

Funciones hash criptográficas

Una función hash que implementa técnicas criptográficas puede definirse como una función hash criptográfica. En general, romper una función hash criptográfica requiere innumerables intentos de fuerza bruta. Para que una persona "revierta" una función hash criptográfica, tendría que adivinar cuál fue la entrada mediante prueba y error hasta que se produzca la salida correspondiente. Sin embargo, también existe la posibilidad de que diferentes entradas produzcan exactamente el mismo resultado, en cuyo caso se produce una "colisión".

Técnicamente, una función hash criptográfica debe cumplir tres propiedades para ser considerada efectivamente segura. Podemos describirlas como resistencia a la colisión, resistencia a la preimagen y resistencia a la segunda preimagen.

Antes de analizar cada propiedad, resumamos su lógica en tres frases cortas:

  • Resistencia a la colisión: no es factible encontrar dos entradas distintas que produzcan el mismo hash como salida.

  • Resistencia previa a la imagen: no es factible "revertir" la función hash (encontrar la entrada de una salida determinada).

  • Resistencia a la segunda preimagen: no es posible encontrar una segunda entrada que colisione con una entrada específica.

Resistencia a la colisión

Una colisión ocurre cuando diferentes entradas producen exactamente el mismo hash. Por lo tanto, una función hash se considera resistente a colisiones hasta el momento en que alguien encuentra una colisión. Es importante tener en cuenta que siempre existirán colisiones para cualquier función hash porque las posibles entradas son infinitas, mientras que las posibles salidas son finitas.

En otras palabras, una función hash es resistente a las colisiones cuando la posibilidad de encontrar una colisión es tan baja que requeriría millones de años de cálculos. Entonces, a pesar de que no existen funciones hash libres de colisiones, algunas de ellas son lo suficientemente robustas como para considerarse resistentes (por ejemplo, SHA-256).

Entre los distintos algoritmos SHA, los grupos SHA-0 y SHA-1 ya no se consideran seguros porque se han encontrado colisiones. Actualmente, los grupos SHA-2 y SHA-3 se consideran resistentes a colisiones.

Resistencia previa a la imagen

La propiedad de la resistencia a la preimagen está relacionada con el concepto de funciones unidireccionales. Una función hash se considera resistente a la preimagen cuando existe una probabilidad muy baja de que alguien encuentre la entrada que generó una salida particular.

Es importante notar que esta propiedad es diferente de la anterior porque un atacante intentaría adivinar cuál fue la entrada al observar una salida determinada. Una colisión, por otro lado, ocurre cuando alguien encuentra dos entradas diferentes que generan la misma salida, pero no importa qué entradas se utilizaron.

La propiedad de resistencia a la preimagen es valiosa para proteger los datos porque un simple hash de un mensaje puede demostrar su autenticidad, sin necesidad de revelar la información. En la práctica, muchos proveedores de servicios y aplicaciones web almacenan y utilizan hashes generados a partir de contraseñas en lugar de contraseñas en texto sin formato.

Resistencia a la segunda preimagen

Para simplificar, podemos decir que la resistencia de la segunda preimagen está en algún punto intermedio entre las otras dos propiedades. Un ataque de segunda preimagen ocurre cuando alguien es capaz de encontrar una entrada específica que genera la misma salida de otra entrada que ya conoce.

En otras palabras, un ataque de segunda preimagen implica encontrar una colisión, pero en lugar de buscar dos entradas aleatorias que generen el mismo hash, buscan una entrada que genere el mismo hash producido por otra entrada específica.

Por tanto, cualquier función hash que sea resistente a colisiones también lo será a ataques de segunda preimagen, ya que estos últimos siempre implicarán una colisión. Sin embargo, todavía se puede realizar un ataque de preimagen a una función resistente a colisiones, ya que implica encontrar una única entrada a partir de una única salida.

Minería y hashing

El proceso de minería de Bitcoin involucra numerosas operaciones de hash, como la verificación de saldos, la vinculación de entradas y salidas de transacciones, y el hashing de transacciones dentro de un bloque para formar un árbol de Merkle. Sin embargo, una de las principales razones por las que la cadena de bloques de Bitcoin es segura es el hecho de que los mineros necesitan realizar una gran cantidad de operaciones de hash para finalmente encontrar una solución válida para el siguiente bloque.

Específicamente, un minero debe probar varias entradas diferentes al crear un valor hash para su bloque candidato. En esencia, solo podrán validar su bloque si generan un hash de salida que comience con una cierta cantidad de ceros. La cantidad de ceros es lo que determina la dificultad de la minería y varía según la tasa de hash dedicada a la red.

En este contexto, la tasa de hash representa cuánta potencia computacional se invierte en la minería de Bitcoin. Si la tasa de hash de la red aumenta, el protocolo Bitcoin ajustará automáticamente la dificultad de extracción para que el tiempo promedio necesario para extraer un bloque se mantenga cercano a los 10 minutos. Por el contrario, si varios mineros deciden dejar de minar, lo que hace que la tasa de hash caiga significativamente, la dificultad de minado se ajustará, haciendo que sea más fácil minar (hasta que el tiempo promedio de bloque vuelva a 10 minutos).

Es importante destacar que los mineros no tienen que encontrar colisiones porque hay múltiples hashes que pueden generar como salida válida (comenzando con una cierta cantidad de ceros). Por lo tanto, hay varias soluciones posibles para un determinado bloque, y los mineros sólo tienen que encontrar una de ellas, según el umbral determinado por la dificultad de la minería.

Dado que la minería de Bitcoin es una tarea costosa, los mineros no tienen motivos para engañar al sistema, ya que provocaría pérdidas financieras importantes. Cuantos más mineros se unen a una cadena de bloques, más grande y más fuerte se vuelve.

Reflexiones finales

Sin duda, las funciones hash son herramientas fundamentales en informática, especialmente cuando se trata de grandes volúmenes de datos. Cuando se combinan con la criptografía, los algoritmos hash pueden ser bastante versátiles y ofrecen seguridad y autenticación de muchas maneras diferentes. Como tal, las funciones hash criptográficas son vitales para casi todas las redes de criptomonedas, por lo que comprender sus propiedades y mecanismos de funcionamiento es sin duda útil para cualquier persona interesada en la tecnología blockchain.

EL1.94%
Esta página puede contener contenido de terceros, que se proporciona únicamente con fines informativos (sin garantías ni declaraciones) y no debe considerarse como un respaldo por parte de Gate a las opiniones expresadas ni como asesoramiento financiero o profesional. Consulte el Descargo de responsabilidad para obtener más detalles.
  • Recompensa
  • Comentar
  • Republicar
  • Compartir
Comentar
0/400
Sin comentarios
  • Anclado
Opera con criptomonedas en cualquier momento y lugar
qrCode
Escanee para descargar la aplicación Gate
Comunidad
Español
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)