Включение безопасной загрузки, BitLocker и Device Guard на Windows 10 IoT Базовая
Windows 10 IoT Базовая включает функции безопасности, такие как безопасная загрузка UEFI, шифрование устройств BitLocker и Device Guard. Они помогут построителям устройств создавать полностью заблокированные устройства Windows IoT, устойчивые к различным типам атак. Вместе эти функции обеспечивают оптимальную защиту, которая гарантирует, что платформа будет запускаться определенным образом, при блокировке неизвестных двоичных файлов и защите данных пользователей с помощью шифрования устройств.
Порядок загрузки
Представление о порядке загрузки на устройстве Windows 10 IoT Базовая необходимо, прежде чем мы можем перейти в отдельные компоненты, обеспечивающие безопасную платформу для устройства Интернета вещей.
Существует три основных области, возникающие при включении устройства Интернета вещей, вплоть до загрузки и выполнения установленного приложения ядра ОС.
- Безопасная загрузка платформы
- Безопасная загрузка единого расширяемого интерфейса встроенного ПО (UEFI)
- Целостность кода Windows
Дополнительные сведения о процессе загрузки Windows 10 см . здесь.
Блокировка устройств Интернета вещей
Чтобы заблокировать устройство Windows IoT, необходимо выполнить следующие рекомендации.
Безопасная загрузка платформы
При первом включении устройства первым шагом в общем процессе загрузки является загрузка и запуск загрузчиков встроенного ПО, которые инициализируют оборудование в разработках и обеспечивают функцию аварийного мигания. Затем среда UEFI загружается и управляется.
Эти загрузчики встроенного ПО зависят от SoC, поэтому вам потребуется работать с соответствующим производителем устройства, чтобы эти загрузчики были созданы на устройстве.
безопасная загрузка UEFI;
Безопасная загрузка UEFI — это первая точка применения политик и находится в UEFI. Она ограничивает систему только разрешать выполнение двоичных файлов, подписанных указанным центром, например драйверов встроенного ПО, параметров ROMS, драйверов или приложений UEFI, а также загрузчиков UEFI. Эта функция предотвращает выполнение неизвестного кода на платформе и защищает систему от потенциальных проблем с безопасностью. Безопасная загрузка снижает риск атак вредоносных программ предварительной загрузки на устройство, таких как rootkits.
Как изготовитель оборудования, необходимо хранить базы данных безопасной загрузки UEFI на устройстве Интернета вещей во время производства. К этим базам данных относятся база данных сигнатуры (db), база данных сигнатуры (dbx) и база данных ключа регистрации ключей (KEK). Эти базы данных хранятся в нестандартном ОЗУ встроенного ПО (NV-RAM) устройства.
База данных подписи (db): в этом списке подписи или хэши образов загрузчиков операционной системы, приложений UEFI и драйверов UEFI, которые могут быть загружены на устройство.
Отозванная база данных подписи (dbx): в этом списке перечислены подписи или хэши образов загрузчиков операционной системы, приложения UEFI и драйверы UEFI, которые больше не являются доверенными, и не разрешены для загрузки на устройство.
База данных ключа регистрации ключей (KEK): содержит список ключей подписывания, которые можно использовать для обновления подписи и отзыва баз данных подписи.
После создания и добавления этих баз данных на устройство OEM блокирует встроенное ПО из редактирования и создает ключ подписи платформы (PK). Этот ключ можно использовать для подписывания обновлений KEK или отключения безопасной загрузки UEFI.
Ниже приведены шаги, выполняемые безопасной загрузкой UEFI:
- После включения устройства базы данных сигнатуры проверка на ключ подписи платформы (PK).
- Если встроенное ПО не является доверенным, встроенное ПО UEFI инициирует восстановление, зависят от изготовителя оборудования для восстановления доверенного встроенного ПО.
- Если диспетчер загрузки Windows не может быть загружен, встроенное ПО попытается загрузить резервную копию диспетчера загрузки Windows. Если это также не удается, встроенное ПО UEFI инициирует исправление, зависят от изготовителя оборудования.
- Диспетчер загрузки Windows запускает и проверяет цифровую подпись ядра Windows. Если оно является доверенным, диспетчер загрузки Windows передает управление ядром Windows.
Дополнительные сведения о безопасной загрузке вместе с руководством по созданию ключей и управлению см . здесь.
Целостность кода Windows
Целостность кода Windows (WCI) повышает безопасность операционной системы, проверяя целостность драйвера или приложения при каждом загрузке в память. CI содержит два основных компонента: целостность кода в режиме ядра (KMCI) и целостность кода пользовательского режима (UMCI).
Настраиваемая целостность кода (CCI) — это функция в Windows 10, которая позволяет построителям устройств блокировать устройство и разрешать запускать и выполнять код, подписанный и доверенный. Для этого построители устройств могут создать политику целостности кода на "золотом" устройстве (окончательная версия оборудования и программного обеспечения), а затем защитить и применить эту политику на всех устройствах на фабрике.
Дополнительные сведения о развертывании политик целостности кода, аудите и применении проверка последней документации technet.
Ниже приведены действия, выполняемые с помощью целостности кода Windows:
- Ядро Windows проверяет все остальные компоненты для базы данных подписи перед загрузкой. К ним относятся драйверы, файлы запуска и ELAM (антивредоносная программа раннего запуска).
- Ядро Windows загружает доверенные компоненты в процессе запуска и запрещает загрузку ненадежных компонентов.
- Windows 10 IoT Базовая загружает операционную систему вместе с установленными приложениями.
Шифрование устройств BitLocker
Windows 10 IoT Базовая также реализует упрощенную версию шифрования устройств BitLocker, защищая устройства Интернета вещей от автономных атак. Эта возможность имеет сильную зависимость от присутствия доверенного платформенного модуля, включая необходимый протокол предварительной ОС в UEFI, который проводит необходимые измерения. Эти измерения до ОС гарантируют, что операционная система позже имеет окончательный отчет о том, как была запущена ОС; однако он не применяет никаких ограничений на выполнение.
Совет
Функции BitLocker в Windows 10 IoT Базовая позволяют автоматически шифровать том ОС на основе NTFS при привязке всех доступных томов данных NTFS к нему. Для этого необходимо убедиться, что guid тома EFIESP имеет значение C12A7328-F81F-11D2-BA4B-00A0C93EC93B.
Device Guard в Windows IoT Core
Большинство устройств Интернета вещей создаются как устройства с фиксированной функцией. Это означает, что построители устройств точно знают, какие встроенное ПО, операционная система, драйверы и приложения должны работать на данном устройстве. В свою очередь, эти сведения можно использовать для полной блокировки устройства Интернета вещей, позволяя выполнять только известный и доверенный код. Device Guard на Windows 10 IoT Базовая может помочь защитить устройства Интернета вещей, гарантируя, что неизвестный или ненадежный исполняемый код не может выполняться на заблокированных устройствах.
Включение безопасности в IoT Core
Чтобы упростить простое включение ключевых функций безопасности на устройствах IoT Core, корпорация Майкрософт предоставляет пакет безопасности Под ключом, который позволяет построителям устройств создавать полностью заблокированные устройства Интернета вещей. Этот пакет поможет:
- Подготовка ключей безопасной загрузки и включение функции на поддерживаемых платформах Интернета вещей
- Настройка и настройка шифрования устройств с помощью BitLocker
- Запуск блокировки устройства для разрешения выполнения подписанных приложений и драйверов
Следующие действия приводят к созданию образа блокировки с помощью пакета безопасности "Под ключом "
Необходимые компоненты
- Компьютер под управлением Windows 10 Корпоративная (другие версии Windows не поддерживаются предоставленными скриптами)
- Пакет SDK для Windows 10 — требуется для создания сертификатов
- Windows 10 ADK — требуется для создания CAB
- Эталонная платформа — выпуск оборудования с доставкой встроенного ПО, ОС, драйверов и приложений потребуется для окончательной блокировки
Разработка устройств Интернета вещей
Windows 10 IoT Базовая работает с различными кремниями, которые используются в сотнях устройств. Из предлагаемых устройств разработки Интернета вещей следующие функции предоставляют функциональные возможности доверенного платформенного модуля встроенного ПО, а также безопасные загрузки, измеряемые загрузки, BitLocker и Device Guard:
Qualcomm DragonBoard 410c
Чтобы включить безопасную загрузку, может потребоваться подготовить RP МБ. После вспышки eMMC с помощью Windows 10 IoT Базовая (как по инструкциям здесь, нажмите клавишу [Power] + [Vol+] + [Vol-] одновременно на устройстве при включении и выберите пункт "Подготовка RP МБ" в меню BDS. Обратите внимание, что это необратимый шаг.
Intel MinnowBoardMax
Для Intel MinnowBoard Max версия встроенного ПО должна быть 0.82 или выше (получить последнюю версию встроенного ПО). Чтобы включить возможности доверенного платформенного модуля, включите доску с клавиатурой и подключенным дисплеем и нажмите клавишу F2, чтобы ввести настройку UEFI. Перейдите к диспетчер устройств —> системная настройка> — конфигурация безопасности —> PTT и установите для него значение <Enable>. Нажмите клавишу F10, чтобы сохранить изменения и продолжить перезагрузку платформы.
Примечание.
Raspberry Pi 2 или 3 не поддерживают TPM, поэтому мы не можем настроить сценарии блокировки.
Создание пакетов блокировки
Следуйте инструкциям в следующих двух ссылках:
Тестирование пакетов блокировки
Вы можете протестировать пакеты безопасности, созданные здесь<, YOUR_IOT_ADD_ON_WORKSPACE\Build<ARCH><OEM_NAME>>. Security.* .cab>, вручную установив их на разблокированном устройстве, выполнив следующие действия.
Вспышка устройства с разблокированным изображением (изображение, используемое для сканирования на предыдущем шаге).
Подключение на устройство (с помощью SSH или с помощью PowerShell)
Скопируйте следующие .cab файлы на устройство в каталоге, например.
c:\OemInstall
- OEM. Custom.Cmd.cab
- OEM. Security.BitLocker.cab
- OEM. Security.SecureBoot.cab
- OEM. Security.DeviceGuard.cab
Инициируйте промежуточное выполнение созданных пакетов, выполнив следующие команды.
applyupdate -stage c:\OemInstall\OEM.Custom.Cmd.cab
Если вы используете пользовательский образ, вам придется пропустить этот файл и вручную изменить содержимое, доступное
c:\windows\system32\oemcustomization.cmd
вOutput\OEMCustomization\OEMCustomization.cmd
файле.applyupdate -stage c:\OemInstall\OEM.Security.BitLocker.cab applyupdate -stage c:\OemInstall\OEM.Security.SecureBoot.cab applyupdate -stage c:\OemInstall\OEM.Security.DeviceGuard.cab
Наконец, зафиксируйте пакеты с помощью
applyupdate -commit
Устройство перезагрузится в ос обновления (показывая шестеренки) для установки пакетов и снова перезагрузится на основную ОС. После перезагрузки устройства в MainOS будет включена безопасная загрузка, а SIPolicy должна быть включена.
Перезагрузите устройство еще раз, чтобы активировать шифрование BitLocker.
Тестирование функций безопасности
- SecureBoot: попробуйте
bcdedit /debug on
, вы получите сообщение об ошибке о том, что значение защищено политикой безопасной загрузки - BitLocker: Запустите
start /wait sectask.exe -waitencryptcomplete:1
, если ERRORLEVEL имеет значение-2147023436
(ERROR_TIMEOUT), шифрование не завершено. При запуске sectask.exe из файла .cmd опустите файлstart /wait
. - DeviceGuard: выполните любой неподписанный двоичный файл или двоичный файл, подписанный сертификатом, не в списке SIPolicy, и убедитесь, что он не выполняется.
- SecureBoot: попробуйте
Создание образа блокировки
После проверки того, что пакеты блокировки работают в соответствии с параметрами, определенными ранее, эти пакеты можно включить в образ, выполнив указанные ниже действия. Ознакомьтесь с руководством по производству Интернета вещей для инструкций по созданию пользовательских образов.
В каталоге рабочей области обновите следующие файлы из созданного выше выходного каталога.
- SecureBoot:
Copy ..\Output\SecureBoot\*.bin ..\Workspace\Common\Packages\Security.SecureBoot
- SetVariable_db.bin
- SetVariable_kek.bin
- SetVariable_pk.bin
- Bitlocker:
Copy ..\Output\Bitlocker\*.* ..\Workspace\Common\Packages\Security.Bitlocker
- DETask.xml
- Security.Bitlocker.wm.xml
- setup.bitlocker.cmd
- DeviceGuard:
Copy ..\Output\DeviceGuard\*.* ..\Workspace\Common\Packages\Security.DeviceGuard
- SIPolicyOn.p7b
- SIPolicyOff.p7b
- SecureBoot:
Добавление RetailOEMInput.xml и TestOEMInput.xml в каталог ProductName с идентификатором компонента блокировки
<Feature>SEC_BITLOCKER</Feature>
<Feature>SEC_SECUREBOOT</Feature>
<Feature>SEC_DEVICEGUARD</Feature>
Повторное создание образа
buildpkg all
(это создает новые пакеты блокировки на основе выше файлов политики)buildimage ProductName test(or)retail
(это создает новый Flash.ffu)
Вспыхнете устройство с помощью этого нового Flash.ffu и проверьте функции безопасности.
См . раздел SecureSample в качестве примера конфигурации доски драконов блокировки.
Разработка с поддержкой принудительного применения CodeSigning
После создания пакетов и активации блокировки все двоичные файлы, введенные в образ во время разработки, должны быть подписаны соответствующим образом. Убедитесь, что двоичные файлы в пользовательском режиме подписаны с помощью ключа *.\Keys\ **-UMCI.pfx. Для подписывания в режиме ядра, например для драйверов, необходимо указать собственные ключи подписи и убедиться, что они также включены в SIPolicy выше.
Разблокировка зашифрованных дисков
Во время разработки и тестирования при попытке считывания содержимого с зашифрованного устройства в автономном режиме (например, SD карта для MinnowBoardMax или DragonBoard через режим хранения массы USB) "diskpart" может использоваться для назначения буквы диска mainOS и тома данных (предположим, что для MainOS и w: для данных). Тома будут заблокированы и должны быть разблокированы вручную. Это можно сделать на любом компьютере с установленным сертификатом OEM-DRA.pfx (включен в пример DeviceLockDown). Установите PFX и выполните следующие команды из административной командной строки:
manage-bde -unlock v: -cert -cf OEM-DRA.cer
manage-bde -unlock w: -cert -cf OEM-DRA.cer
Если содержимое должно быть часто доступ к автономному режиму, функция autounlock BitLocker может быть настроена для томов после первоначальной разблокировки с помощью следующих команд:
manage-bde -autounlock v: -enable
manage-bde -autounlock w: -enable
Отключение BitLocker
Если возникает необходимость временно отключить BitLocker, инициативировать удаленный сеанс PowerShell с устройством Интернета вещей и выполнить следующую команду: sectask.exe -disable
Примечание.
Шифрование устройств будет повторно включено при последующей загрузке устройства, если задача запланированного шифрования не отключена.