Un ataque de texto cifrado seleccionado adaptativo (abreviado como CCA2 ) es una forma interactiva de ataque de texto cifrado seleccionado en la que un atacante primero envía una serie de textos cifrados para ser descifrados seleccionados adaptativamente y luego utiliza los resultados para distinguir un texto cifrado objetivo sin consultar al oráculo sobre el texto cifrado de desafío. En un ataque adaptativo, al atacante se le permiten realizar consultas adaptativas después de que se revela el objetivo (pero la consulta del objetivo no está permitida). Se trata de una extensión del ataque de texto cifrado seleccionado indiferente (no adaptativo) (CCA1) en el que no se permite la segunda etapa de consultas adaptativas. Charles Rackoff y Dan Simon definieron CCA2 y sugirieron un sistema basado en la definición y el sistema CCA1 no adaptativo de Moni Naor y Moti Yung (que fue el primer tratamiento de la inmunidad al ataque de texto cifrado seleccionado de los sistemas de clave pública).
En ciertas situaciones prácticas, el objetivo de este ataque es revelar gradualmente información sobre un mensaje cifrado o sobre la clave de descifrado en sí. En el caso de los sistemas de clave pública , los textos cifrados adaptables generalmente solo son aplicables cuando tienen la propiedad de maleabilidad del texto cifrado , es decir, un texto cifrado puede modificarse de maneras específicas que tendrán un efecto predecible en el descifrado de ese mensaje.
Los ataques de texto cifrado adaptado quizás se consideraban una preocupación teórica, pero no se manifestaron en la práctica hasta 1998, cuando Daniel Bleichenbacher (en ese entonces de Bell Laboratories ) demostró un ataque práctico contra sistemas que usaban cifrado RSA en conjunto con la función de codificación PKCS#1 v1.5 , incluida una versión del protocolo Secure Sockets Layer (SSL) utilizado por miles de servidores web en ese momento. [1]
Los ataques Bleichenbacher, también conocidos como el ataque del millón de mensajes, aprovecharon las fallas en la función de relleno de PKCS #1 v1.5 para revelar gradualmente el contenido de un mensaje cifrado RSA. Con esta función de relleno, los textos sin formato rellenados tienen un formato fijo que deben seguir. Si el dispositivo de descifrado (por ejemplo, un servidor web equipado con SSL) de alguna manera revela si el relleno es válido, también actúa como un "oráculo" que revela información sobre la clave secreta. Encontrar la clave completa requiere enviar varios millones de textos cifrados de prueba al objetivo. [2] En términos prácticos, esto significa que una clave de sesión SSL puede quedar expuesta en un período de tiempo razonable, tal vez un día o menos.
Con ligeras variaciones, esta vulnerabilidad todavía existe en muchos servidores modernos, bajo el nuevo nombre "El regreso de la amenaza Oracle de Bleichenbacher" (ROBOT). [3]
Para evitar ataques de texto cifrado adaptado, es necesario utilizar un esquema de cifrado o codificación que limite la maleabilidad del texto cifrado y una prueba de seguridad del sistema. Después del desarrollo teórico y de nivel básico de los sistemas seguros CCA, se han propuesto varios sistemas en el modelo de Oráculo aleatorio: el estándar más común para el cifrado RSA es el relleno de cifrado asimétrico óptimo (OAEP). A diferencia de los esquemas improvisados, como el relleno utilizado en las primeras versiones de PKCS#1, se ha demostrado que OAEP es seguro en el modelo de oráculo aleatorio [4] . OAEP se incorporó a PKCS#1 a partir de la versión 2.0 publicada en 1998 como el esquema de codificación ahora recomendado, con el esquema anterior aún compatible pero no recomendado para nuevas aplicaciones [5] . Sin embargo, el estándar de oro para la seguridad es mostrar que el sistema es seguro sin depender de la idealización de Oráculo aleatorio [6] .
En la criptografía basada en la teoría de la complejidad, la seguridad contra ataques de texto cifrado adaptados se modela comúnmente utilizando la indistinguibilidad del texto cifrado (IND-CCA2).