Firme digitali

24 Apr 2023
Indice
Introduzione
Una firma digitale è un meccanismo crittografico utilizzato per verificare l'autenticità e l'integrità di dati digitali. Bitcoin utilizza l'algoritmo ellittico ECDSA per firmare le transazioni.
Quando un utente effettua una transazione in Bitcoin, questa viene firmata digitalmente utilizzando la chiave privata dell'utente. La firma digitale viene poi trasmessa insieme alla transazione sulla rete Bitcoin.
Una volta che la transazione viene inclusa in un blocco e aggiunta alla blockchain, gli altri nodi della rete Bitcoin utilizzano la chiave pubblica dell'utente per verificare la firma digitale della transazione.
In questo modo, gli altri nodi possono confermare che la transazione è stata effettivamente autorizzata dall'utente, che possiede la chiave privata corrispondente alla chiave pubblica utilizzata per firmare la transazione.
La verifica della firma digitale nella blockchain di Bitcoin è un processo critico per garantire l'integrità e la sicurezza della rete. Poiché la blockchain di Bitcoin è immutabile, una volta che una transazione è stata confermata e aggiunta alla blockchain, non può essere modificata o annullata.
- Per effettuare un pagamento, viene generata una transazione
T. - Un sottoinsieme delle informazioni
M* della transazioneTviene firmato.
* Le informazioni della transazione sono molteplici, vedi sotto "Details" a questo link
Firmare una transazione T
- La transazione
Tviene creata. - Si selezionano delle informazioni
Mriguardo alla transazioneT, come l'ID della transazione, le istruzioni riguardo al trasferimento ecc...Msta per "messaggio della transazione". - Si calcola l'hash
Hdelle informazioniM(H = SHA256(M)). - Si calcola la firma digitale
Susando l'output di una funzione di hashFhashusando come parametro la chiave privataKprivdel mittente. - Si mandano al network (in particolare ai miners) la firma
S, la chiave pubblicaKpube le informazioniM.
= funzione che calcola l'hash H delle informazioni M;
= funzione per firmare con parametri (H, Kpriv) che produrrà i valori R ed S;

Verificare una transazione T
La verifica non è altro che la funzione inversa della firma.
Per verificare una transazione bisognerà avere la firma digitale (con i valori R ed S) e la chiave pubblica per trovare il punto P, che è un punto che si trova sulla curva ellittica.
ReSsono i valori della firma digitaleKpubè la chiave pubblicaMè l'insieme di informazioni (firmate) della transazioneGè il punto generatore, un punto specifico sulla curva ellittica che viene scelto in modo tale da essere facilmente calcolabile e conosciuto da tutti i partecipanti della rete Bitcoin.
In conclusione, se la coordinata del punto P appena calcolato è uguale a R, allora possiamo veriricare che la firma digitale è valida.
⚠️ In questo processo la chiave privata rimane segreta e NON viene rivelata.

&