481 / 691RNG

Random Number Generator

Generator liczb losowych

RNG uczestniczy w przejściu od niepewności do użytecznych wartości. Dla tajnych kluczy liczą się nieprzewidywalność, inicjalizacja i obsługa awarii, nie tylko losowy wygląd wyniku.

Random Number Generator dostarcza wartości do określonego celu. W kryptografii przeciwnik nie może ich praktycznie przewidzieć przy podanych założeniach. Fizyczne źródło entropii, generator deterministyczny i interfejs systemu operacyjnego to różne warstwy; sama nazwa RNG nie określa ich właściwości.

Źródło entropii dostarcza niepewności, kondycjonowanie przygotowuje dane wejściowe, a generator deterministyczny tworzy wynik ze stanu wewnętrznego. NIST SP 800-90C łączy mechanizmy z 90A ze źródłami według 90B. Nie każdy zwrócony bit musi więc odpowiadać nowemu pomiarowi fizycznemu. [NIST SP 800-90C — RBG constructions]

Ciąg może przejść testy statystyczne, a mimo to być znany atakującemu. RFC 4086 ostrzega przed zegarami, numerami seryjnymi i przewidywalnymi wartościami początkowymi. Generator symulacji nie nadaje się do kryptografii jedynie z powodu nazwy lub rozkładu wyników. [RFC 4086 — Unpredictability and weak inputs]

NIST SP 800-90B ocenia źródło szumu, kondycjonowanie oraz testy poprawności przy uruchamianiu i podczas pracy. Wykrywają one usterki źródła, nie dowodzą bezpieczeństwa całego portfela. Obsługa awarii jest częścią projektu: wyjścia wadliwej ścieżki nie wolno po cichu przedstawiać jako zweryfikowanej losowości. [NIST SP 800-90B — Source health and failure handling]

Linux getrandom() zwykle czeka na inicjalizację źródła urandom. Z GRND_NONBLOCK może zamiast czekać zwrócić EAGAIN. Po inicjalizacji żądania urandom do 256 bajtów mają gwarancję pełnego odczytu bez przerwania sygnałem; większe jej nie mają. Aplikacja musi uwzględniać zwracany status. [Linux getrandom(2) — Initialization and return behavior]

Web Crypto getRandomValues() wypełnia obsługiwane tablice liczb całkowitych wartościami silnymi kryptograficznie; powyżej 65536 bajtów zgłasza QuotaExceededError. Specyfikacja zaleca generateKey() do tworzenia kluczy. Obecność interfejsu nie potwierdza wiarygodności strony i nie chroni sekretów przed kodem mającym do nich dostęp. [W3C Web Crypto — getRandomValues and key generation]

BIP39 najpierw koduje od 128 do 256 bitów początkowej entropii wraz z wyliczoną sumą kontrolną. Następnie ze słów i opcjonalnej passphrase wyprowadza 512-bitowy seed przez PBKDF2. Ani suma kontrolna, ani dłuższy wynik nie naprawią przewidywalnego wejścia; samodzielne wybieranie słów nie zastępuje losowania. [BIP39 — Initial entropy and mnemonic-to-seed derivation]

Generator deterministyczny wymaga ochrony stanu i poprawnej inicjalizacji. NIST SP 800-90A rozróżnia utworzenie instancji, generowanie, ponowne zasilenie entropią i usunięcie instancji. Odzyskanie bezpieczeństwa po ujawnieniu stanu wymaga właściwego mechanizmu i świeżej entropii nieznanej atakującemu; kolejne wywołanie samo tego nie gwarantuje. [NIST SP 800-90A Rev. 1 — DRBG lifecycle and reseeding]

Ocena powinna wskazać źródło, algorytm, inicjalizację, interfejs i zachowanie przy błędzie w badanej wersji. Określenia sprzętowy czy offline nie potwierdzają tego łańcucha. Przywołane standardy wyjaśniają wymagania generowania; nie certyfikują konkretnego portfela ani nie zapobiegają późniejszemu wyciekowi jego kopii zapasowej. [NIST SP 800-90C — RBG constructions] [RFC 4086 — Unpredictability and weak inputs]

Pełniejszy obraz uzyskasz, czytając to hasło razem z Cryptographic Entropy, CSPRNG, Seed Generation, Brute Force Search Space. Do tego hasła prowadzą również odsyłacze z CSPRNG, Deterministic RNG, True Random Number Generator, Seed Generation.

DOC · 001NIST SP 800-90C — RBG constructionsSpecyfikacja ↗DOC · 002RFC 4086 — Unpredictability and weak inputsSpecyfikacja ↗DOC · 003NIST SP 800-90B — Source health and failure handlingSpecyfikacja ↗DOC · 004Linux getrandom(2) — Initialization and return behaviorDokumentacja ↗DOC · 005W3C Web Crypto — getRandomValues and key generationSpecyfikacja ↗DOC · 006BIP39 — Initial entropy and mnemonic-to-seed derivationSpecyfikacja ↗DOC · 007NIST SP 800-90A Rev. 1 — DRBG lifecycle and reseedingSpecyfikacja ↗
Najpierw źródła · To nie jest porada inwestycyjna