Chapitre 6 FAQ de sci.crypt Chapitre 8 Retour à la case départ

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

7.1. Qu'est-ce qu'une fonction de hachage à sens unique?

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 !]

7.2. Quelle est la différence entre public, privé, secret, partagé, etc.?

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 : ]

7.3. Qu'est-ce que MD4 et MD5?

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]

7.4. Qu'est-ce que Snefru?

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].
Chapitre 6 FAQ de sci.crypt Chapitre 8 Retour à la case départ
Michel Arboi
Last modified: Sun Mar 25 16:21:10 CEST 2007