Majoritatea poveștilor despre custodie încep cu fotografia unui seif. O cutie de oțel într-un tezaur, o frază-sămânță plastifiată pe un card, doi oameni care țin fiecare o jumătate de parolă. Pare serios. Este în cea mai mare parte teatru. Amenințarea pentru o cheie privată nu este aproape niciodată un spărgător cu bormașina. Este un laptop compromis, o dependență npm malițioasă, un angajat cu drepturi de semnare și un backup care a copiat în tăcere cheia undeva unde ai uitat să o păzești.
Modelul real de amenințare
Începe prin a nota cine poate muta fonduri și cum. O cheie privată brută are o proprietate care o face unic de periculoasă: cine deține materialul complet poate semna orice, pentru totdeauna, fără nicio verificare suplimentară. Așadar, fiecare loc în care cheia a existat vreodată întreagă devine parte din suprafața ta de atac. Mașina care a generat-o. Clipboardul. Scriptul de backup. Inginerul care a rulat ceremonia dintr-o rețea de acasă. Depozitarea la rece nu elimină această problemă. Ea mută punctul unic de eșec într-un sertar și adaugă un pas uman lent și predispus la erori de fiecare dată când chiar trebuie să semnezi.
HSM-urile și de ce cheia nu ar trebui să se asambleze niciodată
Un modul hardware de securitate ține cheia în interiorul unui hardware rezistent la manipulare și semnează la cerere, astfel încât materialul nu iese niciodată în clar. Este o îmbunătățire reală, dar rămâne o singură cheie într-o singură cutie, iar cutia expune un API pe care cineva poate fi păcălit să îl apeleze. Calculul multipartit schimbă forma problemei în loc să întărească cutia. Cu semnarea cu prag prin MPC, cheia nu este asamblată niciodată. Părți independente dețin fiecare câte o cotă, iar o semnătură este produsă în comun fără ca vreo parte să vadă vreodată întregul. Nu există niciun moment și nicio mașină în care cheia completă să existe pentru a fi furată. Compromiterea unei cote, sau a două, nu îi aduce singură nimic unui atacator.
Politici, cvorumuri și ceremonii
Semnarea cu prag îți oferă un loc firesc pentru a codifica reguli. Un cvorum de doi din trei sau trei din cinci este doar minimul. Partea interesantă este ce verifică fiecare semnatar înainte de a-și contribui cota: liste de destinații permise, limite pe tranzacție și zilnice, blocaje temporale pentru transferurile mari, o a doua aprobare umană peste un prag. Stratul de semnare devine un motor de politici, iar politica este impusă prin criptografie, nu prin speranța că toată lumea a respectat procedura. Aceasta este linia care contează cel mai mult în arhitectură. Aplicația are voie doar să solicite o semnătură. Nu deține niciodată material de cheie. Ea cere, iar cvorumul decide.
Cheile se nasc într-o ceremonie, iar o ceremonie bună este scenarizată, înregistrată și reproductibilă: hardware cunoscut, mașini izolate, participanți numiți și o transcriere semnată a exact ce s-a întâmplat. Rotația merită aceeași rigoare ca generarea. Cotele ar trebui să poată fi reîmprospătate periodic și imediat după orice schimbare de personal, folosind reîmpărțirea proactivă care creează cote noi pentru aceeași adresă fără a reconstrui vreodată cheia. Fiecare cerere, aprobare și rotație ajunge într-un jurnal doar-adăugare. Acel jurnal este întreaga diferență dintre o custodie pe care o poți audita și una pe care o poți doar afirma.
Un tabel cu secrete îți spune unde sunt cheile. Un jurnal de semnare îi spune unui auditor ce autoritate a fost exercitată, de către cine și sub ce politică. Doar unul dintre ele supraviețuiește unei zile proaste.— Protocore · Inginerie blockchain
Scopul nu a fost niciodată să facem cheile mai greu de atins. Este să facem cheia brută irelevantă. Când nicio mașină nu deține vreodată secretul întreg, când fiecare mișcare de fonduri trece printr-un cvorum și o politică explicită, și când întregul sistem emite un jurnal pe care un evaluator îl poate citi linie cu linie, custodia încetează să mai fie un act de credință. Nu mai păzești o cutie sperând. Rulezi un proces pe care îl poți arăta, testa și apăra.
Ai un sistem de construit?
Spune-ne care e problema. Revenim cu o arhitectură și un plan.
Începe un proiect