Cet article est le second d’une série de trois sur le thème Identité et Sécurité. Vous pouvez consulter les autres article en suivant les liens suivants :
Signature Numérique
Même avec un système à clé publique normal, il reste un problème : celui de la preuve. Prenons un exemple imaginaire.
Un jour, un grand traiteur sur le site duquel j’ai un compte sonne à ma porte pour me livrer dix mille euros de petits fours. Je réponds ne jamais avoir commandé cela. Les petits fours étant périssables, le manque à gagner pour le traiteur peut le motiver à aller devant un tribunal. Comment le juge pourra-t-il déterminer si je suis le menteur (j’ai commandé les petits fours, soit pour nuire au traiteur, soit pour une occasion qui n’a plus lieu et pour laquelle je ne veux donc pas payer) ou si le traiteur est en faute (une erreur informatique dans son logiciel de commande, une erreur de saisie, ou même une volonté de me nuire) ?
Ce que le traiteur peut prouver, c’est que je me suis à un moment donné connecté à son site à l’aide de ma clé privée (et encore, il faudrait pour cela que la vérification de mon identité indique le site auquel je me connecte, sans quoi le traiteur aurait pu espionner et recopier ma connexion à un autre site). Mais même si je me suis connecté au site, ai-je réellement passé la commande comme il le prétend ? Cela, le système d’identification le plus avancé au monde ne pourrait le faire.
Dans le monde réel, lorsque deux personnes se mettent d’accord sur un contrat (surtout si c’est un contrat de dix mille euros) ils signent le document contractuel. On a donc développé en informatique un moyen de signer des contrats : la signature numérique.
Pour cela, il faut inverser le principe du système à clé publique. Lorsque je veux signer un contrat, je le crypte à l’aide de ma clé privée : n’importe qui peut alors le décrypter à l’aide de ma clé publique. Pour faciliter la lecture par un tiers, je joins le contrat crypté et ma clé publique au contrat original. Les autres signataires font de même, et l’on obtient à la fin un contrat original portant avec lui une clé publique et une signature pour chaque signataire.
Pour vérifier les signatures, il suffit d’utiliser les clés publiques pour décrypter les signatures et s’assurer qu’il s’agit bien du bon contrat. Cela prouve deux choses : d’abord, la signature appartient bien au propriétaire de la clé publique (car seul lui dispose de la clé privée permettant de crypter un contrat pour qu’il soit décryptable par la clé publique), et la signature s’applique bien au document auquel elle est associée (puisque décrypter la signature indique quel était le contrat qui a été signé).

Il suffit donc au traiteur de m’envoyer, lorsque je veux passer une commande, le contrat au format PDF (contenant date de commande, date de livraison, prix et liste des petits fours). Je signe le contrat à l’aide de ma clé privée, par exemple à l’aide de ma version gratuite d’Adobe Reader, et je le lui renvoie. Le traiteur vérifie alors que la signature est correcte, ce qui lui permettra de faire valoir auprès d’un tribunal que j’ai effectivement signé ce contrat et que je dois donc mettre la main à la poche. En ce qui me concerne, je suis tranquille : ne disposant pas de ma clé privée, le traiteur ne pourra ni volontairement ni involontairement imiter ma signature et donc signer à ma place un contrat.

