Jump to content
Sign in to follow this  
BBC

Intel дисквалифицирован из-за Мельдония.

Recommended Posts

Дружище, прочитай внимательно то, как работают эти механизмы. Там всё довольно прозрачно и понятно расписано. Я могу тебе сэкономить время и объяснить финальную часть алгоритма, то, о чём мы здесь говорим.

 

Всё предельно просто. Мы, в нашем выделенном массиве, последовательно читаем по одному значению из блока, замеряя при этом время доступа к этой ячейке. Используем для этого rdtsc, которая возвращает нам кол-во тактов прошедших с момента сброса проца, читаем перед чтением значения и после, определяем разницу. Полученную разницу запоминаем. Так мы просматриваем все 256 блоков и тот, для которого время доступа будет минимальным, и будет искомый блок. Его номер будет значением, которое находилось по адресу который нас интересует. :)  Специально подчеркну, это финальная часть алгоритма, то место, где мы и находим уже запрошенное ранее значение.

 

У тебя, дружище, всё с ног на голову переставлено, ты сильно спешишь и по этому не понял каким образом это всё реализуется. Почему мы используем блоки в массиве и почему нам достаточно обращаться только к одной (произвольной внутри блока, попрошу заметить! :) ) ячейке внутри массива предлагаю тебе разобраться самостоятельно. Это несколько расширит твой кругозор. :)

 

Удачи!

Edited by NB79

Share this post


Link to post
Share on other sites

Да, но речь о том, что с помощью этого механизма всего-лишь определяется попадание в кэш и только. И собственно самый важный кусок - а как кэш вообще изменялся и почему.

 

Тогда как атаки по времени основаны не на "высчитывании, попали мы в кэш или нет" - а на основе подсчета времени, необходимое процессору для выполнения определенных действий.

Кроме того, сами авторы относят уязвимость к cache-side attack - а не ко временной. И они абсолютно правы: основа атаки - проверка состояния кэша процессора после их действий (или точнее после спекулятивного выполнения их команд процессором). Без этой проверки ничего не получится, собственно. И если ты не знаешь, как воздействовали на кэш (а, собственно, именно ты на него и воздействуешь) - то по времени обращения к кэшу ты ничего не восстановишь. Тут важно отличить попадание в кэш и все - а не сколько именно времени это занимает.

А отличить не так уж и сложно, обычно время на порядок отличается от доступа к памяти.

 

 

И нет никакого смысла смотреть "только финальную часть" - все самое важное произошло до этого. Кэш изменился не просто так - а потому что процессор выполнил ветвь команды и только потом понял, что ее выполнять не надо.

 

И если ты будешь читать кэш иным методом (смотреть оптическим или электрическим способом состояние ячеек) - ты получишь все ровно тоже самое не приплетая вообще слово "время".

Еще раз: основа атаки в том, что выполняя "ненужную" команду, ожидая проверки ветвления - меняется кэш и на основании информации, что именно попало в кэш - можно сказать о выполненной "ненужной" команде (прочитанных защищенных байтах). Как читать кэш - перебирать ли все переменные и смотреть время доступа к ним или читать ячейки напрямую оптически - абсолютно не важно. Атака уже произошла, надо просто взять данные.

Edited by DeadlyMercury

Share this post


Link to post
Share on other sites

Я так понимаю, что ты подобное не писал, теоретик. По этому - откланиваюсь и желаю тебе удачи в изучении теории! Ну и потом - удачных практических реализаций твоих фантазий (в хорошем смысле этого слова). ;)

Share this post


Link to post
Share on other sites

При чем тут "теоретик"? Вы в корне не правы, обзывая spectre и meltdown "атакой по времени".

Атака по времени базируется на вычислении производимых логических операций на основе их длительности. А мы в данном случае вычисляем не операции - а состояние кэша, да еще и после, собственно, атаки. И которое можем вычислять и иными методами.

 

В свою очередь атаки через кэш базируются на изменении кэша и попадании или не попадании туда. В том же meltdown достаточно двух переменных и в зависимости от читаемого бита мы попадаем либо в адрес первой, либо в адрес второй, а потом просто посмотрев, какая из переменных попала в кэш - восстанавливаем значение бита. Причем нам не важно в общем-то как именно смотреть - может, у нас вообще есть возможность читать кэш на лету, обладая физическим доступом к нему. Оценка времени доступа - это всего-лишь программный метод чтения состояния кэша.

Хотя я первоначально думал, что суть атаки состоит в записи значения защищенного бита в переменную юзера.

 

Ну и самое главное - как классифицируют сами атаки их исследователи: они четко относят их к cache attack.

Edited by DeadlyMercury

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...