Per poter disporre dei propri bitcoin, e cioè per spenderli, il titolare deve poter “firmare” le transazioni e quindi deve averne la CHIAVE PRIVATA. Quindi la chiave privata va custodirla con cura perché:
- se finisce nelle mani sbagliate qualcun’altro potrà spendere i suoi bitcoin
- se la perde i suoi bitcoin rimarranno per l’eternità nascosti nella Blockchain; non saranno mai più spendibili, di fatto saranno persi per sempre (ed è successo chissà quante volte…).
Una chiave privata di Bitcoin è, molto semplicemente, un numero intero compreso tra 0 e 2256 (-1).
Per dotarsi di una chiave privata ci sono molti metodi. Un metodo “fai da te” potrebbe essere quello di “costruirsela” da soli ad es. lanciando per 256 volte di fila una monetina e scrivendo su un foglio in successione 0 o 1 a seconda che esca testa o croce. In questo modo si otterrebbe proprio un numero casuale intero compreso tra 0 e 2256 (-1) che, una volta espresso in base esadecimale, potrebbe essere usato (con qualche piccolo “aggiustamento” irrilevante ai nostri fini) come una chiave privata per custodire e disporre realmente dei propri bitcoin.
NB: un numero casuale compreso tra 0 e 2256 (-1) è talmente grande che di fatto è impossibile che 2 persone si costruiscano 2 chiavi private identiche. Se ciò accadesse sarebbe gravissimo perché potrebbero disporre gli uni dei bitcoin dell’altro…
Per ricevere dei bitcoin bisogna invece comunicare a chi vuole inviarceli il nostro INDIRIZZO BITCOIN che di fatto è un altro numero intero, questa volta compreso tra 0 e 2160 (-1) e che si ricava dalla chiave privata tramite i già visti algoritmi ECDSA-512 e funzioni di HASH. L’indirizzo bitcoin può essere visto come il codice IBAN di un c/c bancario che si dà per ricevere un bonifico, e può essere di dominio pubblico.
Per ricavarsi l’indirizzo bitcoin partendo dalla chiave privata è necessario un doppio passaggio (i passaggi in realtà sono più di due ma sono insignificanti ai fini della logica): alla CHIAVE PRIVATA si applica prima la funzione di ECDSA-512 per ottenere la CHIAVE PUBBLICA ed a quest’ultima si applica poi un’altra funzione di HASH, RipeMD 160, e si ottiene l’indirizzo bitcoin.
CHIAVE PRIV. —– (ECDSA-512) —–> CHIAVE PUBBL. —– (RipeMD 160) —–> INDIRIZZO BITCOIN
(RIPEMD 160 è una funzione di Hash che restituisce un numero intero compreso tra 0 e 2160 (-1) – calcolatore)
NB: Nel gergo del mondo delle cryptovalute i termini “indirizzo bitcoin” e “chiave pubblica” vengono frequentemente confusi nel senso che molto spesso si dice o si scrive “chiave pubblica” intendendo di fatto un “indirizzo bitcoin”. Questi 2 codici (indirizzo bitcoin e chiave pubblica) vengono confusi perché li accomuna il fatto che possono essere tranquillamente divulgati e se smarriti possono essere ricalcolati…. mentre è fondamentale non confonderli mai con la chiave privata che invece deve sempre rimanere segreta e se smarrita è persa per sempre, e con lei i bitcoin ad essa associati.
Sono i software utilizzati per scambiare i bitcoin (i wallet che vedremo tra un pò) ad utilizzare la chiave pubblica (e la chiave privata) per gestire la sicurezza mentre l’utente (umano) di fatto non la usa mai: l’utente dà o chiede ad altri utenti unicamente l’indirizzo bitcoin per ricevere o spedire dei bitcoin ma spesso si esprime erroneamente dicendo chiave pubblica al posto di indirizzo bitcoin. Sono certo che la maggior parte degli utenti che fa questo errore ignora di farlo perché ignora che ci sia una differenza tra i due concetti e cioè crede che siano due modi per indicare la stessa cosa ovvero il luogo virtuale dove inviare o far arrivare i bitcoin. Ma non è grave. Supponiamo che Alice debba pagare a Bob dei bitcoin e supponiamo che Alice chieda erroneamente a Bob di comunicargli la sua chiave pubblica. E supponiamo che Bob per assurdo prendesse questa sua richiesta alla lettera e si procurasse realmente la sua chiave pubblica e la desse ad Alice al posto del suo indirizzo bitcoin. Beh, il protocollo Bitcoin rifiuterebbe tale transazione in quanto non riconoscerebbe la chiave pubblica di Bob come un indirizzo bitcoin valido se non altro perché le chiavi pubbliche sono più lunghe degli indirizzi bitcoin (512 bit le prime, RipeMD 160 e quindi 160 bit i secondi…).
Nel paragrafo successivo vedremo come viene firmata una transazione in bitocoin: