Wat is een Hash?

De blockchain wordt gezien als een ontzettende veilige technologie. Er is dus ook vrijwel geen kans dat iemand gegevens uit het verleden kan veranderen, waardoor dubbele uitgaven voorkomen kunnen worden. Dat dit mogelijk is, komt mede doordat de gegevens op een blockchain worden gehashed.

We kunnen daarom ook wel zeggen dat hashing de sleutel is tot de betrouwbaarheid van de blockchain. Maar hoe werkt dat eigenlijk?

Wat is hashing?

Hashing is het proces waarbij een invoer van willekeurige lengte wordt omgezet in een vast cryptografisch resultaat met behulp van een wiskundig algoritme. Er zijn ontzettend veel verschillende van dit soort algoritmes, waarbij de een veiliger is dan de andere. Bitcoin gebruikt bijvoorbeeld het SHA-256 algoritme.

In principe kan alles worden gehashed. Denk bijvoorbeeld aan een bericht, afbeelding of een blok op de blockchain. Zo‘n blok bevat immers ook gewoon informatie.

Wat maakt een hash zo veilig?

Door middel van hashing wordt de veiligheid van de blockchain aanzienlijk verhoogd. Wanneer je een hash ziet, is het namelijk onmogelijk om te weten welke informatie erachter zit, en hoe groot deze informatie is. Maar dat is niet het enige wat een hash zo veilig maakt.

Een hash is ook veilig doordat zelfs de kleinste verandering aan de inhoud, voor een volledig andere hash zorgt. Als een kleine verandering slechts een klein verschil zou maken, zou het veel gemakkelijker zijn om te bepalen hoe de inhoud eruitziet. Hoe efficiënter en complexer het hashing-algoritme, hoe groter het effect van een verandering van de inhoud op de hash.

Hoe maakt blockchain gebruik van hashing?

De blockchain maakt gebruik van hashing, om zo alle gegevens te kunnen beveiligen tegen invloeden van buitenaf. Je kunt dus niet direct zien wat er op de blockchain gebeurt. De inhoud van alle blokken zijn gehashed, waardoor je ook de transacties niet zomaar kunt bekijken.

Zoals we net al zeiden, resulteert zelfs de kleinste verandering van de inhoud in een totaal andere hash. Dat zorgt ervoor dat de blockchain een veilige plek is, en dat blokken aan elkaar gelinkt kunnen worden.

Miners zijn bezig om transacties te controleren op de blockchain. Wanneer een transactie niet goedgekeurd kan worden, zal deze niet worden toegevoegd aan de blockchain. Echter, wanneer een transactie wel valide is, zal deze worden meegenomen in het nieuwe blok dat aan de blockchain wordt toegevoegd.

Misschien is het je wel bekend dat het eerste blok van de blockchain het Genesis-blok wordt genoemd. Dit blok is gehashed, net zoals alle andere blokken op de blockchain. Dit is echter het begin voor de rest van de blokken en zijn hashes.

De hash van het eerste blok wordt namelijk opgeslagen in het blok dat hierna komt. En het blok dat daarna aan de blockchain wordt toegevoegd, bevat ook de hash van het vorige blok. Op deze manier ontstaat er dus een keten van blokken, wat we de blockchain noemen. Iedere node heeft een kopie van de blockchain.

Wanneer iemand probeert om de inhoud van een blok aan te passen, zal er dus een nieuwe hash ontstaan. Omdat het blok daarna de hash van het oorspronkelijk vorige blok in zich heeft, zal er worden opgemerkt dat er iets niet meer klopt. Alle nodes in het netwerk weten dan dat er iemand is die de geschiedenis van de blockchain heeft proberen aan te pakken.

Ieder blok verwijst dus via zijn hash terug naar de hash van het vorige blok. Dat is precies de reden waarom transacties als veilig worden beschouwd, wanneer ze op de blockchain staan opgeslagen.

Dit zou wel mogelijk zijn wanneer gegevens op een centrale plaats worden opgeslagen, zoals een server. Er is dan namelijk niet een netwerk dat direct een fout zou opmerken omdat er een hash is aangepast.

Verschillende hash-algoritmes en hun veiligheid

Er zijn veel verschillende soorten hashing algoritmes waar blockchains gebruik van kunnen maken. Dit komt doordat de technologie zelf niet nieuw is. Al sinds het ontstaan van de eerste computers, zijn er ook hashing algoritmes bedacht. Hashes worden namelijk ook gebruikt om bijvoorbeeld wachtwoorden van websites mee te beveiligen.

Het is in de afgelopen jaren ook al een aantal keer gebeurd dat zo‘n algoritme is gekraakt. Dat gebeurt wanneer iemand erachter komt hoe het algoritme werkt. Zolang een algoritme niet is gekraakt, kan het dus als veilig worden beschouwd.

MD5

Het bekendste hashing-algoritme is waarschijnlijk MD5. Dit algoritme wordt veel gebruikt voor het opslaan van wachtwoorden. Toch wordt het als een onveilig algoritme beschouwd, omdat bleek dat er een hoop fouten in het ontwerp van dit algoritme zitten.

SHA-1

Bitcoin maakt gebruik van het SHA-256 algoritme voor de encryptie. SHA-1 is een voorloper op dit algoritme, en wordt al enkele jaren als onveilig beschouwd. Het was namelijk mogelijk om een Shambles aanval uit te voeren op dit algoritme, waardoor het net zoals MD5 niet meer veilig te gebruiken is.

Het is niet raar dat deze algoritmes als onveilig worden gezien, omdat ze al in de jaren 90 zijn bedacht. Hoe meer tijd hackers hebben, hoe groter de kans is dat ze het algoritme kraken. Daarom worden er continu nieuwe en complexe algoritmes bedacht, waarvan het vrijwel onmogelijk is om ze te kraken. Van sommige algoritmes is het bekend dat er miljoenen jaren nodig zijn om het te kunnen kraken.

Voornamelijk nieuwe blockchains maken gebruik van deze nieuwe en complexe hashing-algoritmes, omdat deze een stuk veiliger zijn. Op het moment dat het algoritme wordt gekraakt, betekent dat namelijk ook het einde van de blockchain. Het is daarom belangrijk dat zo‘n algoritme duurzaam is, zodat de blockchain voor lange tijd mee kan gaan.

Wat is een TXID?

Een TXID is een transactie-ID, die wordt verkregen door hashing van transactiegegevens (zoals het verzonden bedrag, het ontvangende adres, de tijdstempel, etc.). Deze verschijnt in een reeks cijfers en letters, waarmee een uitgevoerde transactie kan worden geïdentificeerd en bevestigd.

Wat zijn Merkle Trees?

Een Merkle Tree (ook wel bekend als een hash tree) is een hash datastructuur die wordt gebruikt om gegevens op een blockchain op een veilige en efficiënte manier op te slaan. Het concept werd gepatenteerd door Ralph Merkle in 1979.

Het systeem werkt door bloktransacties uit te voeren met behulp van een algoritme dat een hash genereert, om zo de geldigheid van die gegevens te verifiëren op basis van de oorspronkelijke transacties.

Een heel blok met transacties wordt niet tegelijk aan een hash-functie onderworpen. Daarentegen wordt elke transactie gehashed, waarbij deze transacties aan elkaar worden gekoppeld en samen worden gehashed. Uiteindelijk zorgt dit voor een enkele hash voor het hele blok.

De structuur lijkt op die van een boom, aangezien elk blok gewoonlijk honderden, zo niet duizenden transacties bevat. De hashes op de onderste rij worden ‘bladeren‘ genoemd, terwijl de hashes in het midden de ‘takken‘ worden genoemd, met de hash bovenaan als de ‘wortel‘.

Merkle trees zijn bijzonder nuttig omdat ze iedereen toelaten de geldigheid van een individuele transactie te bevestigen zonder een volledige blockchain te moeten downloaden.

Merkle trees en hashes zijn een sleutelelement om de blockchaintechnologie te laten functioneren en tegelijk de veiligheid, integriteit en onweerlegbaarheid te waarborgen. Samen met de consensus algoritmes zijn het de belangrijkste aspecten die zorgen voor de veiligheid van de blockchaintechnologie.