Las firmas Schnorr es un esquema de firmas livianas con la que se busca mejorar la privacidad de Bitcoin y otras criptomonedas. Además permitirá la aplicación de nuevas tecnología en pro de mejorar las capacidades y la escalabilidad de la blockchain.
Las Schnorr Signatures o firmas Schnorr, es una solución planteada en la red Bitcoin que busca mejorar la privacidad y escalabilidad del sistema. Al permitir que un conjunto de firmas de transacciones con una misma entrada pueda ser sustituida por una firma única. Reduciendo el espacio de almacenamiento ocupado dentro de un bloque. Lo que, a su vez, permite que las transacciones puedan ser confirmadas de forma mucho más rápida, mejorando el rendimiento de la red. La propuesta de mejora fue presentada por Pieter Wuille en julio de 2019.
Este nuevo esquema de firmas también permite mejorar la seguridad de la red, frente a ataques de spam. Ya que con esta implementación, un atacante tendrá que enviar mucha más cantidad de transacciones para ocupar el mismo espacio dentro de un bloque. Haciendo que el ataque se vuelva más costoso y menos factible para el atacante.
¿Cómo funcionan las firmas Schnorr?
La función principal de las firmas Schnorr es permitir, a varios usuarios, crear una firma única para todas las partes involucradas. Reduciendo el tamaño de las transacciones y la cantidad de firmas necesarias para realizar una transacción.
El sistema Bitcoin utiliza el algoritmo ECDSA de firma digital de curva elíptica, para que los usuarios puedan demostrar su propiedad sobre las salidas no gastadas (UTXO) de bitcoins. Entonces, cada vez que un usuario desee realizar una transacción, debe proporcionar una firma que valide su propiedad. A su vez, dicha transacción también tiene un script P2SH, que determinará la forma en cómo se gastarán las entradas de una transacción.
Estos scripts pueden modificarse para condicionar o programar el gasto de los bitcoins. Por ejemplo, se pueden establecer condiciones de time lock o multisig. En este último, es necesaria la configuración de varias firmas para autorizar una transacción. Las multisig utilizando un esquema M-of-N, donde cualquier combinación de firmas válidas dentro de N podrá desbloquear las salidas no gastadas, al solicitar un umbral con M número de firmas válidas. Entonces, para autorizar una transacción y gastar una salida, deben proporcionarse M número de firmas entre los participantes; donde cada una de estas firmas posee un tamaño en bytes de longitud.
Es decir, supongamos que María, Juan y Pedro poseen una billetera con multisig, donde, para realizar una transacción, deben firmar 2 de los 3 participantes. En este ejemplo, cualquier combinación de firmas (N) podrá autorizar las transacciones, ya sea que firme María junto a Juan, o María junto a Pedro, o Pedro junto a Juan. O en su caso, existe otra condición que determina quiénes deben ser los firmantes principales. Pero en general, el cumplimiento de 2 firmas (M) autorizará las transacciones. No obstante, el tamaño en bytes de una transacción con multi-sig será mayor a una transacción convencional que sólo requiere de una firma.
En este punto es donde radica el problema. Pues las multi-sig al tener que proporcionar una cierta cantidad de firmas para autorizar una transacción, el tamaño de la transacción crecerá de forma proporcional a la cantidad de firma que sean requeridas. Por lo que la implementación de las firmas Schnorr representa una verdadera solución a este problema. Esta solución combina todas las firmas individuales dentro de una misma firma, reduce, a su vez, el tamaño de las transacciones y los costos generados por las comisiones de las transacciones.
Ventajas e inconvenientes de las firmas Schnorr
ventajas
- La implementación de este esquema de firmas puede mejorar la privacidad de la red, al permitir que las transacciones con la firma Schnorr se vean idénticas a las transacciones convencionales de una sola firma. Por lo que son indistinguibles unas de otras.
- Las firmas Schnorr reducen la necesidad de espacio de almacenamiento de las transacciones realizadas con multifirmas, hasta en un 25%. Por lo que disminuyen el tamaño de las transacciones dentro del bloque, ahorrando su espacio y reduciendo las comisiones por dichas transacciones.
- Al reducir el espacio de almacenamiento de las transacciones dentro del bloque, las firmas Schnorr pueden contribuir a una mejor escalabilidad de la red.
- Esta implementación permitirá que las transacciones sean validadas y confirmadas de forma mucho más rápida. De esta forma se reduce significativamente el tiempo de espera de las confirmaciones en la red.
- Las firmas Schnorr no tiene de maleabilidad, por lo que ninguna parte puede modificar o alterar una firma para generar problemas de doble gasto.
- Son parte esencial para la aplicación de Taproot una de las mejoras más esperadas de Bitcoin para mejorar su escalabilidad, privacidad y capacidad para contratos inteligentes.
Contras
- En la implementación de las firmas Schnorr cada participante debe demostrar que su clave pública es válida, a través de una firma producida con su clave privada correspondiente.
- La implementación de las firmas Schnorr expone un vector de ataque donde un participante puede reclamar una clave pública falsa y controlar el multi-sig.
Esquema de firmas multiples MuSig
El esquema de firmas Schnorr fue creado en 1980, por el criptógrafo alemán Claus-Peter Schnorr. Quien patentó su invención, impidiendo el uso público y directo de este esquema. En 2008, la patante de esta creación venció dando paso a que pueda ser usada libremente.
Posteriormente, en 2018, varios desarrolladores y programadores diseñaron un nuevo esquema de firma múltiple denominado MuSig, que está basado en las firmas Schnorr. Este nuevo esquema permite a los participantes de una multi-sig, la creación de contratos inteligentes privados fuera de la cadena de bloques.
Además, con la implementación de MuSig, se pueden agregar las firmas y claves públicas de cada participante del multi-sig, y generar una sola clave pública que verifique los demás. En lugar de tener que verificar cada clave pública individual por separado.
Firmas Schnorr y Bitcoin Cash
Aprovechando el enorme parecido que existe entre Bitcoin y Bitcoin Cash, los desarrolladores de Bitcoin Cash han decidido aplicar las firmas Schnorr a la variación de su protocolo. El desarrollador Mark Lundeberg fue quien llevó a cabo todo este trabajo para hacer que Bitcoin Cash pudiera aprovechar este nuevo esquema de firmado, que sería opcional al sistema ECDSA.
La red Bitcoin Cash se actualizó para hacer uso de este tipo de firmas el día 15 de mayo de 2019. Como resultado de esta actualización, Bitcoin Cash modificó reducir en un 4% el tamaño de las firmas digitales de las transacciones. Y al mismo tiempo, reduzca en un 20% el tamaño de las transacciones con el consiguiente aumento en la capacidad de procesamiento de transacciones de la red.