Firmas Schnorr
Un esquema de firma más simple, eficiente y seguro que ECDSA
Las firmas Schnorr son mejores que ECDSA para crear y verificar firmas digitales. Son más simples, más eficientes y más seguras.
Además, la matemática más simple también permite sumar firmas y verificar varias firmas al mismo tiempo, dos funciones que no están disponibles con ECDSA.
Las firmas Schnorr se añadieron a Bitcoin en 2021, como parte de la actualización Taproot, y se usan para desbloquear scripts P2TR.
Implementación
¿Cómo creas una firma Schnorr?
Las firmas Schnorr usan la misma curva elíptica secp256k1 que ECDSA. El par de claves es el mismo: clave pública = clave privada × G.
Multiplicación en la Curva
La firma Schnorr (BIP340) tiene 64 bytes y está formada por dos valores: un punto R (32 bytes) y un escalar s (32 bytes). El cálculo de s usa una fórmula lineal simple que involucra el nonce, un "desafío" (hash) y la clave privada.
Schnorr (firmar/verificar)
Beneficios
¿Por qué Schnorr es mejor que ECDSA?
- Linealidad. La fórmula de la firma Schnorr es lineal, lo que permite combinar claves y firmas de varias personas en una sola clave y firma (agregación de claves, por ejemplo MuSig).
- Eficiencia. Las firmas tienen tamaño fijo de 64 bytes (menor que las DER de ECDSA, que varían) y pueden verificarse por lotes, más rápido.
- Privacidad. Con la agregación, una transacción multisig compleja puede parecer un pago común de una sola clave en la blockchain.
- Seguridad demostrable. La seguridad de las firmas Schnorr es más fácil de probar formalmente que la de ECDSA.
Claves públicas x-only
En Taproot, las claves públicas Schnorr tienen solo 32 bytes (solo la coordenada x), sin el byte de prefijo 02/03. Se conviene que la coordenada y siempre sea par, lo que ahorra espacio.