Esplora passo dopo passo la crittografia a curva ellittica: dalla geometria delle curve reali fino alla firma digitale ECDSA che protegge ogni transazione Bitcoin.
Una curva ellittica Γ¨ definita dall'equazione generale:
Bitcoin usa la curva chiamata secp256k1, dove a=0 e b=7:
La curva Γ¨ simmetrica rispetto all'asse x: per ogni punto (x, y) sulla curva, esiste il suo simmetrico (x, βy). Questo significa che ogni valore di x positivo corrisponde a due punti: uno con y positivo e uno con y negativo.
Un punto sulla curva Γ¨ qualunque coppia (x, y) che soddisfa l'equazione. Nella crittografia Bitcoin, i punti vengono calcolati su un campo finito (modulo un numero primo enorme), ma la geometria di base rimane la stessa.
Per sommare due punti P e Q su una curva ellittica, si usa la regola della corda:
Il risultato Γ¨ sempre sulla curva: questa Γ¨ la proprietΓ magica che rende l'addizione ellittica un'operazione di gruppo chiusa.
Il caso speciale P = Q (raddoppio) usa la tangente alla curva nel punto P:
La curva reale usa numeri in virgola mobile con precisione infinita β impraticabile per un computer. Invece, Bitcoin lavora su un campo finito: tutti i calcoli sono fatti modulo un numero primo enorme p.
L'equazione diventa:
I punti non formano piΓΉ una curva liscia, ma un insieme discreto di punti interi su una griglia p Γ p. La struttura di gruppo Γ¨ tuttavia preservata: l'addizione di punti funziona esattamente come prima, ma con aritmetica modulare.
Nell'esempio interattivo a destra usiamo p = 23 (piccolo per visualizzare). In Bitcoin, p Γ¨ un numero a 256 bit.
kΓG significa aggiungere il punto G a se stesso k volte: G + G + G + β¦ (k volte). Con k = 2Β²β΅βΆ questo sarebbe impossibile direttamente, ma si usa l'algoritmo double-and-add:
Con soli logβ(k) operazioni si ottiene il risultato. Per k a 256 bit: massimo 512 operazioni.
La cosa affascinante Γ¨ che kΓG sembra saltare casualmente sulla griglia quando k cresce di 1. Non c'Γ¨ nessuna relazione visibile tra k e la posizione di kΓG β questo Γ¨ il nucleo matematico della sicurezza Bitcoin.
In Bitcoin, tutti usano esattamente gli stessi parametri per la curva ellittica. Questi valori sono definiti nello standard secp256k1 e sono completamente pubblici. La sicurezza non dipende dalla segretezza di questi parametri, ma dall'impossibilitΓ matematica di invertire la moltiplicazione scalare.
Il Punto Generatore G Γ¨ un punto speciale fisso sulla curva. Tutti i wallet Bitcoin del mondo derivano le loro chiavi moltiplicando G per una chiave privata diversa.
La chiave privata k Γ¨ un numero casuale a 256 bit. Deve rimanere segreto β chi lo conosce controlla i bitcoin associati.
La chiave pubblica Q = kΓG Γ¨ il risultato della moltiplicazione scalare del Punto Generatore G per k. Γ completamente sicuro condividere Q pubblicamente β da Q Γ¨ impossibile ricavare k.
La chiave pubblica viene poi compressa: si conserva solo la coordinata X piΓΉ un prefisso (02 se Y Γ¨ pari, 03 se Y Γ¨ dispari) β questo funziona perchΓ© dalla x si puΓ² sempre ricostruire la y (Β±β(xΒ³+7 mod p)).
Con ECDSA (Elliptic Curve Digital Signature Algorithm) puoi firmare un messaggio con la tua chiave privata k. Chiunque abbia la tua chiave pubblica Q puΓ² verificare che la firma sia tua β senza che tu abbia rivelato k.
In Bitcoin, ogni transazione contiene una firma ECDSA che prova che il proprietario della chiave privata ha autorizzato il trasferimento.
Nel 2010, Sony PS3 usava lo stesso nonce k per tutte le firme ECDSA del firmware. Questo permise di estrarre matematicamente la chiave privata di Sony. Non era un bug nel codice — era una violazione fondamentale di ECDSA.
Dimostrazione: due messaggi firmati con lo stesso k rivelano la chiave privata.
Da novembre 2021 (attivazione di Taproot, BIP341), Bitcoin supporta le firme Schnorr (BIP340). Tutti i nuovi indirizzi P2TR (bc1p...) usano Schnorr invece di ECDSA.
La differenza fondamentale: s = k + e·priv — un'equazione lineare. Questo sblocca la aggregazione di firme e chiavi (MuSig).
Taproot (BIP341) usa una chiave x-only (32 byte) e un TapTweak: Q = P + t×G dove t = hash_TapTweak(P.x). Gli indirizzi usano Bech32m (costante 0x2bc830a3) e iniziano con bc1p.
Bitcoin Report School Γ¨ un progetto open source completamente gratuito. Nessuna pubblicitΓ , nessun tracker, nessun paywall. Se questi strumenti ti sono stati utili, considera una donazione in bitcoin.