Inhoudsopgave
les 9
Zijn openbare blockchains veilig?
Zijn openbare blockchains veilig?

11 min leestijd

Bijgewerkt

Zijn openbare blockchains veilig?

Openbare blockchains kunnen door iedereen gebruikt worden. Er zijn geen regels voor deelname aan de blockchain, hierdoor kan kan het snel groeien en is de blockchain decentraal.

Aan de andere kant betekent dit ook dat een groot netwerk van verschillende computers verantwoordelijk is voor het bewaren van data en uitvoeren van transacties. Dit kan vragen oproepen over de veiligheid van openbare blockchains, omdat de data immers op veel computers te vinden is.

Het grote netwerk van de blockchain zorgt ervoor dat er geen single-point-of-failure is. Wanneer een webserver wordt aangevallen, is de website die hierop staat niet meer bereikbaar. Mocht één node worden aangevallen, betekent dit niet dat de blockchain niet meer bereikbaar is. Het netwerk bestaat namelijk uit duizenden computers. Deze moeten allemaal onbereikbaar zijn om de blockchain tot stilstand te brengen. De kans dat dat gebeurt, is ontzettend klein.

Wat is een openbare blockchain?

Een openbare blockchain (public blockchain in het Engels) is een blockchain die openbaar en door iedereen te gebruiken is. Dit houdt in dat gebruikers transacties uit kunnen voeren zonder hier toestemming voor te vragen. Ontwikkelaars kunnen in dat geval ook een applicatie ontwikkelen op de blockchain, mits de blockchain hiervoor geschikt is. Dit is alleen het geval wanneer de blockchain ondersteuning aan smart contracts biedt, zoals bij Ethereum.

Openbare blockchains zijn altijd open-source. Dat betekent dat de code van de blockchain openbaar is en mensen het recht hebben om de code te kopiëren, hergebruiken of aan te passen. Omdat de blockchain open-source is, is het ook mogelijk dat er verschillende versies van een blockchain ontstaan.

Bitcoin is een voorbeeld van een openbare blockchain. Iedereen heeft de mogelijkheid om een transactie op de blockchain uit te voeren. Gebruikers worden niet van te voren goedgekeurd.

Omdat iedereen kan deelnemen, zijn er regels opgesteld. Het consensus algoritme zorgt ervoor dat de deelnemers van de blockchain zich houden aan de vooraf opgestelde regels. Wanneer dat niet gebeurt, worden gebruikers automatisch gestraft. De straf verschilt per blockchain. Zo kan er een boete opgelegd worden, maar kan de gebruiker ook verbannen worden.

Doordat iedereen deel kan nemen aan een openbare blockchain, zijn de meeste netwerken erg gedecentraliseerd. Er zijn immers geen regels om deel, waardoor het netwerk vaak groot is.

Een gedecentraliseerd netwerk bestaat uit een groot aantal apparaten dieallemaal met elkaar in verbinding zijn. Dit in tegenstelling tot een gecentraliseerd netwerk, dat maar uit één of enkele apparaten bestaat. Denk bijvoorbeeld aan een webserver, dat een single-point-of-failure heeft: zodra de webserver door een aanval wordt uitgeschakeld zijn de websites die hierop staan voor niemand bereikbaar.

Blockchains hebben geen single-point-of-failure omdat meerdere apparaten uitgeschakeld moeten worden voordat de blockchain niet meer werkt.

Het verschil tussen openbare en private blockchains

De private blockchain is een ander type blockchain. Zoals de naam al zegt, is dit type blockchain niet openbaar en kan niet iedereen deelnemen. In plaats daarvan worden deelnemers gekeurd of zorgen de ontwikkelaars van de blockchain zelf voor het netwerk.

Private blockchains worden voornamelijk gebruikt door bedrijven, organisaties en overheden. Zo zou een groot bedrijf dat verschillende locaties heeft een private blockchain kunnen opzetten, waarbij iedere locatie een eigen server heeft die deel uitmaakt van de blockchain.

De servers zijn met elkaar verbonden en hierdoor wisselen de verschillende locaties snel en veilig data met elkaar uit. Het belangrijkste voordeel van een private blockchain is de veiligheid. Omdat het netwerk volledig is afgeschermd, kan de ontwikkelaar het netwerk van de blockchain zelf opzetten. Andere apparaten hebben geen toegang tot het netwerk, waardoor de gegevens op de blockchain in veilige handen zijn.

Hybride blockchains

Dan zijn er ook hybride blockchains: een combinatie tussen openbare en private blockchains. De blockchain is in dit geval niet geheel afgesloten van de buitenwereld, al kan niet iedereen zomaar deelnemen. 

In plaats daarvan kunnen nodes zich aanmelden om mee te doen aan het netwerk, ze moeten goedgekeurd worden om toegang te krijgen. Dit gebeurt met een stemming. Het kan ook zijn dat een aantal mensen, zoals de ontwikkelaars van de blockchain, deze nodes handmatig uitzoeken.

Het kiezen van de nodes in het netwerk, zorgt ervoor dat alleen de beste nodes in het netwerk draaien.

Zijn openbare blockchains veilig?

In tegenstelling tot een private blockchain, kan iedereen het netwerk van een openbare blockchain betreden. Zijn de gegevens en cryptocurrency’s dan wel veilig?

De veiligheid van een openbare blockchain wordt voornamelijk bepaald door de manier waarop het is ontwikkeld. Ontwikkelaars kunnen hiervoor verschillende technieken gebruikenn.

Er zijn vier kenmerken die de veiligheid van een openbare blockchain garanderen:

  • Cryptografie
  • Onomkeerbaarheid
  • Decentralisatie
  • Consensus algoritme

Deze vier kenmerken zorgen ervoor dat de blockchain als één van de veiligste technologieën van dit moment wordt gezien. Dat geldt niet alleen voor private blockchains, maar ook openbare blockchains.

Cryptografie

Alle transacties die op de blockchain worden uitgevoerd, zijn ondertekend met een digitale signature. Dit kan wanneer een gebruiker in bezit is van een public en private key die bij elkaar horen.

Op het moment dat een gebruiker een transactie wil uitvoeren, heeft de gebruiker het wallet adres van de ontvanger nodig. Vervolgens geeft hij aan hoeveel cryptocurrency’s hij wil verzenden. Deze transactie ondertekent hij met zijn public en private key. Het ondertekenen houdt in dat de transactie met een versleutelingsmechanisme wordt omgezet naar een cijfertekst: de digital signature.

De cijfertekst is te vergelijken met een geheimschrift. Niemand heeft iets aan de cijfertekst wanneer ze niet in het bezit zijn van de juiste public en private key. De ontvanger kan deze cijfertekst wel ontcijferen, omdat hij in het bezit is van de sleutels die horen bij de rechtmatige ontvanger van de transactie.

Het netwerk van de blockchain controleert of de public en private keys kloppen. Dit bepaalt mede of een transactie uitgevoerd wordt..

De nodes in het netwerk kunnen niet in de transactie kijken, omdat zij nietbeschikken over de private keys van de verzender of ontvanger.

Met cryptografie wordt ervoor gezorgd dat alleen de  personen die hier recht toe hebben bij de inhoud van een transactie kunnen komen. Dit is één van de belangrijkste onderdelen die de openbare blockchain veilig maakt.

Als iemand onterecht in het bezit komt van de private keys kan het wel fout gaan. Het is daarom belangrijk om nooit je private keys te delen met anderen.

Onomkeerbaarheid

Zodra een transactie is goedgekeurd, wordt deze in een blok toegevoegd aan de blockchain. Het is hierna onmogelijk om de transactie nog te wijzigen. Alles dat op een blockchain is opgeslagen, blijft opgeslagen. De blockchain is namelijk onomkeerbaar.

Bij het klaarmaken van een blok, wordt het blok omgezet naar een hash. Dit wordt vaak vergeleken met versleuteling, al is dit niet hetzelfde. Bij het hashen wordt de data omgezet naar een cijfertekst, alleen gebeurt dit maar één kant op. De data kan dus wel versleuteld, maar niet ontsleuteld worden. 

Hoe de hash van een blok eruit ziet, is volledig afhankelijk van de inhoud van het blok. Zelfs wanneer er maar één bit in het blok wordt gewijzigd, ziet de hash er compleet anders uit.

Ieder blok bevat de hash van het vorige blok. De blokken zijn hierdoor allemaal in een ketting met elkaar verbonden, wat de naam ‘blockchain’ verklaart. Als iemand de inhoud van een blok aanpast, verandert ook de hash van dit blok. Dit zorgtl ervoor dat de hash in het volgende blok ook niet meer klopt, waardoor er een breuk ontstaat. Het netwerk zal meteen merken wanneer iemand de geschiedenis van de blockchain aanpast. Deze versie wordt dan ongeldig verklaard.

Een aanvaller kan alle blokken die hierna komen, aanpassen.Zo kloppen de hashes nog steeds en zijn er geen breuken in de blockchain. De meeste blockchains bestaat echter uit veel blokken, waardoor het praktisch onmogelijk is om dit uit te voeren.

Zo worden er aan de blockchain van Bitcoin iedere dag ongeveer 144 blokken toegevoegd. Als een aanvaller een blok wilt aanpassen dat zeven dagen geleden aan de blockchain is toegevoegd, zullen de 1008 blokken hierna ook aangepast moeten worden. De energie die hiervoor nodig is, maakt het bijna onmogelijk om dit te realiseren.

Decentralisatie

Het netwerk van een openbare blockchain is gedecentraliseerd. Dit betekent dat het netwerk uit meerdere computers bestaat die met elkaar verbonden zijn. Soms zijn dat er wel duizenden . 

Door de decentralisatie is er geen single-point-of-failure meer, waar centrale servers wel last van hebben. Als een webserver wordt aangevallen door een groep hackers, kan niemand de website die verbonden is aan de  server  nog bezoeken. De webserver heeft dus een single-point-of-failure. Hackers hoeven alleen de webserver uit te schakelen om een website uit de lucht te halen.

Iedere computer in het netwerk heeft een kopie van de blockchain opgeslagen. Een hacker zou dus best één van deze nodes aan kunnen vallen en uitschakelen. Er blijven dan nog duizenden andere nodes over die de blockchain draaiende houden. De hacker moet alle nodes aanvallen om de blockchain uit te schakelen. In het geval van een groot blockchain-netwerk is dat vrijwel onmogelijk.

Consensus algoritme

Het consensus algoritme zorgt ervoor dat het netwerk van de blockchain zelfvoorzienend is. Alle nodes in het netwerk kennen het consensus algoritme en controleren elkaar op de naleving van deze regels.

Wanneer een node met opzet transacties valideert die ongeldig zijn, zullen andere nodes dit snel opmerken. Ze controleren elkaar namelijk op het werk dat ze uitvoeren. Wanneer dit wordt opgemerkt, stemt het netwerk om te bepalen wat er gaat gebeuren. Hiervoor wordt het Byzantine Fault Tolerance (BFT) gebruikt.

Byzantine Fault Tolerance houdt in dat minimaal 51% van het netwerk het met elkaar eens moet zijn om iets uit te voeren. Mocht een node denken dat een andere node ongeldige transacties goedkeurt, zal 51% van het netwerk het hiermee eens moeten zijn. Wanneer dat het geval is, kan een node worden gestraft.

Hoe de straf eruit ziet, is afhankelijk van de blockchain. Iedere blockchain heeft hier namelijk andere regels voor. Zo kan de node uit het netwerk worden verbannen ofkan de node een boete opgelegd krijgen.

De kwetsbaarheden van blockchains

Het is onmogelijk om een systeem te ontwikkelen dat geen enkele kwetsbaarheid bevat. Dit komt omdat er verschillende ontwerpkeuzes gemaakt worden die de veiligheid van de blockchain bepalen.

Ontwikkelaars kunnen bijvoorbeeld de snelste blockchain ter wereld ontwikkelen door een specifieke techniek. Deze techniek kan ertoe leiden  dat de blockchain een kwetsbaarheid bevat op een ander vlak. De ontwikkelaar zal vervolgens moeten afwegen wat zwaarder weegt: de snelheid of de veiligheid van de blockchain.

Een goedwerkende blockchain voldoet over het algemeen aan drie kenmerken: snelheid, schaalbaarheid en decentralisatie. In de praktijk blijkt dat er vaak maar aan twee van deze kenmerken voldaan kan worden. Wanneer ontwikkelaars kiezen voor de snelheid en decentralisatie, loopt de blockchain achter op gebied van veiligheid. Dit probleem wordt ook wel het blockchain trilemma genoemd.

Dit is natuurlijk maar een voorbeeld, al geeft het wel aan dat ontwikkelaars van een blockchain zelf kunnen bepalen hoe veilig de blockchain is. Het maken van bepaalde ontwerpkeuzes kan problemen oplossen, maar er ook voor zorgen dat er nieuwe problemen ontstaan.

51% attack

De 51% attack is de bekendste kwetsbaarheid van blockchains. Het Byzantine Fault Tolerance bepaalt dat maar liefst 51% van het netwerk achter een keuze moet staan, voordat deze uitgevoerd kan worden. 

Een hacker kan ervoor zorgen dat hij 51% van het netwerk in handen krijgt. Dit kan een hacker doen door genoeg machines aan het netwerk toe te voegen waardoor meer dan 51% in zijn bezit is. Vervolgens wordt de blockchain compleet bestuurd door de hacker.

Het uitvoeren van een 51% attack is moeilijker dan gezegd. Het kost namelijk veel geld en energie om deze aanval succesvol uit te voeren.

De meeste blockchains hebben een groot netwerk waarmee ze zichzelf knen beschermen tegen een 51% attack. Het is vrijwel onmogelijk om meer dan 51% van het netwerk te bezitten wanneer het netwerk uit duizenden computers bestaat.

Finney attack

De Finney attack zorgt ervoor dat een hacker zijn cryptocurrency’s meerdere keren uit kan geven. Dat doet hij door een transactie te maken en deze vervolgens eerst zelf te valideren.

Hierna maakt hij de transactie nogmaals en stuurt deze richting het netwerk van de blockchain. Als het netwerk de transactie nogmaals goedkeurt, heeft de aanvaller dezelfde hoeveelheid cryptocurrency’s twee keer uitgegeven.

Sybil attack

Bij een Sybil attack maakt een hacker veel transacties aan die hij in korte tijd naar het netwerk stuurt. Dit aantal is zo groot dat het netwerk de transacties niet meer aan kan, waarna het crasht.

Het karakter van de Sybil attack lijkt veel op een DDoS (distributed denial of service) aanval, welke op centrale systemen uitgevoerd kan worden.

Diefstal van keys

Bij de diefstal van private- en public keys is niet het hele netwerk, maar een individuele gebruiker het slachtoffer. Wanneer een hacker in bezit komt van de public en private keys, kan hij zich voordoen als het slachtoffer. Zo kunnen alle cryptocurrency’s die van het slachtoffer zijn worden verzonden naar de wallet van de hacker.

Diefstal van private en public keys gebeurt vaker dan in eerste instantie gedacht wordt. In de meeste gevallen komen hackers met phishing achter de keys van het slachtoffer.

Het is daarom belangrijk om nooit zomaar op een link te klikken of een bestand te downloaden dat je niet vertrouwt. In het verleden is het al meerdere keren gebeurd dat er op deze manier malware werd geïnstalleerd. Zo konden ze  de private en public keys stelen zodra het slachtoffer gebruik maakte van de wallet.

Conclusie

Een openbare blockchain is anders dan een private blockchain. Deze is namelijk voor iedereen toegankelijk. Dat betekent dat iedereen een computer kan toevoegen aan het netwerk en een transactie uit kan voeren op het netwerk. Dit zorgt voor veel mogelijkheden, maar kan ook vragen over de veiligheid van de blockchain oproepen.

De veiligheid van openbare blockchains wordt bepaald door het ontwerp van de blockchain. Bepaalde keuzes die tijdens het ontwerp worden gemaakt, hebben verschillende voordelen, terwijl ze de veiligheid in het geding kunnen brengen.

Er zijn enkele kwetsbaarheden bekend waar blockchains last van hebben. De 51% attack is de belangrijkste kwetsbaarheid, waarbij een hacker meer dan 51% van het gehele blockchain-netwerk in bezit krijgt. Dit geeft de hacker de mogelijkheid om zelf te bepalen wat het netwerk doet. Denk hierbij aan het opzettelijk goedkeuren van ongeldige transacties.

Blockchains beschikken over vier kenmerken die ervoor zorgen dat ook de openbare blockchains als een veilige technologie beschouwd kunnen worden. Dit zijn cryptografie, de onomkeerbaarheid van de transacties, het decentrale netwerk en het consensus mechanisme.