Lucruri de știut: |
- Miniscript face posibilă construirea portofelelor software Bitcoin care fac o ușă din spate imposibil de exploatat. Ne bucurăm să spunem că Ledger este primul producător comercial de portofel hardware care acceptă miniscript.
- Caracteristicile suplimentare pot fi implementate fără a compromite experiența utilizatorului. |
Dispozitivele hardware de semnare sunt concepute pentru a proteja utilizatorul de diferiți vectori de atac obișnuiți, cum ar fi:
- Accesul și extragerea neautorizată a semințelor
- Programe malware care vă infectează portofelul software asociat
- Vulnerabilități software de pe dispozitivul însuși
Ca orice afacere, este în interesul producătorului să facă dispozitive ca incasabil pe cât pot. Reușirea acestei misiuni este esențială, iar companiile de securitate precum Ledger se bazează pe o reputație construită pe palmaresul lor.
Cu toate acestea, unii utilizatori ar putea avea în continuare preocupări. Ce împiedică compania însăși să se ascundă a ușă din dos în aparate?
În auto-custodie, noi nu ai încredere, verificăm.
Dar poate utilizatorul într-adevăr verifică dacă un dispozitiv nu are o ușă în spate?
Aceasta este întrebarea cheie în care se adâncește acest articol. Mai precis, acest articol abordează următoarele subiecte:
- ce este o ușă din spate și de ce este dificil, dacă nu imposibil, să demonstrezi că nu există;
- de ce numai utilizatorii se pot proteja de acest risc;
- cum miniscript permite soluții practice la această provocare pentru portofelele bitcoin.
Fiind primul portofel hardware suportat miniscris, sperăm să inspirăm dezvoltatorii să construiască soluții sigure și să ne modernizeze întreaga industrie și să eliminăm șansa ca un astfel de risc sistemic să se materializeze vreodată.
Cum se construiește unbackdoorable dispozitiv de semnare
Să spunem clar: nu poți.
Pentru a vă apăra împotriva unei potențiale uși din spate, aveți nevoie de un alt model de atac decât cel prezentat mai sus: în acest scenariu, adversarul ar putea fi vânzătorul însuși sau un insider corupt.
Soluția adesea promovată pentru această problemă este Open Source: la urma urmei, dacă puteți inspecta codul, ce ar putea merge prost?
Cu toate acestea, adevărul este mai complex. Deoarece vânzătorul asambla hardware-ul, o ușă din spate ar putea fi cuprinsă în întregime în el. Hardware-ul ar putea fi proiectat să ignore software-ul în anumite puncte și să execute în schimb cod rău intenționat.
Spre deosebire de software-ul care rulează pe dispozitive de calcul de uz general (cum ar fi laptopul sau telefonul), examinarea hardware-ului este practic imposibilă cu tehnologia actuală. Chiar dacă specificațiile hardware ar fi în întregime open source, complete cu detaliile fiecărei porți din circuit, ai avea totuși nevoie de echipamente cu costuri ridicate pentru a verifica dacă un anumit cip este construit în conformitate cu acestea.
Cum să deschizi un portofel hardware
Iată câteva dintre cele mai simple metode pe care un furnizor de hardware rău intenționat le-ar putea folosi pentru a introduce o ușă din spate, împreună cu câteva modalități prin care utilizatorii cu putere se pot proteja astăzi.
Generarea de semințe
Multe dispozitive vă oferă posibilitatea de a genera o sămânță (numită și Frază secretă de recuperare) direct pe dispozitiv, folosind a Generator de numere aleatoare adevărat.
😈 Dispozitivul malefic ar putea genera semințe care par aleatorii, dar sunt de fapt previzibile pentru atacator.
🛡️ Utilizatorii cu putere pot ocoli această problemă generând un mnemonic offline. În plus, încorporând un robust expresie de acces poate genera, de asemenea, o sămânță complet independentă pe care furnizorul de hardware nu o poate prevedea. Schimbul este că utilizatorii trebuie să se asigure că fac copii de rezervă corecte pentru fraza de acces, în plus față de cuvintele mnemonice.
Derivarea cheii publice
Portofelele hardware derivă și exportă chei publice (De asemenea, numit xpub-uri, scurt pentru cheie publică extinsă așa cum este definit în BIP-32. xpub-uri sunt folosite pentru a genera adresele posibile pentru primirea monedelor.
😈 Dispozitivul malefic ar putea returna cheile publice controlate de atacator în locul celor corecte derivate din sămânță.
🛡️ Utilizatorii ar putea valida derivatul xpub pe alt dispozitiv, offline. Cu toate acestea, introducerea semințelor pe alte dispozitive implică propriile riscuri. Utilizatorii conștienți de securitate ar putea considera orice dispozitiv care a accesat semințele ca fiind periculos, potențial până la punctul de a-l distruge. Utilizatorul obișnuit s-ar putea lupta să efectueze corect această procedură în timp ce gestionează riscurile suplimentare.
Scurgere de informații
An strat de aer este frecvent propusă ca o soluție pentru a preveni ca un dispozitiv rău intenționat sau compromis să exfiltreze cheile private. La urma urmei, dacă un dispozitiv nu poate comunica cu lumea exterioară, nu poate face nimic dăunător, nu?
Nu chiar!
Dispozitivul poate comunica oricând când este în uz: produce semnături. Aceste semnături ajung în cadrul tranzacțiilor care sunt difuzate și stocate pentru totdeauna pe blockchain.
O semnătură este un șir de octeți cu aspect aleatoriu de cel puțin 64 de octeți. Cu toate acestea, deoarece mai mult de o semnătură validă poate corespunde aceluiași mesaj, un dispozitiv rău intenționat ar putea comunica câțiva biți de informații de fiecare dată când este produsă o semnătură, generând mai multe semnături și alegând selectiv pe care să o publice.
😈 Un dispozitiv necinstiți ar putea produce semnături non-aleatoare care, în timpul multor tranzacții, dezvăluie sămânța atacatorului!
Un atacator care reușește să instaleze o astfel de ușă din spate ar trebui doar să aștepte ca semnăturile rău intenționate să apară pe blockchain până când vor avea suficiente informații pentru a reconstrui întreaga sămânță.
🛡️ Pentru semnăturile ECDSA, folosind o metodă standardizată de derivare a nonceului în mod determinist (cum ar fi RFC6979) împiedică acest atac, cu condiția să valideze că semnătura produsă se potrivește cu cea așteptată. Cu toate acestea, asigurarea acestui fapt necesită încărcarea unui al doilea dispozitiv cu aceeași sămânță, ceea ce duce la aceleași probleme practice menționate în secțiunea anterioară.
🛡️ O abordare interesantă este să folosești o modalitate inteligentă de a putere dispozitivul să aleagă de fapt un nonce aleatoriu. Un protocol în acest scop, cunoscut ca anti-exfil or anti-klepto, este implementat în prezent în portofelele hardware Blockstream Jade și ShiftCrypto BitBox02. Citiți mai multe pe Blogul lui ShiftCrypto, care include și o descriere tehnică a modului în care ar putea fi executat un astfel de atac.
Bine atunci, nu există nicio speranță?
Cele mai multe dintre apărările🛡️ enumerate mai sus solicită utilizatorului să efectueze acțiuni explicite, intruzive, pentru a se proteja: fie prin generarea de semințe pe cont propriu (în esență, folosindu-și creierul pentru a înlocui funcționalitatea din portofelul hardware), fie utilizând un dispozitiv suplimentar pentru a verifica dacă calculele sunt executate corect.
Cu toate acestea, protocolul anti-exfil iese în evidență: având în vedere că există întotdeauna o mașină care intermediază între semnatarul hardware și lumea exterioară, această mașină poate ajuta. Printr-un protocol interactiv cu semnatarul hardware, se poate aplica utilizarea unui nonce cu adevărat aleatoriu, diminuând sau eliminând astfel șansa de a manipula semnificativ semnătura finală.
În această postare pe blog, ne interesează în primul rând aceste tipuri de măsuri: deși strategiile care înrăutățesc semnificativ UX-ul ar putea fi atrăgătoare pentru utilizatorii puternici, este posibil ca aceștia să facă lucruri. mai rău în practică, pentru utilizatorii mai puțin adepți din punct de vedere tehnic – care este marea majoritate.
Modelul de securitate
Model standard pentru semnatari hardware
Producătorii de semnături hardware urmăresc să protejeze utilizatorii de o varietate de amenințări potențiale (pentru mai multe detalii, consultați Modelul de amenințare). În acest articol, ne concentrăm pe o proprietate foarte importantă, care poate fi rezumată după cum urmează:
Utilizatorii nu pot fi înșelați într-o acțiune care are ca rezultat pierderea fondului, cu condiția să înțeleagă și să verifice informațiile de pe ecran înainte de aprobare.
Aprobarea este necesară pentru orice acțiune sensibilă, în special pentru semnături. Protejarea semințelor ar fi inutilă dacă malware-ul ar putea produce semnături pentru mesaje arbitrare, cum ar fi o tranzacție care consumă toate fondurile!
Este esențial să subliniem că proprietatea de mai sus trebuie să fie valabilă chiar dacă portofelul software este complet compromis. Ceea ce este afișat pe ecranul laptopului/telefonului nu poate fi de încredere: malware-ul ar putea înlocui adrese, vă poate înșela cu privire la care sunt adresele dvs., să prezinte o tranzacție, dar apoi să trimită una diferită dispozitivului pentru semnare etc.
Prin urmare, firmware-ul și aplicațiile care rulează pe un dispozitiv de semnare hardware iau în considerare portofelul software în mod inerent neîncredere și nedemn de încredere.
Model de securitate anti-backdoor pentru portofelele software
În această secțiune, inversăm complet rolurile. Acum vrem să proiectăm un portofel de software care împiedică producătorul de hardware să fure sau să provoace pierderi de fonduri, chiar dacă dispozitivul este complet rău intenționat.
Prin urmare, aceasta nu poate fi o proprietate a dispozitiv: mai degrabă, este o proprietate a portofel de software înființat. Am putea rezuma astfel:
Cu condiția ca portofelul software să nu fie compromis, producătorul de hardware nu poate determina utilizatorul să piardă fonduri.
Acest lucru poate părea contraintuitiv, deoarece contrazice direct modelul standard de securitate detaliat mai sus. Cu toate acestea, „a nu avea o ușă din spate” înseamnă „a face exact ceea ce ar trebui să facă”. Deoarece portofelul software este soare interfața dintre dispozitivul de semnare și lumea externă, este singurul loc în care poate fi impusă protecția împotriva comportamentului incorect - fie din cauza unui bug, fie din cauza unei compromisuri explicite a dispozitivului.
Rețineți că acest model se extinde semnificativ dincolo de o defecțiune a dispozitivului, cum ar fi o eroare exploatabilă. În acest caz, operam într-un scenariu în care dispozitivul caută în mod activ să provoace pierderi de fond.
Desigur, nu există nicio protecție posibilă dacă producătorul a compromis cu succes atât dispozitivul și, de asemenea, mașina dvs. care rulează portofelul software. Prin urmare, este absolut vital să vă asigurați că portofelul dumneavoastră software este Open Source și auditabil, mai ales dacă este construit de același furnizor care produce hardware-ul.
Rolul miniscrisului
Miniscript oferă dezvoltatorilor de portofel capacitatea de a utiliza pe deplin funcțiile avansate ale Bitcoin Script. Pentru o prezentare generală a posibilităților incredibile de deblocare a miniscriptului, consultați postarea noastră anterioară pe blog. Poate doriți să ascultați Episodul 452 din Podcastul Stephan Livera pentru o discuție despre ce aduce miniscript în peisajul bitcoin.
Aplicația Ledger Bitcoin acceptă miniscript încă de la lansarea sa 2.1.0, care a fost implementată în februarie 2023. La conferința Bitcoin 2023 din Miami, Wizardsardine a anunțat lansarea 1.0 a lor. portofel Liana, primul portofel implementat bazat pe miniscript.
Ideea de bază a acestei postări este că un cont de portofel bitcoin poate fi protejat nu doar cu unul, ci și cu multiplu chei. Acest lucru permite cadre de securitate flexibile în care chiar și un eșec total sau compromiterea unei chei nu este catastrofală.
Multisig meditații
Multisig este o actualizare semnificativă a puterii unei soluții de auto-custodie. Prin valorificarea programabilității Bitcoin Script, acesta permite crearea de portofele care necesită mai multe chei în loc de una singură. A k-de-n portofelul multisig necesită o combinație de k semnături valabile, dintr-un total de n cele posibile.
Cu toate acestea, multisig pune, de asemenea, o povară UX asupra utilizatorului și introduce noi oportunități pentru erori. O configurare multisig 3 din 3, care implică trei chei diferite, susținute în siguranță în locații separate, oferă o securitate puternică... dar înseamnă și că, dacă chiar și un singur cheia este pierdută, monedele devin permanent inaccesibile!
Prin urmare, setările care oferă mai multă redundanță (cum ar fi 2 din 3 sau 3 din 5) tind să fie mai populare: dacă o singură cheie este pierdută, celelalte chei pot facilita recuperarea. Dar acest lucru introduce un compromis: dacă o cheie este compromisă fără să știți, securitatea generală este redusă semnificativ!
Companiile cum ar fi Casa și Capital neîncadrat se specializează în soluții de auto-custodie în care dețin o minoritate din cheile clienților lor. De asemenea, își ajută utilizatorii ghidându-i prin procesul de integrare și simplificând utilizarea sistemelor de custodie, care altfel ar putea fi descurajantă pentru majoritatea utilizatorilor netehnici.
Miniscript și căi de recuperare blocate în timp
Liana folosește miniscript pentru a crea portofele care au mai multe moduri de cheltuire:
- o condiție de cheltuieli primară, care este disponibilă imediat;
- una sau mai multe condiții suplimentare de cheltuieli care devin disponibile după o anumită perioadă (așa-numitele cronometru).
Acest lucru permite multe cazuri de utilizare interesante:
- Recuperare: un portofel standard cu semnătură unică sau semnătură multiplă ca cale principală de cheltuieli; dar un mecanism separat de recuperare (o cheie cu o sămânță diferită, un multisig, un prieten priceput la tehnologie, un custode) devine disponibil după 6 luni.
- Guvernanță: O companie cu doi directori ar putea stabili un 2 din 2 pentru trezoreria companiei; în caz de dezacord, un avocat de încredere ar putea accesa fondurile după 6 luni.
- Decadere multisig: Un portofel începe ca 3 din 3, trece la 2 din 3 după 6 luni și devine 1 din 3 după 9 luni.
- Moștenirea automată: Calea de recuperare după 6 luni include 2 din 3 din cei trei copii ai tăi; poate o a doua cale de recuperare dupa 1 an implica un notar, in cazul in care mostenitorii nu pot ajunge la un consens.
Observație: toate exemplele de mai sus folosesc a timelock relativ, care se referă la vechimea monedelor (adică: ultima dată când au fost mutate fondurile). Compensația este că utilizatorul trebuie să-și amintească să cheltuiască monedele (trimițându-le singur) dacă timpul de blocare se apropie de expirare.
Acestea sunt doar câteva exemple, dar ar trebui să fie suficiente pentru a convinge cititorul că miniscriptul este un pas semnificativ înainte spre realizarea potențialului Bitcoin ca bani programabili.
Înregistrarea politicii portofel
Pentru conturile portofel Bitcoin care utilizează mai multe chei (fie că este vorba de multisig sau de soluții mai sofisticate bazate pe miniscript), este esențial să antrenați dispozitivul să identifice adresele care aparțin acelui cont. Acesta este singurul mod în care dispozitivul poate ajuta utilizatorul să se asigure că primește sau cheltuiește de la adresele corecte...
Validarea politicii și a xpub-uri a cosemnatarului față de o copie de rezervă de încredere este esențială, dar necesită relativ timp.
Vestea bună este că trebuie făcută o singură dată:
Odată ce o politică este înregistrată cu un nume (în exemplul „Decaying 3of3”), dispozitivul dumneavoastră o va putea recunoaște ori de câte ori este utilizată o astfel de politică.
Cei interesați de detalii tehnice pot găsi mai multe informații în propunere BIP.
Copiere de rezervă a politicii
Un aspect critic de remarcat este că, în timp ce politicile cu mai multe chei permit un subset al cheile private a autoriza tranzactii, cunoasterea toate cheile publice (și exact politică) sunt necesare.
Cu toate acestea, spre deosebire de seed, salvarea politicii și a cheilor publice este mult mai puțin riscantă: dacă cineva ar descoperi-o, ar putea urmări toate tranzacțiile legate de acea politică. Deși acest lucru nu este ideal - confidențialitatea contează! − nu este la fel de dezastruos ca pierderea monedelor și mai puțin atrăgător pentru potențialii atacatori. În consecință, stocarea mai multor copii ale politicii în portofele fierbinți, tipărirea și stocarea în diferite locuri, criptarea și stocarea în cloud, și așa mai departe, sunt toate strategii viabile.
Portofelul cu o singură semnătură, care nu poate fi folosit în spate
Să facem un pas înapoi. Am discutat despre portofelele cu semnături multiple, dar acum ne întoarcem la elementele de bază pentru a crea un portofel cu o singură semnătură. Mai exact, vrem un portofel care se simte și arată ca un portofel cu o singură semnătură, după o fază inițială de configurare. Cu toate acestea, ne propunem să creăm un portofel din care producătorul să nu vă fure fondurile chiar dacă sunt rău intenționate 😈, iar dispozitivul de semnare hardware se comportă în moduri imprevizibile.
Abordarea poate fi generalizată cu ușurință pentru portofelele cu semnături multiple.
Exemplele de mai jos vor fi scrise într-o limbă numită Politica, mai degrabă decât miniscript. Politica este mai ușor de citit și de gândit pentru oameni și poate fi compilată în miniscript cu instrumente automate. Citiți mai multe despre miniscript și politică.
Portofelul hardware vă poate proteja în modelul standard de securitate. Miniscript vă poate proteja în modelul de securitate anti-backdoor (și multe altele!).
Pasul zero: status quo-ul
Aceasta este politica pe care o folosesc majoritatea utilizatorilor în prezent: o singură cheie care este derivată dintr-o sămânță produsă în portofelul hardware.
pk(key_ledger)
Desigur, nu există nicio modalitate de a dovedi absența unei uși din spate.
Pasul unu: dublați acele chei
Primul pas este simplu:
and(pk(key_ledger), pk(key_client))
Aici, key_client
este generat pe mașina utilizatorului, prin urmare a tastă rapidă. În esență, este o configurație multisig 2 din 2. Aspectul cheie este că utilizatorul nu interacționează prea mult cu key_client
: portofelul software generează această cheie, o include în backup-ul portofelului și semnează ori de câte ori este nevoie (de exemplu, în timp ce utilizatorul este ocupat să semneze cu semnatarul hardware).
Acest lucru pare deja destul de interesant: fondurile sunt de necheltuit fără key_client
, care nu este disponibil pentru furnizorul de hardware; chiar dacă vânzătorul rău ar fi avut cunoștințe complete despre cheia din dispozitiv, tot nu ar putea să mute fondurile fără a viza în mod explicit utilizatorul, de exemplu prin compromiterea mașinii care rulează portofelul software.
Cu toate acestea, există o problemă: în timpul integrării portofelului, semnatarul hardware este singura entitate capabilă să genereze cheia publică (xpub) key_ledger
folosit în portofel. Prin urmare, dispozitivul ar putea genera în mod intenționat a greşit xpub controlat de atacator și ulterior refuză (sau nu poate) semna. Probabil, acesta este un scenariu de atac destul de extrem: creatorul ușii din spate nu poate fura fondurile și tot ce poate face este să vizeze individual utilizatorul și să solicite o răscumpărare („Te pot ajuta să-ți recuperezi banii dacă îmi plătești jumătate ”).
Mai realist, acest lucru crește șansa de greșeli de greșeli: acum aveți două semințe/chei private și aveți nevoie de atât pentru a putea cheltui. Pierdeți fie și monedele sunt blocate pentru totdeauna.
Pasul doi: recuperare blocată
Introducem o cheie de recuperare separată, accesibilă numai după un anumit timp de blocare: and(older(25920)
, pk(key_recovery))
, unde 25920 este numărul aproximativ de blocuri în 6 luni. Politica completă devine:
or(
and(pk(key_ledger), pk(key_client)), and(after(25920), pk(key_recovery))
)
Acesta este similar cu scenariul anterior, dar cu o întorsătură: dacă key_ledger
or key_client
devine indisponibilă din orice motiv (cel mai frecvent, pierderea copiei de rezervă a semințelor!), a cale de recuperare devine accesibil după 6 luni.
Există mai multe opțiuni pentru key_recovery
, fiecare cu propriile sale compromisuri:
a. Folosește altul tastă rapidă. Aceasta este o soluție practică atâta timp cât utilizatorul își amintește să resetați blocarea. Cu toate acestea, dacă tastele de acces rapid sunt compromise (un scenariu care în general ar trebui considerat destul de probabil!), atacatorul ar putea încerca să acceseze fondurile de îndată ce expiră timpul de blocare, inițiind o cursă cu proprietarul legitim.
b. Utilizați un dispozitiv hardware separat de semnare. Aceasta este o soluție robustă și poate fi utilizată în combinație cu un furnizor diferit, dacă se dorește; cu toate acestea, crește complexitatea instalării și costul pentru utilizator în ceea ce privește experiența utilizatorului.
c. Utilizați un serviciu extern de încredere. Portofelul software ar putea importa un xpub dintr-un serviciu extern, folosindu-l ca key_recovery
. Această terță parte este de încredere numai dacă expiră perioada de blocare, ceea ce ar putea fi un compromis atrăgător pentru unii utilizatori.
După cum am menționat, ca și pentru orice politică cu timelock-uri, este important ca utilizatorul să-și amintească să reîmprospăteze monedele înainte de expirarea timelock-ului.
Pasul trei: terțul care nu are încredere
Să combinăm ambele idei (a) și (c): pentru calea de recuperare, avem nevoie de o tastă rapidă locală key_recovery_local
, Precum și o key_recovery_remote
care este găzduit cu un serviciu semi-încrezător; păstrăm și cronometrul.
or(
and(pk(key_ledger), pk(key_client)),
and(older(25920),
and(pk(key_recovery_local), pk(key_recovery_remote))
)
)
Acest lucru scade nivelul de încredere necesar din partea serviciului de recuperare. Cu toate acestea, trebuie să fim precauți: serviciul în sine ar putea monitoriza blockchain-ul și ar putea detecta UTXO-urile noastre - la urma urmei, ne-au furnizat key_recovery_remote
xpub, astfel încât să poată scana UTXO-uri care conțin chei pubkey derivate din key_recovery_remote
. Ei vor putea afla despre istoria noastră financiară, chiar înainte de expirarea timpului de blocare și chiar dacă nu am folosit niciodată serviciul lor.
Observație: Arborii rădăcină pot elimina această problemă de confidențialitate pentru anumite politici, dar acest lucru nu este întotdeauna cazul și necesită o evaluare atentă pe baza politicii specifice.
Pasul patru: orbește terțul 🙈
Pentru a preveni ca serviciul de recuperare să învețe despre istoria noastră financiară, în loc să folosim pubkey-ul pe care ni-l comunică, putem folosi un orb xpub tehnică explicat de mflaxman în detaliu aici. Pe scurt, în loc să folosești key_recovery_remote
în politica noastră, alegem patru numere aleatoare pe 31 de biți a
, b
, c
, d
( factori orbitori), și folosim următoarele BIP-32 pubkey derivat:
key_recovery_remote_blind = key_recovery_remote_blind/a/b/c/d
Este esențial să adăugăm și noi key_recovery_remote
, și factorii orbitori a
, b
, c
și d
la backup-ul nostru, pentru referințe viitoare.
Dacă trebuie vreodată să folosim serviciul de recuperare, atunci vom dezvălui a
, b
, c
, d
lor. Până atunci, ei nu au de unde să descopere că cheile derivate din lor key_recovery_remote
sunt publicate pe blockchain: numărul de combinații posibile pentru cei 4 factori orbitori este 2^(31*4) = 2^124
, ceea ce face imposibilă forța brută pe toate.
Pasul cinci: prea multe taste rapide te pot arde 🔥
Am reușit să facem portofelul nostru software unbackdoorable. Cu toate acestea, am introdus o problemă diferită: ambele condiții de cheltuieli folosesc un fierbinte cheie care nu este verificată de portofelul hardware. Prin urmare, dacă mașina gazdă este compromisă, s-ar putea să vă păcălească să înregistrați politica folosind cheile pubkey key_client
și key_recovery_local
, dar puneți chei private aleatorii, fără legătură în backup-ul nostru (rețineți că fierbinte cheile fac parte din backupul nostru!).
Asta ar face practic orice fonduri trimise în portofel de necheltuit, deoarece nimeni nu controlează cheile private necesare semnării.
Există câteva soluții pentru a rezolva această problemă:
- În timpul integrării, după imprimarea copiei de rezervă pe hârtie, putem folosi un dispozitiv separat pentru a verifica dacă tastele rapide private și publice de pe backup se potrivesc într-adevăr. Această abordare ar elimina problema, deoarece am fi siguri că avem toate cheile necesare pentru reconstrucție și semnare.
- Putem adăuga o altă condiție de cheltuieli cu un timelock și mai lung (9 luni, 38880 blocuri) care necesită doar o
key_ledger_failsafe
de pe dispozitivul hardware. În acest fel, în cel mai rău caz absolut în care totul eșuează, revenim la securitatea unui singur dispozitiv de semnare. În operațiuni normale, nu l-am lăsa niciodată să expire primul timelock, astfel încât nici al doilea timelock nu va expira!
Cu a doua abordare, politica finală ar arăta astfel
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))
),
)
Această configurație de portofel software satisface toate proprietățile de securitate pe care le-am revendicat la început. Mai mult, oferă o cale de recuperare în cazul în care principalele chei de cheltuieli key_ledger
sunt pierdute. O caracteristică plăcută de avut!
Incorporare în portofelul software care nu poate fi accesat în spate
Cum ar arăta experiența utilizatorului pentru un portofel care folosește o politică atât de complexă? Iată o scurtă prezentare generală:
- Utilizatorul deschide portofelul software și începe să creeze un cont nou.
- Portofelul software solicită utilizatorului să-și conecteze dispozitivul de semnare și preia xpub-urile pentru
key_ledger
șikey_ledger_failsafe
. - Portofelul software generează în mod autonom tasta rapidă key_client.
- Portofelul software obține
key_recovery_remote
de la un serviciu de co-semnare sau permite utilizatorului să specifice o cheie într-un alt mod. Opțional, calculeazăkey_recovery_remote_blind
folosind tehnica de orbire menționată anterior. - Portofelul software generează o copie de rezervă a politicii care conține politica exactă a miniscripturilor, toate xpub-urile și cheia privată extinsă pentru
key_client
tastă rapidă. Această copie de rezervă este stocată în siguranță (de exemplu, tipărită pe hârtie sau salvată pe un dispozitiv separat). - În cele din urmă, portofelul software îi indică utilizatorului să înregistreze politica pe dispozitiv. Utilizatorul verifică încrucișarea copiei de rezervă (pe hârtie sau pe orice alt suport decât ecranul controlat de portofelul software).
Portofelul software gestionează majoritatea pașilor de mai sus, făcând ca implicarea utilizatorului să nu fie mai împovărătoare decât efortul așteptat necesar astăzi pentru a configura un portofel cu semnături multiple.
Integrarea ar trebui să necesite doar câteva minute odată ce este creat un UX bun pentru ea. Odată finalizat, portofelul cu software poate oferi o experiență utilizator foarte similară cu cea a unui portofel tipic cu o singură semnătură. Așa va schimba totul miniscript-ul: dispărând din vederea utilizatorului!
Îmbunătățiri ale rădăcinii pivotante
Ledger acceptă miniscript începând cu versiunea 2.1.0 a aplicației Bitcoin, lansată în martie. În timp ce suportul pentru primirea și cheltuirea de la adresele rădăcină principală a fost activat începând cu furcă moale cu rădăcină pivotantă în noiembrie 2021, acum punem ultimele remedii la următorul pas al foii de parcurs: suport pentru miniscript pentru taproot.
Taproot va avea un impact uriaș asupra gradului de utilizare a abordărilor prezentate în acest articol. Dacă calea de cheltuieli primară este o condiție de cheltuieli cu o singură cheie, existența căilor de cheltuieli de recuperare va fi nedetectabilă pe blockchain, dacă nu sunt utilizate. Acest lucru va îmbunătăți considerabil confidențialitatea eliminând complet orice amprentă pentru calea standard de cheltuieli. În plus, îmbunătățește scalabilitatea, deoarece calea standard de cheltuieli devine cât mai eficientă din punct de vedere al costurilor. Aceasta înseamnă că nu vor fi suportate costuri suplimentare din cauza prezenței căilor de recuperare, cu excepția cazului în care acestea sunt utilizate. Aceasta este o actualizare semnificativă a tranzacțiilor SegWit, care necesită publicarea întregului script, inclusiv toate condițiile de cheltuieli, în timpul oricărei cheltuieli.
În cele din urmă, protocoale mai avansate precum MuSig2 (standardizat recent) și FROST va supraalimenta calea cheii rădăcină pivotantă. Construite pe semnăturile Schnorr, aceste protocoale permit crearea unui singur pubkey agregat care poate fi folosit pentru a reprezenta o n-de-n multisemnătură sau a k-de-n schema de prag. Acest lucru ar permite utilizarea căii cheie a rădăcinii pivotante chiar și în cazurile care astăzi sunt mai frecvent reprezentate cu scripturi multisig specifice.
Concluzii
Acest articol explorează o nișă mică (dar importantă) a spațiului vast de design pe care miniscriptul îl dezlănțuie pentru portofelele software.
Am arătat cum miniscriptul poate fi folosit pentru a crea un portofel software „unbackdoorable”, adăugând în același timp o cale de recuperare suplimentară care permite prevenirea pierderilor dezastruoase ale cheilor. În timp ce dispozitivele hardware de semnare nu pot impune modelul de securitate anti-backdoor, acceptând miniscript, ele permit portofele software care fac exact asta!
Folosind inteligent o combinație de scheme cu semnături multiple, timelock-uri, orb xpub-uri și taste rapide, am demonstrat o configurație sigură a portofelului care echilibrează securitatea, confidențialitatea și robustețea.
Mai mult, am susținut că acest lucru este posibil fără a avea un impact negativ asupra experienței utilizatorului, deoarece complexitatea configurației nu se traduce într-o povară suplimentară mare de UX.
Suntem încântați de posibilitățile pe care miniscript le va debloca pentru următoarea generație de auto-custodie bitcoin.
- Distribuție de conținut bazat pe SEO și PR. Amplifică-te astăzi.
- PlatoData.Network Vertical Generative Ai. Împuterniciți-vă. Accesați Aici.
- PlatoAiStream. Web3 Intelligence. Cunoștințe amplificate. Accesați Aici.
- PlatoESG. Automobile/VE-uri, carbon, CleanTech, Energie, Mediu inconjurator, Solar, Managementul deșeurilor. Accesați Aici.
- BlockOffsets. Modernizarea proprietății de compensare a mediului. Accesați Aici.
- Sursa: https://www.ledger.com/blog/towards-a-trustless-bitcoin-wallet-with-miniscript
- :are
- :este
- :nu
- :Unde
- $UP
- 1
- 2021
- 2023
- 30
- 7
- 9
- a
- capacitate
- Capabil
- Despre Noi
- mai sus
- Absolut
- absolut
- acces
- accesate
- accesibil
- conform
- Cont
- Conturi
- Acțiune
- acțiuni
- activ
- de fapt
- adăuga
- adăugare
- plus
- Suplimentar
- În plus,
- adrese
- avansat
- După
- împotriva
- vârstă
- Ajutorul
- urmări
- TOATE
- permite
- permite
- de-a lungul
- deja
- de asemenea
- Cu toate ca
- mereu
- an
- și
- a anunțat
- O alta
- Orice
- nimic
- aplicaţia
- interesant
- apărea
- aplicatii
- abordare
- abordari
- aprobare
- aproximativ
- SUNT
- discutabil
- a susținut
- articol
- AS
- aspect
- ajuta
- asociate
- At
- ataca
- audibilă
- autoriza
- Automata
- autonom
- disponibil
- înapoi
- ușă din dos
- sprijinit
- sprijin
- Backup
- soldurile
- bazat
- de bază
- Pe scurt
- Noțiuni de bază
- BE
- deoarece
- deveni
- devine
- înainte
- Început
- fiind
- de mai jos
- CEL MAI BUN
- între
- Dincolo de
- Bitcoin
- Bitcoin Wallet
- portofele bitcoin
- Amesteca
- blockchain
- Blocuri
- Blockstream
- Blog
- atât
- Creier
- Aduce
- difuza
- Bug
- construi
- construit
- povară
- arde
- afaceri
- ocupat
- dar
- by
- denumit
- CAN
- nu poti
- capabil
- atent
- caz
- cazuri
- catastrofic
- Provoca
- provocând
- prudenţă
- sigur
- contesta
- șansă
- Schimbare
- Copii
- cip
- Alege
- alegere
- revendicat
- clar
- Cloud
- Stocare in cloud
- cod
- Monede
- combinaţie
- combinaţii
- comercial
- Comun
- în mod obișnuit
- comunica
- Companii
- companie
- Compania
- Completă
- complet
- complex
- complexitate
- compromis
- compromisor
- calcule
- tehnica de calcul
- preocupările
- condiție
- Condiții
- Conferință
- Configuraţie
- Conectați
- Consens
- prin urmare
- Lua în considerare
- luate în considerare
- conținute
- controlată
- controale
- convinge
- corecta
- stricat
- A costat
- ar putea
- Curs
- crea
- Crearea
- creaţie
- creator
- critic
- aspect critic
- crucial
- În prezent
- custode
- Custodie
- clienţii care
- Periculos
- Refuzați
- scade
- considera
- definit
- Cerere
- demonstrat
- dislocate
- Derivat
- descriere
- Amenajări
- proiectat
- dorit
- detaliu
- detaliat
- detalii
- detecta
- Dezvoltatorii
- dispozitiv
- Dispozitive
- diferit
- dificil
- diminuarea
- direct
- Directorii
- dispărând
- dezastruos
- descoperi
- descoperirea
- discutat
- discuţie
- afișat
- do
- face
- Nu
- făcut
- dubla
- două
- în timpul
- fiecare
- mai ușor
- cu ușurință
- efort
- oricare
- elimina
- eliminarea
- altfel
- scoate in evidenta
- angajat
- permite
- activat
- permite
- capăt
- aplica
- suficient de
- asigura
- asigurare
- intrarea
- ispititor
- Întreg
- în întregime
- entitate
- echipament
- Erori
- mai ales
- esenţial
- În esență,
- stabili
- etc
- evaluare
- Chiar
- EVER
- Fiecare
- tot
- exact
- exemplu
- exemple
- excitat
- a executa
- executat
- Exercita
- existenţă
- de aşteptat
- experienţă
- expirare
- Exploata
- Explorează
- exporturile
- extinde
- extern
- extremă
- facilita
- factori
- eșuează
- Eșec
- destul de
- Cădea
- departe
- Caracteristică
- DESCRIERE
- februarie
- puțini
- final
- financiar
- istoric financiar
- Găsi
- First
- flexibil
- Flip
- Concentra
- următor
- urmează
- Pentru
- pentru totdeauna
- Înainte
- patru
- cadre
- frecvent
- prieten
- din
- Complet
- complet
- funcționalitate
- fond
- Fondurile
- În plus
- zadarnic
- viitor
- scop general
- în general
- genera
- generată
- generează
- generator
- generaţie
- dat
- Go
- merge
- bine
- mare
- foarte mult
- HAD
- Jumătate
- Piese metalice
- dispozitiv hardware
- Portofel hardware
- Producator de portofel hardware
- Portmoneuri hardware
- nociv
- Avea
- având în
- ajutor
- prin urmare
- istorie
- deţine
- speranţă
- gazdă
- găzduit
- FIERBINTE
- Cum
- Totuși
- http
- HTTPS
- mare
- Oamenii
- idee
- ideal
- idei
- identifica
- if
- imediat
- Impactul
- impact
- implementat
- import
- important
- imposibil
- îmbunătăţi
- in
- include
- Inclusiv
- care încorporează
- Creșteri
- incredibil
- într-adevăr
- independent
- Individual
- industrie
- informații
- în mod inerent
- inițială
- în interiorul
- Inițiat
- inspira
- Instalarea
- instanță
- in schimb
- intentionat
- interacţiona
- interactiv
- interes
- interesat
- interesant
- interfaţă
- în
- introduce
- introdus
- Prezintă
- intruziv
- implicare
- implicând
- problema
- IT
- ESTE
- în sine
- doar
- doar unul
- Cheie
- chei
- Cunoaște
- cunoştinţe
- cunoscut
- peisaj
- limbă
- laptop
- Nume
- mai tarziu
- avocat
- Conduce
- AFLAȚI
- învăţare
- cel mai puțin
- carte mare
- stânga
- legitim
- mai puțin
- lăsa
- Nivel
- efectului de pârghie
- ca
- Probabil
- legate de
- listat
- încărcare
- local
- Locații
- blocat
- Lung
- mai lung
- Uite
- arată ca
- pierde
- care pierde
- de pe
- pierderi
- pierdut
- maşină
- Principal
- Majoritate
- face
- FACE
- Efectuarea
- malware
- gestionează
- de conducere
- manipulant
- manieră
- Producător
- Producătorii
- multe
- Martie
- Meci
- Mai..
- mijloace
- măsuri
- mecanism
- mediu
- menționat
- pur și simplu
- mesaj
- mesaje
- metodă
- Metode
- Miami
- ar putea
- miniscris
- minoritate
- minute
- Misiune
- greşeli
- model
- bani
- Monitorizarea
- luni
- mai mult
- În plus
- cele mai multe
- Mai ales
- muta
- mutat
- mult
- multiplu
- multisemn
- trebuie sa
- nume
- Nearing
- necesar
- Nevoie
- necesar
- nevoilor
- negativ
- rețele
- nu
- Nou
- ştiri
- următor
- frumos
- Nu.
- non tehnic
- normală.
- noiembrie
- Noiembrie 2021
- acum
- număr
- numere
- obține
- of
- oferi
- oferind
- promoții
- Offline
- on
- La imbarcare
- dată
- ONE
- cele
- afară
- deschide
- open-source
- deschide
- de operare
- Operațiuni
- Oportunităţi
- Opţiuni
- or
- comandă
- Altele
- in caz contrar
- al nostru
- afară
- a subliniat
- exterior
- peste
- global
- Prezentare generală
- propriu
- proprietar
- Hârtie
- Suprem
- parte
- în special
- parte
- cale
- Plătește
- Efectua
- poate
- perioadă
- permanent
- fază
- telefon
- Loc
- Locuri
- Plato
- Informații despre date Platon
- PlatoData
- Punct
- puncte
- Politicile
- Politica
- Popular
- posibilităţile de
- posibil
- eventual
- Post
- potenţial
- potenţial
- putere
- Practic
- practic
- practică
- precis
- tocmai
- prezice
- predictibil
- prezenţă
- prezenta
- prezentat
- împiedica
- previne
- precedent
- în prealabil
- în primul rând
- primar
- tipărire
- anterior
- intimitate
- privat
- cheie privată
- Cheile private
- Problemă
- probleme
- procedură
- proces
- produce
- Produs
- produce
- cum se cuvine
- proprietăţi
- proprietate
- propus
- proteja
- protejat
- protectoare
- protecţie
- protocol
- protocoale
- Dovedi
- furniza
- prevăzut
- public
- Cheia publică
- chei publice
- publica
- publicat
- Editare
- scop
- pune
- Punând
- întrebare
- Rasă
- aleator
- Răscumpărare
- mai degraba
- ajunge
- Citeste
- Cititor
- realizarea
- motiv
- primire
- recent
- recunoaște
- record
- recuperare
- se referă
- Inregistreaza-te
- înregistrată
- înregistrare
- relativ
- eliberaţi
- eliberat
- se bazează
- minte
- înlocui
- reprezenta
- reprezentate
- reputație
- necesita
- necesar
- Necesită
- rezultând
- reține
- reveni
- dezvălui
- dreapta
- Risc
- Riscurile
- Riscant
- foaie de parcurs
- robust
- robusteţe
- Rol
- rolurile
- funcţionare
- ruleaza
- acelaşi
- Spune
- scalabilitate
- scanare
- scenariu
- schemă
- scheme
- şterpeli
- Ecran
- script-uri
- Al doilea
- Secțiune
- sigur
- în siguranță,
- securitate
- vedea
- sămânţă
- seminţe
- caută
- părea
- pare
- SegWit
- Custodia de sine
- trimitere
- sensibil
- trimis
- distinct
- serviciu
- set
- configurarea
- câteva
- Pantaloni scurți
- să
- a arătat
- semna
- Semnături
- semnificativ
- semnificativ
- semnare
- Semne
- asemănător
- simplu
- simplificarea
- întrucât
- singur
- mic
- inteligent
- So
- Software
- soluţie
- soluţii
- REZOLVAREA
- unele
- Cineva
- curând
- sofisticat
- Sursă
- Spaţiu
- specializa
- specific
- Specificaţii
- petrece
- Cheltuire
- standard
- Standuri
- începe
- Stare
- Pas
- paşi
- Încă
- depozitare
- stocate
- stocarea
- strategii
- rezistenţă
- Şir
- puternic
- Lupta
- de succes
- Reușit
- astfel de
- rezuma
- Supraîncărcare
- a sustine
- De sprijin
- Sprijină
- a presupus
- sistemice
- risc sistemic
- sisteme
- Parime
- Lua
- rădăcină
- Ţintă
- direcționare
- Tehnic
- tehnic
- Tehnologia
- termeni
- decât
- acea
- Monedele
- lor
- Lor
- se
- apoi
- Acolo.
- astfel
- prin urmare
- Acestea
- ei
- lucruri
- crede
- Al treilea
- acest
- aceste
- amenințări
- trei
- prag
- Prin
- Prin urmare
- timp
- consumă timp
- la
- astăzi
- azi
- de asemenea
- Unelte
- subiecte
- Total
- față de
- Urmă
- urmări
- istoric
- Tren
- tranzacție
- Tranzacții
- tranziții
- Traduceți
- trezorerie
- Copaci
- adevărat
- Încredere
- de încredere
- lipsit de încredere
- Adevăr
- twist
- Două
- Tipuri
- tipic
- incapabil
- înţelege
- dezlănțuie
- spre deosebire de
- deschide
- deblochează
- imprevizibil
- până la
- upgrade-ul
- us
- uzabilitate
- utilizare
- utilizat
- Utilizator
- Experiența de utilizare
- utilizatorii
- utilizări
- folosind
- folosi
- utilizate
- Utilizand
- ux
- VALIDA
- varietate
- diverse
- Fixă
- vânzător
- verificat
- verifica
- versiune
- foarte
- viabil
- vital
- Vulnerabilitățile
- aștepta
- Portofel
- Portofele
- vrea
- a fost
- Cale..
- modalități de
- we
- au fost
- Ce
- cand
- oricând
- dacă
- care
- în timp ce
- întreg
- de ce
- Wikipedia
- voi
- cu
- în
- fără
- cuvinte
- lume
- ar
- scris
- Greșit
- an
- încă
- Tu
- Ta
- te
- zephyrnet
- zero