¿Cómo puedo saber si mi máquina tiene soporte de hardware RNG?

11

Encontré un blog sobre el problema del grupo de entropía y descubrí que hay un hardware especial llamado RNG. He leído esta página de RNG del kernel , pero todavía me pregunto si hay una manera de averiguar si mi servidor admite RNG de hardware o no.

allan ruin
fuente

Respuestas:

8

Hay dos tipos probables de RNG de hardware "real": uno basado en CPU y un conjunto de chips o PCI. (También hay algunos RNG de hardware USB, pero sospecho que habrás notado uno de esos ;-)

Lo siguiente es específico de Linux.

Para los basados ​​en CPU, puede buscar /proc/cpuinfopistas, suponiendo que su núcleo sea lo suficientemente nuevo como para detectarlos. Para las CPU Intel, la bandera es rdrand, más información aquí: /unix/43539/what-do-the-flags-in-proc-cpuinfo-mean

Para los conjuntos de chips, si ha CONFIG_HW_RANDOMhabilitado en su núcleo y el soporte por proveedor, CONFIG_HW_RANDOM_INTEL ..._AMDetc., sus mensajes de arranque deberían indicar si se encontró alguno (por ejemplo, "Intel 82802 RNG detectado"). Si están presentes como módulos, puede probar ( modprobe intel-rng) para ver si se carga, "No existe tal dispositivo" indica que no se detectó hardware. No todos los controladores imprimen constantemente "RNG detectado" o "no detectado", por lo que puede terminar leyendo las fuentes ( /drivers/char/hw_random/directorio de la fuente del núcleo).

Para otros, puede verificar lspci -vqué se reconoce.

Sr. púrpura
fuente
1

Para descubrir que tienes que RNGhacer lo siguiente:

1) Lista todos los módulos que tienen "rng" en su nombre:

cat /proc/modules | grep -i rng

2) Si tienes alguno obtendrás un resultado como este

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

3) Asegúrese de habilitarlo o cargarlo usando modprobeen este momento:

modprobe tpm_rng

ACTUALIZACIÓN : Con respecto al paso (1), para mí modprobe -lno funcionaba en ubuntu 16, por eso traté de buscar dentro de "/ proc / modules", pero si funciona con usted, entonces está bien. Recientemente he buscado y he llegado a conocer todos los módulos residen en el interior, /lib/modules/$(uname -r)por lo que también puede usar lo siguiente, que es mejor:

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

En núcleos recientes, puede verificar aquí:

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

Si ese archivo existe y no dice ninguno, entonces básicamente tienes un presente rng. (en este caso, es una máquina virtual donde el host proporciona una fuente aleatoria)

También para ver lo que está disponible (este ejemplo de una máquina moderna de Intel, también con un hardware ChaosKey conectado)

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

Entonces, tanto ChaosKey como tpm están disponibles.

Hay algunos antecedentes interesantes en https://daniel-lange.com/archives/152-hello-buster.html

Tim Bray
fuente