säkerhet

/ dev / random vs / dev / urandom och är de säkra?

/ dev / random vs / dev / urandom och är de säkra?

Komma igång

Vem skulle ha trott att generera ett slumpmässigt nummer skulle vara en sådan röra, det ska vara lika rakt fram som att gissa ett nummer var som helst mellan ett visst intervall. Men det är inte så enkelt som det verkar och dessutom har alla maskiner visat sig vara oförmögna att generera ett riktigt slumptal på egen hand.

Varför maskiner inte kan generera riktigt slumptal på egen hand?

Maskiner är ändå bara instruerade uppsättningar av mekanismer och kretsar, och därför kan de inte instrueras att tänka på ett slumpmässigt tal på egen hand utan någon hjälp. Och det är därför fram till nu och vidare, vi har involverat naturen eller människor med maskiner för att generera ett verkligt slumptal. Vi kommer inte att diskutera här hur man skapar ett riktigt slumptal men vi kommer att diskutera om de redan implementerade slumptalsgeneratorerna och deras arbete och svagheter.

Varför är det så viktigt att generera ett verkligt slumptal??

Frågan uppstår att varför är generering av riktiga slumptal viktiga och svaret på det beror på säkerhetsproblem. De flesta kryptografiska algoritmer är baserade på generering av slumpmässiga nummer eftersom dessa slumpmässiga nummer används för att skapa kryptografiska nycklar och om de genererade slumpmässiga siffrorna inte är riktigt slumpmässiga, gör dessa hela dessa kryptografiska tekniker svagare och dessa nycklar kan förutsägas relativt lättare. med algoritmen som användes för att generera dessa slumpmässiga nycklar. Detta är den viktigaste anledningen till riktiga slumpmässiga siffror, förutom applikationer som spel.

Slumpmässig talgenerator i Linux-kärnor:

Ämnet för vår diskussion idag bygger på Linux Random Number Generator, på vilka faktorer är denna generator baserad på och är det verkligen så slumpmässigt eller är det bara ett annat typiskt opålitligt slumptal.

Linux använder Pseudo Random Number Generator (PRNG) eller Cryptographically Secure Pseudo Random Number Generator (CSPRNG) vilket innebär att den använder komplexa matematiska formler och miljöegenskaper för att uppnå maximal slumpmässighet. Linux var det första operativsystemet som inkluderade PRNG i sitt kärnutrymme. Detta implementerades av Theodore Ts'o 1994.

Linux har tre kategorier av slumptalsgeneratorer, / dev / random, / dev / urandom, / dev / arandom. Dessa alla är de filer där Linux lagrar slumpmässiga nummer. Slumpmässiga siffror i dessa filer genereras med hjälp av miljöbruset från enhetsdrivrutinerna och andra källor. För att säkerställa slumpmässighet i sina slumpmässiga siffror använder Linux entropi, vilket är graden av osäkerhet eller oordning mellan dem. Du hittar också manualsidan för Linux Random Number Generator (RNG) här:

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

/ dev / random mot / dev / urandom mot / dev / arandom:

Huvudskillnaderna mellan / dev / random, / dev / urandom och / dev / arandom är att / dev / random block om entropin inte indikerar tillräcklig slumpmässighet, / dev / urandom blockerar aldrig någonsin, även när pseudo-slumptalsgeneratorn är inte helt sådd när den startas och slutligen / dev / arandom blockerar bara när pseudo slumpgenerator ännu inte är helt sådd. Kort sagt, / dev / random är det säkraste av alla, då kommer / dev / arandom och det minst säkraste är / dev / urandom. Normalt används / dev / random och / dev / urandom eftersom / dev / arandom i många termer liknar / dev / urandom. Entropiuppskattningen för slumpmässiga siffror används i korthet för att bestämma slumpmässigheten hos de genererade siffrorna. Ju mer entropi är, desto mer slumpmässighet uppnås och bättre är det. Den aktuella mängden entropi och storleken på dess entropipool finns på / proc / sys / kernel / random / namngiven som entropy_avail respektive pool_size, som kan visas i terminalen med kommandon:

cat / proc / sys / kernel / random / entropy_avail

Och:

cat / proc / sys / kernel / random / pool_size

Både urandom och random används i olika scenarier. 'Urandom' används där det finns ett konstant behov av slumpmässiga nummer och dess slumpmässighet är inte mycket viktigt medan 'slumpmässig' används där det finns ett säkerhetsproblem och dess slumpmässighet bör vara tillförlitlig eftersom det blockerar utmatning av slumptal om entropi inte är upp till märket. Även om entropi för urandom (Unlimited Random) inte är mycket svagare men det rekommenderas att använda slumpmässigt när mer säkerhet krävs på grund av möjligheten till attacker på antal som genereras av urandom.

Svagheter i Linux Slumptalsgeneratorer

För icke-flyktig minneshårdvara:

För Linux-kärnor är slumptalsgeneratorn inte bra för inbäddad hårdvara som routrar, där startbart tillstånd är förutsägbart och källan för tillräcklig entropi är begränsad. För denna typ av hårdvara rekommenderas att spara och använda tillståndet Random Number Generator (RNG) före avstängning som kommer att användas vid nästa start. I sådana fall av routrar kan angriparna bara kompromissa och förutsäga genererade slumpmässiga siffror om de har tillgång till alla routerlänkar och de avlyssnar på dess kommunikationslänkar eller om de har direkt tillgång till det sparade RNG-tillståndet från själva routern.

För denna brist på RNG i händelse av hårdvara, kommer tredje part entropi generatorer till undsättning. Dessa entropigeneratorer som 'haveged' använder processorns cache-timing, externa ljud- och videoingångsenheter för att öka entropin till en acceptabel grad.

Entropi uppskattning:

Som nämnts tidigare bestämmer Linux-kärnan slumpmässighet när det gäller entropi men den beräknar faktiskt inte entropi varje gång och använder istället entropiuppskattningar. Flera undersökningar har också avslöjat att entropiuppskattningen av slumpmässiga tal som används i Linux inte är lämpliga eller närmare uppskattningar, vilket gör den totala slumpmässigheten hos siffrorna svagare.

Även om det finns några svagheter i Linux Random Number Generator, men det är mycket bättre alternativ jämfört med andra RNG, för att inte glömma de pågående korrigeringarna som tillhandahålls av Linux-bidragsgivare och utvecklare.

Avslutande:

Det här var allt från min sida om Random Number Generator i Linux-kärnan. Jag hade en bra tid att sprida denna kunskap med dig. Hoppas att du har lärt dig något nytt genom det och också att du kommer att dela kunskapen vidare till världen. Slutligen tack för att du investerade tid i den här artikeln.

Bästa Gamepad Mapping Apps för Linux
Om du gillar att spela spel på Linux med en gamepad istället för ett typiskt tangentbord och musinmatningssystem, finns det några användbara appar för...
Användbara verktyg för Linux-spelare
Om du gillar att spela spel på Linux är chansen att du kan ha använt appar och verktyg som Wine, Lutris och OBS Studio för att förbättra spelupplevels...
HD Remastered Games för Linux som aldrig tidigare hade en Linux-version
Många spelutvecklare och utgivare kommer med HD-remaster av gamla spel för att förlänga livstiden för franchisen, snälla fans som begär kompatibilitet...