Een beginnershandleiding voor cryptografie

Om cryptocurrencies op protocolniveau te begrijpen, is het noodzakelijk om de wiskundige relaties te begrijpen die ten grondslag liggen aan alle cryptografie. Je kunt deze reis beginnen door helemaal terug te gaan naar het allereerste begin: de geboorte van het bit & de evolutie naar de byte.

Basis tot de basis

Een halve eeuw geleden publiceerde de vader van het informatietijdperk, Claude Shannon, het nu door de industrie gerespecteerde Een wiskundige communicatietheorie proefschrift. Dat is de naam van de vrijgegeven versie openbaar gepubliceerd door de toenmalige wiskundige in het midden van de jaren ’30 in 1949. De eerder geclassificeerde versie was echter een oorlogsinspanning gepubliceerd door het prestigieuze Bell Labs genaamd “A Mathematical Theory of Cryptography.” Veel van de kernprincipes die in de populaire communicatietheorie werden gepubliceerd, kwamen voort uit de geheimzinnige theorie van cryptografie. In feite zei Shannon het volgende met betrekking tot het intrinsieke & overlappende eigenschappen van informatiecommunicatietheorie & cryptografie:

Ze waren zo dicht bij elkaar dat je ze niet van elkaar kon scheiden.

Hoewel het merendeel van dit artikel zich zal concentreren op wat er kwam na zijn thesis ‘Mathematical Theory of Communication’, om een ​​bepaalde standaard te begrijpen, is het noodzakelijk dat we een decennium terug in de carrière van Shannon – tot toen hij een 28-jarige afgestudeerde student aan het MIT was. Na een master in elektrotechniek, was zijn belangrijkste taak het ontwerpen van nieuwe elektrische circuits voor een vroege versie van de computer. Een wiskundige in hart en nieren, herinnerde zich de abstracte booleaanse wiskunde die hij leerde tijdens zijn niet-gegradueerde studies aan de Universiteit van Michigan. Booleaanse wiskunde, zoals u waarschijnlijk al vermoedde, is een tak van wiskunde die zich bezighoudt met waar & valse verklaringen (of nullen en enen). Booleaanse wiskunde, hoewel fascinerend, kende halverwege de jaren dertig weinig wijdverspreide toepassingen; aan de andere kant, het ontwerp van elektrische circuits, een moderne wetenschappelijke doorbraak, had dringend behoefte aan een gedisciplineerd raamwerk voor verder begrip.

In 1938 publiceerde Shannon zijn masterscriptie: Een symbolische analyse van relais & Schakelcircuits. Deze geniale stelling bewees dat met behulp van Booleaanse algebra, men conceptueel de opstelling van de relais in de dan handmatige telefooncentrales kon automatiseren. Bij uitbreiding betekende dit dat door gebruik te maken van de binaire eigenschappen van elektrische schakelaars als logische functies, men booleaanse algebra kon gebruiken om te vertegenwoordigen & oplossen elk circuitontwerpen.

Dit basiskader voor het bouwen van circuits ligt momenteel ten grondslag aan alle moderne digitale computerhardware.

Een decennium na zijn eerste masterscriptie, terwijl hij zijn stuk de weerstand communicatie & cryptografietheorie diep in het Bell Lab, besloot hij uiteindelijk te noemen wat hij geloofde dat het basiseenheid van alle informatie: een binary gravenhet, of, een beetje.

Van bits tot bytes

En dus ergens in de jaren dat Shannons genialiteit zich uitstrekte over wetenschappelijke informatiecommunicatie & oorlogstijd cryptografie (1944-1949), de bit werd de standaard informatie-eenheid voor alle computers. Computers begrijpen nullen strikt & 1s … dus de vraag volgt: hoe gaan we van binaire code naar bijvoorbeeld dezelfde alfanumerieke tekens die u op dit scherm leest??

Bit-notatie

Een beetje is alleen ooit een nul of een – het heeft alleen twee mogelijke toestanden[0,1]. Voor twee bits krijgen we een totaal van vier mogelijkheden: [00, 01, 10, 11].

Volgens dit patroon wordt het vrij duidelijk dat voor elk n bits die we hebben 2 ^ n mogelijke staten.

Uiteindelijk is er behoefte aan meer symbolen & letters, om het werken met computers ontwikkelaarsvriendelijker te maken, kwamen op de voorgrond van de blik van computerwetenschappers: hoe bouw je een getallensysteem, laat staan ​​een heel alfabet, van slechts 0s & 1s?

Hexadecimaal

Als u ooit online een kleur heeft moeten aanpassen, bent u op een bepaald moment waarschijnlijk een hexadecimale tekenreeks tegengekomen – deze zien er meestal als volgt uit: # 012f5b

Ontwerpers zijn zeer bekend met dit nummeringssysteem omdat het de standaardmanier is om kleuren digitaal te noteren. De kernregel van het hexadecimale nummeringssysteem is dat elk teken wordt weergegeven door strikt een van de volgende zestien waarden: 0-9 & A – F. De eerste tien gehele getallen (nul tellen) plus de eerste zes letters van het Engelse alfabet vormen het volledige hexadecimale nummeringssysteem. Nogmaals, in totaal zestien (16) mogelijke toestanden; een andere manier om 16 te schrijven is 2⁴. Hoe kunnen we deze mogelijke staten vertegenwoordigen??

Met in totaal vier bits: 4 bits = 2⁴ mogelijke toestanden

ASCII

Gehele getallen van één cijfer & de eerste zes letters van het Engelse alfabet zijn zeker een stap naar een vriendelijkere computertaal – maar is het genoeg? Hoe zouden we bijvoorbeeld een spatie aanduiden? maak onderscheid tussen kleine letters & hoofdletters? Of interpunctie gebruiken zoals een uitroepteken of een vraagteken? Nee, zestien karakters zijn niet voldoende.

De originele versie van de huidige standaard, ASCII, stelde een zeven-bit systeem; maar kort daarna werd het standaard om een ​​extensie (of afgeleide) versie van de ASCII te gebruiken die een acht-bits standaard. Deze norm betekende dat ieder door mensen leesbare tekens die door een computer worden uitgevoerd, kunnen worden weergegeven door acht bits, wat zich vertaalt naar 2⁸ = 256 mogelijke toestanden! Deze acht-bits naar alfanumerieke tekenstandaard kan het beste worden samengevat in de onderstaande tabel:

Elk van de 256 tekens kan worden weergegeven door een combinatie van acht bits

Bytes & Voorbij

We hebben nu de bevalling behandeld & pragmatisme van computergebruik met, evenals het definiëren, van bits. Van daaruit hebben we uitgelegd hoe vier bits (2⁴) ons ons hexadecimale systeem geven & hoe acht bits (2⁸) ons onze nog in gebruik zijnde uitgebreide ASCII-taal geven. We gaan nu een laatste principe introduceren dat hopelijk duidelijk zal maken waarom het begrijpen van de grondbeginselen van bits cruciaal is voor een grondig begrip van cryptografie & bij uitbreiding cryptocurrencies.

Acht bits (2⁸) is eigenlijk een superbelangrijk getal, niet alleen in cryptografie & cryptocurrencies maar in alle computers. In feite zijn acht bits zo standaard dat ze een nieuwe naam kregen om een ​​achtbitsreeks te symboliseren: a byte. EEN byte is een reeks van acht bits: 8 bits = 1 byte.

Het feit dat bytes een enkel teken kunnen vertegenwoordigen, is een belangrijke reden waarom factoren van acht extreem veel voorkomende getallen zijn in cryptografie, zoals 128, & 256 (van het beroemde bitcoin-consensus-hash-algoritme SHA256). Intuïtief begrijpen hoe u van bits, naar hexadecimale waarden naar alfanumerieke tekens naar bytes gaat, wordt een kernonderdeel van de benodigde kennis om de drijvende krachten achter cryptocurrencies echt te begrijpen.

Als u zich overweldigd voelt, hoeft u zich geen zorgen te maken, dat is volkomen normaal wanneer u dergelijke complexe onderwerpen doorbreekt. Neem even de tijd voordat u doorgaat naar cryptografische hashfuncties.