Partager via


Hachages et signatures numériques (applications du Windows Store)

Hachages

Une fonction de hachage de chiffrement prend un long bloc de données au hasard et renvoie une chaîne de bits de taille fixe. Les fonctions de hachage sont généralement utilisées dans le cadre de la signature de données. Comme la plupart des opérations de signature de clé publique sont gourmandes en calcul, il est plus efficace de signer (chiffrer) un hachage de message plutôt que le message d’origine. La procédure suivante représente un scénario courant, bien que simplifié :

  • Alice crée une paire de clés, garde sa clé privée secrète et publie sa clé publique par l’intermédiaire d’une autorité de certification approuvée.
  • Alice crée un message, crée un hachage du message, signe le hachage avec sa clé privée et envoie le message (non chiffré) et la signature à Bob.
  • Bob récupère la clé publique d’Alice et déchiffre la signature pour récupérer le hachage d’Alice.
  • Bob crée un hachage du message qu’il a reçu d’Alice et compare le hachage qu’il a calculé avec le hachage déchiffré. Si les hachages correspondent, Bob peut être relativement certain que le message d’Alice n’a pas été modifié.

Notez qu’Alice a envoyé un message non chiffré. Seul le hachage était chiffré. La procédure permet uniquement de s’assurer que le message d’origine n’a pas été modifié et, à l’aide de la clé publique d’Alice, que le hachage du message a été signé par quelqu’un qui a accès à la clé privée d’Alice, probablement Alice elle-même.

Vous pouvez utiliser la classe HashAlgorithmProvider pour énumérer les algorithmes de hachage disponibles et créer une valeur CryptographicHash.

Les signatures numériques sont l’équivalent, pour les clés publiques, des codes d’authentification de message (MAC) des clés privées. Alors que les codes MAC utilisent des clés privées pour permettre au destinataire d’un message de vérifier que celui-ci n’a pas été modifié au cours de transmission, les signatures utilisent une paire de clés privée/publique.

Signatures numériques

Les signatures numériques sont l’équivalent, pour les clés publiques, des codes d’authentification de message (MAC) des clés privées. Alors que les codes MAC utilisent des clés privées pour permettre au destinataire d’un message de vérifier que celui-ci n’a pas été modifié au cours de transmission, les signatures utilisent une paire de clés privée/publique.

Comme la plupart des opérations de signature de clé publique sont gourmandes en calcul, il est toutefois plus efficace de signer (chiffrer) un hachage de message plutôt que le message d’origine. L’expéditeur crée un hachage de message, le signe et envoie la signature et le message (non chiffré). Le destinataire calcule un hachage sur le message, déchiffre la signature et compare la signature déchiffrée à la valeur de hachage. Si elles correspondent, le destinataire peut être quasi certain que le message provient effectivement de l’expéditeur et qu’il n’a pas été modifié au cours de la transmission.

La signature permet uniquement de s’assurer que le message d’origine n’a pas été modifié et, à l’aide de la clé publique de l’expéditeur, que le hachage du message a été signé par quelqu’un qui a accès à la clé privée.

Vous pouvez utiliser un objet AsymmetricKeyAlgorithmProvider pour énumérer les algorithmes de signature disponibles et générer ou importer une paire de clés. Vous pouvez utiliser des méthodes statiques sur la classe CryptographicHash pour signer un message ou vérifier une signature.

Rubriques associées

Codes d’authentification des messages, hachages et signatures

Feuille de route pour les applications du Windows Store en C# ou Visual Basic