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 RFC 1321.
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:Korkeampaa tietoturvaa vaativissa sovelluksissa käytetään esimerkiksi SHA-1-tiivisteitä, jotka ovat 160-bittisiä.
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).
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.