Kryptografische Grundelemente
Die CNG-API bietet eine Reihe von Funktionen, die grundlegende kryptografische Vorgänge ausführen, z. B. das Erstellen von Hashes oder das Verschlüsseln und Entschlüsseln von Daten. Weitere Informationen zu diesen Funktionen finden Sie unter CNG Cryptographic Primitive Functions.
CNG implementiert zahlreiche kryptografische Algorithmen. Jeder Algorithmus oder jede Klasse von Algorithmen macht eine eigene primitive API verfügbar. Mehrere Implementierungen eines bestimmten Algorithmus können gleichzeitig installiert werden. Allerdings wird zu einem bestimmten Zeitpunkt nur eine Implementierung standardmäßig verwendet.
Jede Algorithmusklasse in CNG wird durch einen primitiven Router dargestellt. Anwendungen, die die primitiven CNG-Funktionen verwenden, verknüpfen sich mit der Router-Binärdatei Bcrypt.dll im Benutzermodus oder Ksecdd.sys im Kernelmodus, bevor sie die Funktionen aufrufen. Verschiedene Routerroutinen verwalten alle Algorithmusgrundsätze. Diese Router verfolgen jede auf dem System installierte Algorithmusimplementierung nach und leiten jeden Funktionsaufruf an das entsprechende primitive Anbietermodul weiter.
CNG stellt Primitive für die folgenden Klassen von Algorithmen bereit.
Algorithmusklasse | Beschreibung |
---|---|
Zufallsgenerator |
Steckbare Zufallszahlengenerierung (RNG). |
Hashing |
Algorithmen, die für das Hashing verwendet werden, z. B. SHA1 und SHA2. |
Symmetrische Verschlüsselung |
Algorithmen, die für die symmetrische Verschlüsselung verwendet werden, z. B. AES, 3DES und RC4. |
Asymmetrische Verschlüsselung |
Asymmetrische Algorithmen (öffentlicher Schlüssel), die Verschlüsselung unterstützen, z. B. RSA. |
Signature |
Signaturalgorithmen wie DSA und ECDSA. Diese Klasse kann auch mit RSA verwendet werden. |
Geheimer Vertrag |
Geheime Vereinbarungsalgorithmen wie Diffie-Hellman (DH) und Elliptic Curve Diffie-Hellman (ECDH). |
Die folgende Abbildung zeigt den Entwurf und die Funktion der kryptografischen Grundtypen von CNG.
Die Headerdatei Bcrypt.h definiert die MS_PRIMITIVE_PROVIDER Konstante als "Microsoft Primitive Provider". Um den Microsoft Primitive Provider zu verwenden, übergeben Sie diesen Wert an BCryptOpenAlgorithmProvider.