API de chiffrement : Nouvelle génération

Objectif

API de chiffrement : CNG (Next Generation) est le remplacement à long terme de CryptoAPI. CNG est conçu pour être extensible à de nombreux niveaux et pour avoir un comportement indépendant du type de chiffrement utilisé.

Public des développeurs

CNG est destiné aux développeurs d’applications qui permettront aux utilisateurs de créer et d’échanger des documents et d’autres données dans un environnement sécurisé, en particulier sur des médias non sécurisés tels que Internet. Les développeurs doivent être familiarisés avec les langages de programmation C et C++ et l’environnement de programmation Windows. Bien qu’il ne soit pas nécessaire, une compréhension du chiffrement ou des sujets liés à la sécurité est conseillée.

Si vous développez un fournisseur d’algorithmes de chiffrement CNG ou un fournisseur de stockage de clés, vous devez télécharger le kit de développement du fournisseur de chiffrement à partir de Microsoft.

Conditions requises pour l’exécution

CNG est pris en charge à compter de Windows Server 2008 et Windows Vista. Pour plus d’informations sur les exigences d’exécution pour un élément de programmation particulier, consultez la section Conditions requises de la page de référence de cet élément.

Dans cette section

Les rubriques suivantes fournissent des informations sur le CNG et la façon de l’utiliser dans vos applications :

Sujet Descriptif
À propos du CNG Décrit les fonctionnalités CNG, les primitives de chiffrement et le stockage de clés, la récupération, l’importation et l’exportation.
Utilisation du CNG Explique comment utiliser les fonctionnalités de configuration de chiffrement de CNG et de programmation CNG classique.
Référence CNG Descriptions détaillées des éléments de programmation CNG. Ces pages incluent des descriptions de référence de l’API pour l’utilisation de CNG.

Quand utiliser CNG

Utilisez CNG quand vous avez besoin d’un contrôle direct sur les opérations de chiffrement dans les applications Windows. Les conseils suivants vous aident à choisir l’API appropriée :

Scénario API recommandée
Chiffrement/déchiffrement symétrique (AES, ChaCha20-Poly1305) CNG (BCryptEncrypt / BCryptDecrypt)
Hachage (SHA-256, SHA-384, SHA-512) CNG (BCryptCreateHash)
Opérations asymétriques (RSA, ECDSA, ML-DSA) CNG (BCryptSignHash, BCryptVerifySignature)
Protection des données utilisateur au repos (étendue par utilisateur ou par ordinateur) DPAPI (plus simple, aucune gestion des clés requise)
Protection des données accessibles à plusieurs utilisateurs ou machines DPAPI-NG (NCryptProtectSecret)
Connexions TLS/SSL Schannel (utilise CNG en interne)
Code hérité qui utilise déjà CryptoAPI Poursuivez avec CryptoAPI pour la maintenance, mais planifiez la migration vers CNG pour les nouvelles fonctionnalités

Avertissement

Pièges de chiffrement courants à éviter :

  • N’utilisez pas le mode de chiffrement de bloc BCE : il fuite des modèles en texte clair. Utilisez CBC avec un IV aléatoire ou, de préférence, un mode authentifié comme GCM.
  • Ne codez pas en dur les clés de chiffrement dans le code source. Utilisez des fournisseurs de stockage de clés ou DPAPI pour la protection des clés.
  • N’utilisez pas MD5 ou SHA-1 à des fins d’intégrité ou de sécurité. Utilisez SHA-256 ou plus fort.
  • Validez toujours les codes de retour des fonctions CNG. Une opération de chiffrement ayant échoué qui est ignorée en mode silencieux peut entraîner le stockage des données non chiffrées.

Kit de développement de fournisseur cryptographique

CryptoAPI