Информация об изменениях

Сообщение Re[10]: Meltdown and Spectre от 07.01.2018 7:23

Изменено 07.01.2018 7:33 Cyberax

Re[10]: Meltdown and Spectre
Здравствуйте, ononim, Вы писали:

C>>Ну хорошо, пусть будет явный барьер в виде инструкции. Смысл не меняется.

O>Меняется. Эта инструкция форсит синхронизацию кэша и памяти. То есть ее исполнение в бэкграунде просто ломает атаку, которая основана на том что время доступа к кэшу != время доступа к памяти.
Обычный барьер не очищает L1-кэш. Он лишь форсирует его синхронизацию.

C>>Я могу повторять пробу много раз, так что статистически даже намного менее точный таймер будет достаточен.

O>Ты можешь повторять пробу бесконечное количество раз, но если результат операций меньше разрешения таймера — усреднив свою статистику ты просто получишь значение разрешния таймера и не более того.
Неверно.

O>Давай более приближенный к жизни пример. Вот у тебя есть команда ping, и так повелось, что она умеет выдавать результат с точностью до 10 мсек. Как ты с нее помощью определишь какой из двух хостов к тебе ближе, учитывая что round-trip-time до одного из них — 1мсек, до другого — 2мсек?

Элементарно. От одного из хостов отсчёты менее 10 мсек будут приходить чаще, чем от другого.

Подумай сам:
 Time: [ 1 2 3 4 5 6 7 8 9 10 ] [ 1 2 3 4 5 6 7 8 9 10 ]
             ping start -> *      * <- ping end

Далее собираем статистику и считаем какой хост чаще попадает в два отсчёта таймера.

Более того, даже если рандомизировать таймер, то всё равно в статистике это будет видно. Для того, чтобы победить атаку, таймер должен быть уж совсем неточный — в сотни раз, если не тысячи раз.

C>>Не требует, кроме питания. Остальное можно косвенно обнаружить.

O>Демагогия.. КРоме того атака на все остальное опять же требует точного измерения времени.
Тут вот ещё предложили атаковать сетевыми пакетами. Их точности тоже достаточно на скорости в 10Gb.

C>>Это невозможно. Проще перейти на in-order выполнение, да и быстрее оно будет, чем 100500 затычек.

O>Это возможно, и да, будет быстрее чем 10005000 затычек в виде KPTI, LFENCE тут и там и еще фиг знает чего.
KPTI сам по себе не нужен, он закрывает вполне конкретную дыру в Intel, которой нет в том же AMD.

Для защиты от SPECTRE добавляют новые инструкции и плугины к компиляторам, которые их автоматически могут вставлять. В более длительной переспективе, производители процессоров будут исправлять спекуляцию, чтобы она была не видна.
Re[10]: Meltdown and Spectre
Здравствуйте, ononim, Вы писали:

C>>Ну хорошо, пусть будет явный барьер в виде инструкции. Смысл не меняется.

O>Меняется. Эта инструкция форсит синхронизацию кэша и памяти. То есть ее исполнение в бэкграунде просто ломает атаку, которая основана на том что время доступа к кэшу != время доступа к памяти.
Обычный барьер не очищает L2-кэш. Он лишь форсирует его синхронизацию.

C>>Я могу повторять пробу много раз, так что статистически даже намного менее точный таймер будет достаточен.

O>Ты можешь повторять пробу бесконечное количество раз, но если результат операций меньше разрешения таймера — усреднив свою статистику ты просто получишь значение разрешния таймера и не более того.
Неверно.

O>Давай более приближенный к жизни пример. Вот у тебя есть команда ping, и так повелось, что она умеет выдавать результат с точностью до 10 мсек. Как ты с нее помощью определишь какой из двух хостов к тебе ближе, учитывая что round-trip-time до одного из них — 1мсек, до другого — 2мсек?

Элементарно. От одного из хостов отсчёты менее 10 мсек будут приходить чаще, чем от другого.

Подумай сам:
 Time: [ 1 2 3 4 5 6 7 8 9 10 ] [ 1 2 3 4 5 6 7 8 9 10 ]
             ping start -> *      * <- ping end

Далее собираем статистику и считаем какой хост чаще попадает в два отсчёта таймера.

Более того, даже если рандомизировать таймер, то всё равно в статистике это будет видно. Для того, чтобы победить атаку, таймер должен быть уж совсем неточный — в сотни раз, если не тысячи раз.

C>>Не требует, кроме питания. Остальное можно косвенно обнаружить.

O>Демагогия.. КРоме того атака на все остальное опять же требует точного измерения времени.
Тут вот ещё предложили атаковать сетевыми пакетами. Их точности тоже достаточно на скорости в 10Gb.

C>>Это невозможно. Проще перейти на in-order выполнение, да и быстрее оно будет, чем 100500 затычек.

O>Это возможно, и да, будет быстрее чем 10005000 затычек в виде KPTI, LFENCE тут и там и еще фиг знает чего.
KPTI сам по себе не нужен, он закрывает вполне конкретную дыру в Intel, которой нет в том же AMD.

Для защиты от SPECTRE добавляют новые инструкции и плугины к компиляторам, которые их автоматически могут вставлять. В более длительной переспективе, производители процессоров будут исправлять спекуляцию, чтобы она была не видна.