Bitcoinspot.nl legt uit: MTgox en de malleabality-bug die geen bug is.

on .

mtgoxxxxx  
De pers stond er de afgelopen week weer bol van: er was een zogenaamde malleability-bug op het bitcoin netwerk die onder andere MTgox plat had gelegd. Paniek, exchanges sloten tijdelijk hun deuren en de prijs op MTgox daalde (en daalt nog steeds) naar een dieptepunt. Maar wat blijkt nu: het is ten eerste geen bug. Ten tweede had MTgox alle ellende kunnen voorkomen maar koos ervoor de schuld af te schuiven. Kortom: tijd om hier eens dieper op in te gaan.

De malleability "bug"

Het hele malleablity-probleem is niet 123 uit te leggen maar laat ik maar eens een poging doen. Waar het in feite op neerkomt is dat je in het bitcoin-netwerk transacties hebt die bevestigd zijn en transacties die nog bevestigd moeten worden. De transacties die al bevestigd zijn vormen geen probleem want deze zijn vastgelegd in de blockchain. De blockchain is het digitale kasboek waarin alle bitcoin-transacties worden genoteerd en deze transacties zijn niet meer te wijzigen. Het probleem ligt bij de transacties die nog bevestigd moeten worden want deze zijn (zolang ze nog niet bevestigd zijn) te vervalsen of beter gezegd na te maken. Door het namaken van een openstaande transacties kan je dus valsspelen maar alleen als degene die je probeert te frauderen zijn zaakjes niet op orde heeft, MTgox bijvoorbeeld dus.

Dat een transactie nagemaakt kan worden is echter geen bug maar het is een eigenschap van het bitcoin protocol. Transacties in het bitcoin-protocol kunnen op vele verschillende manieren in elkaar gezet worden zolang het resultaat maar hetzelfde is en de transactie voldoet aan een aantal voorwaarden. Dit maakt het systeem flexibel en deze flexibiliteit is juist wat het bitcoin protocol zo breed inzetbaar maakt en geschikt om te werken met verschillende soorten software. Nadeel hiervan is wel dat je dus een bestaande transactie kan namaken terwijl het transactie-id van de de transactie anders eruit ziet.

De fraude in de praktijk

De malleability fraude wordt dus gedaan door het wachten op een transactie en het direct aanmaken van een nieuwe (valse) transactie die het doet lijken alsof de originele transactie niet geslaagd is. De fraudeurs die van deze mogelijkheid gebruik maken vragen dus bitcoins op bij bijvoorbeeld MTgox. Als de bitcoins dan gestuurd worden maken ze een nieuwe transactie die identiek is aan de originele maar met een andere transactie-id. Deze transactie sturen ze dan het bitcoin netwerk op. Als de valse transactie het wint van de originele zullen de fondsen wel aankomen op het originele bestemmingsadres maar zal er bij MTgox op een gegeven moment een melding komen dat de fondsen niet goed verstuurd zijn. Dat komt doordat MTgox alleen naar het transactie-id keek en niet naar de inhoud. Als ze gewoon kijken of op het bestemmings-adres de gestuurde bitcoins binnen waren gekomen hadden ze gezien dat de transactie gewoon geslaagd was. In dit geval dus kon de fraudeur zeggen dat hij de bitcoins nooit ontvangen heeft en vragen of ze nog een keer gestuurd kunnen worden. Het grote probleem in dit geval was dat MTgox ze nog een keer probeerde uit te betalen en de aanvallers konden dus dezelfde truc nog een keer uitvoeren.

Eigen schuld dikke bult ?

Het hele malleability verhaal had helemaal geen probleem hoeven zijn als ze bij MTgox de juiste maatregelen hadden genomen echter dit hadden ze dus verzuimd te doen.
Dit hele bovenstaande probleem was al langer bekend en zeker bij de heren van MTgox. Sterker nog: in januari 2013 werd er al een wiki entry gemaakt van dit probleem door een werknemer van MTgox zelf en werd er door meerdere programmeurs al voorspeld dat ze hier aan blootgesteld zouden kunnen worden.

Het eerste probleem van mtgox is dat ze vertrouwden op de transactie-id van een transactie voordat deze opgenomen werd in de blockchain. Met andere woorden, MTgox keek alleen naar de transactie-id van een transactie en vertrouwde daarop zonder daadwerkelijk te kijken wat de transactie inhield. Je zou het misschien kunnen vergelijken met het telkens inruilen van een bonnetje bij verschillende winkels waarbij diezelfde winkels allemaal verzuimen om te controleren of dat bonnetje al elders is ingeruild.

Tweede probleem is dat de exchange, in het geval van een gefaalde transactie, een aantal controles had kunnen uitvoeren. Hiermee hadden ze kunnen kijken of de bitcoins wel uitbetaald waren en hadden dus kunnen voorkomen dat de bitcoins nog een keer gestuurd zouden worden. Echter bleek het dat ze zelfs transacties die faalden gewoon automatisch bleven herhalen totdat ze wel slaagden. In dit geval konden de aanvallers dus bitcoins blijven ontvangen.

Whatever doesn't kill you...

De malleability aanval begon het eerste op MTgox maar blijkbaar roken er meer mensen bloed en begonnen er een grootschalige aanval op meerdere exchanges. Blijkbaar was het idee: "als mtgox hier gevoelig voor is dan andere exchanges misschien ook" en andere aanbieders zoals onder andere bitstamp moesten tijdelijk hun transacties opschorten. Dit was typisch een geval van een DOS (denial of service) aanval waarbij de exchanges overspoeld werden met aanvragen in een poging om ze te bestelen. Hoeveel bitcoins er precies bij wie zijn buitgemaakt is onbekend maar het lijkt er wel op dat iedereen nu goed op de hoogte is van de problemen en voorzorgsmaatregelen heeft getroffen. Het mooie van het hele verhaal is wel dat het Bitcoin netwerk weer sterker uit de strijd lijkt te komen nu deze aanval langzaam maar zeker afgeslagen lijkt te worden.

Is er leven na MTgox?

Vreemd genoeg heb ik een sterk gevoel van deja-vu bij de gebeurtenissen van afgelopen week. Als iemand die vanaf begin 2011 met MTgox bezig is beleef ik nu de 3e grote MTgox-crisis en het verhaal is steeds hetzelfde. 1: Mtgox heeft zijn zaakjes niet voor elkaar, 2: MTgox ondervindt een kritiek probleem, 3: paniek en prijsdalingen. Gelukkig is het grote verschil met juni 2011 en april 2013 dat er nu een stuk meer exchanges zijn en dat deze crisis een minder grote impact lijkt te hebben op het gehele bitcoin netwerk dan de vorige keren.

Je gaat je op een gegeven moment wel afvragen waarom mensen toch hun bitcoins blijven stallen op MTgox om daarna moord en brand te schreeuwen als ze niet meer bij hun centjes kunnen. Je zou toch denken dat iedereen onderhand zijn lesje wel geleerd heeft. Waarschijnlijk zal MTgox ook deze tegenslag wel weer overleven maar niet iedereen is het met mij eens wat dat betreft. Op Coindesk.com (waar ze nogal een hekel hebben aan MTgox) kan je een uitgebreid artikel vinden over het mogelijke faillissement van MTgox.
De manier waarop MTgox deze crisis heeft aangepakt laat wat mij betreft in ieder geval zien dat ze niet professioneel genoeg zijn om ze te vertrouwen met je bitcoin. In plaats van toe te geven dat ze zelf flinke fouten hebben gemaakt gaven ze de schuld aan het bitcoin netwerk wat weer een hoop slechte publiciteit met zich meebracht.

Maar gelukkig is bitcoin een vrije markt en zoals dat gaat in een vrije markt zijn er andere exchanges die de plek van MTgox stilletjes aan hebben ingenomen. Ook zijn er slimme ondernemers zoals bijvoorbeeld het Nederlandse BTCdirect die MTgox klanten de mogelijkheid biedt om hun bitcoins alsnog te verkopen.

Kortom: we kunnen zonder MTgox en het netwerk is weer een stukje sterker. Over tot de orde van de dag zou ik zeggen, bitcoin heeft nog andere ontelbare uitdagingen voor de boeg.

Gepost door Roland de Goeij

Tags: mtgox,

Comments   

# Guest 2014-02-24 12:18
Volgens mij klopt de uitleg toch niet helemaal. Volgens mij is het probleem een combinatie van de volgende drie factoren:
* de elektronische handtekening in een transactie ondertekent de hele transactie BEHALVE DE HANDTEKENING ZELF (dit kan ook niet anders: een handtekening kan niet zichzelf ondertekenen)
* de transactie-ID die in Bitcoin wordt gebruikt wordt berekend op basis van de complete transactie-inho ud, INCLUSIEF DE HANDTEKENING. Dus, als de handtekening wordt veranderd, verandert de transactie-ID.
* Door meerdere oorzaken is het mogelijk voor buitenstaanders ("hackers") om bij Bitcoin-transac ties de ENE geldige handtekening te veranderen in EEN ANDERE geldige handtekening, zolang de transactie zelf verder het zelfde blijft.
Reply | Reply with quote | Quote
# Guest 2014-02-24 13:01
De derde factor is op zichzelf niet zo'n probleem, omdat de transactie zelf niet aangepast kan worden door hackers. Het probleem is vooral dat, als de handtekening wordt veranderd, de transactie-ID verandert (zie factor 2).

Als mensen of bedrijven zich er niet van bewust zijn dat de transactie-ID kan veranderen, dan kan dat voor verwarring zorgen, en kwaadwillenden kunnen van die verwarring misbruik maken. Dit is wat er bij MtGox is gebeurd: kwaadwillenden haalden hun bitcoins van MtGox af, en veranderden de transactie-IDs van de withdrawal-tran sacties. Soms kwam dan de veranderde transactie in de block chain terecht i.p.v. de oorspronkelijke transactie. MtGox herkende de veranderde transacties niet, en dacht dus dat de withdrawal was mislukt. Bij herhaaldelijk toepassen konden kwaadwillenden dus meer bitcoins van MtGox afhalen dan ze er op hadden staan, met MtGox als benadeelde.
Reply | Reply with quote | Quote
# Guest 2014-02-24 13:10
De oplossing die MtGox voorstelt is om een speciale transactie-ID te definiëren die alleen wordt berekend op basis van de transactie zelf (ZONDER de handtekening: dan zorgt het veranderen van de handtekening niet meer voor het veranderen van de transactie-ID.

Ik weet niet of ik nou zo blij word van die oplossing: ik zie op lange termijn meer in veranderingen in Bitcoin zelf die het onmogelijk maken om een handtekening te veranderen. Gedeeltelijk zijn zulke aanpassingen al aanwezig in Bitcoin, maar ze worden nog niet keihard gehandhaafd.

Op korte termijn moeten exchanges en andere handelaren gewoon software draaien die robuust is tegen aanpassing van de transactie-ID. Voor de standaard Bitcoin-Qt client is dit al het geval, maar MtGox gebruikte customized Bitcoin-softwar e gebaseerd op een oude versie, en die was niet robuust.
Reply | Reply with quote | Quote
# Guest 2014-02-23 16:57
MTGOX mail wallet is LEEG sinds: 06-02-2014 https://blockchain.info/nl/address/1LNWw6yCxkUmkhArb2Nf2MPw6vG7u5WG7q
Zogenaamd bankroet is meer de reden. :zzz
Reply | Reply with quote | Quote
# Roland (webmaster@bitcoinspot.nl) 2014-02-23 16:57
mtgox mail wallet ?
Reply | Reply with quote | Quote
# Guest 2014-02-23 12:51
Dat heb je goed omschreven Roland bedankt!
Reply | Reply with quote | Quote
# Roland (webmaster@bitcoinspot.nl) 2014-02-23 16:10
Graag gedaan!
Reply | Reply with quote | Quote
# Guest 2014-02-23 12:30
Dank voor de jip en janneke uitleg.
Was natuurlijk zelf weer in paniek geraakt en er eenzo voor 450 euro verkocht.
Inmiddels weer aan het bijkopen voor 460.

Hoe dom kan ik zijn?

Johan
Reply | Reply with quote | Quote
# Roland (webmaster@bitcoinspot.nl) 2014-02-23 16:05
Mijn strategie is om nooit in 1x alles te kopen of verkopen. Stukje bij beetje instappen, stukje bij beetje uitstappen. Over de lange termijn heb je daar meestal het meeste profijt van.
Reply | Reply with quote | Quote
# Guest 2014-02-23 01:43
Hoeveel duizenden mensen zijn dadelijk hun geld/coins kwijt als GOX om kiept?
Waarom gaat GOX 3 dagen geleden opeens verhuizen midden in die roerige tijden?
De waarde van de btc op GOX is inmiddels onder honderd Dollar, dat kan niet anders dan tot failliet leiden.
Die eigenaren van Gox kunnen maar alvast beter een samoeraizwaard halen, Harakiri is de enige uitweg.
Tijd van liegen en bedriegen is voorbij.
Reply | Reply with quote | Quote
# Guest 2014-02-23 11:36
Nou nou, niet zo voorbarig; inmiddels staat de koers alweer op USD 330,--
Reply | Reply with quote | Quote
# Guest 2014-02-22 19:40
Mooi artikel, wat ik me dan afvraag is hoeveel goedkope bitcoins Mt gox zelf heeft opgekocht aan een lage prijs op hun exchange van mensen die in paniek waren mocht alles nu terug goed komen. Het is wel een goede zaak dat er meer en meer alternatieven komen voor mt gox, dat zal de prijs op langere termijn zeker stabieler maken. En ervoor zorgen dat 1 enkele exchange de prijs niet kan manipuleren.
Reply | Reply with quote | Quote
# Guest 2014-02-22 14:49
Ik vraag me telkens af hoe die grote pieken kunnen ontstaan als je de wisselkoers statistiek bekijkt van uur tot uur. In 1 uur tijd kan de piek van 400 naar 700 euro schieten en weer terug naar 400. Kan iemand vertellen hoe dit kan? Zijn er dan ineens veel mensen die Bicoins kopen op dat moment? De verschillen zijn zo groot dat zie je op geen enkele beurs statistiek volgens mij.
http://www.bitcoinspot.nl/menu-wisselkoersen/bitcoin-wisselkoers-euro.html
Reply | Reply with quote | Quote
# Guest 2014-02-22 15:49
bitcoin staat nog in de kinderschoenen dan gebeuren nou eenmaal dit soort pieken en dalen in de koers. Bovendien heb ik een artikel gelezen dat MtGox hun prijzen aan het manipuleren zijn, om angst en paniek te geven aan diegenen die bitcoins in de MtGox exchange hebben. Hopelijk zal MtGox gauw de "withdrawels" vrijgeven en dan nooit meer in MtGox je coins stallen.
Reply | Reply with quote | Quote
# Guest 2014-02-22 14:01
Eindelijk iemand kort maar krachtig. Die het licht in de tunnel Voorde kleine bitcoinspeler aan doet
Bedankt voor je artikel.
Reply | Reply with quote | Quote
# Guest 2014-02-22 12:06
en bitcoin overleefd het weer. Duidelijk dus dat bitcoin de toekomst is, hackers proberen van alles maar het protocol wordt met de dag sterker.
Reply | Reply with quote | Quote
# Guest 2014-02-22 11:39
Bedankt voor je uitleg. Ik ga overigens wel iets meer twijvels zetten bij het feit dat het systeem decentraal is; blockchain maakt toch een afhankelijke indruk van de keten, toch?
Verder heb ik wat coins bij mtgox, had verder nog geen ervaring ermee. Verwacht je dat wanneer mtgox bankrupt raakt is toch wel mogelijk maakt de coins terug te trekken?
Reply | Reply with quote | Quote
# Roland (webmaster@bitcoinspot.nl) 2014-02-23 16:06
het Bitcoin-netwerk zelf is zeker decentraal. De diensten eromheen zijn dat niet. Wil natuurlijk niet zeggen dat er geen decentrale exchange of blockchain,.inf o gemaakt zou kunnen worden.
Reply | Reply with quote | Quote
# Guest 2014-02-22 11:31
Zeer sterk het vermoeden dat Mt gox dus het paard van Troje is om de Bitcoin om zeep te helpen. Het zou dus goed mogelijk kunnen zijn dat Mt Gox in opdracht werkt -ofwel is opgezet- door een clubje bankiers. Kortom, nooit meer Mt gox gebruiken!! Bovendien maak ik helemaal geen gebruik van een exchange markt en niemand heeft al dat gespeculeer eigenlijk nodig om alleen maar meer te willen en constant met geld bezig te zijn. Je verliest de werkelijkheid uit het oog daarmee. Laten we de Bitcoin gewoon als middel gebruiken voor spullen of diensten te verhandelen onder elkaar. De rest is allemaal onzin met al dat stomme gestress op die beurzen, heb het altijd al onzin gevonden. En het beursprincipe stamt ook af van fiat geld met een egoistisch gecentraliseerd systeem. Een "meer willen maatschappij" past gewoon niet bij de Bitcoin in een gedecentralisee rd systeem. Mijn gevoel zegt.dat de "ikke wil meer maatschappij" tot het verleden gaat behoren en dat het ook niet meer gaat werken.
Reply | Reply with quote | Quote
# Guest 2014-02-22 10:34
Bedankt voor dit leuke en duidelijke artikel. Eindelijk begrijp ik klein beetje wat de malleability "bug" is.
Reply | Reply with quote | Quote

Add comment


Security code
Refresh