Échange de clés de session manuelle

Notes

La procédure décrite dans cette section suppose que les utilisateurs (ou les clients CryptoAPI) possèdent déjà leur propre ensemble de paires de clés publiques/privées et ont également obtenu les clés publiquesde l’autre.

L’illustration suivante montre comment utiliser cette procédure pour envoyer un message chiffré.

envoi d’un message chiffré

Cette approche est vulnérable à au moins une forme d’attaque courante. Une personne malveillante peut acquérir des copies d’un ou de plusieurs messages chiffrés et de clés chiffrées. Ensuite, plus tard, l’écouteur peut envoyer l’un de ces messages au récepteur et le destinataire n’aura aucun moyen de savoir que le message ne provient pas directement de l’expéditeur d’origine. Ce risque peut être réduit en horodateurant tous les messages ou en utilisant des numéros de série.

Le moyen le plus simple d’envoyer des messages chiffrés à un autre utilisateur consiste à envoyer le message chiffré à l’aide d’une clé de session aléatoire avec la clé de session chiffrée avec la clé publique d’échange de clédu récepteur.

Voici les étapes à suivre pour envoyer une clé de session chiffrée.

Pour envoyer une clé de session chiffrée

  1. Créez une clé de session aléatoire à l’aide de la fonction CryptGenKey .
  2. Chiffrez le message à l’aide de la clé de session. Cette procédure est décrite dans chiffrement et déchiffrement des données.
  3. Exportez la clé de session dans un objet blob de clé avec la fonction CryptExportKey , en spécifiant que la clé doit être chiffrée avec la clé publique d’échange de clé de l’utilisateur de destination.
  4. Envoyez le message chiffré et l’objet BLOB de clé chiffrée à l’utilisateur de destination.
  5. L’utilisateur de destination importe l’objet BLOB de clé dans son CSP à l’aide de la fonction CryptImportKey . Cette opération déchiffre automatiquement la clé de session, à condition que la clé publique d’échange de clé de l’utilisateur de destination ait été spécifiée à l’étape 3.
  6. L’utilisateur de destination peut ensuite déchiffrer le message à l’aide de la clé de session, en suivant la procédure décrite dans chiffrement et déchiffrement des données.