Les systèmes de chiffrement traditionnels ne sont pas du tout adapté à la situation d'Internet, puisqu'ils nécessitent l'échange préalable d'une clef qui doit rester secrète entre deux interlocuteurs désirant dialoguer confidentiellement par une connexion ENcryptée: il serait impossible de préserver le secret de cette clef si elle transitait sur le réseau, de par sa nature même (gestion décentralisée, contrôle d'acces faible ou absent , etc)
Ces besoins là se sont avérés pressants lors de la réelle prise de possession d'Internet (alors Goofer) par ses utilisateurs. Diffie et Hellman proposent de contourner le problème par un système de chiffrement à clef publique, dont voici les principes généraux:
* Chacun possède deux clefs: l'une reste secrète, l'autre au contraire peut et doit être diffusée ouvertement chez tous les futurs correspondants. C'est la clef publique.
* Il y a une relation spécifique entre ces deux clefs qui fait qu'un texte encrypté avec la clef publique ne peut êter décrypté qu'avec la clef privée correspondante.
* Cette relation ne peut pas être "inversée": même en connaissant la clef publique et la corrélation évoquée avec la clef privée, ilest impossible de retrouver cette dernière.
Par exemple dans le système RSA il faut trouver deux facteurs premiers d'un entier trés grand (de 1024 bits) pour déduire la clef privée à partir de la clef publique, alors qu'il n'existe pas d'algo réalisant une telle factorisation en un temps acceptable.
*Pour envoyer un message confidentiel à mon correspondant, je l'encrypte d'abord avec sa clef publique et il le décrypte à l'aide de sa clef privée
*Puisqu'il est le seul à posséder ette clef, il est le seul à pouvoir lire mon message: ,ous avons réalisé une information confidentielle sans échanger auparavent aucun secret.
A cause de ce dernier point, l'idée de Diffie et Hellman fut considérée à l'époque comme révolutionnaire, de manière tout à fait justifiée.
Il arrive souvent dans le système à clef publique (en particulier le SRA) que la relation entre les deux clefs, privée et publique, soit parfaitement symétrique. Je peux donc aussi encrypter un message avec ma clef privée et alors tout le mone pourra le décrypter avec ma clef publique. Il n'en résulte aucune confidentialité, mais par contre nous obtenons l'authentifiaction. Puisque je suis le seul à posséder cette clef privée, tout le monde peut être sûr que je suis l'auteur dudit message: c'est comme si je l'avais signé.C'est ce type d'application qui est utilisé dans le système des certificats.
Ces systèmes sont malheureusement susceptibles aux attaques par intermédiaire (man-in-the-middle attack): un malfrat contrôlant le canal entre deux correspondants peut, lorsqu'ils s'échangent leur clefs publiques, les mettre de côté et les remplacer par les clefs contrefaites de son choix (en particulier il dispose des clefs privées qui leur sont liées). Ceci lui permettra par la suite de décrypter les messages transmis et les correspondants ne s'apercevront de rien s'il s'assure de les encrypter à nouveau avec les clefs contefaites et de les envoyer aux destinataires.
La solution est de faire authentifier sa clef publique par une AUtorité de Certification. Celle-ci va contresigner (digitalement) un document électronique liant l'identité d'une personne et sa clef publique. C'est ce document signé qu'on appelle le certificat de cette personne. Chacun vérifie à l'aide de la clef publique de l'Autorité de Certification la signature sur le certificat du destinataire avant d'utiliser la clef publique correspondante pour chiffrer un message qu'il veut lui envoyer.
Pour en savoir plus:
* http://sawww.epfl.ch/SIC/SA/publications/FI95/fi-7-95/7-95-page3.html
* http://www.rsasecurity.com/rsalabs/faq/sections.html
* http://www.faqs.org/faqs/cryptography-faq/part06/
* http://slwww.epfl.ch/CA/rsa/
et http://www.fr.thawte.com/certificats.html
et exemple de clef publique :
http://www-sop.inria.fr/meije/personnel/madelain/PublicPGP.html


