Autor: Omer Shlomovits, ZenGo.
El esquema de firma de umbral (TSS) es un esquema primitivo criptográfico para generar y firmar claves distribuidas. El uso de TSS en los cálculos de blockchain es un nuevo paradigma que puede ofrecer muchos beneficios diferentes, especialmente en términos de seguridad. Es decir, TSS puede influir en el diseño de sistemas de gestión de claves (como carteras digitales) y liderar el campo del soporte local en casos de uso de DeFi. Dicho esto, este TSS sigue siendo una tecnología nueva, por lo que también se deben considerar los riesgos y limitaciones al usarlo.
En este artículo, cubriremos qué es TSS, qué ventajas potenciales puede aportar al campo blockchain, cómo se puede implementar en la blockchain del Cliente, cómo se compara con el intercambio secreto de Shamir y Multisig, cuáles son las diferentes formas de usar TSS. en la gestión de claves distribuidas, y finalmente discutimos sus riesgos y limitaciones potenciales.
Papel del cifrado
Para entender TSS primero necesitamos algunos conocimientos básicos sobre criptografía. Desde la década de 1970, los sistemas de Internet han utilizado cada vez más cifrado asimétrico (como TLS y PGP), que también se conoce como criptografía de clave pública (PKC). PKC utiliza dos claves: una pública y otra privada. Si bien la clave pública no es secreta y cualquiera puede compartirla y utilizarla, la clave privada es una información confidencial que representa la seguridad del sistema y no se puede compartir.
El cifrado y las firmas digitales son los usos más comunes de PKC. Tanto los esquemas de cifrado como de firma digital se basan en conjuntos de tres algoritmos. La primera es la generación del par de claves pública y privada, la segunda es la generación de texto cifrado/firma y la tercera es el proceso de descifrado/verificación. Respecto a las firmas digitales: el algoritmo de firma requiere que una clave privada que sólo conoce su propietario cree una firma única. Se adjunta una firma a un mensaje en particular de tal manera que cualquiera que posea la clave pública pueda verificar su autenticidad y autenticidad.
cadena de bloques
No hay duda de que blockchain es una tecnología extremadamente poderosa. Proporciona una capa de consenso que organiza y registra eventos. Dicha infraestructura nos brinda a los usuarios e incluso a los gobiernos el poder potencial para construir economías descentralizadas. Sorprendentemente, el cifrado necesario para ejecutar una cadena de bloques simple sólo puede depender de firmas digitales. En blockchain, las claves privadas representan identidades, mientras que las firmas son una declaración pública o un reclamo realizado por una identidad. La cadena de bloques solicita y verifica datos de acuerdo con un conjunto de reglas que garantizan, entre muchas otras cosas, que las firmas sean infalsificables y válidas.
La caja de herramientas de criptografía moderna incluye algunos trucos de magia interesantes, a diferencia de la criptografía más clásica utilizada en blockchain. Algunos ejemplos de estos trucos incluyen pruebas de conocimiento cero, criptografía homomórfica y computación multipartita. Como hemos visto durante la última década, la investigación de blockchain ha impulsado dramáticamente la criptografía aplicada con sorprendentes avances recientes en el conocimiento de todo lo anterior y mucho más.
En este artículo, nos centraremos en uno de los avances, que son las firmas de umbral seguras (TSS) efectivas.
MPC y el esquema de firma de umbral (TSS)
La computación multipartita (MPC) es una rama de la criptografía que comenzó con el trabajo fundamental de Andrew C. Yao hace casi 40 años. En MPC, un grupo de partes que no confían entre sí intentan calcular una función sobre sus entradas manteniendo esas entradas en privado.
Por ejemplo, supongamos que varios empleados de una empresa quieren saber a quién se le paga más, pero sin revelar su salario real entre sí. Aquí el input especial son los salarios y en los casos embarazosos será el nombre del empleado con el salario más alto. Cuando este cálculo se realiza utilizando MPC, el resultado es que ni siquiera se filtra un solo salario durante el cálculo.
Las dos características principales de MPC son la autenticidad y la privacidad:
Corrección: la salida generada por un algoritmo es correcta (como se esperaba).
Privacidad: los datos de entrada confidenciales en poder de una parte no se filtrarán a otras partes.
Usaremos MPC para calcular la firma digital de forma distribuida. Veamos cómo se pueden aplicar las propiedades anteriores a las firmas. Para las firmas tenemos tres pasos:
Generación de claves: El primer paso es también el más complicado. Necesitamos crear una clave que será pública y se utilizará para verificar firmas futuras. Pero también necesitamos crear un secreto individual para cada parte participante al que llamaremos recurso compartido secreto. En el contexto de corrección y privacidad, decimos que la función generará la misma clave pública para todas las partes y un recurso compartido secreto diferente para lo siguiente: (1) Privacidad: no se filtra ningún dato sobre el recurso compartido secreto entre las dos partes y ( 2) Corrección: La clave pública es función de las acciones secretas.
Firma: Este paso incluye la función de crear una firma. La contribución de cada parte es su parte secreta, que se genera como resultado del paso anterior (generación de claves distribuidas). También hay un input general conocido por todos que es el mensaje a firmar. El resultado será una firma digital y la función de privacidad garantiza que no se produzca ninguna filtración de acciones secretas durante el cálculo.
Verificación: El algoritmo de verificación sigue siendo el mismo que en la configuración clásica. Para ser compatible con firmas de claves individuales, cualquier persona con conocimiento de la clave pública debe poder verificar y autenticar las firmas. Esto es exactamente lo que hacen los nodos de verificación de blockchain.
Esquema de firma de umbral (TSS) es el nombre que le damos a la combinación de generación de claves distribuidas (DKG) y distribución de firmas sobre un esquema de firma de umbral.
Combinando TSS y blockchain
La forma natural en que se puede utilizar TSS en una cadena de bloques es cambiando el cliente de la cadena de bloques para generar claves y firmas utilizando TSS. Aquí usamos el término cliente para referirnos a un conjunto de comandos que ejecuta un nodo completo. En una aplicación práctica, la tecnología TSS nos permite reemplazar todos los comandos relacionados con la clave privada con cálculos distribuidos.
Para explicar esto con más detalle, comenzaremos con una descripción rápida de cómo crear nuevas direcciones en una estructura blockchain clásica. En pocas palabras, podemos crear una nueva dirección generando una clave privada y luego calculando la clave pública a partir de la clave privada. Finalmente, la dirección de blockchain se deriva de la clave pública.
Ahora, usando TSS, tendremos un grupo de partes calculando conjuntamente la clave pública. Cada parte participante posee una parte secreta de la clave privada (las partes individuales no se revelan a las otras partes participantes). Usando la clave pública, podemos derivar la dirección de la misma manera que en el sistema tradicional, lo que hace que la cadena de bloques sea algo neutral en la forma en que se generan las direcciones. La ventaja aquí es que la clave privada ya no es un único punto de falla porque cada parte conserva una parte de ella.
Lo mismo se puede hacer al firmar transacciones. En este caso, en lugar de que una parte firme con su clave privada, ejecutamos un generador de firmas distribuido entre varias partes. Incluso cada parte puede presentar una firma válida siempre que suficientes participantes actúen con honestidad. Pasamos nuevamente de una cuenta local (punto único de falla) a una cuenta interactiva.
Es importante señalar que la generación de claves distribuidas se puede realizar de forma que permita diferentes tipos de acceso a las mismas: una configuración genérica “t de n” podrá soportar hasta t fallos arbitrarios en operaciones relacionadas con la clave. clave privada sin comprometer la seguridad.
TSS frente a multifirma
Algunas redes blockchain ofrecen la funcionalidad TSS como parte integrada o programable del software. A esta función la llamamos multifirma o multifirma. Para comprender mejor las diferencias, podemos considerar multisig como un TSS en la fase de implementación de blockchain.
En otras palabras, tanto multisig como TSS básicamente intentan lograr objetivos similares, pero TSS usa cifrado fuera de la cadena, mientras que multisig usa dentro de la cadena. Sin embargo, la cadena de bloques requiere un método de cifrado multifirma, lo que puede comprometer la privacidad porque la estructura de acceso (número de firmantes) está expuesta en la cadena de bloques. El costo de una transacción multifirma es mayor porque la información en los dos sitios diferentes también debe comunicarse en la cadena de bloques.
En TSS, los detalles de los firmantes se integran en una transacción regular, lo que reduce el costo y mantiene la privacidad. Multisig, por otro lado, puede no ser interactivo, lo que ahorra el problema de ejecutar una capa de comunicación compleja entre diferentes sitios.
El principal punto de diferencia es que blockchain multisig debe volver a implementarse en cada blockchain y, en algunos casos, no es compatible en absoluto. Por el contrario, TSS se basa en cifrado puro, por lo que siempre es compatible. Puede encontrar un excelente artículo que describe las diferencias aquí.
Esquema de intercambio de secretos entre TSS y Shamir
El esquema de intercambio de secretos (SSSS) de Shamir proporciona una forma distribuida de almacenar la clave privada. Mientras la clave privada está almacenada, se almacena en varias ubicaciones. Hay dos diferencias entre SSSS y TSS:
Generación de claves: en SSSS hay una parte llamada "el distribuidor" que es responsable de crear las partes secretas de la clave. Esto significa que en el momento de la generación de la clave, la clave privada se genera en un lugar y luego el distribuidor la distribuye a las diferentes ubicaciones. Pero en TSS no hay distribuidor porque su función se distribuye de tal manera que la clave privada completa nunca está en un solo lugar.
Firma: en SSSS, las partes deben reconstruir la clave privada completa para poder firmar, lo que nuevamente conduce a un único punto de falla cada vez que se requiere una firma. Por otro lado, en TSS la firma se realiza de forma distribuida sin recrear las acciones secretas.
Como vemos en TSS, la clave privada (que representa la seguridad del sistema) nunca está en un solo lugar durante toda su vida.
Gobernador de umbral
Una billetera construida con tecnología TSS es un poco diferente de las billeteras tradicionales de criptomonedas. Una billetera tradicional generalmente crea una frase inicial y la usa para derivar direcciones de manera determinista. Posteriormente, el usuario puede utilizar la estructura jerárquica determinista (HD) para 1) acceder a las claves privadas que corresponden a las direcciones de la billetera y firmar transacciones con ellas. 2) Para recuperar todas las claves de la billetera usando la frase inicial.
En las carteras de umbral las cosas son más complicadas. Aunque es posible crear una arquitectura jerárquica determinista (HD), su construcción debe calcularse de forma distribuida como cualquier otro protocolo MPC. Las partes involucradas deben tomar una decisión conjunta sobre qué clave se utilizará a continuación. Es decir, cada parte tendrá su propio comunicado inicial. Las declaraciones iniciales se generan por separado y no se combinan para que ninguna de las partes pueda deducir por sí sola las claves privadas de la declaración inicial.
Las billeteras basadas en TSS también tienen una característica de seguridad interesante que permite rotar la clave privada sin cambiar su clave pública correspondiente y la dirección de blockchain. La rotación de clave privada, también conocida como intercambio secreto proactivo, es otro protocolo MPC que toma recursos compartidos secretos como entrada y genera un nuevo conjunto de recursos compartidos secretos. Los recursos compartidos secretos antiguos se pueden eliminar y los recursos compartidos nuevos también se pueden utilizar de la misma manera.
Esta arquitectura agrega una dimensión temporal a la seguridad, lo que significa que un atacante tendría que estar en varias ubicaciones al mismo tiempo para intentar hackear la billetera Threshold. La combinación de acciones secretas previas y posteriores a la rotación no le daría a un atacante ningún poder adicional si quisiera falsificar una firma.
La desventaja de este tipo de billetera es la falta de una frase inicial, lo que la hace incompatible con los sistemas de billetera de una sola clave. Por lo tanto, es importante decidir qué partes mantendrán el intercambio confidencial.
Hay algunas formas posibles como:
TSS Outsourcing: El usuario permitirá que “n” servidores ejecuten el cálculo en su nombre. Subcontrate de manera efectiva la creación, gestión y firma de claves a proveedores de servicios que no son propietarios de los activos pero brindan una capa de seguridad a cambio de algún incentivo.
Usando múltiples dispositivos: el usuario ejecutará TSS en los dispositivos que posee. Por ejemplo, una parte sería un dispositivo IoT, otra parte sería un usuario de teléfono móvil, otra tercera parte sería una computadora portátil, y así sucesivamente.
Sistemas híbridos: el TSS funcionará de manera que algunas partes estén controladas por proveedores de servicios externos mientras que otras se ejecuten en su propio hardware.
El primer método descarga el pesado cálculo de TSS en el lado del cliente del usuario. Por otro lado, los proveedores de servicios pueden confabularse (suponemos que un gran número de ellos no están siendo atacados al mismo tiempo, pero en la práctica pueden ser atacados al mismo tiempo) y robar los activos de los usuarios.
El segundo método le brinda al usuario un control total, pero hace que el proceso de realizar transacciones sea engorroso ya que se necesitan varios dispositivos para conectarse a Internet y participar en la cuenta TSS.
La tercera opción es la mejor de ambas opciones, ya que le brinda al usuario una manera fácil y rápida de realizar transacciones sin el compromiso de realizar transacciones sin el permiso del usuario.
TSS y contratos inteligentes
A lo largo de los años, los investigadores han encontrado muchos usos para las firmas digitales, pero algunos no son sorprendentes. Como se mencionó anteriormente, TSS es un cifrado primitivo que puede aumentar la seguridad de manera significativa. En el contexto de blockchain podríamos decir que muchas funciones pueden ser reemplazadas por criptografía basada en TSS. En el marco TSS se pueden crear aplicaciones descentralizadas, soluciones de Capa 2 para escalamiento, intercambios atómicos, barajado, herencia y mucho más. Esto eventualmente permitirá que las costosas y riesgosas operaciones de contratos inteligentes sean reemplazadas por alternativas más baratas y confiables.
Para dar algunos ejemplos concretos: Multi-Hop Locks utiliza firmas bipartitas de manera inteligente y puede usarse para intercambiar la red Lightning de Bitcoin por una red de canales de pago más segura y privada. ShareLock es probablemente la solución de codificación de blockchain de Ethereum más barata basada en la verificación mediante una firma de umbral único.
Riesgos
En los últimos dos años ha habido un aumento significativo en las solicitudes de TSS. Pero como cualquier tecnología relativamente nueva, todavía tiene algunas limitaciones y preocupaciones. En comparación con la criptografía de clave pública tradicional, los protocolos TSS pueden ser muy complejos y aún no han sido "probados en acción". TSS normalmente requiere suposiciones criptográficas adicionales y más débiles en comparación con las firmas digitales simples. Como resultado, ahora se están detectando vectores de ataque criptográfico que antes no existían en entornos tradicionales (consulte esta presentación de Breaking Bitcoin Conference 2019). Los ingenieros de seguridad y los criptógrafos aplicados pueden ayudar a implementar TSS de forma segura en su sistema.
En el lado positivo, las aplicaciones nuevas y existentes se están fortaleciendo debido al aumento de las contribuciones de calidad, las revisiones por pares, las verificaciones cruzadas y las mejoras en el rendimiento computacional mediante el uso de algoritmos.
Pensamientos finales
En este artículo presentamos los conceptos básicos del Threshold Signature Scheme (TSS), una asombrosa primitiva de criptografía que tiene el potencial de cambiar drásticamente la forma en que se utiliza blockchain.
Dado que este artículo no analiza el umbral ECDSA que se puede utilizar en Binance Chain y Bitcoin, las personas interesadas pueden leer los artículos de la siguiente lista. Además, si desea probar algunas implementaciones de TSS, puede encontrar el código para una billetera Binance Chain de dos partes aquí o probar la billetera ZenGo, que utiliza el método híbrido para proporcionar una billetera Binance Chain de dos partes.
Lectura en profundidad:
Firma ECDSA bipartita rápida y segura
ECDSA multipartidario rápido y seguro con generación de claves distribuidas y aplicaciones prácticas para la custodia de criptomonedas
ECDSA de dos partes a partir de sistemas de prueba de hash e instanciaciones eficientes
Umbral rápido de ECDSA multipartidario con configuración rápida sin confianza
Umbral seguro de dos partes de ECDSA a partir de suposiciones de ECDSA
Umbral ECDSA a partir de supuestos ECDSA: el caso multipartidario

