CRIPTOMONEDAS

Bitcoin Core :: Hoja de ruta tecnológica


Firmas Schnorr

La sustitución del algoritmo de firma digital de Bitcoin (ECDSA) por el algoritmo Schnorr, más eficiente, ha estado durante mucho tiempo en lo más alto de la lista de deseos de muchos desarrolladores de Bitcoin. Schnorr, un algoritmo simple que aprovecha la criptografía de curva elíptica, permite varias mejoras con respecto al esquema existente y al mismo tiempo conserva todas sus características y supuestos de seguridad.

En particular, las firmas Schnorr admiten «multifirma nativa», que permite la agregación de múltiples firmas en una sola válida para la suma de las claves de sus respectivas entradas. Esta funcionalidad ofrece tres beneficios importantes:

  • Firmas de tamaño constante independientemente del número de participantes en la configuración multifirma. Una transacción 50 de 50 tiene efectivamente el mismo tamaño que una que utiliza una única clave pública y firma. Por este motivo, el rendimiento de dichos esquemas mejora significativamente al eliminar el requisito original de validar cada firma individualmente. Además, la verificación de firmas Schnorr es ligeramente más rápida que la de ECDSA.

  • El tamaño reducido de los datos que deben validarse y transmitirse a través de la red también se traduce en interesantes ganancias de capacidad. Teniendo en cuenta el crecimiento histórico en la cantidad de transacciones multifirma que se muestran a continuación, el potencial para reducir el tamaño de estas transacciones es una adición atractiva a los esfuerzos de escalamiento existentes. Deberíamos esperar que esta tendencia continúe con la aparición y mayor adopción de canales de pago.

  • Desde el punto de vista de la privacidad, Schnorr permite que toda la política de multisig quede oculta y sea indistinguible de una única clave pública convencional. En una configuración de umbral, también resulta imposible para los participantes revelar cuál de ellos autorizó o no una transacción.

Distribución de salidas P2SH no utilizadas según su configuración multifirma. Fuente: p2sh.info

Desafortunadamente, a diferencia de ECDSA, el algoritmo de Schnorr no ha sido estandarizado desde su invención, probablemente debido a la patente original que se le impuso (que ya expiró). Si bien las líneas generales del sistema son matemáticamente sólidas, la falta de documentación y especificaciones hace que su implementación sea más difícil. Específicamente, su aplicación al diseño de pares de claves efímeros de Bitcoin implica consideraciones de seguridad que requieren una mayor optimización.

El principal desafío lo define Pieter Wuille en su presentación Scaling Bitcoin Milan de las firmas Schnorr como el problema de la “cancelación”. La posibilidad de que un grupo de usuarios cree una firma válida para la suma de sus claves abre la puerta a que un participante adversario reste del total la clave de otro usuario. Básicamente funciona así:

Suponga un esquema multifirma 2 de 2 utilizando las claves públicas de entrada Q1 y Q2. En lugar de anunciar su clave como Q2 para combinarla con Q1, un participante malintencionado podría proporcionar, durante la fase de interacción, Q2-Q1 y cancelar efectivamente la clave del otro usuario. Cualquier fondo enviado a la clave pública conjunta ahora solo puede gastarlo el propietario de la clave Q2 sin que el propietario de Q1 se dé cuenta de lo que está sucediendo.

Afortunadamente, ahora hay una solución disponible que implica multiplicar cada clave utilizada durante la configuración con un hash basado en sí misma y en todas las demás claves involucradas antes de firmar. Este proceso se llama delinealización. Actualmente se está revisando por pares una prueba de la seguridad de este esquema y se describirá formalmente en un próximo documento técnico.

A corto plazo, las firmas Schnorr se consideran un reemplazo viable para dos funciones importantes del protocolo Bitcoin: OP_CHECKSIG y OP_CHECKMULTISIG.

El primero se utiliza actualmente para comparar las firmas ECDSA con su respectiva clave pública según el mensaje de una transacción. Al cambiar a un equivalente que verifique las firmas de Schnorr en lugar de ECDSA, el código de operación se puede usar para autorizar un gasto que requiere múltiples firmas, lo que normalmente requeriría llamar a OP_CHECKMULTISIG. Utilizando una interacción a priori no observable por la red, la colección de firmantes calcula una clave pública combinada junto con una firma común que es verificada por el nuevo OP_CHECKSIG con los beneficios de una mayor privacidad y costos reducidos.

Este último implica escenarios de umbral en los que solo se necesitan n-de-m firmas para autorizar una transacción. La implementación actual de OP_CHECKMULTISIG valida todas las claves públicas y firmas asociadas requeridas por la política de umbral. Debido a que el cálculo aumenta linealmente con el número de participantes, Schnorr propone un esquema mucho más eficiente que reemplaza la lista de firmas por una única combinada junto con un subconjunto de las claves públicas requeridas.

Hasta que se realice una mayor evaluación del esquema de delinealización que protege a los firmantes de actores maliciosos, puede ser prematuro aplicar más aplicaciones de firmas Schnorr, pero se espera que la implementación de las características anteriores pueda allanar el camino para una mejor comprensión del esquema en producción. Dependiendo de una revisión por pares adicional, se podría proponer un BIP para la implementación de Schnorr Signatures antes de fin de año.

Agregación de firmas

Las propiedades de Schnorr que permiten la combinación de múltiples firmas en una sola entrada también son aplicables a la agregación de múltiples entradas para todas las transacciones. El desarrollador de Bitcoin, Gregory Maxwell, fue el primero en presentar la idea utilizando conocimientos de una propuesta anterior basada en firmas BLS.

Para comprender adecuadamente la diferencia entre esta aplicación y las descritas anteriormente es necesario considerar cómo se agregan las firmas en cada caso respectivo. En la configuración multifirma nativa, los firmantes colaboran entre ellos para calcular una clave pública común y su firma asociada. Esta interacción ocurre fuera del protocolo y sólo concierne a las partes involucradas. La idea detrás de la agregación de firmas es permitir a los validadores del sistema, es decir. Los nodos de Bitcoin calculan una única clave y firma para cada entrada de todas las transacciones a nivel de protocolo.

Debido a que este esquema amplía el alcance de la agregación fuera del conjunto determinista de participantes, introduce un nuevo vector de ataque para que los actores maliciosos aprovechen el error de «cancelación». Por esta razón, la solución de delinealización resaltada en la sección anterior es fundamental para la solidez de este método.

En términos de implementación, la propuesta es bastante sencilla: OP_CHECKSIG y OP_CHECKMULTISIG se modifican para que puedan apilar claves públicas, delinearlas y, una vez validadas todas las entradas asociadas, producir una firma combinada para sus respectivas transacciones.

Es bastante sencillo evaluar el tipo de ahorro de recursos que habría sido posible si se hubiera implementado la agregación de firmas desde el bloque génesis. Suponiendo que cada firma histórica se redujera a 1 byte, excepto una por transacción, el análisis sugiere que el método daría como resultado una reducción de al menos el 25 % en términos de almacenamiento y ancho de banda. Es probable que un mayor uso de umbrales n de n se traduzca en más ahorros, aunque no se tuvieron en cuenta en este análisis.

Tabla de ahorros de agregación de firmas de Schnorr

Más información sobre las firmas Schnorr

Más información sobre la agregación de firmas


Una información de Bitcoin Core

Comments

comments

RELACIONADOS

script – ¿Cómo identificar el tipo de salida P2TR?

d'Economía.net

¿Qué hay detrás de la caída de precios del 20%?

d'Economía.net

Las 7 MEJORES monedas Meme para comprar AHORA

d'Economía.net