CNG-Features

CNG verfügt über die folgenden Features.

Kryptografische Flexibilität

Eines der wichtigsten Wertversprechen von CNG ist die kryptografische Agilität, manchmal auch als kryptografischer Agnostizismus bezeichnet. Die Konvertierung der Implementierung von Protokollen wie Secure Sockets Layer-Protokoll (SSL) oder Transport Layer Security (TLS), CMS (S/MIME), IPsec, Kerberos usw. in CNG war jedoch erforderlich, um diese Fähigkeit von Nutzen 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 wichtiger, da in vielen Fällen die Protokoll-APIs erforderlich sind, um die Algorithmusauswahl und andere Flexibilitätsoptionen hinzuzufügen, die zuvor nicht vorhanden waren.

CNG ist erstmals in Windows Vista verfügbar und ist positioniert, um vorhandene Verwendungen von CryptoAPI im gesamten Microsoft-Softwarestapel zu ersetzen. Entwickler von Drittanbietern finden viele neue Features in CNG, einschließlich:

  • Ein neues Kryptokonfigurationssystem, das eine bessere kryptografische Agilität unterstützt.
  • Differenzierte Abstraktion für die Schlüsselspeicherung (und Trennung von Speicher und Algorithmusvorgängen).
  • Prozessisolation für Vorgänge mit langfristigen Schlüsseln.
  • Ersetzbare Zufallszahlengeneratoren.
  • Entlastung von Einschränkungen für Exportsignaturen.
  • Threadsicherheit im gesamten Stapel.
  • Kryptografie-API im Kernelmodus.

Darüber hinaus bietet CNG Unterstützung für alle erforderlichen Suite B-Algorithmen, einschließlich elliptischer Kurvenkryptografie (ECC ). Vorhandene CryptoAPI-Anwendungen funktionieren weiterhin, wenn CNG verfügbar wird.

Zertifizierung und Compliance

CNG wird gemäß den Federal Information Processing Standards (FIPS) 140-2 validiert und ist Teil des Ziels der Bewertung für die Windows Common Criteria-Zertifizierung. CNG wurde entwickelt, um als Komponente in einem FIPS Level 2 validierten System verwendbar zu sein.

CNG erfüllt die Common Criteria-Anforderungen, indem langlebige Schlüssel in einem sicheren Prozess gespeichert und verwendet werden.

Suite B-Unterstützung

Ein wichtiges Feature 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 symmetrischer Verschlüsselung, asymmetrischer Geheimnisvereinbarung (auch bekannt als Schlüsselaustausch), digitale Signatur und Hashfunktionen für die zukünftige Verwendung der US-Regierung namens Suite B an. Die NSA hat angekündigt, dass zertifizierte Suite B-Implementierungen für den Schutz von Informationen verwendet werden können und werden, die als "Top Secret", "Geheimnis" und "private Informationen" bezeichnet wurden, die in der Vergangenheit als vertraulich-aber-unklassifiziert beschrieben wurden. Aus diesem Grund ist der Support von Suite B sowohl für Anbieter von Anwendungssoftware und Systemintegratoren als auch für Microsoft sehr wichtig.

Alle Suite B-Algorithmen sind öffentlich bekannt. Sie wurden außerhalb des Bereichs des Regierungsgeheimnisses entwickelt, das historisch mit der Entwicklung kryptografischer Algorithmen verbunden ist. In diesem Zeitraum haben einige europäische Länder und Regionen auch die gleichen Anforderungen der Suite B zum Schutz ihrer Informationen vorgeschlagen.

Die Kryptografie der Suite B empfiehlt die Verwendung von Elliptic Curve 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 bietet 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) mit Hashingalgorithmen, ECDH und elliptische Kurven-DSA (ECDSA) über die NIST-Standard-Primkurven P-256, P-384 und P-521. Binäre Kurven, Koblitzkurven, benutzerdefinierte Primkurven und elliptische Kurve Menezes-Qu-Vanstone (ECMQV) werden von den Microsoft-Algorithmusanbietern, die in Windows Vista enthalten sind, nicht unterstützt.

Legacyunterstützung

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.

Unterstützung des Kernelmodus

CNG unterstützt Kryptografie im Kernelmodus. Die gleichen APIs werden sowohl im Kernel- als auch im Benutzermodus verwendet, um die Kryptografiefeatures vollständig zu unterstützen. Ssl/TLS und IPsec werden zusätzlich zu Startprozessen, die CNG verwenden, im Kernelmodus ausgeführt. Nicht alle CNG-Funktionen können aus dem Kernelmodus aufgerufen werden. Im Referenzthema für die Funktionen, die nicht aus dem Kernelmodus aufgerufen werden können, wird explizit angegeben, dass die Funktion nicht aus dem Kernelmodus aufgerufen werden kann. Andernfalls können alle CNG-Funktionen aus dem Kernelmodus aufgerufen werden, wenn der Aufrufer unter PASSIVE_LEVELIRQL 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 Exporttreiber im Kernelmodus ausgeführt und stellt kryptografische Dienste über die 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.

Überwachung

Um einige der Common Criteria-Anforderungen zu erfüllen, werden neben der Bereitstellung umfassender Sicherheit viele Aktionen, die auf der CNG-Ebene erfolgen, im Microsoft-Softwareschlüsselspeicheranbieter (KSP) überwacht. Der Microsoft KSP hält die folgenden Richtlinien zum Erstellen von Überwachungsdatensätzen im Sicherheitsprotokoll ein:

  • Fehler bei der Schlüssel- und Schlüsselpaargenerierung, einschließlich Selbsttestfehlern, müssen überwacht werden.
  • Der Import und Export von Schlüsseln muss überwacht werden.
  • Fehler bei der Schlüsselvernichtung müssen überwacht werden.
  • Persistente Schlüssel müssen überwacht werden, wenn sie in Dateien geschrieben und daraus gelesen werden.
  • Fehler bei der paarweisen Konsistenzprüfung müssen überwacht werden.
  • Fehler bei der Überprüfung des geheimen Schlüssels, falls vorhanden, müssen überwacht werden, z. B. Paritätsprüfungen bei 3DES-Schlüsseln.
  • Fehler bei Verschlüsselung, Entschlüsselung, Hashing, Signatur, Überprüfung, Schlüsselaustausch und zufälliger Zahlengenerierung 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. Vom Kernelmodus-CNG wird kein Überwachungsdatensatz 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 Überwachungen zu konfigurieren, die von KSPs generiert werden:

auditpol /set /subcategory:"other system events" /success:enable /failure:enable

Ersetzbare Zufallszahlengeneratoren

Eine weitere Verbesserung, die CNG bietet, ist die Möglichkeit, den Standardmäßigen Zufallszahlengenerator (RNG) zu ersetzen. In CryptoAPI ist es möglich, eine alternative RNG als Teil eines Kryptografiedienstanbieters (CSP) bereitzustellen, aber es ist nicht möglich, die Microsoft Base-CSPs zur Verwendung eines anderen RNG umzuleiten. CNG ermöglicht es, explizit eine bestimmte RNG anzugeben, die innerhalb bestimmter Aufrufe verwendet werden soll.

Threadsicherheit

Alle Funktionen, die denselben Speicherbereich gleichzeitig ändern (kritische Abschnitte), wenn sie von separaten Threads aufgerufen werden, sind nicht threadsicher.

Betriebsart

CNG unterstützt fünf Betriebsmodi, die mit symmetrischen Blockchiffren über die Verschlüsselungs-APIs verwendet werden können. Diese Modi und ihre 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 Funktion BCryptSetProperty festgelegt wird.

Betriebsart BCRYPT_CHAINING_MODE Wert Algorithmen Standard
EZB (Elektronisches Codebook) BCRYPT_CHAIN_MODE_ECB Symmetrische Blockchiffren SP800-38A
CBC (Cipher Block Chaining) BCRYPT_CHAIN_MODE_CBC Symmetrische Blockchiffren SP800-38A
CFB (Cipher Feedback) BCRYPT_CHAIN_MODE_CFB Symmetrische Blockchiffren SP800-38A
CCM (Zähler mit CBC) BCRYPT_CHAIN_MODE_CCM AES SP800-38C
GCM (Galois/Counter Mode) BCRYPT_CHAIN_MODE_GCM AES SP800-38D

 

Hinweis

In Windows Vista werden nur die Betriebsmodi ECB, CBC und CFB definiert. GCM und CCM erfordern Windows Vista mit Service Pack 1 (SP1) oder Windows Server 2008.