A computação multipartidária é uma plataforma de custódia Google Cloud para chaves de assinatura de ativos digitais. Ele combina assinatura de limite, aplicação de políticas de transação e controles de governança empresarial.
Por que usar a assinatura de limite
Na custódia institucional de ativos digitais, uma chave de assinatura privada controla diretamente a movimentação de ativos. Para proteger as chaves de assinatura, é preciso mitigar três riscos operacionais e de segurança distintos:
- Solidez criptográfica: o roubo de chaves ou o uso não autorizado permite que um invasor assine transações fraudulentas, resultando em perda irreversível de recursos.
- Disponibilidade: interrupções temporárias ou infraestrutura de assinatura inacessível interrompem as operações de liquidação de transações e liquidez.
- Durabilidade: a perda permanente ou a corrupção do material de chave torna os ativos digitais associados irrecuperáveis.
O gerenciamento centralizado de chaves força uma compensação entre segurança e resiliência operacional. Armazenar uma chave privada completa em um único módulo de segurança de hardware (HSM) cria um único ponto de falha para disponibilidade, durabilidade e solidez criptográfica. Replicar essa chave em vários HSMs ou regiões melhora a disponibilidade e a durabilidade, mas expande a superfície de ataque. Como cada réplica contém a chave completa, cada cópia introduz outro ponto único de comprometimento.
A computação multipartidária resolve esse problema usando esquemas de assinatura de limite, incluindo uma extensão reforçada do protocolo DKLS23. As partes independentes, com suporte de hardware, geram e mantêm uma parcela de chave isolada. Durante a assinatura, essas partes executam um protocolo de várias partes para produzir uma assinatura válida sem montar a chave privada completa em um único local. Um invasor que compromete menos partes do que o limite de assinatura não pode falsificar uma assinatura ou reconstruir a chave. Ao mesmo tempo, as operações de assinatura continuam mesmo que partes individuais estejam indisponíveis ou falhem permanentemente, desde que permaneçam partes suficientes para atingir o limite. Para mais informações sobre o protocolo, consulte Contexto criptográfico do DKLS23.
Blockchains compatíveis
A computação multipartidária é compatível com os seguintes algoritmos de chave:
| Algoritmo | Curva | Redes típicas |
|---|---|---|
ECDSA (EC_SIGN_SECP256K1) |
secp256k1 | Bitcoin, Ethereum e cadeias compatíveis com EVM |
EdDSA (EC_SIGN_ED25519) |
Ed25519 | Solana (em breve) |
Depois que uma chave distribuída é gerada, a computação multipartidária retorna a chave pública e os endereços de blockchain derivados dela.
Controles empresariais
A computação multipartidária modela sua organização dentro da sua própria instância dedicada e isolada. Ela decide quem detém as partes da chave, quantas delas precisam aprovar uma assinatura e quais regras são usadas para avaliar cada transação antes da assinatura.
Usuários e funções
Um usuário é uma identidade que você integra a uma instância. Cada usuário está vinculado a um principal, que pode ser uma Conta do Google ou um principal da federação de identidade de colaboradores. Cada usuário tem um ou mais papéis:
- Administrador: administra usuários, equipes e outros recursos de instância.
- Autor de políticas: cria e aprova políticas de transação.
- Signatário: detém as chaves e aprova as transações.
Os signatários, autores de políticas e administradores assinam as aprovações com uma chave de autorização, cuja metade privada nunca sai da custódia do cliente.
No nível da API, os papéis de computação multipartidária funcionam em conjunto com os papéis do IAM. O IAM controla quais métodos de API um principal pode chamar. Os papéis de um usuário controlam o que esse principal pode fazer dentro da instância. Para saber como os papéis do IAM e do usuário funcionam juntos, consulte Segurança e autorização.
Equipes
Uma equipe é um grupo de signatários, como um departamento ou um conjunto de oficiais. Cada Signer pertence a exatamente uma equipe. As equipes permitem que uma KeyPolicy se refira a grupos de signatários, por exemplo, "gerar compartilhamentos de chaves para três membros da equipe de tesouraria e exigir que dois deles assinem" em vez de nomear cada pessoa.
Políticas de MPC
KeyRings e KeyPolicies
Um KeyRing agrupa chaves. Ao criar um KeyRing, você define a KeyPolicy, que define para cada chave criada no KeyRing:
- quais equipes e usuários têm compartilhamentos de chaves,
- quantos deles precisam participar para assinar (o limite); e
- onde cada compartilhamento de chave é armazenado (Google Cloud, instalações do cliente ou dispositivos móveis do usuário).
Não é possível mover chaves entre KeyRings nem excluí-las. Só é possível desativar uma chave, o que impede que ela seja usada para assinar.
KeyLists
Uma KeyList é uma lista nomeada de endereços de blockchain que as políticas de transação podem consultar, como destinos confiáveis. Uma entrada é uma chave, um KeyRing (incluindo as chaves adicionadas posteriormente) ou um endereço que você insere manualmente.
Políticas de transação
Uma política de transação é uma regra do Cedar que permite ou proíbe transações na computação multipartidária, por exemplo, um limite de gastos ou uma lista de permissões de destinos. Juntas, as políticas ativas produzem um veredito, de permissão ou negação, para cada transação. O veredito orienta os Signatários, mas não impõe a decisão final: uma transação que as políticas de transação automatizadas negam ainda pode ser executada se um número suficiente de Signatários a aprovar.
Para saber como as regras são escritas e combinadas, consulte Escrever regras de política de transação e Avaliação da política de transação.