Activation du démarrage sécurisé, de BitLocker et de Device Guard sur Windows 10 IoT Standard

Windows 10 IoT Standard inclut des offres de fonctionnalités de sécurité telles que le démarrage sécurisé UEFI, BitLocker Device Encryption et Device Guard. Ceux-ci aideront les générateurs d’appareils à créer des appareils Windows IoT entièrement verrouillés qui sont résilients à de nombreux types d’attaques différents. Ensemble, ces fonctionnalités fournissent la protection optimale qui garantit qu’une plateforme se lancera de manière définie, tout en verrouillant les fichiers binaires inconnus et en protégeant les données utilisateur à l’aide du chiffrement d’appareil.

Ordre de démarrage

Une compréhension de l’ordre de démarrage sur un appareil Windows 10 IoT Standard est nécessaire avant de pouvoir explorer les composants individuels qui fournissent une plateforme sécurisée pour l’appareil IoT.

Il existe trois domaines principaux qui se produisent à partir du moment où un appareil IoT est activé, jusqu’au chargement et à l’exécution du noyau du système d’exploitation de l’application installée.

  • Démarrage sécurisé de la plateforme
  • Démarrage sécurisé de l’interface UEFI (Unified Extensible Firmware Interface)
  • Intégrité du code Windows

Boot Order

Vous trouverez ici des informations supplémentaires sur le processus de démarrage de Windows 10.

Verrouillage des appareils IoT

Pour verrouiller un appareil Windows IoT, les considérations suivantes doivent être prises en compte.

Démarrage sécurisé de la plateforme

Lorsque l’appareil est activé pour la première fois, la première étape du processus de démarrage global consiste à charger et exécuter des chargeurs de démarrage du microprogramme, qui initialisent le matériel sur les prélèvements et fournissent des fonctionnalités de flashing d’urgence. L’environnement UEFI est ensuite chargé et le contrôle est remis.

Ces chargeurs de démarrage de microprogramme sont spécifiques à SoC. Vous devez donc travailler avec le fabricant de l’appareil approprié pour que ces chargeurs de démarrage soient créés sur l’appareil.

Démarrage sécurisé UEFI

Le démarrage sécurisé UEFI est le premier point d’application de stratégie et se trouve dans UEFI. Il limite le système à autoriser uniquement l’exécution de fichiers binaires signés par une autorité spécifiée, comme les pilotes de microprogramme, les roms d’option, les pilotes UEFI ou les applications et les chargeurs de démarrage UEFI. Cette fonctionnalité empêche un code inconnu de s’exécuter sur la plateforme et d’affaiblir potentiellement la sécurisation de cette dernière. Le démarrage sécurisé réduit le risque d’attaques de programmes malveillants de prédémarrage sur l’appareil, tels que les rootkits.

En tant qu’OEM, vous devez stocker les bases de données UEFI Secure Boot sur l’appareil IoT au moment de la fabrication. Ces bases de données incluent la base de données signature (db), la base de données de signature révoquée (dbx) et la base de données keK (Key Enrollment Key). Ces bases de données sont stockées sur la RAM nonvolatile du microprogramme (NV-RAM) de l’appareil.

  • Base de données de signature (db) : répertorie les signataires ou les hachages d’images des chargeurs de système d’exploitation, des applications UEFI et des pilotes UEFI autorisés à être chargés sur l’appareil

  • Base de données de signature révoquée (dbx) : liste les signataires ou les hachages d’images des chargeurs de système d’exploitation, des applications UEFI et des pilotes UEFI qui ne sont plus approuvés et ne sont pas autorisés à être chargés sur l’appareil.

  • Clé d’inscription de clé (KEK) : contient une liste de clés de signature qui peuvent être utilisées pour mettre à jour les bases de données de signature et de signature révoquées.

Une fois ces bases de données créées et ajoutées à l’appareil, l’OEM verrouille le microprogramme à partir de la modification et génère une clé de signature de plateforme (PK). Cette clé peut être utilisée pour signer des mises à jour vers la clé KEK ou pour désactiver le démarrage sécurisé UEFI.

Voici les étapes effectuées par le démarrage sécurisé UEFI :

  1. Une fois l’appareil activé, les bases de données de signature sont chacune case activée sur la clé de signature de plateforme (PK).
  2. Si le microprogramme n’est pas approuvé, le microprogramme UEFI lance une récupération spécifique à l’OEM pour restaurer le microprogramme approuvé.
  3. Si le Gestionnaire de démarrage Windows ne peut pas être chargé, le microprogramme tente de démarrer une copie de sauvegarde du Gestionnaire de démarrage Windows. En cas d’échec, le microprogramme UEFI lance une correction spécifique à l’OEM.
  4. Le Gestionnaire de démarrage Windows s’exécute et vérifie la signature numérique du noyau Windows. S’il est approuvé, le Gestionnaire de démarrage Windows transmet le contrôle au noyau Windows.

Des détails supplémentaires sur le démarrage sécurisé, ainsi que les conseils de création et de gestion des clés, sont disponibles ici.

Intégrité du code Windows

L’intégrité du code Windows (WCI) améliore la sécurité du système d’exploitation en validant l’intégrité d’un pilote ou d’une application chaque fois qu’il est chargé en mémoire. CI contient deux composants principaux : l’intégrité du code en mode noyau (KMCI) et l’intégrité du code en mode utilisateur (UMCI).

L’intégrité du code configurable (CCI) est une fonctionnalité de Windows 10 qui permet aux générateurs d’appareils de verrouiller un appareil et de l’exécuter uniquement pour exécuter et exécuter du code signé et approuvé. Pour ce faire, les générateurs d’appareils peuvent créer une stratégie d’intégrité du code sur un appareil « golden » (version finale du matériel et des logiciels), puis sécuriser et appliquer cette stratégie sur tous les appareils au niveau de l’usine.

Pour en savoir plus sur le déploiement de stratégies d’intégrité du code, l’audit et l’application, case activée la dernière documentation technet ici.

Voici les étapes effectuées par l’intégrité du code Windows :

  1. Le noyau Windows vérifie tous les autres composants de la base de données de signature avant le chargement. Cela inclut les pilotes, les fichiers de démarrage et ELAM (lancement anticipé anti-programme malveillant).
  2. Le noyau Windows charge les composants approuvés dans le processus de démarrage et interdit le chargement des composants non approuvés.
  3. Windows 10 IoT Standard charge le système d’exploitation, ainsi que toutes les applications installées.

Chiffrement d’appareil BitLocker

Windows 10 IoT Standard implémente également une version légère de BitLocker Device Encryption, protégeant les appareils IoT contre les attaques hors connexion. Cette fonctionnalité est fortement dépendante de la présence d’un module de plateforme sécurisée sur la plateforme, y compris le protocole pré-OS nécessaire dans UEFI qui effectue les mesures nécessaires. Ces mesures de pré-système d’exploitation garantissent que le système d’exploitation a plus tard un enregistrement définitif de la façon dont le système d’exploitation a été lancé ; toutefois, elle n’applique aucune restriction d’exécution.

Conseil

La fonctionnalité BitLocker sur Windows 10 IoT Standard permet le chiffrement automatique du volume de système d’exploitation NTFS tout en liant tous les volumes de données NTFS disponibles à celui-ci. Pour cela, il est nécessaire de s’assurer que le GUID du volume EFIESP est défini sur C12A7328-F81F-11D2-BA4B-00A0C93EC93B.

Device Guard sur Windows IoT Core

La plupart des appareils IoT sont créés en tant qu’appareils à fonction fixe. Cela implique que les générateurs d’appareils connaissent exactement le microprogramme, le système d’exploitation, les pilotes et les applications qui doivent s’exécuter sur un appareil donné. À son tour, ces informations peuvent être utilisées pour verrouiller entièrement un appareil IoT en autorisant uniquement l’exécution de code connu et approuvé. Device Guard sur Windows 10 IoT Standard peut aider à protéger les appareils IoT en veillant à ce que le code exécutable inconnu ou non approuvé ne puisse pas être exécuté sur des appareils verrouillés.

Sécurité clé en main sur IoT Core

Pour faciliter l’activation facile des fonctionnalités de sécurité clés sur les appareils IoT Core, Microsoft fournit un package de sécurité clé en main qui permet aux générateurs d’appareils de générer des appareils IoT entièrement verrouillés. Ce package vous aidera à :

  • Approvisionnement des clés de démarrage sécurisé et activation de la fonctionnalité sur les plateformes IoT prises en charge
  • Configuration et configuration du chiffrement d’appareil à l’aide de BitLocker
  • Lancement du verrouillage de l’appareil pour autoriser uniquement l’exécution d’applications et de pilotes signés

Les étapes suivantes guideront le processus de création d’une image de verrouillage à l’aide du package de sécurité clé en main

Create lockdown image

Prérequis

  • Un PC exécutant Windows 10 Entreprise (les autres versions de Windows ne sont pas prises en charge par les scripts fournis)
  • Kit de développement logiciel (SDK) Windows 10 - Requis pour la génération de certificats
  • Windows 10 ADK - Requis pour la génération CAB
  • Plateforme de référence : le matériel de mise en production avec microprogramme d’expédition, système d’exploitation, pilotes et applications sera nécessaire pour le verrouillage final

Appareils IoT de développement

Windows 10 IoT Standard fonctionne avec différents siliciums utilisés dans des centaines d’appareils. Parmi les appareils de développement IoT suggérés, les fonctionnalités TPM du microprogramme sont prêtes à l’emploi, ainsi que les fonctionnalités de démarrage sécurisé, de démarrage mesuré, de bitLocker et de Device Guard :

  • DragonBoard 410c

    Pour activer le démarrage sécurisé, il peut être nécessaire de provisionner rp Mo. Une fois que l’eMMC a été flashé avec Windows 10 IoT Standard (conformément aux instructions fournies ici, appuyez sur [Power] + [Vol+] + [Vol-] simultanément sur l’appareil lors de la mise sous tension et sélectionnez « Provision RP Mo » dans le menu BDS. Veuillez noter qu’il s’agit d’une étape irréversible.

  • Intel MinnowBoardMax

    Pour Intel MinnowBoard Max, la version du microprogramme doit être 0.82 ou ultérieure (obtenir le dernier microprogramme). Pour activer les fonctionnalités de module de plateforme sécurisée, mettez la carte sous tension avec un clavier et appuyez sur F2 pour entrer le programme d’installation UEFI. Accédez à Gestionnaire de périphériques -> Configuration du système -> Configuration de la sécurité -> PTT et définissez-la sur< Activer>. Appuyez sur F10 pour enregistrer les modifications et poursuivre un redémarrage de la plateforme.

Remarque

Raspberry Pi 2 et 3 ne prennent pas en charge le module TPM et nous ne pouvons donc pas configurer les scénarios de verrouillage.

Générer des packages de verrouillage

Suivez les instructions des deux liens suivants :

Tester les packages de verrouillage

Vous pouvez tester les packages de sécurité générés ici <YOUR_IOT_ADD_ON_WORKSPACE>\Build<ARCH><OEM_NAME>. Sécurité.* .cab> en les installant manuellement sur un appareil déverrouillé en procédant comme suit :

  1. Flashez l’appareil avec l’image déverrouillée (image utilisée pour l’analyse à l’étape précédente).

  2. Connecter à l’appareil (à l’aide de SSH ou de PowerShell)

  3. Copiez les fichiers .cab suivants sur l’appareil sous un répertoire, par exemple. c:\OemInstall

    • OEM. Custom.Cmd.cab
    • OEM. Security.BitLocker.cab
    • OEM. Security.SecureBoot.cab
    • OEM. Security.DeviceGuard.cab
  4. Lancer la préproduction des packages générés en émettant les commandes suivantes

    applyupdate -stage c:\OemInstall\OEM.Custom.Cmd.cab
    

    Si vous utilisez une image personnalisée, vous devrez ignorer ce fichier et modifier manuellement le c:\windows\system32\oemcustomization.cmd contenu disponible dans Output\OEMCustomization\OEMCustomization.cmd le fichier.

    applyupdate -stage c:\OemInstall\OEM.Security.BitLocker.cab
    applyupdate -stage c:\OemInstall\OEM.Security.SecureBoot.cab
    applyupdate -stage c:\OemInstall\OEM.Security.DeviceGuard.cab
    
    
  5. Enfin, validez les packages via

    applyupdate -commit
    
  6. L’appareil redémarre dans le système d’exploitation de mise à jour (affichant les engrenages) pour installer les packages et redémarre à nouveau dans le système d’exploitation principal. Une fois l’appareil redémarré dans MainOS, le démarrage sécurisé est activé et SIPolicy doit être engagé.

  7. Redémarrez l’appareil pour activer le chiffrement BitLocker.

  8. Tester les fonctionnalités de sécurité

    • SecureBoot : essayez bcdedit /debug on , vous obtenez une erreur indiquant que la valeur est protégée par la stratégie de démarrage sécurisée
    • BitLocker : Exécuter start /wait sectask.exe -waitencryptcomplete:1, si ERRORLEVEL est -2147023436 (ERROR_TIMEOUT), le chiffrement n’est pas terminé. Lors de l’exécution de sectask.exe à partir d’un fichier .cmd omettez le start /waitfichier .
    • DeviceGuard : exécutez un fichier binaire non signé ou un fichier binaire signé avec un certificat non dans la liste SIPolicy et vérifiez qu’il ne parvient pas à s’exécuter.

Générer une image de verrouillage

Après avoir validé que les packages de verrouillage fonctionnent conformément aux paramètres définis précédemment, vous pouvez ensuite inclure ces packages dans l’image en suivant les étapes ci-dessous. Lisez le guide de fabrication IoT pour obtenir des instructions de création d’images personnalisées.

  1. Dans le répertoire de l’espace de travail, mettez à jour les fichiers suivants à partir du répertoire de sortie généré ci-dessus

    • 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
  2. Ajouter RetailOEMInput.xml et TestOEMInput.xml sous le répertoire ProductName avec l’ID de fonctionnalité du package de verrouillage

    • <Feature>SEC_BITLOCKER</Feature>
    • <Feature>SEC_SECUREBOOT</Feature>
    • <Feature>SEC_DEVICEGUARD</Feature>
  3. Recréer l’image

    • buildpkg all (cela génère de nouveaux packages de verrouillage basés sur les fichiers de stratégie ci-dessus)
    • buildimage ProductName test(or)retail (cela génère un nouveau flash.ffu)
  4. Flashez l’appareil avec ce nouveau Flash.ffu et validez les fonctionnalités de sécurité.

Consultez SecureSample comme exemple de configuration de dragon board de verrouillage.

Développement avec La mise en œuvre de CodeSigning activé

Une fois que les packages sont générés et que le verrouillage est activé, tous les fichiers binaires introduits dans l’image pendant le développement devront être signés de manière appropriée. Vérifiez que vos fichiers binaires en mode utilisateur sont signés avec la clé *.\Keys\ **-UMCI.pfx. Pour la signature en mode noyau, par exemple pour les pilotes, vous devez spécifier vos propres clés de signature et vous assurer qu’elles sont également incluses dans siPolicy ci-dessus.

Déverrouillage des lecteurs chiffrés

Pendant le développement et les tests, lors de la tentative de lecture du contenu à partir d’un appareil chiffré hors connexion (par exemple, SD carte pour MinnowBoardMax ou le mode de stockage de masse USB de DragonBoard), « diskpart » peut être utilisé pour affecter une lettre de lecteur au volume MainOS et Data (supposons v : pour MainOS et w : pour Les données). Les volumes apparaissent verrouillés et doivent être déverrouillés manuellement. Cette opération peut être effectuée sur n’importe quel ordinateur sur lequel le certificat OEM-DRA.pfx est installé (inclus dans l’exemple DeviceLockDown). Installez PFX, puis exécutez les commandes suivantes à partir d’une invite CMD administrative :

  • manage-bde -unlock v: -cert -cf OEM-DRA.cer
  • manage-bde -unlock w: -cert -cf OEM-DRA.cer

Si le contenu doit être fréquemment consulté hors connexion, bitLocker autounlock peut être configuré pour les volumes après le déverrouillage initial à l’aide des commandes suivantes :

  • manage-bde -autounlock v: -enable
  • manage-bde -autounlock w: -enable

Désactivation de BitLocker

En cas de nécessité de désactiver temporairement BitLocker, initiez une session PowerShell distante avec votre appareil IoT et exécutez la commande suivante : sectask.exe -disable

Remarque

Le chiffrement de l’appareil sera réactivé lors du démarrage de l’appareil suivant, sauf si la tâche de chiffrement planifiée est désactivée.