7. marraskuuta 2007

Windows 2000 satunnaislukugeneraattori vuotaa - takaporttiko?

Cryptography ePrint julkaisi asiaa käsittelevän tutkimuksen vastikään. Siinä tuli ilmi, että Windows 2000 (näennäis) satunnaislukugeneraattorissa on perustavaa laatua olevia virheitä. Seurauksena on, että kyseisen generaattorin luomat lukusarjat ovat selvitettävissä jälki- ja etukäteen.

Tästä on seurauksena se, että esimerkiksi Internet Explorerin SSL/TLS yhteyksissä sen avulla luodut salausavaimet vaarantuvat, mikäli hyökkääjä pääsee jotenkin lukemaan, esimerkiksi etu- tai jälkikäteen, satunnaislukugeneraattorin tilaa. Niin ikään menneet ja tulevat SSL/TLS suojatut sessiot vaarantuvat, kuten myös EFS:llä salatut tiedostot (vaikka ne eivät Windows 2000:ssa muutenkaan turvassa ole, koska EFS on Windows 2000:ssa täysin susi). Mutta ongelma on paljon, paljon, paljon pahempi.

Windowsin satunnaislukugeneraattoria, CryptGenRandomia, käytetään hyvin yleisesti kaikenlaisissa salaukseen liittyvissä toiminnoissa, joissa kaivataan satunnaisia lukuja, esimerkiksi siis salausavainten luonnissa. Useat ulkopuoliset tietoturvaohjelmat käyttävät myöskin hyväkseen Windowsin satunnaislukugeneraattoria omiin satunnaislukutarpeisiinsa. Myös kaikki nämä ohjelmat ja niiden salaukset ovat nyt siis erittäin suuressa vaarassa, koska salauksessa käytetyt luvut eivät olekaan siis satunnaisia ja ennalta-arvaamattomia!

Onneksi sentään esim. PGP käyttää omaa satunnaislukugeneraattoriaan, eikä ole haavoittuvainen siis tälle ongelmalle.

Asia mutkistuu kuitenkin yhä tästäkin. Herää väistämättä kysymys, mistä tämä "bugi" on tuonne satunnaislukugeneraattoriin tullut ja miksi? Ajatellaanpa ihan sellaista hypoteettistä ;-) vaihtoehtoa, että vaikkapa NSA olisi kiinnostunut takaportittamaan Windows käyttöjärjestelmän jollakin tapaa. Siis varmistaakseen, että NSA kykenee tarvittaessa urkkimaan tietoja siitä tai sen käyttäjältä, sekä ohittamaan sen suojaukset. Mikäpä olisi parempi paikka takaportille kuin satunnaislukugeneraattori?

Satunnaislukugeneraattori näyttää tuottavan aina satunnaista ja ennalta arvaamatonta dataa, eli takaporttia ei oikein voi huomata, vaikka generaattorin antaisi pyöriä vuosikausia. Vain, jos tiedät tarkalleen millä tapaa data ei olekaan satunnaista, voit päästä siitä jyvälle ja huomata takaportin. Hyvä esimerkki on, että jos minä salaan vaikka pelkästä "A" kirjaimesta koostuvaa loputonta tietojonoa AES-salaimella, käyttäen avaimena salasanaa X, et sinä voi lopputuloksesta päätellä mitään ihmeellistä....lopputulos on näennäisesti satunnaista tietojonoa. Mutta, jos tiedätkin mitä on salausavaimena käytetty, voit helposti selvittää kaikki aikaisemmat ja tulevat "näennäisesti satunnaiset" lukujonot jotka tuon salaimen käytöstä seuraa! Vähän sama juttu tässäkin siis.

Tällä hetkellä herää 4 kysymystä tähän liittyen:
  1. Onko Windows XP ja Vista myöskin haavoittuvaisia? Luulisin, että ovat, koska CryptGenRandomia ei tietääkseni ole mitenkään merkittävästi uudistettu niissä.

  2. Koska Microsoft julkaisee päivityksen korjaamaan asian?

  3. Mitkä kaikki ohjelmat käyttävät Windowsin omaa satunnaislukugeneraattoria ja mitkä käyttävät jotain muuta, turvallista näennäissatunnaislukugeneraattoria (kuten Yarrow, Mersenne Twister, Fortuna tai Blum-Blum-Shub)?

  4. Miten kauan NSA/CIA/Mossad on ollut tietoinen tästä tietoturva-aukosta ja sen hyväksikäyttömenetelmästä?
Jäämme odottamaan kauhulla lisätietoja - joita luultavasti ei koskaan tule. Ja päivitystä, jota ei luultavasti koskaan tule. Että silleen.

3 kommenttia:

1337h4x0r kirjoitti...

Tämä on ollut meillä koodareilla aavistuksissa jo pitkään ja nyt se on näköjään vahvistettu.

Tein kerran easter eggin, joka sopivalla näppäinyhdistelmällä rupesi liikuttamaan UI-komponentteja uusiin paikkoihin ja käyttäjän piti napata ne kiinni "lennossa". Uudet positiot generoin satunnaislukujen avulla. Kummasti samat positiot toistuivat todella usein (en muista enää, että toistuivatko aina) ja ylläri menetti merkityksensä, kun oli todella helppo odottaa minne mikäkin komponentti seuraavan kerran pomppaa.

Anonyymi kirjoitti...

Mikäs yllätys tämä on, eihän tietokoneella ole edes teoriassa mahdollista luoda oikeita satunnaislukuja, ainoastaan pseudosatunnaislukuja. "Satunnaisluvut" on aina jotenkin selvitettävissä.

Anonyymi kirjoitti...

Ja sitten vielä joku kehtaa kehua käyttävänsä mikkisohlan järjestelmiä.

OS järjestelmissä kun ei tällaisia ole.