Wat is Hash Function?
Een Hash Function is een wiskundig proces in één richting dat elke invoer omzet in een korte uitvoer van vaste lengte die een hash wordt genoemd. Zelfde invoer, zelfde uitvoer, elke keer. Zie het als een digitale vingerafdruk voor gegevens die niet terug te rekenen is het is echt zo simpel.
Een Hash Function is geen versleuteling die je later kunt terugdraaien. Het is opzettelijk één richting, dus je vergelijkt hashes om de integriteit te controleren in plaats van iets te ontsleutelen.
Hoe werkt Hash Function
Kort en krachtig. Stel dat je een bericht typt of een set transacties bundelt. Het algoritme verwerkt die invoer en geeft een tekenreeks van vaste lengte terug die er willekeurig uitziet maar volledig consistent is voor precies die invoer.
- Stap 1: Je voert gegevens in, welke grootte dan ook, van een enkel woord tot een volledige blokheader.
- Stap 2: Het algoritme verplaatst bits op een precieze manier; zelfs "hello" levert een specifieke hexadecimale weergave op.
- Stap 3: Je krijgt een uitvoer van vaste lengte, wat opslag en vergelijking eenvoudig maakt.
- Stap 4: Verander één teken en de uitvoer verandert onvoorspelbaar. Geen "bijna dezelfde" hashes.
- Stap 5: Op blockchains proberen mijners talloze nonces totdat de hash aan het netwerkdoel voldoet.
Die zoekactie heet minen, en het zorgt dat blokken betrouwbaar blijven.
Waarom Hash Function belangrijk is
Waarom zou je het belangrijk vinden? Omdat dit de manier is waarop blockchains wijzigingen aan gegevens duidelijk zichtbaar en makkelijk te controleren maken.
- Voordeel: Snelle integriteitscontroles besparen tijd, kosten en gedoe bij het verplaatsen van gegevens en waarde.
- Perspectief: Het vormt de ruggengraat van Proof of Work, waarmee elektriciteit en rekenkracht worden omgezet in verifieerbare beveiliging.
- Toepassing: Je ziet het in transacties, blokheaders, Merkle roots en zelfs bij het downloaden van bestanden.
Bij het verifiëren van een bestand of transactie, vergelijk hashes van minimaal twee betrouwbare bronnen. Als één cijfer afwijkt, beschouw het als een waarschuwingssignaal.
Belangrijke kenmerken van Hash Function
Deze eigenschappen maken het populair, van Bitcoin tot eenvoudige bestandscontrole:
- Deterministisch: Zelfde invoer geeft altijd dezelfde uitvoer.
- Uniform: Uitkomsten lijken gelijkmatig verdeeld, wat helpt patronen te vermijden die aanvallers kunnen misbruiken.
- Vaste lengte: De lengte van de uitvoer hangt niet af van de grootte van de invoer, wat opslag en vergelijking vereenvoudigt.
- Avalanche: Kleine wijzigingen in de invoer leiden tot een volledig andere hash.
- Eén richting: Als je alleen de hash hebt, is het praktisch onmogelijk om een invoer te vinden die precies die hash produceert.
- Botsing: Het vinden van twee verschillende invoeren met dezelfde hash zou astronomisch moeilijk moeten zijn.
Varianten
Verschillende chains en apps kiezen verschillende algoritmen, elk met eigen voor- en nadelen:
- SHA256: Gebruikt in Bitcoinblokken en veel bewijsmechanismen, grondig getest en breed geaudit.
- Keccak: Ethereum gebruikt Keccak 256 voor adressen en contracten, ook populair in tooling voor smart contracts.
- BLAKE3: Nieuwere constructie gericht op snelheid en parallelle prestaties bij grote data.
- Snelheid: Sommige algoritmen zijn sneller, handig bij hoge doorvoer.
- Beveiliging: Kies algoritmen met jaren van publieke controle.
- Geschiktheid: Kies wat je stack en bibliotheken goed ondersteunen.
Een hash bewijst alleen dat gegevens hetzelfde bleven. Het bewijst niet wie het heeft gemaakt tenzij je het combineert met handtekeningen.
Voorbeeld
Bitcoin zet een publieke sleutel om in walletadressen door deze door standaardalgoritmen te hashen, zodat het adres kort, controleerbaar en veilig om te delen is.
Leuk weetje
MD5 en SHA1 hebben bekende botsingen, daarom beschouwt de cryptogemeenschap ze als verouderde techniek die je bewondert maar niet voor beveiliging gebruikt. Retro, maar niet voor je geld.
Samenvatting
Kort samengevat: een Hash Function geeft gegevens een unieke vingerafdruk zodat je snel manipulatie kunt ontdekken en de bewijzen kunt vertrouwen zonder een tussenpersoon te raadplegen.
