И тут на сцену выходит Side-Channel Attacks
фактически это использование особенностей микроархитектуры чтобы получить что-то что не очень предполагается
Tempest - читать электромагнитное излучение чтобы получить какие-то данные
Разница во времени доступа - показывает где данные
в x86 - clflush который позволяет гарантировать что часть данных не в кэше
и делая cflush можно сказать что данные были в кэше
пример:
time = rdtsc(); // чтение счетчика
maccess(&data[0x300]) //
delta = rdtsc() - time
и можно сказать были ли данные по адресу в кше
ЧТобы понять - поговорим про предсказание ветвлений
может встретится место в виде:
if (raining) { take_umbrella(); } else { do_something_else(); };
if (raining) { take_umbrella(); } else { do_something_else(); };
а можно попытаться предсказать куда мы пойдем дальше