Jak komputery generują liczby losowe

Komputery generują losowe liczby dla wszystkiego, od kryptografii po gry wideo. Istnieją dwie kategorie takich liczb: "prawdziwe" liczby losowe oraz liczby pseudolosowe.

Generator liczb losowych / Fot. Jcomp, Freepik.com

Generator liczb losowych / Fot. Jcomp, Freepik.com

Różnica pomiędzy prawdziwymi a pseudolosowymi liczbami jest ważna dla bezpieczeństwa systemów szyfrujących. Generator liczb losowych znajduje się natomiast w każdym komputerze.

Liczby losowe były używane przez wiele tysięcy lat. Niezależnie od tego, czy rzucamy monetą, czy kostką, celem jest pozostawienie wyniku końcowego losowemu przypadkowi. Generator liczb losowych w komputerze ma podobną rolę - zapewnia nieprzewidywalne, losowe wyniki.

Zobacz również:

  • NASK przetestuje nową polską technologię kwantową
  • Wyjaśniamy kluczowe różnice pomiędzy USB3 i USB4

Do czego służy generator liczb losowych

Generator liczb losowych przydaje się do różnych celów. Oprócz oczywistych zastosowań, takich jak generowanie liczb na potrzeby gier hazardowych lub tworzenie nieprzewidywalnych wyników w grze komputerowej, losowość jest ważna w kryptografii.

Kryptografia wymaga liczb, których atakujący nie może odgadnąć. Nie możemy natomiast używać tych samych liczb w kółko. Chcemy generować je w bardzo nieprzewidywalny sposób, aby cyberprzestępca nie mógł ich odgadnąć. Liczby losowe są niezbędne do bezpiecznego szyfrowania, niezależnie od tego, czy szyfrujemy własne pliki, czy po prostu korzystamy z witryny "https" w internecie (połączenie szyfrowane).

Prawdziwe liczby losowe

Skąd bierze się "losowość" w przypadku komputerów i ich generatorów? Jeśli bowiem to tylko fragment kodu, liczby generowane przez komputer mogą być przewidywalne, prawda?

Liczby losowe dzielimy na dwa typy, w zależności od ich generowania. Są to prawdziwe liczby losowe oraz liczby pseudolosowe. Aby wygenerować liczbę prawdziwą, komputer mierzy pewien rodzaj zjawiska fizycznego, które ma miejsce poza nim. Np. komputer mógłby mierzyć rozpad promieniotwórczy atomu. Zgodnie z teorią kwantową, nie ma sposoby na to, aby wiedzieć na pewno, kiedy nastąpi taki rozpad, więc jest to zasadniczo czysta losowość wszechświata. Atakujący, próbujący złamać dany kod, nie byłby w stanie przewidzieć, kiedy nastąpi rozpad promieniotwórczy, więc nie byłby też w stanie przewidzieć danej losowej wartości. Inne przykłady wyliczania liczb losowych mogą obejmować np. hałas atmosferyczny lub dokładny czas naciskania klawiszy na klawiaturze jako źródło nieprzewidywalnych danych.

Jeśli np. komputer zapisze, że nacisnęliśmy konkretny klawisz dokładnie 0,344223 sekundy po godzinie 15:00, ma wystarczająco dużo konkretnych danych, aby stworzyć swoje źródło entropii. Dzięki temu może on wygenerować następnie prawdziwe losowe liczby.

Liczby pseudolosowe

To alternatywa dla prawdziwych liczb losowych. Komputer może użyć wartości początkowej i algorytmu do generowania liczb losowych, które wydają się przypadkowe, ale w rzeczywistości są przewidywalne. Do realizacji takiego celu komputer nie opiera się na źródłach zewnętrznych - korzysta jedynie z przygotowanego wcześniej algorytmu.

Liczby pseudolosowe też są przydatne. Dla przykładu, jeśli gramy w grę na komputerze, nie ma dla nas znaczenia czy zdarzenia, które mają miejsce w grze, są spowodowane prawdziwymi czy pseudolosowymi liczbami. Jeśli natomiast chcemy szyfrować pliki na dysku, wówczas nie chcemy używać liczb pseudolosowych, które cyberprzestępca mógłby spróbować odgadnąć.

Generator liczb losowych a problemy z zaufaniem

Kilka lat temu było dość głośno o tym, co zapewnił sprzętowy układ Intela do generowania liczb losowych, znany jako RdRand. Był to układ wykorzystujący źródło entropii w procesorze i dostarczający losowe liczby do oprogramowania, gdy pojawiało się takie żądanie.

Problem polegał jednak na tym, że generator liczb losowych jest swojego rodzaju czarną skrzynką i nie wiadomo, co dokładnie się w nim dzieje. Gdyby RdRand zawierał backdoora jakiejś organizacji rządowej, władze byłyby w stanie złamać klucze szyfrujące, które zostały wygenerowane tylko na podstawie danych dostarczanych przez wspomniany generator.

W grudniu 2013 r. programiści FreeBSD usunęli wsparcie dla RdRand, tłumacząc że nie jest to zaufane źródło do generowania liczb losowych. Warto dodać, że Brian Krzanich, będący wówczas na stanowisku CEO w Intelu, brał udział w AMA (Ask Me Anything) w serwisie Reddit i nie odpowiedział na pytania dotyczące RdRand.

Oczywiście problem z zaufaniem do generatorów nie dotyczył tylko chipów Intela. Developerzy FreeBSD zwracali również uwagę na podobne problemy z chipami Via. Pojawiły się kontrowersje związane z tym, czy liczby generowane przez sprzętowe układy są rzeczywiście losowe, czy nie - i czy można im ufać.

W celu komercyjnej reprodukcji treści Computerworld należy zakupić licencję. Skontaktuj się z naszym partnerem, YGS Group, pod adresem [email protected]

TOP 200