0Pricing
Cryptology Academy · Lección

Protocolos de generación distribuida de claves

Explore los protocolos DKG, que permiten a varias partes generar conjuntamente una clave compartida sin que ninguna conozca todo el secreto.

Protocolos de generación distribuida de claves es una lección gratuita de Cryptology Academy en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Cryptology Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Cryptology Academy incluye 4 lecciones en total.

Objetivo y motivación de DKG

La generación distribuida de claves (DKG) resuelve el problema del distribuidor de confianza en la criptografía de umbral. Sin DKG, una entidad central debe generar el par de claves y distribuir las partes, y conoce momentáneamente la clave privada completa. DKG permite que n participantes generen conjuntamente un par de claves pública y privada mediante un protocolo en el que ninguna entidad conoce la clave privada, ni siquiera el coordinador del protocolo.

Pedersen DKG (1991)

Pedersen DKG fue el primer protocolo DKG práctico y se publicó en 1991. Cada uno de los n participantes genera un secreto aleatorio s_i y ejecuta un protocolo de reparto verificable de secretos (VSS) para compartirlo. Cada participante difunde compromisos con los coeficientes de su polinomio. Después de que todos los participantes comparten sus contribuciones, el secreto combinado es la suma de todos los valores s_i y cada participante posee una parte de esa suma.

Feldman VSS como componente básico

Feldman VSS (reparto verificable de secretos de Feldman, 1987) es el componente básico de la mayoría de los protocolos DKG. El distribuidor realiza compromisos con los coeficientes del polinomio como elementos del grupo (C_j = g^{a_j} mod p). Cada participante que recibe una parte f(i) puede verificarla comparándola con estos compromisos, comprobando que g^{f(i)} es igual al producto de C_j^{i^j}. Esto permite detectar si el distribuidor envió partes incorrectas.

DKG Joint-Feldman y sus limitaciones

El DKG Joint-Feldman ejecuta Feldman VSS en paralelo para los n participantes, de modo que cada uno actúa como distribuidor de su propio secreto. A continuación, los participantes presentan reclamaciones si reciben partes no válidas. La clave final es la suma de los secretos de los distribuidores contra los que no se presentaron reclamaciones. Sin embargo, el DKG Joint-Feldman no es seguro frente a adversarios adaptativos que corrompen participantes basándose en los mensajes del protocolo, una debilidad identificada por Gennaro, Jarecki, Krawczyk y Rabin.

DKG seguro de GJKR

El protocolo DKG de GJKR (Gennaro, Jarecki, Krawczyk y Rabin, 1999 y 2007) abordó las debilidades de Joint-Feldman. GJKR utiliza Pedersen VSS (compromisos con ocultación teórica de la información) en lugar de Feldman VSS y añade rondas de reclamaciones en las que los participantes pueden impugnar partes no válidas. El DKG resultante es seguro frente a adversarios adaptativos y se convirtió en la referencia teórica estándar para los DKG seguros.

Rondas de comunicación de DKG

El DKG de GJKR requiere tres rondas: una ronda de compromisos (cada participante difunde los compromisos de VSS), una ronda de reparto (los participantes se envían partes entre sí de igual a igual) y una ronda de reclamaciones (los participantes difunden reclamaciones sobre partes no válidas). Los participantes que no resuelven las reclamaciones quedan descalificados. Una cuarta ronda combina las contribuciones de los participantes válidos en la clave pública final y las partes de clave privada distribuidas.

DKG en las claves de validador de Ethereum

La gestión de las claves de validador de Ethereum utiliza DKG para la tecnología de validadores distribuidos (DVT). EIP-4844 y el ecosistema DVT (Obol Network, SSV Network) utilizan firmas BLS de umbral sobre BLS12-381 para permitir que los comités de validadores firmen bloques sin que ningún operador individual conozca la clave completa del validador. Esto mejora la tolerancia a fallos de los validadores y reduce el riesgo de slashing debido al compromiso de una clave.

Baliza de aleatoriedad distribuida DRAND

DRAND es una baliza de aleatoriedad distribuida utilizada por la cadena de balizas de Ethereum para generar números aleatorios impredecibles. DRAND ejecuta DKG entre un conjunto de nodos de League of Entropy (Cloudflare, EPFL, Protocol Labs, etc.) para generar una clave BLS de umbral. En cada ronda, t de n nodos aportan firmas parciales que se combinan en un valor aleatorio impredecible. Ningún nodo individual puede sesgar ni predecir el resultado.

DKG para Schnorr frente a ECDSA

DKG es mucho más sencillo para los esquemas de umbral Schnorr/EdDSA que para ECDSA. En los esquemas de umbral Schnorr, la clave privada distribuida es simplemente la suma de los secretos de los participantes (x = x1 + x2 + ... + xn), y la clave pública es la suma de las partes de clave pública (X = X1 + X2 + ... + Xn). En ECDSA, la no linealidad significa que DKG debe generar partes multiplicativas, lo que requiere protocolos más complejos.

Protocolos de renovación de partes de clave

Las partes de claves de umbral de larga duración pueden verse comprometidas gradualmente si un adversario corrompe participantes poco a poco con el tiempo. El reparto proactivo de secretos (protocolos de renovación) vuelve a aleatorizar periódicamente las partes sin cambiar la clave subyacente. Después de una renovación, las partes anteriores a ella dejan de ser útiles, lo que limita la ventana de vulnerabilidad. GJKR y sus sucesores incluyen protocolos de renovación que siguen la misma estructura que el DKG inicial.

Implementaciones prácticas de DKG

DKG está implementado en varios sistemas de producción. El cliente de DVT de Ethereum, Obol Charon, utiliza una ceremonia DKG basada en Pedersen VSS sobre BLS12-381. Silent Shard, de Silence Laboratories, utiliza DKG para carteras MPC móviles. La biblioteca dkg-go implementa GJKR para aplicaciones de Go. Threshold Network (anteriormente Keep Network) utiliza DKG para su servicio ECDSA de umbral, que protege tBTC en Bitcoin.

Cuestionario sobre Pedersen DKG

¿Cuál es la propiedad clave que hace que Pedersen DKG sea superior a una configuración con un único distribuidor de confianza?

Repaso de los protocolos DKG

DKG elimina el distribuidor de confianza al hacer que los n participantes generen conjuntamente un par de claves de umbral sin que ninguno conozca la clave privada. En Pedersen DKG, cada participante ejecuta VSS sobre su contribución. GJKR añade seguridad frente a adversarios adaptativos mediante rondas de reclamaciones. DKG sustenta el DVT de Ethereum (Obol, SSV), la baliza de aleatoriedad DRAND y las implementaciones de producción de carteras MPC. Los protocolos de renovación amplían la seguridad al volver a aleatorizar periódicamente las partes.

Preguntas frecuentes

¿La lección «Protocolos de generación distribuida de claves» es gratis?

Sí — el texto completo de «Protocolos de generación distribuida de claves» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Cryptology Academy, actualiza a CoddyKit PRO. El curso de Cryptology Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Protocolos de generación distribuida de claves»?

Explore los protocolos DKG, que permiten a varias partes generar conjuntamente una clave compartida sin que ninguna conozca todo el secreto. Practicas Cryptology Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Cryptology Academy?

No se requiere experiencia previa. Cryptology Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.

¿Cuánto tiempo toma la lección «Protocolos de generación distribuida de claves»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Cryptology Academy?

Sí. Cada lección de Cryptology Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Esquemas de firmas de umbral: conceptos
  2. ECDSA de umbral: firma multipartita
  3. Protocolos de generación distribuida de claves
  4. Esquemas de umbral en blockchains y HSM
← Volver a Cryptology Academy