Comprendre le chiffrement asymétrique
- Fiche de cours
- Quiz et exercices
- Vidéos et podcasts
- Comprendre le principe d’un algorithme de chiffrement asymétrique pour sécuriser des communications.
- Implémenter en Python un algorithme de chiffrement asymétrique.
- L’algorithme de chiffrement asymétrique
est un algorithme de chiffrement qui utilise des
clés privées et publiques.
La clé publique est connue de tous et permet le chiffrement d’un message, tandis que la clé privée permet à la personne qui reçoit le message chiffré de le déchiffrer. - Ce chiffrement est couteux en ressources, on l’utilise donc pour transmettre des clés de chiffrement symétrique complexes ou longues, et pour effectuer des signatures numériques.
- Introduire la cryptographie.
- Comprendre le chiffrement symétrique.
La cryptographie (« écriture secrète ») consiste à protéger un message en utilisant des clés pour le chiffrer.
La cryptographie repose sur des algorithmes qui utilisent des clés pour chiffrer et pour déchiffrer des messages. Il peut s’agir d’un algorithme de chiffrement symétrique ou d’un algorithme de chiffrement asymétrique.
On étudie ici les algorithmes de chiffrement asymétrique.
On utilise la clé publique pour chiffrer un message, mais le message chiffré ne sera déchiffré que par la personne qui possède la clé privée. La clé publique est donc connue de tous, tandis que la clé privée doit rester secrète.
- la clé publique est la clé de chiffrement ;
- la clé privée est la clé de déchiffrement.
Le système de chiffrement asymétrique permet de chiffrer un message en assurant la confidentialité. Il n’y a que le récepteur possédant la clé privée qui peut lire le message. Cette clé privée n’a pas été diffusée.
En chiffrement symétrique, il faut diffuser la clé au destinataire pour que celui-ci puisse déchiffrer le message.
Ce système permet également d’authentifier l’expéditeur.
Si l’expéditeur utilise sa clé privée pour signer un document, il appose sa signature. C’est comme si il apposait son empreinte « digitale ».
Le chiffrement asymétrique est plus long que le chiffrement symétrique, on ne pourra de plus pas récupérer la clé privée si on la perd.
Le chiffrement symétrique est très efficace, son défaut se trouve dans la transmission des clés entre l'expéditeur et le récepteur, car les transmissions peuvent être interceptées.
Il a fallu attendre les années 1970 pour que les cryptologues américains Diffie et Hellman trouvent un moyen sûr d’échanger les clés de manière totalement sécurisée, en utilisant un algorithme de chiffrement asymétrique.
Cet algorithme utilise des clés publiques (que les deux personnes s'échangent de manière non sécurisée) pour échanger de manière sécurisée une clé de chiffrement privée.
L’algorithme d’échange de clés Diffie-Hellman est un algorithme de chiffrement asymétrique car il utilise des clés différentes pour chiffrer et pour déchiffrer un message.
Soit deux personnes, qu’on nomme par convention Alice et Bob, qui souhaitent échanger un message chiffré reposant sur une clé privée K, mais qui ne disposent pas d’une communication sécurisée.
Ils utilisent l’algorithme d’échange de clés Diffie-Hellmann, qui repose sur l’arithmétique modulaire, pour s’échanger cette clé de chiffrement privée K.
L’arithmétique modulaire utilise l’opération modulo sur les nombres entiers.
L’opération modulo entre un entier a et un entier b permet d’obtenir le reste de la division euclidienne de a par b.
23 + 2 = 1 (mod 24)
Si on prend des entiers p, a et x, on calcule ainsi très facilement y = ax modulo p, par contre retrouver x connaissant y est très difficile si p est grand.
Il faut utiliser Python pour calculer un modulo.
Exemple : pour obtenir la valeur 79 modulo 11, il faut taper dans le shell de Python (7**9)%11.
Alice
|
Bob
|
|
Étape 1 |
Alice et Bob choisissent ensemble un nombre
premier p et un nombre
entier g tels que
1 ≤ g < p – 1. Cet échange n’a pas besoin d’être sécurisé. |
|
Étape 2 | Alice choisit secrètement un entier a au hasard. | Bob choisit secrètement un entier b au hasard. |
Étape 3 |
Alice calcule A = ga modulo p. |
Bob calcule B = gb modulo p. |
Étape 4 |
Alice envoie à Bob la valeur
de A, tandis que Bob
envoie à Alice la valeur
de B. Cet échange n’a pas besoin d'être sécurisé. |
|
Étape 5 |
Alice calcule Ba = (gb)a = gab
modulo p.
Le nombre obtenu correspond à la clé secrète K. |
Bob calcule Ab = (ga)b = gab
modulo p.
Le nombre obtenu correspond à la clé secrète K. |
Alice et Bob connaissent donc la même clé secrète sans se l’envoyer, qui correspond au nombre gab modulo p.
Si les transmissions sont interceptées, l’attaquant connaitra p, g, A et B, mais il ne pourra pas retrouver K car il ne connait pas a et b.
En mathématiques, il est en effet très difficile de retrouver a si on connait g, p et B = ga modulo p.
Voici un exemple d’échange d’une clé secrète avec l’algorithme Diffie-Hellman, pour un petit nombre premier p.
Alice
|
Bob
|
|
Étape 1 | Alice et Bob choisissent ensemble p = 11 et g = 7. | |
Étape 2 | Alice choisit secrètement a = 6. | Bob choisit secrètement b = 9. |
Étape 3 | Alice calcule A = ga = 76 modulo p = 11. | Bob calcule B = gb = 79 modulo p = 11. |
Étape 4 |
Alice envoie à Bob la valeur
de A (76),
tandis que Bob envoie à Alice la
valeur de B (79).
Cet échange n’a pas besoin d'être sécurisé. |
|
Étape 5 | Alice et Bob calculent gab = 76 × 9 = 754 modulo p = 11, ce qui vaut 3 : c’est une clé partagée seulement par Alice et Bob. |
À la fin de l’algorithme, Alice et Bob connaissent donc la même clé secrète K = 3.
En 1977, les cryptologues Rivest, Shamir et Adleman se sont inspirés de l’algorithme d’échange de clés de Diffie-Hellman pour déposer un brevet pour l’algorithme de chiffrement asymétrique RSA. La différence avec Diffie-Hellman est que cet algorithme s’assure de l’identité des participants.
Alice dispose d’une clé publique et d’une clé privée .
Bob dispose d’une clé publique et d’une clé privée .
Alice veut envoyer un message confidentiel à Bob, et Bob veut répondre à Alice de façon confidentielle.
Ils doivent suivre la procédure suivante.
- Alice envoie à Bob : .
- Bob envoie à Alice : .
- Alice envoie à Bob un message chiffré
avec ,
il n’y a que Bob qui pourra le déchiffrer avec sa clé privée . - Celui-ci lui répond en chiffrant son message
avec ,
il n’y a qu’Alice qui pourra le déchiffrer avec sa clé privée .
L’algorithme de chiffrement RSA est couteux en mémoire, du coup on l’utilise pour transmettre des clés de chiffrement symétrique complexes et longues ou pour effectuer des signatures numériques.
Bob et Alice souhaitent se transmettre des informations.
Alice choisit deux nombres premiers p et q assez grands (plus d’une centaine de chiffres) qu’elle garde secrets.
Elle calcule alors leur produit n = pq qu’on nomme module de chiffrement et qui va faire partie de sa clé publique.
Puis elle choisit un nombre entier e qui est premier avec (p – 1)(q – 1).
Deux nombres entiers a et b sont dits premiers entre eux dans un ensemble défini, si leur plus grand diviseur commun est 1.
Elle publie alors dans un annuaire, qui peut se trouver sur le web, sa clé publique RSA (n, e).
Bob veut envoyer un message à Alice, il récupère dans l’annuaire la clé publique RSA (n, e) que Alice a publiée. Cette clé publique lui indique qu’il doit utiliser l’algorithme RSA avec les deux entiers n et e.
Bob découpe d’abord son message en blocs B de même taille qui représentent chacun un nombre plus petit que n.
Il transforme ensuite chaque bloc B en un bloc C qui est chiffré, grâce au calcul C = Be modulo n.
En regroupant les blocs C obtenus par calcul, Bob obtient le message chiffré qu’il va envoyer à Alice.
On voit que pour chiffrer un message, il va y avoir pas mal de calculs puisqu’il faut transformer chaque bloc B du message en clair en un bloc C qui est chiffré.
Pour déchiffrer le message envoyé par Bob, Alice utilise sa clé privée k qu’elle a obtenue à partir de p et de q.
Cette clé satisfait l’équation ek = 1 modulo (p – 1)(q – 1).
Alice déchiffre chaque bloc C du message chiffré en utilisant la formule B = Ck modulo n.
En regroupant les blocs B obtenus par calcul, Alice obtient le message secret de Bob.
Pour chiffrer un bloc B en un bloc C, connaissant la clé publique RSA (n, e), on doit calculer C = Be modulo n, avec n et e les entiers qui composent la clé publique reçue.
On appelle cela une exponentiation rapide, et Python possède une fonction native qui permet cela : il faut taper la fonction pow, suivie de B, suivi de l’exposant e qui est lui-même suivi de n.
pow(B,e,n)
Voici le programme associé pour chiffrer un bloc B en un bloc C avec Python.
Python | Explication |
def chiffre(B,e,n): |
On définit la fonction chiffre qui va permettre de
chiffrer un bloc B en un
bloc C.
Cette fonction prend en paramètres le bloc B et les entiers e et n de la clé publique. |
return pow(B,e,n) |
On retourne le bloc chiffré
C. (C = Be modulo n) |
Voici l’exécution de ce programme sur Python Tutor, pour chiffrer le message « 11 » avec la clé publique RSA (21,5).
Le message « 2 » correspond au message chiffré du message en clair « 11 ».
- On peut aussi construire la fonction expo_rapide, pour obtenir le même résultat mais qui est plus longue.
- L’implémentation pour obtenir la clé privée se base sur des notions mathématiques qui sont hors programme, avec des résolutions d’équations de Bézout.
Des quiz et exercices pour mieux assimiler sa leçon
La plateforme de soutien scolaire en ligne myMaxicours propose des quiz et exercices en accompagnement de chaque fiche de cours. Les exercices permettent de vérifier si la leçon est bien comprise ou s’il reste encore des notions à revoir.
Des exercices variés pour ne pas s’ennuyer
Les exercices se déclinent sous toutes leurs formes sur myMaxicours ! Selon la matière et la classe étudiées, retrouvez des dictées, des mots à relier ou encore des phrases à compléter, mais aussi des textes à trous et bien d’autres formats !
Dans les classes de primaire, l’accent est mis sur des exercices illustrés très ludiques pour motiver les plus jeunes.
Des quiz pour une évaluation en direct
Les quiz et exercices permettent d’avoir un retour immédiat sur la bonne compréhension du cours. Une fois toutes les réponses communiquées, le résultat s’affiche à l’écran et permet à l’élève de se situer immédiatement.
myMaxicours offre des solutions efficaces de révision grâce aux fiches de cours et aux exercices associés. L’élève se rassure pour le prochain examen en testant ses connaissances au préalable.
Des vidéos et des podcasts pour apprendre différemment
Certains élèves ont une mémoire visuelle quand d’autres ont plutôt une mémoire auditive. myMaxicours s’adapte à tous les enfants et adolescents pour leur proposer un apprentissage serein et efficace.
Découvrez de nombreuses vidéos et podcasts en complément des fiches de cours et des exercices pour une année scolaire au top !
Des podcasts pour les révisions
La plateforme de soutien scolaire en ligne myMaxicours propose des podcasts de révision pour toutes les classes à examen : troisième, première et terminale.
Les ados peuvent écouter les différents cours afin de mieux les mémoriser en préparation de leurs examens. Des fiches de cours de différentes matières sont disponibles en podcasts ainsi qu’une préparation au grand oral avec de nombreux conseils pratiques.
Des vidéos de cours pour comprendre en image
Des vidéos de cours illustrent les notions principales à retenir et complètent les fiches de cours. De quoi réviser sa prochaine évaluation ou son prochain examen en toute confiance !