Skąd mam wiedzieć, czy mój komputer ma obsługę sprzętu RNG?

11

Natknąłem się na blog dotyczący problemu z pulą entropii i dowiedziałem się, że istnieje specjalny sprzęt o nazwie RNG. Przeczytałem tę stronę RNG jądra, ale wciąż zastanawiam się, czy istnieje sposób, aby dowiedzieć się, czy mój serwer obsługuje sprzętowy RNG, czy nie.

Allan Ruin
źródło

Odpowiedzi:

8

Istnieją dwa prawdopodobne typy „prawdziwego” sprzętowego RNG: procesorowy i chipset lub PCI. (Jest też kilka sprzętowych RNG USB, ale podejrzewam, że zauważyłeś jeden z nich ;-)

Poniżej przedstawiono specyfikę systemu Linux.

W przypadku procesorów możesz sprawdzić /proc/cpuinfowskazówki, zakładając, że twoje jądro jest wystarczająco nowe, aby je wykryć. W przypadku procesorów Intel flagą jest rdrand, więcej informacji tutaj: /unix/43539/what-do-the-flags-in-proc-cpuinfo-mean

W przypadku chipsetów, jeśli CONFIG_HW_RANDOMwłączyłeś w jądrze i obsługę poszczególnych dostawców CONFIG_HW_RANDOM_INTEL ..._AMDitp., To komunikaty rozruchowe powinny wskazywać, czy zostały znalezione (np. „Wykryto Intel 82802 RNG”). Jeśli są obecne jako moduły, możesz spróbować ( modprobe intel-rng) sprawdzić, czy się ładuje, „Brak takiego urządzenia” oznacza brak wykrytego sprzętu. Nie wszystkie sterowniki konsekwentnie drukują komunikat „Wykryto RNG” lub „Nie wykryto”, więc możesz skończyć z czytaniem źródeł ( /drivers/char/hw_random/katalog źródła jądra).

W przypadku innych możesz sprawdzić, lspci -vco zostało rozpoznane.

pan. spuratic
źródło
1

Aby się dowiedzieć, RNGwykonaj następujące czynności:

1) Wymień wszystkie moduły mające w nazwie „rng”:

cat /proc/modules | grep -i rng

2) Jeśli masz, otrzymasz taki wynik

tpm_rng 16384 0 - Live 0xffffff......

3) Pamiętaj, aby włączyć lub załadować go za pomocą modprobe:

modprobe tpm_rng

AKTUALIZACJA : Jeśli chodzi o krok (1), dla mnie modprobe -lnie działał w Ubuntu 16, dlatego starałem się szukać wewnątrz „/ proc / modules”, ale jeśli to działa z tobą, to jest w porządku. Ostatnio szukałem i poznałem wszystkie moduły znajdują się w środku, /lib/modules/$(uname -r)więc możesz również użyć następujących, co jest lepsze:

cat /lib/modules/$(uname -r)/modules.dep | grep -i rng.*.ko
Muhammad Soliman
źródło
1

W najnowszych jądrach możesz sprawdzić tutaj:

$ cat /sys/devices/virtual/misc/hw_random/rng_current 
virtio_rng.0

Jeśli ten plik istnieje i nie zawiera napisu „brak”, oznacza to, że w zasadzie masz plik rng. (w tym przypadku jest to maszyna wirtualna, na której host zapewnia losowe źródło)

Również, aby zobaczyć, co jest dostępne (ten przykład z nowoczesnej maszyny wywiadowczej, również z podłączonym sprzętowym rng ChaosKey)

$ cat /sys/devices/virtual/misc/hw_random/rng_available 
ChaosKey-hw-1.0-sw-1.9-001900375346430b20333632 tpm-rng-0 

Dostępne są więc zarówno ChaosKey, jak i tpm.

Ciekawe tło można znaleźć na stronie https://daniel-lange.com/archives/152-hello-buster.html

Tim Bray
źródło