Vandaag gaan we uitleggen wat hashing en digitale handtekening in de blockchain is.
Wat is hashing in de blockchain?
Hashing verwijst naar het concept van het nemen van een willekeurige hoeveelheid invoergegevens, het toepassen van een algoritme erop en het genereren van uitvoergegevens met een vaste grootte, een hash genaamd. De invoer kan een willekeurig aantal bits zijn die een enkel teken, een MP3-bestand, een hele roman, een spreadsheet met uw bankgeschiedenis of zelfs het hele internet kunnen vertegenwoordigen.
Het punt is dat de input oneindig groot kan zijn. Het hash-algoritme kan worden gekozen afhankelijk van uw behoeften en er zijn veel openbaar beschikbare hash-algoritmen. Het punt is dat het algoritme de oneindige invoer van bits neemt, er enkele berekeningen op toepast en een eindig aantal bits produceert. Bijvoorbeeld 256 bits.
Waar kan deze hash voor worden gebruikt?
Tegenwoordig worden hashes veel gebruikt voor het maken van vingerafdrukken, ook wel verificatiezones genoemd. Dit betekent dat een hash wordt gebruikt om te verifiëren dat er niet met een bestand is geknoeid of op een onbedoelde manier is gewijzigd door de auteur. Als WikiLeaks bijvoorbeeld een set bestanden publiceert samen met hun MD5-hashes, kan degene die die bestanden downloadt verifiëren dat ze daadwerkelijk van WikiLeaks zijn door de MD5-hash van de gedownloade bestanden te berekenen, en als de hash niet overeenkomt met wat is gepubliceerd door WikiLeaks, dan weet je dat het bestand op de een of andere manier is gewijzigd.
Hoe gebruikt de blockchain de hash?
Hashes worden in blockchains gebruikt om de huidige toestand van de wereld weer te geven. De invoer is de volledige status van de blockchain, dwz alle transacties die tot nu toe hebben plaatsgevonden en de resulterende output-hash vertegenwoordigt de huidige status van de blockchain. De hash wordt gebruikt om tussen alle partijen overeen te komen dat de mondiale staat een en dezelfde is, maar hoe worden deze hashes eigenlijk berekend?
De eerste hash wordt berekend voor het eerste blok of Genesis-blok met behulp van de transacties binnen dat blok. De reeks initiële transacties wordt gebruikt om een blokhash voor het Genesis-blok te berekenen. Voor elk nieuw blok dat vervolgens wordt gegenereerd, wordt de hash van het vorige blok, evenals zijn eigen transacties, ook gebruikt als invoer om de blokhash te bepalen. Dit is hoe een blockchain wordt gevormd, waarbij elke nieuwe block-hash verwijst naar de block-hash die eerder kwam.
Dit hash-systeem zorgt ervoor dat geen enkele transactie in de geschiedenis kan worden gemanipuleerd, want als een deel van de transactie verandert, verandert ook de hash van het blok waartoe het behoort, en alle daaropvolgende blok-hashes als resultaat. Het zou vrij gemakkelijk zijn om elke manipulatie als resultaat op te vangen, omdat alleen hashes kunnen worden vergeleken. Dit is geweldig omdat iedereen op de blockchain het maar eens hoeft te zijn over 256 bits om de potentieel oneindige staat van de blockchain weer te geven. De Ethereum-blockchain is momenteel tientallen gigabytes, maar de huidige staat van de blockchain, vanaf deze opname, is deze hexadecimale hash die 256 bits vertegenwoordigt.
Wat zijn digitale handtekeningen in de blockchain?
Digitale handtekeningen zijn, net als echte handtekeningen, een manier om te bewijzen dat iemand is wie ze zeggen te zijn, behalve dat we cryptografie of wiskunde gebruiken, die veiliger zijn dan handgeschreven handtekeningen die gemakkelijk kunnen worden vervalst. Een digitale handtekening is een manier om te bewijzen dat een bericht afkomstig is van een specifieke persoon en niemand anders, zoals een hacker.
Digitale handtekeningen worden tegenwoordig overal op internet gebruikt. Elke keer dat u een website bezoekt via ACTPS, gebruikt u SSL, dat digitale handtekeningen gebruikt om vertrouwen tussen u en de server te vestigen. Dit betekent dat wanneer u Facebook.com bezoekt, uw browser de digitale handtekening kan controleren die bij de webpagina wordt geleverd om te verifiëren dat deze daadwerkelijk afkomstig is van Facebook en niet van een of andere hacker.
In asymmetrische versleutelingssystemen genereren gebruikers met behulp van een bekend algoritme iets dat een sleutelpaar wordt genoemd. Dit is een openbare sleutel en een privésleutel. De openbare sleutel en de privésleutel zijn met elkaar verbonden door een wiskundige relatie. De openbare sleutel is bedoeld om openbaar te worden verspreid om als adres te dienen voor het ontvangen van berichten van andere gebruikers, zoals een IP-adres of thuisadres.
De privésleutel moet geheim worden gehouden en wordt gebruikt om berichten die naar andere gebruikers zijn verzonden, digitaal te ondertekenen. De handtekening wordt in het bericht opgenomen, zodat de ontvanger het kan verifiëren met de openbare sleutel van de afzender. Op deze manier kan de ontvanger er zeker van zijn dat alleen de afzender dit bericht had kunnen verzenden. Het genereren van een sleutelpaar is analoog aan het aanmaken van een account op de blockchain, maar zonder dat je je ergens hoeft te registreren. Best wel gaaf. Bovendien wordt elke transactie die op de blockchain wordt uitgevoerd, digitaal ondertekend door de afzender.
Om alles met elkaar te verbinden, zou er geen blockchain kunnen zijn zonder hashing en digitale handtekeningen. Hashing biedt een manier voor iedereen op de blockchain om het eens te worden over de huidige toestand van de wereld, terwijl digitale handtekeningen een manier bieden om ervoor te zorgen dat alle transacties alleen door de rechtmatige eigenaren worden uitgevoerd. We vertrouwen op deze twee eigenschappen om ervoor te zorgen dat de blockchain niet is beschadigd of gecompromitteerd.