Wat is hashing in crypto?

Wat is hashing in crypto?
Hashing in beeld

Definitie:

Hashing is het omzetten van gegevens in een alfanumerieke waarde van vaste lengte door middel van een wiskundig algoritme, waarbij dezelfde invoer dezelfde waarde oplevert.

Alfanumeriek betekent dat het uit cijfers en letters bestaat. Bij cryptocurrency wordt hashing gebruikt om de integriteit van de blockchain te waarborgen en om digitale handtekeningen te beveiligen. Ook zorgt het voor efficiëntie van een blockchain.

Het onderwerp hashing is erg complex, dus we zullen proberen om het zo eenvoudig mogelijk te vertellen.

2.572 woorden
11-16 minuten

Hoe werkt hashing in eenvoudige termen?

Hashing kun je vertalen met husselen, maar het minder fraaie woord hakken wordt er ook voor gebruikt. Hashing maakt gebruik van een hashfunctie. Dit is een set regels die vaststaat en waar je mee moet werken bij het hashing proces. Een hash of hashwaarde is simpelweg de uitkomst van dit proces.

Scan de QR-code of klik de link om lid te worden bij Whitebit en je exclusieve korting te claimen op de toch al goedkope transactiekosten van 0,1% bij deze exchange. Maak zelf ook referrals en krijg 40-50% commissie over hun transactiekosten.

Een voorbeeld van hashing

Ik weet dat dit allemaal nog steeds complex klinkt. Daarom zal ik een voorbeeld geven en tonen hoe het in de praktijk werkt. We gaan aan de slag met SHA-256 (Secure Hash Algorithm 256 bit), dat bij Bitcoin gebruikt wordt. Hiervoor gaan we verschillende sites bezoeken, zodat je met eigen ogen kunt aanschouwen dat het werkt.

Als eerste gaan we naar GitHub, waar ze een SHA-256 generator hebben, waarbij je met dit algoritme kunt werken.

Je ziet daar dat je een input (invoer) moet geven om een output (hashwaarde) te krijgen. Door er iets in te vullen krijg je een 256 bit hash die uniek is. Deze is uniek, omdat er 2256 mogelijkheden zijn. Dit getal is groter dan het aantal atomen in het universum, dus het zou wel heel toevallig zijn als een bepaalde input dezelfde output zou hebben. Het is niet onmogelijk en dat noemen ze collision, waarbij verschillende input dezelfde output heeft.

We vullen op deze website als input “Hoeveel mensen zijn nodig om een gloeilamp te verwisselen bij de Crypto Loge?”

Als we dit invullen, krijgen we als output: d1d448890f1f8e0cb27a8d69aca42832c08adffef74f5093c3bda7a1950764c5

Dat is de hashwaarde die bij deze zin hoort.

Als we nou invullen “Hoeveel mensen zijn nodig om een gloeilamp te verwisselen bij de CryptoLoge?” krijgen we als uitkomst: ea070f8caf17faf6976528eaa3a4e1c446a8069ca7e83af7d6a7c76157b5c412

Zo zie je dat zelfs het verwijderen van een enkele spatie de output volledig verandert. Dat is precies de reden dat hashing zo handig is bij cryptocurrency en blockchain, want gegevens zijn dan totaal niet te vervalsen, dat valt direct op als het gecontroleerd wordt op geldigheid door computers die de database van een blockchain bijhouden.

Reproduceerbare output

Als we de eerste zin gaan invullen bij KeyCDN Tools, dan krijgen we precies dezelfde output:

d1d448890f1f8e0cb27a8d69aca42832c08adffef74f5093c3bda7a1950764c5

De tweede zin levert ea070f8caf17faf6976528eaa3a4e1c446a8069ca7e83af7d6a7c76157b5c412

op en dat is ook precies hetzelfde.

Hier zie je hoe krachtig dit principe werkt. Je verzint zelf een input en alle plekken waar SHA256 gebruikt wordt geven dezelfde output aan. Je kunt deze techniek dus goed gebruiken bij cryptografie. Daarom wordt er veel gebruik gemaakt van hashfuncties in crypto en blockchain, omdat het reproduceerbare resultaten oplevert die toch uniek zijn. Elke degelijke hashfunctie moet zorgen dat het reproduceren ervan een onaanvaardbare inspanning kost, bijvoorbeeld 500 jaar om te kraken.

Je geeft dus een input, gaat aan de slag met een algoritme dat gaat husselen (hashen) en krijgt zo een unieke output.

Welke inputgegevens worden gebruikt bij crypto?

Er zijn een aantal zaken die bij crypto en blockchain gebruikelijk zijn om op te geven als invoer bij hashing, omdat deze noodzakelijk zijn voor de werking van de blockchain. We zullen de belangrijkste op een rij zetten.

  1. Gegevens van een transactie. Elke transactie zal op een blockchain verwerkt moeten worden, waarbij er gewerkt wordt met de hoeveelheid munten die verstuurd wordt, de ontvanger, de afzender en andere gegevens die noodzakelijk zijn om een geldige transactie te verwerken. Deze gegevens samen zorgen voor een ticker ID, oftewel transactie identificatie. Deze wordt gehasht en omgezet in een output. Deze zijn te bekijken in een block explorer, waar alle transacties op een blockchain terug te vinden zijn.
  2. De hash van het vorige blok. Hierdoor krijg je een onveranderlijke blockchain, omdat elk volgend blok in de blockchain keten de juiste hash van alle voorgaande blokken moet meenemen. Een kleine aanpassing, bijvoorbeeld bij mogelijke fraude, wordt dan direct opgemerkt.
  3. Een tijdstempel. Deze geeft precies aan op welk tijdstip van welke dag het blok gemaakt is. Dit is een extra slot op de deur, want alle blokken moeten opeenvolgend gemaakt worden.
  4. Nonce. Dit is een number only used once dat miners moeten genereren bij een Proof of Work blockchain. In ons artikel over crypto minen wordt dit precies uitgelegd. Het komt erop neer dat miners op basis van brute force (een voor een raden) als eerste een vooraf bepaalde output moeten vinden om het nieuwe blok te mogen maken op Bitcoin (of andere PoW blockchain) en de beloning ontvangen.
  5. Gegevens over smart contracts op een blockchain als Ethereum of Solana.
  6. Merkle Tree gegevens. Hier gaan we later wat dieper op in.

Waarom wordt hashing gebruikt bij crypto?

Het principe dat je elke input kunt veranderen in een pseudo-willekeurige output is erg krachtig. Met pseudo-willekeurig bedoel ik dat het niet helemaal willekeurig is, aangezien elke specifieke input een vaste output heeft, zoals die zin die ik gebruikte.

Het belangrijkste aspect van hashing is dat je het proces niet kunt omkeren. Je kunt door analyse of brute force van de output de input niet raden, omdat het aantal mogelijkheden gewoon te groot is. Elke unieke input heeft dus een vaste output, maar niemand weet wat jouw input was. Dat is nogal handig in cryptografie.

Wat ook bijzonder is bij hashing is dat een kleine aanpassing van de input een erg groot verschil in output geeft, zoals je zag aan mijn voorbeeld. Hierdoor wordt de output zeer willekeurig en daardoor is het ontzettend veilig.

Wat is een Merkle Tree?

Merkle Tree voorbeeld
Hoe ziet een Merkle Tree uit?

Dit is op zich een onderwerp op zichzelf waard. Kort omschreven is een Merkle Tree een boomdiagram. In een Merkle Tree bij een blockchain worden gegevens over een transactie in een enkele hash weergegeven door het ticker ID te hashen. In deze boom worden aangrenzende paren transacties samengevoegd tot een enkele hash en zo verder tot alle transacties samengevoegd zijn en je bovenaan de boom bent. Bij een oneven aantal wordt de laatste transactie gedupliceerd. Alle onderdelen van deze boom worden op het einde samengevoegd en al deze hashes worden samen gehasht. Hier volgt een enkele hash uit, die staat voor alle informatie in de boom.

Dit wordt de root genoemd, de top of piek van de boom. In zo’n root kunnen duizenden transacties samengevoegd zijn in een enkele hash. Het handige hiervan is dat je met deze enkele hash kunt vaststellen of iemand fraude wil plegen in de blockchain. Alle transacties worden met een Merkle Tree beschermd door deze root, want als iemand een bepaalde of meerdere transacties wil wijzigen, zal de root anders zijn. In dat geval zullen miners of validators (bij Proof of Stake) deze transacties afkeuren, omdat de root niet meer klopt. Een erg veilig systeem. Zoals je hebt kunnen zien is zelfs het verwijderen van een spatie al voldoende om een compleet andere hash output te krijgen.

De root wordt gebruikt als hash van een compleet blok van een blockchain. Deze hash is het identificatienummer van het blok en wordt permanent vastgelegd op de blockchain als controlemechanisme.

Cryptografie en hashing in crypto

Als je cryptografie gebruikt bij cryptocurrency en blockchain, zal dit moeten zorgen voor een zeer veilige omgeving. Daarom moeten hashes een output opleveren van voldoende grootte. Hoe groter het aantal mogelijkheden als uitkomst, hoe veiliger de hashfunctie is. Als een uitkomst vrijwel niet te raden valt, tenzij door een ontzettend toeval, dan is deze hash te gebruiken als digitale handtekening en als geldige ondertekening van een transactie op een blockchain.

Transacties op een blockchain gaan immers in totaal over enorme bedragen. Veiligheid moet daarom wel voorop staan en een aantal hashfuncties zijn daarom al afgevallen, zoals MD5 en SHA-1, omdat deze door hackers te kraken zijn via brute force.

Voor extra beveiliging kun je nog gebruik maken van de salt en pepper techniek. Met salt kun je een willekeurig gegenereerd getal toevoegen aan de opgeslagen hash en daar weer een nieuwe hash van maken. Met pepper voeg je aan de hash een gelijke reeks tekens toe, waardoor brute force aanvallen nog onwaarschijnlijker worden.

Waar wordt hashing bij gebruikt?

Hashing wordt voor een flink aantal zaken gebruikt waarbij veiligheid en privacy centraal staan. Zo wordt het gebruikt bij blockchain en cryptocurrency, maar ook bij wachtwoorden en accounts, communicatie over het internet, e-mailen, bestanden downloaden, shoppen, eigenlijk bij alle online communicatie. Zo wordt voorkomen dat deze informatie onderschept wordt.

Een van de bekendste gebruikswaarde van hashing in crypto zien we bij Bitcoin. Met het hashen van input via brute force wordt geraden naar een output die overeen moet komen met de gevraagde output. Deze output moet overeenkomen met een aantal nullen aan het begin van de output. Als er een hoge hashrate is op het Bitcoin netwerk (veel miners) dan zal het aantal nullen aan het begin hoger worden en vice versa. Dit is noodzakelijk om het schema van uitgifte van nieuwe Bitcoin op peil te houden (ongeveer elke 10 minuten een blok).

Hashing wordt ook gebruikt bij Proof of Stake, maar dan alleen om te bevestigen dat gegevens correct zijn en daarom is Proof of Stake ook veel minder energie-intensief.

Meer hashing bij cryptocurrency

Een bekend fenomeen uit de crypto wereld zijn de digitale handtekeningen. Hierbij heb je een verzender en een ontvanger. Van een bericht wordt een hash gemaakt. Zonder de private sleutel kan het bericht niet gelezen worden. De ontvanger van het bericht heeft dan de geheime sleutel nodig om het te kunnen ontcijferen. Als de hash van het bericht overeenkomt met de hash die met deze sleutel berekend kan worden dan is het bericht gelijk aan het originele bericht.

Bij cryptocurrencies werken ze met de private sleutel en de publieke sleutel om je adres weer te geven (publieke waar je het wallet adres uit genereert via hashing) of te bepalen of jij dit bedrag wel kunt uitgeven (private sleutel). Dat is essentieel bij een transactie. Digitale handtekeningen (private sleutels) kun je zien als je digitale vingerafdruk en als equivalent van je handtekening onder een contract in de papieren wereld.

Welke eigenschappen heeft een hashfunctie?

  1. Reproduceerbare invoer. Dit noemen ze wel deterministisch, dat wil zeggen dat dezelfde invoer altijd dezelfde uitvoer oplevert.
  2. Eenrichtingsverkeer. Je kunt wel dezelfde input geven om dezelfde output te krijgen, maar de algoritmische functie kan niet vanuit de output de input berekenen.
  3. Het is erg efficiënt en snel. Het berekenen van een output vanuit de input is zowat instant. Dat is voor een blockchain erg belangrijk, als het wat wil opschieten met het verwerken van transacties.
  4. Kleine veranderingen in de input zorgen voor grote veranderingen in de output.
  5. Vaste lengte van de output. De hashfunctie van Bitcoin levert bijvoorbeeld een 256 bit output op, dit zijn 64 tekens.
  6. Een goede hashfunctie zorgt ervoor dat gegevens niet vervalst kunnen worden. Daarom is de lengte ervan zo belangrijk.

Welke soorten hashfuncties kent crypto?

  • Bij Bitcoin wordt de SHA256 hashfunctie gebruikt.
  • Bij Ethereum wordt de Keccak-256 hashfunctie gebruikt. Deze heeft dus een vergelijkbare veiligheid als die van Bitcoin, omdat hij ook 256 bits is.
  • Scrypt. Deze hashfunctie verbruikt veel RAM geheugen (werkgeheugen) van computers. Hij is daarom bestand tegen computers die werken met brute force, zoals de Bitcoin miners. Daarom kun je niet op dezelfde manier werken met Scrypt als bij reguliere mining methodes met behulp van ASIC miners. Litecoin en Dogecoin werken hiermee.
  • Equihash is een hashfunctie die gebruikt wordt door privacy coins als Monero en is enigszins te vergelijken met Scrypt, vanwege de resistentie tegen ASIC miners.
  • Blake2b wordt gebruikt door munten als Nano en is veilig en snel.

Conclusie

Hashing in crypto is een essentieel onderdeel van het beveiligen van een blockchain. Het is snel, veilig, efficiënt en over het algemeen goedkoop.

Zonder hashing waren blockchains waarschijnlijk zo langzaam dat er niet mee te werken valt.

FAQ – Veelgestelde vragen over wat is hashing in crypto?

1. Wat is hashing?

Hashing is het omzetten van data naar een unieke, vaste code (hash) met behulp van een wiskundig algoritme.

2. Waarom wordt hashing gebruikt in crypto?

Hashing zorgt voor veiligheid, integriteit en snelle verificatie van data binnen blockchains.

3. Wat is een hash precies?

Een hash is een reeks cijfers en letters die een exacte afspiegeling is van de ingevoerde data.

4. Kun je een hash terugrekenen naar de originele data?

Nee. Hashing is eenrichtingsverkeer: je kunt de originele data niet terughalen uit de hash.

5. Waarom verandert een hash volledig bij kleine wijzigingen?

Hash algoritmes zijn ontworpen om zelfs bij één kleine wijziging een totaal andere hash te produceren.

6. Welke hash algoritmes worden in crypto gebruikt?

Bekende algoritmes zijn SHA‑256 (Bitcoin) en Keccak‑256 (Ethereum).

7. Hoe wordt hashing gebruikt in blockchain?

Hashing koppelt blokken aan elkaar, beveiligt transacties en maakt het netwerk onveranderlijk.

8. Wat is Proof of Work hashing?

Miners proberen een hash te vinden die voldoet aan bepaalde eisen. Dit kost rekenkracht en beveiligt het netwerk.

9. Waarom is hashing belangrijk voor veiligheid?

Omdat het onmogelijk is om data te manipuleren zonder dat de hash verandert, fraude valt direct op.

10. Wordt hashing ook buiten crypto gebruikt?

Ja. Hashing wordt gebruikt voor wachtwoorden, digitale handtekeningen, bestandsverificatie en cybersecurity.

Scroll naar boven