Entropia jest terminem technicznym określającym „Losowość”. Komputery tak naprawdę nie generują entropii, ale gromadzą ją, patrząc na takie rzeczy, jak zmiany prędkości obrotowej dysku twardego (zjawisko fizyczne, które jest bardzo trudne do przewidzenia z powodu tarcia itp.) Gdy komputer chce wygenerować pseudolosowe dane, będzie zaszczep matematyczną formułę z prawdziwą entropią, którą znalazła poprzez pomiar kliknięć myszką, odmian spinów dysku twardego itp. Z grubsza rzecz biorąc, entropy_avail
jest to miara dostępnych obecnie bitów do odczytu/dev/random
Komputer potrzebuje czasu na odczytanie entropii ze swojego środowiska, chyba że ma fajny sprzęt, taki jak głośna dioda czy coś takiego.
Jeśli masz 4096 bitów entropii i kot /dev/random
, możesz spodziewać się, że będziesz w stanie odczytać 512 bajtów entropii (4096 bitów) przed zablokowaniem pliku, gdy będzie on oczekiwał na więcej entropii.
Na przykład, jeśli „ cat /dev/random
”, entropia skurczy się do zera. Na początku otrzymasz 512 bajtów losowych śmieci, ale zatrzyma się i stopniowo zobaczysz kolejne losowe dane.
/dev/random
Jednak ludzie nie powinni tak działać . Zwykle programiści czytają niewielką ilość danych, na przykład 128 bitów, i używają ich do inicjowania pewnego rodzaju algorytmu PRNG. Grzecznie jest nie czytać więcej entropii /dev/random
niż trzeba, ponieważ trwa to tak długo i jest uważane za cenne. Tak więc, jeśli opróżnisz go przez niedbałe cat
podbicie pliku jak wyżej, spowoduje to, że inne aplikacje będą musiały czytać od /dev/random
do bloku. W jednym z działających systemów zauważyliśmy, że wiele funkcji kryptograficznych przestało działać. Odkryliśmy, że zadanie crona wywoływało skrypt Pythona, który ciągle się inicjowałramdom.random()
na każdym biegu, który biegł co kilka sekund. Aby to naprawić, przepisaliśmy skrypt Pythona, tak aby działał jako demon, który został zainicjowany tylko raz, a zadanie cron odczytuje dane przez XMLRPC, aby nie kontynuowało czytania /dev/random
po uruchomieniu.