Partager via


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 des 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 relient le fichier binaire du routeur Bcrypt.dll en mode utilisateur, ou Ksecdd.sys en mode noyau avant d’appeler les fonctions. Diverses routines de routeur gèrent toutes les primitives d’algorithme. Ces routeurs effectuent le suivi de chaque implémentation d’algorithme installée sur le système et routent 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 la courbe elliptique Diffie-Hellman (ECDH).

L’illustration suivante montre la conception et la fonction des primitives de chiffrement CNG.

conception et fonction des primitives de chiffrement cng

Le fichier d’en-tête Bcrypt.h définit la constante MS_PRIMITIVE_PROVIDER en tant que « Fournisseur Primitif Microsoft ». Pour utiliser le fournisseur Primitive Microsoft, passez cette valeur à BCryptOpenAlgorithmProvider.