Mi a hashalés? – A hashelés leírása és legfontosabb tulajdonságai

a hashelés kriptopénz hírek mycryptoption

A hashelés által egy értéket vagy értékeket generálhatunk egy sor szövegből vagy karakterláncból egy matematikai függvény segítségével. A hashelés az egyik módja annak, hogy lehetővé tegyék a biztonságot az üzenetátvitel során, amikor az üzenetet csak egy meghatározott címzettnek szánják. A képlet generálja a hash-t, amely elősegíti az átvitel biztonságát a manipuláció ellen.

Fontos tudni, hogy a blokklánc-hashelés hogyan működik. Ennek érdekében azonban először meg kell értenünk az egyik alapelvet, amely a blokklánc létrehozásához járul hozzá. A blokklánc technológia a múlt század egyik leginnovatívabb és korszakot meghatározó felfedezése. Látva a befolyását, amelyet az elmúlt években gyakorolt, és azt a hatást, amely a jövőben várható, biztos, hogy nem túlzás ezt állítani.

Egyszerű szavakkal

Egyszerűen fogalmazva: a hashelés azt jelenti, hogy bármilyen hosszú bemeneti karakterláncot veszünk, rögzített hosszúságú kimenetet biztosíthatunk válaszul. A kriptovalutákkal összefüggésben, mint például a Bitcoin, a tranzakciókat bemenetként vesszük figyelembe, és egy hash algoritmussal használjunk (a Bitcoin az SHA-256-ot használja), amely rögzített hosszúságú kimenetet biztosít.

Páldának az SHA-256-at (Secure Hashing Algorithm 256) fogjuk használni. Az SHA-256 esetében, függetlenül attól, hogy milyen nagy vagy kicsi a bemenete, a kimenet mindig rögzített 256 bit hosszú lesz. Ez kritikus jelentőségűvé válik, ha hatalmas mennyiségű adatot és tranzakciót kell kezelnie. Tehát alapvetően a hatalmas bemeneti adatok megjegyzése helyett csak a hasht kell megjegyezned, hogy nyomon követhesd. Mielőtt tovább mennénk, először meg kell vizsgálnunk a hash funkciók különféle tulajdonságait és azt, hogy hogyan épülnek be ezek a blokkláncba.

Kriptográfiai hash-funkciók

Képtalálat a következőre: „cryptography”

A kriptográfiai hash funkciók, a hashfunkciók speciális osztályát képviselik és olyan különféle tulajdonságokkal rendelkeznek, melyek ideálissá teszik a titkosításra. Vannak bizonyos tulajdonságok, amelyek a kriptográfiai hash-funkció biztonságáért felelnek.

1. tulajdonság: meghatározható

Ez azt jelenti, hogy függetlenül attól, hogy hányszor elemez egy adott bemenetet hash-funkción keresztül, mindig ugyanazt az eredményt kapja. Ez kritikus jelentőségű, mert ha minden egyes alkalommal eltérő hasheket kapsz, lehetetlen nyomon követni a bemenetet.

2. tulajdonság: Gyors számítás

A hash-funkciónak képesnek kell lennie arra, hogy a bemeneti kivonatot gyorsan visszaadja. Ha a folyamat nem elég gyors, akkor a rendszer egyszerűen nem lesz hatékony.

3. tulajdonság: A pre-image (kép előtti) ellenállás

A pre-image ellenállás állapot az, amiben adott H (A) -ban nem lehet meghatározni A-t, ahol A a bemenet és H (A) a kimeneti hash.  Tegyük fel, hogy dobunk egy kockát, és a kimenet az a szám, amelyet dob. Hogyan lesz képes meghatározni, mi volt az eredeti szám? Ehhez egyszerűen annyit kell tennie, hogy megtudja az 1-6-os számok hashet és összehasonlítja azokat. Mivel a hash-funkciók meghatározhatók, az adott bemenet hashe mindig azonos lesz, tehát egyszerűen összehasonlíthatja a hasheket, és megtudhatja az eredeti bemenetet.

De ez csak akkor működik, ha a megadott mennyiségű adat nagyon kevés. Mi történik, ha hatalmas mennyiségű adat van? Tegyük fel, hogy egy 128 bites hashel foglalkozol. Az eredeti bemeneti adatot csak a „brute-force módszer” segítségével lehet megkeresni. A brute-force módszer alapvetően azt jelenti, hogy véletlenszerű bemenetet kell felvenni, hashelni, majd összehasonlítani a kimenetet a célhashel és megismételni, amíg meg nem találja a megfelelőt.

Szóval, mi fog történni, ha ezt a módszert használod?

Legjobb esetben az első kipróbáláskor megkapod a választ. Mondjuk tény, hogy legszerencsésebb ember kéne legyél a világon, hogy ez megtörténjen. Ennek esélye csillagászati.  A legrosszabb esetben 2 ^ 128 – 1 alkalommal kapja meg a választ. Alapvetően ez azt jelenti, hogy a válasz az összes adat végén található. Az átlagos forgatókönyv szerint valahol a közepén találja meg, alapvetően 2 ^ 128/2 = 2 ^ 127 alkalommal. A perspektíva felvétele érdekében 2 ^ 127 = 1,7 X 10 ^ 38. Más szavakkal, ez egy hatalmas szám.Tehát, bár a képalkotás előtti ellenállást meg lehet szakítani brute-force módszerrel, olyan hosszú időbe telik, hogy nem érdemes ezt megpróbálni.

A változások jelentősége

4. tulajdonság: A bemeneti adatok apró változásai megváltoztatják a hash-t

Annak ellenére, hogy csak egy kicsit változtattuk meg a hash bemenetét, ez teljesen megváltoztatta az egész hasht. Ez kritikus funkció, mivel a hashelés ezen tulajdonsága a blokklánc egyik legnagyobb tulajdonságához, a megváltoztathatatlanságához vezet.

5. tulajdonság: ütközésálló

Mivel két különböző A és B bemenet van, ahol H (A) és H (B) a megfelelő hash, akkor lehetetlen, hogy H (A) H (B) -vel egyenlő legyen. Ez azt jelenti, hogy az egyes bemenetek nagyrészt saját egyedi hashel rendelkeznek. Miért mondjuk hogy „nagyrészt”? Beszéljünk egy érdekes koncepcióról, amit  „Születésnapi paradoxonnak” neveznek.

Mi a születésnapi paradoxon?

Ha találkozol egy idegennel az utcán, akkor nagyon kicsi az esélye, hogy mindketten ugyanazon a napon születtetek. Valójában, ha feltételezzük, hogy az év összes napjának azonos esélye van arra, hogy a  születésének napja legyen, akkor a születésnapját megosztó másik személy esélye 1/365, ami 0,27%. Más szavakkal, ez nagyon alacsony.

Azonban,ha 20-30 embert gyűjtünk össze egy szobában, akkor a megegyező születésnapok esélye növekszik. Valójában ebben a forgatókönyvben 50% vesély van arra, hogy 2 ember ugyanazon a születésnapon osztozzon.

Miért történik ez? A valószínűségre vonatkozó egyszerű szabály miatt, amely a következőképpen alakul. Tegyük fel, hogy N százalék esély van arra, hogy egy esemény bekövetkezik, akkor N véletlenszerű elem négyzetgyökére van szüksége ahhoz, hogy az egybeesés 50% -os eséllyel rendelkezzen.

Szóval, ha ezt az elméletet alkalmazzuk a születésnapokra, akkor 365 különféle lehetősége van a születésnapra, tehát csak Négyzetgyök(365) van szüksége, amely ~ 23 ~, véletlenszerűen kiválasztott ember, 50% esélye annak, hogy két ember megosztja ugyanazt a születésnapot.

Hogyan alkalmazzuk ezt a hashelés-ben?

Tegyük fel, hogy van egy 128 bites hash, amely 2 ^ 128 különböző lehetőségekkel rendelkezik. A születésnapi paradoxon használatával 50% -kal nagyobb eséllyel törheti meg az ütközési ellenállást a Négyzetgyök(2 ^ 128) = 2 ^ 64. esetben. Mint láthatod, az ütközési ellenállást sokkal könnyebb megbontani, mint a pre-image ellenállását. Egyik hash-funkció sem ütközésmentes, de általában nagyon hosszú időbe telik az ütközés megtalálása. Tehát, ha olyan funkciót használ, mint az SHA-256, akkor biztonságos feltételezni, hogy ha H (A) = H (B), akkor A = B.

6. tulajdonság: Rejtvénybarát

Ez egy lenyűgöző tulajdonság, és ennek a tulajdonságnak a kriptovalutákra gyakorolt ​​hatása hatalmas. Minden Y kimenet esetén, ha k magas minimum entrópiával rendelkező eloszlásból van kiválasztva, lehetetlen olyan x bemenetet találni, ahol H (k | x) = Y. Mit jelent a „magas minimum entrópia”? Ez azt jelenti, hogy az az eloszlás, amelyből az értéket választják, annyira eloszlik, hogy véletlenszerű értéket választunk elhanyagolható valószínűséggel. Alapvetően, ha azt mondták neked, hogy válassz egy számot 1 és 5 között, az alacsony minimum entrópia eloszlás. Ha azonban az 1 és egy 1 millió közötti számot választanánk, akkor ez magas minimum entrópia eloszlása lenne.

Mit jelent a „k | x”? A „|” összekapcsolást jelöl. Az összekapcsolás azt jelenti, hogy két húrt össze kell adni. Például ha összekapcsolom a „KÉK” és az „ÉG” együttesét, akkor az eredmény „KÉKÉG” lesz. Tegyük fel, hogy a kimeneti értéke „Y”. Ha egy véletlenszerű „k” értéket választunk egy széles eloszlásból, akkor lehetetlen olyan X értéket találni, hogy a k és x összefűzésének hashe megadja az Y kimenetet. Valójában a bányászat teljes folyamata ennek alapján működik.

Példák a kriptográfiai hash-funkciókra

MD 5: 128 bites kivonatot hoz létre. Az ütközésállóság ~ 2 ^ 21 hash után megsérült.

SHA 1: 160 bites kivonatot készít. Az ütközésállóság ~ 2 ^ 61 hash után megtört.

SHA 256: 256 bites hasht készít. Ezt jelenleg a Bitcoin használja.

Keccak-256: 256 bites hasht készít, amelyet jelenleg az Ethereum használ.

Az adatszerkezet az adatok tárolásának speciális módja. Két adatszerkezeti tulajdonság van, amelyek fontosak, ha meg akarod érteni, hogyan működik a blokklánc. Ezek a következők: mutatók, kapcsolódó listák, pointerek. A mutatók olyan változók a programozásban, amelyek egy másik változó címét tárolják. Általában a programozási nyelvek normál változói tárolják az adatokat. Például. int a = 10, azt jelenti, hogy van egy „a” változó, amely egy egész értéket tárol. Ebben az esetben a 10 az érték. Ez egy normál változó. A mutatók azonban az értékek tárolása helyett más változók címeit tárolják. Ezért hívják őket mutatóknak, mivel azok szó szerint más változók helyére mutatnak. Az összekapcsolt lista az adatszerkezetek egyik legfontosabb eleme. Ez egy blokk-sorozat, amelyek mindegyike tartalmaz olyan adatokat, amelyek egy mutatón keresztül kapcsolódnak a következő blokkhoz. A mutató változó ebben az esetben a következő csomópont címét tartalmazza, és így a kapcsolat létrejött.

Fontos megjegyezni, hogy az egyes blokkokon belüli mutató a következő blokk címét tartalmazza. Így érhető el a kimutatás. Most azt kérdezheted, hogy ez mit jelent a lista első blokkjában? Hol marad az első blokk mutatója? Az első blokkot „genezis blokknak” hívják, és mutatója magában a rendszerben fekszik. Mint ahogyan már kitalálhattad, erre épül a blokklánc felépítése.

Hash-mutató

A blokklánc egy összekapcsolt lista, amely adatokat és egy hash mutatót tartalmaz, amely az előző blokkra mutat, és így létrehozza a láncot. Mi az a hash-mutató? A hash-mutató hasonló a mutatóhoz, de ahelyett, hogy csak az előző blokk címét tartalmazná, az előző blokkban lévő adatok hash-ját is tartalmazza. Ez az egy kis apróság teszi a blokkláncokat olyan elképesztően megbízhatóvá.

Képzeld el egy pillanatra ezt: a hacker megtámadja a 3. blokkot, és megpróbálja megváltoztatni az adatokat. A hash-funkciók tulajdonságai miatt az adatok kis változása drasztikusan megváltoztatja a hash-t. Ez azt jelenti, hogy a 3. blokkban végrehajtott apró változtatások megváltoztatják a 2. blokkban tárolt hasht, amely most megváltoztatja a 2. blokk adatait és hashét, ami változásokat eredményez az 1. blokkban és így tovább, és így tovább . Ez teljesen megváltoztatja a láncot. Pontosan így érik el a blokkláncok a megváltoztathatatlanságot. A hashelés tehát nem egy bonyolult folyamat, mindössze a hashelés lépéseit kell megismerni.

Mások ezeket is olvasták!  Ajánlott cikkjeink:

Olvasd el a legnépszerűbb tőzsdékről szóló értékelést és véleményeket! Oszd meg tapasztalataidat, véleményedet és segítsd a kriptoközösséget!

Még több cikk