Kaj morate vedeti: |
- Miniscript omogoča izdelavo programskih denarnic Bitcoin, ki onemogočajo izkoriščanje stranskih vrat. Z veseljem lahko povemo, da je Ledger prvi komercialni proizvajalec denarnice strojne opreme, ki podpira miniscript.
- Dodatne funkcije je mogoče implementirati brez ogrožanja uporabniške izkušnje. |
Naprave za podpisovanje strojne opreme so zasnovane za zaščito uporabnika pred različnimi običajnimi vektorji napadov, kot so:
- Nepooblaščen dostop in pridobivanje semena
- Zlonamerna programska oprema, ki okuži vašo povezano programsko denarnico
- Ranljivosti programske opreme na sami napravi
Kot pri vsakem poslu je tudi v interesu proizvajalca, da izdeluje naprave kot nepremagljiv kot lahko. Uspeh v tej misiji je najpomembnejši in varnostna podjetja, kot je Ledger, se zanašajo na ugled, zgrajen na podlagi svojih izkušenj.
Vendar imajo nekateri uporabniki še vedno pomisleke. Kaj preprečuje, da bi podjetje samo skrilo a Zakulisni v napravah?
V samostojnem varstvu smo ne zaupajte, preverimo.
Ali lahko uporabnik res preveriti, ali naprava nima stranskih vrat?
To je ključno vprašanje, ki ga obravnava ta članek. Natančneje, ta članek obravnava naslednje teme:
- kaj so stranska vrata in zakaj je težko, če ne nemogoče, dokazati, da jih ni;
- zakaj se lahko le uporabniki zaščitijo pred tem tveganjem;
- kako miniscript omogoča praktične rešitve tega izziva za bitcoin denarnice.
Kot prva podprta strojna denarnica miniskript, upamo, da bomo navdihnili razvijalce, da zgradijo varne rešitve in nadgradijo našo celotno industrijo ter odpravijo možnost, da bi se takšno sistemsko tveganje sploh uresničilo.
Kako zgraditi unbackdoorable podpisna naprava
Recimo jasno: ne morete.
Da bi se ubranili pred morebitnimi stranskimi vrati, potrebujete drugačen model napada od tistega, ki smo ga opisali zgoraj: v tem scenariju je lahko nasprotnik sam prodajalec ali pokvarjeni notranji uporabnik.
Pogosto oglaševana rešitev za to težavo je odprtokodna: navsezadnje, če lahko pregledate kodo, kaj bi lahko šlo narobe?
Vendar je resnica bolj zapletena. Ker prodajalec sestavi strojno opremo, lahko stranska vrata v celoti vsebujejo. Strojna oprema je lahko zasnovana tako, da na določenih točkah ne upošteva programske opreme in namesto nje izvaja zlonamerno kodo.
Za razliko od programske opreme, ki se izvaja na računalniških napravah splošnega namena (kot je vaš prenosnik ali telefon), je pregledovanje strojne opreme z današnjo tehnologijo praktično nemogoče. Tudi če bi bile specifikacije strojne opreme popolnoma odprtokodne, skupaj s podrobnostmi o vseh posameznih vratih v vezju, bi še vedno potrebovali drago opremo, da preverite, ali je določen čip zgrajen v skladu z njimi.
Kako narediti backdoor strojne denarnice
Tukaj je nekaj najpreprostejših metod, ki bi jih zlonamerni prodajalec strojne opreme lahko uporabil za uvedbo stranskih vrat, skupaj z nekaterimi načini, kako se lahko napredni uporabniki danes zaščitijo.
Generacija semena
Številne naprave vam ponujajo možnost ustvarjanja semena (imenovanega tudi Skrivna besedna zveza za obnovitev) neposredno na napravi z uporabo a Resnični generator naključnih števil.
😈 Zlobna naprava bi lahko ustvarila semena, ki so videti naključna, vendar so napadalcu dejansko predvidljiva.
🛡️ Izkušeni uporabniki se lahko izognejo tej težavi z ustvarjanjem mnemonike brez povezave. Poleg tega vključuje robustno geslo lahko tudi ustvari popolnoma neodvisno seme, ki ga prodajalec strojne opreme ne more predvideti. Kompromis je v tem, da morajo uporabniki zagotoviti, da poleg mnemoničnih besed pravilno varnostno kopirajo tudi geslo.
Izpeljava javnega ključa
Strojne denarnice pridobivajo in izvažajo javni ključi (Tudi imenovan xpubs, kratek za razširjeni javni ključ kot je opredeljeno v BIP-32. xpubs se uporabljajo za ustvarjanje možnih naslovov za prejemanje kovancev.
😈 Zlobna naprava bi lahko vrnila javne ključe, ki jih nadzoruje napadalec, namesto pravilnih, izpeljanih iz semena.
🛡️ Uporabniki so lahko potrdili izpeljano xpub na drugi napravi brez povezave. Vendar pa vnos semena v druge naprave nosi lastna tveganja. Uporabniki, ki se zavedajo varnosti, bi lahko vsako napravo, ki je dostopala do semena, ocenili kot nevarno, potencialno do te mere, da bi jo uničili. Običajni uporabnik bo morda imel težave s pravilno izvedbo tega postopka, medtem ko bo obvladal dodatna tveganja.
Uhajanje informacij
An zračna luknja se pogosto predlaga kot rešitev za preprečevanje zlonamerne ali ogrožene naprave, da bi odtujila zasebne ključe. Konec koncev, če naprava ne more komunicirati z zunanjim svetom, ne more storiti ničesar škodljivega, kajne?
Ne čisto!
Naprava lahko vedno komunicira, ko je v uporabi: ustvarja podpise. Ti podpisi končajo znotraj transakcij, ki se oddajajo in za vedno shranijo v verigi blokov.
Podpis je naključni bajtni niz z najmanj 64 bajti. Ker pa lahko istemu sporočilu ustreza več kot en veljaven podpis, lahko zlonamerna naprava vsakič, ko je izdelan podpis, sporoči nekaj bitov informacij, tako da ustvari več podpisov in selektivno izbere, katere bo objavila.
😈 Lažna naprava lahko ustvari nenaključne podpise, ki v številnih transakcijah napadalcu razkrijejo seme!
Napadalec, ki bi uspel namestiti takšna stranska vrata, bi moral samo počakati, da se v verigi blokov pojavijo zlonamerni podpisi, dokler ne dobi dovolj informacij za rekonstrukcijo celotnega semena.
🛡️ Za podpise ECDSA z uporabo standardizirane metode determinističnega izpeljanja nonce (npr. RFC6979) prepreči ta napad, pod pogojem, da se potrdi, da se proizvedeni podpis ujema s pričakovanim. Vendar pa je za zagotovitev, da je temu tako, treba naložiti drugo napravo z istim semenom, kar vodi do enakih praktičnih težav, omenjenih v prejšnjem razdelku.
🛡️ Zanimiv pristop je uporaba pametnega načina za moč naprava dejansko izbere naključno enkratno številko. Protokol za ta namen, znan kot proti eksfil or anti-klepto, je trenutno implementiran v strojne denarnice Blockstream Jade in ShiftCrypto BitBox02. Preberite več na Blog ShiftCrypto, ki vključuje tudi tehnični opis, kako se takšen napad lahko izvede.
Ok potem ni upanja?
Večina obramb🛡️, naštetih zgoraj, večinoma zahteva, da uporabnik izvaja eksplicitna, vsiljiva dejanja, da se zaščiti: bodisi tako, da sam ustvari seme (v bistvu z uporabo svojih možganov za zamenjavo funkcionalnosti iz denarnice strojne opreme) ali z uporabo dodatne naprave za preverjanje, ali so izračuni pravilno izvedeni.
Vendar pa protokol anti-exfil izstopa: glede na to, da vedno obstaja stroj, ki posreduje med podpisnikom strojne opreme in zunanjim svetom, lahko ta stroj pomaga. Prek interaktivnega protokola s podpisnikom strojne opreme lahko uveljaviti uporaba resnično naključnega nonce, s čimer se zmanjša ali odpravi možnost znatne manipulacije končnega podpisa.
V tej objavi v spletnem dnevniku nas zanimajo predvsem te vrste ukrepov: medtem ko so strategije, ki znatno poslabšajo UX, lahko privlačne za napredne uporabnike, bodo verjetno naredile stvari slabše v praksi za tehnično manj vešče uporabnike − ki jih je velika večina.
Varnostni model
Standardni model za podpisnike strojne opreme
Proizvajalci podpisnikov strojne opreme želijo zaščititi uporabnike pred različnimi možnimi grožnjami (za več podrobnosti glejte Model groženj). V tem članku se osredotočamo na eno zelo pomembno lastnost, ki jo lahko povzamemo na naslednji način:
Uporabnikov ni mogoče zavesti v dejanje, ki bi povzročilo izgubo sredstev, pod pogojem, da razumejo in preverijo informacije na zaslonu pred odobritvijo.
Odobritev je potrebna za vsa občutljiva dejanja, zlasti za podpise. Zaščita semena bi bila nesmiselna, če bi zlonamerna programska oprema lahko ustvarila podpise za poljubna sporočila, kot je transakcija, ki črpa vsa sredstva!
Ključno je poudariti, da mora zgornja lastnost veljati, tudi če je programska denarnica popolnoma ogrožena. Temu, kar je prikazano na zaslonu vašega prenosnika/telefona, ni mogoče zaupati: zlonamerna programska oprema bi lahko zamenjala naslove, vas zavedla, kateri naslovi so vaši, predstavila transakcijo, a nato drugo posredovala napravi za podpis itd.
Zato vdelana programska oprema in aplikacije, ki se izvajajo na napravi za podpisovanje strojne opreme, že po svoji naravi upoštevajo programsko denarnico nezaupljiv in nezaupljiv.
Varnostni model proti zadnjim vratom za programske denarnice
V tem razdelku vloge popolnoma zamenjamo. Zdaj želimo oblikovati a programska denarnica ki proizvajalcu strojne opreme preprečuje krajo ali povzroči izgubo sredstev, tudi če je naprava popolnoma zlonamerna.
Zato to ne more biti lastnina naprava: namesto tega je lastnost programska denarnica nastaviti. Lahko bi ga povzeli takole:
Pod pogojem, da programska denarnica ni ogrožena, proizvajalec strojne opreme ne more povzročiti uporabnika izgube sredstev.
To se morda zdi nelogično, saj je neposredno v nasprotju s standardnim varnostnim modelom, ki je opisan zgoraj. Vendar "brez zadnjih vrat" pomeni "delati točno to, kar bi morali narediti". Ker je programska denarnica ne vmesnik med podpisno napravo in zunanjim svetom, je to edino mesto, kjer je mogoče uveljaviti zaščito pred napačnim vedenjem − bodisi zaradi hrošča ali izrecnega ogrožanja naprave.
Upoštevajte, da ta model bistveno presega napako naprave, kot je hrošč, ki ga je mogoče izkoristiti. V tem primeru delujemo v scenariju, kjer naprava aktivno poskuša povzročiti izgubo sredstev.
Seveda ni možne zaščite, če je proizvajalec uspešno ogrozil tako naprava in tudi vaš stroj, ki poganja programsko denarnico. Zato je nujno zagotoviti, da je vaša programska denarnica odprtokodna in da jo je mogoče preverjati, zlasti če jo je izdelal isti prodajalec, ki proizvaja strojno opremo.
Vloga miniscripta
Miniscript razvijalcem denarnic omogoča, da v celoti izkoristijo napredne funkcije bitcoin skripta. Za pregled neverjetnih možnosti odklepanja miniscripta glejte naša prejšnja objava v blogu. Morda boste želeli tudi poslušati Epizoda 452 podcasta Stephan Livera za razpravo o tem, kaj miniscript prinaša bitcoin pokrajini.
Aplikacija Ledger Bitcoin podpira miniscript od svoje izdaje 2.1.0, ki je bila uvedena februarja 2023. Na konferenci Bitcoin 2023 v Miamiju je Wizardsardine napovedal izdajo 1.0 svojega Liana denarnica, prva uvedena denarnica, ki temelji na miniscriptu.
Osnovna ideja te objave je, da je račun denarnice za bitcoin mogoče zaščititi ne samo z enim, ampak z več ključi. To omogoča prilagodljive varnostne okvire, kjer tudi popolna okvara ali ogroženost ključa ni katastrofalna.
Večkratna razmišljanja
Multisig je pomembna nadgradnja moči rešitve za samostojno skrbništvo. Z izkoriščanjem programirljivosti Bitcoin Scripta omogoča ustvarjanje denarnic, ki zahtevajo več ključev namesto enega. A k-od-n multisig denarnica zahteva kombinacijo k veljavnih podpisov, od skupaj n morebitnih.
Vendar multisig prav tako obremenjuje uporabnika z UX in uvaja nove možnosti za napake. Nastavitev 3-od-3 multisig, ki vključuje tri različne ključe, ki so varno varnostno kopirani na ločenih lokacijah, nudi močno varnost ... to pa tudi pomeni, da če celo sam ključ je izgubljen, kovanci postanejo trajno nedostopni!
Zato so nastavitve, ki ponujajo več redundance (na primer 2-od-3 ali 3-od-5), bolj priljubljene: če izgubite en ključ, lahko drugi ključi še vedno olajšajo obnovitev. Toda to predstavlja kompromis: če je en ključ ogrožen, ne da bi vedeli, se splošna varnost znatno zmanjša!
Podjetja všeč Casa in Nerazvrščeni kapital so specializirani za rešitve samostojnega skrbništva, kjer imajo manjšino ključev za svoje stranke. Svojim uporabnikom pomagajo tudi tako, da jih vodijo skozi postopek vkrcanja in poenostavljajo uporabo skrbniških sistemov, ki so sicer lahko zastrašujoči za večino netehničnih uporabnikov.
Miniscript in časovno zaklenjene obnovitvene poti
Liana uporablja miniscript za ustvarjanje denarnic, ki imajo več načinov porabe:
- primarni pogoj porabe, ki je takoj na voljo;
- enega ali več dodatnih pogojev porabe, ki postanejo na voljo po določenem obdobju (t.i zaklepanje).
To omogoča številne zanimive primere uporabe:
- Obnovitev: standardna denarnica z enim podpisom ali večpodpisom kot primarno potjo porabe; vendar je ločen obnovitveni mehanizem (ključ z drugačnim semenom, multisig, tehnično podkovan prijatelj, skrbnik) na voljo po 6 mesecih.
- Upravljanje: Podjetje z dvema direktorjema bi lahko vzpostavilo 2-od-2 za blagajno podjetja; v primeru nesoglasja lahko zaupanja vreden odvetnik dostopa do sredstev po 6 mesecih.
- Razpadajoči multisig: denarnica se začne kot 3-od-3, po 2 mesecih preide v 3-od-6 in po 1 mesecih postane 3-od-9.
- Samodejno dedovanje: Pot okrevanja po 6 mesecih vključuje 2 od 3 od vaših treh otrok; morda druga pot izterjave po enem letu vključuje notarja, če dediči ne morejo doseči soglasja.
Opomba: vsi zgornji primeri uporabljajo a relativna časovna zapora, ki se nanaša na starost kovancev (to je: zadnjič, ko so bila sredstva premaknjena). Kompromis je v tem, da mora uporabnik ne pozabiti porabiti kovancev (tako da jih pošlje sebi), če se časovna ključavnica bliža izteku.
To je le nekaj primerov, vendar bi moralo biti dovolj, da bralca prepričajo, da je miniscript pomemben korak naprej k uresničevanju potenciala Bitcoina kot programabilni denar.
Registracija pravilnika denarnice
Za račune Bitcoin denarnice, ki uporabljajo več ključev (naj gre za multisig ali bolj izpopolnjene rešitve, ki temeljijo na miniscriptu), je ključnega pomena, da napravo usposobite za prepoznavanje naslovov, ki pripadajo temu računu. To je edini način, na katerega lahko naprava pomaga uporabniku zagotoviti, da prejema ali troši s pravih naslovov ...
Potrjevanje pravilnika in xpubs sopodpisnika proti zaupanja vredni varnostni kopiji je bistveno, vendar razmeroma zamudno.
Dobra novica je, da je to treba storiti samo enkrat:
Ko je pravilnik registriran z imenom (v primeru »Decaying 3of3«), ga bo vaša naprava lahko prepoznala, kadar koli bo tak pravilnik uporabljen.
Kogar zanimajo tehnične podrobnosti, lahko več informacij najdete v BIP predlog.
Varnostna kopija pravilnika
Eden kritičnih vidikov, ki jih je treba upoštevati, je, da medtem ko pravilniki z več ključi dovoljujejo podskupino zasebni ključi avtorizirati transakcije, vedenje o vse javne ključe (in točno politika) so obvezne.
Vendar je za razliko od semena varnostno kopiranje pravilnika in javnih ključev veliko manj tvegano: če bi ga nekdo odkril, bi lahko izsledil vse transakcije, povezane s tem pravilnikom. Čeprav to ni idealno − zasebnost je pomembna! − ni tako katastrofalno kot izguba kovancev in manj privlačno za potencialne napadalce. Posledično so shranjevanje več kopij pravilnika v vroče denarnice, tiskanje in shranjevanje na različnih mestih, šifriranje in shranjevanje v shrambo v oblaku itd. vse izvedljive strategije.
Denarnica z enim podpisom brez vrat
Stopimo korak nazaj. Razpravljali smo o denarnicah z več podpisi, zdaj pa se vračamo k osnovam in ustvarimo denarnico z enim podpisom. Natančneje, želimo denarnico, ki počuti in Izgleda kot denarnica z enim podpisom, po začetni fazi nastavitve. Kljub temu želimo ustvariti denarnico, iz katere proizvajalec ne more ukrasti vaših sredstev, tudi če so zlonamerni 😈, naprava za podpisovanje strojne opreme pa se obnaša nepredvidljivo.
Pristop je mogoče enostavno posplošiti za denarnice z več podpisi.
Spodnji primeri bodo napisani v jeziku, imenovanem politika, namesto miniskripta. Politika je ljudem lažja za branje in razmišljanje, z avtomatskimi orodji pa jo je mogoče prevesti v miniskript. Preberite več o miniscriptu in politiki.
Strojna denarnica vas lahko zaščiti v standardnem varnostnem modelu. Miniscript vas lahko zaščiti z varnostnim modelom proti zadnjim vratom (in še veliko več!).
Korak nič: status quo
To je politika, ki jo danes uporablja večina uporabnikov: en sam ključ, ki izhaja iz semena, proizvedenega v denarnici strojne opreme.
pk(key_ledger)
Seveda ni mogoče dokazati odsotnosti zakulisnih vrat.
Prvi korak: podvojite te ključe
Prvi korak je preprost:
and(pk(key_ledger), pk(key_client))
Tu key_client
se ustvari na uporabnikovem računalniku, torej a vroča tipka. V bistvu gre za nastavitev 2-od-2 multisig. Ključni vidik je, da uporabnik nima veliko interakcije z key_client
: programska denarnica ustvari ta ključ, ga vključi v varnostno kopijo denarnice in podpiše, kadar koli je to potrebno (na primer, ko je uporabnik zaposlen s podpisovanjem s podpisnikom strojne opreme).
Že to se zdi precej zanimivo: sredstva so neporabljena brez key_client
, ki ni na voljo prodajalcu strojne opreme; tudi če bi zlobni prodajalec popolnoma poznal ključ v napravi, še vedno ne bi mogel premakniti sredstev, ne da bi izrecno ciljal na uporabnika, na primer z ogrožanjem stroja, ki poganja njihovo programsko denarnico.
Vendar pa obstaja težava: med vkrcanjem denarnice je podpisnik strojne opreme edini subjekt, ki lahko ustvari javni ključ (xpub) key_ledger
uporabljen v denarnici. Zato bi lahko naprava namerno ustvarila a narobe xpub, ki ga nadzira napadalec, in kasneje zavrne (ali ne more) podpisati. Verjetno je to dokaj skrajni scenarij napada: ustvarjalec zakulisnih vrat ne more ukrasti sredstev in največ, kar lahko naredi, je, da individualno cilja na uporabnika in zahteva odkupnino (»lahko ti pomagam pridobiti svoj denar, če mi plačaš polovico«).
Bolj realistično, to poveča možnost napak ali napak: zdaj imate dva semena/zasebna ključa in potrebujete tako da bi lahko porabili. Izgubite bodisi in kovanci so za vedno zaklenjeni.
Drugi korak: časovno zaklenjena obnovitev
Predstavljamo ločen ključ za obnovitev, ki je dostopen šele po določenem časovnem zaklepu: and(older(25920)
, pk(key_recovery))
, kjer je 25920 približno število blokov v 6 mesecih. Celoten pravilnik postane:
or(
and(pk(key_ledger), pk(key_client)), and(after(25920), pk(key_recovery))
)
To je podobno prejšnjemu scenariju, vendar s preobratom: če key_ledger
or key_client
postane nedosegljiv iz kakršnega koli razloga (najpogosteje izguba semenske varnostne kopije!), a okrevanje pot postane dostopen po 6 mesecih.
Obstaja več možnosti za key_recovery
, vsak s svojimi kompromisi:
a. Uporabi drugo vroča tipka. To je praktična rešitev, če se uporabnik ne spomni ponastaviti časovne zapore. Če pa so vroče tipke ogrožene (scenarij, ki bi ga morali na splošno obravnavati kot zelo verjetnega!), bi lahko napadalec poskušal dostopati do sredstev takoj, ko poteče časovna zapora, in tako sproži tekmo z zakonitim lastnikom.
b. Uporabite ločeno napravo za podpisovanje strojne opreme. To je robustna rešitev in jo lahko po želji uporabite v kombinaciji z drugim prodajalcem; vendar poveča kompleksnost nastavitve in stroške za uporabnika v smislu uporabniške izkušnje.
c. Uporabite zaupanja vredno zunanjo storitev. Programska denarnica bi lahko uvozila xpub iz zunanje storitve in jo uporabila kot key_recovery
. Ta tretja oseba je zaupanja vredna le, če časovna zapora poteče, kar bi lahko bil privlačen kompromis za nekatere uporabnike.
Kot že omenjeno, je tako kot pri vsaki politiki s časovnimi zaklepi pomembno, da se uporabnik spomni osvežiti kovance pred iztekom časovnega zaklepa.
Tretji korak: nezaupanja vredna tretja oseba
Združimo obe zamisli (a) in (c): za obnovitveno pot potrebujemo lokalno vročo tipko key_recovery_local
In key_recovery_remote
ki gostuje pri delno zaupanja vredni storitvi; ohranimo tudi časovno ključavnico.
or(
and(pk(key_ledger), pk(key_client)),
and(older(25920),
and(pk(key_recovery_local), pk(key_recovery_remote))
)
)
To zmanjša stopnjo zaupanja, ki jo zahteva storitev obnovitve. Vendar moramo biti previdni: storitev bi lahko sama nadzirala verigo blokov in zaznavala naše UTXO – navsezadnje so nam zagotovili key_recovery_remote
xpub, tako da lahko skenirajo UTXO, ki vsebujejo pubkey, izpeljane iz key_recovery_remote
. Lahko se bodo seznanili z našo finančno zgodovino, še preden poteče časovna zapora, in tudi če nikoli nismo uporabili njihove storitve.
Opomba: Ta koreninska drevesa lahko odpravijo to težavo glede zasebnosti za določene pravilnike, vendar to ni vedno tako in zahteva natančno oceno na podlagi določenega pravilnika.
Četrti korak: zaslepite tretjo osebo 🙈
Da preprečimo, da bi služba za obnovitev izvedela za našo finančno zgodovino, lahko namesto uporabe ključa, ki nam ga sporočijo, uporabimo slep xpub tehnika podrobno razložil mflaxman tukaj. Skratka, namesto uporabe key_recovery_remote
v naši politiki izberemo štiri 31-bitne naključne številke a
, b
, c
, d
( dejavniki zaslepitve), uporabljamo pa naslednje BIP-32 izpeljani pubkey:
key_recovery_remote_blind = key_recovery_remote_blind/a/b/c/d
Ključno je, da tudi dodamo key_recovery_remote
in dejavniki zaslepitve a
, b
, c
in d
v našo varnostno kopijo za prihodnjo uporabo.
Če bomo kdaj morali uporabiti storitev obnovitve, bomo razkrili a
, b
, c
, d
njim. Do takrat ne morejo odkriti, da ključi izhajajo iz njihovega key_recovery_remote
so objavljeni v verigi blokov: število možnih kombinacij za 4 slepe faktorje je 2^(31*4) = 2^124
, kar onemogoča bruteforce vseh.
Peti korak: preveč vročih tipk vas lahko opeče 🔥
Uspelo nam je narediti našo programsko denarnico brez zakulisja. Vendar smo uvedli drugačno težavo: oba pogoja porabe uporabljata lokalno ustvarjeno vroče ključ, ki ga strojna denarnica ne preveri. Torej, če je gostiteljski stroj ogrožen, vas lahko zavede, da registrirate pravilnik z uporabo pubkeys key_client
in key_recovery_local
, vendar v našo varnostno kopijo vstavite naključne, nepovezane zasebne ključe (ne pozabite, vroče ključi so del naše varnostne kopije!).
To bi v bistvu pomenilo, da bi bila vsa sredstva poslana v denarnico neuporaben, saj nihče ne nadzoruje zasebnih ključev, potrebnih za podpis.
Obstaja nekaj rešitev za rešitev te težave:
- Med vkrcanjem, potem ko natisnemo našo varnostno kopijo na papir, lahko uporabimo ločeno napravo, da preverimo, ali se zasebne in javne vroče tipke na varnostni kopiji res ujemajo. S tem pristopom bi težavo odpravili, saj bi bili prepričani, da imamo vse potrebne ključe za rekonstrukcijo in podpis.
- Dodamo lahko še en pogoj porabe s še daljšo časovno zaporo (9 mesecev, 38880 blokov), ki zahteva le
key_ledger_failsafe
iz strojne naprave. Na ta način se v absolutno najslabšem možnem scenariju, ko vse drugo odpove, vrnemo k varnosti ene same podpisne naprave. Pri običajnem delovanju ne bi nikoli pustili, da poteče prva časovna zapora, zato tudi druga časovna zapora ne bo potekla!
Z drugim pristopom bi končna politika izgledala takole
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 konfiguracija programske denarnice izpolnjuje vse varnostne lastnosti, ki smo jih zahtevali na začetku. Poleg tega ponuja obnovitveno pot v primeru glavnih ključev porabe key_ledger
so izgubljeni. Lepa lastnost!
Vkrcanje na programsko denarnico brez vrat
Kakšna bi bila uporabniška izkušnja z denarnico, ki uporablja tako zapleten pravilnik? Tukaj je kratek pregled:
- Uporabnik odpre programsko denarnico in začne ustvarjati nov račun.
- Programska denarnica pozove uporabnika, naj poveže svojo podpisno napravo, in pridobi xpubs za
key_ledger
inkey_ledger_failsafe
. - Programska denarnica avtonomno ustvari vročo tipko key_client.
- Programska denarnica pridobi
key_recovery_remote
iz storitve sopodpisovanja ali omogoča uporabniku, da določi ključ na drug način. Po želji izračunakey_recovery_remote_blind
z uporabo prej omenjene tehnike zaslepitve. - Programska denarnica ustvari varnostno kopijo pravilnika, ki vsebuje natančno politiko miniscripta, vse xpube in razširjen zasebni ključ za
key_client
vroča tipka. Ta varnostna kopija je varno shranjena (na primer natisnjena na papir ali shranjena v ločeni napravi). - Na koncu programska denarnica uporabniku naroči, naj registrira pravilnik v napravi. Uporabnik navzkrižno preveri varnostno kopijo (na papirju ali katerem koli mediju, ki ni zaslon, ki ga nadzoruje programska denarnica).
Programska denarnica upravlja večino zgornjih korakov, zaradi česar sodelovanje uporabnika ni bolj obremenjujoče od pričakovanega truda, ki je danes potreben za nastavitev denarnice z več podpisi.
Uvajanje bi moralo trajati le nekaj minut, ko je zanj zgrajen dober UX. Ko je dokončana, lahko programska denarnica zagotovi uporabniško izkušnjo, ki je zelo podobna običajni denarnici z enim podpisom. Takole bo miniscript spremenil vse: tako, da bo uporabniku izginil izpred oči!
Izboljšave glavnega korena
Ledger podpira miniscript od različice 2.1.0 aplikacije Bitcoin, izdane marca. Medtem ko je bila podpora za prejemanje in porabo z naslovov taproot omogočena od taproot softfork novembra 2021 zdaj zaključujemo naslednji korak načrta: podporo za miniscript za taproot.
Taproot bo imel velik vpliv na uporabnost pristopov, predstavljenih v tem članku. Če je primarna pot porabe pogoj porabe z enim ključem, obstoja poti porabe obnovitve ne bo mogoče zaznati v verigi blokov, razen če se uporabijo. To bo močno izboljšalo zasebnost s popolno odpravo vseh prstnih odtisov za standardno pot porabe. Poleg tega izboljša razširljivost, saj postane standardna pot porabe čim bolj stroškovno učinkovita. To pomeni, da ne bodo nastali dodatni stroški zaradi prisotnosti obnovitvenih poti, razen če so uporabljene. To je pomembna nadgradnja transakcij SegWit, ki zahtevajo objavo celotnega skripta, vključno z vsemi pogoji porabe, med vsako porabo.
Končno, naprednejši protokoli, kot je MuSig2 (pred kratkim standardiziran) in ZAMRZ bo napolnil ključno pot glavnega korena. Ti protokoli, zgrajeni na podpisih Schnorr, omogočajo ustvarjanje enega samega agregat pubkey ki se lahko uporablja za predstavitev n-od-n večpodpis ali a k-od-n mejna shema. To bi omogočilo uporabo glavne poti ključa tudi v primerih, ki so danes pogosteje predstavljeni s posebnimi multisig skripti.
Sklepi
Ta članek raziskuje majhno (vendar pomembno) nišo ogromnega oblikovalskega prostora, ki ga miniscript sprosti za programske denarnice.
Pokazali smo, kako je mogoče uporabiti miniscript za ustvarjanje denarnice za programsko opremo, ki ne omogoča zakulisja, hkrati pa smo dodali dodatno obnovitveno pot, ki omogoča preprečevanje katastrofalnih izgub ključev. Medtem ko naprave za podpisovanje strojne opreme ne morejo uveljaviti varnostnega modela proti zadnjim vratom, s podporo miniscripta omogočajo programske denarnice, ki počnejo točno to!
S pametno uporabo kombinacije shem z več podpisi, časovnih zaklepov, slepih xpub in vročih tipk smo prikazali varno konfiguracijo denarnice, ki uravnoteži varnost, zasebnost in robustnost.
Poleg tega smo trdili, da je to mogoče brez negativnega vpliva na uporabniško izkušnjo, saj zapletenost nastavitve ne pomeni velike dodatne obremenitve UX.
Navdušeni smo nad možnostmi, ki jih bo miniscript odklenil za naslednjo generacijo samostojnega skrbništva za bitcoin.
- Distribucija vsebine in PR s pomočjo SEO. Okrepite se še danes.
- PlatoData.Network Vertical Generative Ai. Opolnomočite se. Dostopite tukaj.
- PlatoAiStream. Web3 Intelligence. Razširjeno znanje. Dostopite tukaj.
- PlatoESG. Avtomobili/EV, Ogljik, CleanTech, Energija, Okolje, sončna energija, Ravnanje z odpadki. Dostopite tukaj.
- BlockOffsets. Posodobitev okoljskega offset lastništva. Dostopite tukaj.
- vir: https://www.ledger.com/blog/towards-a-trustless-bitcoin-wallet-with-miniscript
- :ima
- : je
- :ne
- :kje
- $GOR
- 1
- 2021
- 2023
- 30
- 7
- 9
- a
- sposobnost
- Sposobna
- O meni
- nad
- absolutna
- absolutno
- dostop
- dostopna
- dostopen
- skladnosti
- Račun
- računi
- Ukrep
- dejavnosti
- aktivno
- dejansko
- dodajte
- dodajanje
- Poleg tega
- Dodatne
- Poleg tega
- naslovi
- napredno
- po
- proti
- starost
- Pomoč
- Cilj
- vsi
- omogočajo
- omogoča
- skupaj
- že
- Prav tako
- Čeprav
- vedno
- an
- in
- razglasitve
- Še ena
- kaj
- karkoli
- aplikacija
- privlačna
- zdi
- aplikacije
- pristop
- pristopi
- odobritev
- približno
- SE
- argumentirano
- trdili
- članek
- AS
- vidik
- pomoč
- povezan
- At
- napad
- revidiran
- odobri
- Avtomatizirano
- avtonomno
- Na voljo
- nazaj
- Zakulisni
- Backed
- podloga
- backup
- tehtnice
- temeljijo
- Osnovni
- V bistvu
- Osnove
- BE
- ker
- postanejo
- postane
- pred
- Začetek
- počutje
- spodaj
- BEST
- med
- Poleg
- Bitcoin
- Bitcoin denarnica
- bitcoin denarnice
- Blend
- blockchain
- Bloki
- Blockstream
- Blog
- tako
- Brain
- Prinaša
- oddaja
- Bug
- izgradnjo
- zgrajena
- obremenitev
- gorijo
- poslovni
- zaseden
- vendar
- by
- se imenuje
- CAN
- ne more
- lahko
- previdni
- primeru
- primeri
- katastrofalno
- Vzrok
- povzroča
- previdnost
- nekatere
- izziv
- priložnost
- spremenite
- Otroci
- čip
- Izberite
- izbiri
- trdil,
- jasno
- Cloud
- Cloud Storage
- Koda
- Kovanci
- kombinacija
- kombinacije
- komercialna
- Skupno
- pogosto
- komunicirajo
- Podjetja
- podjetje
- Podjetja
- dokončanje
- popolnoma
- kompleksna
- kompleksnost
- Ogroženo
- ogrozili
- izračuni
- računalništvo
- Skrbi
- stanje
- Pogoji
- Konferenca
- konfiguracija
- Connect
- Soglasje
- Posledično
- Razmislite
- šteje
- vseboval
- nadzorom
- Nadzor
- prepričati
- popravi
- poškodovan
- strošek
- bi
- Tečaj
- ustvarjajo
- Ustvarjanje
- Oblikovanje
- kreator
- kritično
- kritični vidik
- ključnega pomena
- Trenutno
- skrbnik
- Skrbništvo
- Stranke, ki so
- Nevarno
- Zavrni
- zmanjšuje
- oceniti
- opredeljen
- Povpraševanje
- Dokazano
- razporejeni
- Izpeljano
- opis
- Oblikovanje
- zasnovan
- želeno
- Podatki
- podrobno
- Podrobnosti
- odkrivanje
- Razvijalci
- naprava
- naprave
- drugačen
- težko
- zmanjšuje
- neposredno
- Direktorji
- izginja
- katastrofalno
- odkriti
- odkrivanje
- razpravljali
- Razprava
- prikazano
- do
- ne
- Ne
- opravljeno
- podvojila
- 2
- med
- vsak
- lažje
- enostavno
- prizadevanje
- bodisi
- odpravo
- odstranjevanje
- ostalo
- poudariti
- zaposleni
- omogočajo
- omogočena
- omogoča
- konec
- uveljaviti
- dovolj
- zagotovitev
- zagotoviti
- V
- vabljiv
- Celotna
- popolnoma
- entiteta
- oprema
- napake
- zlasti
- bistvena
- v bistvu
- vzpostaviti
- itd
- Ocena
- Tudi
- VEDNO
- Tudi vsak
- vse
- točno
- Primer
- Primeri
- razburjen
- izvršiti
- izvršeno
- Vaja
- Obstoj
- Pričakuje
- izkušnje
- potekel
- Izkoristite
- raziskuje
- izvoz
- Se razširi
- zunanja
- ekstremna
- olajšati
- dejavniki
- ne uspe
- Napaka
- pošteno
- Padec
- daleč
- Feature
- Lastnosti
- februar
- Nekaj
- končna
- finančna
- finančna zgodovina
- Najdi
- prva
- prilagodljiv
- Flip
- Osredotočite
- po
- sledi
- za
- za vedno
- Naprej
- štiri
- okviri
- pogosto
- prijatelj
- iz
- polno
- v celoti
- funkcionalnost
- Sklad
- Skladi
- Poleg tega
- jalovo
- Prihodnost
- glavni namen
- splošno
- ustvarjajo
- ustvarila
- ustvarja
- ustvarjajo
- generacija
- dana
- Go
- dogaja
- dobro
- veliko
- zelo
- imel
- Pol
- strojna oprema
- strojna naprava
- Denarnica za strojno opremo
- Proizvajalec strojne denarnice
- Strojna denarnica
- škodljiva
- Imajo
- ob
- pomoč
- zato
- zgodovina
- držite
- upam,
- gostitelj
- gostila
- HOT
- Kako
- Vendar
- http
- HTTPS
- velika
- Ljudje
- Ideja
- idealen
- Ideje
- identificirati
- if
- takoj
- vpliv
- udarne
- izvajali
- uvoz
- Pomembno
- nemogoče
- izboljšanje
- in
- vključuje
- Vključno
- vključujoč
- Poveča
- Neverjetno
- prav zares
- Neodvisni
- Posamezno
- Industrija
- Podatki
- inherentno
- začetna
- v notranjosti
- Insider
- navdih
- Namestitev
- primer
- Namesto
- namerno
- interakcijo
- interaktivno
- obresti
- zainteresirani
- Zanimivo
- vmesnik
- v
- uvesti
- Uvedeno
- Predstavlja
- intrusively
- sodelovanje
- vključujejo
- vprašanje
- IT
- ITS
- sam
- samo
- samo en
- Ključne
- tipke
- Vedite
- znanje
- znano
- Pokrajina
- jezik
- laptop
- Zadnja
- pozneje
- odvetnik
- Interesenti
- UČITE
- učenje
- vsaj
- Ledger
- levo
- legitimno
- manj
- Naj
- Stopnja
- vzvod
- kot
- Verjeten
- povezane
- Navedeno
- nalaganje
- lokalna
- Lokacije
- zaklenjeno
- Long
- več
- Poglej
- izgleda kot
- izgubiti
- izgube
- off
- izgube
- izgubil
- stroj
- Glavne
- Večina
- Znamka
- IZDELA
- Izdelava
- zlonamerna programska oprema
- upravlja
- upravljanje
- manipuliranje
- Način
- Proizvajalec
- Proizvajalci
- več
- marec
- Stave
- Maj ..
- pomeni
- ukrepe
- Mehanizem
- srednje
- omenjeno
- zgolj
- Sporočilo
- sporočil
- Metoda
- Metode
- Miami
- morda
- miniskript
- Manjšina
- Minute
- Mission
- napake
- Model
- Denar
- spremljanje
- mesecev
- več
- Poleg tega
- Najbolj
- večinoma
- premikanje
- premaknjeno
- veliko
- več
- večznakovni
- morajo
- Ime
- blizu
- potrebno
- Nimate
- potrebna
- potrebe
- negativno
- mreženje
- nikoli
- Novo
- novice
- Naslednja
- lepo
- št
- netehnično
- normalno
- november
- november 2021
- zdaj
- Številka
- številke
- pridobi
- of
- ponudba
- ponujanje
- Ponudbe
- offline
- on
- Na vkrcanje
- enkrat
- ONE
- tiste
- samo
- odprite
- open source
- Odpre
- deluje
- operacije
- Priložnosti
- možnosti
- or
- Da
- Ostalo
- drugače
- naši
- ven
- opisano
- zunaj
- več
- Splošni
- pregled
- lastne
- Lastnik
- Papir
- Paramount
- del
- zlasti
- zabava
- pot
- Plačajte
- Izvedite
- mogoče
- Obdobje
- trajno
- faza
- telefon
- Kraj
- Mesta
- platon
- Platonova podatkovna inteligenca
- PlatoData
- Točka
- točke
- politike
- politika
- Popular
- možnosti
- mogoče
- mogoče
- Prispevek
- potencial
- potencialno
- moč
- Praktično
- praktično
- praksa
- natančna
- Ravno
- napovedati
- Predvidljivo
- Prisotnost
- predstaviti
- predstavljeni
- preprečiti
- preprečuje
- prejšnja
- prej
- v prvi vrsti
- primarni
- tiskanje
- Predhodna
- zasebnost
- zasebna
- zasebni ključ
- Zasebni ključi
- problem
- Težave
- postopek
- Postopek
- proizvodnjo
- Proizvedeno
- proizvaja
- pravilno
- Lastnosti
- nepremičnine
- predlagano
- zaščito
- zaščiteni
- zaščito
- zaščita
- protokol
- protokoli
- Dokaži
- zagotavljajo
- če
- javnega
- javni ključ
- javni ključi
- objavijo
- objavljeno
- Založništvo
- Namen
- dal
- Dajanje
- vprašanje
- Dirka
- naključno
- Ransom
- precej
- dosežejo
- Preberi
- Bralec
- uresničevanje
- Razlog
- prejema
- Pred kratkim
- priznajo
- zapis
- okrevanje
- nanaša
- Registracija
- registriranih
- registracijo
- relativno
- sprostitev
- sprosti
- zanašajo
- ne pozabite
- zamenjajte
- predstavljajo
- zastopan
- Ugled
- zahteva
- obvezna
- zahteva
- rezultat
- ohranijo
- vrnitev
- razkrivajo
- Pravica
- Tveganje
- tveganja
- Tvegano
- načrt
- robusten
- robustnost
- vloga
- vloge
- tek
- deluje
- Enako
- pravijo,
- Prilagodljivost
- skeniranje
- Scenarij
- shema
- sheme
- pograbiti
- Zaslon
- skripte
- drugi
- Oddelek
- zavarovanje
- Varno
- varnost
- glej
- seme
- Semena
- iskanju
- zdi se
- Zdi se,
- SegWit
- Samostojna skrbništvo
- pošiljanja
- občutljiva
- poslan
- ločena
- Storitev
- nastavite
- nastavitev
- več
- Kratke Hlače
- shouldnt
- je pokazala,
- podpisati
- Podpisi
- pomemben
- bistveno
- podpis
- Znaki
- Podoben
- Enostavno
- poenostavitev
- saj
- sam
- majhna
- pametna
- So
- Software
- Rešitev
- rešitve
- SOLVE
- nekaj
- nekdo
- Kmalu
- prefinjeno
- vir
- Vesolje
- specializirati
- specifična
- specifikacije
- preživeti
- Poraba
- standardna
- stojala
- začne
- Status
- Korak
- Koraki
- Še vedno
- shranjevanje
- shranjeni
- shranjevanje
- strategije
- moč
- String
- močna
- Boj
- uspešno
- Uspešno
- taka
- Povzamemo
- Doplačilo
- podpora
- Podpora
- Podpira
- naj
- sistemsko
- sistemsko tveganje
- sistemi
- loteva
- Bodite
- koreninski koren
- ciljna
- ciljanje
- tehnični
- tehnično
- Tehnologija
- Pogoji
- kot
- da
- O
- Kovanci
- njihove
- Njih
- sami
- POTEM
- Tukaj.
- s tem
- zato
- te
- jih
- stvari
- mislim
- tretja
- ta
- tisti,
- grožnje
- 3
- Prag
- skozi
- Tako
- čas
- zamudno
- do
- danes
- današnje
- tudi
- orodja
- Teme
- Skupaj za plačilo
- proti
- Trace
- sledenje
- evidenca
- Vlak
- transakcija
- Transakcije
- prehodi
- prevesti
- zakladnica
- Drevesa
- Res
- Zaupajte
- zaupa
- nezaupljiv
- Resnica
- Twist
- dva
- Vrste
- tipičen
- ne morem
- razumeli
- sprosti
- za razliko od
- odklepanje
- odklene
- nepredvidljivo
- dokler
- nadgradnja
- us
- uporabnost
- uporaba
- Rabljeni
- uporabnik
- Uporabniška izkušnja
- Uporabniki
- uporablja
- uporabo
- uporabiti
- uporablja
- Uporaben
- ux
- POTRDI
- raznolikost
- različnih
- Popravljeno
- Prodajalec
- preverjeno
- preverjanje
- različica
- zelo
- preživetja
- ključnega pomena
- Ranljivosti
- Počakaj
- denarnica
- Denarnice
- želeli
- je
- način..
- načini
- we
- so bili
- Kaj
- kdaj
- kadar koli
- ali
- ki
- medtem
- celoti
- zakaj
- Wikipedia
- bo
- z
- v
- brez
- besede
- svet
- bi
- pisni
- Napačen
- leto
- še
- Vi
- Vaša rutina za
- sami
- zefirnet
- nič