Dice Roll Entropy pozwala uzyskać nieprzewidywalne dane dla nowego portfela przez rzeczywiste rzucanie kostką. Portfel to aplikacja lub urządzenie do odbierania i wysyłania bitcoinów. Klucze prywatne to tajne liczby pozwalające zatwierdzić wydanie bitcoinów. Wyobraź sobie Annę: zamiast wymyślać liczby, wprowadza wyniki w dokładnej kolejności do sprawdzonej procedury offline. Te dane stają się podstawą kluczy do jej bitcoinów. Entropia opisuje tu niepewność osoby, która nie zna wyników i próbuje je odgadnąć. Kostka pomaga więc tylko wtedy, gdy rzutów jest dość, są niezależne i tajne. Więcej słów odzyskiwania ani długi cyfrowy odcisk nie uratują słabych lub opublikowanych danych. Poniższe obliczenia wyjaśniają dlaczego, ale nie zachęcają do budowy własnego generatora.
Bit to jednostka informacji. Gdy wszystkie możliwości są jednakowo prawdopodobne, każdy dodatkowy bit podwaja liczbę opcji, spośród których zgaduje atakujący. Nie oznacza kolejnej kropki na kostce ani kolejnego słowa kopii. Uczciwa sześcienna kostka ma sześć jednakowo prawdopodobnych wyników. Dwa niezależne rzuty dają 36 możliwych par. W bitach zapisujemy to jako log2(6) ≈ 2,585 na rzut. W idealnych warunkach 50 rzutów daje około 129,25 bitu, 99 rzutów 255,91, a 100 rzutów 258,50. COLDCARD podaje 99 rzutów dla praktycznego celu 256 bitów; matematycznie to nieco mniej niż 256. Samo liczenie rzutów nie sprawdza kostki ani nie gwarantuje idealnie jednostajnego wyniku przekształcenia. [1] [3] [5]
Jeżeli jedna ścianka wypada częściej, atakujący ma lepszy typ. Przy prawdopodobieństwie najczęstszej ścianki 1/2 jeden rzut daje tylko 1 bit min-entropy. Min-entropy mierzy nieprzewidywalność na podstawie najlepszej pojedynczej próby odgadnięcia wyniku przez atakującego. Wzór Hmin=−log2(pmax) używa właśnie prawdopodobieństwa najczęstszego wyniku, pmax. Dodawanie wartości między rzutami wymaga odpowiedniej niezależności. Przepisanie poprzedniego wyniku nie zastępuje nowego niezależnego rzutu. Kto zna całą sekwencję, nie musi jej w ogóle zgadywać. [4]
Dla portfela utworzonego wyłącznie z rzutów pełna sekwencja lub wynikowy hash, czyli cyfrowy odcisk obliczony z tych danych, mogą wystarczyć do odtworzenia go. Przy mieszaniu wrażliwe są też dane wejściowe urządzenia. Nie wpisuj prawdziwych rzutów do weryfikatora online ani ich nie fotografuj. Obliczenia sprawdzaj na oddzielnym portfelu testowym, na który nigdy nie wpłacisz środków; do właściwego użyj nowych tajnych danych wejściowych. Schowek i logi mogą zachować dane. Zabezpiecz Seed Phrase, czyli kopię zapisaną słowami, i sprawdź odzyskiwanie. Jeżeli używasz też passphrase, dodatkowego sekretu dającego dostęp do innego portfela wyprowadzonego z tych samych słów, do odzyskania go potrzebujesz również jej. [1] [2]
Zgodność z publicznym przykładem testowym sprawdza kodowanie, hash i przeliczenie. Nie dowodzi poprawnego działania twojej kostki lub urządzenia. Ładnie wyglądająca krótka sekwencja również nie dowodzi nieprzewidywalności. NIST SP800-90B odróżnia model źródła, oszacowanie min-entropy i kontrole działania. Domowa seria rzutów nie jest certyfikacją według tego standardu; wymyślone liczby ani powtarzany wzór nie zastępują fizycznych rzutów. [3] [4]
ASCII określa zapis cyfr dla komputera, a newline oznacza znak końca wiersza. Dokładny zapis ma znaczenie, bo komputer przetwarza podane znaki, nie ich ludzkie znaczenie. Zgodnie z dokumentacją COLDCARD w trybie Dice Rolls Only oblicza SHA-256 z ciągu cyfr ASCII. Publiczny test 123456 bez końcowego newline daje hash 8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92. Sześć idealnych losowych rzutów miałoby tylko około 15,51 bitu; opublikowana sekwencja w ogóle nie jest tajna. Wyjście 256 bitów nie dodaje brakującej entropii; inne kodowanie może zmienić wynik. [1] [3]
W poniższym wzorze d1 i d2 oznaczają wyniki pierwszego i drugiego rzutu. mod to reszta z dzielenia. Dwa przeciwobrazy oznaczają, że dwie różne wartości początkowe prowadzą do tego samego wyniku, zwiększając jego szansę. Dydaktycznie zakodujmy dwa uczciwe niezależne rzuty jako x=6*(d1−1)+(d2−1), od 0 do 35. x mod32 faworyzuje 0–3, bo każda wartość ma dwa przeciwobrazy. Rejection Sampling odrzuca zamiast tego 32–35 i powtarza parę; przyjęte 0–31 dają pięć równomiernych bitów. Przykład wyjaśnia błąd konwersji, nie zastępuje sprawdzonego generatora portfela. [3]
Dokumentacja COLDCARD zrewidowana 1 października 2026 odróżnia Dice Rolls Only bez losowości sprzętowej od standardowego tworzenia mieszającego wartość urządzenia z fizycznymi rzutami kostką lub monetą. verify_seed_mix.py sprawdza drugi tryb, rolls.py i rolls12.py pierwszy. Same rzuty nie wystarczą do porównania, jeśli wejście zawiera też wartość urządzenia; potrzebne są dokładna procedura i wersja firmware. [1]
BIP39 opisuje, jak bity wejściowe stają się słowami odzyskiwania i jak z tych słów wyprowadza się seed, czyli dane początkowe dla kluczy. Checksum pomaga wykryć część błędów przepisywania; passphrase jest opcjonalnym dodatkowym sekretem. Ostatni wymieniony niżej algorytm oblicza seed ze słów i passphrase. BIP39 dodaje cztery bity checksum do 128 bitów wejściowych i dzieli 132 bity na 12 grup po 11; 256 bitów plus osiem kontrolnych daje 24 słowa. Checksum jest pochodny i nie dodaje losowości. Następnie PBKDF2-HMAC-SHA512 tworzy 512-bitowy seed z frazy i passphrase, lecz sama długość 512 nie wzmacnia słabych rzutów. Format słów, entropia wejściowa i pochodny seed to różne warstwy. [2]
Pełniejszy obraz uzyskasz, czytając to hasło razem z Cryptographic Entropy, Entropy Bit, BIP 39, Seed Phrase, Entropy Mixing, CSPRNG. Do tego hasła prowadzą również odsyłacze z Cryptographic Entropy, COLDCARD RNG Incident (2026).