Vai al contenuto

Percorsi di derivazione dei wallet: standard, rilevamento e recupero

Scopri come i percorsi di derivazione del portafoglio selezionano chiavi figlie deterministiche, come differiscono i livelli hardened e le convenzioni dei conti, e come verificare i percorsi durante il recupero.

Aggiornato

Solo a scopo educativo; non costituisce consulenza né raccomandazione d’investimento. Gli investimenti possono comportare perdite.

Risposta diretta

Un percorso di derivazione del portafoglio è una sequenza ordinata di indici figli che indica a un algoritmo deterministico di derivazione delle chiavi quale nodo selezionare da un albero delle chiavi. Nella notazione comune BIP-32, m/84'/0'/0'/0/7 inizia dal nodo privato principale m e attraversa cinque figli. L’apostrofo indica un figlio BIP-32 protetto. Un percorso è metadati di instradamento: non è una chiave privata, non crittografa un seme, non identifica da solo un saldo di blockchain e non può recuperare nulla senza il materiale radice corretto e l’algoritmo di derivazione.

Per i portafogli in stile BIP-44, il modello è m / purpose' / coin_type' / account' / change / address_index. I livelli hanno significati concordati, non etichette arbitrarie. purpose seleziona una convenzione di portafoglio, coin_type separa gli spazi dei nomi degli asset registrati, account separa gli account logici, change normalmente distingue gli indirizzi di ricezione esterni (0) dagli indirizzi di cambio interni (1), e address_index seleziona una foglia. BIP-44 rende rigidi i primi tre livelli e lascia gli ultimi due non rigidi così che una chiave pubblica estesa dell’account possa derivare indirizzi di ricezione e di cambio senza possedere chiavi private.

Lo stesso mnemonico può portare a molti set di indirizzi validi ma non correlati. Per Bitcoin, i percorsi a chiave singola comuni includono m/44'/0'/account'/change/index per P2PKH, m/49'/0'/account'/change/index per P2WPKH annidato in P2SH, m/84'/0'/account'/change/index per P2WPKH SegWit nativo e m/86'/0'/account'/change/index per Taproot P2TR a chiave singola. Un portafoglio deve anche conoscere l’output o la costruzione dello script; un percorso da solo non è una politica di portafoglio Bitcoin completa.

Altri ecosistemi riutilizzano parti di questa notazione senza garantire semantiche identiche. Ether è registrato come tipo di moneta BIP-44 60, e m/44'/60'/0'/0/index è una convenzione comune per account esternamente posseduti, ma le implementazioni dei portafogli hanno utilizzato più layout di account. La stessa chiave EVM può produrre lo stesso indirizzo di account su diverse reti EVM anche se saldi e storici delle transazioni sono specifici della catena. Le chiavi BLS dei validatori Ethereum usano ERC-2333 e ERC-2334 invece di BIP-32; il loro percorso m/12381/3600/account/use non ha apostrofi e non è interoperabile con un albero BIP-32. Pertanto, il recupero richiede l’implementazione esatta, la curva, il seed o la frase di accesso, la convenzione del percorso, la rete e la costruzione dell’indirizzo, non una stringa dall’aspetto plausibile.

Come identificare e verificare un percorso di derivazione

1. Determinare il materiale radice e l’algoritmo di derivazione

Fai l’inventario del formato mnemonico, della lista di parole, della passphrase opzionale, del seed grezzo o della chiave estesa e dell’implementazione software o hardware che ha creato il portafoglio. BIP-39 converte 128 in 256 bit di entropia in un mnemonico e deriva un seed 512-bit da quel mnemonico più la passphrase esatta; ogni passphrase produce un seed sintatticamente valido ma diverso. BIP-32 poi deriva chiavi estese secp256k1 da un seed. Altre famiglie di portafogli possono usare schemi mnemonici, curve, funzioni di derivazione delle chiavi o regole della chiave master differenti, quindi parole corrispondenti non provano una radice corrispondente.

2. Identificare lo standard, la rete e il ruolo della chiave

Determina se l’obiettivo è una chiave di pagamento Bitcoin, un account di proprietà esterna EVM, una chiave di validatore, un firmatario multisig, un amministratore di contratto o un’altra autorità. Registra la catena e la rete, lo standard e la versione applicabili, la curva della chiave, il tipo di output o indirizzo e l’applicazione del portafoglio. Una registrazione di tipo moneta SLIP-0044 assegna uno spazio dei nomi; non dimostra che ogni portafoglio per quell’asset segua BIP-44, approvi un progetto o impedisca a un’altra catena di derivare la stessa chiave altrove.

3. Interpretare esattamente ogni componente del percorso

Tratta / come un confine genitore-figlio e conserva ogni indice, profondità e marcatore di rafforzamento. Sotto BIP-32, i figli normali usano gli indici 0 fino a 2^31 - 1; i figli rafforzati usano 2^31 fino a 2^32 - 1, comunemente scritti con ', h o H. Pertanto 7' codifica il numero del figlio 2^31 + 7, non il figlio ordinario 7. Conferma come un’interfaccia di importazione rappresenta la radice, se accetta un percorso completo o un suffisso relativo, e se una chiave estesa esportata è già sotto una parte di quel percorso.

4. Collegare il percorso alla semantica dell’indirizzo o dell’output

Per i portafogli della famiglia BIP-44 Bitcoin, confermare purpose, coin_type, account, change e address_index, quindi confermare indipendentemente il tipo di script e la rete previsti. BIP-49, BIP-84 e BIP-86 utilizzano deliberatamente valori di scopo diversi in modo che tipi di output incompatibili non compaiano silenziosamente in un unico account. Per portafogli multisig o con descriptor, preservare ogni origine delle chiavi, impronta principale, suffisso di derivazione, soglia, ordine delle chiavi, costruzione dello script e checksum; un percorso non può ricostruire l’intera policy.

5. Riprodurre il rilevamento di account e indirizzi

Non dedurre perdite da un singolo conto predefinito vuoto. La scoperta BIP-44 controlla i conti in ordine e esegue la scansione della catena esterna, utilizzando un limite di indirizzi consecutivi inutilizzati di 20. I portafogli che hanno creato indirizzi oltre tale limite, utilizzato rami interni in modo insolito, saltato conti o applicato una struttura proprietaria potrebbero non essere individuati da una scansione predefinita. Cerca solo con dati watch-only affidabili o derivazione offline, imposta limiti espliciti, documenta ogni ramo cercato ed evita di caricare una frase mnemonica o una chiave privata estesa su un sito web.

6. Verificare l’identità del wallet prima di affidarsi al saldo

Confronta l’impronta digitale principale, la chiave pubblica estesa a livello di conto, se appropriato, il percorso di origine completo e diversi indirizzi di ricezione e di cambio precedentemente registrati. Per Bitcoin, deriva gli script di output o il descrittore previsto e interroga la rete corretta per la cronologia delle transazioni, inclusi gli output spesi. Per le blockchain basate su account, verifica l’esatto chainId, l’indirizzo, i contratti dei token e l’attività storica. Un saldo vuoto è una prova debole: l’indirizzo potrebbe essere sbagliato, la rete o l’indice potrebbero differire, oppure gli asset potrebbero già essere stati spostati.

7. Recuperare o migrare con un flusso controllato

Usa software verificato e compatibile in un ambiente affidabile; preferisci importare un descrittore watch-only o la chiave pubblica del conto per la scoperta prima di esporre il materiale per la firma. Testa la firma e il recupero con un conto isolato o una piccola transazione, quindi riconcilia gli indirizzi derivati, la cronologia on-chain, la proprietà degli output, le commissioni e lo stato finale. Se i segreti sono stati inseriti in uno strumento di recupero non affidabile, trattali come compromessi e migra tutti gli asset, i ruoli dei contratti, le approvazioni, i compiti di validatore e le autorità di recupero a una nuova root invece di continuare a usare il portafoglio recuperato.

Esempi di calcolo

Interpretazione di un percorso Bitcoin con derivazione hardened

Si consideri m/84'/0'/2'/1/17. I campi indicano il purpose SegWit nativo 84', il tipo di moneta Bitcoin 0', l’account 2', il ramo interno o del resto 1 e l’indice di indirizzo 17. Poiché gli indici hardened BIP-32 sommano 2^31 = 2,147,483,648, i numeri figlio serializzati sono 84' = 2,147,483,732, 0' = 2,147,483,648 e 2' = 2,147,483,650. Gli ultimi due restano gli indici normali 1 e 17; omettere un apostrofo seleziona un sottoalbero diverso, non una grafia equivalente.

Un intervallo di rilevamento che nasconde un indirizzo usato

Si supponga che il ramo esterno abbia usato gli indirizzi agli indici 0 e 5, poi che il wallet scandisca da 6 a 25 e trovi 20 indirizzi consecutivi inutilizzati. Secondo la regola dell’intervallo BIP-44, la scoperta si ferma a 25; l’indirizzo usato a 26 si trova quindi oltre la condizione di arresto e viene omesso. Estendere la scansione fino a un limite esplicito e documentato può trovarlo, ma la causa è il wallet di origine che ha creato un indirizzo oltre l’intervallo standard senza attività intermedia.

Calcolo di una ricerca di recupero limitata

Un registro di recupero non specifica quale delle 4 famiglie di purpose Bitcoin (44', 49', 84' e 86') sia stata usata, né quale dei 3 account, 2 rami e primi 20 indici. La ricerca iniziale comprende 4 × 3 × 2 × 20 = 480 foglie candidate. Trovare un indirizzo noto identifica un percorso candidato, non necessariamente l’intero wallet: vanno ancora verificati resto, indici successivi, altri account, descrittore e cronologia. Rendere esplicite le dimensioni rende il recupero riproducibile ed evita tentativi senza limiti.

Perché una xpub di account non è un normale dato pubblico

Per una chiave figlia BIP-32 non hardened, gli scalari privati rispettano child = parent + tweak (mod n). In un esempio semplificato modulo 101, se i dati di derivazione esposti dalla chiave pubblica estesa dell’account fissano tweak = 37 e viene rivelato lo scalare privato figlio 12, allora parent = 12 - 37 mod 101 = 76. Il vero BIP-32 usa l’ordine del gruppo secp256k1 e valori HMAC, ma la conseguenza algebrica è uguale: una xpub padre più una chiave privata discendente non hardened corrispondente possono rivelare la chiave privata estesa padre e il suo sottoalbero. I confini di account hardened limitano questo guasto.

Rischi e carenze di verifica

  • Mnemonico o passphrase errati: una sola parola, il relativo ordine, la normalizzazione Unicode o una passphrase diversa genera un’altra radice che può sembrare valida.
  • Schema di derivazione errato: applicare BIP-32 a un wallet che usava un altro schema mnemonico, curva, KDF o algoritmo della chiave master deriva chiavi non correlate.
  • Rete o tipo di moneta errati: una radice corretta in un altro spazio dei nomi può generare indirizzi plausibili mentre la blockchain prevista resta inesplorata.
  • Purpose o script errati: confondere 44', 49', 84' o 86' può omettere la classe di output Bitcoin che contiene davvero i fondi.
  • Indicatore hardened assente: 7, 7', 7h e 7H possono essere interpretati diversamente o rifiutati; le chiavi figlie hardened e normali non sono intercambiabili.
  • Indice dell’account errato: controllare solo l’account 0' può omettere fondi o autorità in account logici successivi.
  • Confusione tra ramo esterno e del resto: esaminare solo il ramo 0 può omettere output di resto nel ramo 1 o strutture specifiche del wallet.
  • Indice dell’indirizzo errato: riconoscere il primo indirizzo non prova che siano stati coperti indici successivi, saltati o indirizzi importati.
  • Errore dell’intervallo di indirizzi: 20 indirizzi esterni consecutivi inutilizzati possono fermare la scansione BIP-44 prima di un uso successivo non conforme.
  • Account saltato: la scoperta sequenziale può fermarsi su un account inutilizzato e non raggiungerne uno creato dopo.
  • Policy Bitcoin incompleta: senza descrittore, script, soglia, ordine delle chiavi, fingerprint o checksum, un percorso può non ricostruire gli output finanziati.
  • Convenzione specifica del wallet: un’app può usare strutture legacy, proprietarie o di migrazione non elencate da uno strumento generico.
  • Perdita di privacy dalla chiave pubblica estesa: una xpub può rivelare gruppi di indirizzi, cronologia, saldi e futuri discendenti non hardened.
  • Esposizione eccessiva della chiave privata estesa: importare una xprv può esporre un intero sottoalbero, non soltanto la foglia richiesta per un’operazione.
  • Compromissione della chiave padre BIP-32: una xpub padre con una chiave privata figlia non hardened corrispondente può rivelare la chiave privata estesa padre e il suo sottoalbero.
  • Falsa fiducia nel formato dell’indirizzo: un indirizzo sintatticamente valido non dimostra seed, percorso, rete, script o titolarità previsti.
  • Confusione tra blockchain con lo stesso indirizzo: una chiave EVM può generare lo stesso indirizzo su più reti, mentre saldi, nonce, token e rischi restano distinti.
  • Software di recupero dannoso: sito, estensione, condivisione schermo, monitor degli appunti, keylogger o dispositivo falso possono acquisire il segreto radice.
  • Confusione tra importazione e sweep: importare mantiene attiva la vecchia autorità; sweep o migrazione creano una transazione e richiedono la verifica di commissione e destinazione.
  • Recupero incompleto: trovare un saldo senza verificare firme, resto, contratti token, ruoli, approvazioni, chiavi dei validatori e backup può lasciare asset nascosti o esposti.

Idee sbagliate comuni

Il percorso di derivazione è una password o un segreto?

No. Un percorso descrive normalmente la struttura pubblica e dovrebbe essere preservato come metadato di recupero. Non sostituisce il mnemonico, la frase segreta, il seed, la chiave privata o la politica del portafoglio. Pubblicare un percorso può rivelare informazioni organizzative, ma il possesso del solo percorso non conferisce l’autorità di firma.

Lo stesso mnemonico ripristina sempre automaticamente lo stesso wallet?

No. Il risultato dipende anche dallo schema mnemonico, dalla passphrase esatta, dall’elaborazione del seed, dall’algoritmo di derivazione, dal percorso, dalla curva, dalla rete e dalla costruzione dell’indirizzo o dello script. Il software del portafoglio può scegliere impostazioni predefinite diverse anche quando accetta le stesse parole.

Il tipo di moneta impedisce di usare una chiave su un’altra blockchain?

No. Il tipo di moneta è uno spazio dei nomi derivato e una convenzione di compatibilità, non un permesso del protocollo. Il software può derivare o riutilizzare una chiave altrove, e le reti EVM espongono comunemente lo stesso indirizzo del conto per la stessa chiave privata.

Un account recuperato senza saldo prova che gli asset sono scomparsi?

No. Dimostra solo che gli indirizzi e la rete interrogati attualmente non mostrano alcun saldo rilevato. Percorsi sbagliati, account, filiali, tipi di script, limiti di scoperta, indicizzazione dei token o selezione della rete possono tutti nascondere la storia prevista.

Uno strumento di recupero può provare in sicurezza tutti i percorsi possibili?

No. Lo spazio di ricerca può essere ampio, le convenzioni dei portafogli non sono completamente universali, ed esporre un segreto principale a uno strumento non affidabile è di per sé un evento di perdita. Usa la provenienza, le impronte digitali e gli indirizzi registrati, la scoperta offline limitata e il software verificato per restringere la ricerca.

Argomenti correlati

Fonti

Navigazione

Cerca nella wiki...