Le chiffrement RSA expliqué pas à pas [2/5]

0

Le chiffrement asymétrique avec «trap-door»

Le principe

Une autre manière d’exprimer le problème de notre précédent article est de dire que la divulgation de clé de chiffrement donne suffisamment d’information pour trouver facilement la clé de déchiffrement.
L’opération est même triviale puisque c’est exactement la même clé.
Le principe du chiffrement asymétrique est d’avoir deux clés distinctes : une pour le chiffrement et une autre pour le déchiffrement.

L’analogie souvent utilisée est celle du cadenas et de la clé. On utilise le cadenas pour fermer une boîte (chiffrer) et la clé pour ouvrir la boîte (déchiffrer). Tout le monde peut avoir accès au cadenas (dans un vestiaire d’une salle de sport par exemple) mais seule la personne ayant la clé peut l’ouvrir (pour accéder à son casier).

La clé de chiffrement (le cadenas) est appelée la clé publique. La clé de déchiffrement (la clé du cadenas) est appelée la clé privée.

Avec un tel algorithme, Jim peut envoyer à Claire sa clé publique. Elle l’utilisera pour chiffrer un message pour Jim qui sera le seul à pouvoir le lire. Et vice-versa (Claire envoie sa clé publique à Jim qui l’utilise pour écrire à Claire).

Résumé en image

 

La faille

Le lecteur avisé notera qu’il est possible pour Steve d’intercepter les messages (et donc les clés) et de les remplacer pas les siens (et ses propres clés).

C’est ce qu’on appelle l’attaque “man-in-the-middle”. C’est une faille qui est présente sur tous les algorithmes de chiffrement utilisés aujourd’hui et un certain nombre de mesures ont été mises en place pour pallier ce problème. En particulier, l’«autorité de certification» est utilisé pour les communications HTTPS et sera le sujet du dernier article de notre série.

Pour notre exemple, nous partirons du principe que Claire et Jim se rendront compte que le message est écrit avec l’écriture de Steve et non pas avec celle de la personne avec qui ils pensent converser. La supercherie sera donc vite découverte et les secrets protégés.

L’asymétrie par la pratique

Le principe du chiffrement asymétrique est plus facile à dire qu’à faire. En pratique, l’algorithme de chiffrement étant divulgué, il est souvent possible de déduire l’algorithme de déchiffrement.
Par exemple, dans le cas du chiffrement à décalage, l’algorithme est +x il est facile de déduire que le déchiffrement se fait grâce à l’algorithme -x.

Il faut commencer par trouver une opération facile à faire dans un sens et difficile à faire dans l’autre sens. Cette opération peut alors être à la base de notre algorithme de chiffrement.

Bonne nouvelle ! Il en existe une très simple. Il est très facile de multiplier deux nombres premiers entre eux et beaucoup plus difficile de lister les facteurs premiers d’un nombre.

Par exemple il est très facile de calculer le produit de 47 par 59 (même google me donne le bon résultat) mais il est beaucoup plus difficile de trouver les nombres premiers qui composent 2623.

Ces deux opérations sont inverses mais l’une est facile et l’autre difficile. C’est là que réside la notion d’asymétrie.

La trap-door

Cette asymétrie nous pose problème. En effet, pour lire les messages de Jim, Claire devra résoudre un problème difficile et abandonnera très probablement avant même d’avoir commencé. Pour que le chiffrement soit utilisable, il faut que le chiffrement et le déchiffrement soient faciles pour les utilisateurs légitimes.

Une solution, est de garder une information supplémentaire rendant le déchiffrement facile. C’est ce que l’on appelle une trap-door. Cette trap-door est idéale pour jouer le rôle de clé privée.

Conclusion, Jim et Claire ont besoin d’un algorithme de chiffrement asymétrique avec trap-door. Peu d’algorithmes de chiffrement asymétriques avec trap-door ont été trouvés jusqu’à présent. Dans notre prochain article, nous allons étudier le plus connu et le plus utilisé : RSA.

Partagez cet article.

A propos de l'auteur

Xavier travaille comme développeur et leader technique Java depuis plusieurs années et suit de très près les nombreuses avancées dans le domaine. Expert sur Struts, Spring, Hibernate, JUnit, TestNG, Mockito, Apache commons, Xavier est aussi adepte du Craftsmanship. "La pédagogie et le partage des bonnes pratiques dans un esprit convivial et ludique" est bel et bien son crédo.

Ajouter un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.