₿itcoinItaliaNetwork 

timewarp

Difficoltà: avanzato

Argomento: tecnologia


DEFINIZIONE

Il bug Time-Warp, noto anche come "Timestamp Manipulation Attack", è una vulnerabilità che consente a un miner di effettuare un attacco attraverso la manipolazione dei timestamp sui blocchi che estrae.

Il bug è stato scoperto per la prima volta nel 2011 dall'utente BitcoinTalk "ArtForz".
ArtForz ha notato discrepanze nei timestamp dei blocchi estratti e ulteriori indagini hanno rivelato la vulnerabilità.

I vincoli dei timestamp dei blocchi possono essere raggirati facendo in modo che gli ultimi blocchi di una difficulty epoch vengano fissati in futuro con un timestamp impostato ad arte per regolare arbitrariamente la difficulty, seppur nei limiti minimo e massimo consentiti dall'algoritmo di regolazione della difficulty.

Il miner può scegliere quale data e orario inserire come timestamp nell'header del blocco, ma le regole di consenso impediscono di impostare un timestamp con valori troppo distanti dagli altri blocchi, richiedendo che qualsiasi timestamp debba essere maggiore del tempo mediano degli 11 blocchi precedenti, chiamato MTP o Median time-past.
Tuttavia, i miner che controllano la maggioranza dell'hashrate (o una sotto-maggioranza di miner che utilizzano un attacco che dà loro influenza sugli altri miner, come il selfish mining), potrebbero ottenere un controllo preciso sull'orario dell'header di ciascun blocco.

Modificando i timestamp in avanti, l'attaccante può far sembrare alla rete che la velocità di produzione dei blocchi sia molto più lenta di quanto lo sia effettivamente stata.
Il DAA, Difficulty Adjustment Algorithm, che regola la difficulty volta ogni 2016 blocchi per mantenere il tempo medio di creazione di un blocco a circa 10 minuti, potrebbe essere ridurre significativamente la difficulty.

I miner che iniziano un time warp attack non possono influenzare in modo significativo la difficulty per il primo blocco dell'epoca perché sia il primo che l'ultimo blocco di quell'epoca dovranno avere orari approssimativamente accurati. Per la successiva epoca, i miner possono far sembrare che il primo blocco sia stato estratto due settimane prima e che l'ultimo blocco sia stato estratto attualmente, fornendo una media di circa 20 minuti per blocco e inducendo la DAA a dimezzare la difficoltà.

I miner saranno quindi in grado di completare l’epoca successiva due volte più velocemente e tuttavia faranno sembrare che ci siano voluti circa 25 minuti per blocco, riducendo ulteriormente la difficulty. Possono così ripetere l’attacco indefinitamente finché non producono un blocco al secondo, il limite inferiore consentito dalla regola del Median time-past.

Una volta ridotta la difficulty, l'attaccante potrebbe iniziare a minare una serie di blocchi molto rapidamente, approfittando della difficulty artificiosamente bassa.

In questo modo il miner attaccante può creare un certo numero di blocchi che rilascia sulla rete.

Se l'attacco ha successo, la blockchain che l'attaccante sta diffondendo verrà considerata la versione corretta della blockchain, essendo più lunga e quindi considerata quella "giusta" secondo le regole di consenso di Bitcoin.

È fondamentale sottolineare che, considerati i valori di hashrate raggiunti dal mining di Bitcoin, l'attuazione di un attacco timewarp sulla rete mainnet è quasi impossibile e richiederebbe il controllo di una parte significativa dell'hashrate complessivo per un lungo periodo di tempo.
Al contrario, su testnet, l'esecuzione di tale attacco risulta decisamente più semplice, al punto possono essere creati dei block storm come dimostrato da diversi casi documentati e sono così stati effettuati griefing attack.

Attraverso questi block storm l'inflazione programmata delle monete viene accelerata e l'offerta massima o Max Supply di 21 milioni di Bitcoin in circolazione verrebbe raggiunto più velocemente del suo programma naturale di emissione, come infatti sta avvenendo nella testnet che nonostante sia stata avviata nel 2011 ha oltre 3 volte tanto i blocchi della mainnet, con una media di un blocco ogni 2 minuti invece di 10.


aggiornato il 2024-05-02