Turvallisuus

/ dev / random vs / dev / urandom ja ovatko ne turvallisia?

/ dev / random vs / dev / urandom ja ovatko ne turvallisia?

Päästä alkuun

Kuka olisi uskonut satunnaisluvun luomisen olevan sellainen sotku, sen oletetaan olevan yhtä suoraviivaista kuin numeron arvaaminen missä tahansa tietyn alueen välillä. Mutta se ei ole niin yksinkertaista kuin miltä näyttää, ja toistaiseksi kaikki koneet eivät ole kyenneet tuottamaan todellista satunnaislukua yksin.

Miksi koneet eivät voi tuottaa todellista satunnaislukua yksin?

Koneet ovat silti vain ohjeistettuja mekanismeja ja piirejä, joten niitä ei voida ohjeistaa ajattelemaan satunnaislukua yksin ilman apua. Ja siksi tähän asti ja edelleen olemme olleet mukana luonnossa tai ihmisissä koneilla todellisen satunnaisluvun tuottamiseksi. Emme keskustele täällä tosi satunnaisluvun luomisesta, mutta keskustelemme jo toteutetuista satunnaislukugeneraattoreista, niiden toiminnasta ja heikkouksista.

Miksi todellisen satunnaisluvun luominen on niin tärkeää?

Esiin nousee kysymys, miksi todellisten satunnaislukujen muodostaminen on tärkeää ja vastaus tähän on turvallisuusnäkökohtien vuoksi. Suurin osa salausalgoritmeista perustuu satunnaislukujen muodostamiseen, koska näitä satunnaislukuja käytetään salausavainten luomiseen, ja jos luodut satunnaisluvut eivät ole luonteeltaan todella satunnaisia, ne tekevät näistä salaustekniikoista heikompia ja nämä avaimet voidaan ennustaa suhteellisen helpoiksi käyttämällä algoritmia, jota käytettiin näiden satunnaisten avainten luomiseen. Tämä on tärkein syy tosi satunnaislukuihin, lukuun ottamatta sovelluksia, kuten uhkapeli.

Satunnaislukugeneraattori Linux-ytimissä:

Tämänpäiväisen keskustelumme aihe perustuu Linux Random Number Generatoriin, mihin tekijöihin tämä generaattori perustuu, ja onko se todella satunnaista vai onko se vain yksi tyypillisesti epäluotettava satunnaisluku.

Linux käyttää Pseudo Random Number Generator (PRNG) tai kryptografisesti suojattua Pseudo Random Number Generator (CSPRNG), mikä tarkoittaa, että se käyttää monimutkaisia ​​matemaattisia kaavoja ja ympäristöominaisuuksia maksimaalisen satunnaisuuden saavuttamiseksi. Linux oli ensimmäinen käyttöjärjestelmä, joka sisälsi PRNG: n ydintilaansa. Tämän toteutti Theodore Ts'o vuonna 1994.

Linuxilla on kolme luokkaa satunnaislukugeneraattoreita, / dev / random, / dev / urandom, / dev / arandom. Nämä kaikki kolme ovat tiedostoja, joihin Linux tallentaa satunnaislukuja. Näiden tiedostojen satunnaisluvut muodostetaan käyttämällä laiteajureiden ja muiden lähteiden aiheuttamaa ympäristömelua. Lisäksi satunnaislukujen satunnaisuuden varmistamiseksi linux käyttää entropiaa, joka on niiden välisen epävarmuuden tai häiriön laajuus. Täältä löydät myös Linux Random Number Generator (RNG) -käyttöoppaan sivun:

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

/ dev / satunnainen vastaan / dev / urandom vastaan / dev / arandom:

Tärkeimmät erot / dev / satunnainen, / dev / urandom ja / dev / arandom välillä ovat, että / dev / satunnaiset lohkot, jos entropia ei osoita riittävää satunnaisuutta, / dev / urandom ei estä koskaan, vaikka näennäissatunnaislukugeneraattori ei ole täysin siemen käynnistyksen yhteydessä ja lopuksi / dev / arandom estää vain, kun näennäissatunnaislukugeneraattoria ei ole vielä täysin siemen. Lyhyesti sanottuna / dev / random on kaikista turvallisin, sitten tulee / dev / arandom ja vähiten turvallisin on / dev / urandom. Normaalisti käytetään / dev / random ja / dev / urandom, koska / dev / arandom on monin tavoin samanlainen kuin / dev / urandom. Lyhyesti satunnaislukuparvien entropiaestimaattia käytetään muodostettujen lukujen satunnaisuuden määrittämiseen. Mitä enemmän entropia on, sitä enemmän satunnaisuutta saavutetaan ja se on parempi. Nykyinen entropian määrä ja sen entropia-altaan koko ovat saatavilla osoitteissa / proc / sys / kernel / random / nimeltään entropy_avail ja pool_size, jotka voidaan näyttää päätelaitteessa komennoilla:

cat / proc / sys / kernel / random / entropy_avail

Ja:

cat / proc / sys / kernel / random / pool_size

Sekä urandomia että satunnaista käytetään eri tilanteissa. Urandomia käytetään silloin, kun satunnaislukuja tarvitaan jatkuvasti eikä sen satunnaisuudella ole paljon merkitystä, kun taas satunnaislukua käytetään silloin, kun on huolta turvallisuudesta ja sen satunnaisuuden tulisi olla luotettava, koska se estää satunnaislukujen antamisen, jos entropia ei ole merkki. Vaikka urandomin entropia (rajoittamaton satunnainen) ei ole paljon heikompi, mutta on suositeltavaa käyttää satunnaista, kun tarvitaan enemmän turvallisuutta, koska urandomin tuottama numero voi hyökätä.

Heikkoudet Linuxin satunnaislukugeneraattoreissa

Haihtumaton muistilaitteisto:

Linux-ytimissä satunnaislukugeneraattori ei ole hyvä sulautetuille laitteille, kuten reitittimille, joissa käynnistystila on ennustettavissa ja riittävän entropian lähde on rajallinen. Tämäntyyppiselle laitteistolle on suositeltavaa tallentaa ja käyttää satunnaislukugeneraattorin (RNG) tilaa ennen sammuttamista, jota käytetään seuraavassa käynnistyksessä. Tällaisissa reitittimissä hyökkääjät voivat tehdä kompromisseja ja ennustaa luotuja satunnaislukuja vain, jos heillä on pääsy kaikkiin reitittimen linkkeihin ja he salakuuntelevat sen tiedonsiirtolinkkejä tai jos he ovat päässeet suoraan tallennettuun RNG-tilaan reitittimestä.

Tätä RNG-vikaa varten laitteistojen tapauksessa kolmansien osapuolten entropiageneraattorit auttavat. Nämä entropiageneraattorit, kuten 'haveged', käyttävät prosessorin välimuistiajoitusta, ulkoisia ääni- ja videotulolaitteita entropian lisäämiseksi hyväksyttävään määrään.

Entropian arvio:

Kuten aiemmin mainittiin, Linux-ydin määrittää satunnaisuuden entropian suhteen, mutta se ei tosiasiallisesti laske entropiaa joka kerta ja käyttää sen sijaan entropiarvioita. Useat tutkimukset ovat myös paljastaneet, että Linuxissa käytettyjen satunnaislukujen entropiarviointi ei ole sopiva tai lähempi estimaatti, mikä tekee numeroiden yleisestä satunnaisuudesta heikompaa.

Vaikka Linuxin satunnaislukugeneraattorissa on joitain heikkouksia, mutta se on paljon parempi vaihtoehto verrattuna muihin RNG: iin, unohtamatta Linux-avustajien ja kehittäjien tarjoamia käynnissä olevia korjaustiedostoja.

Lopuksi:

Tämä koski minun puoleltani Linux-ytimen satunnaislukugeneraattoria. Minulla oli hauskaa levittää tätä tietoa kanssasi. Toivon, että opit jotain uutta sen kautta ja että jaat tiedon edelleen maailmalle. Lopuksi, kiitos investoinnistasi tähän artikkeliin.

Kuinka käyttää AutoKey-toimintoa Linux-pelien automatisointiin
AutoKey on työpöydän automaatioapuohjelma Linuxille ja X11: lle, ohjelmoitu Python 3, GTK ja Qt. Komentosarjojen ja MACRO-toimintojen avulla voit auto...
Kuinka näyttää FPS-laskuri Linux-peleissä
Linux-pelaaminen sai suuren työn, kun Valve ilmoitti Linux-tuesta Steam-asiakkaalle ja heidän peleilleen vuonna 2012. Siitä lähtien monet AAA- ja indi...
How to download and Play Sid Meier's Civilization VI on Linux
Introduction to the game Civilization 6 is a modern take on the classic concept introduced in the series of the Age of Empires games. The idea was fai...