Heb jij wel eens een transactie op de blockchain van Ethereum (ETH) uitgevoerd? Dan heb je gebruik gemaakt van het Keccak-256 hashing algoritme. Je vraagt jezelf misschien af: huh, heb ik dat echt gedaan? Jazeker, want voor het ondertekenen van een transactie op Ethereum maak je gebruik van Keccak-256.
Keccak-256 is een algoritme waarmee we informatie kunnen omzetten naar een onleesbare hash. Met een onleesbare hash bedoelen we een string karakters die je als een soort geheimschrift kunt zien. We kunnen een tekst met Kecccak-256 omzetten naar een set aan karakters waardoor de oorspronkelijke tekst geheim blijft.
Er zijn veel redenen om gebruik te maken van een hashing algoritme op een blockchain als Ethereum. Laten we snel eens gaan kijken naar wat Keccak-256 is en hoe dit hashing algoritme werkt.
Bekijk snel
Hoe werkt hashing?
Hashing is het coderen van data naar een hash. Dit betekent dat we een tekst omzetten naar een soort geheimschrift. Zo'n hash lijkt op het eerste gezicht uit een aantal willekeurig gekozen karakters te bestaan. Maar in werkelijkheid is dat helemaal niet zo willekeurig. Hoe de hash eruit ziet, wordt bepaald door het hashing algoritme dat men gebruikt. Zo'n algoritme zet een string volgens een bepaalde logica om naar een hash. Daarom zal dezelfde inhoud er altijd als dezelfde hash uitzien.
Bij een veilig hashing algoritme weet niemand hoe het algoritme daadwerkelijk werkt. Dit zorgt ervoor dat je de inhoud wel naar een hash kunt omzetten, maar dat je aan de hand van de hash niet de inhoud kunt bepalen. Er zijn ook een aantal algoritmes die in de loop der tijd zijn gebroken, zoals MD5. Bij deze algoritmes is het gelukt om de logica achter het algoritme te kraken, zodat de uitkomst kon worden omgezet naar de input. Waarom is dat zo erg? Het is dan niet meer mogelijk om data daadwerkelijk te beveiligen. Iedereen kan de data namelijk inzien. Op het internet zijn verschillende tools beschikbaar waarmee je MD5 hashes kunt terugzetten naar de inhoud.
Wil je meer weten over wat hashing is? Bekijk dan onderstaande video voordat je de verdere uitleg over Keccak-256 leest.
Wat is Keccak-256?
Keccak-256 is een hashing algoritme dat stamt uit de SHA-3 familie. Dit betekent dat het in veel opzichten dus op de SHA-hashing algoritme lijkt. Toch zijn er ook verschillen, vandaar dat ook de naam tussen de algoritmes van elkaar verschilt. Wat deze verschillen zijn, zullen we verder in dit artikel uitleggen.
Met Keccak-256 is het mogelijk om een input om te zetten naar een hash output. Deze output is altijd een vast lengte lang: deze bestaat uit 256 bits (bytes32). Keccak-256 is een one-way hash functie. Dit betekent dat de hash maar één kant op werkt. Je kunt de input dus omzetten naar een hash, maar het is niet mogelijk om aan de hand van de hash de inhoud te bepalen.
Het maken van de hash gebeurt niet middels sleutels. Wanneer data met een public en private key wordt beveiligd, spreken we over versleuteling of cryptografie. Vaak wordt cryptografie verward met hashing. Wel worden beide technieken voor cryptocurrencies gebruikt. Keccak-256 is namelijk het hashing algoritme van Ethereum (ETH). In onderstaande video van AllesOverCrypto leggen we meer uit over wat cryptografie is.
Hoe ziet een Keccak-256 hash eruit?
Hoe een hash eruit ziet, wordt bepaald door de inhoud die we hashen. Het hashing algoritme heeft een vaste wijze waarop het tekst omzet naar een hash. Hoe dat werkt, begrijp je misschien beter wanneer we het hashing algoritme eens gaan gebruiken om tekst om te zetten naar een hash. Wanneer we 'allesovercrypto' omzetten naar een Keccak-256 hash, zie de output er zo uit:
a33491cfc077ed1f79fe1083d781d7f7e102212a5364c03185a546e3771de174
Halen we één 'L' weg, dan blijft 'alesovercrypto' over, en ziet de Keccak-256 hash er zo uit:
46046425963cf996a77acb44a7c84c27dbfdb593c7203e1d45061f39de9ec9c8
Het valt je waarschijnlijk meteen op dat de output nog steeds uit 64 karakters (256 bits) bestaat, maar er compleet anders uitziet. Mede dit maakt Keccak-256 een veilig hashing algoritme. Wil je zelf een Keccak-256 hash maken? Dat kun je op een aantal verschillende websites doen, waaronder hier.
De Keccak-familie
Keccak-256 is onderdeel van de Keccak-familie. Naast Keccak-256 zijn er nog een aantal andere hashing protocollen die binnen de Keccak-familie vallen. Dit zijn:
- Keccak-224;
- Keccak-384;
- Keccak-512.
Wil je meer weten over Keccak-256? In onderstaande video wordt de werking van Keccak-256 uitgelegd.
Waar wordt Keccak-256 voor gebruikt?
Keccak-256 wordt voornamelijk en alleen gebruikt door Ethereum. We zien dat niet alleen centrale systemen gebruik maken van hashing algoritmes. Ook decentrale systemen, waar de blockchain tot behoort, maken gebruik van hashing protocollen. Dat is nodig, want op de blockchain wordt gevoelige data opgeslagen, net zoals op iedere andere centrale server of computer.
Wanneer we data ruw op een blockchain zouden bewaren, is het voor iedereen mogelijk om de data in te zien. Dat zou betekenen dat de data niet 100% beveiligd staat opgeslagen. In plaats daarvan is het beter om data gecodeerd op te slaan: je ziet dan alleen een hash staan. Aan de hand van deze hash kun je niet bepalen hoe de inhoud eruit ziet. Als buitenstaander heb je dus ook niks aan deze hash.
Waar algoritmes als SHA-256 vaak wordt gebruikt voor de opslag van wachtwoorden en het controleren van de integriteit van data, wordt Keccak-256 voornamelijk en alleen door de blockchain van Ethereum gebruikt.
Keccak-256: Het hashing algoritme van Ethereum (ETH)
Binnen de blockchain van Ethereum maakt men gebruik van het Keccak-256 hashing algoritme. In het specifiek wordt Keccak-256 binnen de Ethash engine van Ethereum gebruikt. Dat begint al bij Solidity; dit is de programmeertaal die ontwikkelaars gebruiken op de Ethereum-blockchain. Binnen deze programmeertaal moet een hash functie de data-input coderen. Dat is nodig om alle 'contract calls' (het aanroepen van een smart contract) aan de EVM te coderen. De EVM (Ethereum Virtual Machine) is de machine waar ontwikkelaars hun decentrale applicaties (dApps) ontwikkelen.
Ben jij technisch aangelegd? Dan is onderstaande video misschien wel interessant voor jou. In deze video legt een Ethereum-ontwikkelaar uit hoe hij het Keccak-256 algoritme binnen Solidity gebruikt.
Digitale handtekeningen
Wanneer we een transactie op de blockchain uitvoeren, ondertekenen we deze met een digital signature. Voor zo'n digital signature heb je een public key en een private key nodig. Door deze met elkaar te combineren, ontstaat er een nieuwe uitkomst. Deze uitkomst wordt beveiligd met Keccak-256. Het algoritme heeft dus een erg belangrijke rol binnen het uitvoeren van transacties.
De blockchain
Een blok bestaat uit een groot aantal transacties. Deze transacties zijn door de validators in het Ethereum-netwerk gevalideerd. Vervolgens worden de transacties samengevoegd en omgezet naar een hash. Dat gebeurt door middel van Keccak-256.
Voordat dat gebeurt, wordt eerst de hash van het laatste blok toegevoegd aan het nieuwe blok. Daarna wordt het nieuwe blok pas omgezet naar een hash. Hoe de hash eruit ziet, wordt namelijk bepaald door de inhoud van het blok. Mocht een crimineel/hacker ooit de geschiedenis van de blockchain willen wijzigen door een blok aan te passen, verandert de hash van het blok. Vervolgens veranderen alle hashes van de blokken die hierna zijn toegevoegd. Er ontstaat dan overduidelijk een breuk in de ketting.
Op het moment dat dit gebeurt, zullen alle nodes in het netwerk de breuk opmerken. De versie van de blockchain die is aangepast wordt dan niet overgenomen door de nodes. Hashing speelt dus een belangrijke rol binnen de veiligheid van de blockchain.
De voor- en nadelen van Keccak-256
Dit hashing algoritme kent zo zijn eigen voor- en nadelen. Het algoritme is hierdoor voor de ene toepassing meer geschikt dan voor de andere.
Voordelen
- Het heeft een oneindige invoerruimte. Dit maakt het voor ontwikkelaars mogelijk om grote hoeveelheden tekst te hashen met Keccak-256 (SHA-256 heeft bijvoorbeeld een maximale ruimte van 264 bits).
- De gehele hash komt er anders uit te zijn wanneer ook maar één bit aan data binnen de input wijzigt. Dit maakt een hash uiterst veilig, omdat het vrijwel onmogelijk is de logica achter het hashing algoritme te vinden.
- Het is vrijwel onmogelijk dat de output van data hetzelfde is, waardoor het uitvoeren van een brute-force aanval op Keccak-256 geen zin heeft.
- Computers en machines kunnen razendsnel Keccak-256 hashes maken, waardoor het algoritme een bijdrage levert aan de snelle werking van de decentrale applicaties die op de blockchain draaien.
- Keccak-256 wordt binnen Solidity gebruikt. Solidity is meest gebruikte en populairste programmeertaal voor dApps. Dit betekent dat het grootste gedeelte van de blockchain-ontwikkelaars gebruik kan maken van een veilig hashing algoritme zoals Keccak-256.
Nadelen
- Het is niet 100% zeker dat Keccak-256 altijd veilig blijft. In de toekomst zou een computer het algoritme kunnen breken, omdat computers steeds slimmer en sneller worden. Het is dus maar de vraag of we Keccak-256 altijd voor Ethereum kunnen blijven gebruiken. Ook weten we niet wat er gebeurt wanneer het algoritme breekt.
Hoe veilig is Keccak-256?
Op dit moment is Keccak-256 een veilig hashing algoritme. Het algoritme is namelijk nog nooit gebroken. Dat houdt in dat niemand er in is geslaagd om een hash terug te draaien naar de inhoud ervan. Op het moment dat data middels het Keccak-256 algoritme wordt omgezet naar een hash, kan de hash dus veilig opgeslagen worden.
Dat Keccak-256 zo veilig is, is natuurlijk niet geheel zonder reden. Er zijn verschillende redenen te bedenken waarom Keccak-256 zo veilig is:
- Dubbele output vrijwel onmogelijk - De kans dat een zogeheten 'collision' plaatsvindt is vrijwel nihil. Het aantal mogelijke uitkomsten is groter dan het aantal atomen in ons universum. Dit geeft aan hoe laag de kans op een collision is.
- Werkt één richting op - Je kunt informatie omzetten naar een hash, maar het is onmogelijk om een hash terug te zetten naar de inhoud. Dit betekent dat je de hash veilig kunt opslaan en niemand hier iets kwaadwillig mee kan doen.
- Eén wijziging zorgt voor een compleet andere hash - Ook wanneer je slechts één bit wijzigt, ziet de hash er compleet anders uit. Het is hierdoor onmogelijk om de logica achter het algoritme te ontrafelen.
Keccak-256 vs. SHA-256
Keccak-256 wordt door Ethereum gebruikt, terwijl SHA-256 door Bitcoin (BTC) wordt gebruikt. Ze worden beide als hashing algoritme gebruikt, al verschillen ze wel van elkaar. Laten we eens gaan kijken naar de belangrijkste verschillende tussen Keccak-256 en SHA-256.
- SHA-256 komt voort uit de SHA-2 standaard met een 256 bits sleutel, terwijl Keccak-256 een functie binnen Solidity is en voortkomt uit de SHA-3-familie.
- Keccak-256 is sterker dan SHA-256.
- SHA-256 genereert een SHA-256 hash, terwijl Keccak-256 een Keccak-256 hash genereert.
- Ethereum gebruikt Keccak-256 binnen zijn Ethash consensus engine, terwijl Bitcoin SHA-256 gebruikt voor het maken van transaction hashes en BTC mining.
Conclusie
Keccak-256 is het hashing algoritme van de Ethereum blockchain. Met dit algoritme wordt de data op Ethereum beveiligd. Een hashing algoritme zorgt ervoor dat informatie wordt omgezet naar een hash. Deze hash lijkt op een set willekeurige karakters, al is het eigenlijk helemaal niet zo willekeurig. Een algoritme bepaalt namelijk hoe de hash eruit ziet.
Het is onmogelijk om een hash terug te zetten naar de inhoud. Daarom kunnen we hashing alleen gebruiken om de output ervan (de hash) te vergelijken met elkaar. Zo weten we of de inhoud gelijk is, zonder de inhoud daadwerkelijk op te halen. Wanneer ook maar één bit er anders uitziet, ziet ook de gehele hash er anders uit. Dit maakt een hashing algoritme zoals Keccak-256 veilig.
Ben je op zoek naar meer informatie of heb je nog vragen over Keccak-256 of andere crypto onderwerpen? Of wil je graag andere cryptoliefhebbers ontmoeten? In de gratis Discordkanalen van ons product Money Mastery van AllesOverCrypto kun je vragen stellen en kom je in gesprek met duizenden andere liefhebbers van crypto. Heb je andere crypto gerelateerde vragen? Het makkelijkste is om jouw vraag in onze FAQ op te zoeken. Wat je ook kunt doen, is dat je jouw vraag + AllesOverCrypto googelt. Laat vooral weten wat jouw gedachten over dit artikel is.
Headerfoto door tdhster