Skip to content

Glossary

Firma (criptográfica)

Prueba criptográfica de autoría

By Published Updated

Una firma criptográfica es una cadena corta de bytes que prueba que un mensaje específico fue producido por alguien en posesión de una clave privada, sin revelar la clave privada. Verificar la firma solo requiere la clave pública correspondiente (para algoritmos asimétricos) o el secreto compartido (para simétricos).

El flujo asimétrico básico (usando RSA, ECDSA o Ed25519):

  1. El firmante hace un hash del mensaje (típicamente SHA-256).
  2. El firmante cifra el hash con su clave privada. Resultado: la firma.
  3. El verificador hace un hash del mensaje recibido con la misma función hash.
  4. El verificador descifra la firma con la clave pública. Resultado: un hash.
  5. Si los dos hashes coinciden, la firma es válida y el mensaje no fue manipulado.

Las firmas simétricas (HMAC) usan un secreto compartido en lugar de un par de claves. El firmante y el verificador tienen el secreto; ambos calculan HMAC(secreto, mensaje) y los comparan. Más rápido que el asimétrico; solo útil cuando las partes ya se tienen confianza (no conviene usar HMAC para verificación de terceros porque cualquiera con el secreto puede falsificar firmas).

Dónde aparecen las firmas en el stack de trabajo: tokens JWT (el tercer segmento), cadenas de certificados TLS, firma de código (notarización de Apple, Authenticode de Windows), commits y etiquetas de Git (firmados con GPG), transacciones de Bitcoin, distribución de paquetes de software (gestores de paquetes de Linux, fórmulas de Homebrew). Cada contexto agrupa la firma con un algoritmo específico y una estrategia de gestión de claves; el primitivo subyacente es el mismo.

Firmas post-cuánticas y la migración por venir: RSA, ECDSA y Ed25519 son todos vulnerables al algoritmo de Shor en un ordenador cuántico suficientemente grande. El programa de criptografía post-cuántica del NIST seleccionó tres esquemas de firma en 2024 — ML-DSA (Dilithium), SLH-DSA (SPHINCS+) y FN-DSA (Falcon) — como los reemplazos en la vía de estandarización. Las máquinas cuánticas reales suficientemente grandes para romper RSA de 2048 bits aún no existen, pero los sistemas criptográficos con larga vida útil (certificados raíz, claves de firma de código para software archivado, copias de seguridad cifradas destinadas a permanecer confidenciales durante décadas) están migrando de forma preventiva. Las firmas híbridas (clásicas + post-cuánticas) son la estrategia de transición típica. Referencia: NIST — Estandarización de Criptografía Post-Cuántica.

Ejemplo práctico

Firmar el mensaje "transfer $100 to alice" con una clave Ed25519. Paso uno: hacer un hash del mensaje con SHA-512 produciendo un resumen de 64 bytes. Paso dos: el algoritmo Ed25519 combina ese resumen con el escalar de la clave privada de 32 bytes mediante generación de nonce determinista (RFC 8032), produciendo una firma de 64 bytes (R, s). Paso tres: cualquiera con la clave pública de 32 bytes puede verificarla recalculando el punto de la curva y comprobando que la ecuación sB = R + H(R, A, M) · A se cumple. La firma es corta (64 bytes) y la verificación es rápida (~50 µs en una CPU moderna). De forma crucial, Ed25519 es determinista — firmar el mismo mensaje con la misma clave dos veces produce bytes idénticos. Firmar con RSA-2048 el mismo mensaje produciría una firma de 256 bytes; ECDSA sobre P-256 produciría ~71 bytes codificados en DER. La elección del algoritmo negocia tamaño de firma, velocidad de verificación y compacidad de clave.

Cuándo y por qué importa

El mal uso de las firmas es la vulnerabilidad criptográfica más común después del hash de contraseñas. Los errores clásicos: firmar un blob JSON cuya forma canónica es ambigua (reordenar las claves cambia los bytes y rompe la firma, o peor, permite a un atacante crear dos mensajes semánticamente diferentes con los mismos bytes), usar un nonce ECDSA determinista repetido en dos mensajes (lo que filtra la clave privada — así se extrajo la clave maestra de PlayStation 3 en 2010), y aceptar firmas sin verificar que el campo de algoritmo coincide con el esperado (la clase de vulnerabilidad “alg: none” en las primeras bibliotecas JWT). Las reglas defensivas: fijar el algoritmo en el verificador, canonicalizar el mensaje antes de hacer el hash (usar COSE/JOSE, no JSON ad-hoc), preferir Ed25519 sobre ECDSA para código nuevo, y almacenar claves privadas en HSM o enclaves respaldados por hardware cuando el modelo de amenazas lo justifique. Referencia: RFC 8032 — Algoritmo de Firma Digital de Curva Edwards (EdDSA).

Prueba la calculadora

Desglosa un token para ver los bytes brutos de la firma junto al encabezado y payload firmados.

Abrir el decodificador JWT →

Frequently asked questions

¿Qué es una firma criptográfica?
Una firma criptográfica es una prueba matemática generada con una clave privada que permite a cualquier persona que posea la clave pública correspondiente verificar que un mensaje específico fue firmado por el titular de esa clave y no ha sido alterado desde la firma.
¿Cómo se usan las firmas criptográficas en la práctica?
Los certificados TLS son firmados por autoridades de certificación para que los navegadores puedan confiar en ellos. Las versiones de software se firman para que los usuarios puedan verificar su autenticidad antes de instalarlas. Los JWT llevan una firma en su tercer segmento para que las APIs puedan verificar que los tokens fueron emitidos por una autoridad conocida y no han sido manipulados.
¿Cuál es la diferencia entre una firma digital y un MAC (código de autenticación de mensajes)?
Un MAC (por ejemplo, HMAC) usa una clave secreta compartida y prueba integridad y autenticación solo a las partes que poseen la misma clave. Una firma digital usa pares de claves asimétricas — cualquiera con la clave pública puede verificarla, lo que la hace adecuada para afirmaciones públicas como certificados TLS o software firmado.

Related

Published May 16, 2026 · Last reviewed May 31, 2026