Drošība

/ dev / random vs / dev / urandom un vai tie ir droši?

/ dev / random vs / dev / urandom un vai tie ir droši?

Darba sākšana

Kurš būtu domājis, ka nejauša skaitļa ģenerēšana ir tāds juceklis, domājams, ka tas ir tikpat tiešs kā skaitļa uzminēšana jebkur starp norādīto diapazonu. Bet tas nav tik vienkārši, kā šķiet, un līdz šim ir pierādīts, ka visas mašīnas nespēj pašas ģenerēt patiesu nejaušu skaitli.

Kāpēc mašīnas pašas nevar ģenerēt patieso nejaušo skaitli?

Mašīnas vēl ir tikai instruētas mehānismu un shēmu kopas, un tāpēc tām nevar dot norādījumus patstāvīgi izdomāt nejaušu skaitli bez jebkādas palīdzības. Un tāpēc līdz šim un turpmāk mēs ar mašīnām esam iesaistījuši dabu vai cilvēkus, lai ģenerētu patiesu nejaušu skaitli. Mēs šeit neapspriedīsim, kā ģenerēt patiesu nejaušu skaitli, bet mēs apspriedīsim par jau ieviestajiem nejaušo skaitļu ģeneratoriem, to darbību un trūkumiem.

Kāpēc patiesa nejauša skaitļa ģenerēšana ir tik svarīga?

Rodas jautājums, kāpēc patieso nejaušo skaitļu ģenerēšana ir svarīga, un atbilde uz to ir drošības apsvērumu dēļ. Lielākā daļa kriptogrāfisko algoritmu ir balstīti uz nejaušu skaitļu ģenerēšanu, jo šie nejaušie skaitļi tiek izmantoti kriptogrāfisko atslēgu izveidošanai, un, ja ģenerētie nejaušie skaitļi pēc būtības nav patiesi nejauši, tie padara šos kriptogrāfiskos paņēmienus vājākus un šīs atslēgas var paredzēt salīdzinoši vieglāk izmantojot algoritmu, kas tika izmantots šo nejaušo atslēgu ģenerēšanai. Tas ir vissvarīgākais patieso nejaušo skaitļu iemesls, izņemot lietojumprogrammas, piemēram, azartspēles.

Nejaušo skaitļu ģenerators Linux kodolos:

Mūsu diskusijas tēma šodien ir balstīta uz Linux Random Number Generator, uz kādiem faktoriem balstās šis ģenerators, un vai tas tiešām ir nejaušs, vai tas ir vēl viens parasti neuzticams izlases skaitlis.

Linux izmanto Pseudo Random Number Generator (PRNG) vai kriptogrāfiski drošu Pseudo Random Number Generator (CSPRNG), kas nozīmē, ka tas izmanto sarežģītas matemātiskas formulas un vides īpašības, lai sasniegtu maksimālo nejaušību. Linux bija pirmā OS, kas savā kodola telpā iekļāva PRNG. Teodors Ts'o to īstenoja 1994. gadā.

Linux ir trīs nejaušo skaitļu ģeneratoru kategorijas: / dev / random, / dev / urandom, / dev / arandom. Šie visi trīs ir faili, kuros Linux saglabā nejaušus skaitļus. Šajos failos nejaušie skaitļi tiek ģenerēti, izmantojot ierīču draiveru un citu avotu radīto vides troksni. Lai nodrošinātu nejaušību nejaušos skaitļos, linux izmanto entropiju, kas ir nenoteiktības vai nesakārtotības pakāpe starp tām. Šeit varat atrast arī Linux izlases numuru ģeneratora (RNG) rokasgrāmatas lapu:

http: // cilvēks7.org / linux / man-pages / man4 / random.4.html

/ dev / izlases pret / dev / urandom pret / dev / arandom:

Galvenās atšķirības starp / dev / random, / dev / urandom un / dev / arandom ir tādas, ka / dev / random bloķē, ja entropija nenorāda uz pietiekamu nejaušību, / dev / urandom nekad nebloķē, pat ja pseido nejaušo skaitļu ģenerators nav pilnībā izsēts, kad sāknēts, un visbeidzot / dev / arandom bloķē tikai tad, kad pseido nejaušo skaitļu ģenerators vēl nav pilnībā izsēts. Īsāk sakot, / dev / random ir drošākais no visiem, tad nāk / dev / arandom un vismazāk drošais ir / dev / urandom. Parasti tiek lietoti / dev / random un / dev / urandom, jo ​​/ dev / arandom daudzos aspektos ir līdzīgs / dev / urandom. Īsāk sakot, nejaušo skaitļu kopas entropijas novērtējums tiek izmantots, lai noteiktu ģenerēto skaitļu nejaušību. Jo vairāk entropijas, jo lielāka nejaušība tiek sasniegta un labāka. Pašreizējais entropijas apjoms un tā entropijas kopas lielums ir pieejams attiecīgi / proc / sys / kernel / random / nosaukts attiecīgi kā entropy_avail un pool_size, kurus var parādīt terminālā, izmantojot komandas:

cat / proc / sys / kernel / random / entropy_avail

Un:

cat / proc / sys / kernel / random / pool_size

Gan urandom, gan random tiek izmantoti dažādos scenārijos. “Urandom” tiek izmantots, ja pastāvīgi ir nepieciešami nejauši izvēlēti skaitļi, un tā nejaušībai nav lielas nozīmes, savukārt “random” tiek izmantots gadījumos, kad pastāv bažas par drošību, un tā nejaušībai jābūt uzticamai, jo tā bloķē nejaušu skaitļu izlaidi, ja entropija nav līdz zīmi. Lai gan entropija urandom (Neierobežota nejaušība) nav daudz vājāka, taču ieteicams izmantot nejaušu gadījumus, kad nepieciešama lielāka drošība, jo ir iespējama uzbrukumu urandom ģenerētajam skaitlim.

Vājības Linux nejaušo skaitļu ģeneratoros

Nepastāvīgas atmiņas aparatūrai:

Linux kodoliem nejaušo skaitļu ģenerators nav piemērots iegultai aparatūrai, piemēram, maršrutētājiem, kuru sāknēšanas stāvoklis ir paredzams un pietiekamas entropijas avots ir ierobežots. Šāda veida aparatūrai ieteicams pirms izslēgšanas saglabāt un izmantot Random Number Generator (RNG) stāvokli, kas tiks izmantots nākamajā sāknēšanas reizē. Šādos maršrutētāju gadījumos uzbrucēji var kompromitēt un paredzēt ģenerētos nejaušos skaitļus tikai tad, ja viņiem ir piekļuve visām maršrutētāja saitēm un viņi noklausās tā sakaru saites vai ja tieši no paša maršrutētāja ir piekļuvuši saglabātajam RNG stāvoklim.

Par šo RNG trūkumu aparatūras gadījumā trešās puses entropijas ģeneratori nonāk glābšanā. Šie entropijas ģeneratori, piemēram, “haveged”, izmanto procesora kešatmiņas laiku, ārējās audio un video ievades ierīces, lai entropiju palielinātu līdz pieņemamam līmenim.

Entropijas aprēķins:

Kā minēts iepriekš, Linux kodols nosaka nejaušību entropijas izteiksmē, taču tas faktiski katru reizi neaprēķina entropiju un tā vietā izmanto entropijas novērtējumus. Vairāki pētījumi arī atklāja, ka Linux lietoto nejaušo skaitļu entropijas novērtējums nav piemērots vai tuvāks novērtējums, tādējādi skaitļu kopējā nejaušība kļūst vājāka.

Lai gan Linux Random Number Generator ir daži trūkumi, taču tas ir daudz labāks variants, salīdzinot ar citiem RNG, neaizmirstot par notiekošajiem ielāpiem, kurus nodrošina Linux līdzstrādnieki un izstrādātāji.

Noslēgums:

Tas viss bija no manas puses par Random Random Number Generator Linux kodolā. Es labi pavadīju laiku, lai izplatītu šīs zināšanas kopā ar jums. Ceru, ka caur to uzzinājāt kaut ko jaunu, kā arī dalīsities zināšanās tālāk ar pasauli. Visbeidzot, paldies par ieguldīto laiku šajā rakstā.

Populārākās Oculus App Lab spēles
Ja esat Oculus austiņu īpašnieks, jums ir jāsazinās par sānu ielādi. Sānu ielāde ir process, kurā austiņās tiek instalēts saturs, kas nav veikals. Sid...
10 labākās spēles, kuras spēlēt Ubuntu
Windows platforma ir bijusi viena no dominējošajām spēļu platformām, jo ​​mūsdienās tiek attīstīts milzīgs spēļu skaits, lai atbalstītu Windows. Vai k...
5 labākās arkādes spēles Linux
Mūsdienās datori ir nopietnas mašīnas, kuras izmanto spēlēšanai. Ja jūs nevarat iegūt jauno augsto rezultātu, jūs zināt, ko es domāju. Šajā ierakstā j...