Autores: Omer Shlomovits, ZenGo.

El esquema de firma umbral (TSS) es un primitivo criptográfico que permite la generación de claves distribuidas y la firma. Introducir TSS en el cliente de blockchain es un nuevo paradigma que ofrece numerosas ventajas, especialmente en términos de seguridad. En términos generales, TSS puede redefinir el diseño de sistemas de gestión de claves (como wallets de criptomonedas) y ofrecer soporte nativo para casos de uso de DeFi. Sin embargo, TSS, como tecnología emergente, también presenta ciertos riesgos y limitaciones.

Este artículo presentará en detalle los conceptos básicos de TSS, las ventajas potenciales que trae al campo de la blockchain, los métodos de implementación en clientes de blockchain, y sus diferencias con la compartición secreta de Shamir y las firmas múltiples. Al mismo tiempo, exploraremos las diferentes formas de utilizar TSS para la gestión de claves distribuidas y discutiremos los riesgos y limitaciones asociados.


El poder de la criptografía

Para entender el concepto de TSS, primero necesitamos comprender algunos fundamentos de la criptografía. Desde la década de 1970, cada vez más sistemas de internet (como TLS y PGP) han comenzado a adoptar técnicas de cifrado asimétrico, también conocidas como criptografía de clave pública (PKC). La PKC se basa en dos claves: la clave pública y la clave privada. La clave pública es pública, cualquier persona puede publicarla y usarla, mientras que la clave privada es el secreto central que protege la seguridad del sistema.

El cifrado y la firma digital son dos de las aplicaciones principales de la PKC. Ambas tecnologías dependen de tres algoritmos: primero, la generación de pares de claves pública y privada; segundo, la generación de cifrados/firma; y, finalmente, el proceso de descifrado/verificación. Tomando como ejemplo la firma digital, el algoritmo de firma utiliza la clave privada, que solo posee el propietario, para generar una firma única y la adjunta al mensaje. Luego, cualquier persona que tenga la clave pública puede verificar la autenticidad y precisión de la firma.


Blockchain

Sin duda, la blockchain es una tecnología poderosa y muy prometedora que proporciona una capa de consenso para organizar y registrar eventos. Esta infraestructura otorga a los usuarios la posibilidad de construir economías descentralizadas e incluso gobiernos descentralizados. Sorprendentemente, la criptografía básica necesaria para operar una blockchain básica se puede lograr únicamente a través de firmas digitales. En la blockchain, la clave privada representa la identidad, mientras que la firma es la declaración o afirmación pública de esa identidad. La blockchain asegura la no falsificación y precisión de las firmas al ordenar estas declaraciones y validarlas según un conjunto de reglas.

En comparación con las técnicas criptográficas tradicionales utilizadas en blockchain, la criptografía moderna ha introducido muchos nuevos avances emocionantes, como pruebas de cero conocimiento, cifrado homomórfico y computación multipartita, entre otros. En la última década, la investigación en blockchain ha impulsado enormemente el desarrollo de la criptografía aplicada, logrando avances significativos en estos y otros campos.

Este artículo se centrará en uno de esos avances, es decir, el esquema de firma umbral (TSS) seguro y eficiente.


MPC y el esquema de firma umbral (TSS)

La computación multipartita (MPC) es una rama de la criptografía que se remonta a aproximadamente 40 años atrás, a la investigación pionera de Andrew C. Yao. El núcleo de MPC es permitir que un grupo de partes mutuamente desconfían calcule en conjunto el resultado de una función sin revelar sus respectivas entradas.

Por ejemplo, supongamos que n empleados de una empresa desean saber quién tiene el salario más alto, pero no quieren revelar sus salarios reales. En este escenario, la entrada de cada empleado es su salario, y la salida final es el nombre del empleado con el salario más alto. A través de MPC, este cálculo se puede completar sin exponer la información salarial de ningún empleado.

Las dos características centrales de MPC son la corrección y la privacidad:

  • Corrección: la salida del algoritmo es el resultado correcto esperado.

  • Privacidad: los datos de entrada de cualquier parte participante no se revelarán a otras partes.

Utilizaremos la tecnología MPC para calcular de manera distribuida las firmas digitales y exploraremos cómo aplicar las características mencionadas en el proceso de firma. Como se mencionó anteriormente, la firma generalmente se divide en tres pasos:

  • Generación de claves: el primer paso es el más complejo de todo el proceso. Este paso requiere generar una clave pública para verificar las firmas posteriores. Al mismo tiempo, también es necesario generar un 'fragmento secreto' independiente para cada parte participante. En términos de corrección y privacidad, esta función proporcionará a todas las partes participantes la misma clave pública, mientras genera diferentes fragmentos secretos para cada parte, asegurando que: (1) privacidad: los datos de fragmentos secretos no se revelan entre las partes, y (2) corrección: la clave pública es el resultado del cálculo de función de todos los fragmentos secretos.

  • Firma: este paso implica la función de generación de firmas. Las entradas de las partes son sus fragmentos secretos, que provienen de la salida del paso anterior (generación de claves distribuida). Además, hay una entrada pública bien conocida, que es el mensaje que necesita ser firmado. La salida es la firma digital, y la privacidad puede garantizar que los fragmentos secretos no se filtren durante todo el proceso de cálculo.

  • Verificación: el algoritmo de verificación es consistente con los métodos tradicionales. Para garantizar la compatibilidad con un esquema de firma única, cualquier persona que tenga la clave pública puede verificar y confirmar la firma, que es también la tarea central ejecutada por los nodos de verificación de la blockchain.

El esquema de firma umbral (TSS) es el nombre que hemos dado a la combinación de generación de claves distribuidas (DKG) y el proceso de firma distribuida.


Combinar TSS con blockchain

Una forma intuitiva de adoptar TSS en blockchain es modificar el cliente de blockchain para que genere claves y firmas mediante la tecnología TSS. Aquí, el 'cliente de blockchain' se refiere a un conjunto de comandos ejecutados por nodos completos. En la práctica, TSS puede reemplazar todos los comandos relacionados con la clave privada por cálculos distribuidos.

Para una explicación detallada, primero presentaremos brevemente cómo se crean nuevas direcciones en un diseño tradicional de blockchain. En resumen, primero se genera una clave privada, luego se calcula la clave pública a partir de la clave privada, y finalmente se deriva la dirección de blockchain de la clave pública.

En el modo TSS, la clave pública es calculada en conjunto por n partes participantes, donde cada parte solo posee un fragmento secreto de la clave privada (y los fragmentos no se revelan entre sí). Podemos derivar la dirección de la clave pública de la misma manera que en un sistema tradicional, de modo que la forma de generar la dirección no está restringida por la blockchain. La ventaja de este enfoque es que cada parte solo posee una parte de la clave privada, por lo que la clave privada ya no es un punto único de fallo.

La firma de transacciones también puede adoptarse de manera similar. La diferencia es que ya no se utiliza una clave privada para la firma unilateral, sino que se genera una firma distribuida mediante la colaboración de múltiples partes. Por lo tanto, siempre que haya suficientes partes actuando de buena fe, se puede generar una firma válida, logrando así la transición de cálculo local (punto único de fallo) a cálculo interactivo.

Cabe mencionar que la generación de claves distribuidas puede soportar diferentes tipos de estructuras de acceso: el modo general 't de n' puede garantizar que, incluso en caso de hasta t fallos arbitrarios, las operaciones relacionadas con la clave se puedan realizar de manera segura.


TSS y firmas múltiples

Algunas blockchains ofrecen la funcionalidad TSS como parte integrada o programable del software, que normalmente llamamos firmas múltiples. Para entender mejor las diferencias entre ambos, se puede considerar la firma múltiple como TSS en la capa de aplicación de blockchain.

En otras palabras, tanto las firmas múltiples como el TSS están esencialmente logrando objetivos similares, pero el TSS utiliza tecnología criptográfica fuera de la cadena, mientras que las firmas múltiples ocurren en la cadena. Sin embargo, la blockchain necesita un método específico para codificar las firmas múltiples, lo que puede afectar la privacidad, ya que la estructura de acceso (número de firmantes) se expone en la blockchain. Además, el costo de las transacciones de firma múltiple es alto, porque la información de cada firmante debe transmitirse a la blockchain.

En TSS, los detalles del firmante están incrustados en las transacciones regulares, reduciendo así los costos y protegiendo la privacidad. Por otro lado, las firmas múltiples pueden lograrse mediante métodos no interactivos, lo que evita la complicación de ejecutar una capa de comunicación compleja entre diferentes firmantes.

La principal diferencia entre ambos es que las firmas múltiples son específicas para la blockchain, debiendo implementarse por separado para cada blockchain, y en algunas blockchains pueden no ser compatibles en absoluto. En comparación, el TSS se basa completamente en la criptografía y siempre podrá ser soportado. Para obtener más información sobre las diferencias entre ambos, consulte aquí.


TSS y el esquema de compartición secreta de Shamir

El esquema de compartición secreta de Shamir (SSSS) proporciona un método para almacenar claves privadas de manera distribuida, dispersando su almacenamiento en múltiples ubicaciones mientras la clave privada permanece en reposo. SSSS y TSS tienen principalmente dos diferencias:

  • Generación de claves: en SSSS, un papel llamado 'distribuidor' (dealer) es responsable de generar los fragmentos secretos de la clave privada. El distribuidor genera la clave privada completa en un solo lugar y la divide en múltiples fragmentos secretos, que luego se distribuyen a diferentes ubicaciones. En TSS, no existe un distribuidor, ya que todo el proceso es distribuido, y la clave privada completa nunca se genera en un solo lugar.

  • Firma: en SSSS, las partes necesitan reconstruir la clave privada completa para completar la firma, lo que genera un riesgo de punto único de fallo cada vez que se firma. En TSS, el proceso de firma se realiza de manera distribuida, sin necesidad de reconstruir los fragmentos secretos.

Por lo tanto, en el esquema TSS, la clave privada nunca aparece en un solo lugar durante todo su ciclo de vida, lo que mejora significativamente la seguridad del sistema.


Billetera umbral

Las billeteras basadas en tecnología TSS son ligeramente diferentes de las tradicionales wallets de criptomonedas. Las billeteras tradicionales generalmente determinan de manera determinista la dirección de la billetera generando frases mnemotécnicas. Los usuarios pueden utilizar esta estructura de determinismo jerárquico (HD): 1) obtener la clave privada correspondiente a la dirección de la billetera y firmar transacciones; 2) recuperar todas las claves de la billetera mediante la frase mnemotécnica.

El mecanismo de funcionamiento de las billeteras umbral es más complejo. Aunque también admite la generación de estructuras HD, este proceso debe llevarse a cabo de manera distribuida, similar a otro protocolo MPC. Las partes participantes deben decidir en conjunto la próxima clave que se utilizará. En otras palabras, cada parte tiene su propia frase mnemotécnica independiente. Estas frases son generadas de manera individual y no se combinan, por lo que ninguna parte puede derivar la clave privada completa de su propia frase mnemotécnica.

Además, las billeteras basadas en TSS tienen una poderosa característica de seguridad, que permite realizar rotaciones de claves privadas sin cambiar la clave pública y la dirección de la blockchain. La rotación de claves privadas, también conocida como compartición secreta activa, es otro protocolo MPC que utiliza los fragmentos secretos antiguos como entrada para generar un conjunto de nuevos fragmentos secretos. Los fragmentos secretos antiguos pueden eliminarse, mientras que los nuevos fragmentos pueden seguir utilizándose.

Esta arquitectura introduce una dimensión temporal a la seguridad de la billetera umbral, lo que significa que un atacante debe aparecer en múltiples ubicaciones al mismo tiempo para llevar a cabo un ataque exitoso contra la billetera. Incluso si intentan falsificar firmas, los fragmentos secretos que el atacante obtiene antes y después de la rotación de claves privadas no pueden combinarse en una clave completa, lo que no representa una amenaza adicional para la seguridad.

Sin embargo, una limitación de este tipo de billeteras es que no admiten frases mnemotécnicas, lo que las hace incompatibles con sistemas de billeteras de clave única. Por lo tanto, es crucial saber qué partes poseen fragmentos secretos.

Las arquitecturas posibles incluyen las siguientes:

  • TSS externalizado: los usuarios delegan el cálculo a 'n' servidores. La generación, gestión y firma de claves se externaliza efectivamente a proveedores de servicios, que no son propietarios de activos, pero obtienen cierta compensación al proporcionar seguridad.

  • Colaboración entre múltiples dispositivos: los usuarios ejecutan TSS entre los dispositivos que poseen. Por ejemplo, dispositivos de IoT, dispositivos móviles y laptops trabajan en conjunto.

  • Modo híbrido: algunas partes son controladas por proveedores de servicios externos, mientras que otras se ejecutan en los dispositivos propios del usuario, completando conjuntamente el cálculo de TSS.

La primera opción alivia la carga de cálculo TSS del cliente del usuario, pero los proveedores de servicios podrían coludirse para robar los activos del usuario (aunque generalmente se asume que no un número suficiente de proveedores de servicios será comprometido al mismo tiempo, no se puede descartar esta posibilidad).

La segunda opción proporciona control total al usuario, pero dado que requiere que múltiples dispositivos participen en línea en el cálculo de TSS, las operaciones de transacción son más engorrosas.

La tercera opción logra un equilibrio entre ambas, permitiendo a los usuarios completar transacciones de manera simple y eficiente, mientras asegura que las transacciones no se completen sin la autorización del usuario.


TSS y contratos inteligentes

A lo largo de los años, los investigadores han explorado numerosos usos de las firmas digitales, algunos de los cuales se han convertido en tecnologías clave indispensables. Como se mencionó anteriormente, TSS es un primitivo criptográfico que puede mejorar significativamente la seguridad. En el contexto de la blockchain, las soluciones criptográficas basadas en TSS pueden reemplazar muchas funciones tradicionales. Por ejemplo, aplicaciones descentralizadas, soluciones de escalado Layer 2, intercambios atómicos, mezclas de monedas, herencias, etc., pueden realizarse a través del marco TSS. Esto permite que las operaciones de contratos inteligentes en la cadena, que son costosas y arriesgadas, sean gradualmente reemplazadas por soluciones más económicas y confiables.

Por ejemplo, el candado de múltiples saltos, al aprovechar ingeniosamente las firmas de dos partes, proporciona una red de pago más segura y privada, que puede actuar como una alternativa a la red Lightning de Bitcoin. ShareLock podría ser la solución de mezcla en cadena más económica en Ethereum, basada en la verificación de firma umbral única.


Riesgos

En los últimos años, la aplicación de TSS ha ido en aumento. Sin embargo, como tecnología relativamente nueva, aún enfrenta algunas limitaciones y problemas potenciales. En comparación con las tecnologías criptográficas tradicionales de clave pública, el protocolo TSS es más complejo y aún no ha sido ampliamente 'probado en el campo'. Generalmente, en comparación con las simples firmas digitales, TSS requiere suposiciones criptográficas adicionales, las cuales pueden no ser robustas, introduciendo vectores de ataque criptográficos que no existían en los esquemas tradicionales (ver la presentación relacionada de la Breaking Bitcoin Conference 2019). Para implementar TSS de manera segura en un sistema, se recomienda buscar el apoyo de ingenieros de seguridad y expertos en criptografía.

Desde un punto de vista positivo, gracias a las contribuciones crecientes de la comunidad, revisiones por pares, auditorías de código y optimización de algoritmos, las aplicaciones TSS existentes y emergentes están madurando cada vez más.


Resumen

Este artículo ha presentado el concepto básico del esquema de firma umbral (TSS), un primitivo criptográfico de gran potencial que tiene el potencial de cambiar la forma en que interactuamos con la blockchain.

Dado que este artículo no aborda el ECDSA umbral que se puede aplicar en BNB Chain y Bitcoin, los lectores interesados pueden consultar los últimos documentos a continuación. Además, si desea probar algunas aplicaciones TSS, puede consultar el código fuente de la wallet de dos partes de BNB Chain que se encuentra aquí, o usar la wallet ZenGo, que es una wallet de dos partes de BNB Chain no gestionada que utiliza un modo híbrido.


Lectura profunda:

  • Esquema de firma ECDSA de dos partes seguro y eficiente

  • Esquema ECDSA de múltiples partes seguro y eficiente, que admite generación de claves distribuidas prácticas y aplicaciones de custodia de criptomonedas

  • ECDSA de dos partes basado en un sistema de prueba de hash y su instanciación eficiente

  • ECDSA de múltiples partes umbral con configuración de confianza eficiente

  • ECDSA umbral seguro de dos partes basado en supuestos de ECDSA

  • ECDSA umbral basado en supuestos de ECDSA: múltiples ejemplos