0Pricing
Cryptology Academy · Lección

RSA-PSS para firmas digitales

Aprenda la codificación PSS y la sal, y por qué sustituyó a PKCS#1 v1.5 para firmar.

RSA-PSS para firmas digitales es una lección gratuita de Cryptology Academy en CoddyKit. Esta es la lección 4 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

RSA-PSS (Probabilistic Signature Scheme) es el sustituto seguro de las firmas PKCS#1 v1.5. Utiliza una codificación aleatoria para proporcionar firmas con seguridad demostrable.

Debilidades de las firmas PKCS#1 v1.5

Las firmas PKCS#1 v1.5 utilizan una codificación DigestInfo determinista. Los ataques de falsificación conocidos aprovechan implementaciones de verificación permisivas. Bleichenbacher (2006) demostró falsificaciones de firmas contra ciertos verificadores.

Objetivos de diseño de PSS

Bellare y Rogaway, 1996: PSS añade una sal aleatoria para hacer que las firmas sean probabilísticas. Cada firma produce una firma diferente. Ofrece seguridad demostrable en el modelo del oráculo aleatorio, con una reducción ajustada a la dificultad de RSA.

Pasos de codificación de PSS

1. mHash = Hash(M) 2. salt = random(sLen bytes) 3. M' = 0x00×8 || mHash || salt 4. H = Hash(M') 5. DB = PS || 0x01 || salt 6. dbMask = MGF1(H, emLen - hLen - 1) 7. maskedDB = DB XOR dbMask 8. EM = maskedDB || H || 0xbc

Opciones de longitud de la sal

Opciones de PKCS#1 v2.2: - MAX_LENGTH: la sal tiene la misma longitud que el hash (recomendado, máxima seguridad) - DIGEST_LENGTH: la sal tiene la longitud del hash (estándar) - 0: PSS determinista (pierde la propiedad probabilística, no recomendado) Python: padding.PSS.MAX_LENGTH

Verificación de PSS

Recupere EM = sig^e mod n. Analice maskedDB y H. Calcule M' a partir de mHash (del mensaje) y de la sal recuperada. Verifique que H == Hash(M'). La sal no tiene que coincidir; solo es necesario que H se verifique.

Comparación de seguridad entre PSS y v1.5

PSS: seguridad demostrable, reducción ajustada, firmas probabilísticas y un cálculo ligeramente más costoso. v1.5: seguridad heurística, determinista, más rápido y vulnerable a ataques de oráculo de formato. Todo código nuevo debe utilizar PSS.

PSS en TLS 1.3

TLS 1.3 requiere RSA-PSS para todas las firmas RSA. PKCS#1 v1.5 está prohibido en las nuevas extensiones de TLS 1.3. Algoritmos de firma: rsa_pss_rsae_sha256, rsa_pss_rsae_sha384, rsa_pss_rsae_sha512.

PSS en Python

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

OID de RSASSA-PSS

RSA-PSS tiene su propio tipo de clave OID: id-RSASSA-PSS (1.2.840.113549.1.1.10). Las claves generadas específicamente para PSS utilizan este OID y requieren firmas PSS (no funcionan con v1.5). Es la práctica recomendada para implementaciones nuevas.

Recomendaciones sobre hashes truncados y sal

La seguridad de PSS = min(|modulus|/2, |hash|) - 1 bits cuando salt_length = hash_length. Para RSA-2048 con SHA-256: seguridad de 128 bits. Iguale el nivel de seguridad: RSA-3072 + SHA-384 para una seguridad de 192 bits.

Comprobación rápida

¿Qué hace que las firmas RSA-PSS sean «probabilísticas» en comparación con las de PKCS#1 v1.5?

Recapitulación

RSA-PSS es la forma segura de firmar con RSA. A continuación, dominaremos la criptografía de curvas elípticas mediante el estudio de la geometría y el álgebra de las curvas.

Preguntas frecuentes

¿La lección «RSA-PSS para firmas digitales» es gratis?

Sí — el texto completo de «RSA-PSS para firmas digitales» 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 «RSA-PSS para firmas digitales»?

Aprenda la codificación PSS y la sal, y por qué sustituyó a PKCS#1 v1.5 para firmar. 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 4 de 4.

¿Cuánto tiempo toma la lección «RSA-PSS para firmas digitales»?

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. RSA de libro de texto y por qué es inseguro
  2. Padding PKCS#1 v1.5 y Bleichenbacher
  3. OAEP: padding óptimo para cifrado asimétrico
  4. RSA-PSS para firmas digitales
← Volver a Cryptology Academy