Ho letto degli attacchi al canale laterale della cache e il metodo "Flush + Reload" è arrivato a un livello accettabile. Prima di avanzare la mia domanda, questo è quello che capisco della tecnica di ricarica Flush +.
Capisco che se due utenti (Alice, Bob) eseguono lo stesso programma, il SO tipico creerà una copia delle tabelle della pagina in modo che il programma non venga caricato due volte. Questi sono di sola lettura, quindi tutto è "buono". Se l'attaccante, Bob, può determinare quali linee di cache della memoria condivisa si trovano nella cache L3 per un periodo di tempo, può probabilmente determinare quali linee della cache il processo di Alice accede agli straordinari. Questo può essere fatto con il Flush Reload eliminando la cache e calcolando il tempo necessario per leggere la cache. Molto veloce = Alice sta accedendo a questo pezzo di memoria. Lenta = Alice non sta accedendo a questo pezzo di memoria. Bob continua a fare questo straordinario per sviluppare una "linea di base" di sorta. Spero che la maggior parte della mia comprensione sia corretta.
Ho letto come questo può essere usato per programmi che hanno input da parte dell'utente. Bob esegue l'attacco su se stesso con molti input e calcola il tempo in base all'aggiornamento della cache. Quindi esegue l'attacco su Alice e sostanzialmente confronta i risultati per distinguere gli input (alto livello ma questa non è la mia domanda).
La maggior parte delle mie conoscenze proviene da qui .
La mia domanda è: in che modo questo attacco è diverso da un attacco di forza bruta o anche da un attacco di temporizzazione nel contesto dell'input dell'utente?