Mi az a hashelés?
KezdŇĎlap
Cikkek
Mi az a hashelés?

Mi az a hashelés?

Haladó
Közzétéve Jul 29, 2019Frissítve Jan 31, 2023
7m

A hashel√©s azt a folyamatot jelenti, amelynek sor√°n egy v√°ltoz√≥ m√©retŇĪ bemenetbŇĎl egy fix m√©retŇĪ kimenetet √°ll√≠tunk elŇĎ. Ez a hash f√ľggv√©nynek nevezett matematikai f√ľggv√©nyek (hash-algoritmusok) haszn√°lat√°val t√∂rt√©nik.¬†

B√°r nem minden hash f√ľggv√©ny haszn√°l¬†kriptogr√°fi√°t, az √ļgynevezett kriptogr√°fiai hash f√ľggv√©nyek a kriptovalut√°k fŇĎ alkot√≥elemei. Nekik k√∂sz√∂nhetŇĎen a blokkl√°ncok √©s m√°s elosztott rendszerek jelentŇĎs¬†adatintegrit√°si √©s biztons√°gi szintet k√©pesek el√©rni.

Mind a hagyom√°nyos, mind a kriptogr√°fiai hash f√ľggv√©nyek determinisztikusak. A determinisztikus jelleg azt jelenti, hogy am√≠g a bemenet nem v√°ltozik, a hash algoritmus mindig ugyanazt a kimenetet (m√°s n√©ven kivonat vagy hash) fogja eredm√©nyezni.

A kriptovalut√°k hash-algoritmusait √°ltal√°ban egyir√°ny√ļ f√ľggv√©nyk√©nt tervezik, ami azt jelenti, hogy nagy mennyis√©gŇĪ sz√°m√≠t√°si idŇĎ √©s erŇĎforr√°s n√©lk√ľl nem lehet ŇĎket k√∂nnyen visszafejteni. M√°s sz√≥val, el√©g k√∂nnyŇĪ a kimenetet a bemenetbŇĎl l√©trehozni, de ford√≠tva ugyanez viszonylag neh√©z lenne (a bemenetet csak a kimenetbŇĎl l√©trehozni). √Āltal√°noss√°gban elmondhat√≥, hogy min√©l nehezebb kital√°lni a bemenetet, ann√°l biztons√°gosabbnak tekinthetŇĎ a hash algoritmus.


Hogyan mŇĪk√∂dnek a hash f√ľggv√©nyek?

A k√ľl√∂nb√∂zŇĎ hash f√ľggv√©nyek k√ľl√∂nb√∂zŇĎ m√©retŇĪ kimeneteket eredm√©nyeznek, de az egyes hash-algoritmusok lehets√©ges kimeneti m√©rete mindig √°lland√≥. Az SHA-256 algoritmus p√©ld√°ul csak 256 bites kimenetet tud elŇĎ√°ll√≠tani, m√≠g az SHA-1 mindig 160 bites kivonatot gener√°l.

Szeml√©ltet√©sk√©ppen futtassuk le a ‚ÄěBinance‚ÄĚ √©s ‚Äěbinance‚ÄĚ szavakat az SHA-256 hash-algoritmuson (a Bitcoin eset√©ben haszn√°lt algoritmuson).

SHA-256

Bemenet

Kimenet (256 bit)

Binance

f1624fcc63b615ac0e95daf9ab78434ec2e8ffe402144dc631b055f711225191

binance

59bba357145ca539dcd1ac957abc1ec5833319ddcae7f5e8b5da0c36624784b2


L√°thatjuk, hogy egy apr√≥ v√°ltoztat√°s (az elsŇĎ nagybetŇĪ) teljesen m√°s hash-√©rt√©ket eredm√©nyezett. Mivel azonban SHA-256-ot haszn√°lunk, a kimenetek mindig 256 bit (vagy 64 karakter) m√©retŇĪek lesznek - f√ľggetlen√ľl a bemeneti m√©rettŇĎl. Az sem sz√°m√≠t, hogy h√°nyszor futtatjuk le a k√©t sz√≥t az algoritmuson, a k√©t kimenet ugyanaz marad.

Ezzel szemben, ha ugyanazokat a bemeneteket lefuttatn√°nk az SHA-1 hash-algoritmuson, a k√∂vetkezŇĎ eredm√©nyeket kapn√°nk:

SHA-1

Bemenet

Kimenet (160 bit)

Binance

7f0dc9146570c608ac9d6e0d11f8d409a1ee6ed1

binance

e58605c14a76ff98679322cca0eae7b3c4e08936


Az SHA a Secure Hash Algorithms (biztons√°gos hash-algoritmusok) r√∂vid√≠t√©se. Kriptogr√°fiai hash f√ľggv√©nyek egy csoportj√°ra utal, amely mag√°ban foglalja az SHA-0 √©s SHA-1 algoritmusokat, valamint az SHA-2 √©s SHA-3 csoportokat. Az SHA-256 az SHA-2 csoport r√©sze, az SHA-512-vel √©s m√°s v√°ltozatokkal egy√ľtt. Jelenleg csak az SHA-2 √©s SHA-3 csoportok tekinthetŇĎk biztons√°gosnak.


Miért fontosak?

A hagyom√°nyos hash f√ľggv√©nyek sz√°mos felhaszn√°l√°si ter√ľlettel rendelkeznek, p√©ld√°ul adatb√°zisok keres√©se, nagym√©retŇĪ f√°jlok elemz√©se √©s adatkezel√©s. M√°sr√©szt a kriptogr√°fiai hash f√ľggv√©nyeket sz√©les k√∂rben haszn√°lj√°k az adatbiztons√°gi alkalmaz√°sokban, p√©ld√°ul √ľzenethiteles√≠t√©sre √©s digit√°lis ujjlenyomatok k√©sz√≠t√©s√©re. A Bitcoin eset√©ben a kriptogr√°fiai hash funkci√≥k a¬†b√°ny√°szati folyamat alapvetŇĎ r√©sz√©t k√©pezik, √©s az √ļj c√≠mek √©s kulcsok gener√°l√°s√°ban is szerepet j√°tszanak.

A hashel√©s val√≥di ereje akkor mutatkozik meg, amikor hatalmas mennyis√©gŇĪ inform√°ci√≥t kezel√ľnk. P√©ld√°ul lefuttathatunk egy nagy f√°jlt vagy adathalmazt egy hash f√ľggv√©nyen, majd a kimenet√©t felhaszn√°lva gyorsan ellenŇĎrizhetj√ľk az adatok pontoss√°g√°t √©s integrit√°s√°t. Ez a hash f√ľggv√©nyek determinisztikus jellege miatt lehets√©ges: a bemenet mindig egy egyszerŇĪs√≠tett, t√∂m√∂r√≠tett kimenetet (hash) eredm√©nyez. Egy ilyen technika kik√ľsz√∂b√∂li a nagy mennyis√©gŇĪ adat t√°rol√°s√°nak √©s ‚Äěmegjegyz√©s√©nek‚ÄĚ sz√ľks√©gess√©g√©t.

A hashel√©s k√ľl√∂n√∂sen hasznos a blokkl√°nc technol√≥gia kontextus√°ban. A Bitcoin blokkl√°nc sz√°mos hashel√©si mŇĪveletet foglal mag√°ban, ezek t√∂bbs√©ge a b√°ny√°szat folyamat√°n bel√ľl t√∂rt√©nik. Val√≥j√°ban szinte minden kriptovaluta-protokoll a hashel√©sre t√°maszkodik a tranzakci√≥k blokkokba foglal√°s√°hoz √©s √∂sszekapcsol√°s√°hoz, valamint az egyes blokkok k√∂z√∂tti kriptogr√°fiai kapcsolatok l√©trehoz√°s√°hoz, ami gyakorlatilag egy blokkl√°ncot hoz l√©tre.


Kriptogr√°fiai hash f√ľggv√©nyek

A kriptogr√°fiai technik√°t alkalmaz√≥ hash f√ľggv√©nyt szint√©n kriptogr√°fiai hash f√ľggv√©nyk√©nt lehet defini√°lni. √Āltal√°noss√°gban elmondhat√≥, hogy egy kriptogr√°fiai hash f√ľggv√©ny felt√∂r√©s√©hez v√©gtelen sz√°m√ļ tal√°lgat√°sra van sz√ľks√©g. Ahhoz, hogy valaki ‚Äěvisszafejtsen‚ÄĚ egy kriptogr√°fiai hash-f√ľggv√©nyt, ki kell tal√°lnia, hogy mi volt a bemenet, az√°ltal, hogy addig tal√°lgat, am√≠g meg nem kapja a megfelelŇĎ kimenetet. Azonban az is elŇĎfordulhat, hogy a k√ľl√∂nb√∂zŇĎ bemenetek pontosan ugyanazt a kimenetet eredm√©nyezik, ebben az esetben ‚Äě√ľtk√∂z√©s‚ÄĚ k√∂vetkezik be.

Technikailag egy kriptogr√°fiai hash f√ľggv√©nynek h√°rom tulajdons√°ggal kell rendelkeznie ahhoz, hogy t√©nylegesen biztons√°gosnak lehessen tekinteni. Ezeket √ľtk√∂z√©si ellen√°ll√°snak, egyir√°ny√ļs√°gnak √©s gyenge √ľtk√∂z√©s√°ll√≥s√°gnak nevezhetj√ľk.

MielŇĎtt megvitatn√°nk az egyes tulajdons√°gokat, foglaljuk √∂ssze a logik√°jukat h√°rom r√∂vid mondatban.

  • √útk√∂z√©si ellen√°ll√°s:¬†lehetetlen k√©t olyan k√ľl√∂nb√∂zŇĎ bemenetet tal√°lni, amelyek ugyanazt a hash-t eredm√©nyezik kimenetk√©nt.

  • Egyir√°ny√ļs√°g:¬†lehetetlen a hash f√ľggv√©ny ‚Äěvisszafejt√©se‚ÄĚ (megtal√°lni az adott kimenet bemenet√©t).

  • Gyenge √ľtk√∂z√©s√°ll√≥s√°g:¬†nem lehets√©ges olyan m√°sodik bemenetet tal√°lni, amely √ľtk√∂zik egy megadott bemenettel.


Ütközési ellenállás (collision resistance)

Mint eml√≠tett√ľk, √ľtk√∂z√©s akkor t√∂rt√©nik, ha k√ľl√∂nb√∂zŇĎ bemenetek pontosan ugyanazt a hash-t eredm√©nyezik. √ćgy egy hash f√ľggv√©ny mindaddig √ľtk√∂z√©s√°ll√≥nak tekinthetŇĎ, am√≠g valaki nem tal√°l √ľtk√∂z√©st. Fontos tudni, hogy a hash f√ľggv√©nyek eset√©ben mindig lesznek √ľtk√∂z√©sek, mivel v√©gtelen sz√°m√ļ lehets√©ges bemenet van, azonban a lehets√©ges kimenetek sz√°ma v√©ges.

M√°s sz√≥val egy hash f√ľggv√©ny akkor √ľtk√∂z√©sbiztos, ha az √ľtk√∂z√©s megtal√°l√°s√°nak lehetŇĎs√©ge olyan alacsony, hogy az t√∂bb milli√≥ √©vnyi sz√°m√≠t√°st ig√©nyelne. √ćgy b√°r nincsenek √ľtk√∂z√©sbiztos hash f√ľggv√©nyek, n√©h√°ny el√©g erŇĎs ahhoz, hogy ellen√°ll√≥nak lehessen tekinteni (pl. SHA-256).

A k√ľl√∂nb√∂zŇĎ SHA-algoritmusok k√∂z√ľl az SHA-0 √©s SHA-1 csoportok m√°r nem biztons√°gosak, mivel √ľtk√∂z√©seket tal√°ltak benn√ľk. Jelenleg az SHA-2 √©s az¬†SHA-3 csoportok tekinthetŇĎk √ľtk√∂z√©s√°ll√≥nak.


Egyir√°ny√ļs√°g (preimage resistance)

Az egyir√°ny√ļs√°g tulajdons√°ga az egyir√°ny√ļ f√ľggv√©nyek fogalm√°hoz kapcsol√≥dik. Egy hash f√ľggv√©ny akkor tekinthetŇĎ egyir√°ny√ļnak, ha nagyon kicsi a val√≥sz√≠nŇĪs√©ge annak, hogy valaki megtal√°lja azt a bemenetet, amely egy adott kimenetet gener√°lt.

Fontos tudni, hogy ez a tulajdons√°g k√ľl√∂nb√∂zik az elŇĎzŇĎtŇĎl, mivel itt a t√°mad√≥ megpr√≥b√°lja kital√°lni, hogy mi volt a bemenet egy adott kimenet alapj√°n. √útk√∂z√©srŇĎl viszont akkor besz√©l√ľnk, ha valaki k√©t k√ľl√∂nb√∂zŇĎ bemenetet tal√°l, amelyek ugyanazt a kimenetet adj√°k, de nem sz√°m√≠t, hogy melyik bemenetet haszn√°lt√°k.

Az egyir√°ny√ļs√°g tulajdons√°g az√©rt fontos az adatv√©delem szempontj√°b√≥l, mert egy √ľzenet egyszerŇĪ hashel√©s√©vel bizony√≠tani lehet annak hiteless√©g√©t an√©lk√ľl, hogy az inform√°ci√≥t nyilv√°noss√°gra kellene hozni. A gyakorlatban sok szolg√°ltat√≥ √©s webes alkalmaz√°s a jelszavakb√≥l gener√°lt hasheket t√°rolja √©s haszn√°lja ahelyett, hogy a jelszavakat egyszerŇĪ sz√∂vegk√©nt t√°roln√°.


Gyenge √ľtk√∂z√©s√°ll√≥s√°g (second-preimage resistance)

Az egyszerŇĪs√©g kedv√©√©rt mondhatjuk, hogy a gyenge √ľtk√∂z√©s√°ll√≥s√°g valahol a m√°sik k√©t tulajdons√°g k√∂z√∂tt helyezkedik el. Second-preimage t√°mad√°sr√≥l akkor besz√©l√ľnk, amikor valaki k√©pes megtal√°lni egy adott bemenetet, amely ugyanazt a kimenetet gener√°lja, mint egy m√°sik bemenet, amelyet m√°r ismer.

M√°s sz√≥val, a second-preimage t√°mad√°s az √ľtk√∂z√©s megtal√°l√°s√°t jelenti, de ahelyett, hogy k√©t olyan v√©letlenszerŇĪ bemenetet keresn√©nek, amelyek ugyanazt a hash-t gener√°lj√°k, olyan bemenetet keresnek, amely ugyanazt a hash-t gener√°lja, amelyet egy m√°sik konkr√©t bemenet gener√°lt.

Ez√©rt minden olyan hash f√ľggv√©ny, amely ellen√°ll az √ľtk√∂z√©seknek, ellen√°ll a second-preimage t√°mad√°soknak is, mivel ez ut√≥bbiak mindig √ľtk√∂z√©st jelentenek. Egy √ľtk√∂z√©s√°ll√≥ f√ľggv√©nyt ellen is v√©gre lehet hajtani second preimage t√°mad√°sokat, mivel ez azt jelenti, hogy egyetlen kimenetbŇĎl egyetlen bemenetet kell tal√°lni.


B√°ny√°szat

A¬†Bitcoin b√°ny√°szat sz√°mos olyan l√©p√©sbŇĎl √°ll, amelyek hash f√ľggv√©nyeket haszn√°lnak, mint p√©ld√°ul az egyenlegek ellenŇĎrz√©se, a tranzakci√≥k bemeneteinek √©s kimeneteinek √∂sszekapcsol√°sa, valamint a blokkon bel√ľli tranzakci√≥k hashel√©se egy¬†Merkle-fa kialak√≠t√°s√°hoz. A Bitcoin¬†blokkl√°nc biztons√°ga r√©szben annak k√∂sz√∂nhetŇĎ, hogy a b√°ny√°szoknak sz√°mtalan hashing mŇĪveletet kell v√©grehajtaniuk ahhoz, hogy v√©g√ľl √©rv√©nyes megold√°st tal√°ljanak a k√∂vetkezŇĎ blokkhoz.

Pontosabban, a b√°ny√°sznak t√∂bb k√ľl√∂nb√∂zŇĎ bemenetet kell kipr√≥b√°lnia, amikor hash √©rt√©ket hoz l√©tre a kijel√∂lt blokkhoz. L√©nyeg√©ben csak akkor tudj√°k valid√°lni a blokkjukat, ha olyan kimeneti hash-t gener√°lnak, amely egy megadott sz√°m√ļ null√°val kezdŇĎdik. A null√°k sz√°ma hat√°rozza meg a b√°ny√°szati neh√©zs√©get, √©s ez a h√°l√≥zatra ford√≠tott hashr√°ta f√ľggv√©ny√©ben v√°ltozik.

Ebben az esetben a hashr√°ta azt jelzi, hogy mennyi sz√°m√≠t√≥g√©pes teljes√≠tm√©nyt fektetnek be a Bitcoin b√°ny√°szatba. Ha a h√°l√≥zat hashr√°t√°ja n√∂vekszik, a Bitcoin protokoll automatikusan √ļgy m√≥dos√≠tja a b√°ny√°szati neh√©zs√©get, hogy a blokkok b√°ny√°szat√°hoz sz√ľks√©ges √°tlagos idŇĎ k√∂zel 10 perc maradjon. Ezzel szemben, ha t√∂bb b√°ny√°sz is √ļgy d√∂nt, hogy abbahagyja a b√°ny√°szatot, aminek k√∂vetkezt√©ben a hashr√°ta jelentŇĎsen cs√∂kken, a b√°ny√°szati neh√©zs√©get m√≥dos√≠tj√°k, megk√∂nny√≠tve ezzel a b√°ny√°szatot (am√≠g az √°tlagos blokkidŇĎ vissza nem √°ll 10 percre).

A b√°ny√°szoknak nem kell √ľtk√∂z√©seket keresni√ľk, mivel t√∂bbf√©le hash-t is l√©trehozhatnak √©rv√©nyes kimenetk√©nt (bizonyos sz√°m√ļ null√°val kezdve). Teh√°t egy adott blokkhoz t√∂bb lehets√©ges megold√°s is l√©tezik, √©s a b√°ny√°szoknak csak egyet kell megtal√°lniuk k√∂z√ľl√ľk - a b√°ny√°szati neh√©zs√©g √°ltal meghat√°rozott k√ľsz√∂b√©rt√©knek megfelelŇĎen.¬†

Mivel a Bitcoin b√°ny√°szat k√∂lts√©ges feladat, a b√°ny√°szoknak nincs okuk arra, hogy kij√°tssz√°k a rendszert, mivel ez jelentŇĎs p√©nz√ľgyi vesztes√©ggel j√°rna. Min√©l t√∂bb b√°ny√°sz csatlakozik egy blokkl√°nchoz, az ann√°l nagyobb √©s erŇĎsebb lesz.


Záró gondolatok

K√©ts√©gtelen, hogy a hash f√ľggv√©nyek n√©lk√ľl√∂zhetetlen eszk√∂z√∂k az informatik√°ban, k√ľl√∂n√∂sen, ha nagy mennyis√©gŇĪ adat kezel√©s√©rŇĎl van sz√≥. Kriptogr√°fi√°val kombin√°lva a hash-algoritmusok igen sokoldal√ļak lehetnek, √©s sokf√©le m√≥don k√≠n√°lnak biztons√°got √©s hiteles√≠t√©st. A kriptogr√°fiai hash f√ľggv√©nyek szinte minden kriptovaluta-h√°l√≥zat sz√°m√°ra l√©tfontoss√°g√ļak, √≠gy tulajdons√°gaik √©s mŇĪk√∂d√©si mechanizmusaik meg√©rt√©se mindenk√©ppen hasznos a blokkl√°nc technol√≥gia ir√°nt √©rdeklŇĎdŇĎk sz√°m√°ra.

Bejegyzések megosztása
Regisztráljon fiókot
Kamatoztassa tudását a gyakorlatban is, nyisson Binance-fiókot még ma.