Hvordan beskytter kryptografi blockchain?
Denne artikel er et uddrag fra bogen Lægmandens vejledning til Bitcoin af Logan Brutsche og genudgives her med forfatterens tilladelse.
Kryptografi er videnskaben om at anvende matematiske funktioner på stykker data for at garantere deres sikkerhed.
En masse populær fiktion indebærer, at ethvert system kan hackes, så længe du har en god nok hacker. Denne “Hollywood-hacking” er ikke, hvordan den virkelige verden fungerer – en hacker skal finde en sårbarhed i et system, der skal udnyttes, såsom et ulåst serverrum, en let at gætte adgangskode, en ubeskyttet netværksport eller en “bagdør” installeret som et internt job for at få uautoriseret adgang senere.
Selvom det er sandt, kan vi aldrig garantere, at et givet system ikke har nogen sårbarheder – trods alt er systemer lavet af ufuldkomne mennesker – følelsen af, at “alt kan hackes” er falsk. Siden begyndelsen af 90’erne har vi haft adgang til kryptografiske teknikker, der simpelthen er immune over for hacking. Det er anvendelsen af sådanne teknikker, der nogle gange kan give plads til udnyttelse.
Selve kryptografi kan ikke hackes for at generere en forfalsket kryptografisk signatur (defineret kort), ligesom matematik ikke kan hackes for at skabe 2 + 2 = 5 – selvom både kryptografi og matematik kan bruges forkert. Hvis et system, der bruger kryptografi mislykkes, skyldes det, at en designer forkert anvendte kryptografi. Det er ikke fordi kryptografi ikke fungerede, eller fordi nogen “hackede” kryptografien – ligesom det ikke er matematikens skyld, hvis din bank forkert håndterer din konto eller e-mailfejl, når din mor downloader en ukendt vedhæftet fil og får en computervirus . Dette er en vigtig skelnen, fordi Bitcoin meget direkte er en anvendelse af etableret kryptografi.
Kryptografi er ikke en ny, uprøvet teknologi. Alle de kryptografiske teknikker, der er brugt af Bitcoin, har været i brug siden starten af Internettet og er vigtige for mange almindelige internetprotokoller, der bruges hver dag. Videnskaben om kryptografi betragtes som pålidelig og vigtig af computerforskere på samme måde som raketvidenskab betragtes som pålidelig og essentiel af NASA.
Tastaturer: hjørnestenen i kryptografi
Tastaturer er hjørnestenen i kryptografien, der bruges i blokkæder. Et tastaturpar har to dele: en privat nøgle og en offentlig nøgle. Disse nøgler er egentlig ikke andet end meget store tal med et specifikt matematisk forhold, der bruges i stedet for adgangskoder og brugernavne.
Du vil håndtere en offentlig nøgle som dit fornavn eller et brugernavn: i de fleste tilfælde deler du det med alle, der spørger, og de, der har det, kan bruge det til at henvise til eller kontakte dig. Det er bundet til dit omdømme (eller i Bitcoins tilfælde din transaktionshistorik), så du har muligvis flere offentlige nøgler (og derfor flere tastaturer), som du bruger til forskellige formål. En offentlig nøgle kan bruges til at henvise til eller se en konto, men kan ikke i sig selv godkende nogen handling på den konto.
Den private nøgle skal behandles som en adgangskode: den skal ikke deles med nogen og bruges til at godkende visse handlinger, såsom at sende BTC.
Men der er en vigtig forskel mellem en privat nøgle og en adgangskode. For at bruge en adgangskode skal du sende den ud til en person eller server, så den kan kontrolleres i forhold til deres optegnelser. Du skal stole på, at adgangskoden håndteres ansvarligt, når du har sendt den. I modsætning hertil kan en privat nøgle bruges til at godkende dig selv uden at sende den nogen steder. Det eneste sted, det nogensinde er gemt eller brugt direkte, er på din lokale enhed.
Dette er vigtigt, for hvis du kan godkende dig selv uden at sende din hemmelighed hvor som helst, kan du forblive i fuld kontrol over dens sikkerhed – du er ikke sårbar over for andre systems systems bortfald. Dette er en vigtig del af, hvad der gør Bitcoin uhackelig. Der er ingen adgangskoder eller private nøgler gemt på Bitcoin selv for en hacker at gå på kompromis, og alligevel kan brugerne stadig godkende transaktioner.
Men hvordan kunne du bruge en privat nøgle til at godkende en transaktion, hvis du aldrig sender den private nøgle hvor som helst? Svaret har at gøre med det matematiske forhold mellem de private og offentlige nøgler: kryptografiske signaturer.
Kryptografiske signaturer
Der er flere forskellige teknikker til generering og validering af kryptografiske signaturer, og de matematiske sætninger, der giver dem mulighed for at arbejde, ligger langt uden for denne artikels anvendelsesområde. For dem, der ikke er bekendt med kryptografi, kan den proces, der er beskrevet her, oprindeligt lyde direkte umulig. Jeg husker tydeligt, at jeg havde dette indtryk, da jeg begyndte min forskning i Bitcoin for fire år siden.
For nu vil jeg blot bemærke igen, at disse teknologier bruges i mange almindelige internetprotokoller og er en etableret del af informationsvidenskaben.
Forestil dig to personer, Alice og Bob, som allerede har handlet offentlige nøgler personligt. Alice vil sende Bob en besked, men Bob er en meget mistænksom person og vil ikke stole på, at meddelelsen faktisk kom fra Alice, medmindre han kan bevise det matematisk, uden tvivl. For at lette dette bevis accepterer de at bruge en kryptografisk signatur.
For at generere signaturen bruger Alice sin computers signaturgenereringsalgoritme, som tager sin private nøgle og hendes komplette besked som input og genererer en kryptografisk signatur. Derefter sender hun Bob denne meddelelse / signaturkombination – men altafgørende, sender ikke hendes private nøgle.
Når Bob modtager beskeden og signaturen, har han en supplerende valideringsalgoritme til signatur, der skal bruges. Denne algoritme tager meddelelsen og signaturen som input og bestemmer offentlig nøgle til det tastatur, som Alice brugte til at generere signaturen. Når Bob ser, at hans algoritme udsender Alice’s offentlige nøgle, har han matematisk bevist, at signaturen skal være genereret med Alice’s tastatur, selvom han ikke kender og ikke kan beregne den private halvdel af Alice’s tastatur..
Sæt mere kortfattet, denne kryptografiske signaturproces giver Bob mulighed for at kontrollere, at meddelelsen ikke blev oprettet eller ændret af en tredjepart og skal være genereret med Alices private nøgle uden at skulle (eller være i stand til) at kende hendes private nøgle. Alt, hvad han har brug for, er meddelelsen / signaturkombinationen og hendes offentlige nøgle.
Intuitivt synes dette umuligt, og du kan føle, at du har misforstået noget. Hvis Alice’s private og offentlige nøgler er så nært beslægtede, og Alice brugte sin private nøgle til at generere den signatur, som Bob modtager, hvordan kan det være, at han kan udlede hendes offentlige nøgle, men ikke kan finde sin private nøgle? Svaret på dette kræver en langt dybere forståelse af matematik end de fleste mennesker har, og ligger langt uden for denne bogs anvendelsesområde.
Stadig er denne teknik afhængig og brugt hver dag og betragtes som bundsolid inden for kryptografisamfundet. Når du besøger et websted, og dets adresse starter med https, angiver “s”, at webstedet har valideret sig selv med en kryptografisk signatur. Din computer brugte en signaturvalideringsalgoritme, ligesom Bob gjorde i ovenstående eksempel, for at kontrollere, at webstedet virkelig kom fra det rigtige tastatur. Denne kryptografiske signatur er afhængig af for at sikre enhver yderligere interaktion mellem dig og hjemmesiden er krypteret og autentisk. Hvis denne test mislykkes, advarer moderne browsere dig og markerer webstedet som farligt.
Tilstrækkelig enorme tal
Tidligere nævnte jeg kort, at private og offentlige nøgler fungerer som brugernavne og adgangskoder, men i virkeligheden er det ikke andet end ekstremt store tal med et specielt matematisk forhold. I betragtning af det bliver jeg ofte stillet følgende spørgsmål:
”Kan nogen ikke bare gætte computeren eller tælle igennem en masse tal og prøve dem som private nøgler? Ville de ikke til sidst løbe over en privat nøgle i et målrettet nøglepar og derved få kontrol over denne identitet? ” Faktisk, i tilfælde af Bitcoin, ville dette give en hacker mulighed for at stjæle de penge, som et tastatur har.
Det er et godt spørgsmål, og alligevel sker det ikke. Som nævnt før er der flere Bitcoin-adresser med millioner af dollars BTC, der ikke har bevæget sig i årevis – selvom alt, hvad der er nødvendigt for at stjæle det, er den rigtige private nøgle – det rigtige enorme antal! Hvis du kunne gætte den private nøgle til disse adresser, er pengene dine til at sende hvor som helst. I modsætning til en adgangskode kan du kontrollere private nøgler lokalt på din egen maskine, og der er ingen server, der begrænser hvor mange gange eller hvor hurtigt du prøver dem.
Så hvorfor har ingen stjålet disse midler endnu? Svaret ligger i den næsten absurde størrelse på de numre, der bruges som private nøgler. De er tilstrækkelig enorm.
Lad os starte med et simpelt tankeeksperiment. Forestil dig, at din private nøgle var lige stor nok til, at hvis alle verdens computere fungerede sammen, ville det tage dem et helt døgn at bruteforce gætte det. Hvis du kun tilføjer et ciffer mere til din private nøgle, ville der være ti gange flere permutationer for computere at gå igennem, så det ville tage 10 dage i stedet for en. Seks cifre mere ville bringe det til 27.000 år.
I begge tilfælde forbliver generering af den private nøgle – som kun kræver evnen til at oprette tilfældige tal – trivielt. Brug af den private nøgle til at generere underskrifter såvel som at kontrollere disse underskrifter mod den offentlige nøgle forbliver også beregningsmæssigt enkel. Men det arbejde, der kræves for at gætte den private nøgle, vokser eksponentielt med hvert ekstra ciffer. For at gøre private nøgler “immune” overfor gutthedsstyrke, behøver vi kun tilføje cifre nok – vi behøver kun gøre dem tilstrækkeligt store.
Så hvor stort er tilstrækkeligt stort? De private nøgler, der bruges i Bitcoin, er 256-bit heltal, hvilket svarer til et tal, der er seksogfirs cifre langt. Kraften i størrelsen på dette nummer er utrolig. Den følgende illustration er stærkt afledt af Bruce Schneiers bog Anvendt kryptografi, og er en overbevisende demonstration af et tilstrækkeligt stort antal.
For det første skal du erkende, at en specifik konsekvens af termodynamikens anden lov er, at der er et minimum af energi, der kræves for at ændre en enkelt binær bit af information (ændre en 1 til en 0 eller vice versa). Dette betyder, at enhver beregningsproces kræver en vis minimal energi at udføre, uanset den anvendte hardware.
Antag nu, at du kun kunne udnytte hele solens energiproduktion til at drive en specielt designet computer, hvis opgave er at tælle igennem eller gætte private nøgler i håb om at finde den private nøgle til et tastatur (som måske styrer BTC).
Ved hjælp af lidt matematik og termodynamik finder du ud af, at en perfekt effektiv computer kan tælle gennem 2178 værdier givet solens samlede årlige energiproduktion. Hvis vi deler denne værdi i antallet af mulige private nøgler, 2256, finder vi, at denne hypotetiske computer kun ville være i stand til at gætte eller tælle gennem 0,000000000000000000000003% af det samlede antal mulige private nøgler – givet hele solens årlige energiproduktion.
Desuden tæller dette bare og inkluderer ikke den meget mere komplekse opgave med faktisk at kontrollere hver privat nøgle for at se, om den svarer til den rigtige offentlige nøgle. Så i 0.0000000000000000000003% chancen for, at denne computer skete på tværs af den rigtige private nøgle ved udgangen af et år, ville den ikke engang indse det.
Disse tal har intet at gøre med enhedernes teknologi; de er de maksimale, der er mulige i henhold til de termodynamiske love, der er blevet etableret siden 1930’erne. Og de antyder stærkt, at brute-force-angreb mod 256-bit nøgler (som Bitcoin bruger) vil være umulige, indtil computere er bygget fra noget andet end stof og optager noget andet end plads.
Dette er kraften i tilstrækkeligt store antal. Det betyder ikke noget, hvor god en hacker er. Medmindre han kan udnytte kraften fra 300 hundrede sextillion sol i et år eller en sol i tre hundrede seksti år, kan hans computer ikke engang tælle gennem alle de private nøgler – endsige teste eller på anden måde bruge dem.
For at få et mere dybtgående kig på Bitcoin og kryptografi, hent Logan Brutsches bog, Lægmandens vejledning til Bitcoin.