Volver a Explorar
ConceptoTécnicoCiberseguridadIntermedio

Ed25519 vs ECDSA — qué algoritmo elegir

6 minVerificado · 2026-05-18

Para firmas digitales modernas, hay dos familias principales de algoritmos: Ed25519 (basado en curvas Edwards) y ECDSA (basado en curvas Weierstrass como P-256). Ambos son curvas elípticas, ambos son criptográficamente sólidos, pero tienen diferencias prácticas que importan al diseñar un sistema SSI.

La comparación rápida

CaracterísticaEd25519ECDSA (P-256)
Velocidad firma~80 µs~150 µs
Velocidad verificación~150 µs~250 µs
Tamaño firma64 bytes64-72 bytes
Tamaño clave pública32 bytes65 bytes (compresible a 33)
Seguridad teórica128 bits128 bits
Resistencia side-channelMejorMás vulnerable
Adopción govCrecienteHistórica (legacy)
Soporte hardwareLimitadoAmplio (TPM, HSM, smartcards)

Cuándo usar cada uno

La regla simple:

  • Default: Ed25519. Para sistemas SSI nuevos, gov modernos, casos donde el control del stack es propio.
  • Excepción: ECDSA P-256. Para integración con sistemas legacy, hardware específico, o regulaciones que la requieren.

Por qué Ed25519 es el default moderno

Cinco razones técnicas:

Velocidad

~2x más rápido en firma y verificación. Importante en wallets móviles.

Tamaño compacto

Clave pública de 32 bytes (vs 65 de ECDSA). Importante para QRs y deep links.

Implementación determinística

Ed25519 produce la misma firma para los mismos inputs. ECDSA depende de un nonce random — si falla, expone la clave privada.

Resistencia a side-channel

Ed25519 fue diseñado para ser resistente a ataques de medición de tiempo. ECDSA requiere implementaciones cuidadosas.

Estandarización moderna

RFC 8032 estable desde 2017. Adoptado en SSH, TLS 1.3, gobiernos modernos.

Por qué ECDSA P-256 sigue vigente

A pesar de las desventajas técnicas, ECDSA P-256 sigue siendo relevante:

Hardware existente

TPMs, HSMs, smartcards tradicionales soportan ECDSA antes que Ed25519.

Regulaciones legacy

Algunas regulaciones gov (NIST, FIPS 186-4) listan ECDSA como aceptable y no han actualizado para incluir Ed25519.

TLS / SSL

Aunque TLS 1.3 soporta Ed25519, mucha infraestructura web sigue prefiriendo ECDSA por compatibilidad.

Las curvas dentro de cada familia

Cada familia tiene varias curvas con propiedades distintas:

Ed25519 family:

  • Ed25519 (default, 128 bits seguridad)
  • Ed448 (mayor seguridad, ~225 bits, pero más lento)

ECDSA family:

  • P-256 / secp256r1 / prime256v1 (default, 128 bits)
  • P-384 / secp384r1 (192 bits, más lento)
  • P-521 / secp521r1 (260 bits, mucho más lento)
  • secp256k1 (Bitcoin, Ethereum — no NIST estándar pero ubicuo)

Para gov, las curvas NIST (P-256, P-384, P-521) son las únicas reconocidas oficialmente. Para crypto, secp256k1 domina.

En SSI específicamente

ComponenteAlgoritmo común
Issuer (gov)Ed25519 o ECDSA P-256
Holder (wallet)Ed25519
VerifierAcepta ambos
DID DocumentLista clave pública con su algoritmo
Credencial firmadaUsa el algoritmo del header (alg)

Para wallets ciudadanas modernas, Ed25519 es siempre la elección correcta. Es más rápido, más compacto, y la implementación es más segura por defecto.

La discusión post-quantum

Tanto Ed25519 como ECDSA son vulnerables a computación cuántica futura. Si y cuando aparezcan computadoras cuánticas de gran escala (estimado 2030-2040), todas las firmas hechas con estos algoritmos serán falsificables retroactivamente.

NIST está estandarizando algoritmos post-quantum (ML-DSA, Falcon, SLH-DSA) que resisten ataques cuánticos. Sistemas críticos a largo plazo deben planificar migración.

Para SSI gob hoy, la recomendación: usar Ed25519 como default + diseñar el sistema para permitir agregar algoritmos post-quantum cuando estandaricen.

Implementación práctica

// Ed25519 con jose
import { generateKeyPair, SignJWT, jwtVerify } from "jose";

const { privateKey, publicKey } = await generateKeyPair("EdDSA", {
  crv: "Ed25519",
});

// ECDSA con jose
const { privateKey: ecdsaPriv, publicKey: ecdsaPub } = await generateKeyPair("ES256");

Ambos algoritmos se manejan con la misma API. La diferencia es solo qué pasar como parámetro.

Referencias

Relacionados

Tagscriptografiaed25519ecdsaalgoritmos