CNG-Provider - Verfügbare Key Storage Provider in Windows

Dieses Kapitel beschreibt den Microsoft Base Cryptographic Provider.

Der Microsoft Base Cryptographic Provider ist ein grundlegender Provider in dem CryptoAPI, der grundlegende kryptographische Dienste anbietet. Er unterstützt grundlegende Algorithmen wie RSA (bis zu 512 Bit), RC2, RC4 (40 Bit) und DES (56 Bit). Obwohl die Schlüssellängen und Algorithmen begrenzt sind, ist die Kompatibilität mit älteren Anwendungen und Systemen gewährleistet. Dieser Provider ist für einfache kryptografische Operationen ausgelegt und eignet sich daher für Anwendungen mit minimalen Sicherheitsanforderungen.

Microsoft Enhanced Cryptographic Provider

Der Microsoft Enhanced Cryptographic Provider (Enhanced Provider) erweitert die Fähigkeiten des Microsoft Base Cryptographic Provider (Base Provider), indem er eine höhere Sicherheit durch längere Schlüssel und zusätzliche Algorithmen unterstützt. Er ist mit allen Versionen des CryptoAPI kompatibel.

Key Features:

  • Stärkere Keys und Algorithmen:
    • RSA: Bis zu 1024 Bit für Signatur und Key Exchange.
    • RC2 und RC4: Bis zu 128 Bit, mit einstellbarer Salt-Länge.
    • Dreifach-DES: Unterstützung von 112 Bit (2 Keys) und 168 Bit (3 Keys).
  • Versionierung:
    • Standard-Provider-Name: MS_ENHANCED_PROV (behält aus Kompatibilitätsgründen Version 1.0 bei).
    • Aktuelle Version: 2.0 (identifiziert mit CryptGetProvParam mit PP_VERSION, Rückgabe 0x0200).

Vergleich der Schlüssellängen:

Table 1. Vergleich der Schlüssellängen
Algorithmus Basisanbieter Erweiterter Anbieter
RSA ( Signatur & Austausch) 512 bits 1024 bits
RC2/RC4 (Block-/Stream- Cipher) 40 bits 128 bits
DES 56 bits 56 bits
Triple DES (2-key/3-key) Not supported 112 / 168 bits

Kompatibilität:

  • Enhanced Provider und Strong Provider sind rückwärtskompatibel mit dem Base Provider.
  • Es können keine RC2- oder RC4-Schlüssel mit einer Länge von 40 Bit erzeugt werden (Standardeinstellung der Basis), aber solche Schlüssel können importiert und verwendet werden.

Der Enhanced Provider bietet mehr Sicherheit bei gleichzeitiger Kompatibilität mit Legacy Systemen.

CNG Key Storage Providers (KSPs)

Das Cryptography API: Next Generation (CNG) unterscheidet im Gegensatz zum älteren CryptoAPI zwischen Kryptoanbietern und Schlüsselspeicheranbietern (KSPs). KSPs verwalten Schlüssel für Erstellung, Speicherung, Export, Import und Verwendung. Je nach Implementierung können sie auch asymmetrische Verschlüsselung, Geheimhaltungsvereinbarungen und Signierung verwalten. Windows enthält die folgenden integrierten KSPs, während Anbieter benutzerdefinierte Anbieter hinzufügen können.

Microsoft Software Key Storage Provider

Unterstützt die softwarebasierte Erstellung und Speicherung von Schlüsseln mit den folgenden Algorithmen:
Table 2.
Algorithmus Zweck Key Length (bits)
Diffie-Hellman (DH) Geheime Vereinbarung, Schlüsselaustausch 512 to 4096 (64-bit Stufen)
Digitale Signatur Algorithmus (DSA) Signaturen 512 to 1024 (64-bit Stufen)
Elliptic Curve Diffie-Hellman (ECDH) Geheime Vereinbarung, Schlüsselaustausch P256, P384, P521
Elliptic Curve Digital Signatur Algorithmus (ECDSA) Signaturen P256, P384, P521
RSA Asymmetrische Verschlüsselung, Signierung 512 bis 16384 (in 64-Bit-Stufen)

Microsoft Smart Card Key Storage Provider

Unterstützt hardwaregestützte Schlüsselerstellung und -speicherung mit Smartcards, mit Unterstützung für die folgenden Algorithmen:
Table 3.
Algorithmus Zweck Key Length (bits)
Diffie-Hellman (DH) Geheime Vereinbarung, Schlüsselaustausch 512 to 4096 (in 64-Bit-Stufen)
Elliptic Curve Diffie-Hellman (ECDH) Geheime Vereinbarung, Schlüsselaustausch P256, P384, P521
Elliptic Curve Digital Signature Algorithm (ECDSA) Signaturen P256, P384, P521
RSA symmetrische Verschlüsselung, Signierung 512 to 16384 (in 64-Bit-Stufen)

Zusammenfassung

CNG-KSPs bieten Flexibilität und erhöhte Sicherheit für die Schlüsselverwaltung:

  • Microsoft Software KSP: Geeignet für softwarebasierte kryptografische Schlüssel.
  • Microsoft Smart Card KSP: Entwickelt für hardwaregestützte kryptografische Operationen auf Smartcards.
  • Custom KSPs: Anbieter können die Funktionalität erweitern, indem sie zusätzliche Schlüsselspeicheranbieter erstellen.

Diese KSPs ermöglichen robuste kryptografische Arbeitsabläufe unter Einhaltung moderner Sicherheitsstandards.

Unterstützte Schlüsselalgorithmen im CNG-Provider

Aufgrund von Kompatibilitätseinschränkungen zwischen OpenSSL und Windows CNG sind nicht alle Algorithmen, die von beiden Plattformen unterstützt werden, im CNG-Provider implementiert.
Table 4. Unterstützte elliptische Kurven
Name der Kurve OID Bits Unterstützt von Microsoft CNG Unterstützt von OpenSSL Status Implementiert
nistP256 / prime256v1 1.2.840.10045.3.1.7 256 Ja Ja Modern (Recommended) Ja
nistP384 / secp384r1 1.3.132.0.34 384 Ja Ja Modern (Recommended) Ja
nistP521 / secp521r1 1.3.132.0.35 521 Ja Ja Modern (Recommended) Ja
brainpoolP256r1 1.3.36.3.3.2.8.1.1.7 256 Ja Ja Modern (Optional) Implementiert, aber derzeit nicht für die Verwendung in OpenSSL Version 3.0.15 unterstützt
brainpoolP384r1 1.3.36.3.3.2.8.1.1.11 384 Ja Ja Modern (Optional) Implementiert, aber derzeit nicht für die Verwendung in OpenSSL Version 3.0.15 unterstützt
brainpoolP512r1 1.3.36.3.3.2.8.1.1.13 512 Ja Ja Modern (Optional) Implementiert, aber derzeit nicht für die Verwendung in OpenSSL Version 3.0.15 unterstützt
Unterstützte RSA-Algorithmen
Table 5.
Algorithmus Key Size Unterstützt von Microsoft CNG Unterstützt von OpenSSL Status Implementiert
RSA-2048 2048 bits Ja Ja Modern (empfohlen) Ja
RSA-3072 3072 bits Ja Ja Modern (empfohlen für Langzeit) Ja
RSA-4096 4096 bits Ja Ja Modern (Hochsicherheit) Ja
RSA-512 512 bits Yes (Deprecated) Yes (Deprecated) Legacy (unsicher) Ja, aber wegen der geringen Sicherheit ist die Verwendung durch OpenSSL verboten.
RSA-1024 1024 bits Ja (Deprecated) Ja (Deprecated) Legacy (unsicher) Ja
RSA-1536 1536 bits Ja (Deprecated) Ja Legacy (unsicher) Ja
RSA-8192 8192 bits Ja Ja Modern (optional, hohe Sicherheit) Ja