Che cos'è Replay Attack?
Un Replay Attack avviene quando qualcuno cattura un'azione crittografica valida e la invia di nuovo in modo che una rete la consideri come nuova. La firma è legittima, il tempismo è subdolo. Pensalo come qualcuno che riutilizza il tuo assegno firmato a un altro sportello che applica le stesse regole.
Un Replay Attack significa che la tua chiave privata è stata rubata. Non proprio. L'attaccante può riutilizzare un messaggio già firmato se due posti lo accettano nello stesso modo, anche senza conoscere la tua chiave.
Come funziona Replay Attack
Breve spiegazione per fissare il concetto.
- Passo 1: Pubblici una transazione firmata.
- Passo 2: Un attaccante copia esattamente quei dati firmati.
- Passo 3: La ritrasmettono dove continua a essere verificata, per esempio dopo un hard fork o su una catena che accetta le stesse regole di firma.
- Passo 4: La rete vede una firma valida e la elabora di nuovo, così il valore si muove due volte.
- Passo 5: Solo controlli anti replay la fermano, come gli ID della catena, i nonce o permessi monouso a livello di app.
Questo è tutto il trucco. Fastidioso, e facilmente prevenibile.
Perché Replay Attack è importante
Perché dovresti preoccuparti di un Replay Attack? Perché può duplicare un'azione reale che volevi eseguire una sola volta e trasformarla in due volte.
- Vantaggio: Conoscere il rischio ti fa risparmiare denaro e stress aiutandoti a organizzare mosse più sicure.
- Prospettiva: Oggi l'uso di più catene è comune, quindi messaggi copiati che finiscono nel posto sbagliato accadono più spesso di quanto si pensi.
- Rilevanza: Vedrai questo termine quando sposti fondi attraverso una rete blockchain, durante le scissioni di catena, o quando firmi messaggi fuori catena per le app.
Usa un portafoglio che mostri chiaramente la catena attiva e imposti correttamente gli ID della catena. In caso di dubbi, invia prima una piccola prova, poi il resto.
Caratteristiche chiave di Replay Attack
Individua il modello velocemente con questi segnali:
- Copia: Riutilizza esattamente lo stesso messaggio firmato, byte per byte.
- Validità: La firma è autentica, quindi i nodi la accettano a meno che non ci siano controlli anti replay.
- Tempistica: Più comune durante le scissioni di catena, l'uso di bridge, o quando le app saltano i controlli sui nonce.
Varianti
Stesso schema, ambienti diversi:
- Fork: Ripetizioni tra due catene che si sono separate e che continuano a riconoscere le stesse firme.
- Crosschain: Ripetizioni tra catene che condividono parametri o accettano gli stessi formati di messaggio.
- Contratto: Ripetizioni di permessi firmati o meta transazioni dentro app che hanno dimenticato un nonce monouso.
Dopo grandi aggiornamenti o scissioni, controlla la tua cronologia delle transazioni su entrambe le catene. Se qualcosa sembra duplicato, fermati prima di inviare altro.
Esempio
Dopo il fork della DAO, alcuni prelievi firmati su Ethereum sono stati accettati di nuovo su Ethereum Classic finché non è stata introdotta una protezione anti replay più robusta.
Curiosità
Ethereum ha introdotto gli ID della catena nel 2016 tramite EIP155 proprio per fermare i trucchi di Replay Attack, e quella scelta di progetto ha influenzato il modo in cui i wallet moderni ti chiedono di scegliere la catena all'inizio.
Riepilogo
Replay Attack in una frase: una firma reale, riutilizzata dove o quando non dovrebbe esserlo. Consideralo come un addebito doppio e lo noterai più rapidamente.
