Tôi đã xem qua một blog liên quan đến vấn đề entropy pool và biết rằng có một phần cứng đặc biệt gọi là RNG. Tôi đã đọc trang RNG kernel này nhưng tôi vẫn tự hỏi liệu có cách nào để tìm hiểu xem máy chủ của tôi có hỗ trợ RNG phần cứng hay không.
Tôi đã xem qua một blog liên quan đến vấn đề entropy pool và biết rằng có một phần cứng đặc biệt gọi là RNG. Tôi đã đọc trang RNG kernel này nhưng tôi vẫn tự hỏi liệu có cách nào để tìm hiểu xem máy chủ của tôi có hỗ trợ RNG phần cứng hay không.
Câu trả lời:
Có hai loại RNG phần cứng "thực" có thể là: loại dựa trên CPU và loại dựa trên chipset hoặc loại PCI. (Cũng có một vài RNG phần cứng USB, nhưng tôi nghi ngờ bạn đã nhận thấy một trong số đó ;-)
Sau đây là Linux cụ thể.
Đối với CPU dựa trên CPU, bạn có thể kiểm tra /proc/cpuinfo
các đầu mối, giả sử hạt nhân của bạn đủ mới để phát hiện ra chúng. Đối với CPU Intel, cờ là rdrand
, thông tin thêm ở đây: /unix/43539/what-do-the-flags-in-proc-cpuinfo-mean
Đối với các chipset, nếu bạn đã CONFIG_HW_RANDOM
kích hoạt trong kernel và hỗ trợ của mỗi nhà cung cấp, CONFIG_HW_RANDOM_INTEL
..._AMD
v.v. thì thông báo khởi động của bạn sẽ cho biết liệu có tìm thấy không (ví dụ: "Intel 82802 RNG được phát hiện"). Nếu chúng có mặt dưới dạng các mô-đun, bạn có thể thử ( modprobe intel-rng
) để xem nó có tải không, "Không có thiết bị nào như vậy" biểu thị không có phần cứng được phát hiện. Không phải tất cả các trình điều khiển đều in "RNG được phát hiện" hoặc "không được phát hiện", do đó bạn có thể sẽ đọc các nguồn ( /drivers/char/hw_random/
thư mục của nguồn kernel).
Đối với những người khác, bạn có thể kiểm tra lspci -v
để xem những gì được công nhận.
Để tìm hiểu bạn đã RNG
làm như sau:
1) Liệt kê tất cả các mô-đun có "rng" trong tên của nó:
cat /proc/modules | grep -i rng
2) Nếu bạn có bất kỳ bạn sẽ nhận được một kết quả như thế này
tpm_rng 16384 0 - Live 0xffffff......
3) Đảm bảo bật hoặc tải nó bằng cách sử dụng modprobe
tại thời điểm này:
modprobe tpm_rng
CẬP NHẬT : Liên quan đến bước (1), đối với tôi modprobe -l
không hoạt động trong Ubuntu 16 đó là lý do tại sao tôi đã cố gắng tìm kiếm bên trong "/ Proc / mô-đun" nhưng nếu nó hoạt động với bạn thì không sao .. Gần đây tôi đã tìm kiếm và tìm hiểu tất cả các mô-đun là cư dân bên trong, /lib/modules/$(uname -r)
do đó bạn cũng có thể sử dụng những điều sau đây là tốt hơn:
cat /lib/modules/$(uname -r)/modules.dep | grep -i rng.*.ko
Trên các hạt nhân gần đây, bạn có thể kiểm tra ở đây:
$ cat /sys/devices/virtual/misc/hw_random/rng_current
virtio_rng.0
Nếu tập tin đó tồn tại và không nói không, thì về cơ bản bạn có một món quà rng. (trong trường hợp này, nó là một máy ảo nơi máy chủ cung cấp một nguồn ngẫu nhiên)
Ngoài ra để xem những gì có sẵn (ví dụ này từ một máy intel hiện đại, cũng với rng phần cứng ChaosKey được kết nối)
$ cat /sys/devices/virtual/misc/hw_random/rng_available
ChaosKey-hw-1.0-sw-1.9-001900375346430b20333632 tpm-rng-0
Vì vậy, cả ChaosKey và tpm có sẵn.
Có một số nền tảng thú vị tại https://daniel-lange.com/archives/152-hello-buster.html