- Torna al menu
- Torna al menuPrezzi
- Torna al menuRicerca
- Torna al menuConsenso
- Torna al menu
- Torna al menu
- Torna al menu
- Torna al menuWebinar ed Eventi
Cosa significa il "Bitcoin Bug": una guida alla malleabilità delle transazioni
Cosa significa malleabilità delle transazioni, comunque, e il Bitcoin è rotto o no? Scoprilo qui.
Questa settimana è emerso un termine che molti bitcoiner T hanno mai sentito prima: malleabilità delle transazioni. Mt Gox l'ha citatocome motivo principale per la sospensione dei prelievi, ed è stato anche menzionato come base per un exploit utilizzato in unattacco massiccio contro la rete Bitcoinquesta settimana. Quindi, cos'è, come funziona e dovremmo preoccuparci? Ecco cosa sappiamo.
Cos'è la malleabilità delle transazioni?
È un attacco che consente a qualcuno di modificare l' ID univoco di una transazione Bitcoin prima che venga confermata sulla rete Bitcoin . La modifica consente a qualcuno di fingere che una transazione T sia avvenuta, se sono presenti tutte le condizioni giuste.
È la stessa cosa della doppia spesa?
No. La doppia spesa implica la spesa di monete una volta, quindi la creazione di una transazione diversa con le stesse monete prima che la prima transazione venga confermata. Il trucco è quindi ottenere la conferma della transazione fraudolenta sulla rete Bitcoin prima, in modo che la prima transazione T avvenga. Ciò significa effettivamente che puoi spenderle due volte.
Come funziona la malleabilità delle transazioni?
Per capirlo, è necessario sapere come funziona una transazione Bitcoin .
Quando invii bitcoin a qualcuno, T li prelevi da un account e li mandi a sfrecciare lungo i fili. I bitcoin non vengono mai inviati in questo modo. Invece, viene creata una transazione sulla blockchain Bitcoin .
La blockchain agisce come un gigantesco libro mastro generale per l'intera rete Bitcoin . Tiene traccia di quali indirizzi Bitcoin hanno inviato fondi ad altri indirizzi Bitcoin e quando. Ciò fornisce una registrazione completa di quanti bitcoin possono essere attribuiti a quali indirizzi sulla rete in ONE momento.
Quando viene effettuata una transazione Bitcoin , questa include informazioni quali gli indirizzi da cui provengono i bitcoin (input), dove sono diretti (output), gli importi trasferiti e quali indirizzi hanno inviato quei fondi all'indirizzo del mittente.
[post-citazione]
Ogni transazione deve essere identificata in modo univoco, in modo che possa essere referenziata nella blockchain. Tale ID di transazione (TX ID) viene prodotto prendendo le informazioni nella transazione ed eseguendole tramite una funzione hash.
L'hashing è una procedura matematica che prende diversi pezzi di dati e li combina per produrre un pezzo di informazione più breve, noto come hash. ONE delle cose che è inclusa in un hash di transazione è la firma digitale dell'utente, che dimostra che la transazione proviene da lui. È un modo per lui di "firmare" digitalmente la transazione.
ONE delle qualità chiave di una funzione di hashing è che è impossibile dire quali fossero le informazioni originali semplicemente guardando l'hash. È anche impossibile prevedere quale sarà l'hash, in base alle informazioni da cui si parte. Se un piccolo dettaglio cambia in uno qualsiasi di quei dati, cambierà l'hash in un modo completamente imprevedibile.
Ciò rende praticamente impossibile falsificare gli ID delle transazioni. Ogni transazione dovrebbe avere ONE solo hash possibile. Puoi dimostrare che una transazione è valida semplicemente eseguendo tutti i pezzi di informazione che hanno costituito quella transazione tramite la funzione di hashing, per verificare di ottenere lo stesso hash.
Almeno, questa è l'idea. Ma è qui che entra in gioco la malleabilità. Le firme digitali dell'utente utilizzate come parte dell'hash per "firmare" la transazione devono essere in un certo formato. Quel formato T è sempre stato controllato correttamente. Ciò significava che poteva essere introdotto ONE mal formattato e comunque accettato. Alterare la firma in questo modo rende possibile creare hash diversi per la stessa transazione.
Non è una bella cosa. Ma, a quanto pare, non è neanche una cosa tremendamente cattiva. Ecco perché.
Come può causare problemi?
ONE problema qui riguarda gli exchange, che gli utenti Bitcoin spesso usavano per acquistare e vendere bitcoin. Inviano la loro valuta fiat o i loro bitcoin a un exchange, dove rimangono in un account, in modo che possano essere convertiti. A un certo punto, potrebbero voler prelevare bitcoin dall'account.
Ci sono diversi scenari possibili. Eccone un paio:
Attacchi individuali dannosi
Diciamo che ALICE gestisce uno scambio ed Eve ha dei bitcoin in quello scambio. Eve decide di ritirare le sue monete e chiede ALICE di inviare i bitcoin al suo indirizzo. Quando ALICE li invia, questo crea automaticamente una transazione, che viene trasmessa per il mining in modo che possa essere inclusa nella blockchain Bitcoin .
Ma Eve finge che ALICE non li abbia mai inviati. Utilizza il difetto di malleabilità della transazione per riprodurre la transazione originale di Alice, modificando leggermente la firma per produrre un hash diverso. Quindi ritrasmette quella transazione, con l' ID diverso.
C'è la possibilità che la transazione di Eve venga confermata per prima sulla blockchain. Se ciò accade, la rete presumerà che la transazione sia valida e T registrerà quella di Alice. Eve può quindi lamentarsi con ALICE di T aver ricevuto le monete. Quando ALICE controlla il suo ID transazione nella blockchain, T lo troverà e potrebbe provare a inviare altri bitcoin, il che significa che sarà fuori tasca.
Incidenti ben intenzionati
Se utilizzi un software personalizzato per gestire i tuoi bitcoin, potrebbe generare hash malformati per errore. Questi hash potrebbero quindi essere "corretti" da un altro portafoglio più efficiente, che li formatta correttamente. Ma ciò potrebbe modificare l' ID TX. Se il tuo portafoglio non è progettato per rilevare transazioni con le stesse caratteristiche ma un ID diverso, potrebbe ritrovarsi con transazioni "bloccate" che restano sospese nel limbo. Ancora peggio, potrebbe pensare di avere ancora quelle monete da spendere.
In entrambi i casi, è un incubo contabile, se il tuo software T riesce a farcela. Lo sviluppatore Bitcoin CORE Gregory Maxwell riflette su questa possibilità Qui.
Attacchi di negazione del servizio di massa
Qualcuno potrebbe anche causare problemi più ampi alla rete Bitcoin lanciando deliberatamente attacchi di malleabilità delle transazioni su più exchange contemporaneamente, forse usando software deliberatamente progettati per creare transazioni mutanti. Questo attacco concertato è ciò che sembra essere accaduto questa settimana, con più exchange colpiti.
I sistemi di contabilità back-end di questi exchange potrebbero essere in grado di gestire un numero moderato di transazioni mutanti, ma se ne vengono ripetutamente bombardati, potrebbero avere problemi logistici per un po'.
Potrebbe causare problemi a breve termine anche per il mercato. Ogni incertezza o dubbio sulla stabilità del mercato avrà naturalmente un effetto sui prezzi di mercato, specialmente con una classe di attività così illiquida e volatile.
Ciò significa che c'è un bug nel Bitcoin?
Ci sono stati diversi problemi con le tecnologie utilizzate dalla rete Bitcoin , che creano problemi di malleabilità. ONE di questi era originariamente nel client di riferimento, ovvero il software prodotto da un team di sviluppatori CORE a cui la maggior parte delle persone fa riferimento quando crea i propri servizi. Quel problema era un errore nel ricontrollare i dati della firma prima di passarli a un altro software su cui si basava il client di riferimento Bitcoin .
Secondo un annuncio della Bitcoin Foundation di questa settimana, questo ultimo attacco di malleabilità sta trasmettendo versioni mutate delle transazioni, il che sta "esponendo bug sia nell'implementazione di riferimento sia nel software di alcuni exchange", il che significa che ci sono difetti software in diversi punti dell'ecosistema Bitcoin che dovrebbero essere risolti.
Gli sviluppatori CORE hanno anche informato CoinDesk di due "casi limite" nel client di riferimento (si tratta di difetti che verrebbero raramente invocati). Entrambi si concentrano sulla parte wallet del software.
Sembra che ci siano molti altri problemi di malleabilità, tra cui alcuni elencati proprio questo mese <a href="https://gist.github.com/sipa/8907691">https://gist.github.com/sipa/8907691</a> da ONE degli sviluppatori CORE Bitcoin in una Bitcoin Improvement Proposal (BIP), un documento che richiede alcune modifiche a Bitcoin.
Gli sviluppatori CORE non rivelano esattamente quali siano i problemi più problematici, perché T vogliono fornire ulteriori informazioni ai potenziali aggressori.
Come si sta risolvendo il problema?
La comunità era a conoscenza del problema più spesso discusso, che consentiva l'invio di firme malformate, già nel 2011 (vederequesta discussione). Il problema in questo caso era che un pezzo chiave del software utilizzato dal client Bitcoin T gestiva correttamente le firme malformate. T era colpa degli sviluppatori CORE Bitcoin , ma quello che non sono riusciti a fare è stato far sì che il client Bitcoin verificasse due volte che la firma fosse stata formata correttamente prima di consegnarla. Ciò è stato risolto nella versione 0.8 del client di riferimento.
Tuttavia, non tutti gli exchange utilizzano il client di riferimento per gestire le loro transazioni Bitcoin . Possono utilizzare versioni personalizzate, che fanno le cose in modo leggermente diverso. Quindi gli sviluppatori Bitcoin , e gli sviluppatori di wallet ed exchange stanno tutti armeggiando con il loro codice per garantire che le cose funzionino senza intoppi. Per gli exchange, ciò comporterà assicurarsi che gli exchange gestiscano le transazioni mutanti con grazia, facendo le cose giuste quando ne vedono ONE.
Le altre soluzioni riguardano più i processi. Le cose che rendono la malleabilità un problema maggiore sono la dipendenza da transazioni non confermate, in cui beni e servizi vengono trasferiti o forniti prima che una transazione venga confermata nella blockchain. Quindi richiedere la conferma della transazione è sempre una buona idea.
Allo stesso modo, effettuare una verifica manuale dei prelievi di Bitcoin dagli exchange può aiutare a KEEP le cose in ordine nel back-end.
Quindi il mondo Bitcoin sta finendo? Stiamo affrontando una criptocalisse?
È un fastidio, ma poco più. Ci sono bug nella maggior parte dei prodotti software, ma non tutti i bug sono uguali. Alcuni sono errori critici e spettacolari, altri T. Questi non T sono, e Bitcoin non è rotto. I fondamenti CORE di Bitcoin , il modo decentralizzato in cui molti computer lavorano insieme per prendere decisioni sulle transazioni, funzionano ancora.
Nel nostro esempio di scambio sopra, ci si aspetterebbe che ALICE avesse abbastanza registrazioni contabili dettagliate da poter ancora riconciliare i bitcoin che aveva inviato. Se avesse inviato a Eve, diciamo, 1 Bitcoin alle 12:10 GMT del 5 febbraio, si tratterebbe di una transazione piuttosto unica. Potrebbe semplicemente dire "i nostri registri mostrano che questa transazione è stata effettuata, in questo momento, con questi parametri. L' ID della transazione deve essere cambiato, quindi non sto reinviando quei bitcoin".
Uno scambio potrebbe anche implementare strumenti per tracciare automaticamente gli input nelle transazioni, il che aiuterebbe a individuare le mutazioni.
Se non altro, la malleabilità delle transazioni aiuterà a dimostrare la resilienza della rete decentralizzata contro Eventi di rete discreti. La decentralizzazione è ONE delle cose che la rende il " BADGER di miele del denaro", dopotutto.
Moneta malleabileimmagine tramite Shutterstock
Danny Bradbury
Danny Bradbury è uno scrittore professionista dal 1989 e lavora come freelance dal 1994. Si occupa di Tecnologie per pubblicazioni come il Guardian.
