Vad Àr hashing?
Hem
Artiklar
Vad Àr hashing?

Vad Àr hashing?

MedelnivÄ
Publicerad Jul 29, 2019Uppdaterad Jan 31, 2023
7m

Hashing Àr processen att generera utdata med fast storlek frÄn indata av variabel storlek. Detta görs genom anvÀndningen av matematiska formler som kallas hashfunktioner (implementerade som hashingalgoritmer). 

Även om inte alla hashfunktioner involverar anvĂ€ndningen av kryptografi, Ă€r de sĂ„ kallade kryptografiska hashfunktionerna kĂ€rnan i kryptovalutor. Tack vare dem kan blockkedjor och andra distribuerade system uppnĂ„ betydande nivĂ„er av dataintegritet och sĂ€kerhet.

BÄde konventionella och kryptografiska hashfunktioner Àr deterministiska. Att vara deterministisk innebÀr att sÄ lÀnge indata inte Àndras kommer hashingalgoritmen alltid att producera samma utdata (Àven kallat systematisering eller hash).

Vanligtvis Àr hashingalgoritmerna för kryptovalutor utformade som envÀgsfunktioner, vilket innebÀr att de inte bara kan ÄterstÀllas utan stora mÀngder datortid och resurser. Med andra ord Àr det ganska enkelt att skapa utdata frÄn indata, men relativt svÄrt att gÄ i motsatt riktning (för att generera indata frÄn enbart utdata). Generellt sett gÀller att ju svÄrare det Àr att hitta indata, desto sÀkrare anses hashingalgoritmen vara.


Hur fungerar en hashfunktion?

Olika hashfunktioner producerar utdata av olika storlekar, men de möjliga utdatastorlekarna för varje hashingalgoritm Àr alltid konstanta. Till exempel kan SHA-256-algoritmen bara producera utdata pÄ 256 bitar, medan SHA-1 alltid genererar en 160-bitars systematisering.

För att ta ett exempel kan vi lÄta köra orden "Binance" och "binance" genom SHA-256-hashalgoritmen (den som anvÀnds i Bitcoin).

SHA-256

Inmatning

Utdata (256 bitar)

Binance

f1624fcc63b615ac0e95daf9ab78434ec2e8ffe402144dc631b055f711225191

binance

59bba357145ca539dcd1ac957abc1ec5833319ddcae7f5e8b5da0c36624784b2


Observera att en mindre Ă€ndring (som att göra den första bokstaven liten eller stor) resulterade i ett helt annat hashvĂ€rde. Men eftersom vi anvĂ€nder SHA-256 kommer utdata alltid att ha en fast storlek pĂ„ 256 bitar (eller 64 tecken) – oavsett storleken pĂ„ indata. Det spelar ingen roll hur mĂ„nga gĂ„nger vi kör de tvĂ„ orden genom algoritmen, för dessa tvĂ„ utdata förblir konstanta.

OmvÀnt gÀller att om vi kör samma indata genom SHA-1-hashalgoritmen, skulle vi fÄ följande resultat:

SHA-1

Inmatning

Utdata (160 bitar)

Binance

7f0dc9146570c608ac9d6e0d11f8d409a1ee6ed1

binance

e58605c14a76ff98679322cca0eae7b3c4e08936


Förkortningen SHA stÄr för Secure Hash Algorithms. Den Àr en uppsÀttning kryptografiska hashfunktioner som inkluderar algoritmerna SHA-0 och SHA-1, tillsammans med grupperna SHA-2 och SHA-3. SHA-256 Àr en del av SHA-2-gruppen, tillsammans med SHA-512 och andra varianter. För nÀrvarande anses endast grupperna SHA-2 och SHA-3 vara sÀkra.


Varför Àr de sÄ viktiga?

Konventionella hashfunktioner har ett brett spektrum av anvĂ€ndningsomrĂ„den, inklusive databassökningar, stora filanalyser och datahantering. Å andra sidan anvĂ€nds kryptografiska hashfunktioner i stor utstrĂ€ckning i informationssĂ€kerhetsapplikationer, sĂ„som meddelandeautentisering och digitala fingeravtryck. NĂ€r det gĂ€ller Bitcoin Ă€r kryptografiska hashfunktioner en viktig del av miningprocessen och spelar ocksĂ„ en roll i genereringen av nya adresser och nycklar.

Den verkliga kraften i hashing blir uppenbar nÀr man hanterar enorma mÀngder information. Till exempel kan man köra en stor fil eller uppsÀttning data genom en hashfunktion, och sedan anvÀnda dess utdata för att snabbt verifiera noggrannheten och integriteten hos dessa data. Detta Àr möjligt tack vare hashfunktionernas deterministiska natur: indata kommer alltid att resultera i en förenklad, kondenserad utdata (hash). Denna teknik tar bort behovet av att lagra och "komma ihÄg" stora mÀngder data.

Hashing Àr sÀrskilt anvÀndbart nÀr det gÀller blockkedjeteknik. Bitcoins blockkedja har flera operationer som involverar hashing, och de flesta av dem Àr inom utvinningsprocessen. Faktum Àr att nÀstan alla kryptovalutaprotokoll förlitar sig pÄ hashing för att lÀnka och kondensera grupper av transaktioner till block, och Àven för att producera kryptografiska lÀnkar mellan varje block, vilket effektivt skapar en blockkedja.


Kryptografiska hashfunktioner

Som sagt kan en hashfunktion som distribuerar kryptografiska tekniker definieras som en kryptografisk hashfunktion. I allmÀnhet krÀvs det mÀngder av sÄ kallade brute-force-försök innan man kan hacka en kryptografisk hashfunktion. För att en person ska kunna "ÄterstÀlla" en kryptografisk hashfunktion mÄste denne gissa indata genom att försöka igen och igen tills motsvarande utdata produceras. Det finns emellertid ocksÄ en möjlighet att olika indata producerar exakt samma utdata, och dÄ intrÀffar en "kollision".

Tekniskt sett mÄste en kryptografisk hashfunktion ha tre egenskaper för att anses vara effektiv och sÀker. Vi kan beskriva dem som kollisionsresistens, förbildsresistens och en andra förbildsresistens.

Innan vi gÄr igenom varje egenskap kan vi sammanfatta deras logik i tre korta meningar.

  • Kollisionsresistens: omöjligt att hitta tvĂ„ distinkta indata som producerar samma hash som utdata.

  • Förbildsresistens: omöjligt att "Ă„terstĂ€lla" hashfunktionen (hitta indata frĂ„n given utdata).

  • En andra förbildsresistens: omöjligt att hitta nĂ„gra andra indata som kolliderar med angiven indata.


Kollisionsresistens

Som nÀmnts tidigare intrÀffar en kollision nÀr olika indata producerar exakt samma hash. DÀrför anses en hashfunktion vara kollisionsresistens tills det ögonblicket dÄ nÄgon hittar en kollision. Observera att kollisioner alltid kommer att finnas för alla hashfunktioner, eftersom antalet möjliga indata Àr oÀndligt, medan antalet möjliga utdata inte Àr det.

En hashfunktion Àr med andra ord kollisionsresistens nÀr möjligheten att hitta en kollision Àr sÄ lÄg att det skulle krÀva miljontals Är av berÀkningar. SÄ Àven om det inte finns nÄgra helt kollisionsfria hashfunktioner, Àr vissa tillrÀckligt starka för att betraktas som resistenta (till exempel SHA-256).

Bland de olika SHA-algoritmerna Àr grupperna SHA-0- och SHA-1 inte lÀngre sÀkra, eftersom kollisioner har hittats. För nÀrvarande anses grupperna SHA-2 och SHA-3 vara resistenta mot kollisioner.


Förbildsresistens

Att vara förbildsresistent Àr relaterat till begreppet envÀgsfunktioner. En hashfunktion anses vara förbildsresistent nÀr det finns en mycket lÄg sannolikhet att nÄgon hittar indata som genererade en viss utdata.

Observera att den hÀr egenskapen skiljer sig frÄn den föregÄende, eftersom en hackare skulle försöka gissa indata genom att titta pÄ specifika utdata. En kollision intrÀffar Ä andra sidan nÀr nÄgon hittar tvÄ olika indata som genererar samma utdata, men det spelar ingen roll vilka indata som anvÀndes.

Egenskapen förbildsresistens Àr vÀrdefull för att skydda data, eftersom en enkel hash av ett meddelande kan bevisa dess Àkthet utan att behöva avslöja informationen. I praktiken lagrar och anvÀnder mÄnga tjÀnsteleverantörer och webbapplikationer hashvÀrden som genereras frÄn lösenord, snarare Àn sjÀlva lösenorden.


En andra förbildsresistens

För att förenkla det kan vi sÀga att den andra förbildsresistensen ligger nÄgonstans mellan de andra tvÄ egenskaperna. En andra förbildsattack intrÀffar nÀr nÄgon kan hitta specifika indata som genererar samma utdata frÄn andra indata som de redan kÀnner till.

Med andra ord innebÀr en andra förbildsattack att hitta en kollision, men istÀllet för att söka efter tvÄ slumpmÀssiga indata som genererar samma hash, söker de efter indata som genererar samma hash som genererades av annan specifik indata.

DÀrför Àr alla hashfunktioner som Àr resistenta mot kollisioner ocksÄ resistenta mot andra förbildsattacker, eftersom den senare alltid kommer att innebÀra en kollision. Man kan dock fortfarande utföra en förbildsattack pÄ en kollisionsbestÀndig funktion eftersom det innebÀr att man hittar en enda indata frÄn en enda utdata.


Utvinning

Det finns mÄnga steg i Bitcoin-utvinning som involverar hashfunktioner, som att kontrollera saldon, lÀnka transaktioners indata och utdata och hashing-transaktioner inom ett block för att bilda ett Merkle-trÀd. Men en av de frÀmsta anledningarna till att Bitcoins blockkedja Àr sÀker Àr det faktum att miners mÄste utföra en mÀngd hashingoperationer för att sÄ smÄningom hitta en giltig lösning för nÀsta block.

Mer specifikt mÄste en miner prova flera olika indata nÀr denne skapar ett hashvÀrde för sitt kandidatblock. I huvudsak kommer man bara att kunna validera sitt block om man genererar en utdatahash som börjar med ett visst antal nollor. Antalet nollor Àr det som bestÀmmer utvinningens svÄrighetsgrad och det varierar beroende pÄ hashhastigheten som dedikeras Ät nÀtverket.

I det hÀr fallet representerar hashhastigheten hur mycket datorkraft som investeras i Bitcoin-utvinningen. Om nÀtverkets hashhastighet ökar kommer Bitcoin-protokollet automatiskt att justera utvinningens svÄrighetsgrad sÄ att den genomsnittliga tiden som behövs för att bryta ett block förblir nÀra 10 minuter. Om dÀremot flera miners bestÀmmer sig för att sluta utvinna, vilket gör att hashhastigheten sjunker avsevÀrt, kommer utvinningens svÄrighetsgrad att justeras, vilket gör det lÀttare att utvinna (tills den genomsnittliga blocktiden kommer tillbaka till 10 minuter).

Observera att miners inte behöver hitta kollisioner, eftersom det finns flera hashvĂ€rden som de kan generera som giltiga utdata (som börjar med ett visst antal nollor). SĂ„ det finns flera möjliga lösningar för ett visst block, och miners behöver bara hitta en av dem – enligt tröskeln som bestĂ€ms av utvinningens svĂ„righetsgrad. 

Eftersom Bitcoin-utvinning Àr en kostnadsintensiv uppgift har miners ingen anledning att fuska i systemet, eftersom det skulle leda till betydande ekonomiska förluster. Ju fler miners som gÄr med i en blockkedja, desto större och starkare blir den.


Sammanfattningsvis

Det rÄder inga tvivel om att hashfunktioner Àr viktiga verktyg inom datavetenskap, sÀrskilt nÀr det handlar om enorma mÀngder data. I kombination med kryptografi kan hashingalgoritmer vara ganska mÄngsidiga och erbjuda bÄde sÀkerhet och autentisering pÄ mÄnga olika sÀtt. DÀrför Àr kryptografiska hashfunktioner avgörande för nÀstan alla kryptovalutanÀtverk, sÄ att förstÄ deras egenskaper och arbetsmekanismer Àr verkligen till hjÀlp för alla som Àr intresserade av blockkedjeteknik.