Glosario / Protocolo y actualizaciones
Firma Schnorr
También se conoce como BIP340.
- ¿Qué es una firma Schnorr?
- Una firma Schnorr es el esquema de firma de 64 bytes que bitcoin adoptó con Taproot, y su propiedad definitoria es la linealidad: varias claves y firmas se suman en una sola.
Se especifica en el BIP-340.
Las firmas ECDSA ocupan 71 o 72 bytes y no pueden combinarse; las firmas Schnorr ocupan siempre 64 y sí pueden. Esa diferencia explica por qué dos firmantes, o quince, pueden producir una sola firma que se verifica con una sola clave pública, sin nada on-chain que indique cuántos eran. Bitcoin obtuvo el esquema en BIP-340, creado en enero de 2020 y exigible desde el bloque 709.632.
Cómo funciona
El esquema usa la misma curva elíptica que bitcoin ha usado siempre, secp256k1, y las mismas claves privadas. Lo que cambia es el álgebra que las rodea.
Para firmar, se elige un nonce secreto, se publica como R el punto que genera y se calcula un único número s a partir del nonce, de un hash de R junto con la clave pública y el mensaje, y de la clave privada. La firma es R y s escritos con 32 bytes cada uno, y de ahí sale la longitud fija de 64 bytes. La verificación reordena la misma ecuación y comprueba que dos puntos coinciden. ECDSA necesita una inversión modular en medio de este cálculo; Schnorr no, y esa inversión que falta es la razón por la que todo sigue siendo lineal.
La linealidad es la ventaja práctica. Si se suman dos claves privadas, la suma firma para la suma de las dos claves públicas, de modo que un grupo puede tener entre todos una sola clave aparente. También permite la verificación por lotes: un nodo que valida un bloque puede verificar cientos de firmas en una sola operación agregada en lugar de una por una, lo que importa sobre todo durante la descarga inicial de bloques.
Dos detalles de BIP-340 existen para evitar trampas en las que es fácil caer. Las claves públicas son x-only (solo coordenada x), de 32 bytes con la coordenada y implícita, lo que elimina la ambigüedad que antes creaban dos codificaciones de la misma clave. Y todo hash es un hash etiquetado, precedido de una cadena de dominio, de modo que una firma hecha para un propósito nunca puede repetirse como válida en otro protocolo que resulte calcular el hash de bytes parecidos.
El nonce sigue siendo la parte peligrosa. Reutilizar uno en dos mensajes distintos expone la clave privada mediante aritmética sencilla, exactamente igual que con ECDSA, y por eso BIP-340 especifica una derivación determinista mezclada con aleatoriedad auxiliar opcional en lugar de dejar la elección a los implementadores.
Hay una razón por la que nada de esto llegó en 2009. Claus Schnorr tenía sobre el esquema la patente estadounidense 4,995,082, que no caducó hasta febrero de 2008, pocos meses antes de que apareciera el whitepaper de Bitcoin. ECDSA era entonces el estándar libre de patentes, así que bitcoin salió con la segunda mejor opción y esperó doce años para corregirlo.
Por qué importa cuando compra bitcoin
En una billetera de una sola clave el efecto es un error de redondeo, y para quien protege un monto importante es la criptografía más útil que ha añadido bitcoin.
Empiece por el costo de guardar monedas repartidas entre varios dispositivos. Una configuración 2 de 3 gastada a la manera antigua publica dos firmas y tres claves públicas en cada transacción, así que usted paga por toda la política de gasto cada vez que mueve fondos. Gastada de forma cooperativa mediante Taproot, publica una sola firma, y las demás claves nunca aparecen. El ahorro se acumula si consolida montos pequeños, que es justo lo que acaban haciendo los tenedores a largo plazo.
Luego está la consecuencia para la privacidad, que es mayor. Las empresas de análisis de cadena clasifican las direcciones por su forma, y el multisig siempre ha sido una forma llamativa. Las billeteras de hardware que reseña este sitio pueden actuar como cofirmantes en configuraciones así, y, hasta Taproot, protegerse como es debido les decía a los observadores que usted tenía algo que valía la pena proteger. Un gasto Schnorr cooperativo elimina ese indicio sin debilitar nada.
En un plan sucesorio el cálculo también cambia. Como las ramas no usadas de un árbol de scripts de Taproot no cuestan nada, usted puede añadir una ruta de recuperación con retraso para un familiar sin pagarla en cada gasto ordinario. Es una opción realmente nueva, y conviene leer nuestra guía de seguridad antes de diseñar una, porque el modo de fallo de un esquema de custodia ingenioso es perder el acceso, no sufrir un robo.
MuSig2: dos firmantes, una firma
MuSig2, estandarizado como BIP-327, es el protocolo que convierte la linealidad en algo que las billeteras pueden usar de verdad.
Sumar claves públicas de forma ingenua no es seguro. Si un participante conoce la clave de todos los demás antes de anunciar la suya, puede fabricar una clave que anule las de los otros y acabar pudiendo firmar solo. Es el ataque de clave maliciosa, y MuSig2 lo neutraliza ponderando cada clave con un coeficiente derivado de todo el conjunto, de modo que ningún participante puede elegir la suya libremente.
El proceso de firma consta de dos rondas. Cada parte envía compromisos de nonce, luego cada parte envía una firma parcial, y las firmas parciales se suman en una única firma Schnorr válida para la clave agregada. Que sean dos rondas importa porque la primera puede hacerse por adelantado, y eso es lo que hace usable el esquema en los canales Lightning, donde se intercambian firmas constantemente.
Lo que llega on-chain es una sola firma de 64 bytes que gasta una sola salida por ruta de clave. Un gasto cooperativo entre dos partes cuesta alrededor de 57,5 vbytes, menos que cualquier otro tipo de entrada, y el observador no puede saber si lo autorizó una persona o un comité.
Firma Schnorr frente a firma
En bitcoin, la palabra firma a secas todavía suele significar ECDSA, y los dos esquemas se usan a diario. Las monedas que están en una dirección que empieza por 1, 3 o bc1q se gastan con ECDSA, exactamente como en 2010. Las monedas en una dirección bc1p se gastan con Schnorr. Una billetera que tenga monedas de ambas clases, como la mayoría de las billeteras con algo de historial, produce los dos tipos de firma en la misma sesión sin mencionarlo. Quien le diga que bitcoin usa ECDSA, y punto, describe el protocolo tal como era antes de noviembre de 2021.
Firma Schnorr frente a MuSig2
Schnorr es el esquema de firma; MuSig2 es un protocolo construido sobre él. Se puede usar Schnorr con una sola clave para siempre sin tocar nunca MuSig2, que es lo que hace hoy toda billetera Taproot ordinaria. MuSig2 solo entra en juego cuando varias partes quieren parecer una sola, y no es la única opción construida sobre la misma propiedad: los esquemas de umbral que toleran la falta de un firmante y las firmas adaptadoras que se usan en los intercambios atómicos y en Lightning son construcciones distintas que se apoyan en la misma linealidad.