Hyökkäys pseudosatunnaislukugeneraattoriin on hyökkäys, jonka tarkoituksena on paljastaa pseudosatunnaislukugeneraattorin ( PRNG ) parametrit, jotta voidaan ennustaa pseudosatunnaislukuja.
Salausjärjestelmien turvallisuus riippuu usein tiedoista, joiden pitäisi olla vain valtuutettujen käyttäjien tiedossa ja joita hyökkääjän on vaikea arvata. Esimerkkejä tällaisista tiedoista voivat olla istuntoavaimet, jotka alustavat vektoreita, suola , ainutlaatuiset parametrit EDS -funktioissa ja monet muut objektit. Vaaditun arvaamattomuuden tason saavuttamiseksi, koska satunnaislukuja syntyy usein, tarvitaan luotettava satunnaislukujen lähde. Valitettavasti monilla salaussovelluksilla ei ole luotettavaa lähdettä satunnaisille arvosarjoille, kuten lämpökohinalle sähköpiireissä tai tarkkalle ajalle Geiger-laskuriparin välillä. Sen sijaan sinun on käytettävä pseudosatunnaislukugeneraattoreita (PRNG). PRNG vastaanottaa syötteenä tietovirran lähteestä, jolla on pieni entropia , ja yrittää muuntaa sen arvosarjaksi, joka on käytännössä mahdoton erottaa todellisesta satunnaissekvenssistä. Onnistunut hyökkäys PRNG:tä vastaan voi rikkoa monia salausjärjestelmiä riippumatta siitä, kuinka huolellisesti ne on suunniteltu. Jotkut järjestelmät käyttävät kuitenkin huonosti suunniteltuja PRNG:itä tai tekevät niin tavalla, joka vähentää hyökkäysten monimutkaisuutta. Lisäksi koko järjestelmän vaarantumiseen tarvitaan vain yksi onnistunut tunkeutuminen.
Sen mukaan, mitä PRNG-dataa on helpompi seurata (lähtöarvot, syöttöarvot tai sisäinen tila), seuraavan tyyppisiä hyökkäyksiä voidaan toteuttaa.
Jos hyökkääjä pystyy suoraan tarkkailemaan PRNG-tulostusta ja tutkimaan sen esiintymismallia, kyseessä on suora kryptanalyyttinen hyökkäys. Tämäntyyppinen hyökkäys ulottuu useimpiin PRNG:tä käyttäviin algoritmeihin. Kuitenkin, jos esimerkiksi PRNG:tä käytetään vain avainten luomiseen, kuten tehdään Triple DES :ssä , se ei voi olla alttiina tällaiselle hyökkäykselle, koska PRNG:n ulostulot eivät ole koskaan suoraan näkyvissä.
Tämäntyyppinen hyökkäys on mahdollinen tapauksissa, joissa hyökkääjä voi käyttää PRNG-tulosignaalien tuntemusta tai hallita niitä. Syöttöihin perustuvat hyökkäykset voidaan jakaa hyökkäyksiin tunnetuilla tuloilla, hyökkäyksiin toistettavissa olevilla syötteillä ja hyökkäyksiin valittuja syötteitä vastaan.
Tunnetut syöttöhyökkäykset ovat käytännöllisiä tilanteissa, joissa jokin syöte, jonka järjestelmän suunnittelija odottaa olevan vaikea ennustaa, osoittautuu joissakin erityistapauksissa helposti arvattavaksi.
Toistettavia syötehyökkäyksiä voidaan käyttää samoissa tilanteissa, mutta ne vaativat vähemmän kehittyneitä hakkerointijärjestelmiä ja hyökkääjän vähemmän kehittyneitä analyyseja.
Valitut syöttöhyökkäykset voidaan käytännössä toteuttaa järjestelmissä, joissa käytetään älykortteja tai tokeneita. Tällainen hyökkäys voi myös olla vaarallinen sovelluksille, jotka käyttävät PRNG:n tulosignaaleina tekstiviestejä, käyttäjän määrittämiä salasanoja, verkkotilastoja, aikaa jne.
Suorittaessaan tämäntyyppistä hyökkäystä hyökkääjä yrittää käyttää aiemmin onnistuneita hyökkäyksiä PRNG:tä vastaan, joka paljasti sen sisäisen tilan, ennustaakseen PRNG:n tulevien tai aikaisempien tilojen tilan mahdollisimman pitkälle. Tällaiset hyökkäykset voivat onnistua, kun PRNG alkaa tunnetusta tai ennustettavasta tilasta. Käytännössä on erittäin vaikeaa määrittää, että sisäinen tila on vaarantunut. Siksi PRNG:iden on vastustettava sisäisen tilan vaarantamista. Tällaiselle hyökkäykselle on vähintään 4 vaihtoehtoa:
Peruutushyökkäys käyttää PRNG:n avattua tilaa tiettynä ajankohtana palauttaakseen PRNG:n tilat ja vastaavasti sen ulostulot aikaisempiin ajankohtiin.
Pysyvä tilan kompromissi on mahdollista järjestelmissä, joissa tila paljastumisen jälkeen kaikki aikaisemmat ja myöhemmät tilat ovat alttiina myöhemmille hyökkäyksille.
Iteratiivinen arvaushyökkäys käyttää tietoa tilasta ajanhetkellä t ja PRNG:n välitulosteita selvittääkseen hetkellä t , milloin kyseisen ajanjakson aikana kerätyt syötteet ovat hyökkääjän arvattavissa (mutta tuntemattomia).
Keskellä oleva tapaaminen on pohjimmiltaan yhdistelmä iteratiivista arvaushyökkäystä ja peruutushyökkäystä. Tietoa ajankohtana ja antaa hyökkääjälle mahdollisuuden palauttaa tila tiettynä ajankohtana sekä koko aikavälillä välillä - .
Netscapen SSL -salausprotokollan varhaiset versiot käyttivät PRNG:n luomia näennäissatunnaisia lukuja, joiden entropialähde oli kolmen muuttujan arvot: kellonaika, prosessitunnus ja pääprosessin tunnus. Nämä suuret ovat ennustettavissa ja niillä on suhteellisen alhainen entropia. Tämän vuoksi tätä SSL-versiota pidettiin suojaamattomana. Netscapelle ilmoitti ongelmasta Phillip Halam-Baker vuonna 1994, silloinen CERNin tutkija . Ongelma ei kuitenkaan ratkennut ennen ohjelmistotuotteen julkaisua. Myöhemmin, vuonna 1995, Ian Goldberg ja David A. Wagner [1] puhuivat ongelmasta uudelleen . Heidän oli käännettävä objektimoduulit takaisin , koska Netscape kieltäytyi paljastamasta satunnaislukujen luomisen yksityiskohtia. PRNG on korjattu myöhemmissä julkaisuissa (versio 2 ja uudemmat) muuttamalla entropialähdettä satunnaisemmaksi ja korkeammalla entropiatasolla.
Microsoft käyttää julkaisematonta algoritmia satunnaislukujen luomiseen Windows-käyttöjärjestelmissä . Tämä algoritmi on käyttäjän käytettävissä CryptGenRandom - apuohjelman kautta . Marraskuussa 2007 Leo Dorredorf julkaisi yhdessä Haifan yliopiston ja Jerusalemin heprealaisen yliopiston kirjoittajien kanssa artikkelin Cryptanalysis of the Random Number Generator of the Windows Operating System [2] . Artikkeli osoittaa Microsoftin esittämän algoritmin vakavat puutteet. Artikkelissa esitetyt johtopäätökset on muotoiltu Windows 2000 -järjestelmän puretun koodin tutkimisen tuloksena , mutta Microsoftin mukaan ne voivat päteä myös Windows XP:hen [3] .
National Institute of Standards and Technology (USA) julkaisi maaliskuussa 2007 suositellut "deterministiset pseudosatunnaislukugeneraattorit", jotka standardoitiin NIST:n erityisjulkaisussa 800-90 [4] . Yksi annetuista PRNG:istä, Dual EC DRBG , jonka National Security Agency on sisällyttänyt standardiin [5] , perustuu elliptiseen kryptografiaan ja sisältää tietyn joukon suositeltuja vakioita. Elokuussa 2007 Dan Shumov ja Nils Fergeson Microsoftista osoittivat, että vakiot voidaan valita siten, että algoritmissa voi esiintyä takaovi [6] .
Toukokuussa 2008 tutkija Luciano Bello julkaisi artikkelin, jossa todettiin, että vuonna 2006 tehdyt muutokset PRNG: hen Debian Linuxin ja muiden Debian-pohjaisten jakelujen kanssa jaetussa openssl -paketissa vähentävät merkittävästi luotujen arvojen entropiaa, jolloin avaimet ovat haavoittuvia hyökkäyksille. [1] [2] Ongelma johtui muutoksista, joita yksi Debian-kehittäjistä teki openssl-koodiin vastauksena kääntäjien varoituksiin näennäisesti ylimääräisestä koodista. Tämä haavoittuvuus korjattiin samana päivänä, kun se tuli tunnetuksi [7] .