Varnost

/ dev / random vs / dev / urandom in ali so varni?

/ dev / random vs / dev / urandom in ali so varni?

Kako začeti

Kdo bi si mislil, da bi bilo ustvarjanje naključnega števila takšna zmešnjava, naj bi bilo ravno tako naravnost kot ugibanje števila kjer koli med danim obsegom. Vendar ni tako preprosto, kot se zdi, in tudi do zdaj je dokazano, da vsi stroji sami ne morejo ustvariti pravega naključnega števila.

Zakaj stroji ne morejo sami ustvariti prave naključne številke?

Stroji so šele poučeni sklopi mehanizmov in vezij, zato jih ni mogoče poučiti, da si naključno število sami omislijo brez kakršne koli pomoči. In zato smo do zdaj in naprej s stroji vključevali naravo ali ljudi, da smo ustvarili resnično naključno število. Tu ne bomo razpravljali o tem, kako ustvariti resnično naključno število, ampak o že uveljavljenih generatorjih naključnih števil ter njihovem delovanju in slabostih.

Zakaj je ustvarjanje prave naključne številke tako pomembno?

Postavlja se vprašanje, zakaj so generacije resničnih naključnih števil pomembne in odgovor na to je zaradi varnostnih težav. Večina kriptografskih algoritmov temelji na generiranju naključnih števil, saj se ta naključna števila uporabljajo za ustvarjanje kriptografskih ključev in če generirana naključna števila v resnici niso res naključna, so zaradi njih vse te kriptografske tehnike šibkejše in te ključe je mogoče napovedati razmeroma lažje z uporabo algoritma, ki je bil uporabljen za generiranje teh naključnih ključev. To je najpomembnejši razlog za resnične naključne številke, razen aplikacij, kot so igre na srečo.

Generator naključnih števil v jedrih Linuxa:

Tema naše današnje razprave temelji na Linux Generatorju naključnih števil, na tem, na katerih dejavnikih temelji ta generator in ali je res tako naključno ali gre le za še eno običajno nezanesljivo naključno število.

Linux uporablja Pseudo Random Number Generator (PRNG) ali Cryptographically Secure Pseudo Random Number Generator (CSPRNG), kar pomeni, da za doseganje največje naključnosti uporablja zapletene matematične formule in lastnosti okolja. Linux je bil prvi OS, ki je v svoj jedrni prostor vključil PRNG. To je leta 1994 izvedel Theodore Ts'o.

Linux ima tri kategorije generatorjev naključnih števil, / dev / random, / dev / urandom, / dev / arandom. Vse te tri so datoteke, v katerih Linux shranjuje naključne številke. Naključne številke v teh datotekah se ustvarijo z uporabo okoljskega hrupa iz gonilnikov naprav in drugih virov. Da bi zagotovil naključnost svojih naključnih števil, Linux uporablja entropijo, ki je obseg negotovosti ali neurejenosti med njimi. Tu lahko najdete tudi stran z navodili za Generator naključnih številk Linux (RNG):

http: // man7.org / linux / man-pages / man4 / random.4.html

/ dev / naključno proti / dev / urandom proti / dev / arandom:

Glavne razlike med / dev / random, / dev / urandom in / dev / arandom so, da / dev / random bloki, če entropija ne kaže zadostne naključnosti, / dev / urandom ne blokira nikoli, tudi če generator psevdo naključnih števil pri zagonu ni popolnoma zasejan in nazadnje / dev / arandom blokira le, če generator psevdo naključnih števil še ni v celoti zasejan. Skratka, / dev / random je najvarnejši od vseh, nato pride / dev / arandom in najmanj varen / dev / urandom. Običajno se uporabljajo / dev / random in / dev / urandom, ker je / dev / arandom v mnogih izrazih podoben / dev / urandom. Ocena entropije za nabor naključnih števil se na kratko uporablja za določanje naključnosti ustvarjenih števil. Več kot je entropije, več naključnosti je doseženo in boljše je. Trenutna količina entropije in velikost njenega entropijskega področja sta na voljo na / proc / sys / kernel / random / poimenovana kot entropy_avail oziroma pool_size, ki ju lahko v terminalu prikažemo z ukazi:

cat / proc / sys / kernel / random / entropy_avail

In:

cat / proc / sys / kernel / random / pool_size

Tako različna kot naključna se uporabljata v različnih scenarijih. „Nenamerno“ se uporablja tam, kjer naključne številke nenehno potrebujejo in njegova naključnost ni veliko pomembna, „naključno“ pa se uporablja tam, kjer obstaja varnostna skrb, njegova naključnost pa mora biti zanesljiva, saj blokira izpis naključnih števil, če entropija ni znamko. Čeprav entropija za urandom (Unlimited Random) ni veliko šibkejša, vendar je priporočljivo uporabljati naključno, kadar je potrebna večja varnost zaradi možnosti napadov na število, ki ga ustvari urandom.

Slabosti v generatorjih naključnih števil Linux

Za trajno pomnilniško strojno opremo:

Za jedra Linuxa generator naključnih števil ni primeren za vdelano strojno opremo, kot so usmerjevalniki, v katerih je zagonsko stanje predvidljivo in je vir za dovolj entropije omejen. Za tovrstno strojno opremo je priporočljivo, da pred zaustavitvijo shranite in uporabite stanje generatorja naključnih števil (RNG), ki bo uporabljeno pri naslednjem zagonu. V takih primerih usmerjevalnikov lahko napadalci ogrozijo in napovedo generirane naključne številke le, če imajo dostop do vseh povezav usmerjevalnika in prislušujejo njegovim komunikacijskim povezavam ali če so neposredno iz usmerjevalnika dostopali do shranjenega stanja RNG.

Za to napako RNG v primeru strojne opreme na pomoč priskočijo tretji proizvajalci entropije. Ti generatorji entropije, kot je "hasged", uporabljajo čas predpomnilnika procesorja, zunanje avdio in video vhodne naprave za povečanje entropije do sprejemljive stopnje.

Ocena entropije:

Kot smo že omenili, jedro Linuxa določa naključnost v smislu entropije, vendar dejansko vsakič ne izračuna entropije in namesto tega uporablja ocene entropije. Številne raziskave so tudi pokazale, da ocena entropije naključnih števil, ki se uporabljajo v Linuxu, ni primerna ali natančnejša ocena, zato je splošna naključnost številk šibkejša.

Čeprav je v Generatorju naključnih števil Linux nekaj šibkosti, je v primerjavi z drugimi RNG veliko boljša možnost, ne pozabimo pa tudi na stalne popravke, ki jih ponujajo sodelavci in razvijalci Linuxa.

Zaključno:

To je bilo vse z moje strani glede generatorja naključnih števil v jedru Linuxa. Lepo sem se imel pri širjenju tega znanja z vami. Upam, da ste se skozi to naučili nekaj novega in tudi, da boste znanje delili naprej po svetu. Na koncu še hvala, da ste vložili čas v ta članek.

Vadnica za OpenTTD
OpenTTD je ena izmed najbolj priljubljenih poslovnih simulacijskih iger. V tej igri morate ustvariti čudovit prevozniški posel. Vendar boste začeli na...
SuperTuxKart za Linux
SuperTuxKart je odličen naslov, zasnovan tako, da vam brezplačno ponuja izkušnjo Mario Kart v vašem sistemu Linux. Igrati je precej zahtevno in zabavn...
Vadnica za bitko za Wesnoth
Bitka za Wesnoth je ena izmed najbolj priljubljenih odprtokodnih strateških iger, ki jih lahko trenutno igrate. Ne samo, da se ta igra razvija že zelo...