Signatures numériques
Ceci est le septième des dix chapitres de la FAQ de sci.crypt.
Nous n'avons pas le temps d'envoyer ce qui manque par courrier
électronique, donc ne demandez rien.
Des notes comme "[KAH67]" renvoient à la liste de références au
dernier chapitre.
Les chapitres de cette FAQ sont disponibles par FTP anonyme sur
ftp://rtfm.mit.edu/pub/usenet/news.answers/cryptography-faq/part[xx]
La FAQ de cryptographie est postée sur les groupes de discussions
sci.crypt, talk.politics.crypto, sci.answers, et news.answer tous les 21 jours.
Table des matières
Une fonction de hachage à sens unique typique prend un message de
longueur variable en entrée et produit un "résumé" de longueur
fixe. Il est impossible de trouver le message qui a généré un résumé
donné; en fait on ne doit pas pouvoir obtenir la moindre information
utile sur le message, même pas un simple bit. Pour certaines
fonctions de hachage à sens unique il doit aussi être impossible de
trouver deux messages qui ont le même résumé.
Une fonction de hachage à sens unique peut être publique ou privée,
tout comme une fonction de chiffrement. Voici une application d'une
fonction publique comme MD5 ou Snefru. La plupart des systèmes de
signature à clé publique sont relativement lents. Signer un long
message peut être trop long. La solution: calculer le résumé du
message, puis signer le résumé, qui est court. Quelqu'un qui veut
vérifier la signature peut faire la même chose.
[NdT: pas exactement, sinon n'importe qui pourrait falsifier la
signature ! Soit H la fonction de hachage, M le texte à signer,
supposons que l'on utilise le RSA, donc une fonction de chiffrement
E (publique) et de déchiffrement D (privée) : d'un côté on calcule
D(H(M)) = s et de l'autre on vérifie E(s) = H(M)
Je laisse ElGamal en exercice !]
Il y a dans la littérature un énorme mélange de terminologie à
propos d'un très petit ensemble de concepts. Les voici: (1) Quand un
algorithme dépend d'une clé qui n'est pas publiée, on l'appelle
algorithme privé; sinon on l'appelle algorithme public.
(2) Nous avons des fonctions de chiffrement E et de déchiffrement
D, telles que D(E(M))=M pour tout message M. (3) Nous avons aussi
des fonctions de hachage H et des fonctions de vérification V,
telles que V(M,X) = 1 si et seulement si X = H(M).
Un cryptosystème à clé publique a une fonction de chiffrement
publique et une fonction de déchiffrement privée. Les sommes de
contrôles, comme celle mentionnée dans la question précédente, ont
un hachage et une vérification publique.
La signature numérique a un hachage privé et une vérification
publique: une seule personne peut produire la signature d'un
message, mais toutes peuvent vérifier qu'elle est correcte.
Manifestement, quand un algorithme dépend d'une clé privée, il est
inutilisable par quiconque n'a pas la clé. Il n'y a pas vraiment de
différence entre une clé "partagée" et une clé privée: une clé
partagée n'est pas publiée, donc elle est privée. Si vous chiffrez
des données pour un ami, allez-vous subitement faire du "chiffrement à
clé partagée" plutôt que du chiffrement à clé privée? Non.
[NdT: je vous jure que l'original ne vaut pas mieux que mon
charabia. Kerberos et d'autres systèmes classent les clés en trois
catégories :
- privée, connue d'un seul protagoniste. Par exemple, la clé
privée RSA.
- publique, connue de tout le monde. L'autre clé RSA.
- secrète, connue de deux personnes. Par exemple, une clé DES ou
de n'importe quel autre algorithme symétrique.
]
MD4 et MD5 sont des fonctions de hachage développées par Ron
Rivest. Elles sont définies dans les RFC 1320 et 1321 (voir chapitre
10). Le code est disponible sur
[FTPMD].
NB: on a trouvé une erreur de transcription dans le premier
brouillon MD5. On devrait appeler l'algorithme corrigé MD5a, mais
beaucoup l'appellent MD5.
[NdT: MD5 passe de mode car il se pourrait qu'il soit faible. On
préfère SHA en ce moment]
Snefru est une famille de fonctions de hachage développée par Ralph
Merkle. Snefru-8 est une fonction à 8 rondes, la plus récente de la
famille. Elles sont définies dans le papier de Merkle
[ME91a]. Le
code est disponible sur
[FTPSF].
Michel Arboi
Last modified: Sun Mar 25 16:21:10 CEST 2007