CHE COS’È UN HASH
Vi siete mai chiesti perché “Ho dimenticato la password” vi fa sempre creare una nuova password invece di dirvi semplicemente qual era la vostra vecchia password?
È perché il sito web su cui vi siete registrati non sa quale fosse la vostra vecchia password! Ha solo salvato l’hash della password e non ha alcun modo di capire quale fosse l’originale. Questo per una questione di sicurezza. Immaginate di salvare le password in chiaro nel database. Chiunque ne avesse l’accesso potrebbe vedere le password di ciascuno di noi.
Quando si effettua l’accesso e si preme sul tasto Login, il sito web prende la nostra password e la sottopone ad una funzione di hashing, quindi la confronta con l’hash memorizzato nel database e se corrisponde ci concede l’ingresso nel sito.
Le funzioni che generano gli hash sono un concetto chiave in informatica, in crittografia e, ebbene sì, anche in #bitcoin.
È impossibile spiegare come funziona il bitcoin senza prima capire che cos’è un hash.
In informatica gli hash sono usati per tutti i tipi di cose. Per iniziare a comprenderne l’importanza facciamo finta che un hash sia come un’impronta digitale. La funzione di hash è un particolare generatore di impronte in cui possiamo inserire qualsiasi dato e informazione e lei ci tirerà fuori un’impronta digitale.
Può essere utilizzata qualsiasi funzione matematica, ma una buona funzione di hash garantirà sempre che i diversi dati di input inseriti avranno ciascuno impronte digitali univoche. Non importa la quantità di informazioni che vengono immesse, l’hash risultante è sempre diverso. Se, invece, inseriamo medesime informazioni la funzione di hash presenterà sempre lo stesso identico risultato.
LA FUNZIONE DI HASH SHA-256
Una delle funzioni di hash più comuni utilizzate oggi si chiama SHA-256, che sta per “Secure Hash Algorithm 256 bits”.
Questa funzione ci garantisce due cose importanti:
- è molto probabile che ogni impronta digitale sia unica al mondo
- se fornisco solo l’impronta digitale non c’è modo di indovinare quali siano i dati di input
Per approfondire il secondo concetto vi presento una domanda di esempio a cui dovete provare a rispondere: quali sono i dati di input che hanno generato l’hash SHA-256 seguente?
bab62dfc96a96e1d6479f5fada6658cc4fc4bf18efa1713f97189df135ab188a
Qualcuno ha qualche idea idea?
Non credo proprio! Secondo quello che sappiamo sulla matematica è praticamente impossibile capire la risposta a questa domanda. I dati di input potrebbero essere qualsiasi cosa. Forse è la lettera “S”, o forse è l’intero testo del “Signore degli anelli”. Non lo sapremo mai a meno che non sia io a comunicarlo. La risposta è Blog di Sergio Casizzone
Per verificare che sto dicendo la verità potete provare ad andare su questo sito dove potete divertirvi a controllare e a fare i vostri esperimenti https://xorbin.com/tools/sha256-hash-calculator
IL MINING COME UN GIOCO
Tornando al Bitcoin, la funzione SHA-256 gioca un ruolo chiave nella generazione degli indirizzi e nel mining. Non mi addentrerò nei dettagli, ma cercherò di spiegare il meccanismo di come il bitcoin utilizza gli hash nel suo sistema.
Fingiamo che io vi chieda di fornirmi un hash che deve iniziare con 0000 e che contenga all’interno la parola “Bitcoin”. La prima persona che riesce a trovare una risposta avrà una ricompensa.
Qual è la vostra strategia? Ricordiamo che non c’è modo di iniziare con l’hash e capire i dati di input. L’unico modo di indovinare è effettuare un processo che viene chiamato “brute force“, cioè cercheremo tutti i casi e combinazioni possibili dei dati di input.
Procediamo in questo modo: calcoliamo l’hash di “Bitcoin-1” e vediamo se inizia con 0000. Calcoliamo l’hash di “Bitcoin-2” e vediamo se inizia con 0000. Quindi proviamo “Bitcoin-3”, “Bitcoin-4”, ecc. In effetti, l’unico modo che abbiamo per trovare la risposta è quello di continuare a provare e controllare finché non ne troviamo uno.
Dopo molti tentativi, se continuiamo questo processo, arriveremo al numero 1918 e… proviamo a dare un’occhiata: l’hash di “Bitcoin-1918” è 00007eb7d15a7f52aabb6bece4b1b3be3e606cc93d020c6f703bf7ff9bd2ac9e ed inizia proprio con “0000”. L’abbiamo trovato!
Cosa ci insegna questo? Che abbiamo eseguito del lavoro per effettuare questo controllo ed adesso ci meritiamo un premio. In effetti ciò che abbiamo fatto è dimostrare che abbiamo eseguito del lavoro. In inglese si dice “Proof of work“.
In parole povere, modificando adeguatamente la ricerca dell’hash e sostituendo la parola “Bitcoin-1” con un elenco di transazioni bitcoin, abbiamo adesso più chiaro il concetto di come funziona il processo di mining del bitcoin.
I miner sono tutti impegnati a cercare un elenco di transazioni valide che abbiano un hash che inizia con una serie di 0 iniziali. Tanti più zeri iniziali vengono richiesti, tanto più elevata sarà la difficoltà per trovare effettivamente la risposta adatta. Quando uno di loro, infine, trova un hash valido, può aggiungere un blocco alla blockchain e richiedere la sua ricompensa.
Per approfondire l’argomento Bitcoin, leggi anche gli articoli seguenti:
Capire Bitcoin – che cos’è una xpub?
Un pensiero su “Capire Bitcoin – come funziona il mining”