Chiffrement hybride : la pratique réelle

Une grande enveloppe fermée contenant une petite clé dans son propre coffret.

Tu as maintenant deux types de cadenas. Le symétrique (une seule clé) est ultra-rapide et peut chiffrer un film entier — mais tu dois d'abord faire parvenir la clé à l'autre. L'asymétrique (deux clés) résout ça — mais peut à peine chiffrer une phrase et est lent. Lequel choisis-tu ? Aucun des deux. Tu les utilises ensemble, et c'est exactement ce que fait chaque système réel — du petit cadenas dans ton navigateur à ton appli de messagerie.

Les mots dont tu as besoin

Hybride
Une forme mixte. Ici : le chiffrement asymétrique pour le petit, le chiffrement symétrique rapide pour le grand.
Clé de session
Une clé symétrique que tu n'utilises qu'une seule fois : pour ce message-ci, ou pour cette visite-ci d'un site web. Ensuite, on la jette.
TLS
Le système derrière le petit cadenas et le https:// dans ta barre d'adresse. Il convient d'une clé de session avec une astuce asymétrique, puis chiffre tout symétriquement ensuite.

La recette

  1. Crée une clé symétrique fraîche et aléatoire. Uniquement pour ce message.
  2. Chiffre le message avec elle (AES). Rapide, et aussi grand que tu veux.
  3. Chiffre cette clé — mais 32 octets seulement — avec la clé publique du destinataire. Ça passe largement sous la limite RSA de 190 octets.
  4. Envoie les deux paquets ensemble : le grand (message) et le petit (clé).

Le destinataire fait l'inverse : d'abord ouvrir le petit paquet avec sa clé privée pour récupérer la clé de session, puis déchiffrer le grand paquet avec elle. Deux cadenas, une seule lettre.

Essaie toi-même

Tout se passe dans ton navigateur. Rien n'est envoyé au serveur.

  1. Clique sur Le destinataire crée une paire de clés. Elle met sa clé publique en ligne ; tu n'as besoin de rien de plus.
  2. Clique sur Chiffrer. Regarde les trois parties et leur taille.
  3. Colle le message dix fois de suite et chiffre à nouveau. La partie RSA reste exactement 256 octets. Seule la partie AES grandit.
  4. Clique sur Déchiffrer et suis les deux étapes que fait le destinataire.

Où tu utilises ça tous les jours

Comment
Le petit cadenas dans ton navigateur (TLS) À l'ouverture d'un site, ton navigateur et le serveur conviennent d'une clé de session avec une astuce asymétrique — généralement avec une courbe elliptique. Tout ce qui va et vient ensuite est chiffré symétriquement.
WhatsApp, Signal Le même principe, avec une couche en plus : la clé change à chaque message, de sorte qu'une seule clé qui fuit ne dévoile qu'un seul message.
Les soins de santé belges (eHealth) Les médecins s'envoient des messages chiffrés avec exactement cette recette. Le message est d'abord signé puis scellé : le destinataire sait qui l'a envoyé et que personne d'autre n'a pu le lire au passage.

Pourquoi une nouvelle clé par message

Suppose qu'une clé fuite un jour — un piratage, une erreur, un portable perdu. Si tu utilisais cette clé pour tout, alors tout est exposé, même ce que tu as envoyé il y a des années. Avec une clé fraîche par message, les dégâts se limitent à ce seul message. Ça s'appelle la forward secrecy (confidentialité persistante) : le passé reste fermé, même si le présent fuit.

Voici les maths : combien de clés te faut-il ?

Suppose que 30 élèves dans une classe veulent tous pouvoir s'écrire en secret, uniquement avec des clés symétriques. Chaque paire a besoin de sa propre clé. Combien de paires y a-t-il ? 30 × 29 / 2 = 435 clés. Avec 1000 personnes : 499 500. Avec le monde entier : impossible. Avec des clés asymétriques, chaque personne n'a besoin que d'une seule paire de clés, quel que soit le nombre de personnes. C'est de la combinatoire : les mathématiques qui comptent le nombre de manières possibles. Elle détermine si une idée fonctionne pour dix personnes ou pour huit milliards.