Veiligheid

/dev/random vs /dev/urandom en zijn ze veilig?

/dev/random vs /dev/urandom en zijn ze veilig?

Beginnen

Wie had gedacht dat het genereren van een willekeurig getal zo'n puinhoop zou zijn, het zou net zo eenvoudig moeten zijn als het raden van een getal ergens tussen een bepaald bereik. Maar het is niet zo eenvoudig als het lijkt en ook tot nu toe is bewezen dat alle machines niet in staat zijn om zelf een echt willekeurig getal te genereren.

Waarom machines zelf geen echt willekeurig getal kunnen genereren??

Machines zijn echter slechts geïnstrueerde sets van mechanismen en circuits, en daarom kunnen ze niet worden geïnstrueerd om zelfstandig een willekeurig getal te bedenken zonder enige hulp. En dat is waarom we tot nu toe en verder de natuur of mensen met machines hebben betrokken om een ​​echt willekeurig getal te genereren. We zullen hier niet bespreken hoe we een echt willekeurig getal kunnen genereren, maar we zullen het hebben over de reeds geïmplementeerde generatoren voor willekeurige getallen en hun werking en zwakke punten.

Waarom is het genereren van een echt willekeurig getal zo belangrijk??

De vraag rijst waarom het genereren van echte willekeurige getallen belangrijk is en het antwoord daarop is vanwege veiligheidsproblemen?. De meeste cryptografische algoritmen zijn gebaseerd op het genereren van willekeurige getallen, aangezien deze willekeurige getallen worden gebruikt om cryptografische sleutels te maken en als de gegenereerde willekeurige getallen niet echt willekeurig van aard zijn, maken deze alle cryptografische technieken zwakker en kunnen die sleutels relatief gemakkelijker worden voorspeld met behulp van het algoritme dat werd gebruikt om die willekeurige sleutels te genereren. Dit is de belangrijkste reden voor echte willekeurige getallen, behalve toepassingen zoals gokken.

Willekeurige nummergenerator in Linux-kernels:

Het onderwerp voor onze discussie van vandaag is gebaseerd op Linux Random Number Generator, op welke factoren is deze generator gebaseerd en is het echt zo willekeurig of is het gewoon een ander typisch onbetrouwbaar willekeurig getal.

Linux gebruikt Pseudo Random Number Generator (PRNG) of Cryptographically Secure Pseudo Random Number Generator (CSPRNG), wat betekent dat het complexe wiskundige formules en omgevingseigenschappen gebruikt om maximale willekeur te bereiken. Linux was het eerste besturingssysteem dat PRNG in zijn kernelruimte opnam. Dit werd geïmplementeerd door Theodore Ts'o in 1994.

Linux heeft drie categorieën van generatoren voor willekeurige getallen, /dev/random, /dev/urandom, /dev/arandom. Dit zijn alle drie de bestanden waarin Linux willekeurige getallen opslaat. De willekeurige getallen in deze bestanden worden gegenereerd met behulp van het omgevingsgeluid van de apparaatstuurprogramma's en andere bronnen. Om willekeur in zijn willekeurige getallen te garanderen, gebruikt Linux entropie, de mate van onzekerheid of wanorde tussen hen. Je kunt hier ook de handleiding voor Linux Random Number Generator (RNG) vinden:

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

/dev/willekeurig versus /dev/urandom versus /dev/willekeurig:

De belangrijkste verschillen tussen /dev/random, /dev/urandom en /dev/arandom is dat /dev/random blokkeert als de entropie onvoldoende willekeur aangeeft, /dev/urandom nooit blokkeert, zelfs niet wanneer de pseudo-willekeurige generator is niet volledig geseed bij het opstarten en als laatste blokkeert /dev/arandom alleen wanneer de pseudo-willekeurige nummergenerator nog niet volledig is geseed. Kortom, /dev/random is de veiligste van allemaal, dan komt /dev/arandom en de minst veilige is /dev/urandom. Normaal gesproken worden /dev/random en /dev/urandom gebruikt omdat /dev/arandom in veel termen vergelijkbaar is met /dev/urandom. De entropieschatting voor de willekeurige getallenpool wordt in het kort gebruikt om de willekeur van gegenereerde getallen te bepalen determine. Hoe meer entropie, hoe meer willekeur wordt bereikt en hoe beter het is. De huidige hoeveelheid entropie en de grootte van de entropiepool zijn beschikbaar in /proc/sys/kernel/random/ met de namen respectievelijk entropy_avail en pool_size, die in terminal kunnen worden weergegeven met behulp van opdrachten:

cat /proc/sys/kernel/random/entropy_avail

En:

cat /proc/sys/kernel/random/pool_size

Zowel urandom als willekeurig worden in verschillende scenario's gebruikt. 'Urandom' wordt gebruikt als er constant willekeurige getallen nodig zijn en de willekeur ervan niet zo belangrijk is, terwijl 'willekeurig' wordt gebruikt als er een veiligheidsprobleem is en de willekeurigheid ervan betrouwbaar moet zijn omdat het de uitvoer van willekeurige getallen blokkeert als de entropie niet voldoende is het teken. Hoewel entropie voor urandom (onbeperkt willekeurig) niet veel zwakker is, wordt het aanbevolen om willekeurig te gebruiken wanneer meer beveiliging vereist is vanwege de mogelijkheid van aanvallen op nummer gegenereerd door urandom.

Zwakke punten in Linux Random Number Generators

Voor niet-vluchtige geheugenhardware:

Voor Linux-kernels is de generator voor willekeurige getallen niet goed voor embedded hardware zoals routers, waarin de opstartstatus voorspelbaar is en de bron voor voldoende entropie beperkt is. Voor dit soort hardware wordt aanbevolen om de Random Number Generator (RNG)-status op te slaan en te gebruiken vóór het afsluiten, die bij de volgende keer opstarten zal worden gebruikt. In dergelijke gevallen van routers kunnen de aanvallers de gegenereerde willekeurige getallen alleen compromitteren en voorspellen als ze toegang hebben tot alle routerlinks en ze de communicatielinks afluisteren of als ze rechtstreeks toegang hebben gekregen tot de opgeslagen RNG-status van de router zelf.

Voor deze fout van RNG in het geval van hardware komen entropiegeneratoren van derden te hulp. Deze entropiegeneratoren zoals 'haveged' gebruiken processorcache-timing, externe audio- en video-invoerapparaten om de entropie tot een acceptabel niveau te verhogen.

Entropie schatting:

Zoals eerder vermeld, bepaalt de Linux-kernel willekeur in termen van entropie, maar berekent niet elke keer de entropie en gebruikt in plaats daarvan entropie-schattingen. Verschillende onderzoeken hebben ook aangetoond dat de entropieschatting van willekeurige getallen die in Linux worden gebruikt, geen geschikte of nauwkeurigere schattingen zijn, waardoor de algehele willekeur van de getallen zwakker wordt.

Hoewel er enkele zwakke punten zijn in Linux Random Number Generator, maar het is een veel betere optie in vergelijking met andere RNG's, en niet te vergeten de doorlopende patches die worden geleverd door Linux-bijdragers en -ontwikkelaars.

Concluderend:

Dit was allemaal van mijn kant over de Random Number Generator in de Linux-kernel. Ik vond het leuk om deze kennis met jullie te verspreiden. Ik hoop dat je er iets nieuws door hebt geleerd en ook dat je de kennis verder met de wereld zult delen. Tot slot, bedankt voor het investeren van tijd in dit artikel.

Top 5 Game Capture-kaarten
We hebben allemaal gezien en genoten van streaming gameplays op YouTube. PewDiePie, Jakesepticye en Markiplier zijn slechts enkele van de beste gamers...
Hoe een spel op Linux te ontwikkelen
Tien jaar geleden zouden niet veel Linux-gebruikers voorspellen dat hun favoriete besturingssysteem ooit een populair spelplatform voor commerciële vi...
Open source-poorten van commerciële game-engines
Gratis, open source en platformonafhankelijke game-engine-recreaties kunnen worden gebruikt om zowel oude als enkele van de vrij recente gametitels te...