Como posso saber se minha máquina possui suporte de hardware RNG?

11

Me deparei com um blog sobre o problema do pool de entropia e descobri que há um hardware especial chamado RNG. Eu li esta página RNG do kernel , mas ainda me pergunto se existe uma maneira de descobrir se meu servidor suporta RNG de hardware ou não.

allan ruin
fonte

Respostas:

8

Existem dois tipos prováveis ​​de RNG de hardware "real": um baseado em CPU e um chipset ou PCI. (Também existem alguns RNGs de hardware USB, mas eu suspeito que você tenha notado um deles ;-)

A seguir, é específico do Linux.

Para os baseados em CPU, você pode procurar /proc/cpuinfopor pistas, assumindo que seu kernel é novo o suficiente para detectá-las. Para CPUs Intel, o sinalizador é rdrand: mais informações aqui: /unix/43539/what-do-the-flags-in-proc-cpuinfo-mean

Para chipset, se você CONFIG_HW_RANDOMativou no kernel e no suporte por fornecedor, CONFIG_HW_RANDOM_INTEL ..._AMDetc., suas mensagens de inicialização devem indicar se alguma foi encontrada (por exemplo, "Intel 82802 RNG detectado"). Se eles estiverem presentes como módulos, você pode tentar ( modprobe intel-rng) para ver se ele carrega, "Não existe esse dispositivo" indica que não há hardware detectado. Nem todos os drivers sempre imprimem "RNG detectado" ou "não detectado"; portanto, você pode acabar lendo as fontes ( /drivers/char/hw_random/diretório da fonte do kernel).

Para outros, você pode verificar o lspci -vque é reconhecido.

mr.spuratic
fonte
1

Para descobrir, RNGfaça o seguinte:

1) Liste todos os módulos com "rng" em seu nome:

cat /proc/modules | grep -i rng

2) Se você tiver algum, obterá um resultado como este

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

3) Certifique-se de habilitá-lo ou carregá-lo usando modprobeagora:

modprobe tpm_rng

ATUALIZAÇÃO : Em relação à etapa (1), para mim modprobe -lnão estava funcionando no ubuntu 16, é por isso que tentei procurar dentro de "/ proc / modules", mas se funciona com você, tudo bem. Recentemente, pesquisei e conheço todos os módulos são residentes dentro, /lib/modules/$(uname -r)então você também pode usar o seguinte, o que é melhor:

cat /lib/modules/$(uname -r)/modules.dep | grep -i rng.*.ko
Muhammad Soliman
fonte
1

Nos kernels recentes, você pode conferir aqui:

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

Se esse arquivo existe e não diz nenhum, basicamente você tem um presente deng. (nesse caso, é uma máquina virtual em que o host fornece uma fonte aleatória)

Também para ver o que está disponível (este exemplo de uma máquina intel moderna, também com um rng de hardware ChaosKey conectado)

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

Portanto, o ChaosKey e o tpm estão disponíveis.

Há algumas informações interessantes em https://daniel-lange.com/archives/152-hello-buster.html

Tim Bray
fonte