MD5
Wikipedia
MD5 on niin kutsuttu message-digest-algoritmi, jota käytetään muun muassa kryptografiassa. MD5 on yksi monista Ronald Rivestin kehittämistä viestitiivistealgoritmeista. Se perustuu aikaisempaan MD4-algoritmiin, jonka analyysit osoittivat mahdollisesti epäturvalliseksi. Vuonna 2004 MD5:lle löydettiin törmäys: kaksi viestiä, joiden MD5-tiivisteet olivat samat. Hyökkäyksen suoritukseen meni suurtehoklusterilta uutta analyyttistä hyökkäystä käyttäen vain noin tunti. Törmäyksen löytäminen keskeytti aikaisemman vastaavan hajautetun MD5CRK-projektin. Matemaattisesti merkkijonoja jotka tuottavat saman tiivisteen on rajattomasti. Niiden löytäminen vain on erittäin työlästä.
MD5-algoritmi tuottaa tuloksenaan 128-bittisen tiivisteen, joka tyypillisesti esitetään 32-merkkisenä heksakoodatussa muodossaan. 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.
Korkeampaa tietoturvaa vaativissa sovelluksissa käytetään esimerkiksi SHA-1 -tiivisteitä, jotka ovat 160-bittisiä.
Sisällysluettelo |
[muokkaa] 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 (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ä. Yksi niistä on GData Online [1]. 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, milw0rm.com [2], tarjoaa ilmaiseksi prosessointitehoja. Näiden tehojen avulla luodaan MD5-tiivisteitä. Voit lähettää oman tiivisteesi kyseiselle palvelulle, ja kun sen tiivisteen vuoro tulee jonossa, aloitetaan tiivisteiden luominen ja vertaaminen. Voit myöhemmin käydä tarkistamassa sivulta tiivisteen tilan, ja mahdollisesti kerätä alkuperäisen viestin (esimerkiksi salasanan) mukaasi. Tämä sivusto myös pitää yllä tietokantaa murretuista tiivisteistä, jottei niitä tarvitsisi turhaan uudestaan etsiä.
[muokkaa] Sovellusalueita
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. Ehkäpä sisään on ujutettu haitallista koodia.
[muokkaa] Katso myös
[muokkaa] Aiheesta muualla
- RFC 1321, The MD5 Message-Digest Algorithm, [3]
- W3C:n suositukset MD5:stä
- Simple hash calculator

