- ¿Qué es el relleno RSA y por qué es necesario?
- Comprender PKCS#1 v1.5: Cómo funciona y sus limitaciones
- Explicación de OAEP: El estándar moderno para el cifrado RSA
- Explicación de PSS: Relleno seguro para firmas digitales RSA
- PKCS#1 v1.5 vs. OAEP vs. PSS: Diferencias clave y mejores casos de uso
- Cómo puede ayudar la consultoría de cifrado
- Conclusión
Si trabajas con sistemas de seguridad, API o bibliotecas criptográficas, probablemente te hayas topado con el cifrado RSA . RSA es uno de los algoritmos criptográficos de clave pública más utilizados en el mundo. Se emplea en conexiones TLS, firmas digitales, autenticación basada en certificados e intercambio seguro de claves en prácticamente todos los sectores. Sin embargo, hay algo que no siempre se explica bien: RSA por sí solo no es seguro para usar directamente. Necesita protección adicional.
El relleno es lo que hace que el cifrado RSA y las firmas digitales sean seguros en la práctica. Sin él, los atacantes pueden explotar patrones predecibles en los datos cifrados. El RSA puro es determinista, lo que significa que la misma entrada siempre produce la misma salida. Esa predictibilidad crea patrones explotables que los atacantes han sabido aprovechar durante décadas. Los esquemas de relleno rompen esa predictibilidad al introducir aleatoriedad y estructura antes de que los datos se cifren o firmen.
Actualmente se utilizan tres esquemas principales de relleno RSA: PKCS#1 v1.5, OAEP y PSS. Cada uno fue diseñado para un propósito específico y ofrece un perfil de seguridad muy diferente. Usar el esquema incorrecto o uno obsoleto en un sistema nuevo no es un problema de configuración menor, sino una vulnerabilidad. Este blog explica cómo funciona cada esquema, dónde se aplica y qué medidas debería tomar su organización ahora mismo.
¿Qué es el relleno RSA y por qué es necesario?
Al cifrar datos con RSA sin procesar, el mismo mensaje siempre produce el mismo texto cifrado . Esta predictibilidad es un problema grave. Un atacante que monitoree el tráfico cifrado puede detectar patrones y utilizarlos para obtener información que no debería conocer.
El relleno soluciona este problema añadiendo estructura, aleatoriedad y comprobaciones de integridad al mensaje antes del cifrado. Esto hace que cada resultado de cifrado sea diferente, incluso cuando la entrada es la misma. Piense en el relleno como una capa de protección que RSA necesita antes de poder implementarse de forma segura.
El relleno no es opcional. Usar RSA sin relleno en un sistema de producción representa una vulnerabilidad de seguridad crítica. En la práctica, se utilizan tres esquemas principales de relleno RSA: PKCS#1 v1.5 , OAEP y PSS . Cada uno se diseñó para un propósito específico y posee su propio perfil de seguridad.
Comprender PKCS#1 v1.5: Cómo funciona y sus limitaciones
PKCS#1 v1.5 se introdujo en 1993 y se convirtió en el esquema de relleno RSA predeterminado durante muchos años. Todavía se encuentra en un gran número de sistemas heredados, implementaciones de TLS y software empresarial antiguo. Si realiza auditorías o mantenimiento de infraestructura antigua, es probable que se lo encuentre.
Para el cifrado, PKCS#1 v1.5 formatea el mensaje antes de cifrarlo. Comienza con una secuencia de bytes fija, seguida de bytes aleatorios distintos de cero, luego un byte cero y, finalmente, el mensaje propiamente dicho. Los bytes aleatorios ayudan a que cada texto cifrado sea diferente, y la estructura permite al destinatario encontrar y eliminar el relleno después del descifrado. Para las firmas digitales, el formato utiliza un patrón de bytes diferente e incluye un identificador hash.
El problema radica en que, en 1998, el investigador Daniel Bleichenbacher descubrió lo que hoy se conoce como el Ataque Bleichenbacher. Este ataque consiste en enviar una gran cantidad de textos cifrados manipulados a un servidor y esperar una respuesta específica: si el relleno fue válido o no. Utilizando esa respuesta como señal, un atacante puede descifrar un mensaje sin necesidad de obtener la clave privada.
Lo que resulta especialmente preocupante es que el ataque sigue funcionando hoy en día. Un estudio de 2017 llamado ROBOT (Return of Bleichenbacher's Oracle Threat) descubrió que importantes proveedores como F5, Citrix y Palo Alto Networks aún tenían productos vulnerables, casi dos décadas después del descubrimiento original.
Limitaciones de PKCS#1 v1.5:
- Vulnerable a ataques de oráculo de relleno de Bleichenbacher
- Su estructura crea señales de error que los atacantes pueden explotar.
- No existe ninguna prueba de seguridad formal contra los modelos de ataque modernos.
- No debe utilizarse en ninguna nueva implementación de cifrado.
Explicación de OAEP: El estándar moderno para el cifrado RSA
OAEP, acrónimo de Optimal Asymmetric Encryption Padding (Relleno de Cifrado Asimétrico Óptimo), se introdujo en 1994 y ahora forma parte de PKCS#1 v2.0. Es el método recomendado para el cifrado RSA en la actualidad. A diferencia de PKCS#1 v1.5, OAEP cuenta con una prueba de seguridad formal, lo que significa que su seguridad está matemáticamente ligada a la dificultad de descifrar el propio RSA.
OAEP funciona mediante una función de generación de máscara (MGF) basada en una función hash criptográfica, generalmente SHA-256, que introduce una semilla aleatoria en el mensaje antes del cifrado. Este proceso es más exhaustivo que simplemente añadir bytes aleatorios al principio. La aleatoriedad está profundamente integrada en la estructura del bloque de relleno. Con OAEP, cambiar un solo bit en el texto cifrado produce un resultado completamente impredecible al descifrarlo. Esto elimina las señales de error estructuradas en las que se basa el ataque de Bleichenbacher.
En la práctica, al configurar un HSM , establecer una política TLS o revisar una biblioteca criptográfica, conviene confirmar que las operaciones de cifrado RSA utilicen OAEP con un algoritmo hash seguro. Si en un sistema nuevo todavía se especifica PKCS#1 v1.5 para el cifrado, conviene marcarlo de inmediato.
Por qué OAEP es la opción correcta para el cifrado:
- Probado como seguro bajo el modelo de oráculo aleatorio.
- Elimina los canales de error utilizados en los ataques de Bleichenbacher.
- Produce un texto cifrado diferente cada vez, incluso para la misma entrada.
- Compatible con todas las bibliotecas criptográficas modernas.
- Requerido por las directrices del NIST para el cifrado RSA.
Explicación de PSS: Relleno seguro para firmas digitales RSA
PSS significa Esquema de Firma Probabilística y fue diseñado específicamente para firmas digitales RSA. Funciona junto con OAEP, pero cumple una función diferente. Mientras que OAEP se encarga del cifrado, PSS se encarga de la firma. Ambos comparten un enfoque de diseño similar: la seguridad debe ser formalmente demostrable, no simplemente asumida.
Un punto que suele generar confusión: PKCS#1 v1.5 se utilizaba tanto para el cifrado como para las firmas. PSS es un esquema de firma específico. No se utiliza PSS para el cifrado, del mismo modo que no se utiliza OAEP para las firmas. Cada esquema tiene su función.
Al firmar con PSS, el esquema genera una clave aleatoria (salt) y la combina mediante una función hash con el resumen del mensaje. Este resultado se codifica utilizando una función de enmascaramiento. El verificador recupera la clave, recalcula el hash y comprueba que todo coincida. Dos firmas sobre el mismo mensaje tendrán un aspecto diferente, pero ambas se verificarán correctamente.
Romper PSS es matemáticamente equivalente a romper RSA. Las firmas PKCS#1 v1.5 no pueden afirmar tal cosa. Para las organizaciones que trabajan para cumplir con FIPS 186-5 o que operan bajo los marcos SOC 2 o ISO 27001, PSS es el esquema recomendado u obligatorio.
Cuándo usar PSS:
- Cualquier nueva implementación que requiera firmas digitales RSA
- Firma de códigoFlujos de trabajo de emisión de certificados e integridad de documentos
- Cumplimiento con FIPS 186-5 o NIST SP 800-131A
- Sustitución de los esquemas de firma PKCS#1 v1.5 heredados en los sistemas existentes.
PKCS#1 v1.5 vs. OAEP vs. PSS: Diferencias clave y mejores casos de uso
Aquí presentamos una comparación sencilla de los tres planes.
PKCS#1 v1.5 se diseñó para cifrado y firmas digitales, pero actualmente presenta importantes riesgos de seguridad. Su nivel de seguridad es débil según los estándares actuales, utiliza una aleatoriedad mínima y es altamente vulnerable al ataque de Bleichenbacher. Solo debería conservarse en sistemas donde aún no sea posible reemplazarlo, e incluso en ese caso, se debe planificar la migración.
OAEP está diseñado exclusivamente para el cifrado. Es el estándar moderno y seguro, respaldado por pruebas formales y compatible en todo el mundo. Introduce una aleatoriedad adecuada mediante una semilla, lo que elimina la vulnerabilidad que PKCS#1 v1.5 dejó abierta. Todo nuevo cifrado RSA debería usar OAEP.
PSS está diseñado exclusivamente para firmas digitales. Al igual que OAEP, utiliza aleatoriedad mediante un valor aleatorio (salt value) y cuenta con una sólida prueba de seguridad vinculada directamente a RSA. Es la opción correcta para cualquier nueva implementación de firma RSA y es un requisito de varios marcos de cumplimiento normativo importantes.
La conclusión es simple: PKCS#1 v1.5 no debería incluirse en ningún diseño criptográfico nuevo. Utilice OAEP para el cifrado RSA. Utilice PSS para las firmas digitales RSA. Esto no es una cuestión de preferencia; refleja la investigación criptográfica actual y las directrices regulatorias.
Para muchas organizaciones que operan en entornos mixtos, el mayor desafío reside en identificar dónde se utilizan estos esquemas, no en solucionarlos. No se puede abordar un problema que no se ha detectado. Las evaluaciones de agilidad criptográfica y las comprobaciones del estado de la infraestructura de clave pública (PKI) son la forma más fiable de detectar estos problemas antes de que se conviertan en incidentes.
Cómo puede ayudar la consultoría de cifrado
Saber que PKCS#1 v1.5 debe reemplazarse es sencillo. Encontrar dónde se utiliza en todo el entorno es un desafío completamente distinto. La mayoría de las organizaciones con infraestructura mixta tienen esquemas de relleno RSA distribuidos en bibliotecas criptográficas, API, HSM, configuraciones TLS y aplicaciones heredadas, sin tener una idea clara de dónde se encuentra cada uno. Ese es el problema que CBOM Secure está diseñado para resolver.
CBOM Secure es la solución de Encryption Consulting para el descubrimiento e inventario criptográfico. Analiza continuamente su código, entornos en la nube y HSM para identificar todos los activos criptográficos en uso, incluidos los algoritmos, los esquemas de relleno y las configuraciones de claves asociadas. Si se utiliza PKCS#1 v1.5 en algún lugar de su entorno, lo detectará.
Esto es lo que abarca en el contexto de lo que trata este blog:
Descubrimiento criptográfico en código e infraestructura: CBOM Secure identifica el uso de RSA en todo su entorno y asigna los esquemas de relleno vinculados a cada implementación, para que sepa exactamente dónde OAEP y PSS deben reemplazar las configuraciones heredadas.
Puntuación de riesgo cuántico: Más allá de los esquemas de relleno, evalúa su postura criptográfica frente al riesgo cuántico, lo que le ayuda a priorizar qué abordar primero en función de la exposición real en lugar de conjeturas.
Alineación con el cumplimiento normativo: CBOM Secure compara su inventario criptográfico con marcos como FIPS, CMMC y PCI DSS, detectando configuraciones que no cumplen con los requisitos de cumplimiento, incluidos los esquemas de relleno obsoletos señalados en la norma NIST SP 800-131A.
Soporte para la agilidad criptográfica: Una vez que sepa qué hay en su entorno, CBOM Secure le proporciona la base de inventario necesaria para planificar las migraciones de forma metódica, que es precisamente lo que requiere desarrollar la agilidad criptográfica.
Para las organizaciones que han identificado la necesidad de auditar y modernizar sus implementaciones de RSA, CBOM Secure es el punto de partida que hace posible el resto del trabajo.
Conclusión
Los esquemas de relleno RSA pueden parecer un tema específico, pero constituyen la base del funcionamiento de la criptografía de clave pública en sistemas reales. Implementarlos correctamente es fundamental. Elegir PKCS#1 v1.5 para una nueva implementación de cifrado no es un error menor; abre la puerta a una clase de ataques conocidos y explotados activamente durante más de dos décadas.
El procedimiento es sencillo: utilice OAEP para el cifrado RSA y PSS para las firmas digitales RSA. Audite sus sistemas actuales para PKCS#1 v1.5. Incorpore flexibilidad criptográfica para que las futuras migraciones no requieran empezar desde cero.
- ¿Qué es el relleno RSA y por qué es necesario?
- Comprender PKCS#1 v1.5: Cómo funciona y sus limitaciones
- Explicación de OAEP: El estándar moderno para el cifrado RSA
- Explicación de PSS: Relleno seguro para firmas digitales RSA
- PKCS#1 v1.5 vs. OAEP vs. PSS: Diferencias clave y mejores casos de uso
- Cómo puede ayudar la consultoría de cifrado
- Conclusión
