Fiche de cours

Comprendre le chiffrement asymétrique

Lycée   >   Terminale   >   NSI   >   Comprendre le chiffrement asymétrique

  • Fiche de cours
  • Quiz et exercices
  • Vidéos et podcasts
Objectifs
  • 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.
Points clés
  • 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.
Pour bien comprendre
  • 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.

1. L'algorithme de chiffrement asymétrique
a. Principe
Le chiffrement asymétrique est un algorithme cryptographique qui repose sur une clé privée et sur une clé publique.

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.
Pour résumer :
  • la clé publique est la clé de chiffrement ;
  • la clé privée est la clé de déchiffrement.
b. Avantages et inconvénients
Avantages

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.

Remarque
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.

Exemple
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 ».
Toute personne qui possède la clé publique de l’expéditeur est alors en mesure de retrouver la signature et donc d‘authentifier l’expéditeur.
Inconvénients

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.

2. L'algorithme d'échange de clés Diffie-Hellman

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.

L'échange de clés Diffie-Hellman (d’après les noms de ses deux inventeurs) est un algorithme de chiffrement asymétrique qui permet à deux personnes d’échanger secrètement une clé de chiffrement sans qu'une autre personne puisse la découvrir, même si elle a suivi leurs échanges.

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.

Remarque
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.
a. Principe

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

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.

Un calcul modulo b permet de revenir à zéro dès qu’on atteint b.
Exemple
23 + 2 = 1 (mod 24)

Si on prend des entiers pa 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.

Important
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.
Principe de l’échange d’une clé secrète
 
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.

b. Exemple avec un petit nombre premier

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 = 7× 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.

3. L'algorithme de chiffrement RSA

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.

L’algorithme de chiffrement asymétrique RSA (d’après les initiales de ses trois inventeurs) est basé sur l’arithmétique modulaire et le problème de la factorisation de grands nombres premiers. Il repose sur des paires de clés privées et publiques.
a. Principe

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.

  1. Alice envoie à Bob : .
  2. Bob envoie à Alice : .
  3. Alice envoie à Bob un message chiffré avec ,
    il n’y a que Bob qui pourra le déchiffrer avec sa clé privée .
  4. 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 .
Remarque
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.
b. Une partie de la théorie
L’algorithme de chiffrement RSA est basé sur la factorisation d’un produit de grands nombres premiers.

Bob et Alice souhaitent se transmettre des informations.

Étape 1 – Choix de la clé

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).

Rappel
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).

Étape 2 – Chiffrement

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é.

Étape 3 – Déchiffrement

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.

c. L'implémentation en Python de l'algorithme de chiffrement RSA

Pour chiffrer un bloc B en un bloc C, connaissant la clé publique RSA (ne), on doit calculer C = Be modulo n, avec 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)
Exemple
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 ».

Remarques
  • 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.

Évalue ce cours !

 

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.

S’abonner

 

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.

S’abonner

 

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.

S’abonner

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 !

S’abonner

 

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.

S’abonner

 

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 !

S’abonner

Découvrez le soutien scolaire en ligne avec myMaxicours

Plongez dans l'univers de myMaxicours et découvrez une approche innovante du soutien scolaire en ligne, conçue pour captiver et éduquer les élèves de CP à la terminale. Notre plateforme se distingue par une riche sélection de contenus interactifs et ludiques, élaborés pour stimuler la concentration et la motivation à travers des parcours d'apprentissage adaptés à chaque tranche d'âge. Chez myMaxicours, nous croyons en une éducation où chaque élève trouve sa place, progresse à son rythme et développe sa confiance en soi dans un environnement bienveillant.

Profitez d'un accès direct à nos Profs en ligne pour une assistance personnalisée, ou explorez nos exercices et corrigés pour renforcer vos connaissances. Notre assistance scolaire en ligne est conçue pour vous accompagner à chaque étape de votre parcours éducatif, tandis que nos vidéos et fiches de cours offrent des explications claires et concises sur une multitude de sujets. Avec myMaxicours, avancez sereinement sur le chemin de la réussite scolaire, armé des meilleurs outils et du soutien de professionnels dédiés à votre épanouissement académique.

Fiches de cours les plus recherchées

NSI

Décrire de manière détaillée le protocole HTTPS

NSI

Comprendre qu'un programme peut être une donnée

NSI

Introduire les notions de calculabilité et de décidabilité

NSI

Utiliser la récursivité en Python

NSI

Utiliser une API et des bibliothèques

NSI

Utiliser les paradigmes impératifs et fonctionnels

NSI

Utiliser le paradigme objet

NSI

Repérer les bugs : typages, effets de bords, débordements

NSI

Repérer les bugs : structures

NSI

Anticiper les erreurs classiques