I. Czy można samodzielnie definiować seed?
Większość użytkowników portfeli sprzętowych Ledger Nano wcześniej czy później dochodzi do etapu w którym zastanawia się czy do zdefiniowania nowego portfela można użyć zestawu własnych słów seed. czytaj...
Z tego co już ustaliliśmy, szukając rozwiązania musimy spełnić dwa na pozór wzajemnie wykluczające się
warunki – nasza sekwencja powinna być łatwa do odtworzenia z pamięci, a jednocześnie całkowicie losowa.
Niemożliwe? Spokojnie. Przy odpowiedniej interpretacji możemy przyjąć że niemal wszystko co nas otacza
jest jakimś nośnikiem informacji. Każda gazeta, zdjęcie, obraz, każda treść i informacja dostępna w przestrzeni
publicznej, nie ważne czy gdziekolwiek wydrukowana, czy ogólnie znana. Takimi powszechnie znanymi,
czyli możliwymi do bezproblemowego odtworzenia w dowolnym miejscu i czasie informacjami mogą być wszelkie
stałe fizyczne i matematyczne, ciągi i szeregi, wyznaczone naukowo odległości kosmiczne, stałe chemiczne itd.
Wszędzie na świecie możemy ustalić te dane bez konieczności ich notowania i noszenia przy sobie.
Nie musimy ich zapamiętywać. A to dla nas ogromna zaleta i doskonały punkt wyjściowy do zadania które stawiamy sobie za cel.
O ile codzienne wydania gazet są czymś ulotnym, o tyle śmiało możemy przyjąć że książki, szczególnie znane dzieła
i światowe bestsellery również będą dostępne wszędzie na świecie. W tym względzie, biorąc pod uwagę kwestię
dostępności danej książki w skali globalnej, publikacje i wydania angielskojęzyczne mogą okazać się dla nas szczególnie przydatne.
Teraz wystarczy tylko wybrać z niewyobrażalnie licznej puli jedną taką pozycję, określić do niej prosty do zapamiętania,
pozostający jedynie w naszej głowie schemat-klucz, na podstawie którego wyznaczymy ciąg wyrazów, i już mamy nasz własny seed.
Taki, który o ile zajdzie potrzeba zawsze i wszędzie odtworzymy przy pomocy ołówka i kartki, bez konieczności
przechowywania go ani zapamiętywania. Możliwości są praktycznie nieskończone, a jedynym ograniczeniem pozostają
nasza wyobraźnia i kreatywność.
Dla przykładu weźmy jedną z moich ulubionych pozycji literackich, słynną na całym świecie Trylogię Millennium Stiega Larssona.
Jest to światowy bestseller z roku 2009 sprzedany wówczas w ilości 45 milionów egzemplarzy w 63 krajach, wielokrotnie wznawiany,
a obecnie dostępny nawet online. Nie mam najmniejszych wątpliwości że jeśli tylko zajdzie taka potrzeba, to zawsze będę w stanie
dotrzeć do treści tej książki w dowolnym zakątku cywilizowanego świata.
Tutaj uwaga – fakt że książka jest jedną z moich ulubionych w zasadzie powinien ją automatycznie zdyskwalifikować.
Osoby które mnie znają mogłyby się domyślić że przypuszczalnie jest ona elementem budowy klucza. Wybór powinien być neutralny
i obojętny, a ten jest niczym innym jak właśnie produktem ubocznym moich indywidualnych schematów i zależności,
w tym konkretnym przypadku wynikających z upodobań literackich. Jest to pułapka, w którą łatwo wpaść a której
ze względów bezpieczeństwa należy unikać.
Ale nawet jeśli ulegnę pokusie i na tym etapie dokonam tak niefortunnego wyboru, kolejny krok powinien skutecznie zniwelować wszelkie ryzyko.
Wybieram tom 1, wydanie angielskie, czyli „The girl with the dragon tattoo”. Teraz element całkowicie losowy, i tak naprawdę jedyna rzecz która będzie wymagała ode mnie zapamiętania. Żeby skupić się na przypadkowym fragmencie tekstu, wybieram na chybił-trafił, dajmy na to rozdział 5. I żeby jeszcze dodatkowo wzmocnić element przypadku, niech to nie będzie sam początek rozdziału, ale jakiś fragment rozpoczynający się od określonego miejsca. Wybierzmy losową liczbę, na potrzeby tego przykładu dla uproszczenia niech to będzie liczba 50, ale pamiętaj że równie dobrze może to być liczba każda inna, np. 1410, którą też łatwo zapamiętasz z uwagi na rok Bitwy pod Grunwaldem, a która sprawi że wzorzec do naszego klucza jeszcze bardziej zanurzy się w głąb przypadkowego fragmentu książki. Zatem przyjrzyjmy się bliżej temu co wylosowaliśmy. Początek piątego rozdziału to:
Każdy ciąg znaków z pominięciem znaków interpunkcji traktuję jako osobny wyraz, ale pamiętaj że Ty możesz przyjąć dowolnie inną
własną zasadę. Odnajduję zatem wyraz numer 50, w tym przypadku jest to liczba 24. Od tego miejsca wybieram kolejne 23 wyrazy
– jest to fragment zaznaczony innym kolorem. Dalej wykorzystajmy najbardziej banalny sposób transformacji wyrazów na liczby.
Każdej kolejnej literze alfabetu przypiszmy jej numer porządkowy.
Mamy zatem:
Następnie każdy wyraz z wylosowanego fragmentu zamieniamy na liczbę poprzez proste sumowanie:
W tym momencie śmiało moglibyśmy już wykorzystać uzyskane wyniki jako indeksy naszych kolejnych wyrazów seed w zbiorze BIP39. Ale jak pewnie niektórzy zauważają zakres liczb z uwagi na 26 elementowy zbiór alfabetu i średnią kilkuliterową długość wyrazu jest dość zawężony i oscyluje w przedziale 1 – 109. Liczba 1966 na pozycji drugiej jest szczęśliwym wyjątkiem, ale pamiętajmy że w tekstach liczby występują statystycznie rzadko i w Twoim indywidualnym przypadku zapewne jej akurat zabraknie. Jeśli ktoś chce to poprawić, może przeprowadzić dodatkową operację matematyczną, chociaż z punktu widzenia bezpieczeństwa na tym etapie mamy już pełną losowość i nie jest to konieczne. Zatem żeby bardziej rozciągnąć uzyskany wynik na 2048 elementowy zbiór, do każdego kolejnego elementu dodajmy wielokrotność jakiejś liczby. Niech to będzie 40. Czyli do wyniku pierwszego dodajemy 40, do drugiego 80 (2 razy 40), do trzeciego 120 (3 razy 40) itd. Po takiej dodatkowej operacji otrzymujemy końcowy indeks BIP39, który wyznacza nam odpowiednie słowo:
Dla otrzymanego zestawu wyliczamy ostatni wyraz i wybieramy jedną z 8 możliwości. W oparciu o przykład z poprzedniej strony wiemy już że jednym z wyników jest słowo agent.
Tym oto sposobem uzyskaliśmy własny całkowicie bezpieczny seed.
Jego obiektywna losowość wynika z przypadkowo (bądź nie) wybranej książki
oraz całkowicie przypadkowo wybranego fragmentu jej tekstu.
Nawet jeśli książka jest Twoją ulubioną i można ją z Tobą skojarzyć,
to w dalszym ciągu całkowicie losowo wybrany 23 wyrazowy fragment jej tekstu gwarantuje
bezpieczeństwo wygenerowanego w ten sposób zestawu słów.
Zwróćmy uwagę że zapamiętanie otrzymanej sekwencji słów jest równie trudne, co dowolnie innej zaproponowanej Ci przez wbudowany generator Ledger Nano. To najlepszy dowód na to że jest ona przypadkowa i bezpieczna. Ale różnica polega na tym że teraz już wcale nie musisz jej ani zapamiętywać, ani nigdzie zapisywać. Odtworzysz ją przy pomocy ksiażki, kartki i ołówka kiedy tylko zajdzie taka potrzeba. A jedyne co musisz w tym celu zapamiętać to trzy liczby:
Przyznasz że to znacznie łatwiejsze niż 24 wyrazy z czapki?
A i tak jest to przypadek skomplikowany bardziej niż to konieczne.
Trzeci składnik nie jest niezbędny, wprowadziliśmy go tylko dlatego żeby wykorzystać większy zakres zbioru BIP39.
Podsumujmy:
Tak naprawdę nie wybraliśmy powyższej sekwencji wyrazów. Ale samodzielnie określiliśmy algorytm jej wylosowania
i teraz zawsze będziemy mogli ten proces odtworzyć.
Na koniec pamiętajmy że powyższy przykład to nie jest żaden szablon ani reguła. Twoja indywidualna metoda na każdym etapie może być inna. Nie musisz stosować jednorodnego fragmentu tekstu książki. Możesz np. startując z jej losowo wyznaczonego miejsca wybierać co drugi wyraz, co piąty, albo co sto dwudziesty siódmy. Możesz nie ograniczać się do 23 wyrazów ale jakiejś ich wielokrotności i w celu utworzenia indeksu pojedynczego słowa seed przetwarzać potem kilkuwyrazowe zestawy. Wyrazy możesz wybierać idąc do tyłu a nie do przodu i tylko Ty będziesz o tym wiedział. Kolejnym literom alfabetu nie musisz przypisywać kolejnych liczb, ale np. jakieś wielokrotności jak 5, 10, 15, 20.... albo kolejne liczby pierwsze. Możliwości indywidualnej modyfikacji są praktycznie nieograniczone - to jedynie kwestia wyobraźni. Będzie to wtedy Twój całkowicie autorski, niepowtarzający się nigdzie indziej schemat, a jednocześnie w dalszym ciągu metoda gwarantująca łatwe odtworzenie zestawu słów bez konieczności ich bezpośredniego zapamiętywania ani zapisywania.
Inny przykład - zamiast bazy wyjściowej w postaci książki użyj jakiegoś serialu telewizyjnego. Seriale telewizyjne często składają się z dziesiątek albo i setek odcinków. A odcinki najczęściej mają swoje tytuły. Metodą analogiczną do zaprezentowanej wyżej możesz przetwarzać w całości tytuł każdego odcinka na indeks pojedynczego słowa seed. W Polsce i na całym świecie powstały dziesiątki tysięcy seriali. Sobie tylko znaną metodą możesz wybrać 23 odcinki jednego z nich, a każdy pojedynczy tytuł zamienić na jedno słowo. Możesz opierać się na współczesnych produkcjach, ale w Internecie bez problemu zawsze odszukasz tytuły odcinków Columbo z lat 70, albo Bonanzy, który zadebiutował na ekranie w roku 1959, a o którym dzisiaj już niewielu pamięta. Nie musisz niczego pamiętać poza swoją własną regułą wyboru odcinków oraz sposobem wyliczania indeksu seed. Wskazane jest tylko żeby unikać tłumaczeń na język polski bo te w zależności od źródła bardzo często mogą się różnić. Bezpiecznie jest zawsze opierać się na oryginalnych tytułach wprost z języka produkcji.
Tylko Twoja wyobraźnia ogranicza Cię w kwestii wyboru bazy do wygenerowania seed. Może nią być niemal wszystko. Nie musisz szukać ciągów literowych, dane liczbowe jak wspomnieliśmy na początku są równie dobre. I wcale nie chodzi tu o tablice matematyczno-fizczne, znane szeregi liczbowe ani żadne stałe. Chociaż one wszystkie nadają się do naszego zastosowania doskonale. Niemniej im bardziej oryginalne i nieoczywiste źródło wybierzesz, tym lepiej. Co powiesz na nieśmiertelne i wszędzie na świecie dostępne statystyki FIFA albo UEFA? Weźmy jakiś turniej piłkarski, z dowolnego roku. Wybierzmy pierwsze strzelone w tym turnieju 23 bramki. To znowu tylko najprostsza z możliwości, bramki wcale nie muszą być pierwsze, mogą być ostatnie albo liczone od jakiegoś konkretnego meczu, wprzód albo w tył. Każda bramka została strzelona w określonej minucie, co zostało odnotowane w annałach. Ta informacja zawsze będzie możliwa do odszukania i nigdy się nie zmieni. Tym sposobem otrzymujesz już szereg 23 liczb z przedziału 1-120, które możesz wprost albo poprzez dowolnie wybraną matematyczną operację przerzutować na indeks BIP39.
Warto zaznaczyć, że nie musisz popadać w skrajność i jakoś szczególnie komplikować swojej metody poprzez tworzenie kolejnych wyszukanych etapów. Sam fakt że treść bazowa wybrana przypadkowo spośród ogromnej liczby możliwości znana jest tylko Tobie czyni Twój seed praktycznie niemożliwym do odgadnięcia.
Możliwości wyboru są nieskończone, a to oznacza że bezpieczeństwo takich rozwiązań jest bardzo wysokie i porównywalne z generatorami ciągów pseudolosowych. Jeśli masz co do tego wątpliwości, to odpowiedz sam przed sobą szczerze na pytanie – czy usiłując odgadnąć seed mojego portfela, zanim przeczytałeś powyższy akapit wpadłbyś na pomysł żeby operować na minucie strzelenia każdej z 23 pierwszych bramek na EURO 1988? :) Czy w ogóle przyszłoby Ci do głowy żeby opierać się na jakiejkolwiek archiwalnej statystyce sportowej, gdybym o tym wcześniej nie wspomniał? Założę się że nie.
Jeśli posiadasz gotówkę albo złoto, możesz ukryć je w sejfie, w szufladzie ze skarpetami, a choćby i zakopać w lesie. Natomiast jeśli dysponujesz środkami opartymi o technologię blockchain,
możesz ukryć je w dowolnej treści nie pozostawiając przy tym żadnego śladu. To prawdziwie nowatorskie.
Pamiętaj tylko że bezwzględnym warunkiem bezpieczeństwa metody jest to żeby w jakimś elemencie opierała się ona na Twoim indywidualnym pomyśle.
Pod żadnym pozorem nigdy nie powielaj w całości niczego co znalazłeś w Internecie.
Cokolwiek zostało napisane w Internecie – na zawsze jest spalone. Bądź kreatywny.
Większość użytkowników portfeli sprzętowych Ledger Nano wcześniej czy później dochodzi do etapu w którym zastanawia się czy do zdefiniowania nowego portfela można użyć zestawu własnych słów seed. czytaj...
Zacznijmy od tego że producent Legder Nano nie przewidział takiej możliwości. I zdecydowanie nie jest to przypadkowe. Bezpieczny zestaw słów to taki którego nie da się odgadnąć, czyli właśnie obiektywnie losowy. czytaj...