Cos’è Hashcash?

¿Qué es HashCash?
8 min read

Probabilmente non lo sai, ma Bitcoin è una tecnologia creata dalla combinazione di altri progetti e tecnologie precedenti. Per questo motivo possiamo affermare che il protocollo Proof of Work è un’eredità di HashCash. Ma Cos’è HashCash e come è stato utilizzato nel contesto delle criptovalute? Se vuoi saperlo, continua a leggere.

Storia di HashCash

Hashcash è un sistema di prova di lavoro (PoW) creato da Adam Back nel 1997, anche se il suo Whitepaper fu pubblicato nel 2002.

L’obiettivo principale di Hashcash era ridurre al minimo la ricezione di grandi quantità di e-mail di spam, utilizzando la collisione di hashing. In un primo momento, la sua creazione aveva lo scopo di combattere lo spam e gli attacchi DDoS. Tuttavia, in tempi più recenti, il sistema divenne popolare con Bitcoin e altre criptovalute, come parte essenziale dell’algoritmo di mining.

Prima di bitcoin, SpamAssasin e Microsoft utilizzavano hashcash in Hotmaill, exchange, outlook, etc.

Nell’algoritmo originale del 1997, HashCash utilizzava SHA1 perché all’epoca questo era l’hash raccomandato dal NIST.

Bitcoin che venne lanciato nel 2008/2009 utilizzò SHA256 poiché SHA1 iniziò a mostrare alcuni punti deboli.

Come funziona HashCash?

¿Cómo funciona HashCash?

L’hash può essere definito come un algoritmo che trasforma un input di dati in un indirizzo alfanumerico caratterizzato da un numero fisso di cifre, che riassume e protegge le informazioni inserite.

Vale a dire, con l’hashing, tutti i dati possono essere formalizzati, diventando un numero unico, apparentemente casuale, ma con una lunghezza predefinita.

Come abbiamo già anticipato, prima di Bitcoin, Hashcash fu inventato come come un modo per prevenire lo spam. (spam).

Il suo inventore, Adam Back, credeva che l’unico modo per porre fine al mailing di massa fosse quello di mettere un costo minimo (diciamo un centesimo). Questo per un utente normale non sarebbe un limite, poiché di solito non invia migliaia di e-mail. Ma per uno spammer ciò costerebbe milioni di centesimi al giorno e scoraggerebbe il suo comportamento.

Pero, Come potrebbe Hashcash costringere gli spammer a spendere un centesimo digitale? La risposta sta nell’idea centrale dietro Hashcash, che ora è anche un fattore chiave di Bitcoin.: la Prueba de Trabajo.

Nel caso specifico dell’uso delle email, per risolvere il problema dello spam, bisogna aggiungere una codifica testuale di un sigillo hashcash all’intestazione della posta elettronica per dimostrare che il mittente ha speso una modesta quantità di tempo di CPU calcolando il sigillo prima di inviare l’e-mail.

In questo modo, sapendo se il mittente ha impiegato del tempo per generare il sigillo e inviare l’email, sapremo se è uno spammer. Cioè, i destinatari delle e-mail possono verificare se un mittente ha effettuato un tale investimento (pagando la tariffa minima) e utilizzare i risultati per filtrare l’e-mail..

Un esempio di intestazione della posta sarà come questo esempio:

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

L’intestazione contiene:

  • L’indirizzo email del destinatario (mymail@domain.com) che richiede il calcolo di un’intestazione diversa per ciascun destinatario;
  • La data che permette al destinatario di assicurarsi che l’intestazione sia esclusiva del messaggio di posta elettronica;
  • L’informazione che prova che il calcolo richiesto è stato effettuato.

Come si fa a sapere se la posta ricevuta non è spam?

Come si fa a sapere se una mail contiene spam secondo l’algoritmo Hashcash?

LATO MITTENTE

Nel caso del lato mittente, il computer prepara un’intestazione e aggiunge un valore di contatore inizializzato a un numero casuale. Quindi calcola l’hash SHA-1 a 160 bit dell’intestazione. Se i primi 20 bit (le 5 cifre esadecimali più significative) dell’hash sono tutti zeri, allora questa si considera un’intestazione accettabile.

Se altrimenti l’intestazione non è valida, il mittente incrementerà il contatore e ritenterà l’hash.

Su 2.160 hash possibili, ci sono 2.140 hash che soddisfano questo criterio e la possibilità di selezionare casualmente un’intestazione che avrà 20 zeri all’inizio dell’hash è 1 su 220 (circa uno su un milione).

Il mittente dovrà provare in media 220 valori per trovare un’intestazione valida e questa operazione richiederebbe circa un secondo per trovarla. Un normale utente su un computer non soffrirebbe in modo significativo del tempo di elaborazione richiesto per generare la stringa hashcash. Tuttavia, gli spammer soffrirebbero in modo significativo dell’elevato numero di messaggi di spam inviati.

LATO DESTINATARIOº

Per quanto riguarda il lato destinatario, il sistema funziona in questo modo:

Il computer del destinatario calcola l’hash SHA-1 a 160 bit dell’intera catena (in circa due microsecondi su una macchina da 1 GHz).

Se i primi 20 bit non sono tutti zero, l’hash non è valido.

Il computer del destinatario verifica la data nell’intestazione (ad esempio, “130421”, che rappresenta la data del 13 aprile 2021). Se non è entro due giorni dalla data corrente, non è valido (questo è il motivo per cui la deriva dell’orologio e il tempo di instradamento della rete tra i diversi sistemi vengono compensati).

Il computer del destinatario verifica se l’indirizzo di posta elettronica corrisponde ad uno degli indirizzi di posta elettronica validi registrati dal destinatario o se corrisponde ad una delle mailing list a cui è iscritto. Se non viene trovata una corrispondenza, la stringa hash non è valida.

Infine, il computer del destinatario inserisce la stringa hash in un database. Se la stringa è già nel database (cioè si sta cercando di riutilizzare la stringa hash), questa non è valida.

Se la stringa hash supera tutti questi test (che richiedono pochi secondi), è considerata una stringa hash valida.

Fino ad oggi non si conosce alcun metodo più efficiente di questo sistema di forza bruta per trovare un’intestazione valida.

HashCash e Bitcoin

HashCash y Bitcoin

Satoshi Nakamoto fece riferimento al termine HashCash nel Bitcoin Whitepaper spiegando che l’algoritmo di Back era la fonte di ispirazione che lo ha portato a creare l’algoritmo di mining Proof of Work che si trova nel libro mastro distribuito di Bitcoin.

La rete Bitcoin utilizza un sistema di prova del lavoro per consentire la possibilità di estrarre nuovi token Bitcoin, creare blocchi sulla blockchain e mantenere la rete sicura.

Affinché un miner (nodo) crei un blocco, dovrà scoprire un codice algoritmico per raggiungere l’obiettivo della difficoltà di rete.

I blocchi verificati sono impilati uno sopra l’altro e formano la blockchain.

Lo scopo della Proof of Work è proteggere la rete da attività dannose. Come ci riesce? Ebene, fornendo ai miners un incentivo per appoggiare e proteggere la rete Bitcoin e facendo in modo che sia redditizio farlo e che invece non sia redditizio tentare di hackerare la rete.

La differenza tra l’algoritmo HashCash usato per rilevare email spam e la rete Bitcoin è che lla proof of work di Bitcoin usa due hash SHA-256 continui, che limitano il tasso medio di 6 nuovi blocchi di transazioni all’ora.

Questa limitazione, insieme alla crescente popolarità del mining di Bitcoin, aumenta la difficoltà di estrazione.

Vantaggi e svantaggi di HashCash

Vantaggi di HashCash

  • In primo luogo, Hashcash è abbastanza facile da implementare in account di posta e filtri spam e non è necessario un server centrale;
  • È invisibile per gli utenti;
  • È efficace al 100% contro gli spambots, poiché quasi nessuno ha la capacità di leggere ed eseguire Javascript.

Svantaggi di HashCash

Il principale svantaggio di HashCash è che richiede un browser abilitato per Javascript e, inoltre, se l’utente non possiede una macchina potente, può richiedere diversi secondi per il calcolo.