Tato otázka je docela stará. Ale stále relevantní, takže odpovím. Mnoho CPU dnes přichází s vestavěným hardwarovým generátorem náhodných čísel (RNG). Mnoho systémů také přichází s modulem důvěryhodné platformy (TPM), který také poskytuje RNG. Existují také další možnosti, které lze zakoupit, ale je pravděpodobné, že váš počítač již něco má.
Můžete použít rngd z balíčku rng-utils na většině linuxových distribucí k nasávání více náhodných dat. Například na fedoře 18 vše, co jsem musel udělat, abych povolil seedování z TPM a CPU RNG (instrukce RDRAND) bylo:
# systemctl enable rngd
# systemctl start rngd
Můžete porovnat rychlost s a bez rngd. Je dobré spustit rngd -v -f
z příkazového řádku. To vám ukáže detekované zdroje entropie. Ujistěte se, že jsou načteny všechny potřebné moduly pro podporu vašich zdrojů. Chcete-li používat TPM, je třeba jej aktivovat prostřednictvím nástrojů tpm. aktualizovat :Zde je pěkný návod.
BTW, na internetu jsem četl určité obavy z toho, že TPM RNG se často rozbíjí různými způsoby, ale nečetl jsem nic konkrétního proti RNG nacházejícím se v čipech Intel, AMD a VIA. Použití více než jednoho zdroje by bylo nejlepší, pokud vám opravdu záleží na kvalitě náhodnosti.
urandom je dobrý pro většinu případů použití (kromě někdy během časného spouštění). Většina programů v dnešní době používá urandom místo náhodného. Dokonce i openssl to dělá. Podívejte se na mýty o urandomu a srovnání náhodných rozhraní.
V nedávných Fedoře a RHEL/CentOS rng-tools také podporují jitter entropii. Můžete na nedostatek hardwarových možností nebo pokud mu prostě důvěřujete více než svému hardwaru.
AKTUALIZACE: další možností pro větší entropii je HAVEGED (zpochybněná kvalita). Na virtuálních počítačích existuje kvm/qemu VirtIORNG (doporučeno).
AKTUALIZACE 2: V Linuxu 5.6 jádro dělá svou vlastní jitter entropii.
Na většině systémů Linux /dev/random
je napájen ze skutečné entropie shromážděné prostředím. Pokud váš systém nedoručuje velké množství dat z /dev/random
, pravděpodobně to znamená, že nevytváříte dostatek náhodnosti prostředí, abyste to mohli pohánět.
Nejsem si jistý, proč si myslíte, že /dev/urandom
je „pomalejší“ nebo kvalitnější. Znovu používá vnitřní zásobu entropie ke generování pseudonáhodnosti – čímž je mírně nižší kvalita – ale neblokuje. Obecně platí, že aplikace, které nevyžadují šifrování na vysoké nebo dlouhodobé úrovni, mohou používat /dev/urandom
spolehlivě.
Zkuste chvíli počkat a poté čtěte z /dev/urandom
znovu. Je možné, že jste vyčerpali vnitřní zásobu entropie čtení tolika z /dev/random
, rozbití obou generátorů – umožnit vašemu systému vytvořit více entropie by je mělo doplnit.
Další informace o /dev/random
najdete na Wikipedii a /dev/urandom
.