Acest articol este un extras din carte Ghidul profanului pentru Bitcoin de Logan Brutsche și este republicată aici cu permisiunea autorului.

Criptografia este știința aplicării funcțiilor matematice pe bucăți de date pentru a garanta securitatea acestora.

O mulțime de ficțiuni populare implică faptul că orice sistem poate fi piratat, atâta timp cât aveți un hacker suficient de bun. Această „hacking la Hollywood” nu funcționează lumea reală – un hacker trebuie să găsească o vulnerabilitate într-un sistem de exploatat, cum ar fi o cameră server deblocată, o parolă ușor de ghicit, un port de rețea neprotejat sau o „ușă din spate” instalat ca un job intern pentru a obține acces neautorizat ulterior.

Deși este adevărat, nu putem garanta niciodată că un anumit sistem nu are vulnerabilități – la urma urmei, sistemele sunt create de oameni imperfecți – sentimentul că „orice poate fi spart” este fals. De la începutul anilor 90, am avut acces la tehnici criptografice care sunt pur și simplu imune la hacking. Este aplicarea unor astfel de tehnici care uneori pot lăsa loc exploatării.

Criptografia în sine nu poate fi piratată pentru a genera o semnătură criptografică falsificată (definită în scurt timp), la fel cum matematica nu poate fi piratată pentru a face 2 + 2 = 5 – deși atât criptografia, cât și matematica pot fi utilizate incorect. Dacă un sistem care utilizează criptografie eșuează, este din cauză că un proiectant a aplicat incorect criptografia. Nu pentru că criptografia nu a funcționat sau pentru că cineva a „piratat” criptografia – la fel cum nu este vina matematicii dacă banca ta gestionează greșit contul tău sau vina e-mailului când mama ta descarcă un atașament necunoscut și primește un virus de computer . Aceasta este o distincție importantă, deoarece Bitcoin este foarte direct o aplicație a criptografiei stabilite.

Criptografia nu este o tehnologie nouă, netestată. Toate tehnicile criptografice utilizate de Bitcoin au fost utilizate de la înființarea internetului și sunt esențiale pentru multe protocoale comune de internet utilizate în fiecare zi.. Știința criptografiei este considerată fiabilă și esențială de către informaticieni, în același mod în care știința rachetelor este considerată fiabilă și esențială de NASA.

Keypairs: Piatra de temelie a criptografiei

Keypairs sunt piatra de temelie a criptografiei utilizate în blockchain-uri. O pereche de chei are două părți: o cheie privată și o cheie publică. Aceste chei nu sunt altceva decât numere foarte mari cu o relație matematică specifică, utilizate în locul parolelor și numele de utilizator.

Ați gestiona o cheie publică, cum ar fi prenumele sau un nume de utilizator: în majoritatea cazurilor, o împărtășiți cu oricine vă întreabă, iar cei care o au o pot folosi pentru a vă referi sau a vă contacta. Este legat de reputația dvs. (sau, în cazul Bitcoin, istoricul tranzacțiilor dvs.), deci este posibil să aveți mai multe chei publice (și, prin urmare, mai multe perechi de chei) pe care le utilizați în scopuri diferite. O cheie publică poate fi utilizată pentru a face referire sau a vizualiza un cont, dar nu poate autoriza singură nicio acțiune asupra contului respectiv.

Cheia privată ar trebui tratată ca o parolă: nu trebuie partajată cu nimeni și este utilizată pentru autentificarea anumitor acțiuni, cum ar fi trimiterea BTC.

Dar există o diferență importantă între o cheie privată și o parolă. Pentru a utiliza o parolă, trebuie să o trimiteți unei persoane sau unui server, astfel încât să poată fi comparată cu înregistrările acestora. Trebuie să aveți încredere că parola va fi tratată în mod responsabil după trimiterea acesteia. În schimb, o cheie privată poate fi utilizată pentru a vă autentifica fără a o trimite nicăieri. Singurul loc în care a fost stocat vreodată sau utilizat direct este pe dispozitivul dvs. local.

Acest lucru este important, deoarece dacă vă puteți autentifica fără a vă trimite secretul oriunde, puteți rămâne în controlul complet al securității sale – nu sunteți vulnerabili la decăderile de securitate ale altor sisteme. Aceasta este o parte esențială a ceea ce face ca Bitcoin să nu poată fi dezactivat. Nu există parole sau chei private stocate pe Bitcoin în sine pentru ca un atacator să compromită și totuși utilizatorii pot autentifica în continuare tranzacțiile.

Dar cum ați putea folosi o cheie privată pentru a autentifica o tranzacție, dacă nu trimiteți niciodată cheia privată nicăieri? Răspunsul are legătură cu relația matematică dintre cheile private și publice: semnături criptografice.

Semnături criptografice

Există mai multe tehnici diferite pentru generarea și validarea semnăturilor criptografice, iar teoremele matematice care le permit să funcționeze sunt cu mult dincolo de scopul acestui articol. Pentru cei care nu sunt familiarizați cu criptografia, procesul descris aici ar putea părea inițial imposibil. Îmi amintesc clar că am avut această impresie când mi-am început cercetarea în Bitcoin acum patru ani.

Deocamdată voi observa pur și simplu din nou că aceste tehnologii sunt utilizate în multe protocoale comune de Internet și sunt o parte stabilită a științei informației.

Imaginați-vă doi oameni, Alice și Bob, care au tranzacționat deja chei publice în persoană. Alice vrea să-i trimită lui Bob un mesaj, dar Bob este o persoană foarte suspectă și nu va avea încredere că mesajul a venit de fapt de la Alice, cu excepția cazului în care îl poate dovedi matematic, dincolo de orice îndoială. Pentru a facilita această dovadă, sunt de acord să utilizeze o semnătură criptografică.

Pentru a genera semnătura, Alice folosește algoritmul de generare a semnăturilor computerului, care ia ca intrare cheia privată și mesajul complet și generează o semnătură criptografică. Apoi îi trimite lui Bob acest combo de mesaj / semnătură – dar, în mod crucial, nu îi trimite cheia privată.

Când Bob primește mesajul și semnătura, are de utilizat un algoritm de validare a semnăturii complementare. Acest algoritm ia ca intrare mesajul și semnătura și determină public cheia perechii de chei folosită de Alice pentru a genera semnătura. Când Bob vede algoritmul său generând cheia publică a lui Alice, el a dovedit matematic că semnătura trebuie să fi fost generată cu perechea de chei a lui Alice, chiar dacă nu știe și nu poate calcula jumătatea privată a perechii de chei a lui Alice..

Puneți mai succint, acest proces de semnare criptografică îi permite lui Bob să verifice dacă mesajul nu a fost creat sau modificat de o terță parte și trebuie să fi fost generat cu cheia privată a lui Alice, fără a fi nevoie (sau a putea) să știe cheia ei privată. Tot ce are nevoie este combinația mesaj / semnătură și cheia publică a acesteia.

Intuitiv, acest lucru pare imposibil și s-ar putea să vă simțiți de parcă ați fi înțeles ceva. Dacă cheile private și publice ale lui Alice sunt atât de strâns legate, iar Alice și-a folosit cheia privată pentru a genera semnătura pe care o primește Bob, cum poate el să obțină cheia sa publică, dar nu-și poate găsi cheia privată? Răspunsul la acest lucru necesită o înțelegere mult mai profundă a matematicii decât au majoritatea oamenilor și este mult în afara sferei acestei cărți.

Totuși, această tehnică se bazează și se folosește în fiecare zi și este considerată solidă în roca comunității de criptografie. Când vizitați un site web și adresa acestuia începe cu https, „s” indică faptul că site-ul s-a validat cu o semnătură criptografică. Computerul dvs. a folosit un algoritm de validare a semnăturii, la fel cum a făcut Bob în exemplul de mai sus, pentru a verifica dacă site-ul web a venit cu adevărat din perechea de taste potrivită. Această semnătură criptografică este bazată pe asigurarea oricărei interacțiuni suplimentare între dvs. și site-ul web, criptată și autentică. Dacă acest test nu reușește, browserele moderne vă vor avertiza și vor semnaliza site-ul web ca fiind periculos.

Numere suficient de mari

Anterior, am menționat pe scurt că tastele private și publice funcționează ca nume de utilizator și parole, dar în realitate nu sunt altceva decât numere extrem de mari, cu o relație matematică specială. Având în vedere acest lucru, mi se adresează adesea următoarele întrebări:

„Nu poate cineva să calculeze sau să numere doar o grămadă de numere și să le încerce ca chei private? Oare nu ar trece în cele din urmă pe o cheie privată a unei perechi de chei vizate și, prin urmare, vor dobândi controlul asupra identității respective? Într-adevăr, în cazul Bitcoin, acest lucru ar permite unui atacator să fure banii deținuți de o pereche de chei.

Este o întrebare bună și totuși nu se întâmplă. După cum sa menționat anterior, există mai multe adrese Bitcoin cu milioane de dolari în valoare de BTC care nu s-au mișcat de ani de zile – chiar dacă tot ceea ce ar fi necesar pentru a-l fura este cheia privată corectă – numărul imens potrivit! Dacă ai putea ghici cheia privată a acelor adrese, banii îți aparțin oriunde. Spre deosebire de o parolă, puteți verifica cheile private local pe propria mașină și nu există un server care să limiteze de câte ori sau cât de repede le încercați..

Deci, de ce nu a furat încă nimeni aceste fonduri? Răspunsul constă în dimensiunea aproape absurdă a numerelor utilizate ca chei private. Sunt suficient de imens.

Să începem cu un experiment de gândire simplu. Imaginați-vă că cheia dvs. privată a fost suficient de mare încât, dacă toate computerele lumii ar funcționa împreună, ar fi nevoie de 24 de ore pentru a ghici forța brută. Dacă adăugați doar o singură cifră la cheia dvs. privată, ar exista de zece ori mai multe permutări pentru a trece computerele, deci ar dura 10 zile în loc de una. Alte șase cifre l-ar aduce la 27.000 de ani.

În fiecare caz, generarea cheii private – care necesită doar capacitatea de a crea numere aleatorii – rămâne banală. Folosirea cheii private pentru a genera semnături, precum și verificarea acestor semnături în raport cu cheia publică, rămâne, de asemenea, simplă din punct de vedere al calculului. Dar munca necesară pentru a ghici cheia privată crește exponențial cu fiecare cifră în plus. Pentru a face cheile private „imune” la ghicirea cu forță brută, trebuie doar să adăugăm suficiente cifre – trebuie doar să le facem suficient de mari.

Deci, cât de mare este suficient de mare? Cheile private utilizate în Bitcoin sunt numere întregi de 256 de biți, care se ridică la un număr care are șaptezeci și șase de cifre. Puterea dimensiunii acestui număr este incredibilă. Următoarea ilustrație este derivată în mare măsură din cartea lui Bruce Schneier Criptografie aplicată, și este o demonstrație convingătoare a numărului suficient de mare.

În primul rând, recunoașteți că o consecință specifică a celei de-a doua legi a termodinamicii este că există o energie minimă necesară pentru a schimba un singur bit binar de informații (schimbarea unui 1 la un 0 sau viceversa). Aceasta înseamnă că orice proces de calcul necesită o cantitate minimă de energie pentru a efectua, indiferent de hardware-ul utilizat.

Acum, să presupunem că ați reușit să valorificați întreaga energie a soarelui doar pentru a alimenta un computer special conceput, a cărui sarcină este să numărați sau să ghiciți cheile private, în speranța de a găsi cheia privată a unei perechi de taste (care ar putea controla BTC).

Folosind un pic de matematică și termodinamică, veți descoperi că un computer perfect eficient poate conta până la 2178 de valori, având în vedere întreaga energie anuală a soarelui. Dacă împărțim această valoare în numărul de posibile chei private, 2256, vom descoperi că acest ipotetic computer ar putea doar să ghicească sau să numere până la 0,0000000000000000000003% din numărul total de chei private posibile – având în vedere întreaga producție anuală de energie a soarelui.

În plus, acest lucru este doar de numărat și nu include sarcina mult mai complexă de a verifica efectiv fiecare cheie privată pentru a vedea dacă corespunde cheii publice potrivite. Deci, cu 0,000000000000000000000003% șansa ca acest computer să se întâmple cu cheia privată corectă până la sfârșitul unui an, nici măcar nu și-ar da seama.

Aceste numere nu au nicio legătură cu tehnologia dispozitivelor; sunt maximele care sunt posibile conform legilor termodinamicii care au fost stabilite încă din anii 1930. Și implică cu tărie că atacurile cu forță brută împotriva tastelor de 256 de biți (pe care le folosește Bitcoin) vor fi imposibile până când computerele sunt construite din altceva decât materia și ocupă altceva decât spațiul.

Aceasta este puterea unui număr suficient de mare. Nu contează cât de bun este un hacker. Cu excepția cazului în care el poate folosi puterea a trei sute de sextillion de sori timp de un an sau a unui soare de trei sute de sextillion de ani, computerul său nu poate numara prin toate cheile private – darămite să le testăm sau să le folosim în alt mod.

Pentru o privire mai aprofundată asupra Bitcoin și criptografiei, ridicați cartea lui Logan Brutsche, Ghidul profanului pentru Bitcoin.