Wat is hashing?

Wat is hashing?
Anycoin Direct

Door Anycoin Direct

In deze les gaan we het hebben over hashing. Het is zeker niet eenvoudig, maar daar laten we ons niet door afschrikken. Here we go.

Korte samenvatting

✔️ Hashing is het omzetten van een verzameling gegevens in een code, de hash, met behulp van een vooraf bepaalde berekening.

✔️ Hashing wordt vaak gebruikt om wachtwoorden te beveiligen zodat alleen de gebruiker ze kan lezen en om checksums te vergelijken bij het downloaden van bestanden.

✔️ Digitale handtekeningen gebruiken hashing voor authenticatie, waarbij de ontvanger de privésleutel nodig heeft om het bericht te ontcijferen.

✔️ Cryptocurrencies gebruiken hashing voor mining, waarbij computers met hun rekenkracht puzzels moeten oplossen om beloningen te ontvangen.

Hashing

Definitie:

Hashing is het proces waarbij een verzameling gegevens door een functie wordt omgezet in een code, de hash. Wat zegt u?

Laten we dan eerst maar eens uitleggen wat een hash is. Een hash is een uitkomst van een soort berekening op basis van vooraf gestelde voorwaarden. Een hash bestaat uit een reeks cijfers en letters.

Voorbeeld van hashing

We zullen een voorbeeld geven van hashing, om het wat visueler te maken. Met SHA (Secure Hashing Algorithm) 256 kun je een hash verkrijgen voor elke vorm van tekstuele informatie. Ik zal twee zinnen maken die heel erg veel op elkaar lijken, maar waarvan de uitkomst (de hash) heel verschillend uitziet.

De zin “wat is hashing” (de input) levert de volgende hash op:

a85eaf708bd0da1c0b7206ab8d69c30403b34be19588b71702d420ff9b21f09c (de output)

De zin “Wat is hashing” levert een heel andere hash op:

4bc6139ce79a8c6aeca74cd9397259fb54d4ea4fc7b930bb74404cfe94c34bcd

SHA-256 levert een 256 bits lange hash op (64 tekens).

Hashing richting en veiligheid

Overigens werken hashes in één richting. Je kunt wel de hash maken van een zin, maar je kunt een zin niet reconstrueren uit de hash.

Een hash moet zo opgesteld zijn dat het een onaanvaardbare inspanning vereist om de hash te raden op basis van brute force (simpelweg alle mogelijkheden 1 voor 1 nagaan). Hoe meer tekens een hashfunctie genereert, hoe moeilijker een input te kraken is.

Nu zal het idee van hashing wel vorm hebben aangenomen in je verbeeldingswereld.

Waarvoor wordt hashing gebruikt?

Leuk, zo’n potje hashing. Maar wat kun je er eigenlijk mee?

Over het algemeen kunnen we stellen dat hashing gebruikt wordt om gegevens te beveiligen. Het meest wordt het gebruikt in de IT om wachtwoorden te beveiligen.

Wachtwoord hashen

Stel je verzint een wachtwoord en moet dat versturen over het internet door het ergens in te vullen. Als het in platte tekst zonder versleuteling of hash wordt verstuurd kunnen hackers lezen wat je daar invult. Daarom worden tegenwoordig wachtwoorden in een hash omgezet, zodat alleen de gebruiker kan lezen wat hij invult.

Bestanden hashen

Hashing kan ook worden gebruikt bij het downloaden van bestanden. Je berekent eerst de hash van het bestand voordat je het downloadt, waarna je kijkt of de zogenaamde checksum hetzelfde is. Als beide waarden gelijk zijn dan is het bestand het originele. Erg handig als je geen virussen of Trojan horses de poorten wilt laten passeren.

Hashing en cryptografie

Een bekend fenomeen uit de cryptowereld is de digitale handtekening. Hierbij heb je een zender 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 bericht 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 cryptocurrency werken ze met de private sleutel en de publieke sleutel om je adres weer te geven (publiek) of te bepalen of jij dit bedrag wel kunt uitgeven (private sleutel).

Commerciële hashing

Het wordt ook gebruikt voor persoonlijke data. Als je dingen online in een winkel bestelt maak je eerst een account aan. De meeste van je gegevens worden gehasht, zodat je anoniem kunt bestellen, maar er wel geleverd kan worden aan je adres.

Hashing kan nog verder beveiligd worden door technieken die salt en pepper heten. Met salt kun je een willekeurig gegenereerd getal toevoegen aan de hash, waarna hier weer een nieuwe hash van wordt gemaakt, zodat hackers het nog lastiger krijgen met het kraken van de code.

Met pepper voeg je aan alle records dezelfde reeks van 32 willekeurige tekens toe, waardoor een brute force attack vrijwel uitgesloten wordt. 

Bitcoin hashing

Bij het minen van Bitcoin wordt vaak gesproken over de hashrate. Je kunt nu misschien wel raden wat hiervan de betekenis is.

De hashrate van een computer is de rekenkracht die hij bezit om een moeilijke cryptografische puzzel op te lossen. Deze moeilijke puzzel is het raden van de input van een hash. Wie dat als eerste raadt mag een nieuw block toevoegen aan de blockchain en krijgt de beloning in de vorm van transactiekosten en nieuwe Bitcoins.

De hashrate van het Bitcoin netwerk is de totale rekenkracht van alle computers die Bitcoin minen. Als deze hoger wordt moet de puzzel moeilijker worden. Het is namelijk zo, dat er ongeveer iedere tien minuten een nieuw block gevonden moet worden volgens Satoshi Nakamoto. Als de rekenkracht omlaag gaat, bijvoorbeeld als veel miners stoppen, dan moet de puzzel gemakkelijker worden, anders worden die tien minuten al snel 11 of 12 minuten en gooit dat roet in het schema.

Onderdelen van een Bitcoin block

Als er een nieuw block gemaakt wordt bij Bitcoin heeft dat een aantal gedeelten. In ieder block zit een hash van het vorige block. Dit om ervoor te zorgen dat alle blocks opeenvolgend worden opgeslagen.

Vervolgens kom je de tx_root tegen, die de root hash waarde is van de Merkle tree die alle transacties bevat. Een Merkle tree zou je kunnen zien als een verzameling hashes. Het is een boomdiagram, waarbij alle transacties een hash krijgen en samengevoegd worden, totdat er nog maar één record overblijft met alle transacties (hashes) in een enkele hash, de Merkle root of ook wel root hash genoemd. Met deze methode is een block veel minder bevolkt dan als je er alle transacties in zou moeten schrijven en dat bevordert de snelheid.

Daarna volgt de timestamp. Dit bevat de tijd waarop het block gemaakt is. Zo kun je alleen blocks maken vooruit in de tijd.

Dan volgt de nonce. Dit is een hash die de miner moet raden om een nieuw block te mogen minen.

De toekomst van hashing

Bij cryptocurrency wordt met hashing gewerkt omdat het zo goed en snel werkt. Hashing levert ook een belangrijke bijdrage aan de veiligheid, doordat het een one way systeem is. Je kunt heel gemakkelijk een hash genereren, maar om vanuit de hash de input te raden is vrijwel onmogelijk.

Aangezien hashing essentieel is voor de veiligheid zal het nog lang ingezet worden. Al zal met de komst van quantum computers een nieuwe truc verzonnen moeten worden.

Test je kennis

Vraag: 1/5Hoe noem je datgene wat je in een hash wilt omzetten?
AInput
BOutput
CInfo
DCryptografisch