Les commandements de la crypto [2] : Clé publique et clé privée tu distingueras

Comment être sûr que personne d'indésirable viendra chez vous si vous envoyez les clés de votre maison à un ami par la poste ? Les codes ont eu ce problème jusqu'à ce que le RSA différencie précisément clé publique et clé privée.

Après la Seconde Guerre Mondiale, l'échange de clés est la principale faille de sécurité en cryptographie. Résultat, les corps diplomatiques dépensent des sommes folles juste pour acheminer des clés secrètes d'agent secret à agent secret.

Absurde ? Pas tant que ça, si on considère la facilité avec laquelle on peut ouvrir l'air de rien une enveloppe à la vapeur. Et, tant qu'une clé n'est pas précisée entre Alice et Bob, impossible d'envoyer un message codé. Ce casse-tête va notamment passionner trois chercheurs américains.

Quand les mathématiciens arrivent, clés en main

Dans les années 1970, les matheux Rivest, Shamir et Adlemar se creusent les méninges pour essayer de sortir de ce sac de nœuds incommensurable.

Les travaux de deux autres chercheurs, Diffie et Hellmann, posent les bases de leur réflexion. Le duo Diffie-Hellmann a testé de nombreuses pistes sur un échange sécurisé de clés.

Une des plus prometteuses options consistait à imaginer que :

  • Alice verrouille la boîte contenant le message avec son propre cadenas
  • elle envoie la boîte envoie à Bob, qui ajoute son propre cadenas
  • Bob renvoie le tout à Alice
  • Alice déverrouille son cadenas avant de renvoyer la boîte à Bob
  • Bob n'a plus qu'à ouvrir son seul cadenas, et le tour est joué

Le seul problème, c'est que la cryptographie symétrique fonctionne comme des poupées russes : vous ne pouvez pas placer correctement la tête d'une poupée sur un corps plus petit.

Si l'ordre n'est pas respecté, vous ajoutez une nouvelle couche de cryptage au lieu de décrypter le message codé. Résultat : du yaourt.

Authentification et sécurité: que demande le peuple ?

Et un jour, l'idée jaillait pourtant : utiliser deux clés, l'une publique, l'autre privée, pour contourner ce problème. Le concept de cryptographie asymétrique est grosso modo le suivant :

  • si Alice veut envoyer un message à Bob, elle utilise sa clé publique pour coder le message, comme n'importe qui d'autre
  • Bob reçoit le message que seule sa clé privée peut décoder
  • il peut, cerise sur le gâteau, envoyer un accusé de réception crypté à l'aide de sa clé privée à Alice. En le décodant avec la clé publique de Bob, elle verra le message apparaître en clair, ce qui authentifiera Bob.
  • cette manip' fonctionne comme si la clé publique était un pot de peinture jaune et la clé privée un pot de peinture bleue. Alice file un pot de peinture jaune à Bob, qui obtient un pot de peinture verte en mélangeant à son pot privé. Bob donne en retour un pot de peinture bleue à Alice, qui voit apparaître du vert en la mélangeant avec le pot public

Sécurité quasi absolue, à condition de ne jamais filer sa clé privée à qui que ce soit, et que cette clé soit suffisamment longue pour qu'aucun petit malin ne puisse arriver à décoder après avoir testé toutes les clés.

Enfin, il faut que l'opération de cryptage puisse être suffisamment complexe pour ne pas être inversée. Comment ? C'est ce que nous verrons dans le prochain commandement...

Comments

Comment by H3 on 2012-07-12 13:58:12 +0200

Petite coquille (ou alors j'ai rien compris) : "elle la boîte envoie à Bob, qui ajoute son propre cadenas". Il manque un mot... 😉

Comment by Raphi on 2012-07-12 14:01:00 +0200

C'est exact, bien corrigé. Merci pour le signalement 😉

Comment by Nono on 2012-07-12 14:47:45 +0200

Il veille H3, il veille ! 🙂

Comment by H3 on 2012-07-12 19:10:34 +0200

Bah non, y'a des fois ou je dors quand même... 😀