Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Important
Cet article décrit le chiffrement à l’aide de l’ancienne cryptoAPI. Pour les nouvelles applications, utilisez l’API de chiffrement : CNG (Next Generation) à la place. Pour obtenir un exemple de chiffrement moderne utilisant CNG avec AES, consultez Chiffrement des données avec CNG.
La procédure suivante décrit les étapes à suivre pour chiffrer un message avec les fonctions de chiffrement de base. Pour chiffrer les messages à l’aide de normes PKCS #7, consultez Fonctions de message de bas niveau et Fonctions de message simplifiées.
Pour chiffrer un message
Générez une clé de session à l’aide de la fonction CryptGenKey .
L’établissement de cet appel génère une clé aléatoire et retourne un handle afin que la clé puisse être utilisée pour chiffrer et déchiffrer les données. L’algorithme de chiffrement à utiliser est également spécifié à ce stade. Étant donné que CryptoAPI ne permet pas aux applications d’utiliser des algorithmes de clé publique pour chiffrer des données en bloc, spécifiez un algorithme symétrique tel que RC2 ou RC4 avec l’appel CryptGenKey .
Vous pouvez également utiliser la fonction CryptDeriveKey pour transformer un mot de passe en clé adaptée au chiffrement.
Si une application doit chiffrer le message afin que toute personne disposant d’un mot de passe spécifié puisse déchiffrer les données, utilisez CryptDeriveKey pour transformer le mot de passe en clé adaptée au chiffrement.
Note
Dans ce cas, cette fonction est appelée au lieu de la fonction CryptGenKey et les appels CryptExportKey suivants ne sont pas nécessaires.
Si nécessaire, définissez des propriétés de chiffrement supplémentaires de la clé à l’aide de la fonction CryptSetKeyParam
Une fois la clé générée, des propriétés de chiffrement supplémentaires de la clé peuvent être définies avec la fonction CryptSetKeyParam. Cette fonction permet à différentes sections du fichier d’être chiffrées avec des sels de clé différents et permet de modifier le mode de chiffrement ou le vecteur d’initialisation de la clé. Ces paramètres peuvent être utilisés pour rendre le chiffrement conforme à une norme de chiffrement de données particulière.
Chiffrez les données dans le fichier avec la fonction CryptEncrypt .
La fonction CryptEncrypt prend la clé de session qui a été générée à l’étape précédente et chiffre une mémoire tampon de données.
Note
À mesure que les données sont chiffrées, les données peuvent être légèrement développées par l’algorithme de chiffrement. L’application est chargée de mémoriser la longueur des données chiffrées afin que la longueur appropriée puisse être spécifiée ultérieurement pour la fonction CryptDecrypt .
Si vous le souhaitez, utilisez la fonction CryptExportKey pour permettre à l’utilisateur actuel de déchiffrer les données à l’avenir.
Pour permettre à l’utilisateur actuel de déchiffrer les données à l’avenir, la fonction CryptExportKey est utilisée pour enregistrer la clé de déchiffrement dans un formulaire chiffré (objet blob de clé) qui ne peut être déchiffrée qu’avec la clé privée de l’utilisateur. Cette fonction requiert la clé publique d’échange de clé de l’utilisateur à cet effet, qui peut être obtenue à l’aide de la fonction CryptGetUserKey . La fonction CryptExportKey renvoie un BLOB de clé qui doit être stocké par l’application afin d’être utilisé pour déchiffrer le fichier
Note
Si l’application possède des certificats (ou des clés publiques) pour d’autres utilisateurs, elle peut permettre à d’autres utilisateurs de déchiffrer le fichier en effectuant des appels CryptExportKey pour chaque utilisateur qui doit recevoir l’accès. Les objets BLOB de clé renvoyés doivent être stockés par l'application, comme à l'étape 5.
Création d’un message chiffré
Les fonctions de message simplifiées facilitent le chiffrement et le déchiffrement des données. L’illustration suivante illustre les tâches individuelles qui doivent être effectuées pour chiffrer un message. Les étapes sont décrites dans la liste suivante.
Pour chiffrer un message
- Obtenez un pointeur vers le message en texte clair.
- Générez une clé symétrique (session).
- À l’aide de la clé symétrique et de l’algorithme de chiffrement spécifié, chiffrez les données de message.
- Ouvrez un magasin de certificats.
- Obtenez le certificat du destinataire.
- Obtenez la clé publique à partir du certificat du destinataire.
- À l’aide de la clé publique du destinataire, chiffrez la clé symétrique.
- Obtenez l’identificateur du destinataire à partir du certificat du destinataire.
- Incluez ce qui suit dans le message numériquement enveloppe : l’algorithme de chiffrement des données, les données chiffrées, la clé symétrique chiffrée et l’identificateur du destinataire.