Hashcash

Criptodivisas

HashCash | Historia de las criptodivisas

5 May , 2020  

Esta es una breve historia sobre HashCash, la propuesta de ‘prueba de trabajo’ realizada por Adam Back para combatir el SPAM en los correos electrónicos que posteriormente se acabó utilizando en los Bitcoins y la gran mayoría de las criptodivisas actuales.

Desarrollador y trasfondo

Fotografía de Adam Back
Adam Back

Como hemos comentado en la introducción, HashCash es un sistema de prueba de trabajo propuesto inicialmente por Adam Back, un criptógrafo londinense, con la idea de combatir el SPAM en los correos electrónicos.

Adam Back es un doctor en Ciencias de la Computación, ampliamente reconocido por sus diversos trabajos en criptografía y sistemas anónimos. Además es uno de los primeros integrantes del movimiento cypherpunk, cuyo objetivo es protegernos de la pérdida de privacidad en la red.

En el año 1997, basándose en anteriores libros blancos, como por ejemplo el libro blanco ‘Pricing via Processing or Combatting Junk Mail‘, publicado por Cynthia Dwork y Moni Naor en 1992, Adam publicaba su propio libro blanco, ‘Hashcash – A denial of Service Counter-Measure‘, un sistema que busca consumir recursos de la CPU en una ‘prueba de trabajo’ con la intención de que este gasto de recursos disuada a la gente que realiza envíos de correo electrónico de forma indiscriminada, el conocido SPAM.

Funcionamiento de HashCash

HashCash es una prueba de trabajo basada en cálculos de funciones hash (funciones con una entrada de conjunto de elementos y una salida de longitud fija) que requieren una cantidad importante de tiempo de trabajo de procesamiento del equipo, pero cuya validez se puede verificar rápidamente.

Aplicado a los correos electrónicos (el propósito inicial de HashCash), esto supone añadir una cabecera en los correos electrónicos con los cálculos realizados para probar que el emisor del correo electrónico ha realizado este gasto de tiempo de procesamiento antes de enviar el mensaje, demostrando así que no está enviando SPAM por el simple hecho de que enviar un mensaje masivamente requeriría realizar este cálculo para cada mensaje enviado. El receptor puede, realizando un procesamiento muy inferior al del emisor, verificar la cabecera enviada.

Detalle técnico

Veamos un ejemplo de cabecera HasCash y el significado de cada parte:

X-Hashcash: 1:20:1303030600:[email protected]::McMybZIhxKXu57jd:ckvi
  • ver: Versión de Hascash, en este caso la 1.
  • bits: Número de bits de ‘imagen previa parcial’ en la función hash.
  • date: Fecha y hora en la que fue enviado el mensaje.
  • resource: Cadena de datos del recurso que al que envía la información, por ejemplo una dirección IP o de correo electrónico.
  • ext: Extensión (opcional, no se utiliza en la versión 1, por eso aparece en blanco en el ejemplo).
  • rand: Cadena aleatoria de caracteres, codificada en base64.
  • counter: Contandor binario, codificado en base64.

El hecho de que la cabecera tenga la dirección de correo electrónico o IP de destino hace que los cálculos estén directamente asociados a cada destinatario.

Para el emisor de correo electrónico este cálculo suele suponer un par de segundos de procesamiento, algo perfectamente asumible cuando queremos enviar correos electrónicos con normalidad, pero que se vuelve una importante barrera en el momento en que queremos enviar miles de correos de forma simultánea.

Por su parte, cuando el receptor del correo quiere examinar la autenticidad del mensaje solo tiene que:

  • Calcular la función hash de toda la cabecera HashCash.
  • Comprobar la validez de la fecha de emisión.
  • Comprobar la dirección IP o de correo electrónico.
  • Comprobar la existencia de la cadena aleatoria en su base de datos interna de duplicados.

Estas tareas apenas conllevan unas milésimas de segundo de procesamiento.

HashCash en la práctica: casos de uso

El sistema de prueba de trabajo de HasCash ha permitido proporcionar un mecanismo para la detección y control de los ataques SPAM en los servicios de correo electrónico. Cualquier servidor de correo electrónico puede configurarse para implementar la generación de cabeceras HasCash, del mismo modo que los clientes de correo electrónico pueden analizar estas cabeceras. Cabe destacar que la centralización de los servidores de correo electrónico en unos pocos servicios (Gmail, Yahoo, Outlook, etc.) ha provocado un declive en el uso del sistema HashCash porque estas empresas utilizan ‘machine learning’ para mitigar el SPAM, haciendo innecesario el uso de HashCash (aunque pueden complementarse).

Además de esto, HashCash también puede utilizarse en los sistemas de archivos. Creando firmas únicas en cada bloque de datos almacenados, HashCash permite verificar la autenticidad de estos bloques. Gracias a este uso los sistemas de archivos se pueden volver tolerantes a fallos como la degradación. ZFS, btrfs o SFS son sistemas de archivos capaces de hacer uso de HashCash.

Sin embargo, el uso más extendido en la actualidad y que realmente catapultó HashCash no es otro que el Bitcoin. La cadena de bloques de Bitcoin hace uso de HashCash como parte de su núcleo de mineria. Todos los mineros de Bitcoin están continuamente realizando comprobaciones de trabajo de HashCash para obtener recompensas. Y esta es la razón por la que el primer artículo de la historia de las criptodivisas está dedicado a HasCash.

Referencias

, , , , , , ,

By  -        
Soy un Full Stack Developer que vive en Valladolid. Actualmente trabajo en la empresa Ilunion Tecnología y Accesibilidad. Soy un apasionado de la informática, la tecnología, aficionado a la fotografía y enamorado del diseño eficiente.



Deja un comentario