Comment sécuriser les données

Voir la vidéo
Description Sommaire

Dans ce tutoriel nous allons parler sécurité et on va voir les différentes approches lorsqu'il s'agit de sécuriser de l'information (fichiers / messages). Il y a 3 principes clés qui jouent un rôle crucial dans la protection des données : le hachage, le chiffrement et la signature.

Le Hachage

Le hachage consiste à transformer des données en une chaîne de caractères de longueur fixe, souvent appelée "empreinte" ou "hash". La particularité est que la méthode utilisée ne permet pas à partir du "hash" de faire le chemin inverse.

Exemple

Pour donner un exemple, prenons une fonction qui va transformer les voyelles en "a" et les consonnes en "b".

  • Chaîne originale : Bonjour les gens
  • Hash : babbaabababababb

Comme on le voit il n'est pas possible, à partir du hash, de trouver la chaîne originale car plusieurs lettres peuvent correspondre à nos "b" et nos "a".

L'exemple utilisé ici permet d'illustrer le principe général mais ne constitue pas un exemple cryptographique correct pour plusieurs raisons :

  • La taille du "hash" doit être fixe pour empêcher l'attaquant d'inférer la taille de la chaîne originale.
  • Pour 2 chaînes proches, l'empreinte doit être complètement différente (pour éviter de déduire la chaîne originale).
  • L'algorithme doit éviter les collisions pour éviter que plusieurs chaînes différentes donnent la même empreinte.

Usages

Les fonctions de hachages sont surtout utilisé dans 2 situations :

  • Pour assurer l'intégrité d'un fichier, dans ce cas là on génère une empreinte basée sur le contenu du fichier. Si une personne altère le fichier pour injecter du code malicieux, l'empreinte change.
  • Pour stocker les mots de passe d'utilisateurs dans le cadre d'un système d'authentification. Plutôt que de stocker les mots de passe eux-mêmes, on stocke les empreintes des mots de passe. Lorsqu'un utilisateur saisit un mot de passe, le système hache cette entrée et compare l'empreinte résultante avec celle stockée. Si les empreintes correspondent, le mot de passe est considéré comme valide.

Faiblesses et risques

Le hachage connait 2 faiblesses principales :

  • Les collisions : si plusieurs entrées donne le même hash il est possible pour un attaquant de modifier un fichier tout en faisant en sorte que l'empreinte soit la même. C'est par exemple ce qui s'est passé avec l'algorithme MD5
  • Le brute-force : qui consiste à teste des combinaisons de mots de passe pour voir si le hash correspond (les attaquant peuvent utiliser une rainbow table pour commencer par les mots de passes les plus répandus). Pour lutter contre ce type d'attaques certains algorithmes permettent d'augmenter le temps / coût de génération d'un hash pour ralentir les attaquants qui tenteraient ce genre d'attaque. On peut aussi utiliser une clef de salage qui rend l'algorithme unique pour chaque mot de passe.

Le Chiffrement

Le chiffrement est un processus qui transforme les données en un format illisible appelé "texte chiffré", qui ne peut être déchiffré que par une personne détenant la clé de déchiffrement appropriée.

Exemple

Un exemple simple de chiffrement est le décalage alphabétique (ou chiffre de César).

  • Chaîne originale : Bonjour les gens
  • Chiffré (Rot1) : Cpokpvs mft hfot

Contrairement au hachage que l'on a vu précédemment, il est ici possible de revenir en arrière en effectuant un décalage dans l'autre sens.

Les algorithmes de chiffrement vont pouvoir utiliser une clef symétrique ou asymétrique.

  • Une clef symétrique est un système à clef unique qui permet à la fois le chiffrement et le déchiffrement de l'information. Le chiffrement par cette méthode est plus rapide mais pose le problème du partage de la clef.
  • Une paire de clef asymétrique utilise 2 clefs distrinctes
    • Une clef publique (que l'on pourra partager) qui permet de chiffrer le message.
    • Une clef privée (que l'on doit garder secret) permettra de déchiffrer les messages.

Usages

Le chiffrement est aujourd'hui de plus en plus utilisé et est même souvent activé par défaut.

  • Sur le Web le HTTPS utilise du chiffrement (à la fois asymétrique pour l'échange de clef, et symétrique pour l'échange de données). Je vous renvoie sur cette vidéo où j'explique le principe de l'échange HTTPS.
  • Les systèmes d'exploitations modernes sont capable de chiffrer les données au niveau du disque dur.

Dès lors que l'on veut sauvegarder des données que l'on ne veut pas lu par un tiers, ou que l'on souhaite échanger un message sans qu'il puisse être intercepté est lu, le chiffrement sera utilisé.

Faiblesses et risques

Le premier gros problème est l'évolution des puissances de calculs des ordinateurs (surtout avec l'apparition des ordinateurs quantiques) qui rend certains algorithmes considérés comme sûr vulnérable. Il faut donc faire évoluer les algorithmes que l'on utilise lorsque des limitations sont trouvées. Vous pouvez retrouver des recommandations sur les algorithmes de chiffrement à utiliser sur le site OWASP

Le second risque est le vol de clef, si une personne est capable d'obtenir la clef de déchiffrement elle sera alors capable d'intercepter et lire vos messages. Le stockage des clefs n'est pas forcément évident car il faut que votre système puisse les lire sans qu'un tiers y ai accès.

La signature

La signature numérique est un mécanisme qui permet de vérifier l'authenticité et l'intégrité d'un message ou d'un document numérique. Elle est générée à l'aide d'une clé privée et peut être vérifiée à l'aide de la clé publique correspondante.

Le principe combine les 2 méthodes vu précédemment :

  • Un hash est généré pour identifier le document
  • Ce hash est chiffré par l'envoyeur à l'aide d'une clef privée et sera déchiffré par la clef public correspondante détenu par le receveur (le rôle des clefs est inversé lorsque l'on parle de signature).

L'objectif est ici de prouver l'authenticité du message :

  • Le hash permet de vérifier que le fichier n'a pas été altéré
  • Le receveur s'assure que l'envoyeur est la bonne personne car il est le seul personne qui a pu chiffrer avec la clef correspondant à la clef publique que l'on a.

En apprendre plus

Voici un série de ressources si vous voulez aller plus loin sur le sujet :

Si vous avez d'autres ressources utiles n'hésitez pas à l'indiquer en commentaire pour que je l'ajoute à la liste.

Publié
Technologies utilisées
Auteur :
Grafikart
Partager