Chiffrement asymétrique

Objectifs

  • Découvrir le chiffrement asymétrique ;

  • Utiliser un algorithme de chiffrement asymétrique.

Mise en situation

L'inconvénient du chiffrement symétrique est que si trois personnes souhaitent communiquer entre elles deux par deux, et bien le troisième pourra toujours espionner les deux autres, puisque le code est commun. On pourrait imaginer que chaque couple de personnes possède une clé spécifique, mais si 1000 personnes échangent entre elles, cela fera pour chacune, 999 clés à gérer. On voit bien que cela n'est pas satisfaisant pour les communications sur Internet.

La solution est fournie par le chiffrement asymétrique. Celui-ci est basé sur les propriétés mathématiques d'une paire de clés : la première est publique, elle est communiquée au monde entier et elle sert à chiffrer les messages. La seconde est privée, elle n'est communiquée à personne et elle sert à déchiffrer les messages. Ainsi si quelqu'un souhaite m'envoyer un message, il peut le chiffrer avec ma clé publique, seul moi pourrai le lire car je suis le seul à disposer de la clé privée.

On peut voir cela comme des milliers de boites inviolables que je diffuserais dans le monde entier. N'importe qui peut prendre une de mes boîtes et glisser un message dedans. Je suis le seul à en posséder la clé, donc seul moi pourrai accéder au message.

DéfinitionLe chiffrement asymétrique

Le chiffrement asymétrique vient concrétiser la différence entre la clé de chiffrement et de déchiffrement. En pratique, la clé de chiffrement sera nommée clé publique car elle sera librement communiquée. La clé de déchiffrement sera nommée clé privée car elle ne doit être communiquée sous aucun prétexte.

Dans ce contexte, chaque personne aura sa propre clé publique et sa propre clé privée :

  • N'importe qui pourra utiliser la clé publique d'une personne pour lui envoyer un message (cette clé publique est connue de tous).

  • Ce message ne sera déchiffrable qu'avec la clé privée de cette même personne (qui n'est détenue que par elle-même).

ExempleSchéma d'utilisation classique

L'exemple le plus simple est le suivant : Bob veut envoyer un message à Alice.

  1. La clé publique d'Alice est disponible sur Internet.

  2. Bob la récupère et chiffre son message grâce à cette clé.

  3. Bob envoie le message chiffré à Alice.

  4. Alice reçoit puis déchiffre le message grâce à sa clé privée.

A l'issue de la communication, Alice et Bob sont certains que leur communication a été confidentielle... à moins qu'Alice n'ait pas correctement protégé la confidentialité de sa clé privée (à cause d'une erreur ou d'une attaque).

ComplémentChiffrer avec la clé privée pour signer

Il est possible d'inverser le rôle des clés en chiffrant avec la clé privée et en déchiffrant avec la clé publique. Le but d'une telle pratique n'est pas de garder le message secret mais de vérifier l'identité de l'expéditeur. Seul le propriétaire de la clé privée peut générer un message déchiffrable avec la clé publique, ce qui garantit son identité.

ExempleChiffrement RSA

Le chiffrement RSA est l'un des algorithmes les plus connus lorsque l'on parle de chiffrement asymétrique. Il est utilisé dans de nombreux contextes notamment :

  • Par le protocole SSH, qui permet d'accéder à un serveur distant de manière sécurisée.

  • Pour transmettre une clé de chiffrement symétrique. La clé de chiffrement symétrique doit rester confidentielle : elle est transmise à l'aide d'un chiffrement asymétrique lorsqu'elle doit être partagée à un tiers autorisé.

MéthodeGénérer ses propres clés

Il existe plusieurs manières de générer des clés RSA. La plus simple est de générer des clés SSH qui sont déjà des clés RSA. Le plus souvent la paire de clés sont nommées de la manière suivante : nom_clé.pub pour la publique et nom_clé pour la privée. Il est commun de posséder plusieurs paires de clés. On préfère garder une nomenclature similaire pour le nom des clés pour ne pas les mélanger. Ces clés pourront être directement utilisées pour accéder à un serveur distant.

1
ssh-keygen

Pour la suite, on génère les clés RSA directement avec openssl.

1
# Génère une clé privée protégée par mot de passe dans le fichier private.pem
2
openssl genrsa -des3 -out private.pem 2048
3
# Extrait la clé publique de la clé privée dans le fichier public.pem
4
openssl rsa -in private.pem -outform PEM -pubout -out public.pem

ConseilUtiliser une phrase secrète ou un mot de passe

Il est possible de sécuriser sa clé privée en spécifiant un mot de passe lors de la génération de la clé.

Ainsi, la clé privée est elle-même chiffrée par chiffrement symétrique.

Une telle pratique permet de conserver la sécurité même si un attaquant réussit à récupérer la clé privée. Il est tout de même fortement conseillé de générer une nouvelle clé si sa clé actuelle est compromise.

ExemplePaire de clés RSA

Voici à quoi ressemble une clef privée RSA, protégée par mot de passe (il ne faut jamais publier une telle clé si elle est en service).

Voici une clef RSA publique : c'est celle que l'on partage avec des tiers pour des communications.

MéthodeChiffrer et déchiffrer

Pour chiffrer et déchiffrer un message, il est nécessaire d'utiliser les commandes ci-dessous.

Pour chiffrer un fichier :

1
openssl rsautl -encrypt -pubin -inkey public.pem -in msg.txt -out msg.enc

Pour chiffrer une chaîne de caractères :

1
echo "Message confidentiel" | openssl rsautl -encrypt -pubin -inkey public.pem -out msg.enc

Pour déchiffrer un message :

1
openssl rsautl -decrypt -inkey private.pem -in msg.enc -out message_en_clair.txt 

À retenir

  • Le chiffrement asymétrique permet un partage de la clé de chiffrement tout en garantissant la confidentialité de la clé de déchiffrement.

  • La clé publique d'une personne est disponible par ceux qui veulent lui envoyer des messages.

  • La clé privée d'une personne n'est jamais publiée et est utilisée par la personne pour déchiffrer les messages reçus.

  • L'algorithme RSA permet de réaliser un chiffrement asymétrique.

Stéphane Crozat, Marc Damie, Quentin Duchemin Paternité - Partage des Conditions Initiales à l'Identique