Signatures numériques et fonctions de hachage
Portail > Fondamentaux cryptographiques
La signature numérique est l'opération qui lie un contenu à une clé, et donc à une identité. C'est elle qui rend un certificat vérifiable, et c'est l'enchaînement de signatures qui constitue la chaîne de confiance. Elle s'appuie systématiquement sur une fonction de hachage.
Fonctions de hachage
Une fonction de hachage cryptographique transforme une entrée de taille quelconque en un condensé (digest) de taille fixe. Pour un usage cryptographique, elle doit présenter les propriétés suivantes :
- Déterministe : la même entrée produit toujours le même condensé.
- Sortie de taille fixe : par exemple 256 bits pour SHA-256, indépendamment de la taille de l'entrée.
- Résistance à la préimage : à partir d'un condensé, il est infaisable de retrouver une entrée correspondante (sens unique).
- Résistance aux collisions : il est infaisable de trouver deux entrées distinctes produisant le même condensé.
- Effet d'avalanche : la moindre modification de l'entrée change radicalement le condensé.
| Algorithme | Taille du condensé | Statut |
|---|---|---|
| MD5 | 128 bits | Cassé (collisions triviales) — à proscrire. |
| SHA-1 | 160 bits | Obsolète (collisions démontrées) — interdit pour les certificats publics. |
| SHA-256 / SHA-384 / SHA-512 | 256 / 384 / 512 bits | Recommandés (famille SHA-2). |
| SHA-3 (Keccak) | variable | Alternative moderne, construction interne différente de SHA-2. |
Pourquoi hacher avant de signer
On ne signe pas directement le message : on signe son condensé. Deux raisons :
- Performance : les opérations asymétriques (RSA, ECDSA) sont coûteuses ; signer un condensé de taille fixe est bien plus rapide que de signer un document entier.
- Sécurité et contraintes de format : les schémas de signature opèrent sur une entrée de taille bornée. Le hachage normalise l'entrée et, combiné à un padding adéquat (PKCS#1 v1.5, PSS), protège contre certaines attaques.
Mécanisme de la signature
Production (signer)
- Calculer le condensé du message avec une fonction de hachage (ex. SHA-256).
- Transformer ce condensé avec la clé privée de l'émetteur (selon le schéma : RSA-PSS, ECDSA…). Le résultat est la signature.
Vérification
- Le vérificateur recalcule le condensé du message reçu.
- À l'aide de la clé publique de l'émetteur, il dérive de la signature le condensé attendu.
- Si les deux condensés coïncident : la signature est valide → le message provient bien du détenteur de la clé privée et n'a pas été altéré.
<mermaid> flowchart LR
M[Message] --> H1[Hachage] H1 --> D1[Condensé] D1 --> SIG["Clé privée → Signature"]
M2[Message reçu] --> H2[Hachage]
H2 --> D2[Condensé recalculé]
SIG --> V["Clé publique → Condensé attendu"]
D2 --> CMP{Égaux ?}
V --> CMP
CMP -->|oui| OK[Signature valide]
CMP -->|non| KO[Rejet]
</mermaid>
(Schéma en Mermaid ; sinon le retirer ou l'exporter en image.)
Application aux certificats
Dans un certificat X.509, c'est la partie TBSCertificate (To Be Signed : tous les champs sauf la signature elle-même) qui est hachée puis signée par l'autorité de certification. Le certificat contient donc :
- le champ signatureAlgorithm (ex.
sha256WithRSAEncryption,ecdsa-with-SHA384) ; - la valeur de signature produite par la clé privée de l'autorité.
Vérifier un certificat, c'est vérifier cette signature avec la clé publique de l'autorité émettrice — opération répétée à chaque maillon de la chaîne.
Signature ≠ empreinte (fingerprint)
Distinction fréquente source de confusion :
- La signature est produite par la clé privée de l'émetteur et prouve l'authenticité du certificat.
- L'empreinte (fingerprint) est un simple condensé (SHA-256…) du certificat entier, calculable par n'importe qui. Elle sert d'identifiant pour comparer ou épingler un certificat, mais ne prouve rien sur son origine.
Importance de la résistance aux collisions
Une fonction de hachage faible compromet directement la PKI : une collision permet de fabriquer deux certificats au même condensé, dont l'un est signé légitimement et l'autre forgé. Ce scénario a été exploité concrètement contre MD5 (création d'un faux certificat d'autorité), d'où le bannissement de MD5 puis de SHA-1 pour les certificats.
Points clés à retenir
- On signe un condensé, pas le message entier.
- Signer = transformer le condensé avec la clé privée ; vérifier = retrouver ce condensé avec la clé publique et comparer.
- Dans un certificat, c'est le TBSCertificate qui est signé ; le champ
signatureAlgorithmindique hachage + schéma. - Ne pas confondre signature (preuve d'origine) et empreinte (simple identifiant).
- La solidité de la fonction de hachage conditionne la sécurité de toute la chaîne.
Voir aussi
| Chaînes de certificats — Portail | |
|---|---|
| Fondamentaux | Cryptographie asymétrique · Signatures et hachage |
| Certificat X.509 | Structure X.509 · Extensions X.509 · Formats et encodage |
| PKI et autorités | PKI · Autorités de certification · Ancres de confiance |
| Chaîne | Principe · Construction du chemin · Validation · Contraintes de chemin |
| Cycle de vie | CSR et émission · Cycle de vie · Révocation |
| Avancé | Cross-signing · Dépannage |