Mitä on hajautus?
Sisällysluettelo
Kuinka hajautusfunktio toimii?
Miksi tällä on merkitystä?
Kryptografiset hajautusfunktiot
Louhinta
Yhteenveto
Mitä on hajautus?
Etusivu
Artikkelit
Mitä on hajautus?

Mitä on hajautus?

Edistynyt
Julkaistu Jul 29, 2019Päivitetty Jan 31, 2023
7m

Hajautus viittaa prosessiin, jossa luodaan tietynkokoinen tuotos vaihtelevan kokoisesta syötteestä. Tämä tehdään käyttämällä matemaattisia kaavoja, jotka tunnetaan nimellä hajautusfunktiot (toteutettu hajautusalgoritmeina). 

Vaikka kaikki hajautusfunktiot eivät kata kryptografian käyttöä, niin sanotut kryptografiset hajautusfunktiot ovat kryptojen ytimessä. Niiden ansiosta lohkoketjut ja muut hajautetut järjestelmät pystyvät saavuttamaan merkittävän tietojen eheyden ja turvallisuuden tason.

Sekä tavanomaiset että kryptografiset hajautusfunktiot ovat deterministisiä. Deterministinen tarkoittaa sitä, että niin kauan kuin syöte ei muutu, hajautusalgoritmi tuottaa aina saman tuotoksen (tunnetaan myös nimellä tiiviste- tai hajautusarvo).

Tyypillisesti kryptojen hajautusalgoritmit on suunniteltu yksisuuntaisiksi toiminnoiksi, mikä tarkoittaa, että niitä ei voi helposti palauttaa ilman suuria määriä laskenta-aikaa ja resursseja. Toisin sanoen syötteestä on melko helppoa luoda tuotos, mutta tämän prosessin toteuttaminen vastakkaiseen suuntaan on suhteellisen vaikeaa (tuottaa pelkästä tuotoksesta syöte). Yleisesti ottaen mitä vaikeampaa syötettä on löytää, sitä turvallisempana hajautusalgoritmia pidetään.


Kuinka hajautusfunktio toimii?

Eri hajautusfunktiot tuottavat erikokoisia tuotoksia, mutta kunkin hajautusalgoritmin mahdolliset tuotoskoot ovat aina vakioita. Esimerkiksi SHA-256-algoritmi voi tuottaa vain 256 bitin tuotoksia, kun taas SHA-1 tuottaa aina 160 bitin tiivisteen.

Tämän havainnollistamiseksi viedään sanat "Binance" ja "binance" (Bitcoinin käyttämän) SHA-256-hajautusalgoritmin läpi.

SHA-256

Syöte

Tuotos (256 bittiä)

Binance

f1624fcc63b615ac0e95daf9ab78434ec2e8ffe402144dc631b055f711225191

binance

59bba357145ca539dcd1ac957abc1ec5833319ddcae7f5e8b5da0c36624784b2


Huomaa, että pieni muutos (ensimmäisen kirjaimen koko) johti täysin erilaiseen hajautusarvoon. Mutta koska käytämme SHA-256:ta, tuotoksien koko on aina 256 bittiä (tai 64 merkkiä) – syötteen koosta riippumatta. Ei myöskään ole väliä sillä, kuinka monta kertaa viemme kaksi sanaa algoritmin läpi, sillä kaksi tuotosta pysyvät vakioina.

Toisaalta jos viemme samat syötteet SHA-1-hajautusalgoritmin läpi, saamme seuraavat tulokset:

SHA-1

Syöte

Tuotos (160 bittiä)

Binance

7f0dc9146570c608ac9d6e0d11f8d409a1ee6ed1

binance

e58605c14a76ff98679322cca0eae7b3c4e08936


Lyhenne SHA tulee sanoista "Secure Hash Algorithms". Se viittaa joukkoon kryptografisia hajautusfunktioita, jotka sisältävät SHA-0- ja SHA-1-algoritmit sekä SHA-2- ja SHA-3-ryhmät. SHA-256 on osa SHA-2-ryhmää yhdessä SHA-512:n ja muiden varianttien kanssa. Tällä hetkellä vain SHA-2- ja SHA-3-ryhmiä pidetään turvallisina.


Miksi tällä on merkitystä?

Perinteisillä hajautusfunktioilla on laaja valikoima käyttötapauksia, mukaan lukien tietokantahaut, suurten tiedostojen analyysit ja tiedonhallinta. Toisaalta kryptografisia hajautusfunktioita käytetään laajasti tietoturvasovelluksissa, kuten viestien todentamisessa ja digitaalisessa sormenjäljessä. Mitä tulee Bitcoiniin, kryptografiset hajautusfunktiot ovat olennainen osa louhintaprosessia ja niillä on myös rooli uusien osoitteiden ja avainten luomisessa.

Hajautuksen todellinen teho tulee esiin, kun käsitellään valtavia tietomääriä. Esimerkiksi iso tiedosto tai tietojoukko voidaan viedä hajautusfunktion läpi ja käyttää sitten tätä tuotosta tietojen tarkkuuden ja eheyden nopeaan tarkistamiseen. Tämä on mahdollista hajautusfunktioiden deterministisen luonteen vuoksi: syöte johtaa aina yksinkertaistettuun, tiivistettyyn tuotokseen (hajautusarvoon). Tällainen tekniikka poistaa tarpeen tallettaa ja "muistaa" suuria tietomääriä.

Hajautus on erityisen hyödyllinen lohkoketjutekniikan suhteen. Bitcoin-lohkoketjussa on useita hajauttamista sisältäviä toimintoja, joista suurin osa kuuluu louhintaprosessiin. Itse asiassa lähes kaikki kryptoprotokollat luottavat hajauttamiseen linkittääkseen ja tiivistääkseen transaktioryhmät lohkoiksi ja myös tuottaakseen kryptografisia linkkejä kunkin lohkon välille, mikä luo lohkoketjun.


Kryptografiset hajautusfunktiot

Hajautusfunktio, joka käyttää kryptografisia tekniikoita, voidaan määritellä kryptografiseksi hajautusfunktioksi. Yleensä kryptografisen hajautusfunktion rikkominen vaatii lukemattoman määrän yrityksiä raa'alla voimalla. Jotta henkilö voisi "palauttaa" kryptografisen hajautusfunktion, hänen on arvattava, mikä syöte oli yrityksen ja erehdyksen kautta, kunnes vastaava tuotos on tuotettu. On kuitenkin myös mahdollista, että eri syötteet tuottavat täsmälleen saman tuotoksen, jolloin tapahtuu "törmäys".

Teknisesti kryptografisen hajautusfunktion on noudatettava kolmea ominaisuutta, jotta sitä voidaan pitää turvallisena. Voimme kuvata näitä törmäyskestävyydeksi, esikuvankestävyydeksi ja toisen esikuvan kestävyydeksi.

Ennen kuin keskustelemme näistä omaisuuksista, tiivistetäänpä niiden logiikka kolmeen lyhyeen lauseeseen.

  • Törmäyskestävyys: on mahdotonta löytää kahta erillistä syötettä, jotka tuottavat saman hajautusarvon kuin tuotos.

  • Esikuvankestävyys: on mahdotonta "palauttaa" hajautusfunktio (löytää syöte tietystä tuotoksesta).

  • Toisen esikuvan kestävyys: on mahdotonta löytää mitään toista syötettä, joka törmäisi määritettyyn syötteeseen.


Törmäyskestävyys

Kuten jo mainitsimme, törmäys tapahtuu, kun eri syötteet tuottavat täsmälleen saman hajautusarvon. Siten hajautusfunktiota pidetään törmäyskestävänä siihen asti, kunnes joku löytää törmäyskohdan. Huomaa, että törmäyksiä tapahtuu aina minkä tahansa hajautusfunktion yhteydessä, koska mahdolliset syötteet ovat äärettömiä, kun taas mahdolliset tuotokset ovat rajoitettuja.

Toisin sanoen hajautusfunktio on törmäyksenkestävä, kun törmäyksen löytämisen mahdollisuus on niin pieni, että se vaatisi laskelmia miljoonien vuosien edestä. Niinpä huolimatta siitä, että törmäyksestä vapaita hajautusfunktioita ei ole, jotkin niistä ovat riittävän vahvoja, jotta niitä voidaan pitää kestävinä (esim. SHA-256).

Eri SHA-algoritmeista SHA-0- ja SHA-1-ryhmät eivät ole enää turvallisia, koska törmäyksiä on löydetty. Tällä hetkellä SHA-2- ja SHA-3-ryhmiä pidetään vastustuskykyisinä törmäyksille.


Esikuvankestävyys

Esikuvankestävyyden ominaisuus liittyy yksisuuntaisten toimintojen käsitteeseen. Hajautusfunktiota pidetään esikuvankestävänä, kun on hyvin pieni todennäköisyys, että joku löytää syötteen, joka tuotti tietyn tuotoksen.

Huomaa, että tämä ominaisuus eroaa edellisestä, koska hyökkääjä yrittää tiettyä tuotosta katsomalla arvata, mikä syöte oli. Törmäys puolestaan tapahtuu, kun joku löytää kaksi eri syötettä, jotka tuottavat saman tuotoksen, mutta sillä ei ole väliä, mitä syötteitä käytettiin.

Esikuvankestävyys on hyödyllinen ominaisuus tietojen suojaamisessa, koska viestin yksinkertainen hajautusarvo voi todistaa sen aitouden ilman, että tietoja tarvitsee paljastaa. Käytännössä monet palveluntarjoajat ja verkkosovellukset tallentavat ja käyttävät salasanoista luotuja tiivisteitä pelkkää tekstiä sisältävien salasanojen sijaan.


Toisen esikuvan kestävyys

Pelkistäen voimme sanoa, että toisen esikuvan kestävyys sijaitsee jossain kahden edellisen ominaisuuden välimaastossa. Toisen esikuvan kestävyyshyökkäys tapahtuu, kun joku pystyy löytämään tietyn syötteen, joka tuottaa saman tuotoksen toisesta syötteestä, jonka hän jo tietää.

Toisin sanoen toisen esikuvan kestävyyshyökkäykseen kuuluu törmäyksen löytäminen, mutta sen sijaan, että etsittäisiin kahta satunnaista syötettä, jotka tuottavat saman hajautusarvon, hyökkääjä etsii syötettä, joka tuottaa saman hajautusarvon, jonka toinen tietty syöte loi.

Sen vuoksi mikä tahansa törmäyksiä kestävä hajautusfunktio on myös vastustuskykyinen toisen esikuvan kestävyyshyökkäyksille, koska jälkimmäinen merkitsee aina törmäystä. Törmäyksenkestävälle funktiolle voidaan kuitenkin silti suorittaa esikuvanhyökkäys, koska tämä tarkoittaa yhden syötteen löytämistä yhdestä tuotoksesta.


Louhinta

Bitcoinin louhinnassa on monia vaiheita, joihin liittyy hajautusfunktioita, kuten saldojen tarkistaminen, transaktiosyötteiden ja -tuotoksien linkittäminen ja transaktioiden hajauttaminen lohkon sisällä Merkle-puun muodostamiseksi. Kuitenkin eräs tärkeimmistä syistä, miksi Bitcoin-lohkoketju on turvallinen, on se, että louhijoiden on suoritettava lukemattomia hajautusoperaatioita löytääkseen lopulta kelvollisen ratkaisun seuraavalle lohkolle.

Erityisesti louhijan on kokeiltava useita erilaisia syötteitä luodessaan hajautusarvoa ehdokaslohkolleen. Ne voivat vahvistaa lohkonsa vain, jos ne tuottavat sellaisen tuotoksen hajautusarvon, joka alkaa tietyllä määrällä nollia. Nollien lukumäärä määrittää louhintavaikeuden, ja se vaihtelee verkolle omistetun hajautusnopeuden mukaan.

Tässä tapauksessa hajautusnopeus edustaa sitä, kuinka paljon tietokonetehoa on investoitu Bitcoinin louhintaan. Jos verkon hajautusnopeus kasvaa, Bitcoin-protokolla säätää louhintavaikeutta automaattisesti niin, että lohkon louhintaan tarvittava keskimääräinen aika pysyy lähes 10 minuutissa. Sitä vastoin jos useat louhijat päättävät lopettaa louhinnan, jolloin hajautusnopeus laskee merkittävästi, louhintavaikeutta säädetään, mikä helpottaa louhintaa (kunnes keskimääräinen lohkoaika palaa 10 minuuttiin).

Huomaa, että louhijoiden ei tarvitse löytää törmäyksiä, koska on olemassa useita hajautusarvoja, jotka he voivat luoda kelvollisena tuotoksena (alkaen tietyllä määrällä nollia). Näin ollen tietylle lohkolle on useita mahdollisia ratkaisuja, ja louhijoiden on löydettävä vain yksi niistä – louhintavaikeuden määrittämän kynnyksen mukaan. 

Koska Bitcoinin louhinta on kustannustehokas tehtävä, louhijoilla ei ole mitään syytä huijata, koska se johtaisi merkittäviin taloudellisiin tappioihin. Mitä enemmän louhijoita liittyy lohkoketjuun, sitä suuremmaksi ja vahvemmaksi se kasvaa.


Yhteenveto

Ei ole epäilystäkään siitä, että hajautusfunktiot ovat välttämättömiä työkaluja tietojenkäsittelytieteessä varsinkin silloin, kun käsitellään valtavia tietomääriä. Kryptografiaan yhdistettyinä hajautusalgoritmit voivat olla varsin monipuolisia ja tarjota tietoturvaa ja todennusta monin eri tavoin. Sen vuoksi kryptografiset hajautusfunktiot ovat elintärkeitä lähes kaikille kryptoverkoille, joten niiden ominaisuuksien ja toimintamekanismien ymmärtäminen on taatusti hyödyllistä kaikille lohkoketjuteknologiasta kiinnostuneille.