Discussie: Blockchain
Los bericht bekijken
Oud 17 juni 2018, 15:27   #22
patrickve
Secretaris-Generaal VN
 
patrickve's schermafbeelding
 
Geregistreerd: 24 februari 2009
Locatie: Grenoble, Frankrijk
Berichten: 111.429
Standaard

Ik zou toch een paar heel gangbare misverstanden over "block chain" en dergelijke willen rechttrekken hier, want er wordt daar nogal veel zever over verteld en er worden magische eigenschappen aan block chains toegekend die gewoon onwaar zijn. Zo denkt men soms dat een block chain een technologie is die het toelaat om een uniek, een onuitwisbaar, en onvervalsbaar en dergelijke meer openbaar registraat te bekomen. Dat is gewoon fout. Niks is irreversiebel, onuitwisbaar,.... met een block chain dat het ook niet zou zijn zonder zulk systeem. Maw, het is iets dat zwaar overgehyped is.

Wat de meest bekende cryptomunten laat functioneren, is niet zozeer het block chain concept als dusdanig, maar wel het (verfoeilijke) proof-of-work principe. Het block chain concept maakt het gewoon iets practischer, maar heeft niks essentieels. Het is nu een geweldige hype om block chain blabla te verkopen alsof het het negende wereldwonder is, maar het is een techniek die niet werkt zoals men stelt dat het werkt.

Even een paar dingen op een rij zetten. Er zijn twee cryptografische noties die bij dat soort dingen een belangrijke rol spelen: dat zijn digitale handtekeningen, en cryptografische hashes.

Een cryptografische hash is een (groot) getal, dat je vrij gemakkelijk kan berekenen met een gekend algorithme, voor een gegeven data set. Maw, als een data set (een film, een document, een geluidsopname, gelijk welke file) gegeven is, dan is het een fluitje van een cent om daar een cryptografische hash van te berekenen, iedereen kan dat doen, en zal een zeker, groot getal vinden. Maar verander je 1 detail in die dataset, dan is het getal dat je zal berekenen, totaal anders. Een cryptografische hash is zo, dat het quasi niet te doen is om, gegeven een zeker getal, een document op te stellen dat dat getal zal opleveren als je er de hash functie op toepast.

Maw, als ik de cryptografische hash van een document ken, en men geeft mij een document, dan kan ik, door de hash van dat gegeven document te berekenen, en vast te stellen dat het hetzelfde getal is als de hash die ik al had, zeker zijn dat ik met het originele document te maken heb waar die hash mee berekend werd. Geen kat die weet hoe een vals document te maken dat toch dezelfde hash zou opleveren. Ik weet ook dat de persoon die mij die hash gaf in 't begin, dus in het bezit moest zijn van dat document.

Een digitale handtekening lijkt op een cryptografische hash, maar er is een verschil. Een cryptografische hash kan door iedereen berekend worden. Voor een digitale handtekening, moet ik eerst een sleutelpaar opstellen: een geheime, en een publieke sleutel. Een digitale handtekening van een document is een soort van hash, maar die enkel maar berekend kan worden met de geheime sleutel, en die geverifieerd kan worden met de publieke sleutel.

Maw, als ik dus een sleutelpaar ontwerp, en de geheime sleutel geheim houdt, en de publieke, publiek stel, dan kan ik een document "ondertekenen" (ttz een groot getal berekenen) met de hulp van mijn geheime sleutel, en iedereen kan verifieren, met de hulp van de publieke sleutel, en het document, dat die handtekening klopt (ttz, dat de enige persoon die die handtekening kon zetten, iemand was die over exact hetzelfde document beschikte, en ook over de geheime sleutel die met die publieke sleutel gepaard gaat).

En wat is nu een block chain ? Een block chain is niks anders dan een hele rij documenten, waarbij elk volgend document, de hash bevat van het vorige document (behalve het allereerste document in de rij).

Het volstaat dat ik de laatste hash van het laatste document in de rij heb, en er is maar exact een rij documenten die dat kan opleveren. Immers, er is exact 1 document dat die laatste hash oplevert. Maar dat unieke document bevat de hash van het voorlaatste document. Er is dus ook exact een voorlaatste document. Maar dat unieke voorlaatste document bevat de hash van het document daarvoor. Dat is dus ook uniek. En zo voort, tot aan het tweede document, dat uniek is, en de hash bevat van het eerste document, dat dus ook uniek is.
Als ik de laatste hash dus heb, kan ik nagaan dat een rij documenten die men mij geeft, wel degelijk de "juiste" zijn. Geen letter kan veranderd worden in geen enkele van die documenten.

Maar in de grond is dat niet anders dan al die documenten in 1 grote zip file stoppen, en mij daar de hash van geven. Dan zijn alle documenten ook uniek.

Het (enige) voordeel van een block chain over zo een zip file, is dat het gemakkelijker is om er nieuwe documenten op het einde bij te doen. Immers, ik kan de rij documenten tot aan het punt n behouden, die laatste hash in het nieuwe document schrijven, de nieuwe n+1 hash berekenen, en klaar. Dat is minder werk dan een nieuwe zip file met n+1 documenten maken. Maar cryptografisch is er geen verschil.

Echter, niks belet mij van U te belazeren, als ik de bron ben van de "huidige hash waarde". Dan kan ik immers een totaal andere "block chain" maken, die op een totaal andere hash uitkomt, ik geef U die, en jij kan verifieren dat dat klopt. Maar hoe weet jij dat het de "echte, originele" is ?

Dit is het fundamentele probleem met een block chain: jaja, je kan verifieren dat de hash klopt, maar iedereen kan zo een chain maken, en U die hash geven, en die gaat kloppen. Om de authenticiteit van de chain te kennen, moet je de JUISTE hash kennen, en hoe leer je die ?

Je kan ofwel een centrale autoriteit vertrouwen, die U zegt dat DAT de hash is van de chain. Maar dan kan je evengoed die autoriteit vertrouwen als die U de chain geeft. Het enige voordeel is dat de hash kleiner is dan alle documenten ; maar dat is ook zo voor een hash van een zip file. We winnen dus niks met een "block chain".

Oftewel doe je zoiets als in bitcoin, ethereum, monero en nog vele andere: aan elk document vraag je van een ingewikkeld wiskundig probleem op te lossen dat veel rekenwerk vraagt. Om een valse block chain te verspreiden, moet je dus al dat rekenwerk overdoen. Dat is in principe geen probleem, aangezien dat al minstens een keer is gebeurd. Als het probleem al 1 keer werd opgelost, kan het toch een tweede keer opgelost worden, vooral als de techniek evolueert. Bitcoin werkt, omdat de KOST van die berekening zodanig hoog is, dat het gewoon de moeite niet waard is. Maar dat wil zeggen dat bitcoin zodanig veel waarde moet verspillen dat de kost om een document te veranderen (door de hoge kost van de berekening) het de moeite niet waard maakt om het te doen.
Dat principe is "proof of work".

Het is dat principe, en niet het "block chain" idee, dat bitcoin (voorlopig) laat werken. De prijs hiervoor is dat bitcoin ongeveer evenveel stroom moet verbruiken als Denemarken (een beetje minder dan Belgie). De dag dat bitcoin de hele wereldeconomie overneemt, moet het bitcoin netwerk meer energie gaan verbruiken dan de mensheid op dit ogenblik produceert. Er zal dan geen stroom meer overblijven om nog iets anders te doen dan die ingewikkelde berekeningen maken, gewoon omdat de KOST van die berekeningen hoog genoeg moet zijn. Als die kost niet hoog genoeg is, dan wordt het lucratief om (een deel van) de bitcoin block chain te herrekenen, en dan stuikt het ganse ding in elkaar.

Maw, de irreversibiliteit en onuitwisbaarheid van zo een "block chain" komt niet van het block chain principe, maar van het domme feit dat men resultaten toont van berekeningen die veel geld kosten om ze te maken. Het is perfect mogelijk om die een tweede keer te doen, maar het is gewoon de moeite niet waard, vandaar dat het niet gebeurt.

De andere manier om zoiets te doen, is mensen te vertrouwen, en in plaats van hashes te gebruiken, gaat men digitale handtekeningen gebruiken. Men kan ook digitale handtekeningen gebruiken in plaats van "moeilijke berekeningen". Dan heeft men geen kosten. Maar dan kunnen de mensen die de geheime sleutels hebben, naar believen een nieuwe chain opstellen.

Proof of work is bijzonder duur. Het is dus geen techniek die men goed kan aanwenden voor verschillende dingen: het enige dat de uniciteit garandeert is dat de techniek zo duur is, en zoveel kost, dat een vervalser het de moeite niet vindt om dezelfde kosten te maken. Maar de kosten moeten dus wel degelijk gemaakt worden. Dat is een heel verspillende, en alles behalve rendabele manier om iets te bewijzen.

En als men aan andere technieken gaat denken, dan komt men eigenlijk al uit waar men al was: men dient vertrouwen te hebben in zij die hun handtekening plaatsen. Maar dan veranderen we niks in de grond.

En in al dat heeft het concept van 'block chain' zelf maar weinig te maken.

Much ado about nothing.
patrickve is offline   Met citaat antwoorden