Apro questo thread per non inquinare oltre quello dal quale era partita la seguente discussione:
https://bitcointalk.org/index.php?topic=5214672.msg66255369#msg66255369https://bitcointalk.org/index.php?topic=5214672.msg66257450#msg66257450https://bitcointalk.org/index.php?topic=5214672.msg66258056#msg66258056https://bitcointalk.org/index.php?topic=5214672.msg66262235#msg66262235https://bitcointalk.org/index.php?topic=5214672.msg66262564#msg66262564https://bitcointalk.org/index.php?topic=5214672.msg66262617#msg66262617https://bitcointalk.org/index.php?topic=5214672.msg66263721#msg66263721https://bitcointalk.org/index.php?topic=5214672.msg66263769#msg66263769https://bitcointalk.org/index.php?topic=5214672.msg66264029#msg66264029https://bitcointalk.org/index.php?topic=5214672.msg66266186#msg66266186https://bitcointalk.org/index.php?topic=5214672.msg66266241#msg66266241https://bitcointalk.org/index.php?topic=5214672.msg66267400#msg66267400https://bitcointalk.org/index.php?topic=5214672.msg66268573#msg66268573https://bitcointalk.org/index.php?topic=5214672.msg66269045#msg66269045https://bitcointalk.org/index.php?topic=5214672.msg66269698#msg66269698Che cos'è una chiave privata in soldoni?Un numero qualsiasi scelto a caso all'interno di un intervallo molto grande [1, n-1] dove n è circa 2**256
Come scelgo questo numero? Qui sta il punto cruciale della sicurezza.
Se anche involontariamente
uso uno schema per scegliere quel valore,
in realtà sto restringendo a priori l'insieme dei valori possibili (in gergo si dice diminuire l'entropia della chiave),
quindi invece di avere un'entropia di 256 bit potrei utilizzare un'entropia molto più bassa e questo esporrebbe la mia chiave privata alla possibilità di essere individuata da altri.
La sicurezza della chiave privata in generale è 256 bit?La sicurezza della chiave privata in sè è 256 bit solo finchè non la si usa,
nel momento in cui la uso e rivelo la chiave pubblica associata è possibile risalire dalla pubblica alla privata con circa 2^128 tentativi,
quindi alla fine si può dire che a livello pratico
la sua sicurezza è 128 bitSe uso una mnemonic di 24 parole ho più sicurezza rispetto a 12 parole?Sì se parliamo della funzione di backup/recupero dell'intero wallet;
con 24 parole sono necessari 2^256 tentativi per recuperare il mio seed e quindi il mio intero wallet, con 12 parole bastano 2^128 tentativi.
No se parliamo della possibilità di craccare un singolo indirizzo, nel qual caso bastano come detto prima 2^128 tentativi a partire dalla chiave pubblica.
Per inciso, nella blockchain sono presenti attualmente circa 55 milioni di address con saldo positivo
(arrotondiamo pure a 67 milioni per semplicità di calcolo, 67 milioni = 2^26),
questo
porta a 128 + 26 = 154 bit la sicurezza complessiva di tutti i fondi detenuti sulla blockchain.
In realtà se si utilizza l'attacco multi-target,
la stima del costo computazionale






Ma allora 12 parole o 24 parole cambia qualcosa o no?Il livello di sicurezza per craccare tutti i fondi sulla blockchain (tramite attacco alle chiavi pubbliche) è di 141 bit grazie all'efficienza dell'attacco multi-target.
Caso 12 Parole

anche con l'algoritmo ottimizzato,

è ancora immensamente più grande di

.
Quindi, se tutti i wallet usassero 12 parole,
all'attaccante converrebbe ancora ignorare la matematica della curva ellittica e attaccare direttamente le seed phrase perchè con

tentativi svuoterebbe tutti i wallet.
Il "tetto" di sicurezza rimarrebbe la complessità dei seed.
Confronto con 24 Parole

Se tutti usassero 24 parole per costruire i propri wallet, l'attaccante non proverebbe mai a indovinare le parole

, ma userebbe l'algoritmo Pollard's Rho ottimizzato

per svuotare la blockchain.
In questo scenario, la sicurezza reale dei fondi è dettata dalla robustezza della curva ellittica
per il singolo utente,
o il costo cumulativo (

per tutti), non dalle 24 parole.
Risultato: per il singolo utente cambio poco o nulla, per la rete nel suo complesso si passa da una sicurezza complessiva di 128 bit (con 12 parole) a una complessiva di 141 bit (con 24 parole).
A livello pratico poi c'è da aggiungere che ci sono tanti dettagli di cui tenere conto nell'implementazione effettiva, per cui il confronto reale non è esattamente 128 bit vs 141 bit
perchè 1 operazione nel caso della generazione seed è molto più lenta di 1 operazione nel caso dell'algoritmo multi-target
e c'è inoltre da considerare la questione dell'enorme spazio necessario per i dati raccolti dall'algoritmo di attacco multi-target durante il suo funzionamento.
La mnemonic del BIP 39 è simile come concetto alla passphrase del brainwallet?No, concettualmente è molto diversa.
Nella passphrase è la passphrase stessa che scegli tu la sorgente di entropia (e qui nascono i problemi, in quanto gli essere umani sono molto meno originali di quanto pensino),
invece la mnemonic nel BIP 39 è solo un modo per ricordare una sequenza di 128 bit (o più) che hai generato in altro modo, nel BIP 39 tu non puoi e non dovresti partire scegliendo le 12 parole ma generando la sequenza più random possibile di 128 bit / 256 bit.