Vous êtes sur une version archivée de lyceum.fr de l'année 2023/2024. Revenir au présent.

Chapitre 4: Sécurisation des communications*

Ce chapitre ne pourra pas faire l’objet d’une évaluation lors de l’épreuve terminale écrite et pratique de l’enseignement de spécialité. BO MENE2121274N

Contenus Capacités attendues Commentaires
Sécurisation des communications.

Décrire les principes de chiffrement symétrique (clef partagée) et asymétrique (avec clef privée/clef publique).

Décrire l’échange d’une clef symétrique en utilisant un protocole asymétrique pour sécuriser une communication HTTPS.

Les protocoles symétriques et asymétriques peuvent être illustrés en mode débranché, éventuellement avec description d’un chiffrement particulier.

La négociation de la méthode chiffrement du protocole SSL (Secure Sockets Layer) n’est pas abordée.

 

La cryptographie est à la base de la sécurité des échanges d'information sur internet.
La cryptographie est à la base de la sécurité des échanges d'information sur internet.
©  CC BY-SA 4.0 via Wikimedia Commons

Sécuriser l’échange de données est un aspect crucial lors de l’échange d’informations par exemple lors d’un paiement sur internet. Il existe deux principaux types de chiffrement de données qui permettent de rendre un message lisible uniquement par son destinataire:

  • le chiffrement symétrique à clé partagée,
  • le chiffrement asymétrique avec une paire clé publique clé privée.

1 Cryptographie symétrique

La cryptographie symétrique, également dite à clé secrète (par opposition à la cryptographie asymétrique), est la plus ancienne forme de chiffrement. Elle permet à la fois de chiffrer et de déchiffrer des messages à l’aide d’un même mot clé. On a des traces de son utilisation par les Égyptiens vers 2000 av. J.-C.

Article Wikipédia sur la cryptographie symétrique

Cette technique repose sur l’utilisation d’une clé unique qui doit être connue par l’expéditeur et le destinataire.

Il existe de nombreux chiffrements de ce type qui ont évolué en complexité au cours du temps.

1.1 Le chiffrement César

Exemple d'un chifrement Cesar par décalage de trois lettres.
Exemple d'un chifrement Cesar par décalage de trois lettres.
 Public domain via Wikimedia Commons

On décale les lettres de n n rangs la clé est tout simplement n n : le décalage.

Par exemple, César utilisait un décalage de 3 lettres:

Si on connait le décalage, on déchiffre le message en réalisant le décalage opposé, moins trois lettres dans note exemple.

Si on utilise 26 lettres majuscules, il n’existe que 26 clés possibles!

1.2 Chiffrement par substitution

On remplace une lettre par une autre de l’alphabet, on a donc 26 ! 4 × 10 26 26!\approx 4\times 10^{26} clés possibles.

Avec la clé suivante:

ABCDEFGHIJKLMNOPQRSTUVWXYZ
AZERTYUIOPQSDFGHJKLMWXCVBN

le message SUBSTITUTION devient LWZLMOMWMOGF

1.3 Chiffrement de Vigenère (XVIe siècle)

Cette méthode a été mise au point durant la renaissance pour contrer la cryptanalyse par la méthode des fréquences de lettres qui permettait de “casser” les clés de cryptage assez facilement.

On choisit une clé sous la forme d’un mot ou d’une phrase qui donne le décalage à appliquer qui devient alors variable.

Supposons que la clé soit ABC, les décalages successifs seront 0, 1, 2, 0, 1, 2, 0…

Avec la clé ABC

Le message SUBSTITUTION devient: SVDSUKTVVIPP

SUBSTITUTION
ABCABCABCABC
------------
SVDSUKTVVIPP

1.4 Chiffrement de Vernam (XXe siècle)

Il s’agit d’un système parfaitement sûr, le mathématicien C.Shannon a montré que si on respecte bien les 3 règles de Vernam, ce système est inviolable.

  • La clé doit être une suite de caractères au moins aussi longue que le message à chiffrer.
  • Les caractères composant la clé doivent être choisis de façon totalement aléatoire.
  • Chaque clé, ou « masque », ne doit être utilisée qu’une seule fois (d’où le nom de masque jetable).

Une méthode particulièrement efficace pour traiter le chiffrement et le déchiffrement de messages à partir de la clé est d’utiliser la fonction logique XOR, le ou exclusif qui a une particularité très intéressante dans notre cas.

On note M M le message et S S la clé secrète, XOR se note \oplus .

On obtient le message chiffré C C en faisant: C = M S C = M \oplus S .

Le déchiffrement se fait tout simplement en appliquant la même opération C S = M C \oplus S = M car:

( M S ) S = M (M \oplus S)\oplus S = M

On souhaite transmettre le message NSI de façon privée. Le code ASCII correspondant est 01001110 01010011 01001001.

On crée un masque aléatoirement que l’on transmet au destinataire: 11001001 11001101 01100011.

  1. Écrire le message chiffré C C en faisant: C = M S C = M \oplus S .
  2. Vérifier qu’on déchiffre par la même opération C S = M C \oplus S = M .

2 Cryptographie asymétrique

La cryptographie asymétrique permet de résoudre le problème de l’échange de la clé secrète.

Elle fut inventée par Whitfield Diffie et Martin Hellman en 1976, qui reçurent le prix Turing de 2015 pour cette découverte.

En cryptographie asymétrique on a 2 clés:

  • la clé publique: Celle-ci, tout le monde peut la posséder, il n’y a aucun risque, vous pouvez la transmettre à n’importe qui. Elle sert à chiffrer le message.
  • la clé privée: que seul le récepteur possède, en l’occurrence vous. Elle servira à déchiffrer le message chiffré avec la clé publique. Pour clarifier mon charabia, une petite illustration :

Illustration du chiffrement asymétrique

Cours l’algorithme RSA sur OpenClassRoom

Pour que cela fonctionne, il faut que la paire clé publique/clé privée ait une propriété particulière.

Soit F P F_P la fonction de chiffrement utilisée avec la clé publique, et F S F_S la fonction relative à la clé privée. Une relation particulière relie ces deux fonctions:

m = F S ( F P ( m ) ) m = F_S(F_P(m))

Enfin pour que ce système fonctionne, il faut que:

  • la fonction F P F_P soit facile à calculer pour tout le monde,
  • la fonction F S F_S soit facile à calculer uniquement pour le détenteur de la clé privée.

Un système qui satisfait ces deux critères est le système de chiffrement RSA utilisé pour échanger des données confidentielles sur Internet.

Cet algorithme fut inventé en 1977 par Ronald Rivest, Adi Shamir et Leonard Adleman breveté par le MIT en 1983. Le brevet a expiré le 21 septembre 2000 ce qui permet de l’utiliser librement depuis.

2.1 Principe original

Ce système de cryptographie repose sur l’utilisation de nombres premiers et certaines propriétés de l’arithmétique modulaire.

Illustration de l'échange d'informations entre Alice et Bob.
Illustration de l'échange d'informations entre Alice et Bob.
©  CC BY-SA 4.0 via Wikimedia Commons

  1. Alice et Bob ont choisi un nombre premier p p et un nombre g g strictement plus petit que p p (ils peuvent aussi, comme montré sur la figure, ne décider de ce choix qu’au moment de l’échange, et se le communiquer en clair, ce qui n’améliore pas les chances d’Ève qui cherche à casser le code)

  2. Alice choisit un nombre au hasard a a , élève g g à la puissance a a , et envoie à Bob le nombre A = g a [ m o d u l o p ] A = g^a [modulo\ p] .

  3. De même Bob choisit un nombre au hasard b b , et fait de même; il transmet le nombre B = g b [ m o d u l o p ] B = g^b[modulo\ p] à Alice

  4. En élevant le nombre B B reçu de Bob à la puissance a a , obtient g b a [ m o d u l o p ] g^{ba}[modulo\ p] .

  5. Bob fait le calcul analogue avec le nombre A A reçu d’Alice et obtient g a b [ m o d u l o p ] ^{gab}[modulo\ p] , qui est le même résultat.

A la fin du protocole, Alice et Bob connaissent tous les deux le nombre g a b [ m o d u l o p ] g^{ab}[modulo\ p] mais pas Ève car elle ne peut pas calculer g a b [ m o d u l o p ] g^{ab}[modulo\ p] facilement.

2.2 Exemple

  • Alice et Bob ont choisi un nombre premier p p et une base g g . Dans notre exemple, p = 23 p=23 et g = 5 g=5
  • Alice choisit un nombre secret a = 6 a=6
  • Elle envoie à Bob la valeur A = g a [ m o d u l o p ] = 5 6 [ 23 ] = 8 A = g^a [modulo\ p] = 5^6 [23] = 8
  • Bob choisit à son tour un nombre secret b = 15 b=15
  • Bob envoie à Alice la valeur B = g b [ m o d u l o p ] = 5 15 [ 23 ] = 19 B = g^b[modulo\ p] = 5^{15} [23] = 19
  • Alice peut maintenant calculer la clé secrète : B a [ m o d u l o p ] = 19 6 [ 23 ] = 2 B^a [modulo\ p] = 19^6 [23] = 2
  • Bob fait de même et obtient la même clé qu’Alice : A b [ m o d u l o p ] = 8 15 [ 23 ] = 2 A^b [modulo\ p] = 8^{15} [23] = 2

Article Wikipédia

Créez une clé secrète sur ce principe avec votre voisin en Python:

  1. Choisir ensemble un nombre premier p p et une base g g pas trop grands.
  2. Choisir chacun de votre côté un nombre secret n n puis calculer N = g n [ p ] N=g^n [p] .
  3. Vérifier que chacun peut générer la même clé secrète à partir du nombre N N calculé par votre voisin.
  4. Essayez de retrouver la clé à partir des informations échangées en clair: g g , p p , A A et B B (Ne faites pas cette question, elle est impossible).

3 Cryptosystèmes hybrides

Bien que le système RSA à clé publique soit a priori sûr et pratique puisqu’il n’est pas nécessaire d’échanger la clé de chiffrement comme dans le cas du chiffrement symétrique. On utilise en pratique plutôt un système hybride, car le système à clé asymétrique est assez lourd à exécuter et prend du temps.

Regardons par exemple le cas d’échange d’informations sécurisées grâce au protocole HTTPS.

  1. Le client — par exemple le navigateur Web — contacte un serveur — par exemple Wikipédia — et demande une connexion sécurisée.
  2. Le serveur répond en produisant un certificat qui contient entre autres sa clé publique.
  3. Cela permet au client d’envoyer de manière secrète une clé symétrique qui sera utilisée à tous les échanges entre le serveur et le client de façon que tous les contenus de la communication — y compris l’adresse même du site web, l’URL — soient chiffrées.

La clé secrète est calculée en combinant votre clé privée et la clé publique de votre destinatiare
La clé secrète est calculée en combinant votre clé privée et la clé publique de votre destinatiare
 Public domain via Wikimedia Commons

Dans le schéma d’échange de clés Diffie-Hellman, chaque partie génère une paire de clés publique / privée et distribue la clé publique. Après avoir obtenu une copie authentique des clés publiques de chacun, Alice et Bob peuvent calculer une clé secrète partagée hors ligne. La clé secrète partagée peut être utilisée, comme clé pour un chiffrement symétrique.