GNU/Linux >> Znalost Linux >  >> Linux

/dev/random Extrémně pomalé?

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 .


Linux
  1. Jak vygenerovat náhodné heslo v linuxu pomocí /dev/random

  2. Linux:Rozdíl mezi /dev/console, /dev/tty a /dev/tty0?

  3. Jak přenosné jsou /dev/stdin, /dev/stdout a /dev/stderr?

  1. Jak namapovat zařízení /dev/sdX a /dev/mapper/mpathY ze zařízení /dev/dm-Z

  2. Jak kódovat base64 /dev/random nebo /dev/urandom?

  3. DD z /dev/zero do /dev/null...co se vlastně stane

  1. Jak Linux zpracovává více po sobě jdoucích oddělovačů cest (/home////username///soubor)?

  2. Kdy použít /dev/random vs /dev/urandom?

  3. Je špatné propojit /dev/random s /dev/urandom v Linuxu?