Tiiviste (tietotekniikka)

Kohteesta Wikipedia
(Ohjattu sivulta Yksisuuntainen tiiviste)
Loikkaa: valikkoon, hakuun

Tiiviste eli hajautusarvo (engl. hash) on tietotekniikassa termi, joka tarkoittaa tiedon tiivistämistä pienempään tilaan sitä varten, että alkuperäistä tietoa voidaan vertailla vertailemalla niiden tiivisteitä. Tiivisteestä ei voi palauttaa alkuperäistä tietoa kuten pakkaamisessa. Tiivistämiselle on useita erilaisia käyttötarkoituksia: tiiviste- eli hajautustaulusta tiedot voidaan löytää nopeasti ja digitaalinen allekirjoitus perustuu kryptograafiseen tiivisteeseen. Tiivisteen avulla voidaan myös todeta onko virus muuttanut tiedostoa.

Tiivistefunktiota ei käytetä varsinaisen tiedon salaukseen koska siitä ei voida palauttaa alkuperäistä tietoa, mutta se liittyy läheisesti menetelmänä tarkistaa tiedon eheys, muuttumattomuus tai identtisyys.

Käytännön esimerkkejä[muokkaa | muokkaa wikitekstiä]

Ei-tietoteknisessä mielessä tiedon tiivistäminen voisi olla seuraava: lasketaan henkilön etu- ja sukunimien kirjaimet yhteen (niin että a=1, b=2 jne.) ja lisäksi kerrotaan saatu arvo viimeisen kirjaimen arvolla. Näin saatu luku (esim. 352) on algoritmin tuottama tiiviste. Tiivisteestä "352" ei ole mahdollista nähdä henkilön nimeä, joten se on tiiviste. Todellisuudessa tiivistealgoritmit ovat paljon monimutkaisempia.

Normaalisti käyttäjän salasana tallennetaan vain tiivisteenä, josta ei voida palauttaa alkuperäistä tietoa. Käyttäjän syöttämä salasana ajetaan tiivistefunktion läpi ja saatua tiivistettä vertaillaan tallennettuun tiivisteeseen.

Tarkistustiiviste virheenkorjauskeinona tiedonsiirrossa[muokkaa | muokkaa wikitekstiä]

Ennen tiedoston lähettämistä verkon yli siitä luodaan tiiviste tehtävään soveltuvalla algoritmilla. Tämän jälkeen kohteeseen lähetetään tiiviste ja tiedosto. Kohde varmentaa tiedon siirron jälkeen tiedoston eheyden luomalla uuden tiivisteen ja vertaamalla sitä vanhaan. Jos tiivisteet ovat erilaiset, informaatio joudutaan siirtämään uudestaan ainakin osittain.

Tarkistustiivisteet avoimessa lähdekoodissa[muokkaa | muokkaa wikitekstiä]

Koska kuka tahansa voi jakaa ja muokata avointa lähdekoodia, valtaosasta tunnettuja avoimen lähdekoodin ohjelmistoja on muodostettu MD5-tiiviste, ja näitä tiivisteitä jaetaan kyseisten ohjelmapakettien virallisissa lähteissä Internetissä.

Vertaisverkot[muokkaa | muokkaa wikitekstiä]

Vertaisverkot käyttävät hyvin usein tiivisteiden kehittyneimpiä muotoja kuten hajautettua tiivistettä. Vertaisverkkojen usein hakiessa tiedon palasia usealta käyttäjältä ovat vertaisverkkojen tiedonsiirrot olleet hyvin ongelmallisia. Useat tahot ovat kehittäneet tekniikoita, joilla he voivat lähettää korruptoituneita tiedoston osasia, joiden hajautustaulut ovat yhteneviä alkuperäisen tiedoston hajautustaulun kanssa (kts. syntymäpäiväongelma) vertaisverkkoihin. Nykyään vertaisverkoissa tarkastetaan tiedoston osaset erikseen sekä koko tiedosto tiedonsiirron jälkeen vieläpä usealla eri algoritmilla.

Tiivistefunktiot[muokkaa | muokkaa wikitekstiä]

Usein käytettyjä tiivistefunktioita ovat MD5 ja SHA-1.

Tiiviste[muokkaa | muokkaa wikitekstiä]

Tiiviste on usein kiinteämittainen riippuen käytetystä algoritmista. Esimerkiksi SHA-1 tuottama tiiviste on aina 160 bittiä.

SHA-3 -standardissa on mukana SHAKE-algoritmit, joilla tiivisteen pituus voi vaihdella.

Konfliktit[muokkaa | muokkaa wikitekstiä]

Konfliktit tai törmäykset ovat tilanteita, joissa kaksi eri syötettä antavat saman tiivisteen.

Katso myös[muokkaa | muokkaa wikitekstiä]