Aktivieren von sicherem Start, BitLocker und Device Guard unter Windows 10 IoT Core

Windows 10 IoT Core umfasst Sicherheitsfeatureangebote wie UEFI Secure Boot, BitLocker Device Encryption und Device Guard. Diese unterstützen Geräte-Generatoren beim Erstellen vollständig gesperrter Windows IoT-Geräte, die für viele verschiedene Arten von Angriffen widerstandsfähig sind. Zusammen bieten diese Features den optimalen Schutz, der sicherstellt, dass eine Plattform auf definierte Weise gestartet wird, während unbekannte Binärdateien gesperrt und Benutzerdaten durch die Verwendung der Geräteverschlüsselung geschützt werden.

Startreihenfolge

Ein Verständnis der Startreihenfolge auf einem Windows 10 IoT Core-Gerät ist erforderlich, bevor wir uns mit den einzelnen Komponenten befassen können, die eine sichere Plattform für das IoT-Gerät bereitstellen.

Es gibt drei Standard Bereiche, die auftreten, wenn ein IoT-Gerät eingeschaltet ist, bis hin zum Laden und Ausführen der installierten Anwendung des Betriebssystems.

  • Sicherer Plattformstart
  • Sicherer Start der Unified Extensible Firmware Interface (UEFI)
  • Windows-Codeintegrität

Boot Order

Weitere Informationen zum Windows 10-Startprozess finden Sie hier.

Sperren von IoT-Geräten

Um ein Windows IoT-Gerät zu sperren, müssen die folgenden Überlegungen getroffen werden.

Sicherer Plattformstart

Wenn das Gerät zum ersten Mal eingeschaltet wird, besteht der erste Schritt im allgemeinen Startvorgang darin, Firmware-Startladeprogramme zu laden und auszuführen, die die Hardware auf den Devies initialisieren und notfallblitzende Funktionen bereitstellen. Die UEFI-Umgebung wird dann geladen und die Steuerung wird übergeben.

Diese Firmware-Startladeprogramme sind soC-spezifisch, daher müssen Sie mit dem entsprechenden Gerätehersteller zusammenarbeiten, damit diese Startladeprogramme auf dem Gerät erstellt werden.

UEFI Secure Boot

Der sichere UEFI-Start ist der erste Richtlinienerzwingungspunkt und befindet sich in UEFI. Es schränkt das System ein, nur die Ausführung von Binärdateien zuzulassen, die von einer bestimmten Autorität signiert wurden, z. B. Firmwaretreiber, Options-ROMs, UEFI-Treiber oder Anwendungen und UEFI-Startladeprogramme. Dieses Feature verhindert die Ausführung von unbekanntem Code auf der Plattform und damit eine potenzielle Beeinträchtigung ihres Sicherheitsstatus. Der sichere Start reduziert das Risiko von Angriffen vor dem Start auf das Gerät, z. B. Rootkits.

Als OEM müssen Sie die UEFI Secure Boot-Datenbanken zur Herstellungszeit auf dem IoT-Gerät speichern. Zu diesen Datenbanken gehören die Signaturdatenbank (db), die Datenbank "Revoked Signature" (dbx) und die Datenbank "Key Enrollment Key" (KEK). Diese Datenbanken werden auf dem Nichtvolatile RAM (NV-RAM) des Geräts gespeichert.

  • Signaturdatenbank (db): Hier werden die Signierer oder Imagehashes von Betriebssystemladegeräten, UEFI-Anwendungen und UEFI-Treibern aufgeführt, die auf dem Gerät geladen werden dürfen.

  • Revoked Signature Database (dbx): This lists the signers or image hashes of operating system loaders, UEFI applications and UEFI drivers that are not longer trusted, and are NOT allowed to be loaded on the device

  • Schlüsselregistrierungsschlüsseldatenbank (KEY Enrollment Key Database, KEK): Enthält eine Liste der Signaturschlüssel, die zum Aktualisieren der Signatur und widerrufenen Signaturdatenbanken verwendet werden können.

Sobald diese Datenbanken erstellt und dem Gerät hinzugefügt wurden, sperrt der OEM die Firmware von der Bearbeitung und generiert einen Plattformsignaturschlüssel (PK). Dieser Schlüssel kann zum Signieren von Updates beim KEK oder zum Deaktivieren des sicheren UEFI-Starts verwendet werden.

Die folgenden Schritte werden vom sicheren UEFI-Start ausgeführt:

  1. Nachdem das Gerät eingeschaltet wurde, werden die Signaturdatenbanken jeweils anhand des Plattformsignaturschlüssels (PK) überprüft.
  2. Wenn die Firmware nicht vertrauenswürdig ist, initiiert die UEFI-Firmware OEM-spezifische Wiederherstellung, um vertrauenswürdige Firmware wiederherzustellen.
  3. Wenn der Windows-Start-Manager nicht geladen werden kann, versucht die Firmware, eine Sicherungskopie des Windows-Start-Managers zu starten. Wenn dies ebenfalls fehlschlägt, initiiert die UEFI-Firmware oemspezifische Korrekturen.
  4. Der Windows-Start-Manager wird ausgeführt und überprüft die digitale Signatur des Windows-Kernels. Wenn vertrauenswürdig, übergibt der Windows-Start-Manager die Steuerung an den Windows-Kernel.

Weitere Details zum sicheren Start sowie Anleitungen zur Schlüsselerstellung und -verwaltung finden Sie hier.

Windows-Codeintegrität

Windows Code Integrity (WCI) verbessert die Sicherheit des Betriebssystems, indem die Integrität eines Treibers oder einer Anwendung bei jedem Laden in den Arbeitsspeicher überprüft wird. CI enthält zwei Standard Komponenten: Kernelmodus-Codeintegrität (KMCI) und Codeintegrität (User Mode Code Integrity, UMCI).

Konfigurierbare Codeintegrität (CCI) ist ein Feature in Windows 10, mit dem Geräte-Generatoren ein Gerät sperren und nur code ausführen können, der signiert und vertrauenswürdig ist. Dazu können Geräte-Generatoren eine Codeintegritätsrichtlinie auf einem goldenen Gerät (endgültige Version der Hardware und Software) erstellen und diese Richtlinie dann auf allen Geräten auf dem Werksboden sichern und anwenden.

Weitere Informationen zur Bereitstellung von Codeintegritätsrichtlinien, Überwachung und Erzwingung finden Sie in der neuesten Technet-Dokumentation hier.

Die folgenden Schritte werden von der Windows-Codeintegrität ausgeführt:

  1. Der Windows-Kernel überprüft vor dem Laden alle anderen Komponenten anhand der Signaturdatenbank. Dazu gehören Treiber, Startdateien und ELAM (Early Launch Anti-Malware).
  2. Der Windows-Kernel lädt die vertrauenswürdigen Komponenten im Startprozess und verhindert das Laden der nicht vertrauenswürdigen Komponenten.
  3. Das Betriebssystem Windows 10 IoT Core lädt zusammen mit installierten Anwendungen.

BitLocker-Geräteverschlüsselung

Windows 10 IoT Core implementiert auch eine einfache Version der BitLocker-Geräteverschlüsselung, um IoT-Geräte vor Offlineangriffen zu schützen. Diese Funktion hat eine starke Abhängigkeit vom Vorhandensein eines TPM auf der Plattform, einschließlich des erforderlichen Pre-OS-Protokolls in UEFI, das die erforderlichen Messungen durchführt. Diese Vorbetriebssystemmessungen stellen sicher, dass das Betriebssystem später einen endgültigen Überblick über den Start des Betriebssystems hat; Sie erzwingt jedoch keine Ausführungseinschränkungen.

Tipp

BitLocker-Funktionen unter Windows 10 IoT Core ermöglichen die automatische Verschlüsselung des NTFS-basierten Betriebssystemvolumes, während alle verfügbaren NTFS-Datenvolumes an sie gebunden werden. Hierfür muss sichergestellt werden, dass die EFIESP-Volume-GUID auf C12A7328-F81F-11D2-BA4B-00A0C93EC93B festgelegt ist.

Device Guard unter Windows IoT Core

Die meisten IoT-Geräte werden als Geräte mit fester Funktion erstellt. Dies bedeutet, dass Geräte-Generatoren genau wissen, welche Firmware, welches Betriebssystem, welche Treiber und Anwendungen auf einem bestimmten Gerät ausgeführt werden sollen. Diese Informationen können wiederum verwendet werden, um ein IoT-Gerät vollständig zu sperren, indem nur die Ausführung bekannter und vertrauenswürdiger Code zugelassen wird. Device Guard unter Windows 10 IoT Core kann zum Schutz von IoT-Geräten beitragen, indem sichergestellt wird, dass unbekannter oder nicht vertrauenswürdiger ausführbarer Code nicht auf gesperrten Geräten ausgeführt werden kann.

Turnkey Security on IoT Core

Um die einfache Aktivierung wichtiger Sicherheitsfeatures auf IoT Core-Geräten zu erleichtern, stellt Microsoft ein Turnkey Security Package bereit, mit dem Geräte-Generatoren vollständig gesperrte IoT-Geräte erstellen können. Dieses Paket hilft ihnen bei:

  • Bereitstellen von Schlüsseln für den sicheren Start und Aktivieren des Features auf unterstützten IoT-Plattformen
  • Einrichten und Konfiguration der Geräteverschlüsselung mit BitLocker
  • Initiieren der Gerätesperre, um nur die Ausführung signierter Anwendungen und Treiber zuzulassen

Die folgenden Schritte führen durch den Prozess zum Erstellen eines Sperrmodusimages mithilfe des Turnkey Security Package

Create lockdown image

Voraussetzungen

  • Ein PC mit Windows 10 Enterprise (andere Windows-Versionen werden von den bereitgestellten Skripts nicht unterstützt)
  • Windows 10 SDK – Erforderlich für die Zertifikatgenerierung
  • Windows 10 ADK – Erforderlich für die CAB-Generation
  • Referenzplattform – Releasehardware mit Versandfirmware, Betriebssystem, Treibern und Anwendungen ist für die endgültige Sperrung erforderlich.

IoT-Geräte entwickeln

Windows 10 IoT Core arbeitet mit verschiedenen Siliziums zusammen, die in Hunderten von Geräten verwendet werden. Von den vorgeschlagenen IoT-Entwicklungsgeräten bieten die folgenden Firmware-TPM-Funktionen sofort verfügbar, zusammen mit den Funktionen "Sicherer Start", "Kontrollierter Start", "BitLocker" und "Device Guard":

  • Qualcomm DragonBoard 410c

    Um den sicheren Start zu aktivieren, kann es erforderlich sein, RPMB bereitzustellen. Sobald das eMMC mit Windows 10 IoT Core blinkt (wie hier beschrieben, drücken Sie [Power] + [Vol+] + [Vol-] gleichzeitig auf dem Gerät, wenn sie einschalten und im BDS-Menü "Bereitstellen von RPMB" auswählen. Bitte beachten Sie, dass dies ein unumkehrbarer Schritt ist.

  • Intel MinnowBoardMax

    Für Intels MinnowBoard Max muss die Firmwareversion 0.82 oder höher sein (die neueste Firmware abrufen). Um TPM-Funktionen zu aktivieren, schalten Sie ein Board mit angeschlossener Tastatur ein, und drücken Sie F2, um das UEFI-Setup einzugeben. Wechseln Sie zu Geräte-Manager –> Systemeinrichtung –> Sicherheitskonfiguration –> PTT, und legen Sie sie auf <"Aktivieren"> fest. Drücken Sie F10, um Änderungen zu speichern und mit einem Neustart der Plattform fortzufahren.

Hinweis

Raspberry Pi 2 oder 3 unterstützen TPM nicht und wir können Sperrmodusszenarien nicht konfigurieren.

Generieren von Sperrmoduspaketen

Folgen Sie den Anweisungen in den folgenden beiden Links:

Testen von Sperrmoduspaketen

Sie können die hier <generierten Sicherheitspakete YOUR_IOT_ADD_ON_WORKSPACE>\Build<ARCH><OEM_NAME> testen. Security.* .cab> , indem Sie sie manuell auf einem entsperrten Gerät installieren, indem Sie die folgenden Schritte ausführen.

  1. Flashen Sie das Gerät mit dem entsperrten Bild (Bild, das zum Scannen in einem früheren Schritt verwendet wird).

  2. Verbinden auf das Gerät (mithilfe von SSH oder mithilfe von PowerShell)

  3. Kopieren Sie die folgenden .cab Dateien unter einem Verzeichnis auf das Gerät, z. B. c:\OemInstall

    • OEM. Custom.Cmd.cab
    • OEM. Security.BitLocker.cab
    • OEM. Security.SecureBoot.cab
    • OEM. Security.DeviceGuard.cab
  4. Initiieren des Stagings der generierten Pakete durch Ausgeben der folgenden Befehle

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

    Wenn Sie ein benutzerdefiniertes Bild verwenden, müssen Sie diese Datei überspringen und die Inhalte manuell bearbeiten, die c:\windows\system32\oemcustomization.cmd in Output\OEMCustomization\OEMCustomization.cmd der Datei verfügbar sind.

    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. Übernehmen Sie schließlich die Pakete über

    applyupdate -commit
    
  6. Das Gerät startet neu in das Updatebetriebssystem (mit Zahnrädern), um die Pakete zu installieren, und wird erneut auf Standard Betriebssystem neu gestartet. Sobald das Gerät wieder in MainOS neu gestartet wird, wird der sichere Start aktiviert, und SIPolicy sollte eingebunden werden.

  7. Starten Sie das Gerät erneut neu, um die BitLocker-Verschlüsselung zu aktivieren.

  8. Testen der Sicherheitsfeatures

    • SecureBoot: Try bcdedit /debug on , erhalten Sie eine Fehlermeldung, die besagt, dass der Wert durch die Richtlinie für den sicheren Start geschützt ist.
    • BitLocker: Führen Sie aus start /wait sectask.exe -waitencryptcomplete:1, wenn ERRORLEVEL ( -2147023436 ERROR_TIMEOUT) ist, ist die Verschlüsselung nicht abgeschlossen. Wenn sectask.exe aus einer .cmd Datei ausgeführt wird, wird die start /waitDatei weggelassen.
    • DeviceGuard: Führen Sie alle nicht signierten Binärdateien oder eine binär signierte Binärdatei aus, die nicht in der SIPolicy-Liste enthalten ist, und vergewissern Sie sich, dass sie nicht ausgeführt werden kann.

Generieren eines Sperrmodusbilds

Nachdem Sie überprüft haben, dass die Sperrmoduspakete gemäß den zuvor definierten Einstellungen funktionieren, können Sie diese Pakete dann in das Bild einschließen, indem Sie die folgenden schritte ausführen. Lesen Sie den IoT-Fertigungsleitfaden für benutzerdefinierte Bilderstellungsanweisungen.

  1. Aktualisieren Sie im Arbeitsbereichsverzeichnis die folgenden Dateien aus dem oben generierten Ausgabeverzeichnis.

    • 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. Hinzufügen von RetailOEMInput.xml und TestOEMInput.xml unter dem Verzeichnis "ProductName" mit Sperrmoduspaket-Feature-ID

    • <Feature>SEC_BITLOCKER</Feature>
    • <Feature>SEC_SECUREBOOT</Feature>
    • <Feature>SEC_DEVICEGUARD</Feature>
  3. Image erneut generieren

    • buildpkg all (Dadurch werden neue Sperrmoduspakete basierend auf den oben genannten Richtliniendateien generiert)
    • buildimage ProductName test(or)retail (dies generiert neue Flash.ffu)
  4. Flashen Sie das Gerät mit diesem neuen Flash.ffu, und überprüfen Sie die Sicherheitsfeatures.

Sehen Sie sich SecureSample als Beispiel für eine Lockdown-Dragon board-Konfiguration an.

Entwickeln mit aktivierter CodeSigning-Erzwingung

Sobald die Pakete generiert und der Sperrmodus aktiviert wurde, müssen alle binärdateien, die während der Entwicklung in das Image eingeführt wurden, entsprechend signiert werden. Stellen Sie sicher, dass Ihre Binärdateien im Benutzermodus mit dem Schlüssel *.\Keys\ **-UMCI.pfx signiert sind. Für die Kernelmodussignierung, z. B. für Treiber, müssen Sie Ihre eigenen Signaturschlüssel angeben und sicherstellen, dass sie auch in der obigen SIPolicy enthalten sind.

Entsperren verschlüsselter Laufwerke

Während der Entwicklung und tests kann beim Versuch, Inhalte von einem verschlüsselten Gerät offline zu lesen (z. B. SD-Karte für MinnowBoardMax oder DragonBoards eMMC über den USB-Massenspeichermodus), kann "diskpart" verwendet werden, um einem Laufwerkbuchstaben MainOS und Datenvolume zuzuweisen (angenommen v: für MainOS und w: für Daten). Die Volumes werden gesperrt angezeigt und müssen manuell entsperrt werden. Dies kann auf jedem Computer erfolgen, auf dem das OEM-DRA.pfx-Zertifikat installiert ist (im DeviceLockDown-Beispiel enthalten). Installieren Sie pfX, und führen Sie dann die folgenden Befehle aus einer administrativen CMD-Eingabeaufforderung aus:

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

Wenn häufig auf die Inhalte offline zugegriffen werden muss, kann die Automatische Sperrung von BitLocker nach der ersten Entsperrung mithilfe der folgenden Befehle für die Volumes eingerichtet werden:

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

Deaktivieren von BitLocker

Sollte es zu einer vorübergehenden Deaktivieren von BitLocker kommen, eine PowerShell-Remotesitzung mit Ihrem IoT-Gerät initieren und den folgenden Befehl ausführen: sectask.exe -disable

Hinweis

Die Geräteverschlüsselung wird beim nachfolgenden Gerätestart erneut aktiviert, es sei denn, die geplante Verschlüsselungsaufgabe ist deaktiviert.