Wat is hashing?
Crypto Fundamental Analysis

Wat is hashing?

Basis

Hashing is een proces waarbij een vaste-uitgangswaarde wordt gegenereerd uit een invoer van variabele grootte door wiskundige formules die bekendstaan als hashfuncties. Er bestaan zowel conventionele als cryptografische hashfuncties, waarbij de laatste de kern vormen van cryptocurrencies. Deze functies stellen blockchains en andere gedistribueerde systemen in staat hoge niveaus van gegevensbeveiliging en integriteit te bereiken.

Hashfuncties zijn deterministisch, wat betekent dat ze bij dezelfde invoer altijd dezelfde uitvoer produceren. Deze uitvoer wordt ook wel een digest of hash genoemd.

Cryptocurrency-hashalgoritmen zijn ontworpen als eenrichtingsfuncties, wat betekent dat ze moeilijk om te keren zijn zonder aanzienlijke rekenkracht en middelen. Het is relatief eenvoudig om een uitvoer uit de invoer te creëren, maar de omgekeerde weg — de invoer afleiden uit alleen de uitvoer — is een uitdaging. De veiligheid van een hashing-algoritme wordt doorgaans gemeten aan de hand van hoe moeilijk het is om de invoer te vinden; een veiliger algoritme vereist een hogere graad van moeilijkheid.

Hoe werkt een hashfunctie? 

Hashfuncties worden gebruikt om uitvoer van vaste grootte te produceren, maar de mogelijke uitvoerformaten voor elk algoritme blijven vast. Bijvoorbeeld, SHA-256 zal altijd een 256-bit uitvoer produceren, terwijl SHA-1 slechts een 160-bit digest genereert. De hash zelf is een reeks letters en cijfers.

Merk op dat een klein verschil in de invoer, zoals het gebruik van een hoofd- of kleine letter aan het begin, resulteert in een volledig andere hashwaarde. Desondanks heeft de uitvoer voor SHA-256 altijd een vaste grootte van 256 bits (of 64 tekens), ongeacht de grootte van de invoer. Verder maakt het niet uit hoe vaak twee woorden door het algoritme worden gehaald; de uitvoer blijft altijd hetzelfde. De uitvoer zal echter anders zijn als dezelfde invoer met het SHA-1-hashalgoritme wordt gebruikt.

Het is belangrijk op te merken dat SHA staat voor Secure Hash Algorithms, een verzameling cryptografische hashfuncties die de SHA-0 en SHA-1 algoritmen omvat, evenals de SHA-2 en SHA-3 groepen. Het SHA-256-algoritme maakt deel uit van de SHA-2-groep, samen met SHA-512 en andere varianten. Momenteel worden alleen de SHA-2- en SHA-3-groepen als veilig beschouwd.

Wat is de betekenis van hashing?

Hashing kent verschillende toepassingen, van het analyseren van grote bestanden en het beheren van data tot informatiebeveiligingstoepassingen zoals message authentication en digitale vingerafdrukken. Cryptografische hashfuncties spelen een cruciale rol in het miningproces van Bitcoin en bij het maken van nieuwe adressen en sleutels. De kracht van hashing wordt duidelijk bij het verwerken van enorme hoeveelheden informatie. Hashfuncties condenseren invoer tot een uitvoer (hash), waarmee data geverifieerd kunnen worden zonder grote hoeveelheden gegevens op te slaan. Blockchain-technologie profiteert van hashing doordat het transacties koppelt en samenvat in blokken, wat een blockchain creëert. De Bitcoin-blockchain is sterk afhankelijk van hashing in meerdere operaties, voornamelijk bij mining, om cryptografische koppelingen tussen elk blok te produceren. Samengevat is hashing een cruciaal onderdeel van cryptovalutaprotocols om gegevensintegriteit, beveiliging en onveranderlijkheid te bereiken.

Hashfuncties 

Hashfuncties hebben veel toepassingen, waaronder databeheer, database-opzoekingen en analyse van grote bestanden. In de informatiebeveiliging worden cryptografische hashfuncties veel gebruikt voor digitale vingerafdrukken en message authentication. Cryptografische hashfuncties zijn essentieel in het miningproces van Bitcoin en spelen ook een belangrijke rol bij het creëren van nieuwe sleutels en adressen.

Hashing is bijzonder nuttig bij het verwerken van enorme hoeveelheden data. Door een groot bestand of dataset door een hashfunctie te halen, kan men snel de juistheid en integriteit van de data verifiëren met behulp van de uitvoer. Dit is mogelijk dankzij het deterministische karakter van hashfuncties, waarbij de invoer altijd resulteert in een vereenvoudigde en gecondenseerde uitvoer of hash. Deze benadering elimineert de noodzaak om grote hoeveelheden data op te slaan en te onthouden.

Voor blockchain-technologie is hashing bijzonder relevant. De meerderheid van cryptocurrency-protocollen vertrouwt op hashing om groepen transacties te condenseren en te koppelen in blokken en cryptografische koppelingen tussen elk blok te produceren, waardoor een blockchain ontstaat.

Om als veilig te worden beschouwd, moet een cryptografische hashfunctie aan drie eigenschappen voldoen: collision resistance, preimage resistance en second preimage resistance. 

  • Collision resistance betekent dat het onmogelijk is om twee verschillende invoeren te vinden die dezelfde uitvoer produceren. 
  • Preimage resistance betekent dat het onmogelijk is om de hashfunctie om te keren en de invoer te vinden aan de hand van een gegeven uitvoer. 
  • Second-preimage resistance betekent dat het onmogelijk is om een tweede invoer te vinden die collidereert met een opgegeven invoer.

Collision resistance

Een hashfunctie is collision-resistant totdat iemand een collision vindt waarbij verschillende invoeren dezelfde hash produceren. Collisions zullen altijd bestaan voor elke hashfunctie omdat de mogelijke invoeren oneindig zijn, terwijl de mogelijke uitvoeren eindig zijn. Hashfuncties worden als collision-resistant beschouwd wanneer de kans om een collision te vinden zo laag is dat dit miljoenen jaren aan berekeningen zou vereisen. Sommige van de hashfuncties die aan deze norm voldoen, zijn onder andere SHA-256.

De SHA-0 en SHA-1 groepen worden niet langer als veilig beschouwd omdat er collisions zijn gevonden. Daarentegen gelden de SHA-2 en SHA-3 groepen als resistent tegen collisions.

Cryptografische hashfuncties gebruiken cryptografische technieken en het kraken ervan vereist talloze brute-forcepogingen. Om een cryptografische hashfunctie om te keren, moet men de invoer raden door trial-and-error totdat de overeenkomstige uitvoer wordt geproduceerd. Verschillende invoeren kunnen echter dezelfde uitvoer produceren, wat een collision veroorzaakt.

Preimage resistance 

One-way functies en preimage resistance zijn eigenschappen van hashfuncties die ervoor zorgen dat het vrijwel onmogelijk is om de invoer te bepalen die een bepaalde uitvoer heeft geproduceerd. Dit is gerelateerd aan het concept van eenrichtingsfuncties, waarbij het eenvoudig is om de uitvoer te berekenen, maar moeilijk om de invoer op basis van de uitvoer te achterhalen.

Let op dat preimage resistance verschilt van collision resistance omdat een aanvaller bij de eerste probeert de invoer te raden op basis van een gegeven uitvoer. Bij de laatste treedt een collision op wanneer twee verschillende invoeren dezelfde uitvoer produceren.

Preimage resistance is waardevol voor databescherming omdat een hash van een bericht de authenticiteit kan bewijzen zonder het bericht zelf prijs te geven. 

Second-preimage resistance 

Second-preimage resistance is een eigenschap die tussen de andere twee eigenschappen inzit. Het houdt in dat men een specifieke invoer probeert te vinden die dezelfde uitvoer genereert als een andere reeds bekende invoer. Een second-preimage-aanval lijkt op het vinden van een collision, behalve dat men zoekt naar een invoer die dezelfde hash produceert als een specifieke invoer in plaats van twee willekeurige invoeren te vinden die dezelfde hash genereren.

Aangezien een second-preimage-aanval altijd een collision impliceert, is elke collision-resistant hashfunctie ook resistent tegen second-preimage-aanvallen. Echter, een collision-resistant functie kan nog steeds vatbaar zijn voor preimage-aanvallen omdat die het vinden van een enkele invoer uit een enkele uitvoer betreffen. Daarom is preimage resistance een cruciale eigenschap van hashfuncties en wordt het vaak gebruikt om data te beschermen. Veel serviceproviders en webapplicaties slaan en gebruiken hashes die gegenereerd zijn uit wachtwoorden in plaats van de wachtwoorden in platte tekst. Op deze manier kunnen ze de authenticiteit van het bericht aantonen zonder de informatie prijs te geven.

Mining 

Bitcoin-mining omvat meerdere stappen die het gebruik van hashfuncties vereisen. Deze stappen omvatten het verifiëren van saldi, het koppelen van transactie-invoeren en -uitvoeren, en het hashen van transacties binnen een blok om een Merkle Tree te vormen. Een van de belangrijkste redenen waarom de Bitcoin-blockchain veilig is, is dat miners veel hashing-bewerkingen moeten uitvoeren om een geldige oplossing voor het volgende blok te ontdekken.

Om een hashwaarde voor hun kandidaat-blok te genereren, moet een miner veel verschillende invoeren proberen. In essentie zullen miners hun blok alleen valideren als ze een uitvoer-hash kunnen produceren die begint met een specifiek aantal nullen. Het aantal nullen bepaalt de mining difficulty, die varieert afhankelijk van de in het netwerk geïnvesteerde hashrate.

De hashrate geeft de hoeveelheid rekenkracht aan die in Bitcoin-mining is geïnvesteerd. Als de hashrate van het netwerk stijgt, zal het Bitcoin-protocol automatisch de mining difficulty aanpassen, zodat de gemiddelde tijd die nodig is om een blok te minen rond de 10 minuten blijft. Omgekeerd, als veel miners stoppen met minen en de hashrate aanzienlijk daalt, wordt de mining difficulty verlaagd om het minen makkelijker te maken totdat de gemiddelde bloktijd weer 10 minuten bedraagt.

Het is vermeldenswaard dat miners geen collisions hoeven te vinden, aangezien ze meerdere hashes kunnen genereren die als geldige uitvoer kwalificeren (met een bepaald aantal nullen aan het begin). Er bestaan dus veel mogelijke oplossingen voor een gegeven blok, en miners hoeven er slechts één te vinden op basis van de drempel die door de mining difficulty is vastgesteld.

Aangezien Bitcoin-mining kostbaar is, hebben miners geen prikkel om het systeem te bedriegen omdat dat tot aanzienlijke financiële verliezen zou leiden. Hoe meer miners deelnemen aan een blockchain, hoe groter en robuuster deze wordt.

Conclusie

Voor wie geïnteresseerd is in blockchaintechnologie zijn cryptografische hashfuncties van vitaal belang om te begrijpen. Deze algoritmen bieden beveiliging en authenticatie in combinatie met cryptografie, waardoor ze zeer veelzijdig zijn bij het verwerken van grote hoeveelheden data. Hashfuncties spelen een cruciale rol in vrijwel alle cryptonetwerken. Het begrijpen van hun eigenschappen en werkingsmechanismen is essentieel in de informatica.

Hashing
Lees meer

Laat je crypto groeien met tot 20% APY

Simpelweg storten, ontspannen, en je saldo zien groeien — veiligBegin met Verdienen