Что такое ключи обмена в BIOS и зачем они нужны

Key exchange keys в BIOS — это криптографические ключи, используемые для шифрования и защиты данных при обмене информации между аппаратным обеспечением и программным обеспечением на уровне BIOS. Эти ключи помогают обеспечить безопасную аутентификацию и предотвратить несанкционированный доступ к системным ресурсам и данным.

Правильная настройка и использование key exchange keys могут значительно повысить уровень безопасности компьютера, особенно в контексте защиты личной информации и конфиденциальных данных. В современных системах это может включать поддержку таких технологий, как TPM (Trusted Platform Module), обеспечивая таким образом надежный инструмент для управления криптографическими ключами.

Значение Secure Boot Keys в BIOS — всё, что нужно знать

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

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

Ключи Secure Boot представляют собой пары ключей, включающие открытый и закрытый ключи. Открытые ключи располагаются в специально отведенной области памяти BIOS и применяются для верификации электронной подписи загрузочных файлов. Закрытые ключи хранятся в секрете внутри BIOS и предназначены для генерации электронной подписи файлов, которую можно проверить с использованием открытого ключа.

Secure boot keys: что это в BIOS

В основе безопасной загрузки лежит использование криптографических ключей. Как правило, производители компьютеров загружают набор предустановленных ключей в BIOS, которые позволяют проверить подлинность системного файла загрузки. Это гарантирует, что загружаемая операционная система – оригинальная, не была изменена и не содержит вредоносного программного обеспечения.

Некоторые производители BIOS используют Secure boot keys для определения операционных систем, которые могут загружаться на компьютер. Эти ключи связаны с конкретными ОС, и BIOS разрешает загрузку только тех систем, которые имеют нужную цифровую подпись. Таким образом, Secure boot keys предоставляют дополнительный уровень защиты, исключая возможность загрузки неавторизованных операционных систем.

Следует учитывать, что Secure boot keys являются обязательным элементом для большинства компьютеров, однако имеются исключения. В некоторых ситуациях пользователям предоставляется возможность активировать или деактивировать эту функцию в настройках BIOS.

Понимание принципов работы Secure boot keys в BIOS позволяет эффективно защитить вашу операционную систему от вредоносных программ и несанкционированного доступа.

Что такое secure boot keys

Безопасная загрузка — это функция, реализованная в BIOS или UEFI, которая гарантирует проверку и подпись элементов загрузочного процесса для того, чтобы исключить запуск нежелательных или вредоносных программ. Проверка выполняется с использованием цифровых подписей, ассоциированных с комплектом ключей безопасной загрузки.

Secure boot keys состоят из следующих компонентов:

  • Ключ платформы (PK) — это основная пара публичного и приватного ключа, используемая для аутентификации платформы и устанавливаемая производителем. PK отвечает за подпись ключа обмена (Key Exchange Key, KEK).
  • Ключ обмена (KEK) — этот ключ предназначен для создания и подписи ключей, используемых при загрузке операционной системы (OS). KEK подписывает загрузочные ключи.
  • Загрузочные ключи (DB и DBX) — это ключи, которые подписывают образы загрузки операционной системы и определяют, какие компоненты являются доверенными, а какие — нет. База разрешенных ключей (DB) включает ключи для безопасных операционных систем, в то время как база запрещенных ключей (DBX) хранит ключи для небезопасных или недоверенных операционных систем.

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

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

Зачем нужны secure boot keys

Secure Boot – это технология, интегрированная в BIOS или UEFI, гарантирующая проверку подлинности и целостности компонентов, загружаемых в операционную систему. При старте компьютера Secure Boot осуществляет проверку цифровой подписи всех загружаемых файлов и приложений. Если подпись соответствует ключу, сохраненному в безопасном хранилище на устройстве, загрузка продолжается. В случае несовпадения подписи, загрузка операционной системы будет приостановлена.

Ключи Secure Boot включают в себя несколько различных ключей:

КлючОписание
PK (Ключ платформы)Это основной ключ, который сохраняется в BIOS или UEFI. Он осуществляет проверку цифровой подписи KEK.
KEK (Ключ обмена)Данный ключ проверяет цифровую подпись базы данных DB.
DB (Разрешенная база данных)В этой базе данных находятся все операционные системы, драйвера и загрузчики, которые имеют разрешение и подписаны ключом KEK.
DBX (Запрещенная база данных)В этой базе данных хранятся все операционные системы, драйвера и загрузчики, которые были запрещены и подписаны ключом KEK.

Применение ключей Secure Boot усиливает защиту компьютера, препятствует запуску вредоносного программного обеспечения и охраняет систему от вмешательства посторонних. В случае несовпадения электронной подписи с ключом, Secure Boot запрещает загрузку и информирует пользователя о возможной угрозе.

Архитектура secure boot keys

Ключи безопасной загрузки, известные как Secure Boot Keys, представляют собой коллекцию цифровых ключей, используемых в рамках технологии Secure Boot. Эта система, впервые предложенная Microsoft, гарантирует проверку аутентичности и целостности загружаемого программного обеспечения на компьютере.

Архитектура Secure Boot Keys состоит из нескольких ключей, обладающих различными уровнями доверия и функциями:

— Root ключ — самый высокий уровень доверия, который выполняет функцию корневого сертификата. Он служит основой для верификации всех остальных ключей в цепочке доверия.

— Key-exchange ключ — отвечает за безопасный обмен ключами между Root ключом и другими ключами в системе.

— Firmware ключи — используются для проверки целостности и подлинности загрузчика системы (firmware), а также для защиты от вредоносного программного обеспечения.

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

Структура Secure Boot Keys обеспечивает высокий уровень защиты от несанкционированного доступа и вредоносных программ, а также улучшает общую безопасность компьютерных систем.

Процесс создания Secure Boot Keys

  1. Создание ключей. Первым шагом в этом процессе является генерация ключей для Secure Boot. Обычно применяется алгоритм RSA, который формирует пару ключей: открытый и закрытый.
  2. Подписание ключей. Генерированные ключи подвергаются подписанию с использованием другого ключа, называемого ключом корневого сертификата. Это обеспечивает целостность и подлинность ключей Secure Boot.
  3. Установление цепочки доверия. Ключевым элементом процедуры является построение цепочки доверия, связывающей ключи Secure Boot с корневым сертификатом. Это создает основание для доверительных отношений к ключам Secure Boot и предотвращает возможность их подмены.
  4. Сохранение ключей. Сгенерированные и подписанные ключи должны храниться в защищенном месте, чтобы избежать их потери или несанкционированного доступа злоумышленников.

Этап формирования ключей Secure Boot играет ключевую роль в конфигурировании системы безопасной загрузки. Корректно созданные и подписанные ключи помогают защититься от вредоносного ПО и нежелательных изменений в загрузочных файлах операционной системы.

Основные типы secure boot keys

В BIOS имеется несколько ключевых категорий Secure Boot Keys, предназначенных для повышения безопасности загрузки операционной системы. Рассмотрим некоторые из них:

Тип ключаОписание
PK (Platform Key)Этот ключ служит корневым для всех остальных ключей Secure Boot. Установка возможно только производителем устройства, и он необходим для проверки цифровых подписей других компонентов загрузки.
KEK (Key Exchange Key)KEK предназначен для верификации ключей BDK (Boot Data Key), которые в свою очередь используются для проверки загрузочных заголовков. Устанавливать KEK могут как производители устройств, так и пользователи.
DB (Allowed Signature Database)База DB содержит цифровые подписи, которые разрешены для проверки загрузочных модулей и ядра ОС. Пользователи имеют возможность добавлять или удалять цифровые подписи в этой базе данных.
DBX (Disallowed Signature Database)DBX включает в себя цифровые подписи, которые запрещены для использования в процессе проверки загрузочных модулей и ядра операционной системы. Пользователи не могут вносить изменения в данную базу подписей.

Сочетание данных клавиш позволяет управлять процессом загрузки операционной системы и защищает от попадания вредоносных или небезопасных элементов. Настройка ключей Secure Boot, как правило, производится через функции BIOS или UEFI.

Проблемы с secure boot keys

Первая трудность, с которой можно столкнуться при использовании ключей Secure Boot, — это их утрата. Если вы случайно потеряли свои ключи Secure Boot, это может привести к проблемам с загрузкой операционной системы. В подобном случае потребуется сбросить настройки BIOS и создать новые ключи Secure Boot.

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

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

Настраиваем secure boot keys в BIOS

Этап 1: Доступ к BIOS

Чтобы настроить secure boot keys, вам необходимо войти в BIOS вашего компьютера. Для этого, при включении компьютера, обычно нужно нажать определенную клавишу, например, DEL или F2. В зависимости от модели и производителя вашего компьютера эта клавиша может отличаться, поэтому обратитесь к документации компьютера, чтобы узнать, как правильно войти в BIOS.

Шаг 2: Конфигурация ключей безопасной загрузки

После входа в BIOS найдите раздел, связанный с настройкой ключей безопасной загрузки. Этот раздел может носить название «Secure Boot», «Boot Security» или быть аналогичным. Перейдите в этот раздел и найдите параметр «Secure Boot Keys» или «Key Management».

Шаг 3: Создание ключей безопасной загрузки

В разделе «Secure Boot Keys» вы должны обнаружить выбор для генерации или импорта ключей. Если у вас уже есть ключи, их можно импортировать, в противном случае потребуется создать новые ключи. Выберите вариант «Generate Keys» и следуйте инструкциям на экране.

Шаг 4: Сохранение и активация ключей

После того как вы сгенерируете или импортируете ключи, не забудьте сохранить изменения и активировать ключи безопасной загрузки. Это можно сделать через раздел меню BIOS, где присутствуют опции «Сохранить и выйти» или «Применить изменения». После того как ключи будут сохранены и активированы, BIOS начнет их использовать для проверки загружаемой операционной системы или программного обеспечения.

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

Замечание: Перед переходом к настройке ключей безопасной загрузки в BIOS желательно ознакомиться с руководством по вашему компьютеру или проконсультироваться с производителем.

Сравнение Secure Boot Keys и других методов защиты

Вот ряд преимуществ Secure Boot Keys в сравнении с другими методами защиты:

  • Централизованное управление: Secure Boot Keys предоставляют администраторам возможность централизованного контроля над ключами и их обновлениями. Это гарантирует более надежную и удобную систему управления безопасностью.
  • Защита от атак: Использование Secure Boot Keys усложняет злоумышленникам задачу изменения или внедрения вредоносного ПО в загрузочные элементы операционной системы. Это существенно повышает уровень безопасности системы.
  • Совместимость с различными ОС: Secure Boot Keys могут работать с несколькими операционными системами, что позволяет организовывать мультизагрузочные системы с разными ОС, одновременно обеспечивая их защиту.

Кроме того, можно провести сравнение Secure Boot Keys с другими методами защиты. Например, пароли для доступа к BIOS классический метод, но они менее надежны и требуют от пользователя активного вмешательства.

В общем, ключи Secure Boot представляют собой надежный и практичный способ защиты BIOS, который гарантирует безопасность процесса загрузки операционной системы и помогает избежать атак со стороны злоумышленников.

Защита secure boot keys от физического доступа

Тем не менее, физический доступ к ключам secure boot может угрожать безопасности системы. Если злоумышленник доберется до этих ключей, он сможет изменить загрузчик и запустить вредоносные программы без ограничений.

Для защиты ключей secure boot от физического доступа можно применять различные методы:

  1. Обеспечение физической безопасности: Один из основных способов защиты ключей secure boot — это создание условий, обеспечивающих физическую безопасность компьютера или устройства. Ключи можно хранить в надежном аппаратном модуле (например, TPM) или на специализированном аппаратном устройстве с ограниченным доступом.
  2. Шифрование ключей: Ключи secure boot могут быть зашифрованы для предотвращения их использования без необходимого ключа расшифровки. Это делает ключи бесполезными для злоумышленника, даже в случае получения физического доступа к ним.
  3. Многоступенчатая аутентификация: Для получения доступа к ключам для безопасной загрузки может быть введена многоступенчатая аутентификация, которая включает в себя использование паролей, биометрических данных или специальных аппаратных устройств. Это особенно эффективно в сочетании с защитой физического доступа.
  4. Контроль доступа: Существенным шагом в защите ключей для безопасной загрузки является ведение записей о доступе и регулярное проведение аудита. Это позволяет отслеживать и контролировать использование ключей, а Выявлять несанкционированные попытки доступа.
  5. Периодическое обновление ключей: С целью повышения безопасности настоятельно рекомендуется регулярно обновлять ключи для безопасной загрузки, чтобы снизить риск их компрометации. Процесс обновления ключей также может входить в процедуры обновления BIOS или операционной системы.

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

Будущее secure boot keys

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

На данный момент secure boot keys выступают надежным инструментом защиты компьютерных систем, однако с развитием технологий и возникновением новых угроз необходимо постоянно улучшать систему безопасности и разрабатывать более надежные и действенные способы защиты. Будущее secure boot keys обещает множество новых возможностей и усовершенствований, которые окажут помощь в борьбе с вредоносным ПО и обеспечат защиту компьютерных систем.

Укрощаем UEFI SecureBoot

Обязанности, которые были обещаны, необходимо выполнять, особенно если они были высказаны в финальной части обсуждения вопроса безопасности UEFI, а затем также озвучены на конференции ZeroNights 2015. Сегодня мы рассмотрим, как настроить UEFI SecureBoot так, чтобы он работал не в интересах Microsoft, как это часто бывает по умолчанию, а в наших интересах. Если вас заинтересует, как создать собственные ключи для SecureBoot, установить их взамен стандартных (или вместе с ними), подписать предпочитаемый вами EFI-загрузчик, запретить загрузку неподписанного или подписанного чужими ключами программного кода, а Выяснить, как выглядит интерфейс настройки SecureBoot на AMI, Insyde и Phoenix, и почему в конечном итоге это не так критично — добро пожаловать, но будьте готовы к множеству изображений и длинным командам в консоли.

Введение

Как устроен и функционирует SecureBoot, я уже объяснял в начале пятой части данного материала, повторяться не имеет смысла. Если вы не знаете, что такое UEFI SecureBoot, кто такие PK, KEK, db и dbx, и почему производитель UEFI по умолчанию считается владельцем вашей системы, а Microsoft — единственным авторизованным пользователем, можете ознакомиться с этой информацией ранее, а мы здесь пока вас подождем.

Теперь перейдем к сути. Несмотря на то, что за последние три года было опубликовано множество качественных статей о создании собственных ключей и настройке SecureBoot (ссылки на некоторые из них можно найти в разделе Литература), ситуация остается прежней. Основная проблема с информацией о настройке SecureBoot даже в англоязычном сегменте интернета (что уж говорить о рунете) заключается в том, что многие статьи заканчиваются на этапе «Теперь у нас есть ключи в формате EFI Signature List, добавьте их в зависимости от вашего вендора с помощью своей прошивки, и на этом все». При этом вендоры не спешат раскрывать детали настройки SecureBoot ни в документации для OEM-платформ, ни в руководствах для конечных пользователей, в результате чего многие оказываются в затруднительном положении. Они либо отключают SecureBoot, который мешает загрузке их любимой OpenBSD (или другой операционной системы), либо оставляют настройки по умолчанию (в конце концов, Windows загружается без проблем). Именно этот последний вариант я постараюсь подробно рассмотреть, не упуская при этом из виду другие важные шаги.

Тестовая конфигурация

О интерфейсах для конфигурации SecureBoot

На всех вышеперечисленных системах производитель заявляет о поддержке технологии UEFI SecureBoot, но интерфейс для ее настройки сильно отличается между системами. К счастью, это не очень большая проблема, поскольку для настройки SecureBoot на совместимых со спецификацией UEFI 2.3.1C (и более новых) прошивках никакого интерфейса в Setup, кроме возможности удаления текущего PK (т.е. перевода SecureBoot в так называемый Setup Mode) не требуется, а после этого можно использовать любое EFI-приложение, способное вызвать UEFI-сервис gRS->SetVariable с предоставленными пользователем данными, в том числе утилиту KeyTool.efi из пакета efitools, которая специально для управления ключами и предназначена, осталось только научиться ей пользоваться. Тем не менее, если удобный интерфейс для настройки присутствует (у AMI он, на мой взгляд, даже удобнее KeyTool’а) — можно воспользоваться им, так что рассказывать про эти самые интерфейсы все равно придется.

Немного о скриншотах UEFI

Благодаря многофункциональности GOP, ConIn/ConOut и DevicePath, можно было бы за короткое время создать простой DXE-драйвер, который бы делал отличные скриншоты в формате BMP всего, что происходит на графической консоли после его загрузки по нажатию определенной клавиши, а затем сохранял бы их на любом доступном USB-устройстве с файловой системой FAT32… Однако сначала его нужно написать, затем отладить, а потом интегрировать в прошивки, чтобы они не сломались (в случае проблем с ноутбуками потребуется выпаивать микросхему и подключать её к программатору). Кроме того, в AptioV, который находится под моим контролем, можно делать скриншоты, используя терминал и перенаправление консоли, а у других систем настройки в основном укладываются в два-три экрана, которые можно просто сфотографировать с монитора. Поэтому прошу прощения у вас, уважаемые читатели, за некачественные фотографии и за то, что ваш покорный слуга ленится.

Готовим плацдарм

Начнем с небольшого отступления о необходимом программном обеспечении для различных операционных систем. Хотя Microsoft является одним из разработчиков данной технологии, в открытом доступе все еще нет подходящих инструментов для ее использования на Windows (для генерации ключей можно воспользоваться утилитой MakeCert из Windows SDK, а для всего остального предлагается прибегать к сторонним HSM за значительные деньги).

Первоначально я планировал создать нужную утилиту на Qt, однако решил, что генерировать ключи и подписи ежедневно не требуется, и для редких случаев можно обойтись существующими решениями. Если хотите, можете попытаться переубедить меня в комментариях. В любом случае, для выполнения всех нижеперечисленных действий вам понадобится Linux (который можно запустить с LiveUSB, если он у вас не установлен).

Существует два комплекта инструментов для взаимодействия с SecureBoot: efitools/sbsigntool и EFIKeyGen/pesign. Я уже имел положительный опыт использования первого комплекта, поэтому расскажу именно о нем. Важно отметить, что помимо Linux, нам также понадобятся несколько компонентов: 1. Пакет openssl и утилита с таким же названием для создания ключевых пар и конвертации сертификатов из формата DER в PEM.

2. Пакет efitools, а именно утилиты cert-to-efi-sig-list и sign-efi-sig-list, предназначенные для преобразования сертификатов в формат ESL и подписывания файлов в этом формате, а также KeyTool.efi для управления системными ключами в режиме SetupMode. 3. Пакет sbsigntool, в частности утилита sbsign, используемая для подписывания исполняемых файлов UEFI (это включает загрузчики, DXE-драйвера, OptionROM и приложения UEFI Shell) с использованием вашего ключа. Загрузите Linux, установите указанные пакеты, откройте терминал в домашней папке и переходите к следующему шагу.

Создание собственных ключей для SecureBoot

Существуют различные методы выполнения задач, и чем более мощным является инструмент, тем больше доступных вариантов его использования. OpenSSL представляет собой такой инструмент, который обладает таким уровнем развития, что создается впечатление, что он способен решать любые задачи, а прочитав его man-страницу, можно найти информацию практически обо всем. В данной статье я сосредоточусь на процессе создания ключевых файлов и оставлю изучение темы создания собственного CA на произвольное время.

Создание ключевых пар

Необходимо сгенерировать три ключа: PK, KEK и ISK. Начнем с создания PK, что требует выполнения следующей команды

openssl req -new -x509 -newkey rsa:2048 -sha256 -days 365 -subj "/CN=Platform Key" -keyout PK.key -out PK.pem

Затем необходимо ввести и подтвердить пароль, который будет требоваться при использовании закрытого ключа для подписи различных документов. В приведённой команде мы запрашиваем OpenSSL о генерации пары ключей RSA2048/SHA256 с периодом действия один год, названной Platform Key; закрытый ключ будет сохранен в файле PK.key, а открытый — в PK.pem. Если добавить параметр -nodes, то при использовании данной пары ключей не потребуется ввод пароля; однако, в данном случае мы этого делать не будем — наличие пароля обеспечивает дополнительную безопасность. Точно таким же образом создаем пары ключей для KEK и ISK, при этом рекомендую использовать разные пароли:

openssl req -new -x509 -newkey rsa:2048 -sha256 -days 365 -subj "/CN=Key Exchange Key" -keyout KEK.key -out KEK.pem
openssl req -new -x509 -newkey rsa:2048 -sha256 -days 365 -subj "/CN=Image Signing Key" -keyout ISK.key -out ISK.pem

Конвертируем открытые ключи в формат ESL

Теперь нужно сконвертировать открытые ключи из формата PEM в понятный UEFI SecureBoot формат ESL. Этот бинарный формат описан в спецификации UEFI (раздел 30.4.1 в текущей версии 2.5) и интересен тем, что файлы в нем можно соединять друг с другом конкатенацией, и этот факт нам еще пригодится.

cert-to-efi-sig-list -g "$(uuidgen)" PK.pem PK.esl
cert-to-efi-sig-list -g "$(uuidgen)" KEK.pem KEK.esl
cert-to-efi-sig-list -g "$(uuidgen)" ISK.pem ISK.esl

Ключ -g добавляет GUID в сгенерированный ESL-файл, который в данном случае является случайным и создаётся с помощью утилиты uuidgen и её вывода. Если утилиты у вас нет, вы можете сами создать GUID или использовать значение по умолчанию.

Процесс подписания ESL-файлов

Для корректной работы SecureBoot важно, чтобы PK подписывал сам себя, KEK был подписан PK, а хранилища db и dbx — соответственно KEK. При этом PK не может существовать в нескольких экземплярах, в отличие от KEK, которых может быть несколько, хотя такие случаи редки. Я настоятельно советую удалить предустановленный ключ Microsoft из KEK, потому что db и dbx могут быть подписаны любым ключом из этого хранилища. Если ключ MS не удалить, у компании будет возможность изменять содержимое db и dbx, добавляя или удаляя ключи и хеши из списка доверенной загрузки. На мой взгляд, это неоправданно, и если мы принимаем управление ключами в свои руки, стоит делать это полностью.

Если у вас другое мнение

В таком случае вам стоит посетить эту страницу, где в самом конце раздела 1.3.4.3 вы сможете найти ссылку на сертификат Microsoft Corporation KEK CA 2011 в DER формате. Сначала необходимо извлечь PEM с помощью команды

openssl x509 -in MicCorKEKCA2011_2011-06-24.crt -inform DER -out MsKEK.pem -outform PEM

затем преобразовать полученный PEM в ESL с помощью команды

cert-to-efi-sig-list -g "$(uuidgen)" MsKEK.pem MsKEK.esl

после этого добавить созданный файл к вашему KEK.esl с помощью команды

cat KEK.esl MsKEK.esl > NewKEK.esl
mv -f NewKEK.esl KEK.esl

Теперь Microsoft является таким же авторизованным пользователем вашей платформы, как и вы сами. Поздравляю вас с этим достижением!

С другой стороны, если вы не желаете лишаться возможности загружать Windows и подписанные ключом Microsoft исполняемые модули (например, драйверы GOP для внешних видеокарт и драйверы PXE для внешних сетевых карт), то вам потребуется дополнить наш ISK.esl несколькими ключами — ключом Microsoft Windows Production CA 2011, который используется Microsoft для подписки на свои загрузчики, и ключом Microsoft UEFI driver signing CA, который применяется для подписки компонентов сторонних разработчиков (именно этим ключом, кстати, подписи был обеспечен загрузчик Shim, позволяющий теперь запускать различные дистрибутивы Linux с поддержкой SecureBoot). Порядок действий аналогичен тому, что описан в предыдущем спойлере. Сначала нужно конвертировать из DER в PEM, затем из PEM в ESL, после чего добавляем к db.esl, который в конечном счете необходимо подписать любым ключом из KEK:

openssl x509 -in MicWinProPCA2011_2011-10-19.crt -inform DER -out MsWin.pem -outform PEM
openssl x509 -in MicCorUEFCA2011_2011-06-27.crt -inform DER -out UEFI.pem -outform PEM
cert-to-efi-sig-list -g "$(uuidgen)" MsWin.pem MsWin.esl
cert-to-efi-sig-list -g "$(uuidgen)" UEFI.pem UEFI.esl
cat ISK.esl MsWin.esl UEFI.esl > db.esl

Теперь выполняем самоподписание PK:

sign-efi-sig-list -k PK.key -c PK.pem PK PK.esl PK.auth

Подписываем KEK.esl с использованием ключа PK:

sign-efi-sig-list -k PK.key -c PK.pem KEK KEK.esl KEK.auth

Затем подписываем db.esl с ключом KEK:

sign-efi-sig-list -k KEK.key -c KEK.pem db db.esl db.auth

Если вы еще не устали, можно добавить что-то новое в базу данных или создать хранилище dbx, необходимые команды вам уже знакомы, дальнейшие действия — на ваш выбор.

Подписываем загрузчик

Теперь нужно подписать любой исполняемый файл ключом ISK, чтобы протестировать функцию SecureBoot после внесения ваших ключей. Для этого я рекомендую подписать утилиту RU.efi — она имеет графический интерфейс и яркий дизайн, поэтому ее легко заметить на экране. На самом деле, данная утилита обладает значительным потенциалом и может выполнить множество различных задач, как полезных, так и не очень, поэтому после завершения тестирования лучше удалить её, а в будущем заниматься подписью только загрузчиков. В любом случае, исполняемые файлы подписываются с помощью следующей команды:

sbsign —key ISK.key —cert ISK.pem —output bootx64.efi RU.efi

Здесь я заодно переименовал исполняемый файл в bootx64.efi, который нужно положить в директорию /EFI/BOOT тестового USB-носителя с ФС FAT32. Для 32-битных UEFI (избавь вас рандом от работы с ними) используйте bootia32.efi и RU32.efi.

В результате всех этих действий у вас будет три файла с расширением .auth, которые необходимо записать в NVRAM-переменные db, KEK и PK в строго указанном порядке. Перенесите все три файла в корневую директорию другого USB-носителя с файловой системой FAT32, где /EFI/BOOT/bootx64.efi будет заменен на /usr/share/efitools/efi/KeyTool.efi (также скопируйте его в корень, на всякий случай), и ваш комплект для управления SecureBoot будет готов.

Укрощение строптивого

Процесс начинается стандартно: подключаем флешку с ключами и KeyTool к свободному USB-порту, включаем компьютер и переходим в BIOS Setup. Здесь, прежде чем заняться настройкой SecureBoot, необходимо отключить CSM и легаси-загрузку, так как они несовместимы с нашей технологией. Также обязательно установите более длинный пароль для входа в BIOS Setup, иначе SecureBoot можно будет обойти, отключив его, что в некоторых системах с IPMI и/или AMT не требует даже физического присутствия.

AMI AptioV

У большинства прошивок, основанных на коде AMI, управление технологией SecureBoot находится на вкладке Security, у меня это управление выглядит так: Заходим в меню Key Management (раньше оно было на той же вкладке, сейчас его выделили в отдельное) и видим там следующее: Выбираем нужную нам переменную, после чего сначала предлагают выбрать между установкой нового ключа и добавлением к уже имеющимся, выбираем первое: Теперь предлагается либо установить значение по умолчанию, либо загрузить собственное из файла, выбираем последнее: Далее нужно устройство и файл на нем, а затем выбрать формат этого файла, в нашем случае это Authenticated Variable: Затем нужно подтвердить обновление файла, и если все до этого шло хорошо, в результате получим лаконичное сообщение: Повторяем то же самое для KEK и PK, и получам на выходе вот такое состояние: Все верно, у нас есть единственный PK, всего один ключ в KEK и три ключа в db, возвращаемся в предыдущее меню кнопкой Esc и включаем SecureBoot: Готово, сохраняем настройки и выходим с перезагрузкой, после чего пытаемся загрузиться с нашей флешки и видим вот такую картину: Отлично, неподписанные загрузчики идут лесом, осталось проверить подписанный. Вставляем другую флешку, перезагружаемся и видим что-то такое: Вот теперь можно сказать, что SecureBoot работает как надо. Если у вашего AMI UEFI такого интерфейса для добавления ключей нет, то вам подойдет другой способ, о котором далее.

Insyde H2O

Здесь ситуация немного хуже, чем в предыдущем примере. Интерфейс для добавления пользовательских ключей отсутствует, а возможности настройки SecureBoot ограничены тремя опциями: можно либо удалить все переменные сразу, переведя SecureBoot в режим настройки, либо выбрать исполняемый файл, чей хеш будет добавлен в db, что позволит запускать его даже без подписания, либо восстановить стандартные ключи, где PK предоставлен компанией Acer, а KEK содержит ключи от Acer и Microsoft, и дополнительно множество объектов от Acer и Microsoft в db.

Впрочем, нет интерфейса — ну и черт с ним, у нас для этого KeyTool есть, главное, что в Setup Mode перейти можно. Интересно, что BIOS Setup не дает включить SecureBoot, если пароль Supervisor Password не установлен, поэтому устанавливаем сначала его, затем выполняем стирание ключей: После чего на соседней вкладке Boot выбираем режим загрузки UEFI и включаем SecureBoot: Т.к. фотографии у меня посреди ночи получаются невыносимо отвратительными, то скриншоты KeyTool’а я сделаю на предыдущей системе, и придется вам поверить в то, что на этой все выглядит точно также (мамой клянусь!).

Загружаемся с нашего носителя в KeyTool, и видим примерно следующее: Выбираем Edit Keys, попадаем в меню выбора хранилища: Там сначала выбираем db, затем Replace Keys, затем наше USB-устройство, а затем и файл: Нажимаем Enter и без всяких сообщений об успехе нам снова показывают меню выбора хранилища. Повторяем то же самое сначала для KEK, а затем и для PK, после выходим в главное меню двойным нажатием на Esc. Выключаем машину, включаем заново, пытаемся загрузить KeyTool снова и видим такую картину (которую я утащил из дампа прошивки, ее фото на глянцевом экране еще кошмарнее, чем предыдущие): Ну вот, одна часть SecureBoot’а работает, другая проверяется запуском подписанной нами RU.efi и тоже работает. У меня на этой системе Windows 8 установлена в UEFI-режиме, так вот — работает и она, Microsoft с сертификатом не подвели.

Phoenix SCT

Здесь возможностей еще меньше, и во всем меню Secure Boot Configuration на вкладке Security всего два пункта: возврат к стандартным ключам и удаление всех ключей с переводом системы в SetupMode, нам нужно как раз второе: Затем на вкладке Boot нужно выбрать тип загрузки UEFI, включить SecureBoot, и создать загрузочную запись для KeyTool’а, иначе на этой платформе его запустить не получится: Нажимаем Yes, выходим с сохранением изменений, перезагружаемся, нажимаем при загрузке F12, чтобы попасть в загрузочное меню, оттуда выбираем KeyTool, работа с которым описана выше. После добавления ключей и перезагрузки попытка повторного запуска KeyTool’а заканчивается вот так: При этом установленный на той же машине Linux продолжает исправно загружаться, как и подписанная нами RU.efi, так что SecureBoot можно признать работоспособным.

Заключение

Как итог, благодаря утилитам с открытым исходным кодом, удалось успешно настроить SecureBoot на системах с UEFI от трех различных производителей, создать собственные ключи и подписать необходимые исполняемые файлы. Теперь контроль над загрузкой платформы полностью в наших руках, при условии, что пароль на BIOS надежный и не сохранен в открытом виде, как это делается у некоторых, а в реализации SecureBoot отсутствуют известные (или пока неполные) уязвимости. Хотя SecureBoot сам по себе не является абсолютной защитой от буткитов, его наличие значительно улучшает ситуацию с безопасной загрузкой по сравнению с отсутствием данной функции. Надеюсь, что данный материал будет вам полезен, и благодарю за то, что уделили время на его прочтение.

Secure boot (безопасная загрузка) — что это, особенности, как включить и отключить

Почему возникает проблема с запуском операционной системы с флешки, если с ней всё в порядке? Скорее всего, причина в активированном «Secure Boot». В данной статье рассматривается, что это за функция и как её отключить.

Что такое «Secure Boot»

Это специальный протокол для создания безопасной среды при включении Windows, или, другими словами, безопасный запуск компьютера или ноутбука на надежном программном обеспечении, заслуживший доверие производителя.

На каждом устройстве реализована функция «Безопасной загрузки» для предотвращения старта неавторизованных операционных систем, вирусов и злоумышленного ПО. Для защиты данных и обеспечения нормального функционирования устройства такая безопасность была интегрирована как в BIOS, так и в UEFI.

При включении устройства срабатывает встроенная микропрограмма, которая проверяет подписи всех компонентов (программ EFI, драйверов и операционной системы). Если все подписи признаны надежными и безопасными, то начинается процесс загрузки операционной системы.

BIOS и UEFI представляют собой программы, отвечающие за ввод и вывод данных, которые запускают операционную систему, причем последняя работает исключительно на новых версиях Windows.

Принцип работы и особенности «Secure Boot»

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

Для того чтобы подписать что-либо, «Secure Boot» отправляет запрос в центр сертификации, где проверяется устанавливаемая операционная система. После анализа ставится цифровая подпись. Лишь после этого осуществляется запуск ОС при активированном режиме безопасной загрузки.

Если цифровая подпись окажется недействительной, то запустить устройство с новой ОС не удастся.

Данная программа обеспечивает защиту исключительно на этапе загрузки операционной системы. Однако существует риск подмены ключей при доступе к аппаратной части компьютера.

Существует два режима работы:

  1. SETUP, используемый для настройки доступа к UEFI-ключам и их базам:
  2. Ключи обмена ключами (Key Exchange Keys или KEK) подписываются PK;
  3. OEM Key (Оригинальный ключ) — присутствует в заранее установленных версиях Windows;
  4. Platform Key или PK — основной ключ;
  5. DBX — база, из которой были убраны ключи;
  6. DB — база, включающая разрешенные ключи.
  7. USER, позволяющий выполнять файлы.

Для активации режима USER необходимо, чтобы ключи имели подпись DB, но не DBX.

Пре-загрузчики Linux

Для сертификации компьютеров, с целью их совместимости с ОС Windows, Microsoft запрашивает активацию «Secure Boot», запускаемую с применением пре-загрузчиков от фирмы Linux.

Корпорация Microsoft не предоставляет собственные ключи доступа, так как их требуется заранее интегрировать в прошивку во время производства, что является невыгодным из-за необходимости согласований с различными производителями. Это также может привести к появлению на рынке компьютеров, не поддерживающих операционную систему Linux. Выделяют два таких пре-загрузчика:

  1. Shim, функционирует с тремя ключами:
  2. Shim keys (создаются самостоятельно);
  3. Secure Boot keys (существуют в UEFI);
  4. Machine Owner Key (MOK, сохраняется в NVRAM).

Перед выполнением бинарные файлы должны быть подписаны, так как Shim имеет тесное взаимодействие с ключом MOK, и без поддержки системы у загрузчика выполнение не произойдет.

  1. PRELoader, в свою очередь, может перенастраивать инициализацию UEFI с внедрением надежных механизмов проверки подлинности.

Если удалить ключ, использовавшийся для подписи программы, дальнейший запуск станет невозможным.

Указанные выше загрузчики уже установлены по умолчанию и обладают подписью на всех устройствах от компании Microsoft.

Как включить безопасную загрузку

Чтобы обеспечить защиту компьютера от вирусов, необходимо проверить, включена ли функция «Security Boot». Если она отключена, рекомендуется активировать её вручную.

UEFI представляет собой более современную, удобную программу, которой можно управлять с помощью мыши, в отличие от BIOS, где управление осуществляется только с помощью клавиш.




Пошаговое руководство по активации безопасной загрузки в БИОС или UEFI:

  1. После включения устройства следует войти в БИОС, для этого нужно многократно нажимать клавишу «F2» (для ноутбуков) или «Del» (для стационарных ПК), в зависимости от производителя может требоваться другая кнопка.
  2. В меню БИОС найдет опцию «Secure Boot», которая может находиться в различных разделах, таких как «Security», «Advanced Settings», «System Configuration» или «Boot».
  3. Установите «Secure Boot» в состояние «Enabled». Если ключи безопасной загрузки были сброшены ранее, их стоит восстановить. После внесения изменений сохраните настройки, выбрав «Exit» или нажав «F10» на клавиатуре, и затем перезагрузите устройство.

В некоторых версиях BIOS может быть функция поиска, с помощью которой можно быстро найти раздел «Secure Boot».

Одним из простых методов активировать функцию защищенной загрузки является сброс параметров BIOS. Для этого, нажав на «Exit», необходимо найти пункт «Load Defaults», который включен по умолчанию на всех устройствах с заводскими настройками.

Как отключить защиту «Secure Boot» в БИОСе

На каждом компьютере должна быть предусмотрена возможность отключать такую защиту. Поэтапная инструкция выключения практически не отличается от таковой по включению.

Чтобы деактивировать функцию «Secure Boot» в BIOS на старых моделях, необходимо выполнить следующие шаги:

  1. Зайти в BIOS.
  2. Перейти в раздел «Advanced Mode», нажав клавишу «F7».
  3. Выбрать опцию «Secure Boot».
  4. Кликнуть на вкладку «Secure Boot Control» и изменить режим на «Disabled».
  5. Сохранить изменения и выйти из раздела.




В ARM-планшетах, на которых уже была установлена операционная система Microsoft, отключить функцию «Secure Boot» не представляется возможным.

Примеры, как отключить «Secure Boot» на разных ноутбуках

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

Samsung

Чтобы узнать, как отключить функцию «Secure Boot» на ноутбуке «Samsung», необходимо сразу после включения нажать клавишу «F2» на клавиатуре для доступа в БИОС. Затем следует найти разделы «Boot» и «Secure Boot», и переключить последний в режим «Disabled». Изменения подтверждаются нажатием клавиши «Enter». После этого появится предупреждение об ошибке, которое нужно будет подтвердить.

После завершения перезагрузки операционной системы можно будет изменить параметр «OS Mode Selection», установив его на «CSM OS» или «UEFI and Legacy OS», выбирая нужный вариант и подтверждая изменения.

При следующей перезагрузке снова может появиться сообщение об ошибке, оно игнорируется нажатием клавиши «Enter» на клавиатуре.

Затем необходимо перезагрузить компьютер, используя клавишу «F10». Появится меню, в котором нужно выбрать тип носителя (жесткий диск, флешка или другой).

Asus

Для отключения функции «Secure Boot» на устройствах компании Asus необходимо перейти в UEFI, выбрать раздел «Boot», а затем «Secure Boot». В пункте «OS Type» следует установить значение «Other OS», после чего изменения сохраняются нажатием клавиши «F10» на клавиатуре.

Acer

В стандартных настройках невозможно отключить защищённую загрузку. Для этого нужно зайти в БИОС, выбрать раздел «Security» и установить новый пароль, перейдя в опцию «Set Supervisor Password». Затем, находясь в разделе «Boot», необходимо установить значение «Disabled» для параметра «Secure Boot».

Защищенный запуск выключается в части «Advanced — System Configuration» или «Authentication» только на стационарных ПК.

Dell

В настройках БИОС рекомендуется перейти в раздел «Загрузка», затем выбрать «UEFI Загрузка», после чего найти опцию «Безопасная загрузка» и установить её в состояние «Отключена». Для сохранения изменений нажмите «F10».

Lenovo и Toshiba

Чтобы войти в UEFI при запуске устройства, нажмите клавишу «F2» или комбинацию «Fn» + «F2». Найдите раздел «Security» и установите параметр «Secure Boot» в состояние «Disabled». Сохраните изменения, нажав «Fn» + «F10» или просто «F10».

При приобретении ноутбука в официальных магазинах обязательно должна прилагаться инструкция по эксплуатации, в которой содержатся указания на отключение «Secure Boot». В противном случае, эту информацию можно найти в открытом доступе.

Как узнать, активен ли «Secure Boot»

Перед тем как запустить программу или выполнить переустановку операционной системы, необходимо проверить функцию «Secure Boot» в BIOS, чтобы удостовериться в её активации. Рекомендуется использовать один из предложенных методов для проверки.

Командная строка

Чтобы проверить, активна ли функция «Защищенная загрузка», можно использовать командную строку «Выполнить». Для этого нужно выполнить несколько шагов. Зажмите клавиши «Win» (логотип ОС) и «R» на клавиатуре, появится окно «Выполнить», в которое необходимо ввести «msinfo32», затем нажмите «OK» или клавишу «Enter».

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

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

Раздел «Безопасность устройства»

Есть альтернативный способ проверки активации режима «Secure Boot» на устройстве (некоторых новых версиях ОС Windows).

Необходимо зайти в «Параметры», затем перейти к «Безопасности устройства», внизу будет раздел «Безопасная загрузка», в котором указано, активирован режим или нет.


Windows PowerShell

Ещё один способ можно провести следующим образом:

  1. Выполните команду от имени администратора: «Confirm-Secure Boot UEFI»
  2. Дождитесь ответа:
  3. «True» – функция включена;
  4. «False» – устройство может поддерживать безопасную загрузку, однако в данный момент она отключена;
  5. «Error» или другой код ошибки указывает на то, что данное устройство не поддерживает этот режим.

Частые проблемы и пути решения

Часто возникают трудности с активацией и деактивацией функций защищенной загрузки.

Проблема № 1. В БИОС отсутствует опция «Secure Boot»

Решение: Функция «Защищенная загрузка» предназначена преимущественно для UEFI, а не для традиционного БИОС. При активных «Legacy» или «CSM» настройки защищенного запуска могут не сработать. В этом случае возможны следующие варианты:

  1. Перевести систему в режим UEFI, что отключит загрузку «Legacy» и «CSM».
  2. Установить пароль для БИОС в настройках типа операционной системы, выбрав при этом Windows 8.

Проблема № 2. Невозможно установить Windows на новый ноутбук с отсутствующей предустановленной ОС.

Для решения требуется выполнить ряд условий:

  1. Создать установочную флешку с UEFI и нужной версией Windows;
  2. Подключить флешку к USB-порту;
  3. Для доступа к «Boot Menu» нажмите клавиши «F2» или «F12» на клавиатуре (возможно, используется другая клавиша, лучше ознакомиться с руководством пользователя);
  4. Выберите вариант загрузки с флешки.

Проблема № 3. Устройство не загружается с флешек, когда активирован режим «Secure Boot» при установке Windows.

Способы решения зависят от места возникновения проблемы:

  1. Для активации «Secure Boot» необходимо установить Windows в UEFI (используя GPT — Таблицу разделов GUID).
  2. Если флешка была подготовлена из официального ISO образа с помощью программы «WinSetupFromUSB», следует отформатировать её в формате «FAT32».
  3. Переместите содержимое образа в корневую директорию флешки.
Оцените статью
LeeReload
Добавить комментарий