Proof-of-work

Un sistema proof-of-work (POW) o protocollo proof-of-work, o funzione proof-of-work è una misura economica per scoraggiare attacchi denial of service (negazione di servizio) e altri abusi di servizio, come spam sulla rete, imponendo alcuni lavori dal richiedente del servizio, di solito intendendo tempo di elaborazione di un computer. Una caratteristica chiave di questi schemi è la loro asimmetria: il lavoro deve essere moderatamente complesso (ma fattibile) dal lato richiedente ma facile da controllare per il fornitore del servizio (service provider). Questa idea è anche conosciuta come funzione di costo della CPUclient puzzlepuzzle computazione o funzione di pricing della CPU.

Un sistema famoso, usato anche nella creazione di moneta Bitcoin è l'hashcash, che usa inversioni di hash parziali per verificare che il lavoro sia fatto, come token di buona volontà da inviare via e-mail. La seguente intestazione (header) rappresenta i calcoli di circa 252 hash per inviare un messaggio a calvin@comics.net il 19 gennaio 2038:

X-Hashcash: 1:52:380119:calvin@comics.net:::9B760005E92F0DAE

È verificabile con un singolo calcolo controllando l'hash SHA-1 del timbro (omette la porzione "X-Hashcash:") cominciando con 52 zeri binari, che corrispondono a 13 zeri esadecimali: 0000000000000756af69e2ffbdb930261873cd71.

È ancora oggetto di dibattito se i sistemi POW siano in grado di risolvere particolari casi di denial of service, come nel caso del problema spam.

I sistemi Proof-of-work sono usati come primitive da altri più complessi sistemi crittografici come quello che usa Bitcoin, un sistema simile a Hashcash.

Dopo diversi anni in cui si è proposto l'utilizzo del protocollo POW sulla rete Tor [1], gli sviluppatori dietro il progetto Tor hanno finalmente deciso di utilizzare un sistema POW per proteggere gli Onion Services dagli attacchi DoS che affliggono la rete[2].

Varianti[modifica | modifica wikitesto]

  • Challenge response (Risposta di sfida): i protocolli di questo tipo prendono un collegamento interattivo diretto tra il richiedente (client) ed il fornitore (server).
  • Solution-verification (Soluzione-Verifica): questi protocolli non hanno un collegamento: il problema è autoimposto prima che una soluzione venga richiesta dal richiedente, ed il fornitore deve controllare sia la scelta del problema che la soluzione trovata. La maggior parte di tali schemi sono procedure iterative probabilistiche illimitate come Hashcash.

Elenco di funzioni proof of work[modifica | modifica wikitesto]