Řešení 1:
Váš systém shromažďuje některá „skutečná“ náhodná čísla sledováním různých událostí:síťová aktivita, hardwarový generátor náhodných čísel (pokud je k dispozici; například procesory VIA obvykle mají „skutečný“ generátor náhodných čísel) a tak dále. If je přivádí do oblasti entropie jádra, kterou používá /dev/random. Aplikace, které potřebují nějaké extrémní zabezpečení, mají tendenci používat /dev/random jako zdroj entropie, nebo jinými slovy, zdroj náhodnosti.
Pokud /dev/random dojde dostupná entropie, nebude schopen poskytnout více náhodnosti a aplikace čeká na náhodnost, dokud nebude k dispozici více náhodných věcí. Příklad, který jsem během své kariéry viděl, je, že démon Cyrus IMAP chtěl použít /dev/random pro náhodnost a jeho relace POP chtěly generovat náhodné řetězce v připojeních APOP z /dev/random. V rušném prostředí bylo více pokusů o přihlášení než provozu pro napájení /dev/random -> vše se zastavilo. V tom případě jsem nainstaloval rng-tools a aktivoval rngd, který měl -- který přesunul polonáhodná čísla z /dev/urandom do /dev/random pro případ, že by /dev/random došla "skutečná" entropie.
Řešení 2:
Pokud chcete jednodušší přehled o základním problému:Některé aplikace (například šifrování) potřebují náhodná čísla. Náhodná čísla můžete generovat pomocí algoritmu – ale i když se v jednom smyslu zdají náhodná, v jiném jsou zcela předvídatelná. Například, když vám dám číslice 58209749445923078164062862089986280348253421170679, vypadají docela náhodně. Ale pokud si uvědomíte, že to jsou ve skutečnosti číslice PI, pak byste věděli, že další bude 8.
Pro některé aplikace je to v pořádku, ale pro jiné aplikace (zejména ty související s bezpečností) lidé chtějí skutečnou nepředvídatelnou náhodnost - kterou nelze generovat algoritmem (tj. programem), protože je z definice předvídatelná. To je problém v tom, že váš počítač v podstatě je program, tak jak může získat opravdová náhodná čísla? Odpovědí je měření skutečně náhodných událostí z vnějšího světa – například mezery mezi stisky kláves a jejich použití k vložení skutečné náhodnosti do jinak předvídatelného generátoru náhodných čísel. 'Pool entropie' by se dal považovat za úložiště této náhodnosti, která se vytváří stisky kláves (nebo čehokoli, co se používá) a vyčerpává generováním náhodných čísel.
Řešení 3:
Entropie je odborný termín pro „náhodnost“. Počítače ve skutečnosti entropii negenerují, ale shromažďují ji sledováním věcí, jako jsou změny rychlosti otáčení pevného disku (fyzický jev, který je velmi těžké předvídat kvůli tření atd.) Když chce počítač generovat pseudonáhodná data, nasadí matematický vzorec se skutečnou entropií, kterou zjistil měřením kliknutí myší, variací rotace pevného disku atd. Zhruba řečeno entropy_avail
je míra bitů aktuálně dostupných ke čtení od /dev/random
Než počítač přečte entropii ze svého prostředí, trvá to nějakou dobu, pokud nemá skvělý hardware, jako je hlučná dioda nebo tak něco.
Pokud máte k dispozici 4096 bitů entropie a máte kočku /dev/random
můžete očekávat, že budete moci přečíst 512 bajtů entropie (4096 bitů), než se soubor zablokuje, zatímco čeká na další entropii.
Pokud například „cat /dev/random
“ vaše entropie se zmenší na nulu. Zpočátku získáte 512 bajtů náhodného smetí, ale to se zastaví a postupně uvidíte, jak prosakují další náhodná data.
Takto by lidé /dev/random
neměli používat ačkoli. Normálně vývojáři přečtou malé množství dat, například 128 bitů, a použijí je k vytvoření nějakého druhu algoritmu PRNG. Je zdvořilé nečíst další entropii z /dev/random
než potřebujete, protože jeho budování trvá tak dlouho a je považováno za cenné. Pokud jej tedy nedbale vypustíte cat
Pokud soubor spustíte výše uvedeným způsobem, způsobíte, že ostatní aplikace budou muset číst z /dev/random
Zablokovat. Na jednom systému v práci jsme si všimli, že mnoho kryptografických funkcí přestalo fungovat. Zjistili jsme, že úloha cron volala python skript, který neustále inicializoval ramdom.random()
při každém běhu, který běžel každých pár sekund. Abychom to napravili, přepsali jsme python skript tak, aby běžel jako démon, který se inicializoval pouze jednou, a úloha cron čte data přes XMLRPC, takže nepřestává číst z /dev/random
při spuštění.
Řešení 4:
Soubor entropy_avail pouze pro čtení udává dostupnou entropii. Normálně to bude 4096 (bitů), tedy plný entropypool.
Více si můžete přečíst na:http://linux.die.net/man/4/random