Etusivu: Kyberturvallisuuskeskus
Siirry hakuun

SHA-1-tiivistefunktio on lopullisesti murrettu

Tietoturva Nyt!

Tietotekniikassa käytetään tiedon oikeudellisuuden tarkastamiseksi erilaisia tarkastussummia. Näin esimerkiksi silloin, kun käyttöjärjestelmän päivitystiedosto ladataan tietokoneelle, sen tarkastussumma tarkastetaan ennen asentamista. Tämä tapahtuu useasti automaattisesti siten, ettei käyttäjä sitä edes huomaa. Tarkistussummat luodaan kryptograafisilla tiivistefunktioilla. Tiivistefunktioita on erilaisia. Yksi niistä on SHA-1 (Secure Hash Algorithm 1,), jota on käytetty hyvin laajalti digitaalisissa allekirjoituksissa vuodesta 1995 alkaen. SHA-1-tiivistefunktiota vastaan on julkaistu käytännöllinen hyökkäys, minkä vuoksi sitä ei tule enää käyttää eheyden varmistamiseen.

Tiivistefunktio on tietojenkäsittelyssä käytettävä algoritmi, jolla voidaan laskea datasta kiinteän mittainen tiiviste.  Tärkeä tiivistefunktioiden sovellus on tietoturva-alalla, missä digitaalista allekirjoitusta varten lasketaan viestistä tiiviste, joka sitten allekirjoitetaan. Tällöin tiivistefunktion tulee olla salausteknisestiturvallinen. Jos usealle eri datalle tulee sama tiiviste, ovat niiden digitaaliset allekirjoitukset identtiset. Salaustekninen turvallisuus pitää sisällään sen, että tällaisten törmäysten löytäminen on käytännössä mahdotonta eli vaatisi paljon enemmän laskentaa kuin nykyresurssit mahdollistavat. Näin ollen tiivistefunktioita käyttävien digitaalisten allekirjoitusten väärentäminen on myös vaikeaa tai mahdotonta.

SHA-1 (Secure Hash Algorithm 1) on Yhdysvaltain hallinnon vuonna 1995 FIPS PUB 180-1-standardina julkaisema kryptografinen tiivistefunktio, jota on käytetty hyvin laajalti digitaalisissa allekirjoituksissa. SHA-1:n turvallisuus alkoi horjua vuonna 2005, jolloin julkaistiin ensimmäiset teoreettiset hyökkäykset sitä vastaan. Nämä eivät vielä johtaneet käytännön hyökkäyksiin, mutta alensivat törmäysten löytämisen vaikeutta siinä määrin, että SHA-1:n käytöstä alettiin hiljalleen luopua. Yhdysvaltain standardointielin NIST poisti SHA-1:n käytöstä omista standardeistaan vuonna 2011. Vuonna 2017 julkaistiin SHAttered-hyökkäys (https://shattered.io/), jossa onnistuttiin luomaan kaksi pdf-tiedostoa, joiden sisällöt erosivat toisistaan, mutta joilla oli kuitenkin sama SHA-1-tiiviste. Tämäkään ei vielä mahdollistanut (ainakaan helposti) käytännön hyökkäyksiä, koska kyseisten pdf-tiedostojen sisältöön voitiin vaikuttaa vain hyvin vähän. Kuitenkin tässä vaiheessa alkoi olla selvää, että SHA-1 on käytännössäkin rikki ja sen käytöstä tulee luopua.

Tutkijat Gaëtan Leurent ja Thomas Peyrin esittelivät Eurocrypt 2019-konferenssissa ensimmäisen chosen prefix-hyökkäyksen SHA-1:tä vastaan. Chosen prefix tarkoittaa sitä, että nyt voitiin vapaammin valita viestin (alkuosan, prefix) sisältö ja saada näin toisistaan eroaville viesteille sama tiiviste. Kun viestin sisältöön voidaan vaikuttaa enemmän, alkavat avautua tietoturvaa uhkaavat väärennösmahdollisuudet, vaikkei niitä tässä hyökkäyksessä vielä käytännössä esitettykään.

Samaiset tutkijat ovat sittemmin onnistuneet edelleen teoreettisin menetelmin helpottamaan SHA-1-funktion törmäysten etsintää ja vuoden 2020 alussa he esittelivät "SHA-1 is a Shambles"-hyökkäyksensä (https://sha-mbles.github.io/). Siinä viestin alkuosaa (prefix) voidaan muokata halutunlaiseksi ja sitten laskea viestille sopiva loppuosa niin että näin saadulla viestillä on sama tiiviste kuin toisella erisisältöisellä viestillä. Tämä mahdollistaa käytännön väärennökset ja tutkijat esittivät tällaisen käytännön väärennöksen PGP-salausohjelmiston Web of Trust-luottamusmallissa käytetyille digitaalisille allekirjoituksille.  Tätä laskentaa varten tutkijat vuokrasivat 900 grafiikkaprosessoria (GPU) n. $100 000 hintaan ja laskivat niiden avulla mainitun väärennöksen n.  2 kuukaudessa. He kuitenkin arvioivat, että nyt kun tekniikka on hiottu kohdalleen, voidaan tällainen hyökkäys jatkossa toteuttaa n. $45 000 hintaan.

SHA-1:n käytöstä luopumista on suositeltu jo pitkään, mutta viimeistään tämän hyökkäyksen jälkeen SHA-1:tä voidaan pitää täysin rikottuna eli sitä ei pitäisi enää käyttää kryptografisena tiivistefunktiona. On syytä siirtyä ensi tilassa käyttämään turvallisempia vaihtoehtoja kuten SHA-2-tiivistefunktioiden variantteja SHA-256, SHA-384 ja SHA-512 tai uudempaa SHA-3-standardia.