MD5

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. Algoritmin referenssitoteutus on esitetty IETF:n standardissa .

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ä.

Nykyisin korkeampaa tietoturvaa vaativissa sovelluksissa käytetään esimerkiksi SHA-tiivisteitä.

Toimintaperiaate 
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:

 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).
 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.

Murtaminen 
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 ().

MD5-tiivisteen 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 nopeus ei 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 prosessointiaikaa. Palvelun avulla luotiin 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 
Monet Unix-järjestelmät tallentavat käyttäjän salasanainformaation laskemalla salasanasta tiivisteen, 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 tiivisteen palvelimen haasteen () saannin jälkeen. Näin vain tiiviste 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.

Tiiviste voi olla MD5, Blowfish tai SHA-algoritmiin perustuva.

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 () 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 
 Salaus
 CRC
 Syntymäpäiväongelma

Lähteet

Aiheesta muualla
 , The MD5 Message-Digest Algorithm
 W3C:n suositukset MD5:stä
 Simple hash calculator 
 Secure online md5+hmac hash calculator 

Kryptografiset tiivistealgoritmit
Seulonnan keskeiset artikkelit