Replay Attacks Uitgelegd
Doordat een mogelijke verandering aan het bitcoinprotocol deze november, Segwit2x of New York Agreement, niet met volledige consensus zal plaats vinden, bestaat de kans dat er een splitsing van het bitcoin netwerk optreedt. Om te voorkomen dat deze twee netwerken met elkaar in de knoop raken dient er 'replay protection' te worden toegepast.
Bitcoin Transacties
Om te begrijpen wat een replay attack is, moet eerst begrepen worden hoe een bitcointransactie in elkaar steekt.
Bitcoin kan gezien worden als een globaal grootboek en bitcointransacties als bankcheques, zoals ook in een eerder artikel uitgelegd. Omdat bij Bitcoin het grootboek digitaal is, kan iedereen de blockchain downloaden om deze vervolgens zelf te controleren. Hierdoor hoeft er niet vertrouwd te worden op derde partijen.
Dit betekent dus dat alle uitgeschreven cheques, de bitcointransacties, openbaar zijn en door iedereen zijn in te zien.
Hard Fork
Een hard fork kan gezien worden als een verandering van de manier waarop het grootboek wordt bijgehouden. Als iedereen met de verandering mee doet levert dit geen problemen op. Is dit niet het geval, dan kan er een splitsing van het netwerk optreden; beiden een eigen versie met specifieke regels van het protocol. Je hebt dan het netwerk met de oorspronkelijke regels, en een met de nieuwe regels die in zijn gegaan na het uitrollen van de verandering. Dit is 1 augustus jongstleden ook gebeurd, de geboorte van Bitcoin Cash.
Tot het moment van de splitsing waren de twee versies dus één. Ze hebben dezelfde geschiedenis (het was immers slechts één grootboek), en boorduren nu voort op hun eigen regels met bijbehorend grootboek. Adressen bij bijbehorende balansen zijn hierdoor tot op het moment van de splitsing op allebei de blockchains aanwezig. Hier komt het belang van replay protection om de hoek kijken.
Replay Attack
Als je op de ene blockchain (1) bitcoins bezit voor de splitsing, heb je dezelfde hoeveelheid bitcoins ook op de andere blockchain (2), na de splitsing. Maar wat nou als je bitcoins wilt versturen op één van de twee blockchains, zonder de bitcoins van de andere blockchain in gevaar te brengen?
Ook hier gebruiken we de eerdergenoemde analogie van een bankcheque met handtekening. Doordat alle transacties goedgekeurd moeten worden op basis van de informatie die de transactie bevat, de handtekening die wordt gebruikt en de vingerafdruk die daarvan wordt gemaakt, is deze informatie allemaal publiekelijk in te zien in het openbare grootboek. Doordat de afgesplitste blockchain (2) dezelfde regels kan hanteren voor het opstellen van transacties, kan de informatie van de transactie op de andere blockchain (1) worden gebruikt om diezelfde transactie te imiteren op de afgesplitste blockchain (2). De transactie bleek immers correct te zijn, dus is er geen reden om deze te weigeren. Zo kan, zonder replay protectie, iemand anders die mee kijkt met blockchain (1) de transactie reproduceren en deze nogmaals, herhaald (replay), versturen op blockchain (2).
Zo'n aanval kan voorkomen worden door een uniek kenmerk mee te geven aan de cheque. Denk hierbij aan een digitaal watermerk. Bij het controleren van een transactie wordt gekeken of er een watermerk aanwezig is. Is dit het geval, dan is deze transactie bestemd voor blockchain (2) en is deze niet geldig op de originele blockchain (1), en vice versa.
Concluderend
Voor eenieder die geen transacties wilt sturen is een eventuele splitsing geen probleem. Er kan rustig gewacht worden tot er een beveiligde versie beschikbaar wordt gemaakt die deze replay attacks onmogelijk maakt.
Wanneer het wel noodzakelijk is om transacties te versturen na de mogelijke splitsing in november, kan men voor een nare verrassing komen te staan. Tot op heden is er nog geen replay bescherming opgenomen in het Segwit2x protocol. Het is nu afwachten of, en zo ja wanneer, mogelijke bescherming geïmplementeerd zal gaan worden. Tot die tijd dient er in ieder geval goed opgelet te worden, zodat men niet de fout in gaat na de eventuele splitsing.
Dit artikel is geschreven op basis van artikelen gepubliceerd door Jimmy Song. Jimmy Song is een Bitcoin developer, ondernemer en voormalig ontwikkelaar voor bitcoinwallet Armory. In zijn serie Bitcoin Tech Talk laat hij de lezer meekijken met de ontwikkelingen rondom de technische aspecten van Bitcoin.