Navigation und Service

SiSyPHuS Win10: Analyse der TPM und "UEFI Secure Boot"-Nutzung in Windows 10

In diesem Projektteil werden die Interaktionen zwischen dem Betriebssystem und einem Trusted Platform Module (TPM) sowie der Rolle des TPM im Windows Bootprozess analysiert und die Konfigurations- und Protokollierungsmöglichkeiten in Bezug auf das TPM betrachtet.

Aufgrund der langen Laufzeit dieses Projekts wurde für dieses Arbeitspaket eine Differenz-Analyse zwischen der ursprünglichen Version Windows 10, Build 1607 und Windows 10 Enterprise LTSC 2019 (Build 1809) durchgeführt. Diese Version wird von Microsoft bis 2029 unterstützt. Dabei wurden keine wesentlichen Änderungen in Bezug auf Funktionalitäts- und/oder Implementierungsaspekte der Interaktion zwischen Windows 10 und dem Trusted Platform Module (TPM) gefunden. Dies betrifft auch den TPM-Bereitstellungsprozesses, die Rolle, die das TPM bei Aktivitäten des Betriebssystems spielt und die Konfigurations- und Protokollierungsmöglichkeiten in Bezug auf das TPM.

Inhalt Analysedokument

1 Einleitung
1.1 Zusammenfassung
1.2 Executive Summary
1.3 Konzept und Fachbegriffe
2 Technische Analyse der Funktionalitäten
2.1 TPM Kommunikationsschnittstellen
2.1.1 TPM Kommunikation: User-land
2.1.2 TPM Kommunikation: Kernel-land
2.1.3 TPM Nutzungsprofile
2.2 Windows Boot
2.2.1 Boot Manager
2.2.2 Windows Loader
2.2.3 Windows Kernel
2.3 Der Windows Defender ELAM Driver
2.4 Integritätskontrolle
2.5 TPM Inbetriebnahme
2.5.1 Manuelle Inbetriebnahme
2.5.2 Automatische Inbetriebnahme
2.6 Sicherheitsaspekte
3 Konfigurations- und Loggingmöglichkeiten
3.1 Konfigurationsmöglichkeiten
3.1.1 Automatische Konfigurationsmöglichkeiten
3.1.2 Manuelle Konfigurationsmöglichkeiten
3.1.3 Konfigurationsempfehlungen
3.2 Loggingmöglichkeiten
Anhang
Literaturverzeichnis
Schlüsselwörter und Abkürzungsverzeichnis

Zusammenfassung der Analyseergebnisse

Ziel dieses Arbeitspakets ist die Analyse (i) der Interaktionen zwischen dem Microsoft Windows 10 Betriebssystem und einem Trusted Platform Module (TPM); (ii) der Rolle des TPM im Windows Bootprozess (im weiteren Verlauf als Windows Boot bezeichnet); und (iii) die Konfigurations- und Protokollierungsmöglichkeiten (auch als logging bezeichnet) in Bezug auf das TPM. Wie durch das BSI vorgegeben wird der TPM-Standard 2.0 und Windows 10 Build 1607, 64-bit, long-term servicing branch (LTSB), Deutsch betrachtet.

Die Kommunikation mit dem TPM kann sowohl über die Ausführung von Funktionen, die als Teil des TPM Basis Dienstes (TPM Base Services, TBS) in der Datei tbs.dll deklariert sind aufgerufen werden, oder in Form eines abstrahierten Zugriffes durch die Nutzung des von Windows 10 bereitgestellten Next Generation Cryptography API (application programming interface, CNG API). In letzterem Fall abstrahiert die CNG das TPM-Gerät in Form eines in Hardware implementieren Kryptografie-Providers, der als Platform Cryptographic Provider bezeichnet wird.

Windows 10 Kernelland Komponenten (der Betriebssystemkern selbst und Treiber) können mit dem TPM kommunizieren, indem sie Funktionen des TPM Treibers tbs.sys aufrufen.

Abschnitt 2.1.3 enthält Quellcode für die Erstellung von TPM-Nutzungsprofilen (die unter anderem TPM-Zugriffszeiten sowie die zugreifenden ausführbaren Dateien auflisten).

Während des Bootprozesses überprüfen die drei Komponenten Bootmanager, Windows Loader und der Betriebssystemkern die Integrität von auszuführendem Binärcode, indem sie dessen digitale Signatur verifizieren. Diese Überprüfung findet anhand eines öffentlichen kryptografischen Schlüssels statt, der Teil eines von Microsoft ausgestellten Root Zertifikats ist. Diese Zertifikate sind fest im Bootmanager, dem Windows loader und dem Betriebssystemkern in der sogenannten root table hinterlegt.

Darüber hinaus wird bei jedem Systemstart eine Integritätsmessung durchgeführt und kryptografische Hashwerte relevanter Objekte (beispielsweise ausführbarer Dateien oder Bytesequenzen) als Messdaten erhoben. Auch die Speicherung dieser und weiterer relevanter Daten im TPM und Protokolldateien für spätere Analysen wird durch die Komponente zur Integritätsmessung durchgeführt. Die Analyse der Messdaten wird normalerweise durch eine vertrauenswürdige dritte Entität (trusted remote platform) durchgeführt.

Das TPM speichert die Daten in einem TPM-internen Kontext, der als Windows Boot Configuration Log (WBCL) bezeichnet wird. Ein neues WBCL wird bei jedem Systemstart generiert wenn neue Messdaten berechnet werden. Das TPM archiviert jedes WBCL in einer Protokolldatei (die WBCL-Datei), welche im Verzeichnis %SystemRoot%\Logs\MeasuredBoot gespeichert wird und Messdaten in Binärform enthält.

Im Verlauf der Analyse konnte die Festplattenverschlüsselung BitLocker als einzige Windows-Komponente identifiziert werden, die das TPM während des Systemstarts für kryptografische Operationen aktiv verwendet. BitLocker kann auch ohne TPM verwendet werden. Windows selbst nutzt das TPM während des Systemstarts zum Speichern von Integritätsmessungen. Daneben konnten keine anderen Windows-Komponenten und -Verfahren beobachtet werden (z. B. der ELAM-Treiber), die das TPM für kryptografische Operationen oder sicheren Speicher verwenden. Der Abschnitt ELAM Database Parser im Anhang enthält ein Script, welches zum Parsen der Schadsoftware-Datenbank von ELAM genutzt werden kann. Der Abschnitt Measured Executables gibt eine Übersicht über die Namen der ausführbaren Dateien, deren Integrität von Windows 10 gemessen wird.

Entwicklung eines Proof-of-Concept für TPM Initialisierung

In diesem Arbeitspaket wird ein Demonstrator (Proof-of-Concept) entwickelt, um ein TPM außerhalb des Betriebssystems Windows 10 zu initialisieren. Der Initialisierungsprozess umfasst dabei die Erzeugung von Speicherung eines „Owner Authorization Value“ sowie eines „Storage Root Keys“ (SRK). Hierfür wird das tpm2-tools Linux-Toolset in Version 3.1.3-2 genutzt.

Trusted Platform Module Provisioning (Version 1.0)

Inhalt Analysedokument

1 Einleitung
1.1 Konzept und Fachbegriffe
2 Technische Analyse
2.1 Anleitung
Anhang
Literaturverzeichnis
Schlüsselwörter und Abkürzungsverzeichnis

Kurzzusammenfassung der Analyseergebnisse:

Die Inbetriebnahme eines TPMs außerhalb von Windows ist zwar möglich, Windows 10 verweigert aber die Benutzung eines nicht vom Betriebssystem selbst initialisierten TPMs.