Jakie źródła entropii są używane przez jądro Linuksa?


14

man 4 random ma bardzo niejasny opis źródeł entropii jądra Linux:

Generator liczb losowych gromadzi hałas otoczenia ze sterowników urządzeń i innych źródeł w puli entropii.

Papierowe transfery Entropy w Linuksowym generatorze liczb losowych również nie są bardziej szczegółowe. Wymienia:

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

Te funkcje pochodzą z random.c, który zawiera następujący komentarz:

Źródła losowości ze środowiska obejmują czasy między klawiaturami, czasy między przerwami z niektórych przerwań oraz inne zdarzenia, które są (a) niedeterministyczne i (b) trudne dla zewnętrznego obserwatora.

W dalszej części znajduje się funkcja add_hwgenerator_randomness(...)wskazująca obsługę sprzętowych generatorów liczb losowych.

Wszystkie te informacje są dość niejasne (lub, w przypadku kodu źródłowego, do głębokiej znajomości jądra Linuksa). Jakie są faktycznie używane źródła entropii i czy jądro Linuksa obsługuje sprzętowe generatory liczb losowych od razu po wyjęciu z pudełka?

Odpowiedzi:


4

Większość towarowego sprzętu komputerowego ma obecnie generator liczb losowych. VIA Semiconductor umieszcza je w swoich procesorach od wielu lat; jądro Linux ma do tego sterownik via-rng. W drivers/char/hw_random/najnowszym drzewie źródeł liczę 34 moduły źródłowe, w tym sterowniki dla sprzętu Intel i AMD oraz dla systemów wyposażonych w urządzenie TPM. Możesz uruchomić demona rng (rngd), aby wypchnąć losowe dane do puli entropii jądra.


To wydaje się być dużą częścią odpowiedzi, której szukałem. Przyjrzę się temu, co tam jest, gdy tylko to zrobię. Wraz z informacjami już zawartymi w pytaniu wydaje się, że jest to wyczerpująca lista źródeł entropii.
Jens Erat,

I zobaczyć, co jest dostępne na konkretnym komputerze cat /sys/devices/virtual/misc/hw_random/rng_available.
hlovdal

0

Tak, obsługuje gotowe sprzętowe generatory entropii. Jest to konieczne w przypadku serwerów SSL o wysokim obciążeniu z dużą liczbą jednoczesnych połączeń inicjowanych na sekundę (Gmail, Facebook, Microsoft itp.). Naprawdę nie jest to konieczne w przypadku serwerów domowych lub małych organizacji. Należy pamiętać, że sprzętowe generatory entropii zwykle używają interfejsów PCI, nic szczególnego, więc można je łatwo obsługiwać. Nie jestem pewien, czy istnieją opatentowane sprzętowe generatory entropii, które wymagają sterowników zamkniętych źródeł, prawdopodobnie nie, ponieważ nie jest to bardzo trudne i niezbyt opłacalna branża (w przeciwieństwie do kart graficznych inaczej).

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


2
Serwery o dużej objętości nie wymagają sprzętowego RNG bardziej niż serwery o małej objętości. Gdy maszyna zostanie zaszczepiona wystarczającą entropią, może nadal działać na PRNG na zawsze (lub przynajmniej przez miliardy lat, co w praktyce jest takie samo). Komputery, które naprawdę potrzebują sprzętowego RNG, to urządzenia wbudowane, które nie mogą bezpiecznie zapisać swojego obecnego stanu RNG po wyłączeniu.
Gilles „SO- przestań być zły”

@Gilles: czy dotyczy to innych systemów niż Linux? Wiem, że Linux to robi, ale nigdy nie słyszałem o * BSD, w tym OS X (ani Windwos).
Jens Erat,

1
@JensErat Nie wiem. Jest łatwy do wdrożenia i bardzo przydatny, więc byłbym zaskoczony, gdyby BSD tego nie zrobiło.
Gilles „SO- przestań być zły”
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.