Sever & DeepLoop
Sever Sever
Я тут изучал косвенные утечки в квантовом обмене ключами, и мне кажется, я нашел тонкий тайминговый цикл, который мы можем использовать, пока другие не заметили. Как считаешь?
DeepLoop DeepLoop
Кажется, классическая ситуация – замкнутый круг. Где у тебя точка отсчёта по времени, и как ты собираешься отделить её от помех? Давай сначала схему причинно-следственной связи набросаем; там, где предположения, там и подвох.
Sever Sever
1. Протокол использует экспоненцирование по модулю, а счётчик цикла виден в конвейере процессора. 2. Каждая итерация занимает немного разное время из-за предсказания переходов и состояния кэша. 3. Наблюдатель снаружи может отправить поток пакетов и измерить задержку отклика с часами с разрешением в наносекунду. 4. Отправляя множество пакетов с немного отличающимися ключами, злоумышленник получает набор данных о времени выполнения, которые коррелируют со значением счётчика цикла. 5. Примени фильтр нижних частот к данным о времени выполнения, чтобы уменьшить случайные колебания, а затем проведи простой линейный регрессионный анализ для сопоставления смещений во времени с конкретными значениями счётчика цикла. 6. После установления сопоставления, злоумышленник может восстановить биты секретного ключа, наблюдая за счётчиком цикла в реальном времени. Ключевым моментом является небольшая задержка, вносимая предсказателем переходов; шум изолируется путем поддержания постоянной тактовой частоты системы и температуры, а также использованием высокочастотного счетчика времени.
DeepLoop DeepLoop
Кажется, классическая утечка по таймингам через канал уязвимости, но эти, казалось бы, "незначительные" задержки предсказателя ветвлений обычно влияют на всю цепочку конвейера. Есть несколько моментов, которые стоит перепроверить: 1) процессор сбрасывает конвейер на каждый пакет, или состояние переносится между последовательностями? 2) насколько линейна зависимость между количеством итераций цикла и задержкой, когда строки кэша находятся в разных состояниях? 3) фильтр нижних частот заглушит именно те помехи, которые тебе нужны, чтобы выявить эффект предсказателя. Попробуй, может, дифференциальные измерения – отправь два пакета подряд с одинаковой полезной нагрузкой, но с разными секретными частями, это должно убрать много постоянного шума. И еще, линейная регрессия на нелинейном процессе может дать искаженную оценку наклона. В общем, план хороший, но все нюансы будут скрываться в этих кратковременных колебаниях таймингов, которые замаскирует твой фильтр. Удачи, и продолжай присылать логи отладки.
Sever Sever
Вот перевод: 1. Процессор не сбрасывает конвейер после каждого пакета – состояние сохраняется между очередями, это важно учитывать. 2. Кривая задержки цикла выглядит как ломаная линия, но наклон резко меняется, когда строка кэша переходит из L1 в L2. 3. Дифференциальное измерение – лучший вариант; вычитая два последовательных временных штампа, ты убираешь большую часть постоянной временной задержки. Запущу короткий скрипт, который будет отправлять два пакета с отличающимся только секретным байтом и записывать необработанные временные метки. Так я смогу выявить колебания предсказателя и построить ломаную модель вместо одной прямой. Сохраняй логи; даже микросекунда отклонения имеет значение.
DeepLoop DeepLoop
Круто. Только аккуратнее с дифференциалом, не заглушишь тонкий сигнал предсказателя – иногда само вычитание вносит новые помехи. Следи за скачками наклонности, когда кэш перемещается; вот где настоящая опора. И не забудь проверить модель на свежих данных – кривая может сместиться, если часы сгорят. Удачи, и фиксируй эти микросекунды.
Sever Sever
Понял. Буду фиксировать необработанные метки времени, а потом аккуратно посчитаю разницу, чтобы не добавить лишнего джиттера. Проверю изменения наклона на границах кэша и проведу свежую проверку на новой порции пакетов – чтобы модель была стабильной. Сейчас всё логирую.
DeepLoop DeepLoop
Выглядит как неплохая процедура анализа сети. Следи за порядком в логах и помни: первые ошибки обычно показывают, где настоящая граница. Удачи, и пусть твои производные не преподносят тебе новых сюрпризов.
Sever Sever
Спасибо. Я слежу за чистотой логов и внимательно наблюдаю за проблемными элементами. Если дифференциал начнет вести себя странно, я еще раз перепроверю этап вычитания. Удачи нам обоим.