478 / 736H

Cryptographic Entropy

Entropia kryptograficzna: co utrudnia odgadnięcie tajemnicy

Długi i skomplikowany ciąg znaków nie musi być bezpieczny. W portfelu najważniejsze jest to, jak powstał jego sekret i co może o nim wiedzieć ktoś inny.

W kryptografii entropia opisuje niepewność, która pozostaje atakującemu próbującemu odgadnąć tajną wartość. Dla portfela Bitcoin ma znaczenie już przy tworzeniu podstawy jego kluczy. Nie chodzi o to, czy znaki wyglądają skomplikowanie, lecz ile wyników było naprawdę możliwych, jak prawdopodobny był każdy z nich i co atakujący wie o całym procesie.

Wyobraź sobie sekret utworzony z daty i godziny założenia portfela. Po zakodowaniu może wyglądać jak długa mieszanina znaków. Jeżeli jednak atakujący zna przybliżony czas i metodę, może mieć do sprawdzenia tylko niewielki zbiór możliwości. Dłuższy zapis niekoniecznie utrudni mu pracę. Dlatego RFC 4086 odróżnia nieprzewidywalność od samego wrażenia losowości. Nie ocenisz entropii, patrząc na pojedynczy klucz; musisz wiedzieć, jak powstał. [3]

Bit to podstawowa jednostka zapisu danych o wartości 0 lub 1. Sama liczba bitów nie mówi jednak, ile niepewności pozostaje atakującemu. Gdy portfel tworzy Seed Phrase według BIP39, najpierw potrzebuje losowych danych wejściowych. Dopiero potem zamienia je na słowa. Dla 12 słów są to 128 bitów wejścia i 4 bity sumy kontrolnej, a dla 24 słów — 256 bitów wejścia i 8 bitów kontrolnych. Suma pomaga wykryć niektóre błędy zapisu, ale nie dodaje entropii: jest obliczana z istniejącego wejścia. Dłuższa lista słów nie naprawi zatem źle wygenerowanej losowości. Liczy się sposób utworzenia kopii zapasowej, nie tylko liczba słów. [4]

Portfel nie musi wykonywać nowego pomiaru fizycznego dla każdego kolejnego bajtu, czyli grupy 8 bitów. Może użyć generatora kryptograficznego zwanego DRBG: algorytmu wytwarzającego kolejne wartości z tajnego stanu początkowego. Przy poprawnym projekcie i użyciu trudno przewidzieć wyniki bez znajomości tego stanu. Algorytm jest jednak deterministyczny: ten sam pełny stan i te same wejścia dają ten sam dalszy ciąg. Więcej wygenerowanych bajtów nie oznacza automatycznie więcej nowej entropii fizycznej. Ważne są zarówno początkowe dane, jak i ochrona stanu wewnętrznego. [2]

Funkcja hash oblicza z danych odcisk o stałej długości, który może wyglądać na losowy. Kto zna wejście, może jednak obliczyć ten sam wynik. W pełni znane dane nie stają się w ten sposób tajemnicą. Termin conditioning oznacza przetwarzanie, które może ograniczyć nierównomierność i skupić już dostępną niepewność. Nie tworzy sekretu z niczego. Nie można też automatycznie sumować entropii kilku źródeł: mogą być ze sobą powiązane i dostarczać tej samej informacji. [1] [3]

Elektroniczne źródło szumu może się zepsuć lub zmienić zachowanie pod wpływem otoczenia. Dlatego NIST SP 800-90B wymaga kontroli surowego szumu przy uruchomieniu i podczas pracy, jeszcze przed jego przetwarzaniem. Kontrole te szukają oznak awarii; nie dowodzą, że każdy wynik jest bezpieczny. Twórca musi rozumieć źródło, jego ograniczenia i możliwe zależności. Wykrytą awarię trzeba zgłosić aplikacji korzystającej z danych. Przy trwałej awarii źródło musi przestać generować dane wyjściowe. Sam układ opisany jako generator losowości nie wystarczy. [1]

Jeśli atakujący pozna stan wewnętrzny DRBG, może — zależnie od konstrukcji — przewidywać dalsze wyniki. Przywrócenie nieprzewidywalności wymaga odpowiedniej ilości nowych danych, których atakujący nie zna. Dodanie takiej entropii nazywa się reseeding. Samo kontynuowanie obliczeń lub dodanie znanej godziny nie gwarantuje ochrony. Trzeba też odróżnić naprawę generatora od bezpieczeństwa wcześniejszych środków: przywrócenie generatora nie unieważnia klucza, który już wyciekł. [2]

Test statystyczny może wykazać na przykład podejrzane powtórzenia. Nie ustali jednak z pewnością, czy atakujący zna tajne wejście albo sposób przewidywania wyników. NIST SP 800-22 wyraźnie wskazuje to ograniczenie. Testy są przydatną częścią oceny, lecz nie zastępują analizy całego generatora. Plik pełen pozornie losowych liczb sam w sobie nie dowodzi zatem, że portfel jest bezpieczny. [5]

Początkujący nie musi ręcznie obliczać entropii swojego portfela. Lepiej szukać udokumentowanego procesu tworzenia: skąd bierze się losowość, jak jest przetwarzana, jak obsługiwane są błędy i jak chronione są tajne dane. NIST SP 800-90C dotyczy właśnie łączenia źródeł entropii i DRBG w cały generator. Jednak odwołanie do standardu lub znanego układu nie dowodzi jeszcze, że konkretna wersja portfela używa go poprawnie. Liczą się potwierdzone właściwości rzeczywistej implementacji. [1] [6]

Pełniejszy obraz uzyskasz, czytając to hasło razem z Entropy Bit, CSPRNG, Dice Roll Entropy, Private Key. Do tego hasła prowadzą również odsyłacze z BIP85, Dice Roll Entropy, Entropy Bit, Brute Force Search Space.

DOC · 001NIST SP 800-90B — Entropy source design and health testsSpecyfikacja DOC · 002NIST SP 800-90A Rev. 1 — Deterministic generation and reseedingSpecyfikacja DOC · 003RFC 4086 — Unpredictability and source limitationsSpecyfikacja DOC · 004BIP39 — Entropy, checksum and mnemonic encodingSpecyfikacja DOC · 005NIST SP 800-22 Rev. 1a — Limits of statistical testingDokumentacja DOC · 006NIST SP 800-90C — Complete random bit generator constructionsSpecyfikacja
Zaktualizowano: Najpierw źródła · To nie jest porada inwestycyjna