Kto by pomyślał, że generowanie losowej liczby byłoby takim bałaganem, powinno być tak samo proste, jak zgadywanie liczby w dowolnym miejscu między danym zakresem. Ale nie jest to tak proste, jak się wydaje, a także do tej pory wszystkie maszyny nie są w stanie samodzielnie wygenerować prawdziwej liczby losowej.
Dlaczego maszyny nie mogą samodzielnie generować prawdziwej liczby losowej?
Maszyny są jeszcze pouczanymi zestawami mechanizmów i obwodów, a zatem nie można ich poinstruować, aby samodzielnie myśleć o losowej liczbie. I dlatego do tej pory i dalej angażowaliśmy naturę lub ludzi z maszynami, aby wygenerować prawdziwą liczbę losową. Nie omówimy tutaj, jak wygenerować prawdziwą liczbę losową, ale omówimy już zaimplementowane generatory liczb losowych oraz ich działanie i słabości.
Dlaczego generowanie prawdziwej liczby losowej jest tak ważne?
Powstaje pytanie, dlaczego generowanie prawdziwych liczb losowych jest ważne, a odpowiedzią na to wynika z obaw związanych z bezpieczeństwem. Większość algorytmów kryptograficznych opiera się na generowaniu liczb losowych, ponieważ te liczby losowe są używane do tworzenia klawiszy kryptograficznych, a jeśli wygenerowane liczby losowe nie są naprawdę losowe, sprawiają, że całe te techniki kryptograficzne są słabsze, a klawisze te można przewidzieć stosunkowo łatwiejsze Korzystanie z algorytmu, który został użyty do generowania tych losowych kluczy. Jest to najważniejszy powód prawdziwych liczb losowych, inne niż aplikacje takie jak hazard.
Generator liczb losowych w jądrach Linux:
Temat naszej dzisiejszej dyskusji oparty jest na generatoru liczb losowych Linux, na których czynniki jest ten generator oparty i czy to naprawdę losowy, czy jest to kolejna zwykle niewiarygodna liczba losowa.
Linux używa pseudo generatora liczb losowych (PRNG) lub kryptograficznie bezpiecznego pseudo losowego generatora liczb (CSPRNG), co oznacza, że używa złożonych formuł matematycznych i właściwości środowiskowych, aby osiągnąć maksymalną losowość. Linux był pierwszym systemem operacyjnym, który obejmował PRNG w przestrzeni jądra. Zostało to wdrożone przez Theodore Ts'O w 1994 roku.
Linux ma trzy kategorie generatorów liczb losowych, /dev /random, /dev /urandom, /dev /arandom. Te trzy to pliki, w których Linux przechowuje liczby losowe. Losowe liczby w tych plikach są generowane przy użyciu szumu środowiskowego z sterowników urządzeń i innych źródeł. Ponadto, aby zapewnić losowość w swoich liczbach losowych, Linux używa entropii, który jest stopniem niepewności lub zaburzenia między nimi. Możesz także znaleźć stronę instruktażową dla generatora liczb losowych Linux (RNG) tutaj:
http: // man7.Org/Linux/Man-Pages/Man4/losowy.4.html
/dev/losowe versus /dev /urandom versus /dev /arandom:
Główne różnice między /dev /losowe, /dev /urandom i /dev /arandom jest to, że /dev /losowe bloki, jeśli entropia nie wskazuje na wystarczającą losowość, /dev /urandom nigdy nie blokuje się, nawet gdy pseudo losowy generator liczby losowych nie jest w pełni zaszczepione po uruchomieniu i wreszcie /dev /arandom blokuje tylko wtedy, gdy pseudo losowy generator liczby nie jest jeszcze w pełni zaszczepiony. Krótko mówiąc, /dev /losowy jest najbezpieczniejszy ze wszystkich, a następnie przychodzi /dev /arandom i najbezpieczniejszy jest /dev /urandom. Zwykle /dev /land i /dev /urandom są używane, ponieważ /dev /arandom pod wieloma względami jest podobny do /dev /urandom. Oszacowanie entropii dla losowej puli liczby w skrócie jest używane do określenia losowości generowanej liczby. Im więcej entropii, tym większa losowość jest osiągana i lepiej jest. Bieżąca ilość entropii i rozmiar jej puli entropii są dostępne odpowiednio na/proc/sys/jądro/losowo/nazwane odpowiednio jako entropy_avail i pula_size, które można wyświetlić w terminalu za pomocą poleceń:
cat/proc/sys/jądro/random/entropy_avail
I:
cat/proc/sys/jądro/random/basen_size
Zarówno urandom, jak i losowe są używane w różnych scenariuszach. „Urandom” jest używany tam, gdzie istnieje stała potrzeba liczb losowych, a jego losowość nie jest zbyt ważna, podczas gdy „losowy” jest używany w przypadku problemu bezpieczeństwa, a jego losowość powinna być wiarygodna, ponieważ blokuje liczby losowe, jeśli entropia nie jest do czasu znak. Chociaż entropia urancka (nieograniczona losowa) nie jest znacznie słabsza, ale zaleca się stosowanie losowe, gdy wymagane jest większe bezpieczeństwo ze względu.
Słabości w generatorach liczb losowych Linuksa
Dla sprzętu do pamięci nieulotnej:
W przypadku jądra Linux generator liczb losowych nie jest dobry dla wbudowanego sprzętu, takiego jak routery, w których stan rozruchowy jest przewidywalny, a źródło wystarczającej liczby entropii jest ograniczone. W przypadku tego rodzaju sprzętu zaleca się zapisanie i użycie stanu generatora liczb losowych (RNG) przed wyłączeniem, który zostanie użyty przy następnym rozruchu. W takich przypadkach routerów atakujący mogą naruszać i przewidzieć wygenerowane liczby losowe, jeśli mają dostęp do wszystkich linków routera i podsłuchują jego łącza komunikacyjne lub jeśli bezpośrednio uzyskali dostęp do zapisanego stanu RNG z samego routera.
W przypadku tej wady RNG w przypadku sprzętu generatory entropii trzeciej przychodzą na ratunek. Te generatory entropii, takie jak „Handged”, używają czasów pamięci podręcznej procesora, zewnętrznych urządzeń wejściowych audio i wideo, aby zwiększyć entropię do dopuszczalnego stopnia.
Oszacowanie entropii:
Jak wspomniano wcześniej, jądro Linux określa losowość pod względem entropii, ale tak naprawdę nie oblicza entropii za każdym razem i zamiast tego używa szacunków entropii. Kilka badań ujawniło również, że oszacowanie entropii liczb losowych stosowanych w Linuksie nie jest odpowiednich lub bliższych szacunków, co sprawia, że ogólna losowość liczb jest słabsza.
Chociaż istnieją pewne słabości w generatorze liczb losowych Linux, ale jest to znacznie lepsza opcja w porównaniu z innymi RNG, nie zapominając o bieżących łatach, które są dostarczane przez współpracowników i programistów Linux.
To wszystko było z mojej strony na temat generatora liczb losowych w jądrze Linux. Dobrze się bawiłem, aby szerzyć z tobą tę wiedzę. Mam nadzieję, że nauczyłeś się przez niego czegoś nowego, a także że podzielisz się wiedzą w dalszej części świata. Wreszcie, dzięki za zainwestowanie czasu w ten artykuł.