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

Multiplicación de punto (EC Multiply)

Multiplique un punto en la curva elíptica secp256k1.

Punto 1
x:
0d
y:
0d
0d
Punto 1 × Multiplicador
x:
0d
y:
0d

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)

Firma Schnorr

Firme un mensaje usando una clave privada.

0x
0 bytes
0x
0 bytes
0x
0 bytes
0x
0 bytes

Nunca introduzca su clave privada en un sitio web, ni use una clave privada generada por un sitio web. Los sitios pueden guardar fácilmente la clave privada y usarla para robar sus bitcoins.

Verificación Schnorr

Verifique una firma para una clave pública y un mensaje.

0x
0 bytes
0x
0 bytes
0x
0 bytes
Verificación (r = R[x])
r:
0d
R[x]:
0d

Beneficios

¿Por qué Schnorr es mejor que 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.

Clave Pública

Clave Pública

Calcule la clave pública a partir de una clave privada.

0 bytes

Clave Pública

Coordenadas
0d
0d

Una clave pública es solo un punto en una curva elíptica. La clave pública final son esas coordenadas en hexadecimal.

Compresión

La curva es simétrica en el eje x, así que la clave comprimida guarda solo la coordenada x y si la y es par o impar. La x-only se usa en salidas Taproot.

0 bytes

Nunca introduzcas tu clave privada en un sitio, ni uses una clave privada generada por un sitio. Los sitios pueden guardar fácilmente la clave privada y usarla para robar tus bitcoins.