Title: [guida] crearsi un vanity address tutto in casa Post by: babo on December 01, 2016, 10:24:35 AM esistono dei servizi del genere http://bitcoinvanitygen.com/ e simili
ma, come si fa a fidarsi? oggi vi propongo una guida, semplicissimi passi, per ottenere il vostro vanity address fatto in casa requisiti - macchina unixlike: linux,macosx,bsd,etc - windows [$] come fare - scaricare il sorgente di https://github.com/samr7/vanitygen - scompattare e entrare nella dir - installare questo pacchetto -> pcre versione dev sulla vostra distribuzione (banalmente su debian-like apt-cache search pcre per cercarlo) - avviare il comando 'make' come usarlo - dalla directory del vostro compilato digitare ./vanitygen $PATTERN $PATTER pué essere tipo 1Love per esempio.. nella shell vi dice quanto tempo ci mette e la probabilitá di trovarlo [$] per i sistemi windows, sticazzi.. non ho intenzione di aiutarvi, arrangiatevi Title: Re: [guida] crearsi un vanity address tutto in casa Post by: arulbero on December 14, 2016, 07:22:43 PM come fare - scaricare il sorgente di https://github.com/samr7/vanitygen - scompattare e entrare nella dir - installare questo pacchetto -> pcre versione dev sulla vostra distribuzione (banalmente su debian-like apt-cache search pcre per cercarlo) - avviare il comando 'make' Per chi volesse usare vanitygen (versione per CPU) e non oclvanitygen (versione per GPU), segnalo che è anche possibile scaricare una versione ottimizzata con la libreria secp256k1 usata anche da Core. I comandi su Ubuntu sono: sudo apt-get install automake autoconf git sudo apt-get install libgmp3-dev git clone https://github.com/klynastor/supervanitygen.git cd supervanitygen make e infine: ./vanitygen $PATTERN Si dovrebbe osservare (a me è successo) un incremento di velocità di circa il 200%/250%. Quote Features: •Runs under the x86, x86_64, arm, and arm64 (aarch64) architectures. •Includes fast assembly versions of SHA-256 for Intel CPUs with SSSE3, AVX, AVX2, and SHA extensions. Limitations: •Currently only supports Bitcoin compressed public keys. •Does not support combining private keys via addition/multiplication methods. link --> https://www.reddit.com/r/Bitcoin/comments/4rubin/introducing_super_vanitygen_fast_vanity_bitcoin/ esistono dei servizi del genere http://bitcoinvanitygen.com/ e simili ma, come si fa a fidarsi? Assolutamente non bisogna fidarsi di siti come quello, invece è possibile affidarsi tranquillamente a servizi come vante.me (https://vante.me/#!/order/start) (vedi anche il relativo post (https://www.reddit.com/r/Bitcoin/comments/4iaifs/vanteme_a_secure_and_convenient_service_for/)su reddit) o come vanity.coin.dance (https://vanity.coin.dance/#!/) (con l'opzione "split key" selezionata). Come distinguere i servizi affidabili da quelli che non lo sono? Semplice: se il sito utilizza il metodo "split-key address generation" cioè in pratica se vi richiede anche di inviare una vostra chiave pubblica, allora non c'è problema, poiché la chiave privata che vi restituiranno andrà ricombinata con la vostra prima chiave privata per poter ottenere l'effettiva chiave privata relativa all'indirizzo vanity generato (in pratica il sito non può in nessun modo ricavare la chiave privata effettiva dell'indirizzo che genera! Di fatto esso prende come nuovo punto base della curva la vostra chiave pubblica e partendo da lì ottiene quanti passi bisogna fare per raggiungere la chiave pubblica relativa a un indirizzo vanity; ma per ottenere il percorso totale rispetto al punto base G bisogna anche conoscere la posizione relativa della chiave pubblica iniziale rispetto a G, cioè la chiave privata che voi avete generato e avete conservato). Riassumendo si ha la stessa sicurezza che si avrebbe generando un indirizzo in locale. Per ulteriori dettagli su metodo "split-key address generation": https://bitcointalk.org/index.php?topic=81865.msg901491#msg901491 (https://bitcointalk.org/index.php?topic=81865.msg901491#msg901491) EDIT: ho ricevuto richieste via PM riguardo il metodo "spli-key address". I passi da fare sono: 1) leggersi almeno una volta questo post : https://bitcointalk.org/index.php?topic=1339031.0#post_introduzione (https://bitcointalk.org/index.php?topic=1339031.0#post_introduzione) potrà sembrarvi inutile, ma vi assicuro che se non sapete a cosa corrispondono una chiave pubblica e una chiave privata nella curva secp256k1 e qual è l'operazione non invertibile che collega chiave privata a chiave pubblica, non riuscirete a fidarvi del tutto del metodo perché non lo capirete; una chiave privata è sempre un "collegamento" tra due chiavi pubbliche note, di cui la prima è il punto base G della curva secp256k1 usata per il bitcoin, mentre la seconda è la cosiddetta chiave pubblica corrispondente alla chiave privata 2) adesso che sapete che cosa sono, generate in locale una coppia: chiave privata 'a' - chiave pubblica 'a*G' (dove G è il punto base della curva secp256k1) utilizzando il tool keyconv che si trova nella stessa directory di vanitygen (non si trova però in supervanitygen che non supporta questo metodo) Code: ./keyconv -G NB: non fatevi ingannare dall'ordine dell'output: il software prima genera in modo random a (Privkey), da cui calcola facilmente a*G = P (Pubkey corrispondente). L'operazione inversa è impossibile ( da a*G non si può ricavare a, pur conoscendo G! ). L'indirizzo che si ricava dalla chiave pubblica in questo caso non serve a nulla. Riassumendo: a = 3A49649658A57BA9B18C6B2F583629E8B06D96BC229D1C8D9138253066554BA4 (formato hex) a = 5JFxSHfPFAGCD6Fp3RvSN3s6RXrv8vX7kDpJiZVNYyoLHDJs2Wk (formato WIF) a*G = 0420ec63d02da16c5f1a368be87969eaa611148e78f926c44a599ced25d376ed26e0412........ ....05606074769da 3) questo è l'unico passo che dovrebbe fare un sito per voi; in questo caso però provate voi stessi ad eseguire vanitygen fornendogli la vostra chiave pubblica come base di partenza: vanitygen troverà una chiave privata b a partire dalla chiave pubblica a*G che voi gli fornirete (NB: vanitygen non conosce assolutamente la chiave privata a da cui avete ricavato a*G con il tool keyconv) Code: ./vanitygen 1Pippo -P 0420ec63d02da16c5f1a368be87969eaa611148e78f926c44a599ced25d376ed26e0412af50e1e6b6be6e6903e0b0bf85c6c6f80ae905012fcd3405606074769da Osservate che vanitygen vi fornisce in output soltanto una chiave privata b 'parziale': b = 6aff09a31962bec0c7e8bb740f0ff357066feb1ca6cdd065007f6c3f47bfe79a (formato hex) b = 5JdQf3z7eMswHxJKFCnRUeDqBcYNiaJRmxLbECGPUvemPP4vLX4 (formato WIF) Come ha ottenuto quella chiave privata? E' partito da a*G e ha iniziato ad aggiungere + G + G + G + ... b volte: a*G + G + G + G + ... = a*G + b*G finché ha ottenuto la chiave pubblica finale a*G + b*G da cui si ottiene l'indirizzo che contiene la stringa da voi impostata. Questo è l'unico dato che conosce chi ha materialmente effettuato il passo 3) per voi, la chiave pubblica relativa all'indirizzo 1Pippos3rYCrso1yQ79ACqaDW2gmurwPeP, non la sua chiave privata. 4) Per ottenere infine la chiave privata relativa alla chiave pubblica a*G + b*G, si fa una semplice somma: chiave pubblica finale = a*G + b*G = (a+b)*G --> quindi la chiave privata finale sarà la somma a + b Per calcolare la somma riutilizzate un'ultima volta il tool keycon: Code: ./keyconv -c 5JFxSHfPFAGCD6Fp3RvSN3s6RXrv8vX7kDpJiZVNYyoLHDJs2Wk 5JdQf3z7eMswHxJKFCnRUeDqBcYNiaJRmxLbECGPUvemPP4vLX4 Chiave finale a+b = 5K55WfCQp4a9F3ArFSFxkeLoPYaNeMxToN67iai1o2bTVywy (formato WIF) Address corrispondente = 1Pippos3rYCrso1yQ79ACqaDW2gmurwPeP Osservazioni conclusive: 1) vi faccio osservare che nel passo finale bisogna dare in pasto a keycon le due chiavi private a e b in formato WIF, non in formato esadecimale; nel nostro caso, usando il formato hex, facciamo un controllo con python per verificare che si tratti effettivamente di una somma: Code: python Ora, se inserite quest'ultima chiave privata in formato hex (senza il prefisso 0x) qui (https://gobittest.appspot.com/PrivateKey) o meglio ancora qui (https://gobittest.appspot.com/Address) vedrete che tutto torna, si tratta di una "banale" somma di due chiavi private, una vostra personale e l'altra generata con vanitygen! Ovviamente NON inserite la chiave privata finale che intendete utilizzare sul serio in un sito online per controllare che funzioni ... 2) se ancora non vi fidate, provate a inserire la seconda chiave privata b = 6aff09a31962bec0c7e8bb740f0ff357066feb1ca6cdd065007f6c3f47bfe79a qui (https://gobittest.appspot.com/Address) e verificate che si ottiene l'indirizzo 179RvzLmR3pyb9U9qHyz2D4jaLJ8NmLEYi che nulla ha a che fare con quello vanity 1Pippos3rYCrso1yQ79ACqaDW2gmurwPeP 3) il punto delicato di tutta la faccenda è il punto 2) del procedimento, ovvero la generazione della chiave privata a. Se non vi fidate di keyconv, potete utilizzare il tool che preferite o direttamente il vostro wallet, purché esso vi fornisca la chiave privata in formato WIF e la relativa chiave pubblica in formato hex non compressa (deve iniziare con 04). Sul resto del procedimento non ci sono problemi legati alla sicurezza. |