Pentru securitate, datele neschimbate stocate în cutiile de blocare sunt importante. Ce înseamnă oamenii atunci când spun: "Blockblock-urile sunt imuabile"? În acest post încerc să explic explicațiile cheie.
Acest lucru poate fi util pentru cei care nu sunt familiarizați cu blocade și Bitcoin sau tocmai au ajuns aici.
Ce înseamnă imuabilitatea pentru un detașament?
Invarianta blocării înseamnă că, după ce datele au fost scrise, nimeni, nici măcar administratorul de sistem, nu le poate schimba. Acest lucru oferă avantaje pentru verificare. Ca furnizor de date, puteți dovedi că datele dvs. nu au fost modificate, iar ca destinatar puteți fi siguri de acest lucru. Acest lucru este util pentru bazele de date privind tranzacțiile financiare.
Imutabilitatea este relativă. De exemplu, dacă aș trimite un e-mail unui număr mare de prieteni, aceste date vor rămâne destul de neschimbate din punctul meu de vedere. Pentru a le schimba, ar trebui să conving pe prietenii mei să ștergă emailul (sau să convingă Gmail și persoanele care lucrează cu serverele de mail ale tuturor prietenilor mei să ștergă emailul). Din punctul meu de vedere și cu puterea pe care o am, această scrisoare este neschimbată - nu o pot șterge sau o schimba fără cooperare și cu riscul de a mă găsi.
Prin urmare, imutabilitatea este relativă și legată de cât de dificilă este să schimbăm ceva.
Baze de date private
Într-o bază de date privată, un utilizator poate avea acces numai la citire, nu poate schimba conținutul unui rând din această bază de date. Cu toate acestea, cineva cu un nivel mai înalt de acces, cum ar fi un administrator de sistem, poate modifica datele. Deci, cum putem fi siguri că administratorul de sistem nu va schimba datele în avantajul său? În sistemele și organizațiile existente, încercăm să creăm o diviziune a responsabilității, astfel încât nimeni să nu poată face orice lucru greșit nesemnificativ.
De exemplu, un administrator poate avea acces la modificările bazei de date, dar istoricul poate fi stocat într-un alt sistem gestionat de altcineva. Aceste sisteme organizaționale sunt concepute pentru a descuraja o astfel de persoană să facă schimbări și trebuie să ne asigurăm că sistemul organizațional funcționează. Cu toate acestea, nu există niciun mecanism de monitorizare, sarcina principală a căreia ar fi asigurarea datelor neschimbate.
Să mergem la blocade.
De fapt, bibliotecile de blocuri sunt baze de date cu criterii tehnice prestabilite și logică de afaceri încorporate, sincronizate cu mecanisme p2p și cu reguli preconizate asupra noilor date care pot fi adăugate. În ceea ce privește imutabilitatea, există două entități cheie care ajută la detectarea cu ușurință a falsurilor: hashes și blocks.
O funcție hash este un tip de funcție matematică care transformă datele într-o amprentă digitală, numită hash. Acest lucru este similar cu o formulă sau algoritm care primește date de intrare (orice date, indiferent dacă acesta este întregul dicționar Dahl sau pur și simplu numărul „1“), și le transformă într-o ieșire de lungime fixă, care reprezintă datele dactiloscopice originale. Există multe tipuri de funcții de tip hash, iar general acceptat este SHA-256 (ceea ce înseamnă algoritmul Secure Hash Algorithm este de 256 de biți)
Dacă scapi de «Bună ziua de la Biți pe blocuri!» Prin această funcție matematică, veți obține un 389f9ef3822e5c88f4b140db82c459064711a52182a3e438b4ebc7ecda62b9bb timbru. Impresia (389f ... b9bb) se numește SHA-256 hash a frazei originale.
Două proprietăți importante ale unei funcții de tip hash bun:
1. Este dificil să se calculeze datele inițiale privind un hash disponibil;
2. Dacă datele de intrare se modifică în cea mai mică măsură, hașurile se modifică într-un mod imprevizibil.
Hashi - baza securității și imutabilității blocadelor. Poți să te joci cu ei aici.
O idee importantă a sistemului Bitcoin de blocare este că tranzacțiile sunt construite în blocuri înainte de adăugarea la baza de date de blocare. Blocurile conțin câteva tranzacții bitcoin (plăți), precum și alte date, inclusiv hash-ul blocului anterior. Deoarece fiecare bloc include hash-ul blocului anterior ca parte a datelor sale, se formează un lanț de blocuri.
Crearea unei cărți de tranzacții cu blocuri aparținând blocurilor anterioare este mult mai bună decât numerotarea paginilor în ea. Într-un registru de hârtie cu pagini numerotate de la 1, 2, 3, și așa mai departe. D. Va fi ușor pentru a scoate pagina 40, înlocuiți-l cu o altă pagină 40 cu puține alte tranzacții și a fost, ar fi dificil de observat. Integritatea este păstrată, iar paginile 39, 40, 41 rămân paginile 39, 40, 41 - neschimbate. În plus, nu există nimic în numărul paginii "40" care ar reflecta într-o oarecare măsură ce informații sunt conținute pe această pagină, iar numărarea paginilor constă exclusiv din numerele acestora.
Cu toate acestea, în blocada în loc de numerotarea blocurilor, blocurile sunt desemnate prin hash-urile lor, iar fiecare bloc indică explicit blocul (hash) pe care se bazează. Deci este mai mult ca:
- Un bloc cu hash 66a045b45 (construit pe un bloc cu hash a2c064616), urmat de
- Un bloc cu un hash de 8939a3c35 (construit pe un bloc cu un hash 66a045b45), urmat de
- Blochează cu hash a41f02e92 (fiind construit pe bloc cu hash 8939a3c35)
Puncte cheie
- Hash-ul fiecărui bloc este determinat de conținutul blocului;
- Fiecare bloc se referă la hash-ul blocului anterior și nu la numărul în ordine;
- Datele din bloc sunt compatibile intern, adică puteți efectua o verificare și dacă datele și coșurile nu se potrivesc, atunci cu siguranță a existat un fel de intervenție.
Datele blocate izolate
Să vedem mai întâi ce se întâmplă dacă luați blockbusterul Bitcoin și îl copiați pe o unitate USB (la momentul acestei scrieri, blocul este de aproximativ 55 GB, deci este posibil). Ce ați putea face cu datele de pe mass-media înainte de a le transfera la cineva, cum ar fi un autor de reglementare? Poți schimba datele?
Blocul Bitcoin are aproape 400.000 de blocuri. Să presupunem că ați încercat să ștergeți o tranzacție dintr-un bloc de 200.000, aproximativ în mijlocul blocului, în încercarea de a dovedi că nu a avut loc nicio plată. Ce s-ar întâmpla?
1. Eroare la calculul hash-ului blocului
Primul lucru pe care îl poate face un control atunci când primesc USB-drive - este de a conta toate pe baza hash bloc de date și verificați dacă sunt valide furnizate hash și sunt în conformitate cu conținutul fiecăruia dintre blocuri. Dacă există o discrepanță, înseamnă că tranzacțiile din bloc nu corespund cu hash-ul blocului, iar blocul a fost modificat. Prin urmare, pentru a "înșela" autoritatea de reglementare, va trebui să recalculați hash-ul blocului astfel încât să corespundă conținutului modificat.
2. Eșecul lanțului
Cu toate acestea, acest lucru va sparge lanțul. Permiteți-mi să vă reamintesc că fiecare bloc conține un hash din blocul anterior. Dacă se modifică hash-ul de 200.000 hash, atunci 200 001 se va referi la hash-ul inexistent al blocului. Astfel, lanțul de blocaj va fi deteriorat, ceea ce va fi o greșeală evidentă. Pentru ao elimina, trebuie să reconstruiți și să recalculați hash-urile pentru fiecare bloc după cel schimbat, înlocuind succesiv conținutul indexurilor fiecărui block-hash anterior.
Cu toate acestea, există restricții care fac dificilă sau chiar imposibilă recalcularea blocajului. Aceste limitatoare diferă în funcție de mecanismul de adăugare a blocurilor și de regulile adoptate pentru diferite blocante. Există două scheme principale: hashes țintă pentru public PoW-blocante; și semnături specifice pentru (blocurile) închise.
3. Lanțurile sunt greu de numărat
Pentru blokcheynov închise, cum ar fi multicatenari, mecanism pentru adăugarea de blocuri este de obicei un pic diferit, și în loc de a trebui să se bazeze pe sistem costisitor dovada-of-muncă, reguli pot fi stabilite în așa fel încât cei care se adaugă blocuri, o fac în maniera unei cozi aleatoare, și fiecare Blocul este semnat de semnătura digitală a persoanei care o adaugă. Apoi detașamentul este valabil și poate fi adoptat numai dacă blocurile au fost semnate de participanți bine definite. Aceasta înseamnă că, pentru a recalcula lanțul, va trebui să obțineți cheile secrete ale celor care adaugă blocuri. Problema furtului acestor chei este un alt fel de chat decât recalcularea lanțului bazat pe PoW.
Dacă ați făcut toate cele de mai sus, atunci datele de pe unitatea USB ar fi consecvente intern și ar arăta holistică. Dar numai pentru cineva care nu o poate compara cu altă copie a aceluiași bloc.
Copii multiple cu mai multe copii
Toate cele de mai sus presupun că datele de pe mediu sunt singura versiune. pe care autoritatea de reglementare o va vedea. Să presupunem că ați reușit să creați o blocare consecventă la nivel intern ștergând tranzacția și recalculând hash-urile tuturor blocurilor ulterioare, astfel încât totul să pară "real".
Tot ceea ce autoritatea de reglementare trebuie să verifice este să se potrivească cu hash-ul ultimului bloc aflat momentan în bloc cu hash-ul acestui bloc dintr-o altă copie a blocului. În cazul în care hash a ultimului bloc de pe-stick-ul USB este diferit de copii hash blokcheyn orice alt membru al rețelei (desigur, în lipsa unei înțelegeri secrete), controlorul va observa imediat că nu este ceva ce, dar datele de pe USB-drive diferă de cele de viață blokcheyna. Autoritatea de reglementare nu are nevoie nici măcar să privească datele din blocada live. Trebuie doar să vadă hașutul ultimului bloc.
Cu alte cuvinte, este extrem de dificil să creați un bloc fals.
Schimbarea blocajei în zbor
Și încercarea de a schimba datele existente în blocul în care sunteți membru? Cum pot remedia un bloc deja luat de alții în rețea? Acest lucru este din nou dificil, din cauza regulii "celui mai lung lanț", care este baza consensului pentru majoritatea blocantelor. Regula "celui mai lung lanț" spune că, în calitate de membru al blocului, dacă vedeți mai multe lanțuri virtuale concurente, atunci recunoașteți unul în care există mai multe blocuri.
Prin urmare, dacă re-difuzați blocul corectat 200 000, atunci veți crea un lanț "furcă" (furculiță), care este mult mai scurt decât lanțul actual (lungimea (mai exact, înălțimea), adică 400000 blocuri). Astfel veți obține două pachete concurente, dintre care una constă din 200.000 de blocuri și conține un bloc fix, iar celelalte 400.000 de blocuri. Nodurile complete existente vor accepta blocul dvs. (dacă este valabil), dar apoi îl vor ignora imediat, deoarece știu deja despre existența unui lanț mai lung.
Și chiar dacă reușiți să faceți acest lucru, din punct de vedere tehnic, lanțul dvs. nou va fi valabil, de fapt, comunitatea va observa imediat orice schimbare a blocului existent la o adâncime, pornind de la câteva blocuri față de cea actuală. Cu aceasta ordonată.
concluzie
Este extrem de dificil să schimbați datele într-un detașament "autonom" și chiar mai greu într-un loc viu.
Când oamenii spun că blocurile sunt neschimbate, acestea nu înseamnă că datele nu pot fi schimbate, dar că este foarte dificil să le schimbați fără coluziune, iar dacă încercați, modificările vor fi foarte ușor de detectat. Această proprietate a blockbuster-ului are atât consecințe pozitive, cât și negative, pentru securitatea datelor stocate în bibliotecile bloc. Și, ca o consecință, pentru confidențialitatea datelor.