Secp256k1
secp256k1 è una curva ellittica standardizzata usata da Bitcoin per la crittografia a chiave pubblica. È uno dei gruppi di parametri pubblicati da Standards for Efficient Cryptography Group in SEC 2.[1]
La curva è definita sul campo primo con p = 2^256 − 2^32 − 977 dall'equazione y^2 = x^3 + 7. SEC 2 specifica inoltre il punto generatore G, il suo ordine primo n e cofattore 1. Il nome identifica questi parametri, non un formato di firma o una codifica.
Parametri di dominio
Nella convenzione SEC, sec indica gli standard, p una curva su campo primo, 256 la dimensione del campo, k una curva associata a Koblitz e 1 il numero di sequenza. SEC 2 le attribuisce un livello di sicurezza stimato di 128 bit e fornisce questi valori esatti:[1]
| Parametro | Valore |
|---|---|
p |
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFC2F
|
a, b |
0, 7
|
G compresso |
0279BE667EF9DCBBAC55A06295CE870B07029BFCDB2DCE28D959F2815B16F81798
|
n |
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141
|
h |
1
|
La struttura associata a Koblitz permette aritmetica specializzata, incluso un endomorfismo calcolabile efficientemente. libsecp256k1 combina queste tecniche con tabelle precalcolate e altre ottimizzazioni. Le prestazioni dipendono dall'implementazione e non implicano una percentuale universale.[2]
Chiavi e firme
Una chiave privata Bitcoin è uno scalare nell'intervallo valido determinato dall'ordine della curva. La chiave pubblica corrispondente è un punto ottenuto moltiplicando il generatore per lo scalare. La sicurezza presume che ricavare lo scalare privato dal punto pubblico sia computazionalmente impraticabile.
Bitcoin ha usato storicamente ECDSA su secp256k1. Taproot ha introdotto firme Schnorr BIP 340 sulla stessa curva. BIP 340 definisce le codifiche, usa chiavi pubbliche con sola coordinata x e stabilisce requisiti per nonce deterministici.[3]
SEC 1 rappresenta un punto pubblico in forma compressa con prefisso 02 o 03 più la coordinata x, oppure non compressa con 04 più entrambe le coordinate.[4] Le chiavi pubbliche BIP 340 di 32 byte con sola coordinata x sono una convenzione Bitcoin distinta e non vanno confuse con le rappresentazioni SEC 1.
I portafogli gerarchici deterministici BIP 32 derivano chiavi figlie private e pubbliche con secp256k1. Le chiavi estese includono chain code e metadati e sono spesso serializzate con Base58Check, livello separato dalle operazioni sulla curva.[5]
Implementazione
Un'implementazione corretta convalida scalari e punti, genera nonce sicuri, limita i canali laterali e analizza con cura firme e chiavi. Bitcoin Core usa libsecp256k1, che implementa ECDSA, firme Schnorr compatibili con BIP 340 e codice a tempo costante per operazioni dipendenti da segreti.[2]
secp256k1 non cifra file di portafoglio, non conserva chiavi e da sola non crea un indirizzo. Hash, script, identificatori di rete e codifiche sono livelli aggiuntivi.
Voci correlate
Note
- ↑ 1,0 1,1 Standards for Efficient Cryptography Group, “SEC 2: Recommended Elliptic Curve Domain Parameters”, versione 2.0, gennaio 2010.
- ↑ 2,0 2,1 bitcoin-core/secp256k1 repository, consultato il 15 settembre 2026.
- ↑ BIP 340: Schnorr Signatures for secp256k1, consultato il 15 settembre 2026.
- ↑ Standards for Efficient Cryptography Group, “SEC 1: Elliptic Curve Cryptography”, versione 2.0, maggio 2009.
- ↑ BIP 32: Hierarchical Deterministic Wallets, consultato il 15 settembre 2026.