Digitale handtekeningen en hashing

Digitale handtekeningen en cryptografische hashfuncties vormen de geheime saus die cryptocurrency laat werken. Ze zetten de crypto om zo te zeggen in valuta. Uw digitale handtekening bewijst dat u de privésleutel heeft die het eigendom claimt van activa die in een transactie worden beschreven. Een hash-functie definieert en beveiligt een transactie.

Cryptografie – Wil je een geheim weten??

Digitale handtekeningen en hash-functies leven in cryptografie, dus wat is cryptografie? Cryptografie definieert de kunst en wetenschap van het coderen en decoderen van berichten om de privacy tussen communicatoren te behouden.

De Salad Days of Cryptography

Verschillende vormen van cryptografie overheersen in verschillende perioden door de jaren heen. In de dagen van Julius Caesar was het voldoende om het alfabet te draaien. En cryptografen noemen dit dus “het Caesarcijfer”. In plaats van het woord “kat” kan een gecodeerd bericht alle letters eenvoudig een stap naar links draaien, dus “kat” vertaalt zich in “dbu”. In de film 2001: A Space Odyssey, draai de letters “HAL” op dezelfde manier, en wat krijg je?

Naarmate de tijd verstrijkt, breken cryptografiesystemen terwijl cryptanalytici elk gegeven systeem oplossen.

Cryptografie met openbare sleutel

afbeelding met digitale handtekeningen

Asymmetrische cryptografie, ook wel bekend als public key / private key encryptie of simpelweg public key cryptografie, heerst momenteel. Openbare sleutels en privésleutels zijn gewoon cijfers.

De term asymmetrisch onderscheidt het van symmetrische cryptografie. Bij symmetrische cryptografie codeert en decodeert dezelfde sleutel het bericht. Daarom moet de sleutel verborgen blijven. Dit creëert een probleem met de distributie van de sleutel – hoe de sleutel veilig naar de ontvanger te verzenden, evenals het versleutelde bericht?

Cryptografie met openbare sleutel lost dit probleem op door een openbare sleutel te publiceren die iedereen kan gebruiken om een ​​bericht te versleutelen, en de gebruiker houdt een privésleutel voor zichzelf die kan worden gebruikt om het bericht te ontsleutelen. Dit werkt door de magie van wiskundige eenrichtingsfuncties. One-way-functies berekenen eenvoudig en gemakkelijk, maar zijn bestand tegen reverse engineering.

Voorbeeld van cryptografie met openbare sleutel

Ter illustratie met een heel eenvoudig voorbeeld, vermenigvuldig twee priemgetallen: prime1 * prime2 = result. Gegeven getallen die voldoende groot zijn, kan iedereen naar het resultaat kijken, maar het is een grote moeilijkheid om te bepalen welke twee priemgetallen zijn gebruikt om tot dat resultaat te komen. Het resultaat vertegenwoordigt de openbare sleutel en prime1 en prime2 vertegenwoordigen de privésleutel.

Asymmetrische cryptografie breekt wanneer hackers er voldoende rekenkracht tegen gebruiken. Hackers hebben echter supercomputers nodig om dit binnen een redelijk tijdsbestek te bereiken. Versleuteling zal moeten evolueren wanneer kwantumcomputers de norm worden.

Digitale handtekeningen

Een digitale handtekening, gemaakt door de privésleutel, vertegenwoordigt de privésleutel en toont daarmee de gebruiker die is afgemeld voor de gegeven transactie.

U kunt een digitale handtekening zien als een variatie op een gecodeerd bericht. Net zoals cryptografie met een openbare sleutel een gecodeerd bericht creëert, creëert een privésleutel ook een digitale handtekening. Met de openbare sleutel kunt u snel controleren of de digitale handtekening is gemaakt door de privésleutel. Beschouw dit als een soort legpuzzel. De puzzel kan erg moeilijk zijn om te voltooien, maar als je hem correct hebt voltooid, kun je hem in één oogopslag verifiëren.

Feesten in het Hash House

Een cryptografische hash is het resultaat van een wiskundige functie die gegevens van een willekeurige grootte in kaart brengt in een reeks bits met een vaste grootte, ook wel de hash-waarde of gewoon de hash genoemd. De opgegeven invoergegevens resulteren altijd in dezelfde hash. Als een bericht dus niet overeenkomt met de hash-waarde die eraan is gekoppeld, weet u dat er met het bericht is geknoeid. Twee verschillende berichten mogen nooit dezelfde hash-waarde creëren. Als ze dat doen, vormt dit een botsing en is de hash-functie die die waarde heeft gecreëerd fataal gebrekkig.

Een eenvoudig voorbeeld van hashen

Om dit te illustreren, nemen we aan dat we de simpele string “ABCDE” willen hashen als de invoergegevens.

Laten we een eenvoudig hash-algoritme maken. Eerst vertalen we de letters in cijfers: A = 1, B = 2, C = 3, D = 4, E = 5. Onze resulterende hash-waarde moet één cijfer zijn. Een elementaire methode telt simpelweg alle cijfers bij elkaar op: 1 + 2 + 3 + 4 + 5 = 15. Dit levert een tweecijferig getal op, dus ons algoritme gaat recursief verder met het optellen van elk cijfer van dit getal: 1 + 5 = 6. Dit maakt 6 onze hash-waarde, en 6 staat voor “ABCDE” als zijn hash.

Als u “ABCDE” ontvangt als een bericht, weergegeven door 6 als hash, vertrouwt u erop dat het bericht correct is. Maar als u het bericht “ABCXE” hebt ontvangen, weergegeven door de hash van 6, is er een discrepantie, duidelijk omdat er met het bericht is geknoeid.

Ons eenvoudige hash-algoritme faalt natuurlijk op veel niveaus. Ten eerste creëert de string “EDCBA” of een combinatie daarvan dezelfde hash als “ABCDE”, waardoor botsingen ontstaan. Complexe wiskunde lost deze problemen op. Het hash-algoritme dat momenteel het meest wordt gebruikt in cryptocurrency heet SHA-256 (het acroniem staat voor Secure Hash Algorithm). In het SHA-256-algoritme bedraagt ​​de vaste grootte van de hash-waarde 256 bits.

Digitale handtekeningen en hashing in cryptocurrency

Oké, dus hoe gebruiken we eigenlijk digitale handtekeningen en hashing in cryptocurrencies?

Laten we eens kijken naar een Bitcoin-transactie om de technologie in actie te zien.

Een Bitcoin-transactie valt uiteen in twee delen: 1) het invoergedeelte en 2) het uitvoergedeelte.

Het invoergedeelte bevat de openbare sleutel van de afzender, informatie die aangeeft dat de afzender genoeg Bitcoins bezit om de transactie te dekken, en andere nuttige informatie. De privésleutel van de afzender maakt een digitale handtekening om deze transactie te ondertekenen. Deze digitale handtekening gaat naar het invoergedeelte van de transactie.

Het uitvoergedeelte bevat het portefeuilleadres van de ontvanger en een index omdat er meer dan één uitvoer is (verschillende uitvoer gaat naar de ontvanger, de afzender en naar de mijnwerker).

Hashing speelt een rol om de integriteit van de transactie te beschermen. Gegevens zoals de betaler, de ontvanger en het betaalde bedrag vereisen hashing om te beschermen tegen kwaadwillende actoren die deze informatie wijzigen. Door de cryptografische sleutel en deze invoerparameters te combineren om de hashfunctie te voeden, wordt de transactie-ID gemaakt. We weten nu met cryptografische zekerheid dat de afzender inderdaad de bevoegdheid heeft om de betaling uit te voeren en dat de details van de transactie correct zijn en er niet mee geknoeid is.

Een vlieg in de karnemelk

Een bekend probleem met Bitcoin-transacties is ontstaan ​​met iets genaamd transactie kneedbaarheid.

Transactie-vormbaarheid treedt op omdat Bitcoin verschillende velden in de transactie hasht. Tijdens de verwerking van de transactie kunnen sommige van deze velden op schijnbaar marginale en onbeduidende manieren veranderen. Maar omdat ze veranderen, verandert de hash-waarde, waardoor de transactie-ID verandert.

Om dit te visualiseren, denk aan een veld dat het gehele getal 123 bevat, maar tijdens de verwerking breidt het systeem dit uit tot 0123. Beide vormen hetzelfde getal, en als we ernaar kijken, weten we dat ze hetzelfde zijn, maar de hash-functie ziet ze als verschillend en creëert vervolgens verschillende hash-waarden voor elk. Deze gril biedt kansen voor slechte acteurs om het systeem te bespelen.

SegWit schiet te hulp

Segregated Witness (SegWit) -technologie loste dit probleem op. SegWit maakt een structuur los van een blok (gescheiden). Deze aparte structuur bevat de informatie die nodig is om de geldigheid van een transactie vast te stellen (getuige de geldigheid van de transactie), maar bevat niet de transactiegegevens zelf. Door transactiegegevens op deze manier te scheiden, werd de mogelijkheid tot maakbaarheid weggenomen.

Afsluitende gedachten

Cryptografie evolueert naarmate de technologie evolueert. Computers in de toekomst zullen zeker de cryptografie van vandaag doorbreken. Maar voor de huidige wereld waarin we leven, bieden digitale handtekeningen en cryptografische hashes voldoende waarborgen om de veiligheid en integriteit van onze transacties te waarborgen..