La computación multipartita es una plataforma de custodia de Google Cloud para claves de firma de recursos digitales. Combina la firma de umbral, la aplicación de políticas de transacciones y los controles de administración empresarial.
Por qué usar la firma de umbral
En la custodia institucional de recursos digitales, una clave de firma privada controla directamente el movimiento de los recursos. Para proteger las claves de firma, se deben mitigar tres riesgos operativos y de seguridad distintos:
- Solidez criptográfica: El robo de claves o el uso no autorizado permiten que un atacante firme transacciones fraudulentas, lo que genera una pérdida irreversible de activos.
- Disponibilidad: Las interrupciones temporales o la infraestructura de firma inaccesible detienen la liquidación de transacciones y las operaciones de liquidez.
- Durabilidad: La pérdida o el daño permanente del material de la clave hace que los recursos digitales asociados sean irrecuperables.
La administración centralizada de claves fuerza un equilibrio entre la seguridad y la resiliencia operativa. Almacenar una clave privada completa en un solo módulo de seguridad de hardware (HSM) crea un punto único de fallo para la disponibilidad, la durabilidad y la solidez criptográfica. Replicar esa clave en varios HSM o regiones mejora la disponibilidad y la durabilidad, pero expande la superficie de ataque. Debido a que cada réplica contiene la clave completa, cada copia presenta otro punto único de vulneración.
La computación multipartita resuelve este compromiso con esquemas de firma de umbral, incluida una extensión reforzada del protocolo DKLS23. Cada una de las partes independientes respaldadas por hardware genera y conserva un recurso compartido de claves aislado. Durante la firma, estas partes ejecutan un protocolo de varias partes para producir una firma válida sin ensamblar la clave privada completa en una sola ubicación. Un atacante que vulnera menos partes que el umbral de firma no puede falsificar una firma ni reconstruir la clave. Al mismo tiempo, las operaciones de firma continúan incluso si las partes individuales no están disponibles o fallan de forma permanente, siempre que queden suficientes partes para cumplir con el umbral. Para obtener más información sobre el protocolo, consulta Antecedentes criptográficos de DKLS23.
Blockchains compatibles
La computación multipartita admite los siguientes algoritmos de claves:
| Algoritmo | Curva | Cadenas típicas |
|---|---|---|
ECDSA (EC_SIGN_SECP256K1) |
secp256k1 | Bitcoin, Ethereum y cadenas compatibles con EVM |
EdDSA (EC_SIGN_ED25519) |
Ed25519 | Solana (próximamente) |
Una vez que se genera una clave distribuida, la computación multipartita devuelve su clave pública y las direcciones de cadena de bloques derivadas de ella.
Controles empresariales
La computación multipartita modela tu organización dentro de tu propia instancia dedicada y aislada. Decide quién tiene los fragmentos de claves, cuántos de ellos deben aprobar una firma y con qué reglas se evalúa cada transacción antes de firmar.
Usuarios y roles
Un usuario es una identidad que incorporas a una instancia. Cada usuario está vinculado a una principal, ya sea una Cuenta de Google o una principal de la federación de identidades de personal. Cada usuario tiene uno o más roles:
- Administrador: Administra usuarios, equipos y otros recursos de la instancia.
- Autor de políticas: Crea y aprueba políticas de transacciones.
- Firmante: Tiene partes de claves y aprueba transacciones.
Los firmantes, los autores de políticas y los administradores firman sus aprobaciones con una clave de autorización, cuya mitad privada nunca sale de la custodia del cliente.
A nivel de API, los roles de computación multipartita funcionan junto con los roles de IAM. IAM controla qué métodos de API puede llamar una principal. Los roles de un usuario controlan lo que esa principal puede hacer dentro de la instancia. Para obtener información sobre cómo funcionan juntos los roles de IAM y los roles de usuario, consulta Seguridad y autorización.
Equipos
Un equipo es un grupo de firmantes, como un departamento o un conjunto de funcionarios. Cada firmante pertenece a un solo equipo. Los equipos permiten que una KeyPolicy haga referencia a grupos de firmantes, por ejemplo, "generar fragmentos de clave para 3 miembros del equipo de tesorería y requerir que 2 de ellos firmen" en lugar de nombrar a cada persona.
Políticas de MPC
Llaveros de claves y políticas de claves
Un KeyRing agrupa claves. Cuando creas un KeyRing, estableces su KeyPolicy, que define lo siguiente para cada clave creada en el KeyRing:
- qué equipos y usuarios tienen fragmentos de claves,
- cuántos de ellos deben participar para firmar (el umbral) y
- dónde se almacena cada recurso compartido de claves (Google Cloud, instalaciones del cliente o dispositivos móviles de los usuarios).
Las claves no se pueden mover entre KeyRings ni borrar. Solo puedes inhabilitar una clave, lo que impide que se siga firmando.
KeyLists
Una KeyList es una lista con nombre de direcciones de cadena de bloques a las que pueden hacer referencia las políticas de transacciones, como los destinos de confianza. Una entrada es una clave existente, un llavero de claves (incluidas las claves que se le agreguen más adelante) o una dirección que ingreses de forma manual.
Políticas de transacciones
Una política de transacciones es una regla de Cedar que permite o prohíbe transacciones en la computación multipartita, por ejemplo, un límite de inversión o una lista de entidades permitidas de destinos. En conjunto, las políticas activas producen un veredicto, de permiso o denegación, para cada transacción. El veredicto guía a los firmantes, pero no aplica la decisión final: una transacción que las políticas de transacciones automatizadas rechazan aún se puede ejecutar si suficientes firmantes la aprueban.
Para aprender a escribir y combinar reglas, consulta Escribe reglas de políticas de transacciones y Evaluación de políticas de transacciones.