Generator liczb pseudolosowych - Google

Generator liczb pseudolosowych

Z Wikipedii

(Przekierowano z Liczba pseudolosowa)
Skocz do: nawigacji, szukaj

Generator liczb pseudolosowych (Pseudo-Random Number Generator, lub PRNG) to program lub podprogram, który na podstawie niewielkiej ilości informacji (ziarno, zarodek, ang. seed) generuje deterministycznie ciąg bitów, który pod pewnymi względami jest nieodróżnialny od ciągu uzyskanego z prawdziwie losowego źródła.

Generatory liczb pseudolosowych nie generują ciągów prawdziwie losowych – generator inicjowany ziarnem, które może przyjąć k różnych wartości, jest w stanie wyprodukować co najwyżej k różnych ciągów liczb. Co więcej, ponieważ rozmiar zmiennych reprezentujących wewnętrzny stan generatora jest ograniczony (zwykle decyzją programisty, do kilkudziesięciu lub kilkuset bitów; a rzadziej, po prostu rozmiarem pamięci komputera), i ponieważ w związku z tym może on znajdować się tylko w ograniczonej liczbie stanów, bez dostarczania nowych danych z zewnątrz musi ewentualnie dokonać pełnego cyklu i zacząć generować te same wartości. Teoretyczny limit długości cyklu wyrażony jest przez 2n, gdzie n to liczba bitów przeznaczonych na przechowywanie stanu wewnętrznego. W praktyce, większość generatorów ma znacznie krótsze okresy.

Do wielu zastosowań, opisany powyżej rodzaj deterministycznej pseudolosowości jest w zupełności wystarczający. W grach komputerowych czy algorytmach probabilistycznych (takich jak np. całkowanie Monte Carlo) potrzebne jest jedynie źródło wartości o cechach przybliżonych do liczb prawdziwie losowych, chociaż jakość losowości może być decydująca dla dokładności obliczeń. Dlatego przy zastosowaniu każdego nowego generatora do celów obliczeń numerycznych należy sprawdzić jego własności statystyczne. W przypadku skorzystania z jednego z dobrze zbadanych generatorów można czasem bezpośrednio obliczyć długość cyklu, a pozostałe właściwości (jak np. równomierność rozkładu) są najczęściej znane. Można też skorzystać z jednego ze standardowych testów (test pokerowy, test serii itp).

Spis treści

[edytuj] Zastosowanie w kryptografii

Szczególną klasę PRNG stanowią generatory uznane za bezpieczne do zastosowań kryptograficznych. Kryptografia opiera się na generatorach liczb pseudolosowych przede wszystkim w celu tworzenia unikalnych kluczy stałych oraz sesyjnych. Ze względu na fakt, że bezpieczeństwo komunikacji zależy od jakości klucza, od implementacji PRNG stosowanych w takich celach oczekuje się między innymi, że:

  • Generowane wartoÅ›ci bÄ™dÄ… każdorazowo praktycznie nieprzewidywalne dla osób postronnych (np. przez wykorzystanie odpowiednich źródeÅ‚ danych przy tworzeniu seeda).
  • Nie bÄ™dzie możliwe ustalenie ziarna lub stanu wewnÄ™trznego generatora na podstawie obserwacji dowolnie dÅ‚ugiego ciÄ…gu wygenerowanych bitów.
  • Znajomość dowolnej liczby wczeÅ›niej wygenerowanych bitów nie bÄ™dzie wystarczaÅ‚a, by odgadnąć dowolny przyszÅ‚y bit z prawdopodobieÅ„stwem istotnie wyższym od \begin{matrix}\frac 1 2\end{matrix}.
  • Dla wszystkich możliwych wartoÅ›ci ziarna, zachowana bÄ™dzie pewna minimalna, dopasowana do zastosowania dÅ‚ugość cyklu PRNG (aby uniknąć ponownego wykorzystania takiego samego klucza).

[edytuj] Proste generatory

Uproszczony liniowy generator kongruencyjny (Linear Congruential Generator) określony jest następującym algorytmem (a, b, i m to odpowiednio dobrane znane stałe):

stan początkowy to wartość ziarna
żeby wygenerować bit:
\mbox{nowy stan} = a \times \mbox{stary stan} + b \mod m
\mbox{wygenerowany bit} = \mbox{nowy stan} \mod 2

Generator ten nie jest bezpieczny - dla pewnych kombinacji parametrów jest prawie losowy, dla innych bardzo szybko staje się okresowy. Dodatkowo, znane są ogólne metody obliczania parametrów i przewidywania zachowania takich PRNG na podstawie obserwacji wyników.

[edytuj] Generatory kryptograficzne

Do budowy PRNG na potrzeby kryptografii najczęściej używa się iteracyjnych wywołań kryptograficznie bezpiecznej funkcji haszującej typu MD5 lub SHA-1, albo stosuje się w podobny sposób sprawdzone szyfry strumieniowe lub blokowe. Aby zapewnić nieprzewidywalność wyników, do okresowej (re-)inicjalizacji takiego PRNG używa się trudne do przewidzenia zdarzenia zewnętrzne, takie jak interwały aktywności wejścia-wyjścia w systemie komputerowym, fluktuacje temperatury procesora lub płyty głównej, albo sygnał z dedykowanych, sprzętowych generatorów szumu uznawanego za prawdziwie niedeterministyczny.

Spośród używanych algorytmów zakwalifikowanych do tej kategorii, na wyróżnienie zasługuje Blum Blum Shub. Zostało wykazane, iż złamanie tego PRNG jest przynajmniej tak samo trudne jak zadanie faktoryzacji iloczynów dużych liczb pierwszych. Jest jednak mniej popularny ze względu na relatywnie niską wydajność w porównaniu z alternatywami.

[edytuj] Implementacja w C

W bibliotece standardowej C zaimplementowane zostały dwie funkcje do obsługi generatora liczb pseudolosowych (nie nadają się do zastosowań kryptograficznych):

  • void srand(unsigned seed) - ustawia argument seed jako ziarno
  • int rand() - zwraca liczbÄ™ pseudolosowÄ… z zakresu pomiÄ™dzy 0 a RAND_MAX

[edytuj] Zobacz też

[edytuj] Linki zewnętrzne


Rok 2008 rokiem Rodzicielstwa Zastępczego
Sejm ustanowił rok 2008 Rokiem Rodzicielstwa Zastępczego. Za podjęciem uchwały w tej sprawie opowiedziało się w środę 397 posłów, nikt nie był przeciwny, trzy osoby wstrzymały się od głosu.
Sejm za przyjęciem Chorwacji i Albanii do NATO
Sejm zgodził się w środę na ratyfikowanie przez prezydenta protokołów do Traktatu Północnoatlantyckiego w sprawie przystąpienia do NATO Albanii i Chorwacji.
Gorzów: wystawa z okazji 450-lecia Poczty Polskiej
"Poczta jeniecka - jedyne okno na świat" - to tytuł wystawy, którą od piątku będzie można obejrzeć w Gorzowie. Ekspozycję z okazji jubileuszu 450-lecia Poczty Polskiej przygotowała tamtejsza poczta główna - poinformowała Anna Wlaźlak z Centrum Poczty Oddział Rejonowy w Gorzowie Wlkp.
Tragedia w szpitalu - chory na schizofrenię zamordował 73-latkę
Policja i prokuratura wyjaśniają okoliczności zabójstwa 73-letniej pacjentki w szpitalu w Grajewie (Podlaskie) przez chorego na schizofrenię innego pacjenta - poinformował rzecznik podlaskiej policji Jacek Dobrzyński,
"Referendum byłoby najuczciwsze"
Prezydent uznał, że najuczciwszą metodą rozwiązania problemu służby zdrowia będzie zapytanie obywateli, czy chcą prywatyzacji - powiedział sekretarz stanu w Kancelarii Prezydenta Michał Kamiński.
Linki: Strona g³ówna