Предлагаю окунуться в дебри микроархитектуры компьютера и разобраться с тем, как работает одна из наиболее распространенных технологий обеспечения аппаратной целостности загрузки BIOS — Intel Boot Guard. В статье освещены предпосылки появления технологии, перечислены все режимы работы, а так же описан алгоритм каждого из них. Обо всем по порядку.
История и предпосылки создания
Процесс загрузки компьютера представляет собой цепочку событий, в которой управление исполнительной аппаратурой передается от звена к звену, начиная с нажатия пользователем кнопки включения и заканчивая работой приложения. Проблема заключается в том, что каждое из этих звеньев может быть взломано злоумышленником. Причем чем более раний компонент подвергается атаке, тем большую свободу действий получает правонарушитель. Известны случаи атак, при которых злоумышленник заменял BIOS или Boot loader на собственные, уязвимые и по сути превращал компьютер в "кирпич" (именно поэтому такой тип атак называется Bricking). В попытках защитить процесс загрузки компьютера были созданы многие программные средства проверки целостностности. Однако любая программа может быть успешно заменена правонарушителем, поэтому на нее невозможно полагаться на сто процентов. Отсюда и возникла необходимость создания более надежной, аппаратной технологии обеспечения целостности загрузки.
В качестве своего варианта обеспечения аппаратной защиты загрузки компьютера Intel в 2013 году встроила в новую микроархитектуру Haswell технологию Boot Guard. В процесс загрузки был добавлен аппаратный модуль аутентифицированного кода (ACM, Authenticated code module), а производителям оборудования пришлось расширить BIOS, добавив в него начальный блок загрузки (IBB, Initial boot block). С тех пор цепочка загрузки компьютера включает в себя ACM, с помощью которого проверяется IBB, после чего управление передается BIOS и так далее.
Режимы работы
Важной составляющей технологии Boot Guard является настройка ее работы. Производитель оборудования должен выбрать, какой режим работы активирован и какие действия стоит предпринимать в случае ошибки в ACM или IBB. Вся этак информация содержится в политиках загрузки, которые "зашиты" в аппаратуре.
Режимы работы Boot Guard можно классифицировать по корню доверия:
Измеренная загрузка (Measured boot) полагается на дополнительное устройство, встраиваемое производителем оборудования. Одним из возможных вариантов устройства является TPM (Trusted platform module) — криптопроцессор, в который предустановлены генератор случайных чисел, генератор ключей RSA, устройство хеширования и устройство RSA.
Проверенная загрузка (Verified boot) полагается на программируемые предохранители, которые являются частью аппаратуры компьютера. По своей сути, программируемый предохранитель — это ячейка, которая может находиться в двух состояниях: сожжена или не сожжена. Будучи сожженной, ячейка не может вернуться в исходное состояние. Таким образом можно кодировать информацию.
Измеренная загрузка
В памяти криптопроцессора TPM хранится эталон хеша начального блока загрузки (IBB), с помощью которого и производится проверка подлинности IBB. Алгоритм работы Boot Guard в режиме измеренной загрузки следующий:
Начальный блок загрузки записывается в память криптопроцессора TPM
Устройство хеширования криптопроцессора загружает записанный в памяти IBB
Устройство хеширования вычисляет хеш IBB
Хеш IBB записывается в память криптопроцессора
Производится сравнение между текущим хешем IBB и его эталоном
В случае совпадения состема помечается как надежная, иначе — как ненадежная
Проверенная загрузка
Схема работы Boot Guard в режиме измеренной загрузки выглядит несколько сложнее, поскольку помимо начального блока загрузки (IBB) и программируемых предохранителей в нее входят две дополнительные структуры: манифест IBB (IBBM) и манифест ключа. Манифест IBB включает в себя номер версии безопасности, хеш IBB, открытый ключ RSA, подпись RSA номера версии и хеша IBB. Манифест ключа включает в себя номер версии безопасности, хеш открытого ключа RSA манифеста IBB, открытый ключ RSA производителя оборудования, подпись RSA номера версии и хеша открытого ключа RSA манифеста IBB. В программируемых предохранителях записаны хеш открытого ключа RSA производителя и номера версий безопасности манифестов. Все вычисления и сравнения выполняются с помощью модуля аутентифицированного кода (ACM). Алгоритм работы Boot Guard в режиме проверенной загрузки следующий:
В ACM загружаются хеш открытого ключа RSA производителя и номера версий безопасности манифестов из программируемых предохранителей.
Проверяются номера версий безопасности манифестов. Если хотя бы один из номеров оказался меньше, то проверка завершается в соответствии с политиками загрузки. Если хотя бы один из номеров оказался больше, то соответствующее значение будет обновлено в программируемых предохранителях в конце проверки.
Вычисляется хеш открытого ключа RSA производителя и производится сравнение с соответствующим значением из программируемых предохранителей. В случае несовпадения проверка завершается в соответствии с политиками загрузки.
Проверяется подпись RSA в манифесте ключа. В случае несоответствия проверка завершается в соответствии с политиками загрузки.
Вычисляется хеш открытого ключа RSA манифеста IBB и производится сравнение с соответствующим значением из манифеста ключа. В случае несовпадения проверка завершается в соответствии с политиками загрузки.
Проверяется подпись RSA в манифесте IBB. В случае несоответствия проверка завершается в соответствии с политиками загрузки.
Вычисляется хеш IBB и производится сравнение с соответствующим значением из IBBM. В случае несовпадения проверка завершается в соответствии с политиками загрузки.
В случае необходимости номера версий безопасности манифестов обновляются в программируемых предохранителях путем сжигания дополнительного числа предохранителей.
Начальный блок загрузки успешно проверен и ему передается управление.
Заключение
В заключение хотелось бы добавить, что не смотря на всю прелесть и надежность Boot Guard, важно понимать, что настройка этой технологии доверена производителю оборудования. В 2017 году были обнаружены шесть моделей материнских плат, в которых Boot Guard была настроена некорректно и позволяла обойти проверку целостности BIOS. Берегите свои компьютеры и выбирайте надежного производителя оборудования!
При написании статьи была использована литература:
Ruan X. Platform Embedded Security Technology Revealed — Apress, Berkeley, CA, 2014. — С. 263 — ISBN 978-1-4302-6572-6