Аппаратные трояны для процессоров Intel — первая практическая реализация Андрей Васильков
Аппаратные трояны для процессоров Intel — первая практическая реализация
Андрей Васильков
Опубликовано 19 сентября 2013
Восемь лет назад Министерство обороны США публично выразило обеспокоенность тем, что при достаточном техническом уровне противника существует опасность выполнения им скрытой модификации любого чипа. Изменённый чип станет работать в критических узлах, а внедрённый «троянский конь» или «аппаратная закладка» будут оставаться незамеченными, подрывая обороноспособность страны на самом фундаментальном уровне. Долгое время такая угроза оставалась гипотетической, однако международная группа исследователей недавно смогла реализовать её на физическом уровне.
Георг Беккер (Georg T. Becker) из университета штата Массачусетс вместе с коллегами из Швейцарии и Германии в рамках доказательства концепции создал две версии «трояна аппаратного уровня», нарушающего работу генератора (псевдо)случайных чисел (ГПСЧ) в криптографическом блоке процессоров Intel архитектуры Ivy Bridge. Создаваемые с помощью изменённого ГПСЧ криптографические ключи для любой системы шифрования окажутся легко предсказуемыми.
Троян аппаратного уровня занимает ничтожно малую часть даже на отдельных элементах логической схемы (изображение: Georg T. Becker et al.).
Наличие аппаратной закладки никак не определяется ни специально разработанными для этого встроенными тестами, ни при внешнем осмотре процессора. Как же такое могло произойти? Для ответа на этот вопрос необходимо вернуться к истории появления аппаратного ГПСЧ и ознакомиться с базовыми принципами его работы.
При создании криптографических систем требуется устранить возможность быстрого подбора ключей. Их длина и мера непредсказуемости непосредственно влияют на число вариантов, которые пришлось бы перебрать атакующей стороне. Длину можно задать прямо, а вот добиться уникальности вариантов ключей и их равной вероятности гораздо сложнее. Для этого во время создания ключей используют случайные числа.
В настоящее время принято считать, что за счёт только программных алгоритмов нельзя получить истинно случайный поток чисел с их равномерным хаотическим распределением по всему указанному множеству. Они всегда будут иметь большую частоту встречаемости в каких-то частях диапазона и оставаться до некоторой степени предсказуемыми. Поэтому большинство применяемых на практике генераторов чисел следует воспринимать как псевдослучайные. Они редко оказываются достаточно надёжными в криптографическом смысле.
Для снижения эффекта предсказуемости любому генератору чисел требуется надёжный источник случайного начального заполнения — random seed. Обычно в качестве него используются результаты измерений каких-то хаотических физических процессов. Например, флуктуации интенсивности световых колебаний или регистрация радиочастотного шума. Такой элемент случайности (да и весь аппаратный ГПСЧ) было бы технически удобно использовать в компактном варианте, а в идеале — сделать встроенным.
Компания Intel встраивает генераторы (псевдо)случайных чисел в свои чипы начиная с конца девяностых. Раньше их природа была аналоговой. Случайные значения на выходе получались за счёт влияния трудно прогнозируемых физических процессов — тепловых шумов и электромагнитных помех. Аналоговые генераторы было сравнительно просто реализовать в виде отдельных блоков, но трудно интегрировать в новые схемы. По мере уменьшения технологического процесса требовались новые и длительные этапы калибровки. К тому же закономерное снижение напряжение питания ухудшало соотношение сигнал/шум в таких системах. ГПСЧ работали постоянно и потребляли значительное количество энергии, а скорость их работы оставляла желать лучшего. Эти недостатки накладывали ограничения на возможные сферы применения.
Идея генератора (псевдо)случайных чисел с полностью цифровой природой долгое время казалась странной, если не абсурдной. Ведь состояние любой цифровой схемы всегда жёстко детерминировано и предсказуемо. Как внести в неё необходимый элемент случайности, если нет аналоговых компонентов?
Попытки получить желанный хаос на базе только цифровых элементов предпринимались инженерами Intel с 2008 года и увенчались успехом через пару лет изысканий. Работа была представлена в 2010 году на летнем симпозиуме VLSI в Гонолулу и произвела маленькую революцию в современной криптографии. Впервые полностью цифровой, быстрый и энергоэффективный ГПСЧ был реализован в серийно выпускаемых процессорах общего назначения.
Процессор Сore i7-3770K архитектуры Ivy Bridge со встроенным генератором (псевдо)случайных чисел (фото: thg.ru).
Его первое рабочее название было Bull Mountain. Затем его переименовали в Secure Key. Этот криптографический блок состоит из трёх базовых модулей. Первый генерирует поток случайных битов с относительно медленной скоростью — 3 Гбит/с. Второй оценивает их дисперсию и объединяет в блоки по 256 бит, которые используются как источники случайного начального заполнения. После ряда математических процедур в третьем блоке с более высокой скоростью генерируется поток случайных чисел длиной 128 бит. На их основе с помощью новой инструкции RdRand при необходимости создаются и помещаются в специально отведённый регистр случайные числа требуемой длины: 16, 32 или 64 бита, которые в итоге и передаются запросившей их программе.
Ошибки в генераторах (псевдо)случайных чисел и их злонамеренные модификации стали причиной утраты доверия к популярным криптографическим продуктам и самой процедуре их сертификации.
По причине исключительной важности ГПСЧ для любой криптографической системы в Secure Key были встроены тесты для проверки качества генерируемых случайных чисел, а для сертификации привлекли ведущие экспертные группы. Весь блок соответствует критериям стандартов ANSI X9.82 и NIST SP 800-90. Вдобавок он сертифицирован на уровень 2 в соответствии с требованиями NIST FIPS 140-2.
Как мы увидим дальше, ни ответственный подход при разработке, ни расширенная сертификация не защитили криптографический блок от реальной возможности скрытой и недетектируемой модификации.
До сих пор большинство работ об аппаратных троянах носило гипотетический характер. Исследователями предлагались добавочные конструкции из небольших логических цепей, которые следовало каким-то образом добавить в существующие чипы. Например, Сэмюэл Талмадж Кинг (Samuel Talmadge King) с соавторами представил на конференции LEET-08 вариант такого аппаратного трояна для центрального процессора, который предоставлял бы полный контроль над системой удалённому атакующему. Просто отправив сконфигурированный определённым образом UDP-пакет, можно было бы сделать любые изменения на таком компьютере и получить неограниченный доступ к его памяти. Однако дополнительные логические цепи сравнительно просто определить при микроскопии, не говоря уже о специализированных методах поиска таких модификаций. Группа Беккера пошла другим путём:
Вместо того чтобы подключать к чипу дополнительную схему, мы внедрили наши закладки аппаратного уровня, просто изменив работу некоторых уже имеющихся в нём микротранзисторов. После ряда попыток нам удалось выборочно изменить полярность допанта и внести желаемые модификации в работу всего криптографического блока. Поэтому наше семейство троянов оказалось стойко к большинству методов обнаружения, включая сканирующую микроскопию и сравнение с эталонными чипами».
Преобразователь состоит из p- и n-канального МОП-транзисторов (вверху и внизу рисунка соответственно), соединённых стоками через металлический слой (а). Троян внедряется путём выборочного изменения полярности допанта p-канального МОП-транзистора. Вывод на положительном контакте (VDD) оказывается постоянным и не зависит от исходных случайных чисел (изображение: Georg T. Becker et al.).
В результате проделанной работы вместо уникальных чисел длиной 128 бит третий блок Secure Key стал накапливать последовательности, в которых различались только 32 бита. Создаваемые на основе таких псевдослучайных чисел криптографические ключи обладают очень высокой предсказуемостью и могут быть вскрыты в течение нескольких минут на обычном домашнем компьютере.
Лежащее в основе аппаратной закладки выборочное изменение удельной электрической проводимости было реализовано в двух вариантах:
цифровая пост-обработка сигналов от Intel Secure Key;
Последний метод более универсален и может применяться с небольшими изменениями на других чипах.
Возможность использовать встроенный ГПСЧ через инструкцию RdRand впервые появилась в процессорах Intel архитектуры Ivy Bridge. Компания Intel написала подробные руководства для программистов. В них рассказано о методах оптимальной реализации криптографических алгоритмов и даётся ссылка на описание принципов работы Secure Key. Долгое время усилия экспертов по безопасности были направлены на поиск уязвимостей в программной части. Пожалуй, впервые скрытое вмешательство на аппаратном уровне оказалось куда более опасной и вполне реализуемой на практике технологией.
К оглавлению