Леннарт Поттеринг (Lennart Poettering) опубликовал предложение по модернизации процесса загрузки Linux-дистрибутивов, нацеленное на решение имеющихся проблем и упрощение организации полноценной верифицированной загрузки, подтверждающей достоверность ядра и базового системного окружения. Необходимые для применения новой архитектуры изменения уже включены в кодовую базу systemd и затрагивают такие компоненты, как systemd-stub, systemd-measure, systemd-cryptenroll, systemd-cryptsetup, systemd-pcrphase и systemd-creds.
Предложенные изменения сводятся к созданию единого универсального образа UKI (Unified Kernel Image), объединяющего образ ядра Linux, обработчик для загрузки ядра из UEFI (UEFI boot stub) и загружаемое в память системное окружение initrd, применяемое для начальной инициализации на стадии до монтирования корневой ФС. Вместо образа RAM-диска initrd в UKI может быть упакована и вся система, что позволяет создавать полностью верифицированные системные окружения, загружаемые в оперативную память. UKI-образ оформляется в виде исполняемого файла в формате PE, который может быть загружен не только при помощи традиционных загрузчиков, и напрямую вызван из прошивки UEFI.
Возможность вызова из UEFI позволяет использовать проверку целостности и достоверности по цифровой подписи, охватывающую не только ядро, но и содержимое initrd. При этом поддержка вызова из традиционных загрузчиков позволяет сохранить такие возможности, как поставка нескольких версий ядра и автоматический откат на рабочее ядро в случае выявления проблем с новым ядром после установки обновления.
В настоящее время в большинстве дистрибутивов Linux в процессе инициализации используется цепочка "прошивка → заверенная цифровой подписью Microsoft shim-прослойка → заверенный цифровой подписью дистрибутива загрузчик GRUB → заверенное цифровой подписью дистрибутива ядро Linux → не заверенное окружение initrd → корневая ФС". Отсутствие верификации initrd в традиционных дистрибутивах создаёт проблемы с безопасностью, так как среди прочего в данном окружении осуществляется извлечение ключей для расшифровки корневой ФС.
Верификация образа initrd не поддерживается так как данный файл формируется на локальной системе пользователя и не может быть заверен цифровой подписью дистрибутива, что сильно усложняет организацию проверки при использовании режима SecureBoot (для заверения initrd пользователю необходимо сгенерировать свои ключи и загрузить их в прошивку UEFI). Кроме того, существующая организация загрузки не позволяет применять информацию из регистров TPM PCR (Platform Configuration Register) для контроля целостности компонентов пространства пользователя, помимо shim, grub и ядра.Из имеющихся проблем также упоминается усложнение обновления загрузчика и отсутствие возможности ограничения доступа к ключам в TPM для старых версий ОС, ставших неактуальными после установки обновления.
Основные цели внедрения новой архитектуры загрузки:
- Предоставление полностью верифицированного процесса загрузки, охватывающего все этапы от прошивки до пространства пользователя, и подтверждающего достоверность и целостность загружаемых компонентов.
- Привязка контролируемых ресурсов к регистрам TPM PCR с разделением по владельцам.
- Возможность предварительного расчёта значений PCR на основе используемых при загрузке ядра, initrd, конфигурации и локального идентификатора системы.
- Защита от Rollback-атак, связанных с откатом на прошлую уязвимую версию системы.
- Упрощение и повышение надёжности обновлений.
- Поддержка обновлений ОС, не требующих повторного применения или локальной подготовки ресурсов, защищённых TPM.
- Готовность системы для проведения удалённой аттестации для подтверждения корректности загружаемой ОС и настроек.
- Возможность прикрепления конфиденциальных данных к определённым стадиям загрузки, например, извлечение из TPM ключей шифрования для корневой ФС.
- Предоставление безопасного, автоматического и работающего без участия пользователя процесса разблокировки ключей для расшифровки диска с корневым разделом.
- Использование чипов, поддерживающих спецификацию TPM 2.0, с возможностью отката на системы без TPM.
// cc-by opennet.ru
// converted with crypt’s opennet autoreposter
>>> Подробности