Prouver qui a écrit quoi

Une signature numérique répond à deux questions essentielles de la sécurité informatique : ce message provient-il bien de la personne ou du système qu’il prétend, et son contenu est-il resté intact depuis sa rédaction ? Là où une signature manuscrite atteste tant bien que mal d’une intention, la signature numérique apporte une preuve mathématique de l’origine et de l’intégrité d’une donnée.

Ce mécanisme combine deux ingrédients : une fonction de hachage cryptographique et une paire de clés asymétriques. Comprendre comment ces deux éléments s’articulent permet de saisir à la fois la solidité des signatures et la raison pour laquelle une collision de hachage, comme celle qui a frappé SHA-1 en 2017, constitue une menace sérieuse.

Les deux ingrédients : hachage et clés asymétriques

La cryptographie asymétrique repose sur une paire de clés liées mathématiquement : une clé privée, que son propriétaire garde secrète, et une clé publique, qu’il peut diffuser librement. Ces deux clés entretiennent une relation particulière. Ce qui est traité avec la clé privée ne peut être vérifié qu’avec la clé publique correspondante, et inversement. Cette asymétrie est le cœur du dispositif.

La fonction de hachage intervient pour produire une empreinte de longueur fixe à partir du message à signer. Plutôt que d’appliquer les opérations cryptographiques coûteuses sur l’intégralité du message, qui peut être volumineux, on les applique sur son empreinte, bien plus courte. Cette combinaison rend la signature à la fois efficace et sûre, à condition que la fonction de hachage reste digne de confiance.

Le processus de signature

La création d’une signature numérique suit une suite d’étapes précises.

D’abord, l’expéditeur calcule l’empreinte du message à l’aide d’une fonction de hachage cryptographique, par exemple SHA-256. Cette empreinte représente fidèlement le contenu exact du message : la moindre modification de celui-ci produirait une empreinte entièrement différente, en vertu de l’effet d’avalanche.

Ensuite, l’expéditeur applique sa clé privée à cette empreinte. Le résultat de cette opération est la signature numérique. Comme seule la clé privée de l’expéditeur peut produire cette signature, elle lie de manière indissociable le message à son auteur. La signature accompagne alors le message lorsqu’il est transmis.

Il est important de comprendre ce que cette étape garantit. La signature ne chiffre pas le message et ne le rend pas secret : elle l’authentifie. N’importe qui peut lire le message, mais personne d’autre que le détenteur de la clé privée n’aurait pu produire une signature valable pour lui.

Le processus de vérification

À la réception, le destinataire dispose de trois éléments : le message, la signature et la clé publique de l’expéditeur. La vérification se déroule en deux temps.

Le destinataire calcule lui-même l’empreinte du message reçu, en appliquant la même fonction de hachage que l’expéditeur. En parallèle, il utilise la clé publique de l’expéditeur pour traiter la signature et en extraire l’empreinte qui y avait été inscrite au moment de la signature.

Il compare ensuite les deux empreintes. Si elles coïncident, deux conclusions s’imposent. D’une part, le message n’a pas été modifié depuis sa signature, car la moindre altération aurait changé l’empreinte recalculée. D’autre part, la signature a bien été produite avec la clé privée associée à la clé publique utilisée, ce qui authentifie l’expéditeur. Si les empreintes diffèrent, la signature est rejetée : le message a été altéré, ou il ne provient pas de la source annoncée.

Pourquoi une collision menace les signatures

Toute la sécurité de ce dispositif repose sur une hypothèse : il doit être impossible de trouver deux messages différents partageant la même empreinte. Si cette hypothèse tombe, la signature numérique perd sa fiabilité.

Imaginons un attaquant capable de fabriquer deux documents au contenu différent mais à l’empreinte identique. Il prépare une version anodine, par exemple un contrat aux conditions acceptables, et une version frauduleuse aux conditions modifiées, les deux ayant la même empreinte. Il fait signer la version anodine par la victime. Comme la signature porte sur l’empreinte, et que les deux documents partagent cette empreinte, la signature est tout aussi valable pour la version frauduleuse. L’attaquant substitue alors le document, et le système de vérification ne détecte aucune anomalie.

C’est exactement ce scénario que la collision SHAttered a rendu concret pour SHA-1. En 2017, des chercheurs ont produit deux fichiers PDF distincts partageant la même empreinte SHA-1. Une signature calculée sur l’un aurait été valide pour l’autre. Cette démonstration a confirmé qu’une fonction de hachage vulnérable aux collisions ne pouvait plus protéger les signatures, et elle a accéléré l’abandon de SHA-1 au profit de SHA-256.

La leçon est directe : une signature numérique n’est jamais plus solide que la fonction de hachage sur laquelle elle s’appuie. Employer une fonction résistante aux collisions n’est pas un détail technique, c’est une condition de sécurité.

Deux applications majeures

Les signatures numériques sont omniprésentes, souvent de manière invisible. Deux usages illustrent bien leur importance.

Les certificats

Lorsque votre navigateur établit une connexion sécurisée avec un site web, il vérifie un certificat numérique qui atteste de l’identité du serveur. Ce certificat est signé par une autorité de certification de confiance. La signature porte sur une empreinte des informations du certificat, et c’est elle qui permet au navigateur de s’assurer que le certificat n’a pas été falsifié. Le passage généralisé de SHA-1 à SHA-256 pour la signature des certificats a été une réponse directe à la fragilité démontrée de SHA-1.

La signature de code

Les éditeurs de logiciels signent leurs applications afin que les utilisateurs et les systèmes d’exploitation puissent vérifier qu’un programme provient bien de sa source légitime et n’a pas été modifié après publication. La signature de code repose sur l’empreinte du logiciel : si un fichier a été altéré, son empreinte ne correspond plus à celle inscrite dans la signature, et le système peut alerter l’utilisateur ou bloquer l’installation. Ce mécanisme protège contre la distribution de versions piégées.

Un dispositif solide, à condition d’en respecter les bases

Les signatures numériques offrent une garantie remarquable : la preuve mathématique qu’un message provient d’une source précise et qu’il n’a pas été altéré. Cette garantie repose sur deux fondations, la cryptographie asymétrique et la fonction de hachage, et elle ne tient que si les deux restent dignes de confiance.

L’histoire de SHA-1 montre que cette confiance n’est jamais acquise définitivement. Choisir une fonction de hachage résistante comme SHA-256, suivre les recommandations des organismes de normalisation et anticiper les migrations sont les conditions pour que les signatures numériques continuent de remplir leur rôle. La signature elle-même est solide ; encore faut-il bâtir sur des fondations qui le sont tout autant.