He estado leyendo sobre los ataques de canal lateral de caché y el método "Flush + Reload" surgió una cantidad decente. Antes de plantear mi pregunta, esto es lo que entiendo sobre la técnica de recarga Flush +.
Entiendo que si dos usuarios (Alice, Bob) ejecutan el mismo programa, el sistema operativo típico creará una copia de las tablas de páginas para que el programa no se cargue dos veces. Estos son de sólo lectura, así que todo está "bien". Si el atacante, Bob, puede determinar qué líneas de caché de la memoria compartida se encuentran en la caché L3 durante un período de tiempo, posiblemente puede determinar a qué líneas de caché accede el proceso de Alicia en el tiempo extra. Esto se puede hacer con Flush Reload borrando la memoria caché y cronometrando cuánto tiempo se tarda en leer la memoria caché. Muy rápido = Alice está accediendo a este pedazo de memoria. Lento = Alice no está accediendo a este pedazo de memoria. Bob continúa haciendo este tiempo extra para desarrollar una "línea de base" de clases. Espero que la mayoría de mi entendimiento sea correcto.
He leído cómo se puede usar esto para los programas que tienen entrada de usuario. Bob realiza el ataque a sí mismo con muchas entradas y calcula el tiempo basado en la actualización de la memoria caché. Luego realiza el ataque a Alice y básicamente compara los resultados para distinguir entradas (nivel alto, pero esta no es mi pregunta).
La mayoría de mi entendimiento es de aquí .
Mi pregunta es: ¿en qué se diferencia este ataque de un ataque de fuerza bruta o incluso un ataque de tiempo en el contexto de la entrada del usuario?