SleepWalk: сложная атака с кражей ключей шифрования

Теоретическая атака, которая позволила исследователям похитить секретный ключ для доступа к данным, наблюдая за стандартным поведением процессора и ОС.

SleepWalk: сложная атака с кражей ключей шифрования

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

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

Необходимые вводные: атаки по сторонним каналам

SleepWalk относится к классу атак по сторонним каналам. Под «сторонним каналом» обычно понимается любой способ похитить секретную информацию, используя непрямое наблюдение. Например, представим, что вы не можете наблюдать за человеком, который набирает на клавиатуре пароль, но можете подслушивать. Это реалистичная атака, в которой сторонним каналом выступает звук нажатия на клавиши, — он выдает, какие именно буквы и символы были набраны. Классическим сторонним каналом является наблюдение за изменением энергопотребления вычислительной системы.

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

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

График изменения напряжения

График изменения напряжения во время переключения контекста центрального процессора. Источник

Переключение контекста

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

Как выяснилось, характер этого скачка зависит как от выполняемой до этого задачи, так и от обрабатываемых данных. По сути, исследователи смогли значительно упростить процесс атаки по стороннему каналу с измерением энергопотребления системы. Вместо измерений в течение длительного периода анализируется один всплеск в заранее известное время. Это позволяет получить косвенные данные сразу двух типов: что за программа выполнялась до переключения и какие при этом обрабатывались данные. Осталось приставить эту атаку к делу вот по такой схеме:

Общая схема атаки SleepWalk

Общая схема атаки SleepWalk. Источник

Реалистичность атаки SleepWalk

Исследователи проводили эксперименты на одноплатном компьютере Raspberry Pi 4. На нем сначала было показано, что разные вычислительные задачи дают уникальную характеристику того самого всплеска электроэнергии при переключении контекста. Представим, что на этом компьютере выполняется шифрование данных. Мы можем подавать на вход алгоритма шифрования любой текст, но не знаем ключ, с помощью которого данные шифруются.

Что, если вызвать переключение контекста в определенный момент работы алгоритма шифрования? Операционная система начнет сохранять состояние программы, произойдет скачок энергопотребления. С помощью осциллографа исследователи измеряли характер этого скачка много раз подряд. И в результате смогли извлечь секретный ключ!

На самом деле в реальном эксперименте было очень много важных особенностей. Полностью реконструировать приватный ключ удалось для алгоритма шифрования SIKE. Это достаточно свежий алгоритм, предложенный на замену традиционным алгоритмам, чтобы защитить данные даже в случае появления квантовых компьютеров. Несмотря на кажущуюся инновационность, этот алгоритм уже признан недостаточно надежным. Более того, для извлечения секретного ключа авторы исследования воспользовались не только атакой SleepWalk, но и одной из слабых сторон самого алгоритма.

Традиционный и надежный (но не постквантовый) алгоритм AES-128 атака SleepWalk до конца взломать не смогла. Исследователи смогли реконструировать 10 из 16 байт секретного ключа. Впрочем, это уже само по себе может считаться достижением, так как по сравнению с другими методами атак по сторонним каналам SleepWalk оказывается несколько проще.

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

В итоге такая работа помогает делать существующие и разрабатываемые алгоритмы шифрования чуть более надежными. У атаки SleepWalk есть еще одна особенность: она косвенно указывает на важный момент при реализации криптографических систем. Внедрять алгоритмы, стойкие к анализу с помощью квантовых вычислений (так называемую постквантовую криптографию), важно, но не менее важно делать это правильно. Иначе новый, по идее, более стойкий алгоритм может оказаться более уязвимым к традиционным атакам, чем проверенный временем.

Советы

Как отключить слежку в iOS?

У вас есть iPhone, iPad или iPod? Потратьте несколько минут на настройку служб геолокации, чтобы сэкономить заряд батареи и сохранить конфиденциальность перемещений.