venerdì 30 giugno 2017

Hashcash e Le Sue Funzioni: Dai Filtri Antispam Ai Bitcoin (Proof Of Work)

Hashcash, inventato nel 1997 da Adam Back (anche se il primo abozzo del sistema è datato 1992, essendo stato proposto da M.Dworkin e Nair), è un sistema "Proof Of Work" importantissimo che ha avuto tante modalità d'impiego a livello informatico.
Utilizzato inizialmente per limitare lo spam di e-mail e gli attacchi di tipo D.o.S. , più recentemente è diventato noto per il suo impiego nell'algoritmo di mining dei Bitcoin.
Hashcash per le e-mail utilizza una codifica testuale (un contrassegno Hashcash) che viene aggiunto all'intestazione di una mail per dimostrare che il mittente ha speso una certa quantità di CPU prima di inviare l'e-mail.
In altre parole, come mittente ha impiegato una certa quantità di tempo (modesta) per generare l'hash ed inviare l'e-mail, è dunque improbabile si tratti di uno spammer (visto che inviano milioni di mail al minuto).
Il ricevente può, ad un costo computazionale trascurabile, verificare che il timbro è valido.
L'ipotesi alla base è che gli spammers, il cui modello di business si basa sulla loro capacità di inviare un gran numero di messaggi di posta elettronica con il minimo costo per messaggio e in pochissimo tempo, limiteranno la loro attività essendoci un piccolo costo computazionale per ogni mail inviata.
Entrando maggiormente nel gergo tecnico, se i primi 20 bit dell'hash (impronta) sono tutti zero, allora questa è un'intestazione accettabile (vengono calcolati i primi 160 bit comunque).
In caso contrario, il computer del mittente incrementa il contatore e prova a ricreare l'hash.
La possibilità che l'hash casualmente inizi con 20 zeri è di 1 su 220.
2140 hash sono i valori accettabili.
Il numero di volte che il mittente ha bisogno di provare e riprovare prima di ottenere un valore hash accettabile è modellato dalla distribuzione geometrica.
L'hash è calcolato in 1 secondo ma il tempo aumenta esponenzialmente in base agli zero presenti (che aumentano quando l'intestazione non è valida. Per un'intestazione valida, la potenza computazionale richiesta e il tempo sono ininfluenti e quindi trascurabili).
Un utente normale su un PC desktop non sarebbe disturbato dal tempo di elaborazione necessario per generare la stringa di Hashcash (inviando 1 sola mail o più di qualcuna alla volta).
Invece per gli spammers, il problema è molto diverso (essendo diverse migliaia di messaggi al secondo).
Il computer del destinatario della mail verifica se l'indirizzo della e-mail (nella stringa di hash) corrisponde ad uno degli indirizzi di posta elettronica validi registrati da parte del destinatario (mailing list a cui il destinatario è sottoscritto).
Se non viene trovato, la stringa di hash non è valida.
La stringa hash, per mail valide, è inserita in un database.
Se la stringa hash passa a tutti i test è considerata lecita.
Dunque su questo sistema si basano i filtri anti-spam.


BLOG E SPAMMERS
Alcuni gestori di siti e blog usano gli script Hashcash scritti in linguaggio JavaScript per limitare (anzi rallentare) commenti spam.
Altri quali WP-Hashcash usano un meccanismo simile.


BITCOIN
Hashcash è utilizzato anche per i Bitcoin governati da una rete p2p che internamente regola la quantità di lavoro.
Se le mail hanno bisogno di modesti e poco costosi 20 bits (1 trilione di milione) per la produzione di un blocco di Bitcoin nel 2015 se ne richiedevano 67.5 di bits (200 milioni).
Concettualmente il discorso è simile: tutti i calcoli complessi per fare mining (di un blocco) servono a rendere molto complesso invertire e contraffare il lavoro svolto sino a quel momento.
Il costo computazionale del Blockchain rende infatti impossibile alterare le transazioni (occorrerebbe sostituire tutti i nodi precedenti).

1 commento: