Bezpečnosť

/ dev / random vs / dev / urandom a sú bezpečné?

/ dev / random vs / dev / urandom a sú bezpečné?

Začíname

Kto by si myslel, že vygenerovanie náhodného čísla bude taký neporiadok, má to byť rovnako jednoduché ako hádať číslo kdekoľvek medzi daným rozsahom. Ale to nie je také jednoduché, ako sa zdá, a tiež sa doteraz ukázalo, že všetky stroje nie sú schopné samy vygenerovať skutočné náhodné číslo.

Prečo stroje nemôžu samy generovať skutočné náhodné číslo?

Stroje zatiaľ sú iba poučenými množinami mechanizmov a obvodov, a preto ich nemožno inštruovať, aby bez akejkoľvek pomoci mysleli na náhodné číslo samé. A preto až doteraz a ďalej zapojujeme prírodu alebo ľudí strojmi, aby sme generovali skutočné náhodné číslo. Nebudeme tu diskutovať o tom, ako vygenerovať skutočné náhodné číslo, ale budeme diskutovať o už implementovaných generátoroch náhodných čísel a ich pracovných a slabých stránkach.

Prečo je generovanie skutočného náhodného čísla tak dôležité?

Vyvstáva otázka, prečo sú dôležité generovanie skutočných náhodných čísel a odpoveď na ne je z bezpečnostných dôvodov. Väčšina kryptografických algoritmov je založená na generovaní náhodných čísel, pretože tieto náhodné čísla sa používajú na vytváranie kryptografických kľúčov. Ak generované náhodné čísla nemajú skutočnú náhodnú povahu, spôsobujú to, že všetky tieto kryptografické techniky sú slabšie a tieto kľúče sa dajú relatívne ľahko predvídať. pomocou algoritmu, ktorý bol použitý na vygenerovanie týchto náhodných kľúčov. Toto je najdôležitejší dôvod skutočných náhodných čísel okrem aplikácií, ako je hazard.

Generátor náhodných čísel v jadrách Linuxu:

Téma našej dnešnej diskusie je založená na generátore náhodných čísel Linuxu, na ktorých faktoroch je tento generátor založený a je to skutočne také náhodné číslo alebo je to len ďalšie typicky nespoľahlivé náhodné číslo.

Linux používa generátor pseudonáhodných čísel (PRNG) alebo kryptograficky bezpečný generátor pseudonáhodných čísel (CSPRNG), čo znamená, že na dosiahnutie maximálnej náhodnosti používa zložité matematické vzorce a vlastnosti prostredia. Linux bol prvým OS, ktorý do svojho priestoru jadra zahrnul PRNG. Toto zaviedol Theodore Ts'o v roku 1994.

Linux má tri kategórie generátorov náhodných čísel, / dev / random, / dev / urandom, / dev / arandom. Toto sú všetky tri súbory, do ktorých Linux ukladá náhodné čísla. Náhodné čísla v týchto súboroch sa generujú pomocou environmentálneho šumu z ovládačov zariadení a iných zdrojov. Na zabezpečenie náhodnosti svojich náhodných čísel používa linux tiež entropiu, čo je miera neistoty alebo neporiadku medzi nimi. Manuálnu stránku pre Linux Random Number Generator (RNG) nájdete tiež tu:

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

/ dev / random proti / dev / urandom proti / dev / arandom:

Hlavné rozdiely medzi blokmi / dev / random, / dev / urandom a / dev / arandom sú bloky / dev / random, ak entropia neindikuje dostatočnú náhodnosť, / dev / urandom nikdy neblokuje, aj keď generátor pseudonáhodných čísel nie je úplne nasadený pri štarte a nakoniec / dev / arandom blokuje iba vtedy, keď generátor pseudonáhodných čísel ešte nie je úplne nasadený. Stručne povedané, / dev / random je najbezpečnejší zo všetkých, potom prichádza / dev / arandom a najmenej bezpečný je / dev / urandom. Normálne sa používajú / dev / random a / dev / urandom, pretože / dev / arandom je v mnohých ohľadoch podobný / dev / urandom. Stručne povedané, odhad entropie pre skupinu náhodných čísel sa používa na určenie náhodnosti generovaných čísel. Čím viac entropie je, tým viac náhodnosti sa dosiahne a tým je to lepšie. Aktuálne množstvo entropie a veľkosť jeho entropického poolu sú dostupné na / proc / sys / kernel / random / pomenovaných ako entropy_avail a pool_size, ktoré je možné v termináli zobraziť pomocou príkazov:

cat / proc / sys / kernel / random / entropy_avail

A:

cat / proc / sys / kernel / random / pool_size

Náhodné aj náhodné sa používajú v rôznych scenároch. „Urandom“ sa používa tam, kde neustále existuje potreba náhodných čísel a jeho náhodnosť nie je veľmi dôležitá, zatiaľ čo „náhodný“ sa používa tam, kde existuje problém s bezpečnosťou, a jeho náhodnosť by mala byť spoľahlivá, pretože blokuje výstup náhodných čísel, ak entropia nie je až značka. Aj keď entropia pre urandom (Unlimited Random) nie je o dosť slabšia, odporúča sa použiť random, keď sa vyžaduje väčšia bezpečnosť kvôli možnosti útokov na číslo generované urandom.

Slabé stránky v generátoroch náhodných čísel v systéme Linux

Pre energeticky nezávislý pamäťový hardvér:

Pre linuxové jadrá nie je generátor náhodných čísel vhodný pre zabudovaný hardvér, ako sú smerovače, v ktorých je stav bootovania predvídateľný a zdroj dostatočnej entropie je obmedzený. Pre tento druh hardvéru sa odporúča pred vypnutím uložiť a použiť stav generátora náhodných čísel (RNG), ktorý sa použije pri ďalšom zavedení. V takýchto prípadoch smerovačov môžu útočníci kompromitovať a predpovedať vygenerované náhodné čísla, iba ak majú prístup ku všetkým odkazom smerovača a odpočúvajú jeho komunikačné odkazy alebo ak majú priamy prístup k uloženému stavu RNG zo samotného smerovača.

Pre túto chybu RNG v prípade hardvéru prichádzajú na pomoc generátory entropie tretích strán. Tieto generátory entropie, ako napríklad „haveged“, používajú časovanie medzipamäte procesora, externé zvukové a obrazové vstupné zariadenia na zvýšenie entropie na prijateľnú mieru.

Odhad entropie:

Ako už bolo spomenuté, jadro Linuxu určuje náhodnosť z hľadiska entropie, ale v skutočnosti entropiu nevypočíta zakaždým a namiesto toho používa odhady entropie. Niekoľko výskumov tiež odhalilo, že odhad entropie náhodných čísel použitých v Linuxe nie je vhodný alebo bližší, čo robí celkovú náhodnosť čísel slabšou.

Aj keď v systéme Linux Random Number Generator existujú určité slabiny, je to oveľa lepšia voľba v porovnaní s ostatnými RNG, nezabudnite na prebiehajúce opravy poskytované prispievateľmi a vývojármi systému Linux.

Na záver:

Toto bolo z mojej strany všetko o generátore náhodných čísel v jadre Linuxu. Dobre som sa bavil pri šírení týchto vedomostí s vami. Dúfam, že ste sa vďaka nej dozvedeli niečo nové, a tiež že budete svoje poznatky zdieľať ďalej so svetom. Na záver ďakujem za investíciu času do tohto článku.

Hry Nainštalujte si najnovšiu strategickú hru OpenRA na Ubuntu Linux
Nainštalujte si najnovšiu strategickú hru OpenRA na Ubuntu Linux
OpenRA je herný engine Libre / Free Real Time Strategy, ktorý obnovuje rané hry z Westwoodu, ako napríklad klasické Command & Conquer: Red Alert. Dist...
Hry Nainštalujte si najnovší Dolphin Emulator pre Gamecube a Wii na Linuxe
Nainštalujte si najnovší Dolphin Emulator pre Gamecube a Wii na Linuxe
Emulátor Dolphin vám umožní hrať vybrané hry Gamecube a Wii na osobných počítačoch Linux (PC). Emulátor Dolphin, ktorý je voľne dostupným emulátorom ...
Hry Ako používať GameConqueror Cheat Engine v Linuxe
Ako používať GameConqueror Cheat Engine v Linuxe
Tento článok obsahuje sprievodcu používaním cheatovacieho modulu GameConqueror v systéme Linux. Mnoho používateľov, ktorí hrajú hry v systéme Windows,...