Pages:
Author

Topic: Generare chiavi private manualmente con dado a 20 facce - page 2. (Read 1332 times)

hero member
Activity: 708
Merit: 506
I support freedom of choice
Ci sono circa 2^256 chiavi private distinte, e 2^160 indirizzi. Quindi ci dovrebbero essere ben 2^96 chiavi private distinte che controllano lo stesso indirizzo. Ma questo non modifica la probabilità di avere una collisione.

Diciamo che ci sono al momento 2^24 indirizzi con bitcoin (qualche milione).

Se ci fosse una sola chiave privata per ogni indirizzo la probabilità di generare a caso una chiave privata corrispondente a un indirizzo contenente già dei bitcoin sarebbe 2^24/2^160 ovvero 1 su 2^136.

Ma anche nel caso reale, pur essendoci 2^96 chiavi private per indirizzo, la probabilità di una collisione non cambierebbe, in quanto bisogna moltiplicare per 2^96 sia il numeratore che il denominatore della stessa frazione. Infatti ci sono 2^24 indirizzi con bitcoin controllati da un totale di 2^24*2^96 chiave private distinte, su 2^160*2^96 chiavi possibili.



ma chi controlla i nostri bitcoin: la chiave privata oppure gli indirizzi bitcoin? Ovvero tutte 2^96 chiavi private corrispondenti a un certo indirizzo bitcoin controllano tutte lo stesso portafoglio? In pratica posso firmare la transazione con una qualsiasi delle 2^96 chiavi?
legendary
Activity: 1948
Merit: 2097
Ci sono circa 2^256 chiavi private distinte, e 2^160 indirizzi. Quindi ci dovrebbero essere ben 2^96 chiavi private distinte che controllano lo stesso indirizzo. Ma questo non modifica la probabilità di avere una collisione.

Diciamo che ci sono al momento 2^24 indirizzi con bitcoin (qualche milione).

Se ci fosse una sola chiave privata per ogni indirizzo la probabilità di generare a caso una chiave privata corrispondente a un indirizzo contenente già dei bitcoin sarebbe 2^24/2^160 ovvero 1 su 2^136.

Ma anche nel caso reale, pur essendoci 2^96 chiavi private per indirizzo, la probabilità di una collisione non cambierebbe, in quanto bisogna moltiplicare per 2^96 sia il numeratore che il denominatore della stessa frazione. Infatti ci sono 2^24 indirizzi con bitcoin controllati da un totale di 2^24*2^96 chiave private distinte, su 2^160*2^96 chiavi possibili.

hero member
Activity: 708
Merit: 506
I support freedom of choice
Se una chiave privata porta ad un address che è stato usato credo tu possa spendere i fondi anche se le chiavi private non coincidono. A naso mi sembra possibile che due chiavi private differenti generino lo stesso address (mi pare che la cardinalità degli indirizzi sia minore di quella delle chiavi private), tuttavia si dice che la collisione sia astronomicamente improbabile.
Nel generare la chiave privata va controllato che sia anche valida in quanto il numero primo è leggermente inferiore a 2^256 quindi in caso si scelga una chiave maggiore di P va rigenerata.
Da qualche parte nel forum se ne parlava ...

Grazie.
legendary
Activity: 2506
Merit: 1120
ma non c'è un controllo che la chiave sia già usata così  Shocked

A parte che non c'è mai un simile controllo da parte di nessun software ma se per caso ci fosse una "collisione" allora avresti i soldi di un'altra persona e puoi spenderli. Quindi a questo punto la domanda è: "è possibile avere i soldi di un'altra persona?"

La risposta è negativa, non è possibile o comunque non è umanamente possibile. Le probabilità di generare un indirizzo bitcoin già presente nella blockchain sono così ridotte che è meglio lasciare perdere. Direi di più. Anche se ci si mette a generare indirizzi bitcoin a manetta non si troverà mai alcun indirizzo già presente nella blockchain. Questo perché le chiavi private generabili sono troppe. È una questione di numero di combinazioni.

Edit. Non penso che una collisione dell'hash permetta di spendere i soldi di un uguale indirizzo bitcoin corrispondente a due chiavi private diverse. Non so bene la teoria ma mi pare che venga fatto un hash della chiave privata e che quindi non ci sia corrispondenza biunivoca tra chiave privata e pubblica. Per cui in caso di collisione dell'hash ci sono due chiavi private e un solo indirizzo bitcoin.

Se è così allora per spendere i soldi occorre avere proprio la stessa chiave privata di un'altra persona: giusto? (lo chiedo ai più esperti).
Se una chiave privata porta ad un address che è stato usato credo tu possa spendere i fondi anche se le chiavi private non coincidono. A naso mi sembra possibile che due chiavi private differenti generino lo stesso address (mi pare che la cardinalità degli indirizzi sia minore di quella delle chiavi private), tuttavia si dice che la collisione sia astronomicamente improbabile.
Nel generare la chiave privata va controllato che sia anche valida in quanto il numero primo è leggermente inferiore a 2^256 quindi in caso si scelga una chiave maggiore di P va rigenerata.
Da qualche parte nel forum se ne parlava ...
hero member
Activity: 708
Merit: 506
I support freedom of choice
ma non c'è un controllo che la chiave sia già usata così  Shocked

A parte che non c'è mai un simile controllo da parte di nessun software ma se per caso ci fosse una "collisione" allora avresti i soldi di un'altra persona e puoi spenderli. Quindi a questo punto la domanda è: "è possibile avere i soldi di un'altra persona?"

La risposta è negativa, non è possibile o comunque non è umanamente possibile. Le probabilità di generare un indirizzo bitcoin già presente nella blockchain sono così ridotte che è meglio lasciare perdere. Direi di più. Anche se ci si mette a generare indirizzi bitcoin a manetta non si troverà mai alcun indirizzo già presente nella blockchain. Questo perché le chiavi private generabili sono troppe. È una questione di numero di combinazioni.

Edit. Non penso che una collisione dell'hash permetta di spendere i soldi di un uguale indirizzo bitcoin corrispondente a due chiavi private diverse. Non so bene la teoria ma mi pare che venga fatto un hash della chiave privata e che quindi non ci sia corrispondenza biunivoca tra chiave privata e pubblica. Per cui in caso di collisione dell'hash ci sono due chiavi private e un solo indirizzo bitcoin.

Se è così allora per spendere i soldi occorre avere proprio la stessa chiave privata di un'altra persona: giusto? (lo chiedo ai più esperti).
legendary
Activity: 3766
Merit: 1742
Join the world-leading crypto sportsbook NOW!
ma non c'è un controllo che la chiave sia già usata così  Shocked

Basta che prima di inviare fondi all'indirizzo lo inserisci in una query di un qualsiasi block explorer
member
Activity: 430
Merit: 22
Professional user
ma non c'è un controllo che la chiave sia già usata così  Shocked
hero member
Activity: 708
Merit: 506
I support freedom of choice

Nel caso del dado da 20, se esce 17, 18, 19 o 20, semplicemente ritirate il dado in attesa di un numero compreso tra 1 e 16


Non è difficile fare una conversione da una base all'altra, non occore certo un computer ma basta una calcolatrice che fino a prova contraria è a prova di hacker, basta usare una calcolatrice da qualche euro che fa solo le 4 operazioni elementari, quelle che vendono dentro i fustini del detersivo. Oppure una scientifica e dopo l'uso è bene togliere le batterie.

In questo caso basta un dado a 6 facce, una calcolatrice e carta e penna.
Penso che il procedimento sia quello di convertire il numero che esce dai dadi (6 facce) in un numero decimale:

Esempio dei dadi tirati: 5, 4, 1, 6, 4, 5, 2, 3
Fanno in decimale: 4*6^0+3*6^1+0*6^2+5*6^3+3*6^4+4*6^5+1*6^6+2*6^7
642622

che in base 16 fa il numero:
9CE3E

per fare questa conversione basta dividere per 16 e trovare il resto:
642622:16=40163 resto 14 (E)
40163:16=2510 resto 3
2510:16=156 resto 14 (E)
156:16=9 resto 12 (C)
9:16=0 resto 9

quindi leggendo al contrario fa il numero 9CE3E. È il caso di scartare la cifra più significativa (il nove) in quanto non ha tutta l'entropia possibile quasi sicuramente.
legendary
Activity: 3696
Merit: 4343
The hacker spirit breaks any spell
procedura divertente Smiley ma io te la tiro li piu efficace

usi un D12 e un D4 e ottieni da 2 a 16, non so come puoi fare ad ottenere 1 ma si puo fare che
- numero pari di volte che esce 2, consideri 2
- numero dispari di volte che esce 2, consideri 1
legendary
Activity: 3766
Merit: 1742
Join the world-leading crypto sportsbook NOW!
Le chiavi private sono il nostro accesso univoco e segreto ai Bitcoin, e quindi è importantissimo che vengano generate in maniera sicura, trasparente e verificabile.

Tutti i dispositivi elettronici che generano chiavi private sono abbastanza difficili da verificare per un utente comune (essere sicuri che agiscano in maniera trasparente e non truccata). C'è un modo molto semplice, che si può imparare in 5 minuti, per generare chiavi private, accessibile anche ai meno esperti.

Serve un dado che abbia almeno 16 facce (difficile da reperire, io trovo sempre quelli con 20 facce nei negozi di giochi in scatola), carta e penna.

Prendete il dado, tiratelo 64 volte, e ogni volta segnatevi il numero che esce su foglio.

Questi numeri segnateli uguali al dado: 1 2 3 4 5 6 7 8 9

Questi numeri segnateli in questo modo: 10 a - 11 b - 12 c - 13 d - 14 e - 15 f - 16 0

Nel caso del dado da 20, se esce 17, 18, 19 o 20, semplicemente ritirate il dado in attesa di un numero compreso tra 1 e 16


Avete già tra le mani una chiave privata generata in maniera completamente trasparente, scritta in esadecimale!

Le chiavi private bitcoin sono delle stringe a 256 bit, voi avete "solamente" 64 caratteri perché il dado vi "parla" in esadecimale, e voi così trascrivete su foglio.

Sono povero, non ho 1€ per comprare un dado e voglio comunque generare la chiave privata da solo

Potresti usare un dado a 6 facce che magari hai già a casa, te lo sconsiglio perché convertire la base 6 in base 16 per rendere più "portatile" la chiave è solo una seccatura.

Ma se hai davvero tanto tempo, puoi prendere una moneta e tirarla 256 volte segnandoti su un foglio ogni volta 1 o 0 in caso di testa o croce

Hai in mano quindi i 256 bit (256 caratteri tra 1 o 0) per avere una chiave privata generata manualmente, se vuoi renderla "portatile" puoi convertirla abbastanza facilmente in esadecimale.


Ma come faccio ad usare questa chiave privata?


USB Live di ubuntu, scaricatevi bitaddress da bitaddress.org, staccate il cavo di rete, andate sulla tab "Wallet details" e inserite i 64 caratteri esadecimali, vi apparirà la vostra chiave pubblica.

Nota 1: Avete solo una copia in mano della vostra chiave privata, in chiaro e non crittata, su un pezzo di carta.

Nota 2: Ma bitaddress.org non potrebbe essere corrotto, generando un indirizzo bitcoin falso, che corrisponde ad un altra chiave privata, od è in qualche maniera "deterministico"?

Quote
Potrebbe, quindi dovete fare un test a doppio cieco

Tenete acceso il PC con la USB live di ubuntu, staccato dalla rete. Aprite Bitaddress e dategli in pasto un esadecimale di prova, annotatevi l'indirizzo che vi appare

Prendete il vostro cellulare/tablet/tostapane con un browser javascript (Idealmente con hardware, quindi CPU, ecc... di un produttore diverso del vostro PC), aprite bitaddress.org o un altro tool equivalente di vostra fiducia, e inserite lo stesso esadecimale di prova. Se l'indirizzo coincide con il PC di prima, siete in una botte di ferro.


Nota 3: Quel dado da 20 facce tiratelo bene e su un tavolo ampio e piano, in modo da non ridurre l'entropia  Grin

Nota 4: Se su bitaddress inserite in maniera errata la chiave privata, e poi inviate dei bitcoin sopra senza accorgervi dell'errore, avete perso tutto.
Pages:
Jump to: