Hvad er hashing?
Hjem
Artikler
Hvad er hashing?

Hvad er hashing?

Avanceret
Offentliggjort Jul 29, 2019Opdateret Jan 31, 2023
7m

Hashing refererer til processen med at generere et output i fast st√łrrelse fra et input af variabel st√łrrelse. Dette g√łres ved brug af matematiske formler kendt som hashfunktioner (implementeret som hashingalgoritmer).¬†

Selvom ikke alle hashfunktioner involverer brugen af kryptografi, er de såkaldte kryptografiske hashfunktioner kernen i kryptovalutaer. Takket være dem er blockchains og andre distribuerede systemer i stand til at opnå betydelige niveauer af dataintegritet og sikkerhed.

Både konventionelle og kryptografiske hashfunktioner er deterministiske. At være deterministisk betyder, at så længe et input ikke ændres, vil hashingalgoritmen altid producere det samme output (også kendt som digest eller hash).

Typisk er hashingalgoritmerne for kryptovalutaer designet som envejsfunktioner, hvilket betyder, at de ikke let kan tilbagef√łres uden store m√¶ngder computertid og ressourcer. Med andre ord er det ret nemt at oprette output fra input, men relativt vanskeligt at g√• i den modsatte retning (at generere input fra output alene). Generelt g√¶lder det, at jo vanskeligere det er at finde input, jo mere sikker anses hashingalgoritmen for at v√¶re.


Hvordan fungerer en hashfunktion?

Forskellige hashfunktioner producerer output af forskellig st√łrrelse, men de mulige outputst√łrrelser for hver hashingalgoritme er altid konstante. SHA-256-algoritmen kan f.eks. kun producere output p√• 256 bit, mens SHA-1 altid vil generere en digest p√• 160-bit.

For at illustrere det kan vi k√łre ordene "Binance" og "binance" gennem SHA-256 hashingalgoritmen (den, der bruges i bitcoin).

SHA-256

Input

Output (256 bit)

Binance

F1624fCC63B615AC0E95dAF9AB78434EC2e8FFE402144DC631b055F711225191

Binance

59bba357145ca539dc1ac957abc1ec5833319ddcae7f5e8b5da0c36624784b2


Bem√¶rk, at en mindre √¶ndring (st√łrrelsen p√• det f√łrste bogstav) resulterede i en helt anden hashv√¶rdi. Men eftersom vi bruger SHA-256, vil outputtet altid have en fast st√łrrelse p√• 256-bit (eller 64 tegn) ‚Äď uanset inputst√łrrelsen. Det betyder heller ikke noget, hvor mange gange vi k√łrer de to ord gennem algoritmen. De to output forbliver konstante.

Omvendt, hvis vi k√łrer de samme input gennem SHA-1-hashingalgoritmen, vil vi have f√łlgende resultater:

SHA-1

Input

Output (160 bit)

Binance

7F0dc9146570c608ac9D6E0D11F8D409a1ee6ed1

Binance

E58605c14a76ff98679322cca0eae7b3c4e08936


Akronymet SHA st√•r for Secure Hash Algorithms. Det refererer til et s√¶t kryptografiske hashfunktioner, der inkluderer SHA-0- og SHA-1-algoritmerne sammen med SHA-2- og SHA-3-grupperne. SHA-256 er en del af SHA-2-gruppen sammen med SHA-512 og andre varianter. I √łjeblikket betragtes kun SHA-2- og SHA-3-grupperne som sikre.


Hvorfor betyder de noget?

Konventionelle hashfunktioner har en bred vifte af use cases, herunder databaseopslag, analyser af store filer og datastyring. P√• den anden side bruges kryptografiske hashfunktioner i vid udstr√¶kning i informationssikkerhedsapplikationer, s√•som meddelelsesgodkendelse og digitalt fingeraftryk. N√•r det kommer til bitcoin, er kryptografiske hashfunktioner en v√¶sentlig del af¬†miningprocessen og spiller ogs√• en rolle i genereringen af nye adresser og n√łgler.

Den virkelige kraft ved hashing kommer, n√•r man besk√¶ftiger sig med enorme m√¶ngder information. Man kan f.eks. k√łre en stor fil eller et datas√¶t gennem en hashfunktion og derefter bruge dens output til hurtigt at verificere n√łjagtigheden og integriteten af dataene. Dette er muligt p√• grund af hashfunktionernes deterministiske karakter: Inputtet vil altid resultere i et forenklet, kondenseret output (hash). En s√•dan teknik fjerner behovet for at gemme og "huske" store m√¶ngder data.

Hashing er især nyttigt inden for rammerne af blockchain-teknologi. Bitcoin-blockchainen har flere operationer, der involverer hashing, hvoraf de fleste af dem er inden for mining. Faktisk er næsten alle kryptovalutaprotokoller afhængige af hashing for at tilknytte og kondensere grupper af transaktioner i blokke og også for at producere kryptografiske links mellem hver blok, hvilket på effektiv vis skaber en blockchain.


Kryptografiske hashfunktioner

Igen kan en hashfunktion, der anvender kryptografiske teknikker, defineres som en kryptografisk hashfunktion. Generelt kr√¶ver brud p√• en kryptografisk hashfunktion et utal af brute force-fors√łg. For at en person kan "tilbagef√łre" en kryptografisk hashfunktion, skal denne g√¶tte, hvad inputtet var ved fors√łg og fejl, indtil det tilsvarende output produceres. Der er dog ogs√• mulighed for, at forskellige input producerer n√łjagtigt det samme output, i hvilket tilf√¶lde der opst√•r en "kollision".

Teknisk set skal en kryptografisk hashfunktion f√łlge tre egenskaber for at blive betragtet som effektivt sikker. Vi kan beskrive dem som kollisionsmodstand, preimage-modstand og anden preimage-modstand.

F√łr vi ser n√¶rmere p√• hver egenskab, s√• lad os opsummere deres logik i tre korte s√¶tninger.

  • Kollisionsmodstand:¬†umuligt at finde to forskellige input, der producerer den samme hash som output.

  • Preimage-modstand:¬†umuligt at "tilbagef√łre" hashfunktionen (finde input fra et givet output).

  • Anden preimage-modstand:¬†umuligt at finde noget andet input, der kolliderer med et specificeret input.


Kollisionsmodstand

Som n√¶vnt sker der en kollision, n√•r forskellige input producerer n√łjagtig den samme hash. S√•ledes betragtes en hashfunktion som kollisionsbestandig indtil det √łjeblik, nogen finder en kollision. Bem√¶rk, at kollisioner altid vil eksistere for enhver hashfunktion, fordi de mulige input er uendelige, mens de mulige output er endelige.

Sagt på en anden måde er en hashfunktion kollisionssikker, når muligheden for at finde en kollision er så lav, at det ville kræve millioner af års beregninger. Så på trods af, at der ikke er nogen kollisionsfri hashfunktioner, er nogle af dem stærke nok til at blive betragtet som resistente (f.eks. SHA-256).

Blandt de forskellige SHA-algoritmer er SHA-0- og SHA-1-grupperne ikke l√¶ngere sikre, fordi der er fundet kollisioner. I √łjeblikket betragtes SHA-2- og¬†SHA-3-grupperne som modstandsdygtige over for kollisioner.


Preimage-modstand

Egenskaben af preimage-modstand er relateret til begrebet envejsfunktioner. En hashfunktion betragtes som preimage-resistent, når der er en meget lav sandsynlighed for, at nogen finder det input, der genererede et bestemt output.

Bem√¶rk, at denne egenskab er forskellig fra den forrige, fordi en hacker ville fors√łge at g√¶tte, hvad der var inputtet ved at se p√• et givet output. En kollision opst√•r derimod, n√•r nogen finder to forskellige inputs, der genererer det samme output, men det betyder ikke noget, hvilke input der blev brugt.

Egenskaben ved preimage-modstand er værdifuld til beskyttelse af data, fordi en simpel hash af en besked kan bevise dens ægthed uden behov for at videregive oplysningerne. I praksis gemmer og bruger mange tjenesteudbydere og webapplikationer hashes genereret fra adgangskoder i stedet for adgangskoder i klartekst.


Anden preimage-modstand

For at forenkle tingene kan vi sige, at den anden preimage-modstand er et sted imellem de to andre egenskaber. Et andet preimage-angreb opstår, når nogen er i stand til at finde et specifikt input, der genererer det samme output af et andet input, som de allerede kender.

Med andre ord involverer et andet preimage-angreb at finde en kollision, men i stedet for at s√łge efter to tilf√¶ldige input, der genererer den samme hash, s√łger de efter et input, der genererer den samme hash, der blev genereret af et andet specifikt input.

Derfor er enhver hashfunktion, der er modstandsdygtig over for kollisioner, ogs√• modstandsdygtig over for angreb p√• et andet preimage, da sidstn√¶vnte altid vil indeb√¶re en kollision. Man kan dog stadig udf√łre et preimage-angreb p√• en kollisionsbestandig funktion, da det indeb√¶rer at finde et enkelt input fra et enkelt output.


Mining

Der er mange trin i¬†bitcoin-mining, der involverer hashfunktioner, s√•som kontrol af saldi, sammenk√¶dning af transaktionsinput og -output og hashingtransaktioner inden for en blok for at danne et¬†Merkle Tree. Men √©n af hoved√•rsagerne til, at Bitcoin-blockchainen er sikker, er det faktum, at minere skal udf√łre et utal af hashingoperationer for til sidst at finde en gyldig l√łsning til den n√¶ste blok.

Specifikt skal en miner pr√łve flere forskellige input, n√•r denne opretter en hashv√¶rdi for deres kandidatblok. I bund og grund vil de kun v√¶re i stand til at validere deres blok, hvis de genererer en outputhash, der starter med et bestemt antal nuller. Antallet af nuller er det, der bestemmer miningvanskeligheden, og den varierer alt efter den hashhastighed, der er afsat til netv√¶rket.

I dette tilf√¶lde repr√¶senterer hashhastigheden, hvor meget computerkraft der investeres i bitcoin-mining. Hvis netv√¶rkets hashhastighed stiger, justerer Bitcoin-protokollen automatisk miningvanskeligheden, s√• den gennemsnitlige tid, der er n√łdvendig for at mine en blok, forbliver t√¶t p√• 10 minutter. I mods√¶tning hertil, hvis flere minere beslutter at stoppe miningen, hvilket f√•r hashhastigheden til at falde betydeligt, vil miningvanskeligheden blive justeret, hvilket g√łr det lettere at mine (indtil den gennemsnitlige bloktid kommer tilbage til 10 minutter).

Bem√¶rk, at minere ikke beh√łver at finde kollisioner, fordi der er flere hashes, de kan generere som et gyldigt output (start af et bestemt antal nuller). S√• der er flere mulige l√łsninger til en bestemt blok, og minere skal kun finde √©n af dem ‚Äď i henhold til t√¶rsklen bestemt af miningvanskeligheden.¬†

Eftersom bitcoin-mining er en omkostningsintensiv opgave, har minere ingen grund til at snyde systemet, da det ville f√łre til betydelige √łkonomiske tab. Jo flere minere der slutter sig til en blockchain, jo st√łrre og st√¶rkere bliver den.


Sammenfatning

Der er ingen tvivl om, at hashfunktioner er vigtige v√¶rkt√łjer inden for datalogi, is√¶r n√•r man besk√¶ftiger sig med enorme m√¶ngder data. N√•r hashingalgoritmer kombineres med kryptografi, kan de v√¶re ret alsidige og tilbyde sikkerhed og godkendelse p√• mange forskellige m√•der. Som s√•dan er kryptografiske hashfunktioner afg√łrende for n√¶sten alle kryptovalutanetv√¶rk, s√• forst√•else af deres egenskaber og arbejdsmekanismer er bestemt nyttigt for alle, der er interesseret i blockchain-teknologi.