SHA-256 osana SHA-2-perhettä

SHA-256 on yksi maailman käytetyimmistä kryptografisista tiivistefunktioista. Se kuuluu SHA-2-perheeseen, joka on NIST:n julkaisema joukko algoritmeja ja seuraaja vanhemmalle SHA-1:lle. Perheeseen kuuluu useita muunnelmia, kuten SHA-224, SHA-256, SHA-384 ja SHA-512. Nimen numero kertoo tuotetun tiivisteen pituuden bitteinä.

SHA-256 tuottaa siis 256 bitin mittaisen tiivisteen. Kun se esitetään heksadesimaalimuodossa, tulos on 64 merkkiä pitkä riippumatta siitä, oliko syöte yksittäinen kirjain vai usean gigatavun tiedosto. Tämä kiinteä pituus on tiivistefunktioiden keskeinen ominaisuus, ja se tekee tiivisteistä helppoja tallentaa, verrata ja siirtää.

Kun SHA-1:n turvallisuus murtui vuoden 2017 SHAttered-tutkimuksessa, SHA-256:sta tuli luonteva suositus sen tilalle. Se nojaa vahvempaan rakenteeseen ja pidempään tiivisteeseen, eikä siihen tunneta käytännöllistä törmäyshyökkäystä.

Miten SHA-256 käyttäytyy

SHA-256:n sisäinen toiminta perustuu siihen, että syöte käsitellään lohkoittain ja sekoitetaan toistuvasti joukolla bittitason operaatioita, kunnes lopputuloksena on 256-bittinen tiiviste. Tarkkojen sisäisten vaiheiden sijaan tärkeintä on ymmärtää, miten funktio käyttäytyy ulospäin. Juuri nämä ominaisuudet tekevät siitä hyödyllisen.

Deterministisyys. Sama syöte tuottaa aina saman tiivisteen. Tämä on perusta sille, että tiivisteitä voidaan käyttää vertailuun. Jos kahden tiedoston SHA-256-arvot täsmäävät, voit olla erittäin vakuuttunut siitä, että tiedostot ovat identtiset.

Lumivyöryvaikutus. Pienikin muutos syötteessä muuttaa tiivisteen täysin. Jos vaihdat yhden kirjaimen, lisäät välilyönnin tai muutat yhtä bittiä, lopputulos on tunnistamattoman erilainen. Uudella tiivisteellä ei ole mitään näkyvää yhteyttä edelliseen. Tämä ominaisuus tekee mahdottomaksi arvata syötteen muutoksia tiivistettä tarkkailemalla.

Esikuvan vastustus. Tiiviste toimii vain yhteen suuntaan. Annetusta SHA-256-tiivisteestä ei voi käytännössä laskea takaisin alkuperäistä syötettä. Ainoa tapa löytää syöte tunnetulle tiivisteelle olisi kokeilla valtavaa määrää vaihtoehtoja, mikä on laskennallisesti epäkäytännöllistä.

Törmäysvastus. On laskennallisesti epäkäytännöllistä löytää kaksi eri syötettä, jotka tuottavat saman SHA-256-tiivisteen. Tämä on tiivistefunktion tärkein turvallisuusominaisuus, ja juuri sen menettäminen teki SHA-1:stä vaarallisen.

Mihin SHA-256:ta käytetään

SHA-256 ei ole pelkkä teoreettinen rakennelma. Se on käytössä lukemattomissa järjestelmissä, joiden varassa verkon turvallisuus lepää.

TLS-varmenteet. Kun selain muodostaa salatun yhteyden verkkosivustoon, prosessissa käytetään varmenteita, joiden eheys nojaa tiivistefunktioon. SHA-256 on nykyinen vakiovalinta varmenteiden allekirjoituksissa, ja se korvasi vanhentuneen SHA-1:n tässä roolissa.

Ohjelmistojen allekirjoitukset. Kun lataat sovelluksen tai päivityksen, sen aitous voidaan varmistaa allekirjoituksella. Allekirjoitus lasketaan ohjelmiston tiivisteen yli, ja SHA-256 on yleinen valinta tähän. Näin voidaan havaita, jos tiedostoa on muokattu julkaisun jälkeen.

Bitcoinin louhinta. Bitcoin käyttää SHA-256:ta keskeisenä osana työtodisteeseen perustuvaa louhintaa. Louhijat etsivät syötettä, jonka tiiviste täyttää tietyn ehdon, ja koska ainoa tapa löytää se on kokeilla suunnatonta määrää vaihtoehtoja, prosessi vaatii valtavasti laskentaa. Tämä laskennallinen vaikeus turvaa lohkoketjun historian.

Tiedostojen eheystarkistus. Monet ohjelmistojen julkaisijat ilmoittavat tiedostonsa SHA-256-tiivisteen. Lataamalla tiedoston ja laskemalla sen tiivisteen voit verrata sitä ilmoitettuun arvoon ja varmistaa, ettei tiedosto ole vaurioitunut tai joutunut peukaloiduksi siirron aikana.

Miksi SHA-256 on suositeltu valinta

SHA-256:n vahvuus perustuu kahteen tekijään. Ensinnäkin sen 256-bittinen tiiviste tarjoaa niin suuren mahdollisten arvojen joukon, että törmäyksen tarkoituksellinen tuottaminen ei ole nykyisillä menetelmillä realistista. Toiseksi sen rakenne on kestänyt vuosien tutkimuksen ilman, että käytännöllistä hyökkäystä olisi löydetty.

On silti hyvä muistaa SHAttered-tutkimuksen opetus. Mikään algoritmi ei ole ikuisesti turvallinen, ja kryptografista kenttää on syytä seurata. Toistaiseksi SHA-256 on kuitenkin vakaa ja laajalti luotettu valinta, ja se tulee säilymään tärkeänä työkaluna pitkään. Niille, jotka tarvitsevat vielä pidempää tiivistettä, SHA-2-perhe tarjoaa SHA-512:n, ja täysin erilaiseen rakenteeseen nojaava SHA-3 on saatavilla vaihtoehtona, joka perustuu eri matemaattisiin oletuksiin.