Primitives de chiffrement
L’API CNG fournit un ensemble de fonctions qui effectuent des opérations de chiffrement de base telles que la création de hachages ou le chiffrement et le déchiffrement de données. Pour plus d’informations sur ces fonctions, consultez Fonctions primitives de chiffrement CNG.
CNG implémente de nombreux algorithmes de chiffrement. Chaque algorithme ou classe d’algorithmes expose sa propre API primitive. Plusieurs implémentations d’un algorithme donné peuvent être installées en même temps ; Toutefois, une seule implémentation sera la valeur par défaut à un moment donné.
Chaque classe d’algorithme dans CNG est représentée par un routeur primitif. Les applications utilisant les fonctions primitives CNG sont liées au fichier binaire du routeur Bcrypt.dll en mode utilisateur, ou Ksecdd.sys en mode noyau avant d’appeler les fonctions. Différentes routines de routeur gèrent toutes les primitives d’algorithme. Ces routeurs suivent chaque implémentation d’algorithme installée sur le système et acheminent chaque appel de fonction vers le module de fournisseur primitif approprié.
CNG fournit des primitives pour les classes d’algorithmes suivantes.
Classe d’algorithme | Description |
---|---|
Générateur de nombres aléatoires |
Génération de nombres aléatoires enfichables (RNG). |
Hachage |
Algorithmes utilisés pour le hachage, tels que SHA1 et SHA2. |
Chiffrement symétrique |
Algorithmes utilisés pour le chiffrement symétrique, tels que AES, 3DES et RC4. |
Chiffrement asymétrique |
Algorithmes asymétriques (clé publique) qui prennent en charge le chiffrement, tels que RSA. |
Signature |
Algorithmes de signature tels que DSA et ECDSA. Cette classe peut également être utilisée avec RSA. |
Contrat secret |
Algorithmes d’accord secret tels que Diffie-Hellman (DH) et Diffie-Hellman de courbe elliptique (ECDH). |
L’illustration suivante montre la conception et la fonction des primitives de chiffrement CNG.
Le fichier d’en-tête Bcrypt.h définit la constante MS_PRIMITIVE_PROVIDER comme « Fournisseur primitif Microsoft ». Pour utiliser le fournisseur primitif Microsoft, transmettez cette valeur à BCryptOpenAlgorithmProvider.