Rozumiem, że / dev / random jest dobrym źródłem entropii i jest to zwykle używane. Tak jak czytam na GC, przynajmniej w Javie, wydaje się akceptowane, że demon odśmiecania działa w sposób niedeterministyczny . Jeśli to prawda, to dlaczego nie używamy czasu wyrzucania elementów bezużytecznych jako źródła entropii zamiast zmiennej / dev / random?
random
garbage-collection
trzecia
źródło
źródło
Odpowiedzi:
„Nieokreślony” i „losowy” to dwa zupełnie różne pojęcia.
Dokładne działanie śmieciarza nie jest określone i zależy od śmieciarza (zwykle implementowane przez pewnego rodzaju maszynę wirtualną, ale niekoniecznie).
Dlatego nie masz określonego (tj. Deterministycznego) czasu, w którym śmieci będą zbierane.
Jednak każda implementacja będzie podlegać pewnym regułom i istnieje duża szansa, że dwa kolejne uruchomienia tego samego programu będą miały bardzo podobne wzorce wyrzucania elementów bezużytecznych.
Dlatego rzeczywista entropia dostarczona przez moduł wyrzucania elementów bezużytecznych byłaby bardzo niska (i ustalenie, które części można faktycznie użyć jako entropii, będzie trudne).
Dla porównania: A
HashMap
w Javie nie gwarantuje żadnej kolejności pobierania dla swoich członków (w zasadzie dlatego, że zagwarantowanie, że doda koszty ogólne, które w większości przypadków nie są warte zapłaty). Jednak dla danej implementacji i danego zestawu wstawień / usunięć można zdecydowanie obliczyć wynikową kolejność. To, że nie ma gwarancji na dane zamówienie, nie oznacza, że zamówienie jest losowe.źródło
Po pierwsze, musimy uważać, aby nie wpaść w pułapkę rozumowania poprzez manipulację zwykłymi słowami. Na przykład moglibyśmy zapytać, skoro NFA jest „niedeterministycznym automatem skończonym”, dlaczego nie wykorzystamy go do uzyskania liczb losowych? W takim przypadku byłoby tak, ponieważ nie to oznacza „niedeterministyczny” w NFA; w rzeczywistości, gdy symulujemy NFA, na danych wejściowych zachowanie symulacji jest całkowicie deterministyczne.
„Deterministyczny” jest załadowaną frazą. Dla programisty lub informatyka zachowanie niedeterministyczne oznacza po prostu „określenie dokładnego zachowania, o którym trudno pomyśleć”, i zależy od zbyt wielu czynników, w tym wkładu programu.
Nie oznacza to jednak, że nie jest deterministyczne dla osoby zmotywowanej do ataku na kryptosystem. Czasami czynniki środowiskowe i dane wejściowe mogą zostać określone, a powtarzalne wzorce wyłaniają się z zachowania „niedeterministycznego”.
źródło