Seb-Info

le chiffrement asymétrique (Partie 2)

le chiffrement asymétrique (Partie 2)

 

Utilisez le chiffrement asymétrique

Comme vous l’avez vu dans la partie précédente, le chiffrement symétrique permet d’échanger des données chiffrées sur un canal non sécurisé. Cependant, ce système nécessite d’échanger la clé de chiffrement entre l’expéditeur et le destinataire d’un texte chiffré. Cela pose un problème lors d’un échange à distance par exemple : comment échanger la clé de manière confidentielle si l’on ne dispose pas de canal de communication sécurisé ?

Le chiffrement asymétrique

1) Principe général

Contrairement au chiffrement symétrique (où la même clé sert à chiffrer et déchiffrer),
le chiffrement asymétrique repose sur deux clés différentes :

  • 🔑 Clé publique 

  • 🔒 Clé privée 

Ces deux clés sont liées mathématiquement (formant une paire de clés) mais il est pratiquement impossible de retrouver la clé privée à partir de la clé publique.

👉 Exemple :

  • Alice publie sa clé publique.

  • Bob veut lui envoyer un message secret → il chiffre avec la clé publique d’Alice.

  • Seule la clé privée d’Alice permet de déchiffrer.


2) Avantages

  • ✅ Pas besoin d’échanger la clé secrète au préalable (contrairement au symétrique).

  • ✅ Permet aussi de faire de la signature numérique :

    • Alice signe un document avec sa clé privée.

    • Tout le monde peut vérifier l’authenticité avec sa clé publique.


3) Inconvénients

  • ❌ Plus lent que le chiffrement symétrique (calculs très lourds).

  • ❌ Souvent utilisé en combinaison avec un algorithme symétrique (ex : on échange une clé de session via RSA, puis on chiffre avec AES).


4) Algorithmes connus

  • RSA (Rivest–Shamir–Adleman, 1977) → basé sur la difficulté de factoriser de grands nombres premiers.

  • ECC (Elliptic Curve Cryptography) → basé sur les courbes elliptiques, plus efficace avec des clés plus courtes.

  • Diffie-Hellman → permet d’échanger une clé de session en toute sécurité.


5) Applications concrètes

  • 🔐 HTTPS / SSL / TLS : sécurise la navigation web.

  • 📧 PGP / GPG : pour chiffrer et signer des e-mails.

  • 🔏 Signatures numériques : authentification de documents, certificats.

  • 🪪 Authentification forte : clé SSH pour se connecter à un serveur.

Echange de clés Diffie-Hellman

Cas concret 1 : Confidentialité

👉 Exemple : chiffrement d’un e-mail avec la clé publique du destinataire (PGP/GPG)

  1. Alice veut envoyer un e-mail secret à Bob.

  2. Bob publie sa clé publique.

  3. Alice chiffre le contenu du message avec la clé publique de Bob.

  4. Le message intercepté par un tiers est illisible.

  5. Bob reçoit le message et le déchiffre avec sa clé privée.

➡️ Ici, seule la clé privée (gardée secrète par Bob) permet de lire le message → confidentialité garantie.


Cas concret 2 : Authentification

👉 Exemple : signature numérique d’un logiciel

  1. Une entreprise (ex : Microsoft) veut prouver qu’un exécutable vient bien d’elle.

  2. Elle calcule le hachage du fichier et le chiffre avec sa clé privée → c’est la signature numérique.

  3. L’utilisateur qui télécharge le logiciel utilise la clé publique de Microsoft pour vérifier la signature.

  4. Si la vérification réussit, cela prouve que :

    • le fichier vient bien de Microsoft (authenticité),

    • il n’a pas été modifié (intégrité).

➡️ Ici, c’est la clé publique qui sert à vérifier, donc tout le monde peut contrôler que l’expéditeur est bien celui qu’il prétend → authentification.

Pour aller plus loin : Découvrez l’échange de clés Diffie-Hellman

En 1976, les cryptologues Diffie et Hellman ont proposé une solution révolutionnaire à ce problème : le protocole d’échange de clés Diffie-Hellman. Ce système a posé les bases de la cryptographie asymétrique et a permis de généraliser l’usage de la cryptographie dans les communications informatiques.

L’échange de clés Diffie-Hellman consiste à échanger une clé secrète entre Alice et Bob sur un réseau non sécurisé de manière confidentielle. Il se déroule comme ceci :

  1. Alice choisit un entier aléatoire g et un entier aléatoire de grande taille a qui est sa clé privée.

  2. Elle calcule A = exp(a) = g^a (g à la puissance a). a est la clé privée d’Alice et A est la clé publique d’Alice.

  3. Alice transmet à Bob la valeur de g et de A, sa clé publique.

  4. De même, Bob choisit un entier aléatoire de grande taille b. Il calcule B = exp(b) = g^b. b est la clé privée de Bob et B est la clé publique de Bob.

  5. Bob transmet à Alice B, sa clé publique.

  6. À ce moment, Alice calcule B^a = g^(b*a) et Bob calcule A^b = g^(a*b). Ces deux variables ont la même valeur, car x^a*b = x^b*a. Cette variable B^a est la clé secrète partagée par Alice et Bob.

Echange de clés Diffie-Hellman
Échange de clés Diffie-Hellman

Imaginons maintenant qu’une tierce personne, qu’on appellera Ève, ait écouté toutes les communications entre Alice et Bob.

Ève connait g, A = g^a et B = g^b. Cependant, Ève ne peut pas calculer a car la fonction log(A) = log(g^a) = a est impossible à calculer. De même, elle ne peut pas calculer b. Ève ne peut donc pas calculer B^a ou A^b. Cette variable est donc confidentielle entre Alice et Bob, qui peuvent l’utiliser comme clé secrète partagée pour chiffrer leurs échanges de manière confidentielle avec le chiffrement symétrique.

 

Le chiffrement asymétrique avec RSA

L’année suivant, en 1977, les cryptologues Rivest, Shamir et Adleman ont déposé un brevet pour le système de chiffrement asymétrique RSA basé sur le problème de la factorisation des grands nombres. Ce système a permis le développement du chiffrement à clé publique. Il repose sur une paire de clés privée et publique, et sur des fonctions de chiffrement et de déchiffrement définies comme ceci :

soit m le message en clair, c le texte chiffré, PriB la clé privée de Bob, PubB la clé publique de Bob, E() la fonction de chiffrement et D() la fonction de déchiffrement.

 c=E(PubB,m)c=E(PubB,m)

et m=D(PriB,c)m=D(PriB,c)

Dans le chiffrement symétrique, on utilise la même clé secrète pour chiffrer et déchiffrer un message. Dans le chiffrement asymétrique, on utilise la clé publique du destinataire pour chiffrer et la clé privée du destinataire pour déchiffrer un message.

Ainsi, si Alice veut envoyer un message chiffré à Bob, elle chiffre le message avec la clé publique de Bob puis envoie à Bob le texte chiffré. Bob peut ensuite déchiffrer le texte avec sa propre clé privée.

Comme la clé publique de Bob est connue de tout le monde, Bob n’a aucune information sur l’identité de l’expéditeur du message chiffré. Tout le monde peut chiffrer un message avec la clé publique de Bob, et seul Bob peut le décrypter avec sa propre clé privée.

Pour une meilleur compréhension je vous invite à regarder cette vidéo :

Comment faire donc pour assurer l’intégrité de l’émetteur du message ?

La signature numérique

En plus de la confidentialité, RSA permet de signer un message, c’est-à-dire d’apporter la preuve que l’expéditeur est bien la personne qu’il prétend être.

Un système de signature numérique est défini par les fonctions suivantes :

  • une fonction de création de signature (ms) d’un message (m) : ms = S(priA, m) ;

  • une fonction de vérification de la signature d’un message : V(pubA, m, ms).

Avec :

  • m un message ;

  • ms la signature du message ;

  • priA la clé privée de l’expéditeur (Alice) ;

  • pubA la clé publique de l’expéditeur (Alice).

La fonction de vérification de la signature d’un message V() prend en entrée la clé publique de l’expéditeur, le message et la signature du message. Elle renvoie « Vrai » si la signature du message correspond bien au message et à la clé publique fournis. En d’autres termes, elle renvoie « Vrai » si le message a bien été signé à l’aide de la clé privée correspondant à la clé publique fournie. Si la signature ne correspond pas, la fonction de vérification renvoie « Faux ».

Avec la signature, comme Alice est la seule à connaître sa propre clé privée, seule Alice peut signer un message avec sa paire de clés publique/privée. C’est le principe de non-répudiation d’un message signé, en plus de l’authentification.

Signature d’un message

Pour signer un message, Alice envoie donc à Bob le message (éventuellement chiffré avec la clé publique de Bob) puis la signature du message. Cependant, signer directement le message a plusieurs inconvénients :

  • la longueur. La taille de la signature d’un message est aussi longue que le message, ce qui double donc la quantité d’informations à envoyer sur le réseau ;

  • la lenteur.Les fonctions de signature et de vérification ne sont pas très rapides, ce qui ralentit les performances du SI.

  • la traçabilité.La signature du message permet de retrouver le contenu du message. Le message n’est donc pas confidentiel.

Pour éviter ces problèmes, vous ne signez pas directement le message mais le haché du message avec une fonction de hachage cryptographique. Le haché d’un message est unique à chaque message, de taille fixe, peu importe la taille du message, et ne permet pas de retrouver le message initial. Dans la pratique, les algorithmes de signature de message implémentent le calcul du haché en interne dans les fonctions de signature et de vérification de message.

Utilisez la cryptographie hybride

La cryptographie asymétrique est beaucoup plus lente que le chiffrement cryptographie symétrique, et nécessite des clés de taille bien plus élevée. Par conséquent, vous utiliserez la cryptographie asymétrique en début de communication pour vérifier la signature de la clé publique et pour échanger une clé de chiffrement symétrique appelée clé de session. Vous utilisez ensuite la clé de session pour chiffrer les messages. C’est ce qu’on appelle la cryptographie hybride.

Pour vous donner une idée, voici un comparatif de taille de clé et de performance entre les cryptographies symétrique et asymétrique.

Taille clé symétrique
(niveau de sécurité)

Diffie-Hellman

RSA

Courbes elliptiques (ECC)

112

2 048

2 048

224

128

3 072

3 072

256

256

15 360

15 360

521

Performance comparée
à la cryptographie symétrique

1 000 fois plus lent

1 000 fois plus lent

100 fois plus lent

 

En résumé

  • La cryptographie asymétrique consiste à utiliser une paire de clés privée/publique ;

  • le chiffrement asymétrique permet de chiffrer un message avec la clé publique du destinataire, qui le déchiffre avec sa clé privée ;

  • la signature numérique permet de signer un message avec sa clé privée, c’est-à-dire de prouver qu’un message a été créé par la personne possédant la clé privée. C’est le principe de non-répudiation qui est plus fort que l’authentification de données avec un code MAC. Une signature est vérifiée avec la clé publique de l’expéditeur ;

  • on utilise généralement le chiffrement asymétrique pour échanger une clé secrète symétrique sur un canal non sécurisé avec le protocole Diffie-Hellman. On parle alors de cryptographie hybride ;

  • les protocoles utilisant les courbes elliptiques, plus performants, se développent de plus en plus. Ils fonctionnent de la même manière que Diffie-Hellman et RSA.

https://www.youtube.com/watch?v=Y2bsLRdVBP8

Ce contenu est réservé aux membres du site. Si vous êtes un utilisateur existant, veuillez vous connecter. Les nouveaux utilisateurs peuvent s'inscrire ci-dessous.

Connexion pour les utilisateurs enregistrés
   
Nouvel utilisateur ?
*Champ requis
Powered by WP-Members