Cryptographie!

La signature électronique

L'objectif des signatures électroniques
  Les signatures électroniques sont l'analogue électronique des signatures sur papier. Un bon protocole de signature électronique doit avoir les propriétés suivantes :
  • il doit garantir l'authenticité : la signature ne doit pas pouvoir être imitée. Autrement dit, si un document porte la signature électronique d'Alice, on doit pouvoir être sûr que c'est effectivement Alice qui l'a signé.
  • il doit garantir la non-répudiation : si Alice a signé un document, elle ne doit pas pouvoir se rétracter et pouvoir prétendre ensuite qu'elle ne l'a pas signé.
  • il doit garantir l'intégrité : en comparant la signature et le message, on doit pouvoir être sûr que le message n'a pas été altéré lors de l'envoi.
Un protocole général fondé sur la cryptographie à clé publique

  Là encore, la cryptographie à clé publique peut résoudre ce problème. Alice veut donc envoyer un message crypté à Bob, mais Bob veut s'assurer que ce message provient bien d'Alice. Ils se sont mis d'accord sur un système de cryptographie à clé publique commun, Alice possédant le couple clé publique/clé privée (PA,SA), et Bob le couple (PB,SB). Alice veut envoyer M.

  • Phase d'envoi : Alice calcule SA(M), à l'aide de sa clé secrète, puis PB(SA(M)), à l'aide de la clé publique de Bob.
  • Phase de réception : A l'aide de sa clé privée, Bob calcule SB(PB(SA(M)))=SA(M). Seul lui peut effectuer ce calcul (=sécurité de l'envoi). Puis il calcule PA(SA(M))=M. Il est alors sûr que c'est Alice qui lui a envoyé ce message, car elle seule a pu calculer SA(M).
  Contrairement au cas du chiffrement par clé publique, le RSA n'est presque jamais utilisé comme algorithme à clé publique dans les procédés de signature, en raison de faiblesses structurelles. On lui préfère des procédés à base du chiffrement ElGamal.
Fonctions de hachage?
  Ce protocole, s'il est fiable, est lent puisque deux fois plus lent qu'un algorithme à clé publique (lui-même déjà très lent!). En outre, il ne garantit pas l'intégrité du message, c'est-à-dire que celui-ci n'est pas altéré par des erreurs de transmission. L'utilisation des fonctions de hachage résout ces problèmes.

  Une fonction de hachage calcule un "résumé", d'une longueur fixe, d'un texte. Elle permet de garantir qu'un texte n'a pas été altéré lors d'une transmission. En effet, on envoie un texte et son résumé. A l'arrivée, on compare le résumé du texte reçu et le résumé envoyé : s'ils sont égaux, le message a été envoyé sans erreur. Pour que ceci soit efficace, une bonne fonction de hachage doit avoir les propriétés suivantes :
  • elle doit être très sensible au texte initial : une petite modification du texte initial doit entrainer une grande modification du résumé.
  • elle doit être résistante aux collisions : on dit qu'il y a collision pour la fonction de hachage $h$ et les textes $M$ et $M'$ si $h(M)=h(M')$. Une fonction de hachage calculant un résumé de longueur fixe à partir de textes de longueurs arbitraires, elle possède toujours des collisions. La résistance aux collisions signifie qu'on ne sait pas produire volontairement de collisions, c'est-à-dire que, connaissant le résumé $h(M)$ d'un texte, on ne sait pas produire un texte $M'$ tel que $h(M')=h(M)$.
  U fonction de hachage, couplée à la cryptographie à clé publique, permet de permet de répondre aux problèmes d'authentification, d'intégrité et de non-répudiation, en utilisant le protocole suivant :
  • Phase d'envoi : Alice calcule h(M) - le résumé - et envoie à Bob PB(M) (calculé à l'aide de la clé publique de Bob) accompagné de SA(h(M)).
  • Phase de réception : Bob calcule SB(PB(M))=M'. Puis il calcule PA(SA(h(M))), qu'il compare à h(M'). Si les quantités sont égales, il est sûr que c'est bien Alice qui a envoyé le message, et que celui-ci a été correctement transmis.
Consulter aussi