¿Qué es HashCash?

Tiempo de lectura: 5 minutos

Probablemente no lo sepas, pero Bitcoin es una tecnología creada a partir de la combinación de otros proyectos y tecnologías anteriores. Por esto, podemos afirmar que el protocolo Proof of Work es una herencia de HashCash. Pero ¿qué es HashCash y de qué manera ha sido usado en el contexto de las criptomonedas? Si quieres saberlo, sigue leyendo.

Historia de HashCash

Hashcash es un sistema de prueba de trabajo (PoW) creado por Adam Back en 1997, aunque su Whitepaper fue publicado en 2002.

El objetivo principal de Hashcash era minimizar la recepción de grandes cantidades de correos electrónicos no deseados, utilizando la colisión de hashes para ello. Inicialmente, su creación estaba destinada a combatir el spam de correo electrónico y los ataques DDoS. Sin embargo, en tiempos más recientes, el sistema se hizo popular con Bitcoin y otras criptomonedas, como una pieza esencial del algoritmo de minería.

Antes de bitcoin, SpamAssasin y Microsoft usaban hashcash en hotmail, exchange, outlook, etc.

En el algoritmo original de 1997, el hashcash usaba SHA1 porque en ese momento, este era el hash recomendado por NIST.

Bitcoin que se lanzó en 2008/2009 usa SHA256 ya que SHA1 comenzó a mostrar algunas debilidades.

¿Cómo funciona HashCash?

¿Cómo funciona HashCash?

El hash puede definirse como un algoritmo que transforma un input de datos en una dirección alfanumérica caracterizada por un número fijo de dígitos, que resume y protege la información insertada.

Es decir, con el hashing, cualquier dato se puede formalizar, convirtiéndose en un número único, aparentemente aleatorio, pero con una longitud predeterminada.

Cómo ya adelantamos, antes del Bitcoin, Hashcash fue inventado como una forma de prevenir el correo no deseado (spam).

Su inventor, Adam Back, pensaba que la única manera para poner un freno al envío de correos masivos era ponerle un coste mínimo (por ejemplo un centavo). Esto para un usuario normal no sería un límite, ya que no suele enviar miles de correos. Pero para a un spammer esto supondría un gasto de millones de centavos diarios y desincentivaría su conducta.

Pero, ¿cómo podría Hashcash obligar a los spammers a gastar un centavo digital? La respuesta radica en la idea central detrás de Hashcash, que ahora también es un factor clave de Bitcoin: la Prueba de Trabajo.

En el caso concreto del uso de correos electrónicos, para solucionar el problema de spam, hay que agregar una codificación textual de un sello hashcash al encabezado del correo electrónico para demostrar que el remitente ha gastado una cantidad modesta de tiempo de CPU calculando el sello antes de enviar el correo electrónico.

De esta manera, sabiendo si el remitente ha tardado cierto tiempo en generar el sello y en enviar el correo electrónico, sabremos si es un spammer. Es decir, los receptores de correos pueden verificar si un remitente hizo tal inversión (pagando la tarifa mínima) y usar los resultados para ayudar a filtrar el correo electrónico.

Un ejemplo de encabezado del correo será como este ejemplo:

X-Hashcash: 1:20:1303030600:mymail@domain.com::McMybZIhxKXu57jd:ckvi

El encabezado contiene:

  • La dirección de correo electrónico del destinatario (mymail@domain.com) que requiere que se calcule un encabezado diferente para cada destinatario;
  • La fecha que permite al destinatario asegurarse de que el encabezado sea exclusivo del mensaje de correo electrónico;
  • La información que prueba que se ha realizado el cálculo requerido.

¿Cómo saber si el correo no es spam?

Entonces, ¿cómo se puede saber si un correo contiene spam según el algoritmo HashCash?

LADO DEL REMITENTE

En el caso del lado del remitente, su ordenador prepara un encabezado y agrega un valor de contador inicializado a un número aleatorio. Luego calcula el hash SHA-1 de 160 bits del encabezado. Si los primeros 20 bits (los 5 dígitos hexadecimales más significativos) del hash son todos ceros, entonces se trata de un encabezado aceptable.

Si por lo contrario el encabezado no es válido, el remitente incrementará el contador y volverá a intentar el hash.

De 2160 valores hash posibles, hay 2140 valores hash que satisfacen este criterio y la posibilidad de seleccionar aleatoriamente un encabezado que tendrá 20 ceros como comienzo del hash es de 1 en 220 (aproximadamente uno en un millón).

El remitente tendrá que probar en promedio 220 valores para encontrar un encabezado válido y esto tomaría alrededor de un segundo para encontrarlo. Un usuario normal en un ordenador no sufriría de manera significativa por el tiempo de procesamiento requerido para generar la cadena Hashcash. Sin embargo, los spammers sufrirían significativamente debido a la gran cantidad de mensajes spam enviados

LADO DEL DESTINATARIO

En cuanto al lado del destinatario, el sistema funciona así:

El ordenador del destinatario calcula el hash SHA-1 de 160 bits de toda la cadena (en aproximadamente dos microsegundos en una máquina de 1 GHz).

Si los primeros 20 bits no son todos cero, el hash no es válido.

El ordenador del destinatario verifica la fecha en el encabezado (por ejemplo, «130421», que representa la fecha 13 de abril de 2021). Si no está dentro de los dos días posteriores a la fecha actual, no es válido (esto es debido a que se compensa la desviación del reloj y el tiempo de enrutamiento de la red entre diferentes sistemas).

El ordenador del destinatario verifica si la dirección de correo electrónico coincide con alguna de las direcciones de correo electrónico válidas registradas por el destinatario o si coincide con alguna de las listas de correo a las que está suscrito. Si no se encuentra una coincidencia, la cadena hash no es válida.

Finalmente, el ordenador del destinatario inserta la cadena hash en una base de datos. Si la cadena ya está en la base de datos (es decir, se está intentando reutilizar la cadena hash), no es válida.

Si la cadena hash pasa todas estas pruebas (que tardan pocos segundos), se considera una cadena hash válida.

Hasta el día de hoy no se conoce ningún método más eficiente que este sistema de fuerza bruta para encontrar un encabezado válido.

HashCash y Bitcoin

HashCash y Bitcoin

Satoshi Nakamoto se refirió al término HashCash en el Whitepaper de Bitcoin explicando que el algoritmo de Back fue la fuente de inspiración que le llevó a crear el algoritmo de minería Proof of Work que se encuentra en el libro mayor distribuido de Bitcoin.

La red Bitcoin utiliza un sistema de prueba de trabajo para permitir la capacidad de minar nuevos tokens de Bitcoin, crear bloques en la blockchain y mantener en seguridad la red.

Para que un minero (nodo) cree un bloque, tendrá que descubrir un código algorítmico para cumplir con el objetivo de la dificultad de la red.

Los bloques que se verifican se apilan unos sobre otros y forman la blockchain.

El propósito de la prueba de trabajo es proteger la red de actividades maliciosas. ¿Cómo lo consigue? Pues, brindando a los mineros un incentivo para respaldar y asegurar la red de Bitcoin y haciendo que sea rentable hacerlo y que no sea rentable intentar piratear la red.

La diferencia entre el algoritmo HashCash usado para detectar correos spam y la red Bitcoin es que la prueba de trabajo de Bitcoin utiliza dos hashes SHA-256 continuos, lo que limita la tasa promedio de 6 nuevos bloques de transacciones por hora.

Esta limitación, junto con la creciente popularidad de la minería de Bitcoin, aumenta la dificultad de la minería.

Ventajas y desventajas de HashCash

Ventajas de HashCash

  • Primero, Hashcash es bastante fácil de implementar en cuentas de correo y filtros de spam y no se necesita un servidor central;
  • Es invisible para los usuarios;
  • Es 100% efectivo contra spambots, ya que casi ninguno tiene la capacidad de leer y ejecutar Javascript.

Desventajas de HashCash

La principal desventaja de HashCash es que requiere un navegador con Javascript habilitado y, además, si el usuario no cuenta con un equipo potente, puede tardar varios segundos en calcularse.


Deja un comentario
La dirección de correo electrónico no será publicada. Los campos obligatorios están marcados *