Wat is Replay Attack?
Een Replay Attack is wanneer iemand een geldige cryptoactie opvangt en deze opnieuw verstuurt, zodat een netwerk het als nieuw behandelt. De handtekening is geldig, de timing is sluw. Vergelijk het met iemand die jouw ondertekende cheque opnieuw gebruikt bij een andere balie die nog steeds dezelfde regels toepast.
Een Replay Attack betekent dat je privésleutel gestolen is. Niet helemaal. De aanvaller kan je al ondertekende bericht opnieuw gebruiken als twee plekken het op dezelfde manier accepteren, zelfs zonder je sleutel te kennen.
Hoe Replay Attack werkt
Korte uitleg zodat het blijft hangen.
- Stap 1: Je verzendt een ondertekende transactie.
- Stap 2: Een aanvaller kopieert die exacte ondertekende gegevens.
- Stap 3: Ze sturen het opnieuw naar plekken waar het nog steeds verifieert, bijvoorbeeld na een hard fork of op een keten die dezelfde handtekeningregels accepteert.
- Stap 4: Het netwerk ziet een geldige handtekening en verwerkt het opnieuw, waardoor waarde twee keer wordt verplaatst.
- Stap 5: Alleen controles tegen replay stoppen dit, zoals chain IDs, nonces of appniveau eenmalige toestemmingen.
Dat is de hele truc. Vervelend, en goed te voorkomen.
Waarom Replay Attack ertoe doet
Waarom zou je je zorgen maken over een Replay Attack? Omdat het een echte handeling die je één keer wilde doen kan dupliceren en er twee van kan maken.
- Voordeel: Kennis van het risico bespaart geld en stress door je te helpen veiligere stappen te plannen.
- Perspectief: Multi chain is nu de norm, dus gekopieerde berichten die op de verkeerde plek terechtkomen komen vaker voor dan veel mensen denken.
- Relevantie: Je komt deze term tegen bij het verplaatsen van fondsen over een blockchain netwerk, tijdens ketensplitsingen of bij het ondertekenen van offchain berichten voor apps.
Gebruik een wallet die de actieve keten duidelijk toont en chain IDs correct instelt. Bij twijfel, stuur eerst een kleine testtransactie en daarna de rest.
Belangrijkste kenmerken van Replay Attack
Herken het patroon snel aan deze tekenen:
- Kopie: Het hergebruikt exact hetzelfde ondertekende bericht, byte voor byte.
- Geldigheid: De handtekening is echt, dus nodes accepteren het tenzij er controles tegen replay zijn.
- Timing: Komt het meest voor bij ketensplitsingen, bruggen of wanneer apps nonce controles overslaan.
Variaties
Zelfde aanpak, andere situaties:
- Fork: Replays over twee ketens die zich splitsen en nog steeds dezelfde handtekeningen toestaan.
- Crosschain: Replays tussen ketens die parameters delen of dezelfde berichtformaten accepteren.
- Contract: Herhalingen van ondertekende toestemmingen of metatransacties in apps die een eenmalige nonce vergaten.
Na grote upgrades of splitsingen, controleer je transactiegeschiedenis op beide ketens. Als iets dubbel lijkt, stop dan voordat je meer stuurt.
Voorbeeld
Na de DAO fork werden sommige opnames die op Ethereum waren ondertekend opnieuw geaccepteerd op Ethereum Classic totdat sterkere bescherming tegen replay werd ingevoerd.
Leuk weetje
Ethereum introduceerde in 2016 chain IDs via EIP155 specifiek om Replay Attack trucs te stoppen, en die ontwerpkeuze beïnvloedde hoe moderne wallets je vooraf een keten laten kiezen.
Samenvatting
Replay Attack in één zin: een echte handtekening, hergebruikt waar of wanneer dat niet zou moeten. Behandel het als een dubbele afschrijving en je ziet het sneller.
