Per rendere ancora più sicura una transazione in bitcoin, il processo della firma digitale prevede un ulteriore applicazione di una funzione di Hash:
Per inviare un ordine di transazione: M (messaggio), il mittente:
- esegue l’Hash del messaggio: H = SHA256(M)
- cifra H con la sua chiave privata per ottenere la firma: S = encrypt( H ; Kpriv )
- invia la firma S, il messaggio M, e la sua chiave pubblica Kpub
Per verificare che la firma S sia valida per la transazione M, i miners:
- eseguono l’Hash del messaggio M: H = SHA256(M)
- decifrano S con la chiave pubblica del mittente: H’ = decrypt( S ; Kpub )
- verificano che H = H’. Se l’equazione è vera allora la firma è valida.
Come si può osservare, i messaggi nel sistema Bitcoin vengono inviati non criptati, in Bitcoin la crittografia viene utilizzata solo per firmare digitalmente i messaggi, ovvero le transazioni, e mai per “nascondere”.
Per fissare il tutto e farsi 2 risate consiglio questo filmatino “politicamente scorretto” ma divertente disponibile su youtube: StrunzBank
Bene, abbiamo visto come si costruiscono le chiavi e gli indirizzi Bitcoin e come si firma una transazione. A questo punto non resta che vedere, nel paragrafo successivo ed ultimo di questo capitolo, cos’è un wallet e come sia semplice utilizzarlo: