Saugumas

/ dev / random vs / dev / urandom ir ar jie saugūs?

/ dev / random vs / dev / urandom ir ar jie saugūs?

Pradžia

Kas galėjo pagalvoti, kad generavus atsitiktinį skaičių bus tokia netvarka, manoma, kad jis yra toks pat tiesus, kaip atspėti skaičių bet kur tarp nurodyto diapazono. Bet tai nėra taip paprasta, kaip atrodo, taip pat iki šiol įrodyta, kad visos mašinos negali pačios sugeneruoti tikro atsitiktinio skaičiaus.

Kodėl mašinos pačios negali sugeneruoti tikro atsitiktinio skaičiaus?

Mašinos yra tik nurodomi mechanizmų ir grandinių rinkiniai, todėl jiems negalima nurodyti savarankiškai galvoti apie atsitiktinį skaičių be jokios pagalbos. Štai kodėl iki šiol ir toliau mes įtraukėme gamtą ar žmones į mašinas, kad sukurtume tikrą atsitiktinį skaičių. Čia neaptarsime, kaip sukurti tikrą atsitiktinį skaičių, bet aptarsime jau įdiegtus atsitiktinių skaičių generatorius, jų veikimą ir silpnybes.

Kodėl generuojamas tikras atsitiktinis skaičius, yra labai svarbu?

Kyla klausimas, kodėl svarbi tikrų atsitiktinių skaičių generavimas, o atsakymas į tai yra dėl saugumo problemų. Dauguma kriptografinių algoritmų yra pagrįsti atsitiktinių skaičių generavimu, nes šie atsitiktiniai skaičiai naudojami kuriant kriptografinius raktus, o jei sugeneruoti atsitiktiniai skaičiai nėra tikrai atsitiktiniai, dėl to visi šie kriptografiniai metodai yra silpnesni ir tuos raktus galima palyginti lengvai nuspėti naudojant algoritmą, kuris buvo naudojamas tiems atsitiktiniams klavišams generuoti. Tai yra svarbiausia tikrų atsitiktinių skaičių priežastis, išskyrus programas, tokias kaip lošimai.

Atsitiktinių skaičių generatorius „Linux“ branduoliuose:

Šiandienos diskusijos tema paremta „Linux Random Number Generator“, kokiais veiksniais grindžiamas šis generatorius ir ar tai tikrai atsitiktinis, ar tai tik dar vienas paprastai nepatikimas atsitiktinis skaičius.

„Linux“ naudoja „Pseudo Random Number Generator“ (PRNG) arba „Cryptographically Secure Pseudo Random Number Generator“ (CSPRNG), o tai reiškia, kad maksimaliam atsitiktinumui pasiekti naudojamos sudėtingos matematinės formulės ir aplinkos savybės. „Linux“ buvo pirmoji OS, įtraukusi PRNG į savo branduolio erdvę. Tai 1994 m. Įgyvendino Theodore'as Ts'o.

„Linux“ turi tris atsitiktinių skaičių generatorių kategorijas: / dev / random, / dev / urandom, / dev / arandom. Visi šie trys yra failai, kuriuose „Linux“ saugo atsitiktinius skaičius. Šių failų atsitiktiniai skaičiai generuojami naudojant aplinkos triukšmą iš įrenginių tvarkyklių ir kitų šaltinių. Be to, norėdama užtikrinti savo atsitiktinių skaičių atsitiktinumą, „Linux“ naudoja entropiją, kuri yra neapibrėžtumas ar netvarka tarp jų. Čia taip pat galite rasti „Linux Random Number Generator“ (RNG) vadovą:

http: // vyras7.org / linux / man-pages / man4 / random.4.HTML

/ dev / random prieš / dev / urandom prieš / dev / arandom:

Pagrindiniai skirtumai tarp / dev / random, / dev / urandom ir / dev / arandom yra tai, kad / dev / random blokuoja, jei entropija nerodo pakankamo atsitiktinumo, / dev / urandom niekada neblokuoja, net kai pseudo atsitiktinių skaičių generatorius nėra visiškai pasėtas paleidus ir galiausiai / dev / arandom blokuoja tik tada, kai pseudo atsitiktinių skaičių generatorius dar nėra visiškai pasėtas. Trumpai tariant, / dev / random yra saugiausias iš visų, tada ateina / dev / arandom ir mažiausiai saugus yra / dev / urandom. Paprastai / dev / random ir / dev / urandom yra naudojami, nes / dev / arandom daugeliu atvejų yra panašus į / dev / urandom. Trumpai tariant, atsitiktinių skaičių telkinio entropijos įvertinimas naudojamas generuojamų skaičių atsitiktinumui nustatyti. Kuo daugiau entropijos, tuo daugiau atsitiktinumo pasiekiama ir geriau. Dabartinį entropijos kiekį ir jo entropijos telkinio dydį galima rasti adresu / proc / sys / kernel / random / atitinkamai pavadintais kaip entropy_avail ir pool_size, kuriuos galima parodyti terminale naudojant komandas:

cat / proc / sys / kernel / random / entropy_avail

Ir:

cat / proc / sys / kernel / random / pool_size

Skirtinguose scenarijuose naudojama ir urandom, ir random. „Urandom“ naudojamas ten, kur nuolat reikia atsitiktinių skaičių ir jo atsitiktinumas nėra labai svarbus, o „atsitiktinis“ naudojamas ten, kur kyla saugumo problemų, o jo atsitiktinumas turėtų būti patikimas, nes jis blokuoja atsitiktinių skaičių įvedimą, jei entropija neviršija žymė. Nors urandomo (neribotas atsitiktinis) entropija nėra daug silpnesnė, tačiau rekomenduojama naudoti atsitiktinę, kai reikia daugiau saugumo, nes yra galimybė užpulti skaičių, kurį sugeneruoja urandomas.

„Linux“ atsitiktinių skaičių generatorių trūkumai

Nepastovios atminties aparatinei įrangai:

„Linux“ branduoliuose atsitiktinių skaičių generatorius nėra tinkamas įterptai aparatinei įrangai, tokiai kaip maršrutizatoriai, kurių įkrovos būsena yra nuspėjama ir šaltinis, kad būtų pakankamai entropijos, yra ribotas. Tokiai aparatinei įrangai rekomenduojama prieš išjungiant išsaugoti ir naudoti atsitiktinių skaičių generatoriaus (RNG) būseną, kuri bus naudojama kitame įkrovime. Tokiais maršrutizatorių atvejais užpuolikai gali sukompromituoti ir numatyti sugeneruotus atsitiktinius skaičius tik tada, jei jie turi prieigą prie visų maršrutizatoriaus nuorodų ir jie pasiklauso jo ryšių ryšių arba jei iš pat maršruto parinktuvo tiesiogiai pasiekė išsaugotą RNG būseną.

Dėl šio RNG trūkumo aparatinės įrangos atveju į pagalbą ateina trečiųjų šalių entropijos generatoriai. Šie entropijos generatoriai, tokie kaip „haveged“, naudoja procesoriaus talpyklos laiką, išorinius garso ir vaizdo įvesties įrenginius, kad padidintų entropiją iki priimtino laipsnio.

Entropijos įvertinimas:

Kaip minėta anksčiau, „Linux“ branduolys nustato atsitiktinumą pagal entropiją, tačiau jis iš tikrųjų kiekvieną kartą neapskaičiuoja entropijos, o naudoja entropijos įvertinimus. Keli tyrimai taip pat atskleidė, kad atsitiktinių skaičių, naudojamų Linux, entropijos įvertinimas nėra tinkamas ar artimesnis įvertinimas, todėl bendras skaičių atsitiktinumas yra silpnesnis.

Nors „Linux Random Number Generator“ yra keletas trūkumų, tačiau tai yra kur kas geresnis pasirinkimas, palyginti su kitais RNG, nepamirštant nuolatinių „Linux“ bendraautorių ir kūrėjų pataisų.

Baigiant:

Visa tai buvo mano pusėje apie „Random Number Generator“ „Linux“ branduolyje. Aš gerai praleidau laiką skleisdamas šias žinias su jumis. Tikiuosi, kad per tai sužinojote ką nors naujo ir taip pat pasidalinsite žiniomis toliau pasauliui. Galiausiai, ačiū, kad investavote laiko į šį straipsnį.

Kaip naudoti „Xdotool“, norint paskatinti pelės paspaudimus ir klavišų paspaudimus sistemoje „Linux“
„Xdotool“ yra nemokamas ir atviro kodo komandinės eilutės įrankis, skirtas pelės paspaudimams ir klavišų paspaudimams imituoti. Šis straipsnis apims t...
5 populiariausi „Linux“ skirtų ergonomiškų kompiuterinių pelių produktai
Ar ilgalaikis kompiuterio naudojimas sukelia riešo ar pirštų skausmą?? Ar jūs kenčiate nuo sąnarių standumo ir nuolat turite paspausti rankas? Ar jauč...
How to Change Mouse and Touchpad Settings Using Xinput in Linux
Most Linux distributions ship with “libinput” library by default to handle input events on a system. It can process input events on both Wayland and X...