Seit Windows 8 ist es möglich, dass private Schlüssel für Zertifikate mit einem – sofern vorhanden – Trusted Platform Modul (TPM) geschützt werden. Dadurch ist eine Nichtexportierbarkeit des Schlüssels – auch mit Werkzeugen wie mimikatz – gegeben.
Auf den Ersten Blick ist allerdings nicht ersichtlich, dass nicht garantiert werden kann, dass auch wirklich ein TPM zum Einsatz kommt. Zwar wird keine Beantragung über die Microsoft Management Console oder AutoEnrollment möglich sein, wenn der Computer über kein TPM verfügt.
Es handelt sich jedoch bei der Konfiguration in der Zertifikatvorlage lediglich um eine Voreinstellung für den Client. Die Zertifizierungsstelle wird bei Beantragung nicht explizit prüfen, ob auch wirklich ein Trusted Platform Modul verwendet wurde.
Um sicherzustellen, dass der private Schlüssel einer Zertifikatanforderung wirklich mit einem Trusted Platform Modul geschützt wurde verbleibt also nur die TPM Key Attestation.
Funktionsweise
Bei der TPM Key Attestation überprüft die Zertifizierungsstelle, ob die Zertifikatanforderung mit dem Endorsement Key des Trusted Platform Moduls signiert wurde. Dies kann auf zwei Weisen erreicht werden:
- EKPUB: Bei dieser Variante wird explizit den einzelnen Endorsement Keys der TPM der einzelnen Maschinen vertraut. Diese werden auf der Zertifizierungsstelle explizit hinterlegt.
- EKCERT: Bei dieser Variante wird den Hersteller-Zertifizierungsstellen der TPMs der einzelnen Maschinen vertraut. Die TPMs werden anhand des Endorsement Zertifikats identifiziert. Die Hersteller-Zertifikate werden auf den Zertifizierungsstellen in einem speziellen Vertrauenssspeicher abgelegt.
Die dritte Option, User Credentials, bei welcher der Benutzer anhand seiner Anmeldedaten bestätigt, dass die Zertifikatanforderung mit einem TPM geschützt wurde, ist natürlich nicht wirklich sicher und wird hier daher nicht weiter behandelt.
Einrichtung der EKPUB Methode auf der Zertifizierungsstelle
Diese Methode hat den Nachteil, dass sie nicht gut skaliert. Ohne eine Managementlösung wird es praktisch unmöglich sein, (auf einem sicheren Weg!) alle Endorsement Keys zu ermitteln.
Die EKPUB Methode ist die strikteste und wird darum auch als "High Assurance Level" angesehen.
Kennen Sie TameMyCerts? TameMyCerts ist ein Add-On für die Microsoft Zertifizierungsstelle (Active Directory Certificate Services). Es erweitert die Funktion der Zertifizierungsstelle und ermöglicht die Anwendung von Regelwerken, um die sichere Automatisierung von Zertifikat-Ausstellungen zu realisieren. TameMyCerts ist einzigartig im Microsoft-Ökosystem, hat sich bereits in unzähligen Unternehmen auf der ganzen Welt bewährt und steht unter einer freien Lizenz. Es kann über GitHub heruntergeladen und kostenlos verwendet werden. Professionelle Wartung wird ebenfalls angeboten.
Endorsement Keys exportieren und hinterlegen
Auf der Zertifizierungsstelle wird ein Verzeichnis erzeugt, in welchem die Prüfsummen der Endorsement Keys als Datei abgespeichert werden. Mit folgendem Befehl wird das Verzeichnis anschließend in die Konfiguration der Zertifizierungsstelle aufgenommen.
certutil.exe -setreg CA\EndorsementKeyListDirectories +"{Verzeichnisname}"
Mit nachfolgendem Windows PowerShell-Befehl kann der Endorsement Key Hash eines Trusted Platform Moduls identifiziert und in eine kompatible Datei geschrieben werden.
New-Item ` -Path (Get-TpmEndorsementKeyInfo -HashAlgorithm SHA256).PublicKeyHash ` –ItemType File
Diese Dateien müssen nun für jeden Clientcomputer im zuvor auf der Zertifizierungsstelle konfigurierten Verzeichnis abgespeichert werden.
Einrichtung der EKCERT Methode auf der Zertifizierungsstelle
Die EKCERT Methode wird als "Medium Assurance Level" angesehen. Sie hat den Vorteil, dass nicht jeder einzelne Endorsement Key ermittelt werden muss. Stattdessen wird den Hersteller-Zertifizierungsstellen vertraut, welche (hoffentlich) ein Endorsementzertifikat für das jeweilige Trusted Platform Modul signiert haben.
Zertifikatspeicher auf der Zertifizierungsstelle erzeugen
Zunächst müssen auf der Zertifizierungsstelle zwei neue Zertifikatspeicher angelegt werden:
- Endorsement Key Trusted Root Certification Authorities
- Endorsement Key Intermediate Certification Authorities
Dies kann mit folgendem Windows PowerShell Befehlen erfolgen:
cd Cert:\LocalMachine New-Item EKROOT New-Item EKCA
Anschließend sollten diese Zertifikatspeicher in der Microsoft Management Console (MMC) für Zertifikate des Computerkontos (certlm.msc) auftauchen.
Zertifizierungsstellenzertifikate ermitteln
Microsoft bietet für den Host Guardian Service (HGS) eine Kabinettdatei an, welche die Hersteller-Zertifizierungsstellen für die gängigsten Trusted Platform Module beinhaltet. Diese kann auch für die TPM Key Attestation verwendet werden.
Die aktuellste Version der Liste kann von diesem Link heruntergeladen werden. Da es sehr komplex ist, alle Herstellerzertifikate zu pflegen, bietet sich dies als eine sinnvolle Ausgangsbasis an.
Möchte man diese Option nicht verwenden, oder ist das Herstellerzertifikat eines Computers nicht enthalten, kann es auch manuell aus dem TPM eines Computers extrahiert werden. Die Ermittlung eines Hersteller-Zertifikats aus einem Trusted Platform Modul ist im Artikel "Ermitteln und Exportieren eines Trusted Platform Module (TPM) Endorsement Zertifikats" beschrieben.
Leider verfügt nicht jedes TPM über ein Endorsementzertifikat, sodass auch der Fall eintreten kann, dass für bestimmte Computermodelle die EKCERT Methode nicht verwendet werden kann.
Zertifizierungsstellenzertifikate importieren
Zunächst sollte die Codesigatur der Kaninettdatei überprüft werden.
Get-AuthenticodeSignature .\TrustedTpm.cab
Anschließend kann die Kabinettdatei entpackt werden:
mkdir .\TrustedTPM expand.exe -F:* TrustedTpm.cab .\TrustedTPM
Der Ordner enthält die Zertifikate und praktischerweise auch ein Installations-Script. Da dieses jedoch für den Host Guardian Service gedacht ist, muss es bearbeitet werden, um für eine Zertifizierungsstelle verwendet werden zu können.
Die Variablen $intermediateStore und $rootStore werden wie folgt angepasst:
$intermediateStore = "Cert:\LocalMachine\EKCA" $rootStore = "Cert:\LocalMachine\EKROOT"
Die Datei ist digital signiert. Durch das Verändern der Datei wird die Signatur ungültig, was wir in diesem Fall in Kauf nehmen müssen.
Nun können die Zertifikate mit dem Script importiert werden.
.\setup.ps1
Die beiden Vertrauensspeicher sollten nun befüllt sein.
Funktionstest
Ob eine Zertifizierungsstelle einem bestimmten Endorsementzertifikat für die TPM Key Attestation vertraut, kann mit folgendem PowerShell-Befehl überprüft werden:
New-Object System.Security.Cryptography.X509Certificates.X509Certificate2 "{Pfad-zum-Zertifikat}"| Confirm-CAEndorsementKeyInfo
Für den Export eines Endorsement Zertifikats siehe Artikel "Ermitteln und Exportieren eines Trusted Platform Module (TPM) Endorsement Zertifikats".
Zertifikatvorlage konfigurieren
Um TPM-geschützte Zertifikate ausstellen zu können, muss zunächst eine Zertifikatvorlage konfiguriert werden, welche den Microsoft Platform Crypto Provider verwendet. Dieser Vorgang ist im Artikel "Konfigurieren einer Zertifikatvorlage für die Verwendung des Microsoft Platform Crypto Provider, um Schutz des privaten Schlüssels durch ein Trusted Platform Module (TPM) zu ermöglichen" beschrieben.
Anschließend kann die Attestierung in der Karteikarte "Key Attestation" konfiguriert werden. Hierbei gibt es folgende Möglichkeiten:
Key Attestation | Beschreibung |
---|---|
None | Die Zertifikatanforderung wird nicht auf Attestierung überprüft. Das Zertifikat wird ausgestellt, auch wenn die Attestierung nicht erfolgreich war. |
Required, if client is capable | Die Zertifikatanforderung wird nur dann auf Attestierung überprüft, wenn der Client diese unterstützt. Das Zertifikat wird ausgestellt, auch wenn die Attestierung nicht erfolgreich war. |
Required | Die Zertifikatanforderung wird auf jeden Fall auf Attestierung überprüft und die Anforderung abgelegt, wenn diese nicht erfolgreich war. |
Perform Attestation based on | Beschreibung |
---|---|
User Credentials | Der Benutzer bestätigt, dass der private Schlüssel mit einem TPM geschützt ist, was natürlich nicht wirklich sicher ist. |
Hardware certificate | Entspricht der EKCERT Methode. |
Hardware Key | Entspricht der EKPUB Methode. |
Die Attestierungsmethoden können durch Mehrfachauswahl auch miteinander kombiniert werden. Somit können beispielsweise Clients, die über kein Endorsementzertifikat verfügen via EKPUB geprüft werden und alle anderen via EKCERT. Die "User credentials" Methode ist natürlich nicht wirklich sicher und sollte daher nicht verwendet werden.
Zertifikatrichtlinien in ausgestellten Zertifikaten inkludieren
Darüber hinaus kann angegeben werden, dass die Zertifizierungsstelle eine Ausstellungsrichtlinie (Issuance policy) in ein ausgestelltes Zertifikat schreibt, um die Art der Attestierung zu bestätigen.
OID | Bedeutung |
---|---|
1.3.6.1.4.1.311.21.32 | TPM Key Attestattion: User Credentials: (Low Assurance) |
1.3.6.1.4.1.311.21.31 | TPM Key Attestattion: Endorsement Certificate: (Medium Assurance) |
1.3.6.1.4.1.311.21.30 | TPM Key Attestattion: Endorsement Key: (High Assurance) |
Aus der Kombination dieser Optionen kann beispielsweise festgelegt werden, dass jeder Antragsteller zwar ein Zertifikat bekommt, aber nur solche, bei denen nachgewiesen werden kann, dass deren private Schlüssel mit einem TPM geschützt sind (was über die Ausstellungsrichtlinie im Zertifikat nachgewiesen werden kann), auch Zugang zu bestimmten Ressourcen gewährt wird.
Damit diese Richtlinien jedoch in ausgestellte Zertifikate geschrieben werden können, muss das Zertifizierungsstellen-Zertifikat auch entsprechend konfiguriert sein. Siehe hierzu die Artikel "Die Ausstellungsrichtlinien (Issuance Policies) für Trusted Platform (TPM) Key Attestation in ein Zertifizierungsstellen-Zertifikat aufnehmen" oder "Die Wildcard Ausstellungsrichtlinie (All Issuance Policies) in ein Zertifizierungsstellen-Zertifikat aufnehmen"
Fehlersuche
Fehlgeschlagene TPM-Attestierungen sind üblicherweise über die Ereignisse mit den Nummern 22 und 53 auf der Zertifizierungsstelle identifizierbar.
Weiterführende Links:
- Beantragen eines durch ein Trusted Platform Modul (TPM) geschütztes Zertifikat – ohne ein TPM zu besitzen
- Konfigurieren einer Zertifikatvorlage für die Verwendung des Microsoft Platform Crypto Provider, um Schutz des privaten Schlüssels durch ein Trusted Platform Module (TPM) zu ermöglichen
Externe Quellen
- TPM Key Attestation (Microsoft)
- Setting up TPM protected certificates using a Microsoft Certificate Authority – Part 1: Microsoft Platform Crypto Provider (Microsoft)
- Setting up TPM protected certificates using a Microsoft Certificate Authority – Part 2: Virtual Smart Cards (Microsoft)
- Setting up TPM protected certificates using a Microsoft Certificate Authority – Part 3: Key Attestation (Microsoft)
- Install trusted TPM root certificates (Microsoft)
4 Gedanken zu „Konfigurieren der Trusted Platform Module (TPM) Key Attestation“
Kommentare sind geschlossen.