Comparatifs Sécurité

Hachage vs HMAC vs signature numérique

Un hachage est l'empreinte des données, un HMAC y ajoute un secret partagé pour que seuls les détenteurs de la clé puissent le créer ou le vérifier, et une signature numérique utilise une clé privée pour que chacun vérifie qui a signé.

Dernière vérification :

AdSense Placeholder
Slot: header_reference_page
Sur cette page

Un hachage transforme des données en une empreinte de taille fixe que n'importe qui peut recalculer ; il détecte une modification accidentelle mais ne prouve rien sur l'auteur. Un HMAC mêle une clé secrète partagée au hachage : seuls les détenteurs de la clé peuvent le créer ou le vérifier, ce qui prouve l'intégrité et que l'expéditeur connaissait le secret. Une signature numérique utilise une clé privée pour signer et une clé publique pour vérifier : chacun peut contrôler qui a signé, et le signataire ne peut pas le nier ensuite.

En un coup d'œil

Hachage HMAC Signature numérique
Clé nécessaire Aucune Un secret partagé Clé privée pour signer, publique pour vérifier
Détecte une modification Oui Oui Oui
Prouve qui l'a créé Non Seulement pour qui partage le secret Oui, pour toute personne ayant la clé publique
Non-répudiation Non Non (l'une ou l'autre partie a pu le créer) Oui
Vitesse Très rapide Très rapide Plus lente
Usage typique Sommes de contrôle, déduplication Signature de requêtes d'API, webhooks, jetons HS256 Signature de logiciels, certificats, jetons RS256/ES256

Le même message, de trois façons

Pour le message hello :

Méthode Résultat
Hachage SHA-256 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824
HMAC-SHA256, clé secret 88aab3ede8d3adf94d26ab90d3bafd4a2083070c3bcce9c014ee04a443847c0b
HMAC-SHA256, clé other ccba5a99c3e0c7f2bc6c6f02bc752217c3c71fb91b41211dffc0c1d0981d1663

Le hachage est le même pour tous. Le HMAC change complètement avec la clé : sans secret, personne ne peut produire la deuxième ligne. Une signature numérique du même message serait produite avec une clé privée et vérifiée avec la clé publique correspondante ; une signature Ed25519 fait toujours 64 octets et une signature RSA-2048, 256 octets.

Calculez les deux premiers avec le générateur de hachage et le générateur HMAC, et créez une paire de clés pour les signatures avec le générateur de paires de clés.

Lequel choisir ?

  • Vérifier qu'un téléchargement correspond à une somme publiée : hachage, publié par un canal de confiance (voir Comment vérifier la somme de contrôle d'un fichier).
  • Vérifier un webhook ou un appel d'API entre systèmes qui partagent un secret : HMAC.
  • Permettre à chacun de vérifier qui a publié un logiciel ou un document : signature numérique.
  • Stocker des mots de passe : aucun directement ; utilisez un hachage de mot de passe, voir MD5, SHA-256 ou bcrypt.

Le contexte des clés en jeu figure dans Chiffrement symétrique ou asymétrique et Comment fonctionne le hachage explique le hachage en profondeur.

Essayez ces outils

Voir aussi

  • Guide Comment fonctionne le hachage
    Ce que fait une fonction de hachage, l'effet avalanche avec une vraie sortie SHA-256, quels algorithmes restent sûrs.
  • Comparatif Chiffrement symétrique ou asymétrique
    Le chiffrement symétrique utilise une clé partagée et il est rapide ; l'asymétrique, une paire de clés qui règle l'échange de clés.
  • Glossaire Hachage (hash)
    Un hachage (hash) est l'empreinte de longueur fixe qu'une fonction de hachage calcule à partir d'une entrée ; même entrée, même hachage.
  • Glossaire HMAC
    Le HMAC est un hachage calculé avec une clé secrète : il prouve qu'un message vient du détenteur de la clé et n'a pas été modifié.
  • Glossaire Signature numérique
    Une signature numérique est une valeur calculée à partir d'un message et d'une clé privée qui prouve qui l'a créé et qu'il n'a pas été.

Questions fréquemment posées

Seulement si le hachage lui-même arrive par un canal de confiance. Si un attaquant peut modifier à la fois le fichier et son hachage publié, la vérification ne prouve rien. Les HMAC et les signatures règlent cela en faisant intervenir une clé.

Quand les deux parties partagent déjà un secret et se font confiance, par exemple pour vérifier des webhooks ou signer des jetons de session entre vos propres serveurs. Le HMAC est simple et rapide. Si d'autres doivent pouvoir vérifier sans pouvoir falsifier, utilisez une signature.

Non. Pour les mots de passe, utilisez une fonction lente et salée comme bcrypt. Le HMAC sert à authentifier des messages avec une clé secrète.

AdSense Placeholder
Slot: footer_leaderboard