MD5

Wikipedia
Loikkaa: valikkoon, hakuun

MD5 on niin kutsuttu message-digest -algoritmi, jota käytetään muun muassa kryptografiassa. MD5 on yksi monista Ronald Rivestin kehittämistä tiivistealgoritmeista ja se perustuu aikaisempaan MD4-algoritmiin, jonka analyysit osoittivat mahdollisesti turvattomaksi.

Vuonna 2004 löydettiin MD5:llä koodatusta tiivisteestä heikkous: kaksi viestiä, joiden MD5-tiivisteet olivat samat. Heikkouden löytäminen keskeytti aikaisemman vastaavan hajautetun MD5CRK-projektin. Matemaattisesti merkkijonoja jotka tuottavat saman tiivisteen on rajattomasti, mutta niiden löytäminen on erittäin työlästä.

MD5-algoritmi tuottaa tuloksenaan 128-bittisen tiivisteen, joka tyypillisesti esitetään 32-merkkisenä heksakoodatussa muodossa. Esimerkiksi merkkijonon The quick brown fox jumped over the lazy dogs MD5-tiiviste on 8c1788205b6abffb0c6a4a1f4b10395a.

MD5-tiiviste, samoin kuin muutkin kryptografiset tiivistealgoritmit, perustuvat kahteen pääajatukseen:

  1. algoritmin tuottamasta tiivisteestä ei pitäisi kyetä päättelemään mitään sille annetusta syötteestä. Niinpä esimerkiksi MD5-algoritmin tuottama tiiviste merkkijonosta The Quick brown fox jumped over the lazy dogs on hyvin erilainen (e948c22100d29623a1df48e1760494df) kuin aiemmassa esimerkissä, vaikka viestissä oli eroa vain yhden kirjaimen verran (iso Q pienen q:n sijaan).
  2. algoritmin tuottamien tiivisteiden tulee jakautua arvaamattomasti. Jotta tiivisteet jakautuisivat arvaamattomasti, ensimmäinen törmäys tulee syntymäpäiväparadoksin vuoksi jo keskimäärin 1,2×sqrt(2^tiivisteen_pituus):n erilaisen lähdetekstin jälkeen. Arvaamattomuuteen sisältyy myös se, että kahden eroavan saman tiivisteen tuottavan lähdetekstin löytämisen tulee olla epärealistisen vaikeaa.

Korkeampaa tietoturvaa vaativissa sovelluksissa käytetään esimerkiksi SHA-1-tiivisteitä, jotka ovat 160-bittisiä.

Murtaminen[muokkaa | muokkaa wikitekstiä]

Todellisuudessa ei ole mahdollisuutta tuottaa MD5-tiivisteestä alkuperäistä viestiä. Jos tämä olisi mahdollista, sen käyttö tiedon pakkaamisessa olisi äärimmäisen suositeltavaa, koska esimerkiksi neljän gigatavun tiedosto voitaisiin rakentaa vain 32 merkin jonosta. Siksi sitä kutsutaan yhden suunnan hajakoodausalgoritmiksi (engl. one-way hashing algorithm).

Mutta murtaminen on silti mahdollista. Asiaa pitää lähestyä toiselta kantilta. Luodaan itse MD5-tiivisteitä eri sanoista ja merkeistä, ja sitten verrataan niitä alkuperäiseen. Jos ne ovat samoja, voidaan lähes varmuudella sanoa että tämä tiiviste on kyseiselle merkkijonolle. Kotitietokoneen tehot eivät yleensä riitä MD5-tiivisteiden tehokkaaseen läpikäymiseen.

Internetissä on kuitenkin useita palveluita jotka tarjoavat tietokannan eri sanojen ja merkkijonojen tiivisteistä. Syöttämällä MD5-tiivisteen, esimerkiksi "1ad99cbe9e425d4f19c53a29d4f12597", kyseiselle palvelulle, se käy tietokantansa läpi ja katsoo onko kyseiselle tiivistelle ennen etsitty oikea merkkijono. Tässä tapauksessa oli, ja alkuperäinen viesti on "kissa".

Toinen palvelu, nyttemmin lopetettu milw0rm.com, tarjosi vuosia ilmaiseksi prosessointitehoja. Näiden tehojen avulla luodaan MD5-tiivisteitä. Kun lähetetyn tiivisteen vuoro tuli jonossa, aloitettiin tiivisteiden luominen ja vertaaminen. Sivustolta pystyi käymään tarkistamassa tiivisteen tilan ja mahdollisesti kerätä alkuperäinen viesti (esimerkiksi salasana).

Sovellusalueita[muokkaa | muokkaa wikitekstiä]

Monet Unix-järjestelmät tallentavat käyttäjän salasanainformaation laskemalla salasanasta MD5-koosteen, joka sitten talletetaan salasanatietokantaan. Näin salasana ei paljastu, vaikka salasanatietokannan sisältö joutuisi vääriin käsiin. Myöskään salasana ei koskaan kulje verkossa suojaamattomana, sillä työasema lähettää kirjoitetusta salasanasta koosteen palvelimen haasteen (engl. challenge) saannin jälkeen. Näin vain MD5-kooste kulkee verkon yli. Samaisesta syystä järjestelmänvalvojat tai muu IT-henkilöstö ei pysty kertomaan käyttäjälle hänen salasanaansa hänen hukattuaan sen. Näissä tapauksissa käyttäjän on luotava uusi salasana.

MD5-tarkistesummia käytetään paljon avoimen lähdekoodin ohjelmissa, jossa sen tehtävänä on varmistaa ettei ohjelmakoodia ole muutettu. Tällä tavoin vältetään muun muassa troijalaiset ja virustartunnat. Samalla summalla voidaan myös varmistaa, että esimerkiksi ladatun ohjelman ISO-levykuvaan ei ole tullut virheitä siirron aikana. Jos levykuva ladataan toisiopalvelimelta (engl. mirror) niin tällöin levykuvan eheyden ja muuttumattomuuden tarkastaminen on välttämätöntä. Toisiopalvelimia ei valvota niin tehokkaasti kuin pääasiallista latauspalvelinta, joten tietoa on saatettu muuttaa. Siihen on esimerkiksi voitu ujuttaa haitallista koodia.

Katso myös[muokkaa | muokkaa wikitekstiä]

Aiheesta muualla[muokkaa | muokkaa wikitekstiä]