Tp : Cryptographie
Introduction
La sécurité informatique repose sur de nombreux concepts cryptographiques fondamentaux tels que le
chiffrement et le hachage. Bien qu’ils soient tous deux essentiels pour garantir la confidentialité des
données, ils fonctionnent de manière bien distincte.
pourquoi-crypter-ses-données?
Le cryptage est une mesure de sécurité fondamentale dans le monde numérique actuel. Le cryptage
des données est essentiel pour assurer la confidentialité et la sécurité des informations sensibles. En
transformant les données en un format illisible, le cryptage protège les informations contre l’accès non
autorisé et les cyberattaques. Cela garantit que même si des données sont interceptées ou volées, elles
ne peuvent pas être exploitées par des tiers malveillants.
Cette protection est cruciale pour les communications personnelles, les transactions financières et
toute autre information confidentielle.
En plus de cela, le cryptage contribue à maintenir l’intégrité et l’authenticité des donnéesIl permet de
vérifier que les informations n’ont pas été modifiées et que l’expéditeur est bien celui qu’il prétend être.
Le cryptage est donc indispensable pour établir la confiance dans les transactions en ligne et les
communications sécurisées.
Chiffrement
Comprendre le chiffrement
Le chiffrement est une méthode de transformation des données qui est réversible.
Autrement dit, il est possible de chiffrer et de déchiffrer les données
Elle repose sur :
1. Une clé de chiffrement
2. Un algorithme de chiffrement (AES, RSA, DES…)
Lors du chiffrement, la clé est couplée à l’algorithme pour chiffrer les données. En d’autres termes, la
clé est utilisée comme un paramètre dans l’algorithme de chiffrement pour transformer les données
d’origine en une forme chiffrée.
L’objectif de chiffrement
L’objectif premier du chiffrement est de rendre les données illisibles pour quiconque n’a pas la clé de
déchiffrement appropriée. Le chiffrement est utilisé lorsqu’il y a une nécessité de décodage des
données.
Les types de chiffrement
chiffrement symétrique
Une même clé de chiffrement peut être identique pour le chiffrement/déchiffrement, on parle alors de
chiffrement symétrique.
chiffrement asymétrique
À l’inverse, dans le cas d’un chiffrement asymétrique, deux clés distinctes sont utilisées : une clé
publique pour chiffrer les données et une clé privée correspondante pour les déchiffrer. La clé publique
peut être partagée largement, tandis que la clé privée doit rester secrète.
Comprendre le chiffrement par l'exemple
Imaginons que je crée mon propre algorithme de chiffrement consistant
à décaler de X la position d’une lettre de l’alphabet.
Ici, mon algo s’appellerait par exemple alpha et ma clé de chiffrement
pourrait être 2, indiquant que je souhaite décaler de 2 la position de
chaque lettre.
Lettre Correspondance
A C
B D
… …
Z A
Cas d’usage
Un bon exemple d’utilisation est celui des communications sécurisées sur Internet (via https), telles que
les transactions bancaires en ligne, utilisent le chiffrement pour protéger les données sensibles en cas
d’interception lors de leur transmission.
Hachage
Comprendre le hachage
À l’opposé du chiffrement, le hachage est une méthode de transformation unidirectionnelle . Autrement
dit, il est impossible de déchiffrer les données
Un algorithme de hachage (tel que BCRYPT, MD5, SHA-256…) prend des données en entrée et génère
une empreinte unique de taille fixe, appelée «hach».
L’élément clé ici est que le processus de hachage est irréversible , ce qui signifie qu’il est en théorie
impossible de retrouver les données d’origine à partir du hash.
Considérons le mot de passe 123456 Le hash généré via l’algorithme MD5 sera alors
e10adc3949ba59abbe56e057f20f883e
Si plusieurs utilisateurs utilisent ce mot de passe, alors tous auront le même hash en base de données.
Cas d’usage
Les systèmes d’authentification utilisent le hachage pour stocker de manière sécurisée les mots de passe.
Au lieu de stocker les mots de passe en clair, les systèmes stockent leur hash correspondant.
Lors de la vérification d’un mot de passe saisi dans un champ de formulaire, le système compare
simplement le hash stocké avec le hash généré à partir du mot de passe saisi.
vulnérabilités
hash-inconnuforce-brute :
Les attaques traditionnelles (lorsque nous n’avons pas connaissance du hash) exploitent généralement
la force brute par :
Dictionnaires de données: consistant à automatiser via un script des tests successifs de
mots de passe courants (admine, azerty, 1234…)
Génération incrémentale : consistant à automatiser via un script des tests méthodiques
et successifs de toutes les combinaisons de caractères possibles (a, b, ab…, bz…, aa…).
Ces attaques peuvent facilement être sécurisées par les
mécanismes intégrés aux algorithmes de hachage (tel que le work
factor ) et en mettant en place des mesures qui bloquent
temporairement ou définitivement un utilisateur après un certain
nombre de tentatives infructueuses.
Hash connu rainbow table
En revanche, en cas de fuite de mots de passe, même hachés, suite au piratage d’un
serveur de base de données, le hachage seul présente des limites en matière de sécurité.
Je vous disais tout à l’heure qu’il est en théorie impossible de trouver un mot de passe à
partir de son hash. Et bien ça, c’est la théorie…
Bien qu’unidirectionnel, le hachage n’est pas imparable puisqu’il n’offre pas de protection
contre la rétro-ingénierie, telle que les attaques exploitant des « Rainbow Table ».
Une Rainbow Table ou « Table Arc-en-ciel » est une table pré-calculée contenant
une multitude de combinaisons de caractères , ainsi que leur correspondance dans un
algorithme de hachage défini.
Ces tables générées en amont permettent généralement de limiter les ressources
nécessaires, contrairement aux attaques par force brute qui requièrent beaucoup de
temps et aux attaques par dictionnaires qui nécessitent beaucoup de mémoire.
Exemple :
Exemple simplifié de Rainbow Table basée sur l’algorithme MD5
Mot de Passe Hash (MD5)
admin 21232f297a57a5a743894a0e4a801fc3
azerty ab4f63f9ac65152575886860dde480a1
123456789 25f9e794323b453885f5181f1b624d0b
a 0cc175b9c0f1b6a831c399e269772661
Si un pirate parvient à voler des mots de passe hachés dans ce même algorithme, il va alors exécuter
un script afin de rechercher pour chaque mot de passe volé, si une correspondance existe dans sa table.
Pour renforcer la sécurité et contrer les attaques par Rainbow Table, on recommande systématiquement
l’utilisation complémentaire du Slage
Slage
Le slage(ou « salting » en anglais) est une pratique de sécurité qui consiste à ajouter des caractères au
début ou à la fin d’un mot de passe (ou un autre type de texte, selon le besoin) avant de le hacher. Cette
portion de caractères, appelée « sel » ou « salt » vient d’une certaine manière assaisonner notre mot de
passe !
1.🧂 Ajouter une pointe de sel
2.🔪 Hacher le mot de passe
Le sel est lui aussi stocké de manière sécurisée sur un serveur. Il contribue grandement à la
complexification du processus de décryptage d’un hash, ne correspondant plus au mot en clair, mais au
mot salé.
Exemple :
Désormais, même si deux utilisateurs ont le même mot de passe, le sel les différencie et les hachages
seront bel et bien distincts
Imaginons deux utilisateurs, Camille et Arthur, ayant tous deux le mot de passe 123456
Sans salage:
Sans salage, les hachages de leurs mots de passe seraient identiques dans la base de données.
user Mot de passe hashe
Arthur 123456 7c4da0e2a275e4c7d6b9b4dc374ee
0f3
Camille 123456 7c4da0e2a275e4c7d6b9b4dc374ee
0f3
Avec slage :
Maintenant, introduisons le salage. Chaque utilisateur a un sel différent.
user Motdepass sel hashe
e
Arthur 123456 a1b2c3d ae5c1c1949c15c0dbf8b109c3c447
e1a
Camille 123456 x2z4c5 2a509b87f9cc3c207d01abf05a0d2
b25
Pour Camille, le mot de passe en clair avec salage est 123456x2z4c5, pour Arthur, c’est
123456a1b2c3d, il est donc logique que les hash soient différents.
note
Un algorithme avancé comme bcrypt va automatiquement saler le
mot de passe en clair avant de générer les empreintes, qui seront
donc systématiquement différentes pour un même mot de passe. Le
sel utilisé est alors stocké en clair dans le hash généré.
Avantages du hachage
1.Sécurité
Les mots de passe hachés sont protégés contre les attaques, même si une base de données est
compromise.
2.Inviolabilité
Les algorithmes de hachage modernes ajoutent une couche de protection supplémentaire en utilisant
du sel (ou « salt »).
Saler un mot de passe signifie lui ajouter des caractères aléatoires au moment de la génération du hash
de sorte à rendre chaque hachage quasi-unique (on parle de «résistance aux collisions »).
Ainsi, 2 mots de passe identiques ne donneraient pas les mêmes hashs.
NB.
Le salage est un moyen efficace de lutter contre les attaques
par table arc-en-ciel (ou « Rainbow Table »).
Aussi, de nombreux algorithmes de hachage utilisent un facteur de travail (ou « work factor ») pour
contrôler le nombre d’itérations du processus de hachage. Plus le facteur de coût est élevé, plus le
processus est lent et plus il est difficile de générer un hachage par force brute
3.Performance
Les algorithmes de hachage modernes sont conçus pour être rapides et efficaces
Résume
En résumé, bien que le chiffrement et le hachage soient des concepts similaires dans le sens où ils
transforment les données, leur différence fondamentale réside dans leur capacité de réversibilité. Le
chiffrement est réversible , tandis que le hachage est unidirectionnel
Ces deux méthodes jouent des rôles complémentaires dans le renforcement de la sécurité informatique
et leur compréhension est essentielle pour développer des mesures de sécurité numérique efficaces.
Outils de cryptographie
Outils de chiffrement et déchiffrement
OpenSSL : Outil open-source permettant d’effectuer du chiffrement, du hachage, la
gestion des certificats SSL/TLS.
GnuPG (GPG) : Implémentation de PGP pour le chiffrement des fichiers et des e-mails.
VeraCrypt : Outil de chiffrement de disque basé sur TrueCrypt.
AES Crypt : Utilise l’algorithme AES pour chiffrer des fichiers simplement.
Outils de hachage et d’intégrité des données
Hashcat : Un puissant outil pour le "cracking" de mots de passe via des fonctions de
hachage.
John the Ripper : Outil permettant de tester la robustesse des mots de passe.
MD5sum / SHA256sum : Utilisés en ligne de commande pour générer et vérifier des
empreintes de fichiers.
Exporter les public key