В чем уникальность атаки Hertzbleed?

Простыми словами объясняем одно из самых сложных исследований в сфере информационной безопасности за последнее время.

Hertzbleed простыми словами

В июне исследователи из трех американских университетов опубликовали работу, в которой описали практическую атаку с использованием возможности изменять частоту процессора в зависимости от нагрузки (стандартного поведения современных CPU). Частота работы процессоров измеряется в мегагерцах, соответственно и атаку назвали Hertzbleed, намекая на то, что изменение этой самой частоты приводит к утечке данных.

Эту атаку можно классифицировать как «аппаратную», то есть использующую уязвимости или особенности работы железа. Таких атак много, но почти все они требуют непосредственного доступа к компьютеру или даже к конкретной микросхеме. Но Hertzbleed может работать и удаленно!

Это очень интересное исследование, и его суть можно кратко передать в самых простых терминах. Но для хотя бы понимания деталей работы потребуется несколько дополнительных вводных. Так что мы решили опубликовать оба варианта: самое простое объяснение Hertzbleed и чуточку более сложное, но все равно без заумных графиков и вычислений.

Как сейчас принято, у Hertzbleed есть свой сайт и логотип. На логотипе условно отражена суть уязвимости: изменения частоты приводят к утечкам.

Как сейчас принято, у Hertzbleed есть свой сайт и логотип. На логотипе условно отражена суть уязвимости: изменения частоты приводят к утечкам. Источник.

Простое объяснение

Все современные процессоры для экономии электроэнергии не работают постоянно на одной и той же частоте. Вместо этого частота (а также напряжение питания процессора) подстраивается автоматически, в зависимости от нагрузки. Если задач мало, частота процессора может быть очень низкой, например 900 мегагерц вместо штатных 3,2 гигагерца. Если задач много, на короткое время частота одного или всех ядер процессора может быть поднята выше «базовой». Нагрузка (количество задач, их сложность) — не единственный критерий для изменения частоты. В частности, она может быть понижена в случае перегрева процессора.

Исследователи смогли воспользоваться этой штатной функциональностью, чтобы измерять состояние процессора во время выполнения программы для шифрования данных, а через это — красть секретную информацию. Они нашли особенность современного алгоритма шифрования, которая «заставляет» процессор повышать частоту во время обработки определенных данных. Так как частота повышается, данные обрабатываются быстрее, ответ на запрос от атакуемого компьютера также приходит раньше. Измеряя время отклика, исследователи смогли реконструировать секретный ключ шифрования. С этим ключом они теоретически могут перехватывать и расшифровать данные, которыми атакуемая система обменивается, например, с другими компьютерами в виртуальной частной сети. И все это — без возможности даже зафиксировать «кражу» ключа.

Атака Hertzbleed развивает идеи аппаратных атак с использованием так называемых сторонних каналов. Но делает это так, что украсть данные теоретически можно даже удаленно, отправляя потенциальной жертве запросы по сети. Это пока чисто теоретическое упражнение в поиске сложных уязвимостей в современных процессорах. Но вполне возможно, что в будущем атаку удастся «упростить».

Немного более сложное объяснение

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

Сторонние каналы могут быть не только «железными», но и программными. Известное исследование SPECTRE использует такой сторонний канал непосредственно в процессоре, эксплуатируя особенности спекулятивного выполнения инструкций для кражи секретной информации. Более того, иногда для наблюдения за потреблением электроэнергии процессором нам не обязательно подключать к компьютеру вольтметр, он часто бывает встроен! С использованием системы, отслеживающей среднее энергопотребление процессоров Intel, ранее уже была разработана атака, родственная Hertzbleed.

Теперь давайте разберемся с динамической подстройкой частоты процессора. Она становится возможной благодаря технике DVFS — Dynamic Voltage and Frequency Scaling. Действительно, вместе с частотой меняется и напряжение питания процессора, чтобы обеспечить оптимальные условия работы (низкое энергопотребление при малой нагрузке, стабильность работы на максимуме возможностей). Исследователи достаточно подробно описывают, как проводили большой объем экспериментов с DVFS на процессорах Intel (сама Intel называет данную технологию Turbo Boost). Нагружали процессор какой-то тривиальной нагрузкой (условно, арифметическими вычислениями) и смотрели, как изменяется частота процессора. Они нашли несколько закономерностей: если максимально упростить, при одном наборе данных для вычислений частота процессора склонна повышаться, а при другом нет. Повышение частоты приводит к ускорению вычислений, и, соответственно, раньше будет получен результат.

Перейдем к третьему важному для этой истории термину: constant-time programming или программирование с постоянным временем, затрачиваемым на подсчет результата. Этот момент важен для реализации алгоритма шифрования в виде программы. Предположим, у нас есть программа, которой на вход дается определенная фраза, а на выходе должна получиться она же, но зашифрованная. При этом вводить данные мы можем, а секретный ключ шифрования не знаем, но пытаемся установить, просто наблюдая за временем выполнения, поскольку время выполнения функции зависит от вводных данных. Можно сравнить это с попыткой взломать сейф с секретным цифровым кодом, который немного иначе реагирует на последовательности цифр, близкие к настоящему коду, давая нам таким образом подсказки вида «тепло» и «холодно». В большинстве программ, где реализованы алгоритмы шифрования, используется защитный механизм, предотвращающий попытки узнать ключ таким способом, — тот самый принцип constant-time programming.

Самый главный результат исследования Hertzbleed: его авторам удалось показать, что динамическая подстройка частоты процессора ломает принцип constant-time programming, неизменности времени, при шифровании. Они показали, как именно можно этим воспользоваться. На систему с реально используемым ПО для шифрования данных отправляли какую-то последовательность символов, которые программа пыталась дешифровать. Вводные подбираются так, чтобы создать условия, позволяющие атакующему реконструировать ключ шифрования. Причем ключ «вытаскивается» по стороннему каналу — то есть утечка данных происходит из-за изменения частоты процессора, а соответственно времени исполнения программы и времени ответа на запрос атакующего.

Отсутствующие последствия

В нашем «чуть более сложном» описании работы Hertzbleed мы покрыли примерно 0,05% реальной информации из работы исследователей. Там очень много других нюансов, которые на самом деле тоже важны для ее понимания. Например, что использовалась особенность алгоритма энкапсуляции ключей SIKE — именно она создавала условия, когда утечка через «время отклика» или «повышение частоты процессора» становилась возможной. Это похоже на упомянутую атаку SPECTRE: там для успешной кражи каких-то важных данных в атакуемом ПО должны быть созданы особые условия. Строго говоря, по итогам изучения нельзя однозначно сказать, где уязвимость-то — в процессоре или все же в программе.

Ну и давайте поговорим про очевидные «тонкости реализации»: исследователи хоть и показали практическую атаку, но проводили ее в контролируемых условиях. Изменение времени отклика в зависимости от вводных у них всегда было постоянным. А что если на процессоре в это время выполняются другие задачи, которые тоже влияют на время отклика, делают данные более зашумленными? И наконец, даже при таких идеальных обстоятельствах реконструкция ключа шифрования заняла (в двух разных экспериментах) 36 и 89 часов! В течение этого времени к криптографической программе направлялись тысячи запросов в секунду, и только так можно было обеспечить совпадение всех необходимых особенностей работы софта и железа для организации утечки. Это попросту очень долго!

Поэтому и реакция на исследование произошла двоякая. С одной стороны, уязвимости присвоили обычные идентификаторы CVE-2022-23823 для Intel и CVE-2022-24436 для AMD. Казалось бы, проблема все же в процессорах. Но компании Intel и AMD сообщили, что не планируют выпускать какие-либо обновления для подверженных систем (у Intel это процессоры с 8-го по 11-е поколение). Собственно изменение алгоритма SIKE сделало показанную атаку невозможной. Компании Microsoft и Cloudflare, использующие SIKE в качестве одного из элементов в своих системах шифрования, внесли обновления в собственное ПО.

Тем не менее исследование представляет большую важность. Как и SPECTRE в 2018 году, оно будет не последним в этом новом классе атак. Если удалось показать один пример утечки данных через динамическую подстройку частоты процессора, то наверняка удастся найти и другие. Это также важная работа для криптографов. SIKE — это достаточно свежий алгоритм, один из кандидатов на звание «решения для пост-квантовой криптографии». Он вообще-то подробно исследовался на уязвимость к любым атакам по сторонним каналам и должен был быть достаточно надежным. А в работе Hertzbleed показали, что есть новые варианты.

В общем, как это часто бывает с такими научными работами, атаку придумали раньше, чем оказалось возможным ее применение. Разработчики процессоров и особо чувствительных к взлому программ сделают выводы и внесут изменения до того, как появится способ реально что-то украсть. Но есть маленькая вероятность, что в следующий подход эти или другие исследователи найдут что-то, что позволяет, например, перехватывать зашифрованный сетевой трафик и взламывать шифрование, оставаясь при этом неопознанным. А что, можно слегка пофантазировать и «раздуть» показанный в работе сценарий до такого. Но это еще доказать надо, и исследование Hertzbleed (а также наши затруднения с его описанием простыми словами) показывает, что это нелегкая задача. Для уязвимостей класса Spectre за четыре с лишним года ничего такого «прорывного» показать не удалось. Вот и здесь, скорее всего, будет так же: еще через год выйдет работа, которая немного разовьет и уточнит предыдущую. И хорошо, нам в целом и существующих проблем с информационной безопасностью вполне хватает!

Советы