Rzeczy, które warto wiedzieć: |
- Miniscript umożliwia budowanie portfeli oprogramowania Bitcoin, które uniemożliwiają wykorzystanie backdoora. Miło nam poinformować, że Ledger jest pierwszym komercyjnym producentem portfeli sprzętowych obsługującym miniscript.
- Dodatkowe funkcje można wdrożyć bez uszczerbku dla doświadczenia użytkownika. |
Urządzenia do podpisywania sprzętu są zaprojektowane tak, aby chronić użytkownika przed różnymi popularnymi wektorami ataków, takimi jak:
- Nieautoryzowany dostęp i ekstrakcja nasion
- Złośliwe oprogramowanie infekujące powiązany portfel oprogramowania
- Luki w oprogramowaniu samego urządzenia
Jak w każdym biznesie, w najlepszym interesie producenta leży wytwarzanie urządzeń zgodnie z wymaganiami niezniszczalny jak mogą. Powodzenie w tej misji jest najważniejsze, a firmy ochroniarskie, takie jak Ledger, polegają na reputacji zbudowanej na ich historii.
Jednak niektórzy użytkownicy mogą nadal mieć obawy. Co powstrzymuje samą firmę przed ukryciem a tylne drzwi w urządzeniach?
W samoopiece my nie ufaj, weryfikujemy.
Ale czy użytkownik naprawdę sprawdzić, czy urządzenie nie ma backdoora?
To jest kluczowe pytanie, które omawia ten artykuł. Dokładniej, ten artykuł porusza następujące tematy:
- co to jest backdoor i dlaczego trudno, jeśli nie niemożliwe, udowodnić, że go nie ma;
- dlaczego tylko użytkownicy mogą chronić się przed tym ryzykiem;
- w jaki sposób miniscript umożliwia praktyczne rozwiązania tego wyzwania dla portfeli bitcoin.
Będąc pierwszym obsługiwanym portfelem sprzętowym miniskrypt, mamy nadzieję, że zainspirujemy programistów do budowania bezpiecznych rozwiązań i unowocześnienia całej naszej branży oraz wyeliminujemy szansę na zmaterializowanie się takiego ryzyka systemowego.
Jak zbudować bez możliwości otwierania wstecznego urządzenie do podpisywania
Powiedzmy sobie jasno: nie możesz.
Aby bronić się przed potencjalnym backdoorem, potrzebujesz innego modelu ataku niż ten, który opisaliśmy powyżej: w tym scenariuszu przeciwnikiem może być sam sprzedawca lub skorumpowany insider.
Często reklamowanym rozwiązaniem tego problemu jest Open Source: w końcu, jeśli możesz sprawdzić kod, co może pójść nie tak?
Jednak prawda jest bardziej złożona. Ponieważ sprzedawca montuje sprzęt, backdoor może być w nim całkowicie zawarty. Sprzęt można zaprojektować tak, aby w pewnych punktach ignorował oprogramowanie i zamiast tego wykonywał złośliwy kod.
W przeciwieństwie do oprogramowania, które działa na urządzeniach komputerowych ogólnego przeznaczenia (takich jak laptop czy telefon), kontrola sprzętu jest praktycznie niemożliwa przy dzisiejszej technologii. Nawet gdyby specyfikacje sprzętowe były całkowicie otwarte, wraz ze szczegółami każdej pojedynczej bramki w obwodzie, nadal potrzebny byłby drogi sprzęt, aby sprawdzić, czy określony chip jest zbudowany zgodnie z nimi.
Jak zrobić backdoor portfela sprzętowego
Oto kilka najprostszych metod, które sprzedawca szkodliwego sprzętu może wykorzystać do wprowadzenia backdoora, a także kilka sposobów, w jakie zaawansowani użytkownicy mogą się dziś chronić.
Pokolenie nasion
Wiele urządzeń oferuje możliwość generowania nasion (tzw Tajna fraza odzyskiwania) bezpośrednio na urządzeniu za pomocą Generator liczb losowych.
😈 Złe urządzenie może generować nasiona, które wyglądają losowo, ale w rzeczywistości są przewidywalne dla atakującego.
🛡️ Zaawansowani użytkownicy mogą obejść ten problem, generując mnemonik w trybie offline. Dodatkowo zawiera solidny hasło może również wygenerować całkowicie niezależny materiał siewny, którego producent sprzętu nie jest w stanie przewidzieć. Kompromis polega na tym, że użytkownicy muszą upewnić się, że oprócz słów mnemonicznych prawidłowo wykonali kopię zapasową hasła.
Wyprowadzanie klucza publicznego
Portfele sprzętowe pozyskują i eksportują pliki klucze publiczne (nazywane również xpuby, skrót od rozszerzony klucz publiczny zgodnie z definicją w BIP-32, xpuby służą do generowania możliwych adresów do odbioru monet.
😈 Złe urządzenie może zwrócić klucze publiczne kontrolowane przez atakującego zamiast poprawnych uzyskanych z materiału siewnego.
🛡️ Użytkownicy mogą zweryfikować pochodną xpub na innym urządzeniu offline. Jednak wprowadzanie materiału siewnego na innych urządzeniach niesie ze sobą własne ryzyko. Użytkownicy świadomi bezpieczeństwa mogą uznać każde urządzenie, które uzyskało dostęp do materiału siewnego, za niebezpieczne, potencjalnie do tego stopnia, że je zniszczy. Typowy użytkownik może mieć trudności z prawidłowym wykonaniem tej procedury, jednocześnie zarządzając dodatkowymi zagrożeniami.
Wyciek informacji
An szczelina powietrzna jest często proponowany jako rozwiązanie zapobiegające eksfiltracji kluczy prywatnych przez złośliwe lub zainfekowane urządzenie. W końcu, jeśli urządzenie nie może komunikować się ze światem zewnętrznym, nie może zrobić nic szkodliwego, prawda?
Nie do końca!
Urządzenie zawsze może się komunikować, gdy jest używane: generuje podpisy. Podpisy te trafiają do transakcji, które są transmitowane i przechowywane na zawsze w łańcuchu bloków.
Sygnatura to losowo wyglądający ciąg bajtów o długości co najmniej 64 bajtów. Ponieważ jednak tej samej wiadomości może odpowiadać więcej niż jeden ważny podpis, złośliwe urządzenie może przekazywać kilka bitów informacji za każdym razem, gdy generowany jest podpis, generując wiele podpisów i selektywnie wybierając, który z nich ma zostać opublikowany.
😈 Nieuczciwe urządzenie może generować nielosowe podpisy, które w wielu transakcjach ujawniają atakującemu ziarno!
Osoba atakująca, której udałoby się zainstalować takiego backdoora, musiałaby jedynie czekać, aż w łańcuchu blokowym pojawią się złośliwe sygnatury, dopóki nie będzie miała wystarczającej ilości informacji, aby zrekonstruować całe ziarno.
🛡️ W przypadku podpisów ECDSA, stosując znormalizowaną metodę deterministycznego wyprowadzania nonce (np. RFC6979) udaremnia ten atak, pod warunkiem sprawdzenia, czy wygenerowany podpis pasuje do oczekiwanego. Jednak zapewnienie tego wymaga załadowania drugiego urządzenia tym samym materiałem siewnym, co prowadzi do tych samych problemów praktycznych, o których mowa w poprzedniej sekcji.
🛡️ Ciekawym podejściem jest sprytny sposób siła urządzenie, aby faktycznie wybrało losową wartość jednorazową. Służący do tego protokół, tzw przeciw wygnaniu or antykleptoński, jest obecnie zaimplementowany w portfelach sprzętowych Blockstream Jade i ShiftCrypto BitBox02. Czytaj więcej na Blog ShiftCrypto, który zawiera również techniczny opis sposobu przeprowadzenia takiego ataku.
Ok, więc nie ma nadziei?
Większość wymienionych powyżej mechanizmów obronnych wymaga od użytkownika wykonywania wyraźnych, natrętnych działań w celu ochrony: albo poprzez samodzielne wygenerowanie materiału siewnego (zasadniczo przy użyciu mózgu w celu zastąpienia funkcjonalności portfela sprzętowego), albo wykorzystanie dodatkowe urządzenie weryfikujące poprawność wykonania obliczeń.
Jednak protokół anty-exfil wyróżnia się: biorąc pod uwagę, że zawsze istnieje maszyna pośrednicząca między sygnatariuszem sprzętu a światem zewnętrznym, ta maszyna może pomóc. Jest to możliwe dzięki interaktywnemu protokołowi ze sygnatariuszem sprzętu egzekwować użycie prawdziwie losowego identyfikatora jednorazowego, zmniejszając w ten sposób lub eliminując szansę na znaczącą manipulację ostatecznym podpisem.
W tym poście na blogu interesują nas przede wszystkim tego typu środki: podczas gdy strategie, które znacznie pogarszają UX, mogą być atrakcyjne dla zaawansowanych użytkowników, prawdopodobnie sprawią, że rzeczy gorzej w praktyce dla użytkowników mniej biegłych technicznie – czyli zdecydowanej większości.
Model bezpieczeństwa
Standardowy model dla sygnatariuszy sprzętowych
Producenci sprzętu podpisującego mają na celu ochronę użytkowników przed różnymi potencjalnymi zagrożeniami (więcej informacji można znaleźć w części Model zagrożenia). W tym artykule skupimy się na jednej, bardzo ważnej właściwości, którą można podsumować w następujący sposób:
Użytkownicy nie mogą zostać oszukani i nakłonieni do działania skutkującego utratą środków, pod warunkiem, że zrozumieją i zweryfikują informacje wyświetlane na ekranie przed zatwierdzeniem.
Zatwierdzenie jest wymagane w przypadku wszelkich wrażliwych działań, w szczególności podpisów. Ochrona materiału siewnego byłaby daremna, gdyby złośliwe oprogramowanie mogło generować podpisy dla dowolnych wiadomości, takich jak transakcja drenująca wszystkie fundusze!
Należy podkreślić, że powyższa właściwość musi być prawdziwa, nawet jeśli portfel oprogramowania zostanie całkowicie naruszony. Nie można ufać temu, co jest wyświetlane na ekranie laptopa/telefonu: złośliwe oprogramowanie może podmieniać adresy, wprowadzać w błąd co do tego, które adresy należą do Ciebie, przedstawiać transakcję, a następnie przekazywać inną do urządzenia w celu podpisania itp.
Dlatego oprogramowanie układowe i aplikacje działające na sprzętowym urządzeniu podpisującym z natury uwzględniają portfel oprogramowania niezaufany i niegodny zaufania.
Model ochrony przed backdoorami dla portfeli programowych
W tej części całkowicie odwrócimy role. Teraz chcemy zaprojektować a portfel oprogramowania które uniemożliwiają producentowi sprzętu kradzież lub spowodowanie utraty funduszy, nawet jeśli urządzenie jest całkowicie złośliwe.
Dlatego nie może to być własność urządzenie: raczej jest to właściwość portfel oprogramowania organizować coś. Możemy to podsumować w następujący sposób:
Pod warunkiem, że portfel oprogramowania nie zostanie naruszony, producent sprzętu nie może spowodować utraty środków przez użytkownika.
Może się to wydawać sprzeczne z intuicją, ponieważ jest bezpośrednio sprzeczne ze standardowym modelem bezpieczeństwa opisanym powyżej. Jednak „brak backdoora” oznacza „robienie dokładnie tego, co powinni”. Ponieważ portfel oprogramowania jest słońce interfejs między urządzeniem podpisującym a światem zewnętrznym, to jedyne miejsce, w którym można wyegzekwować ochronę przed niewłaściwym zachowaniem — czy to z powodu błędu, czy jawnej kompromitacji urządzenia.
Należy zauważyć, że ten model znacznie wykracza poza awarię urządzenia, taką jak błąd, który można wykorzystać. W tym przypadku działamy w scenariuszu, w którym urządzenie aktywnie dąży do spowodowania utraty środków.
Oczywiście nie ma możliwej ochrony, jeśli producent pomyślnie poszedł na kompromis obie urządzenie, a także komputer, na którym działa portfel oprogramowania. Dlatego absolutnie konieczne jest upewnienie się, że portfel oprogramowania jest open source i podlega audytowi, zwłaszcza jeśli jest zbudowany przez tego samego dostawcę, który produkuje sprzęt.
Rola miniskryptu
Miniscript wyposaża programistów portfeli w możliwość pełnego wykorzystania zaawansowanych funkcji Bitcoin Script. Aby zapoznać się z przeglądem niesamowitych możliwości odblokowywanych przez miniskrypt, zobacz nasz poprzedni wpis na blogu. Może też zechcesz posłuchać Odcinek 452 podcastu Stephan Livera do dyskusji na temat tego, co miniscript wnosi do krajobrazu bitcoinów.
Aplikacja Ledger Bitcoin obsługuje miniscript od czasu wydania 2.1.0, które zostało wdrożone w lutym 2023 r. Na konferencji Bitcoin 2023 w Miami firma Wizardsardine ogłosiła wydanie 1.0 swojego Portfel Liany, pierwszy wdrożony portfel oparty na miniskrypcie.
Podstawową ideą tego postu jest to, że konto portfela bitcoin może być chronione nie tylko jednym, ale także za pomocą wielokrotność Klucze. Pozwala to na elastyczne struktury bezpieczeństwa, w których nawet całkowita awaria lub naruszenie klucza nie jest katastrofalne.
Rozmyślania multisigowe
Multisig to znaczące ulepszenie siły rozwiązania samoobsługowego. Wykorzystując programowalność Bitcoin Script, umożliwia tworzenie portfeli, które wymagają wielu kluczy zamiast tylko jednego. A k-z-n portfel multisig wymaga kombinacji k ważnych podpisów, z łącznej liczby n możliwe.
Jednak multisig nakłada również obciążenie UX na użytkownika i wprowadza nowe możliwości popełniania błędów. Konfiguracja typu multisig 3 z 3, obejmująca trzy różne klucze, których kopie zapasowe są bezpiecznie przechowywane w oddzielnych lokalizacjach, zapewnia wysokie bezpieczeństwo… ale oznacza również, że nawet jeśli pojedynczy klucz zostanie zgubiony, monety staną się trwale niedostępne!
Dlatego konfiguracje oferujące większą redundancję (takie jak 2-z-3 lub 3-z-5) są bardziej popularne: jeśli jeden klucz zostanie zgubiony, inne klucze nadal mogą ułatwić odzyskiwanie. Ale to wprowadza kompromis: jeśli jeden klucz zostanie naruszony bez twojej wiedzy, ogólne bezpieczeństwo zostanie znacznie zmniejszone!
Firmy takie jak Dom i Nieokiełznany kapitał specjalizują się w rozwiązaniach samoobsługowych, w przypadku których posiadają mniejszość kluczy dla swoich klientów. Pomagają również swoim użytkownikom, prowadząc ich przez proces wdrażania i upraszczając korzystanie z systemów dozoru, które w przeciwnym razie mogą być zniechęcające dla większości użytkowników nietechnicznych.
Miniskrypty i ścieżki odzyskiwania z blokadą czasową
Liana używa miniscript do tworzenia portfeli, które mają wiele sposobów wydawania pieniędzy:
- podstawowy warunek wydatkowania, który jest natychmiast dostępny;
- jeden lub więcej dodatkowych warunków wydatkowania, które stają się dostępne po określonym czasie (tzw timelock).
Umożliwia to wiele interesujących przypadków użycia:
- regeneracja: Standardowy portfel z pojedynczym podpisem lub multisig jako podstawową ścieżką wydatków; ale oddzielny mechanizm odzyskiwania (klucz z innym seedem, multisig, przyjaciel znający się na technologii, opiekun) staje się dostępny po 6 miesiącach.
- Zarządzanie: Firma z dwoma dyrektorami mogłaby ustanowić 2-of-2 dla skarbu firmy; w przypadku braku porozumienia zaufany prawnik mógł uzyskać dostęp do środków po 6 miesiącach.
- Rozpadający się multisig: Portfel zaczyna się jako 3-z-3, przechodzi na 2-z-3 po 6 miesiącach i staje się 1-z-3 po 9 miesiącach.
- Automatyczne dziedziczenie: Ścieżka powrotu do zdrowia po 6 miesiącach obejmuje 2 z 3 twoich trojga dzieci; być może druga ścieżka powrotu do zdrowia po 1 roku obejmuje notariusza, na wypadek gdyby spadkobiercy nie mogli osiągnąć konsensusu.
Uwaga: wszystkie powyższe przykłady używają a względna blokada czasowa, który odnosi się do wieku monet (czyli: kiedy ostatni raz przeniesiono środki). Kompromis polega na tym, że użytkownik musi pamiętać o wydaniu monet (wysyłając je do siebie), jeśli blokada czasowa zbliża się do wygaśnięcia.
To tylko kilka przykładów, ale powinny one wystarczyć, aby przekonać czytelnika, że miniscript jest znaczącym krokiem naprzód w kierunku wykorzystania potencjału Bitcoina jako programowalne pieniądze.
Rejestracja zasad portfela
W przypadku kont portfela Bitcoin korzystających z wielu kluczy (czy to multisig, czy bardziej wyrafinowanych rozwiązań opartych na miniskryptach), kluczowe znaczenie ma nauczenie urządzenia identyfikowania adresów należących do tego konta. Tylko w ten sposób urządzenie może pomóc użytkownikowi upewnić się, że otrzymuje lub wydaje pieniądze z właściwych adresów…
Walidacja polityki i xpuby porównanie cosignera z zaufaną kopią zapasową jest niezbędne, ale stosunkowo czasochłonne.
Dobra wiadomość jest taka, że wystarczy to zrobić tylko raz:
Po zarejestrowaniu zasady z nazwą (w przykładzie „Decaying 3of3”) urządzenie będzie mogło ją rozpoznać za każdym razem, gdy taka polityka zostanie zastosowana.
Osoby zainteresowane szczegółami technicznymi mogą znaleźć więcej informacji w zakładce Propozycja BIP.
Kopia zapasowa zasad
Jednym z krytycznych aspektów, na które należy zwrócić uwagę, jest to, że chociaż zasady wielokluczowe zezwalają na podzbiór klucze prywatne do autoryzacji transakcji, znajomość cała kolekcja klucze publiczne (i dokładny polisa) są wymagane.
Jednak w przeciwieństwie do materiału siewnego tworzenie kopii zapasowej polityki i kluczy publicznych jest znacznie mniej ryzykowne: gdyby ktoś ją odkrył, mógłby prześledzić wszystkie transakcje powiązane z tą polityką. Chociaż nie jest to idealne – prywatność ma znaczenie! − nie jest tak katastrofalne jak utrata monet i mniej kuszące dla potencjalnych napastników. W związku z tym przechowywanie wielu kopii zasad w gorących portfelach, drukowanie ich i przechowywanie w różnych miejscach, szyfrowanie i przechowywanie w chmurze itd. to opłacalne strategie.
Portfel z pojedynczym podpisem, którego nie można otworzyć wstecz
Cofnijmy się o krok. Omówiliśmy portfele z wieloma podpisami, ale teraz wracamy do podstaw, aby stworzyć portfel z jednym podpisem. Dokładniej, chcemy takiego portfela czuje i wygląd jak portfel z jednym podpisem, po początkowej fazie konfiguracji. Naszym celem jest jednak stworzenie portfela, z którego producent nie będzie mógł ukraść Twoich środków, nawet jeśli są one złośliwe 😈, a sprzętowe urządzenie podpisujące zachowuje się w nieprzewidywalny sposób.
Podejście to można łatwo uogólnić dla portfeli z wieloma podpisami.
Poniższe przykłady zostaną napisane w języku tzw polityka, a nie miniscript. Zasady są łatwiejsze do odczytania i przemyślenia przez ludzi, a przy użyciu zautomatyzowanych narzędzi można je skompilować do miniskryptu. Przeczytaj więcej o miniskrypcie i zasadach.
Portfel sprzętowy może Cię chronić w standardowym modelu bezpieczeństwa. Miniscript może Cię chronić w modelu bezpieczeństwa anty-backdoor (i nie tylko!).
Krok zero: status quo
Jest to polityka, z której korzysta obecnie większość użytkowników: pojedynczy klucz, który pochodzi z materiału siewnego produkowanego w portfelu sprzętowym.
pk(key_ledger)
Oczywiście nie ma możliwości udowodnienia braku backdoora.
Krok pierwszy: podwój te klucze
Pierwszy krok jest prosty:
and(pk(key_ledger), pk(key_client))
Tutaj, key_client
jest generowany na komputerze użytkownika, stąd a hot key. Zasadniczo jest to konfiguracja multisig 2 z 2. Kluczowym aspektem jest to, że użytkownik nie wchodzi z nim zbyt często w interakcję key_client
: portfel programowy generuje ten klucz, dołącza go do kopii zapasowej portfela i podpisuje w razie potrzeby (na przykład, gdy użytkownik jest zajęty podpisywaniem za pomocą osoby podpisującej sprzęt).
To już wydaje się dość interesujące: bez tych funduszy nie można ich wydać key_client
, która jest niedostępna dla dostawcy sprzętu; nawet gdyby zły sprzedawca miał pełną wiedzę o kluczu w urządzeniu, nadal nie byłby w stanie przenieść środków bez wyraźnego namierzenia użytkownika, na przykład poprzez włamanie się do maszyny, na której działa ich portfel oprogramowania.
Jest jednak problem: podczas dołączania do portfela osoba podpisująca sprzęt jest jedyną jednostką zdolną do wygenerowania klucza publicznego (xpub) key_ledger
używane w portfelu. W związku z tym urządzenie może celowo generować plik Wrongs xpub kontrolowany przez atakującego, a później odmówić (lub nie być w stanie) podpisania. Prawdopodobnie jest to dość ekstremalny scenariusz ataku: twórca backdoora nie może ukraść funduszy, a jedyne, co może zrobić, to indywidualnie wybrać użytkownika i zażądać okupu („Mogę pomóc ci odzyskać pieniądze, jeśli zapłacisz mi połowę ”).
Mówiąc bardziej realistycznie, zwiększa to prawdopodobieństwo popełnienia błędów: masz teraz dwa klucze seed/private i potrzebujesz obie aby móc wydawać. Przegraj albo, a monety zostaną zablokowane na zawsze.
Krok drugi: odzyskiwanie z blokadą czasową
Wprowadzamy osobny klucz odzyskiwania, dostępny tylko po określonej blokadzie czasowej: and(older(25920)
, pk(key_recovery))
, gdzie 25920 to przybliżona liczba bloków w ciągu 6 miesięcy. Pełna polisa staje się:
or(
and(pk(key_ledger), pk(key_client)), and(after(25920), pk(key_recovery))
)
Jest to podobne do poprzedniego scenariusza, ale z niespodzianką: if key_ledger
or key_client
stanie się niedostępny z jakiegokolwiek powodu (najczęściej utrata początkowej kopii zapasowej!), a ścieżka odzyskiwania staje się dostępny po 6 miesiącach.
Istnieje kilka opcji key_recovery
, każdy z własnymi kompromisami:
a. Użyj innego hot key. Jest to praktyczne rozwiązanie, o ile użytkownik pamięta o zresetowaniu blokady czasowej. Jeśli jednak klawisze skrótu zostaną naruszone (scenariusz, który ogólnie należy uznać za całkiem prawdopodobny!), osoba atakująca może podjąć próbę uzyskania dostępu do funduszy zaraz po wygaśnięciu blokady czasowej, inicjując wyścig z prawowitym właścicielem.
b. Użyj oddzielnego sprzętowego urządzenia do podpisywania. Jest to solidne rozwiązanie, które w razie potrzeby może być używane w połączeniu z innym dostawcą; jednak zwiększa to złożoność konfiguracji i koszt dla użytkownika pod względem doświadczenia użytkownika.
c. Skorzystaj z zaufanej usługi zewnętrznej. Portfel oprogramowania może importować xpub z usługi zewnętrznej, używając go jako key_recovery
. Ta strona trzecia jest zaufana tylko wtedy, gdy wygaśnie blokada czasowa, co może być atrakcyjnym kompromisem dla niektórych użytkowników.
Jak wspomniano, podobnie jak w przypadku każdej polisy z blokadami czasowymi, ważne jest, aby użytkownik pamiętał o odświeżeniu monet przed wygaśnięciem blokady czasowej.
Krok trzeci: niezaufana strona trzecia
Połączmy oba pomysły (a) i (c): dla ścieżki odzyskiwania potrzebujemy lokalnego skrótu klawiszowego key_recovery_local
I key_recovery_remote
który jest hostowany przez częściowo zaufaną usługę; zachowujemy również blokadę czasową.
or(
and(pk(key_ledger), pk(key_client)),
and(older(25920),
and(pk(key_recovery_local), pk(key_recovery_remote))
)
)
Zmniejsza to wymagany poziom zaufania ze strony usługi odzyskiwania. Musimy jednak zachować ostrożność: sama usługa może monitorować blockchain i wykrywać nasze UTXO – w końcu dostarczyły nam one key_recovery_remote
xpub, aby mogli skanować w poszukiwaniu UTXO zawierających klucze pubowe pochodzące z key_recovery_remote
. Będą mogli poznać naszą historię finansową, nawet przed upływem terminu, a nawet jeśli nigdy nie korzystaliśmy z ich usług.
Uwaga: Drzewa korzeniowe mogą wyeliminować ten problem z prywatnością w przypadku niektórych zasad, ale nie zawsze tak jest i wymaga to starannej oceny w oparciu o konkretną politykę.
Krok czwarty: oślep osobę trzecią 🙈
Aby usługa odzyskiwania nie dowiedziała się o naszej historii finansowej, zamiast używać klucza publicznego, który nam przekazuje, możemy użyć niewidomy xpub technika szczegółowo wyjaśnione przez mflaxmana tutaj. Krótko mówiąc, zamiast używać key_recovery_remote
w naszej polityce wybieramy cztery 31-bitowe liczby losowe a
, b
, c
, d
( czynniki oślepiające) i używamy następującego BIP-32 pochodny klucz pubowy:
key_recovery_remote_blind = key_recovery_remote_blind/a/b/c/d
Ważne jest, abyśmy również dodali key_recovery_remote
oraz czynniki zaślepiające a
, b
, c
i d
do naszej kopii zapasowej, do wykorzystania w przyszłości.
Jeśli kiedykolwiek będziemy musieli skorzystać z usługi odzyskiwania, ujawnimy to a
, b
, c
, d
do nich. Do tego czasu nie mają możliwości odkrycia, że klucze pochodzą od nich key_recovery_remote
są publikowane na blockchainie: liczba możliwych kombinacji dla 4 czynników oślepiających wynosi 2^(31*4) = 2^124
, co uniemożliwia brutalne użycie ich wszystkich.
Krok piąty: zbyt wiele skrótów klawiszowych może cię poparzyć 🔥
Udało nam się sprawić, że nasz portfel z oprogramowaniem nie będzie miał możliwości backdoora. Wprowadziliśmy jednak inny problem: oba warunki wydatkowania wykorzystują lokalnie generowaną, gorąco klucz, który nie jest weryfikowany przez portfel sprzętowy. W związku z tym, jeśli komputer hosta zostanie naruszony, może to nakłonić Cię do zarejestrowania zasad przy użyciu kluczy pubkey key_client
i key_recovery_local
, ale umieść losowe, niepowiązane klucze prywatne w naszej kopii zapasowej (pamiętaj, że plik gorąco klucze są częścią naszej kopii zapasowej!).
To w zasadzie spowodowałoby wysłanie jakichkolwiek środków do portfela nie do zniesienia, ponieważ nikt nie kontroluje kluczy prywatnych niezbędnych do podpisania.
Istnieje kilka rozwiązań tego problemu:
- Podczas onboardingu, po wydrukowaniu kopii zapasowej na papierze, możemy użyć osobnego urządzenia, aby sprawdzić, czy prywatne i publiczne klawisze skrótu na kopii zapasowej rzeczywiście pasują. Takie podejście wyeliminowałoby problem, ponieważ bylibyśmy pewni, że mamy wszystkie wymagane klucze potrzebne do rekonstrukcji i podpisania.
- Możemy dodać kolejny warunek wydatków z jeszcze dłuższym blokadą czasową (9 miesięcy, 38880 bloków), który wymaga jedynie
key_ledger_failsafe
z urządzenia sprzętowego. W ten sposób, w absolutnie najgorszym przypadku, gdy wszystko inne zawiedzie, wracamy do bezpieczeństwa pojedynczego urządzenia podpisującego. W normalnych operacjach nigdy nie pozwolilibyśmy na wygaśnięcie pierwszej blokady czasowej, dlatego też druga blokada czasowa również nie wygaśnie!
Przy drugim podejściu ostateczna polityka wyglądałaby tak
or(
and(pk(key_ledger), pk(key_client)),
or(
and(older(25920),
and(pk(key_recovery_local), pk(key_recovery_remote_blind))
),
and(older(38880), pk(key_ledger_failsafe))
),
)
Ta konfiguracja portfela programowego spełnia wszystkie właściwości bezpieczeństwa, o których mówiliśmy na początku. Ponadto oferuje ścieżkę odzyskiwania w przypadku głównych kluczy wydatków key_ledger
są zgubieni. Fajna funkcja!
Wdrażanie do portfela oprogramowania, którego nie można otwierać wstecz
Jak wyglądałoby doświadczenie użytkownika portfela korzystającego z tak złożonej polityki? Oto krótki przegląd:
- Użytkownik otwiera portfel oprogramowania i rozpoczyna tworzenie nowego konta.
- Portfel oprogramowania monituje użytkownika o podłączenie urządzenia podpisującego i pobiera pliki xpubs dla
key_ledger
ikey_ledger_failsafe
. - Portfel oprogramowania autonomicznie generuje klucz skrótu key_client.
- Portfel oprogramowania uzyskuje
key_recovery_remote
z usługi cosigningu lub umożliwia użytkownikowi określenie klucza w inny sposób. Opcjonalnie obliczakey_recovery_remote_blind
przy użyciu wspomnianej wcześniej techniki oślepiania. - Portfel oprogramowania generuje kopię zapasową polityki zawierającą dokładną politykę miniskryptu, wszystkie xpuby oraz rozszerzony klucz prywatny dla
key_client
Klawisz skrótu. Ta kopia zapasowa jest bezpiecznie przechowywana (na przykład wydrukowana na papierze lub zapisana na osobnym urządzeniu). - Na koniec portfel programowy instruuje użytkownika, aby zarejestrował politykę na urządzeniu. Użytkownik sprawdza kopię zapasową (na papierze lub na innym nośniku niż ekran kontrolowany przez portfel oprogramowania).
Portfel oprogramowania zarządza większością powyższych kroków, dzięki czemu zaangażowanie użytkownika nie jest bardziej uciążliwe niż oczekiwany wysiłek potrzebny dzisiaj do skonfigurowania portfela z wieloma podpisami.
Wdrożenie powinno zająć tylko kilka minut po zbudowaniu dobrego UX. Po ukończeniu portfel programowy może zapewnić użytkownikowi doświadczenie bardzo podobne do typowego portfela z pojedynczym podpisem. Oto jak miniscript zmieni wszystko: znikając z pola widzenia użytkownika!
Ulepszenia korzenia głównego
Ledger obsługuje miniscript od wersji 2.1.0 aplikacji Bitcoin, wydanej w marcu. Chociaż obsługa odbierania i wydawania pieniędzy z adresów głównych była włączona od softfork taproot w listopadzie 2021 r. dopracowujemy kolejny etap planu: obsługę miniskryptów dla programu Taproot.
Taproot będzie miał ogromny wpływ na użyteczność podejść przedstawionych w tym artykule. Jeśli podstawowa ścieżka wydatków jest warunkiem wydatków z jednym kluczem, istnienie ścieżek wydatków odzyskiwania będzie niewykrywalne w łańcuchu bloków, chyba że zostaną one wykorzystane. To znacznie poprawi prywatność, całkowicie eliminując wszelkie odciski palców dla standardowej ścieżki wydatków. Ponadto poprawia skalowalność, ponieważ standardowa ścieżka wydatków staje się tak opłacalna, jak to tylko możliwe. Oznacza to, że żadne dodatkowe koszty nie zostaną poniesione z powodu obecności ścieżek odzyskiwania, chyba że są one używane. Jest to znaczące ulepszenie w stosunku do transakcji SegWit, które wymagają publikowania całego skryptu, w tym wszystkich warunków wydatkowania, podczas dowolnego wydatkowania.
Wreszcie bardziej zaawansowane protokoły, takie jak MuSig2 (ostatnio znormalizowane) i FROST doładuje ścieżkę klucza głównego. Zbudowane na sygnaturach Schnorra, protokoły te pozwalają na stworzenie jednego zagregowany klucz pubowy który może być użyty do reprezentowania n-z-n multipodpis lub a k-z-n schemat progów. Pozwoliłoby to na użycie ścieżki klucza głównego nawet w przypadkach, które obecnie są częściej reprezentowane przez określone skrypty multisig.
wnioski
Ten artykuł bada małą (ale ważną) niszę ogromnej przestrzeni projektowej, którą miniscript uwalnia dla portfeli oprogramowania.
Pokazaliśmy, w jaki sposób miniscript może zostać wykorzystany do stworzenia portfela oprogramowania „bez backdoora”, dodając jednocześnie dodatkową ścieżkę odzyskiwania, która pozwala zapobiegać katastrofalnej utracie kluczy. Podczas gdy sprzętowe urządzenia podpisujące nie mogą wymusić modelu bezpieczeństwa chroniącego przed backdoorami, obsługując miniscript umożliwiają portfele programowe, które dokładnie to robią!
Sprytnie wykorzystując kombinację schematów multisignature, blokad czasowych, blind xpub i skrótów klawiszowych, zademonstrowaliśmy bezpieczną konfigurację portfela, która równoważy bezpieczeństwo, prywatność i solidność.
Co więcej, argumentowaliśmy, że jest to możliwe bez negatywnego wpływu na wrażenia użytkownika, ponieważ złożoność konfiguracji nie przekłada się na duże dodatkowe obciążenie UX.
Jesteśmy podekscytowani możliwościami, które miniscript odblokuje dla następnej generacji samodzielnej opieki nad bitcoinami.
- Dystrybucja treści i PR oparta na SEO. Uzyskaj wzmocnienie już dziś.
- PlatoData.Network Pionowe generatywne AI. Wzmocnij się. Dostęp tutaj.
- PlatoAiStream. Inteligencja Web3. Wiedza wzmocniona. Dostęp tutaj.
- PlatonESG. Motoryzacja / pojazdy elektryczne, Węgiel Czysta technologia, Energia, Środowisko, Słoneczny, Gospodarowanie odpadami. Dostęp tutaj.
- Przesunięcia bloków. Modernizacja własności offsetu środowiskowego. Dostęp tutaj.
- Źródło: https://www.ledger.com/blog/towards-a-trustless-bitcoin-wallet-with-miniscript
- :ma
- :Jest
- :nie
- :Gdzie
- $W GÓRĘ
- 1
- 2021
- 2023
- 30
- 7
- 9
- a
- zdolność
- Zdolny
- O nas
- powyżej
- bezwzględny
- absolutnie
- dostęp
- dostęp
- dostępny
- zgodność
- Konto
- Konta
- Działania
- działania
- aktywnie
- faktycznie
- Dodaj
- dodanie
- dodatek
- Dodatkowy
- do tego
- Adresy
- zaawansowany
- Po
- przed
- wiek
- AID
- zmierzać
- Wszystkie kategorie
- dopuszczać
- pozwala
- wzdłuż
- już
- również
- Chociaż
- zawsze
- an
- i
- ogłosił
- Inne
- każdy
- wszystko
- Aplikacja
- pociągający
- zjawić się
- aplikacje
- podejście
- awanse
- zatwierdzenie
- przybliżony
- SĄ
- prawdopodobnie
- argumentował
- artykuł
- AS
- aspekt
- pomagać
- powiązany
- At
- atakować
- podlegający audytowi
- autoryzować
- zautomatyzowane
- autonomicznie
- dostępny
- z powrotem
- tylne drzwi
- poparła
- poparcie
- backup
- salda
- na podstawie
- podstawowy
- Gruntownie
- Podstawy
- BE
- bo
- stają się
- staje się
- zanim
- Początek
- jest
- poniżej
- BEST
- pomiędzy
- Poza
- Bitcoin
- Bitcoin Wallet
- portfele bitcoin
- Mieszanka
- blockchain
- Bloki
- Blockstream
- Blog
- obie
- Mózg
- Przynosi
- nadawanie
- Bug
- budować
- wybudowany
- ciężar
- palić
- biznes
- zajęty
- ale
- by
- nazywa
- CAN
- nie może
- zdolny
- ostrożny
- walizka
- Etui
- katastrofalny
- Spowodować
- spowodowanie
- ostrożność
- pewien
- wyzwanie
- szansa
- zmiana
- Dzieci
- żeton
- Dodaj
- Wybierając
- twierdził,
- wyraźnie
- Chmura
- przechowywanie w chmurze
- kod
- Monety
- połączenie
- kombinacje
- handlowy
- wspólny
- powszechnie
- komunikować
- Firmy
- sukcesy firma
- Firma
- kompletny
- całkowicie
- kompleks
- kompleksowość
- Zagrożone
- kompromis
- obliczenia
- computing
- Obawy
- warunek
- Warunki
- Konferencja
- systemu
- Skontaktuj się
- Zgoda
- w konsekwencji
- Rozważać
- za
- zawarte
- kontrolowanych
- kontroli
- przekonać
- skorygowania
- uszkodzony
- Koszty:
- mógłby
- Kurs
- Stwórz
- Tworzenie
- tworzenie
- twórca
- krytyczny
- aspekt krytyczny
- istotny
- Obecnie
- kustosz
- Areszt
- Klientów
- Niebezpieczny
- upadek
- zmniejsza
- uważać
- zdefiniowane
- Kreowanie
- wykazać
- wdrażane
- Pochodny
- opis
- Wnętrze
- zaprojektowany
- życzenia
- detal
- szczegółowe
- detale
- wykryć
- deweloperzy
- urządzenie
- urządzenia
- różne
- trudny
- zmniejsza się
- bezpośrednio
- Dyrektorzy
- znikanie
- fatalny
- odkryj
- odkrywanie
- omówione
- dyskusja
- wystawiany
- do
- robi
- Nie
- zrobić
- Podwójna
- z powodu
- podczas
- każdy
- łatwiej
- z łatwością
- wysiłek
- bądź
- wyeliminować
- eliminując
- więcej
- podkreślać
- zatrudniony
- umożliwiać
- włączony
- Umożliwia
- zakończenia
- egzekwować
- dość
- zapewnić
- zapewnienie
- wprowadzenie
- nęcący
- Cały
- całkowicie
- jednostka
- sprzęt
- Błędy
- szczególnie
- niezbędny
- istotnie
- zapewniają
- itp
- ewaluację
- Parzyste
- EVER
- Każdy
- wszystko
- dokładnie
- przykład
- przykłady
- podniecony
- wykonać
- wykonany
- Ćwiczenie
- istnienie
- spodziewany
- doświadczenie
- wygaśnięcie
- Wykorzystać
- odkrywa
- eksport
- rozciąga się
- zewnętrzny
- skrajny
- ułatwiać
- Czynniki
- nie
- Brak
- dość
- Spadać
- daleko
- Cecha
- Korzyści
- luty
- kilka
- finał
- budżetowy
- historia finansowa
- Znajdź
- i terminów, a
- elastyczne
- Trzepnięcie
- Skupiać
- następujący
- następujący sposób
- W razie zamówieenia projektu
- na zawsze
- Naprzód
- cztery
- Ramy
- często
- przyjaciel
- od
- pełny
- w pełni
- Funkcjonalność
- fundusz
- fundusze
- Ponadto
- daremny
- przyszłość
- ogólny cel
- ogólnie
- Generować
- wygenerowane
- generuje
- generujący
- generacja
- dany
- Go
- będzie
- dobry
- wspaniały
- bardzo
- miał
- Pół
- sprzęt komputerowy
- urządzenie sprzętowe
- Portfel Hardware
- Producent portfela sprzętowego
- Portfele na sprzęt
- szkodliwy
- Have
- mający
- pomoc
- stąd
- historia
- przytrzymaj
- nadzieję
- gospodarz
- hostowane
- HOT
- W jaki sposób
- Jednak
- http
- HTTPS
- olbrzymi
- Ludzie
- pomysł
- idealny
- pomysły
- zidentyfikować
- if
- natychmiast
- Rezultat
- wpływ
- realizowane
- importować
- ważny
- niemożliwy
- podnieść
- in
- obejmuje
- Włącznie z
- włączenie
- Zwiększenia
- niewiarygodny
- rzeczywiście
- niezależny
- Indywidualnie
- przemysł
- Informacja
- właściwie
- początkowy
- wewnątrz
- Insider
- inspirować
- Instalacja
- przykład
- zamiast
- celowo
- interakcji
- interaktywne
- odsetki
- zainteresowany
- ciekawy
- Interfejs
- najnowszych
- przedstawiać
- wprowadzono
- Przedstawia
- intrusively
- Zaangażowanie
- z udziałem
- problem
- IT
- JEGO
- samo
- właśnie
- tylko jeden
- Klawisz
- Klawisze
- Wiedzieć
- wiedza
- znany
- krajobraz
- język
- laptopa
- Nazwisko
- później
- prawnik
- Wyprowadzenia
- UCZYĆ SIĘ
- nauka
- najmniej
- Księga główna
- lewo
- prawowity
- mniej
- niech
- poziom
- lewarowanie
- lubić
- Prawdopodobnie
- powiązany
- Katalogowany
- załadunek
- miejscowy
- lokalizacji
- zamknięty
- długo
- dłużej
- Popatrz
- wygląda jak
- stracić
- utraty
- od
- straty
- stracił
- maszyna
- Główny
- Większość
- robić
- WYKONUJE
- Dokonywanie
- malware
- zarządza
- zarządzający
- manipulowanie
- sposób
- Producent
- Producenci
- wiele
- March
- Mecz
- Może..
- znaczy
- środków
- mechanizm
- średni
- wzmiankowany
- jedynie
- wiadomość
- wiadomości
- metoda
- metody
- Miami
- może
- miniskrypt
- mniejszość
- minut
- Misja
- błędy
- model
- pieniądze
- monitorowanie
- miesięcy
- jeszcze
- Ponadto
- większość
- przeważnie
- ruch
- przeniósł
- dużo
- wielokrotność
- Multisig
- musi
- Nazwa
- zbliżony
- niezbędny
- Potrzebować
- potrzebne
- wymagania
- ujemnie
- sieci
- nigdy
- Nowości
- aktualności
- Następny
- miło
- Nie
- nietechniczne
- normalna
- listopad
- Listopad 2021
- już dziś
- numer
- z naszej
- uzyskuje
- of
- oferta
- oferuje
- Oferty
- nieaktywny
- on
- Wprowadzenie
- pewnego razu
- ONE
- te
- tylko
- koncepcja
- open source
- otwiera
- operacyjny
- operacje
- Szanse
- Opcje
- or
- zamówienie
- Inne
- Inaczej
- ludzkiej,
- na zewnątrz
- opisane
- zewnętrzne
- koniec
- ogólny
- przegląd
- własny
- właściciel
- Papier
- najważniejszy
- część
- szczególnie
- przyjęcie
- ścieżka
- Zapłacić
- wykonać
- może
- okres
- na stałe
- faza
- telefon
- Miejsce
- Miejsca
- plato
- Analiza danych Platona
- PlatoDane
- punkt
- zwrotnica
- polityka
- polityka
- Popularny
- możliwości
- możliwy
- możliwie
- Post
- potencjał
- potencjalnie
- power
- Praktyczny
- praktycznie
- praktyka
- precyzyjny
- precyzyjnie
- przewidzieć
- Możliwy do przewidzenia
- obecność
- teraźniejszość
- przedstawione
- zapobiec
- zapobiega
- poprzedni
- poprzednio
- głównie
- pierwotny
- druk
- Wcześniejszy
- prywatność
- prywatny
- Klucz prywatny
- Klucze prywatne
- Problem
- problemy
- procedura
- wygląda tak
- produkować
- Wytworzony
- produkuje
- prawidłowo
- niska zabudowa
- własność
- zaproponowane
- chronić
- chroniony
- ochrony
- ochrona
- protokół
- protokoły
- Udowodnij
- zapewniać
- pod warunkiem,
- publiczny
- Klucz publiczny
- klucze publiczne
- publikować
- opublikowany
- Wydawniczy
- cel
- położyć
- Putting
- pytanie
- Wyścig
- przypadkowy
- Okup
- raczej
- dosięgnąć
- Czytaj
- Czytelnik
- zrealizowanie
- powód
- odbieranie
- niedawno
- rozpoznać
- rekord
- regeneracja
- odnosi
- zarejestrować
- zarejestrowany
- rejestracji
- stosunkowo
- zwolnić
- wydany
- polegać
- pamiętać
- obsługi produkcji rolnej, która zastąpiła
- reprezentować
- reprezentowane
- reputacja
- wymagać
- wymagany
- Wymaga
- wynikły
- zachować
- powrót
- ujawniać
- prawo
- Ryzyko
- ryzyko
- ryzykowny
- mapa drogowa
- krzepki
- krzepkość
- Rola
- role
- bieganie
- działa
- taki sam
- powiedzieć
- Skalowalność
- skanować
- scenariusz
- schemat
- systemy
- Schnorr
- Ekran
- skrypty
- druga
- Sekcja
- bezpieczne
- bezpiecznie
- bezpieczeństwo
- widzieć
- nasienie
- posiew
- poszukuje
- wydać się
- wydaje
- SegWit
- Opieka własna
- wysyłanie
- wrażliwy
- wysłany
- oddzielny
- usługa
- zestaw
- ustawienie
- kilka
- Short
- powinien
- pokazał
- znak
- Podpisy
- znaczący
- znacznie
- podpisywanie
- znaki
- podobny
- Prosty
- upraszczanie
- ponieważ
- pojedynczy
- mały
- mądry
- So
- Tworzenie
- rozwiązanie
- Rozwiązania
- ROZWIĄZANIA
- kilka
- Ktoś
- wkrótce
- wyrafinowany
- Źródło
- Typ przestrzeni
- specjalizować
- specyficzny
- Specyfikacje
- wydać
- Spędzanie
- standard
- stojaki
- rozpocznie
- Rynek
- Ewolucja krok po kroku
- Cel
- Nadal
- przechowywanie
- przechowywany
- przechowywania
- strategie
- jest determinacja.
- sznur
- silny
- Walka
- udany
- Z powodzeniem
- taki
- streszczać
- doładowania
- wsparcie
- Wspierający
- podpory
- domniemany
- systemowy
- ryzyka Systemowego
- systemy
- Sprzęt
- Brać
- macica
- cel
- kierowania
- Techniczny
- technicznie
- Technologia
- REGULAMIN
- niż
- że
- Połączenia
- Monety
- ich
- Im
- sami
- następnie
- Tam.
- a tym samym
- w związku z tym
- Te
- one
- rzeczy
- myśleć
- Trzeci
- to
- tych
- zagrożenia
- trzy
- próg
- Przez
- A zatem
- czas
- czasochłonne
- do
- już dziś
- dzisiaj
- także
- narzędzia
- tematy
- Kwota produktów:
- w kierunku
- Wyśledzić
- śledzić
- Śledź rekord
- Pociąg
- transakcja
- transakcje
- przejścia
- tłumaczyć
- skarbiec
- Drzewa
- prawdziwy
- Zaufaj
- zaufany
- bez zaufania
- Prawda
- twist
- drugiej
- typy
- typowy
- niezdolny
- zrozumieć
- uwalnia
- w odróżnieniu
- odblokować
- odblokowuje
- nieobliczalny
- aż do
- uaktualnienie
- us
- użyteczność
- posługiwać się
- używany
- Użytkownik
- Doświadczenie użytkownika
- Użytkownicy
- zastosowania
- za pomocą
- wykorzystać
- wykorzystany
- Wykorzystując
- ux
- UPRAWOMOCNIĆ
- różnorodność
- różnorodny
- Naprawiono
- sprzedawca
- zweryfikowana
- zweryfikować
- wersja
- początku.
- wykonalne
- istotny
- Luki w zabezpieczeniach
- czekać
- Portfel
- Portfele
- chcieć
- była
- Droga..
- sposoby
- we
- były
- Co
- jeśli chodzi o komunikację i motywację
- ilekroć
- czy
- który
- Podczas
- cały
- dlaczego
- Wikipedia
- będzie
- w
- w ciągu
- bez
- słowa
- świat
- by
- napisany
- Źle
- rok
- jeszcze
- You
- Twój
- siebie
- zefirnet
- zero