Jak bezpiecznie przechowywać klucze prywatne.

Jedną z największych zalet Bitcoina jest to, że jego posiadacze nie są skazani na łaskę i niełaskę banków, są odporni na przekręty sektora finansowego, bankructwa banków i krajów, polityczne rozgrywki, kontrolę kapitału. Grecy boleśnie przekonali się rok temu, że ich pieniądze w bankach są tylko wirtualnym zapisem i w razie kryzysu bank może wydzielać swym klientom tyle pieniędzy ile uzna za stosowne. Klient wpłacający pieniądze do banku traci nad nimi kontrolę. Musi mu zaufać, że ten odda mu je w razie potrzeby. Posiadacze bitcoinów sami są dla siebie bankami. Mają klucze, które umożliwiają dostęp do swoich bitcoinów bez pytania nikogo o zgodę, bez limitów, cenzury i z groszowymi opłatami za transakcje.


Ta wolność niesie jednak ze sobą konieczność odpowiedniej ochrony swoich kluczy. Utrata ich to utrata pieniędzy. Jest mnóstwo możliwości ochrony kluczy od zabezpieczeń podstawowych do coraz bardziej skomplikowanych aż po metody graniczące z paranoją. Portfele bitcoinowe mają generalnie dwa sposoby przechowywania kluczy prywatnych – w pliku lub jako seed. Od tego zależy potem sposób ich zabezpieczenia.

Ochrona podstawowa.

  • Plik.

Jeśli nasze klucze znajdują się w pliku to portfel umożliwia ustawienie hasła szyfrującego ten plik. Gdyby plik zostałby skradziony to złodziej nie będzie miał możliwości wyczyszczenia nam konta. Oczywiście najlepiej ustawić jakieś dobre, długie hasło z użyciem dużych i małych liter, cyfr i znaków specjalnych. Poza tym potrzebna nam kopia zapasowa. Można ją trzymać na pendrivie lub w chmurze. Najlepiej sporządzić kilka kopii.

  • Seed

Seed po prostu przepisujemy na kartkę i trzymamy w domu w jakimś bezpiecznym miejscu. Kopia zapasowa może polegać np. na przepisaniu seeda do pliku tekstowego, a następnie zaszyfrowaniu go kluczem PGP lub wrzuceniu do zaszyfrowanego kontenera VeraCrypt i trzymaniu go na pendrivie lub w chmurze.

Ochrona zalecana.

Ochrona podstawowa może okazać się niewystarczająca, gdy nasz komputer jest zainfekowany. Szczególnie groźne są keyloggery i wirusy robiące zrzuty ekranu.

  • Plik

Metoda przechowywania kluczy w pliku wykazuje tu największą słabość. Szyfrowanie może nie pomóc nam na dłuższą metę, ponieważ nawet jeśli nasz komputer był czysty w momencie nadawania hasła to musimy je wpisywać za każdym razem, gdy wykonujemy transakcję i ktoś w końcu może je przechwycić. Jeśli ktoś przejmie kontrolę nad naszym komputerem wykorzystując jakieś luki w systemie to wystarczy, że poczeka aż wpiszemy to hasło przy kolejnej transakcji i będzie mógł przelać sobie wszystko co mamy  na swój adres. Najgłośniejszym przykładem takiej kradzieży był przypadek użytkownika allinvain z forum bitcointalk.org. W czerwcu 2011 roku stracił on 25000 bitcoinów. Metodą odporną na tego typu atak jest używanie dwóch komputerów, z którch jeden jest całkowicie odłączony od internetu – dobry jest do tego jakiś stary, tani laptop. Na komputerze online tworzymy transakcję, którą przekazujemy na pendrivie do komputera offline, gdzie podpisujemy ją kluczem prywatnym. Podpisaną transakcję wysyłamy następnie z komputera online. Podpisana transakcja jest bezużyteczna dla ewentualnego złodzieja. Nie może jej zmienić ani obliczyć klucza prywatnego.

  • Seed

Seed trzymany na kartce jest bezpieczny na działanie wirusów i hakerów, ale nie na klęski żywiołowe. Nasze oszczędności bitcoinowe możemy stracić w razie pożaru, powodzi lub kradzieży (na nasze szczęście przeciętny złodziej raczej nie domyśli się czym jest seed, nawet jeśli wpadnie mu w ręce). Domowym sposobem na zaszyfrowanie seeda na kartce może być zamienienie jednego ze słów seeda innym słowem (powinno być to słowo z grupy słów tworzących seed) albo dodanie takiego słowa w losowe miejsce – otrzymujemy wtedy seed z jednym słowem więcej, ale atakujący nie ma pojęcia jakie słowo i gdzie zostało dodane. Przed klęskami żywiołowymi uchroni nas trzymanie zaszyfrowanego seeda w chmurze. Jeśli boimy się trzymać go w chmurze, a bardziej ufamy swojej rodzinie to można podzielić go na części używając np. strony PassGuardian i dać 2-3 części swojej rodzinie, a w razie utraty naszego seeda złożyć go z części.

Portfele sprzętowe, papierowe, brainwallety

Portfel papierowy był uważany od początku istnienia Bitcoina za najbezpieczniejszy sposób przechowywania bitcoinów. Portfel papierowy można dodatkowo zaszyfrować hasłem. Aby uchronić się przed jego utratą w razie pożaru można tak zaszyfrowaną kopię bezpiecznie trzymać u rodziny lub w skrytce bankowej. Portfel papierowy najbezpieczniej wygenerować na komputerze odłączonym od internetu (pobierając wcześniej wersję offline strony BitAddress).
Portfele sprzętowe z ekranem np. Trezor mogą bezpiecznie wygenerować seed nawet na zawirusowanym komputerze i wtedy naszym jedynym zmartwieniem pozostanie to, jak go zabezpieczyć na wypadek awarii portfela lub kradzieży. Portfele bez ekranu (np. Ledger Nano) wymagają bezpiecznego środowiska przy generowaniu seeda – Ledger oferuje taki bezpieczny system na USB za kilka euro.
Brainwallety, a więc portfele generujące klucz prywatny z hasła nie są uznawane za bezpieczne. Wyjątkiem jest WarpWallet. Generacja adresu trwa dosyć długo, a więc atak brute-force nam nie grozi. Jeśli wybierzemy silne hasło to możemy spać spokojnie. Oczywiście najlepiej uruchomić stronę nie będąc połączonym z internetem. Mimo to nie polecam trzymania na brainwallecie większej ilości bitcoinów przez dłuższy czas.

Zabezpieczenie rodziny na wypadek śmierci.

Może się okazać, że dobrze zabezpieczymy swoje bitcoiny przed utratą i kradzieżą, ale gdy coś nam się stanie to dla naszej rodziny będą one stracone. Blockchain nie wypłaca spadków. Sposobem na to są portfele papierowe lub „email zza grobu”, w którym można wyjaśnić jak dostać się do pozostawionych pieniędzy. Google oferuje taką usługę, jest też Dead Man’s Switch. Dla bezpieczeństwa najlepiej nie podawać informacji, które mogłyby posłużyć postronnej osobie, a tylko takie jakie będą przydatne dla rodziny – np. przesłać hasło do zaszyfrowanego pliku, który trzymamy w domu.

Podane przeze mnie metody są jednymi z wielu i każdy może wymyślić swoją używając szyfrowania, dzielenia haseł na kilka części. Można użyć także steganografii (polecam narzędzie OpenPuff).