Słabe seedy portfela – prosto wyjaśnione
Jak słabe seed'y portfeli zagrażają Bitcoinowi
Kryptografia Bitcoina może być bezpieczna, nawet jeśli portfel tworzy przewidywalny seed. Ryzyko pojawia się już przed pierwszą transakcją: jeśli ktoś odtworzy seed lub klucz prywatny, może wydać środki z innego urządzenia – nawet gdy oryginalny portfel sprzętowy pozostaje offline.
Szybka odpowiedź
Jak poprawny seed może być niebezpieczny?
12 lub 24 poprawne słowa oznaczają tylko, że fraza seed ma właściwy format. Nie dowodzą, że portfel wybrał ją z naprawdę losowego zbioru. Wadliwy generator może tworzyć poprawnie wyglądające seedy z dużo mniejszej listy, którą atakujący mogą odtworzyć.
W tych przypadkach blockchain Bitcoina i reguły podpisów działają poprawnie. Błąd pojawia się podczas generowania kluczy w portfelu, zanim blockchain zobaczy jakąkolwiek transakcję.
Spis treści
Blockchain kontra portfel
Blockchain weryfikuje podpisy, portfel tworzy sekret
To osobne zadania: blockchain weryfikuje transakcje, portfel tworzy i chroni klucze do ich zatwierdzania. Słaby seed może zawieść na poziomie portfela, nawet jeśli blockchain jest bezpieczny.
Blockchain
Przechowuje historię transakcji i akceptuje wydatki po poprawnym podpisie.
Portfel
Tworzy seed, generuje klucze prywatne, pokazuje adresy i podpisuje transakcje.
Atakujący
Można odtworzyć te same klucze na innym urządzeniu, jeśli seed był przewidywalny lub skopiowany.
Kradzież urządzenia nie jest konieczna. Atakujący może zaimportować skopiowany lub przewidywalny seed do kompatybilnego oprogramowania i podpisać transakcję na własnym komputerze.
Dwa popularne mity
Portfele sprzętowe i zimne zmniejszają ryzyko, ale nie zabezpieczają ujawnionych kluczy
Oba podejścia są przydatne, ale ich skuteczność zależy od bezpiecznego utworzenia i zachowania tajności seeda.
Nikt nie wyda środków bez mojego urządzenia
Portfel sprzętowy chroni klucze przed codziennym komputerem, ale te same klucze można odtworzyć na innym urządzeniu, jeśli ktoś ma kopię lub przewidywalny seed.
Urządzenie chroni tylko wtedy, gdy seed i klucze prywatne pozostają tajne.Portfel offline uniemożliwia dostęp do bitcoinów
Trzymanie portfela offline blokuje zdalny dostęp do urządzenia, ale nie powstrzyma osoby, która ma kopię seeda lub klucza prywatnego, przed użyciem innego sprzętu.
Przechowywanie offline chroni oryginał, ale nie unieważnia kopii.Gdzie zaczyna się słabość
Błąd może pojawić się jeszcze przed wygenerowaniem słów seeda
Portfel najpierw zbiera dane, których nikt nie powinien przewidzieć. Następnie używa bezpiecznego generatora losowego, by stworzyć seed. Jeśli początkowe dane są słabe, końcowe słowa mogą wyglądać poprawnie, ale wybór pozostaje przewidywalny.
Entropia
Entropia to techniczne określenie nieprzewidywalności. Im większa entropia, tym więcej realnych możliwości wyboru przez portfel.
Bezpieczny generator losowy
Oprogramowanie lub sprzęt, które przetwarzają nieprzewidywalne dane początkowe na wartości odpowiednie do kluczy używanych w bezpieczeństwie.
Fraza seed
Czytelna kopia zapasowa, z której portfel może odtworzyć wiele kluczy prywatnych. Każdy, kto ma cały seed, może zwykle odtworzyć portfel.
Klucz prywatny
Tajna wartość służąca do autoryzacji wydatków z danego adresu. Jeden seed generuje wiele kluczy prywatnych.
Poprawny format nie gwarantuje bezpieczeństwa
Dlaczego 12 poprawnych słów nie gwarantuje bezpieczeństwa
Wyobraź sobie loterię, która drukuje długie numery, ale w rzeczywistości używa tylko 1 000 możliwych kombinacji. Każdy los wygląda wiarygodnie, a atakujący musi sprawdzić tylko te 1 000 opcji. Wadliwy generator portfela działa podobnie.
Bezpieczny 12-wyrazowy seed powinien pochodzić z ogromnej liczby możliwych kombinacji. Słaby portfel może wybierać z dużo mniejszej, ukrytej listy. Po samych słowach lub poprawności frazy nie rozpoznasz różnicy.
Co widzi właściciel
12 poprawnych słów, prawidłowa suma kontrolna i portfel, który się otwiera.
Co pozostaje ukryte
Generator miał zbyt mało nieprzewidywalnych danych i mógł tworzyć tylko ograniczoną liczbę seedów.
Co zyskuje atakujący
Znacznie krótsza lista do sprawdzenia zamiast wszystkich możliwych seedów.
Przykład z 1 000 losów to analogia, nie wyliczenie dla konkretnego portfela. Rzeczywista liczba zależy od wadliwego generatora.
Prawdziwe awarie, różne przyczyny
Słaba losowość już wielokrotnie narażała portfele
Te przypadki dotyczyły różnych produktów i błędów, ale łączy je jedno: przekonujący interfejs portfela i długi sekret nie gwarantują, że sekret był nieprzewidywalny.
Milk Sad / Libbitcoin Explorer
Polecenie bx seed korzystało z generatora Mersenne Twister z zaledwie 32 bitami czasu systemowego jako wejściem. Wynik wyglądał jak entropia portfela, ale badacze mogli odtworzyć niewielki zbiór możliwych seedów i powiązali błąd z realnymi kradzieżami na kilku blockchainach.
Długość seeda nie zrekompensuje przewidywalnego źródła losowości.RANDSTORM / BitcoinJS
Starsze portfele przeglądarkowe mogły korzystać ze słabej losowości JavaScriptu i środowiska przeglądarki. Po latach ostrzegano, że portfele z tamtego okresu mogą być nadal podatne.
Stary klucz pozostaje stary, nawet jeśli interfejs portfela został zaktualizowany.Android SecureRandom
Błąd w losowości Androida naraził portfele Bitcoin na ryzyko. Programiści wydali poprawki, ale użytkownicy musieli wygenerować nowe adresy i wymienić klucze, bo aktualizacja nie zabezpiecza już istniejących słabych kluczy.
Naprawa generatora chroni nowe klucze, nie te już wygenerowane.COLDCARD RNG
Niektóre wersje firmware COLDCARD generowały seed z dużo mniejszą losowością niż zakładano. Pokazuje to, że nawet dedykowany sprzęt może zawieść, jeśli proces generowania seeda nie korzysta prawidłowo z bezpiecznych źródeł.
Sprzęt nie zastąpi weryfikacji całego procesu generowania kluczy.Przeczytaj pełny opis incydentu COLDCARDPraktyczna ocena ryzyka
Kiedy traktować stary portfel jako potencjalnie niebezpieczny?
Zwykle nie da się ocenić seeda po samych słowach. Kluczowe są: gdzie, kiedy i na jakim oprogramowaniu lub firmware został utworzony.
Pochodzenie seeda jest niejasne
Nie wiesz, która aplikacja, strona, urządzenie, firmware lub procedura utworzyły pierwotnie frazę odzyskiwania.
Portfel pojawia się w ostrzeżeniu bezpieczeństwa
Seed został utworzony przez wersję wymienioną w ostrzeżeniu producenta, CVE, publikacji badawczej lub instrukcji migracji.
Stary seed został zaimportowany do nowszego portfela
Przeniesienie tej samej frazy odzyskiwania do nowego portfela sprzętowego zmienia tylko urządzenie, nie sam sekret.
Seed lub klucz prywatny mógł zostać ujawniony
Seed został wpisany na stronie, sfotografowany, zapisany w chmurze, udostępniony wsparciu lub zobaczony przez inną osobę.
Dopasuj reakcję do poziomu ryzyka
Co zrobić ze starym lub podejrzanym seedem?
Nie panikuj, jeśli portfel jest stary. Najpierw sprawdź, jak powstał seed i czy produkt lub wersja są wymienione w wiarygodnych ostrzeżeniach. Działaj na podstawie faktów.
Znane źródło i brak oznak wycieku
Aktualizuj portfel i firmware, chroń kopię zapasową i śledź wiarygodne ostrzeżenia. Stary portfel nie musi być niebezpieczny.
Pochodzenie seeda jest nieznane lub wymienione w ostrzeżeniu
Utwórz nowy seed na aktualnym, bezpiecznym oprogramowaniu lub sprzęcie. Sprawdź kopię zapasową, wyślij testową transakcję, a potem przenieś resztę środków.
Ktoś może znać seed lub klucz prywatny
Traktuj środki jako zagrożone. Przenieś je na adresy z nowego seeda. Zmiana PIN-u, hasła czy urządzenia nie zmienia ujawnionych kluczy.
Co nie naprawia słabego lub ujawnionego seeda
- Importowanie tego samego seeda do nowego portfela sprzętowego
- Zmiana tylko PIN-u urządzenia lub hasła aplikacji
- Instalacja aktualizacji bez tworzenia nowego seeda
- Odłączenie urządzenia po ujawnieniu seeda
Dla twórców portfeli
Przetestuj cały proces tworzenia klucza
Bezpieczny algorytm na papierze to za mało. Kontrola musi obejmować cały proces: od źródła entropii, przez generator losowy, aż po końcowy seed – wraz z firmware, przeglądarką, systemem operacyjnym, kompilacją i zachowaniem awaryjnym.
- Korzystaj ze źródeł losowości zaprojektowanych do kryptografii – sprzętowych lub systemowych.
- W przypadku braku bezpiecznego źródła losowości – zatrzymaj proces, nie korzystaj po cichu ze zwykłego generatora.
- Testuj gotowy produkt i rzeczywistą ścieżkę wywołań, nie tylko pojedyncze pliki źródłowe.
- Dokumentuj sposób tworzenia seedów i procedurę migracji po wykryciu błędu.
Główne ostrzeżenia i zalecenia bezpieczeństwa
Sprawdź incydenty i zalecenia kryptograficzne
Wyjaśnienia i przykłady zostały zweryfikowane z wytycznymi NIST, ujawnieniem Milk Sad, ostrzeżeniem RANDSTORM od Unciphered, ostrzeżeniem Bitcoin.org dla Androida, Bitcoin Optech i aktualnymi zaleceniami bezpieczeństwa portfeli.
Najczęstsze pytania
Czy ktoś może wydać moje bitcoiny, jeśli zna mój seed?
Zazwyczaj tak. Pełna fraza odzyskiwania pozwala odtworzyć klucze prywatne portfela. Atakujący może ją zaimportować do kompatybilnego oprogramowania lub innego urządzenia i podpisać transakcje bez Twojego portfela sprzętowego czy PIN-u.
Czy bitcoiny są przechowywane w portfelu sprzętowym?
Nie. Blockchain zapisuje bitcoiny. Portfel sprzętowy chroni i używa kluczy do autoryzacji wydatków. Jeśli ktoś zdobędzie kopię tych kluczy, urządzenie nie jest już jedyną metodą podpisu.
Czy przechowywanie offline chroni znany klucz prywatny?
Nie. Przechowywanie offline chroni nieznany klucz przed siecią. Jeśli ktoś zna klucz prywatny lub seed, może samodzielnie podpisać i wysłać transakcję.
Czy aktualizacja firmware naprawi stary słaby seed?
Nie. Aktualizacja może naprawić generowanie nowych seedów, ale nie zwiększy losowości już istniejącego seeda. Bezpieczniej jest utworzyć nowy seed i przenieść środki na nowe adresy.
Czy po słowach seeda rozpoznam, czy jest słaby?
Zwykle nie. Słaby seed może mieć poprawną liczbę słów i sumę kontrolną. Ryzyko zależy od tego, gdzie i jak został wygenerowany – sprawdź aplikację, urządzenie, firmware, datę i ostrzeżenia.
Czy silne hasło portfela zabezpiecza słaby seed?
Nie. PIN urządzenia lub hasło aplikacji chronią tylko dostęp lokalny, ale nie zmieniają kluczy prywatnych wynikających z seeda. Osobna, silna fraza może dodać kolejny sekret w niektórych portfelach, ale nie naprawia znanego słabego seeda.
Czy wyciek jednego klucza prywatnego ujawnia cały portfel?
Nie zawsze. Klucz prywatny daje dostęp tylko do środków przypisanych do niego. Wyciekanie seeda jest groźniejsze, bo pozwala odtworzyć wiele kluczy. Zakres zależy od konstrukcji portfela i tego, co wyciekło.
Czy 24-wyrazowy seed też może być słaby?
Tak. Więcej słów oznacza więcej możliwych wartości, ale tylko jeśli portfel wybrał początkową wartość bezpiecznie. Wadliwy generator może stworzyć poprawną 24-wyrazową frazę z dużo mniejszego, przewidywalnego zbioru.
Przejdź do przykładu z życia