Computers maken volop gebruik van hash functies, zonder dat je het in de gaten hebt. Het wachtwoord voor je Facebook-account? Het wordt als hash op de server van Facebook opgeslagen. Hetzelfde geldt voor tal van andere data. Ook blockchains en cryptocurrencies maken gebruik van hashing algoritmes. Zo gebruik de blockchain van Bitcoin het SHA-256 algoritme en gebruikt Ethereum Keccak-256.
Beide algoritmes lijken veel op elkaar. Toch zitten er een aantal grote verschillen tussen de algoritmes. Wil je meer weten over de werking van deze blockchains en cryptocurrencies, is het interessant om eens naar deze verschillen te gaan kijken. Hieronder leggen we je meer uit over SHA-256, Keccak-256 en de verschillen tussen deze hashing algoritmes.
Bekijk snel
Wat is hashing ook alweer?
Hashing is een manier om gegevens om te zetten naar een unieke code, die lijkt op een willekeurige reeks van karakters. Het proces van het omzetten van gegevens naar een hash wordt volgens een specifiek algoritme gedaan. Dat betekent dat de karakters in een hash in feite dus niet zo willekeurig zijn als veel mensen denken.
Het algoritme achter de hashfunctie werkt volgens een bepaalde logica, dus zal het algoritme er altijd voor zorgen dat dezelfde inhoud dezelfde hash oplevert. In het geval van een veilig hashing algoritme is het onmogelijk om de inhoud van de hash te achterhalen. Dit betekent dat een veilig algoritme in slechts één richting werkt. Er zijn ook gebroken algoritmes, waar de logica van de hash functie is achterhaald. Het is dan mogelijk om de inhoud aan de hand van de hash te achterhalen, zoals MD5.
Eerder schreven we een artikel over de belangrijkste en (on)veiligste hashing algoritmes, dat je hier kunt lezen.
Wat is SHA-256?
SHA-256 is een specifiek hashing algoritme binnen de SHA-familie (dat staat voor Secure Hashing Algorithm), dat wordt gebruikt om data om te zetten naar een hash. Het algoritme is in 2001 door de National Security Agency (NSA) bedacht als voorloper op SHA-1. Hard nodig, want het werd rond die tijd duidelijk dat SHA-1 niet veilig genoeg was. Niet veel later werd het algoritme gebroken, waardoor SHA-1 nu niet meer gebruikt wordt.
Het hashen van gegevens gebeurt volgens een geheim algoritme, waardoor het onmogelijk is om de oorspronkelijke inhoud van gegevens te achterhalen aan de hand van de hash. Het is slechts en alleen mogelijk om gegevens om te zetten naar een SHA-256 hash. Zo'n hash bestaat uit 256 bits. De inhoud moet onder de 264 bits liggen om de hash zo willekeurig mogelijk te houden.
Er zijn nog veel meer andere algoritmes binnen de SHA-familie uitgekomen, zoals SHA-384 en SHA-512. Toch wordt SHA-256, ondanks dat het al in 2001 bedacht is, nog steeds als een van de veiligste hashing algoritmes ter wereld gezien. In onderstaande video leer je meer over SHA-256.
SHA-256 hash
Een SHA-256 hash bestaat altijd uit 256 bits. Stel dat we 'allesovercrypto' omzetten naar een hash, volgens het SHA-256 algoritme, ziet de hash er als volgt uit:
68f96ae80dea69dbe6e8196fa79fb27e9bcc2a170ca4ba9080948dc0874d35a1
Halen we nu de 'L' weg, dan ziet de hash er als volgt uit:
f55818274d9fcd5946048db02909d1bdb694b11cd803816b32508edd96084bda
Zoals je ziet, krijgen we een totaal andere output wanneer we slechts één letter weghalen. Deze grote mate van 'willekeur' maakt SHA-256 een van de veiligste algoritmes ter wereld. Hier kun je zelf een SHA-256 maken.
Waar wordt SHA-256 voor gebruikt?
Het algoritme SHA-256 wordt voor verschillende functies gebruikt. Een van de belangrijkste functies is het hashen van wachtwoorden. Dit houdt in dat een wachtwoord eerst omgezet wordt naar een SHA-256 hash voordat het in een database wordt opgeslagen. Zo is het wachtwoord beschermd tegen iedereen die toegang tot de database heeft.
Daarnaast wordt SHA-256 ook vaak gebruikt voor SSL-handshakes. Dit is het contact tussen een webserver en webbrowser. Wanneer een website een SSL-certificaat heeft, kan er een beveiligde verbinding worden opgezet tussen de website en de browser. Deze verbinding wordt opgezet door middel van cryptografie en hashing, waarbij SHA-256 wordt gebruikt.
Verder wordt SHA-256 ook gebruikt voor integriteitsverificatie en het verifiëren van digital signatures. SHA-256 wordt gebruikt om te controleren of data er bij ontvangst nog hetzelfde uitziet als bij het verzenden, zonder dat de inhoud wordt bekeken.
Bij blockchains en cryptocurrencies wordt SHA-256 gebruikt om de integriteit van een bestand te controleren met behulp van asymmetrische versleuteling. Het is een belangrijk onderdeel voor digital signatures, dat door onder andere Bitcoin wordt gebruikt.
Welke blockchains gebruiken SHA-256?
- Bitcoin (BTC)
- Litecoin (LTC)
- EOS (EOS)
- Stellar (XLM)
- Bitcoin Cash (BCH)
- TRON (TRX)
- Dash (DASH)
- NEO (NEO)
- Zcash (ZEC)
SHA-256 op Bitcoin
SHA-256 is het hashing algoritme dat gebruikt wordt door de Bitcoin blockchain. Dat gebeurt voor mining, waarbij miners transacties controleren en nieuwe blokken creëren. Hiervoor moeten zij rekenkracht leveren om zo veel mogelijk uitkomsten (hashes) te raden totdat de juiste hash wordt gevonden. De hash rate speelt hierbij een belangrijke rol. Dit is het aantal combinaties dat een miner per seconde kan raden, en wordt vaak beïnvloed door de kwaliteit van de hardware.
Bitcoin wil dat elk blok ongeveer even snel geraden wordt, omdat een snellere hash rate de blockchain kwetsbaarder maakt voor aanvallen van buitenaf. Het protocol kan de hash rate automatisch aanpassen. Het is belangrijk te onthouden dat een blok, welke transacties bevat, wordt omgezet naar een SHA-256 hash.
SHA-256 zorgt ook voor een keten van blokken, waarbij de hash van elk vorige blok wordt toegevoegd aan een nieuw blok, welke vervolgens wordt omgezet naar een hash. Wanneer iemand de inhoud van een blok probeert te wijzigen, zal de hash van het blok wijzigen en er een breuk in de ketting ontstaat. De nodes in het netwerk zullen deze versie van de blockchain niet accepteren, waardoor de blockchain veilig blijft.
Wat is Keccak-256?
Keccak-256 is een hashing algoritme dat is gebaseerd op de SHA-3 familie en is ontworpen om een input om te zetten naar een hash van 256 bits (bytes32). Het is een one-way hashfunctie, wat betekent dat je een input kunt omzetten naar een hash, maar de inhoud niet uit de hash kunt halen. Dit betekent dat Keccak-256 een veilig algoritme is, en het daarom ook voor verschillende beveilingsdoeleinden gebruikt kan worden.
Laten we eens gaan kijken naar hoe de output van Keccak-256 eruit ziet. Als 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
Ook nu zien we dat de output compleet anders is nadat we slechts één karakter hebben verwijderd. Dit maakt het Keccak-256 een veilig algoritme, omdat het hierdoor vrijwel onmogelijk is om het algoritme te breken.
Binnen de Keccak-familie vind je ook andere algoritmes, zoals Keccak-224, Keccak-384 en Keccak-512. Wanneer je meer te weten wilt komen over wat Keccak-256 is en hoe deze hash functie werkt, kun je onderstaande video bekijken.
Gebruiksfunctie van Keccak-256
Keccak-256 is een hashing algoritme dat voornamelijk en alleen gebruikt wordt door de blockchain van Ethereum. Deze blockchain gebruikt net als Bitcoin een hashing algoritme om gevoelige data op te slaan. Zoals elk ander systeem, of dit nu centraal of decentraal is, is het belangrijk om data te beveiligen. In plaats van data in zijn originele vorm te bewaren, wordt deze gehasht en opgeslagen als een hash, wat betekent dat niemand de daadwerkelijke data kan zien.
Algoritmen zoals SHA-256 worden vaak gebruikt voor het opslaan van wachtwoorden en het controleren van de integriteit van data, terwijl Keccak-256 specifiek door de Ethereum blockchain wordt gebruikt. Waarom gebruikt Ethereum zo'n specifieke hash functie? Dat is omdat het decentrale systeem van Ethereum andere eisen stelt aan de beveiliging van de data dan centrale systemen. SHA-256 is in principe ontworpen voor centrale systemen, omdat blockchains in 2001 nog niet bestonden.
Keccak-256 op Ethereum
Keccak-256 is een belangrijk onderdeel van de Ethereum blockchain. Het wordt gebruikt voor digital signatures. Deze signature maak je door de public en private key met elkaar te combineren. Voor deze sleutels wordt Keccak-256 als hashing algoritme gebruikt, wat betekent dat het algoritme een belangrijke rol binnen de veiligheid van Ethereum speelt.
Op de blockchain worden transacties samengevoegd en omgezet naar een hash met behulp van Keccak-256. Hierdoor wordt de integriteit van transacties gewaarborgd en kunnen wijzigingen op de blockchain direct worden opgemerkt. Als een hacker of crimineel een blok probeert te wijzigen, verandert de hash van het blok, wat meteen wordt opgemerkt door alle nodes in het netwerk van de blockchain. Dit maakt de geschiedenis van Ethereum onveranderbaar.
SHA-256 vs. Keccak-256
Hieronder zie je een overzicht van de verschillen tussen SHA-256 (dat door Bitcoin wordt gebruikt) en Keccak-256 (dat door Ethereum wordt gebruikt).
SHA-256 | Keccak-256 |
---|---|
SHA-256 werd in 2001 bedacht en is hierdoor een 'beproefd' hashing algoritme. | Keccak-256 werd in 2007 gelanceerd, en is hierdoor een 'minder ervaren' algoritme dan SHA-256. |
Dit algoritme is door de NSA bedacht en ontwikkeld. Dit is de Amerikaanse veiligheidsdienst, en je kunt dus stellen dat ze een bepaalde intentie bij de ontwikkeling van het algoritme hebben gehad. | Het algoritme is door een groep wetenschappers bedacht en ontwikkeld. Zij hebben het algoritme ontwikkeld omdat ze een variant van SHA-256 wilden hebben die was geoptimaliseerd voor Ethereum. |
SHA-256 kan geen grote hoeveelheden data verwerken. Ideaal voor wachtwoorden, maar minder geschikt voor grote hoeveelheden transacties. | Door de sponge-functie van Keccak-256 kan het algoritme grote hoeveelheden data verwerken. Ideaal voor het verwerken van grote hoeveelheden transacties. |
Het SHA-256 algoritme wordt gebruikt voor de beveiliging van gegevens en wachtwoorden. Het heeft een breed gebruiksgebied. | Keccak-256 wordt alleen gebruikt voor cryptocurrencies. Het heeft een zeer smal en gecentreerd gebruiksgebied. |
Omdat je meer stappen moet doorlopen om een hash te genereren is SHA-256 minnder efficiënt en langzamer. Minder geschikt voor blockchains die grote hoeveelheden transacties moeten verwerken. | Keccak-256 is efficiënter en kan sneller grote hoeveelheden data hashen, waardoor een blockchain die Keccak-256 gebruikt meer en sneller transacties kan verwerken. Ideaal voor blockchains die schaalbaar willen zijn. |
Uit de verschillen kun je opmaken dat Keccak-256 voor crypto geoptimaliseerd is. Toch gebruiken de meeste cryptocurrencies SHA-256. Waarom is dat zo?
Wanneer we kijken naar de lijst van blockchains die SHA-256 gebruiken, zijn dit voornamelijk 'oude' blockchains die tussen 2009 en 2013 zijn gelanceerd. Hierna gingen blockchains zich steeds vaker focussen op schaalbaarheid. Daarvoor ontwikkelde ze zelf een hashing algoritme of gebruikten ze een algoritme dat vrij nieuw was. Een nieuw algoritme is vaak sneller dan oude algoritmes, maar kans soms ook minder veilig zijn.
Keccak-256 is dus efficiënter voor blockchains als Ethereum, terwijl Ethereum de afgelopen jaren wel veel last van schaalbaarheidsproblemen heeft gehad. Deze problemen ontstonden echter niet door het hashing algoritme, maar door andere factoren als het consensus mechanisme.
Conclusie
Hashing algoritmes zijn ontzettend belangrijk voor onze technologie. Niet alleen vandaag, maar ook in het verleden en in de toekomst speelt hashing een belangrijke rol. Omdat de technologie continu blijft veranderen, is het belangrijk dat we verschillende hashing algoritmes hebben. Een hashing algoritme dat vandaag nog veilig is, zou morgen zomaar gebroken kunnen zijn (al is de kans klein).
SHA-256 is een belangrijk hashing algoritme dat al sinds 2002 wordt gebruikt. Keccak-256 is gebaseerd op de SHA-algortimes, maar is voornamelijk geoptimaliseerd voor blockchains en cryptocurrencies. In het bijzonder voor Ethereum. Waar SHA-256 door veel 'oude' blockchains als Bitcoin en Litecoin wordt gebruikt, kun je Keccak-256 als een nieuwer algoritme zien dat meer transacties sneller kan verwerken. Dat is een van de redenen dat Ethereum het Keccak-256 algoritme gebruikt.
Ben je op zoek naar meer informatie of heb je nog vragen over SHA-256, 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 deze hashing algoritmes zijn.
Headerfoto door DUO Studio