CNG-Features
CNG weist die folgenden Merkmale auf.
- Kryptografische Flexibilität
- Zertifizierung und Kompatibilität
- Suite B-Unterstützung
- Legacyunterstützung
- Kernel-Modusunterstützung
- Überwachung
- Ersetzbare Zufallszahlengeneratoren
- Threadsicherheit
- Betriebsmodus
Einer der wichtigsten Wertversprechen von CNG ist kryptografische Flexibilität, manchmal auch kryptografische Agnostik genannt. Die Konvertierung der Implementierung von Protokollen wie Secure Sockets Layer Protocol (SSL) oder Transport Layer Security (TLS), CMS (S/MIME), IPsec, Kerberos usw. in CNG war jedoch erforderlich, um diese Fähigkeit wertvoll zu machen. Auf CNG-Ebene war es notwendig, Ersetzungs- und Auffindbarkeit für alle Algorithmustypen (symmetrische, asymmetrische, Hashfunktionen), Zufallszahlengenerierung und andere Hilfsfunktionen bereitzustellen. Die Änderungen auf Protokollebene sind bedeutsamer, da in vielen Fällen die Protokoll-APIs zum Hinzufügen der Algorithmusauswahl und anderen Flexibilitätsoptionen erforderlich sind, die zuvor nicht vorhanden waren.
CNG ist zuerst in Windows Vista verfügbar und ist in der Lage, vorhandene Verwendungen von CryptoAPI im gesamten Microsoft-Softwarestapel zu ersetzen. Entwickler von Drittanbietern finden viele neue Funktionen in CNG, darunter:
- Ein neues Kryptokonfigurationssystem, das eine bessere kryptografische Flexibilität unterstützt.
- Eine differenziertere Abstraktion für die Schlüsselspeicherung (und Trennung des Speichers von Algorithmusvorgängen).
- Prozessisolation für Vorgänge mit langfristigen Schlüsseln.
- Ersetzbare Zufallszahlengeneratoren.
- Befreiung von Exportsignaturbeschränkungen.
- Threadsicherheit im gesamten Stapel.
- Kryptografische API für den Kernelmodus.
Darüber hinaus umfasst CNG Unterstützung für alle erforderlichen Suite-B-Algorithmen, einschließlich elliptischer Kurvenkryptografie (ECC). Bestehende CryptoAPI-Anwendungen funktionieren weiterhin, wenn CNG verfügbar wird.
CNG ist unter den Federal Information Processing Standards (FIPS) 140-2 validiert und ist Teil des Ziels der Auswertung (Target of Evaluation) für die Windows Common Criteria-Zertifizierung. CNG wurde für die Verwendung als Komponente in einem FIPS-Level 2-validierten System entwickelt.
CNG erfüllt die Anforderungen der Common Criteria, indem es langlebige Schlüssel in einem sicheren Vorgang speichert und verwendet.
Ein wichtiges Merkmal von CNG ist die Unterstützung der Suite-B-Algorithmen. Im Februar 2005 kündigte die National Security Agency (NSA) der USA einen koordinierten Satz für zukünftige behördliche Anwendungen in den USA bestehend aus symmetrischer Verschlüsselung, asymmetrischer Geheimverträge (auch als Schlüsselaustausch bezeichnet) und digitaler Signatur- und Hashfunktionen namens Suite B an. Die NSA hat angekündigt, dass zertifizierte Suite B-Implementierungen für den Schutz von Informationen genutzt werden können, die als streng geheim, geheim oder privat eingestuft sind und in der Vergangenheit als vertraulich, aber nicht geheim eingestuft wurden. Aus diesem Grund ist die Suite B-Unterstützung für Anwendungssoftwareanbieter und Systemintegratoren sowie für Microsoft sehr wichtig.
Alle Suite-B-Algorithmen sind öffentlich bekannt. Sie wurden außerhalb des Einflussbereichs geheimer Regierungsarbeit entwickelt, die historisch mit der Entwicklung von Kryptografiealgorithmen assoziiert wird. Gleichzeitig haben einige europäische Länder und Regionen auch die gleichen Suite-B-Anforderungen für den Schutz ihrer Informationen angemeldet.
Suite-B-Kryptografie empfiehlt die Verwendung der elliptischen Kurve Diffie-Hellman (ECDH) in vielen vorhandenen Protokollen wie Internet Key Exchange (IKE, hauptsächlich in IPsec verwendet), Transport Layer Security (TLS) und Secure MIME (S/MIME).
CNG enthält Unterstützung für Suite B, die sich auf alle erforderlichen Algorithmen erstreckt: AES (alle Schlüsselgrößen), die SHA-2-Familie (SHA-256, SHA-384 und SHA-512) von Hashingalgorithmen, ECDH und elliptischer Kurve DSA (ECDSA) über die NIST-Standard-Prime-Kurven P-256, P-384 und P-521. Binäre Kurven, Koblitz-Kurven, benutzerdefinierte Prime-Kurven und die elliptische Kurve Menezes-Qu-Vanstone (ECMQV) werden von den Microsoft-Algorithmusanbietern, die in Windows Vista enthalten sind, nicht unterstützt.
CNG bietet Unterstützung für den aktuellen Satz von Algorithmen in CryptoAPI 1.0. Jeder Algorithmus, der derzeit in CryptoAPI 1.0 unterstützt wird, wird weiterhin in CNG unterstützt.
CNG unterstützt Kryptografie im Kernelmodus. Die gleichen APIs werden sowohl im Kernel- als auch im Benutzermodus verwendet, um die Kryptografiefunktionen vollständig zu unterstützen. Sowohl SSL/TLS als auch IPsec arbeiten im Kernelmodus zusätzlich zu Startprozessen, die CNG verwenden. Nicht alle CNG-Funktionen können aus dem Kernelmodus heraus aufgerufen werden. Das Referenzthema für die Funktionen, die nicht aus dem Kernelmodus aufgerufen werden können, geben explizit an, dass die Funktion nicht aus dem Kernelmodus heraus aufgerufen werden kann. Andernfalls können alle CNG-Funktionen aus dem Kernelmodus heraus aufgerufen werden, wenn der Aufrufer unter PASSIVE_LEVEL IRQL ausgeführt wird. Darüber hinaus können einige CNG-Funktionen im Kernelmodus abhängig von den Funktionen des Anbieters unter DISPATCH_LEVEL IRQL aufgerufen werden.
Die Microsoft Kernel Security Support Provider Interface (Ksecdd.sys) ist ein universelles, softwarebasiertes kryptografisches Modul, das sich auf der Kernelmodusebene von Windows befindet. Ksecdd.sys wird als Kernelmodus-Exporttreiber ausgeführt und stellt kryptografische Dienste über seine dokumentierten Schnittstellen zu Kernelkomponenten bereit. Der einzige integrierte Microsoft-Anbieteralgorithmus, der von Ksecdd.sys nicht unterstützt wird, ist DSA.
Windows Server 2008 und Windows Vista: CNG unterstützt keine austauschbaren Algorithmen und Anbieter im Kernelmodus. Die einzigen unterstützten kryptografischen Algorithmen, die im Kernelmodus verfügbar sind, sind die Implementierungen, die von Microsoft über die CNG-APIs im Kernelmodus bereitgestellt werden.
Um einige der Common Criteria zusätzlich zur Bereitstellung umfassender Sicherheit zu erfüllen, werden viele Aktionen, die auf der CNG-Ebene geschehen, im Microsoft Software Key Storage Provider (KSP) überwacht. Der Microsoft-KSP folgt den folgenden Richtlinien zum Erstellen von Überwachungsdatensätzen im Sicherheitsprotokoll:
- Schlüssel- und Schlüsselpaargenerierungsfehler, einschließlich Selbsttestfehlern, müssen überwacht werden.
- Schlüsselimport und -export müssen überwacht werden.
- Schlüsselvernichtungsfehler müssen überwacht werden.
- Persistente Schlüssel müssen überwacht werden, wenn sie in Dateien geschrieben und aus ihnen ausgelesen werden.
- Paarweise Konsistenzüberprüfungsfehler müssen überwacht werden.
- Fehler bei der Überprüfung geheimer Schlüssel müssen ggf. überwacht werden, z. B. Paritätsprüfungen auf 3DES-Schlüsseln.
- Fehler bei Verschlüsselung, Entschlüsselung, Hashing, Signatur, Überprüfung, Schlüsselaustausch und Zufallszahlengenerierung müssen überwacht werden.
- Kryptografische Selbsttests müssen überwacht werden.
Wenn ein Schlüssel keinen Namen hat, handelt es sich im Allgemeinen um einen kurzlebigen Schlüssel. Ein kurzlebiger Schlüssel wird nicht beibehalten, und der Microsoft-KSP generiert keine Überwachungsdatensätze für kurzlebige Schlüssel. Der Microsoft-KSP generiert Überwachungsdatensätze im Benutzermodus nur im LSA-Prozess. Es wird kein Überwachungsdatensatz vom Kernelmodus-CNG generiert. Administratoren müssen die Überwachungsrichtlinie konfigurieren, um alle KSP-Überwachungsprotokolle aus dem Sicherheitsprotokoll abzurufen. Ein Administrator muss die folgende Befehlszeile ausführen, um zusätzliche Von KSPs generierte Audits zu konfigurieren:
auditpol /set /subcategory:"other system events" /success:enable /failure:enable
Eine weitere Verbesserung, die CNG bietet, ist die Möglichkeit, den standardmäßigen Zufallszahlengenerator (RNG) zu ersetzen. In CryptoAPI ist es möglich, einen alternativen RNG als Teil eines kryptografischen Dienstanbieters (CSP) bereitzustellen, aber es ist nicht möglich, die Microsoft Base CSPs zur Verwendung eines anderen RNG umzuleiten. CNG ermöglicht es, explizit einen bestimmten RNG anzugeben, der innerhalb bestimmter Aufrufe verwendet werden soll.
Alle Funktionen, die denselben Speicherbereich gleichzeitig ändern (kritische Abschnitte), wenn sie von separaten Threads aufgerufen werden, sind nicht threadsicher.
CNG unterstützt fünf Betriebsmodi, die mit symmetrischen Blockchiffren über die Verschlüsselungs-APIs verwendet werden können. Diese Modi und deren Unterstützung sind in der folgenden Tabelle aufgeführt. Der Betriebsmodus kann geändert werden, indem die Eigenschaft BCRYPT_CHAINING_MODE für den Algorithmusanbieter mithilfe der BCryptSetProperty-Funktion festgelegt wird.
Betriebsmodus | Wert BCRYPT_CHAINING_MODE | Algorithmen | Standard |
---|---|---|---|
ECB (Elektronisches Codebook) | BCRYPT_CHAIN_MODE_ECB | Symmetrische Blockchiffren | SP800-38A |
CBC (Chiffrenblock-Verkettung, Cipher Block Chaining) | BCRYPT_CHAIN_MODE_CBC | Symmetrische Blockchiffren | SP800-38A |
CFB (Chiffren-Feedback) | BCRYPT_CHAIN_MODE_CFB | Symmetrische Blockchiffren | SP800-38A |
CCM (Leistungsindikator mit CBC) | BCRYPT_CHAIN_MODE_CCM | AES | SP800-38C |
GCM (Galois/Counter-Modus) | BCRYPT_CHAIN_MODE_GCM | AES | SP800-38D |
Hinweis
Nur ECB-, CBC- und CFB-Betriebsmodi werden in Windows Vista definiert. GCM und CCM benötigen Windows Vista mit Service Pack 1 (SP1) oder Windows Server 2008.