Brute Force Search Space to zbiór możliwości, które można kolejno sprawdzać, próbując odgadnąć sekret. Wyobraź sobie, że zapominasz hasła do własnej zaszyfrowanej kopii zapasowej: każdy pomysł jest kandydatem i trzeba rozpoznać, czy poprawnie otworzył kopię. Im więcej jednakowo prawdopodobnych możliwości i im kosztowniejsze sprawdzenie, tym trudniejsze zwykle jest poszukiwanie. W prawdziwym portfelu trzeba jednak najpierw ustalić, czego dokładnie szukamy.
Hasło do kopii zapasowej, klucz prywatny pozwalający wydać bitcoiny i dane wejściowe generatora, który utworzył klucz, to różne rzeczy. Różne są możliwe odpowiedzi oraz sposoby ich sprawdzania. Jeśli wadliwy generator wybierał z małego zbioru danych wejściowych, poszukiwanie może być łatwiejsze, niż sugeruje długość gotowego klucza. Atakujący może sprawdzać właśnie ten ograniczony zbiór zamiast wszystkich matematycznie możliwych kluczy. Zanim policzymy możliwości, trzeba więc poznać pochodzenie sekretu. [1] [3]
Załóżmy, że mamy 16 jednakowo prawdopodobnych możliwości i dokładnie jedna jest poprawna. Sprawdzamy je kolejno, bez powtórzeń. Czasem trafimy wcześnie, czasem dopiero pod koniec; średnio sprawdzimy 8,5 kandydata. Dla dowolnej liczby N zapisujemy to jako E = (N+1)/2. Przy stałej szybkości 2 prób na sekundę średni czas wynosi 4,25 sekundy. Ułamek próby dotyczy średniej, a nie pojedynczego poszukiwania. To przykład objaśniający zasadę, nie zmierzony czas odzyskiwania portfela Bitcoin. [1]
Ulubione słowa, imiona czy łatwe do zapamiętania wzorce pojawiają się częściej niż przypadkowe kombinacje. Atakujący może więc zacząć od bardziej prawdopodobnych odpowiedzi. Podobny problem tworzy wadliwy generator, który częściej zwraca niektóre wyniki. Średnia z poprzedniego przykładu wtedy nie obowiązuje. Min-entropia opisuje szansę najlepszego pierwszego trafienia, ale sama nie określa całego nakładu pracy ani czasu gwarantowanego sukcesu. Liczba możliwości bez ich prawdopodobieństw to niepełna informacja. [1] [2]
Sprawdzenie kandydata nie musi być natychmiastowe. PBKDF2 to funkcja wyprowadzająca klucz z hasła i innych danych; powtarzanie obliczeń zwiększa pracę potrzebną do każdej próby. Jednym z dodatkowych parametrów jest salt. Zwykle są to publiczne dane rozróżniające poszczególne wyprowadzenia: przy różnych wartościach salt nie da się po prostu użyć tej samej gotowej tablicy wyników. Salt nie jest kolejnym tajnym hasłem i nie zastępuje silnych danych wejściowych. Oszacowanie szybkości wymaga znajomości funkcji, jej ustawień i używanego sprzętu. [3]
BIP39 przekształca słowa odzyskiwania i opcjonalną passphrase, czyli dodatkowe hasło, w seed: tajną wartość początkową do wyprowadzania kluczy. Wykorzystuje PBKDF2 z HMAC-SHA512 jako wewnętrzną funkcją obliczeniową oraz 2048 iteracji, czyli powtórzeń. Wynikiem jest 512-bitowy seed. Parametr salt składa się tu z tekstu „mnemonic”, po którym następuje passphrase; dodatkowy sekret wnosi właśnie passphrase. Każda passphrase daje prawidłowy seed, więc suma kontrolna słów odzyskiwania nie potwierdzi, że wpisano właściwą. Przy odzyskiwaniu własnego portfela można go rozpoznać na przykład po znanym adresie, używając poprawnych ustawień wyprowadzania kluczy. Długi wynik nie zmienia słabego hasła w silne. [4]
Istnieją też metody matematyczne inne niż kolejne zgadywanie. W kryptografii krzywych eliptycznych (ECC) można obliczyć klucz publiczny z prywatnego; znalezienie wartości prywatnej w przeciwnym kierunku jest trudnym zadaniem zwanym problemem logarytmu dyskretnego. SEC 2 opisuje parametry krzywej secp256k1 używanej w Bitcoinie. Samo liczenie wszystkich ciągów 256-bitowych nie obejmuje więc wszystkich dróg ataku. NIST SP 800-57 odróżnia długość klucza od siły zabezpieczenia, czyli szacowanego wysiłku potrzebnego do jego przełamania przy określonych założeniach. Istnienie metody matematycznej nie oznacza, że jest ona praktycznie łatwa. [5] [6]
Więcej procesorów może dzielić między siebie niezależne próby, ale korzyść zależy też od pamięci i organizacji obliczeń. Hashrate w wydobyciu określa liczbę obliczeń górniczych; nie jest szybkością PBKDF2 ani operacji ECC. Ważna jest również różnica między logowaniem do serwisu a kopią zapasową. Serwis może ograniczyć dostęp po błędnych próbach. Kto ma kopię zaszyfrowanego pliku, może jednak sprawdzać kandydatów offline na swoim urządzeniu. Sam limit logowania na stronie tego nie zatrzyma. [3] [6]
Kto zdobędzie cały seed, nie musi przeszukiwać ogromnego zbioru możliwości. Podobny skutek może mieć złośliwe oprogramowanie lub błąd programu obsługującego klucze. Bezpieczeństwo nie kończy się więc na wyborze nieprzewidywalnego sekretu: ważne są również przechowywanie i używanie go. Przy twierdzeniach o czasie łamania pytaj, jaki atak przyjęto, co napastnik już wie i jak zmierzono szybkość. Duża liczba sama nie gwarantuje bezpieczeństwa urządzenia, a ten model nie obiecuje odzyskania utraconego portfela. [6]
Pełniejszy obraz uzyskasz, czytając to hasło razem z Cryptographic Entropy, Entropy Bit, Private Key, Seed Phrase. Do tego hasła prowadzą również odsyłacze z Entropy Bit, Random Number Generator.