Seit Windows NT 4.0 gibt es im Rahmen der CryptoAPI die Cryptographic Service Provider (CSP).
Sinn ist, dass sich eine Anwendung nicht um die konkrete Implementierung der Schlüsselverwaltung kümmern muss, sondern dies generischen Betriebssystem-Schnittstellen überlassen kann. Ebenso soll hiermit vermieden werden, dass kryptographische Schlüssel im Sicherheitskontext des Benutzers/der verwendenen Anwendung in den Arbeitsspeicher geladen werden (ein fataler Sicherheitsvorfall, der genau auf diesem Problem basierte war der Heartbleed Vorfall).
Beispielsweise spielt es für die Zertifizierungsstellen-Software technisch keine Rolle, wie ihr privater Schlüssel geschützt ist – ob in Software oder beispielsweise mit einem Hardware Security Modul (HSM). Der Aufruf des privaten Schlüssel ist für die Zertifizierungsstelle immer identisch.
Mit Windows Vista und der Einführung der Cryptography Next Generation (CNG) als Ablöser für die CryptoAPI wurden die Key Storage Provider (KSP) eingeführt.
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.
Einleitung
Zu den Vorteilen von Key Storage Providern zählen unter Anderem:
- Schlüsselisolation. Schlüssel können verwendet werden, ohne dass sie den KSP verlassen (wichtig für Verwendung von in Hardware gespeicherten Schlüsseln).
- Auditierbarkeit von Schlüsselzugriffen (siehe Ereignis Nr. 5058 und 5059).
- Unterstützung für moderne Algorithmen wie SHA2 und auf elliptischen Kurven basierende Schlüssel.
Hardware-Hersteller können eigene CSP oder KSP entwickeln, um den Zugriff auf ihre Produkte zu ermöglichen. Dies ist häufig bei Hardware Security Modulen (HSM, etwa von SafeNet oder Utimaco) oder Smartcards (etwa von Gemalto oder Yubico) der Fall.
Speicherorte
Hiermit sind die Speicherorte der privaten Schlüssel gemeint. Öffentliche Schlüssel sind Bestandteil der dazugehörigen Zertifikate.
Bereich | CryptoAPI / CSP | CNG / KSP |
---|---|---|
Benutzer | %AppData%\Microsoft\Crypto\RSA\{Benutzer-SID} %AppData%\Microsoft\Crypto\DSA\{Benutzer-SID} | %AppData%\Microsoft\Crypto\Keys |
Lokales System | %AllUsersProfile%\Application Data\Microsoft\Crypto\RSA\S-1-5-18 %AllUsersProfile%\Application Data\Microsoft\Crypto\DSA\S-1-5-18 | %AllUsersProfile%\Application Data\Microsoft\Crypto\SystemKeys |
Lokaler Dienst | %AllUsersProfile%\Application Data\Microsoft\Crypto\RSA\S-1-5-19 %AllUsersProfile%\Application Data\Microsoft\Crypto\DSA\S-1-5-19 | %WinDir%\ServiceProfiles\LocalService |
Netzwerkdienst | %AllUsersProfile%\Application Data\Microsoft\Crypto\RSA\S-1-5-20 %AllUsersProfile%\Application Data\Microsoft\Crypto\DSA\S-1-5-20 | %WinDir%\ServiceProfiles\NetworkService |
Alle Benutzer | %AllUsersProfile%\Application Data\Microsoft\Crypto\RSA\MachineKeys %AllUsersProfile%\Application Data\Microsoft\Crypto\DSA\MachineKeys | %AllUsersProfile%\Application Data\Microsoft\Crypto\Keys |
Übersicht über die im Windows System vorhandenen Provider
Nachfolgend eine Übersicht über auf einem modernen Windows-System vorhandene KSP und CSP.
Key Storage Provider
Provider | Anmerkungen |
---|---|
Microsoft Passport Key Storage Provider | Wird u.A. von Windows Hello for Business verwendet. Kann Schlüssel transparent entweder in Software, oder (sofern vorhanden) in einem Trusted Platform Modul (TPM) speichern. |
Microsoft Platform Crypto Provider | Kann Schlüssel in einem Trusted Platform Module (TPM) speichern. Unterstützt nicht alle CNG-Algorithmen aufgrund Einschränkungen im jeweiligen TPM-Standard. ECC-Schlüssel bei Beantragung über eine Zertifikatvorlage erst ab Windows 10 21H2 oder Windows 11 möglich. |
Microsoft Smart Card Key Storage Provider | Generischer Provider, um Schlüssel in einer Smartcard zu speichern. Wird von vielen Smartcard-Herstellern unterstützt. Die Unterstützung für bestimmte Algorithmen hängt von der verwendeten Smartcard ab, z.B. unterstützt die Microsoft virtuelle Smartcard keine ECC-Schlüssel. |
Microsoft Software Key Storage Provider | Generischer Provider, um Schlüssel in Software zu speichern. Unterstützt alle im Windows Ökosystem vorhandenen Algorithmen für Zertifikate. Sollte der Mindest-Standard sein. |
Cryptographic Service Provider
Unter den gelisteten CSP können die folgenden für die Erzeugung von RSA-Schlüsseln bis 16384 Bit Schlüsselgröße verwendet werden:
- Microsoft Base Cryptographic Provider v1.0
- Microsoft Base Smart Card Crypto Provider (maximal 2048 Bit Schlüsselgröße)
- Microsoft Enhanced Cryptographic Provider v1.0
- Microsoft Enhanced RSA and AES Cryptographic Provider
- Microsoft RSA SChannel Cryptographic Provider (nicht für reine Signaturschlüssel)
- Microsoft Strong Cryptographic Provider
Provider | Anmerkungen |
---|---|
Microsoft Base Cryptographic Provider v1.0 | Sollte nach Möglichkeit nicht mehr verwendet werden. |
Microsoft Base DSS and Diffie-Hellman Cryptographic Provider | Nicht für die Erzeugung von RSA Schlüsseln verwendbar. Sollte nach Möglichkeit nicht mehr verwendet werden. |
Microsoft Base DSS Cryptographic Provider | Nicht für die Erzeugung von RSA Schlüsseln verwendbar. |
Microsoft Base Smart Card Crypto Provider | Generischer Provider, um Schlüssel in einer Smartcard zu speichern. Maximale Schlüssellänge auf 2048 Bit begrenzt. Sollte nach Möglichkeit nicht mehr verwendet werden. |
Microsoft DH SChannel Cryptographic Provider | Nicht für die Erzeugung von RSA Schlüsseln verwendbar. |
Microsoft Enhanced Cryptographic Provider v1.0 | Sollte nach Möglichkeit nicht mehr verwendet werden. |
Microsoft Enhanced DSS and Diffie-Hellman Cryptographic Provider | Nicht für die Erzeugung von RSA Schlüsseln verwendbar. |
Microsoft Enhanced RSA and AES Cryptographic Provider | Sollte nach Möglichkeit nicht mehr verwendet werden. |
Microsoft RSA SChannel Cryptographic Provider | Unterstützt das SChannel Security Package und AES mit bis zu 256 Bit Schlüssellänge. Sollte deshalb für TLS/SSL (z.B. Webserver, Remotedesktop) verwendet werden, wenn kein Key Storage Provider möglich ist. Standardeinstellung für Webserver und CEP Encryption Zertifikatvorlagen. |
Microsoft Strong Cryptographic Provider | Sollte nach Möglichkeit nicht mehr verwendet werden. |
Verwendung von Key Storage Providern
Die Verwendbarkeit von Key Storage Providern in einer Zertifikatvorlage wird dadurch freigegeben, dass die Kompatibilität von Zertifizierungsstelle und beantragenden Clients auf mindestens Windows Vista / Windows Server 2008 gestellt wird. Hierdurch wird die Zertifkatvorlage auf die Version 3 angehoben und kann nicht mehr durch ältere Betriebssysteme verwendet werden.
Siehe hierzu auch folgende Artikel:
- Beschreibung der Generationen von Zertifikatvorlagen
- Wie sind die Kompatibilitätseinstellungen für Zertifikatvorlagen technisch abgebildet?
Bin ich bei der Konfiguration meiner Zertifikatvorlage frei in der Wahl des Providers?
Nein, die Verwendung des Providers hängt neben dessen kryptographischen Fähigkeiten auch davon ab, ob die Anwendung ihn verwenden kann. Beispielsweise sind Betriebssysteme vor Windows Vista nicht in der Lage, Key Storage Provider einzusetzen. Der Microsoft Platform Crypto Provider unterstützt beispielsweise nicht alle Algorithmen.
Ebenfalls sind einige Anwendungen bis heute auf die Verwendung eines CSP angewiesen. Ein prominentes Beispiel ist der Registrierungsdienst für Netzwerkgeräte (NDES), sowie der dazugehörige Connector für Microsoft Intune.
Siehe hierzu auch folgende Artikel:
- Liste der Use Cases für Zertifikate, die bestimmte Cryptographic Service Provider (CSP) oder Key Storage Provider (KSP) benötigen
- Welcher Cryptographic Service Provider (CSP) sollte für den Registrierungsdienst für Netzwerkgeräte (NDES) verwendet werden?
- Eigene Registration Authority (RA) Zertifikatvorlagen für den Registrierungsdienst für Netzwerkgeräte (NDES) verwenden
Muss ich unbedingt einen Key Storage Provider verwenden?
Es kann als Best Practice angesehen werden, überall wo es möglich ist einen Key Storage Provider anstelle eines Cryptographic Service Provider einzusetzen und dafür zu sorgen, dass selbst entwickelte Anwendungen zu diesen kompatibel sind.
Wie kann ich die auf dem System installierten Provider anzeigen?
Die auf einem System vorhandenen Provider können mit folgendem Befehl aufgelistet werden:
certutil -csplist
Über die Windows PowerShell ist das Auflisten über das ICSPInformations COM Objekt möglich:
$KspList = New-Object -ComObject 'X509Enrollment.CCspInformations' $KspList.AddAvailableCsps() $KspList | Select-Object -Property Name
Wie kann ich herausfinden, welchen Provider ein bestimmtes Zertifikat verwendet?
Hierfür gibt es einen "certutil"-Befehl. Das entsprechende Zertifikat wird anhand seiner SHA1-Prüfsumme (auch Thumbprint genannt) identifiziert.
Für den Computer-Zertifikatspeicher:
certutil -verifystore my {Thumbprint}
Für den Zertifikatspeicher des aktuell angemeldeten Benutzers:
certutil -user -verifystore my {Thumbprint}
Wie kann ich die durch einen bestimmten Provider geschützte Schlüssel auflisten?
Auch hierfür gibt es einen "certutil"-Befehl:
Für den Computer-Zertifikatspeicher:
certutil -csp "{CSPName}" -key
Für den Zertifikatspeicher des aktuell angemeldeten Benutzers:
certutil -user -csp "{CSPName}" -key
Weiterführende Links:
- Grundlagen: Schlüsselalgorithmen, Signaturalgorithmen und Signaturhashalgorithmen
- Grundlagen: Elliptische Kurven in Hinsicht auf ihre Verwendung in der Public Key Infrastruktur
Externe Quellen
- Cryptography Next Generation (Microsoft Corporation)
- CNG Key Storage Providers (Microsoft Corporation)
- CryptoAPI Cryptographic Service Providers (Microsoft Corporation)
- certutil (Microsoft Coropration)
- Difference between Cryptographic Service Providers (Microsoft Strong vs RSA SChannel) (Microsoft TechNet Foren)
- Understanding Microsoft Cryptographic Service Providers (PKI Solutions, Inc.)
- Checking Windows Hello Key Storage: TPM or Software? (Helge Klein)
- Certificate enrollment: Crypto API, CNG, and other Windows APIs (Johannes Passing)
- How to keep a secret in Windows (Ryan Hurst)
26 Gedanken zu „Grundlagen: Cryptographic Service Provider (CSP) und Key Storage Provider (KSP)“
Kommentare sind geschlossen.