Varnost generatorjev naključnih števil

Matej Kovačič

6. dec 2007 ob 15:24:25

Generatorji naključnih števil so zelo pomembni za varno delovanje kriptografskih aplikacij, zato je zelo pomembno, da le-ti generirajo čimbolj naključna števila. Varnost kriptografije je namreč odvisna tudi od varnosti generatorjev naključnih števil.

Žal so nekatere raziskave pokazale, da generatorji naključnih števil v nekaterih operacijskih sistemih niso dovolj zanesljivi. Raziskava Dorrendorfa, Guttermana in Pinkasa iz novembra letos je pokazala, da generator naključnih števil v Windows 2000 ni varen. Algoritem, ki se uporablja tudi za generiranje SSL ključev namreč ni bil javno objavljen, analiza pa je pokazala, da je mogoče z razmeroma preprostimi napadi predvideti prihodnje "naključne" vrednosti in s tem uganiti npr. SSL šifrirne ključe.

Seveda pa niti uporabniki operacijskega sistema Linux niso varni. Raziskava iz marca 2006 je namreč odkrila številne ranljivosti tudi v generatorju naključnih števil v tem operacijskem sistemu.

Ameriški National Institute of Standards and Technology je letos pripravil nov standard za generiranje naključnih števil. Pripravili so štiri standardizirane tehnike oz. algoritme, med katerimi se eden imenuje Dual_EC_DRBG.

Algoritem je sicer najpočasnejši med vsemi štirimi, Schneier pa poroča, da je postal standard izključno zato, ker ga je priporočila tajna služba NSA.

V začetku leta 2006 so v algoritmu sicer opazili nekaj pomanjkljivosti (algoritem proizvaja nekaj tim. pristranosti), letos pa sta na konferenci Crypto 2007 Shumow in Ferguson iz Microsofta pripravila predstavitev, v kateri se sprašujeta, če algoritem Dual_EC_DRBG ne vsebuje tim. "stranskih vrat".

Raziskovalca sta namreč ugotovila, da algoritem uporablja konstante za definiranje eliptične krivulje, ki pa so povezane z nekim naborom skritih številk. Kdor pozna, ali bi poznal te številke, bi lahko s pomočjo poznavanja prvih 32 naključno generiranih znakov algoritma Dual_EC_DRBG uganil vse naslednje "naključno" generirane znake. Povedano drugače: v algoritem je morda vrinjen "tajni ključ" napadalca, saj konstante morda predstavljajo javni ključ napadalca, skrito število pa predstavlja napadalčev tajni ključ, kar napadalcu omogoči uspešen napad na sam algoritem.

S tem bi bilo mogoče razmeroma enostavno razbiti praktično vsak kriptografski algoritem, ki bi temeljil na generatorju naključnih števil Dual_EC_DRBG.

Sicer ni znano, ali NSA oziroma kdorkoli drug v resnici poseduje omenjene skrite številke. A dejstvo, da ji bi kdo utegnil posedovati je verjetno dovolj močan argument proti uporabi tega algoritma.

Nič ni naključno, vse je dovoljeno.