Cómo funcionan las firmas Schnorr en Bitcoin:


Introducción

Las firmas Schnorr ofrecen un esquema criptográfico de autenticación de mensajes basado en curvas elípticas que mejora la eficiencia, seguridad y escalabilidad de Bitcoin. Desde la activación de la actualización Taproot en noviembre de 2021, Bitcoin utiliza BIP-340 para integrar Schnorr como método alternativo a ECDSA. A continuación se describe en detalle cómo funcionan estas firmas, su implementación en Bitcoin Core y sus ventajas.

Fundamentos criptográficos de Schnorr

Curvas elípticas y operaciones básicas

Este esquema opera sobre la curva secp256k1, definida por la ecuación y² = x³ 7 sobre un campo primo. Los elementos clave son: Clave privada (sk): un entero secreto en [1, n−1], donde n es el orden del generador G. Clave pública (pk): el punto P = sk·G en la curva. Suma de puntos: operación ⊕ definida en la curva que permite añadir puntos de manera eficiente. Multiplicación escalar: k·G repite la suma de G consigo mismo k veces.

Algoritmo de firma

Para firmar un mensaje m se siguen estos pasos: 1. Generación de la nonce k: se calcula determinísticamente a partir de sk y m (por BIP-340), evitando fugas de entropía. k debe ser uniforme en [1, n−1]. 2. Cálculo del compromiso R: R = k·G. Se toma únicamente la coordenada x de R (xR) y se ajusta un bit de paridad de la coordenada y si es necesario. 3. Desafío e: e = H_bip340(xR ∥ xP ∥ m) mod n, donde H_bip340 es SHA256 aplicado dos veces y truncado. 4. Cálculo de s: s = (k e·sk) mod n. La firma resultante es el par (xR, s), con un total de 64 bytes.

Algoritmo de verificación

Para verificar (xR, s) sobre m y pk = xP se realiza: 1. Reconstruir el punto R′ a partir de xR y su bit de paridad. 2. Calcular e = H_bip340(xR ∥ xP ∥ m) mod n. 3. Verificar que s·G = R′ ⊕ (e·P). Si la igualdad en la curva se cumple, la firma es válida.

Implementación en Bitcoin (BIP-340)

Especificación de BIP-340

El documento BIP-340 define el formato de firma, la generación determinística de nonces y la función de hash. Algunos puntos clave: Formato compacto: 32 bytes para xR 32 bytes para s. No usa componente y de R: la paridad de yR se codifica en el bit menos significativo de xR. Determinismo: cada firma es única para un par (sk, m), evitando ataques de fugas de nonce.

Integración en Bitcoin Core

Bitcoin Core incorpora esta lógica en la librería libsecp256k1, optimizada en C y ASM. El flujo interno es: 1. Llamada a secp256k1_schnorrsig_sign para generar (xR, s). 2. Serialización en TX: campo witness con 64 bytes. 3. En la verificación, secp256k1_schnorrsig_verify comprueba la igualdad s·G = R′ ⊕ (e·P).

Ventajas y limitaciones

Linealidad: la firma es lineal en las claves, facilitando agregación de firmas. Agregación y MuSig: múltiples claves pueden combinarse en una firma única reduciendo espacio y mejorando privacidad. Resistencia a maleabilidad: no existe bifurcación de s ↔ (n–s) como en ECDSA. Modelo de seguridad: demostrada en el modelo de oráculo aleatorio, reduciéndose a la dificultad del logaritmo discreto. Limitaciones iniciales: los esquemas de firma agregada requieren protocolos adicionales (MuSig2) para evitar ataques de clave impostora.

Comparación ECDSA vs Schnorr

Característica ECDSA Schnorr————– —– ——-Seguridad formal Parcial (se asume sin prueba en ROM) Reducida al logaritmo discreto en ROMCompacidad 71–73 bytes (DER) 64 bytesMaleabilidad Sí (s ↔ n–s) NoAgregación Compleja Nativa (MuSig)Determinismo BIP RFC6979 BIP-340

Conclusión

Las firmas Schnorr, estandarizadas en BIP-340 y activadas con Taproot, mejoran la privacidad, reducen el tamaño de las transacciones y abren la puerta a esquemas de firma compuesta. Gracias a su linealidad y seguridad demostrada, representan la evolución natural sobre ECDSA en Bitcoin y sientan las bases para futuras innovaciones criptográficas en la red.

Leave a Reply

Your email address will not be published. Required fields are marked *