0Pricing
Cryptology Academy · Lección

Firmas RSA: firmar y verificar

Siga paso a paso las matemáticas para firmar el hash de un documento con una clave privada.

Firmas RSA: firmar y verificar es una lección gratuita de Cryptology Academy en CoddyKit. Esta es la lección 2 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

Las firmas RSA invierten las funciones de las claves: la clave privada firma y la clave pública verifica. Esto permite que cualquiera verifique su identidad utilizando su clave pública.

Matemáticas de la firma RSA

Para firmar el mensaje M con la clave privada (d, n): 1. H = SHA256(M) 2. sig = H^d mod n La firma es un número con la misma longitud en bits que n.

Matemáticas de la verificación RSA

Para verificar la firma sig con la clave pública (e, n): 1. H' = sig^e mod n 2. H = SHA256(M) 3. Válida si H == H' Cualquiera que tenga la clave pública puede verificarla; no se necesita ningún secreto.

Relleno de firmas PKCS#1 v1.5

Las firmas RSA sin procesar son maleables. PKCS#1 v1.5 aplica relleno al hash antes de firmarlo: 0x00 0x01 [0xFF padding] 0x00 [DigestInfo] [Hash] La verificación comprueba la estructura exacta del relleno.

RSA-PSS: un relleno mejor

RSA-PSS (Probabilistic Signature Scheme) utiliza un salt aleatorio, lo que hace que cada firma sea diferente incluso para el mismo mensaje. Su seguridad está demostrada en el modelo del oráculo aleatorio. Se prefiere a PKCS#1 v1.5.

Firma RSA en Python (PSS)

from cryptography.hazmat.primitives.asymmetric import padding from cryptography.hazmat.primitives import hashes signature = private_key.sign( message, padding.PSS( mgf=padding.MGF1(hashes.SHA256()), salt_length=padding.PSS.MAX_LENGTH ), hashes.SHA256() )

Verificación RSA en Python

try: public_key.verify( signature, message, padding.PSS( mgf=padding.MGF1(hashes.SHA256()), salt_length=padding.PSS.MAX_LENGTH ), hashes.SHA256() ) print('Valid!') except InvalidSignature: print('Invalid!')

Longitud de la firma

Firma RSA-2048: 256 bytes. RSA-4096: 512 bytes. Firma ECDSA-256: ~71 bytes (codificación DER de longitud variable). La firma contiene el resultado completo de la exponenciación modular.

Firmas ciegas

Una firma ciega permite al firmante firmar un mensaje sin ver su contenido. Se utiliza en votación electrónica y dinero electrónico: el banco firma un token cegado y el usuario lo descega para obtener dinero imposible de rastrear.

Firma RSA en la cadena de certificados

Let's Encrypt firma el certificado de su servidor con la clave privada RSA de su CA intermedia. La clave pública de su servidor se encuentra en el cuerpo del certificado. Los clientes TLS verifican esta cadena automáticamente.

Transparencia de certificados

Certificate Transparency registra todos los certificados emitidos en un árbol de Merkle verificable criptográficamente. Los Signed Certificate Timestamps (SCT) demuestran la inclusión en el registro antes de la emisión.

Comprobación rápida

En la verificación de una firma RSA, ¿qué clave se utiliza para verificar la firma?

Resumen

Las firmas RSA son seguras si utilizan el relleno adecuado. A continuación compararemos los esquemas de firma RSA, DSA y ECDSA.

Preguntas frecuentes

¿La lección «Firmas RSA: firmar y verificar» es gratis?

Sí — el texto completo de «Firmas RSA: firmar y verificar» 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 «Firmas RSA: firmar y verificar»?

Siga paso a paso las matemáticas para firmar el hash de un documento con una clave privada. 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 2 de 4.

¿Cuánto tiempo toma la lección «Firmas RSA: firmar y verificar»?

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