Bagaimana saya bisa tahu apakah mesin saya memiliki dukungan perangkat keras RNG?

11

Saya menemukan sebuah blog tentang masalah kumpulan entropi dan mengetahui bahwa ada perangkat keras khusus yang disebut RNG. Saya telah membaca halaman RNG kernel ini tetapi saya masih bertanya-tanya apakah ada cara untuk mengetahui apakah server saya mendukung perangkat keras RNG atau tidak.

allan kehancuran
sumber

Jawaban:

8

Ada dua jenis RNG perangkat keras "nyata": yang berbasis CPU, dan yang berbasis chipset atau PCI. (Ada juga beberapa perangkat keras USB RNG, tapi saya kira Anda akan memperhatikan salah satu dari itu ;-)

Berikut ini adalah spesifik Linux.

Untuk yang berbasis CPU, Anda dapat memeriksa /proc/cpuinfopetunjuk, dengan asumsi kernel Anda cukup baru untuk mendeteksi mereka. Untuk Intel CPU, flagnya adalah rdrand, info lebih lanjut di sini: /unix/43539/what-do-the-flags-in-proc-cpuinfo-mean

Untuk chipset, jika Anda telah CONFIG_HW_RANDOMmengaktifkan kernel dan dukungan per-vendor, CONFIG_HW_RANDOM_INTEL ..._AMDdll. Maka pesan booting Anda akan menunjukkan jika ada yang ditemukan (mis. "Intel 82802 RNG terdeteksi"). Jika mereka hadir sebagai modul Anda dapat mencoba ( modprobe intel-rng) untuk melihat apakah itu memuat, "Tidak ada perangkat seperti itu" menunjukkan tidak ada perangkat keras yang terdeteksi. Tidak semua driver secara konsisten mencetak "RNG terdeteksi" atau "tidak terdeteksi", sehingga Anda dapat membaca sumber ( /drivers/char/hw_random/direktori sumber kernel).

Untuk yang lain, Anda dapat memeriksa lspci -vuntuk melihat apa yang dikenali.

mr.ururat
sumber
1

Untuk mengetahuinya Anda telah RNGmelakukan hal berikut:

1) Daftar semua modul yang memiliki "rng" dalam namanya:

cat /proc/modules | grep -i rng

2) Jika Anda punya, Anda akan mendapatkan hasil seperti ini

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

3) Pastikan untuk mengaktifkan atau memuatnya menggunakan modprobesaat ini:

modprobe tpm_rng

UPDATE : Mengenai langkah (1), bagi saya modprobe -ltidak bekerja di ubuntu 16 itu sebabnya saya mencoba mencari di dalam "/ proc / modules" tetapi jika itu bekerja dengan Anda maka tidak apa-apa .. Baru-baru ini saya mencari dan mengenal semua modul berada di dalam /lib/modules/$(uname -r)sehingga Anda juga dapat menggunakan yang berikut ini yang lebih baik:

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

Pada kernel terbaru, Anda dapat memeriksa di sini:

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

Jika file itu ada dan tidak mengatakan tidak ada, maka pada dasarnya Anda memiliki hadiah rng. (dalam hal ini, ini adalah mesin virtual tempat host menyediakan sumber acak)

Juga untuk melihat apa yang tersedia (contoh ini dari mesin intel modern, juga dengan perangkat keras ChaosKey yang terhubung)

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

Jadi ChaosKey dan tpm tersedia.

Ada beberapa latar belakang yang menarik di https://daniel-lange.com/archives/152-hello-buster.html

Tim Bray
sumber