Generator liczb losowych
Wygenerować numery losowe w określonym zakresie dla statystycznego pobierania próbek i symulacji.
Generuj numery losowe
Spis treści
Rodzaje generatorów liczb losowych
Generatory liczb losowych (RNG) są podstawowymi składnikami w różnych dziedzinach, od kryptografii i bezpieczeństwa do symulacji naukowych i gier. Zrozumienie różnych typów i ich cech ma kluczowe znaczenie dla wyboru odpowiedniej metody dla Twoich szczególnych potrzeb.
Prawdziwe generatory liczb losowych (TRNGs)
Prawdziwi generatorzy liczb losowych czerpią przypadkowość z procesów fizycznych, które z natury są nieprzewidywalne. Generatory te wytwarzają sekwencje, których teoretycznie nie da się przewidzieć, nawet przy pełnej znajomości algorytmu generującego i poprzednich wartości.
Fizyczne źródła entropii
- Hałas atmosferyczny
- Rozpad promieniotwórczy
- Hałas termiczny
- Zjawiska kwantowe (rozdzielanie fotonów)
- Elektroniczny hałas i zachowanie obwodu
Rodzaje wdrażania TRNG
- Generatory liczb losowych sprzętu
- Generatory liczb losowych kwantowych (QRNG)
- Generatory oparte na hałasie
- Generatory oscylatorów działających na zasadzie bezwładności
- Generatory gazowe
TRNG są niezbędne dla zastosowań wymagających najwyższego poziomu bezpieczeństwa i nieprzewidywalności, takich jak generowanie kluczy kryptograficznych, bezpieczna komunikacja i systemy hazardowe o wysokich stawkach. Zazwyczaj jednak mają wolniejsze wskaźniki wytwarzania energii i mogą być droższe do wdrożenia.
- Źródło hałasu (zapewnia entropię)
- Digitizer (konwertuje sygnały analogowe na cyfrowe)
- Conditioner / extractor (poprawia jakość losowości)
- Badania lekarskie (weryfikuje właściwe działanie)
Pseudorandom Number Generators (PRNG)
Pseudorandom Number Generators używa algorytmów deterministycznych do generowania sekwencji liczb, które wydają się losowe. Chociaż nie są one naprawdę losowe, są one zaprojektowane, aby przejść różne testy statystyczne dla losowości i są odpowiednie dla wielu zastosowań.
Wspólne PRNG Rodzaje
- Linear Congreruential Generators (LCG)
- Mersenne Twister
- Generatory zmiany biegów
- Generatory wieloskładnikowe
- Generatory typu Well-Equidured Linear
Charakterystyka PRNG
- Deterministyczne (ten sam materiał siewny wytwarza tę samą sekwencję)
- Okresowy (ostatecznie powtarza się po pewnym okresie)
- Szybkie i wydajne wytwarzanie
- Łatwo odtwarzalne wyniki
- Nadaje się do symulacji i zastosowań niezabezpieczających
Kryptograficznie bezpieczne PRNG (CSPRNG)
Kryptograficznie Bezpieczne Pseudorandom Generatory liczb są specjalną klasą PRNG zaprojektowanych, aby oprzeć się przewidywaniu. Są one odpowiednie do zastosowań o kluczowym znaczeniu dla bezpieczeństwa, ale nadal działają w sposób zdecydowany.
CSPRNG Przykłady
- Generator Blum- Blum- Shub (BBS)
- RSA / Generator Rabin
- Algorytm Fortuny
- HMAC- DRBG
- Generatory na bazie ChaCha20
- Generatory trybu AES- CTR
CSPRNG Właściwości bezpieczeństwa
- Forward secrecy (poprzednie wyjścia chronione)
- Tajemnica odwrotna (przyszłe wyjścia chronione)
- Wycofa kompromis państwowy
- W oparciu o trudne problemy obliczeniowe
- Odkłada wszystkie wielomianowe testy statystyczne
Badanie losowości i walidacja
Sprawdzenie jakości generatorów liczb losowych ma zasadnicze znaczenie dla zapewnienia, że spełniają one wymogi dotyczące ich zamierzonych zastosowań. Kilka standardowych zestawów testowych są dostępne:
- Bateria testów Diehard
- NIST Statistical Test Suite (SP 800- 22)
- Testu01 Suite
- Chi- Square Badanie
- Badanie częstotliwości (badanie monochromatyczne)
- Uruchom test
- Korelacja szeregowa Badanie
- Kolmogorov- Smirnov Badanie
- Urodziny Badanie
Podejście hybrydowe
W celu uzyskania optymalnych wyników w zastosowaniach bezpieczeństwa często stosuje się podejścia hybrydowe łączące różne typy generatorów losowych:
- Używanie TRNG do wytwarzania nasion dla CSPRNG
- Baseny entropii gromadzące losowość z wielu źródeł
- Post- przetwarzanie wyjścia TRNG przy użyciu funkcji haszu kryptograficznego
- Łączenie wyjść z wielu niezależnych generatorów
Najlepsze praktyki dla zastosowań krytycznych
- Użyj TRNG do generowania początkowej entropii (nasiona)
- Przetwarzanie entropii przez CSPRNG w celu uzyskania lepszych właściwości statystycznych
- Użycie utrwalonych, dobrze zweryfikowanych algorytmów i wdrożeń
- Ciągłe monitorowanie jakości zdrowia i wydajności RNG
- Zastosowanie kryptograficznego post- przetwarzania (hashing) w stosownych przypadkach
- Odpowiednie normy (NIST SP 800- 90A / B / C, BSI AIS 20 / 31)
Co to są Random Numbers?
Liczby losowe to liczby, które występują w sekwencji tak, że spełnione są dwa warunki:
- Wartości są równomiernie rozłożone w określonym przedziale czasu
- Nie można przewidzieć przyszłych wartości w oparciu o poprzednie lub obecne
- Każda liczba ma równe prawdopodobieństwo wyboru
- Sekwencja jest statystycznie niezależna
Wnioski
Pobieranie próbek statystycznych
Wybór losowych próbek z populacji do analizy statystycznej.
Symulacje
Tworzenie losowych scenariuszy symulacji Monte Carlo.
Kryptografia
Generowanie kluczy szyfrujących i zabezpieczanie losowych wartości.
Gaming
Tworzenie losowych wyników w grach i loterii.
Losowe wytwarzanie liczb
Nasz generator liczb losowych używa kryptograficznie bezpiecznego algorytmu do generowania naprawdę losowych liczb:
- Jednolita dystrybucja w określonym zakresie
- Kryptograficznie bezpieczne generowanie liczb losowych
- Wsparcie dla liczb całkowitych i dziesiętnych
- Dostosowana liczba miejsc po przecinku
Przykłady
Przykład 1Liczba integracyjna
Zakres: od 1 do 10
Liczba: 5
Miejsca dziesiętne: 0
3, 7, 1, 9, 4
Liczba całkowita losowa od 1 do 10
Przykład 2Numery dziesiętne
Zakres: od 0 do 1
Liczba: 3
Miejsca dziesiętne: 2
0.42, 0.87, 0.15
Losowe dziesiętne od 0 do 1
Przykład 3Własny zakres
Zakres: -100 do 100
Liczba: 4
Miejsca dziesiętne: 1
-45.2, 78.9, -12.4, 56.7
Numery losowe od -100 do 100