Microsoft julkaisi viime yönä uuden Security Advisoryn numeroltaan 961509 ja otsikoltaan "Research proves feasibility of collision attacks against MD5". Tällä kertaa Advisoryn aiheena ei ole mikään haavoittuvuus tai jotain haavoittuvuutta hyödyntävä haittaohjelma - Advisoryssä kerrotaan aika mielenkiintoisesta, kryptografiaan liittyvästä ongelmasta. Joukko tietoturvatutkijoita piti eilen Computer Chaos Clubin konferenssissa esityksen MD5-algoritmista, siihen liittyvistä heikkouksista ja niiden hyödyntämisestä Internetissä. Esityksen taustalla olivat MD5-algoritmista jo kauan sitten löytyneet, ns. collision-ongelmat. 

MD5 on ns. hash-algoritmi, jonka avulla mistä tahansa bittijonosta voidaan laskea määrämittainen hash-arvo, jota sitten voidaan käyttää esimerkiksi digitaalisten allekirjoitusten yhteydessä. Ideana on, että ensinnäkin hash-arvot ovat hyvin yksilöllisiä - yhdenkin tavun muuttaminen alkuperäisessä bittijonossa muuttaa tuloksena olevan hash-arvon ihan toiseksi, toiseksi hash-arvon perusteella ei voi päätellä tai laskea alkuperäistä bittijonoa, ja kolmanneksi on hyvin vaikeaa löytää kaksi bittijonoa, jotka tuottavat saman hash-arvon. Tuota viimeksimainittua tilannetta - kahta erilaista bittijonoa, jotka tuottavat saman hash-arvon, kutsutaan törmäykseksi tai collisioniksi. Ja tutkijoiden esitys perustui juuri näihin törmäyksiin ja niiden tuottamiseen hallitusti, eli siihen, että yhtä bittijonoa, joka tuottaa tietyn hash-arvon, muutetaan tietoisesti ja tietyllä tavalla niin, että tuloksena on edelleen sama hash-arvo käytettäessä MD5-algoritmia.

Tutkijat osoittivat, että tätä menetelmää käyttämällä on mahdollista luoda väärennetty varmenne, jonka avulla SSL-varmennusta (https://) käyttävän sivuston varmenne voidaan väärentää niin, että käyttäjän selainistunto voidaan ohjata väärennetylle sivustolle, ja jopa varmennetta tarkastelemalla käyttäjä luulee olevansa oikealla sivustolla.

Kuvaus menetelmästä löytyy tutkijoiden sivuilta.

Mitä tämä tarkoittaa? No, menetelmä osoittaa, että varmenteet, joissa on käytetty MD5-algoritmia varmenteen allekirjoituksen laskemisessa, on mahdollista väärentää. Ja näin käyttäjä voidaan ohjata SSL-varmennuksesta huolimatta väärennetylle sivustolle, ja edelleen varmenteen tarkistaminen näyttäisi käyttäjälle, että oikealla sivustolla ollaan. Hätä ei kuitenkaan ole ihan tämän näköinen - Internet ja SSL-salaus ei ole kaatumassa. Tutkijat eivät ensinnäkään kertoneet ihan kaikkea - noiden törmäysten laskemisen tarkat detaljit jäivät uupumaan, ja tutkijat lupasivat paljastaa ne vasta, kun katsovat sen turvalliseksi. Toisekseen useimpien SSL-suojaukseen käytettävien varmenteiden allekirjoituksen laskemisessa ei enää käytetä MD5-algoritmia, vaan jotain uudempaa, yleensä SHA1-algoritmia.

Tämä kuitenkin osoittaa viimeistään nyt sen, että MD5-algoritmi on tullut tiensä päähän. Törmäyksiä MD5:stä on tiedetty löytyvän jo pitkän aikaa, mutta tähän asti ei ole oikein ollut olemassa käytännön "sovellutuksia", eli tapoja, joilla tätä ongelmaa hyödynnetään ihan käytännössä. Suositus onkin, että MD5:stä luovutaan kaikessa sovelluskehityksessä ja sovelluksissa, ja sen sijaan käytetään uudempia korvaavia algoritmejä, esimerkiksi SHA2-algoritmiperhettä. Esimerkiksi Microsoftilla tämä on ollut yksi SDL-prosessin vaatimuksista jo pitkään (kts. Michael Howardin esitys SDL:stä, kalvo 22).

Advisoryn taustalla ei siis ole mikään haavoittuvuus, ja itse asiassa ongelma ei ole missään selaimessa. Miksi Microsoft sitten varoittaa asiakkaitaan aiheesta Advisoryn välityksellä? Tavoitteena on tiedottaa ongelmasta mahdollisimman laajalti ja antaa asiakkaille mahdollisuus a) arvioida sen vaikutuksia omissa järjestelmissään ja b) korjata mahdolliset ongelmat. Viestinä on, että MD5-algoritmin käytöstä kannattaa luopua, ei pelkästään varmenteiden allekirjoituksissa, vaan kaikkialla.

Lisätietoja aiheesta:
- Microsoft Security Response Centerin blogi
- Security Vulnerability Research and Defense -blogi
- Tietoturvatutkijoiden sivusto