SISTEMA BITCOIN: HASHCASH

Hashcash Da Wikipedia, l'enciclopedia libera.

Hashcash è un sistema proof-of-work utilizzato per limitare le e-mail di spam e gli attacchi denial of service, e più recentemente è diventato famoso per il suo uso in bitcoin (e altre criptovalute) come parte dell'algoritmo di mining. L'hashcash è stato proposto nel marzo 1997 da Adam Back. [1]

Come funziona

Hashcash è un algoritmo proof-of-work (scoraggia gli attacchi DOS e altri abusi di servizio) che richiede una quantità selezionabile di lavoro da eseguire, in cui tale prova di efficienza può essere mostrata senza problemi. Per noiing questo metodo via e-mail, un codice testuale di un hashcash viene aggiunto all'intestazione dell'e-mail per dimostrare che il mittente ha impiegato il tempo di utilizzare una piccola quantità di CPU, calcolando il timbro prima di inviare l'e-mail. In altre parole, se il mittente ha utilizzato un certo periododi tempo per generare il timbro e inviare l'e-mail, è molto improbabile che sia uno spammer. Il destinatario può, ad un costo di calcolo trascurabile, verificare che il timbro sia valido. Tuttavia, l'unico modo noto per trovare l'intestazione con le proprietà necessarieè attraverso la forza bruta, provando valori casuali, fino a quando non viene trovata la risposta. Tuttavia, mentre l'analisi di una singola stringa è facile, essere in grado di trovare una risposta soddisfacente è altrettanto difficile, e questo comporterà un numero considerevole di tentativi di trovare larisposta. L'ipotesi è che gli spammer, il cui modello di business si basa sulla capacità di inviare una grande quantità di email a basso costo per messaggio, smettano di realizzare un profitto se c'è anche un piccolo costo extra per ciascuno. spam inviato. Il destinatario puòverificare se il mittente ha effettuato tale investimento e utilizzare i risultati per filtrare e proteggere le e-mail. Dettagli tecnici La riga di intestazione è simile alla seguente: [2] X-Hashcash: 1: 20: 1303030600: adam@cypherspace.org :: McMybZIhxKXu57jd: ckvi L'intestazione contiene: • ver: formato versione hashcash, 1 (in sostituzione della versione 0). • bit: numero di (zero) bit "pre-immagine" nel codice hash. • data: l'ora in cui è stato inviato il messaggio, nel formato AAMMGG [hhmm [ss]]. • risorsa: stringa della risorsa dati che viene trasmessa, ad es. Indirizzo IP o indirizzo e-mail. • ext: estensione (opzionale; ignorata nella versione 1). • rand: stringa di caratteri casuali, codificati in formato base-64. • contatore: contatore binario (fino a 220), codificato nel formato base-64. L'intestazione contiene la data del messaggio, le informazioni che dimostrano che i calcoli richiesti hanno avuto luogo e l'indirizzo e-mail del destinatario, motivo per cui ogni intestazione deve essere calcolata in modo diverso per ciascun destinatario. La data consente al destinatario di registrare le intestazioni ricevute di recente edi assicurarsi che queste ultime siano univoche per il messaggio di posta elettronica. Lato mittente Il mittente prepara un'intestazione e imposta un valore del contatore inizializzato su un numero casuale. Quindi viene calcolato l'hash dell'intestazione SHA-1 a 160 bit. Se i primi 20 bit (ad esempio le prime 5 cifre esadecimali) dell'hash sono tutti zero, allora l'intestazione è accettabile. In caso contrario, il mittente incrementa il contatore e tenta l'hash ancora una volta. Su 2160 valori hash, solo 2140 valori hash soddisfano questo criterio. Pertanto, la probabilità diottenere casualmente un'intestazione che ha 20 zeri all'inizio dell'hash è 1 su 220. Il numero di tentativi che il mittente deve tentare di ottenere un codice hash valido è modellato dalla distribuzione geometrica. Il mittente dovrà provare una media di 220 values per trovare un'intestazione valida. Date stime ragionevoli del tempo necessario per calcolare l'hash, ci vorrà circa un secondo per trovare l'intestazione corretta. Al giorno d'oggi, non ci sono metodi più efficaci noti per trovare un'intestazione valida. Un utente normale che utilizza un PC desktop non è significativamente disturbato dal tempo di processo utilizzato per generare una stringa hashcash. Tuttavia, gli spammer soffriranno molto, considerando la grande quantità di messaggi di spam che inviano. Lato destinatario Tecnicamente, il sistema è implementato con leseguenti fasi: • Il computer del destinatario calcola l'hash SHA-1 a 160 bit dell'intera stringa. Il tempo di calcolo impiegato da una macchina da 1 GHz è di circa due microsecondi, molto meno tempo di quello necessario per ricevere il resto dell'e-mail. Se i primi 20 bnon sono tutti zero, l'hash non è valido. • Il computer del destinatario controlla la data all'interno dell'intestazione (ad esempio, "060409", che rappresenta il 9 aprile 2006). Se tale data non rientra nei due giorni precedenti la data corrente, la stringa hash non è valida. • Il computer del destinatario controlla se l'indirizzo e-mail nel codice hash corrisponde a qualsiasi indirizzo e-mail registrato valido del mittente o corrisponde a qualsiasi mailing list a cui il mittente è iscritto. • Il computer del destinatario aggiunge la stringa hash a un database. Se la stringa esiste già, la stringa hash non è valida. Se la stringa hash supera tutti questi test, viene considerata valida. Tutti questi test richiedono molto meno tempo e spazio su disco rispetto alla ricezione dell'intero corpo dell'e-mail. Vantaggi e svantaggi Il sistema hashcash , rispetto alle proposte di micropagamento, ha il vantaggio che non è coinvolta alcuna somma di denaro. Né il mittente né il destinatario devono pagare, e quindi i problemi amministrativi connessi con tutti i sistemi di micropagamento sono completamenterisolti. D'altra parte, poiché gli hashcash richiedono risorse di elaborazione potenzialmente significative da utilizzare per ogni e-mail inviata, è un po 'difficile sintonizzare la giusta quantità di tempo medio desiderato, con i client che impiegano tempo per calcolare un'intestazione valida. Ciò può significare sacrificare l'accessibilità ai sistemi embedded di fascia bassa o correre il rischio che gli host ostili non vengano sfidati abbastanza da fornire un efficace filtro antispam. L'hashcash è anche abbastanza semplice da implementare all'interno di agenti di posta elettronica e filtri antispam. Non c'è bisogno di un server centrale. L'hashcash può essere implementato in modo incrementale - l'intestazione aggiuntiva dell'hashcash viene ignorata quando viene ricevuta dai client di posta elettronica che non possono interpretarlo. Un'analisi plausibile [3] ha concluso che è probabile solo uno dei seguenti cases: o le e-mail non spam saranno bloccate a causa della mancanza di potenza di calcolo del mittente, o lo spam continuerà a passare. Un esempio di entrambi i casi include, rispettivamente, una topologia di posta elettronica centralizzata (mailing list), in cui alcuni server devono inviare enormi quantità di e-mail legittime, e botnet o cluster farm con cui gli spammer possono aumentare enormemente la loro potenza di calcolo. La maggior parte di questi problemi può essere affrontata. Ad esempio, le botnet potrebbero svanire rapidamente in quanto gli utenti potrebbero notare l'elevato carico di CPU e prendere contromisure, e i server delle mailing list potrebbero essere registrati in liste bianche sugli host abbonati e quindi alleviare le provocazioni di hashcash. [Senza fonte] Un altro problema analizzato è che, secondo la legge di Moore, i computer stanno diventandosempre più famosi ogni giorno. Pertanto la difficoltà dei calcoli richiesti deve essere aumentata nel tempo. Comunque sia, ci si può aspettare che i paesi in via di sviluppo utilizzino hardware vecchio, il che significa che potrebbero trovare molto difficile partecipare a questa e-mail system. Questo accade anche nei paesi più sviluppati, a individui a basso reddito che non possono permettersi l'hardware più aggiornato. Come l'hashcash, le criptovalute utilizzano una funzione hash, come fanno i sistemi proof-of-work. L'ascesa delle criptovalute ha creato un demand per le macchine minerarie basate su ASIC (circuiti creati appositamente per uno scopo). Sebbene la maggior parte delle criptovalute utilizzi la funzione hash SHA-256, la stessa tecnologia ASIC potrebbe essere utilizzata per creare risolutori di hashcash che sono tre volte più veloci di una normale CPU, riducendo l'ostacolo di calcolo per gli spammer. Applicazioni Estrazione di Bitcoin A differenza degli hashcash nelle applicazioni di posta, che si basano sul destinatario per impostare manualmente una quantità di lavoro destinata a scoraggiare i mittenti malintenzionati, la rete di criptovaluta Bitcoin rappresenta una diversa prova di lavoro basata su hash che rende competitivo il mining di bitcoin. Un minatore di bitcoin esegue un programma sul PC che raccoglie tutte le transazioni non confermate dai commercianti di monete online. Con altri dati, questo può formare un blocco e fare soldi per ilminer, ma il blocco è accettato dalla rete solo quando il minatore scopre un numero "nonce" (numero arbitrario che può essere usato solo una volta) con un metodo di prova ed errore. che quando incluso nel blocco, restituisce un hash con un numero sufficiente di zero bit per raggiungere l'obiettivo di ostacolare la rete. I blocchi accettati dai minatori formano una blockchain bitcoin, che è un libro mastro in crescita composto da tutte le transazioni bitcoin sin dalla prima creazione della moneta. Mentre gli hashcash utilizzano la politica hash SHA-1 e hanno bisogno dei primi20 bit hash su 160 per essere zero, bitcoin proof-of-work utilizza altri due hash della politica SHA-256, che originariamente richiedevano che almeno i primi 32 su 256 bit hash fossero zero. Comunque sia, la rete bitcoin ripristina periodicamente il livello di difficoltà per mantenere il numero medio di creazioni di blocchi a 6 all'ora. Filtri antispam Gli hashcash vengono utilizzati come potenziale soluzione ai falsi positivi (o "falsi allarmi", ovvero un risultato che indica che una determinata condizione esiste, sebbene non esista) con unsistema di filtro antispam utomated, poiché gli utenti legittimi raramente saranno disturbati dall'eccesso di tempo necessario per trovare un timbro. [4] Lo SpamAssassin è stato in grado di trovare francobolli hashcash dalla versione 2.70, assegnando un punteggio negativo (cioè spam meno probabile) ai francobolli hashcash v alid e non spesi . Tuttavia, sebbene il plug-in hashcash sia teoricamente attivo per impostazione predefinita, deve comunque essere configurato con un elenco di modelli di indirizzi che devono corrispondere ai campi delle risorse hashcash, quindi non funziona effettivamente per impostazione predefinita. Clientdi posta elettronica Su SourceForge, il progetto software Penny Post [5] implementa hashcash nel client di posta elettronica Mozilla Thunderbird [6]. Il progetto prende il nome dal fatto che alcuni servizi di posta elettronica costano al mittente solo un centesimo. Blog Proprio come le e-mail, i blogsono molto spesso vittime di spam. Alcuni proprietari di blog hanno utilizzato script hashcash scritti in JavaScript per rallentare gli spammer. [7] Alcuni script pretendono di implementare hashcash, ma in realtà dipendono dall'offuscamento JavaScript che costringe il client a generare una chiave matching; sebbene tutto ciò richieda potenza di calcolo, non vengono utilizzati algoritmi hashcash o timbri hashcash.