Actueel

Blog

Blockchain

Hoe werkt blockchain? Er is toenemende aandacht voor cryptocurrencies zoals Bitcoin. De toekomst zal uitwijzen of betalingsverkeer in de richting van cryptocurrencies gaat bewegen. Cryptocurrencies maken gebruik van blockchain. Blockchain is een interessant concept dat mogelijk breder toepasbaar is dan alleen voor cryptocurrencies. Maar hoe werkt blockchain eigenlijk? Dit artikel legt de basisprincipes uit.

De keten

Een blockchain bestaat, hoe kan het ook anders, uit een keten van blokken. Een blockchain wordt gebruikt om gegevens in op te slaan. De blokken worden door blokkoppen (headers) aan elkaar geregen tot een keten. Deze blokkoppen vormen de kern van de blockchain. Voor het aan elkaar rijgen van blokken worden hashes gebruikt. Een hash is een ‘controlegetal’ van gegevens. De blokkop bevat twee hashes: één van de in het blok opgenomen gegevens, en één van de blokkop van het vorige blok:

De hash

De juistheid van de gegevens wordt beschermd door het ‘controlegetal’ in de vorm van de hash. Om te voorkomen dat gegevens in een blok worden gemanipuleerd dient het algoritme gegarandeerd een andere hash te leveren bij andere gegevens. Het SHA (Secure Hashing Algorithm) algoritme is hier bijzonder geschikt voor. SHA1 is veilig, maar SHA2 is beter en kent de mogelijkheid om de lengte van het controlegetal te kiezen. Zo wordt SHA256 veel gebruikt, dat is het SHA2 algoritme met een lengte van 256 bits, ofwel 32 bytes.

Het SHA algoritme heeft de bijzondere eigenschap dat het relatief eenvoudig is de hash te berekenen. Het algoritme is in minder dan 100 regels broncode uit te programmeren. Het is daarentegen praktisch gezien onmogelijk om een blok gegevens na een wijziging zo te manipuleren dat het SHA algoritme dezelfde hash oplevert. Ongeacht de omvang van het blok gegevens kan met 32 bytes worden gevalideerd dat er geen wijziging in heeft plaatsgevonden. De enige bekende methode is brute force, ofwel ‘uitproberen’. Bij 256 bits zijn er 1,1579 x 1077 mogelijkheden. Momenteel kan de meest geavanceerde hardware ongeveer 1,4 x 1013 hashes per seconde uitrekenen.  Een miljard van deze apparaten komen in 100 jaar nog niet verder dan 4,4 x 1031 mogelijkheden. Het algoritme is daarmee goed toekomstbestendig.

Beveiliging

In elke blokkop wordt niet alleen de hash van de gegevens, maar ook van de vorige blokkop opgenomen. Daarmee beveiligt elke blokkop niet alleen dat ene blok, maar ook de gehele keten tot aan dat blok. Omdat over tijd er steeds meer blokken aan de keten worden geregen wordt elk blok met de tijd steeds ‘dieper’ begraven in de keten. Daarmee wordt met het verstrijken van de tijd steeds moeilijker gegevens te manipuleren. Om te manipuleren moeten immers alle blokkoppen die daarna zijn toegevoegd worden aangepast.

Dat naarmate gegevens worden toegevoegd, ‘oude’ gegevens steeds beter worden beveiligd is een interessante eigenschap. Traditionele encryptie werkt met een geheime en publieke sleutel. De veiligheid van gegevens is afhankelijk van de bescherming van de geheime sleutel. Een geheime sleutel heeft het risico dat hij gecompromitteerd raakt, bijvoorbeeld doordat hackers de sleutel bemachtigen. Bij traditionele encryptie is het daarom gebruikelijk sleutels maar een beperkte tijd te gebruiken en is daarom te voorzien van een beperkte geldigheid. In feite worden ‘traditioneel’ gezien versleutelde gegevens met de tijd steeds onveiliger, dit geld ook voor gegevens die zijn voorzien van een digitale handtekening. Door de wijze waarop blockchain is opgezet, worden gegevens met de tijd juist veiliger. Dat is een belangrijk verschil tussen traditionele cryptografische beveiliging met sleutels en beveiliging met een blockchain.

Netwerk

Een ander interessant aspect aan de blockchain is de mogelijkheid om deze te laten functioneren zonder een centrale voorziening. Elke partij die deelneemt aan de blockchain heeft een kopie van de volledige keten. Elke partij heeft de mogelijkheid om een blok toe te voegen aan de keten en dit te communiceren naar andere partijen die dat blok ook toevoegen aan hun kopie. Indien twee partijen tegelijk ieder een blok toevoegen aan hun eigen kopie, moet wel worden bepaald wie ‘wint’, ofwel wiens blok door andere partijen en in het netwerk worden opgenomen. Dit kan vrij eenvoudig worden opgelost door de laagste hash-waarde te laten winnen. Het blok van de ‘winnende’ partij wordt door het gehele netwerk toegevoegd. Het blok van de ‘verliezende’ partij wordt niet toegevoegd, deze partij kan het opnieuw proberen door het blok weer bovenop het winnende blok te plaatsen.

Een partij kan de kans om te ‘winnen’ vergroten door kleine variaties aan te brengen in de blokkop. Door heel veel variaties uit te proberen vergroot hij de kans om een lage hashwaarde te vinden en daarmee te winnen bij een conflict. Dit proces wordt mining genoemd. Om de snelheid te beperken waarmee partijen in het netwerk blokken kunnen toevoegen, kan er ook een maximumwaarde voor de hash worden vastgesteld. Een partij moet dan minen totdat hij een hash heeft gevonden onder het maximum, pas dan mag hij een blok toevoegen. Blokken met een hogere hash worden door andere partijen in het netwerk sowieso niet geaccepteerd. Als toevallig twee partijen een blok willen toevoegen wint het blok met de laagste hash.

Bij bitcoin wordt de maximum hashwaarde elke twee weken bijgesteld om een snelheid van één blok per 10 minuten te bereiken, ofwel 20.160 blokken per twee weken. Zetten deelnemende partijen meer rekenkracht in, dan worden er in twee weken meer dan 20.160 blokken gevonden. Daarop wordt de moeilijkheidsgraad verhoogd door de maximum hashwaarde te verlagen. Omgekeerd wordt de maximum hashwaarde verhoogd (het wordt makkelijker om hashes te vinden) als er in twee weken minder dan 20.160 blokken aan de keten zijn toegevoegd.

Tot slot

Blockchain kent twee interessante eigenschappen: het beveiligen van gegevens en het functioneren in een netwerk van partijen zonder centrale voorziening. Later zal ik mogelijk ingaan op de consequenties van deze aspecten, in een volgend artikel ga ik in op de combinatie van blockchain en persoonsgegevens. 

Onderwerpen: Blockchain, Cryptocurrencies, Hash