Panoramica del calcolo multipartitico

Il calcolo multipartitico è una piattaforma di custodia Google Cloud per le chiavi di firma degli asset digitali. Combina la firma con soglia, l'applicazione delle policy di transazione e i controlli di governance aziendale.

Perché la firma con soglia

Nella custodia di asset digitali istituzionali, una chiave di firma privata controlla direttamente il movimento degli asset. La protezione delle chiavi di firma richiede la mitigazione di tre distinti rischi operativi e di sicurezza:

  • Solidità crittografica: il furto di chiavi o l'utilizzo non autorizzato consente a un malintenzionato di firmare transazioni fraudolente, con conseguente perdita irreversibile degli asset.
  • Disponibilità: interruzioni temporanee o infrastrutture di firma inaccessibili bloccano le operazioni di liquidazione e liquidità delle transazioni.
  • Durabilità: la perdita o il danneggiamento permanente del materiale della chiave rende gli asset digitali associati non recuperabili.

La gestione centralizzata delle chiavi impone un compromesso tra sicurezza e resilienza operativa. La memorizzazione di una chiave privata completa in un singolo modulo di sicurezza hardware (HSM) crea un single point of failure per la disponibilità, la durabilità e la solidità crittografica. La replica della chiave su più HSM o regioni migliora la disponibilità e la durabilità, ma espande la superficie di attacco. Poiché ogni replica contiene la chiave completa, ogni copia introduce un altro single point of compromise.

Il calcolo multipartitico risolve questo compromesso utilizzando schemi di firma a soglia, tra cui un'estensione con protezione avanzata del protocollo DKLS23. Le parti indipendenti, supportate dalla crittografia hardware, generano e conservano ciascuna una condivisione di chiavi isolata. Durante la firma, queste parti eseguono un protocollo multi-party per produrre una firma valida senza assemblare la chiave privata completa in un'unica posizione. Un malintenzionato che compromette un numero di parti inferiore alla soglia di firma non può falsificare una firma o ricostruire la chiave. Allo stesso tempo, le operazioni di firma continuano anche se singole parti non sono disponibili o non riescono in modo permanente, a condizione che rimangano abbastanza parti per soddisfare la soglia. Per saperne di più sul protocollo, consulta Background crittografico DKLS23.

Blockchain supportate

Il calcolo multipartitico supporta i seguenti algoritmi di chiave:

Algoritmo Curve Catene tipiche
ECDSA (EC_SIGN_SECP256K1) secp256k1 Catene compatibili con Bitcoin, Ethereum ed EVM
EdDSA (EC_SIGN_ED25519) Ed25519 Solana (disponibile a breve)

Una volta generata una chiave distribuita, il calcolo multipartitico restituisce la chiave pubblica e gli indirizzi blockchain derivati da questa.

Controlli aziendali

Il calcolo multipartitico modella la tua organizzazione all'interno della tua istanza dedicata e isolata. Decide chi detiene le condivisioni delle chiavi, quante di queste devono approvare una firma e in base a quali regole viene valutata ogni transazione prima della firma.

Utenti e ruoli

Un utente è un'identità di cui esegui l'onboarding in un'istanza. Ogni utente è associato a un'entità, un Account Google o un'entità della federazione delle identità della forza lavoro. Ogni utente ha uno o più ruoli:

  • Amministratore: amministra utenti, team e altre risorse dell'istanza.
  • Autore delle policy: crea e approva le policy relative alle transazioni.
  • Firmatario: detiene le condivisioni delle chiavi e approva le transazioni.

I firmatari, gli autori delle policy e gli amministratori firmano le loro approvazioni con una chiave di autorizzazione, la cui metà privata non lascia mai la custodia del cliente.

A livello di API, i ruoli di calcolo multipartitico funzionano insieme ai ruoli IAM. IAM controlla quali metodi API possono essere chiamati da un'entità. I ruoli di un utente controllano ciò che l'entità può fare all'interno dell'istanza. Per scoprire come interagiscono i ruoli IAM e i ruoli utente, consulta Sicurezza e autorizzazione.

Team

Un team è un gruppo di firmatari, ad esempio un reparto o un insieme di funzionari. Ogni firmatario appartiene esattamente a un team. I team consentono a un criterio KeyPolicy di fare riferimento a gruppi di firmatari, ad esempio "genera condivisioni di chiavi per 3 membri del team di tesoreria e richiedi la firma di 2 di loro" anziché nominare ogni persona.

Policy MPC

KeyRing e KeyPolicy

Un KeyRing raggruppa le chiavi. Quando crei un KeyRing, imposti la relativa KeyPolicy, che definisce per ogni chiave creata nel KeyRing:

  • quali team e utenti detengono le condivisioni delle chiavi,
  • quanti di loro devono partecipare alla firma (la soglia) e
  • dove è archiviata ogni condivisione di chiavi (Google Cloud, sede del cliente o dispositivi mobili degli utenti).

Le chiavi non possono essere spostate tra KeyRing o eliminate. Puoi solo disattivare una chiave, impedendone l'ulteriore firma.

KeyLists

Un KeyList è un elenco denominato di indirizzi blockchain a cui possono fare riferimento le policy di transazione, ad esempio le destinazioni attendibili. Una voce è una chiave esistente, un keyring (incluse le chiavi aggiunte in un secondo momento) o un indirizzo inserito manualmente.

Criteri per le transazioni

Una policy di transazione è una regola Cedar che consente o vieta le transazioni nel calcolo multipartitico, ad esempio un limite di spesa o una lista consentita di destinazioni. Insieme, le policy attive producono un esito, ovvero consentono o negano ogni transazione. Il verdetto guida i firmatari, ma non impone la decisione finale: una transazione negata dalle policy di transazione automatizzate può comunque essere eseguita se un numero sufficiente di firmatari la approva.

Per scoprire come vengono scritte e combinate le regole, consulta Scrivi le regole delle policy di transazione e Valutazione delle policy di transazione.