Deterministic RNG to generator liczb pseudolosowych: oblicza wartości według ustalonej procedury, zamiast za każdym razem mierzyć nowe losowe zjawisko fizyczne. Zaczyna od danych zwanych seedem i utrzymuje stan wewnętrzny, czyli informacje potrzebne do kolejnego obliczenia. Powtórzenie całej procedury z tymi samymi danymi odtwarza wyniki. Przydaje się to w testach. Bezpieczny generator kryptograficzny wymaga też odpowiedniej konstrukcji i dostatecznej entropii: niepewności dotyczącej danych wejściowych z perspektywy atakującego.
Wyobraź sobie zatrzymanie obliczenia i zapisanie jego pamięci. Wznowienie w tym samym punkcie z identycznymi dalszymi danymi może dać taki sam ciąg dalszy. NIST SP 800-90A opisuje takie generatory jako DRBG. Liczą się algorytm, ustawienia i kolejność żądań. Dodanie świeżej entropii, czyli reseeding, zmienia stan. Sam identyczny seed nie gwarantuje więc jednakowych wyników w różnych programach. [1]
Nawet prosty program do symulacji potrafi tworzyć liczby wyglądające losowo. To nie wystarcza do ochrony portfela. RFC 4086 ostrzega, że atakujący może przewidywać niektóre takie ciągi, mimo że przechodzą testy statystyczne. Silny kryptograficznie generator powinien pozostać praktycznie nieprzewidywalny po ujawnieniu części wyników. Ważne są konstrukcja, jakość i tajność danych początkowych, nie samo słowo „deterministyczny”. [2]
Przy szukaniu błędu pomaga dokładne odtworzenie sytuacji. Dlatego funkcja randombytes_buf_deterministic() z libsodium zwraca ten sam ciąg dla tego samego seedu. Programista może opublikować oczekiwany wynik, aby inni go sprawdzili. Właśnie dlatego publiczny seed testowy nie nadaje się do prawdziwego portfela: każdy mógłby z niego obliczyć ten sam „sekret”. [3]
BIP32 wykorzystuje podobną powtarzalność do wyprowadzania kluczy, choć nie jest to ta sama procedura co ogólne generowanie losowych danych. Z jednego seedu tworzy drzewo kluczy. Ścieżka wyprowadzania wskazuje używaną gałąź. Ten sam seed i ścieżka pozwalają więc odtworzyć te same klucze. Kolejny wyprowadzony adres sam w sobie nie dodaje nowej, niezależnej entropii do pierwotnego sekretu. [4]
W BIP39 słowa odzyskiwania, określane jako mnemonic, są tylko częścią danych wejściowych. PBKDF2 łączy je z passphrase, opcjonalnym dodatkowym sekretem, aby obliczyć seed do dalszego wyprowadzania kluczy. Inna passphrase daje inny wynik mimo tych samych słów. Odtworzenie tych samych kluczy wymaga wszystkich pierwotnych danych i właściwej metody wyprowadzania. Sama zgodność słów tego nie zapewnia. [5]
Podpis cyfrowy potwierdza, że posiadacz odpowiedniego tajnego klucza zatwierdził transakcję. RFC 6979 opisuje obliczanie pomocniczej wartości k z tego klucza i podpisywanej wiadomości. Ten krok nie musi za każdym razem pobierać nowej wartości losowej. Nie znosi to jednak wymogu dobrej losowości przy pierwotnym tworzeniu klucza. Poprawne podpisywanie nie naprawi klucza, który od początku można było odgadnąć. [6]
Odtworzenie tych samych kluczy przez BIP32 jest pożądane. Przypadkowe powtórzenie wartości, które miały być nowe, już nie. Migawka maszyny wirtualnej zapisuje stan komputera wraz z pamięcią. Jak ostrzega libsodium, jej przywrócenie może powtórzyć stan i wyniki generatora. Przy kopiowaniu środowiska nie można więc zakładać, że każda uruchomiona kopia automatycznie zacznie tworzyć niezależne sekrety. [3] [4]
Programista porównuje wynik z wektorem testowym, czyli znanymi danymi wejściowymi i oczekiwanym wynikiem. Zgodność potwierdza poprawne obliczenie tego przykładu. Nie dowodzi jakości entropii uzyskiwanej przez rzeczywiste urządzenie. NIST SP 800-90A oddziela mechanizmy od wymagań dotyczących ich danych wejściowych. Ważne są też wersja programu, ustawienia i uzupełnianie entropii. Sama etykieta Deterministic RNG nie dowodzi bezpieczeństwa portfela. [1]
Pełniejszy obraz uzyskasz, czytając to hasło razem z CSPRNG, Random Number Generator, HD Wallet, Seed Generation. Do tego hasła prowadzą również odsyłacze z CSPRNG, COLDCARD RNG Incident (2026).