Cryptology Academy · Lección

Esquemas de firma DSA y ECDSA

Compare las firmas RSA con DSA y su variante basada en curvas elípticas.

Lección 3 de 413 pasos

Esquemas de firma DSA y ECDSA es una lección gratuita de Cryptology Academy en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Cryptology Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Cryptology Academy incluye 4 lecciones en total.

Bienvenida

DSA y ECDSA son esquemas de firma alternativos que utilizan la dificultad del logaritmo discreto. ECDSA domina los sistemas modernos gracias a sus claves más pequeñas y operaciones más rápidas.

Introducción a DSA

DSA (NIST, 1994) utiliza un grupo cíclico de orden primo q dentro de Z*p. Generación de claves: clave privada x; clave pública y = g^x mod p. Estándar: p de 2048 bits y q de 256 bits.

Algoritmo de firma DSA

1. Genere un nonce aleatorio k (1 < k < q) 2. r = (g^k mod p) mod q 3. s = k^(-1) × (Hash(M) + x×r) mod q 4. Firma: (r, s)

Verificación DSA

1. u1 = Hash(M) × s^(-1) mod q 2. u2 = r × s^(-1) mod q 3. v = (g^u1 × y^u2 mod p) mod q 4. Válida si v == r

Vulnerabilidad del nonce de DSA

Si se utiliza el mismo k dos veces, las dos firmas comparten r. A partir de dos pares (r,s1) y (r,s2), la clave privada x se puede calcular directamente. Esto destruyó la seguridad de PS3 (k=1 se utilizaba siempre).

Introducción a ECDSA

ECDSA es DSA implementado sobre un grupo de curva elíptica en lugar de Z*p. La curva proporciona una seguridad equivalente con parámetros mucho más pequeños: ECDSA-256 ≈ DSA-3072 en seguridad.

ECDSA en Python

from cryptography.hazmat.primitives.asymmetric import ec from cryptography.hazmat.primitives import hashes private_key = ec.generate_private_key(ec.SECP256R1()) sig = private_key.sign(message, ec.ECDSA(hashes.SHA256())) public_key = private_key.public_key() public_key.verify(sig, message, ec.ECDSA(hashes.SHA256()))

ECDSA determinista (RFC 6979)

RFC 6979 deriva k de forma determinista a partir de la clave privada y el hash del mensaje. Esto elimina la dependencia del generador de números aleatorios y hace imposible reutilizar el nonce. Todas las implementaciones modernas utilizan RFC 6979.

EdDSA: Ed25519

Ed25519 (Edwards-curve DSA) utiliza la forma Edwards retorcida de Curve25519. Es determinista por diseño y funciona en tiempo constante. Es más rápido que ECDSA. Se recomienda para protocolos nuevos (claves SSH, TLS 1.3, Signal).

Comparación del tamaño de las claves

Firma RSA-2048: 256 bytes. Firma ECDSA-256: ~71 bytes. Firma Ed25519: 64 bytes. Clave pública Ed25519: 32 bytes. La diferencia de tamaño es importante en dispositivos con recursos limitados.

Curvas estándar

NIST P-256 (secp256r1): TLS y cumplimiento de FIPS. secp256k1: Bitcoin y Ethereum. Curve25519/Ed25519: Signal, WireGuard y SSH más reciente. Brainpool: algunos estándares europeos.

Comprobación rápida

¿Qué vulnerabilidad catastrófica se introduce si se reutiliza un nonce k de DSA/ECDSA?

Resumen

Ahora comprende DSA, ECDSA y Ed25519. A continuación estudiaremos cómo las firmas digitales protegen aplicaciones reales: la firma de código y el correo electrónico.
Gratis para empezar

Aprende Cryptology Academy con un tutor de IA — gratis

Escribe y ejecuta código real en tu navegador, obtén ayuda instantánea de un tutor de IA disponible 24/7 y continúa donde lo dejaste en la web o en la aplicación.

Cursos
67
Lecciones
261

Preguntas frecuentes

¿La lección «Esquemas de firma DSA y ECDSA» es gratis?

Sí — el texto completo de «Esquemas de firma DSA y ECDSA» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Cryptology Academy, actualiza a CoddyKit PRO. El curso de Cryptology Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Esquemas de firma DSA y ECDSA»?

Compare las firmas RSA con DSA y su variante basada en curvas elípticas. Practicas Cryptology Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Cryptology Academy?

No se requiere experiencia previa. Cryptology Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.

¿Cuánto tiempo toma la lección «Esquemas de firma DSA y ECDSA»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Cryptology Academy?

Sí. Cada lección de Cryptology Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. ¿Qué es una firma digital?
  2. Firmas RSA: firmar y verificar
  3. Esquemas de firma DSA y ECDSA
  4. Firmas en la práctica: firma de código y correo electrónico
← Volver a Cryptology Academy