Què és Hashing? [Guia pas a pas: sota caputxa de blockchain]

Per tant, el que realment és hash?

TLDR:

  1. Hashing és generar un valor o valors a partir d’una cadena de text mitjançant una funció matemàtica.
  2. El hash és una manera d’habilitar la seguretat durant el procés de transmissió de missatges quan el missatge està pensat només per a un destinatari concret. Una fórmula genera el hash, que ajuda a protegir la seguretat de la transmissió contra la manipulació.

És important saber com funciona blockchain Hashing. Per fer-ho, però, primer hem d’entendre un dels principis bàsics que entren en la creació de blockchain. La tecnologia Blockchain és un dels descobriments més innovadors i que defineixen l’era del segle passat. Vist la influència que ha tingut durant els darrers anys i l’impacte que tindrà en el futur, segur que no és exagerat dir-ho. Per tal d’entendre com funcionen diverses criptomonedes com Ethereum i Bitcoin.

 Llavors, què és el hash?

En termes simples, hash significa agafar una cadena d’entrada de qualsevol longitud i donar una sortida d’una longitud fixa. En el context de criptomonedes com el bitcoin, les transaccions es prenen com a entrada i s’executen mitjançant un algorisme de resum (bitcoin utilitza SHA-256) que dóna una sortida d’una longitud fixa.

Vegem com funciona el procés de resum. Anem a introduir determinades aportacions. Per a aquest exercici, utilitzarem el SHA-256 (Secure Hashing Algorithm 256).

Què és Hashing? Sota la caputxa de Blockchain

Com podeu veure, en el cas de SHA-256, per gran o petita que sigui la vostra entrada, la sortida sempre tindrà una longitud fixa de 256 bits. Això esdevé fonamental quan es tracta d’una gran quantitat de dades i transaccions. Així, bàsicament, en lloc de recordar les dades d’entrada que podrien ser enormes, només cal recordar el hash i fer un seguiment. Abans d’anar més lluny, primer hem de veure les diverses propietats de les funcions de resum i com s’implementen a la cadena de blocs. 

Funcions de resum criptogràfic

Una funció hash criptogràfica és una classe especial de funcions hash que té diverses propietats, cosa que la fa ideal per a la criptografia. Hi ha certes propietats que ha de tenir una funció de hash criptogràfic per considerar-se segura. Executem-los un per un.

Propietat 1: determinista

Això vol dir que, independentment de quantes vegades analitzeu una entrada concreta mitjançant una funció hash, sempre obtindreu el mateix resultat. Això és fonamental perquè si obteniu diferents hashs cada vegada, serà impossible fer un seguiment de l’entrada.

Propietat 2: càlcul ràpid

La funció hash hauria de ser capaç de retornar el hash d’entrada ràpidament. Si el procés no és prou ràpid, el sistema simplement no serà eficient.

Propietat 3: resistència prèvia a la imatge

Quins estats de resistència prèvia a la imatge són que donat H (A) és inviable determinar A, on A és l’entrada i H (A) és el hash de sortida. Fixeu-vos en l’ús de la paraula “inviable” en lloc de “impossible”. Ja sabem que no és impossible determinar l’entrada original a partir del seu valor hash. Posem un exemple.

Suposem que llenceu un dau i la sortida és el hash del número que surt dels daus. Com podreu determinar quin era el número original? És senzill que només cal esbrinar els hash de tots els números de l’1 al 6 i comparar-los. Com que les funcions de hash són deterministes, el hash d’una entrada determinada sempre serà el mateix, de manera que podeu comparar els hash i esbrinar l’entrada original..

Però això només funciona quan la quantitat de dades donada és molt menor. Què passa quan es té una gran quantitat de dades? Suposem que es tracta d’un hash de 128 bits. L’únic mètode que heu de trobar per a l’entrada original és utilitzar el símbol “mètode de força bruta”. El mètode de força bruta significa bàsicament que haureu de recollir una entrada aleatòria, hash i després comparar la sortida amb el hash objectiu i repetir fins que trobeu una coincidència.

Llavors, què passarà si utilitzeu aquest mètode?

  • El millor cas: Rebreu la vostra resposta en el primer intent. Perquè això passi, hauràs de ser la persona més afortunada del món. Les probabilitats que això passi són astronòmiques.
  • En el pitjor dels casos: Rebreu la vostra resposta després de 2 ^ 128 – 1 vegades. Bàsicament, vol dir que trobareu la vostra resposta al final de totes les dades.
  • Escenari mitjà: El trobareu en algun lloc del centre, bàsicament després de 2 ^ 128/2 = 2 ^ 127 vegades. Per posar-ho en perspectiva, 2 ^ 127 = 1,7 X 10 ^ 38. En altres paraules, és un gran nombre.

Així, tot i que és possible trencar la resistència prèvia a la imatge mitjançant el mètode de la força bruta, triga tant de temps que no importa.

Propietat 4: petits canvis a l’entrada canvia el hash.

Fins i tot si feu un petit canvi a la vostra entrada, els canvis que es reflectiran al hash seran enormes. Anem a provar-ho amb SHA-256:

Què és Hashing? Sota la caputxa de Blockchain

Ho veieu? Tot i que acabeu de canviar les majúscules i minúscules del primer alfabet de l’entrada, mireu quant ha afectat el hash de sortida. Aquesta és una funció crítica perquè aquesta propietat del hash condueix a una de les majors qualitats de la cadena de blocs, la seva immutabilitat (més sobre això més endavant).

Propietat 5: resistent a les col·lisions

Donades dues entrades diferents A i B on H (A) i H (B) són els seus respectius hash, és inviable que H (A) sigui igual a H (B). El que això significa és que, en la seva major part, cada entrada tindrà el seu propi hash únic. Per què hem dit “en la seva major part”? Parlem d’un concepte interessant anomenat “La paradoxa de l’aniversari”.

Què és la paradoxa de l’aniversari??

Si us trobeu amb algun estrany aleatori al carrer, és molt baix que tots dos tingueu el mateix aniversari. De fet, suposant que tots els dies de l’any tenen la mateixa probabilitat de complir un aniversari, les possibilitats que una altra persona comparteixi el vostre aniversari són 1/365, que és un 0,27%. En altres paraules, és realment baix.

No obstant això, havent dit això, si reuniu entre 20 i 30 persones en una habitació, les probabilitats que dues persones comparteixin exactament el mateix aniversari augmenten astronòmicament. De fet, hi ha una possibilitat de 50 a 50 persones per a 2 persones que comparteixin el mateix aniversari en aquest escenari!

Què és Hashing? Sota la caputxa de Blockchain

Crèdit de la imatge: (YouTube)

Per què passa això? Es deu a una simple regla de probabilitat que segueix el següent. Suposem que teniu N possibilitats diferents perquè es produeixi un esdeveniment, llavors necessiteu arrel quadrada de N elements aleatoris perquè tinguin un 50% de possibilitats de col·lisió..

Per tant, aplicant aquesta teoria per a aniversaris, teniu 365 possibilitats diferents d’aniversaris, de manera que només necessiteu Sqrt (365), que és de ~ 23 ~, persones triades a l’atzar amb un 50% de probabilitats que dues persones comparteixin aniversaris..

Quina és l’aplicació d’això en el hash?

Suposem que teniu un hash de 128 bits que té 2 ^ 128 possibilitats diferents. En utilitzar la paradoxa d’aniversari, teniu un 50% de possibilitats de trencar la resistència a la col·lisió a la sqrt (2 ^ 128) = 2 ^ 64a instància.

Com podeu veure, és molt més fàcil trencar la resistència a la col·lisió que trencar la resistència a la preimatge. No hi ha cap funció de hash lliure de col·lisions, però normalment triga molt a trobar-ne. Per tant, si utilitzeu una funció com SHA-256, és segur suposar que si H (A) = H (B) llavors A = B.

Propietat 6: Amigable amb trencaclosques

Ara bé, es tracta d’una propietat fascinant i l’aplicació i l’impacte que aquesta propietat ha tingut sobre les criptomonedes són enormes (més sobre això més endavant, quan tractem trencaclosques de mineria i criptografia). Primer definim la propietat, després revisarem detalladament cada terme.

Per a cada sortida “Y”, si es tria k entre una distribució amb alta min-entropia, és inviable trobar una entrada x tal que H (k | x) = Y.

Probablement, això us va passar pel cap. Però està bé, ara entenem què significa aquesta definició.

Què significa “alta minentropia”?

Vol dir que la distribució a partir de la qual s’escull el valor es distribueix enormement, de manera que escollir un valor aleatori té una probabilitat insignificant. Bàsicament, si se us demanés que escolliu un número entre l’1 i el 5, es tracta d’una distribució mínima d’entropia mínima. Tanmateix, si escolliu un número entre 1 i un gasilló, es tracta d’una distribució elevada d’entropia mínima.

Què significa “k | x”?

El “|” denota la concatenació. La concatenació significa afegir dues cadenes juntes. Per exemple. Si concatenés “BLAU” i “CEL” junts, el resultat serà “BLUESKY”.

Així que ara tornem a revisar la definició.

Suposem que teniu un valor de sortida “Y”. Si escolliu un valor aleatori “k” d’una distribució àmplia, és inviable trobar un valor X tal que el hash de la concatenació de k i x donarà la sortida Y.

Una vegada més, observeu la paraula “inviable”, no és impossible perquè la gent ho fa tot el temps. De fet, tot el procés de mineria funciona sobre això (més detalls més endavant).

Exemples de funcions de hash criptogràfic

  • MD 5: produeix un hash de 128 bits. La resistència a la col·lisió es va trencar després de ~ 2 ^ 21 hash.
  • SHA 1: produeix un hash de 160 bits. La resistència a la col·lisió es va trencar després de ~ 2 ^ 61 hash.
  • SHA 256: produeix un hash de 256 bits. Actualment, Bitcoin l’utilitza.
  • Keccak-256: produeix un hash de 256 bits i és utilitzat actualment per ethereum.

Hashing i estructures de dades

Una estructura de dades és una forma especialitzada d’emmagatzemar dades. Hi ha dues propietats d’estructura de dades que són fonamentals si voleu entendre com funciona una cadena de blocs. Ells són:

  1. Punters.
  2. Llistes enllaçades.

Punters

Els indicadors són variables de la programació que emmagatzemen l’adreça d’una altra variable. Normalment les variables normals de qualsevol llenguatge de programació emmagatzemen dades.

Per exemple. int a = 10, significa que hi ha una variable “a” que emmagatzema valors enters. En aquest cas, emmagatzema un valor enter que és 10. Aquesta és una variable normal.

No obstant això, els indicadors en lloc d’emmagatzemar valors emmagatzemen adreces d’altres variables. És per això que s’anomenen punteres, perquè literalment apunten cap a la ubicació d’altres variables.

Llistes enllaçades

Una llista enllaçada és un dels elements més importants de les estructures de dades. Així és com es mostra una llista enllaçada:

Què és Hashing? Sota la caputxa de Blockchain

És una seqüència de blocs, cadascun dels quals conté dades que s’enllacen al següent bloc mitjançant un punter. La variable punter, en aquest cas, conté l’adreça del següent node i, per tant, es fa la connexió. L’últim node, com podeu veure, té un punter nul que significa que no té cap valor.

Una cosa important a tenir en compte aquí és que el punter dins de cada bloc conté l’adreça del bloc següent. Així s’aconsegueix l’assenyalament. Ara us podeu preguntar què significa això per al primer bloc de la llista? On queda el punter del primer bloc?

El primer bloc s’anomena “bloc de gènesi” i el seu indicador es troba al propi sistema. Té un aspecte així:

Què és Hashing? Sota la caputxa de Blockchain

Imatge cortesia: Coursera

Si us pregunteu què significa el “punter de hash”, hi arribarem una mica.

Com ja haureu endevinat, en això es basa l’estructura de la cadena de blocs. Una cadena de blocs és bàsicament una llista enllaçada. Vegem l’aspecte de l’estructura de blockchain:

Què és Hashing? Sota la caputxa de Blockchain

La cadena de blocs és una llista enllaçada que conté dades i un punter de hash que apunta al seu bloc anterior i, per tant, crea la cadena. Què és un punter de hash? Un punter hash és similar a un punter, però en lloc de contenir l’adreça del bloc anterior, també conté el hash de les dades del bloc anterior. Aquest petit ajust és el que fa que les cadenes de blocs siguin tan increïblement fiables i sorprenents.

Imagineu-ho per un segon, un hacker ataca el bloc 3 i intenta canviar les dades. A causa de les propietats de les funcions de hash, un lleuger canvi en les dades canviarà dràsticament el hash. Això significa que qualsevol lleuger canvi que es faci al bloc 3 canviarà el hash que s’emmagatzema al bloc 2, ara que al seu torn canviarà les dades i el hash del bloc 2, que donarà lloc a canvis al bloc 1, etc., etc. . Això canviarà completament la cadena, cosa que és impossible. És exactament així com les cadenes de blocs aconsegueixen la immutabilitat.

Quin aspecte té una capçalera de bloc?

Què és Hashing? Sota la caputxa de Blockchain

Una capçalera de bloc conté:

  • Versió: el número de versió del bloc.
  • Hora: la marca de temps actual.
  • L’objectiu de dificultat actual. (Més informació sobre això més endavant).
  • Hash del bloc anterior.
  • Nonce (més sobre això més endavant).
  • Hash de l’arrel de Merkle.

Ara mateix, centrem-nos en el hash de l’arrel de Merkle. Abans, però, hem d’entendre què és un arbre de Merkle.

Què és un arbre de Merkle??

Què és Hashing? Sota la caputxa de Blockchain

Cortesia de la imatge: Wikipedia

El diagrama anterior mostra l’aspecte d’un arbre de Merkle. En un arbre de Merkle, cada node que no és de fulla és el hash dels valors dels seus nodes fills.

Node de fulla: els nodes de fulla són els nodes del nivell més baix de l’arbre. Així doncs, escriviu el diagrama anterior, els nodes de la fulla seran L1, L2, L3 i L4.

Què és Hashing? Sota la caputxa de Blockchain

Nodes secundaris: per a un node, els nodes situats per sota del seu nivell que s’hi alimenten són els seus nodes secundaris. En el diagrama, els nodes etiquetats com a “Hash 0-0” i “Hash 0-1” són els nodes secundaris del node amb l’etiqueta “Hash 0”.

Node arrel: el node únic del nivell més alt etiquetat com a “Hash superior” és el node arrel.

Què és Hashing? Sota la caputxa de Blockchain

Llavors, què té a veure un arbre de Merkle amb les cadenes de blocs??

Cada bloc conté milers i milers de transaccions. Serà molt poc temps emmagatzemar totes les dades dins de cada bloc com una sèrie. Si ho feu, la troballa de qualsevol transacció en particular resultarà extremadament pesada i requereix molt de temps. No obstant això, si utilitzeu un arbre de Merkle, reduirà molt el temps necessari per esbrinar si una transacció en particular pertany o no a aquest bloc..

Vegem-ho en un exemple. Penseu en l’arbre de Merkle següent:

Què és Hashing? Sota la caputxa de Blockchain

Imatge cortesia: Coursera

Ara suposo que vull esbrinar si aquestes dades en particular pertanyen al bloc o no:

Què és Hashing? Sota la caputxa de Blockchain

En lloc de passar pel pesat procés de mirar cada hash individual i veure si pertany o no a les dades, simplement puc fer un seguiment seguint el rastre de hash que condueix a les dades:

Què és Hashing? Sota la caputxa de Blockchain

Si ho feu, es redueix significativament el temps necessari.

Hashing a la mineria: els trencaclosques de criptografia.

Quan diem “mineria”, bàsicament significa cercar un bloc nou que s’afegeixi a la cadena de blocs. Els miners de tot el món treballen constantment per assegurar-se que la cadena continua creixent. Abans, les persones solien explotar-les fàcilment amb els seus ordinadors portàtils, però amb el pas del temps les persones van començar a formar grups de mineria per agrupar els seus poders informàtics i explotar-los de manera més eficient..

Això, però, podria haver estat un problema. Hi ha un límit per a cada criptomoneda, per exemple. per a bitcoin, només són 21 milions. Només hi ha 21 milions de bitcoins. Si es permet als miners continuar, a aquest ritme, pescaran tots els bitcoins existents. A més, cal que hi hagi un límit de temps específic entre la creació de cada bloc. Per a bitcoin, el límit de temps entre la creació de blocs és de 10 minuts. Si es permetés crear els blocs més ràpidament, resultaria:

  • Més col·lisions: es generaran més funcions de hash que inevitablement causaran més col·lisions.
  • Blocs més orfes: si molts miners superen la mineria, s’obriran blocs nous simultàniament. Això provocarà que més blocs no arribin a formar part de la cadena principal i es converteixin en blocs orfes.

Per tant, per tal de restringir la creació de blocs, s’estableix un nivell de dificultat específic. La mineria és com un joc, resols el trencaclosques i obtens recompenses. Establir dificultats fa que aquest trencaclosques sigui molt més difícil de resoldre i, per tant, requereix més temps. WRT bitcoins l’objectiu de dificultat és una cadena de 64 caràcters (que és la mateixa que una sortida SHA-256) que comença amb un munt de zeros. Un nombre de zeros augmenta a mesura que augmenta el nivell de dificultat. El nivell de dificultat canvia després de cada bloc 2016.

El procés miner

Nota: aquí parlarem principalment de mineria de Bitcoin.

Quan el programari de mineria de bitcoins vol afegir un nou bloc a la cadena de blocs, aquest és el procediment que segueix. Sempre que arriba un bloc nou, tot el contingut dels blocs és primer resumit. Si el hash és inferior a l’objectiu de dificultat, s’afegeix a la cadena de blocs i tots els membres de la comunitat reconeixen el nou bloc.

Tanmateix, no és tan senzill com això. Haureu de tenir la gran sort d’aconseguir un nou bloc així. Aquí és on entra el nonce. El nonce és una cadena arbitrària que es concatena amb el hash del bloc. Després d’això, aquesta cadena concatenada es torna a resumir i es compara amb el nivell de dificultat. Si no és inferior al nivell de dificultat, es canvia el no i això es repeteix un milió de vegades fins que finalment es compleixen els requisits. Quan això passa, el bloc s’afegeix a la cadena de blocs.

Així que, per resumir:

  • Es pren el hash del contingut del nou bloc.
  • S’afegeix un nonce (cadena aleatòria) al hash.
  • La nova cadena es torna a resumir.
  • A continuació, es compara l’últim hash amb el nivell de dificultat i es comprova si realment és inferior o no.
  • En cas contrari, es canviarà el nonce i el procés es repetirà de nou.
  • Si és així, el bloc s’afegeix a la cadena i el llibre major s’actualitza i s’avisa de l’addició.
  • Els miners responsables d’això són premiats amb bitcoins.

Recordeu la propietat número 6 de les funcions hash? L’amabilitat del trencaclosques?

Per a cada sortida “Y”, si es tria k entre una distribució amb alta entropia mínima, és inviable trobar una entrada x tal que H (k | x) = Y.

Per tant, quan es tracta de mineria de bitcoins:

  • K = Nonce
  • x = el hash del bloc
  • Y = l’objectiu de dificultat

Tot el procés és completament aleatori, no hi ha cap procés de pensament darrere de la selecció dels no-no. És només una força bruta pura on el programari continua generant cadenes aleatòries fins que assoleixen el seu objectiu. Tot el procés segueix el protocol de prova de treball, que bàsicament significa:

  • La resolució de trencaclosques hauria de ser difícil.
  • No obstant això, comprovar la resposta hauria de ser fàcil per a tothom. Això es fa per assegurar-se que no s’ha utilitzat cap mètode insuficient per resoldre el problema.

Què és la taxa de hash?

La taxa de hash significa bàsicament la rapidesa amb què es duen a terme aquestes operacions de resum durant la mineria. Una alta taxa de hash significa que hi ha més persones i màquines de programari que participen en el procés de mineria i, per tant, el sistema funciona correctament. Si la taxa de hash és massa ràpida, augmenta el nivell de dificultat. Si la taxa de hash es torna massa lenta, aleshores es reduirà el nivell de dificultat.

Conclusió: què és el problema?

Hashing ha estat realment fonamental en la creació de tecnologia blockchain. Si es vol entendre de què es tracta la cadena de blocs, definitivament haurien d’entendre què significa hashing.

Mike Owergreen Administrator
Sorry! The Author has not filled his profile.
follow me
Like this post? Please share to your friends:
map