Rivest Shamir Adleman (RSA) Es un algoritmo asimétrico que permite cifrar y firmar datos. Los procesos de cifrado y firma se realizan mediante una serie de multiplicaciones modulares. La seguridad del algoritmo RSA puede aumentarse utilizando claves de mayor longitud, como 1,024 bits o más. Sin embargo, cuanto mayor sea la longitud de la clave, más lento será el proceso de cifrado o firma. Es uno de los métodos de cifrado de clave pública más populares y seguros. Existen dos esquemas de firma RSA diferentes especificados en el PKCS1.
- RSASSA-PKCS1-v1_5: Esquema de firma antiguo con apéndice tal como se estandarizó por primera vez en la versión 1.5 de PKCS #1.
- RSASSA-PSS (RSASSA = Esquema de firma RSA con apéndice): basado en el Esquema de Firma Probabilística (PSS) originalmente inventado por Bellare y Rogaway.
Diferencia entre RSASSA-PKCS1-v1_5 y RSASSA-PSS
| RSASSA-PKCS1-v1_5 | RSASSA-PSS |
|---|---|
| PKCSV1_5 es determinista. | Es aleatorio, produciendo así un valor de firma diferente cada vez. |
| El valor del resumen del mensaje se puede extraer de una firma PKCSV1_5. | No se puede extraer de una firma PSS, sino que solo se puede verificar comparándolo con un valor de resumen de mensaje conocido. |
| Menos seguro y robusto | PSS tiene pruebas de seguridad y es más robusto que PKCSV1_5. |
| Es un esquema antiguo. | Es un nuevo plan. |
| Se recomienda para garantizar la compatibilidad con la aplicación de firma existente. | Se recomienda para la compatibilidad con las aplicaciones de firma existentes. Se recomienda para su eventual adopción en nuevas aplicaciones de firma, ya que no contiene ciertos puntos críticos del estándar anterior. |
Ataques a esquemas de firma antiguos
- El ataque de Bleichenbacher
En 1998, Daniel Bleichenbacher descubrió que los mensajes devueltos por los servidores SSL por errores en Estándares de criptografía de clave pública (PKCS) El relleno de la versión 1.5 n.° 1 permitió un ataque de texto cifrado con selección adaptativa, en el que un atacante envía una serie de textos cifrados para descifrar y utiliza los resultados para seleccionar los siguientes. Esto permitió al atacante realizar operaciones de descifrado y firma RSA utilizando la clave privada de un servidor TLS, lo que vulneró por completo la confidencialidad de TLS al combinarse con el cifrado RSA.
- Ataque basado en fallos
En 1996, Dan Boneh y otros presentaron un ataque a RSA que implicaba cálculos erróneos. Al inyectar errores aleatorios en los cálculos de RSA, lograron regenerar la clave privada a partir del conocimiento de las firmas defectuosas. Las implementaciones de RSA que utilizan el teorema chino del resto para acelerar los cálculos son especialmente vulnerables: una sola firma errónea permite la regeneración de la clave privada. La protección contra ataques basados en fallos como este es especialmente importante en dispositivos integrados, como las tarjetas con chip, que están diseñados no para exponer la clave privada, sino para proporcionar operaciones criptográficas, como firmas, en un entorno potencialmente bajo el control de un atacante. Sin embargo, estudios posteriores han demostrado que PSS no es vulnerable a estos ataques basados en fallos.
RSASSA-PSS
RSASSA-PSS es un esquema de firma probabilística mejorado con un apéndice. Esto significa que se puede usar una clave RSA privada para firmar los datos junto con una entrada aleatoria. El otro extremo de la comunicación puede verificar la firma usando la clave RSA pública correspondiente. Este esquema de firma utiliza datos aleatorios, por lo que dos firmas con la misma entrada son diferentes, y ambas se pueden usar para validar los datos originales.
Parámetros RSASSA-PSS
- Algoritmo/función hash
Las funciones hash se utilizan en esquemas de cifrado, esquemas de firma con apéndice y diversos métodos de codificación. Son deterministas, lo que significa que la salida está completamente determinada por la entrada. Las funciones hash toman cadenas de entrada de longitud variable y generan cadenas de salida de longitud fija.
- Funciones de generación de máscaras
Una función de generación de máscara toma como entrada una cadena de octetos de longitud variable y la longitud de salida deseada, y genera una cadena de octetos de la longitud deseada. Las funciones de generación de máscara (FGM) son deterministas. La salida de una FGM debe ser pseudoaleatoria; es decir, si se desconoce la semilla de la función, debe ser imposible distinguir la salida de una cadena verdaderamente aleatoria. La seguridad demostrable de RSAES-OAEP y RSASSA-PSS se basa en la aleatoriedad de la salida de la función de generación de máscara, la cual, a su vez, depende de la aleatoriedad del hash subyacente.
- Longitud de sal
Es el valor de sal asociado a la operación de firma. Este campo está diseñado para facilitar el procesamiento en una sola pasada. Si se omite, el valor de sal se obtendrá de la firma. El valor de sal mejora la seguridad del esquema al proporcionar una prueba de seguridad más sólida que las alternativas deterministas como el Hashing de Dominio Completo (FDH).
- Campo de remolques
Se utiliza en la operación de codificación y es un entero. El valor DEBE ser 1, que representa el campo final con valor hexadecimal 0xBC.
Parámetros predeterminados
algoritmo hash
El valor predeterminado es SHA1, sin embargo se recomienda SHA-256
algoritmo maskGen
Es necesario utilizar MGF1. mgf1SHA1 (la función MGF1 con SHA-1)
longitud de sal
El valor predeterminado es 20, pero la convención es usar hLen, la longitud de la salida de la función hash en bytes.
trailerField
trailerFieldBC (el byte 0xbc)
Se recomienda que la función hash MGF sea similar a la del algoritmo/función hash del esquema, y que la longitud de la sal sea hLen, que es la longitud de la salida de la función hash.
Conclusión
RSASSA-PSS es un esquema de firma mejorado que incluye un archivo adjunto. Utiliza una clave privada RSA para firmar los datos y, posteriormente, el destinatario puede verificar esta firma mediante la clave pública. RSA Es clave. Tiene varios parámetros y es más segura y robusta que otras.
