Comment savoir si ma machine est compatible avec le matériel RNG?

11

Je suis tombé sur un blog concernant le problème du pool d'entropie et j'ai appris qu'il existe un matériel spécial appelé RNG. J'ai lu cette page RNG du noyau mais je me demande toujours s'il existe un moyen de savoir si mon serveur prend en charge le RNG matériel ou non.

ruine d'Allan
la source

Réponses:

8

Il existe deux types probables de RNG matériel "réel": un RNG basé sur CPU, et un chipset ou PCI. (Il y a aussi quelques RNG matériels USB, mais je suppose que vous en auriez remarqué un ;-)

Ce qui suit est spécifique à Linux.

Pour ceux basés sur le CPU, vous pouvez vérifier les /proc/cpuinfoindices, en supposant que votre noyau est suffisamment nouveau pour les détecter. Pour les processeurs Intel, le drapeau est rdrand, plus d'informations ici: /unix/43539/what-do-the-flags-in-proc-cpuinfo-mean

Pour les chipsets, si vous avez CONFIG_HW_RANDOMactivé votre noyau et le support par fournisseur, CONFIG_HW_RANDOM_INTEL ..._AMDetc., vos messages de démarrage doivent indiquer s’ils ont été trouvés (par exemple, "Intel 82802 RNG détecté"). S'ils sont présents sous forme de modules, vous pouvez essayer ( modprobe intel-rng) pour voir s'il se charge, «Aucun périphérique de ce type» n'indique aucun matériel détecté. Tous les pilotes n'impriment pas systématiquement «RNG détecté» ou «non détecté», vous pouvez donc finir par lire les sources ( /drivers/char/hw_random/répertoire de la source du noyau).

Pour les autres, vous pouvez vérifier lspci -vce qui est reconnu.

Mr Spuratic
la source
1

Pour savoir que vous devez RNGprocéder comme suit:

1) Liste tous les modules ayant "rng" dans son nom:

cat /proc/modules | grep -i rng

2) Si vous en avez, vous obtiendrez un résultat comme celui-ci

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

3) Assurez-vous de l'activer ou de le charger en utilisant modprobeà ce moment:

modprobe tpm_rng

MISE À JOUR : En ce qui concerne l'étape (1), pour moi modprobe -lne fonctionnait pas dans Ubuntu 16 c'est pourquoi j'ai essayé de chercher à l'intérieur de "/ proc / modules" mais si cela fonctionne avec vous, alors ça va. Récemment, j'ai cherché et j'ai appris à connaître tous les modules résident à l'intérieur de /lib/modules/$(uname -r)sorte que vous pouvez également utiliser ce qui est préférable:

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

Sur les noyaux récents, vous pouvez vérifier ici:

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

Si ce fichier existe et ne dit rien, alors en gros vous avez un rng présent. (dans ce cas, il s'agit d'une machine virtuelle où l'hôte fournit une source aléatoire)

Voir également ce qui est disponible (cet exemple d'une machine Intel moderne, également avec un matériel ChaosKey connecté)

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

Ainsi, le ChaosKey et le tpm sont disponibles.

Il y a des informations intéressantes sur https://daniel-lange.com/archives/152-hello-buster.html

Tim Bray
la source