Những nguồn entropy nào được sử dụng bởi nhân Linux?


14

man 4 random có một mô tả rất mơ hồ về các nguồn entropy nhân Linux:

Trình tạo số ngẫu nhiên thu thập tiếng ồn môi trường từ trình điều khiển thiết bị và các nguồn khác vào một nhóm entropy.

Việc chuyển Entropy bằng giấy trong Trình tạo số ngẫu nhiên Linux cũng không cụ thể hơn nhiều. Nó liệt kê:

  • add_disk_randomness(),
  • add_input_randomness()
  • add_interrupt_randomness().

Các funcinos là từ random.c, bao gồm nhận xét sau:

Các nguồn ngẫu nhiên từ môi trường bao gồm thời gian giữa các bàn phím, thời gian gián đoạn từ một số ngắt và các sự kiện khác mà cả hai (a) không xác định và (b) khó có thể đo được.

Xa hơn nữa, có một chức năng add_hwgenerator_randomness(...)chỉ ra sự hỗ trợ cho các bộ tạo số ngẫu nhiên phần cứng.

Tất cả những thông tin đó khá mơ hồ (hoặc, trong trường hợp mã nguồn, đòi hỏi kiến ​​thức sâu về nhân Linux để hiểu). Các nguồn entropy thực tế được sử dụng là gì và nhân Linux có hỗ trợ bất kỳ trình tạo số ngẫu nhiên phần cứng nào không?

Câu trả lời:


4

Hầu hết các phần cứng máy tính hàng hóa có một bộ tạo số ngẫu nhiên những ngày này. Bán dẫn VIA đã đưa chúng vào bộ xử lý của họ trong nhiều năm; nhân Linux có trình điều khiển via-rng cho điều đó. Tôi đếm 34 mô-đun nguồn trong drivers/char/hw_random/thư mục trong cây nguồn mới nhất, bao gồm các trình điều khiển cho phần cứng Intel và AMD và cho các hệ thống có thiết bị TPM. Bạn có thể chạy rng daemon (rngd) để đẩy dữ liệu ngẫu nhiên vào nhóm entropy kernel.


Đây dường như là một phần lớn của câu trả lời tôi đang tìm kiếm. Tôi sẽ có một cái nhìn sâu sắc hơn về những gì chứa trong đó ngay khi tôi đi xung quanh để làm như vậy. Cùng với thông tin đã có trong câu hỏi, cảm giác này giống như một danh sách đầy đủ các nguồn entropy.
Jens Erat

Và để xem những gì có sẵn trên một máy tính cụ thể chạy cat /sys/devices/virtual/misc/hw_random/rng_available.
hlovdal

0

Vâng, nó không hỗ trợ máy phát entropy phần cứng ra khỏi hộp. Điều này là cần thiết cho các máy chủ SSL tải cao với nhiều kết nối đồng thời được bắt đầu mỗi giây (Gmail, Facebook, Microsoft, v.v.). Nó thực sự không cần thiết cho các máy chủ gia đình hoặc máy chủ tổ chức nhỏ. Hãy nhớ rằng các trình tạo entropy phần cứng thường sử dụng giao diện PCI, không có gì lạ mắt ở đó, vì vậy nó có thể được hỗ trợ dễ dàng. Không chắc chắn nếu có các máy phát entropy phần cứng độc lập yêu cầu trình điều khiển nguồn đóng, có lẽ là không, vì nó không quá khó và không phải là một ngành có lợi nhuận cao (không giống như card đồ họa).

http://en.wikipedia.org/wiki/Hardware_random_number_generator


2
Máy chủ khối lượng lớn không yêu cầu RNG phần cứng nhiều hơn máy chủ khối lượng thấp. Khi máy đã được gieo đủ entropy, nó có thể tiếp tục chạy trên PRNG mãi mãi (hoặc ít nhất là trong hàng tỷ năm, điều này cũng tương tự trong thực tế). Loại máy tính thực sự cần RNG phần cứng là các thiết bị nhúng không thể lưu trạng thái RNG hiện tại của chúng một cách an toàn khi chúng tắt nguồn.
Gilles 'SO- ngừng trở nên xấu xa'

@Gilles: điều này có hợp lệ cho các hệ thống khác ngoài Linux không? Tôi biết Linux làm điều này, nhưng chưa bao giờ nghe nói về * BSD bao gồm cả OS X (cũng không phải Windwos) làm như vậy.
Jens Erat

1
@JensErat Tôi không biết. Thật dễ thực hiện và rất hữu ích, vì vậy tôi rất ngạc nhiên nếu BSD không làm điều đó.
Gilles 'SO- ngừng trở nên xấu xa'
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.