Blog
Jak odzyskać hasło do pliku keystore / UTC / pliku JSON dla sieci Ethereum
W skrócie
Hasła do pliku keystore UTC/JSON dla Ethereum nie da się odczytać z pliku ani zresetować przez blockchain: plik zawiera zaszyfrowany klucz prywatny, a odzyskanie hasła polega na testowaniu kandydatów offline. Możliwości zależą od stanu pliku, parametrów szyfrowania i prawdopodobnych haseł. Należy pracować na drugiej kopii, a przy znanym haśle użyć zgodnego oficjalnego oprogramowania, nie usługi odblokowywania online.

Mają Państwo plik. To keystore w formacie .json, często o nazwie w rodzaju „UTC--2018-03-14T…”, który zawiera portfel Ethereum. Brakuje natomiast hasła, które go otwiera. Zanim zaczną się próby z kolejnymi hasłami, warto zrozumieć, czym jest ten plik, ponieważ od tego zależy, czy hasło do pliku keystore Ethereum da się w ogóle odzyskać.
Czym właściwie jest plik keystore
Hasło do pliku keystore nie przepada tak, jak przepada utracona fraza odzyskiwania. Plik, który mają Państwo przed sobą, to klucz prywatny zamknięty w zaszyfrowanym pliku JSON, a hasło służy do jego odblokowania. Blockchain nigdzie nie przechowuje tego hasła: hasło zabezpiecza tylko ten jeden plik. Nie zginął więc sam klucz. Brakuje hasła do kopii, która nadal jest w Państwa rękach.
To rozróżnienie zmienia wszystko. Skoro plik jest pod ręką, kandydatów na hasło można sprawdzać na własnym komputerze, offline, dowolnie wiele razy. Żaden serwer nie decyduje o tym, czy przysługuje kolejna próba. Środki w ETH pozostają nienaruszone w blockchainie, a ten plik jest jedynie drogą powrotu do nich.
Przed jakimkolwiek działaniem: praca wyłącznie na kopii
Najpierw należy skopiować plik. Warto zrobić dwie kopie i jedną z nich odłożyć w miejsce, którego się nigdy nie rusza, ponieważ keystore to pojedynczy, niewielki plik, w którym jest wszystko, a stare dyski psują się w najmniej odpowiednim momencie.
Dwa błędy powodują, że ludzie tracą dostęp na zawsze:
- Proszę zachować oryginalny plik bez zmian i nie edytować jego zawartości. Plik keystore musi pozostać poprawnym JSON-em. Zmiana nazwy lub rozszerzenia .json nie zmienia zapisanych danych, ale może uniemożliwić programowi rozpoznanie pliku. Modyfikacja lub usunięcie zawartych w nim zaszyfrowanych danych może sprawić, że plik stanie się bezużyteczny.
- Wszystko należy trzymać offline i nigdy nie wklejać pliku keystore, hasła ani klucza prywatnego na stronie internetowej, która oferuje jego odblokowanie. Fałszywe klony MyEtherWallet i MyCrypto pojawiają się w reklamach w wyszukiwarkach i wyglądają identycznie jak oryginały. Gdy tylko oszust zdobędzie plik i hasło, portfel zostaje opróżniony. Prawdziwe odzyskiwanie odbywa się na własnym komputerze, nigdy w karcie przeglądarki otwartej z reklamy.
Hasło wciąż znane: jak otworzyć plik
To najlepsza sytuacja wyjściowa. Jeśli hasło rzeczywiście pozostało w pamięci, odzyskiwanie nie jest potrzebne – potrzebne jest aktualne narzędzie, bo to polecane wcześniej w tym przewodniku jest już przestarzałe.
Jak przyznaje sama firma MyCrypto, aplikacja komputerowa MyCrypto nie jest już aktywnie utrzymywana, dlatego nie należy opierać na niej odzyskiwania. Zamiast niej warto użyć jednego z poniższych rozwiązań:
- MetaMask. W rozszerzeniu przeglądarki należy kliknąć menu wyboru konta, a następnie Add wallet i Import an account (nazwy przycisków z angielskiego interfejsu). W menu Select Type trzeba wybrać JSON File, wskazać plik keystore, wpisać hasło do samego pliku (nie hasło do MetaMask) i kliknąć Import (przewodnik MetaMask dotyczący importu). Import JSON działa tylko w rozszerzeniu. Starsze wersje nazywały tę opcję „Import account”. To obecnie najprostsza droga.
- MyEtherWallet (MEW). MEW potrafi otworzyć plik keystore, ale lepiej pobrać program i uruchomić go offline, zamiast wpisywać hasło na stronie online. Osobny przewodnik omawia problemy z logowaniem do MEW.
- geth (go-ethereum). Dla osób pracujących w wierszu poleceń: geth odczytuje pliki keystore ze swojego katalogu keystore. Obecne wersje obsługują konta przez Clef, oddzielne narzędzie do podpisywania, a dawna opcja
--unlockjest oznaczona jako przestarzała (zarządzanie kontami w geth).
Po uzyskaniu dostępu warto pożegnać się ze starym portfelem. Plik keystore zawiera tylko jeden klucz, a hasło do niego zostało właśnie wpisane w oprogramowaniu, dlatego wszystkie środki należy przenieść do nowego portfela pod własną kontrolą. Jak zrobić to bezpiecznie, wyjaśnia sekcja w dalszej części.
Zapomniane hasło: jak faktycznie działa odzyskiwanie
To, czy hasło da się odzyskać, zależy od tego, co Państwo pamiętają, a powód warto poznać, zanim wyda się na to choćby grosz. Hasło nie jest zapisane w pliku w czytelnej postaci: odnajduje się je, testując kandydatów, aż jeden z nich odszyfruje klucz. Ponieważ plik jest w Państwa rękach i można go samodzielnie testować, poszukiwania przebiegają offline, bez blokady i bez limitu prób. Takiej swobody nigdy nie daje całkowicie utracona fraza odzyskiwania.
Jest jednak istotny haczyk. Plik keystore zabezpiecza klucz celowo powolną funkcją, scrypt lub PBKDF2, w połączeniu z szyfrowaniem AES-128-CTR (definicja Web3 Secret Storage). Współczynnik pracy jest zapisany w samym pliku; standardowe ustawienie scrypt w geth to 262 144. Ta powolność jest celowym zabezpieczeniem: każda próba kosztuje realny czas obliczeń. Przetestowanie kilku tysięcy prawdopodobnych haseł przebiega szybko. Przetestowanie każdego możliwego losowego ciągu dziesięciu znaków – już nie. Ta przestrzeń poszukiwań jest zbyt rozległa, by wyczerpać ją w ciągu ludzkiego życia, nawet na wydajnym sprzęcie.
Ślepe zgadywanie metodą brute force odpada więc; skuteczne jest ukierunkowane wyszukiwanie. Narzędziem open source do tego celu jest BTCRecover, które obsługuje pliki keystore UTC sieci Ethereum i działa całkowicie offline. Nie podaje mu się losowych ciągów, lecz to, co zostało w pamięci:
- prawdopodobne hasło bazowe oraz reguły tworzenia jego wariantów: wielka litera, rok na końcu, zamieniony symbol;
- krótka lista często powtarzanych słów, testowanych w różnej kolejności;
- długość i rodzaje znaków – o ile pozostały w pamięci – aby zawęzić poszukiwania.
Następnie BTCRecover systematycznie sprawdza tych kandydatów. W przypadku niektórych formatów portfeli skrypty do ekstrakcji z BTCRecover pozwalają przekazać do analizy tylko niewielki wycinek danych portfela, który nie ujawnia kluczy. Dla plików keystore Ethereum takiego skryptu nie ma, więc poszukiwania przebiegają offline na kopii samego pliku keystore.
Najkorzystniejszy przypadek to znana podstawa z zapomnianym zakończeniem: właściwe słowo, ale niepewność co do wielkiej litery, cyfry lub symbolu na końcu. To niewielkie, zawężone poszukiwania. Im większa niepewność, tym bardziej rośnie ich zakres.
Ograniczenia odzyskiwania dostępu
Brak wspomnień dotyczących hasła nie wyklucza automatycznie poszukiwań. Na kopii pliku keystore można nadal sprawdzić ograniczoną listę popularnych haseł i ich wariantów. To, czy ma to sens, zależy od wybranych haseł, ustawień szyfrowania pliku i zmierzonej szybkości sprawdzania. Długie, losowo wygenerowane hasło może być w praktyce nie do odzyskania; sam fakt, że zostało zapomniane, nie świadczy jednak o jego sile.
Drugi ślepy zaułek to całkowity brak pliku. Bez pliku keystore, bez zapisanego klucza prywatnego i bez frazy odzyskiwania nie pozostaje nic do odszyfrowania i nikt nie ma już drogi do portfela. Wolimy powiedzieć to wprost, niż przyjąć sprawę, o której już wiemy, że nie może się udać.
Plik keystore a fraza odzyskiwania: to nie ta sama kopia zapasowa
Ludzie często mylą te pojęcia, a różnica między nimi decyduje o dostępnych możliwościach. Plik keystore to jeden klucz prywatny, zaszyfrowany hasłem i zapisany w formacie JSON. Fraza odzyskiwania to lista słów (zwykle 12 lub 24), która pozwala odtworzyć cały zestaw kluczy zgodnie ze standardem BIP-39. To odrębne kopie zapasowe z odrębnymi ścieżkami odzyskiwania.
W praktyce oznacza to, że przy dostępnym pliku keystore fraza odzyskiwania nie jest potrzebna do uzyskania dostępu. Potrzebne jest hasło. A jeśli ktokolwiek prosi o frazę odzyskiwania w celu „odzyskania” pliku keystore, jest to typowy schemat oszustwa, a nie prawdziwy krok.
Po odzyskaniu dostępu: koniec z poleganiem na pliku keystore
Lepiej z niego zrezygnować. Plik keystore to jeden klucz z jednym hasłem, a to właśnie jedno zapomniane hasło odcięło dostęp. Warto utworzyć nowy portfel pod własną kontrolą, najlepiej portfel sprzętowy, i przenieść do niego ETH oraz tokeny. Konfiguracja oparta na frazie odzyskiwania daje ścieżkę odzyskiwania, której pojedynczy plik keystore nigdy nie miał.
Przy braku dostępu do pliku keystore – czy to z powodu zapomnianego hasła, czy niepewności co do samego pliku – warto zacząć od bezpłatnej oceny: rzetelnej opinii na temat tego, czy hasło da się odtworzyć, jeszcze przed jakimkolwiek zobowiązaniem. Crypto Recovers od 2019 roku ma na koncie ponad 200 odzyskań, działa na zasadzie „bez odzyskania, bez opłaty” i nigdy nie dotyka Państwa pieniędzy.
Jeśli odzyskamy hasło, plik keystore odblokowują Państwo samodzielnie i przenoszą ETH oraz tokeny do nowego portfela opisanego wyżej. Uzgodnione wynagrodzenie to osobna płatność zgodna z umową, nigdy nie potrącana z odzyskanych środków.
Najczęściej zadawane pytania
Dlaczego hasło do pliku keystore Ethereum jest zgłaszane jako nieprawidłowe mimo pewności, że jest poprawne?
Komunikat o nieprawidłowym haśle nie zawsze wynika z zapomnienia. Być może otwierany jest niewłaściwy portfel, ustawiony jest inny układ klawiatury albo wkradła się drobna literówka, np. błędna wielka litera, symbol lub cyfra.
Czy można wyodrębnić klucz prywatny z pliku keystore bez podawania hasła?
Nie. Plik keystore sieci Ethereum przechowuje klucz prywatny w postaci zaszyfrowanej. Bez prawidłowego hasła nie można odszyfrować klucza prywatnego ani uzyskać do niego dostępu.
Czy da się odzyskać dostęp do portfela po zgubieniu pliku keystore?
Tylko wtedy, gdy istnieje inna kopia zapasowa, taka jak klucz prywatny lub fraza odzyskiwania. Jeśli plik keystore został przypadkowo usunięty, oprogramowanie do odzyskiwania plików może być w stanie przywrócić go z oryginalnego nośnika danych.
Czy korzystanie z aplikacji MyCrypto w celu otwarcia pliku keystore sieci Ethereum jest bezpieczne?
Aplikacja komputerowa MyCrypto nie jest już aktywnie utrzymywana. Zasadniczo bezpieczniej jest korzystać z wciąż wspieranego oprogramowania portfelowego, które potrafi importować pliki keystore w formacie JSON, i używać wyłącznie oficjalnych aplikacji portfelowych.
Jak długo trwa odzyskiwanie hasła do pliku keystore sieci Ethereum?
Czas odzyskiwania hasła zależy od jego złożoności oraz od tego, ile informacji pozostało w pamięci. Niektóre przypadki można rozwiązać szybko, inne mogą wymagać kilku dni testów lub okazać się niemożliwe do odzyskania.
Czy za pomocą programu Hashcat można przeprowadzić atak brute force na hasło do pliku keystore sieci Ethereum?
Chociaż jest to technicznie możliwe, pliki keystore sieci Ethereum zostały zaprojektowane tak, aby były odporne na ataki metodą brute force. Odzyskiwanie hasła jest znacznie skuteczniejsze, gdy opiera się na wskazówkach lub częściowej znajomości pierwotnego hasła.
Czy nadal można odzyskać stare pliki presale Ethereum lub starsze pliki portfeli w formacie JSON?
Tak, jeśli plik portfela nadal istnieje, a hasło da się zawęzić. Starsze pliki, takie jak portfele presale z 2014 roku, mają inny format JSON, ale nadal można je testować offline narzędziami, które ten format obsługują; więcej w naszym przewodniku po portfelach presale Ethereum.
