Lo siguiente es un breve resumen de los ataques a OCB2 en Criptografía. Esto es más aplicado que otras respuestas, pero aún se ajusta bastante bien a la pregunta, y tiene el detalle interesante de que solo nos salvamos de lo que posiblemente podría haber sido el fallo práctico más devastador de la criptografía por una patente.
En Criptografía, una técnica común de prueba es la de demostraciones por reducción. Estas son básicamente demostraciones "constructivas" de implicaciones, que tienen la forma general
El esquema $\Pi$ tiene la propiedad $P \implies$ el esquema $F(\Pi)$ tiene la propiedad $Q$.
Lo que significa "constructivo" aquí es la combinación de
- Conservación del Tiempo de Ejecución: Cualquier algoritmo $A$ para romper la propiedad $Q$ de $F(\Pi)$ puede ser transformado en un algoritmo $A'$ para romper la propiedad $P$ de $\Pi$, de manera que los tiempos de ejecución de $A$ y $A'$ sean similares, y
- Conservación de la Ventaja: Para $A$ y $A'$ como se mencionó anteriormente, si $A$ solo rompe la propiedad $Q$ con una probabilidad $p$, entonces $A'$ rompe la propiedad $P$ con una probabilidad $p'$ no demasiado menor que $p$.
Las reducciones son quizás la técnica de prueba central en criptografía. Relevante para la discusión a continuación es su uso en encriptación simétrica. Aquí, se comienza con
- una cifra de bloque $\Pi$, básicamente encriptación para entradas de "longitud fija" (por ejemplo, 128 bits), que
- satisface una propiedad de seguridad débil $P$ (típicamente "Indistinguibilidad bajo Ataque de Texto Plano Elegido", o IND-CPA. A un nivel alto, esto modela a adversarios pasivos que pueden elegir mensajes $m$ para ser encriptados, y ver los textos cifrados resultantes que se transmiten, pero no pueden modificar estos textos cifrados de ninguna manera),
y produce
-
un esquema de encriptación general $F(\Pi)$, que puede encriptar mensajes de longitud arbitraria (no a priori acotada), que
-
satisface una propiedad de seguridad fuerte $Q$ (por ejemplo, en IND-CCA2, se permite a un adversario modificar arbitrariamente los textos cifrados mencionados).
Para la encriptación simétrica, lo mencionado anteriormente suele llamarse "modos de operación de cifras de bloque". A menudo se necesita no solo una transformación $F$ que tome como entrada una cifra de bloque $\Pi$, sino también un esquema auxiliar $\Gamma$ llamado "Código de Autenticación de Mensajes". Aunque no discutiré este detalle en profundidad.
Hay muchos modos de operación populares. Los modos OCB tienen un rendimiento similar a los modos "clásicos", al mismo tiempo que logran una propiedad de seguridad más fuerte conocida como encriptación autenticada con datos asociados (AEAD). Una cifra AEAD toma como entrada dos mensajes $(m, d)$, donde
- el mensaje $m$ se mantiene privado (en la línea de IND-CCA2 mencionado anteriormente), mientras que
- los datos $d$ se transmiten públicamente, pero "autenticados", por lo que un adversario que intente modificar estos datos (públicos) será descubierto.
Esto puede ser útil cuando los mensajes $m$ requieren componentes públicos para su procesamiento. Por ejemplo, los datos $d$ pueden contener el ID del cual se debe usar la clave para descifrar el mensaje. Estos datos deben ser públicos, pero tampoco deben poder ser manipulados.
Durante aproximadamente una década, Phil Rogaway desarrolló los Modos OCB (OCB1, OCB2, OCB3) de operación. Han sido muy populares. OCB2 fue un estándar ISO (hasta el ataque mencionado a continuación), y (una variante de) OCB3 continúa siéndolo (solo se sabe que OCB2 tiene una prueba de seguridad defectuosa). OCB3 fue seleccionado como un "ganador" de la competencia CAESAR (una competencia dirigida por criptógrafos para seleccionar un portafolio de recomendaciones criptográficas para su uso futuro por comités de estandarización). Todos estos esquemas tenían pruebas de seguridad basadas en reducciones. Esto no significa que los esquemas sean seguros, pero debería significar que la única forma "real" de atacarlos es atacando sus componentes base $\Pi$, en lugar de su transformación $F(\Pi)$.
En 2018, Inoue y Minematsu encontraron un ataque simple a OCB2, que atacaba la transformación $F$ en lugar de los componentes $\Pi$. Esto significa que la prueba de Rogaway estaba equivocada. La forma en que estaba equivocada se puede describir de manera simple en un nivel alto. Hablando en términos generales (quizás con conocimiento del ataque después), para OCB2 uno puede dividir $F = G\circ H$ en dos partes.
- Primero, se muestra que $H(\Pi)$ produce lo que se conoce como una cifra de bloque ajustable a partir de una cifra de bloque $\Pi$ y
- Luego, se muestra que $G(\Pi')$ mapea una cifra de bloque ajustable etiquetada a un esquema AEAD.
Esto significa que hubo una pequeña discrepancia entre la postcondición de $H$ y la precondición de $G$. Este pequeño espacio produjo un completo fallo en la prueba, en el sentido de que OCB2 permitió rompimientos eficientes y casi completos en la seguridad, incluso para esquemas "base" seguros $\Pi$. Esto pasó desapercibido por varios organismos de estandarización y muchos criptógrafos (hasta el 2024, el artículo de OCB2 tiene casi 600 citas).
Como se mencionó anteriormente, afortunadamente este ataque no tuvo mucho impacto práctico. A pesar de que OCB2 tiene muchos beneficios prácticos en comparación con esquemas competidores, Rogaway patentó el esquema, y tenía varias licencias para ello, a saber
- Uso gratuito en software de código abierto
- Licencias de pago disponibles en software comercial no militar
Esto no fue suficiente para que los autores de librerías criptográficas adoptaran ampliamente los modos OCB (ver alguna discusión aquí), por lo que la presencia de las patentes disuadió la adopción de los modos OCB, lo que nos salvó de que OCB2 fallara, a pesar de su prueba de seguridad.