Le site du prof

Réseaux

Niveau 0

Authentifiez-vous pour suivre votre progression !


Sécurisation des communications

Chiffrement des données

Pour échanger des données de manière sécurisée, on les encode de manière à ce que même si un intermédiaire arrive à obtenir les données échangées, il ne puisse rien en faire.

Vocabulaire

Les termes « chiffrer » et « crypter » sont souvent employés à tort de manière similaire.

  • Des données chiffrées peuvent être déchiffrées par une personne ayant la bonne clé.
  • Des données cryptées sont, en théorie, impossibles à décrypter.


Cryptage

Un exemple courant de données cryptées concerne les mots de passe. Lorsque vous choisissez un mot de passe pour un site web par exemple, ce dernier est bien obligé d’enregistrer votre mot de passe pour le comparer à celui que vous donnerez lors de votre prochaine connexion.

Cependant, il est crucial de ne jamais enregistrer ce mot de passe « en clair » dans la base de données du site. Au moment où vous soumettez le formulaire HTML d’inscription, le serveur est censé crypter ce mot de passe et n’enregistrer que la version cryptée dans sa base de données.

Lorsque vous vous reconnectez, le serveur crypte à nouveau le mot de passe saisi, de la même manière, et le compare à la version enregistrée en base de données

Hachage et salage

Un hachage (hash en anglais) est une chaîne de caractères de taille fixe obtenue à partir d’une chaîne de taille non bornée. Des fonctions de hachage sont généralement utilisées pour crypter les mots de passe.

Avant cela, on ajoute généralement une chaîne de caractères connue du serveur seul, appelée sel (salt en anglais) pour compliquer encore la tâche d’un éventuel attaquant.

Ainsi, même si la base de données est compromise, les mots de passe ne le sont pas, et même le webmaster n'a pas accès aux mots de passe des utilisateurs


Chiffrement

Il existe deux grandes catégories de chiffrement : Le chiffrement symétrique désigne le fait qu’on utilise la même clé pour chiffrer et pour déchiffrer.

Dans le cas du chiffrement asymétrique, on utilise deux clés différentes : L’une sert à chiffrer un message, l’autre sert à le déchiffrer.

Chiffrement symétrique

Exemples :

  • Chiffrement par décalage (souvent appelé code de César) :
    La clé est un nombre correspondant à un décalage dans l'alphabet.

  • Chiffrement XOR :
    L'opération logique a XOR b permet de chiffrer et déchiffrer un message b avec la même clé a (car a XOR (a XOR b) équivaut à b).

Avantages et inconvénients

Les algorithmes de chiffrement symétrique utilisés de nos jours ont l’avantage d’être rapides. On peut chiffrer ou déchiffrer des données de grande taille quasiment instantanément.

L’inconvénient principal est la clé. Les deux acteurs doivent pouvoir se partager la même clé de manière sûre. Comment le faire s’ils ne se rencontrent jamais physiquement et ne disposent pas (encore) d’un canal de communication sécurisé ?

Chiffrement asymétrique

Dans le cas du chiffrement asymétrique, on utilise deux clés différentes : l'une sert à chiffrer, l'autre à déchiffrer.

Principe du chiffrement RSA

Sans trop rentrer dans les détails, l'idée est d'utiliser les propriétés mathématiques des nombres premiers entre eux.

On choisit trois nombres entiers a, b et c. On définit la première clé dite « publique » constituée du couple (a,b) et une deuxième clé dite « privée » constituée du couple (a,c).

Pour chiffrer le message, on l'élève à la puissance b, et on le divise par a. Le message chiffré est le reste de cette division euclidienne.

Le message déchiffré est le reste de la division du message chiffré élevé à la puissance c par a.

Cela fonctionne aussi dans l'autre sens.

Exemple (avec des petits nombres):

Alice crée un couple de clés asymétriques : Elle choisit (judicieusement, ça ne fonctionne pas avec tous les nombres!) les nombres a=33, b=3 et c=7

Elle conserve secrètement sa clé privée (33, 7), et transmet à tout le monde sa clé publique (33, 3)

Bob veut envoyer un message chiffré à Alice. Son message est le nombre 25. Il utilise la clé publique d’Alice pour chiffrer son message :

253 = 15625 et 15625%33=16. Son message chiffré est donc 16.

Alice reçoit le message 16 et le déchiffre avec la clé privée qu’elle est la seule à posséder :

167 = 268435456 et 268435456%33=25. On retrouve bien le message de départ.


Le protocole HTTPS

Le protocole HTTPS est en fait la combinaison du protocole HTTP, que l'on connaît, et du protocole TLS qui permet d'assurer à la fois l'authentification du serveur, la confidentialité des données échangées et leur intégrité.

L'idée est d'utiliser un chiffrement asymétrique pour créer un canal sécurisé permettant d'échanger une clé symétrique, utilisée ensuite pour le reste de la session.

Principe de fonctionnement du protocole TLS
  • 1. Connexion : Bob se connecte au site d'Alice.

  • 2. Authentification : Alice envoie son certificat à Bob, crypté par un organisme de confiance.
  • 3. Authentification : Bob décrypte le certificat d'Alice avec la clé publique de l'organisme de confiance.

  • 4. Échange de clé : Bob chiffre une clé symétrique avec la clé publique d'Alice et lui envoie.
  • 6. Échange de clé : Alice déchiffre la clé symétrique avec sa clé privée.

  • 9. Session : Alice et Bob échangent désormais par chiffrement symétrique.

À retenir

  • Faire la différence entre chiffrement et cryptage.
  • Faire la différence entre chiffrement symétrique et asymétrique.
  • Comprendre le principe du protocole TLS et pourquoi on l'utilise.