Fundamentals ·

secp256k1 vs ed25519: Curvas elípticas en cripto


Cada transacción de criptomonedas requiere una firma digital — una prueba matemática de que la persona que envía fondos realmente controla la cuenta. Esa firma es producida por un algoritmo que se basa en las propiedades de una curva elíptica. Las dos curvas que dominan el mundo blockchain son secp256k1 y ed25519. Sirven al mismo propósito fundamental, pero sus diseños, características de rendimiento e historias de adopción son muy diferentes.

Esta guía explica qué hacen las curvas elípticas en criptografía, cómo difieren secp256k1 y ed25519, y qué significan esas diferencias para la generación de claves, la seguridad de billeteras y las blockchains que usas.

¿Qué son las curvas elípticas?

Una curva elíptica, en el contexto de la criptografía, es una estructura matemática definida por una ecuación de la forma y^2 = x^3 + ax + b (para curvas como secp256k1) o una forma relacionada (para curvas como ed25519). La seguridad de la criptografía de curvas elípticas (ECC) se basa en el Problema del Logaritmo Discreto de Curvas Elípticas (ECDLP): dado un punto P en la curva y un punto Q = k * P (donde k es un escalar y * representa la multiplicación de puntos), es computacionalmente inviable determinar k solo a partir de P y Q.

En términos de criptomonedas:

  • k es tu clave privada — un número secreto.
  • P es el punto generador — un punto fijo y públicamente conocido en la curva.
  • Q es tu clave pública — derivada de la clave privada mediante multiplicación de puntos.

Cualquiera puede verificar que Q coincide con k * P si conocen tanto Q como una firma producida con k, pero nadie puede extraer k de Q. Esto es lo que hace seguro compartir tu clave pública (y la dirección derivada de ella) mientras mantienes la clave privada en secreto.

ECC proporciona la misma seguridad que RSA con tamaños de clave mucho menores. Una clave de curva elíptica de 256 bits ofrece aproximadamente la misma seguridad que una clave RSA de 3,072 bits. Esta compacidad es esencial para las blockchains, donde cada byte de una transacción cuesta almacenamiento y ancho de banda.

secp256k1: la curva de Bitcoin y Ethereum

secp256k1 es la curva elíptica usada por Bitcoin, Ethereum y la mayoría de las blockchains en su ecosistema. El nombre se desglosa así:

  • sec — Standards for Efficient Cryptography
  • p — La curva está definida sobre un campo primo
  • 256 — El primo tiene 256 bits de largo
  • k — Es una curva de Koblitz (una clase específica con beneficios de eficiencia computacional)
  • 1 — Es la primera (y única) curva de este tipo en el estándar

La ecuación de la curva es: y^2 = x^3 + 7 (sobre el campo finito definido por el primo p = 2^256 - 2^32 - 977).

Satoshi Nakamoto eligió secp256k1 para Bitcoin en 2009. En ese momento, fue una elección inusual. La mayoría de los sistemas usaban la curva NIST P-256 (también llamada secp256r1). La "r" en secp256r1 indica que usa una semilla verificablemente aleatoria para sus parámetros, mientras que los parámetros de secp256k1 fueron elegidos por eficiencia computacional, no por aleatoriedad. Algunos criptógrafos han preocupado desde hace tiempo que las curvas NIST podrían tener parámetros influenciados por la NSA — una preocupación amplificada por el escándalo Dual_EC_DRBG revelado en 2013. Secp256k1 evita esta sospecha completamente porque sus parámetros son simples y transparentes: a = 0, b = 7.

Firmas: ECDSA

El algoritmo de firma emparejado con secp256k1 en Bitcoin y Ethereum es ECDSA — el Algoritmo de Firma Digital de Curva Elíptica. Cuando envías una transacción de Bitcoin o Ethereum, la billetera usa ECDSA para producir una firma a partir de tu clave privada y el hash de la transacción. Los validadores en la red verifican esta firma usando tu clave pública.

Las firmas ECDSA en secp256k1 son de 64 bytes (dos valores de 32 bytes, comúnmente llamados r y s) más un byte de recuperación que algunas implementaciones incluyen. Son determinísticas cuando usan RFC 6979 (que tanto Bitcoin como Ethereum usan), lo que significa que el mismo mensaje y clave privada siempre producen la misma firma — no se necesita aleatoriedad al momento de firmar.

Una particularidad de ECDSA es la maleabilidad de firma: dada una firma válida (r, s), el par (r, -s mod n) también es válido. Bitcoin abordó esto con BIP66 (codificación DER estricta) y luego con SegWit. Ethereum lo resuelve aplicando una forma canónica para s.

Rendimiento

La verificación de secp256k1 en implementaciones optimizadas (como libsecp256k1, usada por Bitcoin Core) es rápida: varios miles de verificaciones por segundo en hardware moderno. Sin embargo, la firma y verificación ECDSA son inherentemente más complejas que EdDSA (el algoritmo emparejado con ed25519), que fue diseñado desde cero para velocidad.

ed25519: la elección moderna de Solana

ed25519 es una curva elíptica diseñada por Daniel J. Bernstein y sus colaboradores. Fue publicada en 2011, dos años después del lanzamiento de Bitcoin, y representa una generación más nueva de diseño de curvas que prioriza tanto la seguridad como el rendimiento.

El nombre se refiere a la forma de curva de Edwards sobre el campo primo 2^255 - 19 (de ahí "25519"). La curva específica usada es una curva de Edwards retorcida llamada "edwards25519", que es biracionalmente equivalente a Curve25519 (ampliamente usada en intercambio de claves, por ejemplo en Signal y TLS 1.3).

Solana eligió ed25519 como su curva de firma, al igual que varias otras blockchains modernas. La elección refleja las ventajas de ed25519 en throughput — una preocupación crítica para la arquitectura de alto rendimiento de Solana.

Firmas: EdDSA

El algoritmo de firma emparejado con ed25519 es EdDSA — el Algoritmo de Firma Digital de Curva de Edwards. Específicamente, Solana usa Ed25519 (EdDSA con edwards25519), que produce firmas de 64 bytes.

EdDSA fue diseñado para evitar los problemas de ECDSA:

  • No se requiere aleatoriedad durante la firma. Las firmas EdDSA son inherentemente determinísticas — el nonce se deriva de la clave privada y el mensaje mediante hashing. Con ECDSA, un generador de números aleatorios defectuoso durante la firma puede filtrar catastróficamente la clave privada (esto le sucedió a la clave de firma de Sony PS3 en 2010).
  • Sin maleabilidad de firma. Las firmas EdDSA tienen una única forma canónica.
  • Verificación por lotes más rápida. Múltiples firmas Ed25519 pueden verificarse simultáneamente más rápido que verificar cada una individualmente — una ventaja significativa para blockchains de alto throughput.
  • Implementación más simple. El algoritmo tiene menos casos extremos y condiciones de ramificación, lo que reduce la superficie para ataques de canal lateral.

Rendimiento

Ed25519 es consistentemente más rápido que ECDSA-secp256k1 en benchmarks. La firma es aproximadamente 2-3 veces más rápida, y la verificación de firma individual es aproximadamente comparable, pero la verificación por lotes es donde Ed25519 realmente brilla — puede verificar cientos de firmas significativamente más rápido que verificarlas una por una. En Solana, donde los bloques pueden contener miles de transacciones, esta diferencia de rendimiento es sustancial.

ECDSA vs EdDSA: comparación directa

Propiedad ECDSA (secp256k1) EdDSA (ed25519)
Tipo de curva Short Weierstrass Edwards retorcida
Tamaño de clave 256 bits 256 bits
Tamaño de firma 64-65 bytes 64 bytes
Nivel de seguridad ~128 bits ~128 bits
Velocidad de firma Rápida Más rápida (2-3x)
Velocidad de verificación Rápida Comparable (individual), más rápida (por lotes)
Firma determinística Opcional (RFC 6979) Integrada (por diseño)
Maleabilidad de firma Posible (mitigada en la práctica) Ninguna
Vulnerabilidad de nonce Sí (RNG malo filtra clave) No (nonce derivado de clave + mensaje)
Adopción Bitcoin, Ethereum, BNB Chain, Tron, Dogecoin, Litecoin Solana, XRP (parcial), Cardano, Polkadot

Ambos algoritmos proporcionan aproximadamente 128 bits de seguridad, lo que significa que un atacante necesitaría realizar aproximadamente 2^128 operaciones para romper una clave. Esto está muy por encima de la capacidad de cualquier computadora clásica actual o previsible. Las diferencias radican en la seguridad de implementación y el rendimiento, no en la fuerza de seguridad bruta.

Para un análisis más profundo de cómo funciona la seguridad de claves en la práctica, consulta Mejores prácticas de seguridad de claves privadas.

¿Qué cadenas usan cuál?

La elección de curva es una de las decisiones arquitectónicas más fundamentales que una blockchain toma. Aquí hay un desglose de las principales redes:

Cadenas secp256k1

  • Bitcoin — La original. Usa ECDSA con secp256k1 para transacciones estándar, y firmas Schnorr (también en secp256k1) para Taproot.
  • Ethereum — ECDSA con secp256k1. Todas las cadenas compatibles con EVM heredan esta elección.
  • BNB Chain — Compatible con EVM, usa secp256k1.
  • Polygon — Compatible con EVM, usa secp256k1.
  • Arbitrum y Optimism — L2s de Ethereum, heredan secp256k1.
  • Tron — Usa secp256k1 con ECDSA.
  • Dogecoin — Fork de Bitcoin, usa secp256k1.
  • Litecoin — Fork de Bitcoin, usa secp256k1.
  • Avalanche (C-Chain) — Compatible con EVM, usa secp256k1.

Cadenas ed25519

  • Solana — Usa Ed25519 exclusivamente. Esta es una razón central por la que Solana puede procesar miles de transacciones por segundo.
  • XRP — Soporta tanto secp256k1 como ed25519. Los usuarios pueden elegir qué curva usar al generar claves.
  • Cardano — Usa Ed25519 (específicamente Ed25519-BIP32, una variante extendida).
  • Polkadot — Usa principalmente Sr25519 (Schnorr sobre Ristretto25519), que está estrechamente relacionado con ed25519.

La división es en gran medida generacional. Las blockchains diseñadas antes de 2015 tienden a usar secp256k1 (siguiendo el ejemplo de Bitcoin). Las blockchains diseñadas después de 2017 favorecen cada vez más ed25519 o curvas relacionadas.

Impacto en la generación de claves

La elección de curva elíptica afecta directamente cómo se generan las claves y direcciones. Si usas las herramientas de SafeSeed, la diferencia se maneja automáticamente, pero entenderla te ayuda a saber qué está pasando internamente.

Generación de claves secp256k1

  1. Genera un número aleatorio de 256 bits (la clave privada). Debe estar entre 1 y n - 1, donde n es el orden de secp256k1 (~2^256).
  2. Calcula la clave pública: multiplica la clave privada por el punto generador G en secp256k1. El resultado es un punto (x, y) en la curva.
  3. La clave pública sin comprimir es de 65 bytes (prefijo 04 + 32 bytes x + 32 bytes y). La forma comprimida es de 33 bytes (prefijo 02 o 03 + 32 bytes x).
  4. Hashea la clave pública para producir la dirección (SHA-256 + RIPEMD-160 para Bitcoin; Keccak-256 para Ethereum).

Puedes generar claves secp256k1 usando el Generador de claves privadas Bitcoin o el Generador de claves privadas Ethereum.

Generación de claves ed25519

  1. Genera una semilla aleatoria de 32 bytes (no es lo mismo que una semilla BIP39 — esto es el material de clave crudo).
  2. Hashea la semilla con SHA-512 para producir 64 bytes. Los primeros 32 bytes (con bits específicos fijados) se convierten en el escalar usado para firmar. Los últimos 32 bytes se usan para generación de nonce durante la firma.
  3. Calcula la clave pública: multiplica el escalar por el punto base B en edwards25519. El resultado es un punto comprimido de 32 bytes.
  4. El formato de dirección es específico de la cadena. En Solana, la clave pública misma (codificada en Base58) es la dirección.

Puedes generar claves ed25519 usando el Generador de claves privadas Solana.

Implicaciones entre curvas

Debido a que secp256k1 y ed25519 son matemáticamente incompatibles, una clave privada válida en una curva no tiene relación significativa con una clave en la otra. Cuando restauras una frase semilla en una billetera que soporta tanto Bitcoin como Solana, la billetera ejecuta dos procesos de derivación completamente separados desde la misma semilla maestra — uno usando secp256k1 para cuentas Bitcoin/Ethereum, y otro usando ed25519 para cuentas Solana. La semilla compartida es la única conexión entre ellos.

Por eso la ruta de derivación incluye un tipo de moneda: la ruta de Bitcoin (m/44'/0'/0'/0/0) y la ruta de Solana (m/44'/501'/0'/0') se ramifican a nivel del tipo de moneda, y cada rama usa su curva respectiva. Para una explicación detallada de cómo funcionan las rutas de derivación entre cadenas, lee Billeteras HD y rutas de derivación explicadas.

¿Y la computación cuántica?

Tanto secp256k1 como ed25519 son igualmente vulnerables a una computadora cuántica suficientemente poderosa ejecutando el algoritmo de Shor, que podría resolver el problema del logaritmo discreto en tiempo polinomial. Ninguna curva es "más resistente a cuántica" que la otra. La comunidad criptográfica está desarrollando esquemas de firma post-cuánticos, pero ninguna blockchain importante ha migrado a uno todavía. Para una evaluación actual, consulta Computación cuántica y la amenaza cripto.

Elegir la herramienta correcta

Como usuario, no eliges directamente entre secp256k1 y ed25519. La blockchain que uses hace esa elección por ti. Bitcoin y Ethereum requieren secp256k1. Solana requiere ed25519. Lo que puedes elegir es usar herramientas que implementen correctamente la curva que tu cadena requiere.

Los generadores de SafeSeed manejan esto automáticamente. El Generador de frases semilla Bitcoin deriva claves secp256k1. El Generador de frases semilla Ethereum hace lo mismo. El Generador de frases semilla Solana deriva claves ed25519. Todos funcionan enteramente del lado del cliente, usando la Web Crypto API de tu navegador para generación segura de números aleatorios. Ningún material de clave privada sale de tu dispositivo.

Entender la curva debajo de tu blockchain no cambia cómo usas tu billetera día a día. Pero te ayuda a entender por qué las direcciones de Solana se ven diferentes de las de Ethereum, por qué no puedes usar una clave privada cruda de Solana en Ethereum, y por qué las suposiciones de seguridad detrás de tus fondos son tan fuertes como lo son. Estas curvas son la base matemática de la propiedad de criptomonedas — invisibles en el uso normal, pero absolutamente fundamentales.