Plus facile à lire avec un fond crème, une teinte, plus de contraste ou un texte plus grand ? Choisissez vos couleurs et votre texte, une fois pour toutes les pages.

Leçon gratuite

Chiffrement asymétrique et RSA

Après cette leçon: Je peux expliquer comment une clé publique et une clé privée travaillent ensemble.

Leçon de 60 min3 commandesLab Linux du quotidien : la trentaine de commandes que les ingénieurs tapent de tête

Écrire en secret à un inconnu

Le chiffrement asymétrique utilise deux clés liées : une clé publique pour chiffrer et une clé privée pour déchiffrer. Il permet d’envoyer un message secret sans avoir partagé de clé à l’avance.

C’est ce qui protège votre connexion à un site de banque. Votre navigateur ne connaît pas la banque, et pourtant il peut lui écrire en secret.

À la fin de cette leçon

Remarque

Je peux expliquer comment une clé publique et une clé privée travaillent ensemble.

Mots-clés

MotCe que ça veut direExemple
Clé publiquela clé que tout le monde peut connaître, pour chiffrer
Clé privéela clé gardée secrète, pour déchiffrer
Paire de clésune clé publique et la clé privée qui lui correspond
Modulole reste d’une division entière17 modulo 5 vaut 2
Nombre premierun nombre divisible seulement par 1 et par lui-même61
RSAun chiffrement asymétrique fondé sur le produit de deux grands nombres premiers

Les cellules que les étudiants remplissent restent vides dans cet aperçu.

Deux clés : l’une chiffre, l’autre déchiffre

Imaginez une boîte aux lettres. Tout le monde peut y glisser une lettre : c’est la clé publique. Seul le propriétaire possède la clé pour l’ouvrir : c’est la clé privée.

On publie la clé publique sans crainte. Ce qu’elle a chiffré ne se déchiffre qu’avec la clé privée.

Le modulo fait revenir les nombres au début

RSA calcule avec des restes de division. Sur une horloge de 12 heures, 15 heures donne 3 : on a fait un tour. C’est le modulo.

En Python, a % n donne le reste de a divisé par n. La fonction pow(a, b, n) calcule a puissance b, puis son reste modulo n, sans jamais manipuler un nombre énorme.

Huit puissance 3, modulo 55

Commande
python3 -c "print(pow(8, 3, 55))"

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Exemple travaillé : un RSA avec de petits nombres

ÉtapeCalculRésultat
1 Choisir deux nombres premiersp = 5 et q = 11Secrets
2 Calculer n5 fois 11n = 55, public
3 Calculer phi(5 moins 1) fois (11 moins 1)phi = 40, secret
4 Choisir eUn nombre sans diviseur commun avec 40e = 3, public
5 Trouver de fois d laisse 1 modulo 40d = 27, privé (3 fois 27 = 81 = 2 fois 40 + 1)
6 Chiffrer 88 puissance 3 modulo 5517
7 Déchiffrer 1717 puissance 27 modulo 558

Les cellules que les étudiants remplissent restent vides dans cet aperçu.

Déchiffrer 17 avec la clé privée 27

Commande
python3 -c "print(pow(17, 27, 55))"

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Erreur fréquente

Attention

Beaucoup de gens pensent que ce RSA à petits nombres est sûr, parce que d reste secret. Il ne l’est pas. Quiconque devine que 55 vaut 5 fois 11 retrouve d en quelques secondes. La force de RSA tient à la taille de n.

RSA tient à la taille de n

Un attaquant connaît n et e. Pour trouver d, il doit retrouver p et q, donc factoriser n. Multiplier deux grands nombres premiers est facile. Retrouver les deux facteurs d’un très grand produit est hors de portée.

Une vraie clé RSA a un n d’au moins 2048 bits, soit 617 chiffres. Vous n’écrirez jamais votre propre RSA : on utilise une bibliothèque éprouvée.

Combien de chiffres pour 2 puissance 2048 ?

Commande
python3 -c "print(len(str(2 ** 2048)))"

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Dans la pratique, on combine les deux familles

Le chiffrement asymétrique est lent. On l’utilise donc seulement pour envoyer une petite clé secrète, et c’est cette clé qui chiffre ensuite tout le reste avec un chiffrement symétrique.

Une connexion sécurisée fonctionne ainsi : la paire de clés sert à s’entendre, la clé partagée sert à parler.

À propos de ce labo et de sa source: Lab Linux du quotidien : la trentaine de commandes que les ingénieurs tapent de tête

Vous enseignez à une classe ? Proposez ce module à vos étudiants avec un guide de l'enseignant, des devoirs corrigés et un laboratoire pour chaque étudiant.