Penso meriterebbe più attenzione è davvero interessante!
Ti spiego cosa ho capito io, magari in due capiamo al 100%.
In pratica per generare una chiave privata si può partire da un seme, che dovrebbe essere il più complicato e casuale possibile. Il seme passa attraverso una funzione di hash e si genera la chiave privata, quindi SHA256("seme") = private key. Il seme può avere qualsiasi lunghezza, e ovviamente non conviene usare parole comuni tipo "gatto" perché chiunque potrebbe fare SHA256("gatto") e avere la tua stessa chiave privata, dopodiché è un attimo fare uno scan della blockchain, trovare il tuo indirizzo e se ci sono soldi lui ha la chiave per trasferirli.
Questo è un pessimo metodo per generare la chiave privata, eppure secondo le sue ricerche ci sono indirizzi sulla blockchain la cui private key deriva da frasi di senso compiuto tipo SHA256("i find your lack of faith disturbing").. e dice che chiaramente sono indirizzi fatti per essere trovati. Inquietante ma "affari loro".
Nella seconda parte racconta di aver iniziato una caccia al tesoro con un bot che tentava varie combinazioni per ottenere chiavi private e controllava sulla blockchain se corrispondessero a qualche indirizzo esistente. Si divide in più esperimenti.
Experiment 1:
(traduco)
Il mio primo esperimento è stato vedere se qualcuno ha usato l'hash di un blocco come private key. Sarebbe un modo elegante per "comprimere" 32 bytes nella tua testa. Devi solo ricordare l'altezza del blocco (
il numero del blocco, ndr) che sono solo 6 cifre e i corrispondenti 32 byte sono salvati per sempre sulla blockchain stessa!
Risultati: successo! Ho trovato 46 indirizzi ai quali sono stati inviati bitcoin tra il 2009 e il 2016. Come previsto hanno tutti un bilancio di 0 btc o perché il proprietario li ha spostati o perché sono stati scoperti da qualcun altro.
(fine traduzione)
Fin qui ci può stare in effetti è un'idea che può essere venuta a molte persone quella di utilizzare come seme una stringa casuale come l'hash di un blocco che è visibile da qualsiasi explorer. Ti ricordi il numero del blocco ed è fatta.
Ti faccio un esempio se non è chiaro, blocco numero 499468
https://blockchain.info/block/000000000000000000a3759788bfe1f05ee802377b016e64df8a880f188c3b75 a destra puoi vedere l'hash e la merkle root usata per l'esperimento 2.
Experiment 2:
Stessa cosa ma al posto che usare l'hash usa la merkle root del blocco. 6 indirizzi trovati, nulla di troppo preoccupante.
Experiment 3:
Prova a questo punto ad utilizzare SHA256("seme") ripetuto su alcune parole comuni. Ripetuto significa applicare la stessa funzione due o più volte, facendo quindi SHA256(SHA256("gatto")) = private key. Seguono alcuni risultati con "hello", "password", "sender" etc.
Probabilmente era visto come un metodo sicuro di creazione di chiavi ma chiaramente non lo è e l'autore del post lo ha dimostrato.
Da qui inizia la parte veramente inquietante.
Experiment 4:
Qui scopre che alcune chiavi private sono generate da indirizzi pubblici, ovvero SHA256(indirizzo) = private key. Questo non ha molto senso da un punto di vista pratico perché comunque un indirizzo non è comodo da ricordare.
(traduco)
Mi sono chiesto, "perché qualcuno dovrebbe farlo?"
Inizialmente ho pensato fosse qualcuno che pensava di potersela cavare ricordando un solo pezzo di informazione invece di due. Forse hanno una coppia di indirizzo/chiave privata preferita e ha ne ha derivata un'altra da quella? Ho pensato fosse possibile. Potresti fare questa operazione a catena e derivare tutte le chiavi che vuoi ricordando solo la prima. Ma ho scartato questa opzione per una semplice ragione; i bitcoin inviati a quegli indirizzi sono stati trasferiti entro pochi minuti o secondi. Se qualcuno aveva generato quelle chiavi per se stesso allora perché trasferire sempre immediatamente i fondi?
(fine traduzione)
Da qui spiega la sua teoria secondo la quale qualcuno abbia inserito un codice malevolo probabilmente all'interno di un exchange o di un wallet generator in modo da poter facilmente trovare le chiavi private e rubare i bitcoin che transitano su quegli indirizzi.
Da quanto ho capito quindi la truffa funzionerebbe in questo modo: tu crei un portafoglio, la tua chiave privata al posto che essere generata da un seme casuale e sicuro viene generata partendo da un indirizzo pubblico, quindi una stringa che chiunque ha a disposizione. A questo punto l'attaccante aspetta che sul tuo indirizzo venga depositata una somma e la ruba. L'autore stesso riesce a compiere un "furto" con il suo bot e dice di aver trovare dozzine di indirizzi potenzialmente compromessi.
Potrebbe sempre trattarsi di un errore di codice chiaramente ma fa poca differenza, ci sono indirizzi facilmente attaccabili sulla blockchain, e non per sbadataggine degli utenti o per qualche sofisticato virus che ruba le chiavi private. Spero comunque la cosa sia poco diffusa.